From 334067d89ec2f08c9b86466aedb6549240532823 Mon Sep 17 00:00:00 2001 From: thzxx Date: Mon, 10 Aug 2026 12:07:00 +0800 Subject: [PATCH] =?UTF-8?q?release:=20v0.5.1=20=E2=80=94=20=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E5=90=8E=E7=AB=AF=E7=94=9F=E4=BA=A7=E7=BA=A7=E7=A1=AC?= =?UTF-8?q?=E5=8C=96=EF=BC=88CRC-32/=E5=85=A8=E5=BA=93=E5=8A=A0=E5=AF=86/W?= =?UTF-8?q?AL=E5=88=86=E7=89=87/=E9=A1=B5=E9=9D=A2=E5=8C=96=E5=AD=98?= =?UTF-8?q?=E5=82=A8/=E5=A4=9A=E6=A0=87=E7=AD=BE=E9=A1=B5=E9=94=81/e2e?= =?UTF-8?q?=EF=BC=89+=20=E6=B7=B1=E5=BA=A6=E5=AE=A1=E6=9F=A5=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=EF=BC=88=E5=81=87=E5=AE=9E=E7=8E=B0=E6=8E=A5=E7=BA=BF?= =?UTF-8?q?/=E6=AD=BB=E4=BB=A3=E7=A0=81=E6=B8=85=E7=90=86=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/ci.yml | 22 + .gitignore | 4 + CHANGELOG.md | 109 + CONTRIBUTING.md | 4 +- README.md | 133 +- dist/metona-sqlark.cjs | 1784 ++++++--- dist/metona-sqlark.cjs.map | 2 +- dist/metona-sqlark.d.ts | 207 +- dist/metona-sqlark.esm.js | 1784 ++++++--- dist/metona-sqlark.esm.js.map | 2 +- dist/metona-sqlark.js | 1784 ++++++--- dist/metona-sqlark.js.map | 2 +- dist/metona-sqlark.min.js | 2 +- jest.config.cjs | 6 + package-lock.json | 69 +- package.json | 5 +- playwright.config.ts | 24 + site/benchmark.html | 94 +- src/connection-manager.ts | 6 - src/constants.ts | 434 +-- src/core.ts | 67 +- src/engine/aria/buffer/eviction.ts | 383 +- src/engine/aria/buffer/pool.ts | 362 +- src/engine/aria/compression/lz4.ts | 53 +- src/engine/aria/crc32.ts | 58 + src/engine/aria/crypto.ts | 38 +- src/engine/aria/index.ts | 3675 ++++++++++--------- src/engine/aria/index/bloom.ts | 236 +- src/engine/aria/index/lsm.ts | 1516 ++++---- src/engine/aria/index/memtable.ts | 929 +++-- src/engine/aria/index/merge_iterator.ts | 361 +- src/engine/aria/index/sstable.ts | 25 +- src/engine/aria/index/sstable_builder.ts | 11 +- src/engine/aria/locks.ts | 92 + src/engine/aria/page/format.ts | 192 +- src/engine/aria/page/header.ts | 134 +- src/engine/aria/page/slot.ts | 184 - src/engine/aria/page/tuple.ts | 251 -- src/engine/aria/store/backend.ts | 7 + src/engine/aria/store/encrypted_backend.ts | 233 ++ src/engine/aria/store/file_manager.ts | 215 +- src/engine/aria/store/opfs_backend.ts | 81 +- src/engine/aria/store/page_sstable_store.ts | 95 + src/engine/aria/transaction/mvcc.ts | 465 +-- src/engine/aria/types.ts | 551 ++- src/engine/aria/wal/checkpoint.ts | 153 +- src/engine/aria/wal/log.ts | 647 ++-- src/engine/aria/wal/segmented_store.ts | 161 + src/engine/opfs.ts | 12 - src/query/ast.ts | 73 +- src/query/builder.ts | 18 +- src/query/executor.ts | 2559 ++++++------- src/sql/parser.ts | 78 +- src/sql/tokens.ts | 18 + src/table/table.ts | 20 +- src/utils.ts | 80 - tests/e2e/harness.html | 97 + tests/e2e/opfs.spec.ts | 261 ++ tests/e2e/server.cjs | 39 + tests/engine/aria-advanced.test.ts | 17 +- tests/engine/aria-buffer.test.ts | 513 ++- tests/engine/aria-cache.test.ts | 6 +- tests/engine/aria-checksum.test.ts | 181 + tests/engine/aria-compress.test.ts | 468 +-- tests/engine/aria-crypto.test.ts | 61 +- tests/engine/aria-encryption.test.ts | 349 ++ tests/engine/aria-index.test.ts | 414 +-- tests/engine/aria-locks.test.ts | 170 + tests/engine/aria-maintenance.test.ts | 17 - tests/engine/aria-mvcc-savepoint.test.ts | 33 +- tests/engine/aria-opfs-backend.test.ts | 228 ++ tests/engine/aria-page-core.test.ts | 62 + tests/engine/aria-page-store.test.ts | 318 ++ tests/engine/aria-page.test.ts | 337 -- tests/engine/aria-repair-hardening.test.ts | 249 ++ tests/engine/aria-sstable.test.ts | 393 +- tests/engine/aria-wal-crc.test.ts | 218 ++ tests/engine/aria-wal-mvcc.test.ts | 514 ++- tests/engine/aria-wal-segment.test.ts | 275 ++ tests/engine/crc32.test.ts | 89 + tests/helpers/opfs-mock.ts | 88 + tests/hooks-crud.test.ts | 140 + tests/maintenance-sql.test.ts | 172 + tests/sql-ext2.test.ts | 12 +- tests/utils.test.ts | 99 - tests/v025-fixes.test.ts | 5 +- tests/v033-fixes.test.ts | 2 +- tests/v043-hardening.test.ts | 2 +- 88 files changed, 15713 insertions(+), 10626 deletions(-) create mode 100644 playwright.config.ts create mode 100644 src/engine/aria/crc32.ts create mode 100644 src/engine/aria/locks.ts delete mode 100644 src/engine/aria/page/slot.ts delete mode 100644 src/engine/aria/page/tuple.ts create mode 100644 src/engine/aria/store/encrypted_backend.ts create mode 100644 src/engine/aria/store/page_sstable_store.ts create mode 100644 src/engine/aria/wal/segmented_store.ts delete mode 100644 src/utils.ts create mode 100644 tests/e2e/harness.html create mode 100644 tests/e2e/opfs.spec.ts create mode 100644 tests/e2e/server.cjs create mode 100644 tests/engine/aria-checksum.test.ts create mode 100644 tests/engine/aria-encryption.test.ts create mode 100644 tests/engine/aria-locks.test.ts create mode 100644 tests/engine/aria-opfs-backend.test.ts create mode 100644 tests/engine/aria-page-core.test.ts create mode 100644 tests/engine/aria-page-store.test.ts delete mode 100644 tests/engine/aria-page.test.ts create mode 100644 tests/engine/aria-repair-hardening.test.ts create mode 100644 tests/engine/aria-wal-crc.test.ts create mode 100644 tests/engine/aria-wal-segment.test.ts create mode 100644 tests/engine/crc32.test.ts create mode 100644 tests/helpers/opfs-mock.ts create mode 100644 tests/hooks-crud.test.ts create mode 100644 tests/maintenance-sql.test.ts delete mode 100644 tests/utils.test.ts diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 4fb0fc9..d4c81f8 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -40,3 +40,25 @@ jobs: - name: Build run: npm run build + + e2e: + runs-on: debian-latest + # 与 MetonaEditor 一致:Playwright 官方镜像(自带 Chromium 与全部系统依赖), + # 避免 runner 宿主(Debian 11)不被 Playwright 1.62 支持的问题 + container: mcr.microsoft.com/playwright:v1.62.1-noble + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: 22.x + cache: 'npm' + - name: Install dependencies + run: npm ci + - name: Build + run: npm run build + - name: Verify Playwright browsers + run: npx playwright install chromium + - name: Run E2E smoke tests + run: npm run test:e2e diff --git a/.gitignore b/.gitignore index d789d2d..d081133 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,7 @@ coverage/ # CatPaw / .zcode 工作区文件(本地 AI 会话计划,勿提交) .zcode/ + +# Playwright e2e 产物 +test-results/ +playwright-report/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 67c06de..a229800 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,115 @@ All notable changes to MetonaSqlark will be documented in this file. +## [0.5.1] - 2026-08-10 + +### 深度审查:消除假实现/半成品/死代码 + +> 对全部源码做系统性审查,修复"宣称存在但从未接线"的假实现、补齐无入口的半成品、 +> 删除无引用的死代码。 + +### Added(假实现接线) + +- **CRUD 生命周期钩子真实接线** — 此前 `beforeInsert`/`afterInsert`/`beforeUpdate`/`afterUpdate`/`beforeDelete`/`afterDelete` + 六个钩子仅存在于类型与文档宣称("14 种钩子"),从未被任何路径触发。现已在两条路径真实触发: + - Table API:`table().insert/insertMany/update().execute()/delete().execute()` + - SQL:`db.query("INSERT/UPDATE/DELETE ...")` + 参数与文档一致(beforeInsert: rows[]、afterUpdate: query, updates, count 等);事务路径不触发(Table 无 hooks 回调,与现状一致) +- **EXPLAIN SQL 入口** — 此前 executor 有 EXPLAIN 分支但 parser 无法解析(无 token),只能手工构造 AST 测试。 + 补齐 `EXPLAIN ` 语法(tokens/lexer/parser),任意引擎可用 +- **ANALYZE / REINDEX / VACUUM SQL 入口** — 此前仅有 AriaEngine 方法(`(engine as any)` 才能调用),README 宣称能力但用户无法触发。 + 补齐 `ANALYZE [TABLE] name` / `REINDEX [TABLE] name` / `VACUUM` 语法;不支持的引擎抛 `NOT_SUPPORTED` +- **SAVEPOINT SQL 入口** — 补齐 `SAVEPOINT name` / `ROLLBACK TO [SAVEPOINT] name` / `RELEASE [SAVEPOINT] name`; + `ROLLBACK [TRANSACTION]` 保持原语义 +- **db.backup() 公共方法** — 引擎级 backup(MVCC 一致性视图)此前无公共入口;Aria 走引擎级,其余引擎回退 exportAll + +### Removed(死代码) + +- **`src/utils.ts` 整文件** — generateId/escapeHTML/deepMerge/debounce/throttle/isBrowser 在 src 内零引用 + (v0.0.1 遗留,仅测试锁定);连同 tests/utils.test.ts 删除 +- **`estimateQueryCost`(未接线的"查询优化器")** — 实现与测试存在但从未接入查询路径(find 用 tryIndexLookup 硬编码),删除消除"优化器存在但没用"假象 +- **MVCC 读侧全套** — readVersion/getLatestCommittedVersions/clearTable/getActiveTxnCount/isActive/getActiveWriteKeys: + 引擎事务读取走 txnSnapshot(MVCC 仅作 undo log),读侧实现从未执行。删除并改写相关测试为验证版本链清理/GC 行为 +- **统计/辅助死方法** — EvictionManager.getAllPages/getSize/popLRU/getCapacity、BufferPool.getCachedPageCount/getDirtyPageCount/getCapacity/newPage、 + WAL.isEnabled/getLSN、CheckpointManager.forceCheckpoint/setInterval/getOpCount、LSM.isInitialized/getCacheSize/getCacheLimit、 + SSTableReader.getMeta/getIndexBlockCount/getStoredChecksum、BloomFilter.getBitSize/getInsertedCount、MemTable.contains、 + FileManager.allocateTableRootPage/createEmptyPage、OPFSEngine.loadTableIntoMemory、QueryExecutor.setMaxRowsPerQuery、 + ConnectionManager.getRefCount +- **类型/常量死代码** — STORAGE_MODES/DISK_ENGINES、ColumnEncoding/DEFAULT_BLOCK_SIZE/DataBlock、CallbackEntrySource、StatementType、AggregateExpression、SubqueryExpression +- **Crypto 全局兼容层** — initCrypto/encryptPage/decryptPage/closeCrypto/isCryptoEnabled(v0.5.0 后引擎走 EncryptedBackend 实例,全局单例无消费者);删除过时的"全局加密落盘"测试(aria-encryption.test.ts 已覆盖等价路径) + +### Changed + +- 测试 1022 → **1010**(63 套件;删除 12 个死代码测试 + 新增 22 个 hooks/维护语句测试);覆盖率 86.68% → 待发布后统计 +- README 补维护语句表(EXPLAIN/ANALYZE/REINDEX/VACUUM/SAVEPOINT SQL 入口)与 `db.backup()` API +- 14 个生命周期钩子现在全部真实触发(site/docs.html 与 CONTRIBUTING 宣称变为事实) + +--- + +## [0.5.0] - 2026-08-10 + +### 里程碑:存储后端生产级硬化(自研 OPFS 后端全面落地) + +> 本次版本对 AriaEngine 存储层做全链路生产级改造:修复"宣称有校验和/加密/页面式存储但实际未实现"的失实实现, +> WAL 重构为分片文件(消除多文件原子性与文件爆炸问题)、SSTable 页面化物理存储(BufferPool/FileManager 真正接入)、 +> 多标签页独占锁、repair 自愈增强,并引入真实 Chromium e2e 验证。 + +### Added + +- **全库 AES-256-GCM 加密(真实接线)** — `AriaEngineConfig.encryption.password`: + - `EncryptedBackend` 装饰器在 backend 层透明加解密(WAL/SSTable/Schema/元数据全覆盖,每个 value 独立随机 IV + GCM 认证) + - PBKDF2-SHA256(100000 迭代)派生密钥,salt + verifier 持久化于 `__aria_keymeta`(密码错误 → `ARIA_DECRYPT_ERROR`) + - 加密开关一致性检测:明文旧库 + 加密配置 → `ARIA_ENCRYPT_CONFIG_ERROR`;加密库 + 无密码 → `ARIA_ENCRYPT_REQUIRED` + - clearAll 保留密钥元数据(库身份保留,密码不变) +- **WAL 分片存储重构** — `SegmentedWALStore`(`__wal_%06d.bin`): + - 取代"每条记录一个 key"旧结构:分片阈值 4MB 自动切换,文件数量可控 + - WAL 序号(LSN)内嵌记录字节流,移除 `__wal_count` 键 → append 单文件原子写(createWritable COW) + - 空洞检测:分片序号不连续 → 空洞之后保守丢弃(仅可能来自 truncate 部分完成,数据已落盘,无害) + - 旧格式 `__wal_N` + `__wal_count` 兼容:读取迁移重放,checkpoint 统一清空 +- **OPFS 后端 v2** — + - `append()` 真追加:`createWritable({ keepExistingData })` + seek,O(chunk) 无需读旧内容 + - 写队列健壮性:单次任务失败不中断队列链(错误返回给调用方),close 等待队列排空 + - open 自动清理崩溃残留临时文件(`.crswap`/`.tmp`) + - 原子性文档化:单文件 createWritable 为 copy-on-write 原子替换 +- **SSTable 页面化物理存储(BufferPool/FileManager 真正接入)** — + - `PageSSTableStore`:SSTable 切分为 4KB 页面,经 FileManager 分配 pageId、BufferPool LRU 缓存 + - `save` 语义 = 已持久化(逐页 flushPage 落盘后才返回,WAL checkpoint 截断安全) + - 页面 ID 列表经 `SSTableMeta.pageIds` 持久化;旧 meta(无 pageIds)自动走整 value 读取(兼容) + - OPFS 后端默认启用(`pageStorage` 配置可覆盖);FileManager 批量分配 `allocatePageIds`(一次 meta 持久化) + - 读取缺失页面返回 null(此前返回空页会静默掩盖页面丢失,自愈路径依赖 null 触发清理) +- **多标签页独占锁** — Web Locks API(Chrome 69+ / Firefox 96+ / Safari 15.4+): + - `ifAvailable` 模式:第二个标签页打开同一库 → 抛 `ARIA_LOCKED`(不排队挂起) + - 打开失败自动释放锁(不泄漏);close 等待锁真正归还 + - 不支持 Web Locks 的环境降级为无锁 + 告警(如实文档化) +- **repair() 自愈增强** — 孤儿页面清理(meta 未引用的 `pg_` 文件)、OPFS 残留临时文件清理、WAL 空洞截断落地 +- **LZ4 格式 v2** — 压缩流前置 4 字节原始大小头:解压不再依赖外部估算(高压缩率数据下 `buf.length*2` 估算不足会截断),损坏头显式抛错 +- **SSTable 真实 CRC-32 校验和** — footer checksum 字段从写死 0 升级为整文件标准 CRC32(checksum=0 识别旧版文件跳过校验,兼容旧库);打开校验/compaction 加载/运行期预加载三处均校验,损坏文件自动清理自愈 +- **WAL 标准 CRC32** — 记录校验从弱滚动校验升级为标准 CRC32;双算法探测(新算法失败再试旧算法)兼容旧 WAL 记录 +- **配置透传** — `DatabaseConfig.aria`:`MetonaSqlark.create()` 可配置 `walSyncMode`/`checkpointInterval`/`encryption`/`pageStorage`/`compression` 等 AriaEngine 专属参数 +- **Playwright e2e(真实 Chromium + OPFS)** — 7 用例:持久化(刷新保留)、关闭重开、崩溃恢复(WAL 重放)、多标签页锁、加密密码往返、页面化端到端 + 索引查询、repair 自愈;`npm run test:e2e` + +### Fixed + +- **加密此前从未接线(严重失实)** — crypto 模块全局单例从未被引擎调用、salt 不持久化重启无法解密;README 宣称的 AES-GCM 实际不可用。改为 EncryptedBackend 装饰器 + keymeta 持久化 + 密码验证 +- **SSTable checksum 写死 0(严重失实)** — 数据腐坏(bit flip)完全无法检测。升级为真实 CRC-32,损坏文件打开自愈 +- **OPFS writeMany 无原子性(P0)** — WAL 记录 + count 多键写入非原子,记录空洞导致后续记录字节错位解析失败。分片重构后 WAL append 单文件原子写 + 空洞检测截断根治 +- **OPFS 高频写入文件爆炸(P1)** — 每条 WAL 记录一个文件,8 万条记录 = 8 万次 createWritable。分片存储 + 真追加根治 +- **LZ4 高压缩率解压截断(P1)** — `buf.length * 2` 估算原始大小,压缩率 >50% 时截断(SSTable 魔数在文件末尾被丢 → 整库数据丢失)。格式 v2 头部自描述根治 +- **OPFS 写队列失败永久中断(P1)** — 队列任务抛错后链 rejected,后续所有写挂起。单次失败不中断链 +- **OPFS close 不等挂起写(P1)** — close 立即置空目录句柄,挂起写静默丢失。close 等待队列排空 +- **Web Locks 方法解构 this 绑定丢失(e2e 发现)** — `navigator.locks.request` 解构后调用抛 Illegal invocation。改用 `.bind(lockManager)` 保持 this +- **页面化 + 崩溃窗口数据丢失(压力测试发现)** — 修复前页面化路径在模拟崩溃测试中丢失已确认写入;根治后 500 随机操作 + 崩溃重放零丢失 + +### Changed + +- `AriaEngineConfig` 新增 `encryption` / `pageStorage`;`DatabaseConfig` 新增 `aria` 透传 +- 页面层精简:删除从未接入主路径的 slot/tuple 模块(假"页面式存储"实现),仅保留生产代码实际使用的 `initPageHeader`/`createPage`;架构宣称如实更新(4KB 页面承载 SSTable 字节切片,非行级 Slotted Page) +- LZ4 压缩格式不向后兼容(v0.2.6 已声明 compression 数据需重新导入,本次格式 v2 同理) +- 测试 958 → **1022**(62 套件);行覆盖率 84.2% → **86.68%**;新增 6 套件:crc32 / aria-checksum / aria-wal-crc / aria-wal-segment / aria-opfs-backend / aria-page-store / aria-encryption / aria-locks / aria-repair-hardening / aria-page-core +- 新增 Playwright e2e 基建(`npm run test:e2e`,7 用例真实 Chromium) + +--- + ## [0.4.4] - 2026-08-09 ### Fixed diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9f4eaa1..de9a233 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -73,7 +73,9 @@ src/ ├── plugin/ # Plugin system (14 lifecycle hooks) └── integrations/ # React & Vue hooks -tests/ # Test suite (837+ test cases, 44 test suites) +tests/ # Test suite (1022 test cases, 62 suites + 7 e2e) +tests/helpers/ # 共享测试工具(OPFS mock 等) +tests/e2e/ # Playwright e2e(真实 Chromium + OPFS) site/ # Documentation site (index / docs / demo) ``` diff --git a/README.md b/README.md index fc55f47..4567084 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,22 @@ # MetonaSqlark

- version + version license - coverage - tests + coverage + tests

-> 基于 TypeScript 的**前端关系型数据库**,支持完整 SQL 查询、Query Builder 链式 API、与 **AriaEngine 自研页面式存储引擎**。 +> 基于 TypeScript 的**前端关系型数据库**,支持完整 SQL 查询、Query Builder 链式 API、与 **AriaEngine 自研存储引擎**。 --- ## ✨ 特性 -- 🚀 **AriaEngine 自研存储引擎** — LSM-Tree 页面式存储,4KB Slotted Page、WAL 崩溃恢复(full 模式真正同步)、LZ4 压缩 -- 💾 **OPFS 自研存储后端** — 纯浏览器文件系统,零 IndexedDB 依赖,二进制页面文件,schema 持久化(空表/索引跨重启完整保留) -- 🔒 **生产级数据安全** — WAL 原子写入 + CRC 完整性校验、`RESTRICT` 外键约束、崩溃恢复自愈(`repair()` 无需删库重建)、SQL 注入防护 +- 🚀 **AriaEngine 自研存储引擎** — LSM-Tree + **SSTable 4KB 页面化物理存储**(BufferPool LRU 缓存 + FileManager 页面管理,v0.5.0 真实接入)、WAL 分片文件(真追加 + 空洞检测)、LZ4 压缩 +- 💾 **OPFS 自研存储后端** — 纯浏览器文件系统,零 IndexedDB 依赖,二进制页面文件,schema 持久化,单文件 COW 原子写,崩溃残留自动清理 +- 🔒 **生产级数据安全** — WAL 原子写入 + 标准 CRC32 完整性校验(SSTable 整文件校验 + WAL 记录校验)、**全库 AES-256-GCM 透明加密**(PBKDF2 密钥派生 + salt 持久化 + 密码验证,v0.5.0 真实接线)、`RESTRICT` 外键约束、崩溃恢复自愈 +- 🔐 **多标签页独占锁** — Web Locks API,第二个标签页打开同一库抛 `ARIA_LOCKED`(v0.5.0) - 🛡 **输入校验全覆盖** — `maxLength`/`min`/`max` 约束、类型检查、必填验证 - 💾 **多引擎架构** — Memory / IndexedDB / OPFS / Hybrid(write-through) / Aria 五种模式 - 📝 **完整 SQL 支持** — SELECT/JOIN/子查询/GROUP BY/HAVING/ORDER BY/LIMIT/BETWEEN/IF NOT EXISTS/ALTER TABLE/TRUNCATE TABLE/UNION/INSERT...SELECT/事务语句/CREATE INDEX/EXISTS(v0.3.0)+ CASE WHEN/哈希连接/组提交(v0.3.1)+ 多标签页同步(v0.3.2) @@ -24,13 +25,13 @@ - 🔗 **Query Builder API** — 链式 `.select().where().orderBy().limit().execute()` - 🔄 **事务回滚** — Memory/IndexedDB/Hybrid/Aria 四引擎事务原子性,自动回滚,MVCC 版本链接入读写路径 - 🔗 **外键级联** — ON DELETE + ON UPDATE(CASCADE / SET NULL / RESTRICT)全引擎支持,支持更新主键(v0.4.2) -- 🛡 **崩溃恢复自愈** — 残缺 SSTable 打开自动跳过、`db.repair()` 自愈、`db.clearAll()` 重置、迁移版本持久化(v0.4.2) -- 🧵 **关闭时序与后台任务加固** — 后台 flush/compaction 串行入队(close 排空后才关闭存储,失败显式报告 `ARIA_BACKGROUND_ERROR`)、预加载等待链稳定(compaction 竞态修复)、事务提交先落 WAL 再合并快照(v0.4.3) -- 📏 **SSTable 编码修复** — 块大小按 UTF-8 字节精确计算(大段中文内容不再因缓冲区低估崩溃)、长度字段 u32(>64KB value 不截断)、v1/v2 双格式兼容(旧库数据不丢)(v0.4.4) +- 🛡 **崩溃恢复自愈** — 残缺 SSTable 打开自动跳过、`db.repair()` 自愈(含孤儿页面清理与残留清理)、`db.clearAll()` 重置、迁移版本持久化(v0.4.2/v0.5.0) +- 🧵 **关闭时序与后台任务加固** — 后台 flush/compaction 串行入队(close 排空后才关闭存储,失败显式报告 `ARIA_BACKGROUND_ERROR`) +- 📏 **SSTable 编码修复** — 块大小按 UTF-8 字节精确计算、长度字段 u32、v1/v2 双格式兼容(v0.4.4) - 🌲 **RB-Tree 完整实现** — 标准红黑树插入+删除修复,O(log n) 保证 - ⚡ **性能优化** — SSTableReader 二分查找统一、IndexedDB 索引利用、crypto 实例化避免全局状态 - 🌐 **浏览器兼容** — Chrome 80+ / Firefox 80+ / Safari 14+ / Edge 80+ / Node.js 16+ -- 🧪 **958 测试 · 84.2% 覆盖率** — 52 套件,生产级质量保证 +- 🧪 **1022 测试 · 86.7% 覆盖率** — 62 套件 + 7 个 Playwright 真实 Chromium e2e,生产级质量保证 --- @@ -217,6 +218,7 @@ await db2.disconnect(); // 引用计数 -1 | `maxRowsPerQuery` | `number` | `0` | 查询结果行数上限(0=不限制)✅ v0.2.5 生效 | | `debug` | `boolean` | `false` | 调试模式,输出详细日志 🆕 | | `onError` | `(error) => void` | — | 全局错误回调 🆕 | +| `aria` | `AriaEngineConfig` | — | AriaEngine 专属配置透传:`walSyncMode`/`checkpointInterval`/`encryption`/`pageStorage`/`compression` 等 🆕 v0.5.0 | ### ColumnDef 列定义 @@ -254,9 +256,24 @@ await db2.disconnect(); // 引用计数 -1 | `db.clearAll()` | 清空全部数据与表结构(保留库本身,实例可继续使用)🆕 v0.4.2 | | `db.exportTable(name)` / `db.exportAll()` | 导出数据 JSON | | `db.importTable(name, data)` | 导入数据 | +| `db.backup()` | 在线备份:全库一致性快照(Aria 引擎级备份 / 其余引擎回退 exportAll)🆕 v0.5.1 | | `db.addMigration(v, fn)` / `db.migrateTo(v)` | 数据迁移(版本持久化到库内,重启不重跑)🆕 v0.4.2 | | `db.subscribe(table, fn)` | 订阅表变更 | -| `db.on(hook, fn)` | 注册钩子 (14 种) | +| `db.on(hook, fn)` | 注册钩子 (14 种,全部真实触发)🆕 v0.5.1 | + +### 维护语句(v0.5.1 SQL 入口) + +| 语句 | 说明 | 引擎支持 | +|------|------|----------| +| `EXPLAIN SELECT ...` | 输出查询计划(type/table/where/estimatedRows/actualTimeMs) | 全部 | +| `ANALYZE [TABLE] name` | 收集表统计信息(行数/平均行大小/索引深度/列基数) | Aria | +| `REINDEX [TABLE] name` | 重建表二级索引 | Aria | +| `VACUUM` | 压缩 LSM + 清理 MVCC 碎片 | Aria | +| `SAVEPOINT name` | 创建嵌套事务保存点 | Aria | +| `ROLLBACK TO [SAVEPOINT] name` | 回滚到保存点 | Aria | +| `RELEASE [SAVEPOINT] name` | 释放保存点 | Aria | + +> 不支持的引擎执行维护语句抛 `NOT_SUPPORTED`。 ### 连接池(v0.1.13) @@ -289,10 +306,12 @@ const { data, loading, refresh } = useSqlarkQuery(db, 'SELECT * FROM users'); | **事务回滚** | ✅ 快照 | ✅ 原子flush | ✅ 快照 | ✅ 双引擎 | ✅ MVCC | | **二级索引** | ✅ Hash | ✅ Hash | ✅ Hash(重启恢复) | ✅ Hash | ✅ LSM(重启恢复) | | **查询性能** | ⚡ O(1) PK | 🟡 O(1) PK | 🟡 O(1) PK | ⚡ O(1) PK | ⚡ O(log n) | -| **数据上限** | 内存限制 | ~2GB(IDB限制) | ~磁盘可用(整表重写,≤1000行/表为宜) | ~2GB(IDB) | 内存限制 | -| **浏览器** | 全部 | 全部 | Chrome/Edge 102+ | 全部 | 全部 | -| **适用场景** | 缓存/测试 | 标准持久化 | Chromium专有 | 速度+持久化 | 大规模/分析 | -| **测试覆盖** | 30+ | 30+ | 15 | 15+ | 200+ | +| **数据上限** | 内存限制 | ~2GB(IDB限制) | ~磁盘可用(页面化后大表可行) | ~2GB(IDB) | 内存限制 | +| **浏览器** | 全部 | 全部 | Chrome/Edge 102+ / Firefox 111+ / Safari 15.2+ | 全部 | 全部 | +| **多标签页** | — | ✅ | ❌(Web Locks 独占锁,v0.5.0) | ❌ | ✅ 锁保护 | +| **全库加密** | — | — | — | — | ✅ AES-GCM(v0.5.0) | +| **适用场景** | 缓存/测试 | 标准持久化 | Chromium+ 持久化 | 速度+持久化 | 大规模/分析 | +| **测试覆盖** | 30+ | 30+ | 15+e2e | 15+ | 400+ | ### Memory 模式 - **环境**: 所有浏览器、Node.js @@ -307,10 +326,10 @@ const { data, loading, refresh } = useSqlarkQuery(db, 'SELECT * FROM users'); - **适用**: 标准前端数据库持久化场景 ### Disk (OPFS) 模式 -- **环境**: **仅限** Chrome 102+ / Edge 102+(Origin Private File System) -- **限制**: Firefox/Safari 不支持 OPFS API;每次写入重写整表 JSON 文件(大表性能差,不建议 >1000 行) +- **环境**: Chrome 102+ / Edge 102+ / Firefox 111+ / Safari 15.2+(Origin Private File System) +- **限制**: 每次写入重写整表 JSON 文件(大表性能差,不建议 >1000 行);多标签页并发写无保护(Hybrid 模式) - **能力**: 完整 CRUD、重启自动加载数据(空表/索引/schema 完整保留,v0.4.2)、事务回滚、并发写安全(内存快照一致) -- **适用**: Chromium 独占场景、小数据集持久化 +- **适用**: 小数据集持久化(大表请用 Aria + OPFS 页面化存储) ### Hybrid 模式 - **环境**: 所有浏览器 @@ -320,8 +339,8 @@ const { data, loading, refresh } = useSqlarkQuery(db, 'SELECT * FROM users'); ### Aria 模式 - **环境**: 所有浏览器(后端可选 IndexedDB / OPFS / Memory) -- **限制**: Memory 后端重启丢失;IndexedDB 后端受配额限制;OPFS 后端仅 Chromium -- **能力**: LSM-Tree 存储引擎、二级索引(跨重启恢复)、MVCC 事务、WAL 原子写入崩溃恢复(残缺 SSTable 打开自动跳过)、ON UPDATE/DELETE 外键级联、Bloom Filter、AES-GCM 加密、Savepoint、EXPLAIN、ANALYZE、REINDEX、VACUUM、`repair()` 自愈 +- **限制**: Memory 后端重启丢失;IndexedDB 后端受配额限制;OPFS 后端需 OPFS 支持(Chrome 102+ / Firefox 111+ / Safari 15.2+);同一库仅允许一个标签页打开(Web Locks 独占锁,第二个标签页抛 `ARIA_LOCKED`) +- **能力**: LSM-Tree 存储引擎、SSTable 4KB 页面化物理存储(OPFS 后端默认启用,BufferPool LRU 缓存)、二级索引(跨重启恢复)、MVCC 事务、WAL 分片文件原子写入崩溃恢复(真追加 + 空洞检测)、ON UPDATE/DELETE 外键级联、Bloom Filter、**全库 AES-GCM 透明加密**(v0.5.0)、LZ4 压缩、Savepoint、EXPLAIN、ANALYZE、REINDEX、VACUUM、`repair()` 自愈(含孤儿页面清理) - **适用**: 大规模数据分析、需要自研引擎可控性的高级场景 --- @@ -331,11 +350,15 @@ const { data, loading, refresh } = useSqlarkQuery(db, 'SELECT * FROM users'); AriaEngine 是内置的页面式存储引擎,对标 SQLite 的设计理念: ```typescript -// 激活 AriaEngine +// 激活 AriaEngine(全库加密 + OPFS 页面化存储,v0.5.0) const db = await MetonaSqlark.create({ name: 'my-app', mode: 'aria', // 🆕 自研引擎模式 - diskEngine: 'indexeddb', // 'indexeddb' | 'opfs' | 'memory' + diskEngine: 'opfs', // 'indexeddb' | 'opfs' | 'memory' + aria: { // 🆕 AriaEngine 专属配置透传(v0.5.0) + walSyncMode: 'full', // WAL 同步模式 + encryption: { password: 'my-password' }, // 全库 AES-GCM 加密 + }, }); // 与现有 API 完全兼容 @@ -351,36 +374,39 @@ const rows = await db.query('SELECT * FROM users'); ``` ┌──────────────────────────────────────────┐ -│ AriaEngine v0.2.5 │ +│ AriaEngine v0.5.0 │ │ (implements IStorageEngine) │ ├──────────────────────────────────────────┤ │ LSM-Tree │ Buffer Pool │ WAL │ -│ MemTable │ LRU (256pp) │ Recovery │ -│ +SSTable │ +FileManager │ +CRC │ +│ MemTable │ LRU (256pp) │ Segmented │ +│ +SSTable │ +FileManager │ +CRC-32 │ +│ (4KB Page) │ │ +空洞检测 │ ├──────────────────────────────────────────┤ -│ MVCC │ Bloom Filter │ LZ4 │ -│ Snapshot │ FNV-1a+Murmur│ Compress │ -│ +Savepoint│ +Serialize │ │ +│ MVCC │ Bloom Filter │ LZ4 v2 │ +│ Snapshot │ FNV-1a+Murmur│ +大小头 │ +│ +Savepoint│ +Serialize │ │ ├──────────────────────────────────────────┤ -│ AES-GCM │ 二级索引 │ ANALYZE │ -│ Encrypt │ Per-Column │ EXPLAIN │ +│ EncryptedBackend │ 二级索引 │ ANALYZE │ +│ AES-GCM 全库 │ Per-Column│ EXPLAIN │ ├──────────────────────────────────────────┤ -│ Storage Backend (IDB / OPFS / Memory) │ +│ Web Locks 独占锁 │ OPFS Backend (v2) │ +│ (多标签页) │ append/COW原子/清理 │ └──────────────────────────────────────────┘ ``` | 特性 | 说明 | |------|------| | **LSM-Tree** | MemTable (红黑树) → SSTable 多级索引,异步 Compaction(从存储兜底加载,不依赖缓存),写背压 | -| **WAL** | Write-Ahead Log 二进制格式,CRC 校验,记录与计数单事务原子写入,full/batch/none 三种模式(full 模式真正同步 ✅ v0.2.5),16MB 阈值自动 checkpoint(活跃事务期间不截断 ✅ v0.4.2) | -| **崩溃恢复** | 打开时完整性校验(残缺 SSTable 自动跳过并清理)、WAL 按 key 扫描恢复(不丢记录)、恢复后自动重建二级索引 ✅ v0.4.2 | +| **页面化物理存储** | OPFS 后端下 SSTable 存为 4KB 页面(`pageStorage` 自动启用):FileManager 分配 pageId、BufferPool LRU 缓存(256 页 ≈ 1MB 可控内存)、save 即落盘(WAL checkpoint 截断安全)、`SSTableMeta.pageIds` 持久化(旧整 value 数据兼容)v0.5.0 | +| **WAL** | 分片文件 `__wal_%06d.bin`(4MB 阈值切换)+ 真追加(createWritable keepExistingData);标准 CRC32 记录校验;full/batch/none 三种模式(full 真正同步);空洞检测截断;16MB 阈值自动 checkpoint(活跃事务期间不截断)v0.5.0 | +| **崩溃恢复** | 打开时完整性校验(残缺 SSTable 自动跳过并清理 + 整文件 CRC-32 校验)、WAL 按 key 扫描恢复(不丢记录)、恢复后自动重建二级索引 | +| **全库加密** | `encryption.password` 配置 → EncryptedBackend 透明加解密(WAL/SSTable/Schema/元数据全密文);PBKDF2-SHA256 密钥派生 + salt/verifier 持久化;密码错误/数据篡改 → `ARIA_DECRYPT_ERROR`;明文库/加密库开关一致性检测 v0.5.0 | | **MVCC** | 版本链 + 快照隔离,事务读写不互斥,提交/回滚按事务写入 key 精准清理,自动 GC | -| **Buffer Pool** | SSTable 缓存 LRU 上限(`bufferPoolPages` × `pageSize`,默认 256 页 ≈ 1MB 可控内存)✅ v0.2.6 生效,查询前异步预加载兜底,缓存驱逐不丢数据 | | **Bloom Filter** | FNV-1a + Murmur 双哈希,SSTable footer 序列化,查询时 probe | -| **二级索引** | 每列独立 LSM Tree,支持 $eq/$in/$gt/$lt 范围扫描,跨重启自动恢复,WAL 恢复后自动重建 ✅ v0.4.2 | -| **AES-GCM** | PBKDF2 密钥派生 + AES-256-GCM 页面级加密,CryptoManager 实例化 ✅ v0.2.5 | -| **Compaction** | 异步 Leveled Compaction,Level 0 > 8 触发同步背压,compactLevel public 接口 ✅ v0.2.5 | -| **OPFS Backend** | 纯浏览器文件系统,Promise 队列串行写,零外部依赖 | +| **二级索引** | 每列独立 LSM Tree,支持 $eq/$in/$gt/$lt 范围扫描,跨重启自动恢复,WAL 恢复后自动重建 | +| **多标签页锁** | Web Locks API 库级独占锁(`ifAvailable` 不排队):第二个标签页抛 `ARIA_LOCKED`;不支持的环境降级无锁并告警 v0.5.0 | +| **Compaction** | 异步 Leveled Compaction,Level 0 > 8 触发同步背压,compactLevel public 接口 | +| **OPFS Backend** | 零外部依赖纯浏览器文件系统:单文件 COW 原子写、`append` 真追加、写队列失败不中断、close 排空、崩溃残留自动清理 v0.5.0 | --- @@ -391,6 +417,7 @@ npm install # 安装依赖 npm run dev # 开发模式(localhost:3001) npm run build # 生产构建(生成 dist/) npm test # 运行测试 +npm run test:e2e # Playwright e2e(真实 Chromium + OPFS,需先 build) npm run lint # 代码检查 npm run typecheck # 类型检查 ``` @@ -401,23 +428,29 @@ npm run typecheck # 类型检查 | 指标 | 数值 | |------|------| -| 测试用例 | 958 | -| 测试套件 | 51 | -| 行覆盖率 | 84.2% | +| 测试用例 | 1022 | +| 测试套件 | 62(+7 Playwright e2e) | +| 行覆盖率 | 86.7% | | SQL 关键字 | 36 | | 存储引擎 | 5(Memory / IndexedDB / OPFS / Hybrid / **Aria**) | ### 🌐 浏览器兼容性 -| 浏览器 | 最低版本 | Memory | IndexedDB | OPFS | Aria | -|--------|----------|--------|-----------|------|------| -| Chrome | 80+ | ✅ | ✅ | ✅ (102+) | ✅ | -| Firefox | 80+ | ✅ | ✅ | ❌ | ✅ | -| Safari | 14+ | ✅ | ✅ | ❌ | ✅ | -| Edge | 80+ | ✅ | ✅ | ✅ (102+) | ✅ | -| Node.js | 16+ | ✅ | ✅ (fake-idb) | ❌ | ✅ | +| 浏览器 | 最低版本 | Memory | IndexedDB | OPFS | Web Locks | Aria | +|--------|----------|--------|-----------|------|-----------|------| +| Chrome | 80+ | ✅ | ✅ | ✅ (102+) | ✅ (69+) | ✅ | +| Firefox | 80+ | ✅ | ✅ | ✅ (111+) | ✅ (96+) | ✅ | +| Safari | 14+ | ✅ | ✅ | ✅ (15.2+) | ✅ (15.4+) | ✅ | +| Edge | 80+ | ✅ | ✅ | ✅ (102+) | ✅ (79+) | ✅ | +| Node.js | 16+ | ✅ | ✅ (fake-idb) | ❌ (测试用 mock) | ❌ | ✅ | -> **注意**: OPFS 模式仅限 Chromium 内核浏览器 (Chrome/Edge 102+),Firefox/Safari 请使用 `diskEngine: 'indexeddb'`。 +> **OPFS 支持说明(v0.4.5 更新)**: Chromium(Chrome/Edge 102+)、Firefox 111+、Safari 15.2+ +> 均已支持基础 OPFS API(`createWritable` 原子写)。OPFS 无跨文件事务, +> AriaEngine 以 WAL 分片单文件原子写 + 空洞检测截断保证崩溃一致性。 +> +> **多标签页保护(v0.4.5)**: AriaEngine 打开库时通过 Web Locks API 获取库级独占锁, +> 第二个标签页打开同一库会抛 `ARIA_LOCKED`。Web Locks 不可用的环境降级为无锁并告警 +> (仅理论上,现代浏览器均支持)。 --- diff --git a/dist/metona-sqlark.cjs b/dist/metona-sqlark.cjs index 1c9e940..15ae153 100644 --- a/dist/metona-sqlark.cjs +++ b/dist/metona-sqlark.cjs @@ -6,7 +6,6 @@ Object.defineProperty(exports, '__esModule', { value: true }); * metona-sqlark Constants — 类型定义 / 默认配置 / 枚举 * @module constants */ -/** 所有存储模式 */ /** 所有字段类型 */ const FIELD_TYPES = ['string', 'number', 'boolean', 'date', 'json']; /** 数据库默认配置 */ @@ -18,6 +17,7 @@ const DB_DEFAULTS = Object.freeze({ maxRowsPerQuery: 0, // 0 = 不限制 debug: false, multiTabSync: false, + aria: undefined, }); // --------------------------------------------------------------------------- // 错误类型 @@ -34,7 +34,7 @@ class DatabaseError extends Error { // --------------------------------------------------------------------------- // 版本 // --------------------------------------------------------------------------- -const VERSION = '0.4.4'; +const VERSION = '0.5.1'; /** * metona-sqlark Shared WHERE Matcher — 统一的条件匹配逻辑 @@ -1931,17 +1931,6 @@ class OPFSEngine { } } } - /** 从 OPFS 加载表数据到内存缓存 */ - async loadTableIntoMemory(tableName, schema) { - await this.memoryCache.createTable(schema); - const rows = await this.readTableData(tableName); - if (rows.length > 0) { - // 直接用 Map 设置绕过 insert 校验 - for (const row of rows) { - await this.memoryCache.insert(tableName, [row]); - } - } - } } /** @@ -2054,7 +2043,7 @@ const PAGE_HEADER_SIZE = 16; // ============================================================================= var PageType; (function (PageType) { - /** 数据页面:存储行数据 */ + /** 数据页面:存储 SSTable 字节切片 */ PageType[PageType["DATA"] = 1] = "DATA"; /** 索引页面:存储索引节点 */ PageType[PageType["INDEX"] = 2] = "INDEX"; @@ -2063,16 +2052,9 @@ var PageType; /** 元数据页面:存储表/库元信息 */ PageType[PageType["META"] = 4] = "META"; })(PageType || (PageType = {})); -/** 列类型(内部二进制编码用) */ -var ColumnEncoding; -(function (ColumnEncoding) { - ColumnEncoding[ColumnEncoding["STRING"] = 1] = "STRING"; - ColumnEncoding[ColumnEncoding["NUMBER"] = 2] = "NUMBER"; - ColumnEncoding[ColumnEncoding["BOOLEAN"] = 3] = "BOOLEAN"; - ColumnEncoding[ColumnEncoding["DATE"] = 4] = "DATE"; - ColumnEncoding[ColumnEncoding["JSON"] = 5] = "JSON"; - ColumnEncoding[ColumnEncoding["NULL"] = 6] = "NULL"; -})(ColumnEncoding || (ColumnEncoding = {})); +// ============================================================================= +// 列类型(内部二进制编码用) +// ============================================================================= // ============================================================================= // LSM-Tree // ============================================================================= @@ -2102,12 +2084,6 @@ var WALRecordType; // ============================================================================= // MVCC // ============================================================================= -/** 事务隔离级别 */ -var IsolationLevel; -(function (IsolationLevel) { - IsolationLevel[IsolationLevel["READ_COMMITTED"] = 1] = "READ_COMMITTED"; - IsolationLevel[IsolationLevel["SNAPSHOT"] = 2] = "SNAPSHOT"; -})(IsolationLevel || (IsolationLevel = {})); /** 事务状态 */ var TransactionState; (function (TransactionState) { @@ -2133,6 +2109,8 @@ const DEFAULT_ARIA_CONFIG = { storageBackend: 'indexeddb', walSizeThreshold: 16 * 1024 * 1024, // 16MB maxMemoryMB: 64, + encryption: undefined, + pageStorage: undefined, }; /** @@ -2574,10 +2552,6 @@ class MemTable { this.tree.clear(); this._estimatedSize = 0; } - /** 检查 key 是否存在 */ - contains(key) { - return this.tree.find(key) !== null; - } // ----------------------------------------------------------------------- // 内部 // ----------------------------------------------------------------------- @@ -2659,14 +2633,6 @@ class BloomFilter { serialize() { return this.bits; } - /** bit 数组大小 */ - getBitSize() { - return this.bits.byteLength * 8; - } - /** 已插入 key 数量 */ - getInsertedCount() { - return this._inserted; - } /** hash 函数数量 */ getHashCount() { return this.numHashes; @@ -2707,6 +2673,55 @@ class BloomFilter { } } +/** + * AriaEngine CRC32 — 标准 CRC-32(IEEE 802.3,多项式 0xEDB88320) + * @module engine/aria/crc32 + * + * 查表法实现。 + * 分段计算约定: + * crc32(head + tail) === crc32Finalize(crc32Update(crc32Update(0xFFFFFFFF, head), tail)) + * === crc32(tail, crc32(head)) + * 用于 SSTable 文件校验和与 WAL 记录完整性校验。 + */ +/** CRC-32 查找表(0xEDB88320 反射多项式) */ +const CRC32_TABLE = (() => { + const table = new Uint32Array(256); + for (let i = 0; i < 256; i++) { + let c = i; + for (let k = 0; k < 8; k++) { + c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1; + } + table[i] = c >>> 0; + } + return table; +})(); +/** CRC-32 初始累加器状态 */ +const CRC32_INIT = 0xffffffff; +/** + * 更新内部 CRC 累加状态(供分段计算使用,接收中间状态返回中间状态)。 + */ +function crc32Update(state, data) { + let crc = state >>> 0; + for (let i = 0; i < data.byteLength; i++) { + crc = (CRC32_TABLE[(crc ^ data[i]) & 0xff] ^ (crc >>> 8)) >>> 0; + } + return crc >>> 0; +} +/** 将中间状态转换为最终校验和(终止计算) */ +function crc32Finalize(state) { + return (state ^ CRC32_INIT) >>> 0; +} +/** + * 计算标准 CRC-32 校验和。 + * @param data 输入字节 + * @param seed 前序片段计算的最终校验和(首段传 0 或不传) + * @returns 32 位无符号校验和 + */ +function crc32(data, seed = 0) { + const state = crc32Update(seed ^ CRC32_INIT, data); + return crc32Finalize(state); +} + /** * AriaEngine SSTable Builder — 构建有序字符串表 * @module engine/aria/index/sstable_builder @@ -2816,7 +2831,15 @@ class SSTableBuilder { view.setUint32(footerOffset + 16, bloomFilter.getHashCount(), false); view.setUint32(footerOffset + 20, this.entries.length, false); view.setUint32(footerOffset + 24, SSTABLE_MAGIC_V2, false); - view.setUint32(footerOffset + 28, 0, false); // checksum (simplified: 0) + // checksum 字段先写 0,全部字节就绪后计算整文件 CRC32 再回填 + view.setUint32(footerOffset + 28, 0, false); + // v0.4.5: 真实 CRC-32 校验和 — 覆盖除自身(最后 4 字节)外的全部内容。 + // checksum 永远非 0(计算结果为 0 时用 1 代替),读取端以 0 识别旧版无校验文件 + const all = new Uint8Array(buf); + let checksum = crc32(all.subarray(0, all.byteLength - 4)); + if (checksum === 0) + checksum = 1; + view.setUint32(footerOffset + 28, checksum, false); return { sstableData: new Uint8Array(buf), indexEntries, @@ -2920,11 +2943,25 @@ class SSTableReader { this.bloomFilter = null; /** 格式版本:1 = u16 长度字段(旧),2 = u32 长度字段(v0.4.4) */ this.format = 2; + /** footer 中存储的 checksum(0 = 旧版无校验文件) */ + this.storedChecksum = 0; this.data = data; this.view = new DataView(data.buffer, data.byteOffset, data.byteLength); this.meta = meta; this.parseFooter(); } + /** + * 校验整文件 CRC-32(覆盖除 checksum 字段外的全部字节)。 + * checksum === 0 表示旧版文件(v1 / v0.4.4 及更早的 v2),跳过校验返回 true(兼容)。 + */ + verifyChecksum() { + if (this.storedChecksum === 0) + return true; + if (this.data.byteLength < 4) + return false; + const computed = crc32(this.data.subarray(0, this.data.byteLength - 4)); + return computed === this.storedChecksum; + } /** 长度字段宽度:v2 = 4 字节 u32,v1 = 2 字节 u16 */ lenFieldSize() { return this.format === 2 ? 4 : 2; @@ -3060,14 +3097,6 @@ class SSTableReader { } } } - /** 获取元数据 */ - getMeta() { - return this.meta; - } - /** 获取索引条目数 */ - getIndexBlockCount() { - return this.indexEntries.length; - } // ----------------------------------------------------------------------- // 内部 // ----------------------------------------------------------------------- @@ -3093,6 +3122,7 @@ class SSTableReader { const bloomSize = this.view.getUint32(footerOffset + 12, false); const bloomHashCount = this.view.getUint32(footerOffset + 16, false); this.entryCount = this.view.getUint32(footerOffset + 20, false); + this.storedChecksum = this.view.getUint32(footerOffset + 28, false); // v0.4.1-fix: 完整性校验 — 索引块必须完全落在文件内,否则视为残缺文件跳过 if (indexOffset + 4 > this.data.byteLength || indexOffset + indexSize > this.data.byteLength) { return; // 残缺文件:无索引块可读,get/rangeScan 均返回空 @@ -3570,7 +3600,8 @@ class LSM { } } for (const id of toLoad) { - await this.preloadSSTable(id); + const meta = this.findMetaById(id); + await this.preloadSSTable(id, meta); } } /** 预加载包含指定 key 的所有 SSTable 到缓存 */ @@ -3594,9 +3625,20 @@ class LSM { } } for (const id of toLoad) { - await this.preloadSSTable(id); + const meta = this.findMetaById(id); + await this.preloadSSTable(id, meta); } } + /** 按 id 查找 SSTable 元数据(prefetch 预加载用) */ + findMetaById(id) { + for (let level = 0; level < MAX_LSM_LEVELS; level++) { + for (const meta of this.levels[level]) { + if (meta.id === id) + return meta; + } + } + return undefined; + } get(key) { // 1. 活跃 MemTable let result = this.memtable.get(key); @@ -3720,6 +3762,10 @@ class LSM { let reader; try { reader = new SSTableReader(data, meta); + if (!reader.verifyChecksum()) { + await this.dropInvalidSSTable(meta); + continue; + } } catch { await this.dropInvalidSSTable(meta); @@ -3819,9 +3865,6 @@ class LSM { levelCounts: this.levels.map((l) => l.length), }; } - isInitialized() { - return this.initialized; - } // ======================================================================= // 内部 // ======================================================================= @@ -3850,6 +3893,7 @@ class LSM { * v0.4.2-fix: 校验单个 SSTable 的完整性。 * - 文件不存在 → 清理 meta,返回 false * - 文件过小/魔数错误/索引越界(残缺写入产物)→ 清理 meta,返回 false + * - v0.4.5: 整文件 CRC-32 校验失败(数据腐坏)→ 清理 meta,返回 false * 校验通过的数据不缓存(保持内存预算),读路径按需预加载。 */ async validateSSTable(meta) { @@ -3864,7 +3908,11 @@ class LSM { return false; } try { - new SSTableReader(data, meta); + const reader = new SSTableReader(data, meta); + if (!reader.verifyChecksum()) { + this.dropInvalidSSTable(meta); + return false; + } } catch { this.dropInvalidSSTable(meta); @@ -3917,13 +3965,27 @@ class LSM { } } /** 预加载 SSTable 到缓存(受 cacheLimitBytes 上限约束) */ - async preloadSSTable(id) { + async preloadSSTable(id, meta) { if (this.sstableCache.has(id)) return; const data = await this.sstableStore.load(id); - if (data) { - this.cacheSSTable(id, data); + if (!data) + return; + // v0.4.5: 运行期加载同样校验整文件 CRC-32,损坏文件不缓存并清理(自愈) + if (meta) { + try { + const reader = new SSTableReader(data, meta); + if (!reader.verifyChecksum()) { + await this.dropInvalidSSTable(meta); + return; + } + } + catch { + await this.dropInvalidSSTable(meta); + return; + } } + this.cacheSSTable(id, data); } /** 写入缓存。注意:不在加载时立即驱逐,避免破坏正在进行的同步扫描 */ cacheSSTable(id, data) { @@ -3948,14 +4010,6 @@ class LSM { this.sstableCache.delete(eldestId); } } - /** 获取当前 SSTable 缓存大小(字节) */ - getCacheSize() { - return this.cacheSize; - } - /** 获取 SSTable 缓存容量上限(字节) */ - getCacheLimit() { - return this.cacheLimitBytes; - } } /** @@ -4104,12 +4158,6 @@ class WAL { // ======================================================================= // 统计 // ======================================================================= - isEnabled() { - return this.enabled; - } - getLSN() { - return this.lsn; - } getBufferedCount() { return this.buffer.length; } @@ -4120,6 +4168,14 @@ class WAL { // ----------------------------------------------------------------------- // 编解码 // ----------------------------------------------------------------------- + /** 旧版弱滚动校验(v0.4.4 及更早写入的 WAL 记录使用,双算法探测兼容) */ + legacyChecksum(data) { + let crc = 0; + for (let i = 0; i < data.length; i++) { + crc = ((crc << 5) - crc + data[i]) | 0; + } + return crc >>> 0; + } encodeRecord(record) { const encoder = new TextEncoder(); const tableBytes = encoder.encode(record.tableName); @@ -4154,13 +4210,10 @@ class WAL { offset += 4; new Uint8Array(buf).set(jsonBytes, offset); offset += jsonBytes.length; - // 简单 CRC - let crc = 0; + // v0.4.5: 标准 CRC-32 校验(此前为弱滚动校验,误检率更高) const u8 = new Uint8Array(buf, 0, offset); - for (let i = 0; i < u8.length; i++) { - crc = ((crc << 5) - crc + u8[i]) | 0; - } - view.setUint32(offset, crc >>> 0, false); + const crc = crc32(u8); + view.setUint32(offset, crc, false); return new Uint8Array(buf); } decodeAllRecords(data) { @@ -4201,15 +4254,13 @@ class WAL { catch { /* ok */ } } offset += jsonLen; - // 验证 CRC(跨记录数据计算,不含 CRC 自身) + // 验证 CRC:先标准 CRC-32,失败再尝试旧版弱滚动校验(兼容旧库 WAL 记录) const storedCrc = view.getUint32(offset, false); offset += 4; const recordBytes = data.slice(recordStart, offset - 4); - let computedCrc = 0; - for (let i = 0; i < recordBytes.length; i++) { - computedCrc = ((computedCrc << 5) - computedCrc + recordBytes[i]) | 0; - } - if ((computedCrc >>> 0) !== storedCrc) { + const computedNew = crc32(recordBytes); + const computedLegacy = this.legacyChecksum(recordBytes); + if ((computedNew >>> 0) !== storedCrc && (computedLegacy >>> 0) !== storedCrc) { // CRC 不匹配,跳过此损坏记录 // eslint-disable-next-line no-console console.warn(`[AriaEngine WAL] CRC mismatch at record LSN=${lsn}, skipping`); @@ -4233,6 +4284,224 @@ class WAL { } } +/** + * AriaEngine Segmented WAL Store — 分片式 WAL 持久化存储 + * @module engine/aria/wal/segmented_store + * + * v0.4.5: 取代"每条记录一个 key"的旧结构: + * - 分片文件 `__wal_%06d.bin`,达到阈值(默认 4MB)切新分片 → 文件数量可控 + * - append 追加写当前分片(后端支持真追加则 O(chunk),否则回退 read+write) + * - WAL 序号(LSN)内嵌于记录字节流,无需独立 count 键 → append 单文件原子写 + * - readAll 检测分片序号空洞:序号不连续 → 丢弃空洞之后的分片(保守截断, + * 空洞仅可能来自 truncate 部分完成——此时数据已落盘,丢弃无害) + * - 兼容旧格式 `__wal_N`(每条记录一个键)+ `__wal_count`:读取时迁移重放, + * checkpoint 时一并清空 + */ +/** 分片文件名:__wal_%06d.bin */ +const WAL_SEGMENT_PREFIX = '__wal_'; +const SEGMENT_REGEX = /^__wal_(\d{6})\.bin$/; +const LEGACY_RECORD_REGEX = /^__wal_(\d+)$/; +const LEGACY_COUNT_KEY = '__wal_count'; +/** 默认分片阈值 */ +const DEFAULT_WAL_SEGMENT_SIZE = 4 * 1024 * 1024; +// --------------------------------------------------------------------------- +// SegmentedWALStore +// --------------------------------------------------------------------------- +class SegmentedWALStore { + constructor(backend, segmentSize = DEFAULT_WAL_SEGMENT_SIZE) { + this.backend = backend; + /** 当前分片序号(append 定位) */ + this.currentSegment = 0; + /** 当前分片字节数(内存跟踪,append 切分片判断) */ + this.currentSize = 0; + this.segmentSize = segmentSize; + } + /** 分片 key 生成 */ + segmentKey(seq) { + return `${WAL_SEGMENT_PREFIX}${String(seq).padStart(6, '0')}.bin`; + } + async append(data) { + if (data.byteLength === 0) + return; + if (this.currentSize + data.byteLength > this.segmentSize) { + // 当前分片放不下 → 切新分片 + this.currentSegment++; + this.currentSize = 0; + } + const key = this.segmentKey(this.currentSegment); + const copy = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength); + if (typeof this.backend.append === 'function') { + await this.backend.append(key, copy); + } + else { + // 回退:读旧 + 拼接 + 写(单文件原子写) + const existing = await this.backend.read(key); + if (existing) { + const combined = new ArrayBuffer(existing.byteLength + copy.byteLength); + new Uint8Array(combined).set(new Uint8Array(existing), 0); + new Uint8Array(combined).set(new Uint8Array(copy), existing.byteLength); + await this.backend.write(key, combined); + } + else { + await this.backend.write(key, copy); + } + } + this.currentSize += data.byteLength; + } + async readAll() { + const keys = await this.backend.listKeys(); + // ---- 新格式分片 ---- + const segments = keys + .filter((k) => SEGMENT_REGEX.test(k)) + .map((k) => ({ seq: Number(k.match(SEGMENT_REGEX)[1]), key: k })) + .sort((a, b) => a.seq - b.seq); + // 空洞检测:分片序号必须从 0 严格连续,空洞后的分片整体丢弃 + let keepCount = 0; + for (let i = 0; i < segments.length; i++) { + if (segments[i].seq !== i) + break; + keepCount = i + 1; + } + const validSegments = segments.slice(0, keepCount); + // ---- 旧格式兼容:__wal_N 单记录键(迁移前数据) ---- + const legacyKeys = keys + .filter((k) => LEGACY_RECORD_REGEX.test(k)) + .map((k) => ({ seq: Number(k.match(LEGACY_RECORD_REGEX)[1]), key: k })) + .sort((a, b) => a.seq - b.seq); + const parts = []; + // 旧格式在前(它们是最早的记录) + for (const { key } of legacyKeys) { + const raw = await this.backend.read(key); + if (raw) + parts.push(new Uint8Array(raw)); + } + // 新格式分片在后 + for (const { key } of validSegments) { + const raw = await this.backend.read(key); + if (raw) + parts.push(new Uint8Array(raw)); + } + // 同步当前分片状态(追加定位) + if (validSegments.length > 0) { + this.currentSegment = validSegments[validSegments.length - 1].seq; + const lastRaw = await this.backend.read(validSegments[validSegments.length - 1].key); + this.currentSize = lastRaw ? lastRaw.byteLength : 0; + // 旧格式键存在时(迁移中),下一条记录另起分片,避免与旧键序号冲突 + if (legacyKeys.length > 0) { + this.currentSegment++; + this.currentSize = 0; + } + } + else if (legacyKeys.length > 0) { + // 仅有旧格式:迁移中,新写入从分片 0 开始(checkpoint 会清空旧键) + this.currentSegment = 0; + this.currentSize = 0; + } + const total = parts.reduce((s, c) => s + c.byteLength, 0); + const combined = new Uint8Array(total); + let off = 0; + for (const c of parts) { + combined.set(c, off); + off += c.byteLength; + } + return combined; + } + async truncate() { + const keys = await this.backend.listKeys(); + const walKeys = keys.filter((k) => k.startsWith(WAL_SEGMENT_PREFIX) || k === LEGACY_COUNT_KEY); + if (walKeys.length > 0) { + await this.backend.deleteMany(walKeys); + } + this.currentSegment = 0; + this.currentSize = 0; + } + async exists() { + const keys = await this.backend.listKeys(); + return keys.some((k) => k.startsWith(WAL_SEGMENT_PREFIX) || k === LEGACY_COUNT_KEY); + } +} + +/** + * AriaEngine Database Lock — 多标签页独占锁(Web Locks API) + * @module engine/aria/locks + * + * v0.4.5: OPFS 等无事务后端缺乏多标签页并发协调,多个标签页同时打开同一库 + * 会导致写竞态与数据损坏。用 Web Locks API(Chrome 69+ / Firefox 96+ / Safari 15.4+) + * 获取库级排他锁: + * - ifAvailable 模式:锁被其他标签页持有 → 立即抛 ARIA_LOCKED(不排队挂起) + * - 持锁期间回调挂起,close() 时释放 + * - 浏览器不支持 navigator.locks → 返回 false(如实降级:无并发保护,文档注明) + */ +/** Web Locks 锁名(库级排他) */ +function lockName(dbName) { + return `metona-sqlark:${dbName}`; +} +class DatabaseLock { + constructor() { + this.acquired = false; + this.supported = false; + this.releaseResolve = null; + this.releasePromise = null; + } + /** + * 尝试获取独占锁。 + * @returns true = 已持锁;false = 环境不支持 Web Locks(无并发保护,调用方可警告) + * @throws ARIA_LOCKED 锁被其他标签页持有 + */ + async acquire(dbName) { + const nav = globalThis.navigator; + const lockManager = nav?.locks; + if (!lockManager || typeof lockManager.request !== 'function') { + this.supported = false; + return false; + } + this.supported = true; + await new Promise((resolve, reject) => { + // 注意:必须直接调用(不能解构 request —— LockManager 方法依赖 this 绑定) + const request = lockManager.request.bind(lockManager); + request(lockName(dbName), { ifAvailable: true, mode: 'exclusive' }, async (lock) => { + if (!lock) { + reject(new DatabaseError(`Database "${dbName}" is already open in another tab (locked)`, 'ARIA_LOCKED')); + return; + } + this.acquired = true; + const releasePromise = new Promise((res) => { this.releaseResolve = res; }); + this.releasePromise = releasePromise; + // 锁已获取:acquire 返回(open 流程继续) + resolve(); + // 回调挂起:保持锁直到 release() 触发 + await releasePromise; + }); + }); + return true; + } + /** 释放锁(等待回调真正结束,保证锁已归还) */ + async release() { + if (!this.acquired) + return; + if (this.releaseResolve) { + const res = this.releaseResolve; + const p = this.releasePromise; + this.releaseResolve = null; + this.releasePromise = null; + res(); + try { + await p; + } + catch { /* 释放过程异常不阻塞 */ } + } + this.acquired = false; + } + /** 是否已持锁 */ + isAcquired() { + return this.acquired; + } + /** 环境是否支持 Web Locks */ + isSupported() { + return this.supported; + } +} + /** * AriaEngine Checkpoint — 检查点机制 * @module engine/aria/wal/checkpoint @@ -4275,15 +4544,6 @@ class CheckpointManager { await this.wal.checkpoint(); this.opCount = 0; } - async forceCheckpoint() { - await this.checkpoint(); - } - setInterval(ops) { - this.interval = ops; - } - getOpCount() { - return this.opCount; - } } /** @@ -4465,6 +4725,8 @@ class MemoryBackend { } } +/** 崩溃残留临时文件后缀(createWritable 底层实现可能留下) */ +const STALE_SUFFIXES = ['.crswap', '.tmp']; class OPFSBackend { constructor() { this.root = null; @@ -4476,14 +4738,42 @@ class OPFSBackend { this.dbName = name; this.root = await navigator.storage.getDirectory(); this.dbDir = await this.root.getDirectoryHandle(name, { create: true }); + // v0.4.5: 清理崩溃残留临时文件(不阻塞打开) + await this.cleanupStaleFiles(); } async close() { + // v0.4.5-fix: 等待所有挂起写完成(否则 close 后挂起写被静默丢弃/读旧数据) + try { + await this.writeQueue; + } + catch { /* 写失败已返回给调用方 */ } this.dbDir = null; this.root = null; } isOpen() { return this.dbDir !== null; } + /** 清理崩溃残留的临时文件(open 时自动调用,repair 也可调用) */ + async cleanupStaleFiles() { + if (!this.dbDir) + return; + try { + const dir = this.dbDir; + const stale = []; + for await (const [name] of dir.entries()) { + if (STALE_SUFFIXES.some((s) => name.endsWith(s))) { + stale.push(name); + } + } + for (const name of stale) { + try { + await this.dbDir.removeEntry(name); + } + catch { /* ignore */ } + } + } + catch { /* 清理失败不阻塞 */ } + } async read(key) { if (!this.dbDir) return null; @@ -4496,22 +4786,46 @@ class OPFSBackend { return null; } } + /** + * 单文件原子写:createWritable 为 copy-on-write,close 后原子替换; + * 写入期间崩溃 → 旧文件保持(原子性由浏览器 OPFS 实现保证)。 + */ async write(key, data) { if (!this.dbDir) return; - this.writeQueue = this.writeQueue.then(async () => { + const run = this.writeQueue.then(async () => { const fh = await this.dbDir.getFileHandle(key, { create: true }); const writable = await fh.createWritable(); await writable.write(data); await writable.close(); }); - return this.writeQueue; + // v0.4.5-fix: 单次任务失败不中断队列链(错误仍返回给本次调用方) + this.writeQueue = run.then(() => undefined, () => undefined); + return run; + } + /** + * v0.4.5: 真追加写 — createWritable(keepExistingData) + seek 到文件末尾。 + * 单文件 COW 原子(close 前崩溃旧文件保持),无需读旧内容即实现 O(chunk) 追加 + * (WAL 分片高频写入用)。 + */ + async append(key, data) { + if (!this.dbDir) + return; + const run = this.writeQueue.then(async () => { + const fh = await this.dbDir.getFileHandle(key, { create: true }); + const existing = await fh.getFile(); + const writable = await fh.createWritable({ keepExistingData: true }); + await writable.write({ type: 'write', position: existing.size, data }); + await writable.close(); + }); + this.writeQueue = run.then(() => undefined, () => undefined); + return run; } /** v0.4.2-fix: 批量写入 — 串行队列内逐个落盘(OPFS 无跨文件事务,顺序保证一致) */ async writeMany(entries) { if (!this.dbDir) return; - this.writeQueue = this.writeQueue.then(async () => { + const run = this.writeQueue.then(async () => { for (const [key, data] of Object.entries(entries)) { const fh = await this.dbDir.getFileHandle(key, { create: true }); const writable = await fh.createWritable(); @@ -4519,24 +4833,26 @@ class OPFSBackend { await writable.close(); } }); - return this.writeQueue; + this.writeQueue = run.then(() => undefined, () => undefined); + return run; } async delete(key) { if (!this.dbDir) return; - this.writeQueue = this.writeQueue.then(async () => { + const run = this.writeQueue.then(async () => { try { await this.dbDir.removeEntry(key); } catch { /* ignore */ } }); - return this.writeQueue; + this.writeQueue = run.then(() => undefined, () => undefined); + return run; } /** v0.4.2-fix: 批量删除 — 串行队列内逐个删除 */ async deleteMany(keys) { if (!this.dbDir) return; - this.writeQueue = this.writeQueue.then(async () => { + const run = this.writeQueue.then(async () => { for (const key of keys) { try { await this.dbDir.removeEntry(key); @@ -4544,7 +4860,8 @@ class OPFSBackend { catch { /* ignore */ } } }); - return this.writeQueue; + this.writeQueue = run.then(() => undefined, () => undefined); + return run; } async listKeys() { if (!this.dbDir) @@ -4582,21 +4899,347 @@ class OPFSBackend { } /** - * AriaEngine Page Header — 页面头部编解码 - * @module engine/aria/page/header + * AriaEngine Crypto — 页面级 AES-GCM 加密 + * @module engine/aria/crypto + * + * v0.2.5: 改为实例化 CryptoManager,避免多实例共享全局状态。 + * 保留全局函数兼容旧代码(委托给全局单例)。 */ +const ALGO = 'AES-GCM'; +const IV_LENGTH$1 = 12; /** - * 初始化新页面的 Header。 + * CryptoManager — 实例级加密管理器 + * 每个 AriaEngine 实例可拥有独立的加密配置。 */ -function initPageHeader(buf, pageId, type) { - const view = new DataView(buf); - view.setUint32(0, pageId, false); - view.setUint8(4, type); - view.setUint16(5, PAGE_HEADER_SIZE, false); // freeStart = header 之后 - view.setUint16(7, buf.byteLength, false); // freeEnd = 页面末尾 - view.setUint16(9, 0, false); // slotCount = 0 - view.setUint32(11, 0, false); // checksum = 0 - view.setUint8(15, 0); +class CryptoManager { + constructor() { + this.cryptoKey = null; + this._enabled = false; + } + get enabled() { return this._enabled; } + async init(password, salt) { + const enc = new TextEncoder(); + const keyMaterial = await crypto.subtle.importKey('raw', enc.encode(password), 'PBKDF2', false, ['deriveKey']); + const actualSalt = salt || crypto.getRandomValues(new Uint8Array(16)); + this.cryptoKey = await crypto.subtle.deriveKey({ name: 'PBKDF2', salt: actualSalt, iterations: 100000, hash: 'SHA-256' }, keyMaterial, { name: ALGO, length: 256 }, false, ['encrypt', 'decrypt']); + this._enabled = true; + return actualSalt; + } + async encryptPage(data) { + if (!this.cryptoKey) + throw new Error('Crypto not initialized'); + const iv = crypto.getRandomValues(new Uint8Array(IV_LENGTH$1)); + // 传 TypedArray 视图而非裸 ArrayBuffer:SubtleCrypto 通过 ArrayBuffer.isView 检查, + // 对跨 realm / 跨 vm 环境的 ArrayBuffer 兼容(Node 18/20 的 webcrypto 对裸 ArrayBuffer 检查严格) + const plain = (data instanceof Uint8Array ? data : new Uint8Array(data)); + const ciphertext = await crypto.subtle.encrypt({ name: ALGO, iv }, this.cryptoKey, plain); + return { iv: iv, data: ciphertext }; + } + async decryptPage(iv, data) { + if (!this.cryptoKey) + throw new Error('Crypto not initialized'); + const ciphertext = (data instanceof Uint8Array ? data : new Uint8Array(data)); + return crypto.subtle.decrypt({ name: ALGO, iv }, this.cryptoKey, ciphertext); + } + close() { + this.cryptoKey = null; + this._enabled = false; + } +} + +/** + * AriaEngine Encrypted Backend — 全库透明 AES-256-GCM 加密后端 + * @module engine/aria/store/encrypted_backend + * + * 装饰器模式包装底层 IStorageBackend: + * - 写入时加密(每个 value 独立随机 IV:格式 [12B IV][AES-GCM ciphertext]) + * - 读取时解密(GCM 认证标签同时保证完整性) + * - WAL / SSTable / Schema / 元数据 全部密文存储(除密钥元数据本身) + * + * 密钥管理: + * - PBKDF2-SHA256(100000 迭代)从密码派生 AES-256-GCM 密钥 + * - `__aria_keymeta` 明文保存 { salt, verifier }: + * - salt:PBKDF2 盐(重启后用同一密码重新派生密钥) + * - verifier:对固定明文加密的密文(打开时解密验证密码正确性) + * - 密码错误 → GCM 认证失败 → 抛 ARIA_DECRYPT_ERROR + * + * 依赖浏览器/Node 的 WebCrypto(jest.setup.js 已提供 polyfill)。 + */ +const IV_LENGTH = 12; +const KEYMETA_KEY = '__aria_keymeta'; +/** verifier 固定明文(无数据泄露风险) */ +const VERIFIER_PLAIN = 'metona-sqlark-encryption-verifier'; +// --------------------------------------------------------------------------- +// Base64 工具(浏览器 btoa/atob 与 Node Buffer 双环境) +// --------------------------------------------------------------------------- +function bytesToBase64(bytes) { + if (typeof Buffer !== 'undefined') { + return Buffer.from(bytes).toString('base64'); + } + let bin = ''; + for (let i = 0; i < bytes.byteLength; i++) + bin += String.fromCharCode(bytes[i]); + return btoa(bin); +} +function base64ToBytes(b64) { + if (typeof Buffer !== 'undefined') { + return new Uint8Array(Buffer.from(b64, 'base64')); + } + const bin = atob(b64); + const bytes = new Uint8Array(bin.length); + for (let i = 0; i < bin.length; i++) + bytes[i] = bin.charCodeAt(i); + return bytes; +} +// --------------------------------------------------------------------------- +// EncryptedBackend +// --------------------------------------------------------------------------- +class EncryptedBackend { + constructor(inner, password) { + this.inner = inner; + this.password = password; + this.crypto = new CryptoManager(); + this.opened = false; + if (!password || password.length === 0) { + throw new DatabaseError('Encryption password must not be empty', 'ARIA_ENCRYPT_CONFIG_ERROR'); + } + } + /** 底层后端(测试/调试用) */ + getInner() { + return this.inner; + } + /** 加密是否已初始化(打开并验证/创建密钥后为 true) */ + isCryptoReady() { + return this.crypto.enabled; + } + async open(name) { + if (!this.inner.isOpen()) { + await this.inner.open(name); + } + const raw = await this.inner.read(KEYMETA_KEY); + if (raw) { + // 已有密钥元数据:用持久化 salt 重新派生并验证密码 + let meta; + try { + meta = JSON.parse(new TextDecoder().decode(raw)); + } + catch { + throw new DatabaseError('Corrupted encryption key metadata', 'ARIA_DECRYPT_ERROR'); + } + if (!meta.salt || !meta.verifier) { + throw new DatabaseError('Corrupted encryption key metadata', 'ARIA_DECRYPT_ERROR'); + } + const salt = base64ToBytes(meta.salt); + await this.crypto.init(this.password, salt); + const verifierBytes = base64ToBytes(meta.verifier); + if (verifierBytes.byteLength <= IV_LENGTH) { + throw new DatabaseError('Corrupted encryption key metadata', 'ARIA_DECRYPT_ERROR'); + } + const iv = verifierBytes.subarray(0, IV_LENGTH); + const ciphertext = verifierBytes.subarray(IV_LENGTH); + try { + await this.crypto.decryptPage(iv, ciphertext); + } + catch { + // GCM 认证失败:密码错误(或密钥元数据被篡改) + throw new DatabaseError('Decryption failed: wrong password or corrupted key metadata', 'ARIA_DECRYPT_ERROR'); + } + } + else { + // 无 keymeta:若库中已存在其他数据 → 明文旧库或 keymeta 丢失,拒绝以加密模式打开 + const keys = await this.inner.listKeys(); + if (keys.some((k) => k !== KEYMETA_KEY)) { + throw new DatabaseError('Cannot open with encryption: existing database has no key metadata ' + + '(database was created without encryption, or key metadata was lost)', 'ARIA_ENCRYPT_CONFIG_ERROR'); + } + // 新库:生成随机 salt + 派生密钥 + 写入 verifier + const salt = await this.crypto.init(this.password); + const enc = await this.crypto.encryptPage(new TextEncoder().encode(VERIFIER_PLAIN).buffer); + const verifier = new Uint8Array(IV_LENGTH + enc.data.byteLength); + verifier.set(enc.iv, 0); + verifier.set(new Uint8Array(enc.data), IV_LENGTH); + const keymeta = JSON.stringify({ + salt: bytesToBase64(salt), + verifier: bytesToBase64(verifier), + }); + await this.inner.write(KEYMETA_KEY, new TextEncoder().encode(keymeta).buffer); + } + this.opened = true; + } + async close() { + await this.inner.close(); + this.crypto.close(); + this.opened = false; + } + isOpen() { + return this.opened; + } + async read(key) { + this.ensureReady(); + const raw = await this.inner.read(key); + if (raw === null) + return null; + return this.decrypt(raw); + } + async write(key, data) { + this.ensureReady(); + await this.inner.write(key, await this.encrypt(data)); + } + async writeMany(entries) { + this.ensureReady(); + const encrypted = {}; + for (const [key, data] of Object.entries(entries)) { + encrypted[key] = await this.encrypt(data); + } + await this.inner.writeMany(encrypted); + } + async delete(key) { + this.ensureReady(); + await this.inner.delete(key); + } + async deleteMany(keys) { + this.ensureReady(); + await this.inner.deleteMany(keys); + } + async listKeys() { + this.ensureReady(); + return this.inner.listKeys(); + } + async exists(key) { + this.ensureReady(); + return this.inner.exists(key); + } + async clear() { + // 清空全部数据但保留密钥元数据 —— clearAll 语义:库本身保留,密码不失效 + const keys = await this.inner.listKeys(); + const toDelete = keys.filter((k) => k !== KEYMETA_KEY); + if (toDelete.length > 0) { + await this.inner.deleteMany(toDelete); + } + } + // ----------------------------------------------------------------------- + // 内部 + // ----------------------------------------------------------------------- + ensureReady() { + if (!this.opened) + throw new DatabaseError('EncryptedBackend not opened', 'ARIA_DB_NOT_OPEN'); + if (!this.crypto.enabled) + throw new DatabaseError('EncryptedBackend key not initialized', 'ARIA_DECRYPT_ERROR'); + } + /** 加密单块数据:[IV(12)][ciphertext] */ + async encrypt(data) { + const enc = await this.crypto.encryptPage(data); + const out = new ArrayBuffer(IV_LENGTH + enc.data.byteLength); + const outBytes = new Uint8Array(out); + outBytes.set(enc.iv, 0); + outBytes.set(new Uint8Array(enc.data), IV_LENGTH); + return out; + } + /** 解密单块数据(GCM 认证失败抛错) */ + async decrypt(data) { + const bytes = new Uint8Array(data); + if (bytes.byteLength <= IV_LENGTH) { + throw new DatabaseError('Corrupted encrypted data block (too short)', 'ARIA_DECRYPT_ERROR'); + } + const iv = bytes.subarray(0, IV_LENGTH); + const ciphertext = bytes.subarray(IV_LENGTH); + try { + return await this.crypto.decryptPage(iv, ciphertext); + } + catch (error) { + if (error instanceof DatabaseError) + throw error; + throw new DatabaseError('Decryption failed (data corrupted or wrong key)', 'ARIA_DECRYPT_ERROR', error); + } + } +} + +/** + * AriaEngine Page SSTable Store — SSTable 页面化物理存储 + * @module engine/aria/store/page_sstable_store + * + * v0.4.5: 让 BufferPool/FileManager 真正接入 LSM 读写路径。 + * SSTable 不再整体存为一个 backend value,而是切分为 4KB 页面: + * - 页面由 FileManager 分配 pageId,经 BufferPool 缓存(LRU 驱逐,脏页写回) + * - save 语义 = 数据已落盘:页面写入后逐个 flushPage(await 底层写)才返回, + * 保证 WAL checkpoint(截断)前 SSTable 数据真实持久化 + * - 页面 ID 列表经 SSTableMeta.pageIds 持久化;旧 meta(无 pageIds)走整 value 读取 + * + * 与 LSM 的 sstableCache(整文件 LRU)双层缓存并存: + * - BufferPool 缓存物理页面(跨 SSTable 共享、受 bufferPoolPages 上限约束) + * - LSM 缓存解析后的整文件字节(查询热点复用) + */ +class PageSSTableStore { + constructor(fileManager, bufferPool) { + this.fileManager = fileManager; + this.bufferPool = bufferPool; + /** SSTable id → 页面 ID 列表(save 时记录,saveMeta 时注入 meta) */ + this.pageIds = new Map(); + } + /** 保存数据:切页 → 写入 BufferPool → 逐页落盘 → 记录 pageIds */ + async save(id, data) { + const pageCount = Math.max(1, Math.ceil(data.byteLength / PAGE_SIZE)); + const handles = await this.bufferPool.newPages(pageCount, PageType.DATA); + const ids = []; + for (let i = 0; i < pageCount; i++) { + const page = handles[i]; + ids.push(page.pageId); + const dest = new Uint8Array(page.data); + dest.fill(0); // 清空(最后一页可能不满) + const slice = data.subarray(i * PAGE_SIZE, Math.min((i + 1) * PAGE_SIZE, data.byteLength)); + dest.set(slice, 0); + page.dirty = true; + // save 语义 = 已持久化:立即落盘(WAL checkpoint 截断依赖此保证) + await this.bufferPool.flushPage(page.pageId); + this.bufferPool.unpin(page); + } + this.pageIds.set(id, ids); + } + /** 获取指定 SSTable 的页面 ID 列表(saveMeta 注入用) */ + getPageIds(id) { + return this.pageIds.get(id); + } + /** + * 按页面 ID 列表读取并拼接为完整字节流。 + * @param totalSize SSTable 真实大小(meta 持久化)——最后一页可能有 0 填充,按真实大小截断 + * @returns 缺失页面/读取失败返回 null(调用方视为损坏并清理) + */ + async load(id, pageIds, totalSize) { + if (pageIds.length === 0) + return null; + const chunks = []; + for (const pageId of pageIds) { + const page = await this.bufferPool.getPage(pageId); + if (!page) + return null; + // 立即复制(后续驱逐安全) + chunks.push(new Uint8Array(page.data)); + this.bufferPool.unpin(page); + } + const total = chunks.reduce((s, c) => s + c.byteLength, 0); + const out = new Uint8Array(Math.min(total, totalSize)); + let off = 0; + for (const c of chunks) { + const take = Math.min(c.byteLength, out.byteLength - off); + if (take <= 0) + break; + out.set(c.subarray(0, take), off); + off += take; + } + this.pageIds.delete(id); + return out; + } + /** 释放页面(删除物理页面文件 + 移出 BufferPool) */ + async delete(id, pageIds) { + for (const pageId of pageIds) { + this.bufferPool.removePage(pageId); + try { + await this.fileManager.freePageId(pageId); + } + catch { /* 清理失败不阻塞 */ } + } + this.pageIds.delete(id); + } } /** @@ -4634,8 +5277,9 @@ class FileManager { const key = `pg_${pageId}`; const data = await this.backend.read(key); if (!data) { - // 第一次访问:创建新页面 - return this.createEmptyPage(pageId, PageType.DATA); + // v0.4.5: 页面总是先分配(allocatePageId 持久化)后写入 —— 读取缺失页面视为损坏 + // (此前返回空页面会静默掩盖页面丢失,页面化 SSTable 依赖 null 触发自愈清理) + return null; } // 确保大小正确 if (data.byteLength < PAGE_SIZE) { @@ -4654,33 +5298,29 @@ class FileManager { await this.saveMeta(); return id; } + /** v0.4.5: 批量分配页面 ID(一次 meta 持久化,避免页面化 SSTable 保存时逐页写 meta) */ + async allocatePageIds(count) { + if (count <= 0) + return []; + const ids = []; + const start = this.nextPageId; + this.nextPageId += count; + for (let i = 0; i < count; i++) + ids.push(start + i); + await this.saveMeta(); + return ids; + } async freePageId(_pageId) { // 简化实现:不回收 pageId const key = `pg_${_pageId}`; await this.backend.delete(key); } - // ---- 表页面分配 ---- - /** - * 分配一个新的表元数据页面。 - */ - async allocateTableRootPage() { - const pageId = await this.allocatePageId(); - const data = new ArrayBuffer(PAGE_SIZE); - initPageHeader(data, pageId, PageType.META); - await this.writePage(pageId, data); - return pageId; - } // ---- 辅助 ---- async saveMeta() { const buf = new ArrayBuffer(8); new DataView(buf).setUint32(0, this.nextPageId, false); await this.backend.write('__aria_meta', buf); } - createEmptyPage(pageId, type) { - const buf = new ArrayBuffer(PAGE_SIZE); - initPageHeader(buf, pageId, type); - return buf; - } /** 清空所有数据 */ async clearAll() { await this.backend.clear(); @@ -4780,11 +5420,6 @@ class MVCCManager { this.activeTxns.delete(txnId); this.txnWriteKeys.delete(txnId); } - /** 检查事务是否活跃 */ - isActive(txnId) { - const txn = this.activeTxns.get(txnId); - return txn !== undefined && txn.state === TransactionState.ACTIVE; - } // ======================================================================= // 版本读写 // ======================================================================= @@ -4805,58 +5440,12 @@ class MVCCManager { // v0.4.2-fix: 记录本事务写过的 key(commit/rollback 精准清理) this.txnWriteKeys.get(txnId)?.add(tableKey); } - /** - * 读取一行(对指定事务可见的最新版本)。 - */ - readVersion(tableName, key, txnId) { - const txn = this.activeTxns.get(txnId); - if (!txn) - return null; - const tableKey = `${tableName}.${key}`; - const versions = this.versionStore.get(tableKey); - if (!versions || versions.length === 0) - return null; - // 从最新版本向前遍历 - for (let i = versions.length - 1; i >= 0; i--) { - const version = versions[i]; - // 1. 如果是当前事务写入的(未提交),可见 - if (version.txnId === txnId) { - return version.data; - } - // 2. 如果是已提交的版本,且在快照 LSN 之前提交,可见 - if (version.committed) { - // 简化:所有已提交版本都可见 - return version.data; - } - // 3. 其他事务的未提交版本,不可见,继续找更早的版本 - } - return null; - } /** * 删除一行(创建墓碑版本)。 */ deleteVersion(tableName, key, txnId) { this.writeVersion(tableName, key, { __mvcc_tombstone: true }, txnId); } - /** - * 获取所有行的最新已提交版本(用于非事务读取)。 - */ - getLatestCommittedVersions(tableName) { - const result = {}; - for (const [tableKey, versions] of this.versionStore) { - if (!tableKey.startsWith(`${tableName}.`)) - continue; - const key = tableKey.slice(tableName.length + 1); - for (let i = versions.length - 1; i >= 0; i--) { - const version = versions[i]; - if (version.committed && !version.data.__mvcc_tombstone) { - result[key] = version.data; - break; - } - } - } - return result; - } /** * v0.3.3: 丢弃指定事务的所有版本记录,但保留事务登记(Savepoint 回滚用)。 * 快照数据由调用方(引擎 txnSnapshot)负责恢复。 @@ -4892,39 +5481,6 @@ class MVCCManager { this.versionStore.set(tableKey, pruned); } } - /** - * 获取所有未提交事务中的 key 列表。 - */ - getActiveWriteKeys(tableName, txnId) { - const keys = new Set(); - const prefix = `${tableName}.`; - for (const [tableKey, versions] of this.versionStore) { - if (!tableKey.startsWith(prefix)) - continue; - const latestVersion = versions[versions.length - 1]; - if (latestVersion.txnId === txnId && !latestVersion.committed) { - keys.add(tableKey.slice(prefix.length)); - } - } - return keys; - } - /** - * 清理指定表的所有版本。 - */ - clearTable(tableName) { - const prefix = `${tableName}.`; - for (const [tableKey] of this.versionStore) { - if (tableKey.startsWith(prefix)) { - this.versionStore.delete(tableKey); - } - } - } - /** - * 获取活跃事务数。 - */ - getActiveTxnCount() { - return this.activeTxns.size; - } /** * 获取全局 LSN。 */ @@ -4934,14 +5490,45 @@ class MVCCManager { } /** - * AriaEngine Page Format — 页面格式整合层 + * AriaEngine Page Header — 页面头初始化 + * @module engine/aria/page/header + * + * v0.4.5: 仅保留生产代码实际使用的 initPageHeader。 + * 页面头部布局(大端序): + * [0-3] page_id u32 + * [4] type u8 + * [5-6] free_start u16 + * [7-8] free_end u16 + * [9-10] slot_count u16 + * [11-14] checksum u32 + * [15] reserved u8 + * + * 注:free_start/free_end/slot_count/checksum 字段为历史行级页面格式遗留, + * 页面化 SSTable 使用页面原始字节区(跳过头部),字段保留以维持 16 字节头部对齐。 + */ +/** + * 初始化新页面的 Header。 + */ +function initPageHeader(buf, pageId, type) { + const view = new DataView(buf); + view.setUint32(0, pageId, false); + view.setUint8(4, type); + view.setUint16(5, PAGE_HEADER_SIZE, false); // freeStart = header 之后 + view.setUint16(7, buf.byteLength, false); // freeEnd = 页面末尾 + view.setUint16(9, 0, false); // slotCount = 0 + view.setUint32(11, 0, false); // checksum = 0 + view.setUint8(15, 0); +} + +/** + * AriaEngine Page Format — 页面创建 * @module engine/aria/page/format * - * 组合 Header / Slot / Tuple 操作,提供统一的页面管理接口。 + * v0.4.5: 仅保留生产代码实际使用的页面创建逻辑。 + * (Slot Directory / Tuple 编解码曾为行级页面存储设计,但从未接入 LSM 主路径, + * 属"宣称页面式但未实现"的半成品,已删除 —— SSTable 以 4KB 页面承载, + * 页面内容为原始字节切片,由 PageSSTableStore 管理) */ -// --------------------------------------------------------------------------- -// 页面创建 -// --------------------------------------------------------------------------- /** 创建一个新的空页面 */ function createPage(pageId, type) { const data = new ArrayBuffer(PAGE_SIZE); @@ -5027,33 +5614,15 @@ class LRUList { page.prev = null; page.next = null; } - /** 获取 LRU 尾部(最久未使用的页面) */ - getLRU() { - return this.tail; - } - /** 弹出 LRU 尾部 */ - popLRU() { - const lru = this.tail; - if (lru) { - this.remove(lru); - } - return lru; - } /** 清空链表 */ clear() { this.head = null; this.tail = null; this._size = 0; } - /** 获取所有页面(用于迭代) */ - getAllPages() { - const pages = []; - let current = this.head; - while (current) { - pages.push(current); - current = current.next; - } - return pages; + /** 获取 LRU 尾部(最久未使用的页面) */ + getLRU() { + return this.tail; } } /** @@ -5118,14 +5687,6 @@ class EvictionManager { } return null; } - /** 获取当前大小 */ - getSize() { - return this.lru.size; - } - /** 获取容量 */ - getCapacity() { - return this.capacity; - } /** 清空 */ clear() { this.lru.clear(); @@ -5190,16 +5751,31 @@ class BufferPool { return page; } /** - * 创建新页面。 + * v0.4.5: 批量创建新页面(一次页面 ID 分配,页面化 SSTable 保存用)。 + * 返回的页面均 pin 且 dirty=false(调用方写入后需 markDirty + flushPage)。 */ - async newPage(type = PageType.DATA) { - const pageId = await this.pageIO.allocatePageId(); - await this.eviction.evictIfNeeded(1); - const page = createPage(pageId, type); - page.pins = 1; - this.pages.set(pageId, page); - this.eviction.add(page); - return page; + async newPages(count, type = PageType.DATA) { + if (count <= 0) + return []; + let pageIds; + if (typeof this.pageIO.allocatePageIds === 'function') { + pageIds = await this.pageIO.allocatePageIds(count); + } + else { + pageIds = []; + for (let i = 0; i < count; i++) + pageIds.push(await this.pageIO.allocatePageId()); + } + await this.eviction.evictIfNeeded(count); + const handles = []; + for (const pageId of pageIds) { + const page = createPage(pageId, type); + page.pins = 1; + this.pages.set(pageId, page); + this.eviction.add(page); + handles.push(page); + } + return handles; } /** * 释放页面的 pin。 @@ -5254,36 +5830,15 @@ class BufferPool { this.pages.clear(); this.eviction.clear(); } - // ----------------------------------------------------------------------- - // 统计 - // ----------------------------------------------------------------------- - /** 获取当前缓存页面数 */ - getCachedPageCount() { - return this.pages.size; - } - /** 获取缓存容量 */ - getCapacity() { - return this.eviction.getCapacity(); - } - /** 获取脏页面数 */ - getDirtyPageCount() { - let count = 0; - for (const [, page] of this.pages) { - if (page.dirty) - count++; - } - return count; - } } /** * AriaEngine LZ4 Compression — 简化 LZ4 压缩/解压 * @module engine/aria/compression/lz4 * - * v0.2.6: 修复往返一致性 - * - 匹配长度截断到 19 字节(matchField 上限 15 + MIN_MATCH),长匹配分段输出 - * - 组合 token 的 matchField ∈ [1,15];matchField=0 且 lo=0 表示末尾纯字面量(无 offset) - * - 消除"matchField=0 的组合 token 与纯字面量 token 歧义" + * v0.4.5 格式 v2:压缩流前增加 4 字节原始大小头(LE u32), + * 解压不再依赖外部估算(高压缩率数据下 buf.length*2 估算不足会截断)。 + * 旧版压缩数据(无头)视为损坏(compression 选项自 v0.2.6 起已声明不向后兼容)。 * * Token 格式(1 字节): * hi 4bit = litLen (0-15) @@ -5294,10 +5849,15 @@ class BufferPool { */ const MIN_MATCH = 4; const MAX_MATCH = MIN_MATCH + 15; // 19,匹配长度上限 +/** 原始大小头字节数 */ +const HEADER_SIZE = 4; function compressLZ4(input) { - // 空输入直接返回(无 token 可输出) - if (input.byteLength === 0) - return input; + // 空输入:仅头部(原始大小 0) + if (input.byteLength === 0) { + const empty = new Uint8Array(HEADER_SIZE); + new DataView(empty.buffer).setUint32(0, 0, true); + return empty; + } // 最坏情况:纯字面量分块输出 len/15 个 token + 末尾 token // 上限:len + ceil(len/15) + 8(组合 token 的 offset 开销已包含在内) const maxOut = input.byteLength + Math.ceil(input.byteLength / 15) + 8; @@ -5353,30 +5913,44 @@ function compressLZ4(input) { remaining -= chunk; litStart += chunk; } - // 始终输出压缩流(即使比原数据略大)。 - // 注意:不能返回原样 input —— 解压端无法区分"压缩流"与"原始数据", - // 原样返回会导致解压器将原始字节误解析为 token(v0.2.6 修复) - return out.slice(0, di); + // v0.4.5: 前置原始大小头,解压端自描述 + const stream = out.slice(0, di); + const combined = new Uint8Array(HEADER_SIZE + stream.byteLength); + new DataView(combined.buffer).setUint32(0, input.byteLength, true); + combined.set(stream, HEADER_SIZE); + return combined; } -function decompressLZ4(input, originalSize) { +function decompressLZ4(input, _originalSize) { + if (input.byteLength < HEADER_SIZE) { + throw new Error('LZ4 stream too short: missing header'); + } + const view = new DataView(input.buffer, input.byteOffset, input.byteLength); + const originalSize = view.getUint32(0, true); + if (originalSize === 0 && input.byteLength === HEADER_SIZE) { + return new Uint8Array(0); // 空输入 + } + if (originalSize <= 0 || originalSize > 0x3fffffff) { + throw new Error('Invalid LZ4 header: bad original size'); + } + const stream = input.subarray(HEADER_SIZE); const out = new Uint8Array(originalSize); let si = 0, di = 0; - while (si < input.byteLength && di < originalSize) { - const token = input[si++]; + while (si < stream.byteLength && di < originalSize) { + const token = stream[si++]; const litLen = (token >> 4) & 0x0F; const matchField = token & 0x0F; // 复制字面量 - for (let i = 0; i < litLen && si < input.byteLength && di < originalSize; i++) { - out[di++] = input[si++]; + for (let i = 0; i < litLen && si < stream.byteLength && di < originalSize; i++) { + out[di++] = stream[si++]; } // matchField=0:纯字面量 token(无 offset 无匹配)。 // 可能出现在流中任意位置(超长字面量分块输出),不能 break if (matchField === 0) continue; // 组合 token:读取 offset + 复制匹配(可能自重叠) - if (si + 1 >= input.byteLength) + if (si + 1 >= stream.byteLength) break; - const offset = input[si++] | (input[si++] << 8); + const offset = stream[si++] | (stream[si++] << 8); const matchLen = matchField + MIN_MATCH; for (let i = 0; i < matchLen && di < originalSize; i++) { out[di] = out[di - offset]; @@ -5386,67 +5960,6 @@ function decompressLZ4(input, originalSize) { return out; } -/** - * AriaEngine Crypto — 页面级 AES-GCM 加密 - * @module engine/aria/crypto - * - * v0.2.5: 改为实例化 CryptoManager,避免多实例共享全局状态。 - * 保留全局函数兼容旧代码(委托给全局单例)。 - */ -const ALGO = 'AES-GCM'; -const IV_LENGTH = 12; -/** - * CryptoManager — 实例级加密管理器 - * 每个 AriaEngine 实例可拥有独立的加密配置。 - */ -class CryptoManager { - constructor() { - this.cryptoKey = null; - this._enabled = false; - } - get enabled() { return this._enabled; } - async init(password, salt) { - const enc = new TextEncoder(); - const keyMaterial = await crypto.subtle.importKey('raw', enc.encode(password), 'PBKDF2', false, ['deriveKey']); - const actualSalt = salt || crypto.getRandomValues(new Uint8Array(16)); - this.cryptoKey = await crypto.subtle.deriveKey({ name: 'PBKDF2', salt: actualSalt, iterations: 100000, hash: 'SHA-256' }, keyMaterial, { name: ALGO, length: 256 }, false, ['encrypt', 'decrypt']); - this._enabled = true; - return actualSalt; - } - async encryptPage(data) { - if (!this.cryptoKey) - throw new Error('Crypto not initialized'); - const iv = crypto.getRandomValues(new Uint8Array(IV_LENGTH)); - // 传 TypedArray 视图而非裸 ArrayBuffer:SubtleCrypto 通过 ArrayBuffer.isView 检查, - // 对跨 realm / 跨 vm 环境的 ArrayBuffer 兼容(Node 18/20 的 webcrypto 对裸 ArrayBuffer 检查严格) - const ciphertext = await crypto.subtle.encrypt({ name: ALGO, iv }, this.cryptoKey, new Uint8Array(data)); - return { iv: iv, data: ciphertext }; - } - async decryptPage(iv, data) { - if (!this.cryptoKey) - throw new Error('Crypto not initialized'); - return crypto.subtle.decrypt({ name: ALGO, iv }, this.cryptoKey, new Uint8Array(data)); - } - close() { - this.cryptoKey = null; - this._enabled = false; - } -} -// --------------------------------------------------------------------------- -// 全局兼容层(旧代码仍可使用全局函数) -// --------------------------------------------------------------------------- -const globalCrypto = new CryptoManager(); -/** @deprecated 使用 CryptoManager 实例代替 */ -function isCryptoEnabled() { return globalCrypto.enabled; } -/** @deprecated 使用 CryptoManager 实例代替 */ -async function encryptPage(data) { - return globalCrypto.encryptPage(data); -} -/** @deprecated 使用 CryptoManager 实例代替 */ -async function decryptPage(iv, data) { - return globalCrypto.decryptPage(iv, data); -} - /** * AriaEngine — 自研页面式存储引擎主类 * @module engine/aria/index @@ -5461,6 +5974,8 @@ class AriaEngine { this.name = 'aria'; this.opened = false; this.dbName = ''; + // v0.4.5: 多标签页独占锁(Web Locks API,OPFS 等无事务后端防并发写) + this.dbLock = null; // 表结构 this.schemas = new Map(); this.tablePKs = new Map(); @@ -5488,6 +6003,14 @@ class AriaEngine { await this.openInternal(dbName); } catch (error) { + // 打开失败:释放已获取的锁(避免锁泄漏阻塞其他标签页) + if (this.dbLock) { + try { + await this.dbLock.release(); + } + catch { /* ignore */ } + this.dbLock = null; + } if (error instanceof DatabaseError) throw error; throw new DatabaseError(`Failed to open AriaEngine database "${dbName}"`, 'ARIA_OPEN_ERROR', error); @@ -5496,21 +6019,44 @@ class AriaEngine { /** open 内部实现(错误包装在 open 外层) */ async openInternal(dbName) { this.dbName = dbName; - // 1. 存储后端 + // v0.4.5: 多标签页独占锁(Web Locks)— 不支持的环境降级为无锁(文档注明) + const lock = new DatabaseLock(); + this.dbLock = lock; + const lockAcquired = await lock.acquire(dbName); + if (!lockAcquired) { + // eslint-disable-next-line no-console + console.warn(`[AriaEngine] Web Locks API unavailable: no multi-tab protection for "${dbName}" ` + + '(open the same database in multiple tabs may corrupt data)'); + } + // 1. 存储后端(可选全库加密包装) + let baseBackend; if (this.config.storageBackend === 'opfs') { - this.backend = new OPFSBackend(); + baseBackend = new OPFSBackend(); } else if (this.config.storageBackend === 'indexeddb') { - this.backend = new IndexedDBBackend(); + baseBackend = new IndexedDBBackend(); } else { - this.backend = new MemoryBackend(); + baseBackend = new MemoryBackend(); + } + await baseBackend.open(dbName); + // v0.4.5: encryption 配置 → 透明加密封装(密码错误/数据损坏在 open 或首次读取时暴露) + if (this.config.encryption?.password) { + this.backend = new EncryptedBackend(baseBackend, this.config.encryption.password); + } + else { + this.backend = baseBackend; + // 反向检测:库中存在密钥元数据但未提供密码 → 拒绝打开(避免密文被当明文解析成空库) + if (await baseBackend.exists('__aria_keymeta')) { + await baseBackend.close(); + throw new DatabaseError('Database is encrypted: provide encryption.password to open it', 'ARIA_ENCRYPT_REQUIRED'); + } } await this.backend.open(dbName); // 2a. FileManager (PageIO 实现) + Buffer Pool - const fileManager = new FileManager(this.backend); - await fileManager.init(dbName); - this.bufferPool = new BufferPool(fileManager, this.config.bufferPoolPages); + this.fileManager = new FileManager(this.backend); + await this.fileManager.init(dbName); + this.bufferPool = new BufferPool(this.fileManager, this.config.bufferPoolPages); // 2. 构建 SSTableStore const sstableStore = this.createSSTableStore('main'); // 3. 初始化主 LSM(PK 索引) @@ -5524,59 +6070,9 @@ class AriaEngine { sstableStore, }); // 4. 初始化 WAL - this.wal = new WAL({ - append: async (data) => { - // v0.4.2-fix: 记录写入与 count 计数在同一底层事务中原子提交, - // 中断时整体回滚,杜绝"记录在、计数丢"导致恢复漏读的丢数据问题 - const idx = await this.getWALCount(); - const slice = new Uint8Array(data.buffer, data.byteOffset, data.byteLength); - const copy = slice.buffer.slice(slice.byteOffset, slice.byteOffset + slice.byteLength); - await this.backend.writeMany({ - [`__wal_${idx}`]: copy, - __wal_count: new TextEncoder().encode(String(idx + 1)).buffer, - }); - }, - readAll: async () => { - // v0.4.2-fix: 不依赖 count 计数,直接扫描全部 __wal_* 键, - // 避免 count 与实际记录不一致时漏读(与 checkpoint/并发写入竞态无关) - const keys = (await this.backend.listKeys()) - .filter((k) => k.startsWith('__wal_') && k !== '__wal_count') - .sort((a, b) => { - const na = parseInt(a.slice('__wal_'.length), 10); - const nb = parseInt(b.slice('__wal_'.length), 10); - return (isNaN(na) ? 0 : na) - (isNaN(nb) ? 0 : nb); - }); - if (keys.length === 0) - return new Uint8Array(0); - const chunks = []; - for (const key of keys) { - const d = await this.backend.read(key); - if (d) - chunks.push(new Uint8Array(d)); - } - const total = chunks.reduce((s, c) => s + c.byteLength, 0); - const combined = new Uint8Array(total); - let off = 0; - for (const c of chunks) { - combined.set(c, off); - off += c.byteLength; - } - return combined; - }, - truncate: async () => { - // v0.4.2-fix: 扫描删除全部 WAL 记录键 + count 键(单事务原子清理) - const keys = (await this.backend.listKeys()) - .filter((k) => k.startsWith('__wal_')); - await this.backend.deleteMany(keys); - await this.setWALCount(0); - }, - exists: async () => { - // v0.4.2-fix: 与 readAll 一致按 key 扫描判断(count 可能因崩溃截断而滞后) - const keys = (await this.backend.listKeys()) - .filter((k) => k.startsWith('__wal_') && k !== '__wal_count'); - return keys.length > 0; - }, - }, this.config.walEnabled, this.config.walSyncMode); + // v0.4.5: 分片式 WAL 存储(__wal_%06d.bin),序号内嵌记录字节流无需 count 键, + // append 单文件原子写;空洞检测截断;兼容旧格式 __wal_N + __wal_count + this.wal = new WAL(new SegmentedWALStore(this.backend), this.config.walEnabled, this.config.walSyncMode); // 5. 恢复 Schema await this.loadSchemas(); // v0.4.2-fix: 为 schema 中带 index/unique 标记的列重建二级索引 LSM。 @@ -5669,12 +6165,19 @@ class AriaEngine { for (const idxLsm of this.secondaryIndexes.values()) { await idxLsm.flush(); } + // v0.4.5: 页面化存储 — 落盘全部脏页(save 已逐页落盘,此处兜底) + await this.bufferPool.flushAll(); await this.wal.flush(); // v0.4.2-fix: close 前 checkpoint(截断 WAL)— // 此前只 flush 不截断,下次打开会重放全部历史 WAL 记录(含已落盘 SSTable 的数据), // 重复解析/重复 put 拖慢启动,并与恢复后 flush+checkpoint 竞争放大丢数据 await this.wal.checkpoint(); await this.backend.close(); + // v0.4.5: 释放多标签页独占锁(等待锁真正归还) + if (this.dbLock) { + await this.dbLock.release(); + this.dbLock = null; + } // v0.4.2-fix: 清空运行期状态(此前 close 后 mvcc/txn 残留, // 重开时 beginTransaction 报 TX_ACTIVE 或读到陈旧快照) this.schemas.clear(); @@ -5689,24 +6192,79 @@ class AriaEngine { } /** * v0.4.2-fix: 崩溃恢复/自愈 — 校验并移除损坏 SSTable、截断 WAL、重建二级索引。 + * v0.4.5 增强:清理 OPFS 残留临时文件、清理孤儿页面(meta 未引用的 pg_ 文件)。 * 应用层检测到异常后调用,无需删库重建。 */ async repair() { this.ensureOpen(); // 1. 校验全部 SSTable,移除残缺项(打开时已做一次,此处兜底运行期损坏) const removed = await this.lsm.validateAll(); - // 2. 将 WAL 残留数据落盘并截断,避免无限重放 + // v0.4.5: 清空页面缓存(损坏数据可能驻留 BufferPool,重新加载) + await this.bufferPool.clear(); + // 2. 将 WAL 残留数据落盘并截断,避免无限重放(含空洞截断落地) await this.lsm.flush(); await this.wal.checkpoint(); // 3. 重建所有表的二级索引(修复索引与主数据不一致) for (const tableName of this.schemas.keys()) { await this.reindexTable(tableName); } + // v0.4.5: 4. 清理 OPFS 残留临时文件(.crswap/.tmp) + const backendAny = this.backend; + if (typeof backendAny.cleanupStaleFiles === 'function') { + try { + await backendAny.cleanupStaleFiles(); + } + catch { /* 清理失败不阻塞 */ } + } + // v0.4.5: 5. 清理孤儿页面(所有 LSM 命名空间 meta 均未引用的 pg_ 文件) + await this.cleanupOrphanPages(); if (removed > 0) { // eslint-disable-next-line no-console console.warn(`[AriaEngine] repair: removed ${removed} corrupted SSTable(s)`); } } + /** + * v0.4.5: 清理孤儿页面 — 扫描全部 pg_* 文件,未被任何 LSM 命名空间 meta 引用的删除。 + * 孤儿页面来自:崩溃中断的 compaction/删除流程(旧 SSTable 页面残留)。 + */ + async cleanupOrphanPages() { + const keys = await this.backend.listKeys(); + const pgKeys = keys.filter((k) => /^pg_\d+$/.test(k)); + if (pgKeys.length === 0) + return; + const used = new Set(); + const collectMeta = async (ns) => { + const META_KEY = ns === 'main' ? '__aria_lsm_meta' : `__aria_lsm_meta_${ns}`; + const raw = await this.backend.read(META_KEY); + if (!raw) + return; + try { + const metas = JSON.parse(new TextDecoder().decode(raw)); + for (const m of metas) { + if (m.pageIds) { + for (const pid of m.pageIds) + used.add(pid); + } + } + } + catch { /* 损坏的 meta 忽略(validateAll 已处理) */ } + }; + await collectMeta('main'); + // 收集全部二级索引命名空间 + for (const [tableName, schema] of this.schemas) { + for (const [colName, colDef] of Object.entries(schema.columns)) { + if (colDef.index || colDef.unique) { + await collectMeta(`idx_${tableName}_${colName}`); + } + } + } + const orphanIds = pgKeys + .map((k) => Number(k.slice('pg_'.length))) + .filter((pid) => !used.has(pid)); + if (orphanIds.length > 0) { + await this.backend.deleteMany(orphanIds.map((pid) => `pg_${pid}`)); + } + } /** * v0.4.1: 重置数据库 — 清空全部数据与表结构(演示页刷新/重新初始化用)。 * 清空存储后端、LSM、WAL、MVCC 与二级索引,后续可继续使用本实例。 @@ -5715,6 +6273,9 @@ class AriaEngine { this.ensureOpen(); // 清空存储后端(页面文件 / WAL 记录 / schema 记录 / 元数据) await this.backend.clear(); + // v0.4.5: 清空页面缓存与页面 ID 分配状态 + await this.bufferPool.clear(); + await this.fileManager.clearAll(); this.schemas.clear(); this.tablePKs.clear(); this.secondaryIndexes.clear(); @@ -6624,6 +7185,9 @@ class AriaEngine { const META_KEY = ns === 'main' ? '__aria_lsm_meta' : `__aria_lsm_meta_${ns}`; let seq = 0; let seqLoaded = false; + // v0.4.5: 页面化物理存储(OPFS 后端默认启用)— SSTable 存为 4KB 页面,BufferPool 缓存 + const usePages = this.isPageStorage(); + const pageStore = usePages ? new PageSSTableStore(this.fileManager, this.bufferPool) : null; const encodeText = (text) => { return new TextEncoder().encode(text).buffer; }; @@ -6640,46 +7204,47 @@ class AriaEngine { }; return { save: async (id, data) => { + if (pageStore) { + // 页面化:切页写入 BufferPool 并逐页落盘(save 语义 = 已持久化) + await pageStore.save(id, data); + return; + } let buf = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength); - // 压缩(若启用) + // 压缩(若启用)— 加密由 EncryptedBackend 在 backend 层透明处理(v0.4.5) if (this.config.compression) { const compressed = compressLZ4(new Uint8Array(buf)); buf = compressed.buffer.slice(compressed.byteOffset, compressed.byteOffset + compressed.byteLength); } - // 加密(若启用) - if (isCryptoEnabled()) { - const enc = await encryptPage(buf); - const header = new Uint8Array(12 + 4); // IV(12) + originalLen(4) - header.set(enc.iv, 0); - new DataView(header.buffer).setUint32(12, data.byteLength, false); - const combined = new Uint8Array(header.length + enc.data.byteLength); - combined.set(header, 0); - combined.set(new Uint8Array(enc.data), header.length); - buf = combined.buffer; - } await this.backend.write(`${filePrefix}${id}`, buf); }, load: async (id) => { + // 页面化读取:meta 有 pageIds → 页面拼接;无(旧数据)→ 整 value + if (pageStore) { + const metas = await readMetaList(); + const meta = metas.find((m) => m.id === id); + if (meta && meta.pageIds && meta.pageIds.length > 0) { + return pageStore.load(id, meta.pageIds, meta.totalSize); + } + } const raw = await this.backend.read(`${filePrefix}${id}`); if (!raw) return null; let buf = new Uint8Array(raw); - // 解密(若数据带加密头) - if (isCryptoEnabled() && buf.length > 16) { - const iv = buf.slice(0, 12); - const origLen = new DataView(buf.buffer, buf.byteOffset + 12, 4).getUint32(0, false); - const ciphertext = buf.slice(16).buffer; - const decrypted = await decryptPage(iv, ciphertext); - buf = new Uint8Array(decrypted, 0, origLen); - } - // 解压(若启用) + // 解压(若启用)— 解密由 EncryptedBackend 在 backend 层透明处理(v0.4.5) if (this.config.compression) { - const decompressed = decompressLZ4(buf, buf.length * 2); // 估计原始大小 - buf = decompressed; + // v0.4.5: 压缩流自带原始大小头,无需外部估算 + buf = decompressLZ4(buf); } return buf; }, delete: async (id) => { + if (pageStore) { + const metas = await readMetaList(); + const meta = metas.find((m) => m.id === id); + if (meta && meta.pageIds && meta.pageIds.length > 0) { + await pageStore.delete(id, meta.pageIds); + } + } await this.backend.delete(`${filePrefix}${id}`); }, allocateId: async () => { @@ -6694,12 +7259,15 @@ class AriaEngine { listMeta: readMetaList, saveMeta: async (meta) => { const list = await readMetaList(); + // v0.4.5: 页面化时把页面 ID 列表注入 meta(save 后、saveMeta 前由 LSM 顺序调用) + const pageIds = pageStore?.getPageIds(meta.id); + const metaWithPages = pageIds && pageIds.length > 0 ? { ...meta, pageIds } : meta; // 更新或添加 const idx = list.findIndex((m) => m.id === meta.id); if (idx >= 0) - list[idx] = meta; + list[idx] = metaWithPages; else - list.push(meta); + list.push(metaWithPages); await this.backend.write(META_KEY, encodeText(JSON.stringify(list))); }, deleteMeta: async (id) => { @@ -6709,6 +7277,14 @@ class AriaEngine { }, }; } + /** v0.4.5: 是否启用页面化物理存储(默认 OPFS 后端启用,显式配置可覆盖) */ + isPageStorage() { + if (this.config.pageStorage === true) + return true; + if (this.config.pageStorage === false) + return false; + return this.config.storageBackend === 'opfs'; + } // ======================================================================= // WAL 恢复 // ======================================================================= @@ -7043,37 +7619,6 @@ class AriaEngine { this.mvcc.gc(10); return { compactedLevels: 6, gcVersions: beforeGC }; } - /** - * 查询优化器:估算各索引成本,选择最优方案 - */ - estimateQueryCost(tableName, query) { - const schema = this.schemas.get(tableName); - if (!schema || !query.where) - return { strategy: 'full_scan', estimatedRows: 0 }; - const pkCol = this.tablePKs.get(tableName); - for (const [col, condition] of Object.entries(query.where)) { - if (col === '$and' || col === '$or' || col === '$not') - continue; - // PK 等值 → 最快,估计 1 行 - if (col === pkCol && (typeof condition !== 'object' || condition.$eq)) { - return { strategy: 'pk_lookup', estimatedRows: 1 }; - } - // 索引列等值 → 快 - const colDef = schema.columns[col]; - if (colDef?.index || colDef?.unique) { - if (typeof condition !== 'object' || condition.$eq) { - return { strategy: `index_eq:${col}`, estimatedRows: 1 }; - } - if (condition.$in && Array.isArray(condition.$in)) { - return { strategy: `index_in:${col}`, estimatedRows: condition.$in.length }; - } - if (condition.$gt || condition.$lt || condition.$gte || condition.$lte) { - return { strategy: `index_range:${col}`, estimatedRows: 100 }; - } - } - } - return { strategy: 'full_scan', estimatedRows: 1000 }; - } ensureOpen() { if (!this.opened) throw new DatabaseError('AriaEngine not opened', 'DB_NOT_OPEN'); @@ -7089,25 +7634,6 @@ class AriaEngine { throw new DatabaseError(`Table "${tableName}" does not exist`, 'TABLE_NOT_FOUND'); } } - /** Get the number of WAL records stored */ - async getWALCount() { - const raw = await this.backend.read('__wal_count'); - if (!raw) - return 0; - try { - const dec = new TextDecoder(); - return parseInt(dec.decode(raw), 10) || 0; - } - catch { - return 0; - } - } - /** Set the number of WAL records stored */ - async setWALCount(count) { - const enc = new TextEncoder(); - const buf = enc.encode(String(count)).buffer; - await this.backend.write('__wal_count', buf); - } } /** @@ -7431,20 +7957,24 @@ class SelectQueryBuilder { // UpdateQueryBuilder // --------------------------------------------------------------------------- class UpdateQueryBuilder { - constructor(engine, tableName, _updates, onWrite) { + constructor(engine, tableName, _updates, onWrite, onHooks) { this.engine = engine; this.tableName = tableName; this._updates = _updates; this._where = {}; this.onWrite = onWrite; + this.onHooks = onHooks; } where(condition) { this._where = { ...this._where, ...condition }; return this; } async execute() { - const count = await this.engine.update(this.tableName, { table: this.tableName, where: this._where }, this._updates); + const query = { table: this.tableName, where: this._where }; + await this.onHooks?.('beforeUpdate', [query, this._updates]); + const count = await this.engine.update(this.tableName, query, this._updates); this.onWrite?.(this.tableName); + await this.onHooks?.('afterUpdate', [query, this._updates, count]); return count; } toAST() { @@ -7455,19 +7985,23 @@ class UpdateQueryBuilder { // DeleteQueryBuilder // --------------------------------------------------------------------------- class DeleteQueryBuilder { - constructor(engine, tableName, onWrite) { + constructor(engine, tableName, onWrite, onHooks) { this.engine = engine; this.tableName = tableName; this._where = {}; this.onWrite = onWrite; + this.onHooks = onHooks; } where(condition) { this._where = { ...this._where, ...condition }; return this; } async execute() { - const count = await this.engine.delete(this.tableName, { table: this.tableName, where: this._where }); + const query = { table: this.tableName, where: this._where }; + await this.onHooks?.('beforeDelete', [query]); + const count = await this.engine.delete(this.tableName, query); this.onWrite?.(this.tableName); + await this.onHooks?.('afterDelete', [query, count]); return count; } toAST() { @@ -7483,12 +8017,13 @@ class DeleteQueryBuilder { // Table // --------------------------------------------------------------------------- class Table { - constructor(engine, tableName, executor, onWrite) { + constructor(engine, tableName, executor, onWrite, onHooks) { this.schema = null; this.engine = engine; this.name = tableName; this.executor = executor; this.onWrite = onWrite; + this.onHooks = onHooks; } // ---- Schema ---- async getSchema() { @@ -7502,13 +8037,18 @@ class Table { } // ---- 插入 ---- async insert(row) { + // beforeInsert 参数约定:rows[](单行时也是数组) + await this.onHooks?.('beforeInsert', [[row]]); const pks = await this.engine.insert(this.name, [row]); this.onWrite?.(this.name); + await this.onHooks?.('afterInsert', [[row], pks]); return pks[0]; } async insertMany(rows) { + await this.onHooks?.('beforeInsert', [rows]); const pks = await this.engine.insert(this.name, rows); this.onWrite?.(this.name); + await this.onHooks?.('afterInsert', [rows, pks]); return pks; } // ---- 查询 ---- @@ -7539,11 +8079,11 @@ class Table { } // ---- 更新 ---- update(updates) { - return new UpdateQueryBuilder(this.engine, this.name, updates, this.onWrite); + return new UpdateQueryBuilder(this.engine, this.name, updates, this.onWrite, this.onHooks); } // ---- 删除 ---- delete() { - return new DeleteQueryBuilder(this.engine, this.name, this.onWrite); + return new DeleteQueryBuilder(this.engine, this.name, this.onWrite, this.onHooks); } // ---- 聚合 ---- async count(where) { @@ -7688,6 +8228,14 @@ var TokenType; TokenType["THEN"] = "THEN"; TokenType["ELSE"] = "ELSE"; TokenType["END"] = "END"; + // v0.5.1: 维护语句(EXPLAIN / ANALYZE / REINDEX / VACUUM / SAVEPOINT) + TokenType["EXPLAIN"] = "EXPLAIN"; + TokenType["ANALYZE"] = "ANALYZE"; + TokenType["REINDEX"] = "REINDEX"; + TokenType["VACUUM"] = "VACUUM"; + TokenType["SAVEPOINT"] = "SAVEPOINT"; + TokenType["RELEASE"] = "RELEASE"; + TokenType["TO"] = "TO"; // 标识符 & 字面量 TokenType["IDENTIFIER"] = "IDENTIFIER"; TokenType["STRING"] = "STRING"; @@ -7782,6 +8330,14 @@ const KEYWORDS = { 'THEN': TokenType.THEN, 'ELSE': TokenType.ELSE, 'END': TokenType.END, + // v0.5.1 + 'EXPLAIN': TokenType.EXPLAIN, + 'ANALYZE': TokenType.ANALYZE, + 'REINDEX': TokenType.REINDEX, + 'VACUUM': TokenType.VACUUM, + 'SAVEPOINT': TokenType.SAVEPOINT, + 'RELEASE': TokenType.RELEASE, + 'TO': TokenType.TO, }; /** @@ -8066,6 +8622,19 @@ class Parser { return this.parseCommit(); case TokenType.ROLLBACK: return this.parseRollback(); + // v0.5.1: 维护语句入口 + case TokenType.EXPLAIN: + return this.parseExplain(); + case TokenType.ANALYZE: + return this.parseAnalyze(); + case TokenType.REINDEX: + return this.parseReindex(); + case TokenType.VACUUM: + return this.parseVacuum(); + case TokenType.SAVEPOINT: + return this.parseSavepoint(); + case TokenType.RELEASE: + return this.parseSavepoint(); default: throw this.error(`Unexpected token "${this.curToken.value}"`); } @@ -8090,6 +8659,53 @@ class Parser { } return statements; } + // ---- 维护语句(v0.5.1) ---- + /** EXPLAIN — 输出查询计划 */ + parseExplain() { + this.expect(TokenType.EXPLAIN); + if (this.curTokenIs(TokenType.EXPLAIN)) { + throw this.error('Nested EXPLAIN is not allowed'); + } + const query = this.parseStatement(); + return { type: 'EXPLAIN', query }; + } + /** ANALYZE [TABLE] name — 收集表统计信息 */ + parseAnalyze() { + this.expect(TokenType.ANALYZE); + if (this._isKeywordAsIdent() && this.curToken.value.toUpperCase() === 'TABLE') { + this.nextToken(); + } + return { type: 'ANALYZE', table: this.expectIdentifier('table name') }; + } + /** REINDEX [TABLE] name — 重建表二级索引 */ + parseReindex() { + this.expect(TokenType.REINDEX); + if (this._isKeywordAsIdent() && this.curToken.value.toUpperCase() === 'TABLE') { + this.nextToken(); + } + return { type: 'REINDEX', table: this.expectIdentifier('table name') }; + } + /** VACUUM — 压缩 LSM + 清理碎片 */ + parseVacuum() { + this.expect(TokenType.VACUUM); + return { type: 'VACUUM' }; + } + /** SAVEPOINT name | RELEASE [SAVEPOINT] name */ + parseSavepoint() { + let action; + if (this.curTokenIs(TokenType.RELEASE)) { + action = 'RELEASE'; + this.nextToken(); + } + else { + action = 'SAVE'; + this.expect(TokenType.SAVEPOINT); + } + // 可选 SAVEPOINT 关键字(RELEASE SAVEPOINT name) + if (this.curTokenIs(TokenType.SAVEPOINT)) + this.nextToken(); + return { type: 'SAVEPOINT', name: this.expectIdentifier('savepoint name'), action }; + } // ---- 事务语句 ---- parseBegin() { this.expect(TokenType.BEGIN); @@ -8106,10 +8722,22 @@ class Parser { } return { type: 'COMMIT' }; } + /** ROLLBACK [TRANSACTION] | ROLLBACK TO [SAVEPOINT] name(v0.5.1) */ parseRollback() { this.expect(TokenType.ROLLBACK); if (this._isKeywordAsIdent() && this.curToken.value.toUpperCase() === 'TRANSACTION') { this.nextToken(); + return { type: 'ROLLBACK' }; + } + // ROLLBACK TO [SAVEPOINT] name + if (this.curTokenIs(TokenType.TO) || + (this._isKeywordAsIdent() && this.curToken.value.toUpperCase() === 'TO')) { + this.nextToken(); + if (this.curTokenIs(TokenType.SAVEPOINT) || + (this._isKeywordAsIdent() && this.curToken.value.toUpperCase() === 'SAVEPOINT')) { + this.nextToken(); + } + return { type: 'SAVEPOINT', name: this.expectIdentifier('savepoint name'), action: 'ROLLBACK' }; } return { type: 'ROLLBACK' }; } @@ -9208,10 +9836,6 @@ class QueryExecutor { this.engine = engine; this.maxRowsPerQuery = maxRowsPerQuery; } - /** 设置查询结果行数上限 */ - setMaxRowsPerQuery(max) { - this.maxRowsPerQuery = max; - } async execute(stmt) { switch (stmt.type) { case 'SELECT': return this.executeSelect(stmt); @@ -9229,6 +9853,11 @@ class QueryExecutor { case 'BEGIN': return this.executeBegin(); case 'COMMIT': return this.executeCommit(); case 'ROLLBACK': return this.executeRollback(); + // v0.5.1: 维护语句 + case 'SAVEPOINT': return this.executeSavepoint(stmt); + case 'ANALYZE': return this.executeAnalyze(stmt); + case 'REINDEX': return this.executeReindex(stmt); + case 'VACUUM': return this.executeVacuum(); default: throw new DatabaseError('Unknown statement type', 'UNKNOWN_STATEMENT'); } } @@ -9283,7 +9912,6 @@ class QueryExecutor { } /** EXPLAIN: 输出查询计划 */ async executeExplain(stmt) { - const plan = compileStatement(stmt.query.type === 'SELECT' ? stmt.query : stmt.query); const startTime = Date.now(); let result = null; try { @@ -9292,15 +9920,21 @@ class QueryExecutor { catch { /* explain 即使执行失败也返回计划 */ } const elapsed = Date.now() - startTime; const rows = Array.isArray(result) ? result.length : 0; + // v0.5.1: 仅 SELECT/DELETE/UPDATE 有引擎查询计划;其他语句输出基本信息 + let plan = null; + try { + plan = compileStatement(stmt.query); + } + catch { /* 非查询语句无 QueryPlan */ } return { type: stmt.query.type, - table: plan.table, - columns: plan.columns, - where: plan.where || {}, - orderBy: plan.orderBy || [], - limit: plan.limit, - offset: plan.offset, - usingIndex: plan.table ? 'auto' : 'none', + table: plan?.table, + columns: plan?.columns, + where: plan?.where || {}, + orderBy: plan?.orderBy || [], + limit: plan?.limit, + offset: plan?.offset, + usingIndex: plan?.table ? 'auto' : 'none', estimatedRows: rows, actualTimeMs: elapsed, }; @@ -9871,6 +10505,59 @@ class QueryExecutor { async executeRollback() { return this.engine.rollbackTransaction(); } + // =================================================================== + // 维护语句(v0.5.1) + // =================================================================== + /** SAVEPOINT name / ROLLBACK TO SAVEPOINT name / RELEASE SAVEPOINT name */ + async executeSavepoint(stmt) { + const engine = this.engine; + if (stmt.action === 'SAVE') { + if (typeof engine.savepoint !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support SAVEPOINT`, 'NOT_SUPPORTED'); + } + return engine.savepoint(stmt.name); + } + if (stmt.action === 'ROLLBACK') { + if (typeof engine.rollbackToSavepoint !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support ROLLBACK TO SAVEPOINT`, 'NOT_SUPPORTED'); + } + return engine.rollbackToSavepoint(stmt.name); + } + if (typeof engine.releaseSavepoint !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support RELEASE SAVEPOINT`, 'NOT_SUPPORTED'); + } + return engine.releaseSavepoint(stmt.name); + } + /** ANALYZE TABLE name — 收集表统计信息 */ + async executeAnalyze(stmt) { + const engine = this.engine; + if (typeof engine.analyzeTable !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support ANALYZE`, 'NOT_SUPPORTED'); + } + const exists = await this.engine.hasTable(stmt.table); + if (!exists) + throw new DatabaseError(`Table "${stmt.table}" does not exist`, 'TABLE_NOT_FOUND'); + return engine.analyzeTable(stmt.table); + } + /** REINDEX TABLE name — 重建表二级索引 */ + async executeReindex(stmt) { + const engine = this.engine; + if (typeof engine.reindexTable !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support REINDEX`, 'NOT_SUPPORTED'); + } + const exists = await this.engine.hasTable(stmt.table); + if (!exists) + throw new DatabaseError(`Table "${stmt.table}" does not exist`, 'TABLE_NOT_FOUND'); + return engine.reindexTable(stmt.table); + } + /** VACUUM — 压缩 LSM + 清理碎片 */ + async executeVacuum() { + const engine = this.engine; + if (typeof engine.vacuum !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support VACUUM`, 'NOT_SUPPORTED'); + } + return engine.vacuum(); + } /** 列列表是否包含 CASE WHEN 表达式 */ hasCaseColumn(columns) { return columns.some((col) => /^\s*CASE\b/i.test(col)); @@ -10616,7 +11303,8 @@ class MetonaSqlark { let t = this.tableCache.get(name); if (!t) { // v0.3.2: 表操作写入后广播变更(多标签页同步) - t = new Table(this.engine, name, this.executor, (tableName) => this.broadcastChange(tableName)); + // v0.5.1: CRUD 生命周期钩子真实接线(beforeInsert/afterInsert/...) + t = new Table(this.engine, name, this.executor, (tableName) => this.broadcastChange(tableName), (hook, args) => this.pluginManager.trigger(hook, ...args)); this.tableCache.set(name, t); } return t; @@ -10651,7 +11339,10 @@ class MetonaSqlark { // v0.3.0: 支持分号分隔的多语句,逐条顺序执行,返回最后一条的结果 const statements = parseAll(sql); for (const stmt of statements) { + // v0.5.1: SQL 写语句触发 CRUD 生命周期钩子(与 Table API 路径一致) + await this.triggerStatementHooks(stmt, 'before'); result = await this.executor.execute(stmt); + await this.triggerStatementHooks(stmt, 'after', result); // v0.3.2: 写语句广播表变更(多标签页同步) const table = this.writeStatementTable(stmt); if (table) @@ -10791,6 +11482,17 @@ class MetonaSqlark { } return result; } + /** + * v0.5.1: 在线备份 — 导出全库一致性快照。 + * Aria 引擎走引擎级 backup()(MVCC 一致性视图);其余引擎回退 exportAll()。 + */ + async backup() { + this.ensureReady(); + if (typeof this.engine.backup === 'function') { + return this.engine.backup(); + } + return this.exportAll(); + } /** 订阅表变更 */ subscribe(tableName, callback) { const key = `change:${tableName}`; @@ -10834,6 +11536,46 @@ class MetonaSqlark { return null; } } + /** + * v0.5.1: SQL 写语句触发 CRUD 生命周期钩子。 + * INSERT/UPDATE/DELETE 分别触发 beforeInsert/afterInsert、beforeUpdate/afterUpdate、 + * beforeDelete/afterDelete(参数与 Table API 路径一致)。 + */ + async triggerStatementHooks(stmt, phase, result) { + switch (stmt.type) { + case 'INSERT': { + const rows = (stmt.values ?? []).map((vals) => { + const row = {}; + const cols = stmt.columns ?? []; + for (let i = 0; i < vals.length; i++) { + row[cols[i] ?? String(i)] = vals[i]; + } + return row; + }); + if (phase === 'before') + await this.pluginManager.trigger('beforeInsert', rows); + else + await this.pluginManager.trigger('afterInsert', rows, result); + break; + } + case 'UPDATE': { + const query = { table: stmt.table, where: stmt.where }; + if (phase === 'before') + await this.pluginManager.trigger('beforeUpdate', query, stmt.sets); + else + await this.pluginManager.trigger('afterUpdate', query, stmt.sets, result); + break; + } + case 'DELETE': { + const query = { table: stmt.from, where: stmt.where }; + if (phase === 'before') + await this.pluginManager.trigger('beforeDelete', query); + else + await this.pluginManager.trigger('afterDelete', query, result); + break; + } + } + } /** 注册迁移 */ addMigration(version, up) { this.migrations.set(version, up); @@ -10923,7 +11665,11 @@ class MetonaSqlark { case 'disk': return diskEngine === 'opfs' ? new OPFSEngine() : new IndexedDBEngine(); case 'aria': - return new AriaEngine({ storageBackend: diskEngine === 'opfs' ? 'opfs' : 'indexeddb' }); + // v0.4.5: 透传 AriaEngine 专属配置(walSyncMode/checkpointInterval/encryption/pageStorage 等) + return new AriaEngine({ + storageBackend: diskEngine === 'opfs' ? 'opfs' : 'indexeddb', + ...(this.config.aria ?? {}), + }); case 'hybrid': return new HybridEngine(diskEngine); default: @@ -11050,12 +11796,6 @@ class ConnectionManager { getActiveConnections() { return Array.from(this.connections.keys()); } - /** - * 获取连接的引用计数 - */ - getRefCount(dbName) { - return this.refCount.get(dbName) ?? 0; - } } // --------------------------------------------------------------------------- // 全局单例 diff --git a/dist/metona-sqlark.cjs.map b/dist/metona-sqlark.cjs.map index aa46df4..e6db0c4 100644 --- a/dist/metona-sqlark.cjs.map +++ b/dist/metona-sqlark.cjs.map @@ -1 +1 @@ -{"version":3,"file":"metona-sqlark.cjs","sources":["../src/constants.ts","../src/query/where-matcher.ts","../src/engine/memory.ts","../src/engine/indexeddb.ts","../src/engine/opfs.ts","../src/table/schema.ts","../src/engine/aria/types.ts","../src/engine/aria/index/memtable.ts","../src/engine/aria/index/bloom.ts","../src/engine/aria/index/sstable_builder.ts","../src/engine/aria/index/sstable.ts","../src/engine/aria/index/merge_iterator.ts","../src/engine/aria/index/lsm.ts","../src/engine/aria/wal/log.ts","../src/engine/aria/wal/checkpoint.ts","../src/engine/aria/store/backend.ts","../src/engine/aria/store/opfs_backend.ts","../src/engine/aria/page/header.ts","../src/engine/aria/store/file_manager.ts","../src/engine/aria/transaction/mvcc.ts","../src/engine/aria/page/format.ts","../src/engine/aria/buffer/eviction.ts","../src/engine/aria/buffer/pool.ts","../src/engine/aria/compression/lz4.ts","../src/engine/aria/crypto.ts","../src/engine/aria/index.ts","../src/hybrid/index.ts","../src/query/builder.ts","../src/table/table.ts","../src/query/compiler.ts","../src/sql/tokens.ts","../src/sql/lexer.ts","../src/sql/parser.ts","../src/query/executor.ts","../src/transaction/index.ts","../src/plugin/index.ts","../src/core.ts","../src/connection-manager.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"metona-sqlark.cjs","sources":["../src/constants.ts","../src/query/where-matcher.ts","../src/engine/memory.ts","../src/engine/indexeddb.ts","../src/engine/opfs.ts","../src/table/schema.ts","../src/engine/aria/types.ts","../src/engine/aria/index/memtable.ts","../src/engine/aria/index/bloom.ts","../src/engine/aria/crc32.ts","../src/engine/aria/index/sstable_builder.ts","../src/engine/aria/index/sstable.ts","../src/engine/aria/index/merge_iterator.ts","../src/engine/aria/index/lsm.ts","../src/engine/aria/wal/log.ts","../src/engine/aria/wal/segmented_store.ts","../src/engine/aria/locks.ts","../src/engine/aria/wal/checkpoint.ts","../src/engine/aria/store/backend.ts","../src/engine/aria/store/opfs_backend.ts","../src/engine/aria/crypto.ts","../src/engine/aria/store/encrypted_backend.ts","../src/engine/aria/store/page_sstable_store.ts","../src/engine/aria/store/file_manager.ts","../src/engine/aria/transaction/mvcc.ts","../src/engine/aria/page/header.ts","../src/engine/aria/page/format.ts","../src/engine/aria/buffer/eviction.ts","../src/engine/aria/buffer/pool.ts","../src/engine/aria/compression/lz4.ts","../src/engine/aria/index.ts","../src/hybrid/index.ts","../src/query/builder.ts","../src/table/table.ts","../src/query/compiler.ts","../src/sql/tokens.ts","../src/sql/lexer.ts","../src/sql/parser.ts","../src/query/executor.ts","../src/transaction/index.ts","../src/plugin/index.ts","../src/core.ts","../src/connection-manager.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["IV_LENGTH"],"mappings":"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"} \ No newline at end of file diff --git a/dist/metona-sqlark.d.ts b/dist/metona-sqlark.d.ts index e17d68a..9eabc2f 100644 --- a/dist/metona-sqlark.d.ts +++ b/dist/metona-sqlark.d.ts @@ -1,3 +1,44 @@ +interface AriaEngineConfig { + /** 页面大小(默认 4096) */ + pageSize?: number; + /** Buffer Pool 页面数量(默认 256) */ + bufferPoolPages?: number; + /** MemTable 刷盘阈值(默认 4MB) */ + memtableSizeThreshold?: number; + /** LSM 层级之间的容量倍数(默认 10) */ + levelSizeMultiplier?: number; + /** Bloom Filter 每 key 位数(默认 10) */ + bloomFilterBitsPerKey?: number; + /** 是否启用 WAL(默认 true) */ + walEnabled?: boolean; + /** WAL 同步模式 */ + walSyncMode?: 'full' | 'batch' | 'none'; + /** Checkpoint 间隔(操作数,默认 1000) */ + checkpointInterval?: number; + /** 是否启用页面压缩(默认 false) */ + compression?: boolean; + /** 存储后端 */ + storageBackend?: 'indexeddb' | 'opfs' | 'memory'; + /** WAL 大小阈值(字节,超过则强制 checkpoint,默认 16MB) */ + walSizeThreshold?: number; + /** 最大内存预算(MB,默认 64) */ + maxMemoryMB?: number; + /** + * v0.4.5: 全库 AES-256-GCM 加密(backend 层透明加解密,WAL/SSTable/Schema/元数据全覆盖)。 + * 密钥由 PBKDF2(salt 持久化于库内 __aria_keymeta)派生,重启用同一密码即可解密。 + */ + encryption?: { + /** 加密密码 */ + password: string; + }; + /** + * v0.4.5: SSTable 页面化存储(4KB 页面 + BufferPool/FileManager 管理,LRU 缓存)。 + * 默认:storageBackend === 'opfs' 时自动启用(大文件随机读/写放大优化); + * 显式 false 强制关闭(整 value 存储,兼容旧行为)。 + */ + pageStorage?: boolean; +} + /** * metona-sqlark Constants — 类型定义 / 默认配置 / 枚举 * @module constants @@ -64,6 +105,11 @@ interface DatabaseConfig { debug?: boolean; /** 多标签页同步(v0.3.2):BroadcastChannel 广播表变更,其他标签页自动刷新 */ multiTabSync?: boolean; + /** + * v0.4.5: AriaEngine 专属配置(mode='aria' 时透传): + * walSyncMode / checkpointInterval / encryption / pageStorage / compression 等 + */ + aria?: AriaEngineConfig; } /** Where 条件操作符 */ type WhereOperator = '$eq' | '$ne' | '$gt' | '$gte' | '$lt' | '$lte' | '$in' | '$nin' | '$like' | '$and' | '$or' | '$not'; @@ -118,7 +164,7 @@ interface MetonaPlugin { /** 销毁 */ destroy(): void; } -declare const VERSION = "0.4.4"; +declare const VERSION = "0.5.1"; /** * metona-sqlark Plugin — 插件系统 @@ -350,7 +396,28 @@ interface CommitTransactionStatement { interface RollbackTransactionStatement { type: 'ROLLBACK'; } -type Statement = SelectStatement | SelectUnionStatement | ExplainStatement | InsertStatement | UpdateStatement | DeleteStatement | CreateTableStatement | DropTableStatement | AlterTableStatement | TruncateTableStatement | CreateIndexStatement | DropIndexStatement | BeginTransactionStatement | CommitTransactionStatement | RollbackTransactionStatement; +/** SAVEPOINT name / ROLLBACK TO SAVEPOINT name / RELEASE SAVEPOINT name */ +interface SavepointStatement { + type: 'SAVEPOINT'; + name: string; + /** SAVE = 创建;ROLLBACK = 回滚到;RELEASE = 释放 */ + action: 'SAVE' | 'ROLLBACK' | 'RELEASE'; +} +/** ANALYZE TABLE name — 收集表统计信息 */ +interface AnalyzeStatement { + type: 'ANALYZE'; + table: string; +} +/** REINDEX TABLE name — 重建表二级索引 */ +interface ReindexStatement { + type: 'REINDEX'; + table: string; +} +/** VACUUM — 压缩 LSM + 清理碎片 */ +interface VacuumStatement { + type: 'VACUUM'; +} +type Statement = SelectStatement | SelectUnionStatement | ExplainStatement | InsertStatement | UpdateStatement | DeleteStatement | CreateTableStatement | DropTableStatement | AlterTableStatement | TruncateTableStatement | CreateIndexStatement | DropIndexStatement | BeginTransactionStatement | CommitTransactionStatement | RollbackTransactionStatement | SavepointStatement | AnalyzeStatement | ReindexStatement | VacuumStatement; /** * metona-sqlark Query Executor — AST 执行器 @@ -363,8 +430,6 @@ declare class QueryExecutor { private engine; private maxRowsPerQuery; constructor(engine: IStorageEngine, maxRowsPerQuery?: number); - /** 设置查询结果行数上限 */ - setMaxRowsPerQuery(max: number): void; execute(stmt: Statement): Promise; /** 递归执行 UNION / UNION ALL,返回合并结果 */ private executeSelectUnion; @@ -406,6 +471,14 @@ declare class QueryExecutor { private executeBegin; private executeCommit; private executeRollback; + /** SAVEPOINT name / ROLLBACK TO SAVEPOINT name / RELEASE SAVEPOINT name */ + private executeSavepoint; + /** ANALYZE TABLE name — 收集表统计信息 */ + private executeAnalyze; + /** REINDEX TABLE name — 重建表二级索引 */ + private executeReindex; + /** VACUUM — 压缩 LSM + 清理碎片 */ + private executeVacuum; /** 列列表是否包含 CASE WHEN 表达式 */ private hasCaseColumn; /** @@ -456,14 +529,6 @@ declare class QueryExecutor { private resolveOperatorSubqueries; } -/** - * metona-sqlark Query Builder — 链式查询构建器 - * @module query/builder - * - * 链式调用 → 构建 AST → 执行引擎操作。 - * 支持 JOIN(需要 Executor)。 - */ - declare class SelectQueryBuilder { private engine; private tableName; @@ -508,7 +573,9 @@ declare class UpdateQueryBuilder { private _updates; private _where; private onWrite?; - constructor(engine: IStorageEngine, tableName: string, _updates: Record, onWrite?: (table: string) => void); + /** v0.5.1: CRUD hooks 触发回调 */ + private onHooks?; + constructor(engine: IStorageEngine, tableName: string, _updates: Record, onWrite?: (table: string) => void, onHooks?: (hook: HookName, args: unknown[]) => Promise); where(condition: WhereCondition): this; execute(): Promise; toAST(): UpdateStatement; @@ -518,17 +585,14 @@ declare class DeleteQueryBuilder { private tableName; private _where; private onWrite?; - constructor(engine: IStorageEngine, tableName: string, onWrite?: (table: string) => void); + /** v0.5.1: CRUD hooks 触发回调 */ + private onHooks?; + constructor(engine: IStorageEngine, tableName: string, onWrite?: (table: string) => void, onHooks?: (hook: HookName, args: unknown[]) => Promise); where(condition: WhereCondition): this; execute(): Promise; toAST(): DeleteStatement; } -/** - * metona-sqlark Table — 表操作 API - * @module table/table - */ - declare class Table> { readonly name: string; private engine; @@ -536,7 +600,9 @@ declare class Table> { private executor; /** 写入回调(多标签页广播,v0.3.2) */ private onWrite?; - constructor(engine: IStorageEngine, tableName: string, executor?: QueryExecutor, onWrite?: (table: string) => void); + /** v0.5.1: CRUD 生命周期钩子触发回调(beforeInsert/afterInsert/... 真实接线) */ + private onHooks?; + constructor(engine: IStorageEngine, tableName: string, executor?: QueryExecutor, onWrite?: (table: string) => void, onHooks?: (hook: HookName, args: unknown[]) => Promise); getSchema(): Promise; insert(row: T & Record): Promise; insertMany(rows: (T & Record)[]): Promise; @@ -637,6 +703,11 @@ declare class MetonaSqlark { importTable(tableName: string, data: Record[]): Promise; /** 导出整个数据库为 JSON */ exportAll(): Promise[]>>; + /** + * v0.5.1: 在线备份 — 导出全库一致性快照。 + * Aria 引擎走引擎级 backup()(MVCC 一致性视图);其余引擎回退 exportAll()。 + */ + backup(): Promise[]>>; private listeners; /** 订阅表变更 */ subscribe(tableName: string, callback: (event: { @@ -654,6 +725,12 @@ declare class MetonaSqlark { broadcastChange(tableName: string): void; /** 写语句对应的表名(多标签页广播用) */ private writeStatementTable; + /** + * v0.5.1: SQL 写语句触发 CRUD 生命周期钩子。 + * INSERT/UPDATE/DELETE 分别触发 beforeInsert/afterInsert、beforeUpdate/afterUpdate、 + * beforeDelete/afterDelete(参数与 Table API 路径一致)。 + */ + private triggerStatementHooks; private migrations; /** 注册迁移 */ addMigration(version: number, up: (db: MetonaSqlark) => Promise): void; @@ -901,35 +978,6 @@ declare class OPFSEngine implements IStorageEngine { * 空表不再消失、索引标记/主键/约束完整;无 schema 记录的旧库从数据推断(兼容)。 */ private loadExistingTables; - /** 从 OPFS 加载表数据到内存缓存 */ - loadTableIntoMemory(tableName: string, schema: TableSchema): Promise; -} - -interface AriaEngineConfig { - /** 页面大小(默认 4096) */ - pageSize?: number; - /** Buffer Pool 页面数量(默认 256) */ - bufferPoolPages?: number; - /** MemTable 刷盘阈值(默认 4MB) */ - memtableSizeThreshold?: number; - /** LSM 层级之间的容量倍数(默认 10) */ - levelSizeMultiplier?: number; - /** Bloom Filter 每 key 位数(默认 10) */ - bloomFilterBitsPerKey?: number; - /** 是否启用 WAL(默认 true) */ - walEnabled?: boolean; - /** WAL 同步模式 */ - walSyncMode?: 'full' | 'batch' | 'none'; - /** Checkpoint 间隔(操作数,默认 1000) */ - checkpointInterval?: number; - /** 是否启用页面压缩(默认 false) */ - compression?: boolean; - /** 存储后端 */ - storageBackend?: 'indexeddb' | 'opfs' | 'memory'; - /** WAL 大小阈值(字节,超过则强制 checkpoint,默认 16MB) */ - walSizeThreshold?: number; - /** 最大内存预算(MB,默认 64) */ - maxMemoryMB?: number; } declare class AriaEngine implements IStorageEngine { @@ -941,6 +989,9 @@ declare class AriaEngine implements IStorageEngine { private backend; private opened; private dbName; + private fileManager; + private bufferPool; + private dbLock; private schemas; private tablePKs; private opCounter; @@ -949,7 +1000,6 @@ declare class AriaEngine implements IStorageEngine { private currentTxnId; private txnSnapshot; private gcCounter; - private bufferPool; constructor(config?: AriaEngineConfig); open(dbName: string, _version: number): Promise; /** open 内部实现(错误包装在 open 外层) */ @@ -957,9 +1007,15 @@ declare class AriaEngine implements IStorageEngine { close(): Promise; /** * v0.4.2-fix: 崩溃恢复/自愈 — 校验并移除损坏 SSTable、截断 WAL、重建二级索引。 + * v0.4.5 增强:清理 OPFS 残留临时文件、清理孤儿页面(meta 未引用的 pg_ 文件)。 * 应用层检测到异常后调用,无需删库重建。 */ repair(): Promise; + /** + * v0.4.5: 清理孤儿页面 — 扫描全部 pg_* 文件,未被任何 LSM 命名空间 meta 引用的删除。 + * 孤儿页面来自:崩溃中断的 compaction/删除流程(旧 SSTable 页面残留)。 + */ + private cleanupOrphanPages; /** * v0.4.1: 重置数据库 — 清空全部数据与表结构(演示页刷新/重新初始化用)。 * 清空存储后端、LSM、WAL、MVCC 与二级索引,后续可继续使用本实例。 @@ -1044,6 +1100,8 @@ declare class AriaEngine implements IStorageEngine { * - id 序列独立(避免 v0.2.4 共享 id 空间导致的文件互相覆盖) */ private createSSTableStore; + /** v0.4.5: 是否启用页面化物理存储(默认 OPFS 后端启用,显式配置可覆盖) */ + private isPageStorage; private applyWALRecord; /** * v0.3.3: DROP_TABLE 恢复 — 删除 schema 并清除主 LSM 中该表的所有残留数据。 @@ -1084,21 +1142,10 @@ declare class AriaEngine implements IStorageEngine { compactedLevels: number; gcVersions: number; }>; - /** - * 查询优化器:估算各索引成本,选择最优方案 - */ - estimateQueryCost(tableName: string, query: QueryPlan): { - strategy: string; - estimatedRows: number; - }; private ensureOpen; /** v0.4.2-fix: Aria 事务中 DDL 显式拒绝(结构变更无法通过行快照回滚) */ private ensureNoDDLInTransaction; private ensureTable; - /** Get the number of WAL records stored */ - private getWALCount; - /** Set the number of WAL records stored */ - private setWALCount; } declare class HybridEngine implements IStorageEngine { @@ -1234,6 +1281,13 @@ declare enum TokenType { THEN = "THEN", ELSE = "ELSE", END = "END", + EXPLAIN = "EXPLAIN", + ANALYZE = "ANALYZE", + REINDEX = "REINDEX", + VACUUM = "VACUUM", + SAVEPOINT = "SAVEPOINT", + RELEASE = "RELEASE", + TO = "TO", IDENTIFIER = "IDENTIFIER", STRING = "STRING", NUMBER = "NUMBER", @@ -1286,6 +1340,13 @@ interface IStorageBackend { read(key: string): Promise; /** 写入数据块 */ write(key: string, data: ArrayBuffer): Promise; + /** + * 追加写入(v0.4.5 WAL 分片用,可选): + * - OPFS 后端实现真追加(createWritable keepExistingData + seek,O(chunk)) + * - 未实现的后端由调用方回退 read+write(EncryptedBackend 包装时整体重写保正确性) + * 语义:在 key 现有内容末尾追加 data;key 不存在时等同 write。 + */ + append?(key: string, data: ArrayBuffer): Promise; /** * 批量原子写入(v0.4.2-fix):多个 key 在单个底层事务中提交, * 中断时整体回滚,不留半写状态。WAL count 与记录同事务保证一致性。 @@ -1312,7 +1373,17 @@ interface IStorageBackend { * 零外部依赖,纯浏览器文件系统 API。 * 每个 key 对应 OPFS 目录下的一个二进制文件。 * - * 浏览器要求:Chrome 102+ / Edge 102+ + * 原子性与一致性保证(v0.4.5 固化): + * - 单文件 write/append:createWritable 为 copy-on-write —— close 前崩溃旧文件保持不变, + * close 后原子替换(单文件写入原子) + * - 多文件 writeMany/deleteMany:OPFS 无跨文件事务,串行逐个落盘;调用方(WAL 分片) + * 已改为单文件语义,多键操作仅用于一次性的 schema/meta 写入 + * - 所有写操作串行队列化(同源同进程顺序一致);单次任务失败不中断队列链, + * 错误如实返回给该次调用的调用方 + * - close() 等待写队列排空后再释放目录句柄(杜绝 close 后挂起写丢失/读旧数据) + * - open() 自动清理崩溃残留临时文件(Chromium createWritable 的 .crswap 等) + * + * 浏览器要求:Chrome 102+ / Edge 102+(Safari 15.2+ / Firefox 111+ 支持基础 OPFS) */ declare class OPFSBackend implements IStorageBackend { @@ -1323,8 +1394,20 @@ declare class OPFSBackend implements IStorageBackend { open(name: string): Promise; close(): Promise; isOpen(): boolean; + /** 清理崩溃残留的临时文件(open 时自动调用,repair 也可调用) */ + cleanupStaleFiles(): Promise; read(key: string): Promise; + /** + * 单文件原子写:createWritable 为 copy-on-write,close 后原子替换; + * 写入期间崩溃 → 旧文件保持(原子性由浏览器 OPFS 实现保证)。 + */ write(key: string, data: ArrayBuffer): Promise; + /** + * v0.4.5: 真追加写 — createWritable(keepExistingData) + seek 到文件末尾。 + * 单文件 COW 原子(close 前崩溃旧文件保持),无需读旧内容即实现 O(chunk) 追加 + * (WAL 分片高频写入用)。 + */ + append(key: string, data: ArrayBuffer): Promise; /** v0.4.2-fix: 批量写入 — 串行队列内逐个落盘(OPFS 无跨文件事务,顺序保证一致) */ writeMany(entries: Record): Promise; delete(key: string): Promise; diff --git a/dist/metona-sqlark.esm.js b/dist/metona-sqlark.esm.js index 67ac616..c94ef61 100644 --- a/dist/metona-sqlark.esm.js +++ b/dist/metona-sqlark.esm.js @@ -2,7 +2,6 @@ * metona-sqlark Constants — 类型定义 / 默认配置 / 枚举 * @module constants */ -/** 所有存储模式 */ /** 所有字段类型 */ const FIELD_TYPES = ['string', 'number', 'boolean', 'date', 'json']; /** 数据库默认配置 */ @@ -14,6 +13,7 @@ const DB_DEFAULTS = Object.freeze({ maxRowsPerQuery: 0, // 0 = 不限制 debug: false, multiTabSync: false, + aria: undefined, }); // --------------------------------------------------------------------------- // 错误类型 @@ -30,7 +30,7 @@ class DatabaseError extends Error { // --------------------------------------------------------------------------- // 版本 // --------------------------------------------------------------------------- -const VERSION = '0.4.4'; +const VERSION = '0.5.1'; /** * metona-sqlark Shared WHERE Matcher — 统一的条件匹配逻辑 @@ -1927,17 +1927,6 @@ class OPFSEngine { } } } - /** 从 OPFS 加载表数据到内存缓存 */ - async loadTableIntoMemory(tableName, schema) { - await this.memoryCache.createTable(schema); - const rows = await this.readTableData(tableName); - if (rows.length > 0) { - // 直接用 Map 设置绕过 insert 校验 - for (const row of rows) { - await this.memoryCache.insert(tableName, [row]); - } - } - } } /** @@ -2050,7 +2039,7 @@ const PAGE_HEADER_SIZE = 16; // ============================================================================= var PageType; (function (PageType) { - /** 数据页面:存储行数据 */ + /** 数据页面:存储 SSTable 字节切片 */ PageType[PageType["DATA"] = 1] = "DATA"; /** 索引页面:存储索引节点 */ PageType[PageType["INDEX"] = 2] = "INDEX"; @@ -2059,16 +2048,9 @@ var PageType; /** 元数据页面:存储表/库元信息 */ PageType[PageType["META"] = 4] = "META"; })(PageType || (PageType = {})); -/** 列类型(内部二进制编码用) */ -var ColumnEncoding; -(function (ColumnEncoding) { - ColumnEncoding[ColumnEncoding["STRING"] = 1] = "STRING"; - ColumnEncoding[ColumnEncoding["NUMBER"] = 2] = "NUMBER"; - ColumnEncoding[ColumnEncoding["BOOLEAN"] = 3] = "BOOLEAN"; - ColumnEncoding[ColumnEncoding["DATE"] = 4] = "DATE"; - ColumnEncoding[ColumnEncoding["JSON"] = 5] = "JSON"; - ColumnEncoding[ColumnEncoding["NULL"] = 6] = "NULL"; -})(ColumnEncoding || (ColumnEncoding = {})); +// ============================================================================= +// 列类型(内部二进制编码用) +// ============================================================================= // ============================================================================= // LSM-Tree // ============================================================================= @@ -2098,12 +2080,6 @@ var WALRecordType; // ============================================================================= // MVCC // ============================================================================= -/** 事务隔离级别 */ -var IsolationLevel; -(function (IsolationLevel) { - IsolationLevel[IsolationLevel["READ_COMMITTED"] = 1] = "READ_COMMITTED"; - IsolationLevel[IsolationLevel["SNAPSHOT"] = 2] = "SNAPSHOT"; -})(IsolationLevel || (IsolationLevel = {})); /** 事务状态 */ var TransactionState; (function (TransactionState) { @@ -2129,6 +2105,8 @@ const DEFAULT_ARIA_CONFIG = { storageBackend: 'indexeddb', walSizeThreshold: 16 * 1024 * 1024, // 16MB maxMemoryMB: 64, + encryption: undefined, + pageStorage: undefined, }; /** @@ -2570,10 +2548,6 @@ class MemTable { this.tree.clear(); this._estimatedSize = 0; } - /** 检查 key 是否存在 */ - contains(key) { - return this.tree.find(key) !== null; - } // ----------------------------------------------------------------------- // 内部 // ----------------------------------------------------------------------- @@ -2655,14 +2629,6 @@ class BloomFilter { serialize() { return this.bits; } - /** bit 数组大小 */ - getBitSize() { - return this.bits.byteLength * 8; - } - /** 已插入 key 数量 */ - getInsertedCount() { - return this._inserted; - } /** hash 函数数量 */ getHashCount() { return this.numHashes; @@ -2703,6 +2669,55 @@ class BloomFilter { } } +/** + * AriaEngine CRC32 — 标准 CRC-32(IEEE 802.3,多项式 0xEDB88320) + * @module engine/aria/crc32 + * + * 查表法实现。 + * 分段计算约定: + * crc32(head + tail) === crc32Finalize(crc32Update(crc32Update(0xFFFFFFFF, head), tail)) + * === crc32(tail, crc32(head)) + * 用于 SSTable 文件校验和与 WAL 记录完整性校验。 + */ +/** CRC-32 查找表(0xEDB88320 反射多项式) */ +const CRC32_TABLE = (() => { + const table = new Uint32Array(256); + for (let i = 0; i < 256; i++) { + let c = i; + for (let k = 0; k < 8; k++) { + c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1; + } + table[i] = c >>> 0; + } + return table; +})(); +/** CRC-32 初始累加器状态 */ +const CRC32_INIT = 0xffffffff; +/** + * 更新内部 CRC 累加状态(供分段计算使用,接收中间状态返回中间状态)。 + */ +function crc32Update(state, data) { + let crc = state >>> 0; + for (let i = 0; i < data.byteLength; i++) { + crc = (CRC32_TABLE[(crc ^ data[i]) & 0xff] ^ (crc >>> 8)) >>> 0; + } + return crc >>> 0; +} +/** 将中间状态转换为最终校验和(终止计算) */ +function crc32Finalize(state) { + return (state ^ CRC32_INIT) >>> 0; +} +/** + * 计算标准 CRC-32 校验和。 + * @param data 输入字节 + * @param seed 前序片段计算的最终校验和(首段传 0 或不传) + * @returns 32 位无符号校验和 + */ +function crc32(data, seed = 0) { + const state = crc32Update(seed ^ CRC32_INIT, data); + return crc32Finalize(state); +} + /** * AriaEngine SSTable Builder — 构建有序字符串表 * @module engine/aria/index/sstable_builder @@ -2812,7 +2827,15 @@ class SSTableBuilder { view.setUint32(footerOffset + 16, bloomFilter.getHashCount(), false); view.setUint32(footerOffset + 20, this.entries.length, false); view.setUint32(footerOffset + 24, SSTABLE_MAGIC_V2, false); - view.setUint32(footerOffset + 28, 0, false); // checksum (simplified: 0) + // checksum 字段先写 0,全部字节就绪后计算整文件 CRC32 再回填 + view.setUint32(footerOffset + 28, 0, false); + // v0.4.5: 真实 CRC-32 校验和 — 覆盖除自身(最后 4 字节)外的全部内容。 + // checksum 永远非 0(计算结果为 0 时用 1 代替),读取端以 0 识别旧版无校验文件 + const all = new Uint8Array(buf); + let checksum = crc32(all.subarray(0, all.byteLength - 4)); + if (checksum === 0) + checksum = 1; + view.setUint32(footerOffset + 28, checksum, false); return { sstableData: new Uint8Array(buf), indexEntries, @@ -2916,11 +2939,25 @@ class SSTableReader { this.bloomFilter = null; /** 格式版本:1 = u16 长度字段(旧),2 = u32 长度字段(v0.4.4) */ this.format = 2; + /** footer 中存储的 checksum(0 = 旧版无校验文件) */ + this.storedChecksum = 0; this.data = data; this.view = new DataView(data.buffer, data.byteOffset, data.byteLength); this.meta = meta; this.parseFooter(); } + /** + * 校验整文件 CRC-32(覆盖除 checksum 字段外的全部字节)。 + * checksum === 0 表示旧版文件(v1 / v0.4.4 及更早的 v2),跳过校验返回 true(兼容)。 + */ + verifyChecksum() { + if (this.storedChecksum === 0) + return true; + if (this.data.byteLength < 4) + return false; + const computed = crc32(this.data.subarray(0, this.data.byteLength - 4)); + return computed === this.storedChecksum; + } /** 长度字段宽度:v2 = 4 字节 u32,v1 = 2 字节 u16 */ lenFieldSize() { return this.format === 2 ? 4 : 2; @@ -3056,14 +3093,6 @@ class SSTableReader { } } } - /** 获取元数据 */ - getMeta() { - return this.meta; - } - /** 获取索引条目数 */ - getIndexBlockCount() { - return this.indexEntries.length; - } // ----------------------------------------------------------------------- // 内部 // ----------------------------------------------------------------------- @@ -3089,6 +3118,7 @@ class SSTableReader { const bloomSize = this.view.getUint32(footerOffset + 12, false); const bloomHashCount = this.view.getUint32(footerOffset + 16, false); this.entryCount = this.view.getUint32(footerOffset + 20, false); + this.storedChecksum = this.view.getUint32(footerOffset + 28, false); // v0.4.1-fix: 完整性校验 — 索引块必须完全落在文件内,否则视为残缺文件跳过 if (indexOffset + 4 > this.data.byteLength || indexOffset + indexSize > this.data.byteLength) { return; // 残缺文件:无索引块可读,get/rangeScan 均返回空 @@ -3566,7 +3596,8 @@ class LSM { } } for (const id of toLoad) { - await this.preloadSSTable(id); + const meta = this.findMetaById(id); + await this.preloadSSTable(id, meta); } } /** 预加载包含指定 key 的所有 SSTable 到缓存 */ @@ -3590,9 +3621,20 @@ class LSM { } } for (const id of toLoad) { - await this.preloadSSTable(id); + const meta = this.findMetaById(id); + await this.preloadSSTable(id, meta); } } + /** 按 id 查找 SSTable 元数据(prefetch 预加载用) */ + findMetaById(id) { + for (let level = 0; level < MAX_LSM_LEVELS; level++) { + for (const meta of this.levels[level]) { + if (meta.id === id) + return meta; + } + } + return undefined; + } get(key) { // 1. 活跃 MemTable let result = this.memtable.get(key); @@ -3716,6 +3758,10 @@ class LSM { let reader; try { reader = new SSTableReader(data, meta); + if (!reader.verifyChecksum()) { + await this.dropInvalidSSTable(meta); + continue; + } } catch { await this.dropInvalidSSTable(meta); @@ -3815,9 +3861,6 @@ class LSM { levelCounts: this.levels.map((l) => l.length), }; } - isInitialized() { - return this.initialized; - } // ======================================================================= // 内部 // ======================================================================= @@ -3846,6 +3889,7 @@ class LSM { * v0.4.2-fix: 校验单个 SSTable 的完整性。 * - 文件不存在 → 清理 meta,返回 false * - 文件过小/魔数错误/索引越界(残缺写入产物)→ 清理 meta,返回 false + * - v0.4.5: 整文件 CRC-32 校验失败(数据腐坏)→ 清理 meta,返回 false * 校验通过的数据不缓存(保持内存预算),读路径按需预加载。 */ async validateSSTable(meta) { @@ -3860,7 +3904,11 @@ class LSM { return false; } try { - new SSTableReader(data, meta); + const reader = new SSTableReader(data, meta); + if (!reader.verifyChecksum()) { + this.dropInvalidSSTable(meta); + return false; + } } catch { this.dropInvalidSSTable(meta); @@ -3913,13 +3961,27 @@ class LSM { } } /** 预加载 SSTable 到缓存(受 cacheLimitBytes 上限约束) */ - async preloadSSTable(id) { + async preloadSSTable(id, meta) { if (this.sstableCache.has(id)) return; const data = await this.sstableStore.load(id); - if (data) { - this.cacheSSTable(id, data); + if (!data) + return; + // v0.4.5: 运行期加载同样校验整文件 CRC-32,损坏文件不缓存并清理(自愈) + if (meta) { + try { + const reader = new SSTableReader(data, meta); + if (!reader.verifyChecksum()) { + await this.dropInvalidSSTable(meta); + return; + } + } + catch { + await this.dropInvalidSSTable(meta); + return; + } } + this.cacheSSTable(id, data); } /** 写入缓存。注意:不在加载时立即驱逐,避免破坏正在进行的同步扫描 */ cacheSSTable(id, data) { @@ -3944,14 +4006,6 @@ class LSM { this.sstableCache.delete(eldestId); } } - /** 获取当前 SSTable 缓存大小(字节) */ - getCacheSize() { - return this.cacheSize; - } - /** 获取 SSTable 缓存容量上限(字节) */ - getCacheLimit() { - return this.cacheLimitBytes; - } } /** @@ -4100,12 +4154,6 @@ class WAL { // ======================================================================= // 统计 // ======================================================================= - isEnabled() { - return this.enabled; - } - getLSN() { - return this.lsn; - } getBufferedCount() { return this.buffer.length; } @@ -4116,6 +4164,14 @@ class WAL { // ----------------------------------------------------------------------- // 编解码 // ----------------------------------------------------------------------- + /** 旧版弱滚动校验(v0.4.4 及更早写入的 WAL 记录使用,双算法探测兼容) */ + legacyChecksum(data) { + let crc = 0; + for (let i = 0; i < data.length; i++) { + crc = ((crc << 5) - crc + data[i]) | 0; + } + return crc >>> 0; + } encodeRecord(record) { const encoder = new TextEncoder(); const tableBytes = encoder.encode(record.tableName); @@ -4150,13 +4206,10 @@ class WAL { offset += 4; new Uint8Array(buf).set(jsonBytes, offset); offset += jsonBytes.length; - // 简单 CRC - let crc = 0; + // v0.4.5: 标准 CRC-32 校验(此前为弱滚动校验,误检率更高) const u8 = new Uint8Array(buf, 0, offset); - for (let i = 0; i < u8.length; i++) { - crc = ((crc << 5) - crc + u8[i]) | 0; - } - view.setUint32(offset, crc >>> 0, false); + const crc = crc32(u8); + view.setUint32(offset, crc, false); return new Uint8Array(buf); } decodeAllRecords(data) { @@ -4197,15 +4250,13 @@ class WAL { catch { /* ok */ } } offset += jsonLen; - // 验证 CRC(跨记录数据计算,不含 CRC 自身) + // 验证 CRC:先标准 CRC-32,失败再尝试旧版弱滚动校验(兼容旧库 WAL 记录) const storedCrc = view.getUint32(offset, false); offset += 4; const recordBytes = data.slice(recordStart, offset - 4); - let computedCrc = 0; - for (let i = 0; i < recordBytes.length; i++) { - computedCrc = ((computedCrc << 5) - computedCrc + recordBytes[i]) | 0; - } - if ((computedCrc >>> 0) !== storedCrc) { + const computedNew = crc32(recordBytes); + const computedLegacy = this.legacyChecksum(recordBytes); + if ((computedNew >>> 0) !== storedCrc && (computedLegacy >>> 0) !== storedCrc) { // CRC 不匹配,跳过此损坏记录 // eslint-disable-next-line no-console console.warn(`[AriaEngine WAL] CRC mismatch at record LSN=${lsn}, skipping`); @@ -4229,6 +4280,224 @@ class WAL { } } +/** + * AriaEngine Segmented WAL Store — 分片式 WAL 持久化存储 + * @module engine/aria/wal/segmented_store + * + * v0.4.5: 取代"每条记录一个 key"的旧结构: + * - 分片文件 `__wal_%06d.bin`,达到阈值(默认 4MB)切新分片 → 文件数量可控 + * - append 追加写当前分片(后端支持真追加则 O(chunk),否则回退 read+write) + * - WAL 序号(LSN)内嵌于记录字节流,无需独立 count 键 → append 单文件原子写 + * - readAll 检测分片序号空洞:序号不连续 → 丢弃空洞之后的分片(保守截断, + * 空洞仅可能来自 truncate 部分完成——此时数据已落盘,丢弃无害) + * - 兼容旧格式 `__wal_N`(每条记录一个键)+ `__wal_count`:读取时迁移重放, + * checkpoint 时一并清空 + */ +/** 分片文件名:__wal_%06d.bin */ +const WAL_SEGMENT_PREFIX = '__wal_'; +const SEGMENT_REGEX = /^__wal_(\d{6})\.bin$/; +const LEGACY_RECORD_REGEX = /^__wal_(\d+)$/; +const LEGACY_COUNT_KEY = '__wal_count'; +/** 默认分片阈值 */ +const DEFAULT_WAL_SEGMENT_SIZE = 4 * 1024 * 1024; +// --------------------------------------------------------------------------- +// SegmentedWALStore +// --------------------------------------------------------------------------- +class SegmentedWALStore { + constructor(backend, segmentSize = DEFAULT_WAL_SEGMENT_SIZE) { + this.backend = backend; + /** 当前分片序号(append 定位) */ + this.currentSegment = 0; + /** 当前分片字节数(内存跟踪,append 切分片判断) */ + this.currentSize = 0; + this.segmentSize = segmentSize; + } + /** 分片 key 生成 */ + segmentKey(seq) { + return `${WAL_SEGMENT_PREFIX}${String(seq).padStart(6, '0')}.bin`; + } + async append(data) { + if (data.byteLength === 0) + return; + if (this.currentSize + data.byteLength > this.segmentSize) { + // 当前分片放不下 → 切新分片 + this.currentSegment++; + this.currentSize = 0; + } + const key = this.segmentKey(this.currentSegment); + const copy = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength); + if (typeof this.backend.append === 'function') { + await this.backend.append(key, copy); + } + else { + // 回退:读旧 + 拼接 + 写(单文件原子写) + const existing = await this.backend.read(key); + if (existing) { + const combined = new ArrayBuffer(existing.byteLength + copy.byteLength); + new Uint8Array(combined).set(new Uint8Array(existing), 0); + new Uint8Array(combined).set(new Uint8Array(copy), existing.byteLength); + await this.backend.write(key, combined); + } + else { + await this.backend.write(key, copy); + } + } + this.currentSize += data.byteLength; + } + async readAll() { + const keys = await this.backend.listKeys(); + // ---- 新格式分片 ---- + const segments = keys + .filter((k) => SEGMENT_REGEX.test(k)) + .map((k) => ({ seq: Number(k.match(SEGMENT_REGEX)[1]), key: k })) + .sort((a, b) => a.seq - b.seq); + // 空洞检测:分片序号必须从 0 严格连续,空洞后的分片整体丢弃 + let keepCount = 0; + for (let i = 0; i < segments.length; i++) { + if (segments[i].seq !== i) + break; + keepCount = i + 1; + } + const validSegments = segments.slice(0, keepCount); + // ---- 旧格式兼容:__wal_N 单记录键(迁移前数据) ---- + const legacyKeys = keys + .filter((k) => LEGACY_RECORD_REGEX.test(k)) + .map((k) => ({ seq: Number(k.match(LEGACY_RECORD_REGEX)[1]), key: k })) + .sort((a, b) => a.seq - b.seq); + const parts = []; + // 旧格式在前(它们是最早的记录) + for (const { key } of legacyKeys) { + const raw = await this.backend.read(key); + if (raw) + parts.push(new Uint8Array(raw)); + } + // 新格式分片在后 + for (const { key } of validSegments) { + const raw = await this.backend.read(key); + if (raw) + parts.push(new Uint8Array(raw)); + } + // 同步当前分片状态(追加定位) + if (validSegments.length > 0) { + this.currentSegment = validSegments[validSegments.length - 1].seq; + const lastRaw = await this.backend.read(validSegments[validSegments.length - 1].key); + this.currentSize = lastRaw ? lastRaw.byteLength : 0; + // 旧格式键存在时(迁移中),下一条记录另起分片,避免与旧键序号冲突 + if (legacyKeys.length > 0) { + this.currentSegment++; + this.currentSize = 0; + } + } + else if (legacyKeys.length > 0) { + // 仅有旧格式:迁移中,新写入从分片 0 开始(checkpoint 会清空旧键) + this.currentSegment = 0; + this.currentSize = 0; + } + const total = parts.reduce((s, c) => s + c.byteLength, 0); + const combined = new Uint8Array(total); + let off = 0; + for (const c of parts) { + combined.set(c, off); + off += c.byteLength; + } + return combined; + } + async truncate() { + const keys = await this.backend.listKeys(); + const walKeys = keys.filter((k) => k.startsWith(WAL_SEGMENT_PREFIX) || k === LEGACY_COUNT_KEY); + if (walKeys.length > 0) { + await this.backend.deleteMany(walKeys); + } + this.currentSegment = 0; + this.currentSize = 0; + } + async exists() { + const keys = await this.backend.listKeys(); + return keys.some((k) => k.startsWith(WAL_SEGMENT_PREFIX) || k === LEGACY_COUNT_KEY); + } +} + +/** + * AriaEngine Database Lock — 多标签页独占锁(Web Locks API) + * @module engine/aria/locks + * + * v0.4.5: OPFS 等无事务后端缺乏多标签页并发协调,多个标签页同时打开同一库 + * 会导致写竞态与数据损坏。用 Web Locks API(Chrome 69+ / Firefox 96+ / Safari 15.4+) + * 获取库级排他锁: + * - ifAvailable 模式:锁被其他标签页持有 → 立即抛 ARIA_LOCKED(不排队挂起) + * - 持锁期间回调挂起,close() 时释放 + * - 浏览器不支持 navigator.locks → 返回 false(如实降级:无并发保护,文档注明) + */ +/** Web Locks 锁名(库级排他) */ +function lockName(dbName) { + return `metona-sqlark:${dbName}`; +} +class DatabaseLock { + constructor() { + this.acquired = false; + this.supported = false; + this.releaseResolve = null; + this.releasePromise = null; + } + /** + * 尝试获取独占锁。 + * @returns true = 已持锁;false = 环境不支持 Web Locks(无并发保护,调用方可警告) + * @throws ARIA_LOCKED 锁被其他标签页持有 + */ + async acquire(dbName) { + const nav = globalThis.navigator; + const lockManager = nav?.locks; + if (!lockManager || typeof lockManager.request !== 'function') { + this.supported = false; + return false; + } + this.supported = true; + await new Promise((resolve, reject) => { + // 注意:必须直接调用(不能解构 request —— LockManager 方法依赖 this 绑定) + const request = lockManager.request.bind(lockManager); + request(lockName(dbName), { ifAvailable: true, mode: 'exclusive' }, async (lock) => { + if (!lock) { + reject(new DatabaseError(`Database "${dbName}" is already open in another tab (locked)`, 'ARIA_LOCKED')); + return; + } + this.acquired = true; + const releasePromise = new Promise((res) => { this.releaseResolve = res; }); + this.releasePromise = releasePromise; + // 锁已获取:acquire 返回(open 流程继续) + resolve(); + // 回调挂起:保持锁直到 release() 触发 + await releasePromise; + }); + }); + return true; + } + /** 释放锁(等待回调真正结束,保证锁已归还) */ + async release() { + if (!this.acquired) + return; + if (this.releaseResolve) { + const res = this.releaseResolve; + const p = this.releasePromise; + this.releaseResolve = null; + this.releasePromise = null; + res(); + try { + await p; + } + catch { /* 释放过程异常不阻塞 */ } + } + this.acquired = false; + } + /** 是否已持锁 */ + isAcquired() { + return this.acquired; + } + /** 环境是否支持 Web Locks */ + isSupported() { + return this.supported; + } +} + /** * AriaEngine Checkpoint — 检查点机制 * @module engine/aria/wal/checkpoint @@ -4271,15 +4540,6 @@ class CheckpointManager { await this.wal.checkpoint(); this.opCount = 0; } - async forceCheckpoint() { - await this.checkpoint(); - } - setInterval(ops) { - this.interval = ops; - } - getOpCount() { - return this.opCount; - } } /** @@ -4461,6 +4721,8 @@ class MemoryBackend { } } +/** 崩溃残留临时文件后缀(createWritable 底层实现可能留下) */ +const STALE_SUFFIXES = ['.crswap', '.tmp']; class OPFSBackend { constructor() { this.root = null; @@ -4472,14 +4734,42 @@ class OPFSBackend { this.dbName = name; this.root = await navigator.storage.getDirectory(); this.dbDir = await this.root.getDirectoryHandle(name, { create: true }); + // v0.4.5: 清理崩溃残留临时文件(不阻塞打开) + await this.cleanupStaleFiles(); } async close() { + // v0.4.5-fix: 等待所有挂起写完成(否则 close 后挂起写被静默丢弃/读旧数据) + try { + await this.writeQueue; + } + catch { /* 写失败已返回给调用方 */ } this.dbDir = null; this.root = null; } isOpen() { return this.dbDir !== null; } + /** 清理崩溃残留的临时文件(open 时自动调用,repair 也可调用) */ + async cleanupStaleFiles() { + if (!this.dbDir) + return; + try { + const dir = this.dbDir; + const stale = []; + for await (const [name] of dir.entries()) { + if (STALE_SUFFIXES.some((s) => name.endsWith(s))) { + stale.push(name); + } + } + for (const name of stale) { + try { + await this.dbDir.removeEntry(name); + } + catch { /* ignore */ } + } + } + catch { /* 清理失败不阻塞 */ } + } async read(key) { if (!this.dbDir) return null; @@ -4492,22 +4782,46 @@ class OPFSBackend { return null; } } + /** + * 单文件原子写:createWritable 为 copy-on-write,close 后原子替换; + * 写入期间崩溃 → 旧文件保持(原子性由浏览器 OPFS 实现保证)。 + */ async write(key, data) { if (!this.dbDir) return; - this.writeQueue = this.writeQueue.then(async () => { + const run = this.writeQueue.then(async () => { const fh = await this.dbDir.getFileHandle(key, { create: true }); const writable = await fh.createWritable(); await writable.write(data); await writable.close(); }); - return this.writeQueue; + // v0.4.5-fix: 单次任务失败不中断队列链(错误仍返回给本次调用方) + this.writeQueue = run.then(() => undefined, () => undefined); + return run; + } + /** + * v0.4.5: 真追加写 — createWritable(keepExistingData) + seek 到文件末尾。 + * 单文件 COW 原子(close 前崩溃旧文件保持),无需读旧内容即实现 O(chunk) 追加 + * (WAL 分片高频写入用)。 + */ + async append(key, data) { + if (!this.dbDir) + return; + const run = this.writeQueue.then(async () => { + const fh = await this.dbDir.getFileHandle(key, { create: true }); + const existing = await fh.getFile(); + const writable = await fh.createWritable({ keepExistingData: true }); + await writable.write({ type: 'write', position: existing.size, data }); + await writable.close(); + }); + this.writeQueue = run.then(() => undefined, () => undefined); + return run; } /** v0.4.2-fix: 批量写入 — 串行队列内逐个落盘(OPFS 无跨文件事务,顺序保证一致) */ async writeMany(entries) { if (!this.dbDir) return; - this.writeQueue = this.writeQueue.then(async () => { + const run = this.writeQueue.then(async () => { for (const [key, data] of Object.entries(entries)) { const fh = await this.dbDir.getFileHandle(key, { create: true }); const writable = await fh.createWritable(); @@ -4515,24 +4829,26 @@ class OPFSBackend { await writable.close(); } }); - return this.writeQueue; + this.writeQueue = run.then(() => undefined, () => undefined); + return run; } async delete(key) { if (!this.dbDir) return; - this.writeQueue = this.writeQueue.then(async () => { + const run = this.writeQueue.then(async () => { try { await this.dbDir.removeEntry(key); } catch { /* ignore */ } }); - return this.writeQueue; + this.writeQueue = run.then(() => undefined, () => undefined); + return run; } /** v0.4.2-fix: 批量删除 — 串行队列内逐个删除 */ async deleteMany(keys) { if (!this.dbDir) return; - this.writeQueue = this.writeQueue.then(async () => { + const run = this.writeQueue.then(async () => { for (const key of keys) { try { await this.dbDir.removeEntry(key); @@ -4540,7 +4856,8 @@ class OPFSBackend { catch { /* ignore */ } } }); - return this.writeQueue; + this.writeQueue = run.then(() => undefined, () => undefined); + return run; } async listKeys() { if (!this.dbDir) @@ -4578,21 +4895,347 @@ class OPFSBackend { } /** - * AriaEngine Page Header — 页面头部编解码 - * @module engine/aria/page/header + * AriaEngine Crypto — 页面级 AES-GCM 加密 + * @module engine/aria/crypto + * + * v0.2.5: 改为实例化 CryptoManager,避免多实例共享全局状态。 + * 保留全局函数兼容旧代码(委托给全局单例)。 */ +const ALGO = 'AES-GCM'; +const IV_LENGTH$1 = 12; /** - * 初始化新页面的 Header。 + * CryptoManager — 实例级加密管理器 + * 每个 AriaEngine 实例可拥有独立的加密配置。 */ -function initPageHeader(buf, pageId, type) { - const view = new DataView(buf); - view.setUint32(0, pageId, false); - view.setUint8(4, type); - view.setUint16(5, PAGE_HEADER_SIZE, false); // freeStart = header 之后 - view.setUint16(7, buf.byteLength, false); // freeEnd = 页面末尾 - view.setUint16(9, 0, false); // slotCount = 0 - view.setUint32(11, 0, false); // checksum = 0 - view.setUint8(15, 0); +class CryptoManager { + constructor() { + this.cryptoKey = null; + this._enabled = false; + } + get enabled() { return this._enabled; } + async init(password, salt) { + const enc = new TextEncoder(); + const keyMaterial = await crypto.subtle.importKey('raw', enc.encode(password), 'PBKDF2', false, ['deriveKey']); + const actualSalt = salt || crypto.getRandomValues(new Uint8Array(16)); + this.cryptoKey = await crypto.subtle.deriveKey({ name: 'PBKDF2', salt: actualSalt, iterations: 100000, hash: 'SHA-256' }, keyMaterial, { name: ALGO, length: 256 }, false, ['encrypt', 'decrypt']); + this._enabled = true; + return actualSalt; + } + async encryptPage(data) { + if (!this.cryptoKey) + throw new Error('Crypto not initialized'); + const iv = crypto.getRandomValues(new Uint8Array(IV_LENGTH$1)); + // 传 TypedArray 视图而非裸 ArrayBuffer:SubtleCrypto 通过 ArrayBuffer.isView 检查, + // 对跨 realm / 跨 vm 环境的 ArrayBuffer 兼容(Node 18/20 的 webcrypto 对裸 ArrayBuffer 检查严格) + const plain = (data instanceof Uint8Array ? data : new Uint8Array(data)); + const ciphertext = await crypto.subtle.encrypt({ name: ALGO, iv }, this.cryptoKey, plain); + return { iv: iv, data: ciphertext }; + } + async decryptPage(iv, data) { + if (!this.cryptoKey) + throw new Error('Crypto not initialized'); + const ciphertext = (data instanceof Uint8Array ? data : new Uint8Array(data)); + return crypto.subtle.decrypt({ name: ALGO, iv }, this.cryptoKey, ciphertext); + } + close() { + this.cryptoKey = null; + this._enabled = false; + } +} + +/** + * AriaEngine Encrypted Backend — 全库透明 AES-256-GCM 加密后端 + * @module engine/aria/store/encrypted_backend + * + * 装饰器模式包装底层 IStorageBackend: + * - 写入时加密(每个 value 独立随机 IV:格式 [12B IV][AES-GCM ciphertext]) + * - 读取时解密(GCM 认证标签同时保证完整性) + * - WAL / SSTable / Schema / 元数据 全部密文存储(除密钥元数据本身) + * + * 密钥管理: + * - PBKDF2-SHA256(100000 迭代)从密码派生 AES-256-GCM 密钥 + * - `__aria_keymeta` 明文保存 { salt, verifier }: + * - salt:PBKDF2 盐(重启后用同一密码重新派生密钥) + * - verifier:对固定明文加密的密文(打开时解密验证密码正确性) + * - 密码错误 → GCM 认证失败 → 抛 ARIA_DECRYPT_ERROR + * + * 依赖浏览器/Node 的 WebCrypto(jest.setup.js 已提供 polyfill)。 + */ +const IV_LENGTH = 12; +const KEYMETA_KEY = '__aria_keymeta'; +/** verifier 固定明文(无数据泄露风险) */ +const VERIFIER_PLAIN = 'metona-sqlark-encryption-verifier'; +// --------------------------------------------------------------------------- +// Base64 工具(浏览器 btoa/atob 与 Node Buffer 双环境) +// --------------------------------------------------------------------------- +function bytesToBase64(bytes) { + if (typeof Buffer !== 'undefined') { + return Buffer.from(bytes).toString('base64'); + } + let bin = ''; + for (let i = 0; i < bytes.byteLength; i++) + bin += String.fromCharCode(bytes[i]); + return btoa(bin); +} +function base64ToBytes(b64) { + if (typeof Buffer !== 'undefined') { + return new Uint8Array(Buffer.from(b64, 'base64')); + } + const bin = atob(b64); + const bytes = new Uint8Array(bin.length); + for (let i = 0; i < bin.length; i++) + bytes[i] = bin.charCodeAt(i); + return bytes; +} +// --------------------------------------------------------------------------- +// EncryptedBackend +// --------------------------------------------------------------------------- +class EncryptedBackend { + constructor(inner, password) { + this.inner = inner; + this.password = password; + this.crypto = new CryptoManager(); + this.opened = false; + if (!password || password.length === 0) { + throw new DatabaseError('Encryption password must not be empty', 'ARIA_ENCRYPT_CONFIG_ERROR'); + } + } + /** 底层后端(测试/调试用) */ + getInner() { + return this.inner; + } + /** 加密是否已初始化(打开并验证/创建密钥后为 true) */ + isCryptoReady() { + return this.crypto.enabled; + } + async open(name) { + if (!this.inner.isOpen()) { + await this.inner.open(name); + } + const raw = await this.inner.read(KEYMETA_KEY); + if (raw) { + // 已有密钥元数据:用持久化 salt 重新派生并验证密码 + let meta; + try { + meta = JSON.parse(new TextDecoder().decode(raw)); + } + catch { + throw new DatabaseError('Corrupted encryption key metadata', 'ARIA_DECRYPT_ERROR'); + } + if (!meta.salt || !meta.verifier) { + throw new DatabaseError('Corrupted encryption key metadata', 'ARIA_DECRYPT_ERROR'); + } + const salt = base64ToBytes(meta.salt); + await this.crypto.init(this.password, salt); + const verifierBytes = base64ToBytes(meta.verifier); + if (verifierBytes.byteLength <= IV_LENGTH) { + throw new DatabaseError('Corrupted encryption key metadata', 'ARIA_DECRYPT_ERROR'); + } + const iv = verifierBytes.subarray(0, IV_LENGTH); + const ciphertext = verifierBytes.subarray(IV_LENGTH); + try { + await this.crypto.decryptPage(iv, ciphertext); + } + catch { + // GCM 认证失败:密码错误(或密钥元数据被篡改) + throw new DatabaseError('Decryption failed: wrong password or corrupted key metadata', 'ARIA_DECRYPT_ERROR'); + } + } + else { + // 无 keymeta:若库中已存在其他数据 → 明文旧库或 keymeta 丢失,拒绝以加密模式打开 + const keys = await this.inner.listKeys(); + if (keys.some((k) => k !== KEYMETA_KEY)) { + throw new DatabaseError('Cannot open with encryption: existing database has no key metadata ' + + '(database was created without encryption, or key metadata was lost)', 'ARIA_ENCRYPT_CONFIG_ERROR'); + } + // 新库:生成随机 salt + 派生密钥 + 写入 verifier + const salt = await this.crypto.init(this.password); + const enc = await this.crypto.encryptPage(new TextEncoder().encode(VERIFIER_PLAIN).buffer); + const verifier = new Uint8Array(IV_LENGTH + enc.data.byteLength); + verifier.set(enc.iv, 0); + verifier.set(new Uint8Array(enc.data), IV_LENGTH); + const keymeta = JSON.stringify({ + salt: bytesToBase64(salt), + verifier: bytesToBase64(verifier), + }); + await this.inner.write(KEYMETA_KEY, new TextEncoder().encode(keymeta).buffer); + } + this.opened = true; + } + async close() { + await this.inner.close(); + this.crypto.close(); + this.opened = false; + } + isOpen() { + return this.opened; + } + async read(key) { + this.ensureReady(); + const raw = await this.inner.read(key); + if (raw === null) + return null; + return this.decrypt(raw); + } + async write(key, data) { + this.ensureReady(); + await this.inner.write(key, await this.encrypt(data)); + } + async writeMany(entries) { + this.ensureReady(); + const encrypted = {}; + for (const [key, data] of Object.entries(entries)) { + encrypted[key] = await this.encrypt(data); + } + await this.inner.writeMany(encrypted); + } + async delete(key) { + this.ensureReady(); + await this.inner.delete(key); + } + async deleteMany(keys) { + this.ensureReady(); + await this.inner.deleteMany(keys); + } + async listKeys() { + this.ensureReady(); + return this.inner.listKeys(); + } + async exists(key) { + this.ensureReady(); + return this.inner.exists(key); + } + async clear() { + // 清空全部数据但保留密钥元数据 —— clearAll 语义:库本身保留,密码不失效 + const keys = await this.inner.listKeys(); + const toDelete = keys.filter((k) => k !== KEYMETA_KEY); + if (toDelete.length > 0) { + await this.inner.deleteMany(toDelete); + } + } + // ----------------------------------------------------------------------- + // 内部 + // ----------------------------------------------------------------------- + ensureReady() { + if (!this.opened) + throw new DatabaseError('EncryptedBackend not opened', 'ARIA_DB_NOT_OPEN'); + if (!this.crypto.enabled) + throw new DatabaseError('EncryptedBackend key not initialized', 'ARIA_DECRYPT_ERROR'); + } + /** 加密单块数据:[IV(12)][ciphertext] */ + async encrypt(data) { + const enc = await this.crypto.encryptPage(data); + const out = new ArrayBuffer(IV_LENGTH + enc.data.byteLength); + const outBytes = new Uint8Array(out); + outBytes.set(enc.iv, 0); + outBytes.set(new Uint8Array(enc.data), IV_LENGTH); + return out; + } + /** 解密单块数据(GCM 认证失败抛错) */ + async decrypt(data) { + const bytes = new Uint8Array(data); + if (bytes.byteLength <= IV_LENGTH) { + throw new DatabaseError('Corrupted encrypted data block (too short)', 'ARIA_DECRYPT_ERROR'); + } + const iv = bytes.subarray(0, IV_LENGTH); + const ciphertext = bytes.subarray(IV_LENGTH); + try { + return await this.crypto.decryptPage(iv, ciphertext); + } + catch (error) { + if (error instanceof DatabaseError) + throw error; + throw new DatabaseError('Decryption failed (data corrupted or wrong key)', 'ARIA_DECRYPT_ERROR', error); + } + } +} + +/** + * AriaEngine Page SSTable Store — SSTable 页面化物理存储 + * @module engine/aria/store/page_sstable_store + * + * v0.4.5: 让 BufferPool/FileManager 真正接入 LSM 读写路径。 + * SSTable 不再整体存为一个 backend value,而是切分为 4KB 页面: + * - 页面由 FileManager 分配 pageId,经 BufferPool 缓存(LRU 驱逐,脏页写回) + * - save 语义 = 数据已落盘:页面写入后逐个 flushPage(await 底层写)才返回, + * 保证 WAL checkpoint(截断)前 SSTable 数据真实持久化 + * - 页面 ID 列表经 SSTableMeta.pageIds 持久化;旧 meta(无 pageIds)走整 value 读取 + * + * 与 LSM 的 sstableCache(整文件 LRU)双层缓存并存: + * - BufferPool 缓存物理页面(跨 SSTable 共享、受 bufferPoolPages 上限约束) + * - LSM 缓存解析后的整文件字节(查询热点复用) + */ +class PageSSTableStore { + constructor(fileManager, bufferPool) { + this.fileManager = fileManager; + this.bufferPool = bufferPool; + /** SSTable id → 页面 ID 列表(save 时记录,saveMeta 时注入 meta) */ + this.pageIds = new Map(); + } + /** 保存数据:切页 → 写入 BufferPool → 逐页落盘 → 记录 pageIds */ + async save(id, data) { + const pageCount = Math.max(1, Math.ceil(data.byteLength / PAGE_SIZE)); + const handles = await this.bufferPool.newPages(pageCount, PageType.DATA); + const ids = []; + for (let i = 0; i < pageCount; i++) { + const page = handles[i]; + ids.push(page.pageId); + const dest = new Uint8Array(page.data); + dest.fill(0); // 清空(最后一页可能不满) + const slice = data.subarray(i * PAGE_SIZE, Math.min((i + 1) * PAGE_SIZE, data.byteLength)); + dest.set(slice, 0); + page.dirty = true; + // save 语义 = 已持久化:立即落盘(WAL checkpoint 截断依赖此保证) + await this.bufferPool.flushPage(page.pageId); + this.bufferPool.unpin(page); + } + this.pageIds.set(id, ids); + } + /** 获取指定 SSTable 的页面 ID 列表(saveMeta 注入用) */ + getPageIds(id) { + return this.pageIds.get(id); + } + /** + * 按页面 ID 列表读取并拼接为完整字节流。 + * @param totalSize SSTable 真实大小(meta 持久化)——最后一页可能有 0 填充,按真实大小截断 + * @returns 缺失页面/读取失败返回 null(调用方视为损坏并清理) + */ + async load(id, pageIds, totalSize) { + if (pageIds.length === 0) + return null; + const chunks = []; + for (const pageId of pageIds) { + const page = await this.bufferPool.getPage(pageId); + if (!page) + return null; + // 立即复制(后续驱逐安全) + chunks.push(new Uint8Array(page.data)); + this.bufferPool.unpin(page); + } + const total = chunks.reduce((s, c) => s + c.byteLength, 0); + const out = new Uint8Array(Math.min(total, totalSize)); + let off = 0; + for (const c of chunks) { + const take = Math.min(c.byteLength, out.byteLength - off); + if (take <= 0) + break; + out.set(c.subarray(0, take), off); + off += take; + } + this.pageIds.delete(id); + return out; + } + /** 释放页面(删除物理页面文件 + 移出 BufferPool) */ + async delete(id, pageIds) { + for (const pageId of pageIds) { + this.bufferPool.removePage(pageId); + try { + await this.fileManager.freePageId(pageId); + } + catch { /* 清理失败不阻塞 */ } + } + this.pageIds.delete(id); + } } /** @@ -4630,8 +5273,9 @@ class FileManager { const key = `pg_${pageId}`; const data = await this.backend.read(key); if (!data) { - // 第一次访问:创建新页面 - return this.createEmptyPage(pageId, PageType.DATA); + // v0.4.5: 页面总是先分配(allocatePageId 持久化)后写入 —— 读取缺失页面视为损坏 + // (此前返回空页面会静默掩盖页面丢失,页面化 SSTable 依赖 null 触发自愈清理) + return null; } // 确保大小正确 if (data.byteLength < PAGE_SIZE) { @@ -4650,33 +5294,29 @@ class FileManager { await this.saveMeta(); return id; } + /** v0.4.5: 批量分配页面 ID(一次 meta 持久化,避免页面化 SSTable 保存时逐页写 meta) */ + async allocatePageIds(count) { + if (count <= 0) + return []; + const ids = []; + const start = this.nextPageId; + this.nextPageId += count; + for (let i = 0; i < count; i++) + ids.push(start + i); + await this.saveMeta(); + return ids; + } async freePageId(_pageId) { // 简化实现:不回收 pageId const key = `pg_${_pageId}`; await this.backend.delete(key); } - // ---- 表页面分配 ---- - /** - * 分配一个新的表元数据页面。 - */ - async allocateTableRootPage() { - const pageId = await this.allocatePageId(); - const data = new ArrayBuffer(PAGE_SIZE); - initPageHeader(data, pageId, PageType.META); - await this.writePage(pageId, data); - return pageId; - } // ---- 辅助 ---- async saveMeta() { const buf = new ArrayBuffer(8); new DataView(buf).setUint32(0, this.nextPageId, false); await this.backend.write('__aria_meta', buf); } - createEmptyPage(pageId, type) { - const buf = new ArrayBuffer(PAGE_SIZE); - initPageHeader(buf, pageId, type); - return buf; - } /** 清空所有数据 */ async clearAll() { await this.backend.clear(); @@ -4776,11 +5416,6 @@ class MVCCManager { this.activeTxns.delete(txnId); this.txnWriteKeys.delete(txnId); } - /** 检查事务是否活跃 */ - isActive(txnId) { - const txn = this.activeTxns.get(txnId); - return txn !== undefined && txn.state === TransactionState.ACTIVE; - } // ======================================================================= // 版本读写 // ======================================================================= @@ -4801,58 +5436,12 @@ class MVCCManager { // v0.4.2-fix: 记录本事务写过的 key(commit/rollback 精准清理) this.txnWriteKeys.get(txnId)?.add(tableKey); } - /** - * 读取一行(对指定事务可见的最新版本)。 - */ - readVersion(tableName, key, txnId) { - const txn = this.activeTxns.get(txnId); - if (!txn) - return null; - const tableKey = `${tableName}.${key}`; - const versions = this.versionStore.get(tableKey); - if (!versions || versions.length === 0) - return null; - // 从最新版本向前遍历 - for (let i = versions.length - 1; i >= 0; i--) { - const version = versions[i]; - // 1. 如果是当前事务写入的(未提交),可见 - if (version.txnId === txnId) { - return version.data; - } - // 2. 如果是已提交的版本,且在快照 LSN 之前提交,可见 - if (version.committed) { - // 简化:所有已提交版本都可见 - return version.data; - } - // 3. 其他事务的未提交版本,不可见,继续找更早的版本 - } - return null; - } /** * 删除一行(创建墓碑版本)。 */ deleteVersion(tableName, key, txnId) { this.writeVersion(tableName, key, { __mvcc_tombstone: true }, txnId); } - /** - * 获取所有行的最新已提交版本(用于非事务读取)。 - */ - getLatestCommittedVersions(tableName) { - const result = {}; - for (const [tableKey, versions] of this.versionStore) { - if (!tableKey.startsWith(`${tableName}.`)) - continue; - const key = tableKey.slice(tableName.length + 1); - for (let i = versions.length - 1; i >= 0; i--) { - const version = versions[i]; - if (version.committed && !version.data.__mvcc_tombstone) { - result[key] = version.data; - break; - } - } - } - return result; - } /** * v0.3.3: 丢弃指定事务的所有版本记录,但保留事务登记(Savepoint 回滚用)。 * 快照数据由调用方(引擎 txnSnapshot)负责恢复。 @@ -4888,39 +5477,6 @@ class MVCCManager { this.versionStore.set(tableKey, pruned); } } - /** - * 获取所有未提交事务中的 key 列表。 - */ - getActiveWriteKeys(tableName, txnId) { - const keys = new Set(); - const prefix = `${tableName}.`; - for (const [tableKey, versions] of this.versionStore) { - if (!tableKey.startsWith(prefix)) - continue; - const latestVersion = versions[versions.length - 1]; - if (latestVersion.txnId === txnId && !latestVersion.committed) { - keys.add(tableKey.slice(prefix.length)); - } - } - return keys; - } - /** - * 清理指定表的所有版本。 - */ - clearTable(tableName) { - const prefix = `${tableName}.`; - for (const [tableKey] of this.versionStore) { - if (tableKey.startsWith(prefix)) { - this.versionStore.delete(tableKey); - } - } - } - /** - * 获取活跃事务数。 - */ - getActiveTxnCount() { - return this.activeTxns.size; - } /** * 获取全局 LSN。 */ @@ -4930,14 +5486,45 @@ class MVCCManager { } /** - * AriaEngine Page Format — 页面格式整合层 + * AriaEngine Page Header — 页面头初始化 + * @module engine/aria/page/header + * + * v0.4.5: 仅保留生产代码实际使用的 initPageHeader。 + * 页面头部布局(大端序): + * [0-3] page_id u32 + * [4] type u8 + * [5-6] free_start u16 + * [7-8] free_end u16 + * [9-10] slot_count u16 + * [11-14] checksum u32 + * [15] reserved u8 + * + * 注:free_start/free_end/slot_count/checksum 字段为历史行级页面格式遗留, + * 页面化 SSTable 使用页面原始字节区(跳过头部),字段保留以维持 16 字节头部对齐。 + */ +/** + * 初始化新页面的 Header。 + */ +function initPageHeader(buf, pageId, type) { + const view = new DataView(buf); + view.setUint32(0, pageId, false); + view.setUint8(4, type); + view.setUint16(5, PAGE_HEADER_SIZE, false); // freeStart = header 之后 + view.setUint16(7, buf.byteLength, false); // freeEnd = 页面末尾 + view.setUint16(9, 0, false); // slotCount = 0 + view.setUint32(11, 0, false); // checksum = 0 + view.setUint8(15, 0); +} + +/** + * AriaEngine Page Format — 页面创建 * @module engine/aria/page/format * - * 组合 Header / Slot / Tuple 操作,提供统一的页面管理接口。 + * v0.4.5: 仅保留生产代码实际使用的页面创建逻辑。 + * (Slot Directory / Tuple 编解码曾为行级页面存储设计,但从未接入 LSM 主路径, + * 属"宣称页面式但未实现"的半成品,已删除 —— SSTable 以 4KB 页面承载, + * 页面内容为原始字节切片,由 PageSSTableStore 管理) */ -// --------------------------------------------------------------------------- -// 页面创建 -// --------------------------------------------------------------------------- /** 创建一个新的空页面 */ function createPage(pageId, type) { const data = new ArrayBuffer(PAGE_SIZE); @@ -5023,33 +5610,15 @@ class LRUList { page.prev = null; page.next = null; } - /** 获取 LRU 尾部(最久未使用的页面) */ - getLRU() { - return this.tail; - } - /** 弹出 LRU 尾部 */ - popLRU() { - const lru = this.tail; - if (lru) { - this.remove(lru); - } - return lru; - } /** 清空链表 */ clear() { this.head = null; this.tail = null; this._size = 0; } - /** 获取所有页面(用于迭代) */ - getAllPages() { - const pages = []; - let current = this.head; - while (current) { - pages.push(current); - current = current.next; - } - return pages; + /** 获取 LRU 尾部(最久未使用的页面) */ + getLRU() { + return this.tail; } } /** @@ -5114,14 +5683,6 @@ class EvictionManager { } return null; } - /** 获取当前大小 */ - getSize() { - return this.lru.size; - } - /** 获取容量 */ - getCapacity() { - return this.capacity; - } /** 清空 */ clear() { this.lru.clear(); @@ -5186,16 +5747,31 @@ class BufferPool { return page; } /** - * 创建新页面。 + * v0.4.5: 批量创建新页面(一次页面 ID 分配,页面化 SSTable 保存用)。 + * 返回的页面均 pin 且 dirty=false(调用方写入后需 markDirty + flushPage)。 */ - async newPage(type = PageType.DATA) { - const pageId = await this.pageIO.allocatePageId(); - await this.eviction.evictIfNeeded(1); - const page = createPage(pageId, type); - page.pins = 1; - this.pages.set(pageId, page); - this.eviction.add(page); - return page; + async newPages(count, type = PageType.DATA) { + if (count <= 0) + return []; + let pageIds; + if (typeof this.pageIO.allocatePageIds === 'function') { + pageIds = await this.pageIO.allocatePageIds(count); + } + else { + pageIds = []; + for (let i = 0; i < count; i++) + pageIds.push(await this.pageIO.allocatePageId()); + } + await this.eviction.evictIfNeeded(count); + const handles = []; + for (const pageId of pageIds) { + const page = createPage(pageId, type); + page.pins = 1; + this.pages.set(pageId, page); + this.eviction.add(page); + handles.push(page); + } + return handles; } /** * 释放页面的 pin。 @@ -5250,36 +5826,15 @@ class BufferPool { this.pages.clear(); this.eviction.clear(); } - // ----------------------------------------------------------------------- - // 统计 - // ----------------------------------------------------------------------- - /** 获取当前缓存页面数 */ - getCachedPageCount() { - return this.pages.size; - } - /** 获取缓存容量 */ - getCapacity() { - return this.eviction.getCapacity(); - } - /** 获取脏页面数 */ - getDirtyPageCount() { - let count = 0; - for (const [, page] of this.pages) { - if (page.dirty) - count++; - } - return count; - } } /** * AriaEngine LZ4 Compression — 简化 LZ4 压缩/解压 * @module engine/aria/compression/lz4 * - * v0.2.6: 修复往返一致性 - * - 匹配长度截断到 19 字节(matchField 上限 15 + MIN_MATCH),长匹配分段输出 - * - 组合 token 的 matchField ∈ [1,15];matchField=0 且 lo=0 表示末尾纯字面量(无 offset) - * - 消除"matchField=0 的组合 token 与纯字面量 token 歧义" + * v0.4.5 格式 v2:压缩流前增加 4 字节原始大小头(LE u32), + * 解压不再依赖外部估算(高压缩率数据下 buf.length*2 估算不足会截断)。 + * 旧版压缩数据(无头)视为损坏(compression 选项自 v0.2.6 起已声明不向后兼容)。 * * Token 格式(1 字节): * hi 4bit = litLen (0-15) @@ -5290,10 +5845,15 @@ class BufferPool { */ const MIN_MATCH = 4; const MAX_MATCH = MIN_MATCH + 15; // 19,匹配长度上限 +/** 原始大小头字节数 */ +const HEADER_SIZE = 4; function compressLZ4(input) { - // 空输入直接返回(无 token 可输出) - if (input.byteLength === 0) - return input; + // 空输入:仅头部(原始大小 0) + if (input.byteLength === 0) { + const empty = new Uint8Array(HEADER_SIZE); + new DataView(empty.buffer).setUint32(0, 0, true); + return empty; + } // 最坏情况:纯字面量分块输出 len/15 个 token + 末尾 token // 上限:len + ceil(len/15) + 8(组合 token 的 offset 开销已包含在内) const maxOut = input.byteLength + Math.ceil(input.byteLength / 15) + 8; @@ -5349,30 +5909,44 @@ function compressLZ4(input) { remaining -= chunk; litStart += chunk; } - // 始终输出压缩流(即使比原数据略大)。 - // 注意:不能返回原样 input —— 解压端无法区分"压缩流"与"原始数据", - // 原样返回会导致解压器将原始字节误解析为 token(v0.2.6 修复) - return out.slice(0, di); + // v0.4.5: 前置原始大小头,解压端自描述 + const stream = out.slice(0, di); + const combined = new Uint8Array(HEADER_SIZE + stream.byteLength); + new DataView(combined.buffer).setUint32(0, input.byteLength, true); + combined.set(stream, HEADER_SIZE); + return combined; } -function decompressLZ4(input, originalSize) { +function decompressLZ4(input, _originalSize) { + if (input.byteLength < HEADER_SIZE) { + throw new Error('LZ4 stream too short: missing header'); + } + const view = new DataView(input.buffer, input.byteOffset, input.byteLength); + const originalSize = view.getUint32(0, true); + if (originalSize === 0 && input.byteLength === HEADER_SIZE) { + return new Uint8Array(0); // 空输入 + } + if (originalSize <= 0 || originalSize > 0x3fffffff) { + throw new Error('Invalid LZ4 header: bad original size'); + } + const stream = input.subarray(HEADER_SIZE); const out = new Uint8Array(originalSize); let si = 0, di = 0; - while (si < input.byteLength && di < originalSize) { - const token = input[si++]; + while (si < stream.byteLength && di < originalSize) { + const token = stream[si++]; const litLen = (token >> 4) & 0x0F; const matchField = token & 0x0F; // 复制字面量 - for (let i = 0; i < litLen && si < input.byteLength && di < originalSize; i++) { - out[di++] = input[si++]; + for (let i = 0; i < litLen && si < stream.byteLength && di < originalSize; i++) { + out[di++] = stream[si++]; } // matchField=0:纯字面量 token(无 offset 无匹配)。 // 可能出现在流中任意位置(超长字面量分块输出),不能 break if (matchField === 0) continue; // 组合 token:读取 offset + 复制匹配(可能自重叠) - if (si + 1 >= input.byteLength) + if (si + 1 >= stream.byteLength) break; - const offset = input[si++] | (input[si++] << 8); + const offset = stream[si++] | (stream[si++] << 8); const matchLen = matchField + MIN_MATCH; for (let i = 0; i < matchLen && di < originalSize; i++) { out[di] = out[di - offset]; @@ -5382,67 +5956,6 @@ function decompressLZ4(input, originalSize) { return out; } -/** - * AriaEngine Crypto — 页面级 AES-GCM 加密 - * @module engine/aria/crypto - * - * v0.2.5: 改为实例化 CryptoManager,避免多实例共享全局状态。 - * 保留全局函数兼容旧代码(委托给全局单例)。 - */ -const ALGO = 'AES-GCM'; -const IV_LENGTH = 12; -/** - * CryptoManager — 实例级加密管理器 - * 每个 AriaEngine 实例可拥有独立的加密配置。 - */ -class CryptoManager { - constructor() { - this.cryptoKey = null; - this._enabled = false; - } - get enabled() { return this._enabled; } - async init(password, salt) { - const enc = new TextEncoder(); - const keyMaterial = await crypto.subtle.importKey('raw', enc.encode(password), 'PBKDF2', false, ['deriveKey']); - const actualSalt = salt || crypto.getRandomValues(new Uint8Array(16)); - this.cryptoKey = await crypto.subtle.deriveKey({ name: 'PBKDF2', salt: actualSalt, iterations: 100000, hash: 'SHA-256' }, keyMaterial, { name: ALGO, length: 256 }, false, ['encrypt', 'decrypt']); - this._enabled = true; - return actualSalt; - } - async encryptPage(data) { - if (!this.cryptoKey) - throw new Error('Crypto not initialized'); - const iv = crypto.getRandomValues(new Uint8Array(IV_LENGTH)); - // 传 TypedArray 视图而非裸 ArrayBuffer:SubtleCrypto 通过 ArrayBuffer.isView 检查, - // 对跨 realm / 跨 vm 环境的 ArrayBuffer 兼容(Node 18/20 的 webcrypto 对裸 ArrayBuffer 检查严格) - const ciphertext = await crypto.subtle.encrypt({ name: ALGO, iv }, this.cryptoKey, new Uint8Array(data)); - return { iv: iv, data: ciphertext }; - } - async decryptPage(iv, data) { - if (!this.cryptoKey) - throw new Error('Crypto not initialized'); - return crypto.subtle.decrypt({ name: ALGO, iv }, this.cryptoKey, new Uint8Array(data)); - } - close() { - this.cryptoKey = null; - this._enabled = false; - } -} -// --------------------------------------------------------------------------- -// 全局兼容层(旧代码仍可使用全局函数) -// --------------------------------------------------------------------------- -const globalCrypto = new CryptoManager(); -/** @deprecated 使用 CryptoManager 实例代替 */ -function isCryptoEnabled() { return globalCrypto.enabled; } -/** @deprecated 使用 CryptoManager 实例代替 */ -async function encryptPage(data) { - return globalCrypto.encryptPage(data); -} -/** @deprecated 使用 CryptoManager 实例代替 */ -async function decryptPage(iv, data) { - return globalCrypto.decryptPage(iv, data); -} - /** * AriaEngine — 自研页面式存储引擎主类 * @module engine/aria/index @@ -5457,6 +5970,8 @@ class AriaEngine { this.name = 'aria'; this.opened = false; this.dbName = ''; + // v0.4.5: 多标签页独占锁(Web Locks API,OPFS 等无事务后端防并发写) + this.dbLock = null; // 表结构 this.schemas = new Map(); this.tablePKs = new Map(); @@ -5484,6 +5999,14 @@ class AriaEngine { await this.openInternal(dbName); } catch (error) { + // 打开失败:释放已获取的锁(避免锁泄漏阻塞其他标签页) + if (this.dbLock) { + try { + await this.dbLock.release(); + } + catch { /* ignore */ } + this.dbLock = null; + } if (error instanceof DatabaseError) throw error; throw new DatabaseError(`Failed to open AriaEngine database "${dbName}"`, 'ARIA_OPEN_ERROR', error); @@ -5492,21 +6015,44 @@ class AriaEngine { /** open 内部实现(错误包装在 open 外层) */ async openInternal(dbName) { this.dbName = dbName; - // 1. 存储后端 + // v0.4.5: 多标签页独占锁(Web Locks)— 不支持的环境降级为无锁(文档注明) + const lock = new DatabaseLock(); + this.dbLock = lock; + const lockAcquired = await lock.acquire(dbName); + if (!lockAcquired) { + // eslint-disable-next-line no-console + console.warn(`[AriaEngine] Web Locks API unavailable: no multi-tab protection for "${dbName}" ` + + '(open the same database in multiple tabs may corrupt data)'); + } + // 1. 存储后端(可选全库加密包装) + let baseBackend; if (this.config.storageBackend === 'opfs') { - this.backend = new OPFSBackend(); + baseBackend = new OPFSBackend(); } else if (this.config.storageBackend === 'indexeddb') { - this.backend = new IndexedDBBackend(); + baseBackend = new IndexedDBBackend(); } else { - this.backend = new MemoryBackend(); + baseBackend = new MemoryBackend(); + } + await baseBackend.open(dbName); + // v0.4.5: encryption 配置 → 透明加密封装(密码错误/数据损坏在 open 或首次读取时暴露) + if (this.config.encryption?.password) { + this.backend = new EncryptedBackend(baseBackend, this.config.encryption.password); + } + else { + this.backend = baseBackend; + // 反向检测:库中存在密钥元数据但未提供密码 → 拒绝打开(避免密文被当明文解析成空库) + if (await baseBackend.exists('__aria_keymeta')) { + await baseBackend.close(); + throw new DatabaseError('Database is encrypted: provide encryption.password to open it', 'ARIA_ENCRYPT_REQUIRED'); + } } await this.backend.open(dbName); // 2a. FileManager (PageIO 实现) + Buffer Pool - const fileManager = new FileManager(this.backend); - await fileManager.init(dbName); - this.bufferPool = new BufferPool(fileManager, this.config.bufferPoolPages); + this.fileManager = new FileManager(this.backend); + await this.fileManager.init(dbName); + this.bufferPool = new BufferPool(this.fileManager, this.config.bufferPoolPages); // 2. 构建 SSTableStore const sstableStore = this.createSSTableStore('main'); // 3. 初始化主 LSM(PK 索引) @@ -5520,59 +6066,9 @@ class AriaEngine { sstableStore, }); // 4. 初始化 WAL - this.wal = new WAL({ - append: async (data) => { - // v0.4.2-fix: 记录写入与 count 计数在同一底层事务中原子提交, - // 中断时整体回滚,杜绝"记录在、计数丢"导致恢复漏读的丢数据问题 - const idx = await this.getWALCount(); - const slice = new Uint8Array(data.buffer, data.byteOffset, data.byteLength); - const copy = slice.buffer.slice(slice.byteOffset, slice.byteOffset + slice.byteLength); - await this.backend.writeMany({ - [`__wal_${idx}`]: copy, - __wal_count: new TextEncoder().encode(String(idx + 1)).buffer, - }); - }, - readAll: async () => { - // v0.4.2-fix: 不依赖 count 计数,直接扫描全部 __wal_* 键, - // 避免 count 与实际记录不一致时漏读(与 checkpoint/并发写入竞态无关) - const keys = (await this.backend.listKeys()) - .filter((k) => k.startsWith('__wal_') && k !== '__wal_count') - .sort((a, b) => { - const na = parseInt(a.slice('__wal_'.length), 10); - const nb = parseInt(b.slice('__wal_'.length), 10); - return (isNaN(na) ? 0 : na) - (isNaN(nb) ? 0 : nb); - }); - if (keys.length === 0) - return new Uint8Array(0); - const chunks = []; - for (const key of keys) { - const d = await this.backend.read(key); - if (d) - chunks.push(new Uint8Array(d)); - } - const total = chunks.reduce((s, c) => s + c.byteLength, 0); - const combined = new Uint8Array(total); - let off = 0; - for (const c of chunks) { - combined.set(c, off); - off += c.byteLength; - } - return combined; - }, - truncate: async () => { - // v0.4.2-fix: 扫描删除全部 WAL 记录键 + count 键(单事务原子清理) - const keys = (await this.backend.listKeys()) - .filter((k) => k.startsWith('__wal_')); - await this.backend.deleteMany(keys); - await this.setWALCount(0); - }, - exists: async () => { - // v0.4.2-fix: 与 readAll 一致按 key 扫描判断(count 可能因崩溃截断而滞后) - const keys = (await this.backend.listKeys()) - .filter((k) => k.startsWith('__wal_') && k !== '__wal_count'); - return keys.length > 0; - }, - }, this.config.walEnabled, this.config.walSyncMode); + // v0.4.5: 分片式 WAL 存储(__wal_%06d.bin),序号内嵌记录字节流无需 count 键, + // append 单文件原子写;空洞检测截断;兼容旧格式 __wal_N + __wal_count + this.wal = new WAL(new SegmentedWALStore(this.backend), this.config.walEnabled, this.config.walSyncMode); // 5. 恢复 Schema await this.loadSchemas(); // v0.4.2-fix: 为 schema 中带 index/unique 标记的列重建二级索引 LSM。 @@ -5665,12 +6161,19 @@ class AriaEngine { for (const idxLsm of this.secondaryIndexes.values()) { await idxLsm.flush(); } + // v0.4.5: 页面化存储 — 落盘全部脏页(save 已逐页落盘,此处兜底) + await this.bufferPool.flushAll(); await this.wal.flush(); // v0.4.2-fix: close 前 checkpoint(截断 WAL)— // 此前只 flush 不截断,下次打开会重放全部历史 WAL 记录(含已落盘 SSTable 的数据), // 重复解析/重复 put 拖慢启动,并与恢复后 flush+checkpoint 竞争放大丢数据 await this.wal.checkpoint(); await this.backend.close(); + // v0.4.5: 释放多标签页独占锁(等待锁真正归还) + if (this.dbLock) { + await this.dbLock.release(); + this.dbLock = null; + } // v0.4.2-fix: 清空运行期状态(此前 close 后 mvcc/txn 残留, // 重开时 beginTransaction 报 TX_ACTIVE 或读到陈旧快照) this.schemas.clear(); @@ -5685,24 +6188,79 @@ class AriaEngine { } /** * v0.4.2-fix: 崩溃恢复/自愈 — 校验并移除损坏 SSTable、截断 WAL、重建二级索引。 + * v0.4.5 增强:清理 OPFS 残留临时文件、清理孤儿页面(meta 未引用的 pg_ 文件)。 * 应用层检测到异常后调用,无需删库重建。 */ async repair() { this.ensureOpen(); // 1. 校验全部 SSTable,移除残缺项(打开时已做一次,此处兜底运行期损坏) const removed = await this.lsm.validateAll(); - // 2. 将 WAL 残留数据落盘并截断,避免无限重放 + // v0.4.5: 清空页面缓存(损坏数据可能驻留 BufferPool,重新加载) + await this.bufferPool.clear(); + // 2. 将 WAL 残留数据落盘并截断,避免无限重放(含空洞截断落地) await this.lsm.flush(); await this.wal.checkpoint(); // 3. 重建所有表的二级索引(修复索引与主数据不一致) for (const tableName of this.schemas.keys()) { await this.reindexTable(tableName); } + // v0.4.5: 4. 清理 OPFS 残留临时文件(.crswap/.tmp) + const backendAny = this.backend; + if (typeof backendAny.cleanupStaleFiles === 'function') { + try { + await backendAny.cleanupStaleFiles(); + } + catch { /* 清理失败不阻塞 */ } + } + // v0.4.5: 5. 清理孤儿页面(所有 LSM 命名空间 meta 均未引用的 pg_ 文件) + await this.cleanupOrphanPages(); if (removed > 0) { // eslint-disable-next-line no-console console.warn(`[AriaEngine] repair: removed ${removed} corrupted SSTable(s)`); } } + /** + * v0.4.5: 清理孤儿页面 — 扫描全部 pg_* 文件,未被任何 LSM 命名空间 meta 引用的删除。 + * 孤儿页面来自:崩溃中断的 compaction/删除流程(旧 SSTable 页面残留)。 + */ + async cleanupOrphanPages() { + const keys = await this.backend.listKeys(); + const pgKeys = keys.filter((k) => /^pg_\d+$/.test(k)); + if (pgKeys.length === 0) + return; + const used = new Set(); + const collectMeta = async (ns) => { + const META_KEY = ns === 'main' ? '__aria_lsm_meta' : `__aria_lsm_meta_${ns}`; + const raw = await this.backend.read(META_KEY); + if (!raw) + return; + try { + const metas = JSON.parse(new TextDecoder().decode(raw)); + for (const m of metas) { + if (m.pageIds) { + for (const pid of m.pageIds) + used.add(pid); + } + } + } + catch { /* 损坏的 meta 忽略(validateAll 已处理) */ } + }; + await collectMeta('main'); + // 收集全部二级索引命名空间 + for (const [tableName, schema] of this.schemas) { + for (const [colName, colDef] of Object.entries(schema.columns)) { + if (colDef.index || colDef.unique) { + await collectMeta(`idx_${tableName}_${colName}`); + } + } + } + const orphanIds = pgKeys + .map((k) => Number(k.slice('pg_'.length))) + .filter((pid) => !used.has(pid)); + if (orphanIds.length > 0) { + await this.backend.deleteMany(orphanIds.map((pid) => `pg_${pid}`)); + } + } /** * v0.4.1: 重置数据库 — 清空全部数据与表结构(演示页刷新/重新初始化用)。 * 清空存储后端、LSM、WAL、MVCC 与二级索引,后续可继续使用本实例。 @@ -5711,6 +6269,9 @@ class AriaEngine { this.ensureOpen(); // 清空存储后端(页面文件 / WAL 记录 / schema 记录 / 元数据) await this.backend.clear(); + // v0.4.5: 清空页面缓存与页面 ID 分配状态 + await this.bufferPool.clear(); + await this.fileManager.clearAll(); this.schemas.clear(); this.tablePKs.clear(); this.secondaryIndexes.clear(); @@ -6620,6 +7181,9 @@ class AriaEngine { const META_KEY = ns === 'main' ? '__aria_lsm_meta' : `__aria_lsm_meta_${ns}`; let seq = 0; let seqLoaded = false; + // v0.4.5: 页面化物理存储(OPFS 后端默认启用)— SSTable 存为 4KB 页面,BufferPool 缓存 + const usePages = this.isPageStorage(); + const pageStore = usePages ? new PageSSTableStore(this.fileManager, this.bufferPool) : null; const encodeText = (text) => { return new TextEncoder().encode(text).buffer; }; @@ -6636,46 +7200,47 @@ class AriaEngine { }; return { save: async (id, data) => { + if (pageStore) { + // 页面化:切页写入 BufferPool 并逐页落盘(save 语义 = 已持久化) + await pageStore.save(id, data); + return; + } let buf = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength); - // 压缩(若启用) + // 压缩(若启用)— 加密由 EncryptedBackend 在 backend 层透明处理(v0.4.5) if (this.config.compression) { const compressed = compressLZ4(new Uint8Array(buf)); buf = compressed.buffer.slice(compressed.byteOffset, compressed.byteOffset + compressed.byteLength); } - // 加密(若启用) - if (isCryptoEnabled()) { - const enc = await encryptPage(buf); - const header = new Uint8Array(12 + 4); // IV(12) + originalLen(4) - header.set(enc.iv, 0); - new DataView(header.buffer).setUint32(12, data.byteLength, false); - const combined = new Uint8Array(header.length + enc.data.byteLength); - combined.set(header, 0); - combined.set(new Uint8Array(enc.data), header.length); - buf = combined.buffer; - } await this.backend.write(`${filePrefix}${id}`, buf); }, load: async (id) => { + // 页面化读取:meta 有 pageIds → 页面拼接;无(旧数据)→ 整 value + if (pageStore) { + const metas = await readMetaList(); + const meta = metas.find((m) => m.id === id); + if (meta && meta.pageIds && meta.pageIds.length > 0) { + return pageStore.load(id, meta.pageIds, meta.totalSize); + } + } const raw = await this.backend.read(`${filePrefix}${id}`); if (!raw) return null; let buf = new Uint8Array(raw); - // 解密(若数据带加密头) - if (isCryptoEnabled() && buf.length > 16) { - const iv = buf.slice(0, 12); - const origLen = new DataView(buf.buffer, buf.byteOffset + 12, 4).getUint32(0, false); - const ciphertext = buf.slice(16).buffer; - const decrypted = await decryptPage(iv, ciphertext); - buf = new Uint8Array(decrypted, 0, origLen); - } - // 解压(若启用) + // 解压(若启用)— 解密由 EncryptedBackend 在 backend 层透明处理(v0.4.5) if (this.config.compression) { - const decompressed = decompressLZ4(buf, buf.length * 2); // 估计原始大小 - buf = decompressed; + // v0.4.5: 压缩流自带原始大小头,无需外部估算 + buf = decompressLZ4(buf); } return buf; }, delete: async (id) => { + if (pageStore) { + const metas = await readMetaList(); + const meta = metas.find((m) => m.id === id); + if (meta && meta.pageIds && meta.pageIds.length > 0) { + await pageStore.delete(id, meta.pageIds); + } + } await this.backend.delete(`${filePrefix}${id}`); }, allocateId: async () => { @@ -6690,12 +7255,15 @@ class AriaEngine { listMeta: readMetaList, saveMeta: async (meta) => { const list = await readMetaList(); + // v0.4.5: 页面化时把页面 ID 列表注入 meta(save 后、saveMeta 前由 LSM 顺序调用) + const pageIds = pageStore?.getPageIds(meta.id); + const metaWithPages = pageIds && pageIds.length > 0 ? { ...meta, pageIds } : meta; // 更新或添加 const idx = list.findIndex((m) => m.id === meta.id); if (idx >= 0) - list[idx] = meta; + list[idx] = metaWithPages; else - list.push(meta); + list.push(metaWithPages); await this.backend.write(META_KEY, encodeText(JSON.stringify(list))); }, deleteMeta: async (id) => { @@ -6705,6 +7273,14 @@ class AriaEngine { }, }; } + /** v0.4.5: 是否启用页面化物理存储(默认 OPFS 后端启用,显式配置可覆盖) */ + isPageStorage() { + if (this.config.pageStorage === true) + return true; + if (this.config.pageStorage === false) + return false; + return this.config.storageBackend === 'opfs'; + } // ======================================================================= // WAL 恢复 // ======================================================================= @@ -7039,37 +7615,6 @@ class AriaEngine { this.mvcc.gc(10); return { compactedLevels: 6, gcVersions: beforeGC }; } - /** - * 查询优化器:估算各索引成本,选择最优方案 - */ - estimateQueryCost(tableName, query) { - const schema = this.schemas.get(tableName); - if (!schema || !query.where) - return { strategy: 'full_scan', estimatedRows: 0 }; - const pkCol = this.tablePKs.get(tableName); - for (const [col, condition] of Object.entries(query.where)) { - if (col === '$and' || col === '$or' || col === '$not') - continue; - // PK 等值 → 最快,估计 1 行 - if (col === pkCol && (typeof condition !== 'object' || condition.$eq)) { - return { strategy: 'pk_lookup', estimatedRows: 1 }; - } - // 索引列等值 → 快 - const colDef = schema.columns[col]; - if (colDef?.index || colDef?.unique) { - if (typeof condition !== 'object' || condition.$eq) { - return { strategy: `index_eq:${col}`, estimatedRows: 1 }; - } - if (condition.$in && Array.isArray(condition.$in)) { - return { strategy: `index_in:${col}`, estimatedRows: condition.$in.length }; - } - if (condition.$gt || condition.$lt || condition.$gte || condition.$lte) { - return { strategy: `index_range:${col}`, estimatedRows: 100 }; - } - } - } - return { strategy: 'full_scan', estimatedRows: 1000 }; - } ensureOpen() { if (!this.opened) throw new DatabaseError('AriaEngine not opened', 'DB_NOT_OPEN'); @@ -7085,25 +7630,6 @@ class AriaEngine { throw new DatabaseError(`Table "${tableName}" does not exist`, 'TABLE_NOT_FOUND'); } } - /** Get the number of WAL records stored */ - async getWALCount() { - const raw = await this.backend.read('__wal_count'); - if (!raw) - return 0; - try { - const dec = new TextDecoder(); - return parseInt(dec.decode(raw), 10) || 0; - } - catch { - return 0; - } - } - /** Set the number of WAL records stored */ - async setWALCount(count) { - const enc = new TextEncoder(); - const buf = enc.encode(String(count)).buffer; - await this.backend.write('__wal_count', buf); - } } /** @@ -7427,20 +7953,24 @@ class SelectQueryBuilder { // UpdateQueryBuilder // --------------------------------------------------------------------------- class UpdateQueryBuilder { - constructor(engine, tableName, _updates, onWrite) { + constructor(engine, tableName, _updates, onWrite, onHooks) { this.engine = engine; this.tableName = tableName; this._updates = _updates; this._where = {}; this.onWrite = onWrite; + this.onHooks = onHooks; } where(condition) { this._where = { ...this._where, ...condition }; return this; } async execute() { - const count = await this.engine.update(this.tableName, { table: this.tableName, where: this._where }, this._updates); + const query = { table: this.tableName, where: this._where }; + await this.onHooks?.('beforeUpdate', [query, this._updates]); + const count = await this.engine.update(this.tableName, query, this._updates); this.onWrite?.(this.tableName); + await this.onHooks?.('afterUpdate', [query, this._updates, count]); return count; } toAST() { @@ -7451,19 +7981,23 @@ class UpdateQueryBuilder { // DeleteQueryBuilder // --------------------------------------------------------------------------- class DeleteQueryBuilder { - constructor(engine, tableName, onWrite) { + constructor(engine, tableName, onWrite, onHooks) { this.engine = engine; this.tableName = tableName; this._where = {}; this.onWrite = onWrite; + this.onHooks = onHooks; } where(condition) { this._where = { ...this._where, ...condition }; return this; } async execute() { - const count = await this.engine.delete(this.tableName, { table: this.tableName, where: this._where }); + const query = { table: this.tableName, where: this._where }; + await this.onHooks?.('beforeDelete', [query]); + const count = await this.engine.delete(this.tableName, query); this.onWrite?.(this.tableName); + await this.onHooks?.('afterDelete', [query, count]); return count; } toAST() { @@ -7479,12 +8013,13 @@ class DeleteQueryBuilder { // Table // --------------------------------------------------------------------------- class Table { - constructor(engine, tableName, executor, onWrite) { + constructor(engine, tableName, executor, onWrite, onHooks) { this.schema = null; this.engine = engine; this.name = tableName; this.executor = executor; this.onWrite = onWrite; + this.onHooks = onHooks; } // ---- Schema ---- async getSchema() { @@ -7498,13 +8033,18 @@ class Table { } // ---- 插入 ---- async insert(row) { + // beforeInsert 参数约定:rows[](单行时也是数组) + await this.onHooks?.('beforeInsert', [[row]]); const pks = await this.engine.insert(this.name, [row]); this.onWrite?.(this.name); + await this.onHooks?.('afterInsert', [[row], pks]); return pks[0]; } async insertMany(rows) { + await this.onHooks?.('beforeInsert', [rows]); const pks = await this.engine.insert(this.name, rows); this.onWrite?.(this.name); + await this.onHooks?.('afterInsert', [rows, pks]); return pks; } // ---- 查询 ---- @@ -7535,11 +8075,11 @@ class Table { } // ---- 更新 ---- update(updates) { - return new UpdateQueryBuilder(this.engine, this.name, updates, this.onWrite); + return new UpdateQueryBuilder(this.engine, this.name, updates, this.onWrite, this.onHooks); } // ---- 删除 ---- delete() { - return new DeleteQueryBuilder(this.engine, this.name, this.onWrite); + return new DeleteQueryBuilder(this.engine, this.name, this.onWrite, this.onHooks); } // ---- 聚合 ---- async count(where) { @@ -7684,6 +8224,14 @@ var TokenType; TokenType["THEN"] = "THEN"; TokenType["ELSE"] = "ELSE"; TokenType["END"] = "END"; + // v0.5.1: 维护语句(EXPLAIN / ANALYZE / REINDEX / VACUUM / SAVEPOINT) + TokenType["EXPLAIN"] = "EXPLAIN"; + TokenType["ANALYZE"] = "ANALYZE"; + TokenType["REINDEX"] = "REINDEX"; + TokenType["VACUUM"] = "VACUUM"; + TokenType["SAVEPOINT"] = "SAVEPOINT"; + TokenType["RELEASE"] = "RELEASE"; + TokenType["TO"] = "TO"; // 标识符 & 字面量 TokenType["IDENTIFIER"] = "IDENTIFIER"; TokenType["STRING"] = "STRING"; @@ -7778,6 +8326,14 @@ const KEYWORDS = { 'THEN': TokenType.THEN, 'ELSE': TokenType.ELSE, 'END': TokenType.END, + // v0.5.1 + 'EXPLAIN': TokenType.EXPLAIN, + 'ANALYZE': TokenType.ANALYZE, + 'REINDEX': TokenType.REINDEX, + 'VACUUM': TokenType.VACUUM, + 'SAVEPOINT': TokenType.SAVEPOINT, + 'RELEASE': TokenType.RELEASE, + 'TO': TokenType.TO, }; /** @@ -8062,6 +8618,19 @@ class Parser { return this.parseCommit(); case TokenType.ROLLBACK: return this.parseRollback(); + // v0.5.1: 维护语句入口 + case TokenType.EXPLAIN: + return this.parseExplain(); + case TokenType.ANALYZE: + return this.parseAnalyze(); + case TokenType.REINDEX: + return this.parseReindex(); + case TokenType.VACUUM: + return this.parseVacuum(); + case TokenType.SAVEPOINT: + return this.parseSavepoint(); + case TokenType.RELEASE: + return this.parseSavepoint(); default: throw this.error(`Unexpected token "${this.curToken.value}"`); } @@ -8086,6 +8655,53 @@ class Parser { } return statements; } + // ---- 维护语句(v0.5.1) ---- + /** EXPLAIN — 输出查询计划 */ + parseExplain() { + this.expect(TokenType.EXPLAIN); + if (this.curTokenIs(TokenType.EXPLAIN)) { + throw this.error('Nested EXPLAIN is not allowed'); + } + const query = this.parseStatement(); + return { type: 'EXPLAIN', query }; + } + /** ANALYZE [TABLE] name — 收集表统计信息 */ + parseAnalyze() { + this.expect(TokenType.ANALYZE); + if (this._isKeywordAsIdent() && this.curToken.value.toUpperCase() === 'TABLE') { + this.nextToken(); + } + return { type: 'ANALYZE', table: this.expectIdentifier('table name') }; + } + /** REINDEX [TABLE] name — 重建表二级索引 */ + parseReindex() { + this.expect(TokenType.REINDEX); + if (this._isKeywordAsIdent() && this.curToken.value.toUpperCase() === 'TABLE') { + this.nextToken(); + } + return { type: 'REINDEX', table: this.expectIdentifier('table name') }; + } + /** VACUUM — 压缩 LSM + 清理碎片 */ + parseVacuum() { + this.expect(TokenType.VACUUM); + return { type: 'VACUUM' }; + } + /** SAVEPOINT name | RELEASE [SAVEPOINT] name */ + parseSavepoint() { + let action; + if (this.curTokenIs(TokenType.RELEASE)) { + action = 'RELEASE'; + this.nextToken(); + } + else { + action = 'SAVE'; + this.expect(TokenType.SAVEPOINT); + } + // 可选 SAVEPOINT 关键字(RELEASE SAVEPOINT name) + if (this.curTokenIs(TokenType.SAVEPOINT)) + this.nextToken(); + return { type: 'SAVEPOINT', name: this.expectIdentifier('savepoint name'), action }; + } // ---- 事务语句 ---- parseBegin() { this.expect(TokenType.BEGIN); @@ -8102,10 +8718,22 @@ class Parser { } return { type: 'COMMIT' }; } + /** ROLLBACK [TRANSACTION] | ROLLBACK TO [SAVEPOINT] name(v0.5.1) */ parseRollback() { this.expect(TokenType.ROLLBACK); if (this._isKeywordAsIdent() && this.curToken.value.toUpperCase() === 'TRANSACTION') { this.nextToken(); + return { type: 'ROLLBACK' }; + } + // ROLLBACK TO [SAVEPOINT] name + if (this.curTokenIs(TokenType.TO) || + (this._isKeywordAsIdent() && this.curToken.value.toUpperCase() === 'TO')) { + this.nextToken(); + if (this.curTokenIs(TokenType.SAVEPOINT) || + (this._isKeywordAsIdent() && this.curToken.value.toUpperCase() === 'SAVEPOINT')) { + this.nextToken(); + } + return { type: 'SAVEPOINT', name: this.expectIdentifier('savepoint name'), action: 'ROLLBACK' }; } return { type: 'ROLLBACK' }; } @@ -9204,10 +9832,6 @@ class QueryExecutor { this.engine = engine; this.maxRowsPerQuery = maxRowsPerQuery; } - /** 设置查询结果行数上限 */ - setMaxRowsPerQuery(max) { - this.maxRowsPerQuery = max; - } async execute(stmt) { switch (stmt.type) { case 'SELECT': return this.executeSelect(stmt); @@ -9225,6 +9849,11 @@ class QueryExecutor { case 'BEGIN': return this.executeBegin(); case 'COMMIT': return this.executeCommit(); case 'ROLLBACK': return this.executeRollback(); + // v0.5.1: 维护语句 + case 'SAVEPOINT': return this.executeSavepoint(stmt); + case 'ANALYZE': return this.executeAnalyze(stmt); + case 'REINDEX': return this.executeReindex(stmt); + case 'VACUUM': return this.executeVacuum(); default: throw new DatabaseError('Unknown statement type', 'UNKNOWN_STATEMENT'); } } @@ -9279,7 +9908,6 @@ class QueryExecutor { } /** EXPLAIN: 输出查询计划 */ async executeExplain(stmt) { - const plan = compileStatement(stmt.query.type === 'SELECT' ? stmt.query : stmt.query); const startTime = Date.now(); let result = null; try { @@ -9288,15 +9916,21 @@ class QueryExecutor { catch { /* explain 即使执行失败也返回计划 */ } const elapsed = Date.now() - startTime; const rows = Array.isArray(result) ? result.length : 0; + // v0.5.1: 仅 SELECT/DELETE/UPDATE 有引擎查询计划;其他语句输出基本信息 + let plan = null; + try { + plan = compileStatement(stmt.query); + } + catch { /* 非查询语句无 QueryPlan */ } return { type: stmt.query.type, - table: plan.table, - columns: plan.columns, - where: plan.where || {}, - orderBy: plan.orderBy || [], - limit: plan.limit, - offset: plan.offset, - usingIndex: plan.table ? 'auto' : 'none', + table: plan?.table, + columns: plan?.columns, + where: plan?.where || {}, + orderBy: plan?.orderBy || [], + limit: plan?.limit, + offset: plan?.offset, + usingIndex: plan?.table ? 'auto' : 'none', estimatedRows: rows, actualTimeMs: elapsed, }; @@ -9867,6 +10501,59 @@ class QueryExecutor { async executeRollback() { return this.engine.rollbackTransaction(); } + // =================================================================== + // 维护语句(v0.5.1) + // =================================================================== + /** SAVEPOINT name / ROLLBACK TO SAVEPOINT name / RELEASE SAVEPOINT name */ + async executeSavepoint(stmt) { + const engine = this.engine; + if (stmt.action === 'SAVE') { + if (typeof engine.savepoint !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support SAVEPOINT`, 'NOT_SUPPORTED'); + } + return engine.savepoint(stmt.name); + } + if (stmt.action === 'ROLLBACK') { + if (typeof engine.rollbackToSavepoint !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support ROLLBACK TO SAVEPOINT`, 'NOT_SUPPORTED'); + } + return engine.rollbackToSavepoint(stmt.name); + } + if (typeof engine.releaseSavepoint !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support RELEASE SAVEPOINT`, 'NOT_SUPPORTED'); + } + return engine.releaseSavepoint(stmt.name); + } + /** ANALYZE TABLE name — 收集表统计信息 */ + async executeAnalyze(stmt) { + const engine = this.engine; + if (typeof engine.analyzeTable !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support ANALYZE`, 'NOT_SUPPORTED'); + } + const exists = await this.engine.hasTable(stmt.table); + if (!exists) + throw new DatabaseError(`Table "${stmt.table}" does not exist`, 'TABLE_NOT_FOUND'); + return engine.analyzeTable(stmt.table); + } + /** REINDEX TABLE name — 重建表二级索引 */ + async executeReindex(stmt) { + const engine = this.engine; + if (typeof engine.reindexTable !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support REINDEX`, 'NOT_SUPPORTED'); + } + const exists = await this.engine.hasTable(stmt.table); + if (!exists) + throw new DatabaseError(`Table "${stmt.table}" does not exist`, 'TABLE_NOT_FOUND'); + return engine.reindexTable(stmt.table); + } + /** VACUUM — 压缩 LSM + 清理碎片 */ + async executeVacuum() { + const engine = this.engine; + if (typeof engine.vacuum !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support VACUUM`, 'NOT_SUPPORTED'); + } + return engine.vacuum(); + } /** 列列表是否包含 CASE WHEN 表达式 */ hasCaseColumn(columns) { return columns.some((col) => /^\s*CASE\b/i.test(col)); @@ -10612,7 +11299,8 @@ class MetonaSqlark { let t = this.tableCache.get(name); if (!t) { // v0.3.2: 表操作写入后广播变更(多标签页同步) - t = new Table(this.engine, name, this.executor, (tableName) => this.broadcastChange(tableName)); + // v0.5.1: CRUD 生命周期钩子真实接线(beforeInsert/afterInsert/...) + t = new Table(this.engine, name, this.executor, (tableName) => this.broadcastChange(tableName), (hook, args) => this.pluginManager.trigger(hook, ...args)); this.tableCache.set(name, t); } return t; @@ -10647,7 +11335,10 @@ class MetonaSqlark { // v0.3.0: 支持分号分隔的多语句,逐条顺序执行,返回最后一条的结果 const statements = parseAll(sql); for (const stmt of statements) { + // v0.5.1: SQL 写语句触发 CRUD 生命周期钩子(与 Table API 路径一致) + await this.triggerStatementHooks(stmt, 'before'); result = await this.executor.execute(stmt); + await this.triggerStatementHooks(stmt, 'after', result); // v0.3.2: 写语句广播表变更(多标签页同步) const table = this.writeStatementTable(stmt); if (table) @@ -10787,6 +11478,17 @@ class MetonaSqlark { } return result; } + /** + * v0.5.1: 在线备份 — 导出全库一致性快照。 + * Aria 引擎走引擎级 backup()(MVCC 一致性视图);其余引擎回退 exportAll()。 + */ + async backup() { + this.ensureReady(); + if (typeof this.engine.backup === 'function') { + return this.engine.backup(); + } + return this.exportAll(); + } /** 订阅表变更 */ subscribe(tableName, callback) { const key = `change:${tableName}`; @@ -10830,6 +11532,46 @@ class MetonaSqlark { return null; } } + /** + * v0.5.1: SQL 写语句触发 CRUD 生命周期钩子。 + * INSERT/UPDATE/DELETE 分别触发 beforeInsert/afterInsert、beforeUpdate/afterUpdate、 + * beforeDelete/afterDelete(参数与 Table API 路径一致)。 + */ + async triggerStatementHooks(stmt, phase, result) { + switch (stmt.type) { + case 'INSERT': { + const rows = (stmt.values ?? []).map((vals) => { + const row = {}; + const cols = stmt.columns ?? []; + for (let i = 0; i < vals.length; i++) { + row[cols[i] ?? String(i)] = vals[i]; + } + return row; + }); + if (phase === 'before') + await this.pluginManager.trigger('beforeInsert', rows); + else + await this.pluginManager.trigger('afterInsert', rows, result); + break; + } + case 'UPDATE': { + const query = { table: stmt.table, where: stmt.where }; + if (phase === 'before') + await this.pluginManager.trigger('beforeUpdate', query, stmt.sets); + else + await this.pluginManager.trigger('afterUpdate', query, stmt.sets, result); + break; + } + case 'DELETE': { + const query = { table: stmt.from, where: stmt.where }; + if (phase === 'before') + await this.pluginManager.trigger('beforeDelete', query); + else + await this.pluginManager.trigger('afterDelete', query, result); + break; + } + } + } /** 注册迁移 */ addMigration(version, up) { this.migrations.set(version, up); @@ -10919,7 +11661,11 @@ class MetonaSqlark { case 'disk': return diskEngine === 'opfs' ? new OPFSEngine() : new IndexedDBEngine(); case 'aria': - return new AriaEngine({ storageBackend: diskEngine === 'opfs' ? 'opfs' : 'indexeddb' }); + // v0.4.5: 透传 AriaEngine 专属配置(walSyncMode/checkpointInterval/encryption/pageStorage 等) + return new AriaEngine({ + storageBackend: diskEngine === 'opfs' ? 'opfs' : 'indexeddb', + ...(this.config.aria ?? {}), + }); case 'hybrid': return new HybridEngine(diskEngine); default: @@ -11046,12 +11792,6 @@ class ConnectionManager { getActiveConnections() { return Array.from(this.connections.keys()); } - /** - * 获取连接的引用计数 - */ - getRefCount(dbName) { - return this.refCount.get(dbName) ?? 0; - } } // --------------------------------------------------------------------------- // 全局单例 diff --git a/dist/metona-sqlark.esm.js.map b/dist/metona-sqlark.esm.js.map index c505c9b..8e87114 100644 --- a/dist/metona-sqlark.esm.js.map +++ b/dist/metona-sqlark.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"metona-sqlark.esm.js","sources":["../src/constants.ts","../src/query/where-matcher.ts","../src/engine/memory.ts","../src/engine/indexeddb.ts","../src/engine/opfs.ts","../src/table/schema.ts","../src/engine/aria/types.ts","../src/engine/aria/index/memtable.ts","../src/engine/aria/index/bloom.ts","../src/engine/aria/index/sstable_builder.ts","../src/engine/aria/index/sstable.ts","../src/engine/aria/index/merge_iterator.ts","../src/engine/aria/index/lsm.ts","../src/engine/aria/wal/log.ts","../src/engine/aria/wal/checkpoint.ts","../src/engine/aria/store/backend.ts","../src/engine/aria/store/opfs_backend.ts","../src/engine/aria/page/header.ts","../src/engine/aria/store/file_manager.ts","../src/engine/aria/transaction/mvcc.ts","../src/engine/aria/page/format.ts","../src/engine/aria/buffer/eviction.ts","../src/engine/aria/buffer/pool.ts","../src/engine/aria/compression/lz4.ts","../src/engine/aria/crypto.ts","../src/engine/aria/index.ts","../src/hybrid/index.ts","../src/query/builder.ts","../src/table/table.ts","../src/query/compiler.ts","../src/sql/tokens.ts","../src/sql/lexer.ts","../src/sql/parser.ts","../src/query/executor.ts","../src/transaction/index.ts","../src/plugin/index.ts","../src/core.ts","../src/connection-manager.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"metona-sqlark.esm.js","sources":["../src/constants.ts","../src/query/where-matcher.ts","../src/engine/memory.ts","../src/engine/indexeddb.ts","../src/engine/opfs.ts","../src/table/schema.ts","../src/engine/aria/types.ts","../src/engine/aria/index/memtable.ts","../src/engine/aria/index/bloom.ts","../src/engine/aria/crc32.ts","../src/engine/aria/index/sstable_builder.ts","../src/engine/aria/index/sstable.ts","../src/engine/aria/index/merge_iterator.ts","../src/engine/aria/index/lsm.ts","../src/engine/aria/wal/log.ts","../src/engine/aria/wal/segmented_store.ts","../src/engine/aria/locks.ts","../src/engine/aria/wal/checkpoint.ts","../src/engine/aria/store/backend.ts","../src/engine/aria/store/opfs_backend.ts","../src/engine/aria/crypto.ts","../src/engine/aria/store/encrypted_backend.ts","../src/engine/aria/store/page_sstable_store.ts","../src/engine/aria/store/file_manager.ts","../src/engine/aria/transaction/mvcc.ts","../src/engine/aria/page/header.ts","../src/engine/aria/page/format.ts","../src/engine/aria/buffer/eviction.ts","../src/engine/aria/buffer/pool.ts","../src/engine/aria/compression/lz4.ts","../src/engine/aria/index.ts","../src/hybrid/index.ts","../src/query/builder.ts","../src/table/table.ts","../src/query/compiler.ts","../src/sql/tokens.ts","../src/sql/lexer.ts","../src/sql/parser.ts","../src/query/executor.ts","../src/transaction/index.ts","../src/plugin/index.ts","../src/core.ts","../src/connection-manager.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["IV_LENGTH"],"mappings":"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"} \ No newline at end of file diff --git a/dist/metona-sqlark.js b/dist/metona-sqlark.js index 861a038..8a7ead7 100644 --- a/dist/metona-sqlark.js +++ b/dist/metona-sqlark.js @@ -8,7 +8,6 @@ * metona-sqlark Constants — 类型定义 / 默认配置 / 枚举 * @module constants */ - /** 所有存储模式 */ /** 所有字段类型 */ const FIELD_TYPES = ['string', 'number', 'boolean', 'date', 'json']; /** 数据库默认配置 */ @@ -20,6 +19,7 @@ maxRowsPerQuery: 0, // 0 = 不限制 debug: false, multiTabSync: false, + aria: undefined, }); // --------------------------------------------------------------------------- // 错误类型 @@ -36,7 +36,7 @@ // --------------------------------------------------------------------------- // 版本 // --------------------------------------------------------------------------- - const VERSION = '0.4.4'; + const VERSION = '0.5.1'; /** * metona-sqlark Shared WHERE Matcher — 统一的条件匹配逻辑 @@ -1933,17 +1933,6 @@ } } } - /** 从 OPFS 加载表数据到内存缓存 */ - async loadTableIntoMemory(tableName, schema) { - await this.memoryCache.createTable(schema); - const rows = await this.readTableData(tableName); - if (rows.length > 0) { - // 直接用 Map 设置绕过 insert 校验 - for (const row of rows) { - await this.memoryCache.insert(tableName, [row]); - } - } - } } /** @@ -2056,7 +2045,7 @@ // ============================================================================= var PageType; (function (PageType) { - /** 数据页面:存储行数据 */ + /** 数据页面:存储 SSTable 字节切片 */ PageType[PageType["DATA"] = 1] = "DATA"; /** 索引页面:存储索引节点 */ PageType[PageType["INDEX"] = 2] = "INDEX"; @@ -2065,16 +2054,9 @@ /** 元数据页面:存储表/库元信息 */ PageType[PageType["META"] = 4] = "META"; })(PageType || (PageType = {})); - /** 列类型(内部二进制编码用) */ - var ColumnEncoding; - (function (ColumnEncoding) { - ColumnEncoding[ColumnEncoding["STRING"] = 1] = "STRING"; - ColumnEncoding[ColumnEncoding["NUMBER"] = 2] = "NUMBER"; - ColumnEncoding[ColumnEncoding["BOOLEAN"] = 3] = "BOOLEAN"; - ColumnEncoding[ColumnEncoding["DATE"] = 4] = "DATE"; - ColumnEncoding[ColumnEncoding["JSON"] = 5] = "JSON"; - ColumnEncoding[ColumnEncoding["NULL"] = 6] = "NULL"; - })(ColumnEncoding || (ColumnEncoding = {})); + // ============================================================================= + // 列类型(内部二进制编码用) + // ============================================================================= // ============================================================================= // LSM-Tree // ============================================================================= @@ -2104,12 +2086,6 @@ // ============================================================================= // MVCC // ============================================================================= - /** 事务隔离级别 */ - var IsolationLevel; - (function (IsolationLevel) { - IsolationLevel[IsolationLevel["READ_COMMITTED"] = 1] = "READ_COMMITTED"; - IsolationLevel[IsolationLevel["SNAPSHOT"] = 2] = "SNAPSHOT"; - })(IsolationLevel || (IsolationLevel = {})); /** 事务状态 */ var TransactionState; (function (TransactionState) { @@ -2135,6 +2111,8 @@ storageBackend: 'indexeddb', walSizeThreshold: 16 * 1024 * 1024, // 16MB maxMemoryMB: 64, + encryption: undefined, + pageStorage: undefined, }; /** @@ -2576,10 +2554,6 @@ this.tree.clear(); this._estimatedSize = 0; } - /** 检查 key 是否存在 */ - contains(key) { - return this.tree.find(key) !== null; - } // ----------------------------------------------------------------------- // 内部 // ----------------------------------------------------------------------- @@ -2661,14 +2635,6 @@ serialize() { return this.bits; } - /** bit 数组大小 */ - getBitSize() { - return this.bits.byteLength * 8; - } - /** 已插入 key 数量 */ - getInsertedCount() { - return this._inserted; - } /** hash 函数数量 */ getHashCount() { return this.numHashes; @@ -2709,6 +2675,55 @@ } } + /** + * AriaEngine CRC32 — 标准 CRC-32(IEEE 802.3,多项式 0xEDB88320) + * @module engine/aria/crc32 + * + * 查表法实现。 + * 分段计算约定: + * crc32(head + tail) === crc32Finalize(crc32Update(crc32Update(0xFFFFFFFF, head), tail)) + * === crc32(tail, crc32(head)) + * 用于 SSTable 文件校验和与 WAL 记录完整性校验。 + */ + /** CRC-32 查找表(0xEDB88320 反射多项式) */ + const CRC32_TABLE = (() => { + const table = new Uint32Array(256); + for (let i = 0; i < 256; i++) { + let c = i; + for (let k = 0; k < 8; k++) { + c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1; + } + table[i] = c >>> 0; + } + return table; + })(); + /** CRC-32 初始累加器状态 */ + const CRC32_INIT = 0xffffffff; + /** + * 更新内部 CRC 累加状态(供分段计算使用,接收中间状态返回中间状态)。 + */ + function crc32Update(state, data) { + let crc = state >>> 0; + for (let i = 0; i < data.byteLength; i++) { + crc = (CRC32_TABLE[(crc ^ data[i]) & 0xff] ^ (crc >>> 8)) >>> 0; + } + return crc >>> 0; + } + /** 将中间状态转换为最终校验和(终止计算) */ + function crc32Finalize(state) { + return (state ^ CRC32_INIT) >>> 0; + } + /** + * 计算标准 CRC-32 校验和。 + * @param data 输入字节 + * @param seed 前序片段计算的最终校验和(首段传 0 或不传) + * @returns 32 位无符号校验和 + */ + function crc32(data, seed = 0) { + const state = crc32Update(seed ^ CRC32_INIT, data); + return crc32Finalize(state); + } + /** * AriaEngine SSTable Builder — 构建有序字符串表 * @module engine/aria/index/sstable_builder @@ -2818,7 +2833,15 @@ view.setUint32(footerOffset + 16, bloomFilter.getHashCount(), false); view.setUint32(footerOffset + 20, this.entries.length, false); view.setUint32(footerOffset + 24, SSTABLE_MAGIC_V2, false); - view.setUint32(footerOffset + 28, 0, false); // checksum (simplified: 0) + // checksum 字段先写 0,全部字节就绪后计算整文件 CRC32 再回填 + view.setUint32(footerOffset + 28, 0, false); + // v0.4.5: 真实 CRC-32 校验和 — 覆盖除自身(最后 4 字节)外的全部内容。 + // checksum 永远非 0(计算结果为 0 时用 1 代替),读取端以 0 识别旧版无校验文件 + const all = new Uint8Array(buf); + let checksum = crc32(all.subarray(0, all.byteLength - 4)); + if (checksum === 0) + checksum = 1; + view.setUint32(footerOffset + 28, checksum, false); return { sstableData: new Uint8Array(buf), indexEntries, @@ -2922,11 +2945,25 @@ this.bloomFilter = null; /** 格式版本:1 = u16 长度字段(旧),2 = u32 长度字段(v0.4.4) */ this.format = 2; + /** footer 中存储的 checksum(0 = 旧版无校验文件) */ + this.storedChecksum = 0; this.data = data; this.view = new DataView(data.buffer, data.byteOffset, data.byteLength); this.meta = meta; this.parseFooter(); } + /** + * 校验整文件 CRC-32(覆盖除 checksum 字段外的全部字节)。 + * checksum === 0 表示旧版文件(v1 / v0.4.4 及更早的 v2),跳过校验返回 true(兼容)。 + */ + verifyChecksum() { + if (this.storedChecksum === 0) + return true; + if (this.data.byteLength < 4) + return false; + const computed = crc32(this.data.subarray(0, this.data.byteLength - 4)); + return computed === this.storedChecksum; + } /** 长度字段宽度:v2 = 4 字节 u32,v1 = 2 字节 u16 */ lenFieldSize() { return this.format === 2 ? 4 : 2; @@ -3062,14 +3099,6 @@ } } } - /** 获取元数据 */ - getMeta() { - return this.meta; - } - /** 获取索引条目数 */ - getIndexBlockCount() { - return this.indexEntries.length; - } // ----------------------------------------------------------------------- // 内部 // ----------------------------------------------------------------------- @@ -3095,6 +3124,7 @@ const bloomSize = this.view.getUint32(footerOffset + 12, false); const bloomHashCount = this.view.getUint32(footerOffset + 16, false); this.entryCount = this.view.getUint32(footerOffset + 20, false); + this.storedChecksum = this.view.getUint32(footerOffset + 28, false); // v0.4.1-fix: 完整性校验 — 索引块必须完全落在文件内,否则视为残缺文件跳过 if (indexOffset + 4 > this.data.byteLength || indexOffset + indexSize > this.data.byteLength) { return; // 残缺文件:无索引块可读,get/rangeScan 均返回空 @@ -3572,7 +3602,8 @@ } } for (const id of toLoad) { - await this.preloadSSTable(id); + const meta = this.findMetaById(id); + await this.preloadSSTable(id, meta); } } /** 预加载包含指定 key 的所有 SSTable 到缓存 */ @@ -3596,9 +3627,20 @@ } } for (const id of toLoad) { - await this.preloadSSTable(id); + const meta = this.findMetaById(id); + await this.preloadSSTable(id, meta); } } + /** 按 id 查找 SSTable 元数据(prefetch 预加载用) */ + findMetaById(id) { + for (let level = 0; level < MAX_LSM_LEVELS; level++) { + for (const meta of this.levels[level]) { + if (meta.id === id) + return meta; + } + } + return undefined; + } get(key) { // 1. 活跃 MemTable let result = this.memtable.get(key); @@ -3722,6 +3764,10 @@ let reader; try { reader = new SSTableReader(data, meta); + if (!reader.verifyChecksum()) { + await this.dropInvalidSSTable(meta); + continue; + } } catch { await this.dropInvalidSSTable(meta); @@ -3821,9 +3867,6 @@ levelCounts: this.levels.map((l) => l.length), }; } - isInitialized() { - return this.initialized; - } // ======================================================================= // 内部 // ======================================================================= @@ -3852,6 +3895,7 @@ * v0.4.2-fix: 校验单个 SSTable 的完整性。 * - 文件不存在 → 清理 meta,返回 false * - 文件过小/魔数错误/索引越界(残缺写入产物)→ 清理 meta,返回 false + * - v0.4.5: 整文件 CRC-32 校验失败(数据腐坏)→ 清理 meta,返回 false * 校验通过的数据不缓存(保持内存预算),读路径按需预加载。 */ async validateSSTable(meta) { @@ -3866,7 +3910,11 @@ return false; } try { - new SSTableReader(data, meta); + const reader = new SSTableReader(data, meta); + if (!reader.verifyChecksum()) { + this.dropInvalidSSTable(meta); + return false; + } } catch { this.dropInvalidSSTable(meta); @@ -3919,13 +3967,27 @@ } } /** 预加载 SSTable 到缓存(受 cacheLimitBytes 上限约束) */ - async preloadSSTable(id) { + async preloadSSTable(id, meta) { if (this.sstableCache.has(id)) return; const data = await this.sstableStore.load(id); - if (data) { - this.cacheSSTable(id, data); + if (!data) + return; + // v0.4.5: 运行期加载同样校验整文件 CRC-32,损坏文件不缓存并清理(自愈) + if (meta) { + try { + const reader = new SSTableReader(data, meta); + if (!reader.verifyChecksum()) { + await this.dropInvalidSSTable(meta); + return; + } + } + catch { + await this.dropInvalidSSTable(meta); + return; + } } + this.cacheSSTable(id, data); } /** 写入缓存。注意:不在加载时立即驱逐,避免破坏正在进行的同步扫描 */ cacheSSTable(id, data) { @@ -3950,14 +4012,6 @@ this.sstableCache.delete(eldestId); } } - /** 获取当前 SSTable 缓存大小(字节) */ - getCacheSize() { - return this.cacheSize; - } - /** 获取 SSTable 缓存容量上限(字节) */ - getCacheLimit() { - return this.cacheLimitBytes; - } } /** @@ -4106,12 +4160,6 @@ // ======================================================================= // 统计 // ======================================================================= - isEnabled() { - return this.enabled; - } - getLSN() { - return this.lsn; - } getBufferedCount() { return this.buffer.length; } @@ -4122,6 +4170,14 @@ // ----------------------------------------------------------------------- // 编解码 // ----------------------------------------------------------------------- + /** 旧版弱滚动校验(v0.4.4 及更早写入的 WAL 记录使用,双算法探测兼容) */ + legacyChecksum(data) { + let crc = 0; + for (let i = 0; i < data.length; i++) { + crc = ((crc << 5) - crc + data[i]) | 0; + } + return crc >>> 0; + } encodeRecord(record) { const encoder = new TextEncoder(); const tableBytes = encoder.encode(record.tableName); @@ -4156,13 +4212,10 @@ offset += 4; new Uint8Array(buf).set(jsonBytes, offset); offset += jsonBytes.length; - // 简单 CRC - let crc = 0; + // v0.4.5: 标准 CRC-32 校验(此前为弱滚动校验,误检率更高) const u8 = new Uint8Array(buf, 0, offset); - for (let i = 0; i < u8.length; i++) { - crc = ((crc << 5) - crc + u8[i]) | 0; - } - view.setUint32(offset, crc >>> 0, false); + const crc = crc32(u8); + view.setUint32(offset, crc, false); return new Uint8Array(buf); } decodeAllRecords(data) { @@ -4203,15 +4256,13 @@ catch { /* ok */ } } offset += jsonLen; - // 验证 CRC(跨记录数据计算,不含 CRC 自身) + // 验证 CRC:先标准 CRC-32,失败再尝试旧版弱滚动校验(兼容旧库 WAL 记录) const storedCrc = view.getUint32(offset, false); offset += 4; const recordBytes = data.slice(recordStart, offset - 4); - let computedCrc = 0; - for (let i = 0; i < recordBytes.length; i++) { - computedCrc = ((computedCrc << 5) - computedCrc + recordBytes[i]) | 0; - } - if ((computedCrc >>> 0) !== storedCrc) { + const computedNew = crc32(recordBytes); + const computedLegacy = this.legacyChecksum(recordBytes); + if ((computedNew >>> 0) !== storedCrc && (computedLegacy >>> 0) !== storedCrc) { // CRC 不匹配,跳过此损坏记录 // eslint-disable-next-line no-console console.warn(`[AriaEngine WAL] CRC mismatch at record LSN=${lsn}, skipping`); @@ -4235,6 +4286,224 @@ } } + /** + * AriaEngine Segmented WAL Store — 分片式 WAL 持久化存储 + * @module engine/aria/wal/segmented_store + * + * v0.4.5: 取代"每条记录一个 key"的旧结构: + * - 分片文件 `__wal_%06d.bin`,达到阈值(默认 4MB)切新分片 → 文件数量可控 + * - append 追加写当前分片(后端支持真追加则 O(chunk),否则回退 read+write) + * - WAL 序号(LSN)内嵌于记录字节流,无需独立 count 键 → append 单文件原子写 + * - readAll 检测分片序号空洞:序号不连续 → 丢弃空洞之后的分片(保守截断, + * 空洞仅可能来自 truncate 部分完成——此时数据已落盘,丢弃无害) + * - 兼容旧格式 `__wal_N`(每条记录一个键)+ `__wal_count`:读取时迁移重放, + * checkpoint 时一并清空 + */ + /** 分片文件名:__wal_%06d.bin */ + const WAL_SEGMENT_PREFIX = '__wal_'; + const SEGMENT_REGEX = /^__wal_(\d{6})\.bin$/; + const LEGACY_RECORD_REGEX = /^__wal_(\d+)$/; + const LEGACY_COUNT_KEY = '__wal_count'; + /** 默认分片阈值 */ + const DEFAULT_WAL_SEGMENT_SIZE = 4 * 1024 * 1024; + // --------------------------------------------------------------------------- + // SegmentedWALStore + // --------------------------------------------------------------------------- + class SegmentedWALStore { + constructor(backend, segmentSize = DEFAULT_WAL_SEGMENT_SIZE) { + this.backend = backend; + /** 当前分片序号(append 定位) */ + this.currentSegment = 0; + /** 当前分片字节数(内存跟踪,append 切分片判断) */ + this.currentSize = 0; + this.segmentSize = segmentSize; + } + /** 分片 key 生成 */ + segmentKey(seq) { + return `${WAL_SEGMENT_PREFIX}${String(seq).padStart(6, '0')}.bin`; + } + async append(data) { + if (data.byteLength === 0) + return; + if (this.currentSize + data.byteLength > this.segmentSize) { + // 当前分片放不下 → 切新分片 + this.currentSegment++; + this.currentSize = 0; + } + const key = this.segmentKey(this.currentSegment); + const copy = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength); + if (typeof this.backend.append === 'function') { + await this.backend.append(key, copy); + } + else { + // 回退:读旧 + 拼接 + 写(单文件原子写) + const existing = await this.backend.read(key); + if (existing) { + const combined = new ArrayBuffer(existing.byteLength + copy.byteLength); + new Uint8Array(combined).set(new Uint8Array(existing), 0); + new Uint8Array(combined).set(new Uint8Array(copy), existing.byteLength); + await this.backend.write(key, combined); + } + else { + await this.backend.write(key, copy); + } + } + this.currentSize += data.byteLength; + } + async readAll() { + const keys = await this.backend.listKeys(); + // ---- 新格式分片 ---- + const segments = keys + .filter((k) => SEGMENT_REGEX.test(k)) + .map((k) => ({ seq: Number(k.match(SEGMENT_REGEX)[1]), key: k })) + .sort((a, b) => a.seq - b.seq); + // 空洞检测:分片序号必须从 0 严格连续,空洞后的分片整体丢弃 + let keepCount = 0; + for (let i = 0; i < segments.length; i++) { + if (segments[i].seq !== i) + break; + keepCount = i + 1; + } + const validSegments = segments.slice(0, keepCount); + // ---- 旧格式兼容:__wal_N 单记录键(迁移前数据) ---- + const legacyKeys = keys + .filter((k) => LEGACY_RECORD_REGEX.test(k)) + .map((k) => ({ seq: Number(k.match(LEGACY_RECORD_REGEX)[1]), key: k })) + .sort((a, b) => a.seq - b.seq); + const parts = []; + // 旧格式在前(它们是最早的记录) + for (const { key } of legacyKeys) { + const raw = await this.backend.read(key); + if (raw) + parts.push(new Uint8Array(raw)); + } + // 新格式分片在后 + for (const { key } of validSegments) { + const raw = await this.backend.read(key); + if (raw) + parts.push(new Uint8Array(raw)); + } + // 同步当前分片状态(追加定位) + if (validSegments.length > 0) { + this.currentSegment = validSegments[validSegments.length - 1].seq; + const lastRaw = await this.backend.read(validSegments[validSegments.length - 1].key); + this.currentSize = lastRaw ? lastRaw.byteLength : 0; + // 旧格式键存在时(迁移中),下一条记录另起分片,避免与旧键序号冲突 + if (legacyKeys.length > 0) { + this.currentSegment++; + this.currentSize = 0; + } + } + else if (legacyKeys.length > 0) { + // 仅有旧格式:迁移中,新写入从分片 0 开始(checkpoint 会清空旧键) + this.currentSegment = 0; + this.currentSize = 0; + } + const total = parts.reduce((s, c) => s + c.byteLength, 0); + const combined = new Uint8Array(total); + let off = 0; + for (const c of parts) { + combined.set(c, off); + off += c.byteLength; + } + return combined; + } + async truncate() { + const keys = await this.backend.listKeys(); + const walKeys = keys.filter((k) => k.startsWith(WAL_SEGMENT_PREFIX) || k === LEGACY_COUNT_KEY); + if (walKeys.length > 0) { + await this.backend.deleteMany(walKeys); + } + this.currentSegment = 0; + this.currentSize = 0; + } + async exists() { + const keys = await this.backend.listKeys(); + return keys.some((k) => k.startsWith(WAL_SEGMENT_PREFIX) || k === LEGACY_COUNT_KEY); + } + } + + /** + * AriaEngine Database Lock — 多标签页独占锁(Web Locks API) + * @module engine/aria/locks + * + * v0.4.5: OPFS 等无事务后端缺乏多标签页并发协调,多个标签页同时打开同一库 + * 会导致写竞态与数据损坏。用 Web Locks API(Chrome 69+ / Firefox 96+ / Safari 15.4+) + * 获取库级排他锁: + * - ifAvailable 模式:锁被其他标签页持有 → 立即抛 ARIA_LOCKED(不排队挂起) + * - 持锁期间回调挂起,close() 时释放 + * - 浏览器不支持 navigator.locks → 返回 false(如实降级:无并发保护,文档注明) + */ + /** Web Locks 锁名(库级排他) */ + function lockName(dbName) { + return `metona-sqlark:${dbName}`; + } + class DatabaseLock { + constructor() { + this.acquired = false; + this.supported = false; + this.releaseResolve = null; + this.releasePromise = null; + } + /** + * 尝试获取独占锁。 + * @returns true = 已持锁;false = 环境不支持 Web Locks(无并发保护,调用方可警告) + * @throws ARIA_LOCKED 锁被其他标签页持有 + */ + async acquire(dbName) { + const nav = globalThis.navigator; + const lockManager = nav?.locks; + if (!lockManager || typeof lockManager.request !== 'function') { + this.supported = false; + return false; + } + this.supported = true; + await new Promise((resolve, reject) => { + // 注意:必须直接调用(不能解构 request —— LockManager 方法依赖 this 绑定) + const request = lockManager.request.bind(lockManager); + request(lockName(dbName), { ifAvailable: true, mode: 'exclusive' }, async (lock) => { + if (!lock) { + reject(new DatabaseError(`Database "${dbName}" is already open in another tab (locked)`, 'ARIA_LOCKED')); + return; + } + this.acquired = true; + const releasePromise = new Promise((res) => { this.releaseResolve = res; }); + this.releasePromise = releasePromise; + // 锁已获取:acquire 返回(open 流程继续) + resolve(); + // 回调挂起:保持锁直到 release() 触发 + await releasePromise; + }); + }); + return true; + } + /** 释放锁(等待回调真正结束,保证锁已归还) */ + async release() { + if (!this.acquired) + return; + if (this.releaseResolve) { + const res = this.releaseResolve; + const p = this.releasePromise; + this.releaseResolve = null; + this.releasePromise = null; + res(); + try { + await p; + } + catch { /* 释放过程异常不阻塞 */ } + } + this.acquired = false; + } + /** 是否已持锁 */ + isAcquired() { + return this.acquired; + } + /** 环境是否支持 Web Locks */ + isSupported() { + return this.supported; + } + } + /** * AriaEngine Checkpoint — 检查点机制 * @module engine/aria/wal/checkpoint @@ -4277,15 +4546,6 @@ await this.wal.checkpoint(); this.opCount = 0; } - async forceCheckpoint() { - await this.checkpoint(); - } - setInterval(ops) { - this.interval = ops; - } - getOpCount() { - return this.opCount; - } } /** @@ -4467,6 +4727,8 @@ } } + /** 崩溃残留临时文件后缀(createWritable 底层实现可能留下) */ + const STALE_SUFFIXES = ['.crswap', '.tmp']; class OPFSBackend { constructor() { this.root = null; @@ -4478,14 +4740,42 @@ this.dbName = name; this.root = await navigator.storage.getDirectory(); this.dbDir = await this.root.getDirectoryHandle(name, { create: true }); + // v0.4.5: 清理崩溃残留临时文件(不阻塞打开) + await this.cleanupStaleFiles(); } async close() { + // v0.4.5-fix: 等待所有挂起写完成(否则 close 后挂起写被静默丢弃/读旧数据) + try { + await this.writeQueue; + } + catch { /* 写失败已返回给调用方 */ } this.dbDir = null; this.root = null; } isOpen() { return this.dbDir !== null; } + /** 清理崩溃残留的临时文件(open 时自动调用,repair 也可调用) */ + async cleanupStaleFiles() { + if (!this.dbDir) + return; + try { + const dir = this.dbDir; + const stale = []; + for await (const [name] of dir.entries()) { + if (STALE_SUFFIXES.some((s) => name.endsWith(s))) { + stale.push(name); + } + } + for (const name of stale) { + try { + await this.dbDir.removeEntry(name); + } + catch { /* ignore */ } + } + } + catch { /* 清理失败不阻塞 */ } + } async read(key) { if (!this.dbDir) return null; @@ -4498,22 +4788,46 @@ return null; } } + /** + * 单文件原子写:createWritable 为 copy-on-write,close 后原子替换; + * 写入期间崩溃 → 旧文件保持(原子性由浏览器 OPFS 实现保证)。 + */ async write(key, data) { if (!this.dbDir) return; - this.writeQueue = this.writeQueue.then(async () => { + const run = this.writeQueue.then(async () => { const fh = await this.dbDir.getFileHandle(key, { create: true }); const writable = await fh.createWritable(); await writable.write(data); await writable.close(); }); - return this.writeQueue; + // v0.4.5-fix: 单次任务失败不中断队列链(错误仍返回给本次调用方) + this.writeQueue = run.then(() => undefined, () => undefined); + return run; + } + /** + * v0.4.5: 真追加写 — createWritable(keepExistingData) + seek 到文件末尾。 + * 单文件 COW 原子(close 前崩溃旧文件保持),无需读旧内容即实现 O(chunk) 追加 + * (WAL 分片高频写入用)。 + */ + async append(key, data) { + if (!this.dbDir) + return; + const run = this.writeQueue.then(async () => { + const fh = await this.dbDir.getFileHandle(key, { create: true }); + const existing = await fh.getFile(); + const writable = await fh.createWritable({ keepExistingData: true }); + await writable.write({ type: 'write', position: existing.size, data }); + await writable.close(); + }); + this.writeQueue = run.then(() => undefined, () => undefined); + return run; } /** v0.4.2-fix: 批量写入 — 串行队列内逐个落盘(OPFS 无跨文件事务,顺序保证一致) */ async writeMany(entries) { if (!this.dbDir) return; - this.writeQueue = this.writeQueue.then(async () => { + const run = this.writeQueue.then(async () => { for (const [key, data] of Object.entries(entries)) { const fh = await this.dbDir.getFileHandle(key, { create: true }); const writable = await fh.createWritable(); @@ -4521,24 +4835,26 @@ await writable.close(); } }); - return this.writeQueue; + this.writeQueue = run.then(() => undefined, () => undefined); + return run; } async delete(key) { if (!this.dbDir) return; - this.writeQueue = this.writeQueue.then(async () => { + const run = this.writeQueue.then(async () => { try { await this.dbDir.removeEntry(key); } catch { /* ignore */ } }); - return this.writeQueue; + this.writeQueue = run.then(() => undefined, () => undefined); + return run; } /** v0.4.2-fix: 批量删除 — 串行队列内逐个删除 */ async deleteMany(keys) { if (!this.dbDir) return; - this.writeQueue = this.writeQueue.then(async () => { + const run = this.writeQueue.then(async () => { for (const key of keys) { try { await this.dbDir.removeEntry(key); @@ -4546,7 +4862,8 @@ catch { /* ignore */ } } }); - return this.writeQueue; + this.writeQueue = run.then(() => undefined, () => undefined); + return run; } async listKeys() { if (!this.dbDir) @@ -4584,21 +4901,347 @@ } /** - * AriaEngine Page Header — 页面头部编解码 - * @module engine/aria/page/header + * AriaEngine Crypto — 页面级 AES-GCM 加密 + * @module engine/aria/crypto + * + * v0.2.5: 改为实例化 CryptoManager,避免多实例共享全局状态。 + * 保留全局函数兼容旧代码(委托给全局单例)。 */ + const ALGO = 'AES-GCM'; + const IV_LENGTH$1 = 12; /** - * 初始化新页面的 Header。 + * CryptoManager — 实例级加密管理器 + * 每个 AriaEngine 实例可拥有独立的加密配置。 */ - function initPageHeader(buf, pageId, type) { - const view = new DataView(buf); - view.setUint32(0, pageId, false); - view.setUint8(4, type); - view.setUint16(5, PAGE_HEADER_SIZE, false); // freeStart = header 之后 - view.setUint16(7, buf.byteLength, false); // freeEnd = 页面末尾 - view.setUint16(9, 0, false); // slotCount = 0 - view.setUint32(11, 0, false); // checksum = 0 - view.setUint8(15, 0); + class CryptoManager { + constructor() { + this.cryptoKey = null; + this._enabled = false; + } + get enabled() { return this._enabled; } + async init(password, salt) { + const enc = new TextEncoder(); + const keyMaterial = await crypto.subtle.importKey('raw', enc.encode(password), 'PBKDF2', false, ['deriveKey']); + const actualSalt = salt || crypto.getRandomValues(new Uint8Array(16)); + this.cryptoKey = await crypto.subtle.deriveKey({ name: 'PBKDF2', salt: actualSalt, iterations: 100000, hash: 'SHA-256' }, keyMaterial, { name: ALGO, length: 256 }, false, ['encrypt', 'decrypt']); + this._enabled = true; + return actualSalt; + } + async encryptPage(data) { + if (!this.cryptoKey) + throw new Error('Crypto not initialized'); + const iv = crypto.getRandomValues(new Uint8Array(IV_LENGTH$1)); + // 传 TypedArray 视图而非裸 ArrayBuffer:SubtleCrypto 通过 ArrayBuffer.isView 检查, + // 对跨 realm / 跨 vm 环境的 ArrayBuffer 兼容(Node 18/20 的 webcrypto 对裸 ArrayBuffer 检查严格) + const plain = (data instanceof Uint8Array ? data : new Uint8Array(data)); + const ciphertext = await crypto.subtle.encrypt({ name: ALGO, iv }, this.cryptoKey, plain); + return { iv: iv, data: ciphertext }; + } + async decryptPage(iv, data) { + if (!this.cryptoKey) + throw new Error('Crypto not initialized'); + const ciphertext = (data instanceof Uint8Array ? data : new Uint8Array(data)); + return crypto.subtle.decrypt({ name: ALGO, iv }, this.cryptoKey, ciphertext); + } + close() { + this.cryptoKey = null; + this._enabled = false; + } + } + + /** + * AriaEngine Encrypted Backend — 全库透明 AES-256-GCM 加密后端 + * @module engine/aria/store/encrypted_backend + * + * 装饰器模式包装底层 IStorageBackend: + * - 写入时加密(每个 value 独立随机 IV:格式 [12B IV][AES-GCM ciphertext]) + * - 读取时解密(GCM 认证标签同时保证完整性) + * - WAL / SSTable / Schema / 元数据 全部密文存储(除密钥元数据本身) + * + * 密钥管理: + * - PBKDF2-SHA256(100000 迭代)从密码派生 AES-256-GCM 密钥 + * - `__aria_keymeta` 明文保存 { salt, verifier }: + * - salt:PBKDF2 盐(重启后用同一密码重新派生密钥) + * - verifier:对固定明文加密的密文(打开时解密验证密码正确性) + * - 密码错误 → GCM 认证失败 → 抛 ARIA_DECRYPT_ERROR + * + * 依赖浏览器/Node 的 WebCrypto(jest.setup.js 已提供 polyfill)。 + */ + const IV_LENGTH = 12; + const KEYMETA_KEY = '__aria_keymeta'; + /** verifier 固定明文(无数据泄露风险) */ + const VERIFIER_PLAIN = 'metona-sqlark-encryption-verifier'; + // --------------------------------------------------------------------------- + // Base64 工具(浏览器 btoa/atob 与 Node Buffer 双环境) + // --------------------------------------------------------------------------- + function bytesToBase64(bytes) { + if (typeof Buffer !== 'undefined') { + return Buffer.from(bytes).toString('base64'); + } + let bin = ''; + for (let i = 0; i < bytes.byteLength; i++) + bin += String.fromCharCode(bytes[i]); + return btoa(bin); + } + function base64ToBytes(b64) { + if (typeof Buffer !== 'undefined') { + return new Uint8Array(Buffer.from(b64, 'base64')); + } + const bin = atob(b64); + const bytes = new Uint8Array(bin.length); + for (let i = 0; i < bin.length; i++) + bytes[i] = bin.charCodeAt(i); + return bytes; + } + // --------------------------------------------------------------------------- + // EncryptedBackend + // --------------------------------------------------------------------------- + class EncryptedBackend { + constructor(inner, password) { + this.inner = inner; + this.password = password; + this.crypto = new CryptoManager(); + this.opened = false; + if (!password || password.length === 0) { + throw new DatabaseError('Encryption password must not be empty', 'ARIA_ENCRYPT_CONFIG_ERROR'); + } + } + /** 底层后端(测试/调试用) */ + getInner() { + return this.inner; + } + /** 加密是否已初始化(打开并验证/创建密钥后为 true) */ + isCryptoReady() { + return this.crypto.enabled; + } + async open(name) { + if (!this.inner.isOpen()) { + await this.inner.open(name); + } + const raw = await this.inner.read(KEYMETA_KEY); + if (raw) { + // 已有密钥元数据:用持久化 salt 重新派生并验证密码 + let meta; + try { + meta = JSON.parse(new TextDecoder().decode(raw)); + } + catch { + throw new DatabaseError('Corrupted encryption key metadata', 'ARIA_DECRYPT_ERROR'); + } + if (!meta.salt || !meta.verifier) { + throw new DatabaseError('Corrupted encryption key metadata', 'ARIA_DECRYPT_ERROR'); + } + const salt = base64ToBytes(meta.salt); + await this.crypto.init(this.password, salt); + const verifierBytes = base64ToBytes(meta.verifier); + if (verifierBytes.byteLength <= IV_LENGTH) { + throw new DatabaseError('Corrupted encryption key metadata', 'ARIA_DECRYPT_ERROR'); + } + const iv = verifierBytes.subarray(0, IV_LENGTH); + const ciphertext = verifierBytes.subarray(IV_LENGTH); + try { + await this.crypto.decryptPage(iv, ciphertext); + } + catch { + // GCM 认证失败:密码错误(或密钥元数据被篡改) + throw new DatabaseError('Decryption failed: wrong password or corrupted key metadata', 'ARIA_DECRYPT_ERROR'); + } + } + else { + // 无 keymeta:若库中已存在其他数据 → 明文旧库或 keymeta 丢失,拒绝以加密模式打开 + const keys = await this.inner.listKeys(); + if (keys.some((k) => k !== KEYMETA_KEY)) { + throw new DatabaseError('Cannot open with encryption: existing database has no key metadata ' + + '(database was created without encryption, or key metadata was lost)', 'ARIA_ENCRYPT_CONFIG_ERROR'); + } + // 新库:生成随机 salt + 派生密钥 + 写入 verifier + const salt = await this.crypto.init(this.password); + const enc = await this.crypto.encryptPage(new TextEncoder().encode(VERIFIER_PLAIN).buffer); + const verifier = new Uint8Array(IV_LENGTH + enc.data.byteLength); + verifier.set(enc.iv, 0); + verifier.set(new Uint8Array(enc.data), IV_LENGTH); + const keymeta = JSON.stringify({ + salt: bytesToBase64(salt), + verifier: bytesToBase64(verifier), + }); + await this.inner.write(KEYMETA_KEY, new TextEncoder().encode(keymeta).buffer); + } + this.opened = true; + } + async close() { + await this.inner.close(); + this.crypto.close(); + this.opened = false; + } + isOpen() { + return this.opened; + } + async read(key) { + this.ensureReady(); + const raw = await this.inner.read(key); + if (raw === null) + return null; + return this.decrypt(raw); + } + async write(key, data) { + this.ensureReady(); + await this.inner.write(key, await this.encrypt(data)); + } + async writeMany(entries) { + this.ensureReady(); + const encrypted = {}; + for (const [key, data] of Object.entries(entries)) { + encrypted[key] = await this.encrypt(data); + } + await this.inner.writeMany(encrypted); + } + async delete(key) { + this.ensureReady(); + await this.inner.delete(key); + } + async deleteMany(keys) { + this.ensureReady(); + await this.inner.deleteMany(keys); + } + async listKeys() { + this.ensureReady(); + return this.inner.listKeys(); + } + async exists(key) { + this.ensureReady(); + return this.inner.exists(key); + } + async clear() { + // 清空全部数据但保留密钥元数据 —— clearAll 语义:库本身保留,密码不失效 + const keys = await this.inner.listKeys(); + const toDelete = keys.filter((k) => k !== KEYMETA_KEY); + if (toDelete.length > 0) { + await this.inner.deleteMany(toDelete); + } + } + // ----------------------------------------------------------------------- + // 内部 + // ----------------------------------------------------------------------- + ensureReady() { + if (!this.opened) + throw new DatabaseError('EncryptedBackend not opened', 'ARIA_DB_NOT_OPEN'); + if (!this.crypto.enabled) + throw new DatabaseError('EncryptedBackend key not initialized', 'ARIA_DECRYPT_ERROR'); + } + /** 加密单块数据:[IV(12)][ciphertext] */ + async encrypt(data) { + const enc = await this.crypto.encryptPage(data); + const out = new ArrayBuffer(IV_LENGTH + enc.data.byteLength); + const outBytes = new Uint8Array(out); + outBytes.set(enc.iv, 0); + outBytes.set(new Uint8Array(enc.data), IV_LENGTH); + return out; + } + /** 解密单块数据(GCM 认证失败抛错) */ + async decrypt(data) { + const bytes = new Uint8Array(data); + if (bytes.byteLength <= IV_LENGTH) { + throw new DatabaseError('Corrupted encrypted data block (too short)', 'ARIA_DECRYPT_ERROR'); + } + const iv = bytes.subarray(0, IV_LENGTH); + const ciphertext = bytes.subarray(IV_LENGTH); + try { + return await this.crypto.decryptPage(iv, ciphertext); + } + catch (error) { + if (error instanceof DatabaseError) + throw error; + throw new DatabaseError('Decryption failed (data corrupted or wrong key)', 'ARIA_DECRYPT_ERROR', error); + } + } + } + + /** + * AriaEngine Page SSTable Store — SSTable 页面化物理存储 + * @module engine/aria/store/page_sstable_store + * + * v0.4.5: 让 BufferPool/FileManager 真正接入 LSM 读写路径。 + * SSTable 不再整体存为一个 backend value,而是切分为 4KB 页面: + * - 页面由 FileManager 分配 pageId,经 BufferPool 缓存(LRU 驱逐,脏页写回) + * - save 语义 = 数据已落盘:页面写入后逐个 flushPage(await 底层写)才返回, + * 保证 WAL checkpoint(截断)前 SSTable 数据真实持久化 + * - 页面 ID 列表经 SSTableMeta.pageIds 持久化;旧 meta(无 pageIds)走整 value 读取 + * + * 与 LSM 的 sstableCache(整文件 LRU)双层缓存并存: + * - BufferPool 缓存物理页面(跨 SSTable 共享、受 bufferPoolPages 上限约束) + * - LSM 缓存解析后的整文件字节(查询热点复用) + */ + class PageSSTableStore { + constructor(fileManager, bufferPool) { + this.fileManager = fileManager; + this.bufferPool = bufferPool; + /** SSTable id → 页面 ID 列表(save 时记录,saveMeta 时注入 meta) */ + this.pageIds = new Map(); + } + /** 保存数据:切页 → 写入 BufferPool → 逐页落盘 → 记录 pageIds */ + async save(id, data) { + const pageCount = Math.max(1, Math.ceil(data.byteLength / PAGE_SIZE)); + const handles = await this.bufferPool.newPages(pageCount, PageType.DATA); + const ids = []; + for (let i = 0; i < pageCount; i++) { + const page = handles[i]; + ids.push(page.pageId); + const dest = new Uint8Array(page.data); + dest.fill(0); // 清空(最后一页可能不满) + const slice = data.subarray(i * PAGE_SIZE, Math.min((i + 1) * PAGE_SIZE, data.byteLength)); + dest.set(slice, 0); + page.dirty = true; + // save 语义 = 已持久化:立即落盘(WAL checkpoint 截断依赖此保证) + await this.bufferPool.flushPage(page.pageId); + this.bufferPool.unpin(page); + } + this.pageIds.set(id, ids); + } + /** 获取指定 SSTable 的页面 ID 列表(saveMeta 注入用) */ + getPageIds(id) { + return this.pageIds.get(id); + } + /** + * 按页面 ID 列表读取并拼接为完整字节流。 + * @param totalSize SSTable 真实大小(meta 持久化)——最后一页可能有 0 填充,按真实大小截断 + * @returns 缺失页面/读取失败返回 null(调用方视为损坏并清理) + */ + async load(id, pageIds, totalSize) { + if (pageIds.length === 0) + return null; + const chunks = []; + for (const pageId of pageIds) { + const page = await this.bufferPool.getPage(pageId); + if (!page) + return null; + // 立即复制(后续驱逐安全) + chunks.push(new Uint8Array(page.data)); + this.bufferPool.unpin(page); + } + const total = chunks.reduce((s, c) => s + c.byteLength, 0); + const out = new Uint8Array(Math.min(total, totalSize)); + let off = 0; + for (const c of chunks) { + const take = Math.min(c.byteLength, out.byteLength - off); + if (take <= 0) + break; + out.set(c.subarray(0, take), off); + off += take; + } + this.pageIds.delete(id); + return out; + } + /** 释放页面(删除物理页面文件 + 移出 BufferPool) */ + async delete(id, pageIds) { + for (const pageId of pageIds) { + this.bufferPool.removePage(pageId); + try { + await this.fileManager.freePageId(pageId); + } + catch { /* 清理失败不阻塞 */ } + } + this.pageIds.delete(id); + } } /** @@ -4636,8 +5279,9 @@ const key = `pg_${pageId}`; const data = await this.backend.read(key); if (!data) { - // 第一次访问:创建新页面 - return this.createEmptyPage(pageId, PageType.DATA); + // v0.4.5: 页面总是先分配(allocatePageId 持久化)后写入 —— 读取缺失页面视为损坏 + // (此前返回空页面会静默掩盖页面丢失,页面化 SSTable 依赖 null 触发自愈清理) + return null; } // 确保大小正确 if (data.byteLength < PAGE_SIZE) { @@ -4656,33 +5300,29 @@ await this.saveMeta(); return id; } + /** v0.4.5: 批量分配页面 ID(一次 meta 持久化,避免页面化 SSTable 保存时逐页写 meta) */ + async allocatePageIds(count) { + if (count <= 0) + return []; + const ids = []; + const start = this.nextPageId; + this.nextPageId += count; + for (let i = 0; i < count; i++) + ids.push(start + i); + await this.saveMeta(); + return ids; + } async freePageId(_pageId) { // 简化实现:不回收 pageId const key = `pg_${_pageId}`; await this.backend.delete(key); } - // ---- 表页面分配 ---- - /** - * 分配一个新的表元数据页面。 - */ - async allocateTableRootPage() { - const pageId = await this.allocatePageId(); - const data = new ArrayBuffer(PAGE_SIZE); - initPageHeader(data, pageId, PageType.META); - await this.writePage(pageId, data); - return pageId; - } // ---- 辅助 ---- async saveMeta() { const buf = new ArrayBuffer(8); new DataView(buf).setUint32(0, this.nextPageId, false); await this.backend.write('__aria_meta', buf); } - createEmptyPage(pageId, type) { - const buf = new ArrayBuffer(PAGE_SIZE); - initPageHeader(buf, pageId, type); - return buf; - } /** 清空所有数据 */ async clearAll() { await this.backend.clear(); @@ -4782,11 +5422,6 @@ this.activeTxns.delete(txnId); this.txnWriteKeys.delete(txnId); } - /** 检查事务是否活跃 */ - isActive(txnId) { - const txn = this.activeTxns.get(txnId); - return txn !== undefined && txn.state === TransactionState.ACTIVE; - } // ======================================================================= // 版本读写 // ======================================================================= @@ -4807,58 +5442,12 @@ // v0.4.2-fix: 记录本事务写过的 key(commit/rollback 精准清理) this.txnWriteKeys.get(txnId)?.add(tableKey); } - /** - * 读取一行(对指定事务可见的最新版本)。 - */ - readVersion(tableName, key, txnId) { - const txn = this.activeTxns.get(txnId); - if (!txn) - return null; - const tableKey = `${tableName}.${key}`; - const versions = this.versionStore.get(tableKey); - if (!versions || versions.length === 0) - return null; - // 从最新版本向前遍历 - for (let i = versions.length - 1; i >= 0; i--) { - const version = versions[i]; - // 1. 如果是当前事务写入的(未提交),可见 - if (version.txnId === txnId) { - return version.data; - } - // 2. 如果是已提交的版本,且在快照 LSN 之前提交,可见 - if (version.committed) { - // 简化:所有已提交版本都可见 - return version.data; - } - // 3. 其他事务的未提交版本,不可见,继续找更早的版本 - } - return null; - } /** * 删除一行(创建墓碑版本)。 */ deleteVersion(tableName, key, txnId) { this.writeVersion(tableName, key, { __mvcc_tombstone: true }, txnId); } - /** - * 获取所有行的最新已提交版本(用于非事务读取)。 - */ - getLatestCommittedVersions(tableName) { - const result = {}; - for (const [tableKey, versions] of this.versionStore) { - if (!tableKey.startsWith(`${tableName}.`)) - continue; - const key = tableKey.slice(tableName.length + 1); - for (let i = versions.length - 1; i >= 0; i--) { - const version = versions[i]; - if (version.committed && !version.data.__mvcc_tombstone) { - result[key] = version.data; - break; - } - } - } - return result; - } /** * v0.3.3: 丢弃指定事务的所有版本记录,但保留事务登记(Savepoint 回滚用)。 * 快照数据由调用方(引擎 txnSnapshot)负责恢复。 @@ -4894,39 +5483,6 @@ this.versionStore.set(tableKey, pruned); } } - /** - * 获取所有未提交事务中的 key 列表。 - */ - getActiveWriteKeys(tableName, txnId) { - const keys = new Set(); - const prefix = `${tableName}.`; - for (const [tableKey, versions] of this.versionStore) { - if (!tableKey.startsWith(prefix)) - continue; - const latestVersion = versions[versions.length - 1]; - if (latestVersion.txnId === txnId && !latestVersion.committed) { - keys.add(tableKey.slice(prefix.length)); - } - } - return keys; - } - /** - * 清理指定表的所有版本。 - */ - clearTable(tableName) { - const prefix = `${tableName}.`; - for (const [tableKey] of this.versionStore) { - if (tableKey.startsWith(prefix)) { - this.versionStore.delete(tableKey); - } - } - } - /** - * 获取活跃事务数。 - */ - getActiveTxnCount() { - return this.activeTxns.size; - } /** * 获取全局 LSN。 */ @@ -4936,14 +5492,45 @@ } /** - * AriaEngine Page Format — 页面格式整合层 + * AriaEngine Page Header — 页面头初始化 + * @module engine/aria/page/header + * + * v0.4.5: 仅保留生产代码实际使用的 initPageHeader。 + * 页面头部布局(大端序): + * [0-3] page_id u32 + * [4] type u8 + * [5-6] free_start u16 + * [7-8] free_end u16 + * [9-10] slot_count u16 + * [11-14] checksum u32 + * [15] reserved u8 + * + * 注:free_start/free_end/slot_count/checksum 字段为历史行级页面格式遗留, + * 页面化 SSTable 使用页面原始字节区(跳过头部),字段保留以维持 16 字节头部对齐。 + */ + /** + * 初始化新页面的 Header。 + */ + function initPageHeader(buf, pageId, type) { + const view = new DataView(buf); + view.setUint32(0, pageId, false); + view.setUint8(4, type); + view.setUint16(5, PAGE_HEADER_SIZE, false); // freeStart = header 之后 + view.setUint16(7, buf.byteLength, false); // freeEnd = 页面末尾 + view.setUint16(9, 0, false); // slotCount = 0 + view.setUint32(11, 0, false); // checksum = 0 + view.setUint8(15, 0); + } + + /** + * AriaEngine Page Format — 页面创建 * @module engine/aria/page/format * - * 组合 Header / Slot / Tuple 操作,提供统一的页面管理接口。 + * v0.4.5: 仅保留生产代码实际使用的页面创建逻辑。 + * (Slot Directory / Tuple 编解码曾为行级页面存储设计,但从未接入 LSM 主路径, + * 属"宣称页面式但未实现"的半成品,已删除 —— SSTable 以 4KB 页面承载, + * 页面内容为原始字节切片,由 PageSSTableStore 管理) */ - // --------------------------------------------------------------------------- - // 页面创建 - // --------------------------------------------------------------------------- /** 创建一个新的空页面 */ function createPage(pageId, type) { const data = new ArrayBuffer(PAGE_SIZE); @@ -5029,33 +5616,15 @@ page.prev = null; page.next = null; } - /** 获取 LRU 尾部(最久未使用的页面) */ - getLRU() { - return this.tail; - } - /** 弹出 LRU 尾部 */ - popLRU() { - const lru = this.tail; - if (lru) { - this.remove(lru); - } - return lru; - } /** 清空链表 */ clear() { this.head = null; this.tail = null; this._size = 0; } - /** 获取所有页面(用于迭代) */ - getAllPages() { - const pages = []; - let current = this.head; - while (current) { - pages.push(current); - current = current.next; - } - return pages; + /** 获取 LRU 尾部(最久未使用的页面) */ + getLRU() { + return this.tail; } } /** @@ -5120,14 +5689,6 @@ } return null; } - /** 获取当前大小 */ - getSize() { - return this.lru.size; - } - /** 获取容量 */ - getCapacity() { - return this.capacity; - } /** 清空 */ clear() { this.lru.clear(); @@ -5192,16 +5753,31 @@ return page; } /** - * 创建新页面。 + * v0.4.5: 批量创建新页面(一次页面 ID 分配,页面化 SSTable 保存用)。 + * 返回的页面均 pin 且 dirty=false(调用方写入后需 markDirty + flushPage)。 */ - async newPage(type = PageType.DATA) { - const pageId = await this.pageIO.allocatePageId(); - await this.eviction.evictIfNeeded(1); - const page = createPage(pageId, type); - page.pins = 1; - this.pages.set(pageId, page); - this.eviction.add(page); - return page; + async newPages(count, type = PageType.DATA) { + if (count <= 0) + return []; + let pageIds; + if (typeof this.pageIO.allocatePageIds === 'function') { + pageIds = await this.pageIO.allocatePageIds(count); + } + else { + pageIds = []; + for (let i = 0; i < count; i++) + pageIds.push(await this.pageIO.allocatePageId()); + } + await this.eviction.evictIfNeeded(count); + const handles = []; + for (const pageId of pageIds) { + const page = createPage(pageId, type); + page.pins = 1; + this.pages.set(pageId, page); + this.eviction.add(page); + handles.push(page); + } + return handles; } /** * 释放页面的 pin。 @@ -5256,36 +5832,15 @@ this.pages.clear(); this.eviction.clear(); } - // ----------------------------------------------------------------------- - // 统计 - // ----------------------------------------------------------------------- - /** 获取当前缓存页面数 */ - getCachedPageCount() { - return this.pages.size; - } - /** 获取缓存容量 */ - getCapacity() { - return this.eviction.getCapacity(); - } - /** 获取脏页面数 */ - getDirtyPageCount() { - let count = 0; - for (const [, page] of this.pages) { - if (page.dirty) - count++; - } - return count; - } } /** * AriaEngine LZ4 Compression — 简化 LZ4 压缩/解压 * @module engine/aria/compression/lz4 * - * v0.2.6: 修复往返一致性 - * - 匹配长度截断到 19 字节(matchField 上限 15 + MIN_MATCH),长匹配分段输出 - * - 组合 token 的 matchField ∈ [1,15];matchField=0 且 lo=0 表示末尾纯字面量(无 offset) - * - 消除"matchField=0 的组合 token 与纯字面量 token 歧义" + * v0.4.5 格式 v2:压缩流前增加 4 字节原始大小头(LE u32), + * 解压不再依赖外部估算(高压缩率数据下 buf.length*2 估算不足会截断)。 + * 旧版压缩数据(无头)视为损坏(compression 选项自 v0.2.6 起已声明不向后兼容)。 * * Token 格式(1 字节): * hi 4bit = litLen (0-15) @@ -5296,10 +5851,15 @@ */ const MIN_MATCH = 4; const MAX_MATCH = MIN_MATCH + 15; // 19,匹配长度上限 + /** 原始大小头字节数 */ + const HEADER_SIZE = 4; function compressLZ4(input) { - // 空输入直接返回(无 token 可输出) - if (input.byteLength === 0) - return input; + // 空输入:仅头部(原始大小 0) + if (input.byteLength === 0) { + const empty = new Uint8Array(HEADER_SIZE); + new DataView(empty.buffer).setUint32(0, 0, true); + return empty; + } // 最坏情况:纯字面量分块输出 len/15 个 token + 末尾 token // 上限:len + ceil(len/15) + 8(组合 token 的 offset 开销已包含在内) const maxOut = input.byteLength + Math.ceil(input.byteLength / 15) + 8; @@ -5355,30 +5915,44 @@ remaining -= chunk; litStart += chunk; } - // 始终输出压缩流(即使比原数据略大)。 - // 注意:不能返回原样 input —— 解压端无法区分"压缩流"与"原始数据", - // 原样返回会导致解压器将原始字节误解析为 token(v0.2.6 修复) - return out.slice(0, di); + // v0.4.5: 前置原始大小头,解压端自描述 + const stream = out.slice(0, di); + const combined = new Uint8Array(HEADER_SIZE + stream.byteLength); + new DataView(combined.buffer).setUint32(0, input.byteLength, true); + combined.set(stream, HEADER_SIZE); + return combined; } - function decompressLZ4(input, originalSize) { + function decompressLZ4(input, _originalSize) { + if (input.byteLength < HEADER_SIZE) { + throw new Error('LZ4 stream too short: missing header'); + } + const view = new DataView(input.buffer, input.byteOffset, input.byteLength); + const originalSize = view.getUint32(0, true); + if (originalSize === 0 && input.byteLength === HEADER_SIZE) { + return new Uint8Array(0); // 空输入 + } + if (originalSize <= 0 || originalSize > 0x3fffffff) { + throw new Error('Invalid LZ4 header: bad original size'); + } + const stream = input.subarray(HEADER_SIZE); const out = new Uint8Array(originalSize); let si = 0, di = 0; - while (si < input.byteLength && di < originalSize) { - const token = input[si++]; + while (si < stream.byteLength && di < originalSize) { + const token = stream[si++]; const litLen = (token >> 4) & 0x0F; const matchField = token & 0x0F; // 复制字面量 - for (let i = 0; i < litLen && si < input.byteLength && di < originalSize; i++) { - out[di++] = input[si++]; + for (let i = 0; i < litLen && si < stream.byteLength && di < originalSize; i++) { + out[di++] = stream[si++]; } // matchField=0:纯字面量 token(无 offset 无匹配)。 // 可能出现在流中任意位置(超长字面量分块输出),不能 break if (matchField === 0) continue; // 组合 token:读取 offset + 复制匹配(可能自重叠) - if (si + 1 >= input.byteLength) + if (si + 1 >= stream.byteLength) break; - const offset = input[si++] | (input[si++] << 8); + const offset = stream[si++] | (stream[si++] << 8); const matchLen = matchField + MIN_MATCH; for (let i = 0; i < matchLen && di < originalSize; i++) { out[di] = out[di - offset]; @@ -5388,67 +5962,6 @@ return out; } - /** - * AriaEngine Crypto — 页面级 AES-GCM 加密 - * @module engine/aria/crypto - * - * v0.2.5: 改为实例化 CryptoManager,避免多实例共享全局状态。 - * 保留全局函数兼容旧代码(委托给全局单例)。 - */ - const ALGO = 'AES-GCM'; - const IV_LENGTH = 12; - /** - * CryptoManager — 实例级加密管理器 - * 每个 AriaEngine 实例可拥有独立的加密配置。 - */ - class CryptoManager { - constructor() { - this.cryptoKey = null; - this._enabled = false; - } - get enabled() { return this._enabled; } - async init(password, salt) { - const enc = new TextEncoder(); - const keyMaterial = await crypto.subtle.importKey('raw', enc.encode(password), 'PBKDF2', false, ['deriveKey']); - const actualSalt = salt || crypto.getRandomValues(new Uint8Array(16)); - this.cryptoKey = await crypto.subtle.deriveKey({ name: 'PBKDF2', salt: actualSalt, iterations: 100000, hash: 'SHA-256' }, keyMaterial, { name: ALGO, length: 256 }, false, ['encrypt', 'decrypt']); - this._enabled = true; - return actualSalt; - } - async encryptPage(data) { - if (!this.cryptoKey) - throw new Error('Crypto not initialized'); - const iv = crypto.getRandomValues(new Uint8Array(IV_LENGTH)); - // 传 TypedArray 视图而非裸 ArrayBuffer:SubtleCrypto 通过 ArrayBuffer.isView 检查, - // 对跨 realm / 跨 vm 环境的 ArrayBuffer 兼容(Node 18/20 的 webcrypto 对裸 ArrayBuffer 检查严格) - const ciphertext = await crypto.subtle.encrypt({ name: ALGO, iv }, this.cryptoKey, new Uint8Array(data)); - return { iv: iv, data: ciphertext }; - } - async decryptPage(iv, data) { - if (!this.cryptoKey) - throw new Error('Crypto not initialized'); - return crypto.subtle.decrypt({ name: ALGO, iv }, this.cryptoKey, new Uint8Array(data)); - } - close() { - this.cryptoKey = null; - this._enabled = false; - } - } - // --------------------------------------------------------------------------- - // 全局兼容层(旧代码仍可使用全局函数) - // --------------------------------------------------------------------------- - const globalCrypto = new CryptoManager(); - /** @deprecated 使用 CryptoManager 实例代替 */ - function isCryptoEnabled() { return globalCrypto.enabled; } - /** @deprecated 使用 CryptoManager 实例代替 */ - async function encryptPage(data) { - return globalCrypto.encryptPage(data); - } - /** @deprecated 使用 CryptoManager 实例代替 */ - async function decryptPage(iv, data) { - return globalCrypto.decryptPage(iv, data); - } - /** * AriaEngine — 自研页面式存储引擎主类 * @module engine/aria/index @@ -5463,6 +5976,8 @@ this.name = 'aria'; this.opened = false; this.dbName = ''; + // v0.4.5: 多标签页独占锁(Web Locks API,OPFS 等无事务后端防并发写) + this.dbLock = null; // 表结构 this.schemas = new Map(); this.tablePKs = new Map(); @@ -5490,6 +6005,14 @@ await this.openInternal(dbName); } catch (error) { + // 打开失败:释放已获取的锁(避免锁泄漏阻塞其他标签页) + if (this.dbLock) { + try { + await this.dbLock.release(); + } + catch { /* ignore */ } + this.dbLock = null; + } if (error instanceof DatabaseError) throw error; throw new DatabaseError(`Failed to open AriaEngine database "${dbName}"`, 'ARIA_OPEN_ERROR', error); @@ -5498,21 +6021,44 @@ /** open 内部实现(错误包装在 open 外层) */ async openInternal(dbName) { this.dbName = dbName; - // 1. 存储后端 + // v0.4.5: 多标签页独占锁(Web Locks)— 不支持的环境降级为无锁(文档注明) + const lock = new DatabaseLock(); + this.dbLock = lock; + const lockAcquired = await lock.acquire(dbName); + if (!lockAcquired) { + // eslint-disable-next-line no-console + console.warn(`[AriaEngine] Web Locks API unavailable: no multi-tab protection for "${dbName}" ` + + '(open the same database in multiple tabs may corrupt data)'); + } + // 1. 存储后端(可选全库加密包装) + let baseBackend; if (this.config.storageBackend === 'opfs') { - this.backend = new OPFSBackend(); + baseBackend = new OPFSBackend(); } else if (this.config.storageBackend === 'indexeddb') { - this.backend = new IndexedDBBackend(); + baseBackend = new IndexedDBBackend(); } else { - this.backend = new MemoryBackend(); + baseBackend = new MemoryBackend(); + } + await baseBackend.open(dbName); + // v0.4.5: encryption 配置 → 透明加密封装(密码错误/数据损坏在 open 或首次读取时暴露) + if (this.config.encryption?.password) { + this.backend = new EncryptedBackend(baseBackend, this.config.encryption.password); + } + else { + this.backend = baseBackend; + // 反向检测:库中存在密钥元数据但未提供密码 → 拒绝打开(避免密文被当明文解析成空库) + if (await baseBackend.exists('__aria_keymeta')) { + await baseBackend.close(); + throw new DatabaseError('Database is encrypted: provide encryption.password to open it', 'ARIA_ENCRYPT_REQUIRED'); + } } await this.backend.open(dbName); // 2a. FileManager (PageIO 实现) + Buffer Pool - const fileManager = new FileManager(this.backend); - await fileManager.init(dbName); - this.bufferPool = new BufferPool(fileManager, this.config.bufferPoolPages); + this.fileManager = new FileManager(this.backend); + await this.fileManager.init(dbName); + this.bufferPool = new BufferPool(this.fileManager, this.config.bufferPoolPages); // 2. 构建 SSTableStore const sstableStore = this.createSSTableStore('main'); // 3. 初始化主 LSM(PK 索引) @@ -5526,59 +6072,9 @@ sstableStore, }); // 4. 初始化 WAL - this.wal = new WAL({ - append: async (data) => { - // v0.4.2-fix: 记录写入与 count 计数在同一底层事务中原子提交, - // 中断时整体回滚,杜绝"记录在、计数丢"导致恢复漏读的丢数据问题 - const idx = await this.getWALCount(); - const slice = new Uint8Array(data.buffer, data.byteOffset, data.byteLength); - const copy = slice.buffer.slice(slice.byteOffset, slice.byteOffset + slice.byteLength); - await this.backend.writeMany({ - [`__wal_${idx}`]: copy, - __wal_count: new TextEncoder().encode(String(idx + 1)).buffer, - }); - }, - readAll: async () => { - // v0.4.2-fix: 不依赖 count 计数,直接扫描全部 __wal_* 键, - // 避免 count 与实际记录不一致时漏读(与 checkpoint/并发写入竞态无关) - const keys = (await this.backend.listKeys()) - .filter((k) => k.startsWith('__wal_') && k !== '__wal_count') - .sort((a, b) => { - const na = parseInt(a.slice('__wal_'.length), 10); - const nb = parseInt(b.slice('__wal_'.length), 10); - return (isNaN(na) ? 0 : na) - (isNaN(nb) ? 0 : nb); - }); - if (keys.length === 0) - return new Uint8Array(0); - const chunks = []; - for (const key of keys) { - const d = await this.backend.read(key); - if (d) - chunks.push(new Uint8Array(d)); - } - const total = chunks.reduce((s, c) => s + c.byteLength, 0); - const combined = new Uint8Array(total); - let off = 0; - for (const c of chunks) { - combined.set(c, off); - off += c.byteLength; - } - return combined; - }, - truncate: async () => { - // v0.4.2-fix: 扫描删除全部 WAL 记录键 + count 键(单事务原子清理) - const keys = (await this.backend.listKeys()) - .filter((k) => k.startsWith('__wal_')); - await this.backend.deleteMany(keys); - await this.setWALCount(0); - }, - exists: async () => { - // v0.4.2-fix: 与 readAll 一致按 key 扫描判断(count 可能因崩溃截断而滞后) - const keys = (await this.backend.listKeys()) - .filter((k) => k.startsWith('__wal_') && k !== '__wal_count'); - return keys.length > 0; - }, - }, this.config.walEnabled, this.config.walSyncMode); + // v0.4.5: 分片式 WAL 存储(__wal_%06d.bin),序号内嵌记录字节流无需 count 键, + // append 单文件原子写;空洞检测截断;兼容旧格式 __wal_N + __wal_count + this.wal = new WAL(new SegmentedWALStore(this.backend), this.config.walEnabled, this.config.walSyncMode); // 5. 恢复 Schema await this.loadSchemas(); // v0.4.2-fix: 为 schema 中带 index/unique 标记的列重建二级索引 LSM。 @@ -5671,12 +6167,19 @@ for (const idxLsm of this.secondaryIndexes.values()) { await idxLsm.flush(); } + // v0.4.5: 页面化存储 — 落盘全部脏页(save 已逐页落盘,此处兜底) + await this.bufferPool.flushAll(); await this.wal.flush(); // v0.4.2-fix: close 前 checkpoint(截断 WAL)— // 此前只 flush 不截断,下次打开会重放全部历史 WAL 记录(含已落盘 SSTable 的数据), // 重复解析/重复 put 拖慢启动,并与恢复后 flush+checkpoint 竞争放大丢数据 await this.wal.checkpoint(); await this.backend.close(); + // v0.4.5: 释放多标签页独占锁(等待锁真正归还) + if (this.dbLock) { + await this.dbLock.release(); + this.dbLock = null; + } // v0.4.2-fix: 清空运行期状态(此前 close 后 mvcc/txn 残留, // 重开时 beginTransaction 报 TX_ACTIVE 或读到陈旧快照) this.schemas.clear(); @@ -5691,24 +6194,79 @@ } /** * v0.4.2-fix: 崩溃恢复/自愈 — 校验并移除损坏 SSTable、截断 WAL、重建二级索引。 + * v0.4.5 增强:清理 OPFS 残留临时文件、清理孤儿页面(meta 未引用的 pg_ 文件)。 * 应用层检测到异常后调用,无需删库重建。 */ async repair() { this.ensureOpen(); // 1. 校验全部 SSTable,移除残缺项(打开时已做一次,此处兜底运行期损坏) const removed = await this.lsm.validateAll(); - // 2. 将 WAL 残留数据落盘并截断,避免无限重放 + // v0.4.5: 清空页面缓存(损坏数据可能驻留 BufferPool,重新加载) + await this.bufferPool.clear(); + // 2. 将 WAL 残留数据落盘并截断,避免无限重放(含空洞截断落地) await this.lsm.flush(); await this.wal.checkpoint(); // 3. 重建所有表的二级索引(修复索引与主数据不一致) for (const tableName of this.schemas.keys()) { await this.reindexTable(tableName); } + // v0.4.5: 4. 清理 OPFS 残留临时文件(.crswap/.tmp) + const backendAny = this.backend; + if (typeof backendAny.cleanupStaleFiles === 'function') { + try { + await backendAny.cleanupStaleFiles(); + } + catch { /* 清理失败不阻塞 */ } + } + // v0.4.5: 5. 清理孤儿页面(所有 LSM 命名空间 meta 均未引用的 pg_ 文件) + await this.cleanupOrphanPages(); if (removed > 0) { // eslint-disable-next-line no-console console.warn(`[AriaEngine] repair: removed ${removed} corrupted SSTable(s)`); } } + /** + * v0.4.5: 清理孤儿页面 — 扫描全部 pg_* 文件,未被任何 LSM 命名空间 meta 引用的删除。 + * 孤儿页面来自:崩溃中断的 compaction/删除流程(旧 SSTable 页面残留)。 + */ + async cleanupOrphanPages() { + const keys = await this.backend.listKeys(); + const pgKeys = keys.filter((k) => /^pg_\d+$/.test(k)); + if (pgKeys.length === 0) + return; + const used = new Set(); + const collectMeta = async (ns) => { + const META_KEY = ns === 'main' ? '__aria_lsm_meta' : `__aria_lsm_meta_${ns}`; + const raw = await this.backend.read(META_KEY); + if (!raw) + return; + try { + const metas = JSON.parse(new TextDecoder().decode(raw)); + for (const m of metas) { + if (m.pageIds) { + for (const pid of m.pageIds) + used.add(pid); + } + } + } + catch { /* 损坏的 meta 忽略(validateAll 已处理) */ } + }; + await collectMeta('main'); + // 收集全部二级索引命名空间 + for (const [tableName, schema] of this.schemas) { + for (const [colName, colDef] of Object.entries(schema.columns)) { + if (colDef.index || colDef.unique) { + await collectMeta(`idx_${tableName}_${colName}`); + } + } + } + const orphanIds = pgKeys + .map((k) => Number(k.slice('pg_'.length))) + .filter((pid) => !used.has(pid)); + if (orphanIds.length > 0) { + await this.backend.deleteMany(orphanIds.map((pid) => `pg_${pid}`)); + } + } /** * v0.4.1: 重置数据库 — 清空全部数据与表结构(演示页刷新/重新初始化用)。 * 清空存储后端、LSM、WAL、MVCC 与二级索引,后续可继续使用本实例。 @@ -5717,6 +6275,9 @@ this.ensureOpen(); // 清空存储后端(页面文件 / WAL 记录 / schema 记录 / 元数据) await this.backend.clear(); + // v0.4.5: 清空页面缓存与页面 ID 分配状态 + await this.bufferPool.clear(); + await this.fileManager.clearAll(); this.schemas.clear(); this.tablePKs.clear(); this.secondaryIndexes.clear(); @@ -6626,6 +7187,9 @@ const META_KEY = ns === 'main' ? '__aria_lsm_meta' : `__aria_lsm_meta_${ns}`; let seq = 0; let seqLoaded = false; + // v0.4.5: 页面化物理存储(OPFS 后端默认启用)— SSTable 存为 4KB 页面,BufferPool 缓存 + const usePages = this.isPageStorage(); + const pageStore = usePages ? new PageSSTableStore(this.fileManager, this.bufferPool) : null; const encodeText = (text) => { return new TextEncoder().encode(text).buffer; }; @@ -6642,46 +7206,47 @@ }; return { save: async (id, data) => { + if (pageStore) { + // 页面化:切页写入 BufferPool 并逐页落盘(save 语义 = 已持久化) + await pageStore.save(id, data); + return; + } let buf = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength); - // 压缩(若启用) + // 压缩(若启用)— 加密由 EncryptedBackend 在 backend 层透明处理(v0.4.5) if (this.config.compression) { const compressed = compressLZ4(new Uint8Array(buf)); buf = compressed.buffer.slice(compressed.byteOffset, compressed.byteOffset + compressed.byteLength); } - // 加密(若启用) - if (isCryptoEnabled()) { - const enc = await encryptPage(buf); - const header = new Uint8Array(12 + 4); // IV(12) + originalLen(4) - header.set(enc.iv, 0); - new DataView(header.buffer).setUint32(12, data.byteLength, false); - const combined = new Uint8Array(header.length + enc.data.byteLength); - combined.set(header, 0); - combined.set(new Uint8Array(enc.data), header.length); - buf = combined.buffer; - } await this.backend.write(`${filePrefix}${id}`, buf); }, load: async (id) => { + // 页面化读取:meta 有 pageIds → 页面拼接;无(旧数据)→ 整 value + if (pageStore) { + const metas = await readMetaList(); + const meta = metas.find((m) => m.id === id); + if (meta && meta.pageIds && meta.pageIds.length > 0) { + return pageStore.load(id, meta.pageIds, meta.totalSize); + } + } const raw = await this.backend.read(`${filePrefix}${id}`); if (!raw) return null; let buf = new Uint8Array(raw); - // 解密(若数据带加密头) - if (isCryptoEnabled() && buf.length > 16) { - const iv = buf.slice(0, 12); - const origLen = new DataView(buf.buffer, buf.byteOffset + 12, 4).getUint32(0, false); - const ciphertext = buf.slice(16).buffer; - const decrypted = await decryptPage(iv, ciphertext); - buf = new Uint8Array(decrypted, 0, origLen); - } - // 解压(若启用) + // 解压(若启用)— 解密由 EncryptedBackend 在 backend 层透明处理(v0.4.5) if (this.config.compression) { - const decompressed = decompressLZ4(buf, buf.length * 2); // 估计原始大小 - buf = decompressed; + // v0.4.5: 压缩流自带原始大小头,无需外部估算 + buf = decompressLZ4(buf); } return buf; }, delete: async (id) => { + if (pageStore) { + const metas = await readMetaList(); + const meta = metas.find((m) => m.id === id); + if (meta && meta.pageIds && meta.pageIds.length > 0) { + await pageStore.delete(id, meta.pageIds); + } + } await this.backend.delete(`${filePrefix}${id}`); }, allocateId: async () => { @@ -6696,12 +7261,15 @@ listMeta: readMetaList, saveMeta: async (meta) => { const list = await readMetaList(); + // v0.4.5: 页面化时把页面 ID 列表注入 meta(save 后、saveMeta 前由 LSM 顺序调用) + const pageIds = pageStore?.getPageIds(meta.id); + const metaWithPages = pageIds && pageIds.length > 0 ? { ...meta, pageIds } : meta; // 更新或添加 const idx = list.findIndex((m) => m.id === meta.id); if (idx >= 0) - list[idx] = meta; + list[idx] = metaWithPages; else - list.push(meta); + list.push(metaWithPages); await this.backend.write(META_KEY, encodeText(JSON.stringify(list))); }, deleteMeta: async (id) => { @@ -6711,6 +7279,14 @@ }, }; } + /** v0.4.5: 是否启用页面化物理存储(默认 OPFS 后端启用,显式配置可覆盖) */ + isPageStorage() { + if (this.config.pageStorage === true) + return true; + if (this.config.pageStorage === false) + return false; + return this.config.storageBackend === 'opfs'; + } // ======================================================================= // WAL 恢复 // ======================================================================= @@ -7045,37 +7621,6 @@ this.mvcc.gc(10); return { compactedLevels: 6, gcVersions: beforeGC }; } - /** - * 查询优化器:估算各索引成本,选择最优方案 - */ - estimateQueryCost(tableName, query) { - const schema = this.schemas.get(tableName); - if (!schema || !query.where) - return { strategy: 'full_scan', estimatedRows: 0 }; - const pkCol = this.tablePKs.get(tableName); - for (const [col, condition] of Object.entries(query.where)) { - if (col === '$and' || col === '$or' || col === '$not') - continue; - // PK 等值 → 最快,估计 1 行 - if (col === pkCol && (typeof condition !== 'object' || condition.$eq)) { - return { strategy: 'pk_lookup', estimatedRows: 1 }; - } - // 索引列等值 → 快 - const colDef = schema.columns[col]; - if (colDef?.index || colDef?.unique) { - if (typeof condition !== 'object' || condition.$eq) { - return { strategy: `index_eq:${col}`, estimatedRows: 1 }; - } - if (condition.$in && Array.isArray(condition.$in)) { - return { strategy: `index_in:${col}`, estimatedRows: condition.$in.length }; - } - if (condition.$gt || condition.$lt || condition.$gte || condition.$lte) { - return { strategy: `index_range:${col}`, estimatedRows: 100 }; - } - } - } - return { strategy: 'full_scan', estimatedRows: 1000 }; - } ensureOpen() { if (!this.opened) throw new DatabaseError('AriaEngine not opened', 'DB_NOT_OPEN'); @@ -7091,25 +7636,6 @@ throw new DatabaseError(`Table "${tableName}" does not exist`, 'TABLE_NOT_FOUND'); } } - /** Get the number of WAL records stored */ - async getWALCount() { - const raw = await this.backend.read('__wal_count'); - if (!raw) - return 0; - try { - const dec = new TextDecoder(); - return parseInt(dec.decode(raw), 10) || 0; - } - catch { - return 0; - } - } - /** Set the number of WAL records stored */ - async setWALCount(count) { - const enc = new TextEncoder(); - const buf = enc.encode(String(count)).buffer; - await this.backend.write('__wal_count', buf); - } } /** @@ -7433,20 +7959,24 @@ // UpdateQueryBuilder // --------------------------------------------------------------------------- class UpdateQueryBuilder { - constructor(engine, tableName, _updates, onWrite) { + constructor(engine, tableName, _updates, onWrite, onHooks) { this.engine = engine; this.tableName = tableName; this._updates = _updates; this._where = {}; this.onWrite = onWrite; + this.onHooks = onHooks; } where(condition) { this._where = { ...this._where, ...condition }; return this; } async execute() { - const count = await this.engine.update(this.tableName, { table: this.tableName, where: this._where }, this._updates); + const query = { table: this.tableName, where: this._where }; + await this.onHooks?.('beforeUpdate', [query, this._updates]); + const count = await this.engine.update(this.tableName, query, this._updates); this.onWrite?.(this.tableName); + await this.onHooks?.('afterUpdate', [query, this._updates, count]); return count; } toAST() { @@ -7457,19 +7987,23 @@ // DeleteQueryBuilder // --------------------------------------------------------------------------- class DeleteQueryBuilder { - constructor(engine, tableName, onWrite) { + constructor(engine, tableName, onWrite, onHooks) { this.engine = engine; this.tableName = tableName; this._where = {}; this.onWrite = onWrite; + this.onHooks = onHooks; } where(condition) { this._where = { ...this._where, ...condition }; return this; } async execute() { - const count = await this.engine.delete(this.tableName, { table: this.tableName, where: this._where }); + const query = { table: this.tableName, where: this._where }; + await this.onHooks?.('beforeDelete', [query]); + const count = await this.engine.delete(this.tableName, query); this.onWrite?.(this.tableName); + await this.onHooks?.('afterDelete', [query, count]); return count; } toAST() { @@ -7485,12 +8019,13 @@ // Table // --------------------------------------------------------------------------- class Table { - constructor(engine, tableName, executor, onWrite) { + constructor(engine, tableName, executor, onWrite, onHooks) { this.schema = null; this.engine = engine; this.name = tableName; this.executor = executor; this.onWrite = onWrite; + this.onHooks = onHooks; } // ---- Schema ---- async getSchema() { @@ -7504,13 +8039,18 @@ } // ---- 插入 ---- async insert(row) { + // beforeInsert 参数约定:rows[](单行时也是数组) + await this.onHooks?.('beforeInsert', [[row]]); const pks = await this.engine.insert(this.name, [row]); this.onWrite?.(this.name); + await this.onHooks?.('afterInsert', [[row], pks]); return pks[0]; } async insertMany(rows) { + await this.onHooks?.('beforeInsert', [rows]); const pks = await this.engine.insert(this.name, rows); this.onWrite?.(this.name); + await this.onHooks?.('afterInsert', [rows, pks]); return pks; } // ---- 查询 ---- @@ -7541,11 +8081,11 @@ } // ---- 更新 ---- update(updates) { - return new UpdateQueryBuilder(this.engine, this.name, updates, this.onWrite); + return new UpdateQueryBuilder(this.engine, this.name, updates, this.onWrite, this.onHooks); } // ---- 删除 ---- delete() { - return new DeleteQueryBuilder(this.engine, this.name, this.onWrite); + return new DeleteQueryBuilder(this.engine, this.name, this.onWrite, this.onHooks); } // ---- 聚合 ---- async count(where) { @@ -7690,6 +8230,14 @@ TokenType["THEN"] = "THEN"; TokenType["ELSE"] = "ELSE"; TokenType["END"] = "END"; + // v0.5.1: 维护语句(EXPLAIN / ANALYZE / REINDEX / VACUUM / SAVEPOINT) + TokenType["EXPLAIN"] = "EXPLAIN"; + TokenType["ANALYZE"] = "ANALYZE"; + TokenType["REINDEX"] = "REINDEX"; + TokenType["VACUUM"] = "VACUUM"; + TokenType["SAVEPOINT"] = "SAVEPOINT"; + TokenType["RELEASE"] = "RELEASE"; + TokenType["TO"] = "TO"; // 标识符 & 字面量 TokenType["IDENTIFIER"] = "IDENTIFIER"; TokenType["STRING"] = "STRING"; @@ -7784,6 +8332,14 @@ 'THEN': TokenType.THEN, 'ELSE': TokenType.ELSE, 'END': TokenType.END, + // v0.5.1 + 'EXPLAIN': TokenType.EXPLAIN, + 'ANALYZE': TokenType.ANALYZE, + 'REINDEX': TokenType.REINDEX, + 'VACUUM': TokenType.VACUUM, + 'SAVEPOINT': TokenType.SAVEPOINT, + 'RELEASE': TokenType.RELEASE, + 'TO': TokenType.TO, }; /** @@ -8068,6 +8624,19 @@ return this.parseCommit(); case TokenType.ROLLBACK: return this.parseRollback(); + // v0.5.1: 维护语句入口 + case TokenType.EXPLAIN: + return this.parseExplain(); + case TokenType.ANALYZE: + return this.parseAnalyze(); + case TokenType.REINDEX: + return this.parseReindex(); + case TokenType.VACUUM: + return this.parseVacuum(); + case TokenType.SAVEPOINT: + return this.parseSavepoint(); + case TokenType.RELEASE: + return this.parseSavepoint(); default: throw this.error(`Unexpected token "${this.curToken.value}"`); } @@ -8092,6 +8661,53 @@ } return statements; } + // ---- 维护语句(v0.5.1) ---- + /** EXPLAIN — 输出查询计划 */ + parseExplain() { + this.expect(TokenType.EXPLAIN); + if (this.curTokenIs(TokenType.EXPLAIN)) { + throw this.error('Nested EXPLAIN is not allowed'); + } + const query = this.parseStatement(); + return { type: 'EXPLAIN', query }; + } + /** ANALYZE [TABLE] name — 收集表统计信息 */ + parseAnalyze() { + this.expect(TokenType.ANALYZE); + if (this._isKeywordAsIdent() && this.curToken.value.toUpperCase() === 'TABLE') { + this.nextToken(); + } + return { type: 'ANALYZE', table: this.expectIdentifier('table name') }; + } + /** REINDEX [TABLE] name — 重建表二级索引 */ + parseReindex() { + this.expect(TokenType.REINDEX); + if (this._isKeywordAsIdent() && this.curToken.value.toUpperCase() === 'TABLE') { + this.nextToken(); + } + return { type: 'REINDEX', table: this.expectIdentifier('table name') }; + } + /** VACUUM — 压缩 LSM + 清理碎片 */ + parseVacuum() { + this.expect(TokenType.VACUUM); + return { type: 'VACUUM' }; + } + /** SAVEPOINT name | RELEASE [SAVEPOINT] name */ + parseSavepoint() { + let action; + if (this.curTokenIs(TokenType.RELEASE)) { + action = 'RELEASE'; + this.nextToken(); + } + else { + action = 'SAVE'; + this.expect(TokenType.SAVEPOINT); + } + // 可选 SAVEPOINT 关键字(RELEASE SAVEPOINT name) + if (this.curTokenIs(TokenType.SAVEPOINT)) + this.nextToken(); + return { type: 'SAVEPOINT', name: this.expectIdentifier('savepoint name'), action }; + } // ---- 事务语句 ---- parseBegin() { this.expect(TokenType.BEGIN); @@ -8108,10 +8724,22 @@ } return { type: 'COMMIT' }; } + /** ROLLBACK [TRANSACTION] | ROLLBACK TO [SAVEPOINT] name(v0.5.1) */ parseRollback() { this.expect(TokenType.ROLLBACK); if (this._isKeywordAsIdent() && this.curToken.value.toUpperCase() === 'TRANSACTION') { this.nextToken(); + return { type: 'ROLLBACK' }; + } + // ROLLBACK TO [SAVEPOINT] name + if (this.curTokenIs(TokenType.TO) || + (this._isKeywordAsIdent() && this.curToken.value.toUpperCase() === 'TO')) { + this.nextToken(); + if (this.curTokenIs(TokenType.SAVEPOINT) || + (this._isKeywordAsIdent() && this.curToken.value.toUpperCase() === 'SAVEPOINT')) { + this.nextToken(); + } + return { type: 'SAVEPOINT', name: this.expectIdentifier('savepoint name'), action: 'ROLLBACK' }; } return { type: 'ROLLBACK' }; } @@ -9210,10 +9838,6 @@ this.engine = engine; this.maxRowsPerQuery = maxRowsPerQuery; } - /** 设置查询结果行数上限 */ - setMaxRowsPerQuery(max) { - this.maxRowsPerQuery = max; - } async execute(stmt) { switch (stmt.type) { case 'SELECT': return this.executeSelect(stmt); @@ -9231,6 +9855,11 @@ case 'BEGIN': return this.executeBegin(); case 'COMMIT': return this.executeCommit(); case 'ROLLBACK': return this.executeRollback(); + // v0.5.1: 维护语句 + case 'SAVEPOINT': return this.executeSavepoint(stmt); + case 'ANALYZE': return this.executeAnalyze(stmt); + case 'REINDEX': return this.executeReindex(stmt); + case 'VACUUM': return this.executeVacuum(); default: throw new DatabaseError('Unknown statement type', 'UNKNOWN_STATEMENT'); } } @@ -9285,7 +9914,6 @@ } /** EXPLAIN: 输出查询计划 */ async executeExplain(stmt) { - const plan = compileStatement(stmt.query.type === 'SELECT' ? stmt.query : stmt.query); const startTime = Date.now(); let result = null; try { @@ -9294,15 +9922,21 @@ catch { /* explain 即使执行失败也返回计划 */ } const elapsed = Date.now() - startTime; const rows = Array.isArray(result) ? result.length : 0; + // v0.5.1: 仅 SELECT/DELETE/UPDATE 有引擎查询计划;其他语句输出基本信息 + let plan = null; + try { + plan = compileStatement(stmt.query); + } + catch { /* 非查询语句无 QueryPlan */ } return { type: stmt.query.type, - table: plan.table, - columns: plan.columns, - where: plan.where || {}, - orderBy: plan.orderBy || [], - limit: plan.limit, - offset: plan.offset, - usingIndex: plan.table ? 'auto' : 'none', + table: plan?.table, + columns: plan?.columns, + where: plan?.where || {}, + orderBy: plan?.orderBy || [], + limit: plan?.limit, + offset: plan?.offset, + usingIndex: plan?.table ? 'auto' : 'none', estimatedRows: rows, actualTimeMs: elapsed, }; @@ -9873,6 +10507,59 @@ async executeRollback() { return this.engine.rollbackTransaction(); } + // =================================================================== + // 维护语句(v0.5.1) + // =================================================================== + /** SAVEPOINT name / ROLLBACK TO SAVEPOINT name / RELEASE SAVEPOINT name */ + async executeSavepoint(stmt) { + const engine = this.engine; + if (stmt.action === 'SAVE') { + if (typeof engine.savepoint !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support SAVEPOINT`, 'NOT_SUPPORTED'); + } + return engine.savepoint(stmt.name); + } + if (stmt.action === 'ROLLBACK') { + if (typeof engine.rollbackToSavepoint !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support ROLLBACK TO SAVEPOINT`, 'NOT_SUPPORTED'); + } + return engine.rollbackToSavepoint(stmt.name); + } + if (typeof engine.releaseSavepoint !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support RELEASE SAVEPOINT`, 'NOT_SUPPORTED'); + } + return engine.releaseSavepoint(stmt.name); + } + /** ANALYZE TABLE name — 收集表统计信息 */ + async executeAnalyze(stmt) { + const engine = this.engine; + if (typeof engine.analyzeTable !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support ANALYZE`, 'NOT_SUPPORTED'); + } + const exists = await this.engine.hasTable(stmt.table); + if (!exists) + throw new DatabaseError(`Table "${stmt.table}" does not exist`, 'TABLE_NOT_FOUND'); + return engine.analyzeTable(stmt.table); + } + /** REINDEX TABLE name — 重建表二级索引 */ + async executeReindex(stmt) { + const engine = this.engine; + if (typeof engine.reindexTable !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support REINDEX`, 'NOT_SUPPORTED'); + } + const exists = await this.engine.hasTable(stmt.table); + if (!exists) + throw new DatabaseError(`Table "${stmt.table}" does not exist`, 'TABLE_NOT_FOUND'); + return engine.reindexTable(stmt.table); + } + /** VACUUM — 压缩 LSM + 清理碎片 */ + async executeVacuum() { + const engine = this.engine; + if (typeof engine.vacuum !== 'function') { + throw new DatabaseError(`Engine "${this.engine.name}" does not support VACUUM`, 'NOT_SUPPORTED'); + } + return engine.vacuum(); + } /** 列列表是否包含 CASE WHEN 表达式 */ hasCaseColumn(columns) { return columns.some((col) => /^\s*CASE\b/i.test(col)); @@ -10618,7 +11305,8 @@ let t = this.tableCache.get(name); if (!t) { // v0.3.2: 表操作写入后广播变更(多标签页同步) - t = new Table(this.engine, name, this.executor, (tableName) => this.broadcastChange(tableName)); + // v0.5.1: CRUD 生命周期钩子真实接线(beforeInsert/afterInsert/...) + t = new Table(this.engine, name, this.executor, (tableName) => this.broadcastChange(tableName), (hook, args) => this.pluginManager.trigger(hook, ...args)); this.tableCache.set(name, t); } return t; @@ -10653,7 +11341,10 @@ // v0.3.0: 支持分号分隔的多语句,逐条顺序执行,返回最后一条的结果 const statements = parseAll(sql); for (const stmt of statements) { + // v0.5.1: SQL 写语句触发 CRUD 生命周期钩子(与 Table API 路径一致) + await this.triggerStatementHooks(stmt, 'before'); result = await this.executor.execute(stmt); + await this.triggerStatementHooks(stmt, 'after', result); // v0.3.2: 写语句广播表变更(多标签页同步) const table = this.writeStatementTable(stmt); if (table) @@ -10793,6 +11484,17 @@ } return result; } + /** + * v0.5.1: 在线备份 — 导出全库一致性快照。 + * Aria 引擎走引擎级 backup()(MVCC 一致性视图);其余引擎回退 exportAll()。 + */ + async backup() { + this.ensureReady(); + if (typeof this.engine.backup === 'function') { + return this.engine.backup(); + } + return this.exportAll(); + } /** 订阅表变更 */ subscribe(tableName, callback) { const key = `change:${tableName}`; @@ -10836,6 +11538,46 @@ return null; } } + /** + * v0.5.1: SQL 写语句触发 CRUD 生命周期钩子。 + * INSERT/UPDATE/DELETE 分别触发 beforeInsert/afterInsert、beforeUpdate/afterUpdate、 + * beforeDelete/afterDelete(参数与 Table API 路径一致)。 + */ + async triggerStatementHooks(stmt, phase, result) { + switch (stmt.type) { + case 'INSERT': { + const rows = (stmt.values ?? []).map((vals) => { + const row = {}; + const cols = stmt.columns ?? []; + for (let i = 0; i < vals.length; i++) { + row[cols[i] ?? String(i)] = vals[i]; + } + return row; + }); + if (phase === 'before') + await this.pluginManager.trigger('beforeInsert', rows); + else + await this.pluginManager.trigger('afterInsert', rows, result); + break; + } + case 'UPDATE': { + const query = { table: stmt.table, where: stmt.where }; + if (phase === 'before') + await this.pluginManager.trigger('beforeUpdate', query, stmt.sets); + else + await this.pluginManager.trigger('afterUpdate', query, stmt.sets, result); + break; + } + case 'DELETE': { + const query = { table: stmt.from, where: stmt.where }; + if (phase === 'before') + await this.pluginManager.trigger('beforeDelete', query); + else + await this.pluginManager.trigger('afterDelete', query, result); + break; + } + } + } /** 注册迁移 */ addMigration(version, up) { this.migrations.set(version, up); @@ -10925,7 +11667,11 @@ case 'disk': return diskEngine === 'opfs' ? new OPFSEngine() : new IndexedDBEngine(); case 'aria': - return new AriaEngine({ storageBackend: diskEngine === 'opfs' ? 'opfs' : 'indexeddb' }); + // v0.4.5: 透传 AriaEngine 专属配置(walSyncMode/checkpointInterval/encryption/pageStorage 等) + return new AriaEngine({ + storageBackend: diskEngine === 'opfs' ? 'opfs' : 'indexeddb', + ...(this.config.aria ?? {}), + }); case 'hybrid': return new HybridEngine(diskEngine); default: @@ -11052,12 +11798,6 @@ getActiveConnections() { return Array.from(this.connections.keys()); } - /** - * 获取连接的引用计数 - */ - getRefCount(dbName) { - return this.refCount.get(dbName) ?? 0; - } } // --------------------------------------------------------------------------- // 全局单例 diff --git a/dist/metona-sqlark.js.map b/dist/metona-sqlark.js.map index e701f57..3183d19 100644 --- a/dist/metona-sqlark.js.map +++ b/dist/metona-sqlark.js.map @@ -1 +1 @@ -{"version":3,"file":"metona-sqlark.js","sources":["../src/constants.ts","../src/query/where-matcher.ts","../src/engine/memory.ts","../src/engine/indexeddb.ts","../src/engine/opfs.ts","../src/table/schema.ts","../src/engine/aria/types.ts","../src/engine/aria/index/memtable.ts","../src/engine/aria/index/bloom.ts","../src/engine/aria/index/sstable_builder.ts","../src/engine/aria/index/sstable.ts","../src/engine/aria/index/merge_iterator.ts","../src/engine/aria/index/lsm.ts","../src/engine/aria/wal/log.ts","../src/engine/aria/wal/checkpoint.ts","../src/engine/aria/store/backend.ts","../src/engine/aria/store/opfs_backend.ts","../src/engine/aria/page/header.ts","../src/engine/aria/store/file_manager.ts","../src/engine/aria/transaction/mvcc.ts","../src/engine/aria/page/format.ts","../src/engine/aria/buffer/eviction.ts","../src/engine/aria/buffer/pool.ts","../src/engine/aria/compression/lz4.ts","../src/engine/aria/crypto.ts","../src/engine/aria/index.ts","../src/hybrid/index.ts","../src/query/builder.ts","../src/table/table.ts","../src/query/compiler.ts","../src/sql/tokens.ts","../src/sql/lexer.ts","../src/sql/parser.ts","../src/query/executor.ts","../src/transaction/index.ts","../src/plugin/index.ts","../src/core.ts","../src/connection-manager.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;IAAA;;;IAGG;IAYH;IAaA;IACO,MAAM,WAAW,GAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAsExF;IACO,MAAM,WAAW,GAAgF,MAAM,CAAC,MAAM,CAAC;IACpH,IAAA,IAAI,EAAE,eAAe;IACrB,IAAA,IAAI,EAAE,QAAiB;IACvB,IAAA,UAAU,EAAE,WAAoB;IAChC,IAAA,OAAO,EAAE,CAAC;QACV,eAAe,EAAE,CAAC;IAClB,IAAA,KAAK,EAAE,KAAK;IACZ,IAAA,YAAY,EAAE,KAAK;IACpB,CAAA,CAAC,CAAC;IAwFH;IACA;IACA;IAEA;IACM,MAAO,aAAc,SAAQ,KAAK,CAAA;IACtC,IAAA,WAAA,CACE,OAAe,EACR,IAAY,EACZ,OAAiB,EAAA;YAExB,KAAK,CAAC,OAAO,CAAC,CAAC;YAHR,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;YACZ,IAAO,CAAA,OAAA,GAAP,OAAO,CAAU;IAGxB,QAAA,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;SAC7B;IACF,CAAA;IAED;IACA;IACA;AAEO,UAAM,OAAO,GAAG;;ICxNvB;;;;;;IAMG;IAIH;IACA;IACA;IAEA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE5C,SAAS,gBAAgB,CAAC,OAAe,EAAA;QACvC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,IAAA,IAAI,MAAM;IAAE,QAAA,OAAO,MAAM,CAAC;QAC1B,MAAM,OAAO,GAAG,OAAO;IACpB,SAAA,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACpC,SAAA,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;IACnB,SAAA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACtB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAI,CAAA,EAAA,OAAO,CAAG,CAAA,CAAA,EAAE,GAAG,CAAC,CAAC;IAC9C,IAAA,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9B,IAAA,OAAO,KAAK,CAAC;IACf,CAAC;IAED;IACA;IACA;IAEA;;;;;IAKG;IACG,SAAU,UAAU,CACxB,GAA4B,EAC5B,KAAqB,EACrB,UAA8B,EAAE,EAAA;IAEhC,IAAA,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;IAEtD,QAAA,IAAI,KAAK,KAAK,aAAa,EAAE;gBAC3B,IAAI,SAAS,KAAK,IAAI;IAAE,gBAAA,OAAO,KAAK,CAAC;gBACrC,SAAS;aACV;;IAED,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,IAAI,SAAS,KAAK,IAAI;IAAE,gBAAA,OAAO,KAAK,CAAC;gBACrC,SAAS;aACV;;IAED,QAAA,IAAI,KAAK,KAAK,MAAM,EAAE;gBACpB,MAAM,IAAI,GAAG,SAA6B,CAAC;IAC3C,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAAE,gBAAA,OAAO,KAAK,CAAC;gBACtE,SAAS;aACV;;IAED,QAAA,IAAI,KAAK,KAAK,KAAK,EAAE;gBACnB,MAAM,IAAI,GAAG,SAA6B,CAAC;IAC3C,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAAE,gBAAA,OAAO,KAAK,CAAC;gBACrE,SAAS;aACV;;IAED,QAAA,IAAI,KAAK,KAAK,MAAM,EAAE;IACpB,YAAA,IAAI,UAAU,CAAC,GAAG,EAAE,SAA2B,EAAE,OAAO,CAAC;IAAE,gBAAA,OAAO,KAAK,CAAC;gBACxE,SAAS;aACV;IACD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC;IAAE,YAAA,OAAO,KAAK,CAAC;SACpE;IACD,IAAA,OAAO,IAAI,CAAC;IACd,CAAC;IAED;IACA;IACA;IAEA,SAAS,UAAU,CACjB,KAAc,EACd,SAAkB,EAClB,GAA4B,EAC5B,OAA2B,EAAA;;IAG3B,IAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,MAAM,IAAK,SAAqC,EAAE;IAC3G,QAAA,MAAM,IAAI,GAAI,SAAqC,CAAC,IAAwB,CAAC;IAC7E,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;SAC3D;;IAED,IAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,IAAK,SAAqC,EAAE;IAC1G,QAAA,MAAM,IAAI,GAAI,SAAqC,CAAC,GAAuB,CAAC;IAC5E,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;SAC1D;;IAED,IAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,MAAM,IAAK,SAAqC,EAAE;IAC3G,QAAA,OAAO,CAAC,UAAU,CAAC,KAAK,EAAG,SAAqC,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;SACtF;;IAED,IAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACnF,OAAO,KAAK,KAAK,SAAS,CAAC;SAC5B;QAED,MAAM,GAAG,GAAG,SAAoC,CAAC;;IAGjD,IAAA,IAAI,OAAO,CAAC,IAAI,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAClE,OAAO,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,IAAc,CAAC,CAAC;SAC1C;;IAGD,IAAA,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC/C,IAAI,aAAa,GAAG,OAAO,CAAC;;IAG5B,QAAA,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,MAAM,IAAK,OAAmC,EAAE;IACrH,YAAA,aAAa,GAAG,GAAG,CAAE,OAAmC,CAAC,IAAc,CAAC,CAAC;aAC1E;YAED,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,aAAa,CAAC;IAAE,YAAA,OAAO,KAAK,CAAC;SAC5D;IACD,IAAA,OAAO,IAAI,CAAC;IACd,CAAC;IAED;IACA;IACA;IAEA,SAAS,aAAa,CAAC,KAAc,EAAE,EAAU,EAAE,OAAgB,EAAA;QACjE,QAAQ,EAAE;IACR,QAAA,KAAK,KAAK,EAAE,OAAO,KAAK,KAAK,OAAO,CAAC;IACrC,QAAA,KAAK,KAAK,EAAE,OAAO,KAAK,KAAK,OAAO,CAAC;IACrC,QAAA,KAAK,KAAK,EAAE,OAAQ,KAAgB,GAAI,OAAkB,CAAC;IAC3D,QAAA,KAAK,MAAM,EAAE,OAAQ,KAAgB,IAAK,OAAkB,CAAC;IAC7D,QAAA,KAAK,KAAK,EAAE,OAAQ,KAAgB,GAAI,OAAkB,CAAC;IAC3D,QAAA,KAAK,MAAM,EAAE,OAAQ,KAAgB,IAAK,OAAkB,CAAC;IAC7D,QAAA,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrE,QAAA,KAAK,MAAM,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvE,QAAA,KAAK,OAAO,EAAE,OAAO,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,QAAA,SAAS,OAAO,IAAI,CAAC;SACtB;IACH,CAAC;IAED;IACA;IACA;IAEgB,SAAA,YAAY,CAAC,IAA+B,EAAE,OAAkB,EAAA;IAC9E,IAAA,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YAC7B,KAAK,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE;IAClD,YAAA,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;IAC5D,YAAA,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;;gBAE5D,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,EAAE;oBAC7B,IAAI,KAAK,IAAI,KAAK;wBAAE,SAAS;IAC7B,gBAAA,MAAM,GAAG,GAAG,KAAK,KAAK,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpE,gBAAA,OAAO,GAAG,CAAC;iBACZ;IACD,YAAA,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC1C,IAAI,GAAG,KAAK,CAAC;IAAE,gBAAA,OAAO,SAAS,KAAK,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;aACzD;IACD,QAAA,OAAO,CAAC,CAAC;IACX,KAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,OAAO,CAAC,CAAU,EAAE,CAAU,EAAA;QACrC,IAAI,CAAC,KAAK,CAAC;IAAE,QAAA,OAAO,CAAC,CAAC;IACtB,IAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;IAAE,QAAA,OAAO,CAAC,CAAC;IAC5C,IAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC,CAAC;QAC7C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;IAAE,QAAA,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC9E,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACjE,IAAA,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED;IACA;IACA;IAEgB,SAAA,cAAc,CAAC,GAA4B,EAAE,OAAiB,EAAA;QAC5E,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,IAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;IACzB,QAAA,IAAI,GAAG,IAAI,GAAG,EAAE;gBACd,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;aAC3B;iBAAM;gBACL,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAClC,gBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAI,CAAA,EAAA,GAAG,CAAE,CAAA,CAAC,IAAI,GAAG,KAAK,GAAG,EAAE;wBAC1C,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;wBAC1B,MAAM;qBACP;iBACF;aACF;SACF;IACD,IAAA,OAAO,SAAS,CAAC;IACnB;;ICnMA;;;IAGG;UAOU,YAAY,CAAA;IAAzB,IAAA,WAAA,GAAA;YACW,IAAI,CAAA,IAAA,GAAG,QAAQ,CAAC;IAEjB,QAAA,IAAA,CAAA,MAAM,GAAsD,IAAI,GAAG,EAAE,CAAC;IACtE,QAAA,IAAA,CAAA,OAAO,GAA6B,IAAI,GAAG,EAAE,CAAC;IAC9C,QAAA,IAAA,CAAA,OAAO,GAAwD,IAAI,GAAG,EAAE,CAAC;YACzE,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;;IAEf,QAAA,IAAA,CAAA,SAAS,GAAwB,IAAI,GAAG,EAAE,CAAC;;YAG3C,IAAQ,CAAA,QAAA,GAIL,IAAI,CAAC;SAmhBjB;;IAhhBC,IAAA,MAAM,IAAI,CAAC,OAAe,EAAE,QAAgB,EAAA;IAC1C,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;;gBAEf,OAAO;aACR;IACD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;IACD,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAAC,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAAC,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAAC,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAAC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SAC9G;IACD,IAAA,MAAM,KAAc,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;;;IAKzC,IAAA,MAAM,MAAM,GAAoB,EAAA,OAAO,EAAE;;IAGzC,IAAA,MAAM,QAAQ,GAAA;IACZ,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;IACxB,YAAA,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAC5B;IACD,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;SACxB;QAED,MAAM,OAAO,CAAC,GAAW,EAAA;YACvB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;SACxC;IAED,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,KAAa,EAAA;YACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SAChC;;QAGD,MAAM,WAAW,CAAC,MAAmB,EAAA;YACnC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,MAAM,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,cAAc,CAAC,CAAC;;;IAGpH,QAAA,MAAM,IAAI,GAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC7D,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC9D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;aACvC;YACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IACxC,QAAA,MAAM,YAAY,GAAG,IAAI,GAAG,EAAqC,CAAC;IAClE,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;IAC5D,YAAA,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM;oBAAE,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;aACzE;YACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;SAC7C;QAED,MAAM,SAAS,CAAC,SAAiB,EAAA;IAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAAC,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAAC,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SAC/F;IAED,IAAA,MAAM,QAAQ,CAAC,SAAiB,EAAA,EAAsB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE;IAC3F,IAAA,MAAM,aAAa,GAAA,EAAwB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;IACpF,IAAA,MAAM,cAAc,CAAC,SAAiB,EAAiC,EAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,EAAE;IAEpH;;;IAGG;IACH,IAAA,MAAM,UAAU,CACd,SAAiB,EACjB,MAAsB,EACtB,MAA2D,EAAA;IAE3D,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC5C,QAAA,IAAI,MAAM,KAAK,KAAK,EAAE;gBACpB,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IAC/B,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,SAAS,CAAA,CAAA,CAAG,EAAE,eAAe,CAAC,CAAC;iBAC5G;gBACD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;gBACrC,OAAO;aACR;YACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IAChC,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,SAAS,CAAA,CAAA,CAAG,EAAE,kBAAkB,CAAC,CAAC;aAC/G;YACD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;;YAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC1C,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;IAChC,YAAA,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG;IAAE,gBAAA,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACjD;SACF;;IAGD,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,IAA+B,EAAA;IAC7D,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAa,EAAE,CAAC;IAEzB,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACnD,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,YAAA,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;oBAAE,MAAM,IAAI,aAAa,CAAC,CAA0B,uBAAA,EAAA,OAAO,CAAe,YAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,eAAe,CAAC,CAAC;IAC/H,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC3C,YAAA,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACrD,YAAA,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACnB;IACD,QAAA,OAAO,GAAG,CAAC;SACZ;IAED,IAAA,MAAM,IAAI,CAAC,SAAiB,EAAE,KAAgB,EAAA;IAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC1C,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAE3D,QAAA,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;IACtD,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC,CAAC,CAAC;aAClE;IACD,QAAA,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7C,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;aAChD;IACD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;YAC5C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;YAChD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACzE,YAAA,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,OAAQ,CAAC,CAAC,CAAC;aACrE;IACD,QAAA,OAAO,OAAO,CAAC;SAChB;;IAGD,IAAA,MAAM,UAAU,CAAC,SAAiB,EAAE,KAAgB,EAAE,KAA6C,EAAA;IACjG,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxE,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC;IACtC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;IACnF,cAAE,CAAC,GAA4B,KAAK,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,OAAQ,CAAC;kBACrE,IAAI,CAAC;YAET,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;gBAChC,IAAI,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC;oBAAE,SAAS;IACzD,YAAA,IAAI,OAAO,GAAG,MAAM,EAAE;IAAE,gBAAA,OAAO,EAAE,CAAC;oBAAC,SAAS;iBAAE;IAC9C,YAAA,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACpC,YAAA,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,IAAI,KAAK;oBAAE,MAAM;aAC3B;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAE,OAAgC,EAAA;IAChF,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,KAAK,GAAG,CAAC,CAAC;;IAEd,QAAA,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE;gBAClC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;;oBAEzF,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC5C,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IACvC,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBACtC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;;IAErC,gBAAA,IAAI,KAAK,KAAK,EAAE,EAAE;wBAChB,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;qBACrD;IACD,gBAAA,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjB,gBAAA,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBAC1B,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9C,gBAAA,KAAK,EAAE,CAAC;iBACT;aACF;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IAED;;;;IAIG;IACK,IAAA,MAAM,kBAAkB,CAAC,SAAiB,EAAE,KAAa,EAAE,KAAa,EAAA;;YAE9E,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;gBACpD,IAAI,YAAY,KAAK,SAAS;oBAAE,SAAS;IACzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;wBAAE,SAAS;IACrD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,QAAQ,KAAK,SAAS;wBAAE,SAAS;oBACrC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACnD,gBAAA,IAAI,CAAC,YAAY;wBAAE,SAAS;oBAC5B,KAAK,MAAM,GAAG,MAAM,CAAC,IAAI,YAAY,EAAE;IACrC,oBAAA,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;IACvE,wBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,eAAA,EAAkB,SAAS,CAAU,OAAA,EAAA,KAAK,CAAmB,gBAAA,EAAA,OAAO,SAAS,YAAY,CAAA,oBAAA,CAAsB,EAC/G,uBAAuB,CACxB,CAAC;yBACH;qBACF;iBACF;aACF;;YAED,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;gBACpD,IAAI,YAAY,KAAK,SAAS;oBAAE,SAAS;IACzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;wBAAE,SAAS;IACrD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,QAAQ,KAAK,SAAS;wBAAE,SAAS;oBACrC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACnD,gBAAA,IAAI,CAAC,YAAY;wBAAE,SAAS;oBAC5B,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU;wBAAE,SAAS;oBAC9E,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAY,EAAE;wBAC1C,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;4BAAE,SAAS;wBAChD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACrD,oBAAA,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC;wBAC/D,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;qBACjD;iBACF;aACF;SACF;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAA;IAC9C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC1C,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE;gBAC7B,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;;oBAEzF,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5C,gBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBACnB;aACF;;YAED,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,QAAA,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE;gBACzB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1B,YAAA,IAAI,GAAG;IAAE,gBAAA,YAAY,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;aACvE;YACD,KAAK,MAAM,EAAE,IAAI,QAAQ;IAAE,YAAA,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5C,QAAA,OAAO,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC;SACvC;IAED,IAAA,MAAM,KAAK,CAAC,SAAiB,EAAE,KAAiB,EAAA;IAC9C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC1C,QAAA,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC;YAC9E,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;IAAE,YAAA,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;IAAE,gBAAA,MAAM,EAAE,CAAC;aAAE;IACjF,QAAA,OAAO,MAAM,CAAC;SACf;QAED,MAAM,KAAK,CAAC,SAAiB,EAAA;IAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,KAAK,EAAE,CAAC;YACpC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,QAAA,IAAI,YAAY;IAAE,YAAA,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,MAAM,EAAE;oBAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;SAClF;;IAID,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAgB,EAAA;IACnE,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,kBAAkB,CAAC,CAAC;IACtH,QAAA,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM;IAAE,YAAA,OAAO;IAC1C,QAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,QAAA,IAAI,MAAM;IAAE,YAAA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YAEjC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAClD,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE;IAC7B,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;IACzC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;wBAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;oBACzD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBAC9B;aACF;SACF;IAED,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,UAAmB,EAAA;IACpE,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,kBAAkB,CAAC,CAAC;;YAEtH,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBACnC,MAAM,IAAI,aAAa,CAAC,CAAoB,iBAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;aAClH;IACD,QAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,QAAA,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;YACtB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,QAAA,IAAI,YAAY;IAAE,YAAA,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC/C;;IAID,IAAA,MAAM,gBAAgB,GAAA;YACpB,IAAI,IAAI,CAAC,QAAQ;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,iCAAiC,EAAE,WAAW,CAAC,CAAC;YAC3F,IAAI,CAAC,QAAQ,GAAG;gBACd,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;IACzC,YAAA,OAAO,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC9B,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7C,CAAC;SACH;IAED,IAAA,MAAM,iBAAiB,GAAA;YACrB,IAAI,CAAC,IAAI,CAAC,QAAQ;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;IAChF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;IAED,IAAA,MAAM,mBAAmB,GAAA;YACvB,IAAI,CAAC,IAAI,CAAC,QAAQ;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;YAChF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;;IAIO,IAAA,eAAe,CAAC,MAAyD,EAAA;IAC/E,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgD,CAAC;YACtE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE;IAC3B,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmC,CAAC;IAC9D,YAAA,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;oBAAE,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACxD,YAAA,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;aAC1B;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IAEO,IAAA,gBAAgB,CAAC,MAA2D,EAAA;IAClF,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkD,CAAC;YACxE,KAAK,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,MAAM,EAAE;IAC9C,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqC,CAAC;gBAChE,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,YAAY,EAAE;IAC1C,gBAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IACjD,gBAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ;wBAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,gBAAA,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;iBAC/B;IACD,YAAA,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;aAClC;IACD,QAAA,OAAO,KAAK,CAAC;SACd;;IAGO,IAAA,WAAW,CAAC,SAAiB,EAAA;YACnC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAA,OAAA,EAAU,SAAS,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;SACpH;IAEO,IAAA,aAAa,CAAC,MAAmB,EAAA;IACvC,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAAE,IAAI,GAAG,CAAC,UAAU;IAAE,gBAAA,OAAO,IAAI,CAAC;aAAE;YAC9F,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SACvC;QAEO,WAAW,CAAC,MAAmB,EAAE,GAA4B,EAAA;YACnE,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IAC9D,YAAA,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;gBACzB,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;IAAE,gBAAA,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;IAChF,YAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;IAC9D,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,OAAO,CAAA,wBAAA,EAA2B,MAAM,CAAC,IAAI,CAAA,CAAA,CAAG,EAAE,kBAAkB,CAAC,CAAC;iBAC1G;IACD,YAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;oBAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACvF,IAAI,KAAK,KAAK,SAAS;IAAE,gBAAA,SAAS,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;aACrD;IACD,QAAA,OAAO,SAAS,CAAC;SAClB;IAEO,IAAA,SAAS,CAAC,OAAe,EAAE,IAAY,EAAE,KAAc,EAAA;IAC7D,QAAA,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC;YAC5B,QAAQ,IAAI;IACV,YAAA,KAAK,QAAQ;oBAAE,IAAI,MAAM,KAAK,QAAQ;wBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,OAAO,CAAyB,sBAAA,EAAA,MAAM,CAAE,CAAA,EAAE,YAAY,CAAC,CAAC;oBAAC,MAAM;IAC1I,YAAA,KAAK,QAAQ;oBAAE,IAAI,MAAM,KAAK,QAAQ;wBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,OAAO,CAAyB,sBAAA,EAAA,MAAM,CAAE,CAAA,EAAE,YAAY,CAAC,CAAC;oBAAC,MAAM;IAC1I,YAAA,KAAK,SAAS;oBAAE,IAAI,MAAM,KAAK,SAAS;wBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,OAAO,CAA0B,uBAAA,EAAA,MAAM,CAAE,CAAA,EAAE,YAAY,CAAC,CAAC;oBAAC,MAAM;IAC7I,YAAA,KAAK,MAAM;IAAE,gBAAA,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC;wBAAE,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,OAAO,CAAsB,oBAAA,CAAA,EAAE,YAAY,CAAC,CAAC;oBAAC,MAAM;IACnK,YAAA,KAAK,MAAM;oBAAE,IAAI,MAAM,KAAK,QAAQ;wBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,OAAO,CAA+B,4BAAA,EAAA,MAAM,CAAE,CAAA,EAAE,YAAY,CAAC,CAAC;oBAAC,MAAM;aAC/I;SACF;;QAGO,eAAe,CAAC,MAAmB,EAAE,GAA4B,EAAA;IACvE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnD,QAAA,IAAI,CAAC,YAAY;gBAAE,OAAO;IAC1B,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IAC9D,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI;oBAAE,SAAS;gBACpF,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3C,YAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE;IAC1C,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,uCAAA,EAA0C,OAAO,CAAA,YAAA,EAAe,MAAM,CAAC,IAAI,CAAA,CAAA,CAAG,EAAE,kBAAkB,CAAC,CAAC;iBAC7H;aACF;SACF;;IAGO,IAAA,cAAc,CACpB,SAAiB,EAAE,KAA2C,EAAE,KAAgB,EAAA;YAEhF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACrE,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;;IAE1D,YAAA,IAAI,WAAoB,CAAC;gBACzB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;oBACvD,WAAW,GAAG,SAAS,CAAC;iBACzB;IAAM,iBAAA,IAAI,KAAK,IAAK,SAAqC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAoC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;IAC5H,gBAAA,WAAW,GAAI,SAAqC,CAAC,GAAG,CAAC;iBAC1D;qBAAM;oBACL,SAAS;iBACV;gBACD,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,QAAQ,EAAE;oBACZ,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;oBACtC,IAAI,GAAG,EAAE;wBACP,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,oBAAA,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;4BAAE,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAAC,wBAAA,IAAI,CAAC;IAAE,4BAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;yBAAE;IACzE,oBAAA,OAAO,MAAM,CAAC;qBACf;IACD,gBAAA,OAAO,EAAE,CAAC;iBACX;aACF;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;SACnC;;IAGO,IAAA,aAAa,CAAC,SAAiB,EAAE,GAA4B,EAAE,EAAU,EAAA;YAC/E,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,QAAA,IAAI,CAAC,YAAY;gBAAE,OAAO;YAC1B,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,YAAY,EAAE;IAC9C,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;IACzC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;wBAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;oBACzD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBAC9B;aACF;SACF;;IAGO,IAAA,kBAAkB,CAAC,SAAiB,EAAE,GAA4B,EAAE,EAAU,EAAA;YACpF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,QAAA,IAAI,CAAC,YAAY;gBAAE,OAAO;YAC1B,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,YAAY,EAAE;IAC9C,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;oBACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAChC,IAAI,GAAG,EAAE;IACP,oBAAA,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACf,oBAAA,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;IAAE,wBAAA,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;qBAC5C;iBACF;aACF;SACF;;IAID;;;IAGG;IACK,IAAA,MAAM,aAAa,CAAC,SAAiB,EAAE,OAAe,EAAE,IAA6B,EAAA;YAC3F,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;gBACpD,IAAI,YAAY,KAAK,SAAS;oBAAE,SAAS;IAEzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;wBAAE,SAAS;IAErD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,QAAQ,KAAK,SAAS;wBAAE,SAAS;oBAErC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACnD,gBAAA,IAAI,CAAC,YAAY;wBAAE,SAAS;;oBAG5B,MAAM,QAAQ,GAAa,EAAE,CAAC;oBAC9B,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAY,EAAE;wBAC1C,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,OAAO,EAAE;IACvC,wBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBACtB;qBACF;;IAGD,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;IACzD,oBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,oBAAA,EAAuB,SAAS,CAAA,gBAAA,EAAmB,OAAO,CAAA,MAAA,EAAS,YAAY,CAAA,oBAAA,CAAsB,EACrG,uBAAuB,CACxB,CAAC;qBACH;IAED,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE;;IAEjC,oBAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;4BAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;4BACvC,IAAI,MAAM,EAAE;;gCAEV,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACrD,4BAAA,YAAY,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;6BACvE;IACD,wBAAA,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,wBAAA,YAAY,EAAE,CAAC;yBAChB;qBACF;IAAM,qBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;IACzC,oBAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;4BAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;4BACvC,IAAI,MAAM,EAAE;;IAEV,4BAAA,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;IAC7D,gCAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;oCACzD,IAAI,GAAG,EAAE;IACP,oCAAA,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;qCACzC;iCACF;IACD,4BAAA,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;6BACxB;yBACF;qBACF;iBACF;aACF;IAED,QAAA,OAAO,YAAY,CAAC;SACrB;IACF;;IC5iBD;;;;;IAKG;UAQU,eAAe,CAAA;IAA5B,IAAA,WAAA,GAAA;YACW,IAAI,CAAA,IAAA,GAAG,WAAW,CAAC;YAEpB,IAAE,CAAA,EAAA,GAAuB,IAAI,CAAC;YAC9B,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;YACZ,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;IACZ,QAAA,IAAA,CAAA,WAAW,GAAiB,IAAI,YAAY,EAAE,CAAC;;YAG/C,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;SAsyB1B;IApyBC,IAAA,MAAM,IAAI,CAAC,MAAc,EAAE,OAAe,EAAA;;IAExC,QAAA,MAAM,iBAAiB,GAAG,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjE,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,QAAA,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC;YACjC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;;IAGvD,QAAA,IAAI,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;YACtE,IAAI,CAAC,yBAAyB,EAAE,CAAC;;;IAIjC,QAAA,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAE/B,QAAA,IAAI;;IAEF,YAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;aACnC;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,aAAa,CAAC,CAAiC,8BAAA,EAAA,MAAM,CAAG,CAAA,CAAA,EAAE,0BAA0B,EAAE,KAAK,CAAC,CAAC;aACxG;SACF;;QAGO,yBAAyB,GAAA;YAC/B,IAAI,CAAC,IAAI,CAAC,EAAE;gBAAE,OAAO;IACrB,QAAA,IAAI,CAAC,EAAE,CAAC,eAAe,GAAG,MAAK;IAC7B,YAAA,IAAI,IAAI,CAAC,EAAE,EAAE;IACX,gBAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAChB,gBAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;;oBAEf,OAAO,CAAC,IAAI,CAAC,CAAA,0BAAA,EAA6B,IAAI,CAAC,MAAM,CAAmE,iEAAA,CAAA,CAAC,CAAC;iBAC3H;IACH,SAAC,CAAC;SACH;IAED;;;;;IAKG;IACK,IAAA,MAAM,qBAAqB,CAAC,MAAc,EAAE,gBAAwB,EAAA;YAC1E,MAAM,eAAe,GAAG,EAAE,CAAC;YAC3B,IAAI,gBAAgB,GAAG,gBAAgB,CAAC;IACxC,QAAA,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,eAAe,EAAE,OAAO,EAAE,EAAE;IAC1D,YAAA,IAAI;IACF,gBAAA,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC;iBAC9E;gBAAC,OAAO,KAAK,EAAE;oBACd,MAAM,GAAG,GAAG,KAA0B,CAAC;oBACvC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE;wBACtC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;wBAChE,IAAI,cAAc,IAAI,CAAC,IAAI,cAAc,KAAK,gBAAgB,EAAE;4BAC9D,gBAAgB,GAAG,cAAc,CAAC;IAClC,wBAAA,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC;4BAC9B,SAAS;yBACV;wBACD,MAAM,IAAI,aAAa,CACrB,CAA6B,0BAAA,EAAA,MAAM,CAAqB,mBAAA,CAAA,EACxD,mBAAmB,EACnB,KAAK,CACN,CAAC;qBACH;oBACD,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE;;wBAEtC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;wBACxE,SAAS;qBACV;oBACD,MAAM,IAAI,aAAa,CAAC,CAA6B,0BAAA,EAAA,MAAM,CAAG,CAAA,CAAA,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;iBAC1F;aACF;YACD,MAAM,IAAI,aAAa,CAAC,CAAA,WAAA,EAAc,MAAM,CAAc,YAAA,CAAA,EAAE,aAAa,CAAC,CAAC;SAC5E;IAED;;;;IAIG;IACK,IAAA,WAAW,CAAC,MAAc,EAAE,OAAe,EAAE,SAAiB,EAAA;YACpE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBACrC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAChD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,YAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAK;IAC9B,gBAAA,IAAI,OAAO;wBAAE,OAAO;oBACpB,OAAO,GAAG,IAAI,CAAC;;IAEf,gBAAA,MAAM,YAAY,GAAG,OAAO,YAAY,KAAK,WAAW;IACtD,sBAAE,IAAI,YAAY,CAAC,2BAA2B,EAAE,cAAc,CAAC;IAC/D,sBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;oBACpF,MAAM,CAAC,YAAY,CAAC,CAAC;iBACtB,EAAE,SAAS,CAAC,CAAC;IACd,YAAA,OAAO,CAAC,SAAS,GAAG,MAAK;oBACvB,IAAI,OAAO,EAAE;;IAEX,oBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;wBACvB,OAAO;qBACR;oBACD,OAAO,GAAG,IAAI,CAAC;oBACf,YAAY,CAAC,OAAO,CAAC,CAAC;IACtB,gBAAA,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,OAAO,GAAG,MAAK;IACrB,gBAAA,IAAI,OAAO;wBAAE,OAAO;oBACpB,OAAO,GAAG,IAAI,CAAC;oBACf,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;IACrE,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,SAAS,GAAG,MAAK;;IAEzB,aAAC,CAAC;IACJ,SAAC,CAAC,CAAC;SACJ;;IAGO,IAAA,qBAAqB,CAAC,MAAc,EAAA;YAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBACrC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,YAAA,OAAO,CAAC,SAAS,GAAG,MAAK;IACvB,gBAAA,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7C,gBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBACvB,OAAO,CAAC,aAAa,CAAC,CAAC;IACzB,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,OAAO,GAAG,MAAK;oBACrB,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;IAC5E,aAAC,CAAC;IACJ,SAAC,CAAC,CAAC;SACJ;IAED;;;;IAIG;IACK,IAAA,MAAM,iBAAiB,GAAA;YAC7B,IAAI,CAAC,IAAI,CAAC,EAAE;gBAAE,OAAO;YACrB,IAAI,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBAAE,OAAO;YACjE,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;IACvC,QAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAChB,QAAA,IAAI,CAAC,EAAE,GAAG,MAAM,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,MAAM,KAAI;IAC3D,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,YAAA,OAAO,CAAC,eAAe,GAAG,MAAK;IAC7B,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;oBAC3B,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;wBACrD,GAAG,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;qBAC/D;IACH,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,SAAS,GAAG,MAAK;IACvB,gBAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;oBACzB,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACjC,gBAAA,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,aAAC,CAAC;gBACF,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAC5B,IAAI,aAAa,CAAC,+BAA+B,EAAE,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC,CACvF,CAAC;IACJ,SAAC,CAAC,CAAC;SACJ;IAED;;;;IAIG;IACK,IAAA,MAAM,oBAAoB,GAAA;IAChC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;;YAG3B,IAAI,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;gBACnD,MAAM,OAAO,GAAuC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACxF,gBAAA,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC;IAClG,gBAAA,GAAG,CAAC,SAAS,GAAG,MAAM,OAAO,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,EAAwC,CAAC;IACxF,gBAAA,GAAG,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxC,aAAC,CAAC,CAAC;IACH,YAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;IACzB,gBAAA,IAAI;wBACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAgB,CAAC;IACrD,oBAAA,IAAI,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;4BACzD,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;yBAC5C;qBACF;IAAC,gBAAA,MAAM;;qBAEP;iBACF;aACF;;YAGD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAC,CAAC;IAC1F,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;;gBAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAClE,YAAA,IAAI,QAAQ;oBAAE,SAAS;gBAEvB,MAAM,OAAO,GAAqD,EAAE,CAAC;gBACrE,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBACjD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;;IAGxC,YAAA,MAAM,EAAE,GAAG,KAAK,CAAC,OAAiB,CAAC;IACnC,YAAA,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;IAGnD,YAAA,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;IAClD,gBAAA,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;wBAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IACjB,wBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;yBAChD;qBACF;iBACF;;gBAGD,MAAM,IAAI,GAA8B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IAC5E,gBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IAC3B,gBAAA,GAAG,CAAC,SAAS,GAAG,MAAM,OAAO,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,EAA+B,CAAC;IAC/E,gBAAA,GAAG,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxC,aAAC,CAAC,CAAC;IACH,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;IACnB,gBAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;IAClD,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IACjB,wBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;yBAChD;qBACF;iBACF;IAED,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;aAClE;SACF;IAED,IAAA,MAAM,KAAK,GAAA;;IAET,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;IACjB,YAAA,IAAI;IACF,gBAAA,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;iBAClC;IAAC,YAAA,MAAM,mBAAmB;aAC5B;IACD,QAAA,IAAI,IAAI,CAAC,EAAE,EAAE;gBACX,IAAI,CAAC,EAAE,CAAC,eAAe,GAAG,IAAI,CAAC;IAC/B,YAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAChB,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;aAChB;IACD,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;SAChC;IAED;;;IAGG;IACH,IAAA,MAAM,MAAM,GAAA;YACV,IAAI,CAAC,IAAI,CAAC,EAAE;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAC;IAC5E,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC/B,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,QAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;SACnC;IAED;;;IAGG;IACH,IAAA,MAAM,QAAQ,GAAA;IACZ,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;;YAE3B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;IAC1D,QAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;gBAC7B,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACxC;;IAED,QAAA,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;YAClC,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;IAC1C,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,YAAA,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,KAAI;IAClC,gBAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA2B,CAAC,MAAM,CAAC;oBACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAC,CAAC;IACzF,gBAAA,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;IAC3B,oBAAA,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;qBAC7B;oBACD,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;wBACrD,GAAG,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;qBAC/D;yBAAM;;IAEL,oBAAA,MAAM,EAAE,GAAI,KAAK,CAAC,MAA2B,CAAC,WAAY,CAAC;wBAC3D,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;qBAC3C;IACH,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,SAAS,GAAG,MAAK;IACvB,gBAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;oBACzB,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACjC,gBAAA,OAAO,EAAE,CAAC;IACZ,aAAC,CAAC;gBACF,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,0BAA0B,EAAE,iBAAiB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChH,OAAO,CAAC,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,CAAc,WAAA,EAAA,IAAI,CAAC,MAAM,CAAA,YAAA,CAAc,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9G,SAAC,CAAC,CAAC;SACJ;;QAID,MAAM,OAAO,CAAC,GAAW,EAAA;IACvB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;YAClE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBACrC,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,UAAU,CAAC;qBACtD,WAAW,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAU,OAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAC;IACvD,YAAA,GAAG,CAAC,SAAS,GAAG,MAAK;IACnB,gBAAA,MAAM,GAAG,GAAG,GAAG,CAAC,MAA0C,CAAC;oBAC3D,OAAO,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACrE,aAAC,CAAC;IACF,YAAA,GAAG,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxC,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,KAAa,EAAA;IACtC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBAAE,OAAO;YAC7D,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;gBAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;gBAC1D,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAU,OAAA,EAAA,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAChF,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;gBAChC,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,2BAA2B,GAAG,CAAA,CAAA,CAAG,EAAE,gBAAgB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9G,SAAC,CAAC,CAAC;SACJ;QAED,MAAM,GAAA,EAAc,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;;QAG9C,MAAM,WAAW,CAAC,MAAmB,EAAA;YACnC,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,QAAQ;IAAE,YAAA,OAAO;IAC1B,QAAA,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;SACnC;QAED,MAAM,SAAS,CAAC,SAAiB,EAAA;YAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC5C,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;IAC1B,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;SACpC;IAED,IAAA,MAAM,QAAQ,CAAC,SAAiB,EAAsB,EAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE;IACpH,IAAA,MAAM,aAAa,GAAA,EAAwB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE;IACjG,IAAA,MAAM,cAAc,CAAC,SAAiB,EAAA,EAAiC,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE;IAE3H;;;IAGG;IACH,IAAA,MAAM,UAAU,CACd,SAAiB,EACjB,MAAsB,EACtB,MAA2D,EAAA;IAE3D,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7D,IAAI,IAAI,CAAC,QAAQ;IAAE,YAAA,OAAO;YAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAChE,IAAI,MAAM,EAAE;IACV,YAAA,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;aAClC;IACD,QAAA,IAAI,MAAM,KAAK,MAAM,EAAE;;IAErB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBACjE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;IACjC,gBAAA,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE;IACtB,oBAAA,MAAM,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;IACxB,oBAAA,OAAQ,IAAgC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,oBAAA,OAAO,IAAI,CAAC;qBACb;IACD,gBAAA,OAAO,GAAG,CAAC;IACb,aAAC,CAAC,CAAC;IACH,YAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;oBACxB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;wBAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;wBAClD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,oBAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;IAC3B,wBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;yBAChB;wBACD,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;wBAChC,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,sBAAsB,SAAS,CAAA,mBAAA,CAAqB,EAAE,cAAc,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/H,iBAAC,CAAC,CAAC;iBACJ;aACF;SACF;;IAGD,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,IAA+B,EAAA;IAC7D,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC3D,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,GAAG,CAAC;YAC9B,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACtC,QAAA,OAAO,GAAG,CAAC;SACZ;IAED,IAAA,MAAM,IAAI,CAAC,SAAiB,EAAE,KAAgB,EAAA;;YAE5C,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SACvC;;IAGD,IAAA,MAAM,UAAU,CAAC,SAAiB,EAAE,KAAgB,EAAE,KAA6C,EAAA;IACjG,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;IACjB,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;aAC7D;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAClH,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,KAAK,CAAC,GAAG,CAAC,CAAC;IACX,YAAA,KAAK,EAAE,CAAC;aACT;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAE,OAAgC,EAAA;IAChF,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YACvE,IAAI,IAAI,CAAC,QAAQ;IAAE,YAAA,OAAO,KAAK,CAAC;YAChC,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAChD,QAAA,OAAO,KAAK,CAAC;SACd;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAA;IAC9C,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC9D,IAAI,IAAI,CAAC,QAAQ;IAAE,YAAA,OAAO,KAAK,CAAC;YAChC,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACvC,QAAA,OAAO,KAAK,CAAC;SACd;IAED,IAAA,MAAM,KAAK,CAAC,SAAiB,EAAE,KAAiB,EAAA;YAC9C,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/F,OAAO,OAAO,CAAC,MAAM,CAAC;SACvB;QAED,MAAM,KAAK,CAAC,SAAiB,EAAA;YAC3B,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;IAC1B,QAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SAChC;;IAID,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAgB,EAAA;IACnE,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9D,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;IAC1B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;gBAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAC9C,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,YAAA,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,KAAI;IAClC,gBAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA2B,CAAC,MAAM,CAAC;oBACtD,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;oBACnD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,gBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA,IAAA,EAAO,MAAM,CAAA,CAAE,CAAC,EAAE;IAC/C,oBAAA,KAAK,CAAC,WAAW,CAAC,CAAO,IAAA,EAAA,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC;qBACzE;IACH,aAAC,CAAC;gBACF,OAAO,CAAC,SAAS,GAAG,MAAQ,EAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBACnE,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,CAAA,wBAAA,EAA2B,SAAS,CAAI,CAAA,EAAA,MAAM,CAAG,CAAA,CAAA,EAAE,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3I,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,UAAmB,EAAA;YACpE,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACpD,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;IAC1B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;gBAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAC9C,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,YAAA,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,KAAI;IAClC,gBAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA2B,CAAC,MAAM,CAAC;oBACtD,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;oBACnD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;oBACxC,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA,IAAA,EAAO,MAAM,CAAA,CAAE,CAAC,EAAE;IAC9C,oBAAA,KAAK,CAAC,WAAW,CAAC,OAAO,MAAM,CAAA,CAAE,CAAC,CAAC;qBACpC;IACH,aAAC,CAAC;gBACF,OAAO,CAAC,SAAS,GAAG,MAAQ,EAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBACnE,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,CAAA,sBAAA,EAAyB,SAAS,CAAI,CAAA,EAAA,MAAM,CAAG,CAAA,CAAA,EAAE,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACzI,SAAC,CAAC,CAAC;SACJ;;IAID,IAAA,MAAM,gBAAgB,GAAA;YACpB,IAAI,IAAI,CAAC,QAAQ;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,iCAAiC,EAAE,WAAW,CAAC,CAAC;IAC3F,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;;IAErB,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;SAC3C;IAED,IAAA,MAAM,iBAAiB,GAAA;YACrB,IAAI,CAAC,IAAI,CAAC,QAAQ;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;;;IAGhF,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IACxB,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;IAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;IAED,IAAA,MAAM,mBAAmB,GAAA;YACvB,IAAI,CAAC,IAAI,CAAC,QAAQ;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;;IAEhF,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;IAC7C,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;;QAIO,MAAM,cAAc,CAAC,MAAmB,EAAA;IAC9C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;gBAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAC9C,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,YAAA,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,KAAI;IAClC,gBAAA,MAAM,EAAE,GAAI,KAAK,CAAC,MAA2B,CAAC,MAAM,CAAC;IACrD,gBAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACrH,gBAAA,MAAM,KAAK,GAAG,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvE,gBAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;wBAC9D,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,KAAK,QAAQ,EAAE;IACxC,wBAAA,KAAK,CAAC,WAAW,CAAC,OAAO,OAAO,CAAA,CAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC;yBAClF;qBACF;;oBAED,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;wBACpD,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;qBAC9D;IACH,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,SAAS,GAAG,MAAK;IACvB,gBAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;;IAEzB,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;oBACrE,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACnG,QAAQ,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;oBACtC,QAAQ,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,CAAA,8BAAA,EAAiC,MAAM,CAAC,IAAI,CAAG,CAAA,CAAA,EAAE,kBAAkB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1I,aAAC,CAAC;gBACF,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,CAAA,wBAAA,EAA2B,MAAM,CAAC,IAAI,CAAG,CAAA,CAAA,EAAE,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACnI,SAAC,CAAC,CAAC;SACJ;QAEO,MAAM,YAAY,CAAC,SAAiB,EAAA;IAC1C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;gBAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAC9C,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,YAAA,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,KAAI;IAClC,gBAAA,MAAM,EAAE,GAAI,KAAK,CAAC,MAA2B,CAAC,MAAM,CAAC;IACrD,gBAAA,IAAI,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC;IAAE,oBAAA,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC/E,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,SAAS,GAAG,MAAK;IACvB,gBAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;;oBAEzB,IAAI,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;IACxD,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;wBACrE,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1D,oBAAA,QAAQ,CAAC,OAAO,GAAG,MAAK,GAAsB,CAAC;qBAChD;IACD,gBAAA,OAAO,EAAE,CAAC;IACZ,aAAC,CAAC;gBACF,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,yBAAyB,SAAS,CAAA,CAAA,CAAG,EAAE,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/H,SAAC,CAAC,CAAC;SACJ;IAEO,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,IAA+B,EAAA;IACxE,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBACrC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBACxC,KAAK,MAAM,GAAG,IAAI,IAAI;IAAE,gBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvC,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;gBAChC,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,sBAAsB,SAAS,CAAA,CAAA,CAAG,EAAE,cAAc,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7G,SAAC,CAAC,CAAC;SACJ;IAEO,IAAA,MAAM,OAAO,CAAC,SAAiB,EAAE,KAAgB,EAAA;IACvD,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;;IAG3B,QAAA,IAAI,KAAK,CAAC,KAAK,EAAE;IACf,YAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;gBACvE,IAAI,WAAW,KAAK,IAAI;IAAE,gBAAA,OAAO,WAAW,CAAC;aAC9C;;YAGD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBACrC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBACjD,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/C,YAAA,GAAG,CAAC,SAAS,GAAG,MAAK;IACnB,gBAAA,IAAI,OAAO,GAA8B,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;IAC1D,gBAAA,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;IACtD,oBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC,CAAC,CAAC;qBAClE;IACD,gBAAA,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC7C,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;qBAChD;IACD,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;oBACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;oBAC5C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;oBAChD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACzE,oBAAA,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,OAAQ,CAAC,CAAC,CAAC;qBACjE;oBACD,OAAO,CAAC,OAAO,CAAC,CAAC;IACnB,aAAC,CAAC;gBACF,GAAG,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,oBAAoB,SAAS,CAAA,CAAA,CAAG,EAAE,gBAAgB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/G,SAAC,CAAC,CAAC;SACJ;;IAGO,IAAA,MAAM,iBAAiB,CAC7B,EAAe,EACf,SAAiB,EACjB,KAAgB,EAAA;YAEhB,IAAI,CAAC,KAAK,CAAC,KAAK;IAAE,YAAA,OAAO,IAAI,CAAC;IAE9B,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;;gBAE1D,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM;oBAAE,SAAS;;IAGhE,YAAA,IAAI,WAAoB,CAAC;gBACzB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;oBACvD,WAAW,GAAG,SAAS,CAAC;iBACzB;IAAM,iBAAA,IAAI,KAAK,IAAK,SAAqC,EAAE;IAC1D,gBAAA,WAAW,GAAI,SAAqC,CAAC,GAAG,CAAC;iBAC1D;qBAAM;oBACL,SAAS;iBACV;;IAGD,YAAA,MAAM,SAAS,GAAG,CAAO,IAAA,EAAA,GAAG,EAAE,CAAC;IAC/B,YAAA,IAAI;oBACF,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;wBAC3C,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;wBACjD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;wBACxC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;IACzC,wBAAA,OAAO,CAAC,IAAI,CAAC,CAAC;4BACd,OAAO;yBACR;wBACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;wBACrC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,WAA0B,CAAC,CAAC;IACrD,oBAAA,GAAG,CAAC,SAAS,GAAG,MAAK;IACnB,wBAAA,IAAI,OAAO,GAA8B,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;;IAE1D,wBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAM,CAAC,CAAC,MAAM,CAChD,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,MAAM,CAChE,CAAC;IACF,wBAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;IACxB,4BAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC,CAAC,CAAC;6BAClE;IACD,wBAAA,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gCAC7C,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;6BAChD;IACD,wBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;4BACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;4BAC5C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;4BAChD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACzE,4BAAA,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,OAAQ,CAAC,CAAC,CAAC;6BACjE;4BACD,OAAO,CAAC,OAAO,CAAC,CAAC;IACnB,qBAAC,CAAC;wBACF,GAAG,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,CAAA,yBAAA,EAA4B,SAAS,CAAI,CAAA,EAAA,GAAG,CAAG,CAAA,CAAA,EAAE,gBAAgB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9H,iBAAC,CAAC,CAAC;iBACJ;IAAC,YAAA,MAAM;oBACN,OAAO,IAAI,CAAC;iBACb;aACF;IACD,QAAA,OAAO,IAAI,CAAC;SACb;IAEO,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,KAAgB,EAAE,OAAgC,EAAA;IAC3F,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBACrC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IACjC,YAAA,SAAS,CAAC,SAAS,GAAG,MAAK;oBACzB,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,IAAI,EAAE,EAAE;wBACxC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;IACzF,wBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAAC,wBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;yBAC7C;qBACF;IACH,aAAC,CAAC;gBACF,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;gBAChC,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,sBAAsB,SAAS,CAAA,CAAA,CAAG,EAAE,cAAc,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7G,SAAC,CAAC,CAAC;SACJ;IAEO,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,KAAgB,EAAA;IACzD,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAChE,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAA,OAAA,EAAU,SAAS,CAAa,WAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;IAC1F,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACrH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBACrC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IACjC,YAAA,SAAS,CAAC,SAAS,GAAG,MAAK;oBACzB,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,IAAI,EAAE,EAAE;wBACxC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;4BACzF,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAgB,CAAC,CAAC;yBAC5C;qBACF;IACH,aAAC,CAAC;gBACF,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;gBAChC,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,sBAAsB,SAAS,CAAA,CAAA,CAAG,EAAE,cAAc,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7G,SAAC,CAAC,CAAC;SACJ;QAEO,MAAM,QAAQ,CAAC,SAAiB,EAAA;IACtC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBACrC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAClD,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;gBAClC,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;gBAChC,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,qBAAqB,SAAS,CAAA,CAAA,CAAG,EAAE,cAAc,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5G,SAAC,CAAC,CAAC;SACJ;;QAGO,MAAM,aAAa,CAAC,MAAmB,EAAA;IAC7C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBAAE,OAAO;YAC7D,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;gBAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;gBAC1D,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC7F,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;gBAChC,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,CAAA,8BAAA,EAAiC,MAAM,CAAC,IAAI,CAAG,CAAA,CAAA,EAAE,kBAAkB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9H,SAAC,CAAC,CAAC;SACJ;;IAGO,IAAA,MAAM,UAAU,GAAA;YACtB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;IAC1D,QAAA,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;;;YAIzB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAClD,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,iBAAiB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;;IAE1C,YAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;IACjD,YAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;oBAC1B,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACtD,gBAAA,IAAI,CAAC;IAAE,oBAAA,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;iBAC/B;IACD,YAAA,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;gBAClC,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;IAC1C,gBAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,gBAAA,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,KAAI;IAClC,oBAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA2B,CAAC,MAAM,CAAC;IACtD,oBAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;IACxB,wBAAA,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;yBAC7B;IACD,oBAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;4BAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;4BACnC,MAAM,QAAQ,GAAG,MAAM;IACrB,+BAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;kCACpG,SAAS,CAAC;4BACd,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;yBACpD;;IAED,oBAAA,IAAI,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;IACxE,wBAAA,MAAM,EAAE,GAAI,KAAK,CAAC,MAA2B,CAAC,WAAY,CAAC;4BAC3D,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAChD,wBAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;IACxB,4BAAA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;6BACpB;yBACF;IACH,iBAAC,CAAC;IACF,gBAAA,OAAO,CAAC,SAAS,GAAG,MAAK;IACvB,oBAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;wBACzB,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACjC,oBAAA,OAAO,EAAE,CAAC;IACZ,iBAAC,CAAC;oBACF,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,yCAAyC,EAAE,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;oBACjI,OAAO,CAAC,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,CAAc,WAAA,EAAA,IAAI,CAAC,MAAM,CAAA,YAAA,CAAc,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9G,aAAC,CAAC,CAAC;;IAEH,YAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;oBAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC3D,gBAAA,IAAI,MAAM;IAAE,oBAAA,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;iBAC9C;;;IAGD,YAAA,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;aACtB;;IAGD,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;IAClC,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1E,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;oBAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;oBAClD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,gBAAA,KAAK,CAAC,KAAK,EAAE,CAAC;oBACd,KAAK,MAAM,GAAG,IAAI,IAAI;IAAE,oBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACvC,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;oBAChC,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,qBAAqB,SAAS,CAAA,CAAA,CAAG,EAAE,iBAAiB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/G,aAAC,CAAC,CAAC;aACJ;SACF;QAEO,QAAQ,GAAA;YACd,IAAI,CAAC,IAAI,CAAC,EAAE;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAC;YAC5E,OAAO,IAAI,CAAC,EAAE,CAAC;SAChB;IACF,CAAA;IAED;IACA,SAAS,cAAc,CAAC,KAAc,EAAA;QACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;IAAE,QAAA,OAAO,QAAQ,CAAC;QAC/C,IAAI,OAAO,KAAK,KAAK,SAAS;IAAE,QAAA,OAAO,SAAS,CAAC;IACjD,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;IAAE,QAAA,OAAO,MAAM,CAAC;IAC/D,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IAC7B,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,GAAG,QAAQ,CAAC;SACvD;IACD,IAAA,OAAO,QAAQ,CAAC;IAClB;;ICv0BA;;;;;;IAMG;IAOH;IACA;IACA;UAEa,UAAU,CAAA;IAAvB,IAAA,WAAA,GAAA;YACW,IAAI,CAAA,IAAA,GAAG,MAAM,CAAC;YAEf,IAAI,CAAA,IAAA,GAAqC,IAAI,CAAC;YAC9C,IAAS,CAAA,SAAA,GAAqC,IAAI,CAAC;YACnD,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;;IAGZ,QAAA,IAAA,CAAA,WAAW,GAAiB,IAAI,YAAY,EAAE,CAAC;IAEvD;;;;IAIG;IACK,QAAA,IAAA,CAAA,OAAO,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;SAsVvD;;IAnVS,IAAA,SAAS,CAAI,EAAoB,EAAA;IACvC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACtC,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC,CAAC;IAC1D,QAAA,OAAO,GAAG,CAAC;SACZ;;IAID,IAAA,MAAM,IAAI,CAAC,MAAc,EAAE,OAAe,EAAA;IACxC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;YAG7C,IAAI,CAAC,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;;IAGnD,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;;IAG9E,QAAA,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;SACjC;IAED,IAAA,MAAM,KAAK,GAAA;;IAET,QAAA,IAAI;gBACF,MAAM,IAAI,CAAC,OAAO,CAAC;aACpB;IAAC,QAAA,MAAM,oBAAoB;IAC5B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACtB,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;SAChC;QAED,MAAM,GAAA;IACJ,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;SAChC;;;IAKD,IAAA,MAAM,MAAM,GAAA;;IAEV,QAAA,IAAI;gBAAE,MAAM,IAAI,CAAC,OAAO,CAAC;aAAE;IAAC,QAAA,MAAM,gBAAgB;IAClD,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC/B,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5C,QAAA,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;SACjC;;IAGD,IAAA,MAAM,QAAQ,GAAA;;IAEZ,QAAA,IAAI;gBAAE,MAAM,IAAI,CAAC,OAAO,CAAC;aAAE;IAAC,QAAA,MAAM,gBAAgB;IAClD,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC/B,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;IAClB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAgB,CAAC;IAClC,YAAA,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;IACxC,gBAAA,IAAI;wBAAE,MAAM,IAAI,CAAC,SAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;qBAAE;IAAC,gBAAA,MAAM,gBAAgB;iBACxE;aACF;SACF;QAED,MAAM,OAAO,CAAC,GAAW,EAAA;YACvB,IAAI,CAAC,IAAI,CAAC,SAAS;IAAE,YAAA,OAAO,IAAI,CAAC;IACjC,QAAA,IAAI;IACF,YAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA,SAAA,EAAY,GAAG,CAAA,KAAA,CAAO,CAAC,CAAC;IACtE,YAAA,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IAChC,YAAA,OAAO,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B;IAAC,QAAA,MAAM;IACN,YAAA,OAAO,IAAI,CAAC;aACb;SACF;IAED,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,KAAa,EAAA;YACtC,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;IAC5B,QAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,GAAG,CAAA,KAAA,CAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACxF,QAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC;IAC3C,QAAA,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,QAAA,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;SACxB;;QAID,MAAM,WAAW,CAAC,MAAmB,EAAA;IACnC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;gBAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;IAE3C,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,CAAA,OAAA,EAAU,MAAM,CAAC,IAAI,CAAE,CAAA,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;;gBAEpE,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7C,SAAC,CAAC,CAAC;SACJ;QAED,MAAM,SAAS,CAAC,SAAiB,EAAA;IAC/B,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;gBAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;;IAE5C,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;IAClB,gBAAA,IAAI;wBACF,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAmB,gBAAA,EAAA,SAAS,CAAO,KAAA,CAAA,CAAC,CAAC;qBACvE;IAAC,gBAAA,MAAM;;qBAEP;IACD,gBAAA,IAAI;wBACF,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAG,EAAA,SAAS,CAAO,KAAA,CAAA,CAAC,CAAC;qBACvD;IAAC,gBAAA,MAAM;;qBAEP;iBACF;IACH,SAAC,CAAC,CAAC;SACJ;QAED,MAAM,QAAQ,CAAC,SAAiB,EAAA;YAC9B,IAAI,CAAC,IAAI,CAAC,SAAS;IAAE,YAAA,OAAO,KAAK,CAAC;IAClC,QAAA,IAAI;gBACF,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAG,EAAA,SAAS,CAAO,KAAA,CAAA,CAAC,CAAC;IACxD,YAAA,OAAO,IAAI,CAAC;aACb;IAAC,QAAA,MAAM;IACN,YAAA,OAAO,KAAK,CAAC;aACd;SACF;IAED,IAAA,MAAM,aAAa,GAAA;YACjB,IAAI,CAAC,IAAI,CAAC,SAAS;IAAE,YAAA,OAAO,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,QAAA,WAAW,MAAM,CAAC,IAAI,CAAC,IAAK,IAAI,CAAC,SAAiB,CAAC,OAAO,EAAE,EAAE;IAC5D,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;IAC1B,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;iBACvC;aACF;IACD,QAAA,OAAO,KAAK,CAAC;SACd;QAED,MAAM,cAAc,CAAC,SAAiB,EAAA;YACpC,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;SACnD;;IAGD,IAAA,MAAM,UAAU,CACd,SAAiB,EACjB,MAAsB,EACtB,MAA2D,EAAA;IAE3D,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;IAC/B,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAChE,YAAA,IAAI,MAAM;IAAE,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,SAAS,CAAA,CAAE,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9E,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1E,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC7C,SAAC,CAAC,CAAC;SACJ;;IAID,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,IAA+B,EAAA;IAC7D,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;IAC/B,YAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;IAE3D,YAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7E,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9C,YAAA,OAAO,GAAG,CAAC;IACb,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,IAAI,CAAC,SAAiB,EAAE,KAAgB,EAAA;YAC5C,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SAChD;;IAGD,IAAA,MAAM,UAAU,CAAC,SAAiB,EAAE,KAAgB,EAAE,KAA6C,EAAA;IACjG,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SAC7D;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAE,OAAgC,EAAA;IAChF,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;IAC/B,YAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACvE,YAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7E,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9C,YAAA,OAAO,KAAK,CAAC;IACf,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAA;IAC9C,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;IAC/B,YAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9D,YAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7E,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9C,YAAA,OAAO,KAAK,CAAC;IACf,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,KAAK,CAAC,SAAiB,EAAE,KAAiB,EAAA;YAC9C,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SACjD;QAED,MAAM,KAAK,CAAC,SAAiB,EAAA;IAC3B,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;gBAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACxC,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC3C,SAAC,CAAC,CAAC;SACJ;;IAID,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAgB,EAAA;IACnE,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;IAC/B,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;;gBAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAChE,YAAA,IAAI,MAAM;IAAE,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,SAAS,CAAA,CAAE,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAChF,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,SAAkB,EAAA;IACnE,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;IAC/B,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAChE,YAAA,IAAI,MAAM;IAAE,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,SAAS,CAAA,CAAE,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAChF,SAAC,CAAC,CAAC;SACJ;;IAID,IAAA,MAAM,gBAAgB,GAAA;IACpB,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;SAC3C;IAED,IAAA,MAAM,iBAAiB,GAAA;IACrB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;IAC/B,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;;gBAE3C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;IAC1D,YAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;IAClC,gBAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;oBAC1E,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;iBAC5C;IACH,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,mBAAmB,GAAA;IACvB,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;SAC9C;;QAIO,SAAS,GAAA;IACf,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;IACnB,YAAA,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAC;aAC/D;YACD,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;IAEO,IAAA,MAAM,cAAc,CAAC,SAAiB,EAAE,IAA+B,EAAA;;IAE7E,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC7B,QAAA,MAAM,QAAQ,GAAG,CAAG,EAAA,SAAS,OAAO,CAAC;IACrC,QAAA,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,QAAA,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,CAAC;YACnD,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,QAAA,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;SACxB;QAEO,MAAM,aAAa,CAAC,SAAiB,EAAA;IAC3C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC7B,QAAA,MAAM,QAAQ,GAAG,CAAG,EAAA,SAAS,OAAO,CAAC;IACrC,QAAA,IAAI;gBACF,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACrD,YAAA,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;IACxC,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACzB;IAAC,QAAA,MAAM;IACN,YAAA,OAAO,EAAE,CAAC;aACX;SACF;IAED;;;;IAIG;IACK,IAAA,MAAM,kBAAkB,GAAA;YAC9B,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;IAC5B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAgB,CAAC;YAClC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,QAAA,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;IACxC,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAAE,gBAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClD;IAED,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAChD,YAAA,IAAI;;oBAEF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAU,OAAA,EAAA,SAAS,CAAE,CAAA,CAAC,CAAC;oBAC5D,IAAI,SAAS,EAAE;wBACb,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAgB,CAAC;wBACpD,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;wBAC3C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACjD,oBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,wBAAA,IAAI;IACF,4BAAA,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;6BACjD;IAAC,wBAAA,MAAM;;6BAEP;yBACF;wBACD,SAAS;qBACV;;oBAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACjD,gBAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;IACnB,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;wBACzB,MAAM,OAAO,GAAwB,EAAE,CAAC;wBACxC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;IACvC,wBAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;4BAC1B,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,QAAQ;gCAClC,OAAO,GAAG,KAAK,SAAS,GAAG,SAAS;oCACpC,OAAO,GAAG,KAAK,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IACzD,wBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;yBACnD;IACD,oBAAA,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IACjE,oBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,wBAAA,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;yBACjD;qBACF;iBACF;IAAC,YAAA,MAAM;;iBAEP;aACF;SACF;;IAGD,IAAA,MAAM,mBAAmB,CAAC,SAAiB,EAAE,MAAmB,EAAA;YAC9D,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACjD,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;;IAEnB,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,gBAAA,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;iBACjD;aACF;SACF;IACF;;ICtXD;;;IAGG;IAKH;IACA;IACA;IAEA;IACgB,SAAA,YAAY,CAAC,IAAY,EAAE,OAAkC,EAAA;QAC3E,eAAe,CAAC,OAAO,CAAC,CAAC;IACzB,IAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;IACM,SAAU,eAAe,CAAC,OAAkC,EAAA;QAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;IACzB,QAAA,MAAM,IAAI,aAAa,CAAC,qCAAqC,EAAE,cAAc,CAAC,CAAC;SAChF;QAED,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,IAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;;YAEvD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACtC,MAAM,IAAI,aAAa,CACrB,CAAA,cAAA,EAAiB,MAAM,CAAC,IAAI,iBAAiB,OAAO,CAAA,gBAAA,EAAmB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC/F,cAAc,CACf,CAAC;aACH;;IAGD,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE;IACrB,YAAA,eAAe,EAAE,CAAC;aACnB;SACF;;IAGD,IAAA,IAAI,eAAe,KAAK,CAAC,EAAE;IACzB,QAAA,MAAM,IAAI,aAAa,CAAC,iDAAiD,EAAE,cAAc,CAAC,CAAC;SAC5F;IACH,CAAC;IA2CD;IACM,SAAU,cAAc,CAC5B,SAAiB,EACjB,OAAe,EACf,IAAe,EACf,KAAc,EACd,MAAkB,EAAA;IAElB,IAAA,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC;QAE5B,QAAQ,IAAI;IACV,QAAA,KAAK,QAAQ;IACX,YAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;IACvB,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAA,YAAA,EAAe,SAAS,CAAA,sBAAA,EAAyB,MAAM,CAAA,CAAE,EAC3E,YAAY,CACb,CAAC;iBACH;IACD,YAAA,IAAI,MAAM,EAAE,SAAS,KAAK,SAAS,IAAK,KAAgB,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;IAClF,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAe,YAAA,EAAA,SAAS,CAAwB,qBAAA,EAAA,MAAM,CAAC,SAAS,CAAA,CAAE,EACpF,kBAAkB,CACnB,CAAC;iBACH;gBACD,MAAM;IAER,QAAA,KAAK,QAAQ;IACX,YAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;IACvB,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAA,YAAA,EAAe,SAAS,CAAA,sBAAA,EAAyB,MAAM,CAAA,CAAE,EAC3E,YAAY,CACb,CAAC;iBACH;IACD,YAAA,IAAI,MAAM,EAAE,GAAG,KAAK,SAAS,IAAK,KAAgB,GAAG,MAAM,CAAC,GAAG,EAAE;IAC/D,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAW,QAAA,EAAA,OAAO,eAAe,SAAS,CAAA,QAAA,EAAW,KAAK,CAAA,eAAA,EAAkB,MAAM,CAAC,GAAG,EAAE,EACxF,kBAAkB,CACnB,CAAC;iBACH;IACD,YAAA,IAAI,MAAM,EAAE,GAAG,KAAK,SAAS,IAAK,KAAgB,GAAG,MAAM,CAAC,GAAG,EAAE;IAC/D,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAW,QAAA,EAAA,OAAO,eAAe,SAAS,CAAA,QAAA,EAAW,KAAK,CAAA,eAAA,EAAkB,MAAM,CAAC,GAAG,EAAE,EACxF,kBAAkB,CACnB,CAAC;iBACH;gBACD,MAAM;IAER,QAAA,KAAK,SAAS;IACZ,YAAA,IAAI,MAAM,KAAK,SAAS,EAAE;IACxB,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAA,YAAA,EAAe,SAAS,CAAA,uBAAA,EAA0B,MAAM,CAAA,CAAE,EAC5E,YAAY,CACb,CAAC;iBACH;gBACD,MAAM;IAER,QAAA,KAAK,MAAM;IACT,YAAA,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC,EAAE;IAC7D,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAe,YAAA,EAAA,SAAS,CAAoC,iCAAA,EAAA,OAAO,KAAK,CAAA,CAAE,EAC5F,YAAY,CACb,CAAC;iBACH;gBACD,MAAM;IAER,QAAA,KAAK,MAAM;IACT,YAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;IACvB,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAA,YAAA,EAAe,SAAS,CAAA,4BAAA,EAA+B,MAAM,CAAA,CAAE,EACjF,YAAY,CACb,CAAC;iBACH;gBACD,MAAM;SACT;IACH,CAAC;IAED;IACM,SAAU,oBAAoB,CAAC,MAcpC,EAAA;QACC,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAiB;YAC9B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;IACJ;;ICnMA;;;;;IAKG;IAEH;IACA;IACA;IAEA;IACO,MAAM,SAAS,GAAG,IAAI,CAAC;IAE9B;IACO,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAWnC;IACA;IACA;IAEA,IAAY,QASX,CAAA;IATD,CAAA,UAAY,QAAQ,EAAA;;IAElB,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;;IAER,IAAA,QAAA,CAAA,QAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;;IAET,IAAA,QAAA,CAAA,QAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;;IAEZ,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;IACV,CAAC,EATW,QAAQ,KAAR,QAAQ,GASnB,EAAA,CAAA,CAAA,CAAA;IAmED;IACA,IAAY,cAOX,CAAA;IAPD,CAAA,UAAY,cAAc,EAAA;IACxB,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;IACV,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;IACV,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;IACX,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;IACR,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;IACR,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;IACV,CAAC,EAPW,cAAc,KAAd,cAAc,GAOzB,EAAA,CAAA,CAAA,CAAA;IAED;IACA;IACA;IAEA;IACO,MAAM,qBAAqB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAKrD;IACO,MAAM,0BAA0B,GAAG,EAAE,CAAC;IAE7C;IACO,MAAM,cAAc,GAAG,CAAC,CAAC;IAEhC;IACO,MAAM,6BAA6B,GAAG,EAAE,CAAC;IA0ChD;IACA;IACA;IAEA;IACA,IAAY,aASX,CAAA;IATD,CAAA,UAAY,aAAa,EAAA;IACvB,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;IACV,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;IACV,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;IACV,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;IACT,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;IACV,IAAA,aAAA,CAAA,aAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;IACZ,IAAA,aAAA,CAAA,aAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;IAChB,IAAA,aAAA,CAAA,aAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;IAChB,CAAC,EATW,aAAa,KAAb,aAAa,GASxB,EAAA,CAAA,CAAA,CAAA;IAoBD;IACA;IACA;IAEA;IACA,IAAY,cAGX,CAAA;IAHD,CAAA,UAAY,cAAc,EAAA;IACxB,IAAA,cAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAkB,CAAA;IAClB,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;IACd,CAAC,EAHW,cAAc,KAAd,cAAc,GAGzB,EAAA,CAAA,CAAA,CAAA;IAED;IACA,IAAY,gBAIX,CAAA;IAJD,CAAA,UAAY,gBAAgB,EAAA;IAC1B,IAAA,gBAAA,CAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;IACV,IAAA,gBAAA,CAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;IACb,IAAA,gBAAA,CAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;IACb,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,GAI3B,EAAA,CAAA,CAAA,CAAA;IA0BD;IACA;IACA;IAEA;IACO,MAAM,yBAAyB,GAAG,GAAG,CAAC;IAiCtC,MAAM,mBAAmB,GAA+B;IAC7D,IAAA,QAAQ,EAAE,SAAS;IACnB,IAAA,eAAe,EAAE,yBAAyB;IAC1C,IAAA,qBAAqB,EAAE,qBAAqB;IAC5C,IAAA,mBAAmB,EAAE,6BAA6B;IAClD,IAAA,qBAAqB,EAAE,0BAA0B;IACjD,IAAA,UAAU,EAAE,IAAI;IAChB,IAAA,WAAW,EAAE,MAAM;IACnB,IAAA,kBAAkB,EAAE,IAAI;IACxB,IAAA,WAAW,EAAE,KAAK;IAClB,IAAA,cAAc,EAAE,WAAW;IAC3B,IAAA,gBAAgB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IAClC,IAAA,WAAW,EAAE,EAAE;KAChB;;IC7SD;;;;;IAKG;IAEH;IACA;IACA;IAEA,IAAK,KAAoB,CAAA;IAAzB,CAAA,UAAK,KAAK,EAAA;IAAG,IAAA,KAAA,CAAA,KAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;IAAE,IAAA,KAAA,CAAA,KAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;IAAC,CAAC,EAApB,KAAK,KAAL,KAAK,GAAe,EAAA,CAAA,CAAA,CAAA;IAEzB,MAAM,MAAM,CAAA;QAQV,WAAY,CAAA,GAAM,EAAE,KAAQ,EAAA;IAL5B,QAAA,IAAA,CAAA,KAAK,GAAU,KAAK,CAAC,GAAG,CAAC;YACzB,IAAI,CAAA,IAAA,GAAwB,IAAI,CAAC;YACjC,IAAK,CAAA,KAAA,GAAwB,IAAI,CAAC;YAClC,IAAM,CAAA,MAAA,GAAwB,IAAI,CAAC;IAGjC,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACf,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACpB;IACF,CAAA;IAED;IACA;IACA;IAEA,MAAM,YAAY,CAAA;IAAlB,IAAA,WAAA,GAAA;YACU,IAAI,CAAA,IAAA,GAAwB,IAAI,CAAC;YACjC,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;SAgVnB;QA9UC,IAAI,IAAI,KAAa,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE;;QAGzC,MAAM,CAAC,GAAM,EAAE,KAAQ,EAAA;YACrB,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAEpC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IACd,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBACzB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO;aACR;YAED,IAAI,MAAM,GAAwB,IAAI,CAAC;IACvC,QAAA,IAAI,OAAO,GAAwB,IAAI,CAAC,IAAI,CAAC;YAE7C,OAAO,OAAO,EAAE;gBACd,MAAM,GAAG,OAAO,CAAC;IACjB,YAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACrB,gBAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;iBACxB;IAAM,iBAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC5B,gBAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;iBACzB;qBAAM;;IAEL,gBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;oBACtB,OAAO;iBACR;aACF;IAED,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,QAAA,IAAI,GAAG,GAAG,MAAO,CAAC,GAAG,EAAE;IACrB,YAAA,MAAO,CAAC,IAAI,GAAG,IAAI,CAAC;aACrB;iBAAM;IACL,YAAA,MAAO,CAAC,KAAK,GAAG,IAAI,CAAC;aACtB;YAED,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SACtB;;IAGD,IAAA,IAAI,CAAC,GAAM,EAAA;IACT,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,OAAO,OAAO,EAAE;IACd,YAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACrB,gBAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;iBACxB;IAAM,iBAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC5B,gBAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;iBACzB;qBAAM;oBACL,OAAO,OAAO,CAAC,KAAK,CAAC;iBACtB;aACF;IACD,QAAA,OAAO,IAAI,CAAC;SACb;;IAGD,IAAA,MAAM,CAAC,GAAM,EAAA;;YAEX,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAChC,QAAA,IAAI,CAAC,IAAI;IAAE,YAAA,OAAO,KAAK,CAAC;IAExB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,QAAA,OAAO,IAAI,CAAC;SACb;;;IAID,IAAA,OAAO,CAAC,QAAoC,EAAA;YAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SACpC;;IAGD,IAAA,SAAS,CACP,QAAW,EACX,MAAS,EACT,QAAoC,EAAA;IAEpC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;SACxD;;QAGD,aAAa,GAAA;YACX,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,QAAA,OAAO,OAAO,CAAC;SAChB;;QAGD,KAAK,GAAA;IACH,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAChB;;IAIO,IAAA,QAAQ,CAAC,GAAM,EAAA;IACrB,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,OAAO,OAAO,EAAE;IACd,YAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACrB,gBAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;iBACxB;IAAM,iBAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC5B,gBAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;iBACzB;qBAAM;IACL,gBAAA,OAAO,OAAO,CAAC;iBAChB;aACF;IACD,QAAA,OAAO,IAAI,CAAC;SACb;IAEO,IAAA,UAAU,CAAC,IAAkB,EAAA;;;YAGnC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;IAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;oBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aACnE;IAAM,aAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACrB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;IAAE,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAM,CAAC,MAAM,CAAC,CAAC;aAChF;IAAM,aAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACtB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;IAAE,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAK,CAAC,MAAM,CAAC,CAAC;aAC9E;iBAAM;gBACL,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,YAAA,IAAI,SAAU,CAAC,MAAM,KAAK,IAAI,EAAE;oBAC9B,IAAI,CAAC,UAAU,CAAC,SAAU,EAAE,SAAU,CAAC,KAAK,CAAC,CAAC;IAC9C,gBAAA,SAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC9B,gBAAA,SAAU,CAAC,KAAM,CAAC,MAAM,GAAG,SAAS,CAAC;iBACtC;IACD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjC,YAAA,SAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAC5B,YAAA,SAAU,CAAC,IAAK,CAAC,MAAM,GAAG,SAAS,CAAC;IACpC,YAAA,MAAM,SAAS,GAAG,SAAU,CAAC,KAAK,CAAC;IACnC,YAAA,SAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC9B,YAAA,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK;IAAE,gBAAA,IAAI,CAAC,SAAS,CAAC,SAAU,CAAC,KAAK,EAAE,SAAU,CAAC,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;aACnG;SACF;QAEO,UAAU,CAAC,CAAsB,EAAE,CAAsB,EAAA;IAC/D,QAAA,IAAI,CAAC,CAAE,CAAC,MAAM,EAAE;IACd,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;aACf;iBAAM,IAAI,CAAC,KAAK,CAAE,CAAC,MAAM,CAAC,IAAI,EAAE;IAC/B,YAAA,CAAE,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;aACpB;iBAAM;IACL,YAAA,CAAE,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;aACrB;IACD,QAAA,IAAI,CAAC;IAAE,YAAA,CAAC,CAAC,MAAM,GAAG,CAAE,CAAC,MAAM,CAAC;SAC7B;IAEO,IAAA,OAAO,CAAC,IAAkB,EAAA;YAChC,OAAO,IAAI,CAAC,IAAI;IAAE,YAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACnC,QAAA,OAAO,IAAI,CAAC;SACb;IAEO,IAAA,SAAS,CAAC,IAAkB,EAAA;IAClC,QAAA,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE;IACrD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,YAAA,IAAI,CAAC,WAAW;oBAAE,MAAM;IAExB,YAAA,IAAI,MAAM,KAAK,WAAW,CAAC,IAAI,EAAE;IAC/B,gBAAA,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;oBAChC,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE;IACtC,oBAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC3B,oBAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,oBAAA,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;wBAC9B,IAAI,GAAG,WAAW,CAAC;qBACpB;yBAAM;IACL,oBAAA,IAAI,IAAI,KAAK,MAAM,CAAC,KAAK,EAAE;4BACzB,IAAI,GAAG,MAAM,CAAC;IACd,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;yBACvB;wBACD,IAAI,IAAI,CAAC,MAAM;4BAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACjD,oBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM;4BAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;IAC9D,oBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM;4BAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;qBAC/D;iBACF;qBAAM;IACL,gBAAA,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC;oBAC/B,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE;IACtC,oBAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC3B,oBAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,oBAAA,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;wBAC9B,IAAI,GAAG,WAAW,CAAC;qBACpB;yBAAM;IACL,oBAAA,IAAI,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE;4BACxB,IAAI,GAAG,MAAM,CAAC;IACd,wBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;yBACxB;wBACD,IAAI,IAAI,CAAC,MAAM;4BAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACjD,oBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM;4BAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;IAC9D,oBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM;4BAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;qBAC9D;iBACF;aACF;YACD,IAAI,IAAI,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;SAC9C;QAEO,SAAS,CAAC,CAAsB,EAAE,MAA2B,EAAA;;YAEnE,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,IAAI,UAAU,GAAG,MAAM,CAAC;IAExB,QAAA,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;IAClE,YAAA,IAAI,CAAC,UAAU;oBAAE,MAAM;IAEvB,YAAA,IAAI,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE;IAC5B,gBAAA,IAAI,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC;IAC/B,gBAAA,IAAI,CAAC,OAAO;wBAAE,MAAM;;oBAGpB,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE;IAC/B,oBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC5B,oBAAA,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;IAC7B,oBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5B,oBAAA,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC;IAC3B,oBAAA,IAAI,CAAC,OAAO;4BAAE,MAAM;qBACrB;;IAGD,gBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7B,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;oBAC/B,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;IAC1C,qBAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE;IACjD,oBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;wBAC1B,IAAI,GAAG,UAAU,CAAC;IAClB,oBAAA,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;qBAC1B;yBAAM;;wBAEL,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE;IAC/C,wBAAA,IAAI,OAAO;IAAE,4BAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACzC,wBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;IAC1B,wBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1B,wBAAA,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC;IAC3B,wBAAA,IAAI,CAAC,OAAO;gCAAE,MAAM;yBACrB;;IAED,oBAAA,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IACjC,oBAAA,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;wBAC/B,IAAI,OAAO,CAAC,KAAK;4BAAE,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACrD,oBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5B,oBAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;qBAClB;iBACF;qBAAM;;IAEL,gBAAA,IAAI,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC;IAC9B,gBAAA,IAAI,CAAC,OAAO;wBAAE,MAAM;oBAEpB,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE;IAC/B,oBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC5B,oBAAA,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;IAC7B,oBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC7B,oBAAA,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC;IAC1B,oBAAA,IAAI,CAAC,OAAO;4BAAE,MAAM;qBACrB;IAED,gBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7B,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;oBAC/B,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;IAC1C,qBAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE;IACjD,oBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;wBAC1B,IAAI,GAAG,UAAU,CAAC;IAClB,oBAAA,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;qBAC1B;yBAAM;wBACL,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE;IAC7C,wBAAA,IAAI,QAAQ;IAAE,4BAAA,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC3C,wBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;IAC1B,wBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACzB,wBAAA,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC;IAC1B,wBAAA,IAAI,CAAC,OAAO;gCAAE,MAAM;yBACrB;IACD,oBAAA,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IACjC,oBAAA,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;wBAC/B,IAAI,OAAO,CAAC,IAAI;4BAAE,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACnD,oBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC7B,oBAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;qBAClB;iBACF;aACF;IAED,QAAA,IAAI,IAAI;IAAE,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;SACpC;IAEO,IAAA,UAAU,CAAC,CAAe,EAAA;IAChC,QAAA,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,QAAA,IAAI,CAAC,CAAC;gBAAE,OAAO;IACf,QAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;YACjB,IAAI,CAAC,CAAC,IAAI;IAAE,YAAA,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,QAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACpB,QAAA,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;IACb,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;aACf;iBAAM,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;IAC9B,YAAA,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;aACnB;iBAAM;IACL,YAAA,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;aACpB;IACD,QAAA,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IACX,QAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SACd;IAEO,IAAA,WAAW,CAAC,CAAe,EAAA;IACjC,QAAA,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,CAAC;gBAAE,OAAO;IACf,QAAA,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;YACjB,IAAI,CAAC,CAAC,KAAK;IAAE,YAAA,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,QAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACpB,QAAA,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;IACb,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;aACf;iBAAM,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;IAC/B,YAAA,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;aACpB;iBAAM;IACL,YAAA,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;aACnB;IACD,QAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IACZ,QAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SACd;QAEO,QAAQ,CAAC,IAAyB,EAAE,EAAwB,EAAA;IAClE,QAAA,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC7B,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SAC/B;IAEO,IAAA,UAAU,CAChB,IAAyB,EACzB,KAAQ,EACR,GAAM,EACN,EAAwB,EAAA;IAExB,QAAA,IAAI,CAAC,IAAI;gBAAE,OAAO;IAClB,QAAA,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK;IAAE,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YACjE,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG;gBAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACnE,QAAA,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG;IAAE,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;SACjE;IACF,CAAA;IAED;IACA;IACA;UAEa,QAAQ,CAAA;IAKnB,IAAA,WAAA,CAAY,OAAkB,GAAA,CAAC,GAAG,IAAI,GAAG,IAAI,EAAA;YAHrC,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;IAIzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;IAC/B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;;QAGD,GAAG,CAAC,GAAW,EAAE,KAA8B,EAAA;IAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACjE,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,QAAA,IAAI,CAAC,cAAc,IAAI,OAAO,GAAG,OAAO,CAAC;SAC1C;;IAGD,IAAA,GAAG,CAAC,GAAW,EAAA;YACb,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC5B;;IAGD,IAAA,MAAM,CAAC,GAAW,EAAA;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;aAC5D;YACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC9B;;QAGD,WAAW,GAAA;IACT,QAAA,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC;SAC5C;;QAGD,aAAa,GAAA;IACX,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;SAClC;;QAGD,SAAS,CACP,QAAgB,EAChB,MAAc,EAAA;YAEd,MAAM,OAAO,GAAwC,EAAE,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,QAAA,OAAO,OAAO,CAAC;SAChB;;QAGD,aAAa,GAAA;IACX,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;SACvB;;QAGD,gBAAgB,GAAA;YACd,OAAO,IAAI,CAAC,cAAc,CAAC;SAC5B;;QAGD,KAAK,GAAA;IACH,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;SACzB;;IAGD,IAAA,QAAQ,CAAC,GAAW,EAAA;YAClB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;SACrC;;;;QAMO,iBAAiB,CAAC,GAAW,EAAE,KAAqC,EAAA;IAC1E,QAAA,IAAI,CAAC,KAAK;IAAE,YAAA,OAAO,CAAC,CAAC;YACrB,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,YAAA,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnB,IAAI,OAAO,CAAC,KAAK,QAAQ;IAAE,gBAAA,IAAI,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;qBAC3C,IAAI,OAAO,CAAC,KAAK,QAAQ;oBAAE,IAAI,IAAI,CAAC,CAAC;qBACrC,IAAI,OAAO,CAAC,KAAK,SAAS;oBAAE,IAAI,IAAI,CAAC,CAAC;IACtC,iBAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;oBAAE,IAAI,IAAI,CAAC,CAAC;;IAC7C,gBAAA,IAAI,IAAI,EAAE,CAAC;aACjB;IACD,QAAA,OAAO,IAAI,CAAC;SACb;IACF;;ICldD;;;;;IAKG;IAIH;IACA;IACA;UAEa,WAAW,CAAA;IAKtB;;;IAGG;QACH,WAAY,CAAA,OAAe,EAAE,UAAA,GAAqB,0BAA0B,EAAA;YANpE,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;;IAQpB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;;IAGrC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;SAC7D;;IAGD,IAAA,OAAO,QAAQ,CAAC,IAAgB,EAAE,SAAiB,EAAA;YACjD,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IAC9B,QAAA,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;IACf,QAAA,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC;IACzB,QAAA,OAAO,EAAE,CAAC;SACX;;IAGD,IAAA,MAAM,CAAC,GAAW,EAAA;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACnC,QAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;gBACtB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,YAAA,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC;aACrC;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;;IAGD,IAAA,UAAU,CAAC,GAAW,EAAA;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACnC,QAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;gBACtB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,YAAA,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;oBAC9C,OAAO,KAAK,CAAC;iBACd;aACF;YACD,OAAO,IAAI,CAAC;SACb;;QAGD,SAAS,GAAA;YACP,OAAO,IAAI,CAAC,IAAI,CAAC;SAClB;;QAGD,UAAU,GAAA;IACR,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SACjC;;QAGD,gBAAgB,GAAA;YACd,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;QAGD,YAAY,GAAA;YACV,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;IAMO,IAAA,SAAS,CAAC,GAAW,EAAA;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACtC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAElC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;;IAEvC,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC;IACzC,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAChB;IACD,QAAA,OAAO,MAAM,CAAC;SACf;;IAGO,IAAA,KAAK,CAAC,GAAW,EAAA;YACvB,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACnC,YAAA,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,GAAG,CAAC,IAAI,GAAG,UAAU,MAAM,CAAC,CAAC;aAClC;IACD,QAAA,OAAO,IAAI,CAAC;SACb;;IAGO,IAAA,YAAY,CAAC,GAAW,EAAA;YAC9B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7B,YAAA,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC;IACrC,YAAA,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;aACrC;IACD,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACvB;IACF;;IC1HD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiCG;IAKH;IACO,MAAM,gBAAgB,GAAG,UAAU,CAAC;IAC3C;IACO,MAAM,gBAAgB,GAAG,UAAU,CAAC;IAC3C,MAAM,mBAAmB,GAAG,EAAE,CAAC;UAYlB,cAAc,CAAA;IAIzB,IAAA,WAAA,CAAY,iBAAyB,IAAI,EAAA;YAHjC,IAAO,CAAA,OAAA,GAAwC,EAAE,CAAC;IAIxD,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;SACtC;;QAGD,GAAG,CAAC,GAAW,EAAE,KAA8B,EAAA;YAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;SACjC;IAED;;;IAGG;QACH,KAAK,GAAA;;;IAGH,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,QAAA,MAAM,OAAO,GAAmB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM;gBAClE,GAAG;IACH,YAAA,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;gBAC7B,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClD,SAAA,CAAC,CAAC,CAAC;YAEJ,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;;YAGzD,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;IAC1B,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,YAAA,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;aAC3C;;YAGD,MAAM,YAAY,GAAiB,EAAE,CAAC;IACtC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACtC,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxB,YAAY,CAAC,IAAI,CAAC;oBAChB,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG;IAChC,gBAAA,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5B,gBAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACxC,aAAA,CAAC,CAAC;aACJ;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;;IAGjE,QAAA,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;IAC1C,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC;;YAGvC,MAAM,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,GAAG,mBAAmB,CAAC;IAC/E,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,QAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;YAE/B,IAAI,MAAM,GAAG,CAAC,CAAC;;IAGf,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;IAC1B,YAAA,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;aAChE;;YAGD,MAAM,WAAW,GAAG,MAAM,CAAC;YAC3B,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;;YAG1D,MAAM,WAAW,GAAG,MAAM,CAAC;IAC3B,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,IAAI,SAAS,CAAC;;YAGpB,MAAM,YAAY,GAAG,MAAM,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACjD,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;IACxD,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACrD,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACpD,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,WAAW,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;IACrE,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC9D,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAC3D,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YAE5C,OAAO;IACL,YAAA,WAAW,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC;gBAChC,YAAY;aACb,CAAC;SACH;;QAGD,aAAa,GAAA;IACX,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;SAC5B;;;;;IAOO,IAAA,eAAe,CAAC,OAAuB,EAAA;YAC7C,MAAM,MAAM,GAAqB,EAAE,CAAC;YACpC,IAAI,OAAO,GAAmB,EAAE,CAAC;IAEjC,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;IAC3B,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;IAEpB,YAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IAC/E,gBAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,gBAAA,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;iBACnB;aACF;IACD,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;IAAE,YAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE7C,QAAA,OAAO,MAAM,CAAC;SACf;;IAGO,IAAA,gBAAgB,CAAC,KAAqB,EAAA;YAC5C,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,QAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;IACrB,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;aACzD;IACD,QAAA,OAAO,IAAI,CAAC;SACb;IAEO,IAAA,cAAc,CACpB,IAAc,EACd,MAAc,EACd,KAAqB,EACrB,WAAwB,EAAA;;YAGxB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC5C,MAAM,IAAI,CAAC,CAAC;IAEZ,QAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;;IAErB,YAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,UAAU,EAAE;IACtE,gBAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;iBACvE;IACD,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACjD,MAAM,IAAI,CAAC,CAAC;IACZ,YAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpD,YAAA,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC5B,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACnD,MAAM,IAAI,CAAC,CAAC;IACZ,YAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACtD,YAAA,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;;IAG9B,YAAA,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aAC3B;IAED,QAAA,OAAO,MAAM,CAAC;SACf;IAEO,IAAA,sBAAsB,CAAC,OAAqB,EAAA;;YAElD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;IAC3B,YAAA,IAAI,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;aACtD;IACD,QAAA,OAAO,IAAI,CAAC;SACb;IAEO,IAAA,eAAe,CAAC,IAAc,EAAE,MAAc,EAAE,OAAqB,EAAA;YAC3E,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,CAAC;IAEZ,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;IAC3B,YAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC/C,MAAM,IAAI,CAAC,CAAC;IACZ,YAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD,YAAA,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;gBAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBACjD,MAAM,IAAI,CAAC,CAAC;gBACZ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAC/C,MAAM,IAAI,CAAC,CAAC;aACb;IAED,QAAA,OAAO,MAAM,CAAC;SACf;IACF;;ICnPD;;;;;;IAMG;IAMH;IACA;IACA;UAEa,aAAa,CAAA;QAUxB,WAAY,CAAA,IAAgB,EAAE,IAAiB,EAAA;YAPvC,IAAY,CAAA,YAAA,GAAiB,EAAE,CAAC;YAChC,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;YAEf,IAAW,CAAA,WAAA,GAAuB,IAAI,CAAC;;YAEvC,IAAM,CAAA,MAAA,GAAU,CAAC,CAAC;IAGxB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACxE,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;;QAGO,YAAY,GAAA;IAClB,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SAClC;IAEO,IAAA,OAAO,CAAC,MAAc,EAAA;IAC5B,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACpG;;;;;IAOD,IAAA,GAAG,CAAC,SAAiB,EAAA;;IAEnB,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;YAE7E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC7C,IAAI,QAAQ,GAAG,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;YAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;;IAE3C,QAAA,IAAI,CAAC,SAAS;IAAE,YAAA,OAAO,IAAI,CAAC;IAC5B,QAAA,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAC7F,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpC,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACjD,IAAI,MAAM,GAAG,CAAC,CAAC;;IAGf,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;IACnC,YAAA,IAAI,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;oBAAE,MAAM;IACnD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC3G,MAAM,IAAI,OAAO,CAAC;gBAClB,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;oBAAE,MAAM;IAC5D,YAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;gBAC/E,MAAM,IAAI,MAAM,CAAC;IACjB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC3G,MAAM,IAAI,OAAO,CAAC;IAClB,YAAA,IAAI,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,UAAU;oBAAE,MAAM;IAClD,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;gBAC1D,MAAM,IAAI,MAAM,CAAC;IAEjB,YAAA,IAAI,GAAG,KAAK,SAAS,EAAE;IACrB,gBAAA,IAAI;IACF,oBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;qBACvD;IAAC,gBAAA,MAAM;IACN,oBAAA,OAAO,IAAI,CAAC;qBACb;iBACF;aACF;IAED,QAAA,OAAO,IAAI,CAAC;SACb;;IAGD,IAAA,SAAS,CACP,QAAgB,EAChB,MAAc,EACd,QAA+D,EAAA;IAE/D,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;IAC3C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;YACvF,IAAI,aAAa,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,aAAa,GAAG,WAAW;gBAAE,OAAO;IAEhF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACpC,QAAA,KAAK,IAAI,EAAE,GAAG,aAAa,EAAE,EAAE,IAAI,WAAW,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE;gBAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBACpC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;;IAE3C,YAAA,IAAI,CAAC,SAAS;oBAAE,SAAS;IACzB,YAAA,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;gBAE7F,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACtD,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE;IACxC,gBAAA,IAAI,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;wBAAE,MAAM;IACnD,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC3G,MAAM,IAAI,OAAO,CAAC;oBAClB,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;wBAAE,MAAM;IAC5D,gBAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;oBAC/E,MAAM,IAAI,MAAM,CAAC;IACjB,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC3G,MAAM,IAAI,OAAO,CAAC;IAClB,gBAAA,IAAI,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,UAAU;wBAAE,MAAM;IAClD,gBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;oBAC1D,MAAM,IAAI,MAAM,CAAC;oBAEjB,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,MAAM,EAAE;IACpC,oBAAA,IAAI;IACF,wBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,wBAAA,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;yBACtB;IAAC,oBAAA,MAAM;;yBAEP;qBACF;iBACF;aACF;SACF;;IAGD,IAAA,OAAO,CAAC,QAA+D,EAAA;IACrE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACpC,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;;IAE3C,YAAA,IAAI,CAAC,SAAS;oBAAE,SAAS;IACzB,YAAA,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;gBAE7F,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACtD,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE;IACxC,gBAAA,IAAI,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;wBAAE,MAAM;IACnD,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC3G,MAAM,IAAI,OAAO,CAAC;oBAClB,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;wBAAE,MAAM;IAC5D,gBAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;oBAC/E,MAAM,IAAI,MAAM,CAAC;IACjB,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC3G,MAAM,IAAI,OAAO,CAAC;IAClB,gBAAA,IAAI,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,UAAU;wBAAE,MAAM;IAClD,gBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;oBAC1D,MAAM,IAAI,MAAM,CAAC;IAEjB,gBAAA,IAAI;IACF,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,oBAAA,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;qBACtB;IAAC,gBAAA,MAAM;;qBAEP;iBACF;aACF;SACF;;QAGD,OAAO,GAAA;YACL,OAAO,IAAI,CAAC,IAAI,CAAC;SAClB;;QAGD,kBAAkB,GAAA;IAChB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;SACjC;;;;QAMO,WAAW,GAAA;YACjB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE;IAC7B,YAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;aACtD;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;;IAG/C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5D,QAAA,IAAI,KAAK,KAAK,gBAAgB,EAAE;IAC9B,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjB;IAAM,aAAA,IAAI,KAAK,KAAK,gBAAgB,EAAE;IACrC,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjB;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,CAAmC,gCAAA,EAAA,gBAAgB,CAAO,IAAA,EAAA,gBAAgB,CAAS,MAAA,EAAA,KAAK,CAAE,CAAA,CAAC,CAAC;aAC7G;IAED,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC7D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IACjE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;IAChE,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;IACrE,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;;YAGhE,IAAI,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IAC5F,YAAA,OAAO;aACR;;IAGD,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;;IAG7C,QAAA,IAAI,WAAW,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,WAAW,GAAG,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IACvF,YAAA,IAAI;IACF,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC,CAAC;IACzE,gBAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;iBAC3E;IAAC,YAAA,MAAM;;iBAEP;aACF;SACF;QAEO,eAAe,CAAC,MAAc,EAAE,KAAa,EAAA;IACnD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACtD,MAAM,IAAI,CAAC,CAAC;IACZ,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IAEpC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;;;gBAGnC,IAAI,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;oBAAE,MAAM;gBACnD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACpC,MAAM,IAAI,OAAO,CAAC;gBAClB,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;oBAAE,MAAM;gBACtD,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;gBAC/E,MAAM,IAAI,MAAM,CAAC;IACjB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACvD,MAAM,IAAI,CAAC,CAAC;IACZ,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACrD,MAAM,IAAI,CAAC,CAAC;;IAGZ,YAAA,IAAI,SAAS,KAAK,CAAC,IAAI,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;oBAAE,SAAS;IAEhF,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;aACzD;SACF;IAED;;;IAGG;IACK,IAAA,YAAY,CAAC,KAAiB,EAAA;YACpC,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;IAC/D,QAAA,IAAI,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;IAAE,YAAA,OAAO,IAAI,CAAC;YAC5E,OAAO,IAAI,UAAU,CACnB,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,EACxC,KAAK,CAAC,SAAS,CAChB,CAAC;SACH;;IAGO,IAAA,WAAW,CAAC,GAAW,EAAA;YAC7B,IAAI,EAAE,GAAG,CAAC,CAAC;YACX,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IAEtC,QAAA,OAAO,EAAE,IAAI,EAAE,EAAE;IACf,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;gBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAErC,YAAA,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE;;oBAEpB,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBACjE,IAAI,GAAG,GAAG,QAAQ;IAAE,oBAAA,OAAO,GAAG,CAAC;IAC/B,gBAAA,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;iBACd;qBAAM;IACL,gBAAA,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;iBACd;aACF;YAED,OAAO,CAAC,CAAC,CAAC;SACX;IAEO,IAAA,aAAa,CAAC,GAAW,EAAA;YAC/B,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IAC1C,QAAA,OAAO,EAAE,GAAG,EAAE,EAAE;gBACd,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG;IAAE,gBAAA,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;;oBAC9C,EAAE,GAAG,GAAG,CAAC;aACf;YACD,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;SAC1E;IAEO,IAAA,aAAa,CAAC,GAAW,EAAA;YAC/B,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IAC1C,QAAA,OAAO,EAAE,GAAG,EAAE,EAAE;gBACd,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG;IAAE,gBAAA,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;;oBAC/C,EAAE,GAAG,GAAG,CAAC;aACf;IACD,QAAA,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;SAC5B;IACF;;ICtTD;;;;;IAKG;IAaH;UACa,gBAAgB,CAAA;IAI3B,IAAA,WAAA,CAAY,OAA4C,EAAA;YAFhD,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;IAGhB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;QAED,IAAI,GAAA;YACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;IAAE,YAAA,OAAO,IAAI,CAAC;YACnD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACnC;QAED,KAAK,GAAA;IACH,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAChB;IACF,CAAA;IAmCD;IACA,MAAM,OAAO,CAAA;IAAb,IAAA,WAAA,GAAA;YACU,IAAI,CAAA,IAAA,GAAe,EAAE,CAAC;SAkD/B;IAhDC,IAAA,IAAI,CAAC,IAAc,EAAA;IACjB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACrC;QAED,GAAG,GAAA;IACD,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;IACxC,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC;YAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC;IAChC,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACnB,QAAA,OAAO,MAAM,CAAC;SACf;QAED,IAAI,GAAA;YACF,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACnD;IAED,IAAA,IAAI,IAAI,GAAA;IACN,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;SACzB;IAEO,IAAA,QAAQ,CAAC,GAAW,EAAA;IAC1B,QAAA,OAAO,GAAG,GAAG,CAAC,EAAE;IACd,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG;oBAAE,MAAM;IACvD,YAAA,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1E,GAAG,GAAG,MAAM,CAAC;aACd;SACF;IAEO,IAAA,UAAU,CAAC,GAAW,EAAA;IAC5B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3B,OAAO,IAAI,EAAE;gBACX,IAAI,QAAQ,GAAG,GAAG,CAAC;IACnB,YAAA,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACzB,YAAA,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;gBAE1B,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG;oBAAE,QAAQ,GAAG,IAAI,CAAC;gBAC/E,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG;oBAAE,QAAQ,GAAG,KAAK,CAAC;gBAElF,IAAI,QAAQ,KAAK,GAAG;oBAAE,MAAM;IAE5B,YAAA,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9E,GAAG,GAAG,QAAQ,CAAC;aAChB;SACF;IACF,CAAA;IAED;IACA;IACA;IAEA;;;IAGG;UACU,aAAa,CAAA;IAIxB,IAAA,WAAA,GAAA;IACE,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;SAC3B;;IAGD,IAAA,SAAS,CAAC,MAAmB,EAAA;IAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC9C;;QAGD,IAAI,GAAA;IACF,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;YAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC;IAC/B,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;YACtB,IAAI,IAAI,GAAG,KAAK,CAAC;;IAGjB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;;IAGvC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAG,CAAC,GAAG,KAAK,GAAG,EAAE;gBACxD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC;IAC7B,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACrC,IAAI,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;oBACtC,IAAI,GAAG,GAAG,CAAC;iBACZ;aACF;YAED,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/B;;QAGD,KAAK,GAAA;YACH,MAAM,MAAM,GAAwC,EAAE,CAAC;IACvD,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACxB,OAAO,KAAK,EAAE;IACZ,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,YAAA,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;aACrB;IACD,QAAA,OAAO,MAAM,CAAC;SACf;IAEO,IAAA,cAAc,CAAC,WAAmB,EAAA;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,KAAK,EAAE;IACT,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACb,gBAAA,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IACb,gBAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;oBACf,WAAW;IACZ,aAAA,CAAC,CAAC;aACJ;SACF;IACF;;IC/LD;;;;;;;;IAQG;IAiDH;IACA;IACA;UAEa,GAAG,CAAA;IAyBd,IAAA,WAAA,CAAY,MAAiB,EAAA;YAvBrB,IAAiB,CAAA,iBAAA,GAAoB,IAAI,CAAC;;YAE1C,IAAe,CAAA,eAAA,GAAe,EAAE,CAAC;YACjC,IAAM,CAAA,MAAA,GAAoB,EAAE,CAAC;IAC7B,QAAA,IAAA,CAAA,YAAY,GAA4B,IAAI,GAAG,EAAE,CAAC;YAClD,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;YAOd,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;YACnB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;IACpB,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC;;IAEnB,QAAA,IAAA,CAAA,UAAU,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IACtD;;;IAGG;YACK,IAAmB,CAAA,mBAAA,GAAY,IAAI,CAAC;YAG1C,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,IAAI,qBAAqB,CAAC;YACnF,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzD,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,6BAA6B,CAAC;YACvF,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;IAC1C,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IACxC,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IAElE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;IACvC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACtB;SACF;;;;IAMD,IAAA,MAAM,IAAI,GAAA;YACR,IAAI,IAAI,CAAC,WAAW;gBAAE,OAAO;YAE7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;;;YAIjD,MAAM,UAAU,GAAkB,EAAE,CAAC;IACrC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;IACpC,gBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACvB;aACF;;IAGD,QAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;IAC7B,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,cAAc,EAAE;IAClD,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACpC;aACF;;;IAID,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;gBACvC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;aAC5C;;;;;IAOD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;;;;QAMD,GAAG,CAAC,GAAW,EAAE,KAA8B,EAAA;;YAE7C,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;IAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;aACxB;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;IACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE;gBAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;SACF;IAED,IAAA,MAAM,CAAC,GAAW,EAAA;YAChB,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;IAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;aACxB;IACD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAwC,CAAC,CAAC;YACpF,IAAI,CAAC,cAAc,EAAE,CAAC;IACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE;gBAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;SACF;;QAGD,kBAAkB,GAAA;YAChB,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;IAC3C,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,eAAe;IAAE,YAAA,GAAG,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAC5E,QAAA,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;IACtB,QAAA,OAAO,GAAG,CAAC;SACZ;IAED;;;;;;;IAOG;QACH,cAAc,GAAA;IACZ,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;IAC1B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;IACtC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;aAC/E;IACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC;YACvC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;;YAElD,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;SAC1D;;IAGO,IAAA,cAAc,CAAC,IAAyB,EAAA;YAC9C,OAAO,IAAI,CAAC,UAAU;iBACnB,IAAI,CAAC,IAAI,CAAC;IACV,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;;IAEf,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;;IAEjC,YAAA,OAAO,CAAC,IAAI,CAAC,sDAAsD,EAAE,KAAK,CAAC,CAAC;;IAE9E,SAAC,CAAC,CAAC;SACN;IAED;;;;IAIG;IACK,IAAA,MAAM,UAAU,GAAA;YACtB,OAAO,IAAI,EAAE;IACX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;IAC9B,YAAA,MAAM,KAAK,CAAC;IACZ,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK;oBAAE,OAAO;aACvC;SACF;;QAGO,MAAM,mBAAmB,CAAC,MAAgB,EAAA;IAChD,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;IACvC,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;IACxB,YAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,MAAM;IAAE,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBACrE,OAAO;aACR;YAED,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;IAClC,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACzB;YAED,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IACtD,QAAA,MAAM,IAAI,GAAgB;gBACxB,EAAE;IACF,YAAA,KAAK,EAAE,CAAC;IACR,YAAA,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,UAAU,EAAE,YAAY,CAAC,MAAM;gBAC/B,SAAS,EAAE,WAAW,CAAC,UAAU;IACjC,YAAA,SAAS,EAAE,IAAI;aAChB,CAAC;;IAGF,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YACnC,IAAI,CAAC,SAAS,EAAE,CAAC;;YAGjB,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEvC,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,MAAM;IAAE,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YACrE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;IAE7B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,CAAC;;IAGxE,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IAClD,YAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;IAED;;;;;IAKG;IACK,IAAA,eAAe,CAAC,KAAa,EAAA;YACnC,IAAI,KAAK,IAAI,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO;IAC3D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAK;IACrF,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;;gBAExB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;IAClC,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;iBAC7B;;gBAED,IAAI,KAAK,GAAG,CAAC,GAAG,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;IACxE,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;iBACjC;aACF,CAAC,CAAC,CAAC;SACL;;IAGO,IAAA,cAAc,CAAC,KAAa,EAAA;YAClC,IAAI,KAAK,IAAI,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO;IAC3D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAW;IAChD,YAAA,IAAI;IACF,gBAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;iBACrC;wBAAS;IACR,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;iBACzB;IACH,SAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAI;IACjB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;;IAExB,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;;IAEjC,YAAA,OAAO,CAAC,IAAI,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;IACxE,SAAC,CAAC,CAAC;SACJ;;;;IAMD;;;;;IAKG;IACH,IAAA,MAAM,aAAa,CAAC,QAAgB,EAAE,MAAc,EAAA;IAClD,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;gBACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBACrC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM;wBAAE,SAAS;oBAC7D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IAAE,oBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBAC3D;aACF;IACD,QAAA,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE;IACvB,YAAA,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;aAC/B;SACF;;QAGD,MAAM,YAAY,CAAC,IAAc,EAAA;IAC/B,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;;IAE9B,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;gBACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBACrC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBAAE,SAAS;IAC7C,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,oBAAA,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;IAC5C,wBAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;4BACpB,MAAM;yBACP;qBACF;iBACF;aACF;IACD,QAAA,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE;IACvB,YAAA,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;aAC/B;SACF;IAED,IAAA,GAAG,CAAC,GAAW,EAAA;;YAEb,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,MAAM,KAAK,IAAI;IAAE,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;;IAGzD,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IACzD,YAAA,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC1C,IAAI,MAAM,KAAK,IAAI;IAAE,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;aAC1D;;IAGD,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;gBACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBACrC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM;wBAAE,SAAS;oBAErD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5C,gBAAA,IAAI,CAAC,MAAM;wBAAE,SAAS;oBAEtB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC9B,IAAI,KAAK,KAAK,IAAI;IAAE,oBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;iBACxD;aACF;IAED,QAAA,OAAO,IAAI,CAAC;SACb;QAED,SAAS,CAAC,QAAgB,EAAE,MAAc,EAAA;YACxC,MAAM,MAAM,GAAwC,EAAE,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,QAAA,OAAO,MAAM,CAAC;SACf;;IAGD,IAAA,aAAa,CACX,QAAgB,EAChB,MAAc,EACd,QAA+D,EAAA;IAE/D,QAAA,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;IAEtC,QAAA,SAAS,CAAC,SAAS,CAAC,IAAI,gBAAgB,CACtC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAC1C,CAAC,CAAC;;IAGH,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBACzD,SAAS,CAAC,SAAS,CAAC,IAAI,gBAAgB,CACtC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CACpD,CAAC,CAAC;aACJ;IAED,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;gBACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBACrC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM;wBAAE,SAAS;oBAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5C,gBAAA,IAAI,CAAC,MAAM;wBAAE,SAAS;IACtB,gBAAA,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;IAC1C,oBAAA,SAAS,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,iBAAC,CAAC,CAAC;iBACJ;aACF;IAED,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;YACjC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE;IAC3B,YAAA,IAAI,CAAE,CAAwC,CAAC,WAAW,EAAE;IAC1D,gBAAA,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBAChB;aACF;SACF;QAED,aAAa,GAAA;IACX,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmC,CAAC;;;IAI1D,QAAA,KAAK,IAAI,KAAK,GAAG,cAAc,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;gBACxD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;oBACvD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5C,gBAAA,IAAI,CAAC,MAAM;wBAAE,SAAS;IACtB,gBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;iBAC5C;aACF;;IAGD,QAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE;IAClD,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aAClB;IACD,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IACzD,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE;IAC5D,gBAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBAClB;aACF;YAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CACxC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAE,CAAwC,CAAC,WAAW,CAClE,CAAC;SACH;;;;;QAOD,MAAM,YAAY,CAAC,KAAa,EAAA;YAC9B,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACxC;IAED;;;;;;;IAOG;IACK,IAAA,MAAM,iBAAiB,CAAC,KAAa,EAAE,WAAmB,CAAC,EAAA;IACjE,QAAA,IAAI,KAAK,IAAI,cAAc,GAAG,CAAC;gBAAE,OAAO;YACxC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,QAAQ;gBAAE,OAAO;YAEjD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IACzE,QAAA,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;YACtC,MAAM,WAAW,GAAkB,EAAE,CAAC;IAEtC,QAAA,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;;IAE3B,YAAA,IAAI,IAAI,GAAsB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;gBACrE,IAAI,CAAC,IAAI,EAAE;IACT,gBAAA,IAAI;IACF,oBAAA,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;qBAC9C;IAAC,gBAAA,MAAM;wBACN,IAAI,GAAG,IAAI,CAAC;qBACb;iBACF;gBACD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE;IACjC,gBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBACpC,SAAS;iBACV;IACD,YAAA,IAAI,MAAqB,CAAC;IAC1B,YAAA,IAAI;oBACF,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;iBACxC;IAAC,YAAA,MAAM;IACN,gBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBACpC,SAAS;iBACV;gBACD,MAAM,OAAO,GAAwC,EAAE,CAAC;gBACxD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/C,SAAS,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,YAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACxB;IAED,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;IACjC,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;;;IAGvB,YAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;oBAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC/B;gBACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC/C,OAAO;aACR;YAED,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;IACjC,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACzB;YAED,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IACtD,QAAA,MAAM,IAAI,GAAgB;gBACxB,EAAE;gBACF,KAAK,EAAE,KAAK,GAAG,CAAC;IAChB,YAAA,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpC,UAAU,EAAE,YAAY,CAAC,MAAM;gBAC/B,SAAS,EAAE,WAAW,CAAC,UAAU;IACjC,YAAA,SAAS,EAAE,IAAI;aAChB,CAAC;IAEF,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YACnC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvC,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;IAGrC,QAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;gBAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACvC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aAC5C;SACF;;IAGD,IAAA,MAAM,KAAK,GAAA;;IAET,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE;IACrC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;IACvC,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAChC,MAAM,IAAI,aAAa,CACrB,0EAA0E,EAC1E,uBAAuB,EACvB,KAAK,CACN,CAAC;aACH;;IAED,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;;IAExB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;IAC1B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;IACtC,YAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;aACxC;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE;gBACrC,IAAI,CAAC,cAAc,EAAE,CAAC;IACtB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;IACtC,YAAA,IAAI,MAAM;IAAE,gBAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;aACpD;IACD,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;;IAE1B,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;SACzB;IAED,IAAA,MAAM,KAAK,GAAA;;IAET,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;IAE1B,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;IAC/B,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClC,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAO,GAAC,CAAC,CAAC;IAClD,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAO,GAAC,CAAC,CAAC;iBACvD;aACF;IAED,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACjB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;IACvC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACtB;IACD,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;SACpB;QAED,QAAQ,GAAA;YACN,OAAO;IACL,YAAA,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;gBAC3C,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,YAAA,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;aAC9C,CAAC;SACH;QAED,aAAa,GAAA;YACX,OAAO,IAAI,CAAC,WAAW,CAAC;SACzB;;;;IAMD;;;IAGG;IACH,IAAA,MAAM,WAAW,GAAA;YACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;gBACnD,MAAM,KAAK,GAAkB,EAAE,CAAC;gBAChC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBACrC,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;IACpC,oBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAClB;yBAAM;wBACL,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClC,oBAAA,OAAO,EAAE,CAAC;qBACX;iBACF;IACD,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;aAC5B;IACD,QAAA,OAAO,OAAO,CAAC;SAChB;IAED;;;;;IAKG;QACK,MAAM,eAAe,CAAC,IAAiB,EAAA;IAC7C,QAAA,IAAI;IACF,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnD,IAAI,CAAC,IAAI,EAAE;IACT,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC9B,gBAAA,OAAO,KAAK,CAAC;iBACd;IACD,YAAA,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE;IACxB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC9B,gBAAA,OAAO,KAAK,CAAC;iBACd;IACD,YAAA,IAAI;IACF,gBAAA,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;iBAC/B;IAAC,YAAA,MAAM;IACN,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC9B,gBAAA,OAAO,KAAK,CAAC;iBACd;IACD,YAAA,OAAO,IAAI,CAAC;aACb;IAAC,QAAA,MAAM;IACN,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC9B,YAAA,OAAO,KAAK,CAAC;aACd;SACF;;QAGO,MAAM,kBAAkB,CAAC,IAAiB,EAAA;;IAEhD,QAAA,OAAO,CAAC,IAAI,CAAC,CAAA,+CAAA,EAAkD,IAAI,CAAC,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC;IAChG,QAAA,IAAI;gBACF,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC7C;IAAC,QAAA,MAAM,mBAAmB;IAC3B,QAAA,IAAI;gBACF,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACzC;IAAC,QAAA,MAAM,mBAAmB;SAC5B;IAEO,IAAA,eAAe,CAAC,KAAqC,EAAA;IAC3D,QAAA,IAAI,CAAC,KAAK;IAAE,YAAA,OAAO,IAAI,CAAC;YACxB,IAAK,KAA4C,CAAC,WAAW;IAAE,YAAA,OAAO,IAAI,CAAC;IAC3E,QAAA,OAAO,KAAK,CAAC;SACd;;IAGO,IAAA,iBAAiB,CAAC,IAAiB,EAAA;;IAEzC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAE5C,IAAI,CAAC,IAAI,EAAE;;;IAGT,YAAA,OAAO,IAAI,CAAC;aACb;;YAGD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAErC,QAAA,IAAI;IACF,YAAA,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aACtC;IAAC,QAAA,MAAM;IACN,YAAA,OAAO,IAAI,CAAC;aACb;SACF;;QAGD,MAAM,cAAc,CAAC,EAAU,EAAA;IAC7B,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,OAAO;YACtC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9C,IAAI,IAAI,EAAE;IACR,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;aAC7B;SACF;;QAGO,YAAY,CAAC,EAAU,EAAE,IAAgB,EAAA;;YAE/C,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;IAC7B,YAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,UAAU,CAAC;IACxD,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aAC9B;YACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAChC,QAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC;SACnC;IAED;;;;IAIG;QACH,SAAS,GAAA;IACP,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE;IAC1E,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAe,CAAC;gBACjE,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;IACjD,YAAA,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IACrC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aACpC;SACF;;QAGD,YAAY,GAAA;YACV,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;QAGD,aAAa,GAAA;YACX,OAAO,IAAI,CAAC,eAAe,CAAC;SAC7B;IACF;;IC3uBD;;;;;;;;;;;;;;;;;;;;IAoBG;IAmBH;IACA;IACA;UAEa,GAAG,CAAA;IASd,IAAA,WAAA,CAAY,KAAe,EAAE,OAAA,GAAmB,IAAI,EAAE,WAAsC,OAAO,EAAA;YAR3F,IAAG,CAAA,GAAA,GAAG,CAAC,CAAC;YAGR,IAAM,CAAA,MAAA,GAAiB,EAAE,CAAC;;YAG1B,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;IAGxB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC1B;;;;;QAOD,MAAM,MAAM,CAAC,MAA2C,EAAA;YACtD,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAE1B,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,QAAA,MAAM,UAAU,GAAc;IAC5B,YAAA,GAAG,MAAM;gBACT,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,QAAQ,EAAE,CAAC;aACZ,CAAC;YAEF,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAE5C,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE;IAC5B,YAAA,IAAI;oBACF,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,gBAAA,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,UAAU,CAAC;iBACxC;IAAC,YAAA,MAAM;;IAEN,gBAAA,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;iBAC1D;aACF;IAAM,aAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;IACpC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,YAAA,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,UAAU,CAAC;aACxC;;SAEF;;QAGD,MAAM,WAAW,CAAC,OAA8C,EAAA;YAC9D,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAElD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;aAC3E;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAE1C,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE;IAC5B,YAAA,IAAI;oBACF,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,gBAAA,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,UAAU,CAAC;iBAC3C;IAAC,YAAA,MAAM;;IAEN,gBAAA,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;iBAChE;aACF;IAAM,aAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;IACpC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,YAAA,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,UAAU,CAAC;aAC3C;;SAEF;;IAGD,IAAA,MAAM,KAAK,GAAA;YACT,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEtD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SAClB;;IAGO,IAAA,WAAW,CAAC,MAAoB,EAAA;IACtC,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;IAAE,YAAA,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAClE,QAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC1C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;IACxB,YAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1B,YAAA,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC;aAC1B;IACD,QAAA,OAAO,QAAQ,CAAC;SACjB;;;;;QAOD,MAAM,OAAO,CACX,WAAwC,EAAA;YAExC,IAAI,CAAC,IAAI,CAAC,OAAO;IAAE,YAAA,OAAO,CAAC,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACzC,QAAA,IAAI,CAAC,MAAM;IAAE,YAAA,OAAO,CAAC,CAAC;YAEtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACxC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;IAAE,YAAA,OAAO,CAAC,CAAC;YAEpC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,WAAW,CAAC,MAAM,CAAC,CAAC;aACrB;YAED,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YACpE,OAAO,OAAO,CAAC,MAAM,CAAC;SACvB;;;;;IAOD,IAAA,MAAM,UAAU,GAAA;YACd,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;IAC1B,QAAA,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACnB,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC5B,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACb,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;SACxB;;;;QAMD,SAAS,GAAA;YACP,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;QAED,MAAM,GAAA;YACJ,OAAO,IAAI,CAAC,GAAG,CAAC;SACjB;QAED,gBAAgB,GAAA;IACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;SAC3B;;QAGD,gBAAgB,GAAA;YACd,OAAO,IAAI,CAAC,aAAa,CAAC;SAC3B;;;;IAMO,IAAA,YAAY,CAAC,MAAiB,EAAA;IACpC,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE1C,QAAA,MAAM,IAAI,GACR,CAAC;IACD,YAAA,CAAC;IACD,YAAA,CAAC;IACD,YAAA,CAAC,GAAG,UAAU,CAAC,MAAM;IACrB,YAAA,CAAC,GAAG,QAAQ,CAAC,MAAM;IACnB,YAAA,CAAC,GAAG,SAAS,CAAC,MAAM;gBACpB,CAAC,CAAC;IAEJ,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IAClC,QAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;YAEf,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1C,MAAM,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5C,MAAM,IAAI,CAAC,CAAC;YAEZ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,CAAC;YACZ,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC5C,QAAA,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC;YAE5B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,CAAC;YACZ,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAA,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;YAE1B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAChD,MAAM,IAAI,CAAC,CAAC;YACZ,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC3C,QAAA,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC;;YAG3B,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAClC,YAAA,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACtC;YACD,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAEzC,QAAA,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;SAC5B;IAEO,IAAA,gBAAgB,CAAC,IAAgB,EAAA;YACvC,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,QAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACzE,IAAI,MAAM,GAAG,CAAC,CAAC;YAEf,OAAO,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;IACrC,YAAA,IAAI;oBACF,MAAM,WAAW,GAAG,MAAM,CAAC;oBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC1C,MAAM,IAAI,CAAC,CAAC;oBACZ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAkB,CAAC;oBACpD,MAAM,IAAI,CAAC,CAAC;oBACZ,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC5C,MAAM,IAAI,CAAC,CAAC;oBAEZ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC/C,MAAM,IAAI,CAAC,CAAC;IACZ,gBAAA,IAAI,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU;wBAAE,MAAM;IAC/C,gBAAA,MAAM,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;oBAClF,MAAM,IAAI,QAAQ,CAAC;oBAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC7C,MAAM,IAAI,CAAC,CAAC;IACZ,gBAAA,IAAI,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,UAAU;wBAAE,MAAM;IAC7C,gBAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;oBAC1E,MAAM,IAAI,MAAM,CAAC;oBAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC9C,MAAM,IAAI,CAAC,CAAC;IACZ,gBAAA,IAAI,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU;wBAAE,MAAM;IAC9C,gBAAA,IAAI,UAA+C,CAAC;IACpD,gBAAA,IAAI,OAAO,GAAG,CAAC,EAAE;IACf,oBAAA,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAC5E,oBAAA,IAAI;IACF,wBAAA,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;yBAC/B;IAAC,oBAAA,MAAM,YAAY;qBACrB;oBACD,MAAM,IAAI,OAAO,CAAC;;oBAGlB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAChD,MAAM,IAAI,CAAC,CAAC;IACZ,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;oBACxD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC3C,oBAAA,WAAW,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;qBACvE;oBACD,IAAI,CAAC,WAAW,KAAK,CAAC,MAAM,SAAS,EAAE;;;IAGrC,oBAAA,OAAO,CAAC,IAAI,CAAC,+CAA+C,GAAG,CAAA,UAAA,CAAY,CAAC,CAAC;wBAC7E,SAAS;qBACV;oBAED,OAAO,CAAC,IAAI,CAAC;wBACX,GAAG;wBACH,IAAI;wBACJ,KAAK;wBACL,SAAS;wBACT,GAAG;IACH,oBAAA,IAAI,EAAE,UAAU;IAChB,oBAAA,QAAQ,EAAE,SAAS;IACpB,iBAAA,CAAC,CAAC;iBACJ;IAAC,YAAA,MAAM;oBACN,MAAM;iBACP;aACF;IAED,QAAA,OAAO,OAAO,CAAC;SAChB;IACF;;ICpUD;;;IAGG;IAaH;IACA;IACA;UAEa,iBAAiB,CAAA;IAQ5B,IAAA,WAAA,CACE,GAAQ,EACR,GAAQ,EACR,YAA8B,IAAI,EAClC,QAAmB,GAAA,IAAI,EACvB,gBAA2B,GAAA,EAAE,GAAG,IAAI,GAAG,IAAI,EAAA;YARrC,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;IAUlB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACf,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACf,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzB,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;SAC1C;IAED,IAAA,MAAM,IAAI,GAAA;YACR,IAAI,CAAC,OAAO,EAAE,CAAC;;IAEf,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;IACxF,YAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;aACzB;SACF;;QAGO,mBAAmB,GAAA;IACzB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAsF,CAAC;IACxG,QAAA,IAAI,OAAO,GAAG,CAAC,gBAAgB,KAAK,UAAU,EAAE;IAC9C,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBACrC,IAAI,KAAK,GAAG,CAAC;IAAE,gBAAA,OAAO,KAAK,CAAC;aAC7B;IACD,QAAA,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,gBAAgB,KAAK,UAAU,GAAG,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;YACtF,OAAO,KAAK,GAAG,GAAG,CAAC;SACpB;IAED,IAAA,MAAM,UAAU,GAAA;IACd,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACvB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;IAClB,YAAA,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;aACjC;IACD,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;SAClB;IAED,IAAA,MAAM,eAAe,GAAA;IACnB,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;SACzB;IAED,IAAA,WAAW,CAAC,GAAW,EAAA;IACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;SACrB;QAED,UAAU,GAAA;YACR,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;IACF;;ICjFD;;;;;;IAMG;IAsCH;IACA;IACA;UAEa,gBAAgB,CAAA;IAA7B,IAAA,WAAA,GAAA;YACU,IAAE,CAAA,EAAA,GAAuB,IAAI,CAAC;YAC9B,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;YACZ,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC;SA4H5B;QA1HC,MAAM,IAAI,CAAC,IAAY,EAAA;IACrB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAQ,KAAA,EAAA,IAAI,EAAE,CAAC;YAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/C,YAAA,OAAO,CAAC,eAAe,GAAG,MAAK;IAC7B,gBAAA,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAC1B,gBAAA,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;IACjD,oBAAA,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBACtC;IACH,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,SAAS,GAAG,MAAK;IACvB,gBAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IACzB,gBAAA,OAAO,EAAE,CAAC;IACZ,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,qCAAqC,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAClH,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,IAAI,IAAI,CAAC,EAAE,EAAE;IACX,YAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAChB,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;aAChB;SACF;QAED,MAAM,GAAA;IACJ,QAAA,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC;SACzB;QAED,MAAM,IAAI,CAAC,GAAW,EAAA;IACpB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACtD,YAAA,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpD,YAAA,GAAG,CAAC,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IAClD,YAAA,GAAG,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,sCAAsC,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC3G,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,KAAK,CAAC,GAAW,EAAE,IAAiB,EAAA;IACxC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACvD,YAAA,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC9C,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;IAChC,YAAA,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,qCAAqC,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC1G,SAAC,CAAC,CAAC;SACJ;IAED;;;IAGG;QACH,MAAM,SAAS,CAAC,OAAoC,EAAA;YAClD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;IAC9B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBACvD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;oBACtB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;iBAC9B;gBACD,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;IAChC,YAAA,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,2CAA2C,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAChH,SAAC,CAAC,CAAC;SACJ;QAED,MAAM,MAAM,CAAC,GAAW,EAAA;IACtB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACvD,YAAA,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC3C,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;IAChC,YAAA,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,wCAAwC,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAC9G,SAAC,CAAC,CAAC;SACJ;;QAGD,MAAM,UAAU,CAAC,IAAc,EAAA;IAC7B,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;IAC9B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBACvD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,gBAAA,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBACnB;gBACD,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;IAChC,YAAA,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,8CAA8C,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACpH,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,QAAQ,GAAA;IACZ,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACtD,YAAA,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;IACxD,YAAA,GAAG,CAAC,SAAS,GAAG,MAAM,OAAO,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,EAAc,CAAC;IAC9D,YAAA,GAAG,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC1F,SAAC,CAAC,CAAC;SACJ;QAED,MAAM,MAAM,CAAC,GAAW,EAAA;YACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpC,OAAO,MAAM,KAAK,IAAI,CAAC;SACxB;IAED,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBACvD,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;gBACvC,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;IAChC,YAAA,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,kCAAkC,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACvG,SAAC,CAAC,CAAC;SACJ;QAEO,QAAQ,GAAA;YACd,IAAI,CAAC,IAAI,CAAC,EAAE;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,+BAA+B,EAAE,kBAAkB,CAAC,CAAC;YAC3F,OAAO,IAAI,CAAC,EAAE,CAAC;SAChB;IACF,CAAA;IAED;IACA;IACA;UAEa,aAAa,CAAA;IAA1B,IAAA,WAAA,GAAA;IACU,QAAA,IAAA,CAAA,KAAK,GAA6B,IAAI,GAAG,EAAE,CAAC;YAC5C,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;SAkDxB;QAhDC,MAAM,IAAI,CAAC,KAAa,EAAA;IACtB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;IAED,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;QAED,MAAM,GAAA;YACJ,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QAED,MAAM,IAAI,CAAC,GAAW,EAAA;YACpB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;SACpC;IAED,IAAA,MAAM,KAAK,CAAC,GAAW,EAAE,IAAiB,EAAA;YACxC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SAC3B;QAED,MAAM,SAAS,CAAC,OAAoC,EAAA;IAClD,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACjD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;aAC3B;SACF;QAED,MAAM,MAAM,CAAC,GAAW,EAAA;IACtB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACxB;QAED,MAAM,UAAU,CAAC,IAAc,EAAA;IAC7B,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aACxB;SACF;IAED,IAAA,MAAM,QAAQ,GAAA;YACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;SACtC;QAED,MAAM,MAAM,CAAC,GAAW,EAAA;YACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SAC5B;IAED,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;SACpB;IACF;;UC9NY,WAAW,CAAA;IAAxB,IAAA,WAAA,GAAA;YACU,IAAI,CAAA,IAAA,GAAqC,IAAI,CAAC;YAC9C,IAAK,CAAA,KAAA,GAAqC,IAAI,CAAC;YAC/C,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;IACZ,QAAA,IAAA,CAAA,UAAU,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;SAoGvD;QAlGC,MAAM,IAAI,CAAC,IAAY,EAAA;IACrB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IACnD,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;SACzE;IAED,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IAClB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB;QAED,MAAM,GAAA;IACJ,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;SAC5B;QAED,MAAM,IAAI,CAAC,GAAW,EAAA;YACpB,IAAI,CAAC,IAAI,CAAC,KAAK;IAAE,YAAA,OAAO,IAAI,CAAC;IAC7B,QAAA,IAAI;gBACF,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/C,YAAA,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IAChC,YAAA,OAAO,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;aACjC;IAAC,QAAA,MAAM;IACN,YAAA,OAAO,IAAI,CAAC;aACb;SACF;IAED,IAAA,MAAM,KAAK,CAAC,GAAW,EAAE,IAAiB,EAAA;YACxC,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAW;IAChD,YAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAM,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,YAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC;IAC3C,YAAA,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,YAAA,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;IACzB,SAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;;QAGD,MAAM,SAAS,CAAC,OAAoC,EAAA;YAClD,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAW;IAChD,YAAA,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IACjD,gBAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAM,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,gBAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC;IAC3C,gBAAA,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,gBAAA,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;iBACxB;IACH,SAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;QAED,MAAM,MAAM,CAAC,GAAW,EAAA;YACtB,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAW;IAChD,YAAA,IAAI;oBAAE,MAAM,IAAI,CAAC,KAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;iBAAE;IAAC,YAAA,MAAM,gBAAgB;IACpE,SAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;;QAGD,MAAM,UAAU,CAAC,IAAc,EAAA;YAC7B,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAW;IAChD,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,gBAAA,IAAI;wBAAE,MAAM,IAAI,CAAC,KAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;qBAAE;IAAC,gBAAA,MAAM,gBAAgB;iBACnE;IACH,SAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;IAED,IAAA,MAAM,QAAQ,GAAA;YACZ,IAAI,CAAC,IAAI,CAAC,KAAK;IAAE,YAAA,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAa,EAAE,CAAC;;IAE1B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAY,CAAC;IAC9B,QAAA,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;IACxC,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACjB;IACD,QAAA,OAAO,IAAI,CAAC;SACb;QAED,MAAM,MAAM,CAAC,GAAW,EAAA;YACtB,IAAI,CAAC,IAAI,CAAC,KAAK;IAAE,YAAA,OAAO,KAAK,CAAC;IAC9B,QAAA,IAAI;gBACF,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACpC,YAAA,OAAO,IAAI,CAAC;aACb;IAAC,QAAA,MAAM;IACN,YAAA,OAAO,KAAK,CAAC;aACd;SACF;IAED,IAAA,MAAM,KAAK,GAAA;YACT,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;IACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAY,CAAC;IAC9B,QAAA,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;IACxC,YAAA,IAAI;oBAAE,MAAM,IAAI,CAAC,KAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBAAE;IAAC,YAAA,MAAM,gBAAgB;aACpE;SACF;IACF;;ICnHD;;;IAGG;IA6CH;;IAEG;aACa,cAAc,CAC5B,GAAgB,EAChB,MAAc,EACd,IAAc,EAAA;IAEd,IAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACjC,IAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAA,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7B,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACvB;;IChEA;;;;;IAKG;IAOH;IACA;IACA;UAEa,WAAW,CAAA;IAMtB,IAAA,WAAA,CAAY,OAAwB,EAAA;YAJ5B,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;YACf,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;YACnB,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;IAGlB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;;QAGD,MAAM,IAAI,CAAC,MAAc,EAAA;IACvB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACpD,QAAA,IAAI,IAAI,IAAI,IAAI,YAAY,WAAW,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE;IAC/D,YAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;aAC5C;iBAAM;IACL,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACpB,YAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;aACvB;IACD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;;QAID,MAAM,QAAQ,CAAC,MAAc,EAAA;IAC3B,QAAA,MAAM,GAAG,GAAG,CAAM,GAAA,EAAA,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI,EAAE;;gBAET,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;aACpD;;IAGD,QAAA,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,EAAE;IAC/B,YAAA,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;IAC1C,YAAA,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,YAAA,OAAO,MAAM,CAAC;aACf;IAED,QAAA,OAAO,IAAI,CAAC;SACb;IAED,IAAA,MAAM,SAAS,CAAC,MAAc,EAAE,IAAiB,EAAA;IAC/C,QAAA,MAAM,GAAG,GAAG,CAAM,GAAA,EAAA,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SACrC;IAED,IAAA,MAAM,cAAc,GAAA;IAClB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC7B,QAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtB,QAAA,OAAO,EAAE,CAAC;SACX;QAED,MAAM,UAAU,CAAC,OAAe,EAAA;;IAE9B,QAAA,MAAM,GAAG,GAAG,CAAM,GAAA,EAAA,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAChC;;IAID;;IAEG;IACH,IAAA,MAAM,qBAAqB,GAAA;IACzB,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAC3C,QAAA,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;YACxC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,QAAA,OAAO,MAAM,CAAC;SACf;;IAIO,IAAA,MAAM,QAAQ,GAAA;IACpB,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IAC/B,QAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACvD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;SAC9C;QAEO,eAAe,CAAC,MAAc,EAAE,IAAc,EAAA;IACpD,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,QAAA,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAClC,QAAA,OAAO,GAAG,CAAC;SACZ;;IAGD,IAAA,MAAM,QAAQ,GAAA;IACZ,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACpB,QAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;SACvB;IACF;;IC9GD;;;;;;IAMG;IAKH;IACA;IACA;UAEa,WAAW,CAAA;IAAxB,IAAA,WAAA,GAAA;;IAEU,QAAA,IAAA,CAAA,YAAY,GAA8B,IAAI,GAAG,EAAE,CAAC;;IAGpD,QAAA,IAAA,CAAA,UAAU,GAA0B,IAAI,GAAG,EAAE,CAAC;;YAG9C,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;;YAGd,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;IAE5B;;;IAGG;IACK,QAAA,IAAA,CAAA,YAAY,GAA6B,IAAI,GAAG,EAAE,CAAC;SA2P5D;;;;;QApPC,gBAAgB,GAAA;IACd,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE;gBACzB,KAAK;gBACL,KAAK,EAAE,gBAAgB,CAAC,MAAM;gBAC9B,WAAW,EAAE,IAAI,CAAC,eAAe;IACjC,YAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;IACtB,SAAA,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IACxC,QAAA,OAAO,KAAK,CAAC;SACd;;IAGD,IAAA,iBAAiB,CAAC,KAAa,EAAA;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvC,QAAA,IAAI,CAAC,GAAG;IAAE,YAAA,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,CAAA,UAAA,CAAY,CAAC,CAAC;IAE5D,QAAA,GAAG,CAAC,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC;YACvC,IAAI,CAAC,eAAe,EAAE,CAAC;;YAGvB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,SAAS,EAAE;IACb,YAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;oBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjD,gBAAA,IAAI,CAAC,QAAQ;wBAAE,SAAS;IACxB,gBAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;IAC9B,oBAAA,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;IAC3B,wBAAA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;yBAC1B;qBACF;iBACF;aACF;;IAGD,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACjC;;IAGD,IAAA,mBAAmB,CAAC,KAAa,EAAA;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvC,QAAA,IAAI,CAAC,GAAG;IAAE,YAAA,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,CAAA,UAAA,CAAY,CAAC,CAAC;IAE5D,QAAA,GAAG,CAAC,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC;;YAGrC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,SAAS,EAAE;IACb,YAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;oBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjD,gBAAA,IAAI,CAAC,QAAQ;wBAAE,SAAS;IACxB,gBAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAC3D,gBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;IACzB,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;qBACpC;yBAAM;wBACL,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;qBAC3C;iBACF;aACF;IAED,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACjC;;IAGD,IAAA,QAAQ,CAAC,KAAa,EAAA;YACpB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,gBAAgB,CAAC,MAAM,CAAC;SACnE;;;;IAMD;;IAEG;IACH,IAAA,YAAY,CACV,SAAiB,EACjB,GAAW,EACX,IAA6B,EAC7B,KAAa,EAAA;IAEb,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,GAAG,EAAE,CAAC;IACvC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEvD,QAAA,MAAM,UAAU,GAAe;gBAC7B,KAAK;gBACL,IAAI;gBACJ,WAAW,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI;IACvE,YAAA,SAAS,EAAE,KAAK;aACjB,CAAC;IAEF,QAAA,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;;IAE1C,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;SAC7C;IAED;;IAEG;IACH,IAAA,WAAW,CACT,SAAiB,EACjB,GAAW,EACX,KAAa,EAAA;YAEb,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvC,QAAA,IAAI,CAAC,GAAG;IAAE,YAAA,OAAO,IAAI,CAAC;IAEtB,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,GAAG,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjD,QAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;;IAGpD,QAAA,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IAC7C,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;;IAG5B,YAAA,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;oBAC3B,OAAO,OAAO,CAAC,IAAI,CAAC;iBACrB;;IAGD,YAAA,IAAI,OAAO,CAAC,SAAS,EAAE;;oBAErB,OAAO,OAAO,CAAC,IAAI,CAAC;iBACrB;;aAGF;IAED,QAAA,OAAO,IAAI,CAAC;SACb;IAED;;IAEG;IACH,IAAA,aAAa,CAAC,SAAiB,EAAE,GAAW,EAAE,KAAa,EAAA;IACzD,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAwC,EAAE,KAAK,CAAC,CAAC;SAC5G;IAED;;IAEG;IACH,IAAA,0BAA0B,CACxB,SAAiB,EAAA;YAEjB,MAAM,MAAM,GAA4C,EAAE,CAAC;YAE3D,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;gBACpD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAG,EAAA,SAAS,GAAG,CAAC;oBAAE,SAAS;IACpD,YAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEjD,YAAA,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IAC7C,gBAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC5B,IAAI,OAAO,CAAC,SAAS,IAAI,CAAE,OAAO,CAAC,IAA2C,CAAC,gBAAgB,EAAE;IAC/F,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;wBAC3B,MAAM;qBACP;iBACF;aACF;IAED,QAAA,OAAO,MAAM,CAAC;SACf;IAED;;;;IAIG;IACH,IAAA,eAAe,CAAC,KAAa,EAAA;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/C,QAAA,IAAI,CAAC,SAAS;gBAAE,OAAO;IACvB,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjD,YAAA,IAAI,CAAC,QAAQ;oBAAE,SAAS;IACxB,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAC3D,YAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;IACzB,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;iBACpC;qBAAM;oBACL,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;iBAC3C;aACF;SACF;IAED;;;IAGG;QACH,EAAE,CAAC,oBAA4B,GAAG,EAAA;YAChC,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;IACpD,YAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,iBAAiB;oBAAE,SAAS;;IAGnD,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC;gBACnE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;aACzC;SACF;IAED;;IAEG;QACH,kBAAkB,CAAC,SAAiB,EAAE,KAAa,EAAA;IACjD,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;YAE/B,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;IACpD,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,SAAS;gBAC3C,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACpD,IAAI,aAAa,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;IAC7D,gBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;iBACzC;aACF;IAED,QAAA,OAAO,IAAI,CAAC;SACb;IAED;;IAEG;IACH,IAAA,UAAU,CAAC,SAAiB,EAAA;IAC1B,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;YAC/B,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;IAC1C,YAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;IAC/B,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;iBACpC;aACF;SACF;IAED;;IAEG;QACH,iBAAiB,GAAA;IACf,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;SAC7B;IAED;;IAEG;QACH,YAAY,GAAA;YACV,OAAO,IAAI,CAAC,eAAe,CAAC;SAC7B;IACF;;IC3RD;;;;;IAKG;IAUH;IACA;IACA;IAEA;IACgB,SAAA,UAAU,CAAC,MAAc,EAAE,IAAc,EAAA;IACvD,IAAA,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,IAAA,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACnC,OAAO;YACL,MAAM;YACN,IAAI;YACJ,IAAI;IACJ,QAAA,KAAK,EAAE,IAAI;IACX,QAAA,IAAI,EAAE,CAAC;IACP,QAAA,IAAI,EAAE,IAAI;IACV,QAAA,IAAI,EAAE,IAAI;IACV,QAAA,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;SACvB,CAAC;IACJ;;ICjCA;;;IAGG;IAIH;IACA;IACA;IAEA;;IAEG;UACU,OAAO,CAAA;IAApB,IAAA,WAAA,GAAA;YACU,IAAI,CAAA,IAAA,GAAsB,IAAI,CAAC;YAC/B,IAAI,CAAA,IAAA,GAAsB,IAAI,CAAC;YAC/B,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;SA2FnB;IAzFC,IAAA,IAAI,IAAI,GAAA;YACN,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;;IAGD,IAAA,UAAU,CAAC,IAAgB,EAAA;;IAEzB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;gBAAE,OAAO;;YAG/B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;YAEpG,IAAI,MAAM,EAAE;;IAEV,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACnB;iBAAM;gBACL,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;;IAGD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACtB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;IACb,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aACvB;IACD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IACd,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aAClB;SACF;;IAGD,IAAA,MAAM,CAAC,IAAgB,EAAA;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;IACpG,QAAA,IAAI,CAAC,MAAM;gBAAE,OAAO;IAEpB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;SAC1C;;IAGO,IAAA,MAAM,CAAC,IAAgB,EAAA;IAC7B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;aAC5B;IAAM,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;IAC7B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;aACvB;IAED,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;aAC5B;IAAM,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;IAC7B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;aACvB;IAED,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB;;QAGD,MAAM,GAAA;YACJ,OAAO,IAAI,CAAC,IAAI,CAAC;SAClB;;QAGD,MAAM,GAAA;IACJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,GAAG,EAAE;IACP,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAClB;IACD,QAAA,OAAO,GAAG,CAAC;SACZ;;QAGD,KAAK,GAAA;IACH,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAChB;;QAGD,WAAW,GAAA;YACT,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,OAAO,OAAO,EAAE;IACd,YAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,YAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IACF,CAAA;IAQD;;IAEG;UACU,eAAe,CAAA;QAK1B,WAAY,CAAA,QAAgB,EAAE,OAAyB,EAAA;IACrD,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;IACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;;IAGD,IAAA,MAAM,CAAC,IAAgB,EAAA;IACrB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC3B;;IAGD,IAAA,GAAG,CAAC,IAAgB,EAAA;IAClB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACnB;;IAGD,IAAA,MAAM,CAAC,IAAgB,EAAA;IACrB,QAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACvB;IAED;;;;IAIG;QACH,MAAM,aAAa,CAAC,KAAa,EAAA;YAC/B,IAAI,OAAO,GAAG,CAAC,CAAC;YAEhB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE;;IAEjE,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC5C,YAAA,IAAI,CAAC,MAAM;oBAAE,MAAM;;IAGnB,YAAA,IAAI,MAAM,CAAC,KAAK,EAAE;IAChB,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,gBAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;iBACtB;IAED,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxB,YAAA,OAAO,EAAE,CAAC;aACX;IAED,QAAA,OAAO,OAAO,CAAC;SAChB;;QAGO,qBAAqB,GAAA;;YAE3B,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAChC,OAAO,OAAO,EAAE;gBACd,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;IAAE,gBAAA,OAAO,OAAO,CAAC;IACzD,YAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;;IAGD,QAAA,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAC5B,OAAO,OAAO,EAAE;IACd,YAAA,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;IAAE,gBAAA,OAAO,OAAO,CAAC;IACvC,YAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;IAED,QAAA,OAAO,IAAI,CAAC;SACb;;QAGD,OAAO,GAAA;IACL,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;SACtB;;QAGD,WAAW,GAAA;YACT,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;;QAGD,KAAK,GAAA;IACH,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;SAClB;IACF;;IC7MD;;;;;IAKG;IAsBH;IACA;IACA;UAEa,UAAU,CAAA;QAMrB,WAAY,CAAA,MAAc,EAAE,QAAA,GAAmB,yBAAyB,EAAA;IALhE,QAAA,IAAA,CAAA,KAAK,GAA4B,IAAI,GAAG,EAAE,CAAC;YAG3C,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;IAGrB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,QAAQ,EAAE,OAAO,IAAI,KAAI;IAC3D,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;IACd,gBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;iBACpB;IACH,SAAC,CAAC,CAAC;SACJ;;;;IAMD;;;IAGG;QACH,MAAM,OAAO,CAAC,MAAc,EAAA;;YAE1B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,IAAI,EAAE;IACR,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;IACZ,YAAA,OAAO,IAAI,CAAC;aACb;;YAGD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClD,QAAA,IAAI,CAAC,MAAM;IAAE,YAAA,OAAO,IAAI,CAAC;;YAGzB,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAErC,QAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAa,CAAC;IAC1D,QAAA,IAAI,GAAG;gBACL,MAAM;gBACN,IAAI;IACJ,YAAA,IAAI,EAAE,MAAM;IACZ,YAAA,KAAK,EAAE,KAAK;IACZ,YAAA,IAAI,EAAE,CAAC;IACP,YAAA,IAAI,EAAE,IAAI;IACV,YAAA,IAAI,EAAE,IAAI;IACV,YAAA,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;aACvB,CAAC;YAEF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,QAAA,OAAO,IAAI,CAAC;SACb;IAED;;IAEG;IACH,IAAA,MAAM,OAAO,CAAC,IAAiB,GAAA,QAAQ,CAAC,IAAI,EAAA;YAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAElD,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAErC,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtC,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YACd,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,QAAA,OAAO,IAAI,CAAC;SACb;IAED;;IAEG;IACH,IAAA,KAAK,CAAC,IAAgB,EAAA;IACpB,QAAA,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;gBACjB,IAAI,CAAC,IAAI,EAAE,CAAC;aACb;SACF;IAED;;IAEG;IACH,IAAA,SAAS,CAAC,IAAgB,EAAA;IACxB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SACnB;IAED;;IAEG;QACH,MAAM,SAAS,CAAC,MAAc,EAAA;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;IACtB,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aACpB;SACF;IAED;;IAEG;IACH,IAAA,MAAM,QAAQ,GAAA;YACZ,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;IACjC,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;IACd,gBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;iBACpB;aACF;SACF;IAED;;IAEG;IACH,IAAA,UAAU,CAAC,MAAc,EAAA;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,IAAI,EAAE;IACR,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;IAED;;IAEG;IACH,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;SACvB;;;;;QAOD,kBAAkB,GAAA;IAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;SACxB;;QAGD,WAAW,GAAA;IACT,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;SACpC;;QAGD,iBAAiB,GAAA;YACf,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;gBACjC,IAAI,IAAI,CAAC,KAAK;IAAE,gBAAA,KAAK,EAAE,CAAC;aACzB;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IACF;;ICxLD;;;;;;;;;;;;;;;IAeG;IAEH,MAAM,SAAS,GAAG,CAAC,CAAC;IACpB,MAAM,SAAS,GAAG,SAAS,GAAG,EAAE,CAAC;IAE3B,SAAU,WAAW,CAAC,KAAiB,EAAA;;IAE3C,IAAA,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC;IAAE,QAAA,OAAO,KAAK,CAAC;;;IAIzC,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACvE,IAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,IAAA,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACnB,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,IAAA,OAAO,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE;;IAE5B,QAAA,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC;IAC7B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC;IAC5C,QAAA,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBACrC,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,YAAA,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;IACzC,gBAAA,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,SAAS;IAAE,gBAAA,EAAE,EAAE,CAAC;gBAChE,IAAI,EAAE,IAAI,SAAS,IAAI,EAAE,GAAG,OAAO,EAAE;oBAAE,OAAO,GAAG,EAAE,CAAC;IAAC,gBAAA,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;iBAAE;aACzE;;IAGD,QAAA,IAAI,OAAO,GAAG,SAAS,IAAI,CAAC,EAAE,GAAG,QAAQ,KAAK,EAAE,EAAE;IAChD,YAAA,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC;IAC7B,YAAA,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;gBACvC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,UAAU,GAAG,IAAI,CAAC,CAAC;gBACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;oBAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACjE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC;IAC3B,YAAA,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC;gBAClC,EAAE,IAAI,OAAO,CAAC;gBACd,QAAQ,GAAG,EAAE,CAAC;aACf;iBAAM;;IAEL,YAAA,EAAE,EAAE,CAAC;;;IAGL,YAAA,IAAI,EAAE,GAAG,QAAQ,IAAI,EAAE,EAAE;IACvB,gBAAA,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;oBAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;wBAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;oBAC7D,QAAQ,GAAG,EAAE,CAAC;iBACf;aACF;SACF;;IAGD,IAAA,IAAI,SAAS,GAAG,EAAE,GAAG,QAAQ,CAAC;IAC9B,IAAA,OAAO,SAAS,GAAG,CAAC,EAAE;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACtC,QAAA,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;gBAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YAChE,SAAS,IAAI,KAAK,CAAC;YACnB,QAAQ,IAAI,KAAK,CAAC;SACnB;;;;QAKD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC;IAEe,SAAA,aAAa,CAAC,KAAiB,EAAE,YAAoB,EAAA;IACnE,IAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;IACzC,IAAA,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAEnB,OAAO,EAAE,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,GAAG,YAAY,EAAE;IACjD,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;IACnC,QAAA,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC;;YAGhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;gBAC7E,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;aACzB;;;YAID,IAAI,UAAU,KAAK,CAAC;gBAAE,SAAS;;IAG/B,QAAA,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU;gBAAE,MAAM;IACtC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,QAAA,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IACxC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,IAAI,EAAE,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;gBACtD,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;IAC3B,YAAA,EAAE,EAAE,CAAC;aACN;SACF;IAED,IAAA,OAAO,GAAG,CAAC;IACb;;IC9GA;;;;;;IAMG;IAEH,MAAM,IAAI,GAAG,SAAS,CAAC;IACvB,MAAM,SAAS,GAAG,EAAE,CAAC;IAErB;;;IAGG;UACU,aAAa,CAAA;IAA1B,IAAA,WAAA,GAAA;YACU,IAAS,CAAA,SAAA,GAAqB,IAAI,CAAC;YACnC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;SAoC1B;QAlCC,IAAI,OAAO,KAAc,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IAEhD,IAAA,MAAM,IAAI,CAAC,QAAgB,EAAE,IAAiB,EAAA;IAC5C,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAC/C,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,CAC5D,CAAC;IACF,QAAA,MAAM,UAAU,GAAQ,IAAI,IAAI,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3E,IAAI,CAAC,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAC5C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAS,EAChF,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAS,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAC/E,CAAC;IACF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACrB,QAAA,OAAO,UAAwB,CAAC;SACjC;QAED,MAAM,WAAW,CAAC,IAAiB,EAAA;YACjC,IAAI,CAAC,IAAI,CAAC,SAAS;IAAE,YAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC/D,QAAA,MAAM,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAQ,CAAC;;;YAGpE,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAChH,OAAO,EAAE,EAAE,EAAE,EAAgB,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;SACnD;IAED,IAAA,MAAM,WAAW,CAAC,EAAc,EAAE,IAAiB,EAAA;YACjD,IAAI,CAAC,IAAI,CAAC,SAAS;IAAE,YAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC/D,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;SAC/F;QAED,KAAK,GAAA;IACH,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;IACF,CAAA;IAED;IACA;IACA;IAEA,MAAM,YAAY,GAAG,IAAI,aAAa,EAAE,CAAC;IAOzC;IACM,SAAU,eAAe,GAAc,EAAA,OAAO,YAAY,CAAC,OAAO,CAAC,EAAE;IAE3E;IACO,eAAe,WAAW,CAAC,IAAiB,EAAA;IACjD,IAAA,OAAO,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED;IACO,eAAe,WAAW,CAAC,EAAc,EAAE,IAAiB,EAAA;QACjE,OAAO,YAAY,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC5C;;IC7EA;;;;;IAKG;IAyBH;IACA;IACA;UAEa,UAAU,CAAA;IA4BrB,IAAA,WAAA,CAAY,SAA2B,EAAE,EAAA;YA3BhC,IAAI,CAAA,IAAA,GAAG,MAAM,CAAC;YAOf,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;YACf,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;;IAGZ,QAAA,IAAA,CAAA,OAAO,GAA6B,IAAI,GAAG,EAAE,CAAC;IAC9C,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,GAAG,EAAE,CAAC;YAC1C,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;;IAGd,QAAA,IAAA,CAAA,gBAAgB,GAAqB,IAAI,GAAG,EAAE,CAAC;;IAG/C,QAAA,IAAA,CAAA,IAAI,GAAgB,IAAI,WAAW,EAAE,CAAC;YACtC,IAAY,CAAA,YAAA,GAAkB,IAAI,CAAC;YACnC,IAAW,CAAA,WAAA,GAAgD,IAAI,CAAC;YAChE,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;;IA4kCd,QAAA,IAAA,CAAA,UAAU,GAA0F,IAAI,GAAG,EAAE,CAAC;YAtkCpH,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAAC;SACrD;;;;IAMD,IAAA,MAAM,IAAI,CAAC,MAAc,EAAE,QAAgB,EAAA;YACzC,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO;;;IAGxB,QAAA,IAAI;IACF,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;aACjC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,aAAa;IAAE,gBAAA,MAAM,KAAK,CAAC;gBAChD,MAAM,IAAI,aAAa,CACrB,CAAuC,oCAAA,EAAA,MAAM,CAAG,CAAA,CAAA,EAChD,iBAAiB,EACjB,KAAK,CACN,CAAC;aACH;SACF;;QAGO,MAAM,YAAY,CAAC,MAAc,EAAA;IACvC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;;YAGrB,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,MAAM,EAAE;IACzC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;aAClC;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,WAAW,EAAE;IACrD,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;aACvC;iBAAM;IACL,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;aACpC;YACD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;YAGhC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,QAAA,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;;YAG3E,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;;IAGrD,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC;IACjB,YAAA,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;IACxD,YAAA,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;IACpD,YAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;IAC/B,YAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;;gBAElD,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;gBACnE,YAAY;IACb,SAAA,CAAC,CAAC;;IAGH,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAChB;IACE,YAAA,MAAM,EAAE,OAAO,IAAI,KAAI;;;IAGrB,gBAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC,gBAAA,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC5E,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAgB,CAAC;IACtG,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAC3B,oBAAA,CAAC,CAAS,MAAA,EAAA,GAAG,CAAE,CAAA,GAAG,IAAI;IACtB,oBAAA,WAAW,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM;IAC9D,iBAAA,CAAC,CAAC;iBACJ;gBACD,OAAO,EAAE,YAAW;;;oBAGlB,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IACxC,qBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC;IAC5D,qBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;IACb,oBAAA,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IAClD,oBAAA,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IAClD,oBAAA,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACrD,iBAAC,CAAC,CAAC;IACL,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;IAAE,oBAAA,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;oBAChD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;wBACtB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,oBAAA,IAAI,CAAC;4BAAE,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;qBACvC;oBACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC3D,gBAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;oBACvC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,gBAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;IAAE,oBAAA,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAAC,oBAAA,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC;qBAAE;IACtE,gBAAA,OAAO,QAAQ,CAAC;iBACjB;gBACD,QAAQ,EAAE,YAAW;;oBAEnB,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IACxC,qBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACzC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,gBAAA,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;iBAC3B;gBACD,MAAM,EAAE,YAAW;;oBAEjB,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IACxC,qBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,CAAC;IAChE,gBAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;iBACxB;IACF,SAAA,EACD,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,WAAW,CACxB,CAAC;;IAGF,QAAA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;;;;;YAMzB,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC5C,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IAC9D,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,KAAK,KAAK,EAAE;IACxD,oBAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,OAAO,EAAE,CAAC;wBAC7C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;IACtC,wBAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC;IACrB,4BAAA,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;IACxD,4BAAA,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;IACpD,4BAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;IAC/B,4BAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;gCAClD,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;gCACnE,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,SAAS,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAC;IACrE,yBAAA,CAAC,CAAC;IACH,wBAAA,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;4BACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;yBAC3C;qBACF;iBACF;aACF;;IAGD,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;;IAGtB,QAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;YACxC,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;IAElD,QAAA,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;IAC1B,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM;IAAE,gBAAA,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChE,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ;IAAE,gBAAA,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aACtE;;IAED,QAAA,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;IAC1B,YAAA,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;oBAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,UAAU,EAAE;;wBAEvC,MAAM,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;qBAChD;yBAAM;IACL,oBAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;qBACxB;iBACF;aACF;;;IAID,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;IACzB,YAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACvB,YAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;;;;gBAI5B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;IAC3C,gBAAA,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;iBAC5C;aACF;;;;YAKD,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAC5C,IAAI,CAAC,GAAG,EACR;gBACE,UAAU,EAAE,YAAW;oBACrB,IAAI,IAAI,CAAC,YAAY;wBAAE,OAAO;IAC9B,gBAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;iBAC7B;gBACD,KAAK,EAAE,YAAW;oBAChB,IAAI,IAAI,CAAC,YAAY;wBAAE,OAAO;IAC9B,gBAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;iBACxB;gBACD,gBAAgB,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;gBACnD,gBAAgB,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;IAClC,SAAA,EACnB,EAAE,QAAQ,EAAE,YAAc,EAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAS,EAC5D,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAC9B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAC7B,CAAC;IAEF,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;IAED,IAAA,MAAM,KAAK,GAAA;YACT,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;IACzB,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAC5B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;;;YAGvB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE;IACnD,YAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;aACtB;IACD,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;;;;IAIvB,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAC5B,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;;;IAG3B,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAC9B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;IAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IACzB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACxB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACxB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;IAED;;;IAGG;IACH,IAAA,MAAM,MAAM,GAAA;YACV,IAAI,CAAC,UAAU,EAAE,CAAC;;YAElB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;;IAE7C,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACvB,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;;YAE5B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;IAC3C,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;aACpC;IACD,QAAA,IAAI,OAAO,GAAG,CAAC,EAAE;;IAEf,YAAA,OAAO,CAAC,IAAI,CAAC,gCAAgC,OAAO,CAAA,qBAAA,CAAuB,CAAC,CAAC;aAC9E;SACF;IAED;;;IAGG;IACH,IAAA,MAAM,QAAQ,GAAA;YACZ,IAAI,CAAC,UAAU,EAAE,CAAC;;IAElB,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;IAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IACzB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACxB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACxB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;;IAEnB,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;;IAE5B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;SAC7B;IAED,IAAA,MAAM,KAAc,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;;QAIzC,MAAM,OAAO,CAAC,GAAW,EAAA;IACvB,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,GAAG,CAAA,CAAE,CAAC,CAAC;IACrD,QAAA,OAAO,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;SACnD;IAED,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,KAAa,EAAA;YACtC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,OAAA,EAAU,GAAG,CAAE,CAAA,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;SACnF;;;;QAMD,MAAM,WAAW,CAAC,MAAmB,EAAA;YACnC,IAAI,CAAC,UAAU,EAAE,CAAC;;;IAGlB,QAAA,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACjC,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,MAAM,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,cAAc,CAAC,CAAC;aAClF;YAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;;;IAInD,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC9D,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;oBACjC,MAAM,MAAM,GAAG,CAAG,EAAA,MAAM,CAAC,IAAI,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAE,CAAC;oBAC/C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;IACtC,oBAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC;IACrB,wBAAA,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;IACxD,wBAAA,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;IACpD,wBAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;IAC/B,wBAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;4BAClD,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;IACnE,wBAAA,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA,IAAA,EAAO,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAC;IACvE,qBAAA,CAAC,CAAC;IACH,oBAAA,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;wBACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;qBAC3C;iBACF;aACF;IAED,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAE5B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBACpB,IAAI,EAAE,aAAa,CAAC,YAAY;IAChC,YAAA,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,MAAM,CAAC,IAAI;IACtB,YAAA,GAAG,EAAE,EAAE;gBACP,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAwC;IAC/E,SAAA,CAAC,CAAC;SACJ;QAED,MAAM,SAAS,CAAC,SAAiB,EAAA;YAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;;YAG5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC9C,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC5C,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAG,EAAA,SAAS,CAAI,CAAA,EAAA,GAAG,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;aAC/C;;;IAID,QAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAE1C,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAChC,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAE5B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBACpB,IAAI,EAAE,aAAa,CAAC,UAAU;IAC9B,YAAA,KAAK,EAAE,CAAC;gBACR,SAAS;IACT,YAAA,GAAG,EAAE,EAAE;IACR,SAAA,CAAC,CAAC;SACJ;IAED;;;IAGG;QACK,MAAM,mBAAmB,CAAC,SAAiB,EAAA;IACjD,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,OAAO,CAAC;YACnC,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;IACpD,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,SAAS;IACzC,YAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,YAAA,IAAI;IACF,gBAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;iBACtB;IAAC,YAAA,MAAM,iBAAiB;aAC1B;IACD,QAAA,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;IAC7B,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACtC;SACF;QAED,MAAM,QAAQ,CAAC,SAAiB,EAAA;YAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SACpC;IAED,IAAA,MAAM,aAAa,GAAA;YACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;SACxC;QAED,MAAM,cAAc,CAAC,SAAiB,EAAA;YACpC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;SAC5C;;;;IAMD,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,IAA+B,EAAA;YAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,GAAG,GAAa,EAAE,CAAC;;YAEzB,MAAM,UAAU,GAA0C,EAAE,CAAC;IAE7D,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAChD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,YAAA,MAAM,GAAG,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,OAAO,EAAE,CAAC;;gBAGtC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY;IAChC,mBAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;sBAChD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,YAAA,IAAI,QAAQ,IAAI,CAAE,QAA+C,CAAC,aAAa,EAAE;oBAC/E,MAAM,IAAI,aAAa,CACrB,CAA0B,uBAAA,EAAA,OAAO,CAAe,YAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAC5D,eAAe,CAChB,CAAC;iBACH;gBAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;;oBAEzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACrC,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;iBAC1E;qBAAM;;oBAEL,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;iBAC9B;;gBAGD,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAEjE,YAAA,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAElB,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;oBAC7B,SAAS;IACT,gBAAA,GAAG,EAAE,OAAO;IACZ,gBAAA,IAAI,EAAE,SAAS;IAChB,aAAA,CAAC,CAAC;aACJ;YAED,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAEvC,QAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;YAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACzB,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,QAAA,OAAO,GAAG,CAAC;SACZ;IAED,IAAA,MAAM,IAAI,CAAC,SAAiB,EAAE,KAAgB,EAAA;YAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAE5B,QAAA,IAAI,IAA+B,CAAC;;YAGpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7D,QAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;gBACrB,IAAI,GAAG,QAAQ,CAAC;aACjB;iBAAM;gBACL,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;aACzC;;YAGD,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;IAG9C,QAAA,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;IACtD,YAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC,CAAC,CAAC;aAC5D;;IAGD,QAAA,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7C,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1C;;IAGD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;YACzC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;;YAG1C,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACzE,YAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,OAAQ,CAAC,CAAC,CAAC;aAC/D;;YAGD,IAAI,CAAC,aAAa,EAAE,CAAC;IAErB,QAAA,OAAO,IAAI,CAAC;SACb;IAED,IAAA,MAAM,MAAM,CACV,SAAiB,EACjB,KAAgB,EAChB,OAAgC,EAAA;YAEhC,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;;YAEd,MAAM,UAAU,GAA4D,EAAE,CAAC;;IAE/E,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;gBAC5C,MAAM,GAAG,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,GAAG,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;gBAEzC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;oBACzF,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IACvC,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;oBAGlC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;oBACrC,MAAM,SAAS,GAAG,KAAK,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;oBAE/C,IAAI,SAAS,EAAE;;wBAEb,MAAM,IAAI,CAAC,0BAA0B,CACnC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAC1D,CAAC;qBACH;oBAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;wBACzC,IAAI,SAAS,EAAE;IACb,wBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAwC,CAAC,CAAC;IACzF,wBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;yBAC3E;IACD,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,EAAE,OAAO,CAAC,CAAC;IACvD,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;qBACtE;yBAAM;IACL,oBAAA,IAAI,SAAS;IAAE,wBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpC,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,EAAE,OAAO,CAAC,CAAC;qBAChD;IACD,gBAAA,KAAK,EAAE,CAAC;oBAER,IAAI,SAAS,EAAE;wBACb,UAAU,CAAC,IAAI,CAAC;4BACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,wBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;4BAC7B,SAAS;IACT,wBAAA,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxB,qBAAA,CAAC,CAAC;qBACJ;oBACD,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,oBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;wBAC7B,SAAS;IACT,oBAAA,GAAG,EAAE,KAAK;IACV,oBAAA,IAAI,EAAE,OAAO;IACd,iBAAA,CAAC,CAAC;;IAGH,gBAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;iBAChF;aACF;YAED,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAEvC,QAAA,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IACxB,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,aAAa,EAAE,CAAC;IACrB,QAAA,OAAO,KAAK,CAAC;SACd;IAED;;;;IAIG;QACK,MAAM,0BAA0B,CACtC,SAAiB,EACjB,KAAa,EACb,KAAa,EACb,UAAmE,EACnE,OAAoB,EAAA;IAEpB,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,KAAK,EAAE,CAAC;IACzC,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO;IAClC,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;;YAGtB,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;gBACpD,IAAI,YAAY,KAAK,SAAS;oBAAE,SAAS;IACzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;wBAAE,SAAS;IACrD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,QAAQ,KAAK,SAAS;wBAAE,SAAS;IACrC,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU;wBAAE,SAAS;oBAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;oBACpD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE;IACrD,oBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,eAAA,EAAkB,SAAS,CAAU,OAAA,EAAA,KAAK,CAAmB,gBAAA,EAAA,OAAO,SAAS,YAAY,CAAA,oBAAA,CAAsB,EAC/G,uBAAuB,CACxB,CAAC;qBACH;iBACF;aACF;;YAGD,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;gBACpD,IAAI,YAAY,KAAK,SAAS;oBAAE,SAAS;IACzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;wBAAE,SAAS;IACrD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,QAAQ,KAAK,SAAS;wBAAE,SAAS;oBACrC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU;wBAAE,SAAS;oBAC9E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACpD,gBAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;wBAC5B,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;4BAAE,SAAS;wBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;wBAClD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;wBACvC,MAAM,UAAU,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC;IAC1F,oBAAA,MAAM,MAAM,GAAG,CAAA,EAAG,YAAY,CAAI,CAAA,EAAA,KAAK,EAAE,CAAC;wBAC1C,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;4BACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACzC,wBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;yBAC5E;6BAAM;4BACL,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;yBAClC;wBACD,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;wBACrE,UAAU,CAAC,IAAI,CAAC;4BACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,wBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;IAC7B,wBAAA,SAAS,EAAE,YAAY;IACvB,wBAAA,GAAG,EAAE,KAAK;IACV,wBAAA,IAAI,EAAE,UAAU;IACjB,qBAAA,CAAC,CAAC;qBACJ;iBACF;aACF;SACF;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAA;YAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;;YAEd,MAAM,UAAU,GAA4D,EAAE,CAAC;;IAE/E,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;gBAC5C,MAAM,GAAG,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,GAAG,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;gBAEzC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;;oBAEzF,KAAK,IAAI,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;oBAC7F,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;;IAEzC,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAwC,CAAC,CAAC;IACzF,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;qBAC3E;yBAAM;IACL,oBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;qBACtB;IACD,gBAAA,KAAK,EAAE,CAAC;oBAER,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,oBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;wBAC7B,SAAS;IACT,oBAAA,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxB,iBAAA,CAAC,CAAC;;IAGH,gBAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;iBACvE;aACF;YAED,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAEvC,QAAA,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IACxB,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,aAAa,EAAE,CAAC;IACrB,QAAA,OAAO,KAAK,CAAC;SACd;IAED;;;;;;;IAOG;QACK,MAAM,oBAAoB,CAChC,SAAiB,EACjB,OAAe,EACf,UAAmE,EACnE,OAAoB,EAAA;YAEpB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,OAAO,EAAE,CAAC;IAC3C,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IAAE,YAAA,OAAO,CAAC,CAAC;IACpC,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEtB,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;gBACpD,IAAI,YAAY,KAAK,SAAS;oBAAE,SAAS;IACzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;wBAAE,SAAS;IACrD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,QAAQ,KAAK,SAAS;wBAAE,SAAS;oBAErC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;oBACpD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;IAEtE,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IACxD,oBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,oBAAA,EAAuB,SAAS,CAAA,gBAAA,EAAmB,OAAO,CAAA,MAAA,EAAS,YAAY,CAAA,oBAAA,CAAsB,EACrG,uBAAuB,CACxB,CAAC;qBACH;IAED,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE;wBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;IAClD,oBAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;4BAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;;IAEvC,wBAAA,KAAK,IAAI,MAAM,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;;IAEnF,wBAAA,MAAM,MAAM,GAAG,CAAA,EAAG,YAAY,CAAI,CAAA,EAAA,KAAK,EAAE,CAAC;4BAC1C,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;IACzC,4BAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAwC,CAAC,CAAC;IAC5F,4BAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;6BACjE;iCAAM;IACL,4BAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;6BACzB;4BACD,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;4BAC/D,UAAU,CAAC,IAAI,CAAC;gCACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,4BAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;IAC7B,4BAAA,SAAS,EAAE,YAAY;IACvB,4BAAA,GAAG,EAAE,KAAK;IACX,yBAAA,CAAC,CAAC;IACH,wBAAA,KAAK,EAAE,CAAC;yBACT;qBACF;IAAM,qBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;wBACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;IAClD,oBAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;4BAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,wBAAA,MAAM,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;IAC/C,wBAAA,MAAM,MAAM,GAAG,CAAA,EAAG,YAAY,CAAI,CAAA,EAAA,KAAK,EAAE,CAAC;4BAC1C,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;gCACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,4BAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;6BACzE;iCAAM;gCACL,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;6BAC/B;4BACD,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;4BAClE,UAAU,CAAC,IAAI,CAAC;gCACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,4BAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;IAC7B,4BAAA,SAAS,EAAE,YAAY;IACvB,4BAAA,GAAG,EAAE,KAAK;IACV,4BAAA,IAAI,EAAE,OAAO;IACd,yBAAA,CAAC,CAAC;;yBAEJ;qBACF;iBACF;aACF;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IAED;;;;IAIG;IACH,IAAA,MAAM,UAAU,CACd,SAAiB,EACjB,KAAgB,EAChB,KAA6C,EAAA;YAE7C,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAE5B,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACxE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;IACnF,cAAE,CAAC,GAA4B,KAAK,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,OAAQ,CAAC;kBACrE,IAAI,CAAC;IACT,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC;IACtC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC5C,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;YAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,QAAA,MAAM,IAAI,GAAG,CAAC,GAA4B,KAAa;gBACrD,IAAI,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC;IAAE,gBAAA,OAAO,IAAI,CAAC;IAC5D,YAAA,IAAI,OAAO,GAAG,MAAM,EAAE;IAAE,gBAAA,OAAO,EAAE,CAAC;IAAC,gBAAA,OAAO,IAAI,CAAC;iBAAE;IACjD,YAAA,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACpC,YAAA,KAAK,EAAE,CAAC;gBACR,OAAO,KAAK,GAAG,KAAK,CAAC;IACvB,SAAC,CAAC;YAEF,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;;gBAEzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/G,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,gBAAA,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;iBACrC;gBACD,OAAO,IAAI,CAAC,MAAM,CAAC;aACpB;;YAGD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7D,QAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;IACrB,YAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;IAC1B,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;wBAAE,MAAM;iBACvB;IACD,YAAA,OAAO,KAAK,CAAC;aACd;;IAGD,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,CAAG,EAAA,MAAM,CAAQ,MAAA,CAAA,CAAC,CAAC;IACxD,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,CAAA,EAAG,MAAM,CAAA,MAAA,CAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,KAAI;gBAC/D,IAAI,KAAK,IAAI,KAAK;oBAAE,OAAO;IAC3B,YAAA,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IACzB,YAAA,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACtC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,SAAC,CAAC,CAAC;IACH,QAAA,OAAO,KAAK,CAAC;SACd;IAED,IAAA,MAAM,KAAK,CAAC,SAAiB,EAAE,KAAiB,EAAA;YAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,aAAa,EAAE,CAAC;IACrB,QAAA,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAC;YAC/E,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC,CAAC,CAAC,MAAM,CAAC;SACnE;QAED,MAAM,KAAK,CAAC,SAAiB,EAAA;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;;YAE9C,MAAM,UAAU,GAA4D,EAAE,CAAC;IAC/E,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;gBAC5C,MAAM,GAAG,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,GAAG,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;gBACzC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;IACzC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAwC,CAAC,CAAC;IACzF,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;iBAC3E;qBAAM;IACL,gBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBACtB;gBACD,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;oBAC7B,SAAS;IACT,gBAAA,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxB,aAAA,CAAC,CAAC;;IAEH,YAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;aACvE;YACD,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACvC,QAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;IAC9B,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;;IAID;;;;;IAKG;IACH,IAAA,MAAM,UAAU,CACd,SAAiB,EACjB,MAAsB,EACtB,MAA8D,EAAA;YAE9D,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;IAC7C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAE5C,QAAA,IAAI,MAAM,KAAK,KAAK,EAAE;gBACpB,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IAC/B,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,SAAS,CAAA,CAAA,CAAG,EAAE,eAAe,CAAC,CAAC;iBAC5G;gBACD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IACrC,YAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,OAAO;aACR;;YAGD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IAChC,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,SAAS,CAAA,CAAA,CAAG,EAAE,kBAAkB,CAAC,CAAC;aAC/G;;YAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;gBAC3E,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,QAAQ,MAAM,CAAC,IAAI,CAAA,CAAE,CAAC;gBACjD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACjD,IAAI,MAAM,EAAE;IACV,gBAAA,IAAI;IACF,oBAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;qBACtB;IAAC,gBAAA,MAAM,iBAAiB;IACzB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBACtC;aACF;YACD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;;IAG5B,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;IAC/B,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,MAAM,QAAQ,CAAC;YACjC,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,UAAU,GAA4D,EAAE,CAAC;YAC/E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;IAClC,YAAA,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;oBAAE,SAAS;IACtC,YAAA,MAAM,OAAO,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAC7B,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;;gBAE3B,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACpC,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC3D,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;oBAC7B,SAAS;IACT,gBAAA,GAAG,EAAE,EAAE;IACP,gBAAA,IAAI,EAAE,OAAO;IACd,aAAA,CAAC,CAAC;aACJ;YACD,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACvC,QAAA,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC;IACpC,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;IAED,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAgB,EAAA;YACnE,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;IAC9C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,kBAAkB,CAAC,CAAC;IACtH,QAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,MAAM,EAAE,CAAC;;;IAG5C,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,OAAO;IAC9C,QAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,QAAA,IAAI,MAAM;IAAE,YAAA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IAEjC,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC;IACrB,YAAA,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;IACxD,YAAA,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;IACpD,YAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;IAC/B,YAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;gBAClD,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;gBACnE,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,SAAS,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAC;IACpE,SAAA,CAAC,CAAC;IACH,QAAA,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;YAG1C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC9C,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;oBACzC,MAAM,CAAC,GAAG,CAAC,CAAG,EAAA,MAAM,CAAC,KAAK,CAAC,CAAI,CAAA,EAAA,GAAG,CAAC,KAAK,CAAC,CAAE,CAAA,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iBAClE;aACF;IACD,QAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;SAC7B;IAED,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,UAAmB,EAAA;YACpE,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,kBAAkB,CAAC,CAAC;;IAEtH,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE;gBACrB,MAAM,IAAI,aAAa,CAAC,CAAA,yCAAA,EAA4C,MAAM,CAAG,CAAA,CAAA,EAAE,eAAe,CAAC,CAAC;aACjG;;YAED,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAG,EAAA,SAAS,QAAQ,MAAM,CAAA,CAAE,CAAC,EAAE;gBAC/F,MAAM,IAAI,aAAa,CAAC,CAAoB,iBAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;aAClH;IACD,QAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,QAAA,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;IAEtB,QAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,MAAM,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,MAAM,EAAE;IACV,YAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACtC;IACD,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;SAC7B;;;;IAMD,IAAA,MAAM,gBAAgB,GAAA;YACpB,IAAI,IAAI,CAAC,YAAY;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,iCAAiC,EAAE,WAAW,CAAC,CAAC;YAC/F,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACjD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;IAE7B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBACpB,IAAI,EAAE,aAAa,CAAC,KAAK;gBACzB,KAAK,EAAE,IAAI,CAAC,YAAY;IACxB,YAAA,SAAS,EAAE,EAAE;IACb,YAAA,GAAG,EAAE,EAAE;IACR,SAAA,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,iBAAiB,GAAA;YACrB,IAAI,CAAC,IAAI,CAAC,YAAY;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;;;;IAKpF,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBACpB,IAAI,EAAE,aAAa,CAAC,MAAM;gBAC1B,KAAK,EAAE,IAAI,CAAC,YAAY;IACxB,YAAA,SAAS,EAAE,EAAE;IACb,YAAA,GAAG,EAAE,EAAE;IACR,SAAA,CAAC,CAAC;IACH,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAEvB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;IAC3C,gBAAA,IAAK,KAA4C,CAAC,aAAa,EAAE;IAC/D,oBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;qBACtB;yBAAM;wBACL,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;qBAC1B;iBACF;aACF;YAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE/C,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IACzB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;IAED,IAAA,MAAM,mBAAmB,GAAA;YACvB,IAAI,CAAC,IAAI,CAAC,YAAY;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;;IAGpF,QAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE;oBACzC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC7B,IAAI,GAAG,GAAG,CAAC;IAAE,oBAAA,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;iBACpD;aACF;YAED,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAExB,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBACpB,IAAI,EAAE,aAAa,CAAC,QAAQ;gBAC5B,KAAK,EAAE,IAAI,CAAC,YAAY;IACxB,YAAA,SAAS,EAAE,EAAE;IACb,YAAA,GAAG,EAAE,EAAE;IACR,SAAA,CAAC,CAAC;IAEH,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;;IAGzB,QAAA,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE;gBACtC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;IAC/B,gBAAA,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;iBACpC;aACF;SACF;QAMD,MAAM,SAAS,CAAC,IAAY,EAAA;YAC1B,IAAI,CAAC,IAAI,CAAC,YAAY;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,qCAAqC,EAAE,SAAS,CAAC,CAAC;IAClG,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAA,WAAA,EAAc,IAAI,CAAkB,gBAAA,CAAA,EAAE,kBAAkB,CAAC,CAAC;;IAEjH,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE;gBACxB,KAAK,EAAE,IAAI,CAAC,YAAY;IACxB,YAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI;IAC9D,SAAA,CAAC,CAAC;SACJ;QAED,MAAM,mBAAmB,CAAC,IAAY,EAAA;YACpC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,QAAA,IAAI,CAAC,EAAE;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAA,WAAA,EAAc,IAAI,CAAa,WAAA,CAAA,EAAE,qBAAqB,CAAC,CAAC;;YAEzF,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;;;YAG7D,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAa,CAAC,CAAC;;YAE9C,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;IACjC,YAAA,IAAI,CAAC,KAAK,IAAI,EAAE;oBAAE,KAAK,GAAG,IAAI,CAAC;oBAAC,SAAS;iBAAE;IAC3C,YAAA,IAAI,KAAK;IAAE,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACtC;SACF;QAED,MAAM,gBAAgB,CAAC,IAAY,EAAA;YACjC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAA,WAAA,EAAc,IAAI,CAAa,WAAA,CAAA,EAAE,qBAAqB,CAAC,CAAC;IAChH,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC9B;;IAID,IAAA,MAAM,MAAM,GAAA;YACV,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,MAAM,MAAM,GAA8C,EAAE,CAAC;YAC7D,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;gBAC3C,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;aACtD;IACD,QAAA,OAAO,MAAM,CAAC;SACf;;;;QAMO,MAAM,UAAU,CAAC,SAAiB,EAAA;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC5C,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;;IAE/B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,CAAG,EAAA,MAAM,CAAQ,MAAA,CAAA,CAAC,CAAC;IACxD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA,EAAG,MAAM,CAAA,MAAA,CAAQ,CAAC,CAAC;IAC9D,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;IACxC,YAAA,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IACzB,YAAA,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,YAAA,OAAO,GAAG,CAAC;IACb,SAAC,CAAC,CAAC;;YAEH,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SAC/C;IAED;;;IAGG;QACK,gBAAgB,CAAC,SAAiB,EAAE,IAA+B,EAAA;YACzE,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW;IAAE,YAAA,OAAO,IAAI,CAAC;YACzD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC5C,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;YAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;IAC3C,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,SAAS;gBACtC,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,YAAA,MAAM,GAAG,GAAI,KAA4C,CAAC,aAAa,CAAC;IACxE,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBACnD,IAAI,GAAG,EAAE;oBACP,IAAI,GAAG,IAAI,CAAC;IAAE,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;iBACnC;qBAAM;IACL,gBAAA,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC;oBACtC,IAAI,GAAG,IAAI,CAAC;IAAE,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;;IACzB,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACrB;aACF;IACD,QAAA,OAAO,IAAI,CAAC;SACb;IAEO,IAAA,KAAK,CAAC,MAAmB,EAAA;IAC/B,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBACxD,IAAI,GAAG,CAAC,UAAU;IAAE,gBAAA,OAAO,IAAI,CAAC;aACjC;YACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SACvC;QAEO,WAAW,CAAC,MAAmB,EAAE,GAA4B,EAAA;YACnE,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IAC9D,YAAA,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;gBACzB,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;IAAE,gBAAA,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;IAChF,YAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;IAC9D,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,OAAO,CAAA,wBAAA,EAA2B,MAAM,CAAC,IAAI,CAAA,CAAA,CAAG,EAAE,kBAAkB,CAAC,CAAC;iBAC1G;gBACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;IACzC,gBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;iBACrD;gBACD,IAAI,KAAK,KAAK,SAAS;IAAE,gBAAA,SAAS,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;aACrD;IACD,QAAA,OAAO,SAAS,CAAC;SAClB;IAEO,IAAA,SAAS,CAAC,OAAe,EAAE,IAAY,EAAE,KAAc,EAAE,MAAkB,EAAA;YACjF,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,IAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;SACzD;;;;IAMO,IAAA,MAAM,cAAc,GAAA;YAC1B,MAAM,IAAI,GAA8C,EAAE,CAAC;YAC3D,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;IACzC,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;aAC7B;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YAClD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;SACjD;IAEO,IAAA,MAAM,WAAW,GAAA;YACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACtD,QAAA,IAAI,CAAC,GAAG;gBAAE,OAAO;IAEjB,QAAA,IAAI;gBACF,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA8C,CAAC;IAE3E,YAAA,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACvD,MAAM,MAAM,GAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;oBACzD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACpC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;iBAClD;aACF;IAAC,QAAA,MAAM;;aAEP;SACF;;;;IAMD;;;;;;;IAOG;IACK,IAAA,kBAAkB,CAAC,EAAU,EAAA;IACnC,QAAA,MAAM,UAAU,GAAG,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,CAAO,IAAA,EAAA,EAAE,GAAG,CAAC;IACzD,QAAA,MAAM,QAAQ,GAAG,EAAE,KAAK,MAAM,GAAG,iBAAiB,GAAG,CAAmB,gBAAA,EAAA,EAAE,EAAE,CAAC;YAC7E,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,QAAA,MAAM,UAAU,GAAG,CAAC,IAAY,KAAiB;gBAC/C,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAC/C,SAAC,CAAC;IAEF,QAAA,MAAM,YAAY,GAAG,YAAmC;gBACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,YAAA,IAAI,CAAC,GAAG;IAAE,gBAAA,OAAO,EAAE,CAAC;IACpB,YAAA,IAAI;IACF,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAkB,CAAC;iBACnE;IAAC,YAAA,MAAM;IACN,gBAAA,OAAO,EAAE,CAAC;iBACX;IACH,SAAC,CAAC;YAEF,OAAO;IACL,YAAA,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,KAAI;oBACvB,IAAI,GAAG,GAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAgB,CAAC;;IAE5G,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;wBAC3B,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,oBAAA,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAgB,CAAC;qBACpH;;oBAED,IAAI,eAAe,EAAE,EAAE;IACrB,oBAAA,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;wBACnC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;wBACtC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACtB,oBAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAClE,oBAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrE,oBAAA,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACxB,oBAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACtD,oBAAA,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC;qBACvB;IACD,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,EAAG,UAAU,CAAA,EAAG,EAAE,CAAA,CAAE,EAAE,GAAG,CAAC,CAAC;iBACrD;IACD,YAAA,IAAI,EAAE,OAAO,EAAE,KAAI;IACjB,gBAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAA,EAAG,EAAE,CAAA,CAAE,CAAC,CAAC;IAC1D,gBAAA,IAAI,CAAC,GAAG;IAAE,oBAAA,OAAO,IAAI,CAAC;IACtB,gBAAA,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;;oBAE9B,IAAI,eAAe,EAAE,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE;wBACxC,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC5B,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;wBACrF,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;wBACxC,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;wBACpD,GAAG,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;qBAC7C;;IAED,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IAC3B,oBAAA,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBACxD,GAAG,GAAG,YAAmB,CAAC;qBAC3B;IACD,gBAAA,OAAO,GAAG,CAAC;iBACZ;IACD,YAAA,MAAM,EAAE,OAAO,EAAE,KAAI;IACnB,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAG,EAAA,UAAU,CAAG,EAAA,EAAE,CAAE,CAAA,CAAC,CAAC;iBACjD;gBACD,UAAU,EAAE,YAAW;;oBAErB,IAAI,CAAC,SAAS,EAAE;IACd,oBAAA,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;wBACnC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;wBACnD,SAAS,GAAG,IAAI,CAAC;qBAClB;oBACD,OAAO,EAAE,GAAG,CAAC;iBACd;IACD,YAAA,QAAQ,EAAE,YAAY;IACtB,YAAA,QAAQ,EAAE,OAAO,IAAI,KAAI;IACvB,gBAAA,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;;IAElC,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;oBACpD,IAAI,GAAG,IAAI,CAAC;IAAE,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;;IAC1B,oBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACtE;IACD,YAAA,UAAU,EAAE,OAAO,EAAE,KAAI;IACvB,gBAAA,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;IAClC,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;iBAC1E;aACF,CAAC;SACH;;;;IAMO,IAAA,cAAc,CAAC,MAAiB,EAAA;IACtC,QAAA,QAAQ,MAAM,CAAC,IAAI;gBACjB,KAAK,aAAa,CAAC,MAAM,CAAC;gBAC1B,KAAK,aAAa,CAAC,MAAM;IACvB,gBAAA,IAAI,MAAM,CAAC,IAAI,EAAE;IACf,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,EAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,GAAG,CAAE,CAAA,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;qBAChE;oBACD,MAAM;gBACR,KAAK,aAAa,CAAC,MAAM;IACvB,gBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAG,EAAA,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,GAAG,CAAA,CAAE,CAAC,CAAC;oBACrD,MAAM;gBACR,KAAK,aAAa,CAAC,YAAY;IAC7B,gBAAA,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;IACvB,oBAAA,IAAI;IACF,wBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAgB,CAAgB,CAAC;IAClE,wBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;gCAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5B,4BAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;6BAC1C;yBACF;IAAC,oBAAA,MAAM,cAAc;qBACvB;oBACD,MAAM;gBACR,KAAK,aAAa,CAAC,MAAM,CAAC;gBAC1B,KAAK,aAAa,CAAC,QAAQ,CAAC;gBAC5B,KAAK,aAAa,CAAC,KAAK;oBACtB,MAAM;aACT;SACF;IAED;;;;;IAKG;QACK,MAAM,sBAAsB,CAAC,SAAiB,EAAA;IACpD,QAAA,IAAI,CAAC,SAAS;gBAAE,OAAO;;IAEvB,QAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;;IAGhC,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;IAC/B,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,MAAM,QAAQ,CAAC;YACjC,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,QAAA,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE;IAC3B,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aACtB;SACF;;;;;IAOO,IAAA,sBAAsB,CAC5B,SAAiB,EAAE,OAAe,EAClC,MAAsC,EACtC,MAAsC,EAAA;YAEtC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,QAAA,IAAI,CAAC,MAAM;gBAAE,OAAO;IAEpB,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;;gBAE9D,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM;oBAAE,SAAS;IAC9C,YAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,OAAO,EAAE,CAAC;gBAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjD,YAAA,IAAI,CAAC,MAAM;oBAAE,SAAS;;gBAGtB,IAAI,MAAM,EAAE;IACV,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC/B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE;IAC3C,oBAAA,MAAM,CAAC,MAAM,CAAC,CAAA,EAAG,MAAM,CAAC,MAAM,CAAC,CAAI,CAAA,EAAA,OAAO,CAAE,CAAA,CAAC,CAAC;qBAC/C;iBACF;;gBAGD,IAAI,MAAM,EAAE;IACV,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC/B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE;IAC3C,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;qBAC7D;iBACF;aACF;SACF;;IAGO,IAAA,MAAM,cAAc,CAC1B,SAAiB,EACjB,KAAgB,EAAA;YAEhB,IAAI,CAAC,KAAK,CAAC,KAAK;IAAE,YAAA,OAAO,IAAI,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,QAAA,IAAI,CAAC,MAAM;IAAE,YAAA,OAAO,IAAI,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAE5C,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;;gBAE1D,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM;oBAAE,SAAS;gBAEhE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,YAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;IAChF,YAAA,IAAI,CAAC,QAAQ,IAAI,GAAG,KAAK,KAAK;oBAAE,SAAS;;IAGzC,YAAA,IAAI,GAAG,KAAK,KAAK,EAAE;oBACjB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;IACvD,oBAAA,MAAM,GAAG,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,SAAS,EAAE,CAAC;wBACxC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;wBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAChC,OAAO,KAAK,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC;qBACxD;oBACD,MAAM,IAAI,GAAG,SAAoC,CAAC;IAClD,gBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;wBACjB,MAAM,GAAG,GAAG,CAAG,EAAA,SAAS,IAAI,IAAI,CAAC,GAAG,CAAA,CAAE,CAAC;wBACvC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;wBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAChC,OAAO,KAAK,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;qBACvD;;IAED,gBAAA,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAC5C,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAG,EAAA,SAAS,IAAI,CAAC,CAAA,CAAE,CAAC,CAAC;wBACtD,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;wBAClC,MAAM,IAAI,GAA8B,EAAE,CAAC;IAC3C,oBAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,oBAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE;IACxB,wBAAA,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACrB,wBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gCAAE,SAAS;IAC3B,wBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,CAAC,CAAC;4BACjD,IAAI,KAAK,EAAE;IAAE,4BAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAAC,4BAAA,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,CAAC;6BAAE;yBACnE;IACD,oBAAA,OAAO,IAAI,CAAC;qBACb;;IAED,gBAAA,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE;IACtE,oBAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;IAC/B,oBAAA,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,CAAG,EAAA,MAAM,CAAQ,MAAA,CAAA,CAAC,CAAC;IACxD,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA,EAAG,MAAM,CAAA,MAAA,CAAQ,CAAC,CAAC;wBAC9D,MAAM,IAAI,GAA8B,EAAE,CAAC;wBAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;IAClC,wBAAA,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;4BAClE,IAAI,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC;IAAE,4BAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;yBACzE;IACD,oBAAA,OAAO,IAAI,CAAC;qBACb;iBACF;;IAGD,YAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,GAAG,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjD,YAAA,IAAI,CAAC,MAAM;oBAAE,SAAS;;gBAGtB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;oBACvD,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;iBAC7F;gBACD,MAAM,CAAC,GAAG,SAAoC,CAAC;IAC/C,YAAA,IAAI,KAAK,IAAI,CAAC,EAAE;oBACd,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxB,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;iBAC7D;;IAED,YAAA,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;oBACtC,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,gBAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,gBAAA,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE;wBACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5F,oBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;4BACtB,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;4BAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;IACpB,4BAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,4BAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;6BACnB;yBACF;qBACF;IACD,gBAAA,OAAO,OAAO,CAAC;iBAChB;;IAED,YAAA,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;oBAC1D,IAAI,QAAQ,GAAG,EAAE,CAAC;oBAClB,IAAI,MAAM,GAAG,QAAQ,CAAC;IACtB,gBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS;IAAE,oBAAA,QAAQ,GAAG,CAAA,EAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;IAC/D,qBAAA,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;wBAAE,QAAQ,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,CAAC;IAC/D,gBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS;IAAE,oBAAA,MAAM,GAAG,CAAA,EAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;IACnE,qBAAA,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;wBAAE,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA,OAAA,CAAS,CAAC;IACnE,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;iBACzE;aACF;IAED,QAAA,OAAO,IAAI,CAAC;SACb;;QAGO,MAAM,eAAe,CAC3B,SAAiB,EAAE,KAAa,EAAE,MAAW,EAC7C,QAAgB,EAAE,MAAc,EAAA;;IAGhC,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,CAAG,EAAA,MAAM,QAAQ,CAAC;;YAE5E,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACzD,MAAM,GAAG,GAAa,EAAE,CAAC;YACzB,KAAK,MAAM,GAAG,QAAQ,CAAC,IAAI,OAAO,EAAE;IAClC,YAAA,MAAM,EAAE,GAAI,QAAgB,CAAC,EAAY,CAAC;IAC1C,YAAA,IAAI,EAAE;IAAE,gBAAA,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACtB;YACD,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAG,EAAA,SAAS,IAAI,EAAE,CAAA,CAAE,CAAC,CAAC,CAAC;YACnE,MAAM,IAAI,GAA8B,EAAE,CAAC;IAC3C,QAAA,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;IACpB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,CAAC,CAAC;IAC/C,YAAA,IAAI,GAAG;IAAE,gBAAA,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,CAAC;aAC7C;IACD,QAAA,OAAO,IAAI,CAAC;SACb;;;;;QAOO,KAAK,GAAA;YACX,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE;IACxB,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAClB,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;aACpB;SACF;;QAGO,aAAa,GAAA;IACnB,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE;gBACnD,MAAM,CAAC,SAAS,EAAE,CAAC;aACpB;SACF;;QAGO,iBAAiB,GAAA;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;YACvD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;IAC3C,QAAA,IAAI,IAAI,GAAG,QAAQ,EAAE;IACnB,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MAAO,GAAC,CAAC,CAAC;IACjC,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;aAClB;SACF;;QAGD,mBAAmB,GAAA;YACjB,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,GAAG,CAAC;SAC1C;IAED;;;IAGG;QACH,MAAM,YAAY,CAAC,SAAiB,EAAA;YAClC,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC9C,QAAA,MAAM,KAAK,GAA4B;IACrC,YAAA,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,IAAI,CAAC,MAAM;IACrB,YAAA,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC;IACzB,kBAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAClF,kBAAE,CAAC;gBACL,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;gBAC/E,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,YAAY;gBAC9C,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,YAAY;IAC9C,YAAA,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE;aAC/C,CAAC;;YAGF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,MAAM,WAAW,GAA4B,EAAE,CAAC;IAChD,YAAA,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;oBACjD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5D,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;iBACxD;IACD,YAAA,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;aACjC;IAED,QAAA,OAAO,KAAK,CAAC;SACd;IAED;;IAEG;QACH,MAAM,YAAY,CAAC,SAAiB,EAAA;YAClC,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC5B,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;SAC7C;;QAGO,MAAM,oBAAoB,CAAC,SAAiB,EAAA;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,QAAA,IAAI,CAAC,MAAM;IAAE,YAAA,OAAO,CAAC,CAAC;YACtB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;;gBAE9D,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM;oBAAE,SAAS;IAC9C,YAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,OAAO,EAAE,CAAC;gBAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjD,YAAA,IAAI,CAAC,MAAM;oBAAE,SAAS;;IAGtB,YAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,YAAA,YAAY,EAAE,CAAC;;gBAGf,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC9C,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,gBAAA,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;oBACzB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;IACrC,oBAAA,MAAM,CAAC,GAAG,CAAC,CAAG,EAAA,MAAM,CAAC,GAAG,CAAC,CAAI,CAAA,EAAA,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,CAAA,CAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,EAAE,CAAC,CAAC;qBAChH;iBACF;aACF;IACD,QAAA,OAAO,YAAY,CAAC;SACrB;IAED;;IAEG;IACH,IAAA,MAAM,MAAM,GAAA;YACV,IAAI,CAAC,UAAU,EAAE,CAAC;;IAElB,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;;IAEvB,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE;IACtC,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBAC/C,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;iBACpC;aACF;;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;SACrD;IAED;;IAEG;QACH,iBAAiB,CAAC,SAAiB,EAAE,KAAgB,EAAA;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK;gBAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;YAEhF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC5C,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBAC1D,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM;oBAAE,SAAS;;IAGhE,YAAA,IAAI,GAAG,KAAK,KAAK,KAAK,OAAO,SAAS,KAAK,QAAQ,IAAK,SAAiB,CAAC,GAAG,CAAC,EAAE;oBAC9E,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;iBACpD;;gBAGD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAI,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,EAAE;oBACnC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAK,SAAiB,CAAC,GAAG,EAAE;wBAC3D,OAAO,EAAE,QAAQ,EAAE,CAAY,SAAA,EAAA,GAAG,CAAE,CAAA,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;qBAC1D;IACD,gBAAA,IAAK,SAAiB,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAE,SAAiB,CAAC,GAAG,CAAC,EAAE;IACnE,oBAAA,OAAO,EAAE,QAAQ,EAAE,CAAA,SAAA,EAAY,GAAG,CAAE,CAAA,EAAE,aAAa,EAAG,SAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;qBACtF;IACD,gBAAA,IAAK,SAAiB,CAAC,GAAG,IAAK,SAAiB,CAAC,GAAG,IAAK,SAAiB,CAAC,IAAI,IAAK,SAAiB,CAAC,IAAI,EAAE;wBAC1G,OAAO,EAAE,QAAQ,EAAE,CAAe,YAAA,EAAA,GAAG,CAAE,CAAA,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC;qBAC/D;iBACF;aACF;YAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SACvD;QAEO,UAAU,GAAA;YAChB,IAAI,CAAC,IAAI,CAAC,MAAM;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,aAAa,CAAC,CAAC;SACnF;;IAGO,IAAA,wBAAwB,CAAC,EAAU,EAAA;IACzC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,MAAM,IAAI,aAAa,CACrB,CAAA,EAAG,EAAE,CAA8E,4EAAA,CAAA,EACnF,eAAe,CAChB,CAAC;aACH;SACF;IAEO,IAAA,WAAW,CAAC,SAAiB,EAAA;YACnC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBAChC,MAAM,IAAI,aAAa,CAAC,CAAA,OAAA,EAAU,SAAS,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;aACnF;SACF;;IAGO,IAAA,MAAM,WAAW,GAAA;YACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACnD,QAAA,IAAI,CAAC,GAAG;IAAE,YAAA,OAAO,CAAC,CAAC;IACnB,QAAA,IAAI;IACF,YAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;IAC9B,YAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;aAC3C;IAAC,QAAA,MAAM;IACN,YAAA,OAAO,CAAC,CAAC;aACV;SACF;;QAGO,MAAM,WAAW,CAAC,KAAa,EAAA;IACrC,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;IAC9B,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YAC7C,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;SAC9C;IACF;;ICnyDD;;;;;;;;IAQG;IASH;IACA;IACA;UAEa,YAAY,CAAA;IASvB,IAAA,WAAA,CAAY,aAAyB,WAAW,EAAA;YARvC,IAAI,CAAA,IAAA,GAAG,QAAQ,CAAC;YAKjB,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;YACZ,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;IAGlB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IACvC,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;IACjC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;SACpF;;IAID,IAAA,MAAM,IAAI,CAAC,MAAc,EAAE,OAAe,EAAA;IACxC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;;YAEvB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;YAG5C,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;IAG9C,QAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;SACnC;IAED;;;IAGG;IACH,IAAA,MAAM,oBAAoB,GAAA;IACxB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAChC,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAExD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;IACzD,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;gBAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC/D,YAAA,IAAI,CAAC,MAAM;oBAAE,SAAS;;gBAGtB,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;IAG5C,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACzE,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;IACnB,gBAAA,IAAI;wBACF,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;qBACjD;oBAAC,OAAO,CAAC,EAAE;;wBAEV,OAAO,CAAC,IAAI,CAAC,CAAA,sCAAA,EAAyC,SAAS,CAAmB,iBAAA,CAAA,EAAE,CAAC,CAAC,CAAC;qBACxF;iBACF;aACF;SACF;IAED,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAChC,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;SAC/B;QAED,MAAM,GAAA;IACJ,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;SAC/D;;;IAKD,IAAA,MAAM,MAAM,GAAA;YACV,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,UAAU,EAAE;IAChD,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;aAChC;IACD,QAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;SACnC;;IAGD,IAAA,MAAM,QAAQ,GAAA;YACZ,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,KAAK,UAAU,EAAE;IAClD,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;aAClC;iBAAM;gBACL,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;IACpD,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;iBACvC;aACF;YACD,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,KAAK,UAAU,EAAE;IACpD,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;aACpC;iBAAM;gBACL,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;IACtD,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;iBACzC;aACF;SACF;QAED,MAAM,OAAO,CAAC,GAAW,EAAA;YACvB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,UAAU,EAAE;gBACjD,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aACrC;IACD,QAAA,OAAO,IAAI,CAAC;SACb;IAED,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,KAAa,EAAA;YACtC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,UAAU,EAAE;gBACjD,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aAC3C;SACF;;QAID,MAAM,WAAW,CAAC,MAAmB,EAAA;YACnC,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SAC3C;QAED,MAAM,SAAS,CAAC,SAAiB,EAAA;YAC/B,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC7C,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;SAC5C;QAED,MAAM,QAAQ,CAAC,SAAiB,EAAA;YAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SAC9C;IAED,IAAA,MAAM,aAAa,GAAA;IACjB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;SAC1C;QAED,MAAM,cAAc,CAAC,SAAiB,EAAA;YACpC,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;SACpD;;IAGD,IAAA,MAAM,UAAU,CACd,SAAiB,EACjB,MAAsB,EACtB,MAA2D,EAAA;IAE3D,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9D,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,UAAU,EAAE;IACpD,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;aAC7D;iBAAM;;gBAEL,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC/D,YAAA,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM;oBAAE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACrE;SACF;;IAID,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,IAA+B,EAAA;IAC7D,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;YAE5D,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9C,QAAA,OAAO,GAAG,CAAC;SACZ;IAED,IAAA,MAAM,IAAI,CAAC,SAAiB,EAAE,KAAgB,EAAA;;YAE5C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SACjD;;IAGD,IAAA,MAAM,UAAU,CAAC,SAAiB,EAAE,KAAgB,EAAE,KAA6C,EAAA;IACjG,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SAC9D;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAE,OAAgC,EAAA;IAChF,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;;IAExE,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACxD,QAAA,OAAO,KAAK,CAAC;SACd;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAA;IAC9C,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;;YAE/D,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/C,QAAA,OAAO,KAAK,CAAC;SACd;IAED,IAAA,MAAM,KAAK,CAAC,SAAiB,EAAE,KAAiB,EAAA;YAC9C,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SAClD;QAED,MAAM,KAAK,CAAC,SAAiB,EAAA;YAC3B,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;SACxC;;IAID,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAgB,EAAA;IACnE,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/D,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,KAAK,UAAU,EAAE;IACrD,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;aAC9D;SACF;IAED,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,SAAkB,EAAA;IACnE,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YAChE,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,UAAU,EAAE;IACnD,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;aAC/D;SACF;;IAID,IAAA,MAAM,gBAAgB,GAAA;IACpB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;IAC3C,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;SAC1C;IAED,IAAA,MAAM,iBAAiB,GAAA;;IAErB,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;IAC1C,QAAA,IAAI;IACF,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;aAC7C;YAAC,OAAO,KAAK,EAAE;;;gBAGd,MAAM,IAAI,aAAa,CACrB,sFAAsF,EACtF,iBAAiB,EACjB,KAAK,CACN,CAAC;aACH;SACF;IAED,IAAA,MAAM,mBAAmB,GAAA;IACvB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC;IAC9C,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;SAC7C;;;QAKD,iBAAiB,GAAA;YACf,OAAO,IAAI,CAAC,cAAc,CAAC;SAC5B;;QAGD,eAAe,GAAA;YACb,OAAO,IAAI,CAAC,YAAY,CAAC;SAC1B;IACF;;IC7QD;;;;;;IAMG;IAOH;IACA;IACA;UAEa,kBAAkB,CAAA;QAS7B,WACU,CAAA,MAAsB,EACtB,SAAiB,EACjB,WAAqB,CAAC,GAAG,CAAC,EAClC,QAAwB,EAAA;YAHhB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;YACtB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;YACjB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;YAX5B,IAAM,CAAA,MAAA,GAAmB,EAAE,CAAC;YAC5B,IAAQ,CAAA,QAAA,GAAc,EAAE,CAAC;YAGzB,IAAM,CAAA,MAAA,GAAiB,EAAE,CAAC;IAUhC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;SAC3B;;IAGD,IAAA,EAAE,CAAC,KAAa,EAAA;IACd,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACpB,QAAA,OAAO,IAAI,CAAC;SACb;;IAGD,IAAA,SAAS,CAAC,KAAa,EAAE,EAAkB,EAAE,KAAc,EAAA;IACzD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;SACjD;;IAGD,IAAA,QAAQ,CAAC,KAAa,EAAE,EAAkB,EAAE,KAAc,EAAA;IACxD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;SAChD;;IAGD,IAAA,SAAS,CAAC,KAAa,EAAE,EAAkB,EAAE,KAAc,EAAA;IACzD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;SACjD;;QAGD,SAAS,CAAC,KAAa,EAAE,KAAc,EAAA;IACrC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;SACjD;;IAGD,IAAA,IAAI,CAAC,KAAa,EAAE,EAAkB,EAAE,KAAc,EAAA;IACpD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;SACjD;IAEO,IAAA,QAAQ,CAAC,IAAc,EAAE,KAAa,EAAE,EAAkB,EAAE,KAAc,EAAA;IAChF,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7C,QAAA,OAAO,IAAI,CAAC;SACb;;IAGD,IAAA,KAAK,CAAC,SAAyB,EAAA;IAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/C,QAAA,OAAO,IAAI,CAAC;SACb;;IAGD,IAAA,OAAO,CAAC,MAAc,EAAE,SAAA,GAA2B,KAAK,EAAA;YACtD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1C,QAAA,OAAO,IAAI,CAAC;SACb;;IAGD,IAAA,KAAK,CAAC,CAAS,EAAA;IACb,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChB,QAAA,OAAO,IAAI,CAAC;SACb;;IAGD,IAAA,MAAM,CAAC,CAAS,EAAA;IACd,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACjB,QAAA,OAAO,IAAI,CAAC;SACb;;IAGD,IAAA,MAAM,OAAO,GAAA;;IAEX,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;IAC5C,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAuC,CAAC;aAC1E;;YAGD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACtC,KAAK,EAAE,IAAI,CAAC,SAAS;gBACrB,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,KAAK,EAAE,IAAI,CAAC,MAAM;IAClB,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS;gBAC7D,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,MAAM,EAAE,IAAI,CAAC,OAAO;IACrB,SAAA,CAAC,CAAC;SACJ;;QAGD,KAAK,GAAA;YACH,OAAO;IACL,YAAA,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,SAAS;gBAC5D,KAAK,EAAE,IAAI,CAAC,MAAM;IAClB,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS;gBAC7D,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,MAAM,EAAE,IAAI,CAAC,OAAO;aACrB,CAAC;SACH;IACF,CAAA;IAED;IACA;IACA;UAEa,kBAAkB,CAAA;IAI7B,IAAA,WAAA,CACU,MAAsB,EACtB,SAAiB,EACjB,QAAiC,EACzC,OAAiC,EAAA;YAHzB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;YACtB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;YACjB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAyB;YANnC,IAAM,CAAA,MAAA,GAAmB,EAAE,CAAC;IASlC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;IAED,IAAA,KAAK,CAAC,SAAyB,EAAA;IAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/C,QAAA,OAAO,IAAI,CAAC;SACb;IAED,IAAA,MAAM,OAAO,GAAA;IACX,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,QAAA,OAAO,KAAK,CAAC;SACd;QAED,KAAK,GAAA;YACH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;SAC3F;IACF,CAAA;IAED;IACA;IACA;UAEa,kBAAkB,CAAA;IAI7B,IAAA,WAAA,CACU,MAAsB,EACtB,SAAiB,EACzB,OAAiC,EAAA;YAFzB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;YACtB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;YALnB,IAAM,CAAA,MAAA,GAAmB,EAAE,CAAC;IAQlC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;IAED,IAAA,KAAK,CAAC,SAAyB,EAAA;IAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/C,QAAA,OAAO,IAAI,CAAC;SACb;IAED,IAAA,MAAM,OAAO,GAAA;YACX,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACtG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,QAAA,OAAO,KAAK,CAAC;SACd;QAED,KAAK,GAAA;IACH,QAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;SACrE;IACF;;ICjMD;;;IAGG;IAQH;IACA;IACA;UAEa,KAAK,CAAA;IAQhB,IAAA,WAAA,CAAY,MAAsB,EAAE,SAAiB,EAAE,QAAwB,EAAE,OAAiC,EAAA;YAL1G,IAAM,CAAA,MAAA,GAAuB,IAAI,CAAC;IAMxC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,QAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;IACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;;IAID,IAAA,MAAM,SAAS,GAAA;IACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;IAChB,YAAA,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,YAAA,IAAI,CAAC,CAAC;oBAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;IAC1F,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjB;YACD,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;QAID,MAAM,MAAM,CAAC,GAAgC,EAAA;IAC3C,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAA8B,CAAC,CAAC,CAAC;YAClF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAA,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;SACf;QAED,MAAM,UAAU,CAAC,IAAqC,EAAA;IACpD,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAiC,CAAC,CAAC;YACnF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAA,OAAO,GAAG,CAAC;SACZ;;IAID,IAAA,MAAM,CAAC,OAAA,GAAoB,CAAC,GAAG,CAAC,EAAA;IAC9B,QAAA,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/E;;IAGD,IAAA,MAAM,MAAM,CACV,KAAiD,EACjD,QAAkG,EAAE,EAAA;YAEpG,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;IAChD,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAC7C,KAAK,EAAE,IAAI,CAAC,IAAI;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;IACvB,aAAA,CAAC,CAAC;gBACH,KAAK,MAAM,GAAG,IAAI,IAAI;oBAAE,KAAK,CAAC,GAAkC,CAAC,CAAC;gBAClE,OAAO,IAAI,CAAC,MAAM,CAAC;aACpB;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE;gBACvC,KAAK,EAAE,IAAI,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,EAAE,KAA+C,CAAC,CAAC;SACrD;;IAID,IAAA,MAAM,CAAC,OAA6C,EAAA;IAClD,QAAA,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SAC9E;;QAID,MAAM,GAAA;IACJ,QAAA,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACrE;;QAID,MAAM,KAAK,CAAC,KAA+B,EAAA;IACzC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,CAAC;SACtF;;IAID,IAAA,MAAM,KAAK,GAAA;YACT,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3B;IAED,IAAA,MAAM,IAAI,GAAA;YACR,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3B;IACF;;ICnHD;;;;;;IAMG;IAMH;IACA;IACA;IAEA;;;IAGG;IACG,SAAU,gBAAgB,CAAC,IAAe,EAAA;IAC9C,IAAA,QAAQ,IAAI,CAAC,IAAI;IACf,QAAA,KAAK,QAAQ;IACX,YAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAA,KAAK,QAAQ;IACX,YAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAA,KAAK,QAAQ;IACX,YAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAA;gBACE,MAAM,IAAI,aAAa,CAAC,CAAkC,+BAAA,EAAA,IAAI,CAAC,IAAI,CAAgB,cAAA,CAAA,EAAE,eAAe,CAAC,CAAC;SACzG;IACH,CAAC;IAED,SAAS,aAAa,CAAC,IAAqB,EAAA;QAC1C,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,SAAS;YACxD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;IAED,SAAS,aAAa,CAAC,IAAqB,EAAA;QAC1C,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;IAED,SAAS,aAAa,CAAC,IAAqB,EAAA;QAC1C,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ;;ICxDA;;;IAGG;IAEH;IACA;IACA;IAEA,IAAY,SAkGX,CAAA;IAlGD,CAAA,UAAY,SAAS,EAAA;;IAEnB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;IACnB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;IACnB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;IACzB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;IACnB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;IACnB,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;;IAGrB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;;IAGf,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;;IAGrB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;IACrB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;;IAGf,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;;IAGX,IAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;IACzB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;;IAGjB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;IACvB,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;;IAGX,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;IACrB,CAAC,EAlGW,SAAS,KAAT,SAAS,GAkGpB,EAAA,CAAA,CAAA,CAAA;IAYD;IACA;IACA;IAEO,MAAM,QAAQ,GAA8B;QACjD,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,IAAI,EAAE,SAAS,CAAC,EAAE;QAClB,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,IAAI,EAAE,SAAS,CAAC,EAAE;QAClB,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,IAAI,EAAE,SAAS,CAAC,EAAE;QAClB,SAAS,EAAE,SAAS,CAAC,OAAO;QAC5B,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,SAAS,EAAE,SAAS,CAAC,OAAO;QAC5B,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,YAAY,EAAE,SAAS,CAAC,UAAU;QAClC,SAAS,EAAE,SAAS,CAAC,OAAO;QAC5B,SAAS,EAAE,SAAS,CAAC,OAAO;QAC5B,IAAI,EAAE,SAAS,CAAC,EAAE;QAClB,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,UAAU,EAAE,SAAS,CAAC,QAAQ;;QAG9B,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,IAAI,EAAE,SAAS,CAAC,EAAE;QAClB,IAAI,EAAE,SAAS,CAAC,EAAE;QAClB,OAAO,EAAE,SAAS,CAAC,KAAK;;QAGxB,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,UAAU,EAAE,SAAS,CAAC,QAAQ;;QAG9B,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,UAAU,EAAE,SAAS,CAAC,QAAQ;QAC9B,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,OAAO,EAAE,SAAS,CAAC,KAAK;;QAGxB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,KAAK,EAAE,SAAS,CAAC,GAAG;KACrB;;ICrMD;;;;;IAKG;IAIH;IACA;IACA;UAEa,KAAK,CAAA;IAMhB,IAAA,WAAA,CAAY,KAAa,EAAA;YAJjB,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;YACb,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;YACjB,IAAE,CAAA,EAAA,GAAW,EAAE,CAAC;IAGtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;;QAGD,SAAS,GAAA;YACP,IAAI,CAAC,cAAc,EAAE,CAAC;IAEtB,QAAA,IAAI,GAAU,CAAC;IAEf,QAAA,QAAQ,IAAI,CAAC,EAAE;IACb,YAAA,KAAK,GAAG;oBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC3C,MAAM;IACR,YAAA,KAAK,GAAG;oBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBAC5C,MAAM;IACR,YAAA,KAAK,GAAG;oBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBAC5C,MAAM;IACR,YAAA,KAAK,GAAG;oBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;oBAC/C,MAAM;IACR,YAAA,KAAK,GAAG;oBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC1C,MAAM;IACR,YAAA,KAAK,GAAG;oBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBACzC,MAAM;IACR,YAAA,KAAK,GAAG;oBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBACxC,MAAM;IACR,YAAA,KAAK,GAAG;IACN,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;wBAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;qBAC3C;yBAAM;wBACL,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;qBAC9C;oBACD,MAAM;IACR,YAAA,KAAK,GAAG;IACN,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;wBAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;qBAC3C;yBAAM;wBACL,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;qBACzC;oBACD,MAAM;IACR,YAAA,KAAK,GAAG;IACN,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;wBAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;qBAC3C;IAAM,qBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;wBAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;qBAC3C;yBAAM;wBACL,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;qBACzC;oBACD,MAAM;IACR,YAAA,KAAK,GAAG,CAAC;IACT,YAAA,KAAK,GAAG;oBACN,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC/B,MAAM;IACR,YAAA,KAAK,EAAE;IACL,gBAAA,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClE,MAAM;IACR,YAAA;;IAEE,gBAAA,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;wBAC9C,IAAI,CAAC,eAAe,EAAE,CAAC;IACvB,oBAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;qBACzB;;IAED,gBAAA,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;wBAC9C,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACxB,oBAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;qBACzB;oBACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;IAC1B,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;wBACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9C,oBAAA,GAAG,GAAG;IACJ,wBAAA,IAAI,EAAE,OAAO,IAAI,SAAS,CAAC,UAAU;IACrC,wBAAA,KAAK,EAAE,KAAK;IACZ,wBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM;yBACvC,CAAC;wBACF,OAAO,GAAG,CAAC;qBACZ;yBAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE;IACtF,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC9B,oBAAA,GAAG,GAAG;4BACJ,IAAI,EAAE,SAAS,CAAC,MAAM;IACtB,wBAAA,KAAK,EAAE,GAAG;IACV,wBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM;yBACrC,CAAC;IACF,oBAAA,OAAO,GAAG,CAAC;qBACZ;yBAAM;IACL,oBAAA,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;qBAClD;oBACD,MAAM;aACT;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChB,QAAA,OAAO,GAAG,CAAC;SACZ;;QAIO,QAAQ,GAAA;YACd,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;IAC1C,YAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;aACd;iBAAM;gBACL,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aACzC;IACD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;YAClC,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;QAEO,QAAQ,GAAA;YACd,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;IAAE,YAAA,OAAO,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACtC;QAEO,cAAc,GAAA;YACpB,OAAO,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE;gBAClF,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;SACF;;QAGO,eAAe,GAAA;IACrB,QAAA,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;gBAC7D,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;SACF;;QAGO,gBAAgB,GAAA;IACtB,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChB,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE;gBACtE,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;IACD,QAAA,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAClB,YAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChB,YAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;SACF;QAEO,cAAc,GAAA;IACpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,EAAE;gBACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;IACD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/C;QAEO,UAAU,GAAA;IAChB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;;IAE5B,QAAA,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG;gBAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;;IAED,QAAA,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;gBACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;oBAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;iBACjB;aACF;IACD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/C;IAEO,IAAA,UAAU,CAAC,KAAa,EAAA;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IAChC,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,KAAK,GAAG,EAAE,CAAC;IAEf,QAAA,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IACrB,YAAA,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK,EAAE;;IAErB,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;wBAC7B,KAAK,IAAI,KAAK,CAAC;IACf,oBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,SAAS;qBACV;IACD,gBAAA,MAAM;iBACP;;IAED,YAAA,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;oBACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChB,KAAK,IAAI,KAAK,CAAC;oBACf,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChB,SAAS;iBACV;IACD,YAAA,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;YAED,OAAO;gBACL,IAAI,EAAE,SAAS,CAAC,MAAM;gBACtB,KAAK;IACL,YAAA,QAAQ,EAAE,KAAK;aAChB,CAAC;SACH;IAEO,IAAA,QAAQ,CAAC,EAAU,EAAA;IACzB,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC7B;IAEO,IAAA,OAAO,CAAC,EAAU,EAAA;IACxB,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACzB;QAEO,SAAS,CAAC,IAAe,EAAE,KAAa,EAAA;YAC9C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjD;IACF,CAAA;IAED;IACA;IACA;IAEA;IACM,SAAU,QAAQ,CAAC,GAAW,EAAA;IAClC,IAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAA,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,EAAE;IACjC,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,QAAA,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;SACzB;IACD,IAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,IAAA,OAAO,MAAM,CAAC;IAChB;;IC9PA;;;;;;IAMG;IAyBH;IACA;IACA;UAEa,MAAM,CAAA;IAMjB,IAAA,WAAA,CAAY,GAAW,EAAA;IACrB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;YACf,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;;YAE5B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;;QAGD,cAAc,GAAA;IACZ,QAAA,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI;gBACxB,KAAK,SAAS,CAAC,MAAM;IACnB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5B,KAAK,SAAS,CAAC,MAAM;IACnB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5B,KAAK,SAAS,CAAC,MAAM;IACnB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5B,KAAK,SAAS,CAAC,MAAM;IACnB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5B,KAAK,SAAS,CAAC,MAAM;IACnB,gBAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBACrC,KAAK,SAAS,CAAC,IAAI;IACjB,gBAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACnC,KAAK,SAAS,CAAC,KAAK;IAClB,gBAAA,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;gBAChC,KAAK,SAAS,CAAC,QAAQ;IACrB,gBAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACnC,KAAK,SAAS,CAAC,KAAK;IAClB,gBAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC3B,KAAK,SAAS,CAAC,MAAM;IACnB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5B,KAAK,SAAS,CAAC,QAAQ;IACrB,gBAAA,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,YAAA;IACE,gBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAAqB,kBAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;aACjE;SACF;;QAGD,kBAAkB,GAAA;YAChB,MAAM,UAAU,GAAgB,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;;IAEtC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAC9D,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;oBAAE,MAAM;gBAC1C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;;gBAEvC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;oBACxC,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;qBAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;IAC1C,gBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAAsC,mCAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;iBAChF;aACF;IACD,QAAA,OAAO,UAAU,CAAC;SACnB;;QAIO,UAAU,GAAA;IAChB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;IAE7B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,aAAa,EAAE;gBACnF,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IACD,QAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;SAC1B;QAEO,WAAW,GAAA;IACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,aAAa,EAAE;gBACnF,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IACD,QAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SAC3B;QAEO,aAAa,GAAA;IACnB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAChC,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,aAAa,EAAE;gBACnF,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IACD,QAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;SAC7B;;QAIO,oBAAoB,GAAA;IAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;IACpC,YAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;aAChC;IACD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAClC,aAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,EAAE;IAC7E,YAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;aAChC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;;gBAErC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAClC,iBAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,EAAE;IAC7E,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACrC,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACnB,gBAAA,OAAO,IAAI,CAAC;iBACb;aACF;IACD,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAA8C,2CAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;SACxF;QAEO,gBAAgB,GAAA;IACtB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACjD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAClD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACpD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;SACtD;;QAIO,kBAAkB,GAAA;IACxB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;IACpC,YAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;aAC9B;IACD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAClC,aAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,EAAE;IAC7E,YAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;aAC9B;IACD,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAA4C,yCAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;SACtF;QAEO,cAAc,GAAA;IACpB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;YAEjD,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;gBAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;oBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC9C,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;iBAC/B;aACF;YACD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;SACpD;;;;QAMO,WAAW,GAAA;IACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;YAG9B,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBACvC,QAAQ,GAAG,IAAI,CAAC;gBAChB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;;YAGD,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;IACnC,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;iBAAM;gBACL,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;aACzC;;IAGD,QAAA,IAAI,YAAgE,CAAC;YACrE,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,QAAA,IAAI,KAAyB,CAAC;YAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACnC,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAGjB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;oBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAClC,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;wBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,oBAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;qBACxC;IAAM,qBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;IACtF,oBAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;qBAClB;iBACF;qBAAM;IACL,gBAAA,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;oBAGhD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;wBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,oBAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;qBACxC;IAAM,qBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;IACtF,oBAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;qBAClB;iBACF;aACF;IAED,QAAA,MAAM,IAAI,GAAoB;IAC5B,YAAA,IAAI,EAAE,QAAQ;gBACd,OAAO;gBACP,QAAQ,EAAE,QAAQ,IAAI,SAAS;IAC/B,YAAA,IAAI,EAAE,SAAS;gBACf,KAAK;IACL,YAAA,KAAK,EAAE,EAAE;aACV,CAAC;YACF,IAAI,YAAY,EAAE;IAChB,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;aAClC;;IAGD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACtC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;IACpB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aACpB;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;aACpC;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC3C;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;aACrC;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACxC;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;aAC/C;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;aACjD;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;IACpC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aAC9B;IAED,QAAA,OAAO,IAAI,CAAC;SACb;;IAGO,IAAA,UAAU,CAAC,IAA4C,EAAA;IAC7D,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,GAAG,GAAG,KAAK,CAAC;YAChB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClC,GAAG,GAAG,IAAI,CAAC;gBACX,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IACD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAEjC,QAAA,MAAM,SAAS,GAAyB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;;YAErG,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;IACpC,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;aACxC;IACD,QAAA,OAAO,SAAS,CAAC;SAClB;;IAGO,IAAA,eAAe,CAAC,IAA0B,EAAA;IAChD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,GAAG,GAAG,KAAK,CAAC;YAChB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClC,GAAG,GAAG,IAAI,CAAC;gBACX,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IACD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,QAAA,MAAM,SAAS,GAAyB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;YACrG,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;IACpC,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;aACxC;IACD,QAAA,OAAO,SAAS,CAAC;SAClB;;QAGO,gBAAgB,GAAA;YACtB,MAAM,KAAK,GAAwC,EAAE,CAAC;IACtD,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE;gBAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;aACpC;IACD,QAAA,OAAO,KAAK,CAAC;SACd;QAEO,cAAc,GAAA;YACpB,QACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;IAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;gBAChC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAC/B;SACH;;QAGO,eAAe,GAAA;YACrB,IAAI,IAAI,GAAoC,OAAO,CAAC;YAEpD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpC,IAAI,GAAG,OAAO,CAAC;gBACf,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC1C,IAAI,GAAG,MAAM,CAAC;gBACd,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAAE,gBAAA,IAAI,CAAC,SAAS,EAAE,CAAC;aACxD;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBAC3C,IAAI,GAAG,OAAO,CAAC;gBACf,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;aACxD;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBAC3C,IAAI,GAAG,OAAO,CAAC;gBACf,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IAED,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;IAGtD,QAAA,IAAI,KAAyB,CAAC;YAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;aACxC;IAAM,aAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;IACjF,YAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;;YAGD,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAA,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACrD,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;aAC5B;YAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;SAC9C;;QAGO,oBAAoB,GAAA;YAC1B,QACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;IACjC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,cAAc,EAAE,EACrB;SACH;QAEO,eAAe,GAAA;YACrB,QACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;IAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,cAAc,EAAE,EACrB;SACH;;;;QAMO,WAAW,GAAA;IACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;IAGtD,QAAA,IAAI,OAA6B,CAAC;YAClC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACrC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aAC/B;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBACrC,OAAO;IACL,gBAAA,IAAI,EAAE,QAAQ;IACd,gBAAA,IAAI,EAAE,SAAS;oBACf,OAAO;IACP,gBAAA,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE;iBAC3B,CAAC;aACH;;IAGD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;YAG9B,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,QAAA,GAAG;gBACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;oBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;IACD,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACxC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,YAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACxB,QAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAE3C,OAAO;IACL,YAAA,IAAI,EAAE,QAAQ;IACd,YAAA,IAAI,EAAE,SAAS;gBACf,OAAO;gBACP,MAAM;aACP,CAAC;SACH;;;;QAMO,WAAW,GAAA;IACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACtD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;YAG3B,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,QAAA,GAAG;IACD,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACvD,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACjD,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;aAC/B,QAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAE3C,IAAI,KAAK,GAAmB,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;aAC/B;IAED,QAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;SAC1D;;;;QAMO,WAAW,GAAA;IACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAEtD,IAAI,KAAK,GAAmB,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;aAC/B;YAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;SACnD;;;;QAMO,gBAAgB,GAAA;IACtB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;YAG7B,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC9B,WAAW,GAAG,IAAI,CAAC;aACpB;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACtD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAE9B,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,QAAA,GAAG;IACD,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACvD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;aACrC,QAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;IAE3C,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAE9B,QAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,IAAI,SAAS,EAAE,CAAC;SAClG;QAEO,cAAc,GAAA;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;IAEhE,QAAA,MAAM,GAAG,GAAiB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;IAGzC,QAAA,OACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;IAClC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;IACjC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;IAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;gBAClC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,EACrC;gBACA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBACtC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,gBAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;iBACvB;qBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;oBAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;iBACnB;qBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;oBACzC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5B,gBAAA,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;iBACrB;qBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;iBACjC;qBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;oBAChD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IAC3D,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;IAC1D,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC9B,GAAG,CAAC,UAAU,GAAG,CAAA,EAAG,QAAQ,CAAI,CAAA,EAAA,MAAM,EAAE,CAAC;;oBAEzC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;wBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;wBACjB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;4BACrC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,wBAAA,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;yBAC1C;6BAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;4BAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,wBAAA,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;yBAC1C;6BAAM;4BACL,MAAM;yBACP;qBACF;iBACF;qBAAM;oBACL,MAAM;iBACP;aACF;IAED,QAAA,OAAO,GAAG,CAAC;SACZ;;QAGO,kBAAkB,GAAA;YACxB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACtC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,OAAO,SAAS,CAAC;aAClB;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5B,YAAA,OAAO,UAAU,CAAC;aACnB;;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,UAAU,EAAE;gBACnG,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,OAAO,UAAU,CAAC;aACnB;IACD,QAAA,OAAO,UAAU,CAAC;SACnB;;;;QAMO,eAAe,GAAA;IACrB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;IAGtD,QAAA,IAAI,MAAsB,CAAC;YAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClC,MAAM,GAAG,KAAK,CAAC;gBACf,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAEjB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;oBACjG,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;IACD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IAClC,YAAA,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;aACtE;IAAM,aAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;IACxC,aAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,EAAE;gBAC5E,MAAM,GAAG,MAAM,CAAC;gBAChB,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAEjB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;oBACjG,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;gBACrD,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;aACpG;iBAAM;IACL,YAAA,MAAM,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;aACzD;SACF;;;;QAMO,kBAAkB,GAAA;IACxB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAChC,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACtD,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;SACpD;;;;QAMO,cAAc,GAAA;IACpB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;YAE7B,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC9B,QAAQ,GAAG,IAAI,CAAC;aACjB;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACtD,QAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAAE,CAAC;SACjF;;;;;QAOO,cAAc,GAAA;IACpB,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAEvC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACtE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAE1C,IAAI,KAAK,EAAE;;oBAET,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAA+B,CAAC;iBAC7D;qBAAM;oBACL,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAA+B,CAAC;iBAC5D;aACF;IAED,QAAA,OAAO,IAAI,CAAC;SACb;;QAGD,UAAU,GAAA;IACR,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;SAC9B;IAED;;IAE2D;QACnD,oBAAoB,GAAA;;IAE1B,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;IACnC,aAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,EAAE;gBAC9E,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;aACzC;IACD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;IAC1D,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;aACxC;;IAGD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;gBAC5D,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC1C,YAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAA+B,CAAC;aACrD;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACpC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,YAAA,OAAO,KAAK,CAAC;aACd;;IAGD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;;YAGrC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;gBACvF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7C,YAAA,IAAI,KAAK;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC5B,MAAM,MAAM,GAAmB,EAAE,CAAC;gBAClC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACvD,YAAA,OAAO,MAAM,CAAC;aACf;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACtC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC3C,YAAA,OAAO,MAAM,CAAC;aACf;;IAGD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;IACzE,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;IACrD,YAAA,OAAO,MAAM,CAAC;aACf;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;;IAElC,gBAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;IACrC,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACpC,oBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;wBAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,oBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;IACnD,oBAAA,OAAO,MAAM,CAAC;qBACf;IACD,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACrC,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;oBAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAClC,gBAAA,OAAO,MAAM,CAAC;iBACf;qBAAM,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;;IAE3C,gBAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClC,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,gBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;IAC9C,gBAAA,OAAO,MAAM,CAAC;iBACf;aACF;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACnC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAmB,EAAE,CAAC;gBAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACpC,YAAA,OAAO,MAAM,CAAC;aACf;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;gBAE9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;IACrC,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACpC,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,gBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;IAClD,gBAAA,OAAO,MAAM,CAAC;iBACf;IACD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACrC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;gBAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IACjC,YAAA,OAAO,MAAM,CAAC;aACf;;IAGD,QAAA,IACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;IAC/D,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;iBAClE,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,EAC9L;gBACA,MAAM,MAAM,GAAmB,EAAE,CAAC;gBAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAC/B,YAAA,OAAO,MAAM,CAAC;aACf;;IAGD,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;;IAGpC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;IAC3E,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACpC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;IACnD,YAAA,OAAO,MAAM,CAAC;aACf;;IAGD,QAAA,IAAI,KAAc,CAAC;IACnB,QAAA,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACxE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,EAC/B;IACA,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACrC,YAAA,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aAC1B;iBAAM;IACL,YAAA,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;aAC3B;YAED,MAAM,MAAM,GAAmB,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;IACjC,QAAA,OAAO,MAAM,CAAC;SACf;;IAGO,IAAA,oBAAoB,CAAC,MAAe,EAAA;IAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACpC,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;IAE9B,QAAA,OAAO,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,EAA+B,CAAC;SACxG;;QAGO,aAAa,GAAA;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;iBAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,CAAC;SACrG;;QAGO,cAAc,GAAA;IACpB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC3E;IAEO,IAAA,WAAW,CAAC,IAAe,EAAA;IACjC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC;SACrC;QAEO,iBAAiB,GAAA;IACvB,QAAA,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI;gBACxB,KAAK,SAAS,CAAC,EAAE;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,KAAK,CAAC;gBAClD,KAAK,SAAS,CAAC,GAAG;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,KAAK,CAAC;gBACnD,KAAK,SAAS,CAAC,EAAE;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,KAAK,CAAC;gBAClD,KAAK,SAAS,CAAC,GAAG;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,MAAM,CAAC;gBACpD,KAAK,SAAS,CAAC,EAAE;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,KAAK,CAAC;gBAClD,KAAK,SAAS,CAAC,GAAG;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,MAAM,CAAC;IACpD,YAAA;IACE,gBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAAsC,mCAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;aAClF;SACF;;;;QAMO,eAAe,GAAA;YACrB,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACvC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;aACxC;IACD,QAAA,OAAO,IAAI,CAAC;SACb;;QAGO,oBAAoB,GAAA;IAC1B,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC7C,YAAA,GAAG,GAAG,CAAG,EAAA,GAAG,CAAO,IAAA,EAAA,KAAK,EAAE,CAAC;aAC5B;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;IAChH,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAClC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,GAAG,GAAG,CAAG,EAAA,GAAG,CAAO,IAAA,EAAA,KAAK,EAAE,CAAC;aAC5B;IACD,QAAA,OAAO,GAAG,CAAC;SACZ;;QAGO,cAAc,GAAA;;YAEpB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;IACnC,YAAA,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;aACvC;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;IACrC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAClC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,OAAO,KAAK,CAAC;aACd;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;IACrC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAClC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAG,CAAC;aACrB;;IAGD,QAAA,IACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;IAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;IAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;gBAC9B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAC9B;IACA,YAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;aAClC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACpD,YAAA,OAAO,CAAG,EAAA,KAAK,CAAI,CAAA,EAAA,MAAM,EAAE,CAAC;aAC7B;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IAED;;;IAGG;QACK,uBAAuB,GAAA;IAC7B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACrC,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,QAAA,IAAI,GAAG,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;IAEhC,QAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;IACnD,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;IAAE,gBAAA,KAAK,EAAE,CAAC;gBAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;IAClC,gBAAA,KAAK,EAAE,CAAC;oBACR,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;oBAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,IAAI,KAAK,KAAK,CAAC;wBAAE,MAAM;iBACxB;IACD,YAAA,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IAED,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;YAEtC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,CAAE,CAAC;aACjD;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;gBAC3H,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IACD,QAAA,OAAO,IAAI,CAAC;SACb;;QAGO,kBAAkB,GAAA;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;YAG9B,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBACvC,QAAQ,GAAG,IAAI,CAAC;gBAChB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IAED,QAAA,IAAI,GAAW,CAAC;YAChB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACnC,GAAG,GAAG,GAAG,CAAC;gBACV,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;iBAAM;IACL,YAAA,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;aAC7B;IAED,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;YAG9B,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;aACxC;IAAM,aAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;IAClF,YAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IAED,QAAA,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAY,SAAA,EAAA,GAAG,CAAE,CAAA,GAAG,GAAG,CAAC;YACjD,IAAI,KAAK,EAAE;IACT,YAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAQ,KAAA,EAAA,KAAK,EAAE,CAAC;aACxC;IACD,QAAA,OAAO,CAAG,EAAA,IAAI,CAAI,CAAA,EAAA,KAAK,GAAG,CAAC;SAC5B;QAEO,iBAAiB,GAAA;YACvB,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;SAC/D;QAEO,mBAAmB,GAAA;YACzB,MAAM,GAAG,GAAa,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACvC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;aACzC;IACD,QAAA,OAAO,GAAG,CAAC;SACZ;QAEO,cAAc,GAAA;YACpB,MAAM,IAAI,GAAc,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACvC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;aAC9B;IACD,QAAA,OAAO,IAAI,CAAC;SACb;QAEO,gBAAgB,GAAA;YACtB,MAAM,IAAI,GAAc,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACvC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;aAChC;IACD,QAAA,OAAO,IAAI,CAAC;SACb;QAEO,YAAY,GAAA;IAClB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC7C,IAAI,SAAS,GAAkB,KAAK,CAAC;YACrC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClC,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC1C,SAAS,GAAG,MAAM,CAAC;gBACnB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;;IAED,QAAA,IAAI,KAAmC,CAAC;YACxC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;gBAC1F,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;oBAC1F,KAAK,GAAG,OAAO,CAAC;oBAChB,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;qBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;oBAChG,KAAK,GAAG,MAAM,CAAC;oBACf,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;aACF;YACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;SAC3D;;QAGO,sBAAsB,GAAA;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAClD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA,CAAE,CAAC;aAC1D;IACD,QAAA,OAAO,KAAK,CAAC;SACd;;QAGO,UAAU,GAAA;IAChB,QAAA,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI;IACxB,YAAA,KAAK,SAAS,CAAC,MAAM,EAAE;IACrB,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAChC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,OAAO,GAAG,CAAC;iBACZ;IACD,YAAA,KAAK,SAAS,CAAC,MAAM,EAAE;oBACrB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACxC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,OAAO,GAAG,CAAC;iBACZ;gBACD,KAAK,SAAS,CAAC,IAAI;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,IAAI,CAAC;gBACnD,KAAK,SAAS,CAAC,KAAK;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,KAAK,CAAC;gBACrD,KAAK,SAAS,CAAC,IAAI;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,IAAI,CAAC;IACnD,YAAA;IACE,gBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAAwB,qBAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;aACpE;SACF;;;;QAMO,SAAS,GAAA;IACf,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;SACzC;IAEO,IAAA,UAAU,CAAC,IAAe,EAAA;IAChC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC;SACpC;IAEO,IAAA,MAAM,CAAC,IAAe,EAAA;IAC5B,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO;aACR;IACD,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAA,OAAA,EAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC;SACpE;IAEO,IAAA,gBAAgB,CAAC,OAAe,EAAA;IACtC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;IAC3E,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAChC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,OAAO,GAAG,CAAC;aACZ;IACD,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,OAAO,CAAA,OAAA,EAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC;SACvE;;QAGO,iBAAiB,GAAA;YACvB,QACE,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG;IACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO;IACxC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;IACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;IACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK;IACtC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;IACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;IACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS;IAC1C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE;IACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG;IACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE;IACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG;IACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE;IACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG;IACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG;gBACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EACrC;SACH;IAEO,IAAA,YAAY,CAAC,OAAe,EAAA;YAClC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE;gBAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACxC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,OAAO,GAAG,CAAC;aACZ;IACD,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,OAAO,CAAA,OAAA,EAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC;SACvE;IAEO,IAAA,KAAK,CAAC,GAAW,EAAA;IACvB,QAAA,OAAO,IAAI,aAAa,CACtB,CAAA,wBAAA,EAA2B,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,GAAG,CAAA,CAAE,EAC3D,aAAa,CACd,CAAC;SACH;IACF,CAAA;IAED;IACA;IACA;IAEA;IACM,SAAU,KAAK,CAAC,GAAW,EAAA;IAC/B,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;IACrC,IAAA,OAAO,IAAI,CAAC;IACd,CAAC;IAED;IACM,SAAU,QAAQ,CAAC,GAAW,EAAA;IAClC,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAA,OAAO,MAAM,CAAC,kBAAkB,EAAE,CAAC;IACrC,CAAC;IAED;IACM,SAAU,mBAAmB,CAAC,GAAW,EAAA;IAC7C,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAA,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7B;;ICjuCA;;;;;IAKG;IAgCH;IACA,SAAS,mBAAmB,CAAC,IAAY,EAAA;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC3E,IAAA,IAAI,CAAC,CAAC;IAAE,QAAA,OAAO,IAAI,CAAC;IACpB,IAAA,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAE3B,MAAM,KAAK,GAAqB,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,uEAAuE,CAAC;IACnF,IAAA,IAAI,KAA6B,CAAC;IAClC,IAAA,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE;YACvC,IAAI,IAAI,GAA0B,IAAI,CAAC;IACvC,QAAA,IAAI;gBACF,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;aAC7C;IAAC,QAAA,MAAM;;aAEP;IACD,QAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SAC9C;QAED,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACrD,IAAA,IAAI,SAAS;YAAE,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE/C,IAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IAED;IACA,SAAS,gBAAgB,CAAC,IAAY,EAAE,GAA4B,EAAA;IAClE,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,MAAM;IAAE,QAAA,OAAO,IAAI,CAAC;QAC9B,IAAI,CAAC,KAAK,MAAM;IAAE,QAAA,OAAO,IAAI,CAAC;QAC9B,IAAI,CAAC,KAAK,OAAO;IAAE,QAAA,OAAO,KAAK,CAAC;IAChC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAAE,QAAA,OAAO,GAAG,CAAC;IACxC,IAAA,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACzD,IAAA,IAAI,GAAG;IAAE,QAAA,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IACvB,IAAA,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACvC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;SACvB;IACD,IAAA,OAAO,CAAC,CAAC;IACX,CAAC;IAED;IACA,SAAS,YAAY,CAAC,IAAoB,EAAE,GAA4B,EAAA;QACtE,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;YACxC,IAAI,IAAI,IAAI,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE;IACjC,YAAA,OAAO,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;aACrC;SACF;QACD,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAChF,CAAC;IAED;IACA;IACA;UAEa,aAAa,CAAA;QAGxB,WAAoB,CAAA,MAAsB,EAAE,eAAA,GAA0B,CAAC,EAAA;YAAnD,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;IACxC,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;SACxC;;IAGD,IAAA,kBAAkB,CAAC,GAAW,EAAA;IAC5B,QAAA,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;SAC5B;QAED,MAAM,OAAO,CAAC,IAAe,EAAA;IAC3B,QAAA,QAAQ,IAAI,CAAC,IAAI;gBACf,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC/C,KAAK,cAAc,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC1D,KAAK,SAAS,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAW,CAAC,CAAC;gBACxD,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC/C,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC/C,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC/C,KAAK,cAAc,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC1D,KAAK,YAAY,EAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACtD,KAAK,aAAa,EAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAW,CAAC,CAAC;gBAC/D,KAAK,gBAAgB,EAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAW,CAAC,CAAC;gBACrE,KAAK,cAAc,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAW,CAAC,CAAC;gBACjE,KAAK,YAAY,EAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAW,CAAC,CAAC;gBAC7D,KAAK,OAAO,EAAE,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;gBACzC,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3C,KAAK,UAAU,EAAE,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC/C,SAAS,MAAM,IAAI,aAAa,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,CAAC;aACjF;SACF;;;;;QAOO,MAAM,kBAAkB,CAAC,IAA0B,EAAA;YACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;YAG3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACrE,QAAA,MAAM,UAAU,GAA8B,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAEzE,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE;gBACZ,KAAK,MAAM,GAAG,IAAI,SAAS;IAAE,gBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClF,YAAA,OAAO,UAAU,CAAC;aACnB;;IAGD,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAC/B,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,QAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;IAC5B,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1E,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACd,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAClB;aACF;IACD,QAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;gBAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtD,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACd,gBAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACxB;aACF;IACD,QAAA,OAAO,MAAM,CAAC;SACf;QAEO,MAAM,iBAAiB,CAAC,IAA4C,EAAA;YAC1E,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAChG;;QAGO,eAAe,CAAC,GAA4B,EAAE,QAAkB,EAAA;IACtE,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;IAAE,YAAA,OAAO,GAAG,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;aAC/D;IACD,QAAA,OAAO,SAAS,CAAC;SAClB;;QAGO,MAAM,cAAc,CAAC,IAA0B,EAAA;YACrD,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAY,CAAC,CAAC;IAC7F,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,MAAM,GAAY,IAAI,CAAC;IAC3B,QAAA,IAAI;gBACF,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACzC;IAAC,QAAA,MAAM,6BAA6B;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACvC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAEvD,OAAO;IACL,YAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;IACrB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;IACvB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,MAAM;IACxC,YAAA,aAAa,EAAE,IAAI;IACnB,YAAA,YAAY,EAAE,OAAO;aACtB,CAAC;SACH;;;;QAMO,MAAM,aAAa,CAAC,IAAqB,EAAA;IAC/C,QAAA,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/D,QAAA,MAAM,YAAY,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3E,QAAA,IAAI,IAA+B,CAAC;IAEpC,QAAA,MAAM,WAAW,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;;YAG5D,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;IACnD,aAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;;YAElD,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;;YAEvD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzE,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;;gBAErB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChE,YAAA,IAAI,GAAG,WAAW;IAChB,kBAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;sBAC/F,OAAO,CAAC;gBACZ,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;;IAEpE,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,gBAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBAC1D;aACF;iBAAM,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;;IAErC,YAAA,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;aACb;iBAAM,IAAI,WAAW,EAAE;;gBAEtB,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;aAC3C;iBAAM;;IAEL,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBAChF;;IAED,YAAA,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9D,YAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IAC3C,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;iBACpG;IACD,YAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;iBACzE;;IAED,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;oBACpC,IAAI,CAAC,KAAK,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAAE,oBAAA,OAAO,CAAC,CAAC;oBAC1G,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;oBAC3C,IAAI,CAAC,EAAE;IACL,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;wBAC3D,OAAO,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAA,EAAG,QAAQ,CAAA,IAAA,EAAO,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;qBAChE;oBACD,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACzC,aAAC,CAAC,CAAC;;IAGH,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBACpD,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,IAAI,YAAY,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;;IAE/F,gBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;oBACrB,IAAI,YAAY,EAAE;IAAE,oBAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAAC,oBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IAAC,oBAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;qBAAE;IAChG,gBAAA,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtG,gBAAA,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;iBACtD;qBAAM;;IAEL,gBAAA,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;IACpD,oBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACvD;oBACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,IAAI,YAAY,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;oBAC/F,IAAI,YAAY,IAAI,cAAc;IAAE,oBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;oBACzD,IAAI,YAAY,EAAE;IAAE,oBAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAAC,oBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IAAC,oBAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;qBAAE;IAChG,gBAAA,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBACjD;aACF;;YAGD,IAAI,YAAY,EAAE;gBAChB,IAAI,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;aAClD;IAED,QAAA,IAAI,UAAU;gBAAE,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvD,IAAI,IAAI,CAAC,QAAQ;IAAE,YAAA,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACrD,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;;IAEtD,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;IAExD,YAAA,MAAM,QAAQ,GAAI,IAA0D,CAAC,YAAY,CAAC;gBAC1F,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;oBACjC,MAAM,UAAU,GAAmB,EAAE,CAAC;IACtC,gBAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IAChD,oBAAA,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;qBACtC;IACD,gBAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;iBAC1B;IACD,YAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,MAAO,CAAC,CAAC,CAAC;aAC5D;YACD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACrF,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACtF,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;aAC9D;;IAED,QAAA,IAAI,YAAY,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3D,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACzC;IACD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;YACxC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;;IAG1C,QAAA,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;gBAClE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;aAC5C;IAED,QAAA,OAAO,IAAI,CAAC;SACb;;IAIO,IAAA,MAAM,iBAAiB,CAAC,IAAqB,EAAE,aAAyC,EAAA;YAC9F,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;;IAE1C,QAAA,IAAI,QAAmC,CAAC;YACxC,IAAI,aAAa,EAAE;gBACjB,QAAQ,GAAG,aAAa,CAAC;aAC1B;iBAAM;;IAEL,YAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5E,YAAA,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAC5C,KAAK,EAAE,IAAI,CAAC,IAAI;IAChB,gBAAA,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,SAAS;IAC/D,aAAA,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;aAClD;YACD,IAAI,UAAU,GAAG,QAAQ,CAAC;IAE1B,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAM,EAAE;gBAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;;IAE3C,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBAClF,IAAI,UAAU,EAAE;oBACd,UAAU,GAAG,UAAU,CAAC;oBACxB,SAAS;iBACV;gBACD,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IACxE,iBAAA,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;gBAChD,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;aACxD;IAED,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;;gBAEpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IACtC,gBAAA,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;iBAClE;qBAAM;;IAEL,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,gBAAA,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBACtE;aACF;IACD,QAAA,OAAO,UAAU,CAAC;SACnB;QAEO,SAAS,CAAC,GAA4B,EAAE,KAAa,EAAA;YAC3D,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;gBAAE,QAAQ,CAAC,GAAG,KAAK,CAAA,CAAA,EAAI,GAAG,CAAE,CAAA,CAAC,GAAG,KAAK,CAAC;IACpF,QAAA,OAAO,QAAQ,CAAC;SACjB;IAED;;;IAGG;QACK,oBAAoB,CAAC,KAAqB,EAAE,SAAiB,EAAA;YACnE,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,QAAA,IAAI,CAAC,SAAS;gBAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpC,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;IAC/B,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IAChD,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,SAAS;gBACtC,MAAM,CAAC,GAAG,KAAuC,CAAC;IAClD,YAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;qBACpC,MAAM,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE;oBAC/E,SAAS;iBACV;IACD,YAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC;aAC5C;YACD,OAAO,EAAE,QAAQ,EAAE,CAAC;SACrB;IAED;;;;;;IAMG;QACK,MAAM,WAAW,CACvB,QAAmC,EACnC,IAAgB,EAChB,SAAiB,EACjB,SAAiB,EAAA;YAEjB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;IAAE,YAAA,OAAO,IAAI,CAAC;;YAGhE,MAAM,KAAK,GAA4C,EAAE,CAAC;IAC1D,QAAA,MAAM,YAAY,GAAG,CAAC,EAAkB,KAAa;IACnD,YAAA,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;IAC/C,gBAAA,IAAI,MAAM,KAAK,MAAM,EAAE;IACrB,oBAAA,IAAI,CAAE,IAAyB,CAAC,KAAK,CAAC,YAAY,CAAC;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAClE,SAAS;qBACV;IACD,gBAAA,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM;wBAAE,OAAO,KAAK,CAAC;oBACxD,IAAI,MAAM,GAAkB,IAAI,CAAC;oBACjC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;wBAC7C,MAAM,CAAC,GAAG,IAA+B,CAAC;wBAC1C,IAAI,KAAK,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,MAAM,IAAK,CAAC,CAAC,GAA+B,EAAE;4BAC7G,MAAM,GAAG,MAAM,CAAE,CAAC,CAAC,GAA+B,CAAC,IAAI,CAAC,CAAC;yBAC1D;IAAM,yBAAA,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;IACrD,wBAAA,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;yBACzB;qBACF;IACD,gBAAA,IAAI,CAAC,MAAM;wBAAE,OAAO,KAAK,CAAC;IAE1B,gBAAA,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA,EAAG,SAAS,CAAG,CAAA,CAAA,CAAC,GAAG,KAAK,CAAC;oBACzE,KAAK,CAAC,IAAI,CAAC;wBACT,OAAO,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM;wBACpC,QAAQ,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM;IACtC,iBAAA,CAAC,CAAC;iBACJ;IACD,YAAA,OAAO,IAAI,CAAC;IACd,SAAC,CAAC;IACF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;IACxC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;;IAGpC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,QAAA,IAAI,CAAC,MAAM;IAAE,YAAA,OAAO,IAAI,CAAC;YACzB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;IACjC,YAAA,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,YAAA,OAAO,MAAM,KAAK,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;IACxE,SAAC,CAAC,CAAC;IACH,QAAA,IAAI,CAAC,SAAS;IAAE,YAAA,OAAO,IAAI,CAAC;;IAG5B,QAAA,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;IAC5D,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3H,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;;IAGrC,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACnD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,EAAE,CAAC,cAAc,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;IAC7C,SAAA,CAAC,CAAC;;IAGH,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC1D,QAAA,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE;IAC1B,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5F,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAAE,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACtC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACzB;YAED,MAAM,SAAS,GAA4B,EAAE,CAAC;YAC9C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAAE,YAAA,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAErE,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,QAAA,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;IACxB,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IACjC,gBAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;IACvB,oBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;qBACxD;iBACF;IAAM,iBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;;IAE/B,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;iBAChE;;aAEF;IACD,QAAA,OAAO,MAAM,CAAC;SACf;;IAGO,IAAA,QAAQ,CACd,QAAmC,EACnC,SAAoC,EACpC,IAAgB,EAAA;IAEhB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;gBACzB,MAAM,MAAM,GAA8B,EAAE,CAAC;gBAC7C,KAAK,MAAM,CAAC,IAAI,QAAQ;oBAAE,KAAK,MAAM,CAAC,IAAI,SAAS;wBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACjF,YAAA,OAAO,MAAM,CAAC;aACf;YAED,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,QAAA,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;gBACxB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,YAAA,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;;oBAEzB,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAC9B,gBAAA,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;IAC/C,oBAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACpB,OAAO,GAAG,IAAI,CAAC;qBAChB;iBACF;gBACD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;oBACpC,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,gBAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAAE,oBAAA,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;oBACzE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;iBACrC;aACF;IAED,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;IACzB,YAAA,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;oBACzB,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;wBACpC,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAC9B,oBAAA,OAAO,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,iBAAC,CAAC,CAAC;oBACH,IAAI,CAAC,SAAS,EAAE;wBACd,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,oBAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAAE,wBAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;wBACvE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;qBACpC;iBACF;aACF;IACD,QAAA,OAAO,MAAM,CAAC;SACf;;QAIO,cAAc,CAAC,IAA+B,EAAE,IAAqB,EAAA;IAC3E,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC5D,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;IAAE,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC5B;YACD,MAAM,MAAM,GAA8B,EAAE,CAAC;;IAE7C,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC3C,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE;gBACvC,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAQ;oBAAE,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACrE,YAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;oBAClC,IAAI,OAAO,KAAK,GAAG;wBAAE,SAAS;oBAC9B,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;oBACjF,IAAI,CAAC,EAAE;wBACL,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/E,oBAAA,MAAM,OAAO,GAAG,CAAG,EAAA,IAAI,CAAC,WAAW,EAAE,CAAA,CAAA,EAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;IACvD,oBAAA,MAAM,SAAS,GAAG,KAAK,IAAI,OAAO,CAAC;wBACnC,IAAI,SAAS,KAAK,OAAO;IAAE,wBAAA,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC5D,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;qBAC/B;IAAM,qBAAA,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;;IAEtC,oBAAA,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;wBAC1C,UAAU,CAAC,IAAI,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;qBACrF;yBAAM,IAAI,CAAC,IAAI,CAAC,OAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;wBAC3C,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;qBAC7C;iBACF;IACD,YAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzB;IACA,QAAA,IAA0D,CAAC,YAAY,GAAG,QAAQ,CAAC;IACpF,QAAA,OAAO,MAAM,CAAC;SACf;IAEO,IAAA,gBAAgB,CAAC,IAAY,EAAE,IAA+B,EAAE,GAAW,EAAA;;IAEjF,QAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;;YAE3E,MAAM,WAAW,GAAG,CAAC,QAAQ,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC;YAC9E,MAAM,SAAS,GAAG,IAAI;iBACnB,GAAG,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;;IAEhD,QAAA,IAAI,IAAI,KAAK,OAAO,EAAE;gBACpB,IAAI,MAAM,KAAK,GAAG;oBAAE,OAAO,IAAI,CAAC,MAAM,CAAC;gBACvC,IAAI,WAAW,EAAE;IACf,gBAAA,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;iBACpG;gBACD,OAAO,SAAS,CAAC,MAAM,CAAC;aACzB;YACD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,YAAY,GAAG,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;YACpE,QAAQ,IAAI;gBACV,KAAK,KAAK,EAAE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,YAAA,KAAK,KAAK,EAAE,OAAO,YAAY,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;gBACzH,KAAK,KAAK,EAAE,OAAO,YAAY,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;gBAC7E,KAAK,KAAK,EAAE,OAAO,YAAY,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAC7E,YAAA,SAAS,OAAO,CAAC,CAAC;aACnB;SACF;;IAIO,IAAA,eAAe,CAAC,IAA+B,EAAA;IACrD,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;IACzB,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1E,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAAE,gBAAA,OAAO,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACd,YAAA,OAAO,IAAI,CAAC;IACd,SAAC,CAAC,CAAC;SACJ;;;;QAMO,MAAM,aAAa,CAAC,IAAqB,EAAA;IAC/C,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;IAC/F,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;;IAG7D,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;;gBAG7D,IAAI,OAAO,GAAa,EAAE,CAAC;IAC3B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IACxB,YAAA,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;oBACzB,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;wBACnE,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC,CAAC;qBACvD;IAAM,qBAAA,IAAI,GAAG,CAAC,IAAI,EAAE;IACnB,oBAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7D,oBAAA,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;qBAC3D;iBACF;IACD,YAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjD,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;iBACtC;gBACD,MAAM,IAAI,GAA8B,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;oBAC7D,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACxC,oBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACnD,oBAAA,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG;4BAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;qBACvD;IACD,gBAAA,OAAO,MAAM,CAAC;IAChB,aAAC,CAAC,CAAC;IACH,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aAC5C;IAED,QAAA,MAAM,IAAI,GAA8B,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAe,KAAI;gBAClF,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAAE,gBAAA,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM;wBAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;iBAAE;IAC9F,YAAA,OAAO,GAAG,CAAC;IACb,SAAC,CAAC,CAAC;IACH,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAC5C;QAEO,MAAM,aAAa,CAAC,IAAqB,EAAA;IAC/C,QAAA,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACxD;QAEO,MAAM,aAAa,CAAC,IAAqB,EAAA;IAC/C,QAAA,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAC7C;QAEO,MAAM,kBAAkB,CAAC,IAA0B,EAAA;;IAEzD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;IACpB,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,YAAA,IAAI,MAAM;oBAAE,OAAO;aACpB;YACD,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC9E,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;SAClE;QAEO,MAAM,gBAAgB,CAAC,IAAwB,EAAA;IACrD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;IACjB,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,YAAA,IAAI,CAAC,MAAM;IAAE,gBAAA,OAAO;aACrB;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzC;QAEO,MAAM,iBAAiB,CAAC,IAAyB,EAAA;IACvD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;IAC/F,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,QAAA,IAAI,CAAC,MAAM;gBAAE,OAAO;;YAGpB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;IAChD,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;aACzH;IAED,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;gBACzB,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IACpC,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,IAAI,CAAC,IAAI,GAAG,EAAE,eAAe,CAAC,CAAC;iBACjH;;IAED,YAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACtE;IAAM,aAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;IACjC,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IACrC,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,IAAI,CAAC,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAC;iBACpH;;gBAED,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;;gBAExC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IACjC,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;oBACtB,IAAI,OAAO,IAAI,GAAG;IAAE,oBAAA,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;iBACzC;aACF;SACF;QAEO,MAAM,oBAAoB,CAAC,IAA4B,EAAA;IAC7D,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;YAC/F,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACrC;;;;QAMO,MAAM,kBAAkB,CAAC,IAA0B,EAAA;IACzD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,KAAK,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;IAEhG,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,QAAA,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IAC1C,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAA8B,2BAAA,EAAA,IAAI,CAAC,KAAK,CAAA,CAAA,CAAG,EAAE,kBAAkB,CAAC,CAAC;aAChH;YAED,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE;IACjD,YAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,+BAAA,CAAiC,EAC5D,eAAe,CAChB,CAAC;aACH;IACD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACtE;QAEO,MAAM,gBAAgB,CAAC,IAAwB,EAAA;YACrD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE;IAC/C,YAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,6BAAA,CAA+B,EAC1D,eAAe,CAChB,CAAC;aACH;IACD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SAClE;;;;IAMO,IAAA,MAAM,YAAY,GAAA;IACxB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;SACvC;IAEO,IAAA,MAAM,aAAa,GAAA;IACzB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;SACxC;IAEO,IAAA,MAAM,eAAe,GAAA;IAC3B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;SAC1C;;IAGO,IAAA,aAAa,CAAC,OAAiB,EAAA;IACrC,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SACvD;IAED;;;IAGG;IACK,IAAA,sBAAsB,CAAC,IAAqB,EAAA;YAClD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;IAAE,YAAA,OAAO,KAAK,CAAC;IAC7D,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC9B,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACvC,YAAA,IAAI,CAAC;oBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,iBAAA,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAChC,gBAAA,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;oBACtC,IAAI,IAAI,EAAE,KAAK;IAAE,oBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1C;aACF;IACD,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;IAAE,YAAA,OAAO,KAAK,CAAC;YACrC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;SACxD;;IAGO,IAAA,YAAY,CAAC,KAAqB,EAAA;IACxC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;IACnC,gBAAA,IAAK,KAA0B,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAAE,oBAAA,OAAO,IAAI,CAAC;oBACnF,SAAS;iBACV;IACD,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;IAClB,gBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAuB,CAAC;IAAE,oBAAA,OAAO,IAAI,CAAC;oBAC5D,SAAS;iBACV;IACD,YAAA,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;IAAE,gBAAA,OAAO,IAAI,CAAC;aAC1C;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IAED,IAAA,SAAS,KAAqB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;IAEnD;;;IAGG;QACK,UAAU,CAAC,GAA4B,EAAE,OAAiB,EAAA;YAChE,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAwC,EAAE,CAAC;YAC1D,MAAM,QAAQ,GAA8C,EAAE,CAAC;YAC/D,MAAM,SAAS,GAAsC,EAAE,CAAC;IACxD,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;gBACzB,IAAI,GAAG,KAAK,GAAG;oBAAE,SAAS;IAC1B,YAAA,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,IAAI,EAAE;IACR,gBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;oBAClD,SAAS;iBACV;gBACD,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBAC7C,IAAI,CAAC,EAAE;oBACL,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACrD,SAAS;iBACV;;gBAED,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACnC,IAAI,GAAG,EAAE;IACP,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBAC1C,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;oBACpC,SAAS;iBACV;IACD,YAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACjB;YACD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YACrE,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE;IACzC,YAAA,IAAI,MAAM,KAAK,GAAG,EAAE;IAClB,gBAAA,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;iBAC/B;qBAAM;oBACL,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACtC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpE;aACF;YACD,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,SAAS,EAAE;IACtC,YAAA,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACxB;YACD,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE;gBACtC,SAAS,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aAC5C;IACD,QAAA,OAAO,SAAS,CAAC;SAClB;;;;;IAOO,IAAA,mBAAmB,CAAC,OAAiB,EAAA;IAC3C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SACvE;;QAGO,sBAAsB,CAAC,IAA+B,EAAE,IAAqB,EAAA;YACnF,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;gBAClC,IAAI,OAAO,KAAK,GAAG;oBAAE,SAAS;gBAC9B,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;gBACjF,IAAI,CAAC,EAAE;oBACL,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/B,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;iBACxF;qBAAM;;oBAEL,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;iBAC7D;aACF;IACD,QAAA,OAAO,MAAM,CAAC;SACf;;;;;QAOO,qBAAqB,CAAC,KAAqB,EAAE,OAAiB,EAAA;YACpE,MAAM,UAAU,GAAmB,EAAE,CAAC;IACtC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;oBACnC,UAAU,CAAC,GAAG,CAAC,GAAI,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;oBACrG,SAAS;iBACV;IACD,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;oBAClB,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAuB,EAAE,OAAO,CAAC,CAAC;oBAC/E,SAAS;iBACV;IACD,YAAA,IAAI,GAAG,KAAK,SAAS,EAAE;IACrB,gBAAA,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBAC5D,SAAS;iBACV;gBACD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC7C,YAAA,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;aAC/D;IACD,QAAA,OAAO,UAAU,CAAC;SACnB;QAEO,oBAAoB,CAAC,KAAc,EAAE,OAAiB,EAAA;IAC5D,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;IAAE,YAAA,OAAO,KAAK,CAAC;YAC9D,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,QAAA,IAAI,CAAC,CAAC,SAAS,EAAE;IACf,YAAA,MAAM,GAAG,GAAG,CAAC,CAAC,SAA4B,CAAC;;IAE3C,YAAA,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACvE,OAAO,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC;aAClG;IACD,QAAA,OAAO,KAAK,CAAC;SACd;QAEO,mBAAmB,CAAC,KAAc,EAAE,OAAiB,EAAA;IAC3D,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAAE,YAAA,OAAO,KAAK,CAAC;YACtF,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,QAAA,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE;gBAC5E,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,KAAK,EAAE;oBACjC,GAAG,CAAC,EAAE,CAAC,GAAI,OAA4B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;iBAChG;IAAM,iBAAA,IAAI,EAAE,KAAK,MAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;IAC3E,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;iBACtD;IAAM,iBAAA,IAAI,EAAE,KAAK,MAAM,EAAE;IACxB,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;iBACrD;qBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,IAAK,OAAmC,EAAE;;oBAEvI,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAE,OAAmC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;iBACjG;qBAAM;IACL,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;iBACnB;aACF;IACD,QAAA,OAAO,GAAG,CAAC;SACZ;QAEO,UAAU,CAAC,GAAW,EAAE,OAAiB,EAAA;IAC/C,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;IAC3B,YAAA,IAAI,CAAC,KAAK;oBAAE,SAAS;IACrB,YAAA,MAAM,MAAM,GAAG,CAAG,EAAA,KAAK,GAAG,CAAC;IAC3B,YAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAC7D;IACD,QAAA,OAAO,GAAG,CAAC;SACZ;;IAGO,IAAA,iBAAiB,CAAC,KAAqB,EAAA;IAC7C,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;IACnC,gBAAA,IAAK,KAA0B,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAAE,oBAAA,OAAO,IAAI,CAAC;oBACxF,SAAS;iBACV;IACD,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;IAClB,gBAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAuB,CAAC;IAAE,oBAAA,OAAO,IAAI,CAAC;oBACjE,SAAS;iBACV;IACD,YAAA,IAAI,GAAG,KAAK,SAAS,EAAE;;IAErB,gBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,WAAW,IAAK,KAAiC,EAAE;wBACpG,OAAO,IAAI,CAAC;qBACb;oBACD,SAAS;iBACV;;IAED,YAAA,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;IAAE,gBAAA,OAAO,IAAI,CAAC;IACzC,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IAAE,gBAAA,OAAO,IAAI,CAAC;aAC7C;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IAEO,IAAA,cAAc,CAAC,KAAc,EAAA;IACnC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAAE,YAAA,OAAO,KAAK,CAAC;YACtF,MAAM,GAAG,GAAG,KAAgC,CAAC;YAC7C,IAAI,MAAM,IAAI,GAAG;IAAE,YAAA,OAAO,IAAI,CAAC;YAC/B,IAAI,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE;gBACjC,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAqB,CAAC;IACvD,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;aACxD;IACD,QAAA,IAAI,MAAM,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE;gBACtE,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACtC;;IAED,QAAA,KAAK,MAAM,GAAG,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IAC7C,YAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBAC9E,IAAI,MAAM,IAAK,OAAmC;IAAE,oBAAA,OAAO,IAAI,CAAC;IAChE,gBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;IAAE,oBAAA,OAAO,IAAI,CAAC;iBAC/C;aACF;IACD,QAAA,OAAO,KAAK,CAAC;SACd;;IAGO,IAAA,qBAAqB,CAAC,KAAqB,EAAA;YACjD,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;oBACnC,OAAO,CAAC,GAAG,CAAC,GAAI,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;oBACzF,SAAS;iBACV;IACD,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;oBAClB,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAuB,CAAC,CAAC;;oBAElE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;IAAE,oBAAA,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;oBACxD,SAAS;iBACV;gBACD,IAAI,GAAG,KAAK,SAAS;IAAE,gBAAA,SAAS;IAChC,YAAA,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;IAAE,gBAAA,SAAS;IACtC,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACtB;IACD,QAAA,OAAO,OAAO,CAAC;SAChB;;IAGO,IAAA,MAAM,gBAAgB,CAAC,IAA+B,EAAE,KAAqB,EAAA;YACnF,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;;gBAEtB,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;gBAEhD,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACvD,YAAA,IAAI,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE;IAC7B,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAClB;aACF;IACD,QAAA,OAAO,MAAM,CAAC;SACf;;QAGO,eAAe,CAAC,KAAqB,EAAE,GAA4B,EAAA;YACzE,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;oBACnC,QAAQ,CAAC,GAAG,CAAC,GAAI,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;oBACzF,SAAS;iBACV;IACD,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;oBAClB,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAuB,EAAE,GAAG,CAAC,CAAC;oBACnE,SAAS;iBACV;IACD,YAAA,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAC3B,gBAAA,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACtC,gBAAA,IAAI,CAAC,IAAI;IAAE,oBAAA,SAAS;oBACpB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBACpC,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;IACzC,oBAAA,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;qBAC7B;yBAAM;IACL,oBAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;qBAC/B;oBACD,SAAS;iBACV;IACD,YAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACvB;IACD,QAAA,OAAO,QAAQ,CAAC;SACjB;;QAGO,oBAAoB,CAAC,GAAY,EAAE,SAAkB,EAAA;IAC3D,QAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBACnF,OAAO,GAAG,KAAK,SAAS,CAAC;aAC1B;YACD,MAAM,GAAG,GAAG,SAAoC,CAAC;IACjD,QAAA,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAC/C,QAAQ,EAAE;IACR,gBAAA,KAAK,KAAK;wBAAE,IAAI,GAAG,KAAK,OAAO;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAAC,MAAM;IACrD,gBAAA,KAAK,KAAK;wBAAE,IAAI,GAAG,KAAK,OAAO;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAAC,MAAM;IACrD,gBAAA,KAAK,KAAK;IAAE,oBAAA,IAAI,EAAG,GAAc,GAAI,OAAkB,CAAC;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAAC,MAAM;IAC9E,gBAAA,KAAK,MAAM;IAAE,oBAAA,IAAI,EAAG,GAAc,IAAK,OAAkB,CAAC;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAAC,MAAM;IAChF,gBAAA,KAAK,KAAK;IAAE,oBAAA,IAAI,EAAG,GAAc,GAAI,OAAkB,CAAC;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAAC,MAAM;IAC9E,gBAAA,KAAK,MAAM;IAAE,oBAAA,IAAI,EAAG,GAAc,IAAK,OAAkB,CAAC;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAAC,MAAM;IAChF,gBAAA,KAAK,KAAK;IAAE,oBAAA,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAAC,MAAM;IACxF,gBAAA,KAAK,MAAM;IAAE,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAAC,MAAM;iBAEvF;aACF;IACD,QAAA,OAAO,IAAI,CAAC;SACb;;QAGO,cAAc,CAAC,KAAc,EAAE,UAAmC,EAAA;IACxE,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAAE,YAAA,OAAO,KAAK,CAAC;YACtF,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,QAAA,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE;IAC5E,YAAA,IAAI,EAAE,KAAK,MAAM,EAAE;IACjB,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;iBAC/C;qBAAM,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,KAAK,EAAE;oBACxC,GAAG,CAAC,EAAE,CAAC,GAAI,OAA4B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;iBAC3F;IAAM,iBAAA,IAAI,EAAE,KAAK,MAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;IAC3E,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;iBACpD;qBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,IAAK,OAAmC,EAAE;;IAEvI,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAE,OAAmC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;iBACjF;qBAAM;IACL,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;iBACnB;aACF;IACD,QAAA,OAAO,GAAG,CAAC;SACZ;QAEO,aAAa,CAAC,KAAqB,EAAE,UAAmC,EAAA;YAC9E,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;oBACnC,KAAK,CAAC,GAAG,CAAC,GAAI,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;iBAC5F;IAAM,iBAAA,IAAI,GAAG,KAAK,MAAM,EAAE;oBACzB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAuB,EAAE,UAAU,CAAC,CAAC;iBACtE;IAAM,iBAAA,IAAI,GAAG,KAAK,SAAS,EAAE;IAC5B,gBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;iBACpB;qBAAM;IACL,gBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;iBACrD;aACF;IACD,QAAA,OAAO,KAAK,CAAC;SACd;;;;IAMD;;;;IAIG;IACK,IAAA,MAAM,iBAAiB,CAAC,KAAqB,EAAE,UAAoC,EAAA;;YAEzF,IAAI,UAAU,EAAE;gBACd,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;aAC/C;YACD,MAAM,QAAQ,GAAmB,EAAE,CAAC;IAEpC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;IAEhD,YAAA,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;oBACpE,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,gBAAA,MAAM,GAAG,GAAG,CAAC,CAAC,SAA4B,CAAC;IAC3C,gBAAA,MAAM,MAAM,GAAG,CAAC,CAAE,CAA6B,CAAC,OAAO,CAAC;IACxD,gBAAA,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;;IAEzB,gBAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE;wBACpC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;qBAC3D;IACD,gBAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACvE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,MAAM,CAAC;oBAC9C,SAAS;iBACV;;gBAED,IAAI,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAC1C,QAAQ,CAAC,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAClF,CAAC;oBACF,SAAS;iBACV;gBACD,IAAI,GAAG,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACzC,QAAQ,CAAC,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAClF,CAAC;oBACF,SAAS;iBACV;IACD,YAAA,IAAI,GAAG,KAAK,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;IACjE,gBAAA,QAAQ,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAuB,EAAE,UAAU,CAAC,CAAC;oBAClF,SAAS;iBACV;;gBAGD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;oBAC/C,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAgC,CAAC,CAAC;iBACxF;qBAAM;IACL,gBAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;iBACvB;aACF;IAED,QAAA,OAAO,QAAQ,CAAC;SACjB;IAED;;IAEG;QACK,MAAM,yBAAyB,CAAC,GAA4B,EAAA;YAClE,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAE7C,QAAA,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;;gBAE/C,IAAI,EAAE,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBAC3C,QAAQ,CAAC,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,OAA4B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CACxE,CAAC;oBACF,SAAS;iBACV;gBACD,IAAI,EAAE,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBAC1C,QAAQ,CAAC,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,OAA4B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CACxE,CAAC;oBACF,SAAS;iBACV;IACD,YAAA,IAAI,EAAE,KAAK,MAAM,EAAE;oBACjB,QAAQ,CAAC,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;IAC7D,sBAAE,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAkC,CAAC;0BACxE,OAAO,CAAC;oBACZ,SAAS;iBACV;;IAGD,YAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,WAAW,IAAK,OAAmC,EAAE;IAC1G,gBAAA,MAAM,OAAO,GAAI,OAAmC,CAAC,SAA4B,CAAC;oBAClF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oBAEpD,IAAI,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE;;IAEjC,oBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,oBAAA,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACpD,oBAAA,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;qBACvB;yBAAM;;IAEL,oBAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;IAC1B,wBAAA,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;yBACrB;6BAAM;IACL,wBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC7C,QAAQ,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;yBACtC;qBACF;iBACF;qBAAM;IACL,gBAAA,QAAQ,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;iBACxB;aACF;IAED,QAAA,OAAO,QAAQ,CAAC;SACjB;IACF;;IC3tCD;;;;;IAKG;IAMH;IACA;IACA;UAEa,WAAW,CAAA;IAKtB,IAAA,WAAA,CAAY,MAAsB,EAAA;IAH1B,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,GAAG,EAAE,CAAC;YACvC,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;IAGxB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;SACtB;;IAGD,IAAA,KAAK,CAAC,SAAiB,EAAA;YACrB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACnC,IAAI,CAAC,CAAC,EAAE;gBACN,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;aAC/B;IACD,QAAA,OAAO,CAAC,CAAC;SACV;;QAGD,cAAc,GAAA;IACZ,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;;QAGD,WAAW,GAAA;YACT,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;IACF,CAAA;IAED;IACA;IACA;UAEa,kBAAkB,CAAA;IAC7B,IAAA,WAAA,CAAoB,MAAsB,EAAA;YAAtB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;SAAI;;QAG9C,MAAM,OAAO,CAAI,EAAoC,EAAA;YACnD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;IAGzC,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAErC,QAAA,IAAI;IACF,YAAA,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;;IAE7B,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBACtC,GAAG,CAAC,cAAc,EAAE,CAAC;IACrB,YAAA,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;;IAEd,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;gBACxC,IAAI,KAAK,YAAY,aAAa;IAAE,gBAAA,MAAM,KAAK,CAAC;IAChD,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,oBAAA,EAAwB,KAAe,CAAC,OAAO,CAAA,CAAE,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;aACxG;SACF;IACF;;ICxED;;;;;IAKG;IAUH;IACA;IACA;UAEa,aAAa,CAAA;IAA1B,IAAA,WAAA,GAAA;YACU,IAAO,CAAA,OAAA,GAAmB,EAAE,CAAC;IAC7B,QAAA,IAAA,CAAA,KAAK,GAAkC,IAAI,GAAG,EAAE,CAAC;SAqE1D;;QAlEC,QAAQ,CAAC,MAAoB,EAAE,EAAY,EAAA;;IAEzC,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;YACtC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CACxC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,QAAQ,CACpC,CAAC;IACF,QAAA,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;IACtB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;aAC7C;;IAED,QAAA,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SACpB;;IAGD,IAAA,UAAU,CAAC,UAAkB,EAAA;IAC3B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IACjE,QAAA,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;aAC7B;SACF;;QAGD,UAAU,GAAA;IACR,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;SAC1B;;QAGD,EAAE,CAAC,IAAc,EAAE,QAAsB,EAAA;IACvC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7C,QAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SACjC;;QAGD,GAAG,CAAC,IAAc,EAAE,QAAsB,EAAA;YACxC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,SAAS,EAAE;gBACb,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACxC,IAAI,GAAG,KAAK,CAAC,CAAC;IAAE,gBAAA,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;aAC1C;SACF;;IAGD,IAAA,MAAM,OAAO,CAAC,IAAc,EAAE,GAAG,IAAe,EAAA;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,SAAS,EAAE;IACb,YAAA,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE;IAC1B,gBAAA,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;iBACnB;aACF;SACF;;QAGD,OAAO,GAAA;IACL,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;IACjC,YAAA,IAAI;oBAAE,MAAM,CAAC,OAAO,EAAE,CAAC;iBAAE;gBAAC,OAAO,CAAC,EAAE;;oBAElC,OAAO,CAAC,IAAI,CAAC,CAA2B,wBAAA,EAAA,MAAM,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,CAAC,CAAC,CAAC;iBAC3E;aACF;IACD,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;SACpB;IACF;;IC1FD;;;;;IAKG;IAkBH;IACA;IACA;UAEa,YAAY,CAAA;;QAWvB,IAAI,OAAO,KAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;;IAY/C,IAAA,IAAI,eAAe,GAAA,EAAa,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC,EAAE;;IAG1E,IAAA,IAAI,KAAK,GAAA,EAAc,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE;IAK3D,IAAA,WAAA,CAAY,MAAsB,EAAA;YAb1B,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;IAEd,QAAA,IAAA,CAAA,UAAU,GAAuB,IAAI,GAAG,EAAE,CAAC;;YAS3C,IAAO,CAAA,OAAA,GAA4B,IAAI,CAAC;;IAoSxC,QAAA,IAAA,CAAA,SAAS,GAA8C,IAAI,GAAG,EAAE,CAAC;;IAiDjE,QAAA,IAAA,CAAA,UAAU,GAAqD,IAAI,GAAG,EAAE,CAAC;IAlV/E,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC;YAC5C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC;YAC5C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;IACtD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;;YAGzC,IAAI,MAAM,CAAC,YAAY,IAAI,OAAO,gBAAgB,KAAK,WAAW,EAAE;IAClE,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,CAAiB,cAAA,EAAA,IAAI,CAAC,IAAI,CAAE,CAAA,CAAC,CAAC;gBAClE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,KAAI;IACjC,gBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,IAAgD,CAAC;IACnE,gBAAA,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;wBAAE,OAAO;oBAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;;IAEzE,gBAAA,IAAI,IAAI,CAAC,MAAM,YAAY,YAAY,EAAE;wBACtC,IAAI,CAAC,MAAuB,CAAC,oBAAoB,EAAE,CAAC,KAAK,CAAC,MAAK;;IAEhE,qBAAC,CAAC,CAAC;qBACJ;IACH,aAAC,CAAC;aACH;SACF;;;IAKD,IAAA,MAAM,IAAI,GAAA;;IAER,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;;IAGlC,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;;;YAIhD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE;IAC7C,YAAA,IAAI;oBACF,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;oBACvE,IAAI,gBAAgB,IAAI,IAAI,IAAI,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;wBAC7D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;qBAC/E;iBACF;IAAC,YAAA,MAAM,+BAA+B;aACxC;;IAGD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACrE,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;IAG9D,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACvB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;oBACxC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;iBAC3C;aACF;IAED,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;;IAGlB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;IACvB,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aAC3B;SACF;;QAGD,OAAO,GAAA;YACL,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;;;IAKD,IAAA,MAAM,WAAW,CAAC,IAAY,EAAE,OAAkC,EAAA;YAChE,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE3C,QAAA,IAAI;gBACF,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;gBAC9D,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACtC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;aAC9D;YAAC,OAAO,KAAK,EAAE;IACd,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC;IAC9B,YAAA,MAAM,KAAK,CAAC;aACb;;IAGD,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC9B;;IAGD,IAAA,KAAK,CAAC,IAAY,EAAA;YAChB,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,CAAC,EAAE;;gBAEN,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;gBAChG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aAC9B;IACD,QAAA,OAAO,CAAC,CAAC;SACV;;QAGD,MAAM,SAAS,CAAC,IAAY,EAAA;YAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;IACnB,QAAA,IAAI;gBACF,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;gBAC1D,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;aAC1D;YAAC,OAAO,KAAK,EAAE;IACd,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC;IAC9B,YAAA,MAAM,KAAK,CAAC;aACb;IACD,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC9B;;IAGD,IAAA,MAAM,aAAa,GAAA;YACjB,IAAI,CAAC,WAAW,EAAE,CAAC;IACnB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;SACpC;;;QAKD,MAAM,KAAK,CAAC,GAAW,EAAA;YACrB,IAAI,CAAC,WAAW,EAAE,CAAC;IACnB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAE9C,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAErD,QAAA,IAAI,MAAe,CAAC;IACpB,QAAA,IAAI;;IAEF,YAAA,MAAM,UAAU,GAAgB,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9C,YAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;oBAC7B,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;oBAE3C,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC7C,gBAAA,IAAI,KAAK;IAAE,oBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;iBACxC;aACF;YAAC,OAAO,KAAK,EAAE;IACd,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC;IAC9B,YAAA,MAAM,KAAK,CAAC;aACb;IAED,QAAA,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAE5D,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACvC,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAI,MAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;IAClE,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,OAAO,CAAA,IAAA,EAAO,IAAI,CAAU,OAAA,EAAA,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC,CAAC;aACxE;IAED,QAAA,OAAO,MAAM,CAAC;SACf;;IAID;;;;;;;;;;;;;IAaG;IACH,IAAA,MAAM,WAAW,CACf,GAAW,EACX,KAAuB,EAAA;YAEvB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;IACnC,YAAA,MAAM,IAAI,aAAa,CAAC,6CAA6C,EAAE,eAAe,CAAC,CAAC;aACzF;YACD,MAAM,MAAM,GAAG,IAA6C,CAAC;;YAG7D,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ;IACpF,eAAA,CAAC,SAAS,IAAI,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5D,eAAA,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC;YAE9D,IAAI,UAAU,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;;gBAE9D,MAAM,OAAO,GAAI,KAA6C,CAAC,WAAW,EAAE,IAAI,KAAK,eAAe,CAAC;gBACrG,IAAI,CAAC,OAAO,EAAE;oBACZ,MAAM,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;oBACnD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzE,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE;wBACzC,KAAK,EAAE,MAAM,CAAC,IAAI;wBAClB,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC;wBACzE,KAAK,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,SAAS;wBACjE,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;qBACtB,EAAE,KAA+C,CAAC,CAAC;iBACrD;aACF;;YAGD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;IACzB,YAAA,KAAK,MAAM,GAAG,IAAI,MAAa,EAAE;IAC/B,gBAAA,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;iBAClB;gBACD,OAAO,MAAM,CAAC,MAAM,CAAC;aACtB;IACD,QAAA,OAAO,CAAC,CAAC;SACV;;IAGO,IAAA,uBAAuB,CAAC,MAA6C,EAAA;IAC3E,QAAA,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9D,QAAA,MAAM,KAAK,GAAG,CAAC,GAAW,KAAY;IACpC,YAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;IACvB,gBAAA,IAAI,GAAG,CAAC,UAAU,CAAC,CAAG,EAAA,CAAC,GAAG,CAAC;wBAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;iBAC7D;IACD,YAAA,OAAO,GAAG,CAAC;IACb,SAAC,CAAC;IACF,QAAA,MAAM,IAAI,GAAG,CAAC,CAAuC,KAA0C;gBAC7F,MAAM,GAAG,GAAyC,EAAE,CAAC;IACrD,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACtC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,EAAE;wBAC/B,GAAG,CAAC,CAAC,CAAC,GAAI,CAA4C,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;qBAClE;IAAM,qBAAA,IAAI,CAAC,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;IAC9D,oBAAA,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAyC,CAAC,CAAC;qBAC5D;yBAAM;wBACL,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;qBACnB;iBACF;IACD,YAAA,OAAO,GAAG,CAAC;IACb,SAAC,CAAC;YACF,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;SACjC;;;QAKD,MAAM,WAAW,CAAI,EAAkE,EAAA;YACrF,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACtD,QAAA,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACzD,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrD,YAAA,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;IACd,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC;IAC9B,YAAA,MAAM,KAAK,CAAC;aACb;SACF;;;QAKD,MAAM,WAAW,CAAC,SAAiB,EAAA;YACjC,IAAI,CAAC,WAAW,EAAE,CAAC;IACnB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;SAC1D;;IAGD,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,IAA+B,EAAA;YAClE,IAAI,CAAC,WAAW,EAAE,CAAC;IACnB,QAAA,IAAI;gBACF,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;aAClD;YAAC,OAAO,KAAK,EAAE;IACd,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC;IAC9B,YAAA,MAAM,KAAK,CAAC;aACb;SACF;;IAGD,IAAA,MAAM,SAAS,GAAA;YACb,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,MAAM,GAA8C,EAAE,CAAC;YAC7D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IAChD,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;IACxB,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aAC9D;IACD,QAAA,OAAO,MAAM,CAAC;SACf;;QAOD,SAAS,CAAC,SAAiB,EAAE,QAA0E,EAAA;IACrG,QAAA,MAAM,GAAG,GAAG,CAAU,OAAA,EAAA,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IACjE,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,QAAmC,CAAC,CAAC;IAClE,QAAA,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,QAAmC,CAAC,CAAC;SACnF;;QAGD,IAAI,CAAC,SAAiB,EAAE,KAAsD,EAAA;IAC5E,QAAA,MAAM,GAAG,GAAG,CAAU,OAAA,EAAA,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;SACrD;;;IAKD,IAAA,eAAe,CAAC,SAAiB,EAAA;YAC/B,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;IAC1B,QAAA,IAAI;IACF,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;aAChE;IAAC,QAAA,MAAM;;aAEP;SACF;;IAGO,IAAA,mBAAmB,CAAC,IAAe,EAAA;IACzC,QAAA,QAAQ,IAAI,CAAC,IAAI;IACf,YAAA,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IAChC,YAAA,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IACjC,YAAA,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IAChC,YAAA,KAAK,cAAc,CAAC;IACpB,YAAA,KAAK,YAAY,CAAC;IAClB,YAAA,KAAK,gBAAgB;oBACnB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,YAAA,KAAK,aAAa,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IACrC,YAAA,KAAK,cAAc,CAAC;IACpB,YAAA,KAAK,YAAY;oBACf,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,YAAA;IACE,gBAAA,OAAO,IAAI,CAAC;aACf;SACF;;QAOD,YAAY,CAAC,OAAe,EAAE,EAAuC,EAAA;YACnE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;SAClC;;QAGD,MAAM,SAAS,CAAC,aAAqB,EAAA;YACnC,IAAI,CAAC,WAAW,EAAE,CAAC;IACnB,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACtF,IAAI,OAAO,IAAI,aAAa,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;IACvD,gBAAA,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;IACf,gBAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;iBACzB;aACF;;;YAGD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE;IAC7C,YAAA,IAAI;IACF,gBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACtE;IAAC,YAAA,MAAM,sBAAsB;aAC/B;SACF;;IAID;;;IAGG;IACH,IAAA,MAAM,MAAM,GAAA;YACV,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;IAC5C,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACxB,OAAO;aACR;;IAED,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;SACzB;IAED;;;IAGG;IACH,IAAA,MAAM,QAAQ,GAAA;YACZ,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;IAC9C,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;aAC9B;iBAAM;gBACL,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IAChD,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;iBACnC;aACF;IACD,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;SACzB;;;QAKD,gBAAgB,GAAA;YACd,OAAO,IAAI,CAAC,aAAa,CAAC;SAC3B;;QAGD,EAAE,CAAC,IAAoC,EAAE,QAA+C,EAAA;YACtF,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SACvC;;;IAKD,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;IAChB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACrB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACrB;IACD,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IAC7B,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACxB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACpB;;QAGD,SAAS,GAAA;YACP,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;QAIO,YAAY,GAAA;IAClB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,WAAW,CAAC;YAEzD,QAAQ,IAAI;IACV,YAAA,KAAK,QAAQ;oBACX,OAAO,IAAI,YAAY,EAAE,CAAC;IAC5B,YAAA,KAAK,MAAM;IACT,gBAAA,OAAO,UAAU,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;IAC1E,YAAA,KAAK,MAAM;IACT,gBAAA,OAAO,IAAI,UAAU,CAAC,EAAE,cAAc,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,EAAE,CAAC,CAAC;IAC1F,YAAA,KAAK,QAAQ;IACX,gBAAA,OAAO,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;IACtC,YAAA;oBACE,MAAM,IAAI,aAAa,CAAC,CAAA,sBAAA,EAAyB,IAAI,CAAE,CAAA,EAAE,cAAc,CAAC,CAAC;aAC5E;SACF;QAEO,WAAW,GAAA;IACjB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;IACf,YAAA,MAAM,IAAI,aAAa,CAAC,uDAAuD,EAAE,cAAc,CAAC,CAAC;aAClG;SACF;;IAGO,IAAA,QAAQ,CAAC,KAAY,EAAA;IAC3B,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;IACvB,YAAA,IAAI;IAAE,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;iBAAE;IAAC,YAAA,MAAM,uBAAuB;aAClE;SACF;;IAGO,IAAA,MAAM,CAAC,GAAW,EAAE,GAAG,IAAe,EAAA;IAC5C,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;;IAEd,YAAA,OAAO,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,IAAI,CAAC,IAAI,CAAK,EAAA,EAAA,GAAG,CAAE,CAAA,EAAE,GAAG,IAAI,CAAC,CAAC;aAC9D;SACF;IACF;;IC/gBD;;;;;;IAMG;IAKH;IACA;IACA;IAEA,MAAM,iBAAiB,CAAA;IAAvB,IAAA,WAAA,GAAA;;IAEU,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,GAAG,EAAwB,CAAC;;IAG9C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;SA8F9C;IA5FC;;;;;;;;;;;;IAYG;QACH,MAAM,OAAO,CAAC,MAAsB,EAAA;IAClC,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;;YAGzB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;IAClC,YAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,YAAA,OAAO,QAAQ,CAAC;aACjB;;IAGD,QAAA,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,QAAA,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;YAEhB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;;IAG1B,QAAA,EAAyD,CAAC,UAAU,GAAG,YAAW;IACjF,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,SAAC,CAAC;IAEF,QAAA,OAAO,EAAE,CAAC;SACX;IAED;;IAEG;QACH,MAAM,OAAO,CAAC,MAAc,EAAA;IAC1B,QAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;gBACd,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,EAAE,EAAE;IACN,gBAAA,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACjB,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBACjC;IACD,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAC9B;iBAAM;gBACL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;aAClC;SACF;IAED;;IAEG;QACH,MAAM,UAAU,CAAC,MAAc,EAAA;YAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,EAAE,EAAE;IACN,YAAA,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;IACD,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC9B;IAED;;IAEG;IACH,IAAA,MAAM,QAAQ,GAAA;YACZ,KAAK,MAAM,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;IACrC,YAAA,IAAI;IAAE,gBAAA,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;iBAAE;IAAC,YAAA,MAAM,gBAAgB;aACjD;IACD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;SACvB;IAED;;IAEG;QACH,oBAAoB,GAAA;YAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;SAC5C;IAED;;IAEG;IACH,IAAA,WAAW,CAAC,MAAc,EAAA;YACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACvC;IACF,CAAA;IAED;IACA;IACA;IAEA,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAExC;IACA,MAAM,CAAC,GAAG,YAAkD,CAAC;IAC7D,CAAC,CAAC,OAAO,GAAG,CAAC,MAAsB,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC,CAAC,UAAU,GAAG,CAAC,MAAc,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC,CAAC,aAAa,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC,CAAC,oBAAoB,GAAG,MAAM,OAAO,CAAC,oBAAoB,EAAE;;IC/H7D;;;;;;;IAOG;IASH;IACA;IACA;IAEA;;;;;;;;;;;;;;;;;;IAkBG;IACH,eAAe,MAAM,CAAC,MAAsB,EAAA;IAC1C,IAAA,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,IAAA,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAChB,IAAA,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;IACA;IACA;AAEA,UAAM,GAAG,GAAG;QACV,OAAO;IACP,IAAA,OAAO,EAAE,OAAO;QAChB,MAAM;QACN,YAAY;IACZ,IAAA,QAAQ,EAAE,YAAY;MACtB;IAIF,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,IAAA,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;IAC1B,IAAA,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC;IACxB,CAAC;IAUD;AACO,UAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"metona-sqlark.js","sources":["../src/constants.ts","../src/query/where-matcher.ts","../src/engine/memory.ts","../src/engine/indexeddb.ts","../src/engine/opfs.ts","../src/table/schema.ts","../src/engine/aria/types.ts","../src/engine/aria/index/memtable.ts","../src/engine/aria/index/bloom.ts","../src/engine/aria/crc32.ts","../src/engine/aria/index/sstable_builder.ts","../src/engine/aria/index/sstable.ts","../src/engine/aria/index/merge_iterator.ts","../src/engine/aria/index/lsm.ts","../src/engine/aria/wal/log.ts","../src/engine/aria/wal/segmented_store.ts","../src/engine/aria/locks.ts","../src/engine/aria/wal/checkpoint.ts","../src/engine/aria/store/backend.ts","../src/engine/aria/store/opfs_backend.ts","../src/engine/aria/crypto.ts","../src/engine/aria/store/encrypted_backend.ts","../src/engine/aria/store/page_sstable_store.ts","../src/engine/aria/store/file_manager.ts","../src/engine/aria/transaction/mvcc.ts","../src/engine/aria/page/header.ts","../src/engine/aria/page/format.ts","../src/engine/aria/buffer/eviction.ts","../src/engine/aria/buffer/pool.ts","../src/engine/aria/compression/lz4.ts","../src/engine/aria/index.ts","../src/hybrid/index.ts","../src/query/builder.ts","../src/table/table.ts","../src/query/compiler.ts","../src/sql/tokens.ts","../src/sql/lexer.ts","../src/sql/parser.ts","../src/query/executor.ts","../src/transaction/index.ts","../src/plugin/index.ts","../src/core.ts","../src/connection-manager.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["IV_LENGTH"],"mappings":";;;;;;IAAA;;;IAGG;IAmBH;IACO,MAAM,WAAW,GAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IA2ExF;IACO,MAAM,WAAW,GAA+G,MAAM,CAAC,MAAM,CAAC;IACnJ,IAAA,IAAI,EAAE,eAAe;IACrB,IAAA,IAAI,EAAE,QAAiB;IACvB,IAAA,UAAU,EAAE,WAAoB;IAChC,IAAA,OAAO,EAAE,CAAC;QACV,eAAe,EAAE,CAAC;IAClB,IAAA,KAAK,EAAE,KAAK;IACZ,IAAA,YAAY,EAAE,KAAK;IACnB,IAAA,IAAI,EAAE,SAAS;IAChB,CAAA,CAAC,CAAC;IAwFH;IACA;IACA;IAEA;IACM,MAAO,aAAc,SAAQ,KAAK,CAAA;IACtC,IAAA,WAAA,CACE,OAAe,EACR,IAAY,EACZ,OAAiB,EAAA;YAExB,KAAK,CAAC,OAAO,CAAC,CAAC;YAHR,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;YACZ,IAAO,CAAA,OAAA,GAAP,OAAO,CAAU;IAGxB,QAAA,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;SAC7B;IACF,CAAA;IAED;IACA;IACA;AAEO,UAAM,OAAO,GAAG;;ICxNvB;;;;;;IAMG;IAIH;IACA;IACA;IAEA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE5C,SAAS,gBAAgB,CAAC,OAAe,EAAA;QACvC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,IAAA,IAAI,MAAM;IAAE,QAAA,OAAO,MAAM,CAAC;QAC1B,MAAM,OAAO,GAAG,OAAO;IACpB,SAAA,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACpC,SAAA,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;IACnB,SAAA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACtB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAI,CAAA,EAAA,OAAO,CAAG,CAAA,CAAA,EAAE,GAAG,CAAC,CAAC;IAC9C,IAAA,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9B,IAAA,OAAO,KAAK,CAAC;IACf,CAAC;IAED;IACA;IACA;IAEA;;;;;IAKG;IACG,SAAU,UAAU,CACxB,GAA4B,EAC5B,KAAqB,EACrB,UAA8B,EAAE,EAAA;IAEhC,IAAA,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;IAEtD,QAAA,IAAI,KAAK,KAAK,aAAa,EAAE;gBAC3B,IAAI,SAAS,KAAK,IAAI;IAAE,gBAAA,OAAO,KAAK,CAAC;gBACrC,SAAS;aACV;;IAED,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,IAAI,SAAS,KAAK,IAAI;IAAE,gBAAA,OAAO,KAAK,CAAC;gBACrC,SAAS;aACV;;IAED,QAAA,IAAI,KAAK,KAAK,MAAM,EAAE;gBACpB,MAAM,IAAI,GAAG,SAA6B,CAAC;IAC3C,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAAE,gBAAA,OAAO,KAAK,CAAC;gBACtE,SAAS;aACV;;IAED,QAAA,IAAI,KAAK,KAAK,KAAK,EAAE;gBACnB,MAAM,IAAI,GAAG,SAA6B,CAAC;IAC3C,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAAE,gBAAA,OAAO,KAAK,CAAC;gBACrE,SAAS;aACV;;IAED,QAAA,IAAI,KAAK,KAAK,MAAM,EAAE;IACpB,YAAA,IAAI,UAAU,CAAC,GAAG,EAAE,SAA2B,EAAE,OAAO,CAAC;IAAE,gBAAA,OAAO,KAAK,CAAC;gBACxE,SAAS;aACV;IACD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC;IAAE,YAAA,OAAO,KAAK,CAAC;SACpE;IACD,IAAA,OAAO,IAAI,CAAC;IACd,CAAC;IAED;IACA;IACA;IAEA,SAAS,UAAU,CACjB,KAAc,EACd,SAAkB,EAClB,GAA4B,EAC5B,OAA2B,EAAA;;IAG3B,IAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,MAAM,IAAK,SAAqC,EAAE;IAC3G,QAAA,MAAM,IAAI,GAAI,SAAqC,CAAC,IAAwB,CAAC;IAC7E,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;SAC3D;;IAED,IAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,IAAK,SAAqC,EAAE;IAC1G,QAAA,MAAM,IAAI,GAAI,SAAqC,CAAC,GAAuB,CAAC;IAC5E,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;SAC1D;;IAED,IAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,MAAM,IAAK,SAAqC,EAAE;IAC3G,QAAA,OAAO,CAAC,UAAU,CAAC,KAAK,EAAG,SAAqC,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;SACtF;;IAED,IAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACnF,OAAO,KAAK,KAAK,SAAS,CAAC;SAC5B;QAED,MAAM,GAAG,GAAG,SAAoC,CAAC;;IAGjD,IAAA,IAAI,OAAO,CAAC,IAAI,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAClE,OAAO,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,IAAc,CAAC,CAAC;SAC1C;;IAGD,IAAA,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC/C,IAAI,aAAa,GAAG,OAAO,CAAC;;IAG5B,QAAA,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,MAAM,IAAK,OAAmC,EAAE;IACrH,YAAA,aAAa,GAAG,GAAG,CAAE,OAAmC,CAAC,IAAc,CAAC,CAAC;aAC1E;YAED,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,aAAa,CAAC;IAAE,YAAA,OAAO,KAAK,CAAC;SAC5D;IACD,IAAA,OAAO,IAAI,CAAC;IACd,CAAC;IAED;IACA;IACA;IAEA,SAAS,aAAa,CAAC,KAAc,EAAE,EAAU,EAAE,OAAgB,EAAA;QACjE,QAAQ,EAAE;IACR,QAAA,KAAK,KAAK,EAAE,OAAO,KAAK,KAAK,OAAO,CAAC;IACrC,QAAA,KAAK,KAAK,EAAE,OAAO,KAAK,KAAK,OAAO,CAAC;IACrC,QAAA,KAAK,KAAK,EAAE,OAAQ,KAAgB,GAAI,OAAkB,CAAC;IAC3D,QAAA,KAAK,MAAM,EAAE,OAAQ,KAAgB,IAAK,OAAkB,CAAC;IAC7D,QAAA,KAAK,KAAK,EAAE,OAAQ,KAAgB,GAAI,OAAkB,CAAC;IAC3D,QAAA,KAAK,MAAM,EAAE,OAAQ,KAAgB,IAAK,OAAkB,CAAC;IAC7D,QAAA,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrE,QAAA,KAAK,MAAM,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvE,QAAA,KAAK,OAAO,EAAE,OAAO,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,QAAA,SAAS,OAAO,IAAI,CAAC;SACtB;IACH,CAAC;IAED;IACA;IACA;IAEgB,SAAA,YAAY,CAAC,IAA+B,EAAE,OAAkB,EAAA;IAC9E,IAAA,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YAC7B,KAAK,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE;IAClD,YAAA,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;IAC5D,YAAA,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;;gBAE5D,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,EAAE;oBAC7B,IAAI,KAAK,IAAI,KAAK;wBAAE,SAAS;IAC7B,gBAAA,MAAM,GAAG,GAAG,KAAK,KAAK,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpE,gBAAA,OAAO,GAAG,CAAC;iBACZ;IACD,YAAA,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC1C,IAAI,GAAG,KAAK,CAAC;IAAE,gBAAA,OAAO,SAAS,KAAK,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;aACzD;IACD,QAAA,OAAO,CAAC,CAAC;IACX,KAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,OAAO,CAAC,CAAU,EAAE,CAAU,EAAA;QACrC,IAAI,CAAC,KAAK,CAAC;IAAE,QAAA,OAAO,CAAC,CAAC;IACtB,IAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;IAAE,QAAA,OAAO,CAAC,CAAC;IAC5C,IAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC,CAAC;QAC7C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;IAAE,QAAA,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC9E,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACjE,IAAA,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED;IACA;IACA;IAEgB,SAAA,cAAc,CAAC,GAA4B,EAAE,OAAiB,EAAA;QAC5E,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,IAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;IACzB,QAAA,IAAI,GAAG,IAAI,GAAG,EAAE;gBACd,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;aAC3B;iBAAM;gBACL,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAClC,gBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAI,CAAA,EAAA,GAAG,CAAE,CAAA,CAAC,IAAI,GAAG,KAAK,GAAG,EAAE;wBAC1C,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;wBAC1B,MAAM;qBACP;iBACF;aACF;SACF;IACD,IAAA,OAAO,SAAS,CAAC;IACnB;;ICnMA;;;IAGG;UAOU,YAAY,CAAA;IAAzB,IAAA,WAAA,GAAA;YACW,IAAI,CAAA,IAAA,GAAG,QAAQ,CAAC;IAEjB,QAAA,IAAA,CAAA,MAAM,GAAsD,IAAI,GAAG,EAAE,CAAC;IACtE,QAAA,IAAA,CAAA,OAAO,GAA6B,IAAI,GAAG,EAAE,CAAC;IAC9C,QAAA,IAAA,CAAA,OAAO,GAAwD,IAAI,GAAG,EAAE,CAAC;YACzE,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;;IAEf,QAAA,IAAA,CAAA,SAAS,GAAwB,IAAI,GAAG,EAAE,CAAC;;YAG3C,IAAQ,CAAA,QAAA,GAIL,IAAI,CAAC;SAmhBjB;;IAhhBC,IAAA,MAAM,IAAI,CAAC,OAAe,EAAE,QAAgB,EAAA;IAC1C,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;;gBAEf,OAAO;aACR;IACD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;IACD,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAAC,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAAC,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAAC,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAAC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SAC9G;IACD,IAAA,MAAM,KAAc,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;;;IAKzC,IAAA,MAAM,MAAM,GAAoB,EAAA,OAAO,EAAE;;IAGzC,IAAA,MAAM,QAAQ,GAAA;IACZ,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;IACxB,YAAA,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAC5B;IACD,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;SACxB;QAED,MAAM,OAAO,CAAC,GAAW,EAAA;YACvB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;SACxC;IAED,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,KAAa,EAAA;YACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SAChC;;QAGD,MAAM,WAAW,CAAC,MAAmB,EAAA;YACnC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,MAAM,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,cAAc,CAAC,CAAC;;;IAGpH,QAAA,MAAM,IAAI,GAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC7D,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC9D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;aACvC;YACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IACxC,QAAA,MAAM,YAAY,GAAG,IAAI,GAAG,EAAqC,CAAC;IAClE,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;IAC5D,YAAA,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM;oBAAE,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;aACzE;YACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;SAC7C;QAED,MAAM,SAAS,CAAC,SAAiB,EAAA;IAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAAC,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAAC,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SAC/F;IAED,IAAA,MAAM,QAAQ,CAAC,SAAiB,EAAA,EAAsB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE;IAC3F,IAAA,MAAM,aAAa,GAAA,EAAwB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;IACpF,IAAA,MAAM,cAAc,CAAC,SAAiB,EAAiC,EAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,EAAE;IAEpH;;;IAGG;IACH,IAAA,MAAM,UAAU,CACd,SAAiB,EACjB,MAAsB,EACtB,MAA2D,EAAA;IAE3D,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC5C,QAAA,IAAI,MAAM,KAAK,KAAK,EAAE;gBACpB,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IAC/B,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,SAAS,CAAA,CAAA,CAAG,EAAE,eAAe,CAAC,CAAC;iBAC5G;gBACD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;gBACrC,OAAO;aACR;YACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IAChC,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,SAAS,CAAA,CAAA,CAAG,EAAE,kBAAkB,CAAC,CAAC;aAC/G;YACD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;;YAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC1C,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;IAChC,YAAA,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG;IAAE,gBAAA,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACjD;SACF;;IAGD,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,IAA+B,EAAA;IAC7D,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAa,EAAE,CAAC;IAEzB,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACnD,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,YAAA,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;oBAAE,MAAM,IAAI,aAAa,CAAC,CAA0B,uBAAA,EAAA,OAAO,CAAe,YAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,eAAe,CAAC,CAAC;IAC/H,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC3C,YAAA,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACrD,YAAA,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACnB;IACD,QAAA,OAAO,GAAG,CAAC;SACZ;IAED,IAAA,MAAM,IAAI,CAAC,SAAiB,EAAE,KAAgB,EAAA;IAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC1C,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAE3D,QAAA,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;IACtD,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC,CAAC,CAAC;aAClE;IACD,QAAA,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7C,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;aAChD;IACD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;YAC5C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;YAChD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACzE,YAAA,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,OAAQ,CAAC,CAAC,CAAC;aACrE;IACD,QAAA,OAAO,OAAO,CAAC;SAChB;;IAGD,IAAA,MAAM,UAAU,CAAC,SAAiB,EAAE,KAAgB,EAAE,KAA6C,EAAA;IACjG,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxE,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC;IACtC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;IACnF,cAAE,CAAC,GAA4B,KAAK,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,OAAQ,CAAC;kBACrE,IAAI,CAAC;YAET,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;gBAChC,IAAI,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC;oBAAE,SAAS;IACzD,YAAA,IAAI,OAAO,GAAG,MAAM,EAAE;IAAE,gBAAA,OAAO,EAAE,CAAC;oBAAC,SAAS;iBAAE;IAC9C,YAAA,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACpC,YAAA,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,IAAI,KAAK;oBAAE,MAAM;aAC3B;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAE,OAAgC,EAAA;IAChF,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,KAAK,GAAG,CAAC,CAAC;;IAEd,QAAA,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE;gBAClC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;;oBAEzF,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC5C,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IACvC,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBACtC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;;IAErC,gBAAA,IAAI,KAAK,KAAK,EAAE,EAAE;wBAChB,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;qBACrD;IACD,gBAAA,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjB,gBAAA,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBAC1B,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9C,gBAAA,KAAK,EAAE,CAAC;iBACT;aACF;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IAED;;;;IAIG;IACK,IAAA,MAAM,kBAAkB,CAAC,SAAiB,EAAE,KAAa,EAAE,KAAa,EAAA;;YAE9E,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;gBACpD,IAAI,YAAY,KAAK,SAAS;oBAAE,SAAS;IACzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;wBAAE,SAAS;IACrD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,QAAQ,KAAK,SAAS;wBAAE,SAAS;oBACrC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACnD,gBAAA,IAAI,CAAC,YAAY;wBAAE,SAAS;oBAC5B,KAAK,MAAM,GAAG,MAAM,CAAC,IAAI,YAAY,EAAE;IACrC,oBAAA,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;IACvE,wBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,eAAA,EAAkB,SAAS,CAAU,OAAA,EAAA,KAAK,CAAmB,gBAAA,EAAA,OAAO,SAAS,YAAY,CAAA,oBAAA,CAAsB,EAC/G,uBAAuB,CACxB,CAAC;yBACH;qBACF;iBACF;aACF;;YAED,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;gBACpD,IAAI,YAAY,KAAK,SAAS;oBAAE,SAAS;IACzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;wBAAE,SAAS;IACrD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,QAAQ,KAAK,SAAS;wBAAE,SAAS;oBACrC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACnD,gBAAA,IAAI,CAAC,YAAY;wBAAE,SAAS;oBAC5B,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU;wBAAE,SAAS;oBAC9E,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAY,EAAE;wBAC1C,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;4BAAE,SAAS;wBAChD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACrD,oBAAA,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC;wBAC/D,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;qBACjD;iBACF;aACF;SACF;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAA;IAC9C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC1C,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE;gBAC7B,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;;oBAEzF,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5C,gBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBACnB;aACF;;YAED,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,QAAA,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE;gBACzB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1B,YAAA,IAAI,GAAG;IAAE,gBAAA,YAAY,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;aACvE;YACD,KAAK,MAAM,EAAE,IAAI,QAAQ;IAAE,YAAA,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5C,QAAA,OAAO,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC;SACvC;IAED,IAAA,MAAM,KAAK,CAAC,SAAiB,EAAE,KAAiB,EAAA;IAC9C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC1C,QAAA,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC;YAC9E,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;IAAE,YAAA,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;IAAE,gBAAA,MAAM,EAAE,CAAC;aAAE;IACjF,QAAA,OAAO,MAAM,CAAC;SACf;QAED,MAAM,KAAK,CAAC,SAAiB,EAAA;IAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,KAAK,EAAE,CAAC;YACpC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,QAAA,IAAI,YAAY;IAAE,YAAA,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,MAAM,EAAE;oBAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;SAClF;;IAID,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAgB,EAAA;IACnE,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,kBAAkB,CAAC,CAAC;IACtH,QAAA,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM;IAAE,YAAA,OAAO;IAC1C,QAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,QAAA,IAAI,MAAM;IAAE,YAAA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YAEjC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAClD,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE;IAC7B,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;IACzC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;wBAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;oBACzD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBAC9B;aACF;SACF;IAED,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,UAAmB,EAAA;IACpE,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,kBAAkB,CAAC,CAAC;;YAEtH,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBACnC,MAAM,IAAI,aAAa,CAAC,CAAoB,iBAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;aAClH;IACD,QAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,QAAA,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;YACtB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,QAAA,IAAI,YAAY;IAAE,YAAA,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC/C;;IAID,IAAA,MAAM,gBAAgB,GAAA;YACpB,IAAI,IAAI,CAAC,QAAQ;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,iCAAiC,EAAE,WAAW,CAAC,CAAC;YAC3F,IAAI,CAAC,QAAQ,GAAG;gBACd,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;IACzC,YAAA,OAAO,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC9B,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7C,CAAC;SACH;IAED,IAAA,MAAM,iBAAiB,GAAA;YACrB,IAAI,CAAC,IAAI,CAAC,QAAQ;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;IAChF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;IAED,IAAA,MAAM,mBAAmB,GAAA;YACvB,IAAI,CAAC,IAAI,CAAC,QAAQ;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;YAChF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;;IAIO,IAAA,eAAe,CAAC,MAAyD,EAAA;IAC/E,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgD,CAAC;YACtE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE;IAC3B,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmC,CAAC;IAC9D,YAAA,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;oBAAE,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACxD,YAAA,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;aAC1B;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IAEO,IAAA,gBAAgB,CAAC,MAA2D,EAAA;IAClF,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkD,CAAC;YACxE,KAAK,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,MAAM,EAAE;IAC9C,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqC,CAAC;gBAChE,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,YAAY,EAAE;IAC1C,gBAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IACjD,gBAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ;wBAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,gBAAA,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;iBAC/B;IACD,YAAA,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;aAClC;IACD,QAAA,OAAO,KAAK,CAAC;SACd;;IAGO,IAAA,WAAW,CAAC,SAAiB,EAAA;YACnC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAA,OAAA,EAAU,SAAS,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;SACpH;IAEO,IAAA,aAAa,CAAC,MAAmB,EAAA;IACvC,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAAE,IAAI,GAAG,CAAC,UAAU;IAAE,gBAAA,OAAO,IAAI,CAAC;aAAE;YAC9F,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SACvC;QAEO,WAAW,CAAC,MAAmB,EAAE,GAA4B,EAAA;YACnE,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IAC9D,YAAA,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;gBACzB,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;IAAE,gBAAA,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;IAChF,YAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;IAC9D,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,OAAO,CAAA,wBAAA,EAA2B,MAAM,CAAC,IAAI,CAAA,CAAA,CAAG,EAAE,kBAAkB,CAAC,CAAC;iBAC1G;IACD,YAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;oBAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACvF,IAAI,KAAK,KAAK,SAAS;IAAE,gBAAA,SAAS,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;aACrD;IACD,QAAA,OAAO,SAAS,CAAC;SAClB;IAEO,IAAA,SAAS,CAAC,OAAe,EAAE,IAAY,EAAE,KAAc,EAAA;IAC7D,QAAA,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC;YAC5B,QAAQ,IAAI;IACV,YAAA,KAAK,QAAQ;oBAAE,IAAI,MAAM,KAAK,QAAQ;wBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,OAAO,CAAyB,sBAAA,EAAA,MAAM,CAAE,CAAA,EAAE,YAAY,CAAC,CAAC;oBAAC,MAAM;IAC1I,YAAA,KAAK,QAAQ;oBAAE,IAAI,MAAM,KAAK,QAAQ;wBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,OAAO,CAAyB,sBAAA,EAAA,MAAM,CAAE,CAAA,EAAE,YAAY,CAAC,CAAC;oBAAC,MAAM;IAC1I,YAAA,KAAK,SAAS;oBAAE,IAAI,MAAM,KAAK,SAAS;wBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,OAAO,CAA0B,uBAAA,EAAA,MAAM,CAAE,CAAA,EAAE,YAAY,CAAC,CAAC;oBAAC,MAAM;IAC7I,YAAA,KAAK,MAAM;IAAE,gBAAA,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC;wBAAE,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,OAAO,CAAsB,oBAAA,CAAA,EAAE,YAAY,CAAC,CAAC;oBAAC,MAAM;IACnK,YAAA,KAAK,MAAM;oBAAE,IAAI,MAAM,KAAK,QAAQ;wBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,OAAO,CAA+B,4BAAA,EAAA,MAAM,CAAE,CAAA,EAAE,YAAY,CAAC,CAAC;oBAAC,MAAM;aAC/I;SACF;;QAGO,eAAe,CAAC,MAAmB,EAAE,GAA4B,EAAA;IACvE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnD,QAAA,IAAI,CAAC,YAAY;gBAAE,OAAO;IAC1B,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IAC9D,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI;oBAAE,SAAS;gBACpF,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3C,YAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE;IAC1C,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,uCAAA,EAA0C,OAAO,CAAA,YAAA,EAAe,MAAM,CAAC,IAAI,CAAA,CAAA,CAAG,EAAE,kBAAkB,CAAC,CAAC;iBAC7H;aACF;SACF;;IAGO,IAAA,cAAc,CACpB,SAAiB,EAAE,KAA2C,EAAE,KAAgB,EAAA;YAEhF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACrE,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;;IAE1D,YAAA,IAAI,WAAoB,CAAC;gBACzB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;oBACvD,WAAW,GAAG,SAAS,CAAC;iBACzB;IAAM,iBAAA,IAAI,KAAK,IAAK,SAAqC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAoC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;IAC5H,gBAAA,WAAW,GAAI,SAAqC,CAAC,GAAG,CAAC;iBAC1D;qBAAM;oBACL,SAAS;iBACV;gBACD,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,QAAQ,EAAE;oBACZ,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;oBACtC,IAAI,GAAG,EAAE;wBACP,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,oBAAA,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;4BAAE,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAAC,wBAAA,IAAI,CAAC;IAAE,4BAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;yBAAE;IACzE,oBAAA,OAAO,MAAM,CAAC;qBACf;IACD,gBAAA,OAAO,EAAE,CAAC;iBACX;aACF;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;SACnC;;IAGO,IAAA,aAAa,CAAC,SAAiB,EAAE,GAA4B,EAAE,EAAU,EAAA;YAC/E,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,QAAA,IAAI,CAAC,YAAY;gBAAE,OAAO;YAC1B,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,YAAY,EAAE;IAC9C,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;IACzC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;wBAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;oBACzD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBAC9B;aACF;SACF;;IAGO,IAAA,kBAAkB,CAAC,SAAiB,EAAE,GAA4B,EAAE,EAAU,EAAA;YACpF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,QAAA,IAAI,CAAC,YAAY;gBAAE,OAAO;YAC1B,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,YAAY,EAAE;IAC9C,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;oBACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAChC,IAAI,GAAG,EAAE;IACP,oBAAA,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACf,oBAAA,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;IAAE,wBAAA,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;qBAC5C;iBACF;aACF;SACF;;IAID;;;IAGG;IACK,IAAA,MAAM,aAAa,CAAC,SAAiB,EAAE,OAAe,EAAE,IAA6B,EAAA;YAC3F,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;gBACpD,IAAI,YAAY,KAAK,SAAS;oBAAE,SAAS;IAEzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;wBAAE,SAAS;IAErD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,QAAQ,KAAK,SAAS;wBAAE,SAAS;oBAErC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACnD,gBAAA,IAAI,CAAC,YAAY;wBAAE,SAAS;;oBAG5B,MAAM,QAAQ,GAAa,EAAE,CAAC;oBAC9B,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAY,EAAE;wBAC1C,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,OAAO,EAAE;IACvC,wBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBACtB;qBACF;;IAGD,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;IACzD,oBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,oBAAA,EAAuB,SAAS,CAAA,gBAAA,EAAmB,OAAO,CAAA,MAAA,EAAS,YAAY,CAAA,oBAAA,CAAsB,EACrG,uBAAuB,CACxB,CAAC;qBACH;IAED,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE;;IAEjC,oBAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;4BAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;4BACvC,IAAI,MAAM,EAAE;;gCAEV,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACrD,4BAAA,YAAY,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;6BACvE;IACD,wBAAA,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,wBAAA,YAAY,EAAE,CAAC;yBAChB;qBACF;IAAM,qBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;IACzC,oBAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;4BAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;4BACvC,IAAI,MAAM,EAAE;;IAEV,4BAAA,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;IAC7D,gCAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;oCACzD,IAAI,GAAG,EAAE;IACP,oCAAA,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;qCACzC;iCACF;IACD,4BAAA,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;6BACxB;yBACF;qBACF;iBACF;aACF;IAED,QAAA,OAAO,YAAY,CAAC;SACrB;IACF;;IC5iBD;;;;;IAKG;UAQU,eAAe,CAAA;IAA5B,IAAA,WAAA,GAAA;YACW,IAAI,CAAA,IAAA,GAAG,WAAW,CAAC;YAEpB,IAAE,CAAA,EAAA,GAAuB,IAAI,CAAC;YAC9B,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;YACZ,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;IACZ,QAAA,IAAA,CAAA,WAAW,GAAiB,IAAI,YAAY,EAAE,CAAC;;YAG/C,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;SAsyB1B;IApyBC,IAAA,MAAM,IAAI,CAAC,MAAc,EAAE,OAAe,EAAA;;IAExC,QAAA,MAAM,iBAAiB,GAAG,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjE,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,QAAA,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC;YACjC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;;IAGvD,QAAA,IAAI,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;YACtE,IAAI,CAAC,yBAAyB,EAAE,CAAC;;;IAIjC,QAAA,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAE/B,QAAA,IAAI;;IAEF,YAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;aACnC;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,aAAa,CAAC,CAAiC,8BAAA,EAAA,MAAM,CAAG,CAAA,CAAA,EAAE,0BAA0B,EAAE,KAAK,CAAC,CAAC;aACxG;SACF;;QAGO,yBAAyB,GAAA;YAC/B,IAAI,CAAC,IAAI,CAAC,EAAE;gBAAE,OAAO;IACrB,QAAA,IAAI,CAAC,EAAE,CAAC,eAAe,GAAG,MAAK;IAC7B,YAAA,IAAI,IAAI,CAAC,EAAE,EAAE;IACX,gBAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAChB,gBAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;;oBAEf,OAAO,CAAC,IAAI,CAAC,CAAA,0BAAA,EAA6B,IAAI,CAAC,MAAM,CAAmE,iEAAA,CAAA,CAAC,CAAC;iBAC3H;IACH,SAAC,CAAC;SACH;IAED;;;;;IAKG;IACK,IAAA,MAAM,qBAAqB,CAAC,MAAc,EAAE,gBAAwB,EAAA;YAC1E,MAAM,eAAe,GAAG,EAAE,CAAC;YAC3B,IAAI,gBAAgB,GAAG,gBAAgB,CAAC;IACxC,QAAA,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,eAAe,EAAE,OAAO,EAAE,EAAE;IAC1D,YAAA,IAAI;IACF,gBAAA,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC;iBAC9E;gBAAC,OAAO,KAAK,EAAE;oBACd,MAAM,GAAG,GAAG,KAA0B,CAAC;oBACvC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE;wBACtC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;wBAChE,IAAI,cAAc,IAAI,CAAC,IAAI,cAAc,KAAK,gBAAgB,EAAE;4BAC9D,gBAAgB,GAAG,cAAc,CAAC;IAClC,wBAAA,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC;4BAC9B,SAAS;yBACV;wBACD,MAAM,IAAI,aAAa,CACrB,CAA6B,0BAAA,EAAA,MAAM,CAAqB,mBAAA,CAAA,EACxD,mBAAmB,EACnB,KAAK,CACN,CAAC;qBACH;oBACD,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE;;wBAEtC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;wBACxE,SAAS;qBACV;oBACD,MAAM,IAAI,aAAa,CAAC,CAA6B,0BAAA,EAAA,MAAM,CAAG,CAAA,CAAA,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;iBAC1F;aACF;YACD,MAAM,IAAI,aAAa,CAAC,CAAA,WAAA,EAAc,MAAM,CAAc,YAAA,CAAA,EAAE,aAAa,CAAC,CAAC;SAC5E;IAED;;;;IAIG;IACK,IAAA,WAAW,CAAC,MAAc,EAAE,OAAe,EAAE,SAAiB,EAAA;YACpE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBACrC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAChD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,YAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAK;IAC9B,gBAAA,IAAI,OAAO;wBAAE,OAAO;oBACpB,OAAO,GAAG,IAAI,CAAC;;IAEf,gBAAA,MAAM,YAAY,GAAG,OAAO,YAAY,KAAK,WAAW;IACtD,sBAAE,IAAI,YAAY,CAAC,2BAA2B,EAAE,cAAc,CAAC;IAC/D,sBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;oBACpF,MAAM,CAAC,YAAY,CAAC,CAAC;iBACtB,EAAE,SAAS,CAAC,CAAC;IACd,YAAA,OAAO,CAAC,SAAS,GAAG,MAAK;oBACvB,IAAI,OAAO,EAAE;;IAEX,oBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;wBACvB,OAAO;qBACR;oBACD,OAAO,GAAG,IAAI,CAAC;oBACf,YAAY,CAAC,OAAO,CAAC,CAAC;IACtB,gBAAA,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,OAAO,GAAG,MAAK;IACrB,gBAAA,IAAI,OAAO;wBAAE,OAAO;oBACpB,OAAO,GAAG,IAAI,CAAC;oBACf,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;IACrE,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,SAAS,GAAG,MAAK;;IAEzB,aAAC,CAAC;IACJ,SAAC,CAAC,CAAC;SACJ;;IAGO,IAAA,qBAAqB,CAAC,MAAc,EAAA;YAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBACrC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,YAAA,OAAO,CAAC,SAAS,GAAG,MAAK;IACvB,gBAAA,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7C,gBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBACvB,OAAO,CAAC,aAAa,CAAC,CAAC;IACzB,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,OAAO,GAAG,MAAK;oBACrB,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;IAC5E,aAAC,CAAC;IACJ,SAAC,CAAC,CAAC;SACJ;IAED;;;;IAIG;IACK,IAAA,MAAM,iBAAiB,GAAA;YAC7B,IAAI,CAAC,IAAI,CAAC,EAAE;gBAAE,OAAO;YACrB,IAAI,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBAAE,OAAO;YACjE,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;IACvC,QAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAChB,QAAA,IAAI,CAAC,EAAE,GAAG,MAAM,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,MAAM,KAAI;IAC3D,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,YAAA,OAAO,CAAC,eAAe,GAAG,MAAK;IAC7B,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;oBAC3B,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;wBACrD,GAAG,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;qBAC/D;IACH,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,SAAS,GAAG,MAAK;IACvB,gBAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;oBACzB,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACjC,gBAAA,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,aAAC,CAAC;gBACF,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAC5B,IAAI,aAAa,CAAC,+BAA+B,EAAE,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC,CACvF,CAAC;IACJ,SAAC,CAAC,CAAC;SACJ;IAED;;;;IAIG;IACK,IAAA,MAAM,oBAAoB,GAAA;IAChC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;;YAG3B,IAAI,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;gBACnD,MAAM,OAAO,GAAuC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACxF,gBAAA,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC;IAClG,gBAAA,GAAG,CAAC,SAAS,GAAG,MAAM,OAAO,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,EAAwC,CAAC;IACxF,gBAAA,GAAG,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxC,aAAC,CAAC,CAAC;IACH,YAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;IACzB,gBAAA,IAAI;wBACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAgB,CAAC;IACrD,oBAAA,IAAI,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;4BACzD,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;yBAC5C;qBACF;IAAC,gBAAA,MAAM;;qBAEP;iBACF;aACF;;YAGD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAC,CAAC;IAC1F,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;;gBAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAClE,YAAA,IAAI,QAAQ;oBAAE,SAAS;gBAEvB,MAAM,OAAO,GAAqD,EAAE,CAAC;gBACrE,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBACjD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;;IAGxC,YAAA,MAAM,EAAE,GAAG,KAAK,CAAC,OAAiB,CAAC;IACnC,YAAA,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;IAGnD,YAAA,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;IAClD,gBAAA,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;wBAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IACjB,wBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;yBAChD;qBACF;iBACF;;gBAGD,MAAM,IAAI,GAA8B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IAC5E,gBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IAC3B,gBAAA,GAAG,CAAC,SAAS,GAAG,MAAM,OAAO,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,EAA+B,CAAC;IAC/E,gBAAA,GAAG,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxC,aAAC,CAAC,CAAC;IACH,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;IACnB,gBAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;IAClD,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IACjB,wBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;yBAChD;qBACF;iBACF;IAED,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;aAClE;SACF;IAED,IAAA,MAAM,KAAK,GAAA;;IAET,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;IACjB,YAAA,IAAI;IACF,gBAAA,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;iBAClC;IAAC,YAAA,MAAM,mBAAmB;aAC5B;IACD,QAAA,IAAI,IAAI,CAAC,EAAE,EAAE;gBACX,IAAI,CAAC,EAAE,CAAC,eAAe,GAAG,IAAI,CAAC;IAC/B,YAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAChB,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;aAChB;IACD,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;SAChC;IAED;;;IAGG;IACH,IAAA,MAAM,MAAM,GAAA;YACV,IAAI,CAAC,IAAI,CAAC,EAAE;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAC;IAC5E,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC/B,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,QAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;SACnC;IAED;;;IAGG;IACH,IAAA,MAAM,QAAQ,GAAA;IACZ,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;;YAE3B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;IAC1D,QAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;gBAC7B,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACxC;;IAED,QAAA,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;YAClC,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;IAC1C,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,YAAA,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,KAAI;IAClC,gBAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA2B,CAAC,MAAM,CAAC;oBACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAC,CAAC;IACzF,gBAAA,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;IAC3B,oBAAA,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;qBAC7B;oBACD,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;wBACrD,GAAG,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;qBAC/D;yBAAM;;IAEL,oBAAA,MAAM,EAAE,GAAI,KAAK,CAAC,MAA2B,CAAC,WAAY,CAAC;wBAC3D,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;qBAC3C;IACH,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,SAAS,GAAG,MAAK;IACvB,gBAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;oBACzB,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACjC,gBAAA,OAAO,EAAE,CAAC;IACZ,aAAC,CAAC;gBACF,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,0BAA0B,EAAE,iBAAiB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChH,OAAO,CAAC,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,CAAc,WAAA,EAAA,IAAI,CAAC,MAAM,CAAA,YAAA,CAAc,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9G,SAAC,CAAC,CAAC;SACJ;;QAID,MAAM,OAAO,CAAC,GAAW,EAAA;IACvB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;YAClE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBACrC,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,UAAU,CAAC;qBACtD,WAAW,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAU,OAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAC;IACvD,YAAA,GAAG,CAAC,SAAS,GAAG,MAAK;IACnB,gBAAA,MAAM,GAAG,GAAG,GAAG,CAAC,MAA0C,CAAC;oBAC3D,OAAO,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACrE,aAAC,CAAC;IACF,YAAA,GAAG,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxC,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,KAAa,EAAA;IACtC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBAAE,OAAO;YAC7D,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;gBAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;gBAC1D,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAU,OAAA,EAAA,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAChF,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;gBAChC,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,2BAA2B,GAAG,CAAA,CAAA,CAAG,EAAE,gBAAgB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9G,SAAC,CAAC,CAAC;SACJ;QAED,MAAM,GAAA,EAAc,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;;QAG9C,MAAM,WAAW,CAAC,MAAmB,EAAA;YACnC,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,QAAQ;IAAE,YAAA,OAAO;IAC1B,QAAA,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;SACnC;QAED,MAAM,SAAS,CAAC,SAAiB,EAAA;YAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC5C,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;IAC1B,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;SACpC;IAED,IAAA,MAAM,QAAQ,CAAC,SAAiB,EAAsB,EAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE;IACpH,IAAA,MAAM,aAAa,GAAA,EAAwB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE;IACjG,IAAA,MAAM,cAAc,CAAC,SAAiB,EAAA,EAAiC,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE;IAE3H;;;IAGG;IACH,IAAA,MAAM,UAAU,CACd,SAAiB,EACjB,MAAsB,EACtB,MAA2D,EAAA;IAE3D,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7D,IAAI,IAAI,CAAC,QAAQ;IAAE,YAAA,OAAO;YAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAChE,IAAI,MAAM,EAAE;IACV,YAAA,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;aAClC;IACD,QAAA,IAAI,MAAM,KAAK,MAAM,EAAE;;IAErB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBACjE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;IACjC,gBAAA,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE;IACtB,oBAAA,MAAM,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;IACxB,oBAAA,OAAQ,IAAgC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,oBAAA,OAAO,IAAI,CAAC;qBACb;IACD,gBAAA,OAAO,GAAG,CAAC;IACb,aAAC,CAAC,CAAC;IACH,YAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;oBACxB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;wBAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;wBAClD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,oBAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;IAC3B,wBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;yBAChB;wBACD,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;wBAChC,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,sBAAsB,SAAS,CAAA,mBAAA,CAAqB,EAAE,cAAc,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/H,iBAAC,CAAC,CAAC;iBACJ;aACF;SACF;;IAGD,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,IAA+B,EAAA;IAC7D,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC3D,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,GAAG,CAAC;YAC9B,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACtC,QAAA,OAAO,GAAG,CAAC;SACZ;IAED,IAAA,MAAM,IAAI,CAAC,SAAiB,EAAE,KAAgB,EAAA;;YAE5C,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SACvC;;IAGD,IAAA,MAAM,UAAU,CAAC,SAAiB,EAAE,KAAgB,EAAE,KAA6C,EAAA;IACjG,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;IACjB,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;aAC7D;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAClH,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,KAAK,CAAC,GAAG,CAAC,CAAC;IACX,YAAA,KAAK,EAAE,CAAC;aACT;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAE,OAAgC,EAAA;IAChF,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YACvE,IAAI,IAAI,CAAC,QAAQ;IAAE,YAAA,OAAO,KAAK,CAAC;YAChC,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAChD,QAAA,OAAO,KAAK,CAAC;SACd;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAA;IAC9C,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC9D,IAAI,IAAI,CAAC,QAAQ;IAAE,YAAA,OAAO,KAAK,CAAC;YAChC,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACvC,QAAA,OAAO,KAAK,CAAC;SACd;IAED,IAAA,MAAM,KAAK,CAAC,SAAiB,EAAE,KAAiB,EAAA;YAC9C,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/F,OAAO,OAAO,CAAC,MAAM,CAAC;SACvB;QAED,MAAM,KAAK,CAAC,SAAiB,EAAA;YAC3B,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;IAC1B,QAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SAChC;;IAID,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAgB,EAAA;IACnE,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9D,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;IAC1B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;gBAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAC9C,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,YAAA,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,KAAI;IAClC,gBAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA2B,CAAC,MAAM,CAAC;oBACtD,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;oBACnD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,gBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA,IAAA,EAAO,MAAM,CAAA,CAAE,CAAC,EAAE;IAC/C,oBAAA,KAAK,CAAC,WAAW,CAAC,CAAO,IAAA,EAAA,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC;qBACzE;IACH,aAAC,CAAC;gBACF,OAAO,CAAC,SAAS,GAAG,MAAQ,EAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBACnE,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,CAAA,wBAAA,EAA2B,SAAS,CAAI,CAAA,EAAA,MAAM,CAAG,CAAA,CAAA,EAAE,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3I,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,UAAmB,EAAA;YACpE,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACpD,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;IAC1B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;gBAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAC9C,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,YAAA,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,KAAI;IAClC,gBAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA2B,CAAC,MAAM,CAAC;oBACtD,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;oBACnD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;oBACxC,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA,IAAA,EAAO,MAAM,CAAA,CAAE,CAAC,EAAE;IAC9C,oBAAA,KAAK,CAAC,WAAW,CAAC,OAAO,MAAM,CAAA,CAAE,CAAC,CAAC;qBACpC;IACH,aAAC,CAAC;gBACF,OAAO,CAAC,SAAS,GAAG,MAAQ,EAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBACnE,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,CAAA,sBAAA,EAAyB,SAAS,CAAI,CAAA,EAAA,MAAM,CAAG,CAAA,CAAA,EAAE,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACzI,SAAC,CAAC,CAAC;SACJ;;IAID,IAAA,MAAM,gBAAgB,GAAA;YACpB,IAAI,IAAI,CAAC,QAAQ;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,iCAAiC,EAAE,WAAW,CAAC,CAAC;IAC3F,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;;IAErB,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;SAC3C;IAED,IAAA,MAAM,iBAAiB,GAAA;YACrB,IAAI,CAAC,IAAI,CAAC,QAAQ;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;;;IAGhF,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IACxB,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;IAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;IAED,IAAA,MAAM,mBAAmB,GAAA;YACvB,IAAI,CAAC,IAAI,CAAC,QAAQ;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;;IAEhF,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;IAC7C,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;;QAIO,MAAM,cAAc,CAAC,MAAmB,EAAA;IAC9C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;gBAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAC9C,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,YAAA,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,KAAI;IAClC,gBAAA,MAAM,EAAE,GAAI,KAAK,CAAC,MAA2B,CAAC,MAAM,CAAC;IACrD,gBAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACrH,gBAAA,MAAM,KAAK,GAAG,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvE,gBAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;wBAC9D,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,KAAK,QAAQ,EAAE;IACxC,wBAAA,KAAK,CAAC,WAAW,CAAC,OAAO,OAAO,CAAA,CAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC;yBAClF;qBACF;;oBAED,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;wBACpD,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;qBAC9D;IACH,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,SAAS,GAAG,MAAK;IACvB,gBAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;;IAEzB,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;oBACrE,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACnG,QAAQ,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;oBACtC,QAAQ,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,CAAA,8BAAA,EAAiC,MAAM,CAAC,IAAI,CAAG,CAAA,CAAA,EAAE,kBAAkB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1I,aAAC,CAAC;gBACF,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,CAAA,wBAAA,EAA2B,MAAM,CAAC,IAAI,CAAG,CAAA,CAAA,EAAE,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACnI,SAAC,CAAC,CAAC;SACJ;QAEO,MAAM,YAAY,CAAC,SAAiB,EAAA;IAC1C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;gBAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAC9C,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,YAAA,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,KAAI;IAClC,gBAAA,MAAM,EAAE,GAAI,KAAK,CAAC,MAA2B,CAAC,MAAM,CAAC;IACrD,gBAAA,IAAI,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC;IAAE,oBAAA,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC/E,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,SAAS,GAAG,MAAK;IACvB,gBAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;;oBAEzB,IAAI,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;IACxD,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;wBACrE,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1D,oBAAA,QAAQ,CAAC,OAAO,GAAG,MAAK,GAAsB,CAAC;qBAChD;IACD,gBAAA,OAAO,EAAE,CAAC;IACZ,aAAC,CAAC;gBACF,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,yBAAyB,SAAS,CAAA,CAAA,CAAG,EAAE,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/H,SAAC,CAAC,CAAC;SACJ;IAEO,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,IAA+B,EAAA;IACxE,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBACrC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBACxC,KAAK,MAAM,GAAG,IAAI,IAAI;IAAE,gBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvC,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;gBAChC,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,sBAAsB,SAAS,CAAA,CAAA,CAAG,EAAE,cAAc,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7G,SAAC,CAAC,CAAC;SACJ;IAEO,IAAA,MAAM,OAAO,CAAC,SAAiB,EAAE,KAAgB,EAAA;IACvD,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;;IAG3B,QAAA,IAAI,KAAK,CAAC,KAAK,EAAE;IACf,YAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;gBACvE,IAAI,WAAW,KAAK,IAAI;IAAE,gBAAA,OAAO,WAAW,CAAC;aAC9C;;YAGD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBACrC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBACjD,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/C,YAAA,GAAG,CAAC,SAAS,GAAG,MAAK;IACnB,gBAAA,IAAI,OAAO,GAA8B,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;IAC1D,gBAAA,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;IACtD,oBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC,CAAC,CAAC;qBAClE;IACD,gBAAA,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC7C,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;qBAChD;IACD,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;oBACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;oBAC5C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;oBAChD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACzE,oBAAA,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,OAAQ,CAAC,CAAC,CAAC;qBACjE;oBACD,OAAO,CAAC,OAAO,CAAC,CAAC;IACnB,aAAC,CAAC;gBACF,GAAG,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,oBAAoB,SAAS,CAAA,CAAA,CAAG,EAAE,gBAAgB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/G,SAAC,CAAC,CAAC;SACJ;;IAGO,IAAA,MAAM,iBAAiB,CAC7B,EAAe,EACf,SAAiB,EACjB,KAAgB,EAAA;YAEhB,IAAI,CAAC,KAAK,CAAC,KAAK;IAAE,YAAA,OAAO,IAAI,CAAC;IAE9B,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;;gBAE1D,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM;oBAAE,SAAS;;IAGhE,YAAA,IAAI,WAAoB,CAAC;gBACzB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;oBACvD,WAAW,GAAG,SAAS,CAAC;iBACzB;IAAM,iBAAA,IAAI,KAAK,IAAK,SAAqC,EAAE;IAC1D,gBAAA,WAAW,GAAI,SAAqC,CAAC,GAAG,CAAC;iBAC1D;qBAAM;oBACL,SAAS;iBACV;;IAGD,YAAA,MAAM,SAAS,GAAG,CAAO,IAAA,EAAA,GAAG,EAAE,CAAC;IAC/B,YAAA,IAAI;oBACF,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;wBAC3C,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;wBACjD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;wBACxC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;IACzC,wBAAA,OAAO,CAAC,IAAI,CAAC,CAAC;4BACd,OAAO;yBACR;wBACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;wBACrC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,WAA0B,CAAC,CAAC;IACrD,oBAAA,GAAG,CAAC,SAAS,GAAG,MAAK;IACnB,wBAAA,IAAI,OAAO,GAA8B,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;;IAE1D,wBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAM,CAAC,CAAC,MAAM,CAChD,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,MAAM,CAChE,CAAC;IACF,wBAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;IACxB,4BAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC,CAAC,CAAC;6BAClE;IACD,wBAAA,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gCAC7C,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;6BAChD;IACD,wBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;4BACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;4BAC5C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;4BAChD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACzE,4BAAA,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,OAAQ,CAAC,CAAC,CAAC;6BACjE;4BACD,OAAO,CAAC,OAAO,CAAC,CAAC;IACnB,qBAAC,CAAC;wBACF,GAAG,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,CAAA,yBAAA,EAA4B,SAAS,CAAI,CAAA,EAAA,GAAG,CAAG,CAAA,CAAA,EAAE,gBAAgB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9H,iBAAC,CAAC,CAAC;iBACJ;IAAC,YAAA,MAAM;oBACN,OAAO,IAAI,CAAC;iBACb;aACF;IACD,QAAA,OAAO,IAAI,CAAC;SACb;IAEO,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,KAAgB,EAAE,OAAgC,EAAA;IAC3F,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBACrC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IACjC,YAAA,SAAS,CAAC,SAAS,GAAG,MAAK;oBACzB,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,IAAI,EAAE,EAAE;wBACxC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;IACzF,wBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAAC,wBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;yBAC7C;qBACF;IACH,aAAC,CAAC;gBACF,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;gBAChC,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,sBAAsB,SAAS,CAAA,CAAA,CAAG,EAAE,cAAc,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7G,SAAC,CAAC,CAAC;SACJ;IAEO,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,KAAgB,EAAA;IACzD,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAChE,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAA,OAAA,EAAU,SAAS,CAAa,WAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;IAC1F,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACrH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBACrC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IACjC,YAAA,SAAS,CAAC,SAAS,GAAG,MAAK;oBACzB,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,IAAI,EAAE,EAAE;wBACxC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;4BACzF,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAgB,CAAC,CAAC;yBAC5C;qBACF;IACH,aAAC,CAAC;gBACF,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;gBAChC,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,sBAAsB,SAAS,CAAA,CAAA,CAAG,EAAE,cAAc,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7G,SAAC,CAAC,CAAC;SACJ;QAEO,MAAM,QAAQ,CAAC,SAAiB,EAAA;IACtC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBACrC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAClD,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;gBAClC,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;gBAChC,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,qBAAqB,SAAS,CAAA,CAAA,CAAG,EAAE,cAAc,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5G,SAAC,CAAC,CAAC;SACJ;;QAGO,MAAM,aAAa,CAAC,MAAmB,EAAA;IAC7C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBAAE,OAAO;YAC7D,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;gBAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;gBAC1D,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC7F,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;gBAChC,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,CAAA,8BAAA,EAAiC,MAAM,CAAC,IAAI,CAAG,CAAA,CAAA,EAAE,kBAAkB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9H,SAAC,CAAC,CAAC;SACJ;;IAGO,IAAA,MAAM,UAAU,GAAA;YACtB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;IAC1D,QAAA,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;;;YAIzB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAClD,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,iBAAiB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;;IAE1C,YAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;IACjD,YAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;oBAC1B,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACtD,gBAAA,IAAI,CAAC;IAAE,oBAAA,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;iBAC/B;IACD,YAAA,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;gBAClC,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;IAC1C,gBAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,gBAAA,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,KAAI;IAClC,oBAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA2B,CAAC,MAAM,CAAC;IACtD,oBAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;IACxB,wBAAA,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;yBAC7B;IACD,oBAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;4BAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;4BACnC,MAAM,QAAQ,GAAG,MAAM;IACrB,+BAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;kCACpG,SAAS,CAAC;4BACd,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;yBACpD;;IAED,oBAAA,IAAI,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;IACxE,wBAAA,MAAM,EAAE,GAAI,KAAK,CAAC,MAA2B,CAAC,WAAY,CAAC;4BAC3D,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAChD,wBAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;IACxB,4BAAA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;6BACpB;yBACF;IACH,iBAAC,CAAC;IACF,gBAAA,OAAO,CAAC,SAAS,GAAG,MAAK;IACvB,oBAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;wBACzB,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACjC,oBAAA,OAAO,EAAE,CAAC;IACZ,iBAAC,CAAC;oBACF,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,yCAAyC,EAAE,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;oBACjI,OAAO,CAAC,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,CAAc,WAAA,EAAA,IAAI,CAAC,MAAM,CAAA,YAAA,CAAc,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9G,aAAC,CAAC,CAAC;;IAEH,YAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;oBAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC3D,gBAAA,IAAI,MAAM;IAAE,oBAAA,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;iBAC9C;;;IAGD,YAAA,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;aACtB;;IAGD,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;IAClC,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1E,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;oBAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;oBAClD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,gBAAA,KAAK,CAAC,KAAK,EAAE,CAAC;oBACd,KAAK,MAAM,GAAG,IAAI,IAAI;IAAE,oBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACvC,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;oBAChC,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,qBAAqB,SAAS,CAAA,CAAA,CAAG,EAAE,iBAAiB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/G,aAAC,CAAC,CAAC;aACJ;SACF;QAEO,QAAQ,GAAA;YACd,IAAI,CAAC,IAAI,CAAC,EAAE;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAC;YAC5E,OAAO,IAAI,CAAC,EAAE,CAAC;SAChB;IACF,CAAA;IAED;IACA,SAAS,cAAc,CAAC,KAAc,EAAA;QACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;IAAE,QAAA,OAAO,QAAQ,CAAC;QAC/C,IAAI,OAAO,KAAK,KAAK,SAAS;IAAE,QAAA,OAAO,SAAS,CAAC;IACjD,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;IAAE,QAAA,OAAO,MAAM,CAAC;IAC/D,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IAC7B,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,GAAG,QAAQ,CAAC;SACvD;IACD,IAAA,OAAO,QAAQ,CAAC;IAClB;;ICv0BA;;;;;;IAMG;IAOH;IACA;IACA;UAEa,UAAU,CAAA;IAAvB,IAAA,WAAA,GAAA;YACW,IAAI,CAAA,IAAA,GAAG,MAAM,CAAC;YAEf,IAAI,CAAA,IAAA,GAAqC,IAAI,CAAC;YAC9C,IAAS,CAAA,SAAA,GAAqC,IAAI,CAAC;YACnD,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;;IAGZ,QAAA,IAAA,CAAA,WAAW,GAAiB,IAAI,YAAY,EAAE,CAAC;IAEvD;;;;IAIG;IACK,QAAA,IAAA,CAAA,OAAO,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;SA0UvD;;IAvUS,IAAA,SAAS,CAAI,EAAoB,EAAA;IACvC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACtC,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC,CAAC;IAC1D,QAAA,OAAO,GAAG,CAAC;SACZ;;IAID,IAAA,MAAM,IAAI,CAAC,MAAc,EAAE,OAAe,EAAA;IACxC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;YAG7C,IAAI,CAAC,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;;IAGnD,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;;IAG9E,QAAA,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;SACjC;IAED,IAAA,MAAM,KAAK,GAAA;;IAET,QAAA,IAAI;gBACF,MAAM,IAAI,CAAC,OAAO,CAAC;aACpB;IAAC,QAAA,MAAM,oBAAoB;IAC5B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACtB,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;SAChC;QAED,MAAM,GAAA;IACJ,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;SAChC;;;IAKD,IAAA,MAAM,MAAM,GAAA;;IAEV,QAAA,IAAI;gBAAE,MAAM,IAAI,CAAC,OAAO,CAAC;aAAE;IAAC,QAAA,MAAM,gBAAgB;IAClD,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC/B,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5C,QAAA,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;SACjC;;IAGD,IAAA,MAAM,QAAQ,GAAA;;IAEZ,QAAA,IAAI;gBAAE,MAAM,IAAI,CAAC,OAAO,CAAC;aAAE;IAAC,QAAA,MAAM,gBAAgB;IAClD,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC/B,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;IAClB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAgB,CAAC;IAClC,YAAA,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;IACxC,gBAAA,IAAI;wBAAE,MAAM,IAAI,CAAC,SAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;qBAAE;IAAC,gBAAA,MAAM,gBAAgB;iBACxE;aACF;SACF;QAED,MAAM,OAAO,CAAC,GAAW,EAAA;YACvB,IAAI,CAAC,IAAI,CAAC,SAAS;IAAE,YAAA,OAAO,IAAI,CAAC;IACjC,QAAA,IAAI;IACF,YAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA,SAAA,EAAY,GAAG,CAAA,KAAA,CAAO,CAAC,CAAC;IACtE,YAAA,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IAChC,YAAA,OAAO,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B;IAAC,QAAA,MAAM;IACN,YAAA,OAAO,IAAI,CAAC;aACb;SACF;IAED,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,KAAa,EAAA;YACtC,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;IAC5B,QAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,GAAG,CAAA,KAAA,CAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACxF,QAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC;IAC3C,QAAA,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,QAAA,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;SACxB;;QAID,MAAM,WAAW,CAAC,MAAmB,EAAA;IACnC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;gBAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;IAE3C,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,CAAA,OAAA,EAAU,MAAM,CAAC,IAAI,CAAE,CAAA,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;;gBAEpE,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7C,SAAC,CAAC,CAAC;SACJ;QAED,MAAM,SAAS,CAAC,SAAiB,EAAA;IAC/B,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;gBAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;;IAE5C,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;IAClB,gBAAA,IAAI;wBACF,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAmB,gBAAA,EAAA,SAAS,CAAO,KAAA,CAAA,CAAC,CAAC;qBACvE;IAAC,gBAAA,MAAM;;qBAEP;IACD,gBAAA,IAAI;wBACF,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAG,EAAA,SAAS,CAAO,KAAA,CAAA,CAAC,CAAC;qBACvD;IAAC,gBAAA,MAAM;;qBAEP;iBACF;IACH,SAAC,CAAC,CAAC;SACJ;QAED,MAAM,QAAQ,CAAC,SAAiB,EAAA;YAC9B,IAAI,CAAC,IAAI,CAAC,SAAS;IAAE,YAAA,OAAO,KAAK,CAAC;IAClC,QAAA,IAAI;gBACF,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAG,EAAA,SAAS,CAAO,KAAA,CAAA,CAAC,CAAC;IACxD,YAAA,OAAO,IAAI,CAAC;aACb;IAAC,QAAA,MAAM;IACN,YAAA,OAAO,KAAK,CAAC;aACd;SACF;IAED,IAAA,MAAM,aAAa,GAAA;YACjB,IAAI,CAAC,IAAI,CAAC,SAAS;IAAE,YAAA,OAAO,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,QAAA,WAAW,MAAM,CAAC,IAAI,CAAC,IAAK,IAAI,CAAC,SAAiB,CAAC,OAAO,EAAE,EAAE;IAC5D,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;IAC1B,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;iBACvC;aACF;IACD,QAAA,OAAO,KAAK,CAAC;SACd;QAED,MAAM,cAAc,CAAC,SAAiB,EAAA;YACpC,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;SACnD;;IAGD,IAAA,MAAM,UAAU,CACd,SAAiB,EACjB,MAAsB,EACtB,MAA2D,EAAA;IAE3D,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;IAC/B,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAChE,YAAA,IAAI,MAAM;IAAE,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,SAAS,CAAA,CAAE,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9E,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1E,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC7C,SAAC,CAAC,CAAC;SACJ;;IAID,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,IAA+B,EAAA;IAC7D,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;IAC/B,YAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;IAE3D,YAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7E,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9C,YAAA,OAAO,GAAG,CAAC;IACb,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,IAAI,CAAC,SAAiB,EAAE,KAAgB,EAAA;YAC5C,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SAChD;;IAGD,IAAA,MAAM,UAAU,CAAC,SAAiB,EAAE,KAAgB,EAAE,KAA6C,EAAA;IACjG,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SAC7D;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAE,OAAgC,EAAA;IAChF,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;IAC/B,YAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACvE,YAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7E,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9C,YAAA,OAAO,KAAK,CAAC;IACf,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAA;IAC9C,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;IAC/B,YAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9D,YAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7E,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9C,YAAA,OAAO,KAAK,CAAC;IACf,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,KAAK,CAAC,SAAiB,EAAE,KAAiB,EAAA;YAC9C,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SACjD;QAED,MAAM,KAAK,CAAC,SAAiB,EAAA;IAC3B,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;gBAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACxC,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC3C,SAAC,CAAC,CAAC;SACJ;;IAID,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAgB,EAAA;IACnE,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;IAC/B,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;;gBAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAChE,YAAA,IAAI,MAAM;IAAE,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,SAAS,CAAA,CAAE,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAChF,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,SAAkB,EAAA;IACnE,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;IAC/B,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAChE,YAAA,IAAI,MAAM;IAAE,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,SAAS,CAAA,CAAE,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAChF,SAAC,CAAC,CAAC;SACJ;;IAID,IAAA,MAAM,gBAAgB,GAAA;IACpB,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;SAC3C;IAED,IAAA,MAAM,iBAAiB,GAAA;IACrB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAW;IAC/B,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;;gBAE3C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;IAC1D,YAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;IAClC,gBAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;oBAC1E,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;iBAC5C;IACH,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,mBAAmB,GAAA;IACvB,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;SAC9C;;QAIO,SAAS,GAAA;IACf,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;IACnB,YAAA,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAC;aAC/D;YACD,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;IAEO,IAAA,MAAM,cAAc,CAAC,SAAiB,EAAE,IAA+B,EAAA;;IAE7E,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC7B,QAAA,MAAM,QAAQ,GAAG,CAAG,EAAA,SAAS,OAAO,CAAC;IACrC,QAAA,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,QAAA,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,CAAC;YACnD,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,QAAA,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;SACxB;QAEO,MAAM,aAAa,CAAC,SAAiB,EAAA;IAC3C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC7B,QAAA,MAAM,QAAQ,GAAG,CAAG,EAAA,SAAS,OAAO,CAAC;IACrC,QAAA,IAAI;gBACF,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACrD,YAAA,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;IACxC,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACzB;IAAC,QAAA,MAAM;IACN,YAAA,OAAO,EAAE,CAAC;aACX;SACF;IAED;;;;IAIG;IACK,IAAA,MAAM,kBAAkB,GAAA;YAC9B,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;IAC5B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAgB,CAAC;YAClC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,QAAA,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;IACxC,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAAE,gBAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClD;IAED,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAChD,YAAA,IAAI;;oBAEF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAU,OAAA,EAAA,SAAS,CAAE,CAAA,CAAC,CAAC;oBAC5D,IAAI,SAAS,EAAE;wBACb,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAgB,CAAC;wBACpD,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;wBAC3C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACjD,oBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,wBAAA,IAAI;IACF,4BAAA,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;6BACjD;IAAC,wBAAA,MAAM;;6BAEP;yBACF;wBACD,SAAS;qBACV;;oBAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACjD,gBAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;IACnB,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;wBACzB,MAAM,OAAO,GAAwB,EAAE,CAAC;wBACxC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;IACvC,wBAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;4BAC1B,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,QAAQ;gCAClC,OAAO,GAAG,KAAK,SAAS,GAAG,SAAS;oCACpC,OAAO,GAAG,KAAK,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IACzD,wBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;yBACnD;IACD,oBAAA,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IACjE,oBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,wBAAA,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;yBACjD;qBACF;iBACF;IAAC,YAAA,MAAM;;iBAEP;aACF;SACF;IACF;;IC1WD;;;IAGG;IAKH;IACA;IACA;IAEA;IACgB,SAAA,YAAY,CAAC,IAAY,EAAE,OAAkC,EAAA;QAC3E,eAAe,CAAC,OAAO,CAAC,CAAC;IACzB,IAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;IACM,SAAU,eAAe,CAAC,OAAkC,EAAA;QAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;IACzB,QAAA,MAAM,IAAI,aAAa,CAAC,qCAAqC,EAAE,cAAc,CAAC,CAAC;SAChF;QAED,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,IAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;;YAEvD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACtC,MAAM,IAAI,aAAa,CACrB,CAAA,cAAA,EAAiB,MAAM,CAAC,IAAI,iBAAiB,OAAO,CAAA,gBAAA,EAAmB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC/F,cAAc,CACf,CAAC;aACH;;IAGD,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE;IACrB,YAAA,eAAe,EAAE,CAAC;aACnB;SACF;;IAGD,IAAA,IAAI,eAAe,KAAK,CAAC,EAAE;IACzB,QAAA,MAAM,IAAI,aAAa,CAAC,iDAAiD,EAAE,cAAc,CAAC,CAAC;SAC5F;IACH,CAAC;IA2CD;IACM,SAAU,cAAc,CAC5B,SAAiB,EACjB,OAAe,EACf,IAAe,EACf,KAAc,EACd,MAAkB,EAAA;IAElB,IAAA,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC;QAE5B,QAAQ,IAAI;IACV,QAAA,KAAK,QAAQ;IACX,YAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;IACvB,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAA,YAAA,EAAe,SAAS,CAAA,sBAAA,EAAyB,MAAM,CAAA,CAAE,EAC3E,YAAY,CACb,CAAC;iBACH;IACD,YAAA,IAAI,MAAM,EAAE,SAAS,KAAK,SAAS,IAAK,KAAgB,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;IAClF,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAe,YAAA,EAAA,SAAS,CAAwB,qBAAA,EAAA,MAAM,CAAC,SAAS,CAAA,CAAE,EACpF,kBAAkB,CACnB,CAAC;iBACH;gBACD,MAAM;IAER,QAAA,KAAK,QAAQ;IACX,YAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;IACvB,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAA,YAAA,EAAe,SAAS,CAAA,sBAAA,EAAyB,MAAM,CAAA,CAAE,EAC3E,YAAY,CACb,CAAC;iBACH;IACD,YAAA,IAAI,MAAM,EAAE,GAAG,KAAK,SAAS,IAAK,KAAgB,GAAG,MAAM,CAAC,GAAG,EAAE;IAC/D,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAW,QAAA,EAAA,OAAO,eAAe,SAAS,CAAA,QAAA,EAAW,KAAK,CAAA,eAAA,EAAkB,MAAM,CAAC,GAAG,EAAE,EACxF,kBAAkB,CACnB,CAAC;iBACH;IACD,YAAA,IAAI,MAAM,EAAE,GAAG,KAAK,SAAS,IAAK,KAAgB,GAAG,MAAM,CAAC,GAAG,EAAE;IAC/D,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAW,QAAA,EAAA,OAAO,eAAe,SAAS,CAAA,QAAA,EAAW,KAAK,CAAA,eAAA,EAAkB,MAAM,CAAC,GAAG,EAAE,EACxF,kBAAkB,CACnB,CAAC;iBACH;gBACD,MAAM;IAER,QAAA,KAAK,SAAS;IACZ,YAAA,IAAI,MAAM,KAAK,SAAS,EAAE;IACxB,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAA,YAAA,EAAe,SAAS,CAAA,uBAAA,EAA0B,MAAM,CAAA,CAAE,EAC5E,YAAY,CACb,CAAC;iBACH;gBACD,MAAM;IAER,QAAA,KAAK,MAAM;IACT,YAAA,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC,EAAE;IAC7D,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAe,YAAA,EAAA,SAAS,CAAoC,iCAAA,EAAA,OAAO,KAAK,CAAA,CAAE,EAC5F,YAAY,CACb,CAAC;iBACH;gBACD,MAAM;IAER,QAAA,KAAK,MAAM;IACT,YAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;IACvB,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAA,YAAA,EAAe,SAAS,CAAA,4BAAA,EAA+B,MAAM,CAAA,CAAE,EACjF,YAAY,CACb,CAAC;iBACH;gBACD,MAAM;SACT;IACH,CAAC;IAED;IACM,SAAU,oBAAoB,CAAC,MAcpC,EAAA;QACC,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAiB;YAC9B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;IACJ;;ICnMA;;;;;IAKG;IAEH;IACA;IACA;IAEA;IACO,MAAM,SAAS,GAAG,IAAI,CAAC;IAE9B;IACO,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAEnC;IACA;IACA;IAEA,IAAY,QASX,CAAA;IATD,CAAA,UAAY,QAAQ,EAAA;;IAElB,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;;IAER,IAAA,QAAA,CAAA,QAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;;IAET,IAAA,QAAA,CAAA,QAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;;IAEZ,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;IACV,CAAC,EATW,QAAQ,KAAR,QAAQ,GASnB,EAAA,CAAA,CAAA,CAAA;IAyBD;IACA;IACA;IAEA;IACA;IACA;IAEA;IACO,MAAM,qBAAqB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAErD;IACO,MAAM,0BAA0B,GAAG,EAAE,CAAC;IAE7C;IACO,MAAM,cAAc,GAAG,CAAC,CAAC;IAEhC;IACO,MAAM,6BAA6B,GAAG,EAAE,CAAC;IAoChD;IACA;IACA;IAEA;IACA,IAAY,aASX,CAAA;IATD,CAAA,UAAY,aAAa,EAAA;IACvB,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;IACV,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;IACV,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;IACV,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;IACT,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;IACV,IAAA,aAAA,CAAA,aAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;IACZ,IAAA,aAAA,CAAA,aAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;IAChB,IAAA,aAAA,CAAA,aAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;IAChB,CAAC,EATW,aAAa,KAAb,aAAa,GASxB,EAAA,CAAA,CAAA,CAAA;IAoBD;IACA;IACA;IAEA;IACA,IAAY,gBAIX,CAAA;IAJD,CAAA,UAAY,gBAAgB,EAAA;IAC1B,IAAA,gBAAA,CAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;IACV,IAAA,gBAAA,CAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;IACb,IAAA,gBAAA,CAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;IACb,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,GAI3B,EAAA,CAAA,CAAA,CAAA;IA0BD;IACA;IACA;IAEA;IACO,MAAM,yBAAyB,GAAG,GAAG,CAAC;IA+CtC,MAAM,mBAAmB,GAG5B;IACF,IAAA,QAAQ,EAAE,SAAS;IACnB,IAAA,eAAe,EAAE,yBAAyB;IAC1C,IAAA,qBAAqB,EAAE,qBAAqB;IAC5C,IAAA,mBAAmB,EAAE,6BAA6B;IAClD,IAAA,qBAAqB,EAAE,0BAA0B;IACjD,IAAA,UAAU,EAAE,IAAI;IAChB,IAAA,WAAW,EAAE,MAAM;IACnB,IAAA,kBAAkB,EAAE,IAAI;IACxB,IAAA,WAAW,EAAE,KAAK;IAClB,IAAA,cAAc,EAAE,WAAW;IAC3B,IAAA,gBAAgB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IAClC,IAAA,WAAW,EAAE,EAAE;IACf,IAAA,UAAU,EAAE,SAAS;IACrB,IAAA,WAAW,EAAE,SAAS;KACvB;;ICxPD;;;;;IAKG;IAEH;IACA;IACA;IAEA,IAAK,KAAoB,CAAA;IAAzB,CAAA,UAAK,KAAK,EAAA;IAAG,IAAA,KAAA,CAAA,KAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;IAAE,IAAA,KAAA,CAAA,KAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;IAAC,CAAC,EAApB,KAAK,KAAL,KAAK,GAAe,EAAA,CAAA,CAAA,CAAA;IAEzB,MAAM,MAAM,CAAA;QAQV,WAAY,CAAA,GAAM,EAAE,KAAQ,EAAA;IAL5B,QAAA,IAAA,CAAA,KAAK,GAAU,KAAK,CAAC,GAAG,CAAC;YACzB,IAAI,CAAA,IAAA,GAAwB,IAAI,CAAC;YACjC,IAAK,CAAA,KAAA,GAAwB,IAAI,CAAC;YAClC,IAAM,CAAA,MAAA,GAAwB,IAAI,CAAC;IAGjC,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACf,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACpB;IACF,CAAA;IAED;IACA;IACA;IAEA,MAAM,YAAY,CAAA;IAAlB,IAAA,WAAA,GAAA;YACU,IAAI,CAAA,IAAA,GAAwB,IAAI,CAAC;YACjC,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;SAgVnB;QA9UC,IAAI,IAAI,KAAa,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE;;QAGzC,MAAM,CAAC,GAAM,EAAE,KAAQ,EAAA;YACrB,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAEpC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IACd,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBACzB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO;aACR;YAED,IAAI,MAAM,GAAwB,IAAI,CAAC;IACvC,QAAA,IAAI,OAAO,GAAwB,IAAI,CAAC,IAAI,CAAC;YAE7C,OAAO,OAAO,EAAE;gBACd,MAAM,GAAG,OAAO,CAAC;IACjB,YAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACrB,gBAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;iBACxB;IAAM,iBAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC5B,gBAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;iBACzB;qBAAM;;IAEL,gBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;oBACtB,OAAO;iBACR;aACF;IAED,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,QAAA,IAAI,GAAG,GAAG,MAAO,CAAC,GAAG,EAAE;IACrB,YAAA,MAAO,CAAC,IAAI,GAAG,IAAI,CAAC;aACrB;iBAAM;IACL,YAAA,MAAO,CAAC,KAAK,GAAG,IAAI,CAAC;aACtB;YAED,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SACtB;;IAGD,IAAA,IAAI,CAAC,GAAM,EAAA;IACT,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,OAAO,OAAO,EAAE;IACd,YAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACrB,gBAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;iBACxB;IAAM,iBAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC5B,gBAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;iBACzB;qBAAM;oBACL,OAAO,OAAO,CAAC,KAAK,CAAC;iBACtB;aACF;IACD,QAAA,OAAO,IAAI,CAAC;SACb;;IAGD,IAAA,MAAM,CAAC,GAAM,EAAA;;YAEX,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAChC,QAAA,IAAI,CAAC,IAAI;IAAE,YAAA,OAAO,KAAK,CAAC;IAExB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,QAAA,OAAO,IAAI,CAAC;SACb;;;IAID,IAAA,OAAO,CAAC,QAAoC,EAAA;YAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SACpC;;IAGD,IAAA,SAAS,CACP,QAAW,EACX,MAAS,EACT,QAAoC,EAAA;IAEpC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;SACxD;;QAGD,aAAa,GAAA;YACX,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,QAAA,OAAO,OAAO,CAAC;SAChB;;QAGD,KAAK,GAAA;IACH,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAChB;;IAIO,IAAA,QAAQ,CAAC,GAAM,EAAA;IACrB,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,OAAO,OAAO,EAAE;IACd,YAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACrB,gBAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;iBACxB;IAAM,iBAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC5B,gBAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;iBACzB;qBAAM;IACL,gBAAA,OAAO,OAAO,CAAC;iBAChB;aACF;IACD,QAAA,OAAO,IAAI,CAAC;SACb;IAEO,IAAA,UAAU,CAAC,IAAkB,EAAA;;;YAGnC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;IAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;oBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aACnE;IAAM,aAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACrB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;IAAE,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAM,CAAC,MAAM,CAAC,CAAC;aAChF;IAAM,aAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACtB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;IAAE,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAK,CAAC,MAAM,CAAC,CAAC;aAC9E;iBAAM;gBACL,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,YAAA,IAAI,SAAU,CAAC,MAAM,KAAK,IAAI,EAAE;oBAC9B,IAAI,CAAC,UAAU,CAAC,SAAU,EAAE,SAAU,CAAC,KAAK,CAAC,CAAC;IAC9C,gBAAA,SAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC9B,gBAAA,SAAU,CAAC,KAAM,CAAC,MAAM,GAAG,SAAS,CAAC;iBACtC;IACD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjC,YAAA,SAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAC5B,YAAA,SAAU,CAAC,IAAK,CAAC,MAAM,GAAG,SAAS,CAAC;IACpC,YAAA,MAAM,SAAS,GAAG,SAAU,CAAC,KAAK,CAAC;IACnC,YAAA,SAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC9B,YAAA,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK;IAAE,gBAAA,IAAI,CAAC,SAAS,CAAC,SAAU,CAAC,KAAK,EAAE,SAAU,CAAC,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;aACnG;SACF;QAEO,UAAU,CAAC,CAAsB,EAAE,CAAsB,EAAA;IAC/D,QAAA,IAAI,CAAC,CAAE,CAAC,MAAM,EAAE;IACd,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;aACf;iBAAM,IAAI,CAAC,KAAK,CAAE,CAAC,MAAM,CAAC,IAAI,EAAE;IAC/B,YAAA,CAAE,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;aACpB;iBAAM;IACL,YAAA,CAAE,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;aACrB;IACD,QAAA,IAAI,CAAC;IAAE,YAAA,CAAC,CAAC,MAAM,GAAG,CAAE,CAAC,MAAM,CAAC;SAC7B;IAEO,IAAA,OAAO,CAAC,IAAkB,EAAA;YAChC,OAAO,IAAI,CAAC,IAAI;IAAE,YAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACnC,QAAA,OAAO,IAAI,CAAC;SACb;IAEO,IAAA,SAAS,CAAC,IAAkB,EAAA;IAClC,QAAA,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE;IACrD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,YAAA,IAAI,CAAC,WAAW;oBAAE,MAAM;IAExB,YAAA,IAAI,MAAM,KAAK,WAAW,CAAC,IAAI,EAAE;IAC/B,gBAAA,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;oBAChC,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE;IACtC,oBAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC3B,oBAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,oBAAA,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;wBAC9B,IAAI,GAAG,WAAW,CAAC;qBACpB;yBAAM;IACL,oBAAA,IAAI,IAAI,KAAK,MAAM,CAAC,KAAK,EAAE;4BACzB,IAAI,GAAG,MAAM,CAAC;IACd,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;yBACvB;wBACD,IAAI,IAAI,CAAC,MAAM;4BAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACjD,oBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM;4BAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;IAC9D,oBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM;4BAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;qBAC/D;iBACF;qBAAM;IACL,gBAAA,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC;oBAC/B,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE;IACtC,oBAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC3B,oBAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,oBAAA,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;wBAC9B,IAAI,GAAG,WAAW,CAAC;qBACpB;yBAAM;IACL,oBAAA,IAAI,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE;4BACxB,IAAI,GAAG,MAAM,CAAC;IACd,wBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;yBACxB;wBACD,IAAI,IAAI,CAAC,MAAM;4BAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACjD,oBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM;4BAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;IAC9D,oBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM;4BAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;qBAC9D;iBACF;aACF;YACD,IAAI,IAAI,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;SAC9C;QAEO,SAAS,CAAC,CAAsB,EAAE,MAA2B,EAAA;;YAEnE,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,IAAI,UAAU,GAAG,MAAM,CAAC;IAExB,QAAA,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;IAClE,YAAA,IAAI,CAAC,UAAU;oBAAE,MAAM;IAEvB,YAAA,IAAI,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE;IAC5B,gBAAA,IAAI,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC;IAC/B,gBAAA,IAAI,CAAC,OAAO;wBAAE,MAAM;;oBAGpB,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE;IAC/B,oBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC5B,oBAAA,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;IAC7B,oBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5B,oBAAA,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC;IAC3B,oBAAA,IAAI,CAAC,OAAO;4BAAE,MAAM;qBACrB;;IAGD,gBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7B,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;oBAC/B,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;IAC1C,qBAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE;IACjD,oBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;wBAC1B,IAAI,GAAG,UAAU,CAAC;IAClB,oBAAA,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;qBAC1B;yBAAM;;wBAEL,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE;IAC/C,wBAAA,IAAI,OAAO;IAAE,4BAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACzC,wBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;IAC1B,wBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1B,wBAAA,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC;IAC3B,wBAAA,IAAI,CAAC,OAAO;gCAAE,MAAM;yBACrB;;IAED,oBAAA,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IACjC,oBAAA,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;wBAC/B,IAAI,OAAO,CAAC,KAAK;4BAAE,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACrD,oBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5B,oBAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;qBAClB;iBACF;qBAAM;;IAEL,gBAAA,IAAI,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC;IAC9B,gBAAA,IAAI,CAAC,OAAO;wBAAE,MAAM;oBAEpB,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE;IAC/B,oBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC5B,oBAAA,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;IAC7B,oBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC7B,oBAAA,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC;IAC1B,oBAAA,IAAI,CAAC,OAAO;4BAAE,MAAM;qBACrB;IAED,gBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7B,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;oBAC/B,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;IAC1C,qBAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE;IACjD,oBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;wBAC1B,IAAI,GAAG,UAAU,CAAC;IAClB,oBAAA,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;qBAC1B;yBAAM;wBACL,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE;IAC7C,wBAAA,IAAI,QAAQ;IAAE,4BAAA,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC3C,wBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;IAC1B,wBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACzB,wBAAA,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC;IAC1B,wBAAA,IAAI,CAAC,OAAO;gCAAE,MAAM;yBACrB;IACD,oBAAA,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IACjC,oBAAA,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;wBAC/B,IAAI,OAAO,CAAC,IAAI;4BAAE,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACnD,oBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC7B,oBAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;qBAClB;iBACF;aACF;IAED,QAAA,IAAI,IAAI;IAAE,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;SACpC;IAEO,IAAA,UAAU,CAAC,CAAe,EAAA;IAChC,QAAA,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,QAAA,IAAI,CAAC,CAAC;gBAAE,OAAO;IACf,QAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;YACjB,IAAI,CAAC,CAAC,IAAI;IAAE,YAAA,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,QAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACpB,QAAA,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;IACb,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;aACf;iBAAM,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;IAC9B,YAAA,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;aACnB;iBAAM;IACL,YAAA,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;aACpB;IACD,QAAA,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IACX,QAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SACd;IAEO,IAAA,WAAW,CAAC,CAAe,EAAA;IACjC,QAAA,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,CAAC;gBAAE,OAAO;IACf,QAAA,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;YACjB,IAAI,CAAC,CAAC,KAAK;IAAE,YAAA,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,QAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACpB,QAAA,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;IACb,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;aACf;iBAAM,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;IAC/B,YAAA,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;aACpB;iBAAM;IACL,YAAA,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;aACnB;IACD,QAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IACZ,QAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SACd;QAEO,QAAQ,CAAC,IAAyB,EAAE,EAAwB,EAAA;IAClE,QAAA,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC7B,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SAC/B;IAEO,IAAA,UAAU,CAChB,IAAyB,EACzB,KAAQ,EACR,GAAM,EACN,EAAwB,EAAA;IAExB,QAAA,IAAI,CAAC,IAAI;gBAAE,OAAO;IAClB,QAAA,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK;IAAE,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YACjE,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG;gBAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACnE,QAAA,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG;IAAE,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;SACjE;IACF,CAAA;IAED;IACA;IACA;UAEa,QAAQ,CAAA;IAKnB,IAAA,WAAA,CAAY,OAAkB,GAAA,CAAC,GAAG,IAAI,GAAG,IAAI,EAAA;YAHrC,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;IAIzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;IAC/B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;;QAGD,GAAG,CAAC,GAAW,EAAE,KAA8B,EAAA;IAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACjE,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,QAAA,IAAI,CAAC,cAAc,IAAI,OAAO,GAAG,OAAO,CAAC;SAC1C;;IAGD,IAAA,GAAG,CAAC,GAAW,EAAA;YACb,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC5B;;IAGD,IAAA,MAAM,CAAC,GAAW,EAAA;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;aAC5D;YACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC9B;;QAGD,WAAW,GAAA;IACT,QAAA,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC;SAC5C;;QAGD,aAAa,GAAA;IACX,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;SAClC;;QAGD,SAAS,CACP,QAAgB,EAChB,MAAc,EAAA;YAEd,MAAM,OAAO,GAAwC,EAAE,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,QAAA,OAAO,OAAO,CAAC;SAChB;;QAGD,aAAa,GAAA;IACX,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;SACvB;;QAGD,gBAAgB,GAAA;YACd,OAAO,IAAI,CAAC,cAAc,CAAC;SAC5B;;QAGD,KAAK,GAAA;IACH,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;SACzB;;;;QAMO,iBAAiB,CAAC,GAAW,EAAE,KAAqC,EAAA;IAC1E,QAAA,IAAI,CAAC,KAAK;IAAE,YAAA,OAAO,CAAC,CAAC;YACrB,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,YAAA,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnB,IAAI,OAAO,CAAC,KAAK,QAAQ;IAAE,gBAAA,IAAI,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;qBAC3C,IAAI,OAAO,CAAC,KAAK,QAAQ;oBAAE,IAAI,IAAI,CAAC,CAAC;qBACrC,IAAI,OAAO,CAAC,KAAK,SAAS;oBAAE,IAAI,IAAI,CAAC,CAAC;IACtC,iBAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;oBAAE,IAAI,IAAI,CAAC,CAAC;;IAC7C,gBAAA,IAAI,IAAI,EAAE,CAAC;aACjB;IACD,QAAA,OAAO,IAAI,CAAC;SACb;IACF;;IC7cD;;;;;IAKG;IAIH;IACA;IACA;UAEa,WAAW,CAAA;IAKtB;;;IAGG;QACH,WAAY,CAAA,OAAe,EAAE,UAAA,GAAqB,0BAA0B,EAAA;YANpE,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;;IAQpB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;;IAGrC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;SAC7D;;IAGD,IAAA,OAAO,QAAQ,CAAC,IAAgB,EAAE,SAAiB,EAAA;YACjD,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IAC9B,QAAA,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;IACf,QAAA,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC;IACzB,QAAA,OAAO,EAAE,CAAC;SACX;;IAGD,IAAA,MAAM,CAAC,GAAW,EAAA;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACnC,QAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;gBACtB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,YAAA,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC;aACrC;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;;IAGD,IAAA,UAAU,CAAC,GAAW,EAAA;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACnC,QAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;gBACtB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,YAAA,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;oBAC9C,OAAO,KAAK,CAAC;iBACd;aACF;YACD,OAAO,IAAI,CAAC;SACb;;QAGD,SAAS,GAAA;YACP,OAAO,IAAI,CAAC,IAAI,CAAC;SAClB;;QAGD,YAAY,GAAA;YACV,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;IAMO,IAAA,SAAS,CAAC,GAAW,EAAA;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACtC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAElC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;;IAEvC,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC;IACzC,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAChB;IACD,QAAA,OAAO,MAAM,CAAC;SACf;;IAGO,IAAA,KAAK,CAAC,GAAW,EAAA;YACvB,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACnC,YAAA,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,GAAG,CAAC,IAAI,GAAG,UAAU,MAAM,CAAC,CAAC;aAClC;IACD,QAAA,OAAO,IAAI,CAAC;SACb;;IAGO,IAAA,YAAY,CAAC,GAAW,EAAA;YAC9B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7B,YAAA,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC;IACrC,YAAA,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;aACrC;IACD,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACvB;IACF;;IChHD;;;;;;;;;IASG;IAEH;IACA,MAAM,WAAW,GAAG,CAAC,MAAK;IACxB,IAAA,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;IACnC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aAC9C;IACD,QAAA,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SACpB;IACD,IAAA,OAAO,KAAK,CAAC;IACf,CAAC,GAAG,CAAC;IAEL;IACO,MAAM,UAAU,GAAG,UAAU,CAAC;IAErC;;IAEG;IACa,SAAA,WAAW,CAAC,KAAa,EAAE,IAAgB,EAAA;IACzD,IAAA,IAAI,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC;IACtB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE;YACxC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;SACjE;QACD,OAAO,GAAG,KAAK,CAAC,CAAC;IACnB,CAAC;IAED;IACM,SAAU,aAAa,CAAC,KAAa,EAAA;IACzC,IAAA,OAAO,CAAC,KAAK,GAAG,UAAU,MAAM,CAAC,CAAC;IACpC,CAAC;IAED;;;;;IAKG;aACa,KAAK,CAAC,IAAgB,EAAE,IAAI,GAAG,CAAC,EAAA;QAC9C,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,GAAG,UAAU,EAAE,IAAI,CAAC,CAAC;IACnD,IAAA,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B;;ICpDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiCG;IAMH;IACO,MAAM,gBAAgB,GAAG,UAAU,CAAC;IAC3C;IACO,MAAM,gBAAgB,GAAG,UAAU,CAAC;IAC3C,MAAM,mBAAmB,GAAG,EAAE,CAAC;UAYlB,cAAc,CAAA;IAIzB,IAAA,WAAA,CAAY,iBAAyB,IAAI,EAAA;YAHjC,IAAO,CAAA,OAAA,GAAwC,EAAE,CAAC;IAIxD,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;SACtC;;QAGD,GAAG,CAAC,GAAW,EAAE,KAA8B,EAAA;YAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;SACjC;IAED;;;IAGG;QACH,KAAK,GAAA;;;IAGH,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,QAAA,MAAM,OAAO,GAAmB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM;gBAClE,GAAG;IACH,YAAA,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;gBAC7B,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClD,SAAA,CAAC,CAAC,CAAC;YAEJ,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;;YAGzD,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;IAC1B,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,YAAA,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;aAC3C;;YAGD,MAAM,YAAY,GAAiB,EAAE,CAAC;IACtC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACtC,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxB,YAAY,CAAC,IAAI,CAAC;oBAChB,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG;IAChC,gBAAA,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5B,gBAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACxC,aAAA,CAAC,CAAC;aACJ;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;;IAGjE,QAAA,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;IAC1C,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC;;YAGvC,MAAM,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,GAAG,mBAAmB,CAAC;IAC/E,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,QAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;YAE/B,IAAI,MAAM,GAAG,CAAC,CAAC;;IAGf,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;IAC1B,YAAA,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;aAChE;;YAGD,MAAM,WAAW,GAAG,MAAM,CAAC;YAC3B,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;;YAG1D,MAAM,WAAW,GAAG,MAAM,CAAC;IAC3B,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,IAAI,SAAS,CAAC;;YAGpB,MAAM,YAAY,GAAG,MAAM,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACjD,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;IACxD,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACrD,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACpD,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,WAAW,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;IACrE,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC9D,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;;YAE3D,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;;;IAI5C,QAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,QAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1D,IAAI,QAAQ,KAAK,CAAC;gBAAE,QAAQ,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAEnD,OAAO;IACL,YAAA,WAAW,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC;gBAChC,YAAY;aACb,CAAC;SACH;;QAGD,aAAa,GAAA;IACX,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;SAC5B;;;;;IAOO,IAAA,eAAe,CAAC,OAAuB,EAAA;YAC7C,MAAM,MAAM,GAAqB,EAAE,CAAC;YACpC,IAAI,OAAO,GAAmB,EAAE,CAAC;IAEjC,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;IAC3B,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;IAEpB,YAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IAC/E,gBAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,gBAAA,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;iBACnB;aACF;IACD,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;IAAE,YAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE7C,QAAA,OAAO,MAAM,CAAC;SACf;;IAGO,IAAA,gBAAgB,CAAC,KAAqB,EAAA;YAC5C,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,QAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;IACrB,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;aACzD;IACD,QAAA,OAAO,IAAI,CAAC;SACb;IAEO,IAAA,cAAc,CACpB,IAAc,EACd,MAAc,EACd,KAAqB,EACrB,WAAwB,EAAA;;YAGxB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC5C,MAAM,IAAI,CAAC,CAAC;IAEZ,QAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;;IAErB,YAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,UAAU,EAAE;IACtE,gBAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;iBACvE;IACD,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACjD,MAAM,IAAI,CAAC,CAAC;IACZ,YAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpD,YAAA,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC5B,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACnD,MAAM,IAAI,CAAC,CAAC;IACZ,YAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACtD,YAAA,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;;IAG9B,YAAA,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aAC3B;IAED,QAAA,OAAO,MAAM,CAAC;SACf;IAEO,IAAA,sBAAsB,CAAC,OAAqB,EAAA;;YAElD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;IAC3B,YAAA,IAAI,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;aACtD;IACD,QAAA,OAAO,IAAI,CAAC;SACb;IAEO,IAAA,eAAe,CAAC,IAAc,EAAE,MAAc,EAAE,OAAqB,EAAA;YAC3E,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,CAAC;IAEZ,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;IAC3B,YAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC/C,MAAM,IAAI,CAAC,CAAC;IACZ,YAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD,YAAA,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;gBAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBACjD,MAAM,IAAI,CAAC,CAAC;gBACZ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAC/C,MAAM,IAAI,CAAC,CAAC;aACb;IAED,QAAA,OAAO,MAAM,CAAC;SACf;IACF;;IC5PD;;;;;;IAMG;IAOH;IACA;IACA;UAEa,aAAa,CAAA;QAYxB,WAAY,CAAA,IAAgB,EAAE,IAAiB,EAAA;YATvC,IAAY,CAAA,YAAA,GAAiB,EAAE,CAAC;YAChC,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;YAEf,IAAW,CAAA,WAAA,GAAuB,IAAI,CAAC;;YAEvC,IAAM,CAAA,MAAA,GAAU,CAAC,CAAC;;YAElB,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;IAGzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACxE,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IAED;;;IAGG;QACH,cAAc,GAAA;IACZ,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;IAC3C,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC;IAAE,YAAA,OAAO,KAAK,CAAC;YAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;IACxE,QAAA,OAAO,QAAQ,KAAK,IAAI,CAAC,cAAc,CAAC;SACzC;;QAGO,YAAY,GAAA;IAClB,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SAClC;IAEO,IAAA,OAAO,CAAC,MAAc,EAAA;IAC5B,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACpG;;;;;IAOD,IAAA,GAAG,CAAC,SAAiB,EAAA;;IAEnB,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;YAE7E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC7C,IAAI,QAAQ,GAAG,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;YAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;;IAE3C,QAAA,IAAI,CAAC,SAAS;IAAE,YAAA,OAAO,IAAI,CAAC;IAC5B,QAAA,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAC7F,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpC,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACjD,IAAI,MAAM,GAAG,CAAC,CAAC;;IAGf,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;IACnC,YAAA,IAAI,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;oBAAE,MAAM;IACnD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC3G,MAAM,IAAI,OAAO,CAAC;gBAClB,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;oBAAE,MAAM;IAC5D,YAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;gBAC/E,MAAM,IAAI,MAAM,CAAC;IACjB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC3G,MAAM,IAAI,OAAO,CAAC;IAClB,YAAA,IAAI,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,UAAU;oBAAE,MAAM;IAClD,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;gBAC1D,MAAM,IAAI,MAAM,CAAC;IAEjB,YAAA,IAAI,GAAG,KAAK,SAAS,EAAE;IACrB,gBAAA,IAAI;IACF,oBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;qBACvD;IAAC,gBAAA,MAAM;IACN,oBAAA,OAAO,IAAI,CAAC;qBACb;iBACF;aACF;IAED,QAAA,OAAO,IAAI,CAAC;SACb;;IAGD,IAAA,SAAS,CACP,QAAgB,EAChB,MAAc,EACd,QAA+D,EAAA;IAE/D,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;IAC3C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;YACvF,IAAI,aAAa,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,aAAa,GAAG,WAAW;gBAAE,OAAO;IAEhF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACpC,QAAA,KAAK,IAAI,EAAE,GAAG,aAAa,EAAE,EAAE,IAAI,WAAW,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE;gBAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBACpC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;;IAE3C,YAAA,IAAI,CAAC,SAAS;oBAAE,SAAS;IACzB,YAAA,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;gBAE7F,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACtD,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE;IACxC,gBAAA,IAAI,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;wBAAE,MAAM;IACnD,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC3G,MAAM,IAAI,OAAO,CAAC;oBAClB,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;wBAAE,MAAM;IAC5D,gBAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;oBAC/E,MAAM,IAAI,MAAM,CAAC;IACjB,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC3G,MAAM,IAAI,OAAO,CAAC;IAClB,gBAAA,IAAI,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,UAAU;wBAAE,MAAM;IAClD,gBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;oBAC1D,MAAM,IAAI,MAAM,CAAC;oBAEjB,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,MAAM,EAAE;IACpC,oBAAA,IAAI;IACF,wBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,wBAAA,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;yBACtB;IAAC,oBAAA,MAAM;;yBAEP;qBACF;iBACF;aACF;SACF;;IAGD,IAAA,OAAO,CAAC,QAA+D,EAAA;IACrE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACpC,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;;IAE3C,YAAA,IAAI,CAAC,SAAS;oBAAE,SAAS;IACzB,YAAA,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;gBAE7F,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACtD,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE;IACxC,gBAAA,IAAI,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;wBAAE,MAAM;IACnD,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC3G,MAAM,IAAI,OAAO,CAAC;oBAClB,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;wBAAE,MAAM;IAC5D,gBAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;oBAC/E,MAAM,IAAI,MAAM,CAAC;IACjB,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC3G,MAAM,IAAI,OAAO,CAAC;IAClB,gBAAA,IAAI,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,UAAU;wBAAE,MAAM;IAClD,gBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;oBAC1D,MAAM,IAAI,MAAM,CAAC;IAEjB,gBAAA,IAAI;IACF,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,oBAAA,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;qBACtB;IAAC,gBAAA,MAAM;;qBAEP;iBACF;aACF;SACF;;;;QAMO,WAAW,GAAA;YACjB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE;IAC7B,YAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;aACtD;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;;IAG/C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5D,QAAA,IAAI,KAAK,KAAK,gBAAgB,EAAE;IAC9B,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjB;IAAM,aAAA,IAAI,KAAK,KAAK,gBAAgB,EAAE;IACrC,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjB;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,CAAmC,gCAAA,EAAA,gBAAgB,CAAO,IAAA,EAAA,gBAAgB,CAAS,MAAA,EAAA,KAAK,CAAE,CAAA,CAAC,CAAC;aAC7G;IAED,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC7D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IACjE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;IAChE,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;IACrE,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;IAChE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;;YAGpE,IAAI,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IAC5F,YAAA,OAAO;aACR;;IAGD,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;;IAG7C,QAAA,IAAI,WAAW,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,WAAW,GAAG,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IACvF,YAAA,IAAI;IACF,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC,CAAC;IACzE,gBAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;iBAC3E;IAAC,YAAA,MAAM;;iBAEP;aACF;SACF;QAEO,eAAe,CAAC,MAAc,EAAE,KAAa,EAAA;IACnD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACtD,MAAM,IAAI,CAAC,CAAC;IACZ,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IAEpC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;;;gBAGnC,IAAI,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;oBAAE,MAAM;gBACnD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACpC,MAAM,IAAI,OAAO,CAAC;gBAClB,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;oBAAE,MAAM;gBACtD,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;gBAC/E,MAAM,IAAI,MAAM,CAAC;IACjB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACvD,MAAM,IAAI,CAAC,CAAC;IACZ,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACrD,MAAM,IAAI,CAAC,CAAC;;IAGZ,YAAA,IAAI,SAAS,KAAK,CAAC,IAAI,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;oBAAE,SAAS;IAEhF,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;aACzD;SACF;IAED;;;IAGG;IACK,IAAA,YAAY,CAAC,KAAiB,EAAA;YACpC,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;IAC/D,QAAA,IAAI,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;IAAE,YAAA,OAAO,IAAI,CAAC;YAC5E,OAAO,IAAI,UAAU,CACnB,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,EACxC,KAAK,CAAC,SAAS,CAChB,CAAC;SACH;;IAGO,IAAA,WAAW,CAAC,GAAW,EAAA;YAC7B,IAAI,EAAE,GAAG,CAAC,CAAC;YACX,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IAEtC,QAAA,OAAO,EAAE,IAAI,EAAE,EAAE;IACf,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;gBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAErC,YAAA,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE;;oBAEpB,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBACjE,IAAI,GAAG,GAAG,QAAQ;IAAE,oBAAA,OAAO,GAAG,CAAC;IAC/B,gBAAA,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;iBACd;qBAAM;IACL,gBAAA,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;iBACd;aACF;YAED,OAAO,CAAC,CAAC,CAAC;SACX;IAEO,IAAA,aAAa,CAAC,GAAW,EAAA;YAC/B,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IAC1C,QAAA,OAAO,EAAE,GAAG,EAAE,EAAE;gBACd,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG;IAAE,gBAAA,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;;oBAC9C,EAAE,GAAG,GAAG,CAAC;aACf;YACD,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;SAC1E;IAEO,IAAA,aAAa,CAAC,GAAW,EAAA;YAC/B,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IAC1C,QAAA,OAAO,EAAE,GAAG,EAAE,EAAE;gBACd,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG;IAAE,gBAAA,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;;oBAC/C,EAAE,GAAG,GAAG,CAAC;aACf;IACD,QAAA,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;SAC5B;IACF;;IC3TD;;;;;IAKG;IAaH;UACa,gBAAgB,CAAA;IAI3B,IAAA,WAAA,CAAY,OAA4C,EAAA;YAFhD,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;IAGhB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;QAED,IAAI,GAAA;YACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;IAAE,YAAA,OAAO,IAAI,CAAC;YACnD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACnC;QAED,KAAK,GAAA;IACH,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAChB;IACF,CAAA;IAYD;IACA,MAAM,OAAO,CAAA;IAAb,IAAA,WAAA,GAAA;YACU,IAAI,CAAA,IAAA,GAAe,EAAE,CAAC;SAkD/B;IAhDC,IAAA,IAAI,CAAC,IAAc,EAAA;IACjB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACrC;QAED,GAAG,GAAA;IACD,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;IACxC,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC;YAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC;IAChC,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACnB,QAAA,OAAO,MAAM,CAAC;SACf;QAED,IAAI,GAAA;YACF,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACnD;IAED,IAAA,IAAI,IAAI,GAAA;IACN,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;SACzB;IAEO,IAAA,QAAQ,CAAC,GAAW,EAAA;IAC1B,QAAA,OAAO,GAAG,GAAG,CAAC,EAAE;IACd,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG;oBAAE,MAAM;IACvD,YAAA,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1E,GAAG,GAAG,MAAM,CAAC;aACd;SACF;IAEO,IAAA,UAAU,CAAC,GAAW,EAAA;IAC5B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3B,OAAO,IAAI,EAAE;gBACX,IAAI,QAAQ,GAAG,GAAG,CAAC;IACnB,YAAA,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACzB,YAAA,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;gBAE1B,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG;oBAAE,QAAQ,GAAG,IAAI,CAAC;gBAC/E,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG;oBAAE,QAAQ,GAAG,KAAK,CAAC;gBAElF,IAAI,QAAQ,KAAK,GAAG;oBAAE,MAAM;IAE5B,YAAA,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9E,GAAG,GAAG,QAAQ,CAAC;aAChB;SACF;IACF,CAAA;IAED;IACA;IACA;IAEA;;;IAGG;UACU,aAAa,CAAA;IAIxB,IAAA,WAAA,GAAA;IACE,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;SAC3B;;IAGD,IAAA,SAAS,CAAC,MAAmB,EAAA;IAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC9C;;QAGD,IAAI,GAAA;IACF,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;YAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC;IAC/B,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;YACtB,IAAI,IAAI,GAAG,KAAK,CAAC;;IAGjB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;;IAGvC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAG,CAAC,GAAG,KAAK,GAAG,EAAE;gBACxD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC;IAC7B,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACrC,IAAI,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;oBACtC,IAAI,GAAG,GAAG,CAAC;iBACZ;aACF;YAED,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/B;;QAGD,KAAK,GAAA;YACH,MAAM,MAAM,GAAwC,EAAE,CAAC;IACvD,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACxB,OAAO,KAAK,EAAE;IACZ,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,YAAA,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;aACrB;IACD,QAAA,OAAO,MAAM,CAAC;SACf;IAEO,IAAA,cAAc,CAAC,WAAmB,EAAA;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,KAAK,EAAE;IACT,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACb,gBAAA,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IACb,gBAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;oBACf,WAAW;IACZ,aAAA,CAAC,CAAC;aACJ;SACF;IACF;;ICxKD;;;;;;;;IAQG;IAiDH;IACA;IACA;UAEa,GAAG,CAAA;IAyBd,IAAA,WAAA,CAAY,MAAiB,EAAA;YAvBrB,IAAiB,CAAA,iBAAA,GAAoB,IAAI,CAAC;;YAE1C,IAAe,CAAA,eAAA,GAAe,EAAE,CAAC;YACjC,IAAM,CAAA,MAAA,GAAoB,EAAE,CAAC;IAC7B,QAAA,IAAA,CAAA,YAAY,GAA4B,IAAI,GAAG,EAAE,CAAC;YAClD,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;YAOd,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;YACnB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;IACpB,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC;;IAEnB,QAAA,IAAA,CAAA,UAAU,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IACtD;;;IAGG;YACK,IAAmB,CAAA,mBAAA,GAAY,IAAI,CAAC;YAG1C,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,IAAI,qBAAqB,CAAC;YACnF,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzD,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,6BAA6B,CAAC;YACvF,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;IAC1C,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IACxC,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IAElE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;IACvC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACtB;SACF;;;;IAMD,IAAA,MAAM,IAAI,GAAA;YACR,IAAI,IAAI,CAAC,WAAW;gBAAE,OAAO;YAE7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;;;YAIjD,MAAM,UAAU,GAAkB,EAAE,CAAC;IACrC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;IACpC,gBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACvB;aACF;;IAGD,QAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;IAC7B,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,cAAc,EAAE;IAClD,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACpC;aACF;;;IAID,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;gBACvC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;aAC5C;;;;;IAOD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;;;;QAMD,GAAG,CAAC,GAAW,EAAE,KAA8B,EAAA;;YAE7C,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;IAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;aACxB;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;IACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE;gBAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;SACF;IAED,IAAA,MAAM,CAAC,GAAW,EAAA;YAChB,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;IAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;aACxB;IACD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAwC,CAAC,CAAC;YACpF,IAAI,CAAC,cAAc,EAAE,CAAC;IACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE;gBAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;SACF;;QAGD,kBAAkB,GAAA;YAChB,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;IAC3C,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,eAAe;IAAE,YAAA,GAAG,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAC5E,QAAA,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;IACtB,QAAA,OAAO,GAAG,CAAC;SACZ;IAED;;;;;;;IAOG;QACH,cAAc,GAAA;IACZ,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;IAC1B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;IACtC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;aAC/E;IACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC;YACvC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;;YAElD,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;SAC1D;;IAGO,IAAA,cAAc,CAAC,IAAyB,EAAA;YAC9C,OAAO,IAAI,CAAC,UAAU;iBACnB,IAAI,CAAC,IAAI,CAAC;IACV,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;;IAEf,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;;IAEjC,YAAA,OAAO,CAAC,IAAI,CAAC,sDAAsD,EAAE,KAAK,CAAC,CAAC;;IAE9E,SAAC,CAAC,CAAC;SACN;IAED;;;;IAIG;IACK,IAAA,MAAM,UAAU,GAAA;YACtB,OAAO,IAAI,EAAE;IACX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;IAC9B,YAAA,MAAM,KAAK,CAAC;IACZ,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK;oBAAE,OAAO;aACvC;SACF;;QAGO,MAAM,mBAAmB,CAAC,MAAgB,EAAA;IAChD,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;IACvC,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;IACxB,YAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,MAAM;IAAE,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBACrE,OAAO;aACR;YAED,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;IAClC,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACzB;YAED,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IACtD,QAAA,MAAM,IAAI,GAAgB;gBACxB,EAAE;IACF,YAAA,KAAK,EAAE,CAAC;IACR,YAAA,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,UAAU,EAAE,YAAY,CAAC,MAAM;gBAC/B,SAAS,EAAE,WAAW,CAAC,UAAU;IACjC,YAAA,SAAS,EAAE,IAAI;aAChB,CAAC;;IAGF,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YACnC,IAAI,CAAC,SAAS,EAAE,CAAC;;YAGjB,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEvC,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,MAAM;IAAE,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YACrE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;IAE7B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,CAAC;;IAGxE,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IAClD,YAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;IAED;;;;;IAKG;IACK,IAAA,eAAe,CAAC,KAAa,EAAA;YACnC,IAAI,KAAK,IAAI,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO;IAC3D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAK;IACrF,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;;gBAExB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;IAClC,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;iBAC7B;;gBAED,IAAI,KAAK,GAAG,CAAC,GAAG,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;IACxE,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;iBACjC;aACF,CAAC,CAAC,CAAC;SACL;;IAGO,IAAA,cAAc,CAAC,KAAa,EAAA;YAClC,IAAI,KAAK,IAAI,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO;IAC3D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAW;IAChD,YAAA,IAAI;IACF,gBAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;iBACrC;wBAAS;IACR,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;iBACzB;IACH,SAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAI;IACjB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;;IAExB,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;;IAEjC,YAAA,OAAO,CAAC,IAAI,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;IACxE,SAAC,CAAC,CAAC;SACJ;;;;IAMD;;;;;IAKG;IACH,IAAA,MAAM,aAAa,CAAC,QAAgB,EAAE,MAAc,EAAA;IAClD,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;gBACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBACrC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM;wBAAE,SAAS;oBAC7D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IAAE,oBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBAC3D;aACF;IACD,QAAA,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE;gBACvB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBACnC,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;aACrC;SACF;;QAGD,MAAM,YAAY,CAAC,IAAc,EAAA;IAC/B,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;;IAE9B,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;gBACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBACrC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBAAE,SAAS;IAC7C,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,oBAAA,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;IAC5C,wBAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;4BACpB,MAAM;yBACP;qBACF;iBACF;aACF;IACD,QAAA,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE;gBACvB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBACnC,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;aACrC;SACF;;IAGO,IAAA,YAAY,CAAC,EAAU,EAAA;IAC7B,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;gBACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;IACrC,gBAAA,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE;IAAE,oBAAA,OAAO,IAAI,CAAC;iBACjC;aACF;IACD,QAAA,OAAO,SAAS,CAAC;SAClB;IAED,IAAA,GAAG,CAAC,GAAW,EAAA;;YAEb,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,MAAM,KAAK,IAAI;IAAE,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;;IAGzD,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IACzD,YAAA,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC1C,IAAI,MAAM,KAAK,IAAI;IAAE,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;aAC1D;;IAGD,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;gBACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBACrC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM;wBAAE,SAAS;oBAErD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5C,gBAAA,IAAI,CAAC,MAAM;wBAAE,SAAS;oBAEtB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC9B,IAAI,KAAK,KAAK,IAAI;IAAE,oBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;iBACxD;aACF;IAED,QAAA,OAAO,IAAI,CAAC;SACb;QAED,SAAS,CAAC,QAAgB,EAAE,MAAc,EAAA;YACxC,MAAM,MAAM,GAAwC,EAAE,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,QAAA,OAAO,MAAM,CAAC;SACf;;IAGD,IAAA,aAAa,CACX,QAAgB,EAChB,MAAc,EACd,QAA+D,EAAA;IAE/D,QAAA,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;IAEtC,QAAA,SAAS,CAAC,SAAS,CAAC,IAAI,gBAAgB,CACtC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAC1C,CAAC,CAAC;;IAGH,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBACzD,SAAS,CAAC,SAAS,CAAC,IAAI,gBAAgB,CACtC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CACpD,CAAC,CAAC;aACJ;IAED,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;gBACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBACrC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM;wBAAE,SAAS;oBAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5C,gBAAA,IAAI,CAAC,MAAM;wBAAE,SAAS;IACtB,gBAAA,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;IAC1C,oBAAA,SAAS,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,iBAAC,CAAC,CAAC;iBACJ;aACF;IAED,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;YACjC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE;IAC3B,YAAA,IAAI,CAAE,CAAwC,CAAC,WAAW,EAAE;IAC1D,gBAAA,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBAChB;aACF;SACF;QAED,aAAa,GAAA;IACX,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmC,CAAC;;;IAI1D,QAAA,KAAK,IAAI,KAAK,GAAG,cAAc,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;gBACxD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;oBACvD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5C,gBAAA,IAAI,CAAC,MAAM;wBAAE,SAAS;IACtB,gBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;iBAC5C;aACF;;IAGD,QAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE;IAClD,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aAClB;IACD,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IACzD,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE;IAC5D,gBAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBAClB;aACF;YAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CACxC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAE,CAAwC,CAAC,WAAW,CAClE,CAAC;SACH;;;;;QAOD,MAAM,YAAY,CAAC,KAAa,EAAA;YAC9B,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACxC;IAED;;;;;;;IAOG;IACK,IAAA,MAAM,iBAAiB,CAAC,KAAa,EAAE,WAAmB,CAAC,EAAA;IACjE,QAAA,IAAI,KAAK,IAAI,cAAc,GAAG,CAAC;gBAAE,OAAO;YACxC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,QAAQ;gBAAE,OAAO;YAEjD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IACzE,QAAA,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;YACtC,MAAM,WAAW,GAAkB,EAAE,CAAC;IAEtC,QAAA,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;;IAE3B,YAAA,IAAI,IAAI,GAAsB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;gBACrE,IAAI,CAAC,IAAI,EAAE;IACT,gBAAA,IAAI;IACF,oBAAA,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;qBAC9C;IAAC,gBAAA,MAAM;wBACN,IAAI,GAAG,IAAI,CAAC;qBACb;iBACF;gBACD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE;IACjC,gBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBACpC,SAAS;iBACV;IACD,YAAA,IAAI,MAAqB,CAAC;IAC1B,YAAA,IAAI;oBACF,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,gBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE;IAC5B,oBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;wBACpC,SAAS;qBACV;iBACF;IAAC,YAAA,MAAM;IACN,gBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBACpC,SAAS;iBACV;gBACD,MAAM,OAAO,GAAwC,EAAE,CAAC;gBACxD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/C,SAAS,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,YAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACxB;IAED,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;IACjC,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;;;IAGvB,YAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;oBAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC/B;gBACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC/C,OAAO;aACR;YAED,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;IACjC,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACzB;YAED,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IACtD,QAAA,MAAM,IAAI,GAAgB;gBACxB,EAAE;gBACF,KAAK,EAAE,KAAK,GAAG,CAAC;IAChB,YAAA,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpC,UAAU,EAAE,YAAY,CAAC,MAAM;gBAC/B,SAAS,EAAE,WAAW,CAAC,UAAU;IACjC,YAAA,SAAS,EAAE,IAAI;aAChB,CAAC;IAEF,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YACnC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvC,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;IAGrC,QAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;gBAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACvC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aAC5C;SACF;;IAGD,IAAA,MAAM,KAAK,GAAA;;IAET,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE;IACrC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;IACvC,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAChC,MAAM,IAAI,aAAa,CACrB,0EAA0E,EAC1E,uBAAuB,EACvB,KAAK,CACN,CAAC;aACH;;IAED,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;;IAExB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;IAC1B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;IACtC,YAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;aACxC;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE;gBACrC,IAAI,CAAC,cAAc,EAAE,CAAC;IACtB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;IACtC,YAAA,IAAI,MAAM;IAAE,gBAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;aACpD;IACD,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;;IAE1B,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;SACzB;IAED,IAAA,MAAM,KAAK,GAAA;;IAET,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;IAE1B,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;IAC/B,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClC,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAO,GAAC,CAAC,CAAC;IAClD,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAO,GAAC,CAAC,CAAC;iBACvD;aACF;IAED,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACjB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;IACvC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACtB;IACD,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;SACpB;QAED,QAAQ,GAAA;YACN,OAAO;IACL,YAAA,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;gBAC3C,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,YAAA,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;aAC9C,CAAC;SACH;;;;IAMD;;;IAGG;IACH,IAAA,MAAM,WAAW,GAAA;YACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;gBACnD,MAAM,KAAK,GAAkB,EAAE,CAAC;gBAChC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBACrC,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;IACpC,oBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAClB;yBAAM;wBACL,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClC,oBAAA,OAAO,EAAE,CAAC;qBACX;iBACF;IACD,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;aAC5B;IACD,QAAA,OAAO,OAAO,CAAC;SAChB;IAED;;;;;;IAMG;QACK,MAAM,eAAe,CAAC,IAAiB,EAAA;IAC7C,QAAA,IAAI;IACF,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnD,IAAI,CAAC,IAAI,EAAE;IACT,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC9B,gBAAA,OAAO,KAAK,CAAC;iBACd;IACD,YAAA,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE;IACxB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC9B,gBAAA,OAAO,KAAK,CAAC;iBACd;IACD,YAAA,IAAI;oBACF,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,gBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE;IAC5B,oBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC9B,oBAAA,OAAO,KAAK,CAAC;qBACd;iBACF;IAAC,YAAA,MAAM;IACN,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC9B,gBAAA,OAAO,KAAK,CAAC;iBACd;IACD,YAAA,OAAO,IAAI,CAAC;aACb;IAAC,QAAA,MAAM;IACN,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC9B,YAAA,OAAO,KAAK,CAAC;aACd;SACF;;QAGO,MAAM,kBAAkB,CAAC,IAAiB,EAAA;;IAEhD,QAAA,OAAO,CAAC,IAAI,CAAC,CAAA,+CAAA,EAAkD,IAAI,CAAC,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC;IAChG,QAAA,IAAI;gBACF,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC7C;IAAC,QAAA,MAAM,mBAAmB;IAC3B,QAAA,IAAI;gBACF,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACzC;IAAC,QAAA,MAAM,mBAAmB;SAC5B;IAEO,IAAA,eAAe,CAAC,KAAqC,EAAA;IAC3D,QAAA,IAAI,CAAC,KAAK;IAAE,YAAA,OAAO,IAAI,CAAC;YACxB,IAAK,KAA4C,CAAC,WAAW;IAAE,YAAA,OAAO,IAAI,CAAC;IAC3E,QAAA,OAAO,KAAK,CAAC;SACd;;IAGO,IAAA,iBAAiB,CAAC,IAAiB,EAAA;;IAEzC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAE5C,IAAI,CAAC,IAAI,EAAE;;;IAGT,YAAA,OAAO,IAAI,CAAC;aACb;;YAGD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAErC,QAAA,IAAI;IACF,YAAA,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aACtC;IAAC,QAAA,MAAM;IACN,YAAA,OAAO,IAAI,CAAC;aACb;SACF;;IAGD,IAAA,MAAM,cAAc,CAAC,EAAU,EAAE,IAAkB,EAAA;IACjD,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,OAAO;YACtC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9C,QAAA,IAAI,CAAC,IAAI;gBAAE,OAAO;;YAElB,IAAI,IAAI,EAAE;IACR,YAAA,IAAI;oBACF,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,gBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE;IAC5B,oBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;wBACpC,OAAO;qBACR;iBACF;IAAC,YAAA,MAAM;IACN,gBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBACpC,OAAO;iBACR;aACF;IACD,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SAC7B;;QAGO,YAAY,CAAC,EAAU,EAAE,IAAgB,EAAA;;YAE/C,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;IAC7B,YAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,UAAU,CAAC;IACxD,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aAC9B;YACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAChC,QAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC;SACnC;IAED;;;;IAIG;QACH,SAAS,GAAA;IACP,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE;IAC1E,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAe,CAAC;gBACjE,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;IACjD,YAAA,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IACrC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aACpC;SACF;IAEF;;IC/vBD;;;;;;;;;;;;;;;;;;;;IAoBG;IAoBH;IACA;IACA;UAEa,GAAG,CAAA;IASd,IAAA,WAAA,CAAY,KAAe,EAAE,OAAA,GAAmB,IAAI,EAAE,WAAsC,OAAO,EAAA;YAR3F,IAAG,CAAA,GAAA,GAAG,CAAC,CAAC;YAGR,IAAM,CAAA,MAAA,GAAiB,EAAE,CAAC;;YAG1B,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;IAGxB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC1B;;;;;QAOD,MAAM,MAAM,CAAC,MAA2C,EAAA;YACtD,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAE1B,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,QAAA,MAAM,UAAU,GAAc;IAC5B,YAAA,GAAG,MAAM;gBACT,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,QAAQ,EAAE,CAAC;aACZ,CAAC;YAEF,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAE5C,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE;IAC5B,YAAA,IAAI;oBACF,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,gBAAA,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,UAAU,CAAC;iBACxC;IAAC,YAAA,MAAM;;IAEN,gBAAA,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;iBAC1D;aACF;IAAM,aAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;IACpC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,YAAA,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,UAAU,CAAC;aACxC;;SAEF;;QAGD,MAAM,WAAW,CAAC,OAA8C,EAAA;YAC9D,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAElD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;aAC3E;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAE1C,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE;IAC5B,YAAA,IAAI;oBACF,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,gBAAA,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,UAAU,CAAC;iBAC3C;IAAC,YAAA,MAAM;;IAEN,gBAAA,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;iBAChE;aACF;IAAM,aAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;IACpC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,YAAA,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,UAAU,CAAC;aAC3C;;SAEF;;IAGD,IAAA,MAAM,KAAK,GAAA;YACT,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEtD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SAClB;;IAGO,IAAA,WAAW,CAAC,MAAoB,EAAA;IACtC,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;IAAE,YAAA,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAClE,QAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC1C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;IACxB,YAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1B,YAAA,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC;aAC1B;IACD,QAAA,OAAO,QAAQ,CAAC;SACjB;;;;;QAOD,MAAM,OAAO,CACX,WAAwC,EAAA;YAExC,IAAI,CAAC,IAAI,CAAC,OAAO;IAAE,YAAA,OAAO,CAAC,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACzC,QAAA,IAAI,CAAC,MAAM;IAAE,YAAA,OAAO,CAAC,CAAC;YAEtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACxC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;IAAE,YAAA,OAAO,CAAC,CAAC;YAEpC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,WAAW,CAAC,MAAM,CAAC,CAAC;aACrB;YAED,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YACpE,OAAO,OAAO,CAAC,MAAM,CAAC;SACvB;;;;;IAOD,IAAA,MAAM,UAAU,GAAA;YACd,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;IAC1B,QAAA,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACnB,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC5B,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACb,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;SACxB;;;;QAMD,gBAAgB,GAAA;IACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;SAC3B;;QAGD,gBAAgB,GAAA;YACd,OAAO,IAAI,CAAC,aAAa,CAAC;SAC3B;;;;;IAOO,IAAA,cAAc,CAAC,IAAgB,EAAA;YACrC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACpC,YAAA,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACxC;YACD,OAAO,GAAG,KAAK,CAAC,CAAC;SAClB;IAEO,IAAA,YAAY,CAAC,MAAiB,EAAA;IACpC,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE1C,QAAA,MAAM,IAAI,GACR,CAAC;IACD,YAAA,CAAC;IACD,YAAA,CAAC;IACD,YAAA,CAAC,GAAG,UAAU,CAAC,MAAM;IACrB,YAAA,CAAC,GAAG,QAAQ,CAAC,MAAM;IACnB,YAAA,CAAC,GAAG,SAAS,CAAC,MAAM;gBACpB,CAAC,CAAC;IAEJ,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IAClC,QAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;YAEf,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1C,MAAM,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5C,MAAM,IAAI,CAAC,CAAC;YAEZ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,CAAC;YACZ,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC5C,QAAA,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC;YAE5B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,CAAC;YACZ,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAA,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;YAE1B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAChD,MAAM,IAAI,CAAC,CAAC;YACZ,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC3C,QAAA,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC;;YAG3B,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACtB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAEnC,QAAA,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;SAC5B;IAEO,IAAA,gBAAgB,CAAC,IAAgB,EAAA;YACvC,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,QAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACzE,IAAI,MAAM,GAAG,CAAC,CAAC;YAEf,OAAO,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;IACrC,YAAA,IAAI;oBACF,MAAM,WAAW,GAAG,MAAM,CAAC;oBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC1C,MAAM,IAAI,CAAC,CAAC;oBACZ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAkB,CAAC;oBACpD,MAAM,IAAI,CAAC,CAAC;oBACZ,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC5C,MAAM,IAAI,CAAC,CAAC;oBAEZ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC/C,MAAM,IAAI,CAAC,CAAC;IACZ,gBAAA,IAAI,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU;wBAAE,MAAM;IAC/C,gBAAA,MAAM,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;oBAClF,MAAM,IAAI,QAAQ,CAAC;oBAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC7C,MAAM,IAAI,CAAC,CAAC;IACZ,gBAAA,IAAI,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,UAAU;wBAAE,MAAM;IAC7C,gBAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;oBAC1E,MAAM,IAAI,MAAM,CAAC;oBAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC9C,MAAM,IAAI,CAAC,CAAC;IACZ,gBAAA,IAAI,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU;wBAAE,MAAM;IAC9C,gBAAA,IAAI,UAA+C,CAAC;IACpD,gBAAA,IAAI,OAAO,GAAG,CAAC,EAAE;IACf,oBAAA,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAC5E,oBAAA,IAAI;IACF,wBAAA,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;yBAC/B;IAAC,oBAAA,MAAM,YAAY;qBACrB;oBACD,MAAM,IAAI,OAAO,CAAC;;oBAGlB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAChD,MAAM,IAAI,CAAC,CAAC;IACZ,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IACxD,gBAAA,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;oBACvC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACxD,gBAAA,IAAI,CAAC,WAAW,KAAK,CAAC,MAAM,SAAS,IAAI,CAAC,cAAc,KAAK,CAAC,MAAM,SAAS,EAAE;;;IAG7E,oBAAA,OAAO,CAAC,IAAI,CAAC,+CAA+C,GAAG,CAAA,UAAA,CAAY,CAAC,CAAC;wBAC7E,SAAS;qBACV;oBAED,OAAO,CAAC,IAAI,CAAC;wBACX,GAAG;wBACH,IAAI;wBACJ,KAAK;wBACL,SAAS;wBACT,GAAG;IACH,oBAAA,IAAI,EAAE,UAAU;IAChB,oBAAA,QAAQ,EAAE,SAAS;IACpB,iBAAA,CAAC,CAAC;iBACJ;IAAC,YAAA,MAAM;oBACN,MAAM;iBACP;aACF;IAED,QAAA,OAAO,OAAO,CAAC;SAChB;IACF;;ICjUD;;;;;;;;;;;;IAYG;IAIH;IACO,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IAC3C,MAAM,aAAa,GAAG,sBAAsB,CAAC;IAC7C,MAAM,mBAAmB,GAAG,eAAe,CAAC;IAC5C,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAEvC;IACO,MAAM,wBAAwB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAaxD;IACA;IACA;UAEa,iBAAiB,CAAA;QAO5B,WACU,CAAA,OAAwB,EAChC,WAAA,GAAsB,wBAAwB,EAAA;YADtC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;;YAL1B,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;;YAEnB,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;IAMtB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;SAChC;;IAGO,IAAA,UAAU,CAAC,GAAW,EAAA;IAC5B,QAAA,OAAO,CAAG,EAAA,kBAAkB,CAAG,EAAA,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;SACnE;QAED,MAAM,MAAM,CAAC,IAAgB,EAAA;IAC3B,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;gBAAE,OAAO;IAClC,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;;gBAEzD,IAAI,CAAC,cAAc,EAAE,CAAC;IACtB,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;aACtB;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAgB,CAAC;YAElG,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;gBAC7C,MAAM,IAAI,CAAC,OAAO,CAAC,MAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;aACvC;iBAAM;;gBAEL,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC9C,IAAI,QAAQ,EAAE;IACZ,gBAAA,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IACxE,gBAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,gBAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;oBACxE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;iBACzC;qBAAM;oBACL,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;iBACrC;aACF;IACD,QAAA,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC;SACrC;IAED,IAAA,MAAM,OAAO,GAAA;YACX,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;;YAG3C,MAAM,QAAQ,GAAG,IAAI;IAClB,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACjE,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;;YAGjC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACxC,YAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;oBAAE,MAAM;IACjC,YAAA,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;aACnB;YACD,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;;YAGnD,MAAM,UAAU,GAAG,IAAI;IACpB,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1C,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACvE,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAEjC,MAAM,KAAK,GAAiB,EAAE,CAAC;;IAE/B,QAAA,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,UAAU,EAAE;gBAChC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzC,YAAA,IAAI,GAAG;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;aAC1C;;IAED,QAAA,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,aAAa,EAAE;gBACnC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzC,YAAA,IAAI,GAAG;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;aAC1C;;IAGD,QAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;IAC5B,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAClE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACrF,YAAA,IAAI,CAAC,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;;IAEpD,YAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;oBACzB,IAAI,CAAC,cAAc,EAAE,CAAC;IACtB,gBAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;iBACtB;aACF;IAAM,aAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;;IAEhC,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IACxB,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;aACtB;YAED,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC1D,QAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,QAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;IAAE,YAAA,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAAC,YAAA,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC;aAAE;IACrE,QAAA,OAAO,QAAQ,CAAC;SACjB;IAED,IAAA,MAAM,QAAQ,GAAA;YACZ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAC5B,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,gBAAgB,CAAC,CAAC;IAC9D,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtB,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;aACxC;IACD,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IACxB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;SACtB;IAED,IAAA,MAAM,MAAM,GAAA;YACV,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KACjB,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,gBAAgB,CAAC,CAAC;SAC/D;IACF;;IChKD;;;;;;;;;;IAUG;IAIH;IACM,SAAU,QAAQ,CAAC,MAAc,EAAA;QACrC,OAAO,CAAA,cAAA,EAAiB,MAAM,CAAA,CAAE,CAAC;IACnC,CAAC;UAEY,YAAY,CAAA;IAAzB,IAAA,WAAA,GAAA;YACU,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;YACjB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;YAClB,IAAc,CAAA,cAAA,GAAwB,IAAI,CAAC;YAC3C,IAAc,CAAA,cAAA,GAAyB,IAAI,CAAC;SAoErD;IAlEC;;;;IAIG;QACH,MAAM,OAAO,CAAC,MAAc,EAAA;IAC1B,QAAA,MAAM,GAAG,GAAI,UAAsC,CAAC,SAEvC,CAAC;IACd,QAAA,MAAM,WAAW,GAAG,GAAG,EAAE,KAAK,CAAC;YAC/B,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,UAAU,EAAE;IAC7D,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACvB,YAAA,OAAO,KAAK,CAAC;aACd;IACD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;;gBAE1C,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACtD,OAAO,CACL,QAAQ,CAAC,MAAM,CAAC,EAChB,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,EACxC,OAAO,IAAI,KAAI;oBACb,IAAI,CAAC,IAAI,EAAE;wBACT,MAAM,CAAC,IAAI,aAAa,CACtB,CAAA,UAAA,EAAa,MAAM,CAAA,yCAAA,CAA2C,EAC9D,aAAa,CACd,CAAC,CAAC;wBACH,OAAO;qBACR;IACD,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACrB,gBAAA,MAAM,cAAc,GAAG,IAAI,OAAO,CAAO,CAAC,GAAG,OAAO,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAClF,gBAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;;IAErC,gBAAA,OAAO,EAAE,CAAC;;IAEV,gBAAA,MAAM,cAAc,CAAC;IACvB,aAAC,CACF,CAAC;IACJ,SAAC,CAAC,CAAC;IACH,QAAA,OAAO,IAAI,CAAC;SACb;;IAGD,IAAA,MAAM,OAAO,GAAA;YACX,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO;IAC3B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;IACvB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC;IAChC,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,cAAe,CAAC;IAC/B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC3B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC3B,YAAA,GAAG,EAAE,CAAC;IACN,YAAA,IAAI;IAAE,gBAAA,MAAM,CAAC,CAAC;iBAAE;IAAC,YAAA,MAAM,mBAAmB;aAC3C;IACD,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;;QAGD,UAAU,GAAA;YACR,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;;QAGD,WAAW,GAAA;YACT,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;IACF;;IC3FD;;;IAGG;IAaH;IACA;IACA;UAEa,iBAAiB,CAAA;IAQ5B,IAAA,WAAA,CACE,GAAQ,EACR,GAAQ,EACR,YAA8B,IAAI,EAClC,QAAmB,GAAA,IAAI,EACvB,gBAA2B,GAAA,EAAE,GAAG,IAAI,GAAG,IAAI,EAAA;YARrC,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;IAUlB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACf,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACf,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzB,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;SAC1C;IAED,IAAA,MAAM,IAAI,GAAA;YACR,IAAI,CAAC,OAAO,EAAE,CAAC;;IAEf,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;IACxF,YAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;aACzB;SACF;;QAGO,mBAAmB,GAAA;IACzB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAsF,CAAC;IACxG,QAAA,IAAI,OAAO,GAAG,CAAC,gBAAgB,KAAK,UAAU,EAAE;IAC9C,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBACrC,IAAI,KAAK,GAAG,CAAC;IAAE,gBAAA,OAAO,KAAK,CAAC;aAC7B;IACD,QAAA,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,gBAAgB,KAAK,UAAU,GAAG,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;YACtF,OAAO,KAAK,GAAG,GAAG,CAAC;SACpB;IAED,IAAA,MAAM,UAAU,GAAA;IACd,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACvB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;IAClB,YAAA,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;aACjC;IACD,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;SAClB;IAEF;;ICtED;;;;;;IAMG;IA6CH;IACA;IACA;UAEa,gBAAgB,CAAA;IAA7B,IAAA,WAAA,GAAA;YACU,IAAE,CAAA,EAAA,GAAuB,IAAI,CAAC;YAC9B,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;YACZ,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC;SA4H5B;QA1HC,MAAM,IAAI,CAAC,IAAY,EAAA;IACrB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAQ,KAAA,EAAA,IAAI,EAAE,CAAC;YAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/C,YAAA,OAAO,CAAC,eAAe,GAAG,MAAK;IAC7B,gBAAA,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAC1B,gBAAA,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;IACjD,oBAAA,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBACtC;IACH,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,SAAS,GAAG,MAAK;IACvB,gBAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IACzB,gBAAA,OAAO,EAAE,CAAC;IACZ,aAAC,CAAC;IACF,YAAA,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,qCAAqC,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAClH,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,IAAI,IAAI,CAAC,EAAE,EAAE;IACX,YAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAChB,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;aAChB;SACF;QAED,MAAM,GAAA;IACJ,QAAA,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC;SACzB;QAED,MAAM,IAAI,CAAC,GAAW,EAAA;IACpB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACtD,YAAA,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpD,YAAA,GAAG,CAAC,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IAClD,YAAA,GAAG,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,sCAAsC,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC3G,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,KAAK,CAAC,GAAW,EAAE,IAAiB,EAAA;IACxC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACvD,YAAA,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC9C,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;IAChC,YAAA,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,qCAAqC,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC1G,SAAC,CAAC,CAAC;SACJ;IAED;;;IAGG;QACH,MAAM,SAAS,CAAC,OAAoC,EAAA;YAClD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;IAC9B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBACvD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;oBACtB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;iBAC9B;gBACD,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;IAChC,YAAA,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,2CAA2C,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAChH,SAAC,CAAC,CAAC;SACJ;QAED,MAAM,MAAM,CAAC,GAAW,EAAA;IACtB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACvD,YAAA,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC3C,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;IAChC,YAAA,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,wCAAwC,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAC9G,SAAC,CAAC,CAAC;SACJ;;QAGD,MAAM,UAAU,CAAC,IAAc,EAAA;IAC7B,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;IAC9B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBACvD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,gBAAA,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBACnB;gBACD,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;IAChC,YAAA,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,8CAA8C,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACpH,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,QAAQ,GAAA;IACZ,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACtD,YAAA,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;IACxD,YAAA,GAAG,CAAC,SAAS,GAAG,MAAM,OAAO,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,EAAc,CAAC;IAC9D,YAAA,GAAG,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC1F,SAAC,CAAC,CAAC;SACJ;QAED,MAAM,MAAM,CAAC,GAAW,EAAA;YACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpC,OAAO,MAAM,KAAK,IAAI,CAAC;SACxB;IAED,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;IACrC,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBACvD,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;gBACvC,EAAE,CAAC,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;IAChC,YAAA,EAAE,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,aAAa,CAAC,kCAAkC,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACvG,SAAC,CAAC,CAAC;SACJ;QAEO,QAAQ,GAAA;YACd,IAAI,CAAC,IAAI,CAAC,EAAE;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,+BAA+B,EAAE,kBAAkB,CAAC,CAAC;YAC3F,OAAO,IAAI,CAAC,EAAE,CAAC;SAChB;IACF,CAAA;IAED;IACA;IACA;UAEa,aAAa,CAAA;IAA1B,IAAA,WAAA,GAAA;IACU,QAAA,IAAA,CAAA,KAAK,GAA6B,IAAI,GAAG,EAAE,CAAC;YAC5C,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;SAkDxB;QAhDC,MAAM,IAAI,CAAC,KAAa,EAAA;IACtB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;IAED,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;QAED,MAAM,GAAA;YACJ,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QAED,MAAM,IAAI,CAAC,GAAW,EAAA;YACpB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;SACpC;IAED,IAAA,MAAM,KAAK,CAAC,GAAW,EAAE,IAAiB,EAAA;YACxC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SAC3B;QAED,MAAM,SAAS,CAAC,OAAoC,EAAA;IAClD,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACjD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;aAC3B;SACF;QAED,MAAM,MAAM,CAAC,GAAW,EAAA;IACtB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACxB;QAED,MAAM,UAAU,CAAC,IAAc,EAAA;IAC7B,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aACxB;SACF;IAED,IAAA,MAAM,QAAQ,GAAA;YACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;SACtC;QAED,MAAM,MAAM,CAAC,GAAW,EAAA;YACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SAC5B;IAED,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;SACpB;IACF;;IC3ND;IACA,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;UAE9B,WAAW,CAAA;IAAxB,IAAA,WAAA,GAAA;YACU,IAAI,CAAA,IAAA,GAAqC,IAAI,CAAC;YAC9C,IAAK,CAAA,KAAA,GAAqC,IAAI,CAAC;YAC/C,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;IACZ,QAAA,IAAA,CAAA,UAAU,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;SAsJvD;QApJC,MAAM,IAAI,CAAC,IAAY,EAAA;IACrB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IACnD,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;;IAExE,QAAA,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAChC;IAED,IAAA,MAAM,KAAK,GAAA;;IAET,QAAA,IAAI;gBACF,MAAM,IAAI,CAAC,UAAU,CAAC;aACvB;IAAC,QAAA,MAAM,oBAAoB;IAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IAClB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB;QAED,MAAM,GAAA;IACJ,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;SAC5B;;IAGD,IAAA,MAAM,iBAAiB,GAAA;YACrB,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;IACxB,QAAA,IAAI;IACF,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAY,CAAC;gBAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,YAAA,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;IACxC,gBAAA,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;IAChD,oBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAClB;iBACF;IACD,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;IACxB,gBAAA,IAAI;wBAAE,MAAM,IAAI,CAAC,KAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;qBAAE;IAAC,gBAAA,MAAM,gBAAgB;iBACpE;aACF;IAAC,QAAA,MAAM,iBAAiB;SAC1B;QAED,MAAM,IAAI,CAAC,GAAW,EAAA;YACpB,IAAI,CAAC,IAAI,CAAC,KAAK;IAAE,YAAA,OAAO,IAAI,CAAC;IAC7B,QAAA,IAAI;gBACF,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/C,YAAA,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IAChC,YAAA,OAAO,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;aACjC;IAAC,QAAA,MAAM;IACN,YAAA,OAAO,IAAI,CAAC;aACb;SACF;IAED;;;IAGG;IACH,IAAA,MAAM,KAAK,CAAC,GAAW,EAAE,IAAiB,EAAA;YACxC,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAW;IAC1C,YAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAM,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,YAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC;IAC3C,YAAA,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,YAAA,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;IACzB,SAAC,CAAC,CAAC;;IAEH,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC,CAAC;IAC7D,QAAA,OAAO,GAAG,CAAC;SACZ;IAED;;;;IAIG;IACH,IAAA,MAAM,MAAM,CAAC,GAAW,EAAE,IAAiB,EAAA;YACzC,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAW;IAC1C,YAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAM,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,YAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IACpC,YAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,YAAA,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,YAAA,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;IACzB,SAAC,CAAC,CAAC;IACH,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC,CAAC;IAC7D,QAAA,OAAO,GAAG,CAAC;SACZ;;QAGD,MAAM,SAAS,CAAC,OAAoC,EAAA;YAClD,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAW;IAC1C,YAAA,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IACjD,gBAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAM,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,gBAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC;IAC3C,gBAAA,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,gBAAA,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;iBACxB;IACH,SAAC,CAAC,CAAC;IACH,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC,CAAC;IAC7D,QAAA,OAAO,GAAG,CAAC;SACZ;QAED,MAAM,MAAM,CAAC,GAAW,EAAA;YACtB,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAW;IAC1C,YAAA,IAAI;oBAAE,MAAM,IAAI,CAAC,KAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;iBAAE;IAAC,YAAA,MAAM,gBAAgB;IACpE,SAAC,CAAC,CAAC;IACH,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC,CAAC;IAC7D,QAAA,OAAO,GAAG,CAAC;SACZ;;QAGD,MAAM,UAAU,CAAC,IAAc,EAAA;YAC7B,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAW;IAC1C,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,gBAAA,IAAI;wBAAE,MAAM,IAAI,CAAC,KAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;qBAAE;IAAC,gBAAA,MAAM,gBAAgB;iBACnE;IACH,SAAC,CAAC,CAAC;IACH,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC,CAAC;IAC7D,QAAA,OAAO,GAAG,CAAC;SACZ;IAED,IAAA,MAAM,QAAQ,GAAA;YACZ,IAAI,CAAC,IAAI,CAAC,KAAK;IAAE,YAAA,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAa,EAAE,CAAC;;IAE1B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAY,CAAC;IAC9B,QAAA,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;IACxC,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACjB;IACD,QAAA,OAAO,IAAI,CAAC;SACb;QAED,MAAM,MAAM,CAAC,GAAW,EAAA;YACtB,IAAI,CAAC,IAAI,CAAC,KAAK;IAAE,YAAA,OAAO,KAAK,CAAC;IAC9B,QAAA,IAAI;gBACF,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACpC,YAAA,OAAO,IAAI,CAAC;aACb;IAAC,QAAA,MAAM;IACN,YAAA,OAAO,KAAK,CAAC;aACd;SACF;IAED,IAAA,MAAM,KAAK,GAAA;YACT,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;IACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAY,CAAC;IAC9B,QAAA,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;IACxC,YAAA,IAAI;oBAAE,MAAM,IAAI,CAAC,KAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBAAE;IAAC,YAAA,MAAM,gBAAgB;aACpE;SACF;IACF;;IClLD;;;;;;IAMG;IAEH,MAAM,IAAI,GAAG,SAAS,CAAC;IACvB,MAAMA,WAAS,GAAG,EAAE,CAAC;IAErB;;;IAGG;UACU,aAAa,CAAA;IAA1B,IAAA,WAAA,GAAA;YACU,IAAS,CAAA,SAAA,GAAqB,IAAI,CAAC;YACnC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;SAsC1B;QApCC,IAAI,OAAO,KAAc,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IAEhD,IAAA,MAAM,IAAI,CAAC,QAAgB,EAAE,IAAiB,EAAA;IAC5C,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAC/C,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,CAC5D,CAAC;IACF,QAAA,MAAM,UAAU,GAAQ,IAAI,IAAI,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3E,IAAI,CAAC,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAC5C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAS,EAChF,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAS,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAC/E,CAAC;IACF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACrB,QAAA,OAAO,UAAwB,CAAC;SACjC;QAED,MAAM,WAAW,CAAC,IAA8B,EAAA;YAC9C,IAAI,CAAC,IAAI,CAAC,SAAS;IAAE,YAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC/D,QAAA,MAAM,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAACA,WAAS,CAAC,CAAQ,CAAC;;;IAGpE,QAAA,MAAM,KAAK,IAAI,IAAI,YAAY,UAAU,GAAG,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAiB,CAAC;YACzF,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACjG,OAAO,EAAE,EAAE,EAAE,EAAgB,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;SACnD;IAED,IAAA,MAAM,WAAW,CAAC,EAAc,EAAE,IAA8B,EAAA;YAC9D,IAAI,CAAC,IAAI,CAAC,SAAS;IAAE,YAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC/D,QAAA,MAAM,UAAU,IAAI,IAAI,YAAY,UAAU,GAAG,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAiB,CAAC;YAC9F,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;SACrF;QAED,KAAK,GAAA;IACH,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;IACF;;ICvDD;;;;;;;;;;;;;;;;;IAiBG;IAMH,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,MAAM,WAAW,GAAG,gBAAgB,CAAC;IACrC;IACA,MAAM,cAAc,GAAG,mCAAmC,CAAC;IAE3D;IACA;IACA;IAEA,SAAS,aAAa,CAAC,KAAiB,EAAA;IACtC,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAC9C;QACD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE;YAAE,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,SAAS,aAAa,CAAC,GAAW,EAAA;IAChC,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,QAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;SACnD;IACD,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAClE,IAAA,OAAO,KAAK,CAAC;IACf,CAAC;IAED;IACA;IACA;UAEa,gBAAgB,CAAA;QAI3B,WACU,CAAA,KAAsB,EACtB,QAAgB,EAAA;YADhB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;YACtB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;IALlB,QAAA,IAAA,CAAA,MAAM,GAAkB,IAAI,aAAa,EAAE,CAAC;YAC5C,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;YAMrB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;IACtC,YAAA,MAAM,IAAI,aAAa,CAAC,uCAAuC,EAAE,2BAA2B,CAAC,CAAC;aAC/F;SACF;;QAGD,QAAQ,GAAA;YACN,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;;QAGD,aAAa,GAAA;IACX,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;SAC5B;QAED,MAAM,IAAI,CAAC,IAAY,EAAA;YACrB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE;gBACxB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC7B;YAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/C,IAAI,GAAG,EAAE;;IAEP,YAAA,IAAI,IAA0C,CAAC;IAC/C,YAAA,IAAI;IACF,gBAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAyC,CAAC;iBAC1F;IAAC,YAAA,MAAM;IACN,gBAAA,MAAM,IAAI,aAAa,CAAC,mCAAmC,EAAE,oBAAoB,CAAC,CAAC;iBACpF;gBACD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;IAChC,gBAAA,MAAM,IAAI,aAAa,CAAC,mCAAmC,EAAE,oBAAoB,CAAC,CAAC;iBACpF;gBACD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC5C,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnD,YAAA,IAAI,aAAa,CAAC,UAAU,IAAI,SAAS,EAAE;IACzC,gBAAA,MAAM,IAAI,aAAa,CAAC,mCAAmC,EAAE,oBAAoB,CAAC,CAAC;iBACpF;gBACD,MAAM,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;gBAChD,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACrD,YAAA,IAAI;oBACF,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;iBAC/C;IAAC,YAAA,MAAM;;IAEN,gBAAA,MAAM,IAAI,aAAa,CACrB,6DAA6D,EAC7D,oBAAoB,CACrB,CAAC;iBACH;aACF;iBAAM;;gBAEL,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IACzC,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,EAAE;oBACvC,MAAM,IAAI,aAAa,CACrB,qEAAqE;wBACrE,qEAAqE,EACrE,2BAA2B,CAC5B,CAAC;iBACH;;IAED,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACnD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3F,YAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACjE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACxB,YAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;IAClD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;IAC7B,gBAAA,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC;IACzB,gBAAA,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC;IAClC,aAAA,CAAC,CAAC;IACH,YAAA,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;aAC/E;IAED,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;IAED,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACzB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACpB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;QAED,MAAM,GAAA;YACJ,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QAED,MAAM,IAAI,CAAC,GAAW,EAAA;YACpB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,GAAG,KAAK,IAAI;IAAE,YAAA,OAAO,IAAI,CAAC;IAC9B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SAC1B;IAED,IAAA,MAAM,KAAK,CAAC,GAAW,EAAE,IAAiB,EAAA;YACxC,IAAI,CAAC,WAAW,EAAE,CAAC;IACnB,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;SACvD;QAED,MAAM,SAAS,CAAC,OAAoC,EAAA;YAClD,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,SAAS,GAAgC,EAAE,CAAC;IAClD,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACjD,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aAC3C;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;SACvC;QAED,MAAM,MAAM,CAAC,GAAW,EAAA;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC9B;QAED,MAAM,UAAU,CAAC,IAAc,EAAA;YAC7B,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACnC;IAED,IAAA,MAAM,QAAQ,GAAA;YACZ,IAAI,CAAC,WAAW,EAAE,CAAC;IACnB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;SAC9B;QAED,MAAM,MAAM,CAAC,GAAW,EAAA;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC/B;IAED,IAAA,MAAM,KAAK,GAAA;;YAET,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IACzC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,CAAC;IACvD,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aACvC;SACF;;;;QAMO,WAAW,GAAA;YACjB,IAAI,CAAC,IAAI,CAAC,MAAM;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,6BAA6B,EAAE,kBAAkB,CAAC,CAAC;IAC7F,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,sCAAsC,EAAE,oBAAoB,CAAC,CAAC;SACjH;;QAGO,MAAM,OAAO,CAAC,IAAiB,EAAA;YACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChD,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7D,QAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;YACrC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACxB,QAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;IAClD,QAAA,OAAO,GAAG,CAAC;SACZ;;QAGO,MAAM,OAAO,CAAC,IAAiB,EAAA;IACrC,QAAA,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,QAAA,IAAI,KAAK,CAAC,UAAU,IAAI,SAAS,EAAE;IACjC,YAAA,MAAM,IAAI,aAAa,CAAC,4CAA4C,EAAE,oBAAoB,CAAC,CAAC;aAC7F;YACD,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACxC,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC7C,QAAA,IAAI;gBACF,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;aACtD;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,aAAa;IAAE,gBAAA,MAAM,KAAK,CAAC;gBAChD,MAAM,IAAI,aAAa,CAAC,iDAAiD,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAC;aACzG;SACF;IACF;;ICxOD;;;;;;;;;;;;;;IAcG;UAOU,gBAAgB,CAAA;QAI3B,WACU,CAAA,WAAwB,EACxB,UAAsB,EAAA;YADtB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;YACxB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;;IAJxB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;SAK1C;;IAGJ,IAAA,MAAM,IAAI,CAAC,EAAU,EAAE,IAAgB,EAAA;IACrC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC;IACtE,QAAA,MAAM,OAAO,GAAiB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEvF,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;IAClC,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,YAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtB,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACb,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3F,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACnB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;;gBAElB,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC7B;YACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;SAC3B;;IAGD,IAAA,UAAU,CAAC,EAAU,EAAA;YACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC7B;IAED;;;;IAIG;IACH,IAAA,MAAM,IAAI,CAAC,EAAU,EAAE,OAAiB,EAAE,SAAiB,EAAA;IACzD,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;YACtC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,YAAA,IAAI,CAAC,IAAI;IAAE,gBAAA,OAAO,IAAI,CAAC;;gBAEvB,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC7B;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC3D,QAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;YACvD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,QAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;IACtB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;gBAC1D,IAAI,IAAI,IAAI,CAAC;oBAAE,MAAM;IACrB,YAAA,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;gBAClC,GAAG,IAAI,IAAI,CAAC;aACb;IACD,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxB,QAAA,OAAO,GAAG,CAAC;SACZ;;IAGD,IAAA,MAAM,MAAM,CAAC,EAAU,EAAE,OAAiB,EAAA;IACxC,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;IAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,YAAA,IAAI;oBACF,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;iBAC3C;IAAC,YAAA,MAAM,iBAAiB;aAC1B;IACD,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACzB;IACF;;IC9FD;;;;;IAKG;IAOH;IACA;IACA;UAEa,WAAW,CAAA;IAMtB,IAAA,WAAA,CAAY,OAAwB,EAAA;YAJ5B,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;YACf,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;YACnB,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;IAGlB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;;QAGD,MAAM,IAAI,CAAC,MAAc,EAAA;IACvB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACpD,QAAA,IAAI,IAAI,IAAI,IAAI,YAAY,WAAW,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE;IAC/D,YAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;aAC5C;iBAAM;IACL,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACpB,YAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;aACvB;IACD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;;QAID,MAAM,QAAQ,CAAC,MAAc,EAAA;IAC3B,QAAA,MAAM,GAAG,GAAG,CAAM,GAAA,EAAA,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI,EAAE;;;IAGT,YAAA,OAAO,IAAI,CAAC;aACb;;IAGD,QAAA,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,EAAE;IAC/B,YAAA,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;IAC1C,YAAA,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,YAAA,OAAO,MAAM,CAAC;aACf;IAED,QAAA,OAAO,IAAI,CAAC;SACb;IAED,IAAA,MAAM,SAAS,CAAC,MAAc,EAAE,IAAiB,EAAA;IAC/C,QAAA,MAAM,GAAG,GAAG,CAAM,GAAA,EAAA,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SACrC;IAED,IAAA,MAAM,cAAc,GAAA;IAClB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC7B,QAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtB,QAAA,OAAO,EAAE,CAAC;SACX;;QAGD,MAAM,eAAe,CAAC,KAAa,EAAA;YACjC,IAAI,KAAK,IAAI,CAAC;IAAE,YAAA,OAAO,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;IAC9B,QAAA,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;IAAE,YAAA,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACpD,QAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtB,QAAA,OAAO,GAAG,CAAC;SACZ;QAED,MAAM,UAAU,CAAC,OAAe,EAAA;;IAE9B,QAAA,MAAM,GAAG,GAAG,CAAM,GAAA,EAAA,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAChC;;IAIO,IAAA,MAAM,QAAQ,GAAA;IACpB,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IAC/B,QAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACvD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;SAC9C;;IAGD,IAAA,MAAM,QAAQ,GAAA;IACZ,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACpB,QAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;SACvB;IACF;;ICvGD;;;;;;IAMG;IAKH;IACA;IACA;UAEa,WAAW,CAAA;IAAxB,IAAA,WAAA,GAAA;;IAEU,QAAA,IAAA,CAAA,YAAY,GAA8B,IAAI,GAAG,EAAE,CAAC;;IAGpD,QAAA,IAAA,CAAA,UAAU,GAA0B,IAAI,GAAG,EAAE,CAAC;;YAG9C,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;;YAGd,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;IAE5B;;;IAGG;IACK,QAAA,IAAA,CAAA,YAAY,GAA6B,IAAI,GAAG,EAAE,CAAC;SAoJ5D;;;;;QA7IC,gBAAgB,GAAA;IACd,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE;gBACzB,KAAK;gBACL,KAAK,EAAE,gBAAgB,CAAC,MAAM;gBAC9B,WAAW,EAAE,IAAI,CAAC,eAAe;IACjC,YAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;IACtB,SAAA,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IACxC,QAAA,OAAO,KAAK,CAAC;SACd;;IAGD,IAAA,iBAAiB,CAAC,KAAa,EAAA;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvC,QAAA,IAAI,CAAC,GAAG;IAAE,YAAA,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,CAAA,UAAA,CAAY,CAAC,CAAC;IAE5D,QAAA,GAAG,CAAC,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC;YACvC,IAAI,CAAC,eAAe,EAAE,CAAC;;YAGvB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,SAAS,EAAE;IACb,YAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;oBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjD,gBAAA,IAAI,CAAC,QAAQ;wBAAE,SAAS;IACxB,gBAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;IAC9B,oBAAA,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;IAC3B,wBAAA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;yBAC1B;qBACF;iBACF;aACF;;IAGD,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACjC;;IAGD,IAAA,mBAAmB,CAAC,KAAa,EAAA;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvC,QAAA,IAAI,CAAC,GAAG;IAAE,YAAA,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,CAAA,UAAA,CAAY,CAAC,CAAC;IAE5D,QAAA,GAAG,CAAC,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC;;YAGrC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,SAAS,EAAE;IACb,YAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;oBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjD,gBAAA,IAAI,CAAC,QAAQ;wBAAE,SAAS;IACxB,gBAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAC3D,gBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;IACzB,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;qBACpC;yBAAM;wBACL,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;qBAC3C;iBACF;aACF;IAED,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACjC;;;;IAMD;;IAEG;IACH,IAAA,YAAY,CACV,SAAiB,EACjB,GAAW,EACX,IAA6B,EAC7B,KAAa,EAAA;IAEb,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,GAAG,EAAE,CAAC;IACvC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEvD,QAAA,MAAM,UAAU,GAAe;gBAC7B,KAAK;gBACL,IAAI;gBACJ,WAAW,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI;IACvE,YAAA,SAAS,EAAE,KAAK;aACjB,CAAC;IAEF,QAAA,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;;IAE1C,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;SAC7C;IAED;;IAEG;IACH,IAAA,aAAa,CAAC,SAAiB,EAAE,GAAW,EAAE,KAAa,EAAA;IACzD,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAwC,EAAE,KAAK,CAAC,CAAC;SAC5G;IAED;;;;IAIG;IACH,IAAA,eAAe,CAAC,KAAa,EAAA;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/C,QAAA,IAAI,CAAC,SAAS;gBAAE,OAAO;IACvB,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjD,YAAA,IAAI,CAAC,QAAQ;oBAAE,SAAS;IACxB,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAC3D,YAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;IACzB,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;iBACpC;qBAAM;oBACL,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;iBAC3C;aACF;SACF;IAED;;;IAGG;QACH,EAAE,CAAC,oBAA4B,GAAG,EAAA;YAChC,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;IACpD,YAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,iBAAiB;oBAAE,SAAS;;IAGnD,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC;gBACnE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;aACzC;SACF;IAED;;IAEG;QACH,YAAY,GAAA;YACV,OAAO,IAAI,CAAC,eAAe,CAAC;SAC7B;IACF;;ICpLD;;;;;;;;;;;;;;;;IAgBG;IAIH;;IAEG;aACa,cAAc,CAC5B,GAAgB,EAChB,MAAc,EACd,IAAY,EAAA;IAEZ,IAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACjC,IAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAA,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7B,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACvB;;ICpCA;;;;;;;;IAQG;IAKH;IACgB,SAAA,UAAU,CAAC,MAAc,EAAE,IAAc,EAAA;IACvD,IAAA,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,IAAA,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACnC,OAAO;YACL,MAAM;YACN,IAAI;YACJ,IAAI;IACJ,QAAA,KAAK,EAAE,IAAI;IACX,QAAA,IAAI,EAAE,CAAC;IACP,QAAA,IAAI,EAAE,IAAI;IACV,QAAA,IAAI,EAAE,IAAI;IACV,QAAA,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;SACvB,CAAC;IACJ;;IC3BA;;;IAGG;IAIH;IACA;IACA;IAEA;;IAEG;UACU,OAAO,CAAA;IAApB,IAAA,WAAA,GAAA;YACU,IAAI,CAAA,IAAA,GAAsB,IAAI,CAAC;YAC/B,IAAI,CAAA,IAAA,GAAsB,IAAI,CAAC;YAC/B,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;SAwEnB;IAtEC,IAAA,IAAI,IAAI,GAAA;YACN,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;;IAGD,IAAA,UAAU,CAAC,IAAgB,EAAA;;IAEzB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;gBAAE,OAAO;;YAG/B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;YAEpG,IAAI,MAAM,EAAE;;IAEV,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACnB;iBAAM;gBACL,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;;IAGD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACtB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;IACb,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aACvB;IACD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IACd,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aAClB;SACF;;IAGD,IAAA,MAAM,CAAC,IAAgB,EAAA;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;IACpG,QAAA,IAAI,CAAC,MAAM;gBAAE,OAAO;IAEpB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;SAC1C;;IAGO,IAAA,MAAM,CAAC,IAAgB,EAAA;IAC7B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;aAC5B;IAAM,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;IAC7B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;aACvB;IAED,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;aAC5B;IAAM,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;IAC7B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;aACvB;IAED,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB;;QAGD,KAAK,GAAA;IACH,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAChB;;QAGD,MAAM,GAAA;YACJ,OAAO,IAAI,CAAC,IAAI,CAAC;SAClB;IAEF,CAAA;IAQD;;IAEG;UACU,eAAe,CAAA;QAK1B,WAAY,CAAA,QAAgB,EAAE,OAAyB,EAAA;IACrD,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;IACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;;IAGD,IAAA,MAAM,CAAC,IAAgB,EAAA;IACrB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC3B;;IAGD,IAAA,GAAG,CAAC,IAAgB,EAAA;IAClB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACnB;;IAGD,IAAA,MAAM,CAAC,IAAgB,EAAA;IACrB,QAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACvB;IAED;;;;IAIG;QACH,MAAM,aAAa,CAAC,KAAa,EAAA;YAC/B,IAAI,OAAO,GAAG,CAAC,CAAC;YAEhB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE;;IAEjE,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC5C,YAAA,IAAI,CAAC,MAAM;oBAAE,MAAM;;IAGnB,YAAA,IAAI,MAAM,CAAC,KAAK,EAAE;IAChB,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,gBAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;iBACtB;IAED,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxB,YAAA,OAAO,EAAE,CAAC;aACX;IAED,QAAA,OAAO,OAAO,CAAC;SAChB;;QAGO,qBAAqB,GAAA;;YAE3B,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAChC,OAAO,OAAO,EAAE;gBACd,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;IAAE,gBAAA,OAAO,OAAO,CAAC;IACzD,YAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;;IAGD,QAAA,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAC5B,OAAO,OAAO,EAAE;IACd,YAAA,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;IAAE,gBAAA,OAAO,OAAO,CAAC;IACvC,YAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;IAED,QAAA,OAAO,IAAI,CAAC;SACb;;QAGD,KAAK,GAAA;IACH,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;SAClB;IACF;;IChLD;;;;;IAKG;IAwBH;IACA;IACA;UAEa,UAAU,CAAA;QAMrB,WAAY,CAAA,MAAc,EAAE,QAAA,GAAmB,yBAAyB,EAAA;IALhE,QAAA,IAAA,CAAA,KAAK,GAA4B,IAAI,GAAG,EAAE,CAAC;YAG3C,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;IAGrB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,QAAQ,EAAE,OAAO,IAAI,KAAI;IAC3D,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;IACd,gBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;iBACpB;IACH,SAAC,CAAC,CAAC;SACJ;;;;IAMD;;;IAGG;QACH,MAAM,OAAO,CAAC,MAAc,EAAA;;YAE1B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,IAAI,EAAE;IACR,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;IACZ,YAAA,OAAO,IAAI,CAAC;aACb;;YAGD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClD,QAAA,IAAI,CAAC,MAAM;IAAE,YAAA,OAAO,IAAI,CAAC;;YAGzB,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAErC,QAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAa,CAAC;IAC1D,QAAA,IAAI,GAAG;gBACL,MAAM;gBACN,IAAI;IACJ,YAAA,IAAI,EAAE,MAAM;IACZ,YAAA,KAAK,EAAE,KAAK;IACZ,YAAA,IAAI,EAAE,CAAC;IACP,YAAA,IAAI,EAAE,IAAI;IACV,YAAA,IAAI,EAAE,IAAI;IACV,YAAA,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;aACvB,CAAC;YAEF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,QAAA,OAAO,IAAI,CAAC;SACb;IAED;;;IAGG;QACH,MAAM,QAAQ,CAAC,KAAa,EAAE,IAAiB,GAAA,QAAQ,CAAC,IAAI,EAAA;YAC1D,IAAI,KAAK,IAAI,CAAC;IAAE,YAAA,OAAO,EAAE,CAAC;IAC1B,QAAA,IAAI,OAAiB,CAAC;YACtB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,UAAU,EAAE;gBACrD,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAgB,CAAC,KAAK,CAAC,CAAC;aACrD;iBAAM;gBACL,OAAO,GAAG,EAAE,CAAC;gBACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;oBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;aAClF;YAED,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAEzC,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtC,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;gBACd,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpB;IACD,QAAA,OAAO,OAAO,CAAC;SAChB;IAED;;IAEG;IACH,IAAA,KAAK,CAAC,IAAgB,EAAA;IACpB,QAAA,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;gBACjB,IAAI,CAAC,IAAI,EAAE,CAAC;aACb;SACF;IAED;;IAEG;IACH,IAAA,SAAS,CAAC,IAAgB,EAAA;IACxB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SACnB;IAED;;IAEG;QACH,MAAM,SAAS,CAAC,MAAc,EAAA;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;IACtB,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aACpB;SACF;IAED;;IAEG;IACH,IAAA,MAAM,QAAQ,GAAA;YACZ,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;IACjC,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;IACd,gBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;iBACpB;aACF;SACF;IAED;;IAEG;IACH,IAAA,UAAU,CAAC,MAAc,EAAA;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,IAAI,EAAE;IACR,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;IAED;;IAEG;IACH,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;SACvB;IAEF;;IChLD;;;;;;;;;;;;;;IAcG;IAEH,MAAM,SAAS,GAAG,CAAC,CAAC;IACpB,MAAM,SAAS,GAAG,SAAS,GAAG,EAAE,CAAC;IACjC;IACA,MAAM,WAAW,GAAG,CAAC,CAAC;IAEhB,SAAU,WAAW,CAAC,KAAiB,EAAA;;IAE3C,IAAA,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE;IAC1B,QAAA,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IAC1C,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACjD,QAAA,OAAO,KAAK,CAAC;SACd;;;IAID,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACvE,IAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,IAAA,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACnB,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,IAAA,OAAO,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE;;IAE5B,QAAA,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC;IAC7B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC;IAC5C,QAAA,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBACrC,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,YAAA,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;IACzC,gBAAA,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,SAAS;IAAE,gBAAA,EAAE,EAAE,CAAC;gBAChE,IAAI,EAAE,IAAI,SAAS,IAAI,EAAE,GAAG,OAAO,EAAE;oBAAE,OAAO,GAAG,EAAE,CAAC;IAAC,gBAAA,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;iBAAE;aACzE;;IAGD,QAAA,IAAI,OAAO,GAAG,SAAS,IAAI,CAAC,EAAE,GAAG,QAAQ,KAAK,EAAE,EAAE;IAChD,YAAA,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC;IAC7B,YAAA,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;gBACvC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,UAAU,GAAG,IAAI,CAAC,CAAC;gBACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;oBAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACjE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC;IAC3B,YAAA,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC;gBAClC,EAAE,IAAI,OAAO,CAAC;gBACd,QAAQ,GAAG,EAAE,CAAC;aACf;iBAAM;;IAEL,YAAA,EAAE,EAAE,CAAC;;;IAGL,YAAA,IAAI,EAAE,GAAG,QAAQ,IAAI,EAAE,EAAE;IACvB,gBAAA,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;oBAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;wBAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;oBAC7D,QAAQ,GAAG,EAAE,CAAC;iBACf;aACF;SACF;;IAGD,IAAA,IAAI,SAAS,GAAG,EAAE,GAAG,QAAQ,CAAC;IAC9B,IAAA,OAAO,SAAS,GAAG,CAAC,EAAE;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACtC,QAAA,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;gBAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YAChE,SAAS,IAAI,KAAK,CAAC;YACnB,QAAQ,IAAI,KAAK,CAAC;SACnB;;QAGD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACjE,IAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACnE,IAAA,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClC,IAAA,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEe,SAAA,aAAa,CAAC,KAAiB,EAAE,aAAsB,EAAA;IACrE,IAAA,IAAI,KAAK,CAAC,UAAU,GAAG,WAAW,EAAE;IAClC,QAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;SACzD;IACD,IAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,YAAY,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,KAAK,WAAW,EAAE;IAC1D,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;SAC1B;QACD,IAAI,YAAY,IAAI,CAAC,IAAI,YAAY,GAAG,UAAU,EAAE;IAClD,QAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SAC1D;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;IACzC,IAAA,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAEnB,OAAO,EAAE,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,GAAG,YAAY,EAAE;IAClD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;IACnC,QAAA,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC;;YAGhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,EAAE,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;gBAC9E,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;aAC1B;;;YAID,IAAI,UAAU,KAAK,CAAC;gBAAE,SAAS;;IAG/B,QAAA,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU;gBAAE,MAAM;IACvC,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,QAAA,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IACxC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,IAAI,EAAE,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;gBACtD,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;IAC3B,YAAA,EAAE,EAAE,CAAC;aACN;SACF;IAED,IAAA,OAAO,GAAG,CAAC;IACb;;ICjIA;;;;;IAKG;IA4BH;IACA;IACA;UAEa,UAAU,CAAA;IAiCrB,IAAA,WAAA,CAAY,SAA2B,EAAE,EAAA;YAhChC,IAAI,CAAA,IAAA,GAAG,MAAM,CAAC;YAQf,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;YACf,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;;YAOZ,IAAM,CAAA,MAAA,GAAwB,IAAI,CAAC;;IAGnC,QAAA,IAAA,CAAA,OAAO,GAA6B,IAAI,GAAG,EAAE,CAAC;IAC9C,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,GAAG,EAAE,CAAC;YAC1C,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;;IAGd,QAAA,IAAA,CAAA,gBAAgB,GAAqB,IAAI,GAAG,EAAE,CAAC;;IAG/C,QAAA,IAAA,CAAA,IAAI,GAAgB,IAAI,WAAW,EAAE,CAAC;YACtC,IAAY,CAAA,YAAA,GAAkB,IAAI,CAAC;YACnC,IAAW,CAAA,WAAA,GAAgD,IAAI,CAAC;YAChE,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;;IA4nCd,QAAA,IAAA,CAAA,UAAU,GAA0F,IAAI,GAAG,EAAE,CAAC;YAznCpH,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAAC;SACrD;;;;IAMD,IAAA,MAAM,IAAI,CAAC,MAAc,EAAE,QAAgB,EAAA;YACzC,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO;;;IAGxB,QAAA,IAAI;IACF,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;aACjC;YAAC,OAAO,KAAK,EAAE;;IAEd,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;IACf,gBAAA,IAAI;IAAE,oBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;qBAAE;IAAC,gBAAA,MAAM,gBAAgB;IAC3D,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;iBACpB;gBACD,IAAI,KAAK,YAAY,aAAa;IAAE,gBAAA,MAAM,KAAK,CAAC;gBAChD,MAAM,IAAI,aAAa,CACrB,CAAuC,oCAAA,EAAA,MAAM,CAAG,CAAA,CAAA,EAChD,iBAAiB,EACjB,KAAK,CACN,CAAC;aACH;SACF;;QAGO,MAAM,YAAY,CAAC,MAAc,EAAA;IACvC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;;IAGrB,QAAA,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;IAChC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,YAAY,EAAE;;IAEjB,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,qEAAA,EAAwE,MAAM,CAAI,EAAA,CAAA;IAClF,gBAAA,4DAA4D,CAC7D,CAAC;aACH;;IAGD,QAAA,IAAI,WAA4B,CAAC;YACjC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,MAAM,EAAE;IACzC,YAAA,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;aACjC;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,WAAW,EAAE;IACrD,YAAA,WAAW,GAAG,IAAI,gBAAgB,EAAE,CAAC;aACtC;iBAAM;IACL,YAAA,WAAW,GAAG,IAAI,aAAa,EAAE,CAAC;aACnC;IACD,QAAA,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;YAG/B,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE;IACpC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aACnF;iBAAM;IACL,YAAA,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;;gBAE3B,IAAI,MAAM,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;IAC9C,gBAAA,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;IAC1B,gBAAA,MAAM,IAAI,aAAa,CACrB,+DAA+D,EAC/D,uBAAuB,CACxB,CAAC;iBACH;aACF;YACD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;YAGhC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;;YAGhF,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;;IAGrD,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC;IACjB,YAAA,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;IACxD,YAAA,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;IACpD,YAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;IAC/B,YAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;;gBAElD,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;gBACnE,YAAY;IACb,SAAA,CAAC,CAAC;;;;YAKH,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAChB,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EACnC,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,WAAW,CACxB,CAAC;;IAGF,QAAA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;;;;;YAMzB,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC5C,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IAC9D,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,KAAK,KAAK,EAAE;IACxD,oBAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,OAAO,EAAE,CAAC;wBAC7C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;IACtC,wBAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC;IACrB,4BAAA,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;IACxD,4BAAA,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;IACpD,4BAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;IAC/B,4BAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;gCAClD,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;gCACnE,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,SAAS,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAC;IACrE,yBAAA,CAAC,CAAC;IACH,wBAAA,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;4BACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;yBAC3C;qBACF;iBACF;aACF;;IAGD,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;;IAGtB,QAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;YACxC,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;IAElD,QAAA,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;IAC1B,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM;IAAE,gBAAA,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChE,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ;IAAE,gBAAA,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aACtE;;IAED,QAAA,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;IAC1B,YAAA,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;oBAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,UAAU,EAAE;;wBAEvC,MAAM,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;qBAChD;yBAAM;IACL,oBAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;qBACxB;iBACF;aACF;;;IAID,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;IACzB,YAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACvB,YAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;;;;gBAI5B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;IAC3C,gBAAA,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;iBAC5C;aACF;;;;YAKD,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAC5C,IAAI,CAAC,GAAG,EACR;gBACE,UAAU,EAAE,YAAW;oBACrB,IAAI,IAAI,CAAC,YAAY;wBAAE,OAAO;IAC9B,gBAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;iBAC7B;gBACD,KAAK,EAAE,YAAW;oBAChB,IAAI,IAAI,CAAC,YAAY;wBAAE,OAAO;IAC9B,gBAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;iBACxB;gBACD,gBAAgB,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;gBACnD,gBAAgB,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;IAClC,SAAA,EACnB,EAAE,QAAQ,EAAE,YAAc,EAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAS,EAC5D,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAC9B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAC7B,CAAC;IAEF,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;IAED,IAAA,MAAM,KAAK,GAAA;YACT,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;IACzB,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAC5B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;;;YAGvB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE;IACnD,YAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;aACtB;;IAED,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACjC,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;;;;IAIvB,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAC5B,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;;IAE3B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;IACf,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAC5B,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;aACpB;;;IAGD,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAC9B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;IAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IACzB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACxB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACxB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;IAED;;;;IAIG;IACH,IAAA,MAAM,MAAM,GAAA;YACV,IAAI,CAAC,UAAU,EAAE,CAAC;;YAElB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;;IAE7C,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;;IAE9B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACvB,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;;YAE5B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;IAC3C,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;aACpC;;IAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAiE,CAAC;IAC1F,QAAA,IAAI,OAAO,UAAU,CAAC,iBAAiB,KAAK,UAAU,EAAE;IACtD,YAAA,IAAI;IAAE,gBAAA,MAAM,UAAU,CAAC,iBAAiB,EAAE,CAAC;iBAAE;IAAC,YAAA,MAAM,iBAAiB;aACtE;;IAED,QAAA,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAChC,QAAA,IAAI,OAAO,GAAG,CAAC,EAAE;;IAEf,YAAA,OAAO,CAAC,IAAI,CAAC,gCAAgC,OAAO,CAAA,qBAAA,CAAuB,CAAC,CAAC;aAC9E;SACF;IAED;;;IAGG;IACK,IAAA,MAAM,kBAAkB,GAAA;YAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC3C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;IAEhC,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,QAAA,MAAM,WAAW,GAAG,OAAO,EAAU,KAAmB;IACtD,YAAA,MAAM,QAAQ,GAAG,EAAE,KAAK,MAAM,GAAG,iBAAiB,GAAG,CAAmB,gBAAA,EAAA,EAAE,EAAE,CAAC;gBAC7E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,YAAA,IAAI,CAAC,GAAG;oBAAE,OAAO;IACjB,YAAA,IAAI;IACF,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAkB,CAAC;IACzE,gBAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;IACrB,oBAAA,IAAI,CAAC,CAAC,OAAO,EAAE;IACb,wBAAA,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO;IAAE,4BAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;yBAC5C;qBACF;iBACF;IAAC,YAAA,MAAM,sCAAsC;IAChD,SAAC,CAAC;IAEF,QAAA,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;;YAE1B,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;IAC9C,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;oBAC9D,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;wBACjC,MAAM,WAAW,CAAC,CAAO,IAAA,EAAA,SAAS,IAAI,OAAO,CAAA,CAAE,CAAC,CAAC;qBAClD;iBACF;aACF;YAED,MAAM,SAAS,GAAG,MAAM;IACrB,aAAA,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,aAAA,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,QAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxB,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA,GAAA,EAAM,GAAG,CAAE,CAAA,CAAC,CAAC,CAAC;aACpE;SACF;IAED;;;IAGG;IACH,IAAA,MAAM,QAAQ,GAAA;YACZ,IAAI,CAAC,UAAU,EAAE,CAAC;;IAElB,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;;IAE3B,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC9B,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IAClC,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;IAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IACzB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACxB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACxB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;;IAEnB,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;;IAE5B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;SAC7B;IAED,IAAA,MAAM,KAAc,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;;QAIzC,MAAM,OAAO,CAAC,GAAW,EAAA;IACvB,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,GAAG,CAAA,CAAE,CAAC,CAAC;IACrD,QAAA,OAAO,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;SACnD;IAED,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,KAAa,EAAA;YACtC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,OAAA,EAAU,GAAG,CAAE,CAAA,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;SACnF;;;;QAMD,MAAM,WAAW,CAAC,MAAmB,EAAA;YACnC,IAAI,CAAC,UAAU,EAAE,CAAC;;;IAGlB,QAAA,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACjC,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,MAAM,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,cAAc,CAAC,CAAC;aAClF;YAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;;;IAInD,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC9D,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;oBACjC,MAAM,MAAM,GAAG,CAAG,EAAA,MAAM,CAAC,IAAI,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAE,CAAC;oBAC/C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;IACtC,oBAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC;IACrB,wBAAA,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;IACxD,wBAAA,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;IACpD,wBAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;IAC/B,wBAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;4BAClD,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;IACnE,wBAAA,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA,IAAA,EAAO,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAC;IACvE,qBAAA,CAAC,CAAC;IACH,oBAAA,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;wBACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;qBAC3C;iBACF;aACF;IAED,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAE5B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBACpB,IAAI,EAAE,aAAa,CAAC,YAAY;IAChC,YAAA,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,MAAM,CAAC,IAAI;IACtB,YAAA,GAAG,EAAE,EAAE;gBACP,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAwC;IAC/E,SAAA,CAAC,CAAC;SACJ;QAED,MAAM,SAAS,CAAC,SAAiB,EAAA;YAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;;YAG5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC9C,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC5C,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAG,EAAA,SAAS,CAAI,CAAA,EAAA,GAAG,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;aAC/C;;;IAID,QAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAE1C,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAChC,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAE5B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBACpB,IAAI,EAAE,aAAa,CAAC,UAAU;IAC9B,YAAA,KAAK,EAAE,CAAC;gBACR,SAAS;IACT,YAAA,GAAG,EAAE,EAAE;IACR,SAAA,CAAC,CAAC;SACJ;IAED;;;IAGG;QACK,MAAM,mBAAmB,CAAC,SAAiB,EAAA;IACjD,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,OAAO,CAAC;YACnC,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;IACpD,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,SAAS;IACzC,YAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,YAAA,IAAI;IACF,gBAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;iBACtB;IAAC,YAAA,MAAM,iBAAiB;aAC1B;IACD,QAAA,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;IAC7B,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACtC;SACF;QAED,MAAM,QAAQ,CAAC,SAAiB,EAAA;YAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SACpC;IAED,IAAA,MAAM,aAAa,GAAA;YACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;SACxC;QAED,MAAM,cAAc,CAAC,SAAiB,EAAA;YACpC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;SAC5C;;;;IAMD,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,IAA+B,EAAA;YAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,GAAG,GAAa,EAAE,CAAC;;YAEzB,MAAM,UAAU,GAA0C,EAAE,CAAC;IAE7D,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAChD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,YAAA,MAAM,GAAG,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,OAAO,EAAE,CAAC;;gBAGtC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY;IAChC,mBAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;sBAChD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,YAAA,IAAI,QAAQ,IAAI,CAAE,QAA+C,CAAC,aAAa,EAAE;oBAC/E,MAAM,IAAI,aAAa,CACrB,CAA0B,uBAAA,EAAA,OAAO,CAAe,YAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAC5D,eAAe,CAChB,CAAC;iBACH;gBAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;;oBAEzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACrC,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;iBAC1E;qBAAM;;oBAEL,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;iBAC9B;;gBAGD,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAEjE,YAAA,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAElB,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;oBAC7B,SAAS;IACT,gBAAA,GAAG,EAAE,OAAO;IACZ,gBAAA,IAAI,EAAE,SAAS;IAChB,aAAA,CAAC,CAAC;aACJ;YAED,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAEvC,QAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;YAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACzB,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,QAAA,OAAO,GAAG,CAAC;SACZ;IAED,IAAA,MAAM,IAAI,CAAC,SAAiB,EAAE,KAAgB,EAAA;YAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAE5B,QAAA,IAAI,IAA+B,CAAC;;YAGpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7D,QAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;gBACrB,IAAI,GAAG,QAAQ,CAAC;aACjB;iBAAM;gBACL,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;aACzC;;YAGD,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;IAG9C,QAAA,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;IACtD,YAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC,CAAC,CAAC;aAC5D;;IAGD,QAAA,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7C,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1C;;IAGD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;YACzC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;;YAG1C,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACzE,YAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,OAAQ,CAAC,CAAC,CAAC;aAC/D;;YAGD,IAAI,CAAC,aAAa,EAAE,CAAC;IAErB,QAAA,OAAO,IAAI,CAAC;SACb;IAED,IAAA,MAAM,MAAM,CACV,SAAiB,EACjB,KAAgB,EAChB,OAAgC,EAAA;YAEhC,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;;YAEd,MAAM,UAAU,GAA4D,EAAE,CAAC;;IAE/E,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;gBAC5C,MAAM,GAAG,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,GAAG,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;gBAEzC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;oBACzF,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IACvC,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;oBAGlC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;oBACrC,MAAM,SAAS,GAAG,KAAK,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;oBAE/C,IAAI,SAAS,EAAE;;wBAEb,MAAM,IAAI,CAAC,0BAA0B,CACnC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAC1D,CAAC;qBACH;oBAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;wBACzC,IAAI,SAAS,EAAE;IACb,wBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAwC,CAAC,CAAC;IACzF,wBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;yBAC3E;IACD,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,EAAE,OAAO,CAAC,CAAC;IACvD,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;qBACtE;yBAAM;IACL,oBAAA,IAAI,SAAS;IAAE,wBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpC,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,EAAE,OAAO,CAAC,CAAC;qBAChD;IACD,gBAAA,KAAK,EAAE,CAAC;oBAER,IAAI,SAAS,EAAE;wBACb,UAAU,CAAC,IAAI,CAAC;4BACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,wBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;4BAC7B,SAAS;IACT,wBAAA,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxB,qBAAA,CAAC,CAAC;qBACJ;oBACD,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,oBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;wBAC7B,SAAS;IACT,oBAAA,GAAG,EAAE,KAAK;IACV,oBAAA,IAAI,EAAE,OAAO;IACd,iBAAA,CAAC,CAAC;;IAGH,gBAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;iBAChF;aACF;YAED,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAEvC,QAAA,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IACxB,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,aAAa,EAAE,CAAC;IACrB,QAAA,OAAO,KAAK,CAAC;SACd;IAED;;;;IAIG;QACK,MAAM,0BAA0B,CACtC,SAAiB,EACjB,KAAa,EACb,KAAa,EACb,UAAmE,EACnE,OAAoB,EAAA;IAEpB,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,KAAK,EAAE,CAAC;IACzC,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO;IAClC,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;;YAGtB,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;gBACpD,IAAI,YAAY,KAAK,SAAS;oBAAE,SAAS;IACzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;wBAAE,SAAS;IACrD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,QAAQ,KAAK,SAAS;wBAAE,SAAS;IACrC,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU;wBAAE,SAAS;oBAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;oBACpD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE;IACrD,oBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,eAAA,EAAkB,SAAS,CAAU,OAAA,EAAA,KAAK,CAAmB,gBAAA,EAAA,OAAO,SAAS,YAAY,CAAA,oBAAA,CAAsB,EAC/G,uBAAuB,CACxB,CAAC;qBACH;iBACF;aACF;;YAGD,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;gBACpD,IAAI,YAAY,KAAK,SAAS;oBAAE,SAAS;IACzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;wBAAE,SAAS;IACrD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,QAAQ,KAAK,SAAS;wBAAE,SAAS;oBACrC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU;wBAAE,SAAS;oBAC9E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACpD,gBAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;wBAC5B,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;4BAAE,SAAS;wBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;wBAClD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;wBACvC,MAAM,UAAU,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC;IAC1F,oBAAA,MAAM,MAAM,GAAG,CAAA,EAAG,YAAY,CAAI,CAAA,EAAA,KAAK,EAAE,CAAC;wBAC1C,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;4BACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACzC,wBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;yBAC5E;6BAAM;4BACL,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;yBAClC;wBACD,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;wBACrE,UAAU,CAAC,IAAI,CAAC;4BACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,wBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;IAC7B,wBAAA,SAAS,EAAE,YAAY;IACvB,wBAAA,GAAG,EAAE,KAAK;IACV,wBAAA,IAAI,EAAE,UAAU;IACjB,qBAAA,CAAC,CAAC;qBACJ;iBACF;aACF;SACF;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAA;YAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;;YAEd,MAAM,UAAU,GAA4D,EAAE,CAAC;;IAE/E,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;gBAC5C,MAAM,GAAG,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,GAAG,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;gBAEzC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;;oBAEzF,KAAK,IAAI,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;oBAC7F,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;;IAEzC,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAwC,CAAC,CAAC;IACzF,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;qBAC3E;yBAAM;IACL,oBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;qBACtB;IACD,gBAAA,KAAK,EAAE,CAAC;oBAER,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,oBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;wBAC7B,SAAS;IACT,oBAAA,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxB,iBAAA,CAAC,CAAC;;IAGH,gBAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;iBACvE;aACF;YAED,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAEvC,QAAA,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IACxB,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,aAAa,EAAE,CAAC;IACrB,QAAA,OAAO,KAAK,CAAC;SACd;IAED;;;;;;;IAOG;QACK,MAAM,oBAAoB,CAChC,SAAiB,EACjB,OAAe,EACf,UAAmE,EACnE,OAAoB,EAAA;YAEpB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,OAAO,EAAE,CAAC;IAC3C,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IAAE,YAAA,OAAO,CAAC,CAAC;IACpC,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEtB,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;gBACpD,IAAI,YAAY,KAAK,SAAS;oBAAE,SAAS;IACzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;wBAAE,SAAS;IACrD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,QAAQ,KAAK,SAAS;wBAAE,SAAS;oBAErC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;oBACpD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;IAEtE,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IACxD,oBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,oBAAA,EAAuB,SAAS,CAAA,gBAAA,EAAmB,OAAO,CAAA,MAAA,EAAS,YAAY,CAAA,oBAAA,CAAsB,EACrG,uBAAuB,CACxB,CAAC;qBACH;IAED,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE;wBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;IAClD,oBAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;4BAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;;IAEvC,wBAAA,KAAK,IAAI,MAAM,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;;IAEnF,wBAAA,MAAM,MAAM,GAAG,CAAA,EAAG,YAAY,CAAI,CAAA,EAAA,KAAK,EAAE,CAAC;4BAC1C,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;IACzC,4BAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAwC,CAAC,CAAC;IAC5F,4BAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;6BACjE;iCAAM;IACL,4BAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;6BACzB;4BACD,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;4BAC/D,UAAU,CAAC,IAAI,CAAC;gCACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,4BAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;IAC7B,4BAAA,SAAS,EAAE,YAAY;IACvB,4BAAA,GAAG,EAAE,KAAK;IACX,yBAAA,CAAC,CAAC;IACH,wBAAA,KAAK,EAAE,CAAC;yBACT;qBACF;IAAM,qBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;wBACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;IAClD,oBAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;4BAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,wBAAA,MAAM,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;IAC/C,wBAAA,MAAM,MAAM,GAAG,CAAA,EAAG,YAAY,CAAI,CAAA,EAAA,KAAK,EAAE,CAAC;4BAC1C,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;gCACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,4BAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;6BACzE;iCAAM;gCACL,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;6BAC/B;4BACD,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;4BAClE,UAAU,CAAC,IAAI,CAAC;gCACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,4BAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;IAC7B,4BAAA,SAAS,EAAE,YAAY;IACvB,4BAAA,GAAG,EAAE,KAAK;IACV,4BAAA,IAAI,EAAE,OAAO;IACd,yBAAA,CAAC,CAAC;;yBAEJ;qBACF;iBACF;aACF;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IAED;;;;IAIG;IACH,IAAA,MAAM,UAAU,CACd,SAAiB,EACjB,KAAgB,EAChB,KAA6C,EAAA;YAE7C,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAE5B,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACxE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;IACnF,cAAE,CAAC,GAA4B,KAAK,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,OAAQ,CAAC;kBACrE,IAAI,CAAC;IACT,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC;IACtC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC5C,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;YAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,QAAA,MAAM,IAAI,GAAG,CAAC,GAA4B,KAAa;gBACrD,IAAI,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC;IAAE,gBAAA,OAAO,IAAI,CAAC;IAC5D,YAAA,IAAI,OAAO,GAAG,MAAM,EAAE;IAAE,gBAAA,OAAO,EAAE,CAAC;IAAC,gBAAA,OAAO,IAAI,CAAC;iBAAE;IACjD,YAAA,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACpC,YAAA,KAAK,EAAE,CAAC;gBACR,OAAO,KAAK,GAAG,KAAK,CAAC;IACvB,SAAC,CAAC;YAEF,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;;gBAEzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/G,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,gBAAA,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;iBACrC;gBACD,OAAO,IAAI,CAAC,MAAM,CAAC;aACpB;;YAGD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7D,QAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;IACrB,YAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;IAC1B,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;wBAAE,MAAM;iBACvB;IACD,YAAA,OAAO,KAAK,CAAC;aACd;;IAGD,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,CAAG,EAAA,MAAM,CAAQ,MAAA,CAAA,CAAC,CAAC;IACxD,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,CAAA,EAAG,MAAM,CAAA,MAAA,CAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,KAAI;gBAC/D,IAAI,KAAK,IAAI,KAAK;oBAAE,OAAO;IAC3B,YAAA,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IACzB,YAAA,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACtC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,SAAC,CAAC,CAAC;IACH,QAAA,OAAO,KAAK,CAAC;SACd;IAED,IAAA,MAAM,KAAK,CAAC,SAAiB,EAAE,KAAiB,EAAA;YAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,aAAa,EAAE,CAAC;IACrB,QAAA,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAC;YAC/E,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC,CAAC,CAAC,MAAM,CAAC;SACnE;QAED,MAAM,KAAK,CAAC,SAAiB,EAAA;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;;YAE9C,MAAM,UAAU,GAA4D,EAAE,CAAC;IAC/E,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;gBAC5C,MAAM,GAAG,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,GAAG,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;gBACzC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;IACzC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAwC,CAAC,CAAC;IACzF,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;iBAC3E;qBAAM;IACL,gBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBACtB;gBACD,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;oBAC7B,SAAS;IACT,gBAAA,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxB,aAAA,CAAC,CAAC;;IAEH,YAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;aACvE;YACD,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACvC,QAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;IAC9B,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;;IAID;;;;;IAKG;IACH,IAAA,MAAM,UAAU,CACd,SAAiB,EACjB,MAAsB,EACtB,MAA8D,EAAA;YAE9D,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;IAC7C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAE5C,QAAA,IAAI,MAAM,KAAK,KAAK,EAAE;gBACpB,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IAC/B,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,SAAS,CAAA,CAAA,CAAG,EAAE,eAAe,CAAC,CAAC;iBAC5G;gBACD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IACrC,YAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,OAAO;aACR;;YAGD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IAChC,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,SAAS,CAAA,CAAA,CAAG,EAAE,kBAAkB,CAAC,CAAC;aAC/G;;YAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;gBAC3E,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,QAAQ,MAAM,CAAC,IAAI,CAAA,CAAE,CAAC;gBACjD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACjD,IAAI,MAAM,EAAE;IACV,gBAAA,IAAI;IACF,oBAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;qBACtB;IAAC,gBAAA,MAAM,iBAAiB;IACzB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBACtC;aACF;YACD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;;IAG5B,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;IAC/B,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,MAAM,QAAQ,CAAC;YACjC,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,UAAU,GAA4D,EAAE,CAAC;YAC/E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;IAClC,YAAA,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;oBAAE,SAAS;IACtC,YAAA,MAAM,OAAO,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAC7B,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;;gBAE3B,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACpC,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC3D,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,aAAa,CAAC,MAAM;IAC1B,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;oBAC7B,SAAS;IACT,gBAAA,GAAG,EAAE,EAAE;IACP,gBAAA,IAAI,EAAE,OAAO;IACd,aAAA,CAAC,CAAC;aACJ;YACD,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACvC,QAAA,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC;IACpC,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;IAED,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAgB,EAAA;YACnE,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;IAC9C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,kBAAkB,CAAC,CAAC;IACtH,QAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,MAAM,EAAE,CAAC;;;IAG5C,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,OAAO;IAC9C,QAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,QAAA,IAAI,MAAM;IAAE,YAAA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IAEjC,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC;IACrB,YAAA,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;IACxD,YAAA,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;IACpD,YAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;IAC/B,YAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;gBAClD,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;gBACnE,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,SAAS,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAC;IACpE,SAAA,CAAC,CAAC;IACH,QAAA,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;YAG1C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC9C,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;oBACzC,MAAM,CAAC,GAAG,CAAC,CAAG,EAAA,MAAM,CAAC,KAAK,CAAC,CAAI,CAAA,EAAA,GAAG,CAAC,KAAK,CAAC,CAAE,CAAA,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iBAClE;aACF;IACD,QAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;SAC7B;IAED,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,UAAmB,EAAA;YACpE,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,kBAAkB,CAAC,CAAC;;IAEtH,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE;gBACrB,MAAM,IAAI,aAAa,CAAC,CAAA,yCAAA,EAA4C,MAAM,CAAG,CAAA,CAAA,EAAE,eAAe,CAAC,CAAC;aACjG;;YAED,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAG,EAAA,SAAS,QAAQ,MAAM,CAAA,CAAE,CAAC,EAAE;gBAC/F,MAAM,IAAI,aAAa,CAAC,CAAoB,iBAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;aAClH;IACD,QAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,QAAA,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;IAEtB,QAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,MAAM,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,MAAM,EAAE;IACV,YAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACtC;IACD,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;SAC7B;;;;IAMD,IAAA,MAAM,gBAAgB,GAAA;YACpB,IAAI,IAAI,CAAC,YAAY;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,iCAAiC,EAAE,WAAW,CAAC,CAAC;YAC/F,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACjD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;IAE7B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBACpB,IAAI,EAAE,aAAa,CAAC,KAAK;gBACzB,KAAK,EAAE,IAAI,CAAC,YAAY;IACxB,YAAA,SAAS,EAAE,EAAE;IACb,YAAA,GAAG,EAAE,EAAE;IACR,SAAA,CAAC,CAAC;SACJ;IAED,IAAA,MAAM,iBAAiB,GAAA;YACrB,IAAI,CAAC,IAAI,CAAC,YAAY;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;;;;IAKpF,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBACpB,IAAI,EAAE,aAAa,CAAC,MAAM;gBAC1B,KAAK,EAAE,IAAI,CAAC,YAAY;IACxB,YAAA,SAAS,EAAE,EAAE;IACb,YAAA,GAAG,EAAE,EAAE;IACR,SAAA,CAAC,CAAC;IACH,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAEvB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;IAC3C,gBAAA,IAAK,KAA4C,CAAC,aAAa,EAAE;IAC/D,oBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;qBACtB;yBAAM;wBACL,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;qBAC1B;iBACF;aACF;YAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE/C,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IACzB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;IAED,IAAA,MAAM,mBAAmB,GAAA;YACvB,IAAI,CAAC,IAAI,CAAC,YAAY;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;;IAGpF,QAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE;oBACzC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC7B,IAAI,GAAG,GAAG,CAAC;IAAE,oBAAA,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;iBACpD;aACF;YAED,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAExB,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBACpB,IAAI,EAAE,aAAa,CAAC,QAAQ;gBAC5B,KAAK,EAAE,IAAI,CAAC,YAAY;IACxB,YAAA,SAAS,EAAE,EAAE;IACb,YAAA,GAAG,EAAE,EAAE;IACR,SAAA,CAAC,CAAC;IAEH,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;;IAGzB,QAAA,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE;gBACtC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;IAC/B,gBAAA,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;iBACpC;aACF;SACF;QAMD,MAAM,SAAS,CAAC,IAAY,EAAA;YAC1B,IAAI,CAAC,IAAI,CAAC,YAAY;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,qCAAqC,EAAE,SAAS,CAAC,CAAC;IAClG,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAA,WAAA,EAAc,IAAI,CAAkB,gBAAA,CAAA,EAAE,kBAAkB,CAAC,CAAC;;IAEjH,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE;gBACxB,KAAK,EAAE,IAAI,CAAC,YAAY;IACxB,YAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI;IAC9D,SAAA,CAAC,CAAC;SACJ;QAED,MAAM,mBAAmB,CAAC,IAAY,EAAA;YACpC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,QAAA,IAAI,CAAC,EAAE;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAA,WAAA,EAAc,IAAI,CAAa,WAAA,CAAA,EAAE,qBAAqB,CAAC,CAAC;;YAEzF,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;;;YAG7D,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAa,CAAC,CAAC;;YAE9C,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;IACjC,YAAA,IAAI,CAAC,KAAK,IAAI,EAAE;oBAAE,KAAK,GAAG,IAAI,CAAC;oBAAC,SAAS;iBAAE;IAC3C,YAAA,IAAI,KAAK;IAAE,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACtC;SACF;QAED,MAAM,gBAAgB,CAAC,IAAY,EAAA;YACjC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAA,WAAA,EAAc,IAAI,CAAa,WAAA,CAAA,EAAE,qBAAqB,CAAC,CAAC;IAChH,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC9B;;IAID,IAAA,MAAM,MAAM,GAAA;YACV,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,MAAM,MAAM,GAA8C,EAAE,CAAC;YAC7D,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;gBAC3C,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;aACtD;IACD,QAAA,OAAO,MAAM,CAAC;SACf;;;;QAMO,MAAM,UAAU,CAAC,SAAiB,EAAA;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC5C,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;;IAE/B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,CAAG,EAAA,MAAM,CAAQ,MAAA,CAAA,CAAC,CAAC;IACxD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA,EAAG,MAAM,CAAA,MAAA,CAAQ,CAAC,CAAC;IAC9D,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;IACxC,YAAA,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IACzB,YAAA,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,YAAA,OAAO,GAAG,CAAC;IACb,SAAC,CAAC,CAAC;;YAEH,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SAC/C;IAED;;;IAGG;QACK,gBAAgB,CAAC,SAAiB,EAAE,IAA+B,EAAA;YACzE,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW;IAAE,YAAA,OAAO,IAAI,CAAC;YACzD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC5C,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;YAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;IAC3C,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,SAAS;gBACtC,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,YAAA,MAAM,GAAG,GAAI,KAA4C,CAAC,aAAa,CAAC;IACxE,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBACnD,IAAI,GAAG,EAAE;oBACP,IAAI,GAAG,IAAI,CAAC;IAAE,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;iBACnC;qBAAM;IACL,gBAAA,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC;oBACtC,IAAI,GAAG,IAAI,CAAC;IAAE,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;;IACzB,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACrB;aACF;IACD,QAAA,OAAO,IAAI,CAAC;SACb;IAEO,IAAA,KAAK,CAAC,MAAmB,EAAA;IAC/B,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBACxD,IAAI,GAAG,CAAC,UAAU;IAAE,gBAAA,OAAO,IAAI,CAAC;aACjC;YACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SACvC;QAEO,WAAW,CAAC,MAAmB,EAAE,GAA4B,EAAA;YACnE,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IAC9D,YAAA,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;gBACzB,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;IAAE,gBAAA,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;IAChF,YAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;IAC9D,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,OAAO,CAAA,wBAAA,EAA2B,MAAM,CAAC,IAAI,CAAA,CAAA,CAAG,EAAE,kBAAkB,CAAC,CAAC;iBAC1G;gBACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;IACzC,gBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;iBACrD;gBACD,IAAI,KAAK,KAAK,SAAS;IAAE,gBAAA,SAAS,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;aACrD;IACD,QAAA,OAAO,SAAS,CAAC;SAClB;IAEO,IAAA,SAAS,CAAC,OAAe,EAAE,IAAY,EAAE,KAAc,EAAE,MAAkB,EAAA;YACjF,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,IAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;SACzD;;;;IAMO,IAAA,MAAM,cAAc,GAAA;YAC1B,MAAM,IAAI,GAA8C,EAAE,CAAC;YAC3D,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;IACzC,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;aAC7B;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YAClD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;SACjD;IAEO,IAAA,MAAM,WAAW,GAAA;YACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACtD,QAAA,IAAI,CAAC,GAAG;gBAAE,OAAO;IAEjB,QAAA,IAAI;gBACF,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA8C,CAAC;IAE3E,YAAA,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACvD,MAAM,MAAM,GAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;oBACzD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACpC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;iBAClD;aACF;IAAC,QAAA,MAAM;;aAEP;SACF;;;;IAMD;;;;;;;IAOG;IACK,IAAA,kBAAkB,CAAC,EAAU,EAAA;IACnC,QAAA,MAAM,UAAU,GAAG,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,CAAO,IAAA,EAAA,EAAE,GAAG,CAAC;IACzD,QAAA,MAAM,QAAQ,GAAG,EAAE,KAAK,MAAM,GAAG,iBAAiB,GAAG,CAAmB,gBAAA,EAAA,EAAE,EAAE,CAAC;YAC7E,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,IAAI,SAAS,GAAG,KAAK,CAAC;;IAGtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IAE5F,QAAA,MAAM,UAAU,GAAG,CAAC,IAAY,KAAiB;gBAC/C,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAC/C,SAAC,CAAC;IAEF,QAAA,MAAM,YAAY,GAAG,YAAmC;gBACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,YAAA,IAAI,CAAC,GAAG;IAAE,gBAAA,OAAO,EAAE,CAAC;IACpB,YAAA,IAAI;IACF,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAkB,CAAC;iBACnE;IAAC,YAAA,MAAM;IACN,gBAAA,OAAO,EAAE,CAAC;iBACX;IACH,SAAC,CAAC;YAEF,OAAO;IACL,YAAA,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,KAAI;oBACvB,IAAI,SAAS,EAAE;;wBAEb,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;wBAC/B,OAAO;qBACR;oBACD,IAAI,GAAG,GAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAgB,CAAC;;IAE5G,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;wBAC3B,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,oBAAA,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAgB,CAAC;qBACpH;IACD,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,EAAG,UAAU,CAAA,EAAG,EAAE,CAAA,CAAE,EAAE,GAAG,CAAC,CAAC;iBACrD;IACD,YAAA,IAAI,EAAE,OAAO,EAAE,KAAI;;oBAEjB,IAAI,SAAS,EAAE;IACb,oBAAA,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;IACnC,oBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5C,oBAAA,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IACnD,wBAAA,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;yBACzD;qBACF;IACD,gBAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAA,EAAG,EAAE,CAAA,CAAE,CAAC,CAAC;IAC1D,gBAAA,IAAI,CAAC,GAAG;IAAE,oBAAA,OAAO,IAAI,CAAC;IACtB,gBAAA,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;;IAE9B,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;;IAE3B,oBAAA,GAAG,GAAG,aAAa,CAAC,GAAG,CAA4B,CAAC;qBACrD;IACD,gBAAA,OAAO,GAAG,CAAC;iBACZ;IACD,YAAA,MAAM,EAAE,OAAO,EAAE,KAAI;oBACnB,IAAI,SAAS,EAAE;IACb,oBAAA,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;IACnC,oBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5C,oBAAA,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;4BACnD,MAAM,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;yBAC1C;qBACF;IACD,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAG,EAAA,UAAU,CAAG,EAAA,EAAE,CAAE,CAAA,CAAC,CAAC;iBACjD;gBACD,UAAU,EAAE,YAAW;;oBAErB,IAAI,CAAC,SAAS,EAAE;IACd,oBAAA,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;wBACnC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;wBACnD,SAAS,GAAG,IAAI,CAAC;qBAClB;oBACD,OAAO,EAAE,GAAG,CAAC;iBACd;IACD,YAAA,QAAQ,EAAE,YAAY;IACtB,YAAA,QAAQ,EAAE,OAAO,IAAI,KAAI;IACvB,gBAAA,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;;oBAElC,MAAM,OAAO,GAAG,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC/C,MAAM,aAAa,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;;IAElF,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;oBACpD,IAAI,GAAG,IAAI,CAAC;IAAE,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;;IACnC,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9B,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACtE;IACD,YAAA,UAAU,EAAE,OAAO,EAAE,KAAI;IACvB,gBAAA,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;IAClC,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;iBAC1E;aACF,CAAC;SACH;;QAGO,aAAa,GAAA;IACnB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,IAAI;IAAE,YAAA,OAAO,IAAI,CAAC;IAClD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK;IAAE,YAAA,OAAO,KAAK,CAAC;IACpD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,MAAM,CAAC;SAC9C;;;;IAMO,IAAA,cAAc,CAAC,MAAiB,EAAA;IACtC,QAAA,QAAQ,MAAM,CAAC,IAAI;gBACjB,KAAK,aAAa,CAAC,MAAM,CAAC;gBAC1B,KAAK,aAAa,CAAC,MAAM;IACvB,gBAAA,IAAI,MAAM,CAAC,IAAI,EAAE;IACf,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,EAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,GAAG,CAAE,CAAA,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;qBAChE;oBACD,MAAM;gBACR,KAAK,aAAa,CAAC,MAAM;IACvB,gBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAG,EAAA,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,GAAG,CAAA,CAAE,CAAC,CAAC;oBACrD,MAAM;gBACR,KAAK,aAAa,CAAC,YAAY;IAC7B,gBAAA,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;IACvB,oBAAA,IAAI;IACF,wBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAgB,CAAgB,CAAC;IAClE,wBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;gCAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5B,4BAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;6BAC1C;yBACF;IAAC,oBAAA,MAAM,cAAc;qBACvB;oBACD,MAAM;gBACR,KAAK,aAAa,CAAC,MAAM,CAAC;gBAC1B,KAAK,aAAa,CAAC,QAAQ,CAAC;gBAC5B,KAAK,aAAa,CAAC,KAAK;oBACtB,MAAM;aACT;SACF;IAED;;;;;IAKG;QACK,MAAM,sBAAsB,CAAC,SAAiB,EAAA;IACpD,QAAA,IAAI,CAAC,SAAS;gBAAE,OAAO;;IAEvB,QAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;;IAGhC,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;IAC/B,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,MAAM,QAAQ,CAAC;YACjC,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,QAAA,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE;IAC3B,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aACtB;SACF;;;;;IAOO,IAAA,sBAAsB,CAC5B,SAAiB,EAAE,OAAe,EAClC,MAAsC,EACtC,MAAsC,EAAA;YAEtC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,QAAA,IAAI,CAAC,MAAM;gBAAE,OAAO;IAEpB,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;;gBAE9D,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM;oBAAE,SAAS;IAC9C,YAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,OAAO,EAAE,CAAC;gBAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjD,YAAA,IAAI,CAAC,MAAM;oBAAE,SAAS;;gBAGtB,IAAI,MAAM,EAAE;IACV,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC/B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE;IAC3C,oBAAA,MAAM,CAAC,MAAM,CAAC,CAAA,EAAG,MAAM,CAAC,MAAM,CAAC,CAAI,CAAA,EAAA,OAAO,CAAE,CAAA,CAAC,CAAC;qBAC/C;iBACF;;gBAGD,IAAI,MAAM,EAAE;IACV,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC/B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE;IAC3C,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;qBAC7D;iBACF;aACF;SACF;;IAGO,IAAA,MAAM,cAAc,CAC1B,SAAiB,EACjB,KAAgB,EAAA;YAEhB,IAAI,CAAC,KAAK,CAAC,KAAK;IAAE,YAAA,OAAO,IAAI,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,QAAA,IAAI,CAAC,MAAM;IAAE,YAAA,OAAO,IAAI,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAE5C,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;;gBAE1D,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM;oBAAE,SAAS;gBAEhE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,YAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;IAChF,YAAA,IAAI,CAAC,QAAQ,IAAI,GAAG,KAAK,KAAK;oBAAE,SAAS;;IAGzC,YAAA,IAAI,GAAG,KAAK,KAAK,EAAE;oBACjB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;IACvD,oBAAA,MAAM,GAAG,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,SAAS,EAAE,CAAC;wBACxC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;wBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAChC,OAAO,KAAK,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC;qBACxD;oBACD,MAAM,IAAI,GAAG,SAAoC,CAAC;IAClD,gBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;wBACjB,MAAM,GAAG,GAAG,CAAG,EAAA,SAAS,IAAI,IAAI,CAAC,GAAG,CAAA,CAAE,CAAC;wBACvC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;wBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAChC,OAAO,KAAK,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;qBACvD;;IAED,gBAAA,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAC5C,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAG,EAAA,SAAS,IAAI,CAAC,CAAA,CAAE,CAAC,CAAC;wBACtD,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;wBAClC,MAAM,IAAI,GAA8B,EAAE,CAAC;IAC3C,oBAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,oBAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE;IACxB,wBAAA,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACrB,wBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gCAAE,SAAS;IAC3B,wBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,CAAC,CAAC;4BACjD,IAAI,KAAK,EAAE;IAAE,4BAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAAC,4BAAA,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,CAAC;6BAAE;yBACnE;IACD,oBAAA,OAAO,IAAI,CAAC;qBACb;;IAED,gBAAA,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE;IACtE,oBAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;IAC/B,oBAAA,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,CAAG,EAAA,MAAM,CAAQ,MAAA,CAAA,CAAC,CAAC;IACxD,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA,EAAG,MAAM,CAAA,MAAA,CAAQ,CAAC,CAAC;wBAC9D,MAAM,IAAI,GAA8B,EAAE,CAAC;wBAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;IAClC,wBAAA,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;4BAClE,IAAI,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC;IAAE,4BAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;yBACzE;IACD,oBAAA,OAAO,IAAI,CAAC;qBACb;iBACF;;IAGD,YAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,GAAG,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjD,YAAA,IAAI,CAAC,MAAM;oBAAE,SAAS;;gBAGtB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;oBACvD,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;iBAC7F;gBACD,MAAM,CAAC,GAAG,SAAoC,CAAC;IAC/C,YAAA,IAAI,KAAK,IAAI,CAAC,EAAE;oBACd,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxB,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;iBAC7D;;IAED,YAAA,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;oBACtC,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,gBAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,gBAAA,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE;wBACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5F,oBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;4BACtB,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;4BAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;IACpB,4BAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,4BAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;6BACnB;yBACF;qBACF;IACD,gBAAA,OAAO,OAAO,CAAC;iBAChB;;IAED,YAAA,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;oBAC1D,IAAI,QAAQ,GAAG,EAAE,CAAC;oBAClB,IAAI,MAAM,GAAG,QAAQ,CAAC;IACtB,gBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS;IAAE,oBAAA,QAAQ,GAAG,CAAA,EAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;IAC/D,qBAAA,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;wBAAE,QAAQ,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,CAAC;IAC/D,gBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS;IAAE,oBAAA,MAAM,GAAG,CAAA,EAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;IACnE,qBAAA,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;wBAAE,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA,OAAA,CAAS,CAAC;IACnE,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;iBACzE;aACF;IAED,QAAA,OAAO,IAAI,CAAC;SACb;;QAGO,MAAM,eAAe,CAC3B,SAAiB,EAAE,KAAa,EAAE,MAAW,EAC7C,QAAgB,EAAE,MAAc,EAAA;;IAGhC,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,CAAG,EAAA,MAAM,QAAQ,CAAC;;YAE5E,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACzD,MAAM,GAAG,GAAa,EAAE,CAAC;YACzB,KAAK,MAAM,GAAG,QAAQ,CAAC,IAAI,OAAO,EAAE;IAClC,YAAA,MAAM,EAAE,GAAI,QAAgB,CAAC,EAAY,CAAC;IAC1C,YAAA,IAAI,EAAE;IAAE,gBAAA,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACtB;YACD,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAG,EAAA,SAAS,IAAI,EAAE,CAAA,CAAE,CAAC,CAAC,CAAC;YACnE,MAAM,IAAI,GAA8B,EAAE,CAAC;IAC3C,QAAA,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;IACpB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,CAAC,CAAC;IAC/C,YAAA,IAAI,GAAG;IAAE,gBAAA,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,CAAC;aAC7C;IACD,QAAA,OAAO,IAAI,CAAC;SACb;;;;;QAOO,KAAK,GAAA;YACX,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE;IACxB,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAClB,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;aACpB;SACF;;QAGO,aAAa,GAAA;IACnB,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE;gBACnD,MAAM,CAAC,SAAS,EAAE,CAAC;aACpB;SACF;;QAGO,iBAAiB,GAAA;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;YACvD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;IAC3C,QAAA,IAAI,IAAI,GAAG,QAAQ,EAAE;IACnB,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MAAO,GAAC,CAAC,CAAC;IACjC,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;aAClB;SACF;;QAGD,mBAAmB,GAAA;YACjB,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,GAAG,CAAC;SAC1C;IAED;;;IAGG;QACH,MAAM,YAAY,CAAC,SAAiB,EAAA;YAClC,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC9C,QAAA,MAAM,KAAK,GAA4B;IACrC,YAAA,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,IAAI,CAAC,MAAM;IACrB,YAAA,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC;IACzB,kBAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAClF,kBAAE,CAAC;gBACL,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;gBAC/E,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,YAAY;gBAC9C,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,YAAY;IAC9C,YAAA,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE;aAC/C,CAAC;;YAGF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,MAAM,WAAW,GAA4B,EAAE,CAAC;IAChD,YAAA,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;oBACjD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5D,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;iBACxD;IACD,YAAA,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;aACjC;IAED,QAAA,OAAO,KAAK,CAAC;SACd;IAED;;IAEG;QACH,MAAM,YAAY,CAAC,SAAiB,EAAA;YAClC,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC5B,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;SAC7C;;QAGO,MAAM,oBAAoB,CAAC,SAAiB,EAAA;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,QAAA,IAAI,CAAC,MAAM;IAAE,YAAA,OAAO,CAAC,CAAC;YACtB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;;gBAE9D,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM;oBAAE,SAAS;IAC9C,YAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,OAAO,EAAE,CAAC;gBAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjD,YAAA,IAAI,CAAC,MAAM;oBAAE,SAAS;;IAGtB,YAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,YAAA,YAAY,EAAE,CAAC;;gBAGf,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC9C,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,gBAAA,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;oBACzB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;IACrC,oBAAA,MAAM,CAAC,GAAG,CAAC,CAAG,EAAA,MAAM,CAAC,GAAG,CAAC,CAAI,CAAA,EAAA,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,CAAA,CAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,EAAE,CAAC,CAAC;qBAChH;iBACF;aACF;IACD,QAAA,OAAO,YAAY,CAAC;SACrB;IAED;;IAEG;IACH,IAAA,MAAM,MAAM,GAAA;YACV,IAAI,CAAC,UAAU,EAAE,CAAC;;IAElB,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;;IAEvB,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE;IACtC,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBAC/C,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;iBACpC;aACF;;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;SACrD;QAEO,UAAU,GAAA;YAChB,IAAI,CAAC,IAAI,CAAC,MAAM;IAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,aAAa,CAAC,CAAC;SACnF;;IAGO,IAAA,wBAAwB,CAAC,EAAU,EAAA;IACzC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,MAAM,IAAI,aAAa,CACrB,CAAA,EAAG,EAAE,CAA8E,4EAAA,CAAA,EACnF,eAAe,CAChB,CAAC;aACH;SACF;IAEO,IAAA,WAAW,CAAC,SAAiB,EAAA;YACnC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBAChC,MAAM,IAAI,aAAa,CAAC,CAAA,OAAA,EAAU,SAAS,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;aACnF;SACF;IACF;;ICxzDD;;;;;;;;IAQG;IASH;IACA;IACA;UAEa,YAAY,CAAA;IASvB,IAAA,WAAA,CAAY,aAAyB,WAAW,EAAA;YARvC,IAAI,CAAA,IAAA,GAAG,QAAQ,CAAC;YAKjB,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;YACZ,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;IAGlB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IACvC,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;IACjC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;SACpF;;IAID,IAAA,MAAM,IAAI,CAAC,MAAc,EAAE,OAAe,EAAA;IACxC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;;YAEvB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;YAG5C,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;IAG9C,QAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;SACnC;IAED;;;IAGG;IACH,IAAA,MAAM,oBAAoB,GAAA;IACxB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAChC,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAExD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;IACzD,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;gBAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC/D,YAAA,IAAI,CAAC,MAAM;oBAAE,SAAS;;gBAGtB,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;IAG5C,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACzE,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;IACnB,gBAAA,IAAI;wBACF,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;qBACjD;oBAAC,OAAO,CAAC,EAAE;;wBAEV,OAAO,CAAC,IAAI,CAAC,CAAA,sCAAA,EAAyC,SAAS,CAAmB,iBAAA,CAAA,EAAE,CAAC,CAAC,CAAC;qBACxF;iBACF;aACF;SACF;IAED,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAChC,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;SAC/B;QAED,MAAM,GAAA;IACJ,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;SAC/D;;;IAKD,IAAA,MAAM,MAAM,GAAA;YACV,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,UAAU,EAAE;IAChD,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;aAChC;IACD,QAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;SACnC;;IAGD,IAAA,MAAM,QAAQ,GAAA;YACZ,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,KAAK,UAAU,EAAE;IAClD,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;aAClC;iBAAM;gBACL,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;IACpD,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;iBACvC;aACF;YACD,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,KAAK,UAAU,EAAE;IACpD,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;aACpC;iBAAM;gBACL,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;IACtD,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;iBACzC;aACF;SACF;QAED,MAAM,OAAO,CAAC,GAAW,EAAA;YACvB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,UAAU,EAAE;gBACjD,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aACrC;IACD,QAAA,OAAO,IAAI,CAAC;SACb;IAED,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,KAAa,EAAA;YACtC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,UAAU,EAAE;gBACjD,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aAC3C;SACF;;QAID,MAAM,WAAW,CAAC,MAAmB,EAAA;YACnC,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SAC3C;QAED,MAAM,SAAS,CAAC,SAAiB,EAAA;YAC/B,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC7C,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;SAC5C;QAED,MAAM,QAAQ,CAAC,SAAiB,EAAA;YAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SAC9C;IAED,IAAA,MAAM,aAAa,GAAA;IACjB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;SAC1C;QAED,MAAM,cAAc,CAAC,SAAiB,EAAA;YACpC,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;SACpD;;IAGD,IAAA,MAAM,UAAU,CACd,SAAiB,EACjB,MAAsB,EACtB,MAA2D,EAAA;IAE3D,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9D,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,UAAU,EAAE;IACpD,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;aAC7D;iBAAM;;gBAEL,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC/D,YAAA,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM;oBAAE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACrE;SACF;;IAID,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,IAA+B,EAAA;IAC7D,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;YAE5D,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9C,QAAA,OAAO,GAAG,CAAC;SACZ;IAED,IAAA,MAAM,IAAI,CAAC,SAAiB,EAAE,KAAgB,EAAA;;YAE5C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SACjD;;IAGD,IAAA,MAAM,UAAU,CAAC,SAAiB,EAAE,KAAgB,EAAE,KAA6C,EAAA;IACjG,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SAC9D;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAE,OAAgC,EAAA;IAChF,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;;IAExE,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACxD,QAAA,OAAO,KAAK,CAAC;SACd;IAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAA;IAC9C,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;;YAE/D,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/C,QAAA,OAAO,KAAK,CAAC;SACd;IAED,IAAA,MAAM,KAAK,CAAC,SAAiB,EAAE,KAAiB,EAAA;YAC9C,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SAClD;QAED,MAAM,KAAK,CAAC,SAAiB,EAAA;YAC3B,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;SACxC;;IAID,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAgB,EAAA;IACnE,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/D,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,KAAK,UAAU,EAAE;IACrD,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;aAC9D;SACF;IAED,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,SAAkB,EAAA;IACnE,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YAChE,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,UAAU,EAAE;IACnD,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;aAC/D;SACF;;IAID,IAAA,MAAM,gBAAgB,GAAA;IACpB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;IAC3C,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;SAC1C;IAED,IAAA,MAAM,iBAAiB,GAAA;;IAErB,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;IAC1C,QAAA,IAAI;IACF,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;aAC7C;YAAC,OAAO,KAAK,EAAE;;;gBAGd,MAAM,IAAI,aAAa,CACrB,sFAAsF,EACtF,iBAAiB,EACjB,KAAK,CACN,CAAC;aACH;SACF;IAED,IAAA,MAAM,mBAAmB,GAAA;IACvB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC;IAC9C,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;SAC7C;;;QAKD,iBAAiB,GAAA;YACf,OAAO,IAAI,CAAC,cAAc,CAAC;SAC5B;;QAGD,eAAe,GAAA;YACb,OAAO,IAAI,CAAC,YAAY,CAAC;SAC1B;IACF;;IC7QD;;;;;;IAMG;IAOH;IACA;IACA;UAEa,kBAAkB,CAAA;QAS7B,WACU,CAAA,MAAsB,EACtB,SAAiB,EACjB,WAAqB,CAAC,GAAG,CAAC,EAClC,QAAwB,EAAA;YAHhB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;YACtB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;YACjB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;YAX5B,IAAM,CAAA,MAAA,GAAmB,EAAE,CAAC;YAC5B,IAAQ,CAAA,QAAA,GAAc,EAAE,CAAC;YAGzB,IAAM,CAAA,MAAA,GAAiB,EAAE,CAAC;IAUhC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;SAC3B;;IAGD,IAAA,EAAE,CAAC,KAAa,EAAA;IACd,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACpB,QAAA,OAAO,IAAI,CAAC;SACb;;IAGD,IAAA,SAAS,CAAC,KAAa,EAAE,EAAkB,EAAE,KAAc,EAAA;IACzD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;SACjD;;IAGD,IAAA,QAAQ,CAAC,KAAa,EAAE,EAAkB,EAAE,KAAc,EAAA;IACxD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;SAChD;;IAGD,IAAA,SAAS,CAAC,KAAa,EAAE,EAAkB,EAAE,KAAc,EAAA;IACzD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;SACjD;;QAGD,SAAS,CAAC,KAAa,EAAE,KAAc,EAAA;IACrC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;SACjD;;IAGD,IAAA,IAAI,CAAC,KAAa,EAAE,EAAkB,EAAE,KAAc,EAAA;IACpD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;SACjD;IAEO,IAAA,QAAQ,CAAC,IAAc,EAAE,KAAa,EAAE,EAAkB,EAAE,KAAc,EAAA;IAChF,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7C,QAAA,OAAO,IAAI,CAAC;SACb;;IAGD,IAAA,KAAK,CAAC,SAAyB,EAAA;IAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/C,QAAA,OAAO,IAAI,CAAC;SACb;;IAGD,IAAA,OAAO,CAAC,MAAc,EAAE,SAAA,GAA2B,KAAK,EAAA;YACtD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1C,QAAA,OAAO,IAAI,CAAC;SACb;;IAGD,IAAA,KAAK,CAAC,CAAS,EAAA;IACb,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChB,QAAA,OAAO,IAAI,CAAC;SACb;;IAGD,IAAA,MAAM,CAAC,CAAS,EAAA;IACd,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACjB,QAAA,OAAO,IAAI,CAAC;SACb;;IAGD,IAAA,MAAM,OAAO,GAAA;;IAEX,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;IAC5C,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAuC,CAAC;aAC1E;;YAGD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACtC,KAAK,EAAE,IAAI,CAAC,SAAS;gBACrB,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,KAAK,EAAE,IAAI,CAAC,MAAM;IAClB,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS;gBAC7D,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,MAAM,EAAE,IAAI,CAAC,OAAO;IACrB,SAAA,CAAC,CAAC;SACJ;;QAGD,KAAK,GAAA;YACH,OAAO;IACL,YAAA,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,SAAS;gBAC5D,KAAK,EAAE,IAAI,CAAC,MAAM;IAClB,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS;gBAC7D,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,MAAM,EAAE,IAAI,CAAC,OAAO;aACrB,CAAC;SACH;IACF,CAAA;IAED;IACA;IACA;UAEa,kBAAkB,CAAA;QAM7B,WACU,CAAA,MAAsB,EACtB,SAAiB,EACjB,QAAiC,EACzC,OAAiC,EACjC,OAAmF,EAAA;YAJ3E,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;YACtB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;YACjB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAyB;YARnC,IAAM,CAAA,MAAA,GAAmB,EAAE,CAAC;IAYlC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACvB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;IAED,IAAA,KAAK,CAAC,SAAyB,EAAA;IAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/C,QAAA,OAAO,IAAI,CAAC;SACb;IAED,IAAA,MAAM,OAAO,GAAA;IACX,QAAA,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5D,QAAA,MAAM,IAAI,CAAC,OAAO,GAAG,cAAc,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,QAAA,MAAM,IAAI,CAAC,OAAO,GAAG,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IACnE,QAAA,OAAO,KAAK,CAAC;SACd;QAED,KAAK,GAAA;YACH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;SAC3F;IACF,CAAA;IAED;IACA;IACA;UAEa,kBAAkB,CAAA;IAM7B,IAAA,WAAA,CACU,MAAsB,EACtB,SAAiB,EACzB,OAAiC,EACjC,OAAmF,EAAA;YAH3E,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;YACtB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;YAPnB,IAAM,CAAA,MAAA,GAAmB,EAAE,CAAC;IAWlC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACvB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;IAED,IAAA,KAAK,CAAC,SAAyB,EAAA;IAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/C,QAAA,OAAO,IAAI,CAAC;SACb;IAED,IAAA,MAAM,OAAO,GAAA;IACX,QAAA,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5D,MAAM,IAAI,CAAC,OAAO,GAAG,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC9D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,QAAA,MAAM,IAAI,CAAC,OAAO,GAAG,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACpD,QAAA,OAAO,KAAK,CAAC;SACd;QAED,KAAK,GAAA;IACH,QAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;SACrE;IACF;;IC/MD;;;IAGG;IAQH;IACA;IACA;UAEa,KAAK,CAAA;QAUhB,WACE,CAAA,MAAsB,EACtB,SAAiB,EACjB,QAAwB,EACxB,OAAiC,EACjC,OAAmF,EAAA;YAZ7E,IAAM,CAAA,MAAA,GAAuB,IAAI,CAAC;IAcxC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,QAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;IACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACvB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;;IAID,IAAA,MAAM,SAAS,GAAA;IACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;IAChB,YAAA,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,YAAA,IAAI,CAAC,CAAC;oBAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;IAC1F,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjB;YACD,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;QAID,MAAM,MAAM,CAAC,GAAgC,EAAA;;IAE3C,QAAA,MAAM,IAAI,CAAC,OAAO,GAAG,cAAc,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9C,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAA8B,CAAC,CAAC,CAAC;YAClF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAA,MAAM,IAAI,CAAC,OAAO,GAAG,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAClD,QAAA,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;SACf;QAED,MAAM,UAAU,CAAC,IAAqC,EAAA;YACpD,MAAM,IAAI,CAAC,OAAO,GAAG,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAiC,CAAC,CAAC;YACnF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAA,MAAM,IAAI,CAAC,OAAO,GAAG,aAAa,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACjD,QAAA,OAAO,GAAG,CAAC;SACZ;;IAID,IAAA,MAAM,CAAC,OAAA,GAAoB,CAAC,GAAG,CAAC,EAAA;IAC9B,QAAA,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/E;;IAGD,IAAA,MAAM,MAAM,CACV,KAAiD,EACjD,QAAkG,EAAE,EAAA;YAEpG,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;IAChD,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAC7C,KAAK,EAAE,IAAI,CAAC,IAAI;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;IACvB,aAAA,CAAC,CAAC;gBACH,KAAK,MAAM,GAAG,IAAI,IAAI;oBAAE,KAAK,CAAC,GAAkC,CAAC,CAAC;gBAClE,OAAO,IAAI,CAAC,MAAM,CAAC;aACpB;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE;gBACvC,KAAK,EAAE,IAAI,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,EAAE,KAA+C,CAAC,CAAC;SACrD;;IAID,IAAA,MAAM,CAAC,OAA6C,EAAA;YAClD,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SAC5F;;QAID,MAAM,GAAA;IACJ,QAAA,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACnF;;QAID,MAAM,KAAK,CAAC,KAA+B,EAAA;IACzC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,CAAC;SACtF;;IAID,IAAA,MAAM,KAAK,GAAA;YACT,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3B;IAED,IAAA,MAAM,IAAI,GAAA;YACR,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3B;IACF;;ICjID;;;;;;IAMG;IAMH;IACA;IACA;IAEA;;;IAGG;IACG,SAAU,gBAAgB,CAAC,IAAe,EAAA;IAC9C,IAAA,QAAQ,IAAI,CAAC,IAAI;IACf,QAAA,KAAK,QAAQ;IACX,YAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAA,KAAK,QAAQ;IACX,YAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAA,KAAK,QAAQ;IACX,YAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAA;gBACE,MAAM,IAAI,aAAa,CAAC,CAAkC,+BAAA,EAAA,IAAI,CAAC,IAAI,CAAgB,cAAA,CAAA,EAAE,eAAe,CAAC,CAAC;SACzG;IACH,CAAC;IAED,SAAS,aAAa,CAAC,IAAqB,EAAA;QAC1C,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,SAAS;YACxD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;IAED,SAAS,aAAa,CAAC,IAAqB,EAAA;QAC1C,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;IAED,SAAS,aAAa,CAAC,IAAqB,EAAA;QAC1C,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ;;ICxDA;;;IAGG;IAEH;IACA;IACA;IAEA,IAAY,SA2GX,CAAA;IA3GD,CAAA,UAAY,SAAS,EAAA;;IAEnB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;IACnB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;IACnB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;IACzB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;IACnB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;IACnB,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;;IAGrB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;;IAGf,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;;IAGrB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;IACrB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;;IAGf,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;;IAGX,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;IACnB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;IACnB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;IACnB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;IACvB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;IACnB,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;;IAGT,IAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;IACzB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;;IAGjB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;IACvB,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;IACT,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;;IAGX,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;IACX,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;IACrB,CAAC,EA3GW,SAAS,KAAT,SAAS,GA2GpB,EAAA,CAAA,CAAA,CAAA;IAYD;IACA;IACA;IAEO,MAAM,QAAQ,GAA8B;QACjD,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,IAAI,EAAE,SAAS,CAAC,EAAE;QAClB,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,IAAI,EAAE,SAAS,CAAC,EAAE;QAClB,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,IAAI,EAAE,SAAS,CAAC,EAAE;QAClB,SAAS,EAAE,SAAS,CAAC,OAAO;QAC5B,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,SAAS,EAAE,SAAS,CAAC,OAAO;QAC5B,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,YAAY,EAAE,SAAS,CAAC,UAAU;QAClC,SAAS,EAAE,SAAS,CAAC,OAAO;QAC5B,SAAS,EAAE,SAAS,CAAC,OAAO;QAC5B,IAAI,EAAE,SAAS,CAAC,EAAE;QAClB,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,UAAU,EAAE,SAAS,CAAC,QAAQ;;QAG9B,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,IAAI,EAAE,SAAS,CAAC,EAAE;QAClB,IAAI,EAAE,SAAS,CAAC,EAAE;QAClB,OAAO,EAAE,SAAS,CAAC,KAAK;;QAGxB,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,UAAU,EAAE,SAAS,CAAC,QAAQ;;QAG9B,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,UAAU,EAAE,SAAS,CAAC,QAAQ;QAC9B,OAAO,EAAE,SAAS,CAAC,KAAK;QACxB,KAAK,EAAE,SAAS,CAAC,GAAG;QACpB,OAAO,EAAE,SAAS,CAAC,KAAK;;QAGxB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,KAAK,EAAE,SAAS,CAAC,GAAG;;QAGpB,SAAS,EAAE,SAAS,CAAC,OAAO;QAC5B,SAAS,EAAE,SAAS,CAAC,OAAO;QAC5B,SAAS,EAAE,SAAS,CAAC,OAAO;QAC5B,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,WAAW,EAAE,SAAS,CAAC,SAAS;QAChC,SAAS,EAAE,SAAS,CAAC,OAAO;QAC5B,IAAI,EAAE,SAAS,CAAC,EAAE;KACnB;;ICvND;;;;;IAKG;IAIH;IACA;IACA;UAEa,KAAK,CAAA;IAMhB,IAAA,WAAA,CAAY,KAAa,EAAA;YAJjB,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;YACb,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;YACjB,IAAE,CAAA,EAAA,GAAW,EAAE,CAAC;IAGtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;;QAGD,SAAS,GAAA;YACP,IAAI,CAAC,cAAc,EAAE,CAAC;IAEtB,QAAA,IAAI,GAAU,CAAC;IAEf,QAAA,QAAQ,IAAI,CAAC,EAAE;IACb,YAAA,KAAK,GAAG;oBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC3C,MAAM;IACR,YAAA,KAAK,GAAG;oBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBAC5C,MAAM;IACR,YAAA,KAAK,GAAG;oBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBAC5C,MAAM;IACR,YAAA,KAAK,GAAG;oBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;oBAC/C,MAAM;IACR,YAAA,KAAK,GAAG;oBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC1C,MAAM;IACR,YAAA,KAAK,GAAG;oBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBACzC,MAAM;IACR,YAAA,KAAK,GAAG;oBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBACxC,MAAM;IACR,YAAA,KAAK,GAAG;IACN,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;wBAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;qBAC3C;yBAAM;wBACL,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;qBAC9C;oBACD,MAAM;IACR,YAAA,KAAK,GAAG;IACN,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;wBAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;qBAC3C;yBAAM;wBACL,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;qBACzC;oBACD,MAAM;IACR,YAAA,KAAK,GAAG;IACN,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;wBAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;qBAC3C;IAAM,qBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;wBAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;qBAC3C;yBAAM;wBACL,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;qBACzC;oBACD,MAAM;IACR,YAAA,KAAK,GAAG,CAAC;IACT,YAAA,KAAK,GAAG;oBACN,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC/B,MAAM;IACR,YAAA,KAAK,EAAE;IACL,gBAAA,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClE,MAAM;IACR,YAAA;;IAEE,gBAAA,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;wBAC9C,IAAI,CAAC,eAAe,EAAE,CAAC;IACvB,oBAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;qBACzB;;IAED,gBAAA,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;wBAC9C,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACxB,oBAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;qBACzB;oBACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;IAC1B,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;wBACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9C,oBAAA,GAAG,GAAG;IACJ,wBAAA,IAAI,EAAE,OAAO,IAAI,SAAS,CAAC,UAAU;IACrC,wBAAA,KAAK,EAAE,KAAK;IACZ,wBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM;yBACvC,CAAC;wBACF,OAAO,GAAG,CAAC;qBACZ;yBAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE;IACtF,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC9B,oBAAA,GAAG,GAAG;4BACJ,IAAI,EAAE,SAAS,CAAC,MAAM;IACtB,wBAAA,KAAK,EAAE,GAAG;IACV,wBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM;yBACrC,CAAC;IACF,oBAAA,OAAO,GAAG,CAAC;qBACZ;yBAAM;IACL,oBAAA,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;qBAClD;oBACD,MAAM;aACT;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChB,QAAA,OAAO,GAAG,CAAC;SACZ;;QAIO,QAAQ,GAAA;YACd,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;IAC1C,YAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;aACd;iBAAM;gBACL,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aACzC;IACD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;YAClC,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;QAEO,QAAQ,GAAA;YACd,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;IAAE,YAAA,OAAO,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACtC;QAEO,cAAc,GAAA;YACpB,OAAO,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE;gBAClF,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;SACF;;QAGO,eAAe,GAAA;IACrB,QAAA,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;gBAC7D,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;SACF;;QAGO,gBAAgB,GAAA;IACtB,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChB,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE;gBACtE,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;IACD,QAAA,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IAClB,YAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChB,YAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;SACF;QAEO,cAAc,GAAA;IACpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,EAAE;gBACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;IACD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/C;QAEO,UAAU,GAAA;IAChB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;;IAE5B,QAAA,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG;gBAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;;IAED,QAAA,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;gBACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;oBAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;iBACjB;aACF;IACD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/C;IAEO,IAAA,UAAU,CAAC,KAAa,EAAA;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IAChC,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,KAAK,GAAG,EAAE,CAAC;IAEf,QAAA,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;IACrB,YAAA,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK,EAAE;;IAErB,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;wBAC7B,KAAK,IAAI,KAAK,CAAC;IACf,oBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,SAAS;qBACV;IACD,gBAAA,MAAM;iBACP;;IAED,YAAA,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;oBACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChB,KAAK,IAAI,KAAK,CAAC;oBACf,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChB,SAAS;iBACV;IACD,YAAA,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;YAED,OAAO;gBACL,IAAI,EAAE,SAAS,CAAC,MAAM;gBACtB,KAAK;IACL,YAAA,QAAQ,EAAE,KAAK;aAChB,CAAC;SACH;IAEO,IAAA,QAAQ,CAAC,EAAU,EAAA;IACzB,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC7B;IAEO,IAAA,OAAO,CAAC,EAAU,EAAA;IACxB,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACzB;QAEO,SAAS,CAAC,IAAe,EAAE,KAAa,EAAA;YAC9C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjD;IACF,CAAA;IAED;IACA;IACA;IAEA;IACM,SAAU,QAAQ,CAAC,GAAW,EAAA;IAClC,IAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAA,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,EAAE;IACjC,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,QAAA,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;SACzB;IACD,IAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,IAAA,OAAO,MAAM,CAAC;IAChB;;IC9PA;;;;;;IAMG;IAyBH;IACA;IACA;UAEa,MAAM,CAAA;IAMjB,IAAA,WAAA,CAAY,GAAW,EAAA;IACrB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;YACf,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;;YAE5B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;;QAGD,cAAc,GAAA;IACZ,QAAA,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI;gBACxB,KAAK,SAAS,CAAC,MAAM;IACnB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5B,KAAK,SAAS,CAAC,MAAM;IACnB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5B,KAAK,SAAS,CAAC,MAAM;IACnB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5B,KAAK,SAAS,CAAC,MAAM;IACnB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5B,KAAK,SAAS,CAAC,MAAM;IACnB,gBAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBACrC,KAAK,SAAS,CAAC,IAAI;IACjB,gBAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACnC,KAAK,SAAS,CAAC,KAAK;IAClB,gBAAA,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;gBAChC,KAAK,SAAS,CAAC,QAAQ;IACrB,gBAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACnC,KAAK,SAAS,CAAC,KAAK;IAClB,gBAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC3B,KAAK,SAAS,CAAC,MAAM;IACnB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5B,KAAK,SAAS,CAAC,QAAQ;IACrB,gBAAA,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;;gBAE9B,KAAK,SAAS,CAAC,OAAO;IACpB,gBAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC7B,KAAK,SAAS,CAAC,OAAO;IACpB,gBAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC7B,KAAK,SAAS,CAAC,OAAO;IACpB,gBAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC7B,KAAK,SAAS,CAAC,MAAM;IACnB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5B,KAAK,SAAS,CAAC,SAAS;IACtB,gBAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC/B,KAAK,SAAS,CAAC,OAAO;IACpB,gBAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,YAAA;IACE,gBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAAqB,kBAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;aACjE;SACF;;QAGD,kBAAkB,GAAA;YAChB,MAAM,UAAU,GAAgB,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;;IAEtC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAC9D,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;oBAAE,MAAM;gBAC1C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;;gBAEvC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;oBACxC,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;qBAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;IAC1C,gBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAAsC,mCAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;iBAChF;aACF;IACD,QAAA,OAAO,UAAU,CAAC;SACnB;;;QAKO,YAAY,GAAA;IAClB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;IACtC,YAAA,MAAM,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;aACnD;IACD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACpC,QAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;SACnC;;QAGO,YAAY,GAAA;IAClB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;gBAC7E,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IACD,QAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;SACxE;;QAGO,YAAY,GAAA;IAClB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;gBAC7E,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IACD,QAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;SACxE;;QAGO,WAAW,GAAA;IACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SAC3B;;QAGO,cAAc,GAAA;IACpB,QAAA,IAAI,MAAuC,CAAC;YAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACtC,MAAM,GAAG,SAAS,CAAC;gBACnB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;iBAAM;gBACL,MAAM,GAAG,MAAM,CAAC;IAChB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;aAClC;;IAED,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3D,QAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;SACrF;;QAIO,UAAU,GAAA;IAChB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;IAE7B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,aAAa,EAAE;gBACnF,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IACD,QAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;SAC1B;QAEO,WAAW,GAAA;IACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,aAAa,EAAE;gBACnF,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IACD,QAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SAC3B;;QAGO,aAAa,GAAA;IACnB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAChC,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,aAAa,EAAE;gBACnF,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;aAC7B;;IAED,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;IAC/B,aAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,EAAE;gBAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC;IACtC,iBAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,EAAE;oBACjF,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;IACD,YAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;aACjG;IACD,QAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;SAC7B;;QAIO,oBAAoB,GAAA;IAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;IACpC,YAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;aAChC;IACD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAClC,aAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,EAAE;IAC7E,YAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;aAChC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;;gBAErC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAClC,iBAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,EAAE;IAC7E,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACrC,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACnB,gBAAA,OAAO,IAAI,CAAC;iBACb;aACF;IACD,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAA8C,2CAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;SACxF;QAEO,gBAAgB,GAAA;IACtB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACjD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAClD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACpD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;SACtD;;QAIO,kBAAkB,GAAA;IACxB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;IACpC,YAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;aAC9B;IACD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAClC,aAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,EAAE;IAC7E,YAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;aAC9B;IACD,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAA4C,yCAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;SACtF;QAEO,cAAc,GAAA;IACpB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;YAEjD,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;gBAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;oBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC9C,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;iBAC/B;aACF;YACD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;SACpD;;;;QAMO,WAAW,GAAA;IACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;YAG9B,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBACvC,QAAQ,GAAG,IAAI,CAAC;gBAChB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;;YAGD,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;IACnC,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;iBAAM;gBACL,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;aACzC;;IAGD,QAAA,IAAI,YAAgE,CAAC;YACrE,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,QAAA,IAAI,KAAyB,CAAC;YAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACnC,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAGjB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;oBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAClC,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;wBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,oBAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;qBACxC;IAAM,qBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;IACtF,oBAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;qBAClB;iBACF;qBAAM;IACL,gBAAA,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;oBAGhD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;wBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,oBAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;qBACxC;IAAM,qBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;IACtF,oBAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;qBAClB;iBACF;aACF;IAED,QAAA,MAAM,IAAI,GAAoB;IAC5B,YAAA,IAAI,EAAE,QAAQ;gBACd,OAAO;gBACP,QAAQ,EAAE,QAAQ,IAAI,SAAS;IAC/B,YAAA,IAAI,EAAE,SAAS;gBACf,KAAK;IACL,YAAA,KAAK,EAAE,EAAE;aACV,CAAC;YACF,IAAI,YAAY,EAAE;IAChB,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;aAClC;;IAGD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACtC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;IACpB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aACpB;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;aACpC;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC3C;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;aACrC;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACxC;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;aAC/C;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;aACjD;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;IACpC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aAC9B;IAED,QAAA,OAAO,IAAI,CAAC;SACb;;IAGO,IAAA,UAAU,CAAC,IAA4C,EAAA;IAC7D,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,GAAG,GAAG,KAAK,CAAC;YAChB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClC,GAAG,GAAG,IAAI,CAAC;gBACX,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IACD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAEjC,QAAA,MAAM,SAAS,GAAyB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;;YAErG,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;IACpC,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;aACxC;IACD,QAAA,OAAO,SAAS,CAAC;SAClB;;IAGO,IAAA,eAAe,CAAC,IAA0B,EAAA;IAChD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,GAAG,GAAG,KAAK,CAAC;YAChB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClC,GAAG,GAAG,IAAI,CAAC;gBACX,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IACD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,QAAA,MAAM,SAAS,GAAyB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;YACrG,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;IACpC,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;aACxC;IACD,QAAA,OAAO,SAAS,CAAC;SAClB;;QAGO,gBAAgB,GAAA;YACtB,MAAM,KAAK,GAAwC,EAAE,CAAC;IACtD,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE;gBAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;aACpC;IACD,QAAA,OAAO,KAAK,CAAC;SACd;QAEO,cAAc,GAAA;YACpB,QACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;IAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;gBAChC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAC/B;SACH;;QAGO,eAAe,GAAA;YACrB,IAAI,IAAI,GAAoC,OAAO,CAAC;YAEpD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpC,IAAI,GAAG,OAAO,CAAC;gBACf,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC1C,IAAI,GAAG,MAAM,CAAC;gBACd,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAAE,gBAAA,IAAI,CAAC,SAAS,EAAE,CAAC;aACxD;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBAC3C,IAAI,GAAG,OAAO,CAAC;gBACf,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;aACxD;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBAC3C,IAAI,GAAG,OAAO,CAAC;gBACf,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IAED,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;IAGtD,QAAA,IAAI,KAAyB,CAAC;YAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;aACxC;IAAM,aAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;IACjF,YAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;;YAGD,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAA,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACrD,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;aAC5B;YAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;SAC9C;;QAGO,oBAAoB,GAAA;YAC1B,QACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;IACjC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,cAAc,EAAE,EACrB;SACH;QAEO,eAAe,GAAA;YACrB,QACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;IAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,cAAc,EAAE,EACrB;SACH;;;;QAMO,WAAW,GAAA;IACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;IAGtD,QAAA,IAAI,OAA6B,CAAC;YAClC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACrC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aAC/B;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBACrC,OAAO;IACL,gBAAA,IAAI,EAAE,QAAQ;IACd,gBAAA,IAAI,EAAE,SAAS;oBACf,OAAO;IACP,gBAAA,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE;iBAC3B,CAAC;aACH;;IAGD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;YAG9B,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,QAAA,GAAG;gBACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;oBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;IACD,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACxC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,YAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACxB,QAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAE3C,OAAO;IACL,YAAA,IAAI,EAAE,QAAQ;IACd,YAAA,IAAI,EAAE,SAAS;gBACf,OAAO;gBACP,MAAM;aACP,CAAC;SACH;;;;QAMO,WAAW,GAAA;IACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACtD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;YAG3B,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,QAAA,GAAG;IACD,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACvD,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACjD,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;aAC/B,QAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAE3C,IAAI,KAAK,GAAmB,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;aAC/B;IAED,QAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;SAC1D;;;;QAMO,WAAW,GAAA;IACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAEtD,IAAI,KAAK,GAAmB,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;aAC/B;YAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;SACnD;;;;QAMO,gBAAgB,GAAA;IACtB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;YAG7B,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC9B,WAAW,GAAG,IAAI,CAAC;aACpB;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACtD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAE9B,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,QAAA,GAAG;IACD,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACvD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;aACrC,QAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;IAE3C,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAE9B,QAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,IAAI,SAAS,EAAE,CAAC;SAClG;QAEO,cAAc,GAAA;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;IAEhE,QAAA,MAAM,GAAG,GAAiB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;IAGzC,QAAA,OACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;IAClC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;IACjC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;IAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;gBAClC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,EACrC;gBACA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBACtC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,gBAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;iBACvB;qBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;oBAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;iBACnB;qBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;oBACzC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5B,gBAAA,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;iBACrB;qBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;iBACjC;qBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;oBAChD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IAC3D,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;IAC1D,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC9B,GAAG,CAAC,UAAU,GAAG,CAAA,EAAG,QAAQ,CAAI,CAAA,EAAA,MAAM,EAAE,CAAC;;oBAEzC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;wBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;wBACjB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;4BACrC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,wBAAA,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;yBAC1C;6BAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;4BAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,wBAAA,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;yBAC1C;6BAAM;4BACL,MAAM;yBACP;qBACF;iBACF;qBAAM;oBACL,MAAM;iBACP;aACF;IAED,QAAA,OAAO,GAAG,CAAC;SACZ;;QAGO,kBAAkB,GAAA;YACxB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACtC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,OAAO,SAAS,CAAC;aAClB;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5B,YAAA,OAAO,UAAU,CAAC;aACnB;;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,UAAU,EAAE;gBACnG,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,OAAO,UAAU,CAAC;aACnB;IACD,QAAA,OAAO,UAAU,CAAC;SACnB;;;;QAMO,eAAe,GAAA;IACrB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;IAGtD,QAAA,IAAI,MAAsB,CAAC;YAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClC,MAAM,GAAG,KAAK,CAAC;gBACf,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAEjB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;oBACjG,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;IACD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IAClC,YAAA,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;aACtE;IAAM,aAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;IACxC,aAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,EAAE;gBAC5E,MAAM,GAAG,MAAM,CAAC;gBAChB,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAEjB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;oBACjG,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;gBACrD,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;aACpG;iBAAM;IACL,YAAA,MAAM,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;aACzD;SACF;;;;QAMO,kBAAkB,GAAA;IACxB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAChC,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACtD,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;SACpD;;;;QAMO,cAAc,GAAA;IACpB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;YAE7B,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC9B,QAAQ,GAAG,IAAI,CAAC;aACjB;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACtD,QAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAAE,CAAC;SACjF;;;;;QAOO,cAAc,GAAA;IACpB,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAEvC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACtE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAE1C,IAAI,KAAK,EAAE;;oBAET,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAA+B,CAAC;iBAC7D;qBAAM;oBACL,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAA+B,CAAC;iBAC5D;aACF;IAED,QAAA,OAAO,IAAI,CAAC;SACb;;QAGD,UAAU,GAAA;IACR,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;SAC9B;IAED;;IAE2D;QACnD,oBAAoB,GAAA;;IAE1B,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;IACnC,aAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,EAAE;gBAC9E,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;aACzC;IACD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;IAC1D,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;aACxC;;IAGD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;gBAC5D,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC1C,YAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAA+B,CAAC;aACrD;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACpC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,YAAA,OAAO,KAAK,CAAC;aACd;;IAGD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;;YAGrC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;gBACvF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7C,YAAA,IAAI,KAAK;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC5B,MAAM,MAAM,GAAmB,EAAE,CAAC;gBAClC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACvD,YAAA,OAAO,MAAM,CAAC;aACf;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACtC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC3C,YAAA,OAAO,MAAM,CAAC;aACf;;IAGD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;IACzE,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;IACrD,YAAA,OAAO,MAAM,CAAC;aACf;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;;IAElC,gBAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;IACrC,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACpC,oBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;wBAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,oBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;IACnD,oBAAA,OAAO,MAAM,CAAC;qBACf;IACD,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACrC,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;oBAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAClC,gBAAA,OAAO,MAAM,CAAC;iBACf;qBAAM,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;;IAE3C,gBAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClC,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,gBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;IAC9C,gBAAA,OAAO,MAAM,CAAC;iBACf;aACF;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACnC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAmB,EAAE,CAAC;gBAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACpC,YAAA,OAAO,MAAM,CAAC;aACf;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;gBAE9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;IACrC,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACpC,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,gBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;IAClD,gBAAA,OAAO,MAAM,CAAC;iBACf;IACD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACrC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;gBAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IACjC,YAAA,OAAO,MAAM,CAAC;aACf;;IAGD,QAAA,IACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;IAC/D,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;iBAClE,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,EAC9L;gBACA,MAAM,MAAM,GAAmB,EAAE,CAAC;gBAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAC/B,YAAA,OAAO,MAAM,CAAC;aACf;;IAGD,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;;IAGpC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;IAC3E,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACpC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;IACnD,YAAA,OAAO,MAAM,CAAC;aACf;;IAGD,QAAA,IAAI,KAAc,CAAC;IACnB,QAAA,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACxE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,EAC/B;IACA,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACrC,YAAA,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aAC1B;iBAAM;IACL,YAAA,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;aAC3B;YAED,MAAM,MAAM,GAAmB,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;IACjC,QAAA,OAAO,MAAM,CAAC;SACf;;IAGO,IAAA,oBAAoB,CAAC,MAAe,EAAA;IAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACpC,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;IAE9B,QAAA,OAAO,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,EAA+B,CAAC;SACxG;;QAGO,aAAa,GAAA;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;iBAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,CAAC;SACrG;;QAGO,cAAc,GAAA;IACpB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC3E;IAEO,IAAA,WAAW,CAAC,IAAe,EAAA;IACjC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC;SACrC;QAEO,iBAAiB,GAAA;IACvB,QAAA,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI;gBACxB,KAAK,SAAS,CAAC,EAAE;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,KAAK,CAAC;gBAClD,KAAK,SAAS,CAAC,GAAG;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,KAAK,CAAC;gBACnD,KAAK,SAAS,CAAC,EAAE;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,KAAK,CAAC;gBAClD,KAAK,SAAS,CAAC,GAAG;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,MAAM,CAAC;gBACpD,KAAK,SAAS,CAAC,EAAE;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,KAAK,CAAC;gBAClD,KAAK,SAAS,CAAC,GAAG;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,MAAM,CAAC;IACpD,YAAA;IACE,gBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAAsC,mCAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;aAClF;SACF;;;;QAMO,eAAe,GAAA;YACrB,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACvC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;aACxC;IACD,QAAA,OAAO,IAAI,CAAC;SACb;;QAGO,oBAAoB,GAAA;IAC1B,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC7C,YAAA,GAAG,GAAG,CAAG,EAAA,GAAG,CAAO,IAAA,EAAA,KAAK,EAAE,CAAC;aAC5B;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;IAChH,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAClC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,GAAG,GAAG,CAAG,EAAA,GAAG,CAAO,IAAA,EAAA,KAAK,EAAE,CAAC;aAC5B;IACD,QAAA,OAAO,GAAG,CAAC;SACZ;;QAGO,cAAc,GAAA;;YAEpB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;IACnC,YAAA,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;aACvC;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;IACrC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAClC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,OAAO,KAAK,CAAC;aACd;;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;IACrC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAClC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAG,CAAC;aACrB;;IAGD,QAAA,IACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;IAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;IAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;gBAC9B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAC9B;IACA,YAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;aAClC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACpD,YAAA,OAAO,CAAG,EAAA,KAAK,CAAI,CAAA,EAAA,MAAM,EAAE,CAAC;aAC7B;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IAED;;;IAGG;QACK,uBAAuB,GAAA;IAC7B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACrC,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,QAAA,IAAI,GAAG,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;IAEhC,QAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;IACnD,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;IAAE,gBAAA,KAAK,EAAE,CAAC;gBAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;IAClC,gBAAA,KAAK,EAAE,CAAC;oBACR,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;oBAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,IAAI,KAAK,KAAK,CAAC;wBAAE,MAAM;iBACxB;IACD,YAAA,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IAED,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;YAEtC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,CAAE,CAAC;aACjD;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;gBAC3H,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IACD,QAAA,OAAO,IAAI,CAAC;SACb;;QAGO,kBAAkB,GAAA;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;YAG9B,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBACvC,QAAQ,GAAG,IAAI,CAAC;gBAChB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IAED,QAAA,IAAI,GAAW,CAAC;YAChB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACnC,GAAG,GAAG,GAAG,CAAC;gBACV,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;iBAAM;IACL,YAAA,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;aAC7B;IAED,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;YAG9B,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;aACxC;IAAM,aAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;IAClF,YAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;IAED,QAAA,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAY,SAAA,EAAA,GAAG,CAAE,CAAA,GAAG,GAAG,CAAC;YACjD,IAAI,KAAK,EAAE;IACT,YAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAQ,KAAA,EAAA,KAAK,EAAE,CAAC;aACxC;IACD,QAAA,OAAO,CAAG,EAAA,IAAI,CAAI,CAAA,EAAA,KAAK,GAAG,CAAC;SAC5B;QAEO,iBAAiB,GAAA;YACvB,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;SAC/D;QAEO,mBAAmB,GAAA;YACzB,MAAM,GAAG,GAAa,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACvC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;aACzC;IACD,QAAA,OAAO,GAAG,CAAC;SACZ;QAEO,cAAc,GAAA;YACpB,MAAM,IAAI,GAAc,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACvC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;aAC9B;IACD,QAAA,OAAO,IAAI,CAAC;SACb;QAEO,gBAAgB,GAAA;YACtB,MAAM,IAAI,GAAc,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACvC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;aAChC;IACD,QAAA,OAAO,IAAI,CAAC;SACb;QAEO,YAAY,GAAA;IAClB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC7C,IAAI,SAAS,GAAkB,KAAK,CAAC;YACrC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClC,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC1C,SAAS,GAAG,MAAM,CAAC;gBACnB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;;IAED,QAAA,IAAI,KAAmC,CAAC;YACxC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;gBAC1F,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;oBAC1F,KAAK,GAAG,OAAO,CAAC;oBAChB,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;qBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;oBAChG,KAAK,GAAG,MAAM,CAAC;oBACf,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;aACF;YACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;SAC3D;;QAGO,sBAAsB,GAAA;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAClD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA,CAAE,CAAC;aAC1D;IACD,QAAA,OAAO,KAAK,CAAC;SACd;;QAGO,UAAU,GAAA;IAChB,QAAA,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI;IACxB,YAAA,KAAK,SAAS,CAAC,MAAM,EAAE;IACrB,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAChC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,OAAO,GAAG,CAAC;iBACZ;IACD,YAAA,KAAK,SAAS,CAAC,MAAM,EAAE;oBACrB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACxC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,gBAAA,OAAO,GAAG,CAAC;iBACZ;gBACD,KAAK,SAAS,CAAC,IAAI;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,IAAI,CAAC;gBACnD,KAAK,SAAS,CAAC,KAAK;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,KAAK,CAAC;gBACrD,KAAK,SAAS,CAAC,IAAI;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAAC,gBAAA,OAAO,IAAI,CAAC;IACnD,YAAA;IACE,gBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAAwB,qBAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;aACpE;SACF;;;;QAMO,SAAS,GAAA;IACf,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;SACzC;IAEO,IAAA,UAAU,CAAC,IAAe,EAAA;IAChC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC;SACpC;IAEO,IAAA,MAAM,CAAC,IAAe,EAAA;IAC5B,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO;aACR;IACD,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAA,OAAA,EAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC;SACpE;IAEO,IAAA,gBAAgB,CAAC,OAAe,EAAA;IACtC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;IAC3E,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAChC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,OAAO,GAAG,CAAC;aACZ;IACD,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,OAAO,CAAA,OAAA,EAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC;SACvE;;QAGO,iBAAiB,GAAA;YACvB,QACE,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG;IACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO;IACxC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;IACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;IACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK;IACtC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;IACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;IACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS;IAC1C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE;IACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG;IACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE;IACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG;IACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE;IACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG;IACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG;gBACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EACrC;SACH;IAEO,IAAA,YAAY,CAAC,OAAe,EAAA;YAClC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE;gBAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACxC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,YAAA,OAAO,GAAG,CAAC;aACZ;IACD,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,OAAO,CAAA,OAAA,EAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC;SACvE;IAEO,IAAA,KAAK,CAAC,GAAW,EAAA;IACvB,QAAA,OAAO,IAAI,aAAa,CACtB,CAAA,wBAAA,EAA2B,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,GAAG,CAAA,CAAE,EAC3D,aAAa,CACd,CAAC;SACH;IACF,CAAA;IAED;IACA;IACA;IAEA;IACM,SAAU,KAAK,CAAC,GAAW,EAAA;IAC/B,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;IACrC,IAAA,OAAO,IAAI,CAAC;IACd,CAAC;IAED;IACM,SAAU,QAAQ,CAAC,GAAW,EAAA;IAClC,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAA,OAAO,MAAM,CAAC,kBAAkB,EAAE,CAAC;IACrC,CAAC;IAED;IACM,SAAU,mBAAmB,CAAC,GAAW,EAAA;IAC7C,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAA,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7B;;IC7yCA;;;;;IAKG;IAgCH;IACA,SAAS,mBAAmB,CAAC,IAAY,EAAA;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC3E,IAAA,IAAI,CAAC,CAAC;IAAE,QAAA,OAAO,IAAI,CAAC;IACpB,IAAA,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAE3B,MAAM,KAAK,GAAqB,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,uEAAuE,CAAC;IACnF,IAAA,IAAI,KAA6B,CAAC;IAClC,IAAA,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE;YACvC,IAAI,IAAI,GAA0B,IAAI,CAAC;IACvC,QAAA,IAAI;gBACF,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;aAC7C;IAAC,QAAA,MAAM;;aAEP;IACD,QAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SAC9C;QAED,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACrD,IAAA,IAAI,SAAS;YAAE,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE/C,IAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IAED;IACA,SAAS,gBAAgB,CAAC,IAAY,EAAE,GAA4B,EAAA;IAClE,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,MAAM;IAAE,QAAA,OAAO,IAAI,CAAC;QAC9B,IAAI,CAAC,KAAK,MAAM;IAAE,QAAA,OAAO,IAAI,CAAC;QAC9B,IAAI,CAAC,KAAK,OAAO;IAAE,QAAA,OAAO,KAAK,CAAC;IAChC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAAE,QAAA,OAAO,GAAG,CAAC;IACxC,IAAA,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACzD,IAAA,IAAI,GAAG;IAAE,QAAA,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IACvB,IAAA,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACvC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;SACvB;IACD,IAAA,OAAO,CAAC,CAAC;IACX,CAAC;IAED;IACA,SAAS,YAAY,CAAC,IAAoB,EAAE,GAA4B,EAAA;QACtE,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;YACxC,IAAI,IAAI,IAAI,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE;IACjC,YAAA,OAAO,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;aACrC;SACF;QACD,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAChF,CAAC;IAED;IACA;IACA;UAEa,aAAa,CAAA;QAGxB,WAAoB,CAAA,MAAsB,EAAE,eAAA,GAA0B,CAAC,EAAA;YAAnD,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;IACxC,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;SACxC;QAED,MAAM,OAAO,CAAC,IAAe,EAAA;IAC3B,QAAA,QAAQ,IAAI,CAAC,IAAI;gBACf,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC/C,KAAK,cAAc,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC1D,KAAK,SAAS,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAW,CAAC,CAAC;gBACxD,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC/C,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC/C,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC/C,KAAK,cAAc,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC1D,KAAK,YAAY,EAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACtD,KAAK,aAAa,EAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAW,CAAC,CAAC;gBAC/D,KAAK,gBAAgB,EAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAW,CAAC,CAAC;gBACrE,KAAK,cAAc,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAW,CAAC,CAAC;gBACjE,KAAK,YAAY,EAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAW,CAAC,CAAC;gBAC7D,KAAK,OAAO,EAAE,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;gBACzC,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3C,KAAK,UAAU,EAAE,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;;gBAE/C,KAAK,WAAW,EAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACrD,KAAK,SAAS,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACjD,KAAK,SAAS,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACjD,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3C,SAAS,MAAM,IAAI,aAAa,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,CAAC;aACjF;SACF;;;;;QAOO,MAAM,kBAAkB,CAAC,IAA0B,EAAA;YACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;YAG3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACrE,QAAA,MAAM,UAAU,GAA8B,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAEzE,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE;gBACZ,KAAK,MAAM,GAAG,IAAI,SAAS;IAAE,gBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClF,YAAA,OAAO,UAAU,CAAC;aACnB;;IAGD,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAC/B,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,QAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;IAC5B,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1E,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACd,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAClB;aACF;IACD,QAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;gBAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtD,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACd,gBAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACxB;aACF;IACD,QAAA,OAAO,MAAM,CAAC;SACf;QAEO,MAAM,iBAAiB,CAAC,IAA4C,EAAA;YAC1E,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAChG;;QAGO,eAAe,CAAC,GAA4B,EAAE,QAAkB,EAAA;IACtE,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;IAAE,YAAA,OAAO,GAAG,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;aAC/D;IACD,QAAA,OAAO,SAAS,CAAC;SAClB;;QAGO,MAAM,cAAc,CAAC,IAA0B,EAAA;IACrD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,MAAM,GAAY,IAAI,CAAC;IAC3B,QAAA,IAAI;gBACF,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACzC;IAAC,QAAA,MAAM,6BAA6B;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACvC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;;YAGvD,IAAI,IAAI,GAA4C,IAAI,CAAC;IACzD,QAAA,IAAI;IACF,YAAA,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACrC;IAAC,QAAA,MAAM,0BAA0B;YAElC,OAAO;IACL,YAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gBACrB,KAAK,EAAE,IAAI,EAAE,KAAK;gBAClB,OAAO,EAAE,IAAI,EAAE,OAAO;IACtB,YAAA,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;IACxB,YAAA,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE;gBAC5B,KAAK,EAAE,IAAI,EAAE,KAAK;gBAClB,MAAM,EAAE,IAAI,EAAE,MAAM;gBACpB,UAAU,EAAE,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM;IACzC,YAAA,aAAa,EAAE,IAAI;IACnB,YAAA,YAAY,EAAE,OAAO;aACtB,CAAC;SACH;;;;QAMO,MAAM,aAAa,CAAC,IAAqB,EAAA;IAC/C,QAAA,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/D,QAAA,MAAM,YAAY,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3E,QAAA,IAAI,IAA+B,CAAC;IAEpC,QAAA,MAAM,WAAW,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;;YAG5D,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;IACnD,aAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;;YAElD,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;;YAEvD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzE,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;;gBAErB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChE,YAAA,IAAI,GAAG,WAAW;IAChB,kBAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;sBAC/F,OAAO,CAAC;gBACZ,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;;IAEpE,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,gBAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBAC1D;aACF;iBAAM,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;;IAErC,YAAA,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;aACb;iBAAM,IAAI,WAAW,EAAE;;gBAEtB,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;aAC3C;iBAAM;;IAEL,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBAChF;;IAED,YAAA,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9D,YAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IAC3C,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;iBACpG;IACD,YAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;iBACzE;;IAED,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;oBACpC,IAAI,CAAC,KAAK,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAAE,oBAAA,OAAO,CAAC,CAAC;oBAC1G,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;oBAC3C,IAAI,CAAC,EAAE;IACL,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;wBAC3D,OAAO,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAA,EAAG,QAAQ,CAAA,IAAA,EAAO,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;qBAChE;oBACD,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACzC,aAAC,CAAC,CAAC;;IAGH,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBACpD,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,IAAI,YAAY,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;;IAE/F,gBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;oBACrB,IAAI,YAAY,EAAE;IAAE,oBAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAAC,oBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IAAC,oBAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;qBAAE;IAChG,gBAAA,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtG,gBAAA,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;iBACtD;qBAAM;;IAEL,gBAAA,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;IACpD,oBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACvD;oBACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,IAAI,YAAY,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;oBAC/F,IAAI,YAAY,IAAI,cAAc;IAAE,oBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;oBACzD,IAAI,YAAY,EAAE;IAAE,oBAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAAC,oBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IAAC,oBAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;qBAAE;IAChG,gBAAA,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBACjD;aACF;;YAGD,IAAI,YAAY,EAAE;gBAChB,IAAI,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;aAClD;IAED,QAAA,IAAI,UAAU;gBAAE,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvD,IAAI,IAAI,CAAC,QAAQ;IAAE,YAAA,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACrD,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;;IAEtD,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;IAExD,YAAA,MAAM,QAAQ,GAAI,IAA0D,CAAC,YAAY,CAAC;gBAC1F,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;oBACjC,MAAM,UAAU,GAAmB,EAAE,CAAC;IACtC,gBAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IAChD,oBAAA,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;qBACtC;IACD,gBAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;iBAC1B;IACD,YAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,MAAO,CAAC,CAAC,CAAC;aAC5D;YACD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACrF,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACtF,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;aAC9D;;IAED,QAAA,IAAI,YAAY,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3D,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACzC;IACD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;YACxC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;;IAG1C,QAAA,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;gBAClE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;aAC5C;IAED,QAAA,OAAO,IAAI,CAAC;SACb;;IAIO,IAAA,MAAM,iBAAiB,CAAC,IAAqB,EAAE,aAAyC,EAAA;YAC9F,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;;IAE1C,QAAA,IAAI,QAAmC,CAAC;YACxC,IAAI,aAAa,EAAE;gBACjB,QAAQ,GAAG,aAAa,CAAC;aAC1B;iBAAM;;IAEL,YAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5E,YAAA,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAC5C,KAAK,EAAE,IAAI,CAAC,IAAI;IAChB,gBAAA,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,SAAS;IAC/D,aAAA,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;aAClD;YACD,IAAI,UAAU,GAAG,QAAQ,CAAC;IAE1B,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAM,EAAE;gBAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;;IAE3C,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBAClF,IAAI,UAAU,EAAE;oBACd,UAAU,GAAG,UAAU,CAAC;oBACxB,SAAS;iBACV;gBACD,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IACxE,iBAAA,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;gBAChD,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;aACxD;IAED,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;;gBAEpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IACtC,gBAAA,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;iBAClE;qBAAM;;IAEL,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,gBAAA,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBACtE;aACF;IACD,QAAA,OAAO,UAAU,CAAC;SACnB;QAEO,SAAS,CAAC,GAA4B,EAAE,KAAa,EAAA;YAC3D,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;gBAAE,QAAQ,CAAC,GAAG,KAAK,CAAA,CAAA,EAAI,GAAG,CAAE,CAAA,CAAC,GAAG,KAAK,CAAC;IACpF,QAAA,OAAO,QAAQ,CAAC;SACjB;IAED;;;IAGG;QACK,oBAAoB,CAAC,KAAqB,EAAE,SAAiB,EAAA;YACnE,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,QAAA,IAAI,CAAC,SAAS;gBAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpC,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;IAC/B,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IAChD,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,SAAS;gBACtC,MAAM,CAAC,GAAG,KAAuC,CAAC;IAClD,YAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;qBACpC,MAAM,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE;oBAC/E,SAAS;iBACV;IACD,YAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC;aAC5C;YACD,OAAO,EAAE,QAAQ,EAAE,CAAC;SACrB;IAED;;;;;;IAMG;QACK,MAAM,WAAW,CACvB,QAAmC,EACnC,IAAgB,EAChB,SAAiB,EACjB,SAAiB,EAAA;YAEjB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;IAAE,YAAA,OAAO,IAAI,CAAC;;YAGhE,MAAM,KAAK,GAA4C,EAAE,CAAC;IAC1D,QAAA,MAAM,YAAY,GAAG,CAAC,EAAkB,KAAa;IACnD,YAAA,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;IAC/C,gBAAA,IAAI,MAAM,KAAK,MAAM,EAAE;IACrB,oBAAA,IAAI,CAAE,IAAyB,CAAC,KAAK,CAAC,YAAY,CAAC;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAClE,SAAS;qBACV;IACD,gBAAA,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM;wBAAE,OAAO,KAAK,CAAC;oBACxD,IAAI,MAAM,GAAkB,IAAI,CAAC;oBACjC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;wBAC7C,MAAM,CAAC,GAAG,IAA+B,CAAC;wBAC1C,IAAI,KAAK,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,MAAM,IAAK,CAAC,CAAC,GAA+B,EAAE;4BAC7G,MAAM,GAAG,MAAM,CAAE,CAAC,CAAC,GAA+B,CAAC,IAAI,CAAC,CAAC;yBAC1D;IAAM,yBAAA,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;IACrD,wBAAA,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;yBACzB;qBACF;IACD,gBAAA,IAAI,CAAC,MAAM;wBAAE,OAAO,KAAK,CAAC;IAE1B,gBAAA,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA,EAAG,SAAS,CAAG,CAAA,CAAA,CAAC,GAAG,KAAK,CAAC;oBACzE,KAAK,CAAC,IAAI,CAAC;wBACT,OAAO,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM;wBACpC,QAAQ,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM;IACtC,iBAAA,CAAC,CAAC;iBACJ;IACD,YAAA,OAAO,IAAI,CAAC;IACd,SAAC,CAAC;IACF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;IACxC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;;IAGpC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,QAAA,IAAI,CAAC,MAAM;IAAE,YAAA,OAAO,IAAI,CAAC;YACzB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;IACjC,YAAA,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,YAAA,OAAO,MAAM,KAAK,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;IACxE,SAAC,CAAC,CAAC;IACH,QAAA,IAAI,CAAC,SAAS;IAAE,YAAA,OAAO,IAAI,CAAC;;IAG5B,QAAA,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;IAC5D,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3H,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;;IAGrC,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACnD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,EAAE,CAAC,cAAc,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;IAC7C,SAAA,CAAC,CAAC;;IAGH,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC1D,QAAA,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE;IAC1B,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5F,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAAE,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACtC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACzB;YAED,MAAM,SAAS,GAA4B,EAAE,CAAC;YAC9C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAAE,YAAA,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAErE,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,QAAA,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;IACxB,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IACjC,gBAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;IACvB,oBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;qBACxD;iBACF;IAAM,iBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;;IAE/B,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;iBAChE;;aAEF;IACD,QAAA,OAAO,MAAM,CAAC;SACf;;IAGO,IAAA,QAAQ,CACd,QAAmC,EACnC,SAAoC,EACpC,IAAgB,EAAA;IAEhB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;gBACzB,MAAM,MAAM,GAA8B,EAAE,CAAC;gBAC7C,KAAK,MAAM,CAAC,IAAI,QAAQ;oBAAE,KAAK,MAAM,CAAC,IAAI,SAAS;wBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACjF,YAAA,OAAO,MAAM,CAAC;aACf;YAED,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,QAAA,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;gBACxB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,YAAA,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;;oBAEzB,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAC9B,gBAAA,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;IAC/C,oBAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACpB,OAAO,GAAG,IAAI,CAAC;qBAChB;iBACF;gBACD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;oBACpC,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,gBAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAAE,oBAAA,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;oBACzE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;iBACrC;aACF;IAED,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;IACzB,YAAA,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;oBACzB,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;wBACpC,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAC9B,oBAAA,OAAO,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,iBAAC,CAAC,CAAC;oBACH,IAAI,CAAC,SAAS,EAAE;wBACd,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,oBAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAAE,wBAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;wBACvE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;qBACpC;iBACF;aACF;IACD,QAAA,OAAO,MAAM,CAAC;SACf;;QAIO,cAAc,CAAC,IAA+B,EAAE,IAAqB,EAAA;IAC3E,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC5D,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;IAAE,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC5B;YACD,MAAM,MAAM,GAA8B,EAAE,CAAC;;IAE7C,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC3C,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE;gBACvC,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAQ;oBAAE,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACrE,YAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;oBAClC,IAAI,OAAO,KAAK,GAAG;wBAAE,SAAS;oBAC9B,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;oBACjF,IAAI,CAAC,EAAE;wBACL,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/E,oBAAA,MAAM,OAAO,GAAG,CAAG,EAAA,IAAI,CAAC,WAAW,EAAE,CAAA,CAAA,EAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;IACvD,oBAAA,MAAM,SAAS,GAAG,KAAK,IAAI,OAAO,CAAC;wBACnC,IAAI,SAAS,KAAK,OAAO;IAAE,wBAAA,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC5D,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;qBAC/B;IAAM,qBAAA,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;;IAEtC,oBAAA,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;wBAC1C,UAAU,CAAC,IAAI,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;qBACrF;yBAAM,IAAI,CAAC,IAAI,CAAC,OAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;wBAC3C,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;qBAC7C;iBACF;IACD,YAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzB;IACA,QAAA,IAA0D,CAAC,YAAY,GAAG,QAAQ,CAAC;IACpF,QAAA,OAAO,MAAM,CAAC;SACf;IAEO,IAAA,gBAAgB,CAAC,IAAY,EAAE,IAA+B,EAAE,GAAW,EAAA;;IAEjF,QAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;;YAE3E,MAAM,WAAW,GAAG,CAAC,QAAQ,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC;YAC9E,MAAM,SAAS,GAAG,IAAI;iBACnB,GAAG,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;;IAEhD,QAAA,IAAI,IAAI,KAAK,OAAO,EAAE;gBACpB,IAAI,MAAM,KAAK,GAAG;oBAAE,OAAO,IAAI,CAAC,MAAM,CAAC;gBACvC,IAAI,WAAW,EAAE;IACf,gBAAA,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;iBACpG;gBACD,OAAO,SAAS,CAAC,MAAM,CAAC;aACzB;YACD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,YAAY,GAAG,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;YACpE,QAAQ,IAAI;gBACV,KAAK,KAAK,EAAE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,YAAA,KAAK,KAAK,EAAE,OAAO,YAAY,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;gBACzH,KAAK,KAAK,EAAE,OAAO,YAAY,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;gBAC7E,KAAK,KAAK,EAAE,OAAO,YAAY,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAC7E,YAAA,SAAS,OAAO,CAAC,CAAC;aACnB;SACF;;IAIO,IAAA,eAAe,CAAC,IAA+B,EAAA;IACrD,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;IACzB,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1E,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAAE,gBAAA,OAAO,KAAK,CAAC;IAChC,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACd,YAAA,OAAO,IAAI,CAAC;IACd,SAAC,CAAC,CAAC;SACJ;;;;QAMO,MAAM,aAAa,CAAC,IAAqB,EAAA;IAC/C,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;IAC/F,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;;IAG7D,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;;gBAG7D,IAAI,OAAO,GAAa,EAAE,CAAC;IAC3B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IACxB,YAAA,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;oBACzB,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;wBACnE,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC,CAAC;qBACvD;IAAM,qBAAA,IAAI,GAAG,CAAC,IAAI,EAAE;IACnB,oBAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7D,oBAAA,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;qBAC3D;iBACF;IACD,YAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjD,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;iBACtC;gBACD,MAAM,IAAI,GAA8B,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;oBAC7D,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACxC,oBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACnD,oBAAA,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG;4BAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;qBACvD;IACD,gBAAA,OAAO,MAAM,CAAC;IAChB,aAAC,CAAC,CAAC;IACH,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aAC5C;IAED,QAAA,MAAM,IAAI,GAA8B,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAe,KAAI;gBAClF,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAAE,gBAAA,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM;wBAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;iBAAE;IAC9F,YAAA,OAAO,GAAG,CAAC;IACb,SAAC,CAAC,CAAC;IACH,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAC5C;QAEO,MAAM,aAAa,CAAC,IAAqB,EAAA;IAC/C,QAAA,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACxD;QAEO,MAAM,aAAa,CAAC,IAAqB,EAAA;IAC/C,QAAA,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAC7C;QAEO,MAAM,kBAAkB,CAAC,IAA0B,EAAA;;IAEzD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;IACpB,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,YAAA,IAAI,MAAM;oBAAE,OAAO;aACpB;YACD,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC9E,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;SAClE;QAEO,MAAM,gBAAgB,CAAC,IAAwB,EAAA;IACrD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;IACjB,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,YAAA,IAAI,CAAC,MAAM;IAAE,gBAAA,OAAO;aACrB;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzC;QAEO,MAAM,iBAAiB,CAAC,IAAyB,EAAA;IACvD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;IAC/F,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,QAAA,IAAI,CAAC,MAAM;gBAAE,OAAO;;YAGpB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;IAChD,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;aACzH;IAED,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;gBACzB,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IACpC,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,IAAI,CAAC,IAAI,GAAG,EAAE,eAAe,CAAC,CAAC;iBACjH;;IAED,YAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACtE;IAAM,aAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;IACjC,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IACrC,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,IAAI,CAAC,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAC;iBACpH;;gBAED,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;;gBAExC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IACjC,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;oBACtB,IAAI,OAAO,IAAI,GAAG;IAAE,oBAAA,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;iBACzC;aACF;SACF;QAEO,MAAM,oBAAoB,CAAC,IAA4B,EAAA;IAC7D,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;YAC/F,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACrC;;;;QAMO,MAAM,kBAAkB,CAAC,IAA0B,EAAA;IACzD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,KAAK,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;IAEhG,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,QAAA,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IAC1C,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAA8B,2BAAA,EAAA,IAAI,CAAC,KAAK,CAAA,CAAA,CAAG,EAAE,kBAAkB,CAAC,CAAC;aAChH;YAED,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE;IACjD,YAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,+BAAA,CAAiC,EAC5D,eAAe,CAChB,CAAC;aACH;IACD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACtE;QAEO,MAAM,gBAAgB,CAAC,IAAwB,EAAA;YACrD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE;IAC/C,YAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,6BAAA,CAA+B,EAC1D,eAAe,CAChB,CAAC;aACH;IACD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SAClE;;;;IAMO,IAAA,MAAM,YAAY,GAAA;IACxB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;SACvC;IAEO,IAAA,MAAM,aAAa,GAAA;IACzB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;SACxC;IAEO,IAAA,MAAM,eAAe,GAAA;IAC3B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;SAC1C;;;;;QAOO,MAAM,gBAAgB,CAAC,IAAwC,EAAA;IACrE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAInB,CAAC;IACF,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;IAC1B,YAAA,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE;IAC1C,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,4BAAA,CAA8B,EAAE,eAAe,CAAC,CAAC;iBACrG;gBACD,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpC;IACD,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;IAC9B,YAAA,IAAI,OAAO,MAAM,CAAC,mBAAmB,KAAK,UAAU,EAAE;IACpD,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,wCAAA,CAA0C,EAAE,eAAe,CAAC,CAAC;iBACjH;gBACD,OAAO,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC9C;IACD,QAAA,IAAI,OAAO,MAAM,CAAC,gBAAgB,KAAK,UAAU,EAAE;IACjD,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,oCAAA,CAAsC,EAAE,eAAe,CAAC,CAAC;aAC7G;YACD,OAAO,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3C;;QAGO,MAAM,cAAc,CAAC,IAAsC,EAAA;IACjE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAEnB,CAAC;IACF,QAAA,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE;IAC7C,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,0BAAA,CAA4B,EAAE,eAAe,CAAC,CAAC;aACnG;IACD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,KAAK,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;YAChG,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACxC;;QAGO,MAAM,cAAc,CAAC,IAAsC,EAAA;IACjE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAEnB,CAAC;IACF,QAAA,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE;IAC7C,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,0BAAA,CAA4B,EAAE,eAAe,CAAC,CAAC;aACnG;IACD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,QAAA,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,KAAK,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;YAChG,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACxC;;IAGO,IAAA,MAAM,aAAa,GAAA;IACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAEnB,CAAC;IACF,QAAA,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;IACvC,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,yBAAA,CAA2B,EAAE,eAAe,CAAC,CAAC;aAClG;IACD,QAAA,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;SACxB;;IAGO,IAAA,aAAa,CAAC,OAAiB,EAAA;IACrC,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SACvD;IAED;;;IAGG;IACK,IAAA,sBAAsB,CAAC,IAAqB,EAAA;YAClD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;IAAE,YAAA,OAAO,KAAK,CAAC;IAC7D,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC9B,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACvC,YAAA,IAAI,CAAC;oBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,iBAAA,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAChC,gBAAA,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;oBACtC,IAAI,IAAI,EAAE,KAAK;IAAE,oBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1C;aACF;IACD,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;IAAE,YAAA,OAAO,KAAK,CAAC;YACrC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;SACxD;;IAGO,IAAA,YAAY,CAAC,KAAqB,EAAA;IACxC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;IACnC,gBAAA,IAAK,KAA0B,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAAE,oBAAA,OAAO,IAAI,CAAC;oBACnF,SAAS;iBACV;IACD,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;IAClB,gBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAuB,CAAC;IAAE,oBAAA,OAAO,IAAI,CAAC;oBAC5D,SAAS;iBACV;IACD,YAAA,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;IAAE,gBAAA,OAAO,IAAI,CAAC;aAC1C;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IAED,IAAA,SAAS,KAAqB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;IAEnD;;;IAGG;QACK,UAAU,CAAC,GAA4B,EAAE,OAAiB,EAAA;YAChE,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAwC,EAAE,CAAC;YAC1D,MAAM,QAAQ,GAA8C,EAAE,CAAC;YAC/D,MAAM,SAAS,GAAsC,EAAE,CAAC;IACxD,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;gBACzB,IAAI,GAAG,KAAK,GAAG;oBAAE,SAAS;IAC1B,YAAA,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,IAAI,EAAE;IACR,gBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;oBAClD,SAAS;iBACV;gBACD,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBAC7C,IAAI,CAAC,EAAE;oBACL,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACrD,SAAS;iBACV;;gBAED,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACnC,IAAI,GAAG,EAAE;IACP,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBAC1C,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;oBACpC,SAAS;iBACV;IACD,YAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACjB;YACD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YACrE,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE;IACzC,YAAA,IAAI,MAAM,KAAK,GAAG,EAAE;IAClB,gBAAA,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;iBAC/B;qBAAM;oBACL,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACtC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpE;aACF;YACD,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,SAAS,EAAE;IACtC,YAAA,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACxB;YACD,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE;gBACtC,SAAS,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aAC5C;IACD,QAAA,OAAO,SAAS,CAAC;SAClB;;;;;IAOO,IAAA,mBAAmB,CAAC,OAAiB,EAAA;IAC3C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SACvE;;QAGO,sBAAsB,CAAC,IAA+B,EAAE,IAAqB,EAAA;YACnF,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;gBAClC,IAAI,OAAO,KAAK,GAAG;oBAAE,SAAS;gBAC9B,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;gBACjF,IAAI,CAAC,EAAE;oBACL,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/B,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;iBACxF;qBAAM;;oBAEL,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;iBAC7D;aACF;IACD,QAAA,OAAO,MAAM,CAAC;SACf;;;;;QAOO,qBAAqB,CAAC,KAAqB,EAAE,OAAiB,EAAA;YACpE,MAAM,UAAU,GAAmB,EAAE,CAAC;IACtC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;oBACnC,UAAU,CAAC,GAAG,CAAC,GAAI,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;oBACrG,SAAS;iBACV;IACD,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;oBAClB,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAuB,EAAE,OAAO,CAAC,CAAC;oBAC/E,SAAS;iBACV;IACD,YAAA,IAAI,GAAG,KAAK,SAAS,EAAE;IACrB,gBAAA,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBAC5D,SAAS;iBACV;gBACD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC7C,YAAA,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;aAC/D;IACD,QAAA,OAAO,UAAU,CAAC;SACnB;QAEO,oBAAoB,CAAC,KAAc,EAAE,OAAiB,EAAA;IAC5D,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;IAAE,YAAA,OAAO,KAAK,CAAC;YAC9D,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,QAAA,IAAI,CAAC,CAAC,SAAS,EAAE;IACf,YAAA,MAAM,GAAG,GAAG,CAAC,CAAC,SAA4B,CAAC;;IAE3C,YAAA,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACvE,OAAO,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC;aAClG;IACD,QAAA,OAAO,KAAK,CAAC;SACd;QAEO,mBAAmB,CAAC,KAAc,EAAE,OAAiB,EAAA;IAC3D,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAAE,YAAA,OAAO,KAAK,CAAC;YACtF,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,QAAA,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE;gBAC5E,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,KAAK,EAAE;oBACjC,GAAG,CAAC,EAAE,CAAC,GAAI,OAA4B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;iBAChG;IAAM,iBAAA,IAAI,EAAE,KAAK,MAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;IAC3E,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;iBACtD;IAAM,iBAAA,IAAI,EAAE,KAAK,MAAM,EAAE;IACxB,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;iBACrD;qBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,IAAK,OAAmC,EAAE;;oBAEvI,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAE,OAAmC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;iBACjG;qBAAM;IACL,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;iBACnB;aACF;IACD,QAAA,OAAO,GAAG,CAAC;SACZ;QAEO,UAAU,CAAC,GAAW,EAAE,OAAiB,EAAA;IAC/C,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;IAC3B,YAAA,IAAI,CAAC,KAAK;oBAAE,SAAS;IACrB,YAAA,MAAM,MAAM,GAAG,CAAG,EAAA,KAAK,GAAG,CAAC;IAC3B,YAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAC7D;IACD,QAAA,OAAO,GAAG,CAAC;SACZ;;IAGO,IAAA,iBAAiB,CAAC,KAAqB,EAAA;IAC7C,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;IACnC,gBAAA,IAAK,KAA0B,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAAE,oBAAA,OAAO,IAAI,CAAC;oBACxF,SAAS;iBACV;IACD,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;IAClB,gBAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAuB,CAAC;IAAE,oBAAA,OAAO,IAAI,CAAC;oBACjE,SAAS;iBACV;IACD,YAAA,IAAI,GAAG,KAAK,SAAS,EAAE;;IAErB,gBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,WAAW,IAAK,KAAiC,EAAE;wBACpG,OAAO,IAAI,CAAC;qBACb;oBACD,SAAS;iBACV;;IAED,YAAA,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;IAAE,gBAAA,OAAO,IAAI,CAAC;IACzC,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IAAE,gBAAA,OAAO,IAAI,CAAC;aAC7C;IACD,QAAA,OAAO,KAAK,CAAC;SACd;IAEO,IAAA,cAAc,CAAC,KAAc,EAAA;IACnC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAAE,YAAA,OAAO,KAAK,CAAC;YACtF,MAAM,GAAG,GAAG,KAAgC,CAAC;YAC7C,IAAI,MAAM,IAAI,GAAG;IAAE,YAAA,OAAO,IAAI,CAAC;YAC/B,IAAI,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE;gBACjC,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAqB,CAAC;IACvD,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;aACxD;IACD,QAAA,IAAI,MAAM,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE;gBACtE,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACtC;;IAED,QAAA,KAAK,MAAM,GAAG,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IAC7C,YAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBAC9E,IAAI,MAAM,IAAK,OAAmC;IAAE,oBAAA,OAAO,IAAI,CAAC;IAChE,gBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;IAAE,oBAAA,OAAO,IAAI,CAAC;iBAC/C;aACF;IACD,QAAA,OAAO,KAAK,CAAC;SACd;;IAGO,IAAA,qBAAqB,CAAC,KAAqB,EAAA;YACjD,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;oBACnC,OAAO,CAAC,GAAG,CAAC,GAAI,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;oBACzF,SAAS;iBACV;IACD,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;oBAClB,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAuB,CAAC,CAAC;;oBAElE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;IAAE,oBAAA,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;oBACxD,SAAS;iBACV;gBACD,IAAI,GAAG,KAAK,SAAS;IAAE,gBAAA,SAAS;IAChC,YAAA,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;IAAE,gBAAA,SAAS;IACtC,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACtB;IACD,QAAA,OAAO,OAAO,CAAC;SAChB;;IAGO,IAAA,MAAM,gBAAgB,CAAC,IAA+B,EAAE,KAAqB,EAAA;YACnF,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;;gBAEtB,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;gBAEhD,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACvD,YAAA,IAAI,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE;IAC7B,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAClB;aACF;IACD,QAAA,OAAO,MAAM,CAAC;SACf;;QAGO,eAAe,CAAC,KAAqB,EAAE,GAA4B,EAAA;YACzE,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;oBACnC,QAAQ,CAAC,GAAG,CAAC,GAAI,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;oBACzF,SAAS;iBACV;IACD,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;oBAClB,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAuB,EAAE,GAAG,CAAC,CAAC;oBACnE,SAAS;iBACV;IACD,YAAA,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAC3B,gBAAA,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACtC,gBAAA,IAAI,CAAC,IAAI;IAAE,oBAAA,SAAS;oBACpB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBACpC,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;IACzC,oBAAA,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;qBAC7B;yBAAM;IACL,oBAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;qBAC/B;oBACD,SAAS;iBACV;IACD,YAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACvB;IACD,QAAA,OAAO,QAAQ,CAAC;SACjB;;QAGO,oBAAoB,CAAC,GAAY,EAAE,SAAkB,EAAA;IAC3D,QAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBACnF,OAAO,GAAG,KAAK,SAAS,CAAC;aAC1B;YACD,MAAM,GAAG,GAAG,SAAoC,CAAC;IACjD,QAAA,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAC/C,QAAQ,EAAE;IACR,gBAAA,KAAK,KAAK;wBAAE,IAAI,GAAG,KAAK,OAAO;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAAC,MAAM;IACrD,gBAAA,KAAK,KAAK;wBAAE,IAAI,GAAG,KAAK,OAAO;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAAC,MAAM;IACrD,gBAAA,KAAK,KAAK;IAAE,oBAAA,IAAI,EAAG,GAAc,GAAI,OAAkB,CAAC;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAAC,MAAM;IAC9E,gBAAA,KAAK,MAAM;IAAE,oBAAA,IAAI,EAAG,GAAc,IAAK,OAAkB,CAAC;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAAC,MAAM;IAChF,gBAAA,KAAK,KAAK;IAAE,oBAAA,IAAI,EAAG,GAAc,GAAI,OAAkB,CAAC;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAAC,MAAM;IAC9E,gBAAA,KAAK,MAAM;IAAE,oBAAA,IAAI,EAAG,GAAc,IAAK,OAAkB,CAAC;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAAC,MAAM;IAChF,gBAAA,KAAK,KAAK;IAAE,oBAAA,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAAC,MAAM;IACxF,gBAAA,KAAK,MAAM;IAAE,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;IAAE,wBAAA,OAAO,KAAK,CAAC;wBAAC,MAAM;iBAEvF;aACF;IACD,QAAA,OAAO,IAAI,CAAC;SACb;;QAGO,cAAc,CAAC,KAAc,EAAE,UAAmC,EAAA;IACxE,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAAE,YAAA,OAAO,KAAK,CAAC;YACtF,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,QAAA,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE;IAC5E,YAAA,IAAI,EAAE,KAAK,MAAM,EAAE;IACjB,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;iBAC/C;qBAAM,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,KAAK,EAAE;oBACxC,GAAG,CAAC,EAAE,CAAC,GAAI,OAA4B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;iBAC3F;IAAM,iBAAA,IAAI,EAAE,KAAK,MAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;IAC3E,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;iBACpD;qBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,IAAK,OAAmC,EAAE;;IAEvI,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAE,OAAmC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;iBACjF;qBAAM;IACL,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;iBACnB;aACF;IACD,QAAA,OAAO,GAAG,CAAC;SACZ;QAEO,aAAa,CAAC,KAAqB,EAAE,UAAmC,EAAA;YAC9E,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;oBACnC,KAAK,CAAC,GAAG,CAAC,GAAI,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;iBAC5F;IAAM,iBAAA,IAAI,GAAG,KAAK,MAAM,EAAE;oBACzB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAuB,EAAE,UAAU,CAAC,CAAC;iBACtE;IAAM,iBAAA,IAAI,GAAG,KAAK,SAAS,EAAE;IAC5B,gBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;iBACpB;qBAAM;IACL,gBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;iBACrD;aACF;IACD,QAAA,OAAO,KAAK,CAAC;SACd;;;;IAMD;;;;IAIG;IACK,IAAA,MAAM,iBAAiB,CAAC,KAAqB,EAAE,UAAoC,EAAA;;YAEzF,IAAI,UAAU,EAAE;gBACd,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;aAC/C;YACD,MAAM,QAAQ,GAAmB,EAAE,CAAC;IAEpC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;IAEhD,YAAA,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;oBACpE,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,gBAAA,MAAM,GAAG,GAAG,CAAC,CAAC,SAA4B,CAAC;IAC3C,gBAAA,MAAM,MAAM,GAAG,CAAC,CAAE,CAA6B,CAAC,OAAO,CAAC;IACxD,gBAAA,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;;IAEzB,gBAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE;wBACpC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;qBAC3D;IACD,gBAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACvE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,MAAM,CAAC;oBAC9C,SAAS;iBACV;;gBAED,IAAI,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAC1C,QAAQ,CAAC,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAClF,CAAC;oBACF,SAAS;iBACV;gBACD,IAAI,GAAG,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACzC,QAAQ,CAAC,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAClF,CAAC;oBACF,SAAS;iBACV;IACD,YAAA,IAAI,GAAG,KAAK,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;IACjE,gBAAA,QAAQ,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAuB,EAAE,UAAU,CAAC,CAAC;oBAClF,SAAS;iBACV;;gBAGD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;oBAC/C,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAgC,CAAC,CAAC;iBACxF;qBAAM;IACL,gBAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;iBACvB;aACF;IAED,QAAA,OAAO,QAAQ,CAAC;SACjB;IAED;;IAEG;QACK,MAAM,yBAAyB,CAAC,GAA4B,EAAA;YAClE,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAE7C,QAAA,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;;gBAE/C,IAAI,EAAE,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBAC3C,QAAQ,CAAC,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,OAA4B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CACxE,CAAC;oBACF,SAAS;iBACV;gBACD,IAAI,EAAE,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBAC1C,QAAQ,CAAC,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,OAA4B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CACxE,CAAC;oBACF,SAAS;iBACV;IACD,YAAA,IAAI,EAAE,KAAK,MAAM,EAAE;oBACjB,QAAQ,CAAC,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;IAC7D,sBAAE,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAkC,CAAC;0BACxE,OAAO,CAAC;oBACZ,SAAS;iBACV;;IAGD,YAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,WAAW,IAAK,OAAmC,EAAE;IAC1G,gBAAA,MAAM,OAAO,GAAI,OAAmC,CAAC,SAA4B,CAAC;oBAClF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oBAEpD,IAAI,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE;;IAEjC,oBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,oBAAA,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACpD,oBAAA,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;qBACvB;yBAAM;;IAEL,oBAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;IAC1B,wBAAA,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;yBACrB;6BAAM;IACL,wBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC7C,QAAQ,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;yBACtC;qBACF;iBACF;qBAAM;IACL,gBAAA,QAAQ,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;iBACxB;aACF;IAED,QAAA,OAAO,QAAQ,CAAC;SACjB;IACF;;IClyCD;;;;;IAKG;IAMH;IACA;IACA;UAEa,WAAW,CAAA;IAKtB,IAAA,WAAA,CAAY,MAAsB,EAAA;IAH1B,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,GAAG,EAAE,CAAC;YACvC,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;IAGxB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;SACtB;;IAGD,IAAA,KAAK,CAAC,SAAiB,EAAA;YACrB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACnC,IAAI,CAAC,CAAC,EAAE;gBACN,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;aAC/B;IACD,QAAA,OAAO,CAAC,CAAC;SACV;;QAGD,cAAc,GAAA;IACZ,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;;QAGD,WAAW,GAAA;YACT,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;IACF,CAAA;IAED;IACA;IACA;UAEa,kBAAkB,CAAA;IAC7B,IAAA,WAAA,CAAoB,MAAsB,EAAA;YAAtB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;SAAI;;QAG9C,MAAM,OAAO,CAAI,EAAoC,EAAA;YACnD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;IAGzC,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAErC,QAAA,IAAI;IACF,YAAA,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;;IAE7B,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBACtC,GAAG,CAAC,cAAc,EAAE,CAAC;IACrB,YAAA,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;;IAEd,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;gBACxC,IAAI,KAAK,YAAY,aAAa;IAAE,gBAAA,MAAM,KAAK,CAAC;IAChD,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,oBAAA,EAAwB,KAAe,CAAC,OAAO,CAAA,CAAE,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;aACxG;SACF;IACF;;ICxED;;;;;IAKG;IAUH;IACA;IACA;UAEa,aAAa,CAAA;IAA1B,IAAA,WAAA,GAAA;YACU,IAAO,CAAA,OAAA,GAAmB,EAAE,CAAC;IAC7B,QAAA,IAAA,CAAA,KAAK,GAAkC,IAAI,GAAG,EAAE,CAAC;SAqE1D;;QAlEC,QAAQ,CAAC,MAAoB,EAAE,EAAY,EAAA;;IAEzC,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;YACtC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CACxC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,QAAQ,CACpC,CAAC;IACF,QAAA,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;IACtB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;aAC7C;;IAED,QAAA,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SACpB;;IAGD,IAAA,UAAU,CAAC,UAAkB,EAAA;IAC3B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IACjE,QAAA,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;aAC7B;SACF;;QAGD,UAAU,GAAA;IACR,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;SAC1B;;QAGD,EAAE,CAAC,IAAc,EAAE,QAAsB,EAAA;IACvC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7C,QAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SACjC;;QAGD,GAAG,CAAC,IAAc,EAAE,QAAsB,EAAA;YACxC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,SAAS,EAAE;gBACb,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACxC,IAAI,GAAG,KAAK,CAAC,CAAC;IAAE,gBAAA,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;aAC1C;SACF;;IAGD,IAAA,MAAM,OAAO,CAAC,IAAc,EAAE,GAAG,IAAe,EAAA;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,SAAS,EAAE;IACb,YAAA,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE;IAC1B,gBAAA,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;iBACnB;aACF;SACF;;QAGD,OAAO,GAAA;IACL,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;IACjC,YAAA,IAAI;oBAAE,MAAM,CAAC,OAAO,EAAE,CAAC;iBAAE;gBAAC,OAAO,CAAC,EAAE;;oBAElC,OAAO,CAAC,IAAI,CAAC,CAA2B,wBAAA,EAAA,MAAM,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,CAAC,CAAC,CAAC;iBAC3E;aACF;IACD,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IAClB,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;SACpB;IACF;;IC1FD;;;;;IAKG;IAkBH;IACA;IACA;UAEa,YAAY,CAAA;;QAWvB,IAAI,OAAO,KAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;;IAY/C,IAAA,IAAI,eAAe,GAAA,EAAa,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC,EAAE;;IAG1E,IAAA,IAAI,KAAK,GAAA,EAAc,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE;IAK3D,IAAA,WAAA,CAAY,MAAsB,EAAA;YAb1B,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;IAEd,QAAA,IAAA,CAAA,UAAU,GAAuB,IAAI,GAAG,EAAE,CAAC;;YAS3C,IAAO,CAAA,OAAA,GAA4B,IAAI,CAAC;;IA0TxC,QAAA,IAAA,CAAA,SAAS,GAA8C,IAAI,GAAG,EAAE,CAAC;;IAsFjE,QAAA,IAAA,CAAA,UAAU,GAAqD,IAAI,GAAG,EAAE,CAAC;IA7Y/E,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC;YAC5C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC;YAC5C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;IACtD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;;YAGzC,IAAI,MAAM,CAAC,YAAY,IAAI,OAAO,gBAAgB,KAAK,WAAW,EAAE;IAClE,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,CAAiB,cAAA,EAAA,IAAI,CAAC,IAAI,CAAE,CAAA,CAAC,CAAC;gBAClE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,KAAI;IACjC,gBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,IAAgD,CAAC;IACnE,gBAAA,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;wBAAE,OAAO;oBAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;;IAEzE,gBAAA,IAAI,IAAI,CAAC,MAAM,YAAY,YAAY,EAAE;wBACtC,IAAI,CAAC,MAAuB,CAAC,oBAAoB,EAAE,CAAC,KAAK,CAAC,MAAK;;IAEhE,qBAAC,CAAC,CAAC;qBACJ;IACH,aAAC,CAAC;aACH;SACF;;;IAKD,IAAA,MAAM,IAAI,GAAA;;IAER,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;;IAGlC,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;;;YAIhD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE;IAC7C,YAAA,IAAI;oBACF,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;oBACvE,IAAI,gBAAgB,IAAI,IAAI,IAAI,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;wBAC7D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;qBAC/E;iBACF;IAAC,YAAA,MAAM,+BAA+B;aACxC;;IAGD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACrE,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;IAG9D,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACvB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;oBACxC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;iBAC3C;aACF;IAED,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;;IAGlB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;IACvB,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aAC3B;SACF;;QAGD,OAAO,GAAA;YACL,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;;;IAKD,IAAA,MAAM,WAAW,CAAC,IAAY,EAAE,OAAkC,EAAA;YAChE,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE3C,QAAA,IAAI;gBACF,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;gBAC9D,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACtC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;aAC9D;YAAC,OAAO,KAAK,EAAE;IACd,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC;IAC9B,YAAA,MAAM,KAAK,CAAC;aACb;;IAGD,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC9B;;IAGD,IAAA,KAAK,CAAC,IAAY,EAAA;YAChB,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,CAAC,EAAE;;;gBAGN,CAAC,GAAG,IAAI,KAAK,CACX,IAAI,CAAC,MAAM,EACX,IAAI,EACJ,IAAI,CAAC,QAAQ,EACb,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAC9C,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAC1D,CAAC;gBACF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aAC9B;IACD,QAAA,OAAO,CAAC,CAAC;SACV;;QAGD,MAAM,SAAS,CAAC,IAAY,EAAA;YAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;IACnB,QAAA,IAAI;gBACF,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;gBAC1D,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;aAC1D;YAAC,OAAO,KAAK,EAAE;IACd,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC;IAC9B,YAAA,MAAM,KAAK,CAAC;aACb;IACD,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC9B;;IAGD,IAAA,MAAM,aAAa,GAAA;YACjB,IAAI,CAAC,WAAW,EAAE,CAAC;IACnB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;SACpC;;;QAKD,MAAM,KAAK,CAAC,GAAW,EAAA;YACrB,IAAI,CAAC,WAAW,EAAE,CAAC;IACnB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAE9C,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAErD,QAAA,IAAI,MAAe,CAAC;IACpB,QAAA,IAAI;;IAEF,YAAA,MAAM,UAAU,GAAgB,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9C,YAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;;oBAE7B,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBACjD,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC3C,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;;oBAExD,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC7C,gBAAA,IAAI,KAAK;IAAE,oBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;iBACxC;aACF;YAAC,OAAO,KAAK,EAAE;IACd,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC;IAC9B,YAAA,MAAM,KAAK,CAAC;aACb;IAED,QAAA,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAE5D,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACvC,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAI,MAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;IAClE,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,OAAO,CAAA,IAAA,EAAO,IAAI,CAAU,OAAA,EAAA,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC,CAAC;aACxE;IAED,QAAA,OAAO,MAAM,CAAC;SACf;;IAID;;;;;;;;;;;;;IAaG;IACH,IAAA,MAAM,WAAW,CACf,GAAW,EACX,KAAuB,EAAA;YAEvB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;IACnC,YAAA,MAAM,IAAI,aAAa,CAAC,6CAA6C,EAAE,eAAe,CAAC,CAAC;aACzF;YACD,MAAM,MAAM,GAAG,IAA6C,CAAC;;YAG7D,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ;IACpF,eAAA,CAAC,SAAS,IAAI,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5D,eAAA,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC;YAE9D,IAAI,UAAU,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;;gBAE9D,MAAM,OAAO,GAAI,KAA6C,CAAC,WAAW,EAAE,IAAI,KAAK,eAAe,CAAC;gBACrG,IAAI,CAAC,OAAO,EAAE;oBACZ,MAAM,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;oBACnD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzE,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE;wBACzC,KAAK,EAAE,MAAM,CAAC,IAAI;wBAClB,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC;wBACzE,KAAK,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,SAAS;wBACjE,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;qBACtB,EAAE,KAA+C,CAAC,CAAC;iBACrD;aACF;;YAGD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;IACzB,YAAA,KAAK,MAAM,GAAG,IAAI,MAAa,EAAE;IAC/B,gBAAA,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;iBAClB;gBACD,OAAO,MAAM,CAAC,MAAM,CAAC;aACtB;IACD,QAAA,OAAO,CAAC,CAAC;SACV;;IAGO,IAAA,uBAAuB,CAAC,MAA6C,EAAA;IAC3E,QAAA,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9D,QAAA,MAAM,KAAK,GAAG,CAAC,GAAW,KAAY;IACpC,YAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;IACvB,gBAAA,IAAI,GAAG,CAAC,UAAU,CAAC,CAAG,EAAA,CAAC,GAAG,CAAC;wBAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;iBAC7D;IACD,YAAA,OAAO,GAAG,CAAC;IACb,SAAC,CAAC;IACF,QAAA,MAAM,IAAI,GAAG,CAAC,CAAuC,KAA0C;gBAC7F,MAAM,GAAG,GAAyC,EAAE,CAAC;IACrD,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACtC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,EAAE;wBAC/B,GAAG,CAAC,CAAC,CAAC,GAAI,CAA4C,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;qBAClE;IAAM,qBAAA,IAAI,CAAC,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;IAC9D,oBAAA,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAyC,CAAC,CAAC;qBAC5D;yBAAM;wBACL,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;qBACnB;iBACF;IACD,YAAA,OAAO,GAAG,CAAC;IACb,SAAC,CAAC;YACF,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;SACjC;;;QAKD,MAAM,WAAW,CAAI,EAAkE,EAAA;YACrF,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACtD,QAAA,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACzD,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrD,YAAA,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;IACd,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC;IAC9B,YAAA,MAAM,KAAK,CAAC;aACb;SACF;;;QAKD,MAAM,WAAW,CAAC,SAAiB,EAAA;YACjC,IAAI,CAAC,WAAW,EAAE,CAAC;IACnB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;SAC1D;;IAGD,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,IAA+B,EAAA;YAClE,IAAI,CAAC,WAAW,EAAE,CAAC;IACnB,QAAA,IAAI;gBACF,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;aAClD;YAAC,OAAO,KAAK,EAAE;IACd,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC;IAC9B,YAAA,MAAM,KAAK,CAAC;aACb;SACF;;IAGD,IAAA,MAAM,SAAS,GAAA;YACb,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,MAAM,GAA8C,EAAE,CAAC;YAC7D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IAChD,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;IACxB,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aAC9D;IACD,QAAA,OAAO,MAAM,CAAC;SACf;IAED;;;IAGG;IACH,IAAA,MAAM,MAAM,GAAA;YACV,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;IAC5C,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;aAC7B;IACD,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;SACzB;;QAOD,SAAS,CAAC,SAAiB,EAAE,QAA0E,EAAA;IACrG,QAAA,MAAM,GAAG,GAAG,CAAU,OAAA,EAAA,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IACjE,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,QAAmC,CAAC,CAAC;IAClE,QAAA,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,QAAmC,CAAC,CAAC;SACnF;;QAGD,IAAI,CAAC,SAAiB,EAAE,KAAsD,EAAA;IAC5E,QAAA,MAAM,GAAG,GAAG,CAAU,OAAA,EAAA,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;SACrD;;;IAKD,IAAA,eAAe,CAAC,SAAiB,EAAA;YAC/B,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;IAC1B,QAAA,IAAI;IACF,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;aAChE;IAAC,QAAA,MAAM;;aAEP;SACF;;IAGO,IAAA,mBAAmB,CAAC,IAAe,EAAA;IACzC,QAAA,QAAQ,IAAI,CAAC,IAAI;IACf,YAAA,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IAChC,YAAA,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IACjC,YAAA,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IAChC,YAAA,KAAK,cAAc,CAAC;IACpB,YAAA,KAAK,YAAY,CAAC;IAClB,YAAA,KAAK,gBAAgB;oBACnB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,YAAA,KAAK,aAAa,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IACrC,YAAA,KAAK,cAAc,CAAC;IACpB,YAAA,KAAK,YAAY;oBACf,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,YAAA;IACE,gBAAA,OAAO,IAAI,CAAC;aACf;SACF;IAED;;;;IAIG;IACK,IAAA,MAAM,qBAAqB,CAAC,IAAe,EAAE,KAAyB,EAAE,MAAgB,EAAA;IAC9F,QAAA,QAAQ,IAAI,CAAC,IAAI;gBACf,KAAK,QAAQ,EAAE;IACb,gBAAA,MAAM,IAAI,GAA8B,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAe,KAAI;wBAClF,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IAChC,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACpC,wBAAA,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;yBACrC;IACD,oBAAA,OAAO,GAAG,CAAC;IACb,iBAAC,CAAC,CAAC;oBACH,IAAI,KAAK,KAAK,QAAQ;wBAAE,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;;IAC1E,oBAAA,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,MAAkB,CAAC,CAAC;oBAC/E,MAAM;iBACP;gBACD,KAAK,QAAQ,EAAE;IACb,gBAAA,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;oBACvD,IAAI,KAAK,KAAK,QAAQ;IAAE,oBAAA,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;;IACtF,oBAAA,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,MAAgB,CAAC,CAAC;oBACzF,MAAM;iBACP;gBACD,KAAK,QAAQ,EAAE;IACb,gBAAA,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;oBACtD,IAAI,KAAK,KAAK,QAAQ;wBAAE,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;;IAC3E,oBAAA,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,EAAE,MAAgB,CAAC,CAAC;oBAC9E,MAAM;iBACP;aAGF;SACF;;QAOD,YAAY,CAAC,OAAe,EAAE,EAAuC,EAAA;YACnE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;SAClC;;QAGD,MAAM,SAAS,CAAC,aAAqB,EAAA;YACnC,IAAI,CAAC,WAAW,EAAE,CAAC;IACnB,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACtF,IAAI,OAAO,IAAI,aAAa,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;IACvD,gBAAA,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;IACf,gBAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;iBACzB;aACF;;;YAGD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE;IAC7C,YAAA,IAAI;IACF,gBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACtE;IAAC,YAAA,MAAM,sBAAsB;aAC/B;SACF;;IAID;;;IAGG;IACH,IAAA,MAAM,MAAM,GAAA;YACV,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;IAC5C,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACxB,OAAO;aACR;;IAED,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;SACzB;IAED;;;IAGG;IACH,IAAA,MAAM,QAAQ,GAAA;YACZ,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;IAC9C,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;aAC9B;iBAAM;gBACL,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IAChD,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;iBACnC;aACF;IACD,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;SACzB;;;QAKD,gBAAgB,GAAA;YACd,OAAO,IAAI,CAAC,aAAa,CAAC;SAC3B;;QAGD,EAAE,CAAC,IAAoC,EAAE,QAA+C,EAAA;YACtF,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SACvC;;;IAKD,IAAA,MAAM,KAAK,GAAA;IACT,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;IAChB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACrB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACrB;IACD,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IAC7B,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACxB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACpB;;QAGD,SAAS,GAAA;YACP,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;QAIO,YAAY,GAAA;IAClB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,WAAW,CAAC;YAEzD,QAAQ,IAAI;IACV,YAAA,KAAK,QAAQ;oBACX,OAAO,IAAI,YAAY,EAAE,CAAC;IAC5B,YAAA,KAAK,MAAM;IACT,gBAAA,OAAO,UAAU,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;IAC1E,YAAA,KAAK,MAAM;;oBAET,OAAO,IAAI,UAAU,CAAC;wBACpB,cAAc,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW;wBAC5D,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAC5B,iBAAA,CAAC,CAAC;IACL,YAAA,KAAK,QAAQ;IACX,gBAAA,OAAO,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;IACtC,YAAA;oBACE,MAAM,IAAI,aAAa,CAAC,CAAA,sBAAA,EAAyB,IAAI,CAAE,CAAA,EAAE,cAAc,CAAC,CAAC;aAC5E;SACF;QAEO,WAAW,GAAA;IACjB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;IACf,YAAA,MAAM,IAAI,aAAa,CAAC,uDAAuD,EAAE,cAAc,CAAC,CAAC;aAClG;SACF;;IAGO,IAAA,QAAQ,CAAC,KAAY,EAAA;IAC3B,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;IACvB,YAAA,IAAI;IAAE,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;iBAAE;IAAC,YAAA,MAAM,uBAAuB;aAClE;SACF;;IAGO,IAAA,MAAM,CAAC,GAAW,EAAE,GAAG,IAAe,EAAA;IAC5C,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;;IAEd,YAAA,OAAO,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,IAAI,CAAC,IAAI,CAAK,EAAA,EAAA,GAAG,CAAE,CAAA,EAAE,GAAG,IAAI,CAAC,CAAC;aAC9D;SACF;IACF;;IC9kBD;;;;;;IAMG;IAKH;IACA;IACA;IAEA,MAAM,iBAAiB,CAAA;IAAvB,IAAA,WAAA,GAAA;;IAEU,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,GAAG,EAAwB,CAAC;;IAG9C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;SAwF9C;IAtFC;;;;;;;;;;;;IAYG;QACH,MAAM,OAAO,CAAC,MAAsB,EAAA;IAClC,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;;YAGzB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;IAClC,YAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,YAAA,OAAO,QAAQ,CAAC;aACjB;;IAGD,QAAA,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,QAAA,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;YAEhB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;;IAG1B,QAAA,EAAyD,CAAC,UAAU,GAAG,YAAW;IACjF,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,SAAC,CAAC;IAEF,QAAA,OAAO,EAAE,CAAC;SACX;IAED;;IAEG;QACH,MAAM,OAAO,CAAC,MAAc,EAAA;IAC1B,QAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;gBACd,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,EAAE,EAAE;IACN,gBAAA,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACjB,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBACjC;IACD,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAC9B;iBAAM;gBACL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;aAClC;SACF;IAED;;IAEG;QACH,MAAM,UAAU,CAAC,MAAc,EAAA;YAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,EAAE,EAAE;IACN,YAAA,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACjB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;IACD,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC9B;IAED;;IAEG;IACH,IAAA,MAAM,QAAQ,GAAA;YACZ,KAAK,MAAM,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;IACrC,YAAA,IAAI;IAAE,gBAAA,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;iBAAE;IAAC,YAAA,MAAM,gBAAgB;aACjD;IACD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;SACvB;IAED;;IAEG;QACH,oBAAoB,GAAA;YAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;SAC5C;IAEF,CAAA;IAED;IACA;IACA;IAEA,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAExC;IACA,MAAM,CAAC,GAAG,YAAkD,CAAC;IAC7D,CAAC,CAAC,OAAO,GAAG,CAAC,MAAsB,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC,CAAC,UAAU,GAAG,CAAC,MAAc,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC,CAAC,aAAa,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC,CAAC,oBAAoB,GAAG,MAAM,OAAO,CAAC,oBAAoB,EAAE;;ICzH7D;;;;;;;IAOG;IASH;IACA;IACA;IAEA;;;;;;;;;;;;;;;;;;IAkBG;IACH,eAAe,MAAM,CAAC,MAAsB,EAAA;IAC1C,IAAA,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,IAAA,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAChB,IAAA,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;IACA;IACA;AAEA,UAAM,GAAG,GAAG;QACV,OAAO;IACP,IAAA,OAAO,EAAE,OAAO;QAChB,MAAM;QACN,YAAY;IACZ,IAAA,QAAQ,EAAE,YAAY;MACtB;IAIF,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,IAAA,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;IAC1B,IAAA,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC;IACxB,CAAC;IAUD;AACO,UAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/dist/metona-sqlark.min.js b/dist/metona-sqlark.min.js index f4a85b7..7aa358c 100644 --- a/dist/metona-sqlark.min.js +++ b/dist/metona-sqlark.min.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).MetonaSqlark={})}(this,function(e){"use strict";const t=["string","number","boolean","date","json"],s=Object.freeze({name:"metona-sqlark",mode:"hybrid",diskEngine:"indexeddb",version:1,maxRowsPerQuery:0,debug:!1,multiTabSync:!1});class n extends Error{constructor(e,t,s){super(e),this.code=t,this.details=s,this.name="DatabaseError"}}const i="0.4.4",r=new Map;function a(e,t,s={}){for(const[n,i]of Object.entries(t))if("$caseResult"!==n){if("$exists"!==n){if("$and"===n){if(!i.every(t=>a(e,t,s)))return!1;continue}if("$or"===n){if(!i.some(t=>a(e,t,s)))return!1;continue}if("$not"!==n){if(!o(e[n],i,e,s))return!1}else if(a(e,i,s))return!1}else if(!0!==i)return!1}else if(!0!==i)return!1;return!0}function o(e,t,s,n){if("object"==typeof t&&null!==t&&"$and"in t)return t.$and.every(e=>a(s,e,n));if("object"==typeof t&&null!==t&&"$or"in t)return t.$or.some(e=>a(s,e,n));if("object"==typeof t&&null!==t&&"$not"in t)return!o(e,t.$not,s,n);if("object"!=typeof t||null===t||Array.isArray(t))return e===t;const i=t;if(n.$col&&"$col"in i&&1===Object.keys(i).length)return e===s[i.$col];for(const[t,r]of Object.entries(i)){let i=r;if(n.$col&&"object"==typeof r&&null!==r&&"$col"in r&&(i=s[r.$col]),!h(e,t,i))return!1}return!0}function h(e,t,s){switch(t){case"$eq":return e===s;case"$ne":return e!==s;case"$gt":return e>s;case"$gte":return e>=s;case"$lt":return e{for(const{column:n,direction:i,nulls:r}of t){const t=null===e[n]||void 0===e[n],a=null===s[n]||void 0===s[n];if(r&&(t||a)){if(t&&a)continue;return"first"===r?t?-1:1:t?1:-1}const o=l(e[n],s[n]);if(0!==o)return"desc"===i?-o:o}return 0})}function l(e,t){return e===t?0:null==e?1:null==t?-1:"string"==typeof e&&"string"==typeof t?e.localeCompare(t):"number"==typeof e&&"number"==typeof t?e-t:String(e).localeCompare(String(t))}function u(e,t){const s={};for(const n of t)if(n in e)s[n]=e[n];else for(const t of Object.keys(e))if(t.endsWith(`.${n}`)||t===n){s[n]=e[t];break}return s}class f{constructor(){this.name="memory",this.tables=new Map,this.schemas=new Map,this.indexes=new Map,this.opened=!1,this.metaStore=new Map,this.snapshot=null}async open(e,t){this.opened||(this.opened=!0)}async close(){this.tables.clear(),this.schemas.clear(),this.indexes.clear(),this.metaStore.clear(),this.opened=!1}isOpen(){return this.opened}async repair(){}async clearAll(){const e=Array.from(this.schemas.keys());for(const t of e)await this.dropTable(t);this.metaStore.clear()}async getMeta(e){return this.metaStore.get(e)??null}async setMeta(e,t){this.metaStore.set(e,t)}async createTable(e){if(this.schemas.has(e.name))throw new n(`Table "${e.name}" already exists`,"TABLE_EXISTS");const t={name:e.name,columns:{}};for(const[s,n]of Object.entries(e.columns))t.columns[s]={...n};this.schemas.set(e.name,t),this.tables.set(e.name,new Map);const s=new Map;for(const[e,n]of Object.entries(t.columns))(n.index||n.unique)&&s.set(e,new Map);this.indexes.set(e.name,s)}async dropTable(e){this.ensureTable(e),this.schemas.delete(e),this.tables.delete(e),this.indexes.delete(e)}async hasTable(e){return this.schemas.has(e)}async getTableNames(){return Array.from(this.schemas.keys())}async getTableSchema(e){return this.schemas.get(e)??null}async alterTable(e,t,s){this.ensureTable(e);const i=this.schemas.get(e);if("ADD"===t){if(i.columns[s.name])throw new n(`Column "${s.name}" already exists in table "${e}"`,"COLUMN_EXISTS");return void(i.columns[s.name]=s)}if(!i.columns[s.name])throw new n(`Column "${s.name}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");delete i.columns[s.name];const r=this.tables.get(e);for(const e of r.values())s.name in e&&delete e[s.name]}async insert(e,t){this.ensureTable(e);const s=this.schemas.get(e),i=this.tables.get(e),r=this.getPrimaryKey(s),a=[];for(const o of t){const t=this.validateRow(s,o),h=String(t[r]);if(i.has(h))throw new n(`Duplicate primary key "${h}" in table "${e}"`,"DUPLICATE_KEY");this.checkUniqueness(s,t),i.set(h,t),this.updateIndexes(e,t,h),a.push(h)}return a}async find(e,t){this.ensureTable(e);const s=this.tables.get(e);let n=this.tryIndexLookup(e,s,t);t.where&&Object.keys(t.where).length>0&&(n=n.filter(e=>a(e,t.where))),t.orderBy&&t.orderBy.length>0&&(n=c(n,t.orderBy));const i=t.offset??0,r=t.limit??n.length;return n=n.slice(i,i+r),t.columns&&t.columns.length>0&&"*"!==t.columns[0]&&(n=n.map(e=>u(e,t.columns))),n}async findStream(e,t,s){this.ensureTable(e);const n=this.tables.get(e),i=!!(t.where&&Object.keys(t.where).length>0),r=t.limit??1/0,o=t.offset??0,h=t.columns&&t.columns.length>0&&"*"!==t.columns[0]?e=>u(e,t.columns):null;let c=0,l=0;for(const e of n.values())if(!i||a(e,t.where))if(l=r)break;return c}async update(e,t,s){this.ensureTable(e);const n=this.schemas.get(e),i=this.tables.get(e),r=this.getPrimaryKey(n);let o=0;for(const[h,c]of[...i])if(!t.where||0===Object.keys(t.where).length||a(c,t.where)){this.removeIndexEntries(e,c,h);const t={...c,...s};this.validateRow(n,t),this.checkUniqueness(n,t);const a=String(t[r]);a!==h&&await this.applyUpdateCascade(e,h,a),i.delete(h),i.set(a,t),this.updateIndexes(e,t,a),o++}return o}async applyUpdateCascade(e,t,s){for(const[s,i]of this.schemas)if(s!==e)for(const[r,a]of Object.entries(i.columns)){if(!a.references||!a.onUpdate)continue;const[i]=a.references.split(".");if(i!==e)continue;const o=this.tables.get(s);if(o)for(const[,i]of o)if(String(i[r])===t&&"RESTRICT"===a.onUpdate)throw new n(`Cannot update "${e}" key "${t}": foreign key "${r}" in "${s}" has dependent rows`,"FOREIGN_KEY_VIOLATION")}for(const[n,i]of this.schemas)if(n!==e)for(const[r,a]of Object.entries(i.columns)){if(!a.references||!a.onUpdate)continue;const[i]=a.references.split(".");if(i!==e)continue;const o=this.tables.get(n);if(o&&("CASCADE"===a.onUpdate||"SET NULL"===a.onUpdate))for(const[e,i]of o)String(i[r])===t&&(this.removeIndexEntries(n,i,e),i[r]="CASCADE"===a.onUpdate?s:null,this.updateIndexes(n,i,e))}}async delete(e,t){this.ensureTable(e);const s=this.tables.get(e),n=[];for(const[i,r]of s)t.where&&0!==Object.keys(t.where).length&&!a(r,t.where)||(this.removeIndexEntries(e,r,i),n.push(i));let i=0;for(const t of n){const n=s.get(t);n&&(i+=await this.cascadeDelete(e,t,n))}for(const e of n)s.delete(e);return n.length+i}async count(e,t){this.ensureTable(e);const s=this.tables.get(e);if(!t?.where||0===Object.keys(t.where).length)return s.size;let n=0;for(const e of s.values())a(e,t.where)&&n++;return n}async clear(e){this.ensureTable(e),this.tables.get(e).clear();const t=this.indexes.get(e);if(t)for(const e of t.values())e.clear()}async createIndex(e,t,s){this.ensureTable(e);const i=this.schemas.get(e).columns[t];if(!i)throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");if(i.index||i.unique)return;i.index=!0,s&&(i.unique=!0);const r=this.indexes.get(e);r.has(t)||r.set(t,new Map);const a=r.get(t),o=this.tables.get(e);for(const[e,s]of o){const n=s[t];null!=n&&(a.has(n)||a.set(n,new Set),a.get(n).add(e))}}async dropIndex(e,t,s){this.ensureTable(e);const i=this.schemas.get(e).columns[t];if(!i)throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");if(!i.index&&!i.unique)throw new n(`Index on column "${t}" does not exist in table "${e}"`,"INDEX_NOT_FOUND");i.index=!1,i.unique=!1;const r=this.indexes.get(e);r&&r.delete(t)}async beginTransaction(){if(this.snapshot)throw new n("Transaction already in progress","TX_ACTIVE");this.snapshot={tables:this.deepCloneMapMap(this.tables),schemas:new Map(this.schemas),indexes:this.deepCloneIndexes(this.indexes)}}async commitTransaction(){if(!this.snapshot)throw new n("No active transaction","TX_NONE");this.snapshot=null}async rollbackTransaction(){if(!this.snapshot)throw new n("No active transaction","TX_NONE");this.tables=this.snapshot.tables,this.schemas=this.snapshot.schemas,this.indexes=this.snapshot.indexes,this.snapshot=null}deepCloneMapMap(e){const t=new Map;for(const[s,n]of e){const e=new Map;for(const[t,s]of n)e.set(t,{...s});t.set(s,e)}return t}deepCloneIndexes(e){const t=new Map;for(const[s,n]of e){const e=new Map;for(const[t,s]of n){const n=new Map;for(const[e,t]of s)n.set(e,new Set(t));e.set(t,n)}t.set(s,e)}return t}ensureTable(e){if(!this.tables.has(e))throw new n(`Table "${e}" does not exist`,"TABLE_NOT_FOUND")}getPrimaryKey(e){for(const[t,s]of Object.entries(e.columns))if(s.primaryKey)return t;return Object.keys(e.columns)[0]}validateRow(e,t){const s={};for(const[i,r]of Object.entries(e.columns)){let a=t[i];if(void 0===a&&void 0!==r.default&&(a=r.default),r.required&&null==a)throw new n(`Column "${i}" is required in table "${e.name}"`,"VALIDATION_ERROR");null!=a&&this.checkType(i,r.type,a),void 0!==a&&(s[i]=a)}return s}checkType(e,t,s){const i=typeof s;switch(t){case"string":if("string"!==i)throw new n(`Column "${e}" expects string, got ${i}`,"TYPE_ERROR");break;case"number":if("number"!==i)throw new n(`Column "${e}" expects number, got ${i}`,"TYPE_ERROR");break;case"boolean":if("boolean"!==i)throw new n(`Column "${e}" expects boolean, got ${i}`,"TYPE_ERROR");break;case"date":if("string"!==i||isNaN(Date.parse(s)))throw new n(`Column "${e}" expects valid date`,"TYPE_ERROR");break;case"json":if("object"!==i)throw new n(`Column "${e}" expects object/array, got ${i}`,"TYPE_ERROR")}}checkUniqueness(e,t){const s=this.indexes.get(e.name);if(s)for(const[i,r]of Object.entries(e.columns)){if(!r.unique||void 0===t[i]||null===t[i])continue;const a=s.get(i);if(a&&a.has(t[i]))throw new n(`Unique constraint violation on column "${i}" in table "${e.name}"`,"UNIQUE_VIOLATION")}}tryIndexLookup(e,t,s){const n=this.indexes.get(e);if(!n||!s.where)return Array.from(t.values());for(const[e,i]of Object.entries(s.where)){let s;if("object"!=typeof i||null===i)s=i;else{if(!("$eq"in i)||1!==Object.keys(i).length)continue;s=i.$eq}const r=n.get(e);if(r){const e=r.get(s);if(e){const s=[];for(const n of e){const e=t.get(n);e&&s.push(e)}return s}return[]}}return Array.from(t.values())}updateIndexes(e,t,s){const n=this.indexes.get(e);if(n)for(const[e,i]of n){const n=t[e];null!=n&&(i.has(n)||i.set(n,new Set),i.get(n).add(s))}}removeIndexEntries(e,t,s){const n=this.indexes.get(e);if(n)for(const[e,i]of n){const n=t[e];if(null!=n){const e=i.get(n);e&&(e.delete(s),0===e.size&&i.delete(n))}}}async cascadeDelete(e,t,s){let i=0;for(const[s,r]of this.schemas)if(s!==e)for(const[a,o]of Object.entries(r.columns)){if(!o.references||!o.onDelete)continue;const[r]=o.references.split(".");if(r!==e)continue;const h=this.tables.get(s);if(!h)continue;const c=[];for(const[e,s]of h)String(s[a])===t&&c.push(e);if("RESTRICT"===o.onDelete&&c.length>0)throw new n(`Cannot delete from "${e}": foreign key "${a}" in "${s}" has dependent rows`,"FOREIGN_KEY_VIOLATION");if("CASCADE"===o.onDelete)for(const e of c){const t=h.get(e);t&&(this.removeIndexEntries(s,t,e),i+=await this.cascadeDelete(s,e,t)),h.delete(e),i++}else if("SET NULL"===o.onDelete)for(const e of c){const t=h.get(e);if(t){if(void 0!==t[a]&&null!==t[a]){const n=this.indexes.get(s)?.get(a);n&&n.get(t[a])?.delete(e)}t[a]=null}}}return i}}class d{constructor(){this.name="indexeddb",this.db=null,this.dbName="",this.version=1,this.memoryCache=new f,this.txActive=!1}async open(e,t){const s=t>=1?Math.floor(t):1;this.dbName=e,this.version=s,await this.memoryCache.open(e,s),this.db=await this.openDatabaseWithRetry(e,s),this.setupVersionChangeHandler(),await this.ensureSchemaStore();try{await this.rebuildSchemaFromIDB()}catch(t){throw new n(`Failed to restore schema for "${e}"`,"IDB_SCHEMA_RESTORE_ERROR",t)}}setupVersionChangeHandler(){this.db&&(this.db.onversionchange=()=>{this.db&&(this.db.close(),this.db=null)})}async openDatabaseWithRetry(e,t){let s=t;for(let t=0;t<10;t++)try{return await this.openRequest(e,s,200+150*t)}catch(i){const r=i;if(r&&"VersionError"===r.name){const t=await this.resolveCurrentVersion(e);if(t>=1&&t!==s){s=t,this.version=t;continue}throw new n(`Failed to open IndexedDB "${e}": version mismatch`,"IDB_VERSION_ERROR",i)}if(r&&"BlockedError"===r.name){await new Promise(e=>setTimeout(e,50*(t+1)));continue}throw new n(`Failed to open IndexedDB "${e}"`,"IDB_OPEN_ERROR",i)}throw new n(`IndexedDB "${e}" is blocked`,"IDB_BLOCKED")}openRequest(e,t,s){return new Promise((n,i)=>{const r=indexedDB.open(e,t);let a=!1;const o=setTimeout(()=>{if(a)return;a=!0;const e="undefined"!=typeof DOMException?new DOMException("IndexedDB open is blocked","BlockedError"):Object.assign(new Error("IndexedDB open is blocked"),{name:"BlockedError"});i(e)},s);r.onsuccess=()=>{a?r.result.close():(a=!0,clearTimeout(o),n(r.result))},r.onerror=()=>{a||(a=!0,clearTimeout(o),i(r.error??new Error("Unknown IndexedDB open error")))},r.onblocked=()=>{}})}resolveCurrentVersion(e){return new Promise((t,s)=>{const n=indexedDB.open(e);n.onsuccess=()=>{const e=n.result.version;n.result.close(),t(e)},n.onerror=()=>{s(n.error??new Error("Failed to resolve IndexedDB version"))}})}async ensureSchemaStore(){if(!this.db)return;if(this.db.objectStoreNames.contains("__metona_schema"))return;const e=this.db.version+1;this.db.close(),this.db=await new Promise((t,s)=>{const i=indexedDB.open(this.dbName,e);i.onupgradeneeded=()=>{const e=i.result;e.objectStoreNames.contains("__metona_schema")||e.createObjectStore("__metona_schema",{keyPath:"name"})},i.onsuccess=()=>{this.db=i.result,this.setupVersionChangeHandler(),t(i.result)},i.onerror=()=>s(new n("Failed to create schema store","IDB_UPGRADE_ERROR",i.error))})}async rebuildSchemaFromIDB(){const e=this.ensureDB();if(e.objectStoreNames.contains("__metona_schema")){const t=await new Promise((t,s)=>{const n=e.transaction("__metona_schema","readonly").objectStore("__metona_schema").getAll();n.onsuccess=()=>t(n.result??[]),n.onerror=()=>s(n.error)});for(const e of t)try{const t=JSON.parse(e.schema);await this.memoryCache.getTableSchema(t.name)||await this.memoryCache.createTable(t)}catch{}}const t=Array.from(e.objectStoreNames).filter(e=>"__metona_schema"!==e);for(const s of t){if(await this.memoryCache.getTableSchema(s))continue;const t={},n=e.transaction(s,"readonly").objectStore(s);t[n.keyPath]={type:"string",primaryKey:!0};for(const e of Array.from(n.indexNames))if(e.startsWith("idx_")){const s=e.slice(4);t[s]||(t[s]={type:"string",index:!0})}const i=await new Promise((e,t)=>{const s=n.getAll();s.onsuccess=()=>e(s.result??[]),s.onerror=()=>t(s.error)});if(i.length>0)for(const[e,s]of Object.entries(i[0]))t[e]||(t[e]={type:m(s)});await this.memoryCache.createTable({name:s,columns:t})}}async close(){if(this.txActive)try{await this.rollbackTransaction()}catch{}this.db&&(this.db.onversionchange=null,this.db.close(),this.db=null),await this.memoryCache.close()}async repair(){if(!this.db)throw new n("Database not opened","DB_NOT_OPEN");await this.memoryCache.close(),await this.memoryCache.open(this.dbName,this.version),await this.rebuildSchemaFromIDB()}async clearAll(){const e=this.ensureDB(),t=await this.memoryCache.getTableNames();for(const e of t)await this.memoryCache.dropTable(e);const s=e.version+1;e.close(),await new Promise((e,t)=>{const i=indexedDB.open(this.dbName,s);i.onupgradeneeded=e=>{const t=e.target.result,s=Array.from(t.objectStoreNames).filter(e=>"__metona_schema"!==e);for(const e of s)t.deleteObjectStore(e);t.objectStoreNames.contains("__metona_schema")?e.target.transaction.objectStore("__metona_schema").clear():t.createObjectStore("__metona_schema",{keyPath:"name"})},i.onsuccess=()=>{this.db=i.result,this.setupVersionChangeHandler(),e()},i.onerror=()=>t(new n("Failed to clear database","IDB_CLEAR_ERROR",i.error)),i.onblocked=()=>t(new n(`IndexedDB "${this.dbName}" is blocked`,"IDB_BLOCKED"))})}async getMeta(e){const t=this.ensureDB();return t.objectStoreNames.contains("__metona_schema")?new Promise((s,n)=>{const i=t.transaction("__metona_schema","readonly").objectStore("__metona_schema").get(`__meta:${e}`);i.onsuccess=()=>{const e=i.result;s(e&&"string"==typeof e.schema?e.schema:null)},i.onerror=()=>n(i.error)}):null}async setMeta(e,t){const s=this.ensureDB();s.objectStoreNames.contains("__metona_schema")&&await new Promise((i,r)=>{const a=s.transaction("__metona_schema","readwrite");a.objectStore("__metona_schema").put({name:`__meta:${e}`,schema:t}),a.oncomplete=()=>i(),a.onerror=()=>r(new n(`Failed to persist meta "${e}"`,"IDB_META_ERROR",a.error))})}isOpen(){return null!==this.db}async createTable(e){await this.memoryCache.createTable(e),this.txActive||await this.idbCreateTable(e)}async dropTable(e){await this.memoryCache.dropTable(e),this.txActive||await this.idbDropTable(e)}async hasTable(e){return this.ensureDB().objectStoreNames.contains(e)}async getTableNames(){return Array.from(this.ensureDB().objectStoreNames)}async getTableSchema(e){return this.memoryCache.getTableSchema(e)}async alterTable(e,t,s){if(await this.memoryCache.alterTable(e,t,s),this.txActive)return;const i=await this.memoryCache.getTableSchema(e);if(i&&await this.persistSchema(i),"DROP"===t){const t=this.ensureDB(),i=(await this.idbFind(e,{table:e})).map(e=>{if(s.name in e){const t={...e};return delete t[s.name],t}return e});i.length>0&&await new Promise((s,r)=>{const a=t.transaction(e,"readwrite"),o=a.objectStore(e);for(const e of i)o.put(e);a.oncomplete=()=>s(),a.onerror=()=>r(new n(`Failed to rewrite "${e}" after DROP COLUMN`,"IDB_TX_ERROR",a.error))})}}async insert(e,t){const s=await this.memoryCache.insert(e,t);return this.txActive||await this.idbInsert(e,t),s}async find(e,t){return this.txActive?this.memoryCache.find(e,t):this.idbFind(e,t)}async findStream(e,t,s){if(this.txActive)return this.memoryCache.findStream(e,t,s);const n=await this.idbFind(e,{...t,orderBy:void 0,limit:void 0,offset:void 0});let i=0;for(const e of n)s(e),i++;return i}async update(e,t,s){const n=await this.memoryCache.update(e,t,s);return this.txActive||await this.idbUpdate(e,t,s),n}async delete(e,t){const s=await this.memoryCache.delete(e,t);return this.txActive||await this.idbDelete(e,t),s}async count(e,t){return this.txActive?this.memoryCache.count(e,t):(await this.idbFind(e,{table:e,where:t?.where??{}})).length}async clear(e){await this.memoryCache.clear(e),this.txActive||await this.idbClear(e)}async createIndex(e,t,s){if(await this.memoryCache.createIndex(e,t,s),this.txActive)return;const i=this.ensureDB();return new Promise((r,a)=>{const o=i.version+1;i.close();const h=indexedDB.open(this.dbName,o);h.onupgradeneeded=n=>{const i=n.target.result.transaction(e,"readwrite").objectStore(e);i.indexNames.contains(`idx_${t}`)||i.createIndex(`idx_${t}`,t,{unique:s??!1})},h.onsuccess=()=>{this.db=h.result,r()},h.onerror=()=>a(new n(`Failed to create index "${e}.${t}"`,"IDB_UPGRADE_ERROR",h.error))})}async dropIndex(e,t,s){if(await this.memoryCache.dropIndex(e,t),this.txActive)return;const i=this.ensureDB();return new Promise((s,r)=>{const a=i.version+1;i.close();const o=indexedDB.open(this.dbName,a);o.onupgradeneeded=s=>{const n=s.target.result.transaction(e,"readwrite").objectStore(e);n.indexNames.contains(`idx_${t}`)&&n.deleteIndex(`idx_${t}`)},o.onsuccess=()=>{this.db=o.result,s()},o.onerror=()=>r(new n(`Failed to drop index "${e}.${t}"`,"IDB_UPGRADE_ERROR",o.error))})}async beginTransaction(){if(this.txActive)throw new n("Transaction already in progress","TX_ACTIVE");this.txActive=!0,await this.memoryCache.beginTransaction()}async commitTransaction(){if(!this.txActive)throw new n("No active transaction","TX_NONE");await this.flushToIDB(),await this.memoryCache.commitTransaction(),this.txActive=!1}async rollbackTransaction(){if(!this.txActive)throw new n("No active transaction","TX_NONE");await this.memoryCache.rollbackTransaction(),this.txActive=!1}async idbCreateTable(e){const t=this.ensureDB();return new Promise((s,i)=>{const r=t.version+1;t.close();const a=indexedDB.open(this.dbName,r);a.onupgradeneeded=t=>{const s=t.target.result,n=Object.entries(e.columns).find(([,e])=>e.primaryKey)?.[0]??Object.keys(e.columns)[0],i=s.createObjectStore(e.name,{keyPath:n});for(const[t,s]of Object.entries(e.columns))s.index&&t!==n&&i.createIndex(`idx_${t}`,t,{unique:s.unique??!1});s.objectStoreNames.contains("__metona_schema")||s.createObjectStore("__metona_schema",{keyPath:"name"})},a.onsuccess=()=>{this.db=a.result;const t=this.db.transaction("__metona_schema","readwrite");t.objectStore("__metona_schema").put({name:e.name,schema:JSON.stringify(e)}),t.oncomplete=()=>s(),t.onerror=()=>i(new n(`Failed to persist schema for "${e.name}"`,"IDB_SCHEMA_ERROR",t.error))},a.onerror=()=>i(new n(`Failed to create table "${e.name}"`,"IDB_UPGRADE_ERROR",a.error))})}async idbDropTable(e){const t=this.ensureDB();return new Promise((s,i)=>{const r=t.version+1;t.close();const a=indexedDB.open(this.dbName,r);a.onupgradeneeded=t=>{const s=t.target.result;s.objectStoreNames.contains(e)&&s.deleteObjectStore(e)},a.onsuccess=()=>{if(this.db=a.result,this.db.objectStoreNames.contains("__metona_schema")){const t=this.db.transaction("__metona_schema","readwrite");t.objectStore("__metona_schema").delete(e),t.onerror=()=>{}}s()},a.onerror=()=>i(new n(`Failed to drop table "${e}"`,"IDB_UPGRADE_ERROR",a.error))})}async idbInsert(e,t){const s=this.ensureDB();return new Promise((i,r)=>{const a=s.transaction(e,"readwrite"),o=a.objectStore(e);for(const e of t)o.add(e);a.oncomplete=()=>i(),a.onerror=()=>r(new n(`Insert failed for "${e}"`,"IDB_TX_ERROR",a.error))})}async idbFind(e,t){const s=this.ensureDB();if(t.where){const n=await this.tryIDBIndexLookup(s,e,t);if(null!==n)return n}return new Promise((i,r)=>{const o=s.transaction(e,"readonly").objectStore(e).getAll();o.onsuccess=()=>{let e=o.result??[];t.where&&Object.keys(t.where).length>0&&(e=e.filter(e=>a(e,t.where))),t.orderBy&&t.orderBy.length>0&&(e=c(e,t.orderBy));const s=t.offset??0,n=t.limit??e.length;e=e.slice(s,s+n),t.columns&&t.columns.length>0&&"*"!==t.columns[0]&&(e=e.map(e=>u(e,t.columns))),i(e)},o.onerror=()=>r(new n(`Find failed for "${e}"`,"IDB_READ_ERROR",o.error))})}async tryIDBIndexLookup(e,t,s){if(!s.where)return null;for(const[i,r]of Object.entries(s.where)){if("$and"===i||"$or"===i||"$not"===i)continue;let o;if("object"!=typeof r||null===r)o=r;else{if(!("$eq"in r))continue;o=r.$eq}const h=`idx_${i}`;try{return await new Promise((r,l)=>{const f=e.transaction(t,"readonly").objectStore(t);if(!f.indexNames.contains(h))return void r(null);const d=f.index(h).getAll(o);d.onsuccess=()=>{let e=d.result??[];Object.keys(s.where).filter(e=>e!==i&&"$and"!==e&&"$or"!==e&&"$not"!==e).length>0&&(e=e.filter(e=>a(e,s.where))),s.orderBy&&s.orderBy.length>0&&(e=c(e,s.orderBy));const t=s.offset??0,n=s.limit??e.length;e=e.slice(t,t+n),s.columns&&s.columns.length>0&&"*"!==s.columns[0]&&(e=e.map(e=>u(e,s.columns))),r(e)},d.onerror=()=>l(new n(`Index lookup failed for "${t}.${i}"`,"IDB_READ_ERROR",d.error))})}catch{return null}}return null}async idbUpdate(e,t,s){const i=this.ensureDB();return new Promise((r,o)=>{const h=i.transaction(e,"readwrite"),c=h.objectStore(e),l=c.getAll();l.onsuccess=()=>{for(const e of l.result??[])t.where&&0!==Object.keys(t.where).length&&!a(e,t.where)||(Object.assign(e,s),c.put(e))},h.oncomplete=()=>r(),h.onerror=()=>o(new n(`Update failed for "${e}"`,"IDB_TX_ERROR",h.error))})}async idbDelete(e,t){const s=this.ensureDB(),i=await this.memoryCache.getTableSchema(e);if(!i)throw new n(`Table "${e}" not found`,"TABLE_NOT_FOUND");const r=Object.entries(i.columns).find(([,e])=>e.primaryKey)?.[0]??Object.keys(i.columns)[0];return new Promise((i,o)=>{const h=s.transaction(e,"readwrite"),c=h.objectStore(e),l=c.getAll();l.onsuccess=()=>{for(const e of l.result??[])t.where&&0!==Object.keys(t.where).length&&!a(e,t.where)||c.delete(e[r])},h.oncomplete=()=>i(),h.onerror=()=>o(new n(`Delete failed for "${e}"`,"IDB_TX_ERROR",h.error))})}async idbClear(e){const t=this.ensureDB();return new Promise((s,i)=>{const r=t.transaction(e,"readwrite");r.objectStore(e).clear(),r.oncomplete=()=>s(),r.onerror=()=>i(new n(`Clear failed for "${e}"`,"IDB_TX_ERROR",r.error))})}async persistSchema(e){const t=this.ensureDB();t.objectStoreNames.contains("__metona_schema")&&await new Promise((s,i)=>{const r=t.transaction("__metona_schema","readwrite");r.objectStore("__metona_schema").put({name:e.name,schema:JSON.stringify(e)}),r.oncomplete=()=>s(),r.onerror=()=>i(new n(`Failed to persist schema for "${e.name}"`,"IDB_SCHEMA_ERROR",r.error))})}async flushToIDB(){const e=await this.memoryCache.getTableNames();let t=this.ensureDB();const s=Array.from(t.objectStoreNames),i=e.filter(e=>!s.includes(e)),r=s.filter(t=>"__metona_schema"!==t&&!e.includes(t));if(i.length>0||r.length>0){const e=new Map;for(const t of i){const s=await this.memoryCache.getTableSchema(t);s&&e.set(t,s)}const s=t.version+1;t.close(),await new Promise((t,a)=>{const o=indexedDB.open(this.dbName,s);o.onupgradeneeded=t=>{const s=t.target.result;for(const e of r)s.deleteObjectStore(e);for(const t of i){const n=e.get(t),i=n?Object.entries(n.columns).find(([,e])=>e.primaryKey)?.[0]??Object.keys(n.columns)[0]:void 0;s.createObjectStore(t,{keyPath:i})}if(s.objectStoreNames.contains("__metona_schema")&&r.length>0){const e=t.target.transaction.objectStore("__metona_schema");for(const t of r)e.delete(t)}},o.onsuccess=()=>{this.db=o.result,this.setupVersionChangeHandler(),t()},o.onerror=()=>a(new n("Failed to sync stores after transaction","IDB_UPGRADE_ERROR",o.error)),o.onblocked=()=>a(new n(`IndexedDB "${this.dbName}" is blocked`,"IDB_BLOCKED"))});for(const e of i){const t=await this.memoryCache.getTableSchema(e);t&&await this.persistSchema(t)}t=this.ensureDB()}for(const s of e){const e=await this.memoryCache.find(s,{table:s});await new Promise((i,r)=>{const a=t.transaction(s,"readwrite"),o=a.objectStore(s);o.clear();for(const t of e)o.add(t);a.oncomplete=()=>i(),a.onerror=()=>r(new n(`Flush failed for "${s}"`,"IDB_FLUSH_ERROR",a.error))})}}ensureDB(){if(!this.db)throw new n("Database not opened","DB_NOT_OPEN");return this.db}}function m(e){return"number"==typeof e?"number":"boolean"==typeof e?"boolean":"object"==typeof e&&null!==e?"json":"string"==typeof e?(isNaN(Date.parse(e)),"string"):"string"}class p{constructor(){this.name="opfs",this.root=null,this.tablesDir=null,this.dbName="",this.memoryCache=new f,this.opQueue=Promise.resolve()}enqueueOp(e){const t=this.opQueue.then(e,e);return this.opQueue=t.then(()=>{},()=>{}),t}async open(e,t){this.dbName=e,await this.memoryCache.open(e,t),this.root=await navigator.storage.getDirectory(),this.tablesDir=await this.root.getDirectoryHandle(e,{create:!0}),await this.loadExistingTables()}async close(){try{await this.opQueue}catch{}this.root=null,this.tablesDir=null,await this.memoryCache.close()}isOpen(){return null!==this.tablesDir}async repair(){try{await this.opQueue}catch{}await this.memoryCache.close(),await this.memoryCache.open(this.dbName,1),await this.loadExistingTables()}async clearAll(){try{await this.opQueue}catch{}if(await this.memoryCache.close(),await this.memoryCache.open(this.dbName,1),this.tablesDir){const e=this.tablesDir;for await(const[t]of e.entries())try{await this.tablesDir.removeEntry(t)}catch{}}}async getMeta(e){if(!this.tablesDir)return null;try{const t=await this.tablesDir.getFileHandle(`__metona_${e}.meta`),s=await t.getFile();return await s.text()}catch{return null}}async setMeta(e,t){if(!this.tablesDir)return;const s=await this.tablesDir.getFileHandle(`__metona_${e}.meta`,{create:!0}),n=await s.createWritable();await n.write(t),await n.close()}async createTable(e){return this.enqueueOp(async()=>{await this.memoryCache.createTable(e),await this.setMeta(`schema_${e.name}`,JSON.stringify(e)),await this.writeTableData(e.name,[])})}async dropTable(e){return this.enqueueOp(async()=>{if(await this.memoryCache.dropTable(e),this.tablesDir){try{await this.tablesDir.removeEntry(`__metona_schema_${e}.meta`)}catch{}try{await this.tablesDir.removeEntry(`${e}.json`)}catch{}}})}async hasTable(e){if(!this.tablesDir)return!1;try{return await this.tablesDir.getFileHandle(`${e}.json`),!0}catch{return!1}}async getTableNames(){if(!this.tablesDir)return[];const e=[];for await(const[t]of this.tablesDir.entries())t.endsWith(".json")&&e.push(t.replace(".json",""));return e}async getTableSchema(e){return this.memoryCache.getTableSchema(e)}async alterTable(e,t,s){return this.enqueueOp(async()=>{await this.memoryCache.alterTable(e,t,s);const n=await this.memoryCache.getTableSchema(e);n&&await this.setMeta(`schema_${e}`,JSON.stringify(n));const i=await this.memoryCache.find(e,{table:e});await this.writeTableData(e,i)})}async insert(e,t){return this.enqueueOp(async()=>{const s=await this.memoryCache.insert(e,t),n=await this.memoryCache.find(e,{table:e});return await this.writeTableData(e,n),s})}async find(e,t){return this.memoryCache.find(e,t)}async findStream(e,t,s){return this.memoryCache.findStream(e,t,s)}async update(e,t,s){return this.enqueueOp(async()=>{const n=await this.memoryCache.update(e,t,s),i=await this.memoryCache.find(e,{table:e});return await this.writeTableData(e,i),n})}async delete(e,t){return this.enqueueOp(async()=>{const s=await this.memoryCache.delete(e,t),n=await this.memoryCache.find(e,{table:e});return await this.writeTableData(e,n),s})}async count(e,t){return this.memoryCache.count(e,t)}async clear(e){return this.enqueueOp(async()=>{await this.memoryCache.clear(e),await this.writeTableData(e,[])})}async createIndex(e,t,s){return this.enqueueOp(async()=>{await this.memoryCache.createIndex(e,t,s);const n=await this.memoryCache.getTableSchema(e);n&&await this.setMeta(`schema_${e}`,JSON.stringify(n))})}async dropIndex(e,t,s){return this.enqueueOp(async()=>{await this.memoryCache.dropIndex(e,t,s);const n=await this.memoryCache.getTableSchema(e);n&&await this.setMeta(`schema_${e}`,JSON.stringify(n))})}async beginTransaction(){await this.memoryCache.beginTransaction()}async commitTransaction(){return this.enqueueOp(async()=>{await this.memoryCache.commitTransaction();const e=await this.memoryCache.getTableNames();for(const t of e){const e=await this.memoryCache.find(t,{table:t});await this.writeTableData(t,e)}})}async rollbackTransaction(){await this.memoryCache.rollbackTransaction()}ensureDir(){if(!this.tablesDir)throw new n("Database not opened","DB_NOT_OPEN");return this.tablesDir}async writeTableData(e,t){const s=this.ensureDir(),n=`${e}.json`,i=await s.getFileHandle(n,{create:!0}),r=await i.createWritable();await r.write(JSON.stringify(t)),await r.close()}async readTableData(e){const t=this.ensureDir(),s=`${e}.json`;try{const e=await t.getFileHandle(s),n=await e.getFile(),i=await n.text();return JSON.parse(i)}catch{return[]}}async loadExistingTables(){if(!this.tablesDir)return;const e=this.tablesDir,t=[];for await(const[s]of e.entries())s.endsWith(".json")&&t.push(s);for(const e of t){const t=e.replace(".json","");try{const e=await this.getMeta(`schema_${t}`);if(e){const s=JSON.parse(e);await this.memoryCache.createTable(s);const n=await this.readTableData(t);for(const e of n)try{await this.memoryCache.insert(t,[e])}catch{}continue}const s=await this.readTableData(t);if(s.length>0){const e=s[0],n={};for(const t of Object.keys(e)){const s=e[t],i="number"==typeof s?"number":"boolean"==typeof s?"boolean":"object"==typeof s?"json":"string";n[t]={type:i,primaryKey:"id"===t}}await this.memoryCache.createTable({name:t,columns:n});for(const e of s)await this.memoryCache.insert(t,[e])}}catch{}}}async loadTableIntoMemory(e,t){await this.memoryCache.createTable(t);const s=await this.readTableData(e);if(s.length>0)for(const t of s)await this.memoryCache.insert(e,[t])}}function y(e,s){return function(e){if(0===Object.keys(e).length)throw new n("Table must have at least one column","SCHEMA_ERROR");let s=0;for(const[i,r]of Object.entries(e)){if(!t.includes(r.type))throw new n(`Invalid type "${r.type}" for column "${i}". Valid types: ${t.join(", ")}`,"SCHEMA_ERROR");r.primaryKey&&s++}if(0===s)throw new n("Table must have at least one primary key column","SCHEMA_ERROR")}(s),{name:e,columns:s}}function g(e){return{type:e.type,primaryKey:e.primaryKey,unique:e.unique,required:e.required,default:e.default,index:e.index,maxLength:e.maxLength,min:e.min,max:e.max,references:e.references,onDelete:e.onDelete,onUpdate:e.onUpdate}}const b=4096;var w,T;!function(e){e[e.DATA=1]="DATA",e[e.INDEX=2]="INDEX",e[e.OVERFLOW=3]="OVERFLOW",e[e.META=4]="META"}(w||(w={})),function(e){e[e.STRING=1]="STRING",e[e.NUMBER=2]="NUMBER",e[e.BOOLEAN=3]="BOOLEAN",e[e.DATE=4]="DATE",e[e.JSON=5]="JSON",e[e.NULL=6]="NULL"}(T||(T={}));const E=4194304;var x,S,I;!function(e){e[e.INSERT=1]="INSERT",e[e.UPDATE=2]="UPDATE",e[e.DELETE=3]="DELETE",e[e.BEGIN=4]="BEGIN",e[e.COMMIT=5]="COMMIT",e[e.ROLLBACK=6]="ROLLBACK",e[e.CREATE_TABLE=7]="CREATE_TABLE",e[e.DROP_TABLE=8]="DROP_TABLE"}(x||(x={})),function(e){e[e.READ_COMMITTED=1]="READ_COMMITTED",e[e.SNAPSHOT=2]="SNAPSHOT"}(S||(S={})),function(e){e[e.ACTIVE=1]="ACTIVE",e[e.COMMITTED=2]="COMMITTED",e[e.ABORTED=3]="ABORTED"}(I||(I={}));const k={pageSize:b,bufferPoolPages:256,memtableSizeThreshold:E,levelSizeMultiplier:10,bloomFilterBitsPerKey:10,walEnabled:!0,walSyncMode:"full",checkpointInterval:1e3,compression:!1,storageBackend:"indexeddb",walSizeThreshold:16777216,maxMemoryMB:64};var A;!function(e){e[e.RED=0]="RED",e[e.BLACK=1]="BLACK"}(A||(A={}));class C{constructor(e,t){this.color=A.RED,this.left=null,this.right=null,this.parent=null,this.key=e,this.value=t}}class R{constructor(){this.root=null,this._size=0}get size(){return this._size}insert(e,t){const s=new C(e,t);if(!this.root)return this.root=s,s.color=A.BLACK,void this._size++;let n=null,i=this.root;for(;i;)if(n=i,ei.key))return void(i.value=t);i=i.right}s.parent=n,et.key))return t.value;t=t.right}return null}delete(e){const t=this.findNode(e);return!!t&&(this.deleteNode(t),this._size--,!0)}inorder(e){this._inorder(this.root,e)}rangeScan(e,t,s){this._rangeScan(this.root,e,t,s)}getAllEntries(){const e=[];return this.inorder((t,s)=>e.push([t,s])),e}clear(){this.root=null,this._size=0}findNode(e){let t=this.root;for(;t;)if(et.key))return t;t=t.right}return null}deleteNode(e){if(e.left||e.right)if(e.left)if(e.right){const t=this.minimum(e.right);t.parent!==e&&(this.transplant(t,t.right),t.right=e.right,t.right.parent=t),this.transplant(e,t),t.left=e.left,t.left.parent=t;const s=t.color;t.color=e.color,s===A.BLACK&&this.fixDelete(t.right,t.right?.parent??null)}else this.transplant(e,e.left),e.color===A.BLACK&&this.fixDelete(e.left,e.left.parent);else this.transplant(e,e.right),e.color===A.BLACK&&this.fixDelete(e.right,e.right.parent);else this.transplant(e,null),e.color===A.BLACK&&this.fixDelete(null,e.parent)}transplant(e,t){e.parent?e===e.parent.left?e.parent.left=t:e.parent.right=t:this.root=t,t&&(t.parent=e.parent)}minimum(e){for(;e.left;)e=e.left;return e}fixInsert(e){for(;e.parent&&e.parent.color===A.RED;){const t=e.parent,s=t.parent;if(!s)break;if(t===s.left){const n=s.right;n&&n.color===A.RED?(t.color=A.BLACK,n.color=A.BLACK,s.color=A.RED,e=s):(e===t.right&&(e=t,this.rotateLeft(e)),e.parent&&(e.parent.color=A.BLACK),e.parent?.parent&&(e.parent.parent.color=A.RED),e.parent?.parent&&this.rotateRight(e.parent.parent))}else{const n=s.left;n&&n.color===A.RED?(t.color=A.BLACK,n.color=A.BLACK,s.color=A.RED,e=s):(e===t.left&&(e=t,this.rotateRight(e)),e.parent&&(e.parent.color=A.BLACK),e.parent?.parent&&(e.parent.parent.color=A.RED),e.parent?.parent&&this.rotateLeft(e.parent.parent))}}this.root&&(this.root.color=A.BLACK)}fixDelete(e,t){let s=e,n=t;for(;(!s||s.color===A.BLACK)&&s!==this.root&&n;)if(s===n.left){let e=n.right;if(!e)break;if(e.color===A.RED&&(e.color=A.BLACK,n.color=A.RED,this.rotateLeft(n),e=n.right,!e))break;const t=e.left,i=e.right;if(t&&t.color!==A.BLACK||i&&i.color!==A.BLACK){if(!(i&&i.color!==A.BLACK||(t&&(t.color=A.BLACK),e.color=A.RED,this.rotateRight(e),e=n.right,e)))break;e.color=n.color,n.color=A.BLACK,e.right&&(e.right.color=A.BLACK),this.rotateLeft(n),s=this.root}else e.color=A.RED,s=n,n=s.parent}else{let e=n.left;if(!e)break;if(e.color===A.RED&&(e.color=A.BLACK,n.color=A.RED,this.rotateRight(n),e=n.left,!e))break;const t=e.left,i=e.right;if(t&&t.color!==A.BLACK||i&&i.color!==A.BLACK){if(!(t&&t.color!==A.BLACK||(i&&(i.color=A.BLACK),e.color=A.RED,this.rotateLeft(e),e=n.left,e)))break;e.color=n.color,n.color=A.BLACK,e.left&&(e.left.color=A.BLACK),this.rotateRight(n),s=this.root}else e.color=A.RED,s=n,n=s.parent}s&&(s.color=A.BLACK)}rotateLeft(e){const t=e.right;t&&(e.right=t.left,t.left&&(t.left.parent=e),t.parent=e.parent,e.parent?e===e.parent.left?e.parent.left=t:e.parent.right=t:this.root=t,t.left=e,e.parent=t)}rotateRight(e){const t=e.left;t&&(e.left=t.right,t.right&&(t.right.parent=e),t.parent=e.parent,e.parent?e===e.parent.right?e.parent.right=t:e.parent.left=t:this.root=t,t.right=e,e.parent=t)}_inorder(e,t){e&&(this._inorder(e.left,t),t(e.key,e.value),this._inorder(e.right,t))}_rangeScan(e,t,s,n){e&&(e.key>t&&this._rangeScan(e.left,t,s,n),e.key>=t&&e.key<=s&&n(e.key,e.value),e.key=this.maxSize}getAllEntries(){return this.tree.getAllEntries()}rangeScan(e,t){const s=[];return this.tree.rangeScan(e,t,(e,t)=>s.push([e,t])),s}getEntryCount(){return this.tree.size}getEstimatedSize(){return this._estimatedSize}clear(){this.tree.clear(),this._estimatedSize=0}contains(e){return null!==this.tree.find(e)}estimateEntrySize(e,t){if(!t)return 0;let s=2*e.length;for(const e of Object.entries(t)){s+=2*e[0].length;const t=e[1];s+="string"==typeof t?2*t.length:"number"==typeof t?8:"boolean"==typeof t||null==t?1:16}return s}}class O{constructor(e,t=10){this._inserted=0;const s=Math.max(64,e*t),n=Math.ceil(s/8);this.bits=new Uint8Array(n),this.numHashes=Math.max(1,Math.floor(.69*t))}static fromData(e,t){const s=new O(1);return s.bits=e,s.numHashes=t,s}insert(e){const t=this.getHashes(e);for(const e of t){const t=Math.floor(e/8),s=e%8;this.bits[t]|=1<>>0;return t}murmurSimple(e){let t=0;for(let s=0;s>>16)>>>0;return Math.abs(t)}}const _=1397969987;class D{constructor(e=4096){this.entries=[],this.blockSizeLimit=e}add(e,t){this.entries.push([e,t])}build(){const e=new TextEncoder,t=this.entries.map(([t,s])=>({key:t,keyBytes:e.encode(t),valueBytes:e.encode(JSON.stringify(s))})),s=this.splitIntoBlocks(t),n=new O(this.entries.length);let i=0;const r=[];for(const e of s)r.push(i),i+=this.computeBlockSize(e);const a=[];for(let e=0;e=this.blockSizeLimit&&s.length>1&&(t.push(s.slice(0,-1)),s=[n]);return s.length>0&&t.push(s),t}computeBlockSize(e){let t=4;for(const s of e)t+=4+s.keyBytes.length+4+s.valueBytes.length;return t}writeDataBlock(e,t,s,n){e.setUint32(t,s.length,!1),t+=4;for(const i of s){if(i.keyBytes.length>4294967295||i.valueBytes.length>4294967295)throw new Error("SSTable entry too large (exceeds u32 length field)");e.setUint32(t,i.keyBytes.length,!1),t+=4,new Uint8Array(e.buffer).set(i.keyBytes,t),t+=i.keyBytes.length,e.setUint32(t,i.valueBytes.length,!1),t+=4,new Uint8Array(e.buffer).set(i.valueBytes,t),t+=i.valueBytes.length,n.insert(i.key)}return t}estimateIndexBlockSize(e){let t=4;const s=new TextEncoder;for(const n of e)t+=4+s.encode(n.key).byteLength+8;return t}writeIndexBlock(e,t,s){e.setUint32(t,s.length,!1),t+=4;for(const n of s){const s=(new TextEncoder).encode(n.key);e.setUint32(t,s.length,!1),t+=4,new Uint8Array(e.buffer).set(s,t),t+=s.length,e.setUint32(t,n.blockOffset,!1),t+=4,e.setUint32(t,n.blockSize,!1),t+=4}return t}}class ${constructor(e,t){this.indexEntries=[],this.entryCount=0,this.bloomFilter=null,this.format=2,this.data=e,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.meta=t,this.parseFooter()}lenFieldSize(){return 2===this.format?4:2}readLen(e){return 2===this.format?this.view.getUint32(e,!1):this.view.getUint16(e,!1)}get(e){if(this.bloomFilter&&!this.bloomFilter.mayContain(e))return null;const t=this.locateBlock(e);if(t<0)return null;const s=this.indexEntries[t],n=this.getBlockData(s);if(!n)return null;const i=new DataView(n.buffer,n.byteOffset,n.byteLength),r=this.lenFieldSize(),a=i.getUint32(0,!1);let o=4;for(let t=0;tn.byteLength);t++){const t=2===this.format?i.getUint32(o,!1):i.getUint16(o,!1);if(o+=r,o+t+r>n.byteLength)break;const s=(new TextDecoder).decode(n.slice(o,o+t));o+=t;const a=2===this.format?i.getUint32(o,!1):i.getUint16(o,!1);if(o+=r,o+a>n.byteLength)break;const h=n.slice(o,o+a);if(o+=a,s===e)try{return JSON.parse((new TextDecoder).decode(h))}catch{return null}}return null}rangeScan(e,t,s){if(0===this.indexEntries.length)return;const n=Math.max(0,this.locateBlockGE(e)),i=Math.min(this.indexEntries.length-1,this.locateBlockLE(t));if(n<0||i<0||n>i)return;const r=this.lenFieldSize();for(let a=n;a<=i&&a>=0;a++){const n=this.indexEntries[a],i=this.getBlockData(n);if(!i)continue;const o=new DataView(i.buffer,i.byteOffset,i.byteLength),h=o.getUint32(0,!1);let c=4;for(let n=0;ni.byteLength);n++){const n=2===this.format?o.getUint32(c,!1):o.getUint16(c,!1);if(c+=r,c+n+r>i.byteLength)break;const a=(new TextDecoder).decode(i.slice(c,c+n));c+=n;const h=2===this.format?o.getUint32(c,!1):o.getUint16(c,!1);if(c+=r,c+h>i.byteLength)break;const l=i.slice(c,c+h);if(c+=h,a>=e&&a<=t)try{s(a,JSON.parse((new TextDecoder).decode(l)))}catch{}}}}scanAll(e){const t=this.lenFieldSize();for(const s of this.indexEntries){const n=this.getBlockData(s);if(!n)continue;const i=new DataView(n.buffer,n.byteOffset,n.byteLength),r=i.getUint32(0,!1);let a=4;for(let s=0;sn.byteLength);s++){const s=2===this.format?i.getUint32(a,!1):i.getUint16(a,!1);if(a+=t,a+s+t>n.byteLength)break;const r=(new TextDecoder).decode(n.slice(a,a+s));a+=s;const o=2===this.format?i.getUint32(a,!1):i.getUint16(a,!1);if(a+=t,a+o>n.byteLength)break;const h=n.slice(a,a+o);a+=o;try{e(r,JSON.parse((new TextDecoder).decode(h)))}catch{}}}}getMeta(){return this.meta}getIndexBlockCount(){return this.indexEntries.length}parseFooter(){if(this.data.byteLength<32)throw new Error("SSTable too small: missing footer");const e=this.data.byteLength-32,t=this.view.getUint32(e+24,!1);if(1397969986===t)this.format=1;else{if(t!==_)throw new Error(`Invalid SSTable magic: expected 1397969986 or 1397969987, got ${t}`);this.format=2}const s=this.view.getUint32(e,!1),n=this.view.getUint32(e+4,!1),i=this.view.getUint32(e+8,!1),r=this.view.getUint32(e+12,!1),a=this.view.getUint32(e+16,!1);if(this.entryCount=this.view.getUint32(e+20,!1),!(s+4>this.data.byteLength||s+n>this.data.byteLength)&&(this.parseIndexBlock(s,n),i>0&&r>0&&i+r<=this.data.byteLength))try{const e=this.data.slice(i,i+r);this.bloomFilter=O.fromData(e,a||10)}catch{}}parseIndexBlock(e,t){const s=this.view.getUint32(e,!1);e+=4;const n=this.lenFieldSize();for(let t=0;tthis.data.byteLength);t++){const t=this.readLen(e);if((e+=n)+t+8>this.data.byteLength)break;const s=(new TextDecoder).decode(this.data.slice(e,e+t));e+=t;const i=this.view.getUint32(e,!1);e+=4;const r=this.view.getUint32(e,!1);e+=4,0===r||i+r>this.data.byteLength||this.indexEntries.push({key:s,blockOffset:i,blockSize:r})}}getBlockData(e){return e.blockSize<=0||e.blockOffset<0||e.blockOffset+e.blockSize>this.data.byteLength?null:new Uint8Array(this.data.buffer,this.data.byteOffset+e.blockOffset,e.blockSize)}locateBlock(e){let t=0,s=this.indexEntries.length-1;for(;t<=s;){const n=Math.floor((t+s)/2);if(e<=this.indexEntries[n].key){if(e>(0===n?"":this.indexEntries[n-1].key))return n;s=n-1}else t=n+1}return-1}locateBlockGE(e){let t=0,s=this.indexEntries.length;for(;t>1;this.indexEntries[n].key>1;this.indexEntries[n].key<=e?t=n+1:s=n}return t>0?t-1:0}}class L{constructor(e){this.index=0,this.entries=e}next(){return this.index>=this.entries.length?null:this.entries[this.index++]}reset(){this.index=0}}class v{constructor(){this.heap=[]}push(e){this.heap.push(e),this.bubbleUp(this.heap.length-1)}pop(){if(0===this.heap.length)return null;if(1===this.heap.length)return this.heap.pop();const e=this.heap[0];return this.heap[0]=this.heap.pop(),this.bubbleDown(0),e}peek(){return this.heap.length>0?this.heap[0]:null}get size(){return this.heap.length}bubbleUp(e){for(;e>0;){const t=Math.floor((e-1)/2);if(this.heap[e].key>=this.heap[t].key)break;[this.heap[e],this.heap[t]]=[this.heap[t],this.heap[e]],e=t}}bubbleDown(e){const t=this.heap.length;for(;;){let s=e;const n=2*e+1,i=2*e+2;if(n=0&&e.level<7&&this.levels[e.level].push(e);for(let e=0;e<7;e++)this.levels[e].sort((e,t)=>t.id-e.id);this.initialized=!0}put(e,t){this.levels[0].length>=8&&this.enqueueCompact(0),this.memtable.put(e,t),this.operationCount++,this.memtable.shouldFlush()&&this.freezeMemtable()}delete(e){this.levels[0].length>=8&&this.enqueueCompact(0),this.memtable.put(e,{__tombstone:!0}),this.operationCount++,this.memtable.shouldFlush()&&this.freezeMemtable()}getEstimatedMemory(){let e=this.memtable.getEstimatedSize();for(const t of this.frozenMemtables)e+=t.getEstimatedSize();return e+=this.cacheSize,e}freezeMemtable(){if(this.immutableMemtable){const e=this.immutableMemtable;this.flushChain=this.enqueueOnChain(()=>this.flushImmutableAsync(e))}this.immutableMemtable=this.memtable,this.frozenMemtables.push(this.immutableMemtable),this.memtable=new N(this.memtableSizeThreshold)}enqueueOnChain(e){return this.flushChain.then(e).catch(e=>{this.lastBackgroundError=e})}async drainChain(){for(;;){const e=this.flushChain;if(await e,this.flushChain===e)return}}async flushImmutableAsync(e){const t=e.getAllEntries();if(0===t.length)return void(this.immutableMemtable===e&&(this.immutableMemtable=null));const s=await this.sstableStore.allocateId(),n=new D(this.blockSize);for(const[e,s]of t)n.add(e,s);const{sstableData:i,indexEntries:r}=n.build(),a={id:s,level:0,minKey:t[0][0],maxKey:t[t.length-1][0],blockCount:r.length,totalSize:i.byteLength,bloomData:null};this.cacheSSTable(s,i),this.trimCache(),await this.sstableStore.save(s,i),await this.sstableStore.saveMeta(a),this.immutableMemtable===e&&(this.immutableMemtable=null),this.levels[0].unshift(a),this.frozenMemtables=this.frozenMemtables.filter(t=>t!==e),this.levels[0].length>=4&&!this.compacting&&this.scheduleCompact(0)}scheduleCompact(e){e>=6||this.compacting||(this.compacting=!0,this.flushChain=this.enqueueOnChain(()=>this.compactLevelAsync(e).finally(()=>{this.compacting=!1,this.levels[e].length>=4&&this.scheduleCompact(e),e+1<6&&this.levels[e+1].length>=4&&this.scheduleCompact(e+1)})))}enqueueCompact(e){e>=6||this.compacting||(this.compacting=!0,this.flushChain=this.flushChain.then(async()=>{try{await this.compactLevelAsync(e)}finally{this.compacting=!1}}).catch(e=>{this.compacting=!1,this.lastBackgroundError=e}))}async prefetchRange(e,t){await this.drainChain(),this.trimCache();const s=[];for(let n=0;n<7;n++)for(const i of this.levels[n])ti.maxKey||this.sstableCache.has(i.id)||s.push(i.id);for(const e of s)await this.preloadSSTable(e)}async prefetchKeys(e){if(0===e.length)return;await this.drainChain(),this.trimCache();const t=new Set;for(let s=0;s<7;s++)for(const n of this.levels[s])if(!this.sstableCache.has(n.id))for(const s of e)if(s>=n.minKey&&s<=n.maxKey){t.add(n.id);break}for(const e of t)await this.preloadSSTable(e)}get(e){let t=this.memtable.get(e);if(null!==t)return this.unwrapTombstone(t);for(let s=this.frozenMemtables.length-1;s>=0;s--)if(t=this.frozenMemtables[s].get(e),null!==t)return this.unwrapTombstone(t);for(let t=0;t<7;t++)for(const s of this.levels[t]){if(es.maxKey)continue;const t=this.loadSSTableReader(s);if(!t)continue;const n=t.get(e);if(null!==n)return this.unwrapTombstone(n)}return null}rangeScan(e,t){const s=[];return this.rangeScanLazy(e,t,(e,t)=>s.push([e,t])),s}rangeScanLazy(e,t,s){const n=new B;n.addSource(new L(this.memtable.rangeScan(e,t)));for(let s=this.frozenMemtables.length-1;s>=0;s--)n.addSource(new L(this.frozenMemtables[s].rangeScan(e,t)));for(let s=0;s<7;s++)for(const i of this.levels[s]){if(ti.maxKey)continue;const s=this.loadSSTableReader(i);s&&s.rangeScan(e,t,(e,t)=>{n.addSource(new L([[e,t]]))})}const i=n.drain();for(const[e,t]of i)t.__tombstone||s(e,t)}getAllEntries(){const e=new Map;for(let t=6;t>=0;t--)for(let s=this.levels[t].length-1;s>=0;s--){const n=this.levels[t][s],i=this.loadSSTableReader(n);i&&i.scanAll((t,s)=>e.set(t,s))}for(const[t,s]of this.memtable.getAllEntries())e.set(t,s);for(let t=this.frozenMemtables.length-1;t>=0;t--)for(const[s,n]of this.frozenMemtables[t].getAllEntries())e.set(s,n);return Array.from(e.entries()).filter(([,e])=>!e.__tombstone)}async compactLevel(e){await this.compactLevelAsync(e,2)}async compactLevelAsync(e,t=4){if(e>=6)return;if(this.levels[e].lengthr.push([e,t])),n.addSource(new L(r)),i.push(e)}const r=n.drain();if(0===r.length){for(const t of i)this.levels[e].push(t);return void this.levels[e].sort((e,t)=>t.id-e.id)}const a=await this.sstableStore.allocateId(),o=new D(this.blockSize);for(const[e,t]of r)o.add(e,t);const{sstableData:h,indexEntries:c}=o.build(),l={id:a,level:e+1,minKey:r[0][0],maxKey:r[r.length-1][0],blockCount:c.length,totalSize:h.byteLength,bloomData:null};this.cacheSSTable(a,h),this.trimCache(),await this.sstableStore.save(a,h),await this.sstableStore.saveMeta(l),this.levels[e+1].unshift(l);for(const e of s)this.sstableCache.delete(e.id),await this.sstableStore.delete(e.id),await this.sstableStore.deleteMeta(e.id)}async flush(){if(null!==this.lastBackgroundError){const e=this.lastBackgroundError;throw this.lastBackgroundError=null,new n("AriaEngine background flush/compaction failed (data may be inconsistent)","ARIA_BACKGROUND_ERROR",e)}if(await this.drainChain(),this.immutableMemtable){const e=this.immutableMemtable;await this.flushImmutableAsync(e)}if(this.memtable.getEntryCount()>0){this.freezeMemtable();const e=this.immutableMemtable;e&&await this.flushImmutableAsync(e)}this.frozenMemtables=[],await this.drainChain()}async clear(){await this.drainChain(),this.memtable.clear(),this.immutableMemtable=null,this.frozenMemtables=[];for(const e of this.levels)for(const t of e)this.sstableCache.delete(t.id),this.sstableStore.delete(t.id).catch(()=>{}),this.sstableStore.deleteMeta(t.id).catch(()=>{});this.levels=[];for(let e=0;e<7;e++)this.levels.push([]);this.sstableCache.clear(),this.cacheSize=0}getStats(){return{memtableSize:this.memtable.getEntryCount(),sstableCount:this.levels.reduce((e,t)=>e+t.length,0),levelCounts:this.levels.map(e=>e.length)}}isInitialized(){return this.initialized}async validateAll(){let e=0;for(let t=0;t<7;t++){const s=[];for(const n of this.levels[t])await this.validateSSTable(n)?s.push(n):(this.sstableCache.delete(n.id),e++);this.levels[t]=s}return e}async validateSSTable(e){try{const t=await this.sstableStore.load(e.id);if(!t)return this.dropInvalidSSTable(e),!1;if(t.byteLength<32)return this.dropInvalidSSTable(e),!1;try{new $(t,e)}catch{return this.dropInvalidSSTable(e),!1}return!0}catch{return this.dropInvalidSSTable(e),!1}}async dropInvalidSSTable(e){try{await this.sstableStore.deleteMeta(e.id)}catch{}try{await this.sstableStore.delete(e.id)}catch{}}unwrapTombstone(e){return e?e.__tombstone?null:e:null}loadSSTableReader(e){const t=this.sstableCache.get(e.id);if(!t)return null;this.sstableCache.delete(e.id),this.sstableCache.set(e.id,t);try{return new $(t,e)}catch{return null}}async preloadSSTable(e){if(this.sstableCache.has(e))return;const t=await this.sstableStore.load(e);t&&this.cacheSSTable(e,t)}cacheSSTable(e,t){this.sstableCache.has(e)&&(this.cacheSize-=this.sstableCache.get(e).byteLength,this.sstableCache.delete(e)),this.sstableCache.set(e,t),this.cacheSize+=t.byteLength}trimCache(){for(;this.cacheSize>this.cacheLimitBytes&&this.sstableCache.size>0;){const e=this.sstableCache.keys().next().value,t=this.sstableCache.get(e);this.cacheSize-=t.byteLength,this.sstableCache.delete(e)}}getCacheSize(){return this.cacheSize}getCacheLimit(){return this.cacheLimitBytes}}class U{constructor(e,t=!0,s="batch"){this.lsn=0,this.buffer=[],this.bufferedBytes=0,this.store=e,this.enabled=t,this.syncMode=s}async append(e){if(!this.enabled)return;this.lsn++;const t={...e,lsn:this.lsn,checksum:0},s=this.encodeRecord(t);if("full"===this.syncMode)try{await this.store.append(s),this.bufferedBytes+=s.byteLength}catch{}else"batch"===this.syncMode&&(this.buffer.push(s),this.bufferedBytes+=s.byteLength)}async appendBatch(e){if(!this.enabled||0===e.length)return;const t=[];for(const s of e)this.lsn++,t.push(this.encodeRecord({...s,lsn:this.lsn,checksum:0}));const s=this.mergeChunks(t);if("full"===this.syncMode)try{await this.store.append(s),this.bufferedBytes+=s.byteLength}catch{}else"batch"===this.syncMode&&(this.buffer.push(s),this.bufferedBytes+=s.byteLength)}async flush(){if(!this.enabled||0===this.buffer.length)return;const e=this.mergeChunks(this.buffer);await this.store.append(e),this.buffer=[]}mergeChunks(e){if(1===e.length)return e[0];const t=e.reduce((e,t)=>e+t.byteLength,0),s=new Uint8Array(t);let n=0;for(const t of e)s.set(t,n),n+=t.byteLength;return s}async recover(e){if(!this.enabled)return 0;if(!await this.store.exists())return 0;const t=await this.store.readAll();if(0===t.byteLength)return 0;const s=this.decodeAllRecords(t);for(const t of s)e(t);return this.lsn=s.length>0?s[s.length-1].lsn:0,s.length}async checkpoint(){this.enabled&&(await this.flush(),await this.store.truncate(),this.lsn=0,this.bufferedBytes=0)}isEnabled(){return this.enabled}getLSN(){return this.lsn}getBufferedCount(){return this.buffer.length}getBufferedBytes(){return this.bufferedBytes}encodeRecord(e){const t=new TextEncoder,s=t.encode(e.tableName),n=t.encode(e.key),i=e.data?JSON.stringify(e.data):"",r=t.encode(i),a=11+s.length+2+n.length+4+r.length+4,o=new ArrayBuffer(a),h=new DataView(o);let c=0;h.setUint32(c,e.lsn,!1),c+=4,h.setUint8(c,e.type),c+=1,h.setUint32(c,e.txnId,!1),c+=4,h.setUint16(c,s.length,!1),c+=2,new Uint8Array(o).set(s,c),c+=s.length,h.setUint16(c,n.length,!1),c+=2,new Uint8Array(o).set(n,c),c+=n.length,h.setUint32(c,r.length,!1),c+=4,new Uint8Array(o).set(r,c),c+=r.length;let l=0;const u=new Uint8Array(o,0,c);for(let e=0;e>>0,!1),new Uint8Array(o)}decodeAllRecords(e){const t=[],s=new DataView(e.buffer,e.byteOffset,e.byteLength);let n=0;for(;n+15<=e.byteLength;)try{const i=n,r=s.getUint32(n,!1);n+=4;const a=s.getUint8(n);n+=1;const o=s.getUint32(n,!1);n+=4;const h=s.getUint16(n,!1);if(n+=2,n+h>e.byteLength)break;const c=(new TextDecoder).decode(e.slice(n,n+h));n+=h;const l=s.getUint16(n,!1);if(n+=2,n+l>e.byteLength)break;const u=(new TextDecoder).decode(e.slice(n,n+l));n+=l;const f=s.getUint32(n,!1);if(n+=4,n+f>e.byteLength)break;let d;if(f>0){const t=(new TextDecoder).decode(e.slice(n,n+f));try{d=JSON.parse(t)}catch{}}n+=f;const m=s.getUint32(n,!1);n+=4;const p=e.slice(i,n-4);let y=0;for(let e=0;e>>0!==m)continue;t.push({lsn:r,type:a,txnId:o,tableName:c,key:u,data:d,checksum:m})}catch{break}return t}}class P{constructor(e,t,s=null,n=1e3,i=16777216){this.opCount=0,this.lsm=e,this.wal=t,this.flushable=s,this.interval=n,this.walSizeThreshold=i}async tick(){this.opCount++,(this.opCount>=this.interval||this.getWALEstimatedSize()>=this.walSizeThreshold)&&await this.checkpoint()}getWALEstimatedSize(){const e=this.wal;if("function"==typeof e.getBufferedBytes){const t=e.getBufferedBytes();if(t>0)return t}return 200*("function"==typeof e.getBufferedCount?e.getBufferedCount():0)}async checkpoint(){await this.lsm.flush(),this.flushable&&await this.flushable.flushAll(),await this.wal.checkpoint(),this.opCount=0}async forceCheckpoint(){await this.checkpoint()}setInterval(e){this.interval=e}getOpCount(){return this.opCount}}class j{constructor(){this.db=null,this.dbName="",this.storeName="data"}async open(e){return this.dbName=`aria-${e}`,new Promise((e,t)=>{const s=indexedDB.open(this.dbName,1);s.onupgradeneeded=()=>{const e=s.result;e.objectStoreNames.contains(this.storeName)||e.createObjectStore(this.storeName)},s.onsuccess=()=>{this.db=s.result,e()},s.onerror=()=>t(new n("Failed to open AriaEngine IndexedDB","ARIA_IDB_OPEN_ERROR"))})}async close(){this.db&&(this.db.close(),this.db=null)}isOpen(){return null!==this.db}async read(e){const t=this.ensureDB();return new Promise((s,i)=>{const r=t.transaction(this.storeName,"readonly").objectStore(this.storeName).get(e);r.onsuccess=()=>s(r.result??null),r.onerror=()=>i(new n("Failed to read from AriaEngine store","ARIA_READ_ERROR"))})}async write(e,t){const s=this.ensureDB();return new Promise((i,r)=>{const a=s.transaction(this.storeName,"readwrite");a.objectStore(this.storeName).put(t,e),a.oncomplete=()=>i(),a.onerror=()=>r(new n("Failed to write to AriaEngine store","ARIA_WRITE_ERROR"))})}async writeMany(e){const t=Object.keys(e);if(0===t.length)return;const s=this.ensureDB();return new Promise((i,r)=>{const a=s.transaction(this.storeName,"readwrite"),o=a.objectStore(this.storeName);for(const s of t)o.put(e[s],s);a.oncomplete=()=>i(),a.onerror=()=>r(new n("Failed to batch write to AriaEngine store","ARIA_WRITE_ERROR"))})}async delete(e){const t=this.ensureDB();return new Promise((s,i)=>{const r=t.transaction(this.storeName,"readwrite");r.objectStore(this.storeName).delete(e),r.oncomplete=()=>s(),r.onerror=()=>i(new n("Failed to delete from AriaEngine store","ARIA_DELETE_ERROR"))})}async deleteMany(e){if(0===e.length)return;const t=this.ensureDB();return new Promise((s,i)=>{const r=t.transaction(this.storeName,"readwrite"),a=r.objectStore(this.storeName);for(const t of e)a.delete(t);r.oncomplete=()=>s(),r.onerror=()=>i(new n("Failed to batch delete from AriaEngine store","ARIA_DELETE_ERROR"))})}async listKeys(){const e=this.ensureDB();return new Promise((t,s)=>{const i=e.transaction(this.storeName,"readonly").objectStore(this.storeName).getAllKeys();i.onsuccess=()=>t(i.result??[]),i.onerror=()=>s(new n("Failed to list keys","ARIA_LIST_ERROR"))})}async exists(e){return null!==await this.read(e)}async clear(){const e=this.ensureDB();return new Promise((t,s)=>{const i=e.transaction(this.storeName,"readwrite");i.objectStore(this.storeName).clear(),i.oncomplete=()=>t(),i.onerror=()=>s(new n("Failed to clear AriaEngine store","ARIA_CLEAR_ERROR"))})}ensureDB(){if(!this.db)throw new n("AriaEngine storage not opened","ARIA_DB_NOT_OPEN");return this.db}}class F{constructor(){this.store=new Map,this.opened=!1}async open(e){this.opened=!0}async close(){this.store.clear(),this.opened=!1}isOpen(){return this.opened}async read(e){return this.store.get(e)??null}async write(e,t){this.store.set(e,t)}async writeMany(e){for(const[t,s]of Object.entries(e))this.store.set(t,s)}async delete(e){this.store.delete(e)}async deleteMany(e){for(const t of e)this.store.delete(t)}async listKeys(){return Array.from(this.store.keys())}async exists(e){return this.store.has(e)}async clear(){this.store.clear()}}class K{constructor(){this.root=null,this.dbDir=null,this.dbName="",this.writeQueue=Promise.resolve()}async open(e){this.dbName=e,this.root=await navigator.storage.getDirectory(),this.dbDir=await this.root.getDirectoryHandle(e,{create:!0})}async close(){this.dbDir=null,this.root=null}isOpen(){return null!==this.dbDir}async read(e){if(!this.dbDir)return null;try{const t=await this.dbDir.getFileHandle(e),s=await t.getFile();return await s.arrayBuffer()}catch{return null}}async write(e,t){if(this.dbDir)return this.writeQueue=this.writeQueue.then(async()=>{const s=await this.dbDir.getFileHandle(e,{create:!0}),n=await s.createWritable();await n.write(t),await n.close()}),this.writeQueue}async writeMany(e){if(this.dbDir)return this.writeQueue=this.writeQueue.then(async()=>{for(const[t,s]of Object.entries(e)){const e=await this.dbDir.getFileHandle(t,{create:!0}),n=await e.createWritable();await n.write(s),await n.close()}}),this.writeQueue}async delete(e){if(this.dbDir)return this.writeQueue=this.writeQueue.then(async()=>{try{await this.dbDir.removeEntry(e)}catch{}}),this.writeQueue}async deleteMany(e){if(this.dbDir)return this.writeQueue=this.writeQueue.then(async()=>{for(const t of e)try{await this.dbDir.removeEntry(t)}catch{}}),this.writeQueue}async listKeys(){if(!this.dbDir)return[];const e=[],t=this.dbDir;for await(const[s]of t.entries())e.push(s);return e}async exists(e){if(!this.dbDir)return!1;try{return await this.dbDir.getFileHandle(e),!0}catch{return!1}}async clear(){if(!this.dbDir)return;const e=this.dbDir;for await(const[t]of e.entries())try{await this.dbDir.removeEntry(t)}catch{}}}function z(e,t,s){const n=new DataView(e);n.setUint32(0,t,!1),n.setUint8(4,s),n.setUint16(5,16,!1),n.setUint16(7,e.byteLength,!1),n.setUint16(9,0,!1),n.setUint32(11,0,!1),n.setUint8(15,0)}class q{constructor(e){this.nextPageId=0,this.metaLoaded=!1,this.dbName="",this.backend=e}async init(e){this.dbName=e;const t=await this.backend.read("__aria_meta");if(t&&t instanceof ArrayBuffer&&t.byteLength>=4){const e=new DataView(t);this.nextPageId=e.getUint32(0,!1)}else this.nextPageId=1,await this.saveMeta();this.metaLoaded=!0}async readPage(e){const t=`pg_${e}`,s=await this.backend.read(t);if(!s)return this.createEmptyPage(e,w.DATA);if(s.byteLengtht.txnId!==e);0===n.length?this.versionStore.delete(t):this.versionStore.set(t,n)}this.activeTxns.delete(e),this.txnWriteKeys.delete(e)}isActive(e){const t=this.activeTxns.get(e);return void 0!==t&&t.state===I.ACTIVE}writeVersion(e,t,s,n){const i=`${e}.${t}`,r=this.versionStore.get(i)??[],a={txnId:n,data:s,prevVersion:r.length>0?r[r.length-1]:null,committed:!1};r.push(a),this.versionStore.set(i,r),this.txnWriteKeys.get(n)?.add(i)}readVersion(e,t,s){if(!this.activeTxns.get(s))return null;const n=`${e}.${t}`,i=this.versionStore.get(n);if(!i||0===i.length)return null;for(let e=i.length-1;e>=0;e--){const t=i[e];if(t.txnId===s)return t.data;if(t.committed)return t.data}return null}deleteVersion(e,t,s){this.writeVersion(e,t,{__mvcc_tombstone:!0},s)}getLatestCommittedVersions(e){const t={};for(const[s,n]of this.versionStore){if(!s.startsWith(`${e}.`))continue;const i=s.slice(e.length+1);for(let e=n.length-1;e>=0;e--){const s=n[e];if(s.committed&&!s.data.__mvcc_tombstone){t[i]=s.data;break}}}return t}discardVersions(e){const t=this.txnWriteKeys.get(e);if(t)for(const s of t){const t=this.versionStore.get(s);if(!t)continue;const n=t.filter(t=>t.txnId!==e);0===n.length?this.versionStore.delete(s):this.versionStore.set(s,n)}}gc(e=100){for(const[t,s]of this.versionStore){if(s.length<=e)continue;const n=s.slice(s.length-e);this.versionStore.set(t,n)}}getActiveWriteKeys(e,t){const s=new Set,n=`${e}.`;for(const[e,i]of this.versionStore){if(!e.startsWith(n))continue;const r=i[i.length-1];r.txnId!==t||r.committed||s.add(e.slice(n.length))}return s}clearTable(e){const t=`${e}.`;for(const[e]of this.versionStore)e.startsWith(t)&&this.versionStore.delete(e)}getActiveTxnCount(){return this.activeTxns.size}getGlobalLSN(){return this.globalCommitLsn}}class W{constructor(){this.head=null,this.tail=null,this._size=0}get size(){return this._size}moveToHead(e){this.head!==e&&(null!==e.prev||null!==e.next||this.head===e||this.tail===e?this.detach(e):this._size++,e.prev=null,e.next=this.head,this.head&&(this.head.prev=e),this.head=e,this.tail||(this.tail=e))}remove(e){(null!==e.prev||null!==e.next||this.head===e||this.tail===e)&&(this.detach(e),this._size=Math.max(0,this._size-1))}detach(e){e.prev?e.prev.next=e.next:this.head===e&&(this.head=e.next),e.next?e.next.prev=e.prev:this.tail===e&&(this.tail=e.prev),e.prev=null,e.next=null}getLRU(){return this.tail}popLRU(){const e=this.tail;return e&&this.remove(e),e}clear(){this.head=null,this.tail=null,this._size=0}getAllPages(){const e=[];let t=this.head;for(;t;)e.push(t),t=t.next;return e}}class G{constructor(e,t){this.lru=new W,this.capacity=e,this.onEvict=t}access(e){e.lastAccess=Date.now(),this.lru.moveToHead(e)}add(e){this.access(e)}remove(e){this.lru.remove(e)}async evictIfNeeded(e){let t=0;for(;this.lru.size+e>this.capacity&&this.lru.size>0;){const e=this.findEvictionCandidate();if(!e)break;e.dirty&&(await this.onEvict(e),e.dirty=!1),this.lru.remove(e),t++}return t}findEvictionCandidate(){let e=this.lru.getLRU();for(;e;){if(0===e.pins&&!e.dirty)return e;e=e.prev}for(e=this.lru.getLRU();e;){if(0===e.pins)return e;e=e.prev}return null}getSize(){return this.lru.size}getCapacity(){return this.capacity}clear(){this.lru.clear()}}class H{constructor(e,t=256){this.pages=new Map,this.nextPageId=0,this.pageIO=e,this.eviction=new G(t,async e=>{e.dirty&&(await this.pageIO.writePage(e.pageId,e.data),e.dirty=!1)})}async getPage(e){let t=this.pages.get(e);if(t)return this.eviction.access(t),t.pins++,t;const s=await this.pageIO.readPage(e);return s?(await this.eviction.evictIfNeeded(1),t={pageId:e,type:new DataView(s).getUint8(4),data:s,dirty:!1,pins:1,prev:null,next:null,lastAccess:Date.now()},this.pages.set(e,t),this.eviction.add(t),t):null}async newPage(e=w.DATA){const t=await this.pageIO.allocatePageId();await this.eviction.evictIfNeeded(1);const s=function(e,t){const s=new ArrayBuffer(b);return z(s,e,t),{pageId:e,type:t,data:s,dirty:!0,pins:0,prev:null,next:null,lastAccess:Date.now()}}(t,e);return s.pins=1,this.pages.set(t,s),this.eviction.add(s),s}unpin(e){e.pins>0&&e.pins--}markDirty(e){e.dirty=!0}async flushPage(e){const t=this.pages.get(e);t&&t.dirty&&(await this.pageIO.writePage(e,t.data),t.dirty=!1)}async flushAll(){for(const[,e]of this.pages)e.dirty&&(await this.pageIO.writePage(e.pageId,e.data),e.dirty=!1)}removePage(e){const t=this.pages.get(e);t&&(this.eviction.remove(t),this.pages.delete(e))}async clear(){await this.flushAll(),this.pages.clear(),this.eviction.clear()}getCachedPageCount(){return this.pages.size}getCapacity(){return this.eviction.getCapacity()}getDirtyPageCount(){let e=0;for(const[,t]of this.pages)t.dirty&&e++;return e}}const X="AES-GCM",J=new class{constructor(){this.cryptoKey=null,this._enabled=!1}get enabled(){return this._enabled}async init(e,t){const s=new TextEncoder,n=await crypto.subtle.importKey("raw",s.encode(e),"PBKDF2",!1,["deriveKey"]),i=t||crypto.getRandomValues(new Uint8Array(16));return this.cryptoKey=await crypto.subtle.deriveKey({name:"PBKDF2",salt:i,iterations:1e5,hash:"SHA-256"},n,{name:X,length:256},!1,["encrypt","decrypt"]),this._enabled=!0,i}async encryptPage(e){if(!this.cryptoKey)throw new Error("Crypto not initialized");const t=crypto.getRandomValues(new Uint8Array(12));return{iv:t,data:await crypto.subtle.encrypt({name:X,iv:t},this.cryptoKey,new Uint8Array(e))}}async decryptPage(e,t){if(!this.cryptoKey)throw new Error("Crypto not initialized");return crypto.subtle.decrypt({name:X,iv:e},this.cryptoKey,new Uint8Array(t))}close(){this.cryptoKey=null,this._enabled=!1}};function Q(){return J.enabled}class Y{constructor(e={}){this.name="aria",this.opened=!1,this.dbName="",this.schemas=new Map,this.tablePKs=new Map,this.opCounter=0,this.secondaryIndexes=new Map,this.mvcc=new V,this.currentTxnId=null,this.txnSnapshot=null,this.gcCounter=0,this.savepoints=new Map,this.config={...k,...e}}async open(e,t){if(!this.opened)try{await this.openInternal(e)}catch(t){if(t instanceof n)throw t;throw new n(`Failed to open AriaEngine database "${e}"`,"ARIA_OPEN_ERROR",t)}}async openInternal(e){this.dbName=e,"opfs"===this.config.storageBackend?this.backend=new K:"indexeddb"===this.config.storageBackend?this.backend=new j:this.backend=new F,await this.backend.open(e);const t=new q(this.backend);await t.init(e),this.bufferPool=new H(t,this.config.bufferPoolPages);const s=this.createSSTableStore("main");this.lsm=new M({memtableSizeThreshold:this.config.memtableSizeThreshold,levelSizeMultiplier:this.config.levelSizeMultiplier,blockSize:this.config.pageSize,bloomBitsPerKey:this.config.bloomFilterBitsPerKey,cacheLimitBytes:this.config.bufferPoolPages*this.config.pageSize,sstableStore:s}),this.wal=new U({append:async e=>{const t=await this.getWALCount(),s=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),n=s.buffer.slice(s.byteOffset,s.byteOffset+s.byteLength);await this.backend.writeMany({[`__wal_${t}`]:n,__wal_count:(new TextEncoder).encode(String(t+1)).buffer})},readAll:async()=>{const e=(await this.backend.listKeys()).filter(e=>e.startsWith("__wal_")&&"__wal_count"!==e).sort((e,t)=>{const s=parseInt(e.slice(6),10),n=parseInt(t.slice(6),10);return(isNaN(s)?0:s)-(isNaN(n)?0:n)});if(0===e.length)return new Uint8Array(0);const t=[];for(const s of e){const e=await this.backend.read(s);e&&t.push(new Uint8Array(e))}const s=t.reduce((e,t)=>e+t.byteLength,0),n=new Uint8Array(s);let i=0;for(const e of t)n.set(e,i),i+=e.byteLength;return n},truncate:async()=>{const e=(await this.backend.listKeys()).filter(e=>e.startsWith("__wal_"));await this.backend.deleteMany(e),await this.setWALCount(0)},exists:async()=>(await this.backend.listKeys()).filter(e=>e.startsWith("__wal_")&&"__wal_count"!==e).length>0},this.config.walEnabled,this.config.walSyncMode),await this.loadSchemas();for(const[e,t]of this.schemas){const s=this.tablePKs.get(e);for(const[n,i]of Object.entries(t.columns))if((i.index||i.unique)&&n!==s){const t=`${e}:idx:${n}`;if(!this.secondaryIndexes.has(t)){const s=new M({memtableSizeThreshold:this.config.memtableSizeThreshold,levelSizeMultiplier:this.config.levelSizeMultiplier,blockSize:this.config.pageSize,bloomBitsPerKey:this.config.bloomFilterBitsPerKey,cacheLimitBytes:this.config.bufferPoolPages*this.config.pageSize,sstableStore:this.createSSTableStore(`idx_${e}_${n}`)});await s.init(),this.secondaryIndexes.set(t,s)}}}await this.lsm.init();const n=new Set,i=[];await this.wal.recover(e=>i.push(e));for(const e of i)e.type===x.COMMIT&&n.add(e.txnId),e.type===x.ROLLBACK&&n.delete(e.txnId);for(const e of i)(0===e.txnId||n.has(e.txnId))&&(e.type===x.DROP_TABLE?await this.applyDropTableRecovery(e.tableName):this.applyWALRecord(e));if(i.length>0){await this.lsm.flush(),await this.wal.checkpoint();for(const e of this.schemas.keys())await this.reindexTableInternal(e)}this.checkpointManager=new P(this.lsm,{checkpoint:async()=>{this.currentTxnId||await this.wal.checkpoint()},flush:async()=>{this.currentTxnId||await this.wal.flush()},getBufferedBytes:()=>this.wal.getBufferedBytes(),getBufferedCount:()=>this.wal.getBufferedCount()},{flushAll:async()=>{await this.lsm.flush()}},this.config.checkpointInterval,this.config.walSizeThreshold),this.opened=!0}async close(){if(this.opened){await this.persistSchemas(),await this.lsm.flush();for(const e of this.secondaryIndexes.values())await e.flush();await this.wal.flush(),await this.wal.checkpoint(),await this.backend.close(),this.schemas.clear(),this.tablePKs.clear(),this.secondaryIndexes.clear(),this.mvcc=new V,this.currentTxnId=null,this.txnSnapshot=null,this.savepoints.clear(),this.opCounter=0,this.opened=!1}}async repair(){this.ensureOpen(),await this.lsm.validateAll(),await this.lsm.flush(),await this.wal.checkpoint();for(const e of this.schemas.keys())await this.reindexTable(e)}async clearAll(){this.ensureOpen(),await this.backend.clear(),this.schemas.clear(),this.tablePKs.clear(),this.secondaryIndexes.clear(),this.lsm.clear(),this.mvcc=new V,this.currentTxnId=null,this.txnSnapshot=null,this.savepoints.clear(),this.opCounter=0,await this.persistSchemas(),await this.wal.checkpoint()}isOpen(){return this.opened}async getMeta(e){const t=await this.backend.read(`__meta_${e}`);return t?(new TextDecoder).decode(t):null}async setMeta(e,t){await this.backend.write(`__meta_${e}`,(new TextEncoder).encode(t).buffer)}async createTable(e){if(this.ensureOpen(),this.ensureNoDDLInTransaction("CREATE TABLE"),this.schemas.has(e.name))throw new n(`Table "${e.name}" already exists`,"TABLE_EXISTS");this.schemas.set(e.name,e),this.tablePKs.set(e.name,this.getPK(e));for(const[t,s]of Object.entries(e.columns))if(s.index||s.unique){const s=`${e.name}:idx:${t}`;if(!this.secondaryIndexes.has(s)){const n=new M({memtableSizeThreshold:this.config.memtableSizeThreshold,levelSizeMultiplier:this.config.levelSizeMultiplier,blockSize:this.config.pageSize,bloomBitsPerKey:this.config.bloomFilterBitsPerKey,cacheLimitBytes:this.config.bufferPoolPages*this.config.pageSize,sstableStore:this.createSSTableStore(`idx_${e.name}_${t}`)});await n.init(),this.secondaryIndexes.set(s,n)}}await this.persistSchemas(),await this.wal.append({type:x.CREATE_TABLE,txnId:0,tableName:e.name,key:"",data:{schema:JSON.stringify(e)}})}async dropTable(e){this.ensureOpen(),this.ensureNoDDLInTransaction("DROP TABLE"),this.ensureTable(e);const t=await this.getAllRows(e);for(const s of t){const t=this.tablePKs.get(e);this.lsm.delete(`${e}:${s[t]}`)}await this.cleanupTableIndexes(e),this.schemas.delete(e),this.tablePKs.delete(e),await this.persistSchemas(),await this.wal.append({type:x.DROP_TABLE,txnId:0,tableName:e,key:""})}async cleanupTableIndexes(e){const t=`${e}:idx:`,s=[];for(const[e,n]of this.secondaryIndexes)if(e.startsWith(t)){s.push(e);try{await n.clear()}catch{}}for(const e of s)this.secondaryIndexes.delete(e)}async hasTable(e){return this.schemas.has(e)}async getTableNames(){return Array.from(this.schemas.keys())}async getTableSchema(e){return this.schemas.get(e)??null}async insert(e,t){this.ensureOpen(),this.ensureTable(e);const s=this.schemas.get(e),i=this.tablePKs.get(e),r=[],a=[];for(const o of t){const t=this.validateRow(s,o),h=String(t[i]),c=`${e}:${h}`;await this.lsm.prefetchKeys([c]);const l=this.currentTxnId?this.txnSnapshot?.get(c)??this.lsm.get(c):this.lsm.get(c);if(l&&!l.__txn_deleted)throw new n(`Duplicate primary key "${h}" in table "${e}"`,"DUPLICATE_KEY");this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(c,t),this.mvcc.writeVersion(e,h,t,this.currentTxnId)):this.lsm.put(c,t),this.updateSecondaryIndexes(e,h,t,null),r.push(h),a.push({type:x.INSERT,txnId:this.currentTxnId??0,tableName:e,key:h,data:t})}return await this.wal.appendBatch(a),this.opCounter+=t.length,this.checkMemoryBudget(),await this.checkpointManager.tick(),this.tryGC(),r}async find(e,t){let s;this.ensureOpen(),this.ensureTable(e);const n=await this.tryIndexLookup(e,t);s=null!==n?n:await this.getAllRows(e),s=this.mergeTxnSnapshot(e,s),t.where&&Object.keys(t.where).length>0&&(s=s.filter(e=>a(e,t.where))),t.orderBy&&t.orderBy.length>0&&(s=c(s,t.orderBy));const i=t.offset??0,r=t.limit??s.length;return s=s.slice(i,i+r),t.columns&&t.columns.length>0&&"*"!==t.columns[0]&&(s=s.map(e=>u(e,t.columns))),this.trimAllCaches(),s}async update(e,t,s){this.ensureOpen(),this.ensureTable(e);const n=this.schemas.get(e),i=await this.getAllRows(e);let r=0;const o=[],h=new Set;for(const c of i){const i=this.tablePKs.get(e),l=`${e}:${c[i]}`;if(!t.where||0===Object.keys(t.where).length||a(c,t.where)){const t={...c,...s};this.validateRow(n,t);const a=String(t[i]),u=a!==String(c[i]);u&&await this.applyForeignKeyUpdateRules(e,String(c[i]),a,o,h),this.currentTxnId&&this.txnSnapshot?(u&&(this.txnSnapshot.set(l,{__txn_deleted:!0}),this.mvcc.deleteVersion(e,String(c[i]),this.currentTxnId)),this.txnSnapshot.set(`${e}:${a}`,t),this.mvcc.writeVersion(e,a,t,this.currentTxnId)):(u&&this.lsm.delete(l),this.lsm.put(`${e}:${a}`,t)),r++,u&&o.push({type:x.DELETE,txnId:this.currentTxnId??0,tableName:e,key:String(c[i])}),o.push({type:x.UPDATE,txnId:this.currentTxnId??0,tableName:e,key:a,data:t}),this.updateSecondaryIndexes(e,a,t,u?c:null)}}return await this.wal.appendBatch(o),this.opCounter+=r,await this.checkpointManager.tick(),this.trimAllCaches(),r}async applyForeignKeyUpdateRules(e,t,s,i,r){const a=`${e}:${t}`;if(!r.has(a)){r.add(a);for(const[s,i]of this.schemas)if(s!==e)for(const[r,a]of Object.entries(i.columns)){if(!a.references||!a.onUpdate)continue;const[i]=a.references.split(".");if(i===e&&("RESTRICT"===a.onUpdate&&(await this.getAllRows(s)).some(e=>String(e[r])===t)))throw new n(`Cannot update "${e}" key "${t}": foreign key "${r}" in "${s}" has dependent rows`,"FOREIGN_KEY_VIOLATION")}for(const[n,r]of this.schemas)if(n!==e)for(const[a,o]of Object.entries(r.columns)){if(!o.references||!o.onUpdate)continue;const[r]=o.references.split(".");if(r!==e)continue;if("CASCADE"!==o.onUpdate&&"SET NULL"!==o.onUpdate)continue;const h=await this.getAllRows(n);for(const e of h){if(String(e[a])!==t)continue;const r=this.tablePKs.get(n),h=String(e[r]),c={...e,[a]:"CASCADE"===o.onUpdate?s:null},l=`${n}:${h}`;this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(l,c),this.mvcc.writeVersion(n,h,c,this.currentTxnId)):this.lsm.put(l,c),this.updateSecondaryIndexes(n,h,c,e),i.push({type:x.UPDATE,txnId:this.currentTxnId??0,tableName:n,key:h,data:c})}}}}async delete(e,t){this.ensureOpen(),this.ensureTable(e);const s=await this.getAllRows(e);let n=0;const i=[],r=new Set;for(const o of s){const s=this.tablePKs.get(e),h=`${e}:${o[s]}`;t.where&&0!==Object.keys(t.where).length&&!a(o,t.where)||(n+=await this.applyForeignKeyRules(e,String(o[s]),i,r),this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(h,{__txn_deleted:!0}),this.mvcc.deleteVersion(e,String(o[s]),this.currentTxnId)):this.lsm.delete(h),n++,i.push({type:x.DELETE,txnId:this.currentTxnId??0,tableName:e,key:String(o[s])}),this.updateSecondaryIndexes(e,String(o[s]),null,o))}return await this.wal.appendBatch(i),this.opCounter+=n,await this.checkpointManager.tick(),this.trimAllCaches(),n}async applyForeignKeyRules(e,t,s,i){let r=0;const a=`${e}:${t}`;if(i.has(a))return 0;i.add(a);for(const[a,o]of this.schemas)if(a!==e)for(const[h,c]of Object.entries(o.columns)){if(!c.references||!c.onDelete)continue;const[o]=c.references.split(".");if(o!==e)continue;const l=(await this.getAllRows(a)).filter(e=>String(e[h])===t);if("RESTRICT"===c.onDelete&&l.length>0)throw new n(`Cannot delete from "${e}": foreign key "${h}" in "${a}" has dependent rows`,"FOREIGN_KEY_VIOLATION");if("CASCADE"===c.onDelete){const e=this.tablePKs.get(a);for(const t of l){const n=String(t[e]);r+=await this.applyForeignKeyRules(a,n,s,i);const o=`${a}:${n}`;this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(o,{__txn_deleted:!0}),this.mvcc.deleteVersion(a,n,this.currentTxnId)):this.lsm.delete(o),this.updateSecondaryIndexes(a,n,null,t),s.push({type:x.DELETE,txnId:this.currentTxnId??0,tableName:a,key:n}),r++}}else if("SET NULL"===c.onDelete){const e=this.tablePKs.get(a);for(const t of l){const n=String(t[e]),i={...t,[h]:null},r=`${a}:${n}`;this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(r,i),this.mvcc.writeVersion(a,n,i,this.currentTxnId)):this.lsm.put(r,i),this.updateSecondaryIndexes(a,n,i,t),s.push({type:x.UPDATE,txnId:this.currentTxnId??0,tableName:a,key:n,data:i})}}}return r}async findStream(e,t,s){this.ensureOpen(),this.ensureTable(e);const n=!!(t.where&&Object.keys(t.where).length>0),i=t.columns&&t.columns.length>0&&"*"!==t.columns[0]?e=>u(e,t.columns):null,r=t.limit??1/0,o=t.offset??0,h=this.tablePKs.get(e),c=`${e}:`;let l=0,f=0;const d=e=>!(!n||a(e,t.where))||(f{if(l>=r)return;const s={...t};s[h]=e.slice(c.length),d(s)}),l}async count(e,t){this.ensureOpen(),this.ensureTable(e);const s=await this.getAllRows(e);return this.trimAllCaches(),t?.where&&0!==Object.keys(t.where).length?s.filter(e=>a(e,t.where)).length:s.length}async clear(e){this.ensureOpen(),this.ensureTable(e);const t=await this.getAllRows(e),s=[];for(const n of t){const t=this.tablePKs.get(e),i=`${e}:${n[t]}`;this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(i,{__txn_deleted:!0}),this.mvcc.deleteVersion(e,String(n[t]),this.currentTxnId)):this.lsm.delete(i),s.push({type:x.DELETE,txnId:this.currentTxnId??0,tableName:e,key:String(n[t])}),this.updateSecondaryIndexes(e,String(n[t]),null,n)}await this.wal.appendBatch(s),this.opCounter+=t.length,await this.checkpointManager.tick(),this.tryGC()}async alterTable(e,t,s){this.ensureOpen(),this.ensureNoDDLInTransaction("ALTER TABLE"),this.ensureTable(e);const i=this.schemas.get(e);if("ADD"===t){if(i.columns[s.name])throw new n(`Column "${s.name}" already exists in table "${e}"`,"COLUMN_EXISTS");return i.columns[s.name]=s,void await this.persistSchemas()}if(!i.columns[s.name])throw new n(`Column "${s.name}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");if(i.columns[s.name].index||i.columns[s.name].unique){const t=`${e}:idx:${s.name}`,n=this.secondaryIndexes.get(t);if(n){try{await n.clear()}catch{}this.secondaryIndexes.delete(t)}}delete i.columns[s.name],await this.persistSchemas();const r=`${e}:`,a=`${r}￿`;await this.lsm.prefetchRange(r,a);const o=this.lsm.rangeScan(r,a),h=[];for(const[t,n]of o){if(!(s.name in n))continue;const i={...n};delete i[s.name],this.lsm.put(t,i);const a=t.slice(r.length);this.updateSecondaryIndexes(e,a,i,n),h.push({type:x.UPDATE,txnId:this.currentTxnId??0,tableName:e,key:a,data:i})}await this.wal.appendBatch(h),this.opCounter+=h.length,await this.checkpointManager.tick(),this.trimAllCaches()}async createIndex(e,t,s){this.ensureOpen(),this.ensureNoDDLInTransaction("CREATE INDEX"),this.ensureTable(e);const i=this.schemas.get(e).columns[t];if(!i)throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");const r=`${e}:idx:${t}`;if(this.secondaryIndexes.has(r))return;i.index=!0,s&&(i.unique=!0);const a=new M({memtableSizeThreshold:this.config.memtableSizeThreshold,levelSizeMultiplier:this.config.levelSizeMultiplier,blockSize:this.config.pageSize,bloomBitsPerKey:this.config.bloomFilterBitsPerKey,cacheLimitBytes:this.config.bufferPoolPages*this.config.pageSize,sstableStore:this.createSSTableStore(`idx_${e}_${t}`)});await a.init(),this.secondaryIndexes.set(r,a);const o=this.tablePKs.get(e),h=await this.getAllRows(e);for(const e of h){const s=e[t];null!=s&&a.put(`${String(s)}:${e[o]}`,{pk:e[o]})}await a.flush(),await this.persistSchemas()}async dropIndex(e,t,s){this.ensureOpen(),this.ensureNoDDLInTransaction("DROP INDEX"),this.ensureTable(e);const i=this.schemas.get(e).columns[t];if(!i)throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");if(i.primaryKey)throw new n(`Cannot drop primary key index on column "${t}"`,"NOT_SUPPORTED");if(!i.index&&!i.unique&&!this.secondaryIndexes.has(`${e}:idx:${t}`))throw new n(`Index on column "${t}" does not exist in table "${e}"`,"INDEX_NOT_FOUND");i.index=!1,i.unique=!1;const r=`${e}:idx:${t}`,a=this.secondaryIndexes.get(r);a&&(await a.clear(),this.secondaryIndexes.delete(r)),await this.persistSchemas()}async beginTransaction(){if(this.currentTxnId)throw new n("Transaction already in progress","TX_ACTIVE");this.currentTxnId=this.mvcc.beginTransaction(),this.txnSnapshot=new Map,await this.wal.append({type:x.BEGIN,txnId:this.currentTxnId,tableName:"",key:""})}async commitTransaction(){if(!this.currentTxnId)throw new n("No active transaction","TX_NONE");if(await this.wal.append({type:x.COMMIT,txnId:this.currentTxnId,tableName:"",key:""}),await this.wal.flush(),this.txnSnapshot)for(const[e,t]of this.txnSnapshot)t.__txn_deleted?this.lsm.delete(e):this.lsm.put(e,t);this.mvcc.commitTransaction(this.currentTxnId),this.currentTxnId=null,this.txnSnapshot=null}async rollbackTransaction(){if(!this.currentTxnId)throw new n("No active transaction","TX_NONE");const e=new Set;if(this.txnSnapshot)for(const t of this.txnSnapshot.keys()){const s=t.indexOf(":");s>0&&e.add(t.slice(0,s))}this.mvcc.rollbackTransaction(this.currentTxnId),this.txnSnapshot=null,await this.wal.append({type:x.ROLLBACK,txnId:this.currentTxnId,tableName:"",key:""}),this.currentTxnId=null;for(const t of e)this.schemas.has(t)&&await this.reindexTable(t)}async savepoint(e){if(!this.currentTxnId)throw new n("No active transaction for savepoint","TX_NONE");if(this.savepoints.has(e))throw new n(`Savepoint "${e}" already exists`,"SAVEPOINT_EXISTS");this.savepoints.set(e,{txnId:this.currentTxnId,snapshot:this.txnSnapshot?new Map(this.txnSnapshot):null})}async rollbackToSavepoint(e){const t=this.savepoints.get(e);if(!t)throw new n(`Savepoint "${e}" not found`,"SAVEPOINT_NOT_FOUND");this.txnSnapshot=t.snapshot?new Map(t.snapshot):null,this.mvcc.discardVersions(this.currentTxnId);let s=!1;for(const[t]of this.savepoints)t!==e?s&&this.savepoints.delete(t):s=!0}async releaseSavepoint(e){if(!this.savepoints.has(e))throw new n(`Savepoint "${e}" not found`,"SAVEPOINT_NOT_FOUND");this.savepoints.delete(e)}async backup(){this.ensureOpen();const e={};for(const t of this.schemas.keys())e[t]=await this.getAllRows(t);return e}async getAllRows(e){const t=this.tablePKs.get(e),s=`${e}:`;await this.lsm.prefetchRange(s,`${s}￿`);const n=this.lsm.rangeScan(s,`${s}￿`).map(([e,n])=>{const i={...n};return i[t]=e.slice(s.length),i});return this.mergeTxnSnapshot(e,n)}mergeTxnSnapshot(e,t){if(!this.currentTxnId||!this.txnSnapshot)return t;const s=this.tablePKs.get(e),n=`${e}:`;for(const[e,i]of this.txnSnapshot){if(!e.startsWith(n))continue;const r=e.slice(n.length),a=i.__txn_deleted,o=t.findIndex(e=>e[s]===r);if(a)o>=0&&t.splice(o,1);else{const e={...i,[s]:r};o>=0?t[o]=e:t.push(e)}}return t}getPK(e){for(const[t,s]of Object.entries(e.columns))if(s.primaryKey)return t;return Object.keys(e.columns)[0]}validateRow(e,t){const s={};for(const[i,r]of Object.entries(e.columns)){let a=t[i];if(void 0===a&&void 0!==r.default&&(a=r.default),r.required&&null==a)throw new n(`Column "${i}" is required in table "${e.name}"`,"VALIDATION_ERROR");null!=a&&this.checkType(i,r.type,a,r),void 0!==a&&(s[i]=a)}return s}checkType(e,t,s,i){!function(e,t,s,i,r){const a=typeof i;switch(s){case"string":if("string"!==a)throw new n(`Column "${t}" in table "" expects string, got ${a}`,"TYPE_ERROR");if(void 0!==r?.maxLength&&i.length>r.maxLength)throw new n(`Column "${t}" in table "" exceeds max length ${r.maxLength}`,"VALIDATION_ERROR");break;case"number":if("number"!==a)throw new n(`Column "${t}" in table "" expects number, got ${a}`,"TYPE_ERROR");if(void 0!==r?.min&&ir.max)throw new n(`Column "${t}" in table "" value ${i} above maximum ${r.max}`,"VALIDATION_ERROR");break;case"boolean":if("boolean"!==a)throw new n(`Column "${t}" in table "" expects boolean, got ${a}`,"TYPE_ERROR");break;case"date":if("string"!==a||isNaN(Date.parse(i)))throw new n(`Column "${t}" in table "" expects valid date string, got ${typeof i}`,"TYPE_ERROR");break;case"json":if("object"!==a)throw new n(`Column "${t}" in table "" expects object/array, got ${a}`,"TYPE_ERROR")}}(0,e,t,s,i)}async persistSchemas(){const e={};for(const[t,s]of this.schemas)e[t]=s.columns;const t=JSON.stringify(e),s=(new TextEncoder).encode(t).buffer;await this.backend.write("__aria_schemas",s)}async loadSchemas(){const e=await this.backend.read("__aria_schemas");if(e)try{const t=(new TextDecoder).decode(e),s=JSON.parse(t);for(const[e,t]of Object.entries(s)){const s={name:e,columns:t};this.schemas.set(e,s),this.tablePKs.set(e,this.getPK(s))}}catch{}}createSSTableStore(e){const t="main"===e?"sst_":`sst_${e}_`,s="main"===e?"__aria_lsm_meta":`__aria_lsm_meta_${e}`;let n=0,i=!1;const r=e=>(new TextEncoder).encode(e).buffer,a=async()=>{const e=await this.backend.read(s);if(!e)return[];try{return JSON.parse((new TextDecoder).decode(e))}catch{return[]}};return{save:async(e,s)=>{let n=s.buffer.slice(s.byteOffset,s.byteOffset+s.byteLength);if(this.config.compression){const e=function(e){if(0===e.byteLength)return e;const t=e.byteLength+Math.ceil(e.byteLength/15)+8,s=new Uint8Array(t);let n=0,i=0,r=0;for(;n=4&&i>t&&(t=i,a=n-s)}if(t>4&&n-r<=15){const o=n-r,h=t-4;s[i++]=(15&o)<<4|15&h;for(let t=0;t>8&255,n+=t,r=n}else if(n++,n-r>=15){s[i++]=240;for(let t=0;t<15;t++)s[i++]=e[r+t];r=n}}let a=n-r;for(;a>0;){const t=Math.min(a,15);s[i++]=(15&t)<<4;for(let n=0;n{const s=await this.backend.read(`${t}${e}`);if(!s)return null;let n=new Uint8Array(s);if(Q()&&n.length>16){const e=n.slice(0,12),t=new DataView(n.buffer,n.byteOffset+12,4).getUint32(0,!1),s=n.slice(16).buffer,i=await async function(e,t){return J.decryptPage(e,t)}(e,s);n=new Uint8Array(i,0,t)}if(this.config.compression){const e=function(e,t){const s=new Uint8Array(t);let n=0,i=0;for(;n>4&15,o=15&r;for(let r=0;r=e.byteLength)break;const h=e[n++]|e[n++]<<8,c=o+4;for(let e=0;e{await this.backend.delete(`${t}${e}`)},allocateId:async()=>{if(!i){const e=await a();n=e.reduce((e,t)=>Math.max(e,t.id),0),i=!0}return++n},listMeta:a,saveMeta:async e=>{const t=await a(),n=t.findIndex(t=>t.id===e.id);n>=0?t[n]=e:t.push(e),await this.backend.write(s,r(JSON.stringify(t)))},deleteMeta:async e=>{const t=(await a()).filter(t=>t.id!==e);await this.backend.write(s,r(JSON.stringify(t)))}}}applyWALRecord(e){switch(e.type){case x.INSERT:case x.UPDATE:e.data&&this.lsm.put(`${e.tableName}:${e.key}`,e.data);break;case x.DELETE:this.lsm.delete(`${e.tableName}:${e.key}`);break;case x.CREATE_TABLE:if(e.data?.schema)try{const t=JSON.parse(e.data.schema);this.schemas.has(t.name)||(this.schemas.set(t.name,t),this.tablePKs.set(t.name,this.getPK(t)))}catch{}case x.COMMIT:case x.ROLLBACK:case x.BEGIN:}}async applyDropTableRecovery(e){if(!e)return;await this.cleanupTableIndexes(e),this.schemas.delete(e),this.tablePKs.delete(e);const t=`${e}:`,s=`${t}￿`;await this.lsm.prefetchRange(t,s);const n=this.lsm.rangeScan(t,s);for(const[e]of n)this.lsm.delete(e)}updateSecondaryIndexes(e,t,s,n){const i=this.schemas.get(e);if(i)for(const[r,a]of Object.entries(i.columns)){if(!a.index&&!a.unique)continue;const i=`${e}:idx:${r}`,o=this.secondaryIndexes.get(i);if(o){if(n){const e=n[r];null!=e&&o.delete(`${String(e)}:${t}`)}if(s){const e=s[r];null!=e&&o.put(`${String(e)}:${t}`,{pk:t})}}}}async tryIndexLookup(e,t){if(!t.where)return null;const s=this.schemas.get(e);if(!s)return null;const n=this.tablePKs.get(e);for(const[i,r]of Object.entries(t.where)){if("$and"===i||"$or"===i||"$not"===i)continue;const t=s.columns[i];if(!(t&&(t.index||t.unique||t.primaryKey)||i===n))continue;if(i===n){if("object"!=typeof r||null===r){const t=`${e}:${r}`;await this.lsm.prefetchKeys([t]);const s=this.lsm.get(t);return s?[{...s,[n]:r}]:[]}const t=r;if("$eq"in t){const s=`${e}:${t.$eq}`;await this.lsm.prefetchKeys([s]);const i=this.lsm.get(s);return i?[{...i,[n]:t.$eq}]:[]}if("$in"in t&&Array.isArray(t.$in)){const s=t.$in.map(t=>`${e}:${t}`);await this.lsm.prefetchKeys(s);const i=[],r=new Set;for(const s of t.$in){const t=String(s);if(r.has(t))continue;const a=this.lsm.get(`${e}:${t}`);a&&(r.add(t),i.push({...a,[n]:t}))}return i}if("$gt"in t||"$gte"in t||"$lt"in t||"$lte"in t){const t=`${e}:`;await this.lsm.prefetchRange(t,`${t}￿`);const s=this.lsm.rangeScan(t,`${t}￿`),i=[];for(const[e,o]of s){const s={...o,[n]:e.slice(t.length)};a(s,{[n]:r})&&i.push(s)}return i}}const o=`${e}:idx:${i}`,h=this.secondaryIndexes.get(o);if(!h)continue;if("object"!=typeof r||null===r)return this.indexScanToRows(e,n,h,String(r),String(r));const c=r;if("$eq"in c){const t=String(c.$eq);return this.indexScanToRows(e,n,h,t,t)}if("$in"in c&&Array.isArray(c.$in)){const t=[],s=new Set;for(const i of c.$in){const r=await this.indexScanToRows(e,n,h,String(i),String(i));for(const e of r){const i=String(e[n]);s.has(i)||(s.add(i),t.push(e))}}return t}if("$gt"in c||"$gte"in c||"$lt"in c||"$lte"in c){let t="",s="￿";return void 0!==c.$gt?t=`${String(Number(c.$gt)+1)}:`:void 0!==c.$gte&&(t=`${String(c.$gte)}:`),void 0!==c.$lt?s=`${String(Number(c.$lt)-1)}:￿`:void 0!==c.$lte&&(s=`${String(c.$lte)}:￿`),this.indexScanToRows(e,n,h,t,s)}}return null}async indexScanToRows(e,t,s,n,i){const r=i.includes("￿")?i:`${i}￿`;await s.prefetchRange(n,r);const a=s.rangeScan(n,r),o=[];for(const[,e]of a){const t=e.pk;t&&o.push(t)}await this.lsm.prefetchKeys(o.map(t=>`${e}:${t}`));const h=[];for(const s of o){const n=this.lsm.get(`${e}:${s}`);n&&h.push({...n,[t]:s})}return h}tryGC(){this.gcCounter++,this.gcCounter>=10&&(this.mvcc.gc(100),this.gcCounter=0)}trimAllCaches(){this.lsm.trimCache();for(const e of this.secondaryIndexes.values())e.trimCache()}checkMemoryBudget(){const e=1024*this.config.maxMemoryMB*1024;this.lsm.getEstimatedMemory()>e&&(this.lsm.flush().catch(()=>{}),this.mvcc.gc(50))}getWALEstimatedSize(){return 200*this.wal.getBufferedCount()}async analyzeTable(e){this.ensureOpen(),this.ensureTable(e);const t=await this.getAllRows(e),s={table:e,rowCount:t.length,avgRowSize:t.length>0?Math.round(t.reduce((e,t)=>e+JSON.stringify(t).length,0)/t.length):0,indexDepth:this.lsm.getStats().levelCounts.filter(e=>e>0).length,sstableCount:this.lsm.getStats().sstableCount,memtableSize:this.lsm.getStats().memtableSize,estimatedMemory:this.lsm.getEstimatedMemory()},n=this.schemas.get(e);if(n&&t.length>0){const e={};for(const s of Object.keys(n.columns)){const n=new Set(t.map(e=>String(e[s])));e[s]={distinctValues:n.size}}s.columnStats=e}return s}async reindexTable(e){return this.ensureOpen(),this.ensureTable(e),this.reindexTableInternal(e)}async reindexTableInternal(e){const t=this.schemas.get(e);if(!t)return 0;let s=0;for(const[n,i]of Object.entries(t.columns)){if(!i.index&&!i.unique)continue;const t=`${e}:idx:${n}`,r=this.secondaryIndexes.get(t);if(!r)continue;await r.clear(),s++;const a=await this.getAllRows(e);for(const t of a){const s=t[n];null!=s&&r.put(`${String(s)}:${t[this.tablePKs.get(e)]}`,{pk:t[this.tablePKs.get(e)]})}}return s}async vacuum(){this.ensureOpen(),await this.lsm.flush();for(let e=0;e<6;e++)this.lsm.getStats().levelCounts[e]>=2&&await this.lsm.compactLevel(e);const e=this.mvcc.getGlobalLSN();return this.mvcc.gc(10),{compactedLevels:6,gcVersions:e}}estimateQueryCost(e,t){const s=this.schemas.get(e);if(!s||!t.where)return{strategy:"full_scan",estimatedRows:0};const n=this.tablePKs.get(e);for(const[e,i]of Object.entries(t.where)){if("$and"===e||"$or"===e||"$not"===e)continue;if(e===n&&("object"!=typeof i||i.$eq))return{strategy:"pk_lookup",estimatedRows:1};const t=s.columns[e];if(t?.index||t?.unique){if("object"!=typeof i||i.$eq)return{strategy:`index_eq:${e}`,estimatedRows:1};if(i.$in&&Array.isArray(i.$in))return{strategy:`index_in:${e}`,estimatedRows:i.$in.length};if(i.$gt||i.$lt||i.$gte||i.$lte)return{strategy:`index_range:${e}`,estimatedRows:100}}}return{strategy:"full_scan",estimatedRows:1e3}}ensureOpen(){if(!this.opened)throw new n("AriaEngine not opened","DB_NOT_OPEN")}ensureNoDDLInTransaction(e){if(this.currentTxnId)throw new n(`${e} is not supported inside a transaction (AriaEngine DDL is not transactional)`,"NOT_SUPPORTED")}ensureTable(e){if(!this.schemas.has(e))throw new n(`Table "${e}" does not exist`,"TABLE_NOT_FOUND")}async getWALCount(){const e=await this.backend.read("__wal_count");if(!e)return 0;try{const t=new TextDecoder;return parseInt(t.decode(e),10)||0}catch{return 0}}async setWALCount(e){const t=(new TextEncoder).encode(String(e)).buffer;await this.backend.write("__wal_count",t)}}class Z{constructor(e="indexeddb"){this.name="hybrid",this.dbName="",this.version=1,this.memoryEngine=new f,this.diskEngineType=e,this.diskEngine="opfs"===e?new p:new d}async open(e,t){this.dbName=e,this.version=t,await this.diskEngine.open(e,t),await this.memoryEngine.open(e,t),await this.reloadMemoryFromDisk()}async reloadMemoryFromDisk(){await this.memoryEngine.close(),await this.memoryEngine.open(this.dbName,this.version);const e=await this.diskEngine.getTableNames();for(const t of e){const e=await this.diskEngine.getTableSchema(t);if(!e)continue;await this.memoryEngine.createTable(e);const s=await this.diskEngine.find(t,{table:t});if(s.length>0)try{await this.memoryEngine.insert(t,s)}catch(e){}}}async close(){await this.memoryEngine.close(),await this.diskEngine.close()}isOpen(){return this.memoryEngine.isOpen()&&this.diskEngine.isOpen()}async repair(){"function"==typeof this.diskEngine.repair&&await this.diskEngine.repair(),await this.reloadMemoryFromDisk()}async clearAll(){if("function"==typeof this.diskEngine.clearAll)await this.diskEngine.clearAll();else{const e=await this.diskEngine.getTableNames();for(const t of e)await this.diskEngine.dropTable(t)}if("function"==typeof this.memoryEngine.clearAll)await this.memoryEngine.clearAll();else{const e=await this.memoryEngine.getTableNames();for(const t of e)await this.memoryEngine.dropTable(t)}}async getMeta(e){return"function"==typeof this.diskEngine.getMeta?this.diskEngine.getMeta(e):null}async setMeta(e,t){"function"==typeof this.diskEngine.setMeta&&await this.diskEngine.setMeta(e,t)}async createTable(e){await this.memoryEngine.createTable(e),await this.diskEngine.createTable(e)}async dropTable(e){await this.memoryEngine.dropTable(e),await this.diskEngine.dropTable(e)}async hasTable(e){return this.memoryEngine.hasTable(e)}async getTableNames(){return this.memoryEngine.getTableNames()}async getTableSchema(e){return this.memoryEngine.getTableSchema(e)}async alterTable(e,t,s){if(await this.memoryEngine.alterTable(e,t,s),"function"==typeof this.diskEngine.alterTable)await this.diskEngine.alterTable(e,t,s);else{const n=await this.diskEngine.getTableSchema(e);n&&"DROP"===t&&delete n.columns[s.name]}}async insert(e,t){const s=await this.memoryEngine.insert(e,t);return await this.diskEngine.insert(e,t),s}async find(e,t){return this.memoryEngine.find(e,t)}async findStream(e,t,s){return this.memoryEngine.findStream(e,t,s)}async update(e,t,s){const n=await this.memoryEngine.update(e,t,s);return await this.diskEngine.update(e,t,s),n}async delete(e,t){const s=await this.memoryEngine.delete(e,t);return await this.diskEngine.delete(e,t),s}async count(e,t){return this.memoryEngine.count(e,t)}async clear(e){await this.memoryEngine.clear(e),await this.diskEngine.clear(e)}async createIndex(e,t,s){await this.memoryEngine.createIndex(e,t,s),"function"==typeof this.diskEngine.createIndex&&await this.diskEngine.createIndex(e,t,s)}async dropIndex(e,t,s){await this.memoryEngine.dropIndex(e,t,s),"function"==typeof this.diskEngine.dropIndex&&await this.diskEngine.dropIndex(e,t,s)}async beginTransaction(){await this.memoryEngine.beginTransaction(),await this.diskEngine.beginTransaction()}async commitTransaction(){await this.diskEngine.commitTransaction();try{await this.memoryEngine.commitTransaction()}catch(e){throw new n("Hybrid commit failed: memory engine error after disk commit (disk data is committed)","TX_COMMIT_ERROR",e)}}async rollbackTransaction(){await this.memoryEngine.rollbackTransaction(),await this.diskEngine.rollbackTransaction()}getDiskEngineType(){return this.diskEngineType}getMemoryEngine(){return this.memoryEngine}}class ee{constructor(e,t,s=["*"],n){this.engine=e,this.tableName=t,this._columns=s,this._where={},this._orderBy=[],this._joins=[],this._executor=n}as(e){return this._alias=e,this}innerJoin(e,t,s){return this._addJoin("INNER",e,t,s)}leftJoin(e,t,s){return this._addJoin("LEFT",e,t,s)}rightJoin(e,t,s){return this._addJoin("RIGHT",e,t,s)}crossJoin(e,t){return this._addJoin("CROSS",e,{},t)}join(e,t,s){return this._addJoin("INNER",e,t,s)}_addJoin(e,t,s,n){return this._joins.push({type:e,table:t,on:s,alias:n}),this}where(e){return this._where={...this._where,...e},this}orderBy(e,t="asc"){return this._orderBy.push({column:e,direction:t}),this}limit(e){return this._limit=e,this}offset(e){return this._offset=e,this}async execute(){if(this._joins.length>0&&this._executor){const e=this.toAST();return this._executor.execute(e)}return this.engine.find(this.tableName,{table:this.tableName,columns:this._columns,where:this._where,orderBy:this._orderBy.length>0?this._orderBy:void 0,limit:this._limit,offset:this._offset})}toAST(){return{type:"SELECT",columns:this._columns,from:this.tableName,alias:this._alias,joins:this._joins.length>0?[...this._joins]:void 0,where:this._where,orderBy:this._orderBy.length>0?this._orderBy:void 0,limit:this._limit,offset:this._offset}}}class te{constructor(e,t,s,n){this.engine=e,this.tableName=t,this._updates=s,this._where={},this.onWrite=n}where(e){return this._where={...this._where,...e},this}async execute(){const e=await this.engine.update(this.tableName,{table:this.tableName,where:this._where},this._updates);return this.onWrite?.(this.tableName),e}toAST(){return{type:"UPDATE",table:this.tableName,sets:this._updates,where:this._where}}}class se{constructor(e,t,s){this.engine=e,this.tableName=t,this._where={},this.onWrite=s}where(e){return this._where={...this._where,...e},this}async execute(){const e=await this.engine.delete(this.tableName,{table:this.tableName,where:this._where});return this.onWrite?.(this.tableName),e}toAST(){return{type:"DELETE",from:this.tableName,where:this._where}}}class ne{constructor(e,t,s,n){this.schema=null,this.engine=e,this.name=t,this.executor=s,this.onWrite=n}async getSchema(){if(!this.schema){const e=await this.engine.getTableSchema(this.name);if(!e)throw new n(`Table "${this.name}" does not exist`,"TABLE_NOT_FOUND");this.schema=e}return this.schema}async insert(e){const t=await this.engine.insert(this.name,[e]);return this.onWrite?.(this.name),t[0]}async insertMany(e){const t=await this.engine.insert(this.name,e);return this.onWrite?.(this.name),t}select(e=["*"]){return new ee(this.engine,this.name,e,this.executor)}async stream(e,t={}){if("function"!=typeof this.engine.findStream){const s=await this.engine.find(this.name,{table:this.name,where:t.where,limit:t.limit,offset:t.offset,columns:t.columns});for(const t of s)e(t);return s.length}return this.engine.findStream(this.name,{table:this.name,where:t.where,limit:t.limit,offset:t.offset,columns:t.columns},e)}update(e){return new te(this.engine,this.name,e,this.onWrite)}delete(){return new se(this.engine,this.name,this.onWrite)}async count(e){return this.engine.count(this.name,e?{table:this.name,where:e}:void 0)}async clear(){await this.engine.clear(this.name),this.onWrite?.(this.name)}async drop(){await this.engine.dropTable(this.name),this.onWrite?.(this.name)}}function ie(e){switch(e.type){case"SELECT":return function(e){return{table:e.from,columns:e.columns,where:e.where,orderBy:e.orderBy?.length?e.orderBy:void 0,limit:e.limit,offset:e.offset}}(e);case"DELETE":return function(e){return{table:e.from,where:e.where}}(e);case"UPDATE":return function(e){return{table:e.table,where:e.where}}(e);default:throw new n(`Cannot compile statement type "${e.type}" to QueryPlan`,"COMPILE_ERROR")}}var re;!function(e){e.SELECT="SELECT",e.FROM="FROM",e.WHERE="WHERE",e.INSERT="INSERT",e.INTO="INTO",e.VALUES="VALUES",e.UPDATE="UPDATE",e.SET="SET",e.DELETE="DELETE",e.CREATE="CREATE",e.TABLE="TABLE",e.DROP="DROP",e.ORDER="ORDER",e.BY="BY",e.ASC="ASC",e.DESC="DESC",e.LIMIT="LIMIT",e.OFFSET="OFFSET",e.AND="AND",e.OR="OR",e.NOT="NOT",e.LIKE="LIKE",e.IN="IN",e.PRIMARY="PRIMARY",e.KEY="KEY",e.UNIQUE="UNIQUE",e.DEFAULT="DEFAULT",e.NULL="NULL",e.TRUE="TRUE",e.REFERENCES="REFERENCES",e.CASCADE="CASCADE",e.BETWEEN="BETWEEN",e.IF="IF",e.EXISTS="EXISTS",e.FALSE="FALSE",e.ALTER="ALTER",e.ADD="ADD",e.TRUNCATE="TRUNCATE",e.INNER="INNER",e.LEFT="LEFT",e.RIGHT="RIGHT",e.CROSS="CROSS",e.JOIN="JOIN",e.ON="ON",e.AS="AS",e.OUTER="OUTER",e.GROUP="GROUP",e.HAVING="HAVING",e.COUNT="COUNT",e.SUM="SUM",e.AVG="AVG",e.MIN="MIN",e.MAX="MAX",e.DISTINCT="DISTINCT",e.BEGIN="BEGIN",e.COMMIT="COMMIT",e.ROLLBACK="ROLLBACK",e.UNION="UNION",e.ALL="ALL",e.INDEX="INDEX",e.CASE="CASE",e.WHEN="WHEN",e.THEN="THEN",e.ELSE="ELSE",e.END="END",e.IDENTIFIER="IDENTIFIER",e.STRING="STRING",e.NUMBER="NUMBER",e.COMMA="COMMA",e.LPAREN="LPAREN",e.RPAREN="RPAREN",e.SEMICOLON="SEMICOLON",e.EQ="EQ",e.NEQ="NEQ",e.GT="GT",e.GTE="GTE",e.LT="LT",e.LTE="LTE",e.STAR="STAR",e.DOT="DOT",e.EOF="EOF",e.ILLEGAL="ILLEGAL"}(re||(re={}));const ae={SELECT:re.SELECT,FROM:re.FROM,WHERE:re.WHERE,INSERT:re.INSERT,INTO:re.INTO,VALUES:re.VALUES,UPDATE:re.UPDATE,SET:re.SET,DELETE:re.DELETE,CREATE:re.CREATE,TABLE:re.TABLE,DROP:re.DROP,ORDER:re.ORDER,BY:re.BY,ASC:re.ASC,DESC:re.DESC,LIMIT:re.LIMIT,OFFSET:re.OFFSET,AND:re.AND,OR:re.OR,NOT:re.NOT,LIKE:re.LIKE,IN:re.IN,PRIMARY:re.PRIMARY,KEY:re.KEY,UNIQUE:re.UNIQUE,DEFAULT:re.DEFAULT,NULL:re.NULL,TRUE:re.TRUE,FALSE:re.FALSE,REFERENCES:re.REFERENCES,CASCADE:re.CASCADE,BETWEEN:re.BETWEEN,IF:re.IF,EXISTS:re.EXISTS,ALTER:re.ALTER,ADD:re.ADD,TRUNCATE:re.TRUNCATE,INNER:re.INNER,LEFT:re.LEFT,RIGHT:re.RIGHT,CROSS:re.CROSS,JOIN:re.JOIN,ON:re.ON,AS:re.AS,OUTER:re.OUTER,GROUP:re.GROUP,HAVING:re.HAVING,COUNT:re.COUNT,SUM:re.SUM,AVG:re.AVG,MIN:re.MIN,MAX:re.MAX,DISTINCT:re.DISTINCT,BEGIN:re.BEGIN,COMMIT:re.COMMIT,ROLLBACK:re.ROLLBACK,UNION:re.UNION,ALL:re.ALL,INDEX:re.INDEX,CASE:re.CASE,WHEN:re.WHEN,THEN:re.THEN,ELSE:re.ELSE,END:re.END};class oe{constructor(e){this.position=0,this.readPosition=0,this.ch="",this.input=e,this.readChar()}nextToken(){let e;switch(this.skipWhitespace(),this.ch){case",":e=this.makeToken(re.COMMA,",");break;case"(":e=this.makeToken(re.LPAREN,"(");break;case")":e=this.makeToken(re.RPAREN,")");break;case";":e=this.makeToken(re.SEMICOLON,";");break;case"*":e=this.makeToken(re.STAR,"*");break;case".":e=this.makeToken(re.DOT,".");break;case"=":e=this.makeToken(re.EQ,"=");break;case"!":"="===this.peekChar()?(this.readChar(),e=this.makeToken(re.NEQ,"!=")):e=this.makeToken(re.ILLEGAL,"!");break;case">":"="===this.peekChar()?(this.readChar(),e=this.makeToken(re.GTE,">=")):e=this.makeToken(re.GT,">");break;case"<":"="===this.peekChar()?(this.readChar(),e=this.makeToken(re.LTE,"<=")):">"===this.peekChar()?(this.readChar(),e=this.makeToken(re.NEQ,"<>")):e=this.makeToken(re.LT,"<");break;case"'":case'"':e=this.readString(this.ch);break;case"":e={type:re.EOF,value:"",position:this.position};break;default:if("-"===this.ch&&"-"===this.peekChar())return this.skipLineComment(),this.nextToken();if("/"===this.ch&&"*"===this.peekChar())return this.skipBlockComment(),this.nextToken();if(this.isLetter(this.ch)){const t=this.readIdentifier();return e={type:ae[t.toUpperCase()]??re.IDENTIFIER,value:t,position:this.position-t.length},e}if(this.isDigit(this.ch)||"-"===this.ch&&this.isDigit(this.peekChar())){const t=this.readNumber();return e={type:re.NUMBER,value:t,position:this.position-t.length},e}e=this.makeToken(re.ILLEGAL,this.ch)}return this.readChar(),e}readChar(){this.readPosition>=this.input.length?this.ch="":this.ch=this.input[this.readPosition],this.position=this.readPosition,this.readPosition++}peekChar(){return this.readPosition>=this.input.length?"":this.input[this.readPosition]}skipWhitespace(){for(;" "===this.ch||"\t"===this.ch||"\n"===this.ch||"\r"===this.ch;)this.readChar()}skipLineComment(){for(;"\n"!==this.ch&&"\r"!==this.ch&&""!==this.ch;)this.readChar()}skipBlockComment(){for(this.readChar(),this.readChar();""!==this.ch&&("*"!==this.ch||"/"!==this.peekChar());)this.readChar();""!==this.ch&&(this.readChar(),this.readChar())}readIdentifier(){const e=this.position;for(;this.isLetter(this.ch)||this.isDigit(this.ch)||"_"===this.ch;)this.readChar();return this.input.slice(e,this.position)}readNumber(){const e=this.position;for("-"===this.ch&&this.readChar();this.isDigit(this.ch);)this.readChar();if("."===this.ch&&this.isDigit(this.peekChar()))for(this.readChar();this.isDigit(this.ch);)this.readChar();return this.input.slice(e,this.position)}readString(e){const t=this.position+1;this.readChar();let s="";for(;""!==this.ch;){if(this.ch===e){if(this.peekChar()===e){s+=e,this.readChar(),this.readChar();continue}break}"\\"!==this.ch||this.peekChar()!==e?(s+=this.ch,this.readChar()):(this.readChar(),s+=e,this.readChar())}return{type:re.STRING,value:s,position:t}}isLetter(e){return/[a-zA-Z_]/.test(e)}isDigit(e){return/[0-9]/.test(e)}makeToken(e,t){return{type:e,value:t,position:this.position}}}class he{constructor(e){this.sql=e,this.lexer=new oe(e),this.nextToken(),this.nextToken()}parseStatement(){switch(this.curToken.type){case re.SELECT:return this.parseSelect();case re.INSERT:return this.parseInsert();case re.UPDATE:return this.parseUpdate();case re.DELETE:return this.parseDelete();case re.CREATE:return this.parseCreateStatement();case re.DROP:return this.parseDropStatement();case re.ALTER:return this.parseAlterTable();case re.TRUNCATE:return this.parseTruncateTable();case re.BEGIN:return this.parseBegin();case re.COMMIT:return this.parseCommit();case re.ROLLBACK:return this.parseRollback();default:throw this.error(`Unexpected token "${this.curToken.value}"`)}}parseAllStatements(){const e=[];for(;!this.curTokenIs(re.EOF);){for(;this.curTokenIs(re.SEMICOLON);)this.nextToken();if(this.curTokenIs(re.EOF))break;if(e.push(this.parseStatement()),this.curTokenIs(re.SEMICOLON))this.nextToken();else if(!this.curTokenIs(re.EOF))throw this.error(`Expected ';' after statement, got "${this.curToken.value}"`)}return e}parseBegin(){return this.expect(re.BEGIN),this._isKeywordAsIdent()&&"TRANSACTION"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"BEGIN"}}parseCommit(){return this.expect(re.COMMIT),this._isKeywordAsIdent()&&"TRANSACTION"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"COMMIT"}}parseRollback(){return this.expect(re.ROLLBACK),this._isKeywordAsIdent()&&"TRANSACTION"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"ROLLBACK"}}parseCreateStatement(){if(this.expect(re.CREATE),this.curTokenIs(re.TABLE))return this.parseCreateTable();if(this.curTokenIs(re.INDEX)||this._isKeywordAsIdent()&&"INDEX"===this.curToken.value.toUpperCase())return this.parseCreateIndex();if(this.curTokenIs(re.UNIQUE)&&(this.nextToken(),this.curTokenIs(re.INDEX)||this._isKeywordAsIdent()&&"INDEX"===this.curToken.value.toUpperCase())){const e=this.parseCreateIndex();return e.unique=!0,e}throw this.error(`Expected TABLE or INDEX after CREATE, got "${this.curToken.value}"`)}parseCreateIndex(){this.expect(re.INDEX);const e=this.expectIdentifier("index name");this.expect(re.ON);const t=this.expectIdentifier("table name");this.expect(re.LPAREN);const s=this.expectIdentifier("column name");return this.expect(re.RPAREN),{type:"CREATE_INDEX",name:e,table:t,column:s}}parseDropStatement(){if(this.expect(re.DROP),this.curTokenIs(re.TABLE))return this.parseDropTable();if(this.curTokenIs(re.INDEX)||this._isKeywordAsIdent()&&"INDEX"===this.curToken.value.toUpperCase())return this.parseDropIndex();throw this.error(`Expected TABLE or INDEX after DROP, got "${this.curToken.value}"`)}parseDropIndex(){this.expect(re.INDEX);const e=this.expectIdentifier("index name");let t="",s="";return this.curTokenIs(re.ON)&&(this.nextToken(),t=this.expectIdentifier("table name"),this.curTokenIs(re.LPAREN)&&(this.nextToken(),s=this.expectIdentifier("column name"),this.expect(re.RPAREN))),{type:"DROP_INDEX",name:e,table:t,column:s}}parseSelect(){this.expect(re.SELECT);let e=!1;this.curTokenIs(re.DISTINCT)&&(e=!0,this.nextToken());const t=[];let s;this.curTokenIs(re.STAR)?(t.push("*"),this.nextToken()):t.push(...this.parseColumnList());let n,i="";this.curTokenIs(re.FROM)&&(this.nextToken(),this.curTokenIs(re.LPAREN)?(this.nextToken(),s=this.parseSelect(),this.expect(re.RPAREN),this.curTokenIs(re.AS)?(this.nextToken(),n=this.expectIdentifier("alias")):this.curToken.type!==re.IDENTIFIER||this._isReservedAfterFrom()||(n=this.curToken.value,this.nextToken())):(i=this.expectIdentifier("table name"),this.curTokenIs(re.AS)?(this.nextToken(),n=this.expectIdentifier("alias")):this.curToken.type!==re.IDENTIFIER||this._isReservedAfterFrom()||(n=this.curToken.value,this.nextToken())));const r={type:"SELECT",columns:t,distinct:e||void 0,from:i,alias:n,where:{}};s&&(r.fromSubquery=s);const a=this.parseJoinClauses();return a.length>0&&(r.joins=a),this.curTokenIs(re.WHERE)&&(this.nextToken(),r.where=this.parseCondition()),this.curTokenIs(re.GROUP)&&(this.nextToken(),this.expect(re.BY),r.groupBy=this.parseIdentifierList()),this.curTokenIs(re.HAVING)&&(this.nextToken(),r.having=this.parseCondition()),this.curTokenIs(re.ORDER)&&(this.nextToken(),this.expect(re.BY),r.orderBy=this.parseOrderByList()),this.curTokenIs(re.LIMIT)&&(this.nextToken(),r.limit=this.expectNumber("LIMIT value")),this.curTokenIs(re.OFFSET)&&(this.nextToken(),r.offset=this.expectNumber("OFFSET value")),this.curTokenIs(re.UNION)?this.parseUnion(r):r}parseUnion(e){this.expect(re.UNION);let t=!1;this.curTokenIs(re.ALL)&&(t=!0,this.nextToken());const s={type:"SELECT_UNION",left:e,right:this.parseSelect(),all:t||void 0};return this.curTokenIs(re.UNION)?this.parseUnionChain(s):s}parseUnionChain(e){this.expect(re.UNION);let t=!1;this.curTokenIs(re.ALL)&&(t=!0,this.nextToken());const s={type:"SELECT_UNION",left:e,right:this.parseSelect(),all:t||void 0};return this.curTokenIs(re.UNION)?this.parseUnionChain(s):s}parseJoinClauses(){const e=[];for(;this._isJoinKeyword();)e.push(this.parseJoinClause());return e}_isJoinKeyword(){return this.curTokenIs(re.INNER)||this.curTokenIs(re.LEFT)||this.curTokenIs(re.RIGHT)||this.curTokenIs(re.CROSS)||this.curTokenIs(re.JOIN)}parseJoinClause(){let e="INNER";this.curTokenIs(re.INNER)?(e="INNER",this.nextToken()):this.curTokenIs(re.LEFT)?(e="LEFT",this.nextToken(),this.curTokenIs(re.OUTER)&&this.nextToken()):this.curTokenIs(re.RIGHT)?(e="RIGHT",this.nextToken(),this.curTokenIs(re.OUTER)&&this.nextToken()):this.curTokenIs(re.CROSS)&&(e="CROSS",this.nextToken()),this.expect(re.JOIN);const t=this.expectIdentifier("table name");let s;this.curTokenIs(re.AS)?(this.nextToken(),s=this.expectIdentifier("alias")):this.curToken.type!==re.IDENTIFIER||this._isJoinReserved()||(s=this.curToken.value,this.nextToken());let n={};return"CROSS"!==e&&this.curTokenIs(re.ON)&&(this.nextToken(),n=this.parseCondition()),{type:e,table:t,alias:s,on:n}}_isReservedAfterFrom(){return this.curTokenIs(re.WHERE)||this.curTokenIs(re.ORDER)||this.curTokenIs(re.LIMIT)||this.curTokenIs(re.OFFSET)||this.curTokenIs(re.GROUP)||this._isJoinKeyword()}_isJoinReserved(){return this.curTokenIs(re.ON)||this.curTokenIs(re.WHERE)||this.curTokenIs(re.ORDER)||this.curTokenIs(re.LIMIT)||this._isJoinKeyword()}parseInsert(){this.expect(re.INSERT),this.expect(re.INTO);const e=this.expectIdentifier("table name");let t;if(this.curTokenIs(re.LPAREN)&&(this.nextToken(),t=this.parseIdentifierList(),this.expect(re.RPAREN)),this.curTokenIs(re.SELECT))return{type:"INSERT",into:e,columns:t,select:this.parseSelect()};this.expect(re.VALUES);const s=[];do{this.curTokenIs(re.COMMA)&&this.nextToken(),this.expect(re.LPAREN);const e=this.parseValueList();this.expect(re.RPAREN),s.push(e)}while(this.curTokenIs(re.COMMA));return{type:"INSERT",into:e,columns:t,values:s}}parseUpdate(){this.expect(re.UPDATE);const e=this.expectIdentifier("table name");this.expect(re.SET);const t={};do{this.curTokenIs(re.COMMA)&&this.nextToken();const e=this.expectIdentifier("column name");this.expect(re.EQ),t[e]=this.parseValue()}while(this.curTokenIs(re.COMMA));let s={};return this.curTokenIs(re.WHERE)&&(this.nextToken(),s=this.parseCondition()),{type:"UPDATE",table:e,sets:t,where:s}}parseDelete(){this.expect(re.DELETE),this.expect(re.FROM);const e=this.expectIdentifier("table name");let t={};return this.curTokenIs(re.WHERE)&&(this.nextToken(),t=this.parseCondition()),{type:"DELETE",from:e,where:t}}parseCreateTable(){this.expect(re.TABLE);let e=!1;this.curTokenIs(re.IF)&&(this.nextToken(),this.expect(re.NOT),this.expect(re.EXISTS),e=!0);const t=this.expectIdentifier("table name");this.expect(re.LPAREN);const s=[];do{this.curTokenIs(re.COMMA)&&this.nextToken(),s.push(this.parseColumnDef())}while(this.curTokenIs(re.COMMA));return this.expect(re.RPAREN),{type:"CREATE_TABLE",name:t,columns:s,ifNotExists:e||void 0}}parseColumnDef(){const e={name:this.expectIdentifier("column name"),type:this.expectIdentifier("column type").toLowerCase()};for(;this.curTokenIs(re.PRIMARY)||this.curTokenIs(re.UNIQUE)||this.curTokenIs(re.NOT)||this.curTokenIs(re.DEFAULT)||this.curTokenIs(re.REFERENCES);)if(this.curTokenIs(re.PRIMARY))this.nextToken(),this.expect(re.KEY),e.primaryKey=!0;else if(this.curTokenIs(re.UNIQUE))this.nextToken(),e.unique=!0;else if(this.curTokenIs(re.NOT))this.nextToken(),this.expect(re.NULL),e.required=!0;else if(this.curTokenIs(re.DEFAULT))this.nextToken(),e.default=this.parseValue();else{if(!this.curTokenIs(re.REFERENCES))break;{this.nextToken();const t=this.expectIdentifier("referenced table");this.expect(re.LPAREN);const s=this.expectIdentifier("referenced column");for(this.expect(re.RPAREN),e.references=`${t}.${s}`;this.curTokenIs(re.ON);)if(this.nextToken(),this.curTokenIs(re.DELETE))this.nextToken(),e.onDelete=this.parseCascadeAction();else{if(!this.curTokenIs(re.UPDATE))break;this.nextToken(),e.onUpdate=this.parseCascadeAction()}}}return e}parseCascadeAction(){return this.curTokenIs(re.CASCADE)?(this.nextToken(),"CASCADE"):this.curTokenIs(re.SET)?(this.nextToken(),this.expect(re.NULL),"SET NULL"):this.curToken.type===re.IDENTIFIER&&"RESTRICT"===this.curToken.value.toUpperCase()?(this.nextToken(),"RESTRICT"):"RESTRICT"}parseAlterTable(){this.expect(re.ALTER),this.expect(re.TABLE);const e=this.expectIdentifier("table name");let t;if(this.curTokenIs(re.ADD))return t="ADD",this.nextToken(),this.curToken.type===re.IDENTIFIER&&"COLUMN"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"ALTER_TABLE",name:e,action:t,column:this.parseColumnDef()};if(this.curTokenIs(re.DROP)||this._isKeywordAsIdent()&&"DROP"===this.curToken.value.toUpperCase())return t="DROP",this.nextToken(),this.curToken.type===re.IDENTIFIER&&"COLUMN"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"ALTER_TABLE",name:e,action:t,column:{name:this.expectIdentifier("column name"),type:"string"}};throw this.error("Expected ADD or DROP in ALTER TABLE")}parseTruncateTable(){return this.expect(re.TRUNCATE),this.expect(re.TABLE),{type:"TRUNCATE_TABLE",name:this.expectIdentifier("table name")}}parseDropTable(){this.expect(re.TABLE);let e=!1;return this.curTokenIs(re.IF)&&(this.nextToken(),this.expect(re.EXISTS),e=!0),{type:"DROP_TABLE",name:this.expectIdentifier("table name"),ifExists:e||void 0}}parseCondition(){let e=this.parseSimpleCondition();for(;this.curTokenIs(re.AND)||this.curTokenIs(re.OR);){const t=this.curTokenIs(re.AND);this.nextToken();const s=this.parseSimpleCondition();e=t?{$and:[e,s]}:{$or:[e,s]}}return e}parseWhere(){return this.parseCondition()}parseSimpleCondition(){if(this.curTokenIs(re.EXISTS)||this._isKeywordAsIdent()&&"EXISTS"===this.curToken.value.toUpperCase())return this.nextToken(),this.parseExistsCondition(!1);if(this.curTokenIs(re.NOT)&&this._peekIsExists())return this.nextToken(),this.nextToken(),this.parseExistsCondition(!0);if(this.curTokenIs(re.NOT)&&!this._isNotInOrLike())return this.nextToken(),{$not:this.parseSimpleCondition()};if(this.curTokenIs(re.LPAREN)){this.nextToken();const e=this.parseCondition();return this.expect(re.RPAREN),e}const e=this.parseColumnRef();if(this.curTokenIs(re.IDENTIFIER)&&"IS"===this.curToken.value.toUpperCase()){this.nextToken();const t=this.curTokenIs(re.NOT);t&&this.nextToken(),this.expect(re.NULL);const s={};return s[e]=t?{$ne:null}:{$eq:null},s}if(this.curTokenIs(re.BETWEEN)){this.nextToken();const t=this.parseValue();this.expect(re.AND);const s=this.parseValue(),n={};return n[e]={$gte:t,$lte:s},n}if(this.curTokenIs(re.NOT)&&this.peekTokenIs(re.BETWEEN)){this.nextToken(),this.nextToken();const t=this.parseValue();this.expect(re.AND);const s=this.parseValue(),n={};return n[e]={$not:{$gte:t,$lte:s}},n}if(this.curTokenIs(re.NOT)){if(this.peekTokenIs(re.IN)){if(this.nextToken(),this.nextToken(),this.expect(re.LPAREN),this.curTokenIs(re.SELECT)){const t=this.parseSelect();this.expect(re.RPAREN);const s={};return s[e]={$nin:{$subquery:t}},s}const t=this.parseValueList();this.expect(re.RPAREN);const s={};return s[e]={$nin:t},s}if(this.peekTokenIs(re.LIKE)){this.nextToken(),this.nextToken();const t=this.parseValue(),s={};return s[e]={$not:{$like:t}},s}}if(this.curTokenIs(re.LIKE)){this.nextToken();const t=this.parseValue(),s={};return s[e]={$like:t},s}if(this.curTokenIs(re.IN)){if(this.nextToken(),this.expect(re.LPAREN),this.curTokenIs(re.SELECT)){const t=this.parseSelect();this.expect(re.RPAREN);const s={};return s[e]={$in:{$subquery:t}},s}const t=this.parseValueList();this.expect(re.RPAREN);const s={};return s[e]={$in:t},s}if(this.curTokenIs(re.AND)||this.curTokenIs(re.OR)||this.curTokenIs(re.RPAREN)||this.curTokenIs(re.EOF)||this.curToken.type===re.IDENTIFIER&&["THEN","END","ELSE","NULLS","LIMIT","OFFSET","ORDER","GROUP","HAVING","UNION","WHERE"].includes(this.curToken.value.toUpperCase())){const t={};return t[e]={$eq:!0},t}const t=this.parseComparisonOp();if(this.curTokenIs(re.LPAREN)&&this.peekTokenIs(re.SELECT)){this.nextToken();const s=this.parseSelect();this.expect(re.RPAREN);const n={};return n[e]={[t]:{$subquery:s}},n}let s;s=(this.curToken.type===re.IDENTIFIER||this._isKeywordAsIdent())&&this.peekTokenIs(re.DOT)?{$col:this.parseColumnRef()}:this.parseValue();const n={};return n[e]={[t]:s},n}parseExistsCondition(e){this.expect(re.LPAREN);const t=this.parseSelect();return this.expect(re.RPAREN),{$exists:{$subquery:t,$negate:e||void 0}}}_peekIsExists(){return this.peekToken.type===re.EXISTS||this.peekToken.type===re.IDENTIFIER&&"EXISTS"===this.peekToken.value.toUpperCase()}_isNotInOrLike(){return this.peekTokenIs(re.IN)||this.peekTokenIs(re.LIKE)}peekTokenIs(e){return this.peekToken.type===e}parseComparisonOp(){switch(this.curToken.type){case re.EQ:return this.nextToken(),"$eq";case re.NEQ:return this.nextToken(),"$ne";case re.GT:return this.nextToken(),"$gt";case re.GTE:return this.nextToken(),"$gte";case re.LT:return this.nextToken(),"$lt";case re.LTE:return this.nextToken(),"$lte";default:throw this.error(`Expected comparison operator, got "${this.curToken.value}"`)}}parseColumnList(){const e=[];for(e.push(this.parseColumnWithAlias());this.curTokenIs(re.COMMA);)this.nextToken(),e.push(this.parseColumnWithAlias());return e}parseColumnWithAlias(){let e=this.parseColumnRef();if(this.curTokenIs(re.AS))this.nextToken(),e=`${e} AS ${this.expectIdentifier("alias")}`;else if(this.curToken.type===re.IDENTIFIER&&!this._isReservedAfterFrom()&&!this._isJoinKeyword()){const t=this.curToken.value;this.nextToken(),e=`${e} AS ${t}`}return e}parseColumnRef(){if(this.curTokenIs(re.CASE))return this.parseCaseExpressionText();if(this.curTokenIs(re.NUMBER)){const e=this.curToken.value;return this.nextToken(),e}if(this.curTokenIs(re.STRING)){const e=this.curToken.value;return this.nextToken(),`'${e}'`}if(this.curTokenIs(re.COUNT)||this.curTokenIs(re.SUM)||this.curTokenIs(re.AVG)||this.curTokenIs(re.MIN)||this.curTokenIs(re.MAX))return this.parseAggregateCall();const e=this.expectIdentifier("column name");return this.curTokenIs(re.DOT)?(this.nextToken(),`${e}.${this.expectIdentifier("column name")}`):e}parseCaseExpressionText(){const e=this.curToken.position;this.nextToken();let t=1,s=e+4;for(;!this.curTokenIs(re.EOF)&&t>0&&(this.curTokenIs(re.CASE)&&t++,!this.curTokenIs(re.END)||(t--,s=this.curToken.position+3,this.nextToken(),0!==t));)s=this.curToken.position+this.curToken.value.length,this.nextToken();let n=this.sql.slice(e,s);return this.curTokenIs(re.AS)?(this.nextToken(),n+=` AS ${this.expectIdentifier("alias")}`):this.curToken.type!==re.IDENTIFIER||this.curTokenIs(re.COMMA)||this._isReservedAfterFrom()||(n+=` AS ${this.curToken.value}`,this.nextToken()),n}parseAggregateCall(){const e=this.curToken.value.toUpperCase();this.nextToken(),this.expect(re.LPAREN);let t,s=!1;this.curTokenIs(re.DISTINCT)&&(s=!0,this.nextToken()),this.curTokenIs(re.STAR)?(t="*",this.nextToken()):t=this.parseColumnRef(),this.expect(re.RPAREN);let n="";this.curTokenIs(re.AS)?(this.nextToken(),n=this.expectIdentifier("alias")):this.curToken.type===re.IDENTIFIER&&this._isAggregateAlias()&&(n=this.curToken.value,this.nextToken());const i=s?`DISTINCT ${t}`:t;return n?`${e}(${i}) AS ${n}`:`${e}(${i})`}_isAggregateAlias(){return!this._isReservedAfterFrom()&&!this._isJoinKeyword()}parseIdentifierList(){const e=[];for(e.push(this.parseIdentifierWithDot());this.curTokenIs(re.COMMA);)this.nextToken(),e.push(this.parseIdentifierWithDot());return e}parseValueList(){const e=[];for(e.push(this.parseValue());this.curTokenIs(re.COMMA);)this.nextToken(),e.push(this.parseValue());return e}parseOrderByList(){const e=[];for(e.push(this.parseOrderBy());this.curTokenIs(re.COMMA);)this.nextToken(),e.push(this.parseOrderBy());return e}parseOrderBy(){const e=this.parseIdentifierWithDot();let t,s="asc";return this.curTokenIs(re.ASC)?this.nextToken():this.curTokenIs(re.DESC)&&(s="desc",this.nextToken()),this.curTokenIs(re.IDENTIFIER)&&"NULLS"===this.curToken.value.toUpperCase()&&(this.nextToken(),this.curTokenIs(re.IDENTIFIER)&&"FIRST"===this.curToken.value.toUpperCase()?(t="first",this.nextToken()):this.curTokenIs(re.IDENTIFIER)&&"LAST"===this.curToken.value.toUpperCase()&&(t="last",this.nextToken())),{column:e,direction:s,...t?{nulls:t}:{}}}parseIdentifierWithDot(){const e=this.expectIdentifier("identifier");return this.curTokenIs(re.DOT)?(this.nextToken(),`${e}.${this.expectIdentifier("identifier")}`):e}parseValue(){switch(this.curToken.type){case re.STRING:{const e=this.curToken.value;return this.nextToken(),e}case re.NUMBER:{const e=Number(this.curToken.value);return this.nextToken(),e}case re.TRUE:return this.nextToken(),!0;case re.FALSE:return this.nextToken(),!1;case re.NULL:return this.nextToken(),null;default:throw this.error(`Expected value, got "${this.curToken.value}"`)}}nextToken(){this.curToken=this.peekToken,this.peekToken=this.lexer.nextToken()}curTokenIs(e){return this.curToken.type===e}expect(e){if(!this.curTokenIs(e))throw this.error(`Expected ${e}, got "${this.curToken.value}"`);this.nextToken()}expectIdentifier(e){if(this.curToken.type===re.IDENTIFIER||this._isKeywordAsIdent()){const e=this.curToken.value;return this.nextToken(),e}throw this.error(`Expected ${e}, got "${this.curToken.value}"`)}_isKeywordAsIdent(){return this.curToken.type!==re.EOF&&this.curToken.type!==re.ILLEGAL&&this.curToken.type!==re.STRING&&this.curToken.type!==re.NUMBER&&this.curToken.type!==re.COMMA&&this.curToken.type!==re.LPAREN&&this.curToken.type!==re.RPAREN&&this.curToken.type!==re.SEMICOLON&&this.curToken.type!==re.EQ&&this.curToken.type!==re.NEQ&&this.curToken.type!==re.GT&&this.curToken.type!==re.GTE&&this.curToken.type!==re.LT&&this.curToken.type!==re.LTE&&this.curToken.type!==re.DOT&&this.curToken.type!==re.STAR}expectNumber(e){if(this.curToken.type===re.NUMBER){const e=Number(this.curToken.value);return this.nextToken(),e}throw this.error(`Expected ${e}, got "${this.curToken.value}"`)}error(e){return new n(`Parse error at position ${this.curToken.position}: ${e}`,"PARSE_ERROR")}}function ce(e){return new he(e).parseAllStatements()}function le(e){return new he(e).parseWhere()}function ue(e){const t=e.match(/^\s*CASE\s+([\s\S]*?)\s+END\s*(?:AS\s+(\w+))?\s*$/i);if(!t)return null;const s=t[1],n=t[2]??null,i=[],r=/WHEN\s+([\s\S]*?)\s+THEN\s+([\s\S]*?)(?=\s+WHEN\s+|\s+ELSE\s+|\s*$)/gi;let a;for(;null!==(a=r.exec(s));){let e=null;try{e=le(a[1].trim())}catch{}i.push({cond:e,value:a[2].trim()})}let o=null;const h=s.match(/\sELSE\s+([\s\S]*)$/i);return h&&(o=h[1].trim()),{whens:i,elseValue:o,alias:n}}function fe(e,t){const s=e.trim();if("null"===s)return null;if("true"===s)return!0;if("false"===s)return!1;const n=Number(s);if(""!==s&&!isNaN(n))return n;const i=s.match(/^'(.*)'$/s)||s.match(/^"(.*)"$/s);return i?i[1]:/^[a-zA-Z_][a-zA-Z0-9_.]*$/.test(s)?t[s]??null:s}function de(e,t){for(const{cond:s,value:n}of e.whens)if(s&&a(t,s))return fe(n,t);return null!==e.elseValue?fe(e.elseValue,t):null}class me{constructor(e,t=0){this.engine=e,this.maxRowsPerQuery=t}setMaxRowsPerQuery(e){this.maxRowsPerQuery=e}async execute(e){switch(e.type){case"SELECT":return this.executeSelect(e);case"SELECT_UNION":return this.executeSelectUnion(e);case"EXPLAIN":return this.executeExplain(e);case"INSERT":return this.executeInsert(e);case"UPDATE":return this.executeUpdate(e);case"DELETE":return this.executeDelete(e);case"CREATE_TABLE":return this.executeCreateTable(e);case"DROP_TABLE":return this.executeDropTable(e);case"ALTER_TABLE":return this.executeAlterTable(e);case"TRUNCATE_TABLE":return this.executeTruncateTable(e);case"CREATE_INDEX":return this.executeCreateIndex(e);case"DROP_INDEX":return this.executeDropIndex(e);case"BEGIN":return this.executeBegin();case"COMMIT":return this.executeCommit();case"ROLLBACK":return this.executeRollback();default:throw new n("Unknown statement type","UNKNOWN_STATEMENT")}}async executeSelectUnion(e){const t=await this.executeSelectPart(e.left),s=await this.executeSelectPart(e.right),n=t.length>0?Object.keys(t[0]):[],i=t.map(e=>e);if(e.all){for(const e of s)i.push(this.projectUnionRow(e,n));return i}const r=new Set,a=[];for(const e of i){const t=Object.values(e).map(e=>String(e??"\0")).join("");r.has(t)||(r.add(t),a.push(e))}for(const e of s){const t=this.projectUnionRow(e,n),s=Object.values(t).map(e=>String(e??"\0")).join("");r.has(s)||(r.add(s),a.push(t))}return a}async executeSelectPart(e){return"SELECT_UNION"===e.type?this.executeSelectUnion(e):this.executeSelect(e)}projectUnionRow(e,t){if(0===t.length)return e;const s=Object.values(e),n={};for(let e=0;e0),s=!t&&this._hasAggregateColumn(e.columns);let n;const i=!!(e.joins&&e.joins.length>0),r=this.hasCaseColumn(e.columns)||!!e.where&&this.whereHasCase(e.where),o=this.orderByUsesSelectAlias(e),h=e.columns.some(e=>/\s+AS\s+\w+$/i.test(e));if(e.fromSubquery){const t=await this.executeSelectPart(e.fromSubquery);n=i?await this.executeJoinSelect(e,t.map(t=>this.prefixRow(t,e.alias??""))):t,!i&&e.where&&Object.keys(e.where).length>0&&(e.where=await this.resolveSubqueries(e.where),n=n.filter(t=>a(t,e.where)))}else if(e.from||i)if(i)n=await this.executeJoinSelect(e);else{e.where&&Object.keys(e.where).length>0&&(e.where=this.normalizeWhereColumns(e.where,[e.alias??e.from]));const i=[e.alias??e.from].filter(Boolean);if(e.orderBy&&e.orderBy.length>0&&(e.orderBy=e.orderBy.map(e=>({...e,column:this.stripAlias(e.column,i)}))),e.groupBy&&e.groupBy.length>0&&(e.groupBy=e.groupBy.map(e=>this.stripAlias(e,i))),e.columns=e.columns.map(e=>{if("*"===e||/^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(e)||/^\s*CASE\b/i.test(e)||/^'/.test(e))return e;const t=e.match(/^(.+?)\s+AS\s+(\w+)$/i);if(t){const s=this.stripAlias(t[1].trim(),i);return s===t[1].trim()?e:`${s} AS ${t[2]}`}return this.stripAlias(e,i)}),e.where&&this.hasCorrelatedRefs(e.where)){const i=ie(t||s?{...e,columns:["*"]}:e);i.columns=["*"],o&&(i.orderBy=void 0,i.limit=void 0,i.offset=void 0),n=await this.engine.find(i.table,{...i,where:this.stripCorrelatedExists(e.where)}),n=await this.filterCorrelated(n,e.where)}else{e.where&&Object.keys(e.where).length>0&&(e.where=await this.resolveSubqueries(e.where));const i=ie(t||s?{...e,columns:["*"]}:e);(r||h)&&(i.columns=["*"]),o&&(i.orderBy=void 0,i.limit=void 0,i.offset=void 0),n=await this.engine.find(i.table,i)}}else n=[{}];if(s&&(n=[this.computeSingleAggregate(n,e)]),t&&(n=this.executeGroupBy(n,e)),e.distinct&&(n=this.executeDistinct(n)),e.having&&Object.keys(e.having).length>0){e.having=await this.resolveSubqueries(e.having);const t=e._aggAliasMap;if(t&&t.size>0){const s={};for(const[n,i]of Object.entries(e.having))s[t.get(n)??n]=i;e.having=s}n=n.filter(t=>a(t,e.having))}e.orderBy&&e.orderBy.length>0&&(n=c(n,e.orderBy)),!t&&!s&&e.columns.length>0&&"*"!==e.columns[0]&&(n=n.map(t=>this.projectRow(t,e.columns))),o&&e.orderBy&&e.orderBy.length>0&&(n=c(n,e.orderBy));const l=e.offset??0,u=e.limit??n.length;return n=n.slice(l,l+u),this.maxRowsPerQuery>0&&n.length>this.maxRowsPerQuery&&(n=n.slice(0,this.maxRowsPerQuery)),n}async executeJoinSelect(e,t){const s=e.alias??e.from;let n;if(t)n=t;else{const{pushable:t}=this.extractPushableWhere(e.where??{},s);n=(await this.engine.find(e.from,{table:e.from,where:Object.keys(t).length>0?t:void 0})).map(e=>this.prefixRow(e,s))}let i=n;for(const t of e.joins){const e=t.alias??t.table,n=await this.tryHashJoin(i,t,e,s);if(n){i=n;continue}const r=(await this.engine.find(t.table,{table:t.table})).map(t=>this.prefixRow(t,e));i=this.joinRows(i,r,t)}return e.where&&Object.keys(e.where).length>0&&(this.hasCorrelatedRefs(e.where)?i=await this.filterCorrelated(i,e.where):(e.where=await this.resolveSubqueries(e.where),i=i.filter(t=>a(t,e.where)))),i}prefixRow(e,t){const s={};for(const[n,i]of Object.entries(e))s[`${t}.${n}`]=i;return s}extractPushableWhere(e,t){const s={};if(!t)return{pushable:s};const n=`${t}.`;for(const[t,i]of Object.entries(e))t.startsWith(n)&&("object"==typeof i&&null!==i&&("$col"in i||"$subquery"in i||"$and"in i||"$or"in i||"$not"in i)||(s[t.slice(n.length)]=i));return{pushable:s}}async tryHashJoin(e,t,s,n){if("CROSS"===t.type||"RIGHT"===t.type)return null;const i=[],r=e=>{for(const[t,s]of Object.entries(e)){if("$and"===t){if(!s.every(r))return!1;continue}if("$or"===t||"$not"===t)return!1;let e=null;if("object"==typeof s&&null!==s){const t=s;"$eq"in t&&"object"==typeof t.$eq&&null!==t.$eq&&"$col"in t.$eq?e=String(t.$eq.$col):"$col"in t&&1===Object.keys(t).length&&(e=String(t.$col))}if(!e)return!1;const a=!!n&&t.startsWith(`${n}.`);i.push({leftCol:a?t:e,rightCol:a?e:t})}return!0};if(!r(t.on))return null;if(0===i.length)return null;const a=await this.engine.getTableSchema(t.table);if(!a)return null;const o=i.find(e=>{const t=e.rightCol.split(".").pop(),s=a.columns[t];return s&&(s.primaryKey||s.index||s.unique)});if(!o)return null;const h=o.rightCol.split(".").pop(),c=Array.from(new Set(e.map(e=>e[o.leftCol]).filter(e=>null!=e)));if(0===c.length)return null;const l=await this.engine.find(t.table,{table:t.table,where:{[h]:{$in:c}}}),u=new Map;for(const e of l){const t=i.map(t=>String(e[t.rightCol.split(".").pop()]??"\0")).join("");u.has(t)||u.set(t,[]),u.get(t).push(e)}const f={};for(const e of Object.keys(a.columns))f[e]=null;const d=[];for(const n of e){const e=i.map(e=>String(n[e.leftCol]??"\0")).join(""),r=u.get(e);if(r&&r.length>0)for(const e of r)d.push({...n,...this.prefixRow(e,s)});else"LEFT"===t.type&&d.push({...n,...this.prefixRow(f,s)})}return d}joinRows(e,t,s){if("CROSS"===s.type){const s=[];for(const n of e)for(const e of t)s.push({...n,...e});return s}const n=[];for(const i of e){let e=!1;for(const r of t){const t={...i,...r};a(t,s.on,{$col:!0})&&(n.push(t),e=!0)}if(!e&&"LEFT"===s.type){const e={};for(const s of Object.keys(t[0]??{}))e[s]=null;n.push({...i,...e})}}if("RIGHT"===s.type)for(const i of t)if(!e.some(e=>a({...e,...i},s.on,{$col:!0}))){const t={};for(const s of Object.keys(e[0]??{}))t[s]=null;n.push({...t,...i})}return n}executeGroupBy(e,t){const s=new Map;for(const n of e){const e=t.groupBy.map(e=>String(n[e]??"null")).join("|");s.has(e)||s.set(e,[]),s.get(e).push(n)}const n=[],i=new Map;for(const e of s.values()){const s={};for(const n of t.groupBy)s[n]=e[0][n];for(const n of t.columns){if("*"===n)continue;const r=n.match(/^(COUNT|SUM|AVG|MIN|MAX)\((.+?)\)(?:\s+AS\s+(\w+))?$/i);if(r){const[,t,a,o]=r,h=this.computeAggregate(t.toUpperCase(),e,a.trim()),c=`${t.toUpperCase()}(${a.trim()})`,l=o||n;l!==c&&i.set(c,l),s[l]=h}else if(/^\s*CASE\b/i.test(n)){const t=ue(n);s[t?.alias??n]=t?de(t,e[0]):null}else t.groupBy.includes(n)||(s[n]=e[0][n])}n.push(s)}return t._aggAliasMap=i,n}computeAggregate(e,t,s){const n=/^\s*CASE\b/i.test(s)?ue(s):null,i=!n&&/^\s*DISTINCT\s+/i.test(s),r=i?s.replace(/^\s*DISTINCT\s+/i,"").trim():s,a=t.map(e=>n?de(n,e):e[r]).filter(e=>null!=e);if("COUNT"===e)return"*"===r?t.length:i?new Set(a.map(e=>"object"==typeof e?JSON.stringify(e):String(e))).size:a.length;const o=a.map(Number),h=i?Array.from(new Set(o)):o;switch(e){case"SUM":return h.reduce((e,t)=>e+t,0);case"AVG":return 0===h.length?0:h.reduce((e,t)=>e+t,0)/h.length;case"MIN":return 0===h.length?0:Math.min(...h);case"MAX":return 0===h.length?0:Math.max(...h);default:return 0}}executeDistinct(e){const t=new Set;return e.filter(e=>{const s=Object.values(e).map(e=>String(e??"\0")).join("");return!t.has(s)&&(t.add(s),!0)})}async executeInsert(e){const t=await this.engine.getTableSchema(e.into);if(!t)throw new n(`Table "${e.into}" does not exist`,"TABLE_NOT_FOUND");const s=e.columns??Object.keys(t.columns);if(e.select){const t=await this.executeSelectPart(e.select);let n=[];const i=e.select;if("SELECT"===i.type)if(i.columns&&i.columns.length>0&&"*"!==i.columns[0])n=i.columns.map(e=>e.split(".").pop());else if(i.from){const e=await this.engine.getTableSchema(i.from);n=e?Object.keys(e.columns):[]}0===n.length&&t.length>0&&(n=Object.keys(t[0]));const r=t.map(e=>{const t={};for(let i=0;i{const t={};for(let n=0;n/^\s*CASE\b/i.test(e))}orderByUsesSelectAlias(e){if(!e.orderBy||0===e.orderBy.length)return!1;const t=new Set;for(const s of e.columns){const e=s.match(/\s+AS\s+(\w+)$/i);if(e)t.add(e[1]);else if(/^\s*CASE\b/i.test(s)){const e=ue(s);e?.alias&&t.add(e.alias)}}return 0!==t.size&&e.orderBy.some(e=>t.has(e.column))}whereHasCase(e){for(const[t,s]of Object.entries(e))if("$and"!==t&&"$or"!==t){if("$not"!==t){if(/^\s*CASE\b/i.test(t))return!0}else if(this.whereHasCase(s))return!0}else if(s.some(e=>this.whereHasCase(e)))return!0;return!1}getEngine(){return this.engine}projectRow(e,t){const s=[],n=[],i=[],r=[];for(const e of t){if("*"===e)continue;const t=ue(e);if(t){i.push({alias:t.alias??e,expr:t});continue}const a=e.match(/^(.+?)\s+AS\s+(\w+)$/i);if(a){n.push({alias:a[2],source:a[1].trim()});continue}const o=e.match(/^'(.*)'$/s);if(o){const t=o[1].replace(/\\'/g,"'");r.push({key:e,value:t});continue}s.push(e)}const a=s.length>0?u(e,s):{};for(const{alias:t,source:s}of n)if("*"===s)Object.assign(a,e);else{const n=s.match(/^'(.*)'$/s);a[t]=n?n[1].replace(/\\'/g,"'"):e[s]}for(const{key:e,value:t}of r)a[e]=t;for(const{alias:t,expr:s}of i)a[t]=de(s,e);return a}_hasAggregateColumn(e){return e.some(e=>/^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(e))}computeSingleAggregate(e,t){const s={};for(const n of t.columns){if("*"===n)continue;const t=n.match(/^(COUNT|SUM|AVG|MIN|MAX)\((.+?)\)(?:\s+AS\s+(\w+))?$/i);if(t){const[,i,r,a]=t;s[a||n]=this.computeAggregate(i.toUpperCase(),e,r.trim())}else s[n]=e.length>0?e[0][n]:null}return s}normalizeWhereColumns(e,t){const s={};for(const[n,i]of Object.entries(e))"$and"!==n&&"$or"!==n?"$not"!==n?"$exists"!==n?s[this.stripAlias(n,t)]=this.normalizeFieldValue(i,t):s[n]=this.normalizeExistsValue(i,t):s.$not=this.normalizeWhereColumns(i,t):s[n]=i.map(e=>this.normalizeWhereColumns(e,t));return s}normalizeExistsValue(e,t){if("object"!=typeof e||null===e)return e;const s=e;if(s.$subquery){const e=s.$subquery,n=[e.alias??e.from,...t].filter(Boolean);return{...s,$subquery:{...e,where:this.normalizeWhereColumns(e.where,n)}}}return e}normalizeFieldValue(e,t){if("object"!=typeof e||null===e||Array.isArray(e))return e;const s={};for(const[n,i]of Object.entries(e))"$and"===n||"$or"===n?s[n]=i.map(e=>this.normalizeWhereColumns(e,t)):"$not"===n&&"object"==typeof i&&null!==i?s[n]=this.normalizeFieldValue(i,t):"$col"===n?s[n]=this.stripAlias(String(i),t):"object"==typeof i&&null!==i&&!Array.isArray(i)&&"$col"in i?s[n]={$col:this.stripAlias(String(i.$col),t)}:s[n]=i;return s}stripAlias(e,t){for(const s of t){if(!s)continue;const t=`${s}.`;if(e.startsWith(t))return e.slice(t.length)}return e}hasCorrelatedRefs(e){for(const[t,s]of Object.entries(e))if("$and"!==t&&"$or"!==t){if("$not"!==t){if("$exists"!==t){if(/^\s*CASE\b/i.test(t))return!0;if(this.fieldHasColRef(s))return!0}else if("object"==typeof s&&null!==s&&"$subquery"in s)return!0}else if(this.hasCorrelatedRefs(s))return!0}else if(s.some(e=>this.hasCorrelatedRefs(e)))return!0;return!1}fieldHasColRef(e){if("object"!=typeof e||null===e||Array.isArray(e))return!1;const t=e;if("$col"in t)return!0;if("$and"in t||"$or"in t)return(t.$and??t.$or).some(e=>this.hasCorrelatedRefs(e));if("$not"in t&&"object"==typeof t.$not&&null!==t.$not)return this.fieldHasColRef(t.$not);for(const[,e]of Object.entries(t))if("object"==typeof e&&null!==e&&!Array.isArray(e)){if("$col"in e)return!0;if(this.fieldHasColRef(e))return!0}return!1}stripCorrelatedExists(e){const t={};for(const[s,n]of Object.entries(e))if("$and"!==s&&"$or"!==s){if("$not"===s){const e=this.stripCorrelatedExists(n);Object.keys(e).length>0&&(t.$not=e);continue}"$exists"!==s&&(/^\s*CASE\b/i.test(s)||(t[s]=n))}else t[s]=n.map(e=>this.stripCorrelatedExists(e));return t}async filterCorrelated(e,t){const s=[];for(const n of e){let e=this.resolveCaseKeys(t,n);e=await this.resolveSubqueries(e,n),a(n,e)&&s.push(n)}return s}resolveCaseKeys(e,t){const s={};for(const[n,i]of Object.entries(e))if("$and"!==n&&"$or"!==n)if("$not"!==n){if(/^\s*CASE\b/i.test(n)){const e=ue(n);if(!e)continue;const r=de(e,t);if(!this.caseConditionMatches(r,i))return{$caseResult:!1};s.$caseResult=!0;continue}s[n]=i}else s.$not=this.resolveCaseKeys(i,t);else s[n]=i.map(e=>this.resolveCaseKeys(e,t));return s}caseConditionMatches(e,t){if("object"!=typeof t||null===t||Array.isArray(t))return e===t;const s=t;for(const[t,n]of Object.entries(s))switch(t){case"$eq":if(e!==n)return!1;break;case"$ne":if(e===n)return!1;break;case"$gt":if(!(e>n))return!1;break;case"$gte":if(!(e>=n))return!1;break;case"$lt":if(!(ethis.bindWhereRefs(e,t)):"$not"===n&&"object"==typeof i&&null!==i?s[n]=this.bindColumnRefs(i,t):"object"==typeof i&&null!==i&&!Array.isArray(i)&&"$col"in i?s[n]=t[String(i.$col)]??null:s[n]=i;return s}bindWhereRefs(e,t){const s={};for(const[n,i]of Object.entries(e))"$and"===n||"$or"===n?s[n]=i.map(e=>this.bindWhereRefs(e,t)):"$not"===n?s.$not=this.bindWhereRefs(i,t):s[n]="$exists"===n?i:this.bindColumnRefs(i,t);return s}async resolveSubqueries(e,t){t&&(e=this.bindWhereRefs(e,t));const s={};for(const[n,i]of Object.entries(e)){if("$exists"===n&&"object"==typeof i&&null!==i){const e=i,n=e.$subquery,r=!!e.$negate;let a=n.where;this.hasCorrelatedRefs(a)&&(a=this.bindWhereRefs(a,t??{}));const o=await this.executeSelectPart({...n,where:a});s.$exists=o.length>0!==r;continue}"$and"===n&&Array.isArray(i)?s.$and=await Promise.all(i.map(e=>this.resolveSubqueries(e,t))):"$or"===n&&Array.isArray(i)?s.$or=await Promise.all(i.map(e=>this.resolveSubqueries(e,t))):"$not"!==n||"object"!=typeof i||null===i?s[n]="object"==typeof i&&null!==i?await this.resolveOperatorSubqueries(i):i:s.$not=await this.resolveSubqueries(i,t)}return s}async resolveOperatorSubqueries(e){const t={};for(const[s,n]of Object.entries(e))if("$and"===s&&Array.isArray(n))t.$and=await Promise.all(n.map(e=>this.resolveSubqueries(e)));else if("$or"===s&&Array.isArray(n))t.$or=await Promise.all(n.map(e=>this.resolveSubqueries(e)));else if("$not"!==s)if("object"==typeof n&&null!==n&&"$subquery"in n){const e=n.$subquery,i=await this.executeSelect(e);if("$in"===s||"$nin"===s){const e=Object.keys(i[0]||{})[0],n=i.map(t=>t[e]);t[s]=n}else if(0===i.length)t[s]=null;else{const e=Object.keys(i[0])[0];t[s]=i[0][e]}}else t[s]=n;else t.$not="object"==typeof n&&null!==n?await this.resolveOperatorSubqueries(n):n;return t}}class pe{constructor(e){this.tables=new Map,this.completed=!1,this.engine=e}table(e){let t=this.tables.get(e);return t||(t=new ne(this.engine,e),this.tables.set(e,t)),t}_markCompleted(){this.completed=!0}isCompleted(){return this.completed}}class ye{constructor(e){this.engine=e}async execute(e){const t=new pe(this.engine);await this.engine.beginTransaction();try{const s=await e(t);return await this.engine.commitTransaction(),t._markCompleted(),s}catch(e){if(await this.engine.rollbackTransaction(),e instanceof n)throw e;throw new n(`Transaction failed: ${e.message}`,"TRANSACTION_ERROR",e)}}}class ge{constructor(){this.plugins=[],this.hooks=new Map}register(e,t){const s=e.priority??0,n=this.plugins.findIndex(e=>(e.priority??0)t.name===e);-1!==t&&(this.plugins[t].destroy(),this.plugins.splice(t,1))}getPlugins(){return[...this.plugins]}on(e,t){const s=this.hooks.get(e)??[];s.push(t),this.hooks.set(e,s)}off(e,t){const s=this.hooks.get(e);if(s){const e=s.indexOf(t);-1!==e&&s.splice(e,1)}}async trigger(e,...t){const s=this.hooks.get(e);if(s)for(const e of s)await e(...t)}destroy(){for(const e of this.plugins)try{e.destroy()}catch(e){}this.plugins=[],this.hooks.clear()}}class be{get version(){return this._version}get maxRowsPerQuery(){return this.config.maxRowsPerQuery??0}get debug(){return this.config.debug??!1}constructor(e){this.ready=!1,this.tableCache=new Map,this.channel=null,this.listeners=new Map,this.migrations=new Map,this.config=e,this.name=e.name??s.name,this.mode=e.mode??s.mode,this._version=e.version??s.version,this.pluginManager=new ge,e.multiTabSync&&"undefined"!=typeof BroadcastChannel&&(this.channel=new BroadcastChannel(`metona-sqlark:${this.name}`),this.channel.onmessage=e=>{const t=e.data;t&&"change"===t.type&&(this.emit(t.table??"",{type:"external",table:t.table??""}),this.engine instanceof Z&&this.engine.reloadMemoryFromDisk().catch(()=>{}))})}async init(){if(this.engine=this.createEngine(),await this.engine.open(this.name,this.version),"function"==typeof this.engine.getMeta)try{const e=await this.engine.getMeta("__metona_version");null!=e&&Number(e)>=1&&(this._version=Math.max(this._version,Math.floor(Number(e))))}catch{}if(this.executor=new me(this.engine,this.maxRowsPerQuery),this.transactionManager=new ye(this.engine),this.config.plugins)for(const e of this.config.plugins)this.pluginManager.register(e,this);this.ready=!0,this.config.onReady&&this.config.onReady(this)}isReady(){return this.ready}async defineTable(e,t){this.ensureReady();const s=y(e,t);try{await this.pluginManager.trigger("beforeCreateTable",s),await this.engine.createTable(s),await this.pluginManager.trigger("afterCreateTable",s)}catch(e){throw this._onError(e),e}this.tableCache.delete(e)}table(e){this.ensureReady();let t=this.tableCache.get(e);return t||(t=new ne(this.engine,e,this.executor,e=>this.broadcastChange(e)),this.tableCache.set(e,t)),t}async dropTable(e){this.ensureReady();try{await this.pluginManager.trigger("beforeDropTable",e),await this.engine.dropTable(e),await this.pluginManager.trigger("afterDropTable",e)}catch(e){throw this._onError(e),e}this.tableCache.delete(e)}async getTableNames(){return this.ensureReady(),this.engine.getTableNames()}async query(e){this.ensureReady();const t=this.debug?Date.now():0;let s;await this.pluginManager.trigger("beforeQuery",e);try{const t=ce(e);for(const e of t){s=await this.executor.execute(e);const t=this.writeStatementTable(e);t&&this.broadcastChange(t)}}catch(e){throw this._onError(e),e}if(await this.pluginManager.trigger("afterQuery",e,s),this.debug){const n=Date.now()-t,i=Array.isArray(s)?s.length:0;this._debug(`query [${n}ms] ${i} rows: ${e.slice(0,100)}`)}return s}async queryStream(e,t){this.ensureReady();const s=ce(e)[0];if(!s||"SELECT"!==s.type)throw new n("queryStream only supports SELECT statements","NOT_SUPPORTED");const i=s,r=i.columns.some(e=>/^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(e));if(!(i.joins||i.groupBy||i.having||i.distinct||r||i.orderBy&&i.orderBy.length>0||i.where&&void 0!==i.where.$exists)&&"function"==typeof this.engine.findStream&&"AsyncFunction"!==t.constructor?.name){const e=this.normalizeWhereForStream(i),s=i.columns.filter(e=>!/\s+AS\s+\w+$/i.test(e));return this.engine.findStream(i.from,{table:i.from,columns:s.length>0&&"*"!==s[0]?s:["*"],where:e&&Object.keys(e).length>0?e:void 0,limit:i.limit,offset:i.offset},t)}const a=await this.query(e);if(Array.isArray(a)){for(const e of a)await t(e);return a.length}return 0}normalizeWhereForStream(e){const t=[e.alias??e.from].filter(Boolean),s=e=>{for(const s of t)if(e.startsWith(`${s}.`))return e.slice(s.length+1);return e},n=e=>{const t={};for(const[i,r]of Object.entries(e))"$and"===i||"$or"===i?t[i]=r.map(n):"$not"===i&&"object"==typeof r&&null!==r?t.$not=n(r):t[s(i)]=r;return t};return n(e.where??{})}async transaction(e){this.ensureReady(),await this.pluginManager.trigger("beforeTransaction");try{const t=await this.transactionManager.execute(e);return await this.pluginManager.trigger("afterTransaction"),t}catch(e){throw this._onError(e),e}}async exportTable(e){return this.ensureReady(),this.engine.find(e,{table:e})}async importTable(e,t){this.ensureReady();try{return await this.engine.insert(e,t)}catch(e){throw this._onError(e),e}}async exportAll(){this.ensureReady();const e={},t=await this.engine.getTableNames();for(const s of t)e[s]=await this.engine.find(s,{table:s});return e}subscribe(e,t){const s=`change:${e}`;return this.listeners.has(s)||this.listeners.set(s,new Set),this.listeners.get(s).add(t),()=>this.listeners.get(s)?.delete(t)}emit(e,t){const s=`change:${e}`;this.listeners.get(s)?.forEach(e=>e(t))}broadcastChange(e){if(this.channel)try{this.channel.postMessage({type:"change",table:e})}catch{}}writeStatementTable(e){switch(e.type){case"INSERT":return e.into;case"UPDATE":case"CREATE_INDEX":case"DROP_INDEX":return e.table;case"DELETE":return e.from;case"CREATE_TABLE":case"DROP_TABLE":case"TRUNCATE_TABLE":case"ALTER_TABLE":return e.name;default:return null}}addMigration(e,t){this.migrations.set(e,t)}async migrateTo(e){this.ensureReady();for(const[t,s]of[...this.migrations.entries()].sort((e,t)=>e[0]-t[0]))t<=e&&t>this._version&&(await s(this),this._version=t);if("function"==typeof this.engine.setMeta)try{await this.engine.setMeta("__metona_version",String(this._version))}catch{}}async repair(){if(this.ensureReady(),"function"==typeof this.engine.repair)return await this.engine.repair(),void this.tableCache.clear();this.tableCache.clear()}async clearAll(){if(this.ensureReady(),"function"==typeof this.engine.clearAll)await this.engine.clearAll();else{const e=await this.engine.getTableNames();for(const t of e)await this.engine.dropTable(t)}this.tableCache.clear()}getPluginManager(){return this.pluginManager}on(e,t){this.pluginManager.on(e,t)}async close(){this.channel&&(this.channel.close(),this.channel=null),this.pluginManager.destroy(),await this.engine.close(),this.tableCache.clear(),this.ready=!1}getEngine(){return this.engine}createEngine(){const e=this.mode,t=this.config.diskEngine??"indexeddb";switch(e){case"memory":return new f;case"disk":return"opfs"===t?new p:new d;case"aria":return new Y({storageBackend:"opfs"===t?"opfs":"indexeddb"});case"hybrid":return new Z(t);default:throw new n(`Unknown storage mode: ${e}`,"CONFIG_ERROR")}}ensureReady(){if(!this.ready)throw new n("Database not initialized. Call await db.init() first.","DB_NOT_READY")}_onError(e){if(this.config.onError)try{this.config.onError(e)}catch{}}_debug(e,...t){this.debug}}const we=new class{constructor(){this.connections=new Map,this.refCount=new Map}async connect(e){const t=e.name,s=this.connections.get(t);if(s&&s.isReady()){const e=(this.refCount.get(t)??0)+1;return this.refCount.set(t,e),s}const n=new be(e);return await n.init(),this.connections.set(t,n),this.refCount.set(t,1),n.disconnect=async()=>{await this.release(t)},n}async release(e){const t=(this.refCount.get(e)??1)-1;if(t<=0){const t=this.connections.get(e);t&&(await t.close(),this.connections.delete(e)),this.refCount.delete(e)}else this.refCount.set(e,t)}async forceClose(e){const t=this.connections.get(e);t&&(await t.close(),this.connections.delete(e)),this.refCount.delete(e)}async closeAll(){for(const[,e]of this.connections)try{await e.close()}catch{}this.connections.clear(),this.refCount.clear()}getActiveConnections(){return Array.from(this.connections.keys())}getRefCount(e){return this.refCount.get(e)??0}},Te=be;async function Ee(e){const t=new be(e);return await t.init(),t}Te.connect=e=>we.connect(e),Te.disconnect=e=>we.release(e),Te.disconnectAll=()=>we.closeAll(),Te.getActiveConnections=()=>we.getActiveConnections();const xe={VERSION:i,version:i,create:Ee,MetonaSqlark:be,MeSqlark:be};"undefined"!=typeof window&&(window.MetonaSqlark=xe,window.MeSqlark=xe);const Se=be;e.AriaEngine=Y,e.HybridEngine=Z,e.IndexedDBEngine=d,e.MeSqlark=Se,e.MemoryEngine=f,e.MetonaSqlark=be,e.OPFSBackend=K,e.OPFSEngine=p,e.Table=ne,e.VERSION=i,e.api=xe,e.create=Ee,e.default=xe,e.parse=function(e){return new he(e).parseStatement()},e.parseAll=ce,e.tokenize=function(e){const t=new oe(e),s=[];let n=t.nextToken();for(;n.type!==re.EOF;)s.push(n),n=t.nextToken();return s.push(n),s},Object.defineProperty(e,"__esModule",{value:!0})}); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).MetonaSqlark={})}(this,function(e){"use strict";const t=["string","number","boolean","date","json"],s=Object.freeze({name:"metona-sqlark",mode:"hybrid",diskEngine:"indexeddb",version:1,maxRowsPerQuery:0,debug:!1,multiTabSync:!1,aria:void 0});class n extends Error{constructor(e,t,s){super(e),this.code=t,this.details=s,this.name="DatabaseError"}}const i="0.5.1",r=new Map;function a(e,t,s={}){for(const[n,i]of Object.entries(t))if("$caseResult"!==n){if("$exists"!==n){if("$and"===n){if(!i.every(t=>a(e,t,s)))return!1;continue}if("$or"===n){if(!i.some(t=>a(e,t,s)))return!1;continue}if("$not"!==n){if(!o(e[n],i,e,s))return!1}else if(a(e,i,s))return!1}else if(!0!==i)return!1}else if(!0!==i)return!1;return!0}function o(e,t,s,n){if("object"==typeof t&&null!==t&&"$and"in t)return t.$and.every(e=>a(s,e,n));if("object"==typeof t&&null!==t&&"$or"in t)return t.$or.some(e=>a(s,e,n));if("object"==typeof t&&null!==t&&"$not"in t)return!o(e,t.$not,s,n);if("object"!=typeof t||null===t||Array.isArray(t))return e===t;const i=t;if(n.$col&&"$col"in i&&1===Object.keys(i).length)return e===s[i.$col];for(const[t,r]of Object.entries(i)){let i=r;if(n.$col&&"object"==typeof r&&null!==r&&"$col"in r&&(i=s[r.$col]),!h(e,t,i))return!1}return!0}function h(e,t,s){switch(t){case"$eq":return e===s;case"$ne":return e!==s;case"$gt":return e>s;case"$gte":return e>=s;case"$lt":return e{for(const{column:n,direction:i,nulls:r}of t){const t=null===e[n]||void 0===e[n],a=null===s[n]||void 0===s[n];if(r&&(t||a)){if(t&&a)continue;return"first"===r?t?-1:1:t?1:-1}const o=l(e[n],s[n]);if(0!==o)return"desc"===i?-o:o}return 0})}function l(e,t){return e===t?0:null==e?1:null==t?-1:"string"==typeof e&&"string"==typeof t?e.localeCompare(t):"number"==typeof e&&"number"==typeof t?e-t:String(e).localeCompare(String(t))}function u(e,t){const s={};for(const n of t)if(n in e)s[n]=e[n];else for(const t of Object.keys(e))if(t.endsWith(`.${n}`)||t===n){s[n]=e[t];break}return s}class d{constructor(){this.name="memory",this.tables=new Map,this.schemas=new Map,this.indexes=new Map,this.opened=!1,this.metaStore=new Map,this.snapshot=null}async open(e,t){this.opened||(this.opened=!0)}async close(){this.tables.clear(),this.schemas.clear(),this.indexes.clear(),this.metaStore.clear(),this.opened=!1}isOpen(){return this.opened}async repair(){}async clearAll(){const e=Array.from(this.schemas.keys());for(const t of e)await this.dropTable(t);this.metaStore.clear()}async getMeta(e){return this.metaStore.get(e)??null}async setMeta(e,t){this.metaStore.set(e,t)}async createTable(e){if(this.schemas.has(e.name))throw new n(`Table "${e.name}" already exists`,"TABLE_EXISTS");const t={name:e.name,columns:{}};for(const[s,n]of Object.entries(e.columns))t.columns[s]={...n};this.schemas.set(e.name,t),this.tables.set(e.name,new Map);const s=new Map;for(const[e,n]of Object.entries(t.columns))(n.index||n.unique)&&s.set(e,new Map);this.indexes.set(e.name,s)}async dropTable(e){this.ensureTable(e),this.schemas.delete(e),this.tables.delete(e),this.indexes.delete(e)}async hasTable(e){return this.schemas.has(e)}async getTableNames(){return Array.from(this.schemas.keys())}async getTableSchema(e){return this.schemas.get(e)??null}async alterTable(e,t,s){this.ensureTable(e);const i=this.schemas.get(e);if("ADD"===t){if(i.columns[s.name])throw new n(`Column "${s.name}" already exists in table "${e}"`,"COLUMN_EXISTS");return void(i.columns[s.name]=s)}if(!i.columns[s.name])throw new n(`Column "${s.name}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");delete i.columns[s.name];const r=this.tables.get(e);for(const e of r.values())s.name in e&&delete e[s.name]}async insert(e,t){this.ensureTable(e);const s=this.schemas.get(e),i=this.tables.get(e),r=this.getPrimaryKey(s),a=[];for(const o of t){const t=this.validateRow(s,o),h=String(t[r]);if(i.has(h))throw new n(`Duplicate primary key "${h}" in table "${e}"`,"DUPLICATE_KEY");this.checkUniqueness(s,t),i.set(h,t),this.updateIndexes(e,t,h),a.push(h)}return a}async find(e,t){this.ensureTable(e);const s=this.tables.get(e);let n=this.tryIndexLookup(e,s,t);t.where&&Object.keys(t.where).length>0&&(n=n.filter(e=>a(e,t.where))),t.orderBy&&t.orderBy.length>0&&(n=c(n,t.orderBy));const i=t.offset??0,r=t.limit??n.length;return n=n.slice(i,i+r),t.columns&&t.columns.length>0&&"*"!==t.columns[0]&&(n=n.map(e=>u(e,t.columns))),n}async findStream(e,t,s){this.ensureTable(e);const n=this.tables.get(e),i=!!(t.where&&Object.keys(t.where).length>0),r=t.limit??1/0,o=t.offset??0,h=t.columns&&t.columns.length>0&&"*"!==t.columns[0]?e=>u(e,t.columns):null;let c=0,l=0;for(const e of n.values())if(!i||a(e,t.where))if(l=r)break;return c}async update(e,t,s){this.ensureTable(e);const n=this.schemas.get(e),i=this.tables.get(e),r=this.getPrimaryKey(n);let o=0;for(const[h,c]of[...i])if(!t.where||0===Object.keys(t.where).length||a(c,t.where)){this.removeIndexEntries(e,c,h);const t={...c,...s};this.validateRow(n,t),this.checkUniqueness(n,t);const a=String(t[r]);a!==h&&await this.applyUpdateCascade(e,h,a),i.delete(h),i.set(a,t),this.updateIndexes(e,t,a),o++}return o}async applyUpdateCascade(e,t,s){for(const[s,i]of this.schemas)if(s!==e)for(const[r,a]of Object.entries(i.columns)){if(!a.references||!a.onUpdate)continue;const[i]=a.references.split(".");if(i!==e)continue;const o=this.tables.get(s);if(o)for(const[,i]of o)if(String(i[r])===t&&"RESTRICT"===a.onUpdate)throw new n(`Cannot update "${e}" key "${t}": foreign key "${r}" in "${s}" has dependent rows`,"FOREIGN_KEY_VIOLATION")}for(const[n,i]of this.schemas)if(n!==e)for(const[r,a]of Object.entries(i.columns)){if(!a.references||!a.onUpdate)continue;const[i]=a.references.split(".");if(i!==e)continue;const o=this.tables.get(n);if(o&&("CASCADE"===a.onUpdate||"SET NULL"===a.onUpdate))for(const[e,i]of o)String(i[r])===t&&(this.removeIndexEntries(n,i,e),i[r]="CASCADE"===a.onUpdate?s:null,this.updateIndexes(n,i,e))}}async delete(e,t){this.ensureTable(e);const s=this.tables.get(e),n=[];for(const[i,r]of s)t.where&&0!==Object.keys(t.where).length&&!a(r,t.where)||(this.removeIndexEntries(e,r,i),n.push(i));let i=0;for(const t of n){const n=s.get(t);n&&(i+=await this.cascadeDelete(e,t,n))}for(const e of n)s.delete(e);return n.length+i}async count(e,t){this.ensureTable(e);const s=this.tables.get(e);if(!t?.where||0===Object.keys(t.where).length)return s.size;let n=0;for(const e of s.values())a(e,t.where)&&n++;return n}async clear(e){this.ensureTable(e),this.tables.get(e).clear();const t=this.indexes.get(e);if(t)for(const e of t.values())e.clear()}async createIndex(e,t,s){this.ensureTable(e);const i=this.schemas.get(e).columns[t];if(!i)throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");if(i.index||i.unique)return;i.index=!0,s&&(i.unique=!0);const r=this.indexes.get(e);r.has(t)||r.set(t,new Map);const a=r.get(t),o=this.tables.get(e);for(const[e,s]of o){const n=s[t];null!=n&&(a.has(n)||a.set(n,new Set),a.get(n).add(e))}}async dropIndex(e,t,s){this.ensureTable(e);const i=this.schemas.get(e).columns[t];if(!i)throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");if(!i.index&&!i.unique)throw new n(`Index on column "${t}" does not exist in table "${e}"`,"INDEX_NOT_FOUND");i.index=!1,i.unique=!1;const r=this.indexes.get(e);r&&r.delete(t)}async beginTransaction(){if(this.snapshot)throw new n("Transaction already in progress","TX_ACTIVE");this.snapshot={tables:this.deepCloneMapMap(this.tables),schemas:new Map(this.schemas),indexes:this.deepCloneIndexes(this.indexes)}}async commitTransaction(){if(!this.snapshot)throw new n("No active transaction","TX_NONE");this.snapshot=null}async rollbackTransaction(){if(!this.snapshot)throw new n("No active transaction","TX_NONE");this.tables=this.snapshot.tables,this.schemas=this.snapshot.schemas,this.indexes=this.snapshot.indexes,this.snapshot=null}deepCloneMapMap(e){const t=new Map;for(const[s,n]of e){const e=new Map;for(const[t,s]of n)e.set(t,{...s});t.set(s,e)}return t}deepCloneIndexes(e){const t=new Map;for(const[s,n]of e){const e=new Map;for(const[t,s]of n){const n=new Map;for(const[e,t]of s)n.set(e,new Set(t));e.set(t,n)}t.set(s,e)}return t}ensureTable(e){if(!this.tables.has(e))throw new n(`Table "${e}" does not exist`,"TABLE_NOT_FOUND")}getPrimaryKey(e){for(const[t,s]of Object.entries(e.columns))if(s.primaryKey)return t;return Object.keys(e.columns)[0]}validateRow(e,t){const s={};for(const[i,r]of Object.entries(e.columns)){let a=t[i];if(void 0===a&&void 0!==r.default&&(a=r.default),r.required&&null==a)throw new n(`Column "${i}" is required in table "${e.name}"`,"VALIDATION_ERROR");null!=a&&this.checkType(i,r.type,a),void 0!==a&&(s[i]=a)}return s}checkType(e,t,s){const i=typeof s;switch(t){case"string":if("string"!==i)throw new n(`Column "${e}" expects string, got ${i}`,"TYPE_ERROR");break;case"number":if("number"!==i)throw new n(`Column "${e}" expects number, got ${i}`,"TYPE_ERROR");break;case"boolean":if("boolean"!==i)throw new n(`Column "${e}" expects boolean, got ${i}`,"TYPE_ERROR");break;case"date":if("string"!==i||isNaN(Date.parse(s)))throw new n(`Column "${e}" expects valid date`,"TYPE_ERROR");break;case"json":if("object"!==i)throw new n(`Column "${e}" expects object/array, got ${i}`,"TYPE_ERROR")}}checkUniqueness(e,t){const s=this.indexes.get(e.name);if(s)for(const[i,r]of Object.entries(e.columns)){if(!r.unique||void 0===t[i]||null===t[i])continue;const a=s.get(i);if(a&&a.has(t[i]))throw new n(`Unique constraint violation on column "${i}" in table "${e.name}"`,"UNIQUE_VIOLATION")}}tryIndexLookup(e,t,s){const n=this.indexes.get(e);if(!n||!s.where)return Array.from(t.values());for(const[e,i]of Object.entries(s.where)){let s;if("object"!=typeof i||null===i)s=i;else{if(!("$eq"in i)||1!==Object.keys(i).length)continue;s=i.$eq}const r=n.get(e);if(r){const e=r.get(s);if(e){const s=[];for(const n of e){const e=t.get(n);e&&s.push(e)}return s}return[]}}return Array.from(t.values())}updateIndexes(e,t,s){const n=this.indexes.get(e);if(n)for(const[e,i]of n){const n=t[e];null!=n&&(i.has(n)||i.set(n,new Set),i.get(n).add(s))}}removeIndexEntries(e,t,s){const n=this.indexes.get(e);if(n)for(const[e,i]of n){const n=t[e];if(null!=n){const e=i.get(n);e&&(e.delete(s),0===e.size&&i.delete(n))}}}async cascadeDelete(e,t,s){let i=0;for(const[s,r]of this.schemas)if(s!==e)for(const[a,o]of Object.entries(r.columns)){if(!o.references||!o.onDelete)continue;const[r]=o.references.split(".");if(r!==e)continue;const h=this.tables.get(s);if(!h)continue;const c=[];for(const[e,s]of h)String(s[a])===t&&c.push(e);if("RESTRICT"===o.onDelete&&c.length>0)throw new n(`Cannot delete from "${e}": foreign key "${a}" in "${s}" has dependent rows`,"FOREIGN_KEY_VIOLATION");if("CASCADE"===o.onDelete)for(const e of c){const t=h.get(e);t&&(this.removeIndexEntries(s,t,e),i+=await this.cascadeDelete(s,e,t)),h.delete(e),i++}else if("SET NULL"===o.onDelete)for(const e of c){const t=h.get(e);if(t){if(void 0!==t[a]&&null!==t[a]){const n=this.indexes.get(s)?.get(a);n&&n.get(t[a])?.delete(e)}t[a]=null}}}return i}}class f{constructor(){this.name="indexeddb",this.db=null,this.dbName="",this.version=1,this.memoryCache=new d,this.txActive=!1}async open(e,t){const s=t>=1?Math.floor(t):1;this.dbName=e,this.version=s,await this.memoryCache.open(e,s),this.db=await this.openDatabaseWithRetry(e,s),this.setupVersionChangeHandler(),await this.ensureSchemaStore();try{await this.rebuildSchemaFromIDB()}catch(t){throw new n(`Failed to restore schema for "${e}"`,"IDB_SCHEMA_RESTORE_ERROR",t)}}setupVersionChangeHandler(){this.db&&(this.db.onversionchange=()=>{this.db&&(this.db.close(),this.db=null)})}async openDatabaseWithRetry(e,t){let s=t;for(let t=0;t<10;t++)try{return await this.openRequest(e,s,200+150*t)}catch(i){const r=i;if(r&&"VersionError"===r.name){const t=await this.resolveCurrentVersion(e);if(t>=1&&t!==s){s=t,this.version=t;continue}throw new n(`Failed to open IndexedDB "${e}": version mismatch`,"IDB_VERSION_ERROR",i)}if(r&&"BlockedError"===r.name){await new Promise(e=>setTimeout(e,50*(t+1)));continue}throw new n(`Failed to open IndexedDB "${e}"`,"IDB_OPEN_ERROR",i)}throw new n(`IndexedDB "${e}" is blocked`,"IDB_BLOCKED")}openRequest(e,t,s){return new Promise((n,i)=>{const r=indexedDB.open(e,t);let a=!1;const o=setTimeout(()=>{if(a)return;a=!0;const e="undefined"!=typeof DOMException?new DOMException("IndexedDB open is blocked","BlockedError"):Object.assign(new Error("IndexedDB open is blocked"),{name:"BlockedError"});i(e)},s);r.onsuccess=()=>{a?r.result.close():(a=!0,clearTimeout(o),n(r.result))},r.onerror=()=>{a||(a=!0,clearTimeout(o),i(r.error??new Error("Unknown IndexedDB open error")))},r.onblocked=()=>{}})}resolveCurrentVersion(e){return new Promise((t,s)=>{const n=indexedDB.open(e);n.onsuccess=()=>{const e=n.result.version;n.result.close(),t(e)},n.onerror=()=>{s(n.error??new Error("Failed to resolve IndexedDB version"))}})}async ensureSchemaStore(){if(!this.db)return;if(this.db.objectStoreNames.contains("__metona_schema"))return;const e=this.db.version+1;this.db.close(),this.db=await new Promise((t,s)=>{const i=indexedDB.open(this.dbName,e);i.onupgradeneeded=()=>{const e=i.result;e.objectStoreNames.contains("__metona_schema")||e.createObjectStore("__metona_schema",{keyPath:"name"})},i.onsuccess=()=>{this.db=i.result,this.setupVersionChangeHandler(),t(i.result)},i.onerror=()=>s(new n("Failed to create schema store","IDB_UPGRADE_ERROR",i.error))})}async rebuildSchemaFromIDB(){const e=this.ensureDB();if(e.objectStoreNames.contains("__metona_schema")){const t=await new Promise((t,s)=>{const n=e.transaction("__metona_schema","readonly").objectStore("__metona_schema").getAll();n.onsuccess=()=>t(n.result??[]),n.onerror=()=>s(n.error)});for(const e of t)try{const t=JSON.parse(e.schema);await this.memoryCache.getTableSchema(t.name)||await this.memoryCache.createTable(t)}catch{}}const t=Array.from(e.objectStoreNames).filter(e=>"__metona_schema"!==e);for(const s of t){if(await this.memoryCache.getTableSchema(s))continue;const t={},n=e.transaction(s,"readonly").objectStore(s);t[n.keyPath]={type:"string",primaryKey:!0};for(const e of Array.from(n.indexNames))if(e.startsWith("idx_")){const s=e.slice(4);t[s]||(t[s]={type:"string",index:!0})}const i=await new Promise((e,t)=>{const s=n.getAll();s.onsuccess=()=>e(s.result??[]),s.onerror=()=>t(s.error)});if(i.length>0)for(const[e,s]of Object.entries(i[0]))t[e]||(t[e]={type:p(s)});await this.memoryCache.createTable({name:s,columns:t})}}async close(){if(this.txActive)try{await this.rollbackTransaction()}catch{}this.db&&(this.db.onversionchange=null,this.db.close(),this.db=null),await this.memoryCache.close()}async repair(){if(!this.db)throw new n("Database not opened","DB_NOT_OPEN");await this.memoryCache.close(),await this.memoryCache.open(this.dbName,this.version),await this.rebuildSchemaFromIDB()}async clearAll(){const e=this.ensureDB(),t=await this.memoryCache.getTableNames();for(const e of t)await this.memoryCache.dropTable(e);const s=e.version+1;e.close(),await new Promise((e,t)=>{const i=indexedDB.open(this.dbName,s);i.onupgradeneeded=e=>{const t=e.target.result,s=Array.from(t.objectStoreNames).filter(e=>"__metona_schema"!==e);for(const e of s)t.deleteObjectStore(e);t.objectStoreNames.contains("__metona_schema")?e.target.transaction.objectStore("__metona_schema").clear():t.createObjectStore("__metona_schema",{keyPath:"name"})},i.onsuccess=()=>{this.db=i.result,this.setupVersionChangeHandler(),e()},i.onerror=()=>t(new n("Failed to clear database","IDB_CLEAR_ERROR",i.error)),i.onblocked=()=>t(new n(`IndexedDB "${this.dbName}" is blocked`,"IDB_BLOCKED"))})}async getMeta(e){const t=this.ensureDB();return t.objectStoreNames.contains("__metona_schema")?new Promise((s,n)=>{const i=t.transaction("__metona_schema","readonly").objectStore("__metona_schema").get(`__meta:${e}`);i.onsuccess=()=>{const e=i.result;s(e&&"string"==typeof e.schema?e.schema:null)},i.onerror=()=>n(i.error)}):null}async setMeta(e,t){const s=this.ensureDB();s.objectStoreNames.contains("__metona_schema")&&await new Promise((i,r)=>{const a=s.transaction("__metona_schema","readwrite");a.objectStore("__metona_schema").put({name:`__meta:${e}`,schema:t}),a.oncomplete=()=>i(),a.onerror=()=>r(new n(`Failed to persist meta "${e}"`,"IDB_META_ERROR",a.error))})}isOpen(){return null!==this.db}async createTable(e){await this.memoryCache.createTable(e),this.txActive||await this.idbCreateTable(e)}async dropTable(e){await this.memoryCache.dropTable(e),this.txActive||await this.idbDropTable(e)}async hasTable(e){return this.ensureDB().objectStoreNames.contains(e)}async getTableNames(){return Array.from(this.ensureDB().objectStoreNames)}async getTableSchema(e){return this.memoryCache.getTableSchema(e)}async alterTable(e,t,s){if(await this.memoryCache.alterTable(e,t,s),this.txActive)return;const i=await this.memoryCache.getTableSchema(e);if(i&&await this.persistSchema(i),"DROP"===t){const t=this.ensureDB(),i=(await this.idbFind(e,{table:e})).map(e=>{if(s.name in e){const t={...e};return delete t[s.name],t}return e});i.length>0&&await new Promise((s,r)=>{const a=t.transaction(e,"readwrite"),o=a.objectStore(e);for(const e of i)o.put(e);a.oncomplete=()=>s(),a.onerror=()=>r(new n(`Failed to rewrite "${e}" after DROP COLUMN`,"IDB_TX_ERROR",a.error))})}}async insert(e,t){const s=await this.memoryCache.insert(e,t);return this.txActive||await this.idbInsert(e,t),s}async find(e,t){return this.txActive?this.memoryCache.find(e,t):this.idbFind(e,t)}async findStream(e,t,s){if(this.txActive)return this.memoryCache.findStream(e,t,s);const n=await this.idbFind(e,{...t,orderBy:void 0,limit:void 0,offset:void 0});let i=0;for(const e of n)s(e),i++;return i}async update(e,t,s){const n=await this.memoryCache.update(e,t,s);return this.txActive||await this.idbUpdate(e,t,s),n}async delete(e,t){const s=await this.memoryCache.delete(e,t);return this.txActive||await this.idbDelete(e,t),s}async count(e,t){return this.txActive?this.memoryCache.count(e,t):(await this.idbFind(e,{table:e,where:t?.where??{}})).length}async clear(e){await this.memoryCache.clear(e),this.txActive||await this.idbClear(e)}async createIndex(e,t,s){if(await this.memoryCache.createIndex(e,t,s),this.txActive)return;const i=this.ensureDB();return new Promise((r,a)=>{const o=i.version+1;i.close();const h=indexedDB.open(this.dbName,o);h.onupgradeneeded=n=>{const i=n.target.result.transaction(e,"readwrite").objectStore(e);i.indexNames.contains(`idx_${t}`)||i.createIndex(`idx_${t}`,t,{unique:s??!1})},h.onsuccess=()=>{this.db=h.result,r()},h.onerror=()=>a(new n(`Failed to create index "${e}.${t}"`,"IDB_UPGRADE_ERROR",h.error))})}async dropIndex(e,t,s){if(await this.memoryCache.dropIndex(e,t),this.txActive)return;const i=this.ensureDB();return new Promise((s,r)=>{const a=i.version+1;i.close();const o=indexedDB.open(this.dbName,a);o.onupgradeneeded=s=>{const n=s.target.result.transaction(e,"readwrite").objectStore(e);n.indexNames.contains(`idx_${t}`)&&n.deleteIndex(`idx_${t}`)},o.onsuccess=()=>{this.db=o.result,s()},o.onerror=()=>r(new n(`Failed to drop index "${e}.${t}"`,"IDB_UPGRADE_ERROR",o.error))})}async beginTransaction(){if(this.txActive)throw new n("Transaction already in progress","TX_ACTIVE");this.txActive=!0,await this.memoryCache.beginTransaction()}async commitTransaction(){if(!this.txActive)throw new n("No active transaction","TX_NONE");await this.flushToIDB(),await this.memoryCache.commitTransaction(),this.txActive=!1}async rollbackTransaction(){if(!this.txActive)throw new n("No active transaction","TX_NONE");await this.memoryCache.rollbackTransaction(),this.txActive=!1}async idbCreateTable(e){const t=this.ensureDB();return new Promise((s,i)=>{const r=t.version+1;t.close();const a=indexedDB.open(this.dbName,r);a.onupgradeneeded=t=>{const s=t.target.result,n=Object.entries(e.columns).find(([,e])=>e.primaryKey)?.[0]??Object.keys(e.columns)[0],i=s.createObjectStore(e.name,{keyPath:n});for(const[t,s]of Object.entries(e.columns))s.index&&t!==n&&i.createIndex(`idx_${t}`,t,{unique:s.unique??!1});s.objectStoreNames.contains("__metona_schema")||s.createObjectStore("__metona_schema",{keyPath:"name"})},a.onsuccess=()=>{this.db=a.result;const t=this.db.transaction("__metona_schema","readwrite");t.objectStore("__metona_schema").put({name:e.name,schema:JSON.stringify(e)}),t.oncomplete=()=>s(),t.onerror=()=>i(new n(`Failed to persist schema for "${e.name}"`,"IDB_SCHEMA_ERROR",t.error))},a.onerror=()=>i(new n(`Failed to create table "${e.name}"`,"IDB_UPGRADE_ERROR",a.error))})}async idbDropTable(e){const t=this.ensureDB();return new Promise((s,i)=>{const r=t.version+1;t.close();const a=indexedDB.open(this.dbName,r);a.onupgradeneeded=t=>{const s=t.target.result;s.objectStoreNames.contains(e)&&s.deleteObjectStore(e)},a.onsuccess=()=>{if(this.db=a.result,this.db.objectStoreNames.contains("__metona_schema")){const t=this.db.transaction("__metona_schema","readwrite");t.objectStore("__metona_schema").delete(e),t.onerror=()=>{}}s()},a.onerror=()=>i(new n(`Failed to drop table "${e}"`,"IDB_UPGRADE_ERROR",a.error))})}async idbInsert(e,t){const s=this.ensureDB();return new Promise((i,r)=>{const a=s.transaction(e,"readwrite"),o=a.objectStore(e);for(const e of t)o.add(e);a.oncomplete=()=>i(),a.onerror=()=>r(new n(`Insert failed for "${e}"`,"IDB_TX_ERROR",a.error))})}async idbFind(e,t){const s=this.ensureDB();if(t.where){const n=await this.tryIDBIndexLookup(s,e,t);if(null!==n)return n}return new Promise((i,r)=>{const o=s.transaction(e,"readonly").objectStore(e).getAll();o.onsuccess=()=>{let e=o.result??[];t.where&&Object.keys(t.where).length>0&&(e=e.filter(e=>a(e,t.where))),t.orderBy&&t.orderBy.length>0&&(e=c(e,t.orderBy));const s=t.offset??0,n=t.limit??e.length;e=e.slice(s,s+n),t.columns&&t.columns.length>0&&"*"!==t.columns[0]&&(e=e.map(e=>u(e,t.columns))),i(e)},o.onerror=()=>r(new n(`Find failed for "${e}"`,"IDB_READ_ERROR",o.error))})}async tryIDBIndexLookup(e,t,s){if(!s.where)return null;for(const[i,r]of Object.entries(s.where)){if("$and"===i||"$or"===i||"$not"===i)continue;let o;if("object"!=typeof r||null===r)o=r;else{if(!("$eq"in r))continue;o=r.$eq}const h=`idx_${i}`;try{return await new Promise((r,l)=>{const d=e.transaction(t,"readonly").objectStore(t);if(!d.indexNames.contains(h))return void r(null);const f=d.index(h).getAll(o);f.onsuccess=()=>{let e=f.result??[];Object.keys(s.where).filter(e=>e!==i&&"$and"!==e&&"$or"!==e&&"$not"!==e).length>0&&(e=e.filter(e=>a(e,s.where))),s.orderBy&&s.orderBy.length>0&&(e=c(e,s.orderBy));const t=s.offset??0,n=s.limit??e.length;e=e.slice(t,t+n),s.columns&&s.columns.length>0&&"*"!==s.columns[0]&&(e=e.map(e=>u(e,s.columns))),r(e)},f.onerror=()=>l(new n(`Index lookup failed for "${t}.${i}"`,"IDB_READ_ERROR",f.error))})}catch{return null}}return null}async idbUpdate(e,t,s){const i=this.ensureDB();return new Promise((r,o)=>{const h=i.transaction(e,"readwrite"),c=h.objectStore(e),l=c.getAll();l.onsuccess=()=>{for(const e of l.result??[])t.where&&0!==Object.keys(t.where).length&&!a(e,t.where)||(Object.assign(e,s),c.put(e))},h.oncomplete=()=>r(),h.onerror=()=>o(new n(`Update failed for "${e}"`,"IDB_TX_ERROR",h.error))})}async idbDelete(e,t){const s=this.ensureDB(),i=await this.memoryCache.getTableSchema(e);if(!i)throw new n(`Table "${e}" not found`,"TABLE_NOT_FOUND");const r=Object.entries(i.columns).find(([,e])=>e.primaryKey)?.[0]??Object.keys(i.columns)[0];return new Promise((i,o)=>{const h=s.transaction(e,"readwrite"),c=h.objectStore(e),l=c.getAll();l.onsuccess=()=>{for(const e of l.result??[])t.where&&0!==Object.keys(t.where).length&&!a(e,t.where)||c.delete(e[r])},h.oncomplete=()=>i(),h.onerror=()=>o(new n(`Delete failed for "${e}"`,"IDB_TX_ERROR",h.error))})}async idbClear(e){const t=this.ensureDB();return new Promise((s,i)=>{const r=t.transaction(e,"readwrite");r.objectStore(e).clear(),r.oncomplete=()=>s(),r.onerror=()=>i(new n(`Clear failed for "${e}"`,"IDB_TX_ERROR",r.error))})}async persistSchema(e){const t=this.ensureDB();t.objectStoreNames.contains("__metona_schema")&&await new Promise((s,i)=>{const r=t.transaction("__metona_schema","readwrite");r.objectStore("__metona_schema").put({name:e.name,schema:JSON.stringify(e)}),r.oncomplete=()=>s(),r.onerror=()=>i(new n(`Failed to persist schema for "${e.name}"`,"IDB_SCHEMA_ERROR",r.error))})}async flushToIDB(){const e=await this.memoryCache.getTableNames();let t=this.ensureDB();const s=Array.from(t.objectStoreNames),i=e.filter(e=>!s.includes(e)),r=s.filter(t=>"__metona_schema"!==t&&!e.includes(t));if(i.length>0||r.length>0){const e=new Map;for(const t of i){const s=await this.memoryCache.getTableSchema(t);s&&e.set(t,s)}const s=t.version+1;t.close(),await new Promise((t,a)=>{const o=indexedDB.open(this.dbName,s);o.onupgradeneeded=t=>{const s=t.target.result;for(const e of r)s.deleteObjectStore(e);for(const t of i){const n=e.get(t),i=n?Object.entries(n.columns).find(([,e])=>e.primaryKey)?.[0]??Object.keys(n.columns)[0]:void 0;s.createObjectStore(t,{keyPath:i})}if(s.objectStoreNames.contains("__metona_schema")&&r.length>0){const e=t.target.transaction.objectStore("__metona_schema");for(const t of r)e.delete(t)}},o.onsuccess=()=>{this.db=o.result,this.setupVersionChangeHandler(),t()},o.onerror=()=>a(new n("Failed to sync stores after transaction","IDB_UPGRADE_ERROR",o.error)),o.onblocked=()=>a(new n(`IndexedDB "${this.dbName}" is blocked`,"IDB_BLOCKED"))});for(const e of i){const t=await this.memoryCache.getTableSchema(e);t&&await this.persistSchema(t)}t=this.ensureDB()}for(const s of e){const e=await this.memoryCache.find(s,{table:s});await new Promise((i,r)=>{const a=t.transaction(s,"readwrite"),o=a.objectStore(s);o.clear();for(const t of e)o.add(t);a.oncomplete=()=>i(),a.onerror=()=>r(new n(`Flush failed for "${s}"`,"IDB_FLUSH_ERROR",a.error))})}}ensureDB(){if(!this.db)throw new n("Database not opened","DB_NOT_OPEN");return this.db}}function p(e){return"number"==typeof e?"number":"boolean"==typeof e?"boolean":"object"==typeof e&&null!==e?"json":"string"==typeof e?(isNaN(Date.parse(e)),"string"):"string"}class m{constructor(){this.name="opfs",this.root=null,this.tablesDir=null,this.dbName="",this.memoryCache=new d,this.opQueue=Promise.resolve()}enqueueOp(e){const t=this.opQueue.then(e,e);return this.opQueue=t.then(()=>{},()=>{}),t}async open(e,t){this.dbName=e,await this.memoryCache.open(e,t),this.root=await navigator.storage.getDirectory(),this.tablesDir=await this.root.getDirectoryHandle(e,{create:!0}),await this.loadExistingTables()}async close(){try{await this.opQueue}catch{}this.root=null,this.tablesDir=null,await this.memoryCache.close()}isOpen(){return null!==this.tablesDir}async repair(){try{await this.opQueue}catch{}await this.memoryCache.close(),await this.memoryCache.open(this.dbName,1),await this.loadExistingTables()}async clearAll(){try{await this.opQueue}catch{}if(await this.memoryCache.close(),await this.memoryCache.open(this.dbName,1),this.tablesDir){const e=this.tablesDir;for await(const[t]of e.entries())try{await this.tablesDir.removeEntry(t)}catch{}}}async getMeta(e){if(!this.tablesDir)return null;try{const t=await this.tablesDir.getFileHandle(`__metona_${e}.meta`),s=await t.getFile();return await s.text()}catch{return null}}async setMeta(e,t){if(!this.tablesDir)return;const s=await this.tablesDir.getFileHandle(`__metona_${e}.meta`,{create:!0}),n=await s.createWritable();await n.write(t),await n.close()}async createTable(e){return this.enqueueOp(async()=>{await this.memoryCache.createTable(e),await this.setMeta(`schema_${e.name}`,JSON.stringify(e)),await this.writeTableData(e.name,[])})}async dropTable(e){return this.enqueueOp(async()=>{if(await this.memoryCache.dropTable(e),this.tablesDir){try{await this.tablesDir.removeEntry(`__metona_schema_${e}.meta`)}catch{}try{await this.tablesDir.removeEntry(`${e}.json`)}catch{}}})}async hasTable(e){if(!this.tablesDir)return!1;try{return await this.tablesDir.getFileHandle(`${e}.json`),!0}catch{return!1}}async getTableNames(){if(!this.tablesDir)return[];const e=[];for await(const[t]of this.tablesDir.entries())t.endsWith(".json")&&e.push(t.replace(".json",""));return e}async getTableSchema(e){return this.memoryCache.getTableSchema(e)}async alterTable(e,t,s){return this.enqueueOp(async()=>{await this.memoryCache.alterTable(e,t,s);const n=await this.memoryCache.getTableSchema(e);n&&await this.setMeta(`schema_${e}`,JSON.stringify(n));const i=await this.memoryCache.find(e,{table:e});await this.writeTableData(e,i)})}async insert(e,t){return this.enqueueOp(async()=>{const s=await this.memoryCache.insert(e,t),n=await this.memoryCache.find(e,{table:e});return await this.writeTableData(e,n),s})}async find(e,t){return this.memoryCache.find(e,t)}async findStream(e,t,s){return this.memoryCache.findStream(e,t,s)}async update(e,t,s){return this.enqueueOp(async()=>{const n=await this.memoryCache.update(e,t,s),i=await this.memoryCache.find(e,{table:e});return await this.writeTableData(e,i),n})}async delete(e,t){return this.enqueueOp(async()=>{const s=await this.memoryCache.delete(e,t),n=await this.memoryCache.find(e,{table:e});return await this.writeTableData(e,n),s})}async count(e,t){return this.memoryCache.count(e,t)}async clear(e){return this.enqueueOp(async()=>{await this.memoryCache.clear(e),await this.writeTableData(e,[])})}async createIndex(e,t,s){return this.enqueueOp(async()=>{await this.memoryCache.createIndex(e,t,s);const n=await this.memoryCache.getTableSchema(e);n&&await this.setMeta(`schema_${e}`,JSON.stringify(n))})}async dropIndex(e,t,s){return this.enqueueOp(async()=>{await this.memoryCache.dropIndex(e,t,s);const n=await this.memoryCache.getTableSchema(e);n&&await this.setMeta(`schema_${e}`,JSON.stringify(n))})}async beginTransaction(){await this.memoryCache.beginTransaction()}async commitTransaction(){return this.enqueueOp(async()=>{await this.memoryCache.commitTransaction();const e=await this.memoryCache.getTableNames();for(const t of e){const e=await this.memoryCache.find(t,{table:t});await this.writeTableData(t,e)}})}async rollbackTransaction(){await this.memoryCache.rollbackTransaction()}ensureDir(){if(!this.tablesDir)throw new n("Database not opened","DB_NOT_OPEN");return this.tablesDir}async writeTableData(e,t){const s=this.ensureDir(),n=`${e}.json`,i=await s.getFileHandle(n,{create:!0}),r=await i.createWritable();await r.write(JSON.stringify(t)),await r.close()}async readTableData(e){const t=this.ensureDir(),s=`${e}.json`;try{const e=await t.getFileHandle(s),n=await e.getFile(),i=await n.text();return JSON.parse(i)}catch{return[]}}async loadExistingTables(){if(!this.tablesDir)return;const e=this.tablesDir,t=[];for await(const[s]of e.entries())s.endsWith(".json")&&t.push(s);for(const e of t){const t=e.replace(".json","");try{const e=await this.getMeta(`schema_${t}`);if(e){const s=JSON.parse(e);await this.memoryCache.createTable(s);const n=await this.readTableData(t);for(const e of n)try{await this.memoryCache.insert(t,[e])}catch{}continue}const s=await this.readTableData(t);if(s.length>0){const e=s[0],n={};for(const t of Object.keys(e)){const s=e[t],i="number"==typeof s?"number":"boolean"==typeof s?"boolean":"object"==typeof s?"json":"string";n[t]={type:i,primaryKey:"id"===t}}await this.memoryCache.createTable({name:t,columns:n});for(const e of s)await this.memoryCache.insert(t,[e])}}catch{}}}}function y(e,s){return function(e){if(0===Object.keys(e).length)throw new n("Table must have at least one column","SCHEMA_ERROR");let s=0;for(const[i,r]of Object.entries(e)){if(!t.includes(r.type))throw new n(`Invalid type "${r.type}" for column "${i}". Valid types: ${t.join(", ")}`,"SCHEMA_ERROR");r.primaryKey&&s++}if(0===s)throw new n("Table must have at least one primary key column","SCHEMA_ERROR")}(s),{name:e,columns:s}}function g(e){return{type:e.type,primaryKey:e.primaryKey,unique:e.unique,required:e.required,default:e.default,index:e.index,maxLength:e.maxLength,min:e.min,max:e.max,references:e.references,onDelete:e.onDelete,onUpdate:e.onUpdate}}const w=4096;var b;!function(e){e[e.DATA=1]="DATA",e[e.INDEX=2]="INDEX",e[e.OVERFLOW=3]="OVERFLOW",e[e.META=4]="META"}(b||(b={}));const T=4194304;var E,S;!function(e){e[e.INSERT=1]="INSERT",e[e.UPDATE=2]="UPDATE",e[e.DELETE=3]="DELETE",e[e.BEGIN=4]="BEGIN",e[e.COMMIT=5]="COMMIT",e[e.ROLLBACK=6]="ROLLBACK",e[e.CREATE_TABLE=7]="CREATE_TABLE",e[e.DROP_TABLE=8]="DROP_TABLE"}(E||(E={})),function(e){e[e.ACTIVE=1]="ACTIVE",e[e.COMMITTED=2]="COMMITTED",e[e.ABORTED=3]="ABORTED"}(S||(S={}));const I={pageSize:w,bufferPoolPages:256,memtableSizeThreshold:T,levelSizeMultiplier:10,bloomFilterBitsPerKey:10,walEnabled:!0,walSyncMode:"full",checkpointInterval:1e3,compression:!1,storageBackend:"indexeddb",walSizeThreshold:16777216,maxMemoryMB:64,encryption:void 0,pageStorage:void 0};var k;!function(e){e[e.RED=0]="RED",e[e.BLACK=1]="BLACK"}(k||(k={}));class x{constructor(e,t){this.color=k.RED,this.left=null,this.right=null,this.parent=null,this.key=e,this.value=t}}class A{constructor(){this.root=null,this._size=0}get size(){return this._size}insert(e,t){const s=new x(e,t);if(!this.root)return this.root=s,s.color=k.BLACK,void this._size++;let n=null,i=this.root;for(;i;)if(n=i,ei.key))return void(i.value=t);i=i.right}s.parent=n,et.key))return t.value;t=t.right}return null}delete(e){const t=this.findNode(e);return!!t&&(this.deleteNode(t),this._size--,!0)}inorder(e){this._inorder(this.root,e)}rangeScan(e,t,s){this._rangeScan(this.root,e,t,s)}getAllEntries(){const e=[];return this.inorder((t,s)=>e.push([t,s])),e}clear(){this.root=null,this._size=0}findNode(e){let t=this.root;for(;t;)if(et.key))return t;t=t.right}return null}deleteNode(e){if(e.left||e.right)if(e.left)if(e.right){const t=this.minimum(e.right);t.parent!==e&&(this.transplant(t,t.right),t.right=e.right,t.right.parent=t),this.transplant(e,t),t.left=e.left,t.left.parent=t;const s=t.color;t.color=e.color,s===k.BLACK&&this.fixDelete(t.right,t.right?.parent??null)}else this.transplant(e,e.left),e.color===k.BLACK&&this.fixDelete(e.left,e.left.parent);else this.transplant(e,e.right),e.color===k.BLACK&&this.fixDelete(e.right,e.right.parent);else this.transplant(e,null),e.color===k.BLACK&&this.fixDelete(null,e.parent)}transplant(e,t){e.parent?e===e.parent.left?e.parent.left=t:e.parent.right=t:this.root=t,t&&(t.parent=e.parent)}minimum(e){for(;e.left;)e=e.left;return e}fixInsert(e){for(;e.parent&&e.parent.color===k.RED;){const t=e.parent,s=t.parent;if(!s)break;if(t===s.left){const n=s.right;n&&n.color===k.RED?(t.color=k.BLACK,n.color=k.BLACK,s.color=k.RED,e=s):(e===t.right&&(e=t,this.rotateLeft(e)),e.parent&&(e.parent.color=k.BLACK),e.parent?.parent&&(e.parent.parent.color=k.RED),e.parent?.parent&&this.rotateRight(e.parent.parent))}else{const n=s.left;n&&n.color===k.RED?(t.color=k.BLACK,n.color=k.BLACK,s.color=k.RED,e=s):(e===t.left&&(e=t,this.rotateRight(e)),e.parent&&(e.parent.color=k.BLACK),e.parent?.parent&&(e.parent.parent.color=k.RED),e.parent?.parent&&this.rotateLeft(e.parent.parent))}}this.root&&(this.root.color=k.BLACK)}fixDelete(e,t){let s=e,n=t;for(;(!s||s.color===k.BLACK)&&s!==this.root&&n;)if(s===n.left){let e=n.right;if(!e)break;if(e.color===k.RED&&(e.color=k.BLACK,n.color=k.RED,this.rotateLeft(n),e=n.right,!e))break;const t=e.left,i=e.right;if(t&&t.color!==k.BLACK||i&&i.color!==k.BLACK){if(!(i&&i.color!==k.BLACK||(t&&(t.color=k.BLACK),e.color=k.RED,this.rotateRight(e),e=n.right,e)))break;e.color=n.color,n.color=k.BLACK,e.right&&(e.right.color=k.BLACK),this.rotateLeft(n),s=this.root}else e.color=k.RED,s=n,n=s.parent}else{let e=n.left;if(!e)break;if(e.color===k.RED&&(e.color=k.BLACK,n.color=k.RED,this.rotateRight(n),e=n.left,!e))break;const t=e.left,i=e.right;if(t&&t.color!==k.BLACK||i&&i.color!==k.BLACK){if(!(t&&t.color!==k.BLACK||(i&&(i.color=k.BLACK),e.color=k.RED,this.rotateLeft(e),e=n.left,e)))break;e.color=n.color,n.color=k.BLACK,e.left&&(e.left.color=k.BLACK),this.rotateRight(n),s=this.root}else e.color=k.RED,s=n,n=s.parent}s&&(s.color=k.BLACK)}rotateLeft(e){const t=e.right;t&&(e.right=t.left,t.left&&(t.left.parent=e),t.parent=e.parent,e.parent?e===e.parent.left?e.parent.left=t:e.parent.right=t:this.root=t,t.left=e,e.parent=t)}rotateRight(e){const t=e.left;t&&(e.left=t.right,t.right&&(t.right.parent=e),t.parent=e.parent,e.parent?e===e.parent.right?e.parent.right=t:e.parent.left=t:this.root=t,t.right=e,e.parent=t)}_inorder(e,t){e&&(this._inorder(e.left,t),t(e.key,e.value),this._inorder(e.right,t))}_rangeScan(e,t,s,n){e&&(e.key>t&&this._rangeScan(e.left,t,s,n),e.key>=t&&e.key<=s&&n(e.key,e.value),e.key=this.maxSize}getAllEntries(){return this.tree.getAllEntries()}rangeScan(e,t){const s=[];return this.tree.rangeScan(e,t,(e,t)=>s.push([e,t])),s}getEntryCount(){return this.tree.size}getEstimatedSize(){return this._estimatedSize}clear(){this.tree.clear(),this._estimatedSize=0}estimateEntrySize(e,t){if(!t)return 0;let s=2*e.length;for(const e of Object.entries(t)){s+=2*e[0].length;const t=e[1];s+="string"==typeof t?2*t.length:"number"==typeof t?8:"boolean"==typeof t||null==t?1:16}return s}}class C{constructor(e,t=10){this._inserted=0;const s=Math.max(64,e*t),n=Math.ceil(s/8);this.bits=new Uint8Array(n),this.numHashes=Math.max(1,Math.floor(.69*t))}static fromData(e,t){const s=new C(1);return s.bits=e,s.numHashes=t,s}insert(e){const t=this.getHashes(e);for(const e of t){const t=Math.floor(e/8),s=e%8;this.bits[t]|=1<>>0;return t}murmurSimple(e){let t=0;for(let s=0;s>>16)>>>0;return Math.abs(t)}}const N=(()=>{const e=new Uint32Array(256);for(let t=0;t<256;t++){let s=t;for(let e=0;e<8;e++)s=1&s?3988292384^s>>>1:s>>>1;e[t]=s>>>0}return e})(),O=4294967295;function _(e,t=0){const s=function(e,t){let s=e>>>0;for(let e=0;e>>8)>>>0;return s>>>0}(t^O,e);return function(e){return(e^O)>>>0}(s)}const D=1397969987;class L{constructor(e=4096){this.entries=[],this.blockSizeLimit=e}add(e,t){this.entries.push([e,t])}build(){const e=new TextEncoder,t=this.entries.map(([t,s])=>({key:t,keyBytes:e.encode(t),valueBytes:e.encode(JSON.stringify(s))})),s=this.splitIntoBlocks(t),n=new C(this.entries.length);let i=0;const r=[];for(const e of s)r.push(i),i+=this.computeBlockSize(e);const a=[];for(let e=0;e=this.blockSizeLimit&&s.length>1&&(t.push(s.slice(0,-1)),s=[n]);return s.length>0&&t.push(s),t}computeBlockSize(e){let t=4;for(const s of e)t+=4+s.keyBytes.length+4+s.valueBytes.length;return t}writeDataBlock(e,t,s,n){e.setUint32(t,s.length,!1),t+=4;for(const i of s){if(i.keyBytes.length>4294967295||i.valueBytes.length>4294967295)throw new Error("SSTable entry too large (exceeds u32 length field)");e.setUint32(t,i.keyBytes.length,!1),t+=4,new Uint8Array(e.buffer).set(i.keyBytes,t),t+=i.keyBytes.length,e.setUint32(t,i.valueBytes.length,!1),t+=4,new Uint8Array(e.buffer).set(i.valueBytes,t),t+=i.valueBytes.length,n.insert(i.key)}return t}estimateIndexBlockSize(e){let t=4;const s=new TextEncoder;for(const n of e)t+=4+s.encode(n.key).byteLength+8;return t}writeIndexBlock(e,t,s){e.setUint32(t,s.length,!1),t+=4;for(const n of s){const s=(new TextEncoder).encode(n.key);e.setUint32(t,s.length,!1),t+=4,new Uint8Array(e.buffer).set(s,t),t+=s.length,e.setUint32(t,n.blockOffset,!1),t+=4,e.setUint32(t,n.blockSize,!1),t+=4}return t}}class ${constructor(e,t){this.indexEntries=[],this.entryCount=0,this.bloomFilter=null,this.format=2,this.storedChecksum=0,this.data=e,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.meta=t,this.parseFooter()}verifyChecksum(){return 0===this.storedChecksum||!(this.data.byteLength<4)&&_(this.data.subarray(0,this.data.byteLength-4))===this.storedChecksum}lenFieldSize(){return 2===this.format?4:2}readLen(e){return 2===this.format?this.view.getUint32(e,!1):this.view.getUint16(e,!1)}get(e){if(this.bloomFilter&&!this.bloomFilter.mayContain(e))return null;const t=this.locateBlock(e);if(t<0)return null;const s=this.indexEntries[t],n=this.getBlockData(s);if(!n)return null;const i=new DataView(n.buffer,n.byteOffset,n.byteLength),r=this.lenFieldSize(),a=i.getUint32(0,!1);let o=4;for(let t=0;tn.byteLength);t++){const t=2===this.format?i.getUint32(o,!1):i.getUint16(o,!1);if(o+=r,o+t+r>n.byteLength)break;const s=(new TextDecoder).decode(n.slice(o,o+t));o+=t;const a=2===this.format?i.getUint32(o,!1):i.getUint16(o,!1);if(o+=r,o+a>n.byteLength)break;const h=n.slice(o,o+a);if(o+=a,s===e)try{return JSON.parse((new TextDecoder).decode(h))}catch{return null}}return null}rangeScan(e,t,s){if(0===this.indexEntries.length)return;const n=Math.max(0,this.locateBlockGE(e)),i=Math.min(this.indexEntries.length-1,this.locateBlockLE(t));if(n<0||i<0||n>i)return;const r=this.lenFieldSize();for(let a=n;a<=i&&a>=0;a++){const n=this.indexEntries[a],i=this.getBlockData(n);if(!i)continue;const o=new DataView(i.buffer,i.byteOffset,i.byteLength),h=o.getUint32(0,!1);let c=4;for(let n=0;ni.byteLength);n++){const n=2===this.format?o.getUint32(c,!1):o.getUint16(c,!1);if(c+=r,c+n+r>i.byteLength)break;const a=(new TextDecoder).decode(i.slice(c,c+n));c+=n;const h=2===this.format?o.getUint32(c,!1):o.getUint16(c,!1);if(c+=r,c+h>i.byteLength)break;const l=i.slice(c,c+h);if(c+=h,a>=e&&a<=t)try{s(a,JSON.parse((new TextDecoder).decode(l)))}catch{}}}}scanAll(e){const t=this.lenFieldSize();for(const s of this.indexEntries){const n=this.getBlockData(s);if(!n)continue;const i=new DataView(n.buffer,n.byteOffset,n.byteLength),r=i.getUint32(0,!1);let a=4;for(let s=0;sn.byteLength);s++){const s=2===this.format?i.getUint32(a,!1):i.getUint16(a,!1);if(a+=t,a+s+t>n.byteLength)break;const r=(new TextDecoder).decode(n.slice(a,a+s));a+=s;const o=2===this.format?i.getUint32(a,!1):i.getUint16(a,!1);if(a+=t,a+o>n.byteLength)break;const h=n.slice(a,a+o);a+=o;try{e(r,JSON.parse((new TextDecoder).decode(h)))}catch{}}}}parseFooter(){if(this.data.byteLength<32)throw new Error("SSTable too small: missing footer");const e=this.data.byteLength-32,t=this.view.getUint32(e+24,!1);if(1397969986===t)this.format=1;else{if(t!==D)throw new Error(`Invalid SSTable magic: expected 1397969986 or 1397969987, got ${t}`);this.format=2}const s=this.view.getUint32(e,!1),n=this.view.getUint32(e+4,!1),i=this.view.getUint32(e+8,!1),r=this.view.getUint32(e+12,!1),a=this.view.getUint32(e+16,!1);if(this.entryCount=this.view.getUint32(e+20,!1),this.storedChecksum=this.view.getUint32(e+28,!1),!(s+4>this.data.byteLength||s+n>this.data.byteLength)&&(this.parseIndexBlock(s,n),i>0&&r>0&&i+r<=this.data.byteLength))try{const e=this.data.slice(i,i+r);this.bloomFilter=C.fromData(e,a||10)}catch{}}parseIndexBlock(e,t){const s=this.view.getUint32(e,!1);e+=4;const n=this.lenFieldSize();for(let t=0;tthis.data.byteLength);t++){const t=this.readLen(e);if((e+=n)+t+8>this.data.byteLength)break;const s=(new TextDecoder).decode(this.data.slice(e,e+t));e+=t;const i=this.view.getUint32(e,!1);e+=4;const r=this.view.getUint32(e,!1);e+=4,0===r||i+r>this.data.byteLength||this.indexEntries.push({key:s,blockOffset:i,blockSize:r})}}getBlockData(e){return e.blockSize<=0||e.blockOffset<0||e.blockOffset+e.blockSize>this.data.byteLength?null:new Uint8Array(this.data.buffer,this.data.byteOffset+e.blockOffset,e.blockSize)}locateBlock(e){let t=0,s=this.indexEntries.length-1;for(;t<=s;){const n=Math.floor((t+s)/2);if(e<=this.indexEntries[n].key){if(e>(0===n?"":this.indexEntries[n-1].key))return n;s=n-1}else t=n+1}return-1}locateBlockGE(e){let t=0,s=this.indexEntries.length;for(;t>1;this.indexEntries[n].key>1;this.indexEntries[n].key<=e?t=n+1:s=n}return t>0?t-1:0}}class v{constructor(e){this.index=0,this.entries=e}next(){return this.index>=this.entries.length?null:this.entries[this.index++]}reset(){this.index=0}}class B{constructor(){this.heap=[]}push(e){this.heap.push(e),this.bubbleUp(this.heap.length-1)}pop(){if(0===this.heap.length)return null;if(1===this.heap.length)return this.heap.pop();const e=this.heap[0];return this.heap[0]=this.heap.pop(),this.bubbleDown(0),e}peek(){return this.heap.length>0?this.heap[0]:null}get size(){return this.heap.length}bubbleUp(e){for(;e>0;){const t=Math.floor((e-1)/2);if(this.heap[e].key>=this.heap[t].key)break;[this.heap[e],this.heap[t]]=[this.heap[t],this.heap[e]],e=t}}bubbleDown(e){const t=this.heap.length;for(;;){let s=e;const n=2*e+1,i=2*e+2;if(n=0&&e.level<7&&this.levels[e.level].push(e);for(let e=0;e<7;e++)this.levels[e].sort((e,t)=>t.id-e.id);this.initialized=!0}put(e,t){this.levels[0].length>=8&&this.enqueueCompact(0),this.memtable.put(e,t),this.operationCount++,this.memtable.shouldFlush()&&this.freezeMemtable()}delete(e){this.levels[0].length>=8&&this.enqueueCompact(0),this.memtable.put(e,{__tombstone:!0}),this.operationCount++,this.memtable.shouldFlush()&&this.freezeMemtable()}getEstimatedMemory(){let e=this.memtable.getEstimatedSize();for(const t of this.frozenMemtables)e+=t.getEstimatedSize();return e+=this.cacheSize,e}freezeMemtable(){if(this.immutableMemtable){const e=this.immutableMemtable;this.flushChain=this.enqueueOnChain(()=>this.flushImmutableAsync(e))}this.immutableMemtable=this.memtable,this.frozenMemtables.push(this.immutableMemtable),this.memtable=new R(this.memtableSizeThreshold)}enqueueOnChain(e){return this.flushChain.then(e).catch(e=>{this.lastBackgroundError=e})}async drainChain(){for(;;){const e=this.flushChain;if(await e,this.flushChain===e)return}}async flushImmutableAsync(e){const t=e.getAllEntries();if(0===t.length)return void(this.immutableMemtable===e&&(this.immutableMemtable=null));const s=await this.sstableStore.allocateId(),n=new L(this.blockSize);for(const[e,s]of t)n.add(e,s);const{sstableData:i,indexEntries:r}=n.build(),a={id:s,level:0,minKey:t[0][0],maxKey:t[t.length-1][0],blockCount:r.length,totalSize:i.byteLength,bloomData:null};this.cacheSSTable(s,i),this.trimCache(),await this.sstableStore.save(s,i),await this.sstableStore.saveMeta(a),this.immutableMemtable===e&&(this.immutableMemtable=null),this.levels[0].unshift(a),this.frozenMemtables=this.frozenMemtables.filter(t=>t!==e),this.levels[0].length>=4&&!this.compacting&&this.scheduleCompact(0)}scheduleCompact(e){e>=6||this.compacting||(this.compacting=!0,this.flushChain=this.enqueueOnChain(()=>this.compactLevelAsync(e).finally(()=>{this.compacting=!1,this.levels[e].length>=4&&this.scheduleCompact(e),e+1<6&&this.levels[e+1].length>=4&&this.scheduleCompact(e+1)})))}enqueueCompact(e){e>=6||this.compacting||(this.compacting=!0,this.flushChain=this.flushChain.then(async()=>{try{await this.compactLevelAsync(e)}finally{this.compacting=!1}}).catch(e=>{this.compacting=!1,this.lastBackgroundError=e}))}async prefetchRange(e,t){await this.drainChain(),this.trimCache();const s=[];for(let n=0;n<7;n++)for(const i of this.levels[n])ti.maxKey||this.sstableCache.has(i.id)||s.push(i.id);for(const e of s){const t=this.findMetaById(e);await this.preloadSSTable(e,t)}}async prefetchKeys(e){if(0===e.length)return;await this.drainChain(),this.trimCache();const t=new Set;for(let s=0;s<7;s++)for(const n of this.levels[s])if(!this.sstableCache.has(n.id))for(const s of e)if(s>=n.minKey&&s<=n.maxKey){t.add(n.id);break}for(const e of t){const t=this.findMetaById(e);await this.preloadSSTable(e,t)}}findMetaById(e){for(let t=0;t<7;t++)for(const s of this.levels[t])if(s.id===e)return s}get(e){let t=this.memtable.get(e);if(null!==t)return this.unwrapTombstone(t);for(let s=this.frozenMemtables.length-1;s>=0;s--)if(t=this.frozenMemtables[s].get(e),null!==t)return this.unwrapTombstone(t);for(let t=0;t<7;t++)for(const s of this.levels[t]){if(es.maxKey)continue;const t=this.loadSSTableReader(s);if(!t)continue;const n=t.get(e);if(null!==n)return this.unwrapTombstone(n)}return null}rangeScan(e,t){const s=[];return this.rangeScanLazy(e,t,(e,t)=>s.push([e,t])),s}rangeScanLazy(e,t,s){const n=new M;n.addSource(new v(this.memtable.rangeScan(e,t)));for(let s=this.frozenMemtables.length-1;s>=0;s--)n.addSource(new v(this.frozenMemtables[s].rangeScan(e,t)));for(let s=0;s<7;s++)for(const i of this.levels[s]){if(ti.maxKey)continue;const s=this.loadSSTableReader(i);s&&s.rangeScan(e,t,(e,t)=>{n.addSource(new v([[e,t]]))})}const i=n.drain();for(const[e,t]of i)t.__tombstone||s(e,t)}getAllEntries(){const e=new Map;for(let t=6;t>=0;t--)for(let s=this.levels[t].length-1;s>=0;s--){const n=this.levels[t][s],i=this.loadSSTableReader(n);i&&i.scanAll((t,s)=>e.set(t,s))}for(const[t,s]of this.memtable.getAllEntries())e.set(t,s);for(let t=this.frozenMemtables.length-1;t>=0;t--)for(const[s,n]of this.frozenMemtables[t].getAllEntries())e.set(s,n);return Array.from(e.entries()).filter(([,e])=>!e.__tombstone)}async compactLevel(e){await this.compactLevelAsync(e,2)}async compactLevelAsync(e,t=4){if(e>=6)return;if(this.levels[e].lengthr.push([e,t])),n.addSource(new v(r)),i.push(e)}const r=n.drain();if(0===r.length){for(const t of i)this.levels[e].push(t);return void this.levels[e].sort((e,t)=>t.id-e.id)}const a=await this.sstableStore.allocateId(),o=new L(this.blockSize);for(const[e,t]of r)o.add(e,t);const{sstableData:h,indexEntries:c}=o.build(),l={id:a,level:e+1,minKey:r[0][0],maxKey:r[r.length-1][0],blockCount:c.length,totalSize:h.byteLength,bloomData:null};this.cacheSSTable(a,h),this.trimCache(),await this.sstableStore.save(a,h),await this.sstableStore.saveMeta(l),this.levels[e+1].unshift(l);for(const e of s)this.sstableCache.delete(e.id),await this.sstableStore.delete(e.id),await this.sstableStore.deleteMeta(e.id)}async flush(){if(null!==this.lastBackgroundError){const e=this.lastBackgroundError;throw this.lastBackgroundError=null,new n("AriaEngine background flush/compaction failed (data may be inconsistent)","ARIA_BACKGROUND_ERROR",e)}if(await this.drainChain(),this.immutableMemtable){const e=this.immutableMemtable;await this.flushImmutableAsync(e)}if(this.memtable.getEntryCount()>0){this.freezeMemtable();const e=this.immutableMemtable;e&&await this.flushImmutableAsync(e)}this.frozenMemtables=[],await this.drainChain()}async clear(){await this.drainChain(),this.memtable.clear(),this.immutableMemtable=null,this.frozenMemtables=[];for(const e of this.levels)for(const t of e)this.sstableCache.delete(t.id),this.sstableStore.delete(t.id).catch(()=>{}),this.sstableStore.deleteMeta(t.id).catch(()=>{});this.levels=[];for(let e=0;e<7;e++)this.levels.push([]);this.sstableCache.clear(),this.cacheSize=0}getStats(){return{memtableSize:this.memtable.getEntryCount(),sstableCount:this.levels.reduce((e,t)=>e+t.length,0),levelCounts:this.levels.map(e=>e.length)}}async validateAll(){let e=0;for(let t=0;t<7;t++){const s=[];for(const n of this.levels[t])await this.validateSSTable(n)?s.push(n):(this.sstableCache.delete(n.id),e++);this.levels[t]=s}return e}async validateSSTable(e){try{const t=await this.sstableStore.load(e.id);if(!t)return this.dropInvalidSSTable(e),!1;if(t.byteLength<32)return this.dropInvalidSSTable(e),!1;try{if(!new $(t,e).verifyChecksum())return this.dropInvalidSSTable(e),!1}catch{return this.dropInvalidSSTable(e),!1}return!0}catch{return this.dropInvalidSSTable(e),!1}}async dropInvalidSSTable(e){try{await this.sstableStore.deleteMeta(e.id)}catch{}try{await this.sstableStore.delete(e.id)}catch{}}unwrapTombstone(e){return e?e.__tombstone?null:e:null}loadSSTableReader(e){const t=this.sstableCache.get(e.id);if(!t)return null;this.sstableCache.delete(e.id),this.sstableCache.set(e.id,t);try{return new $(t,e)}catch{return null}}async preloadSSTable(e,t){if(this.sstableCache.has(e))return;const s=await this.sstableStore.load(e);if(s){if(t)try{if(!new $(s,t).verifyChecksum())return void await this.dropInvalidSSTable(t)}catch{return void await this.dropInvalidSSTable(t)}this.cacheSSTable(e,s)}}cacheSSTable(e,t){this.sstableCache.has(e)&&(this.cacheSize-=this.sstableCache.get(e).byteLength,this.sstableCache.delete(e)),this.sstableCache.set(e,t),this.cacheSize+=t.byteLength}trimCache(){for(;this.cacheSize>this.cacheLimitBytes&&this.sstableCache.size>0;){const e=this.sstableCache.keys().next().value,t=this.sstableCache.get(e);this.cacheSize-=t.byteLength,this.sstableCache.delete(e)}}}class P{constructor(e,t=!0,s="batch"){this.lsn=0,this.buffer=[],this.bufferedBytes=0,this.store=e,this.enabled=t,this.syncMode=s}async append(e){if(!this.enabled)return;this.lsn++;const t={...e,lsn:this.lsn,checksum:0},s=this.encodeRecord(t);if("full"===this.syncMode)try{await this.store.append(s),this.bufferedBytes+=s.byteLength}catch{}else"batch"===this.syncMode&&(this.buffer.push(s),this.bufferedBytes+=s.byteLength)}async appendBatch(e){if(!this.enabled||0===e.length)return;const t=[];for(const s of e)this.lsn++,t.push(this.encodeRecord({...s,lsn:this.lsn,checksum:0}));const s=this.mergeChunks(t);if("full"===this.syncMode)try{await this.store.append(s),this.bufferedBytes+=s.byteLength}catch{}else"batch"===this.syncMode&&(this.buffer.push(s),this.bufferedBytes+=s.byteLength)}async flush(){if(!this.enabled||0===this.buffer.length)return;const e=this.mergeChunks(this.buffer);await this.store.append(e),this.buffer=[]}mergeChunks(e){if(1===e.length)return e[0];const t=e.reduce((e,t)=>e+t.byteLength,0),s=new Uint8Array(t);let n=0;for(const t of e)s.set(t,n),n+=t.byteLength;return s}async recover(e){if(!this.enabled)return 0;if(!await this.store.exists())return 0;const t=await this.store.readAll();if(0===t.byteLength)return 0;const s=this.decodeAllRecords(t);for(const t of s)e(t);return this.lsn=s.length>0?s[s.length-1].lsn:0,s.length}async checkpoint(){this.enabled&&(await this.flush(),await this.store.truncate(),this.lsn=0,this.bufferedBytes=0)}getBufferedCount(){return this.buffer.length}getBufferedBytes(){return this.bufferedBytes}legacyChecksum(e){let t=0;for(let s=0;s>>0}encodeRecord(e){const t=new TextEncoder,s=t.encode(e.tableName),n=t.encode(e.key),i=e.data?JSON.stringify(e.data):"",r=t.encode(i),a=11+s.length+2+n.length+4+r.length+4,o=new ArrayBuffer(a),h=new DataView(o);let c=0;h.setUint32(c,e.lsn,!1),c+=4,h.setUint8(c,e.type),c+=1,h.setUint32(c,e.txnId,!1),c+=4,h.setUint16(c,s.length,!1),c+=2,new Uint8Array(o).set(s,c),c+=s.length,h.setUint16(c,n.length,!1),c+=2,new Uint8Array(o).set(n,c),c+=n.length,h.setUint32(c,r.length,!1),c+=4,new Uint8Array(o).set(r,c),c+=r.length;const l=_(new Uint8Array(o,0,c));return h.setUint32(c,l,!1),new Uint8Array(o)}decodeAllRecords(e){const t=[],s=new DataView(e.buffer,e.byteOffset,e.byteLength);let n=0;for(;n+15<=e.byteLength;)try{const i=n,r=s.getUint32(n,!1);n+=4;const a=s.getUint8(n);n+=1;const o=s.getUint32(n,!1);n+=4;const h=s.getUint16(n,!1);if(n+=2,n+h>e.byteLength)break;const c=(new TextDecoder).decode(e.slice(n,n+h));n+=h;const l=s.getUint16(n,!1);if(n+=2,n+l>e.byteLength)break;const u=(new TextDecoder).decode(e.slice(n,n+l));n+=l;const d=s.getUint32(n,!1);if(n+=4,n+d>e.byteLength)break;let f;if(d>0){const t=(new TextDecoder).decode(e.slice(n,n+d));try{f=JSON.parse(t)}catch{}}n+=d;const p=s.getUint32(n,!1);n+=4;const m=e.slice(i,n-4),y=_(m),g=this.legacyChecksum(m);if(y>>>0!==p&&g>>>0!==p)continue;t.push({lsn:r,type:a,txnId:o,tableName:c,key:u,data:f,checksum:p})}catch{break}return t}}const j="__wal_",F=/^__wal_(\d{6})\.bin$/,K=/^__wal_(\d+)$/,z="__wal_count";class q{constructor(e,t=4194304){this.backend=e,this.currentSegment=0,this.currentSize=0,this.segmentSize=t}segmentKey(e){return`${j}${String(e).padStart(6,"0")}.bin`}async append(e){if(0===e.byteLength)return;this.currentSize+e.byteLength>this.segmentSize&&(this.currentSegment++,this.currentSize=0);const t=this.segmentKey(this.currentSegment),s=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);if("function"==typeof this.backend.append)await this.backend.append(t,s);else{const e=await this.backend.read(t);if(e){const n=new ArrayBuffer(e.byteLength+s.byteLength);new Uint8Array(n).set(new Uint8Array(e),0),new Uint8Array(n).set(new Uint8Array(s),e.byteLength),await this.backend.write(t,n)}else await this.backend.write(t,s)}this.currentSize+=e.byteLength}async readAll(){const e=await this.backend.listKeys(),t=e.filter(e=>F.test(e)).map(e=>({seq:Number(e.match(F)[1]),key:e})).sort((e,t)=>e.seq-t.seq);let s=0;for(let e=0;eK.test(e)).map(e=>({seq:Number(e.match(K)[1]),key:e})).sort((e,t)=>e.seq-t.seq),r=[];for(const{key:e}of i){const t=await this.backend.read(e);t&&r.push(new Uint8Array(t))}for(const{key:e}of n){const t=await this.backend.read(e);t&&r.push(new Uint8Array(t))}if(n.length>0){this.currentSegment=n[n.length-1].seq;const e=await this.backend.read(n[n.length-1].key);this.currentSize=e?e.byteLength:0,i.length>0&&(this.currentSegment++,this.currentSize=0)}else i.length>0&&(this.currentSegment=0,this.currentSize=0);const a=r.reduce((e,t)=>e+t.byteLength,0),o=new Uint8Array(a);let h=0;for(const e of r)o.set(e,h),h+=e.byteLength;return o}async truncate(){const e=(await this.backend.listKeys()).filter(e=>e.startsWith(j)||e===z);e.length>0&&await this.backend.deleteMany(e),this.currentSegment=0,this.currentSize=0}async exists(){return(await this.backend.listKeys()).some(e=>e.startsWith(j)||e===z)}}class V{constructor(){this.acquired=!1,this.supported=!1,this.releaseResolve=null,this.releasePromise=null}async acquire(e){const t=globalThis.navigator,s=t?.locks;return s&&"function"==typeof s.request?(this.supported=!0,await new Promise((t,i)=>{s.request.bind(s)(function(e){return`metona-sqlark:${e}`}(e),{ifAvailable:!0,mode:"exclusive"},async s=>{if(!s)return void i(new n(`Database "${e}" is already open in another tab (locked)`,"ARIA_LOCKED"));this.acquired=!0;const r=new Promise(e=>{this.releaseResolve=e});this.releasePromise=r,t(),await r})}),!0):(this.supported=!1,!1)}async release(){if(this.acquired){if(this.releaseResolve){const e=this.releaseResolve,t=this.releasePromise;this.releaseResolve=null,this.releasePromise=null,e();try{await t}catch{}}this.acquired=!1}}isAcquired(){return this.acquired}isSupported(){return this.supported}}class H{constructor(e,t,s=null,n=1e3,i=16777216){this.opCount=0,this.lsm=e,this.wal=t,this.flushable=s,this.interval=n,this.walSizeThreshold=i}async tick(){this.opCount++,(this.opCount>=this.interval||this.getWALEstimatedSize()>=this.walSizeThreshold)&&await this.checkpoint()}getWALEstimatedSize(){const e=this.wal;if("function"==typeof e.getBufferedBytes){const t=e.getBufferedBytes();if(t>0)return t}return 200*("function"==typeof e.getBufferedCount?e.getBufferedCount():0)}async checkpoint(){await this.lsm.flush(),this.flushable&&await this.flushable.flushAll(),await this.wal.checkpoint(),this.opCount=0}}class W{constructor(){this.db=null,this.dbName="",this.storeName="data"}async open(e){return this.dbName=`aria-${e}`,new Promise((e,t)=>{const s=indexedDB.open(this.dbName,1);s.onupgradeneeded=()=>{const e=s.result;e.objectStoreNames.contains(this.storeName)||e.createObjectStore(this.storeName)},s.onsuccess=()=>{this.db=s.result,e()},s.onerror=()=>t(new n("Failed to open AriaEngine IndexedDB","ARIA_IDB_OPEN_ERROR"))})}async close(){this.db&&(this.db.close(),this.db=null)}isOpen(){return null!==this.db}async read(e){const t=this.ensureDB();return new Promise((s,i)=>{const r=t.transaction(this.storeName,"readonly").objectStore(this.storeName).get(e);r.onsuccess=()=>s(r.result??null),r.onerror=()=>i(new n("Failed to read from AriaEngine store","ARIA_READ_ERROR"))})}async write(e,t){const s=this.ensureDB();return new Promise((i,r)=>{const a=s.transaction(this.storeName,"readwrite");a.objectStore(this.storeName).put(t,e),a.oncomplete=()=>i(),a.onerror=()=>r(new n("Failed to write to AriaEngine store","ARIA_WRITE_ERROR"))})}async writeMany(e){const t=Object.keys(e);if(0===t.length)return;const s=this.ensureDB();return new Promise((i,r)=>{const a=s.transaction(this.storeName,"readwrite"),o=a.objectStore(this.storeName);for(const s of t)o.put(e[s],s);a.oncomplete=()=>i(),a.onerror=()=>r(new n("Failed to batch write to AriaEngine store","ARIA_WRITE_ERROR"))})}async delete(e){const t=this.ensureDB();return new Promise((s,i)=>{const r=t.transaction(this.storeName,"readwrite");r.objectStore(this.storeName).delete(e),r.oncomplete=()=>s(),r.onerror=()=>i(new n("Failed to delete from AriaEngine store","ARIA_DELETE_ERROR"))})}async deleteMany(e){if(0===e.length)return;const t=this.ensureDB();return new Promise((s,i)=>{const r=t.transaction(this.storeName,"readwrite"),a=r.objectStore(this.storeName);for(const t of e)a.delete(t);r.oncomplete=()=>s(),r.onerror=()=>i(new n("Failed to batch delete from AriaEngine store","ARIA_DELETE_ERROR"))})}async listKeys(){const e=this.ensureDB();return new Promise((t,s)=>{const i=e.transaction(this.storeName,"readonly").objectStore(this.storeName).getAllKeys();i.onsuccess=()=>t(i.result??[]),i.onerror=()=>s(new n("Failed to list keys","ARIA_LIST_ERROR"))})}async exists(e){return null!==await this.read(e)}async clear(){const e=this.ensureDB();return new Promise((t,s)=>{const i=e.transaction(this.storeName,"readwrite");i.objectStore(this.storeName).clear(),i.oncomplete=()=>t(),i.onerror=()=>s(new n("Failed to clear AriaEngine store","ARIA_CLEAR_ERROR"))})}ensureDB(){if(!this.db)throw new n("AriaEngine storage not opened","ARIA_DB_NOT_OPEN");return this.db}}class G{constructor(){this.store=new Map,this.opened=!1}async open(e){this.opened=!0}async close(){this.store.clear(),this.opened=!1}isOpen(){return this.opened}async read(e){return this.store.get(e)??null}async write(e,t){this.store.set(e,t)}async writeMany(e){for(const[t,s]of Object.entries(e))this.store.set(t,s)}async delete(e){this.store.delete(e)}async deleteMany(e){for(const t of e)this.store.delete(t)}async listKeys(){return Array.from(this.store.keys())}async exists(e){return this.store.has(e)}async clear(){this.store.clear()}}const X=[".crswap",".tmp"];class J{constructor(){this.root=null,this.dbDir=null,this.dbName="",this.writeQueue=Promise.resolve()}async open(e){this.dbName=e,this.root=await navigator.storage.getDirectory(),this.dbDir=await this.root.getDirectoryHandle(e,{create:!0}),await this.cleanupStaleFiles()}async close(){try{await this.writeQueue}catch{}this.dbDir=null,this.root=null}isOpen(){return null!==this.dbDir}async cleanupStaleFiles(){if(this.dbDir)try{const e=this.dbDir,t=[];for await(const[s]of e.entries())X.some(e=>s.endsWith(e))&&t.push(s);for(const e of t)try{await this.dbDir.removeEntry(e)}catch{}}catch{}}async read(e){if(!this.dbDir)return null;try{const t=await this.dbDir.getFileHandle(e),s=await t.getFile();return await s.arrayBuffer()}catch{return null}}async write(e,t){if(!this.dbDir)return;const s=this.writeQueue.then(async()=>{const s=await this.dbDir.getFileHandle(e,{create:!0}),n=await s.createWritable();await n.write(t),await n.close()});return this.writeQueue=s.then(()=>{},()=>{}),s}async append(e,t){if(!this.dbDir)return;const s=this.writeQueue.then(async()=>{const s=await this.dbDir.getFileHandle(e,{create:!0}),n=await s.getFile(),i=await s.createWritable({keepExistingData:!0});await i.write({type:"write",position:n.size,data:t}),await i.close()});return this.writeQueue=s.then(()=>{},()=>{}),s}async writeMany(e){if(!this.dbDir)return;const t=this.writeQueue.then(async()=>{for(const[t,s]of Object.entries(e)){const e=await this.dbDir.getFileHandle(t,{create:!0}),n=await e.createWritable();await n.write(s),await n.close()}});return this.writeQueue=t.then(()=>{},()=>{}),t}async delete(e){if(!this.dbDir)return;const t=this.writeQueue.then(async()=>{try{await this.dbDir.removeEntry(e)}catch{}});return this.writeQueue=t.then(()=>{},()=>{}),t}async deleteMany(e){if(!this.dbDir)return;const t=this.writeQueue.then(async()=>{for(const t of e)try{await this.dbDir.removeEntry(t)}catch{}});return this.writeQueue=t.then(()=>{},()=>{}),t}async listKeys(){if(!this.dbDir)return[];const e=[],t=this.dbDir;for await(const[s]of t.entries())e.push(s);return e}async exists(e){if(!this.dbDir)return!1;try{return await this.dbDir.getFileHandle(e),!0}catch{return!1}}async clear(){if(!this.dbDir)return;const e=this.dbDir;for await(const[t]of e.entries())try{await this.dbDir.removeEntry(t)}catch{}}}const Y="AES-GCM";class Q{constructor(){this.cryptoKey=null,this._enabled=!1}get enabled(){return this._enabled}async init(e,t){const s=new TextEncoder,n=await crypto.subtle.importKey("raw",s.encode(e),"PBKDF2",!1,["deriveKey"]),i=t||crypto.getRandomValues(new Uint8Array(16));return this.cryptoKey=await crypto.subtle.deriveKey({name:"PBKDF2",salt:i,iterations:1e5,hash:"SHA-256"},n,{name:Y,length:256},!1,["encrypt","decrypt"]),this._enabled=!0,i}async encryptPage(e){if(!this.cryptoKey)throw new Error("Crypto not initialized");const t=crypto.getRandomValues(new Uint8Array(12)),s=e instanceof Uint8Array?e:new Uint8Array(e);return{iv:t,data:await crypto.subtle.encrypt({name:Y,iv:t},this.cryptoKey,s)}}async decryptPage(e,t){if(!this.cryptoKey)throw new Error("Crypto not initialized");const s=t instanceof Uint8Array?t:new Uint8Array(t);return crypto.subtle.decrypt({name:Y,iv:e},this.cryptoKey,s)}close(){this.cryptoKey=null,this._enabled=!1}}const Z=12,ee="__aria_keymeta";function te(e){if("undefined"!=typeof Buffer)return Buffer.from(e).toString("base64");let t="";for(let s=0;se!==ee))throw new n("Cannot open with encryption: existing database has no key metadata (database was created without encryption, or key metadata was lost)","ARIA_ENCRYPT_CONFIG_ERROR");const e=await this.crypto.init(this.password),t=await this.crypto.encryptPage((new TextEncoder).encode("metona-sqlark-encryption-verifier").buffer),s=new Uint8Array(Z+t.data.byteLength);s.set(t.iv,0),s.set(new Uint8Array(t.data),Z);const i=JSON.stringify({salt:te(e),verifier:te(s)});await this.inner.write(ee,(new TextEncoder).encode(i).buffer)}this.opened=!0}async close(){await this.inner.close(),this.crypto.close(),this.opened=!1}isOpen(){return this.opened}async read(e){this.ensureReady();const t=await this.inner.read(e);return null===t?null:this.decrypt(t)}async write(e,t){this.ensureReady(),await this.inner.write(e,await this.encrypt(t))}async writeMany(e){this.ensureReady();const t={};for(const[s,n]of Object.entries(e))t[s]=await this.encrypt(n);await this.inner.writeMany(t)}async delete(e){this.ensureReady(),await this.inner.delete(e)}async deleteMany(e){this.ensureReady(),await this.inner.deleteMany(e)}async listKeys(){return this.ensureReady(),this.inner.listKeys()}async exists(e){return this.ensureReady(),this.inner.exists(e)}async clear(){const e=(await this.inner.listKeys()).filter(e=>e!==ee);e.length>0&&await this.inner.deleteMany(e)}ensureReady(){if(!this.opened)throw new n("EncryptedBackend not opened","ARIA_DB_NOT_OPEN");if(!this.crypto.enabled)throw new n("EncryptedBackend key not initialized","ARIA_DECRYPT_ERROR")}async encrypt(e){const t=await this.crypto.encryptPage(e),s=new ArrayBuffer(Z+t.data.byteLength),n=new Uint8Array(s);return n.set(t.iv,0),n.set(new Uint8Array(t.data),Z),s}async decrypt(e){const t=new Uint8Array(e);if(t.byteLength<=Z)throw new n("Corrupted encrypted data block (too short)","ARIA_DECRYPT_ERROR");const s=t.subarray(0,Z),i=t.subarray(Z);try{return await this.crypto.decryptPage(s,i)}catch(e){if(e instanceof n)throw e;throw new n("Decryption failed (data corrupted or wrong key)","ARIA_DECRYPT_ERROR",e)}}}class ie{constructor(e,t){this.fileManager=e,this.bufferPool=t,this.pageIds=new Map}async save(e,t){const s=Math.max(1,Math.ceil(t.byteLength/w)),n=await this.bufferPool.newPages(s,b.DATA),i=[];for(let e=0;ee+t.byteLength,0),r=new Uint8Array(Math.min(i,s));let a=0;for(const e of n){const t=Math.min(e.byteLength,r.byteLength-a);if(t<=0)break;r.set(e.subarray(0,t),a),a+=t}return this.pageIds.delete(e),r}async delete(e,t){for(const e of t){this.bufferPool.removePage(e);try{await this.fileManager.freePageId(e)}catch{}}this.pageIds.delete(e)}}class re{constructor(e){this.nextPageId=0,this.metaLoaded=!1,this.dbName="",this.backend=e}async init(e){this.dbName=e;const t=await this.backend.read("__aria_meta");if(t&&t instanceof ArrayBuffer&&t.byteLength>=4){const e=new DataView(t);this.nextPageId=e.getUint32(0,!1)}else this.nextPageId=1,await this.saveMeta();this.metaLoaded=!0}async readPage(e){const t=`pg_${e}`,s=await this.backend.read(t);if(!s)return null;if(s.byteLengtht.txnId!==e);0===n.length?this.versionStore.delete(t):this.versionStore.set(t,n)}this.activeTxns.delete(e),this.txnWriteKeys.delete(e)}writeVersion(e,t,s,n){const i=`${e}.${t}`,r=this.versionStore.get(i)??[],a={txnId:n,data:s,prevVersion:r.length>0?r[r.length-1]:null,committed:!1};r.push(a),this.versionStore.set(i,r),this.txnWriteKeys.get(n)?.add(i)}deleteVersion(e,t,s){this.writeVersion(e,t,{__mvcc_tombstone:!0},s)}discardVersions(e){const t=this.txnWriteKeys.get(e);if(t)for(const s of t){const t=this.versionStore.get(s);if(!t)continue;const n=t.filter(t=>t.txnId!==e);0===n.length?this.versionStore.delete(s):this.versionStore.set(s,n)}}gc(e=100){for(const[t,s]of this.versionStore){if(s.length<=e)continue;const n=s.slice(s.length-e);this.versionStore.set(t,n)}}getGlobalLSN(){return this.globalCommitLsn}}function oe(e,t){const s=new ArrayBuffer(w);return function(e,t,s){const n=new DataView(e);n.setUint32(0,t,!1),n.setUint8(4,s),n.setUint16(5,16,!1),n.setUint16(7,e.byteLength,!1),n.setUint16(9,0,!1),n.setUint32(11,0,!1),n.setUint8(15,0)}(s,e,t),{pageId:e,type:t,data:s,dirty:!0,pins:0,prev:null,next:null,lastAccess:Date.now()}}class he{constructor(){this.head=null,this.tail=null,this._size=0}get size(){return this._size}moveToHead(e){this.head!==e&&(null!==e.prev||null!==e.next||this.head===e||this.tail===e?this.detach(e):this._size++,e.prev=null,e.next=this.head,this.head&&(this.head.prev=e),this.head=e,this.tail||(this.tail=e))}remove(e){(null!==e.prev||null!==e.next||this.head===e||this.tail===e)&&(this.detach(e),this._size=Math.max(0,this._size-1))}detach(e){e.prev?e.prev.next=e.next:this.head===e&&(this.head=e.next),e.next?e.next.prev=e.prev:this.tail===e&&(this.tail=e.prev),e.prev=null,e.next=null}clear(){this.head=null,this.tail=null,this._size=0}getLRU(){return this.tail}}class ce{constructor(e,t){this.lru=new he,this.capacity=e,this.onEvict=t}access(e){e.lastAccess=Date.now(),this.lru.moveToHead(e)}add(e){this.access(e)}remove(e){this.lru.remove(e)}async evictIfNeeded(e){let t=0;for(;this.lru.size+e>this.capacity&&this.lru.size>0;){const e=this.findEvictionCandidate();if(!e)break;e.dirty&&(await this.onEvict(e),e.dirty=!1),this.lru.remove(e),t++}return t}findEvictionCandidate(){let e=this.lru.getLRU();for(;e;){if(0===e.pins&&!e.dirty)return e;e=e.prev}for(e=this.lru.getLRU();e;){if(0===e.pins)return e;e=e.prev}return null}clear(){this.lru.clear()}}class le{constructor(e,t=256){this.pages=new Map,this.nextPageId=0,this.pageIO=e,this.eviction=new ce(t,async e=>{e.dirty&&(await this.pageIO.writePage(e.pageId,e.data),e.dirty=!1)})}async getPage(e){let t=this.pages.get(e);if(t)return this.eviction.access(t),t.pins++,t;const s=await this.pageIO.readPage(e);return s?(await this.eviction.evictIfNeeded(1),t={pageId:e,type:new DataView(s).getUint8(4),data:s,dirty:!1,pins:1,prev:null,next:null,lastAccess:Date.now()},this.pages.set(e,t),this.eviction.add(t),t):null}async newPages(e,t=b.DATA){if(e<=0)return[];let s;if("function"==typeof this.pageIO.allocatePageIds)s=await this.pageIO.allocatePageIds(e);else{s=[];for(let t=0;t0&&e.pins--}markDirty(e){e.dirty=!0}async flushPage(e){const t=this.pages.get(e);t&&t.dirty&&(await this.pageIO.writePage(e,t.data),t.dirty=!1)}async flushAll(){for(const[,e]of this.pages)e.dirty&&(await this.pageIO.writePage(e.pageId,e.data),e.dirty=!1)}removePage(e){const t=this.pages.get(e);t&&(this.eviction.remove(t),this.pages.delete(e))}async clear(){await this.flushAll(),this.pages.clear(),this.eviction.clear()}}class ue{constructor(e={}){this.name="aria",this.opened=!1,this.dbName="",this.dbLock=null,this.schemas=new Map,this.tablePKs=new Map,this.opCounter=0,this.secondaryIndexes=new Map,this.mvcc=new ae,this.currentTxnId=null,this.txnSnapshot=null,this.gcCounter=0,this.savepoints=new Map,this.config={...I,...e}}async open(e,t){if(!this.opened)try{await this.openInternal(e)}catch(t){if(this.dbLock){try{await this.dbLock.release()}catch{}this.dbLock=null}if(t instanceof n)throw t;throw new n(`Failed to open AriaEngine database "${e}"`,"ARIA_OPEN_ERROR",t)}}async openInternal(e){this.dbName=e;const t=new V;let s;if(this.dbLock=t,await t.acquire(e),s="opfs"===this.config.storageBackend?new J:"indexeddb"===this.config.storageBackend?new W:new G,await s.open(e),this.config.encryption?.password)this.backend=new ne(s,this.config.encryption.password);else if(this.backend=s,await s.exists("__aria_keymeta"))throw await s.close(),new n("Database is encrypted: provide encryption.password to open it","ARIA_ENCRYPT_REQUIRED");await this.backend.open(e),this.fileManager=new re(this.backend),await this.fileManager.init(e),this.bufferPool=new le(this.fileManager,this.config.bufferPoolPages);const i=this.createSSTableStore("main");this.lsm=new U({memtableSizeThreshold:this.config.memtableSizeThreshold,levelSizeMultiplier:this.config.levelSizeMultiplier,blockSize:this.config.pageSize,bloomBitsPerKey:this.config.bloomFilterBitsPerKey,cacheLimitBytes:this.config.bufferPoolPages*this.config.pageSize,sstableStore:i}),this.wal=new P(new q(this.backend),this.config.walEnabled,this.config.walSyncMode),await this.loadSchemas();for(const[e,t]of this.schemas){const s=this.tablePKs.get(e);for(const[n,i]of Object.entries(t.columns))if((i.index||i.unique)&&n!==s){const t=`${e}:idx:${n}`;if(!this.secondaryIndexes.has(t)){const s=new U({memtableSizeThreshold:this.config.memtableSizeThreshold,levelSizeMultiplier:this.config.levelSizeMultiplier,blockSize:this.config.pageSize,bloomBitsPerKey:this.config.bloomFilterBitsPerKey,cacheLimitBytes:this.config.bufferPoolPages*this.config.pageSize,sstableStore:this.createSSTableStore(`idx_${e}_${n}`)});await s.init(),this.secondaryIndexes.set(t,s)}}}await this.lsm.init();const r=new Set,a=[];await this.wal.recover(e=>a.push(e));for(const e of a)e.type===E.COMMIT&&r.add(e.txnId),e.type===E.ROLLBACK&&r.delete(e.txnId);for(const e of a)(0===e.txnId||r.has(e.txnId))&&(e.type===E.DROP_TABLE?await this.applyDropTableRecovery(e.tableName):this.applyWALRecord(e));if(a.length>0){await this.lsm.flush(),await this.wal.checkpoint();for(const e of this.schemas.keys())await this.reindexTableInternal(e)}this.checkpointManager=new H(this.lsm,{checkpoint:async()=>{this.currentTxnId||await this.wal.checkpoint()},flush:async()=>{this.currentTxnId||await this.wal.flush()},getBufferedBytes:()=>this.wal.getBufferedBytes(),getBufferedCount:()=>this.wal.getBufferedCount()},{flushAll:async()=>{await this.lsm.flush()}},this.config.checkpointInterval,this.config.walSizeThreshold),this.opened=!0}async close(){if(this.opened){await this.persistSchemas(),await this.lsm.flush();for(const e of this.secondaryIndexes.values())await e.flush();await this.bufferPool.flushAll(),await this.wal.flush(),await this.wal.checkpoint(),await this.backend.close(),this.dbLock&&(await this.dbLock.release(),this.dbLock=null),this.schemas.clear(),this.tablePKs.clear(),this.secondaryIndexes.clear(),this.mvcc=new ae,this.currentTxnId=null,this.txnSnapshot=null,this.savepoints.clear(),this.opCounter=0,this.opened=!1}}async repair(){this.ensureOpen(),await this.lsm.validateAll(),await this.bufferPool.clear(),await this.lsm.flush(),await this.wal.checkpoint();for(const e of this.schemas.keys())await this.reindexTable(e);const e=this.backend;if("function"==typeof e.cleanupStaleFiles)try{await e.cleanupStaleFiles()}catch{}await this.cleanupOrphanPages()}async cleanupOrphanPages(){const e=(await this.backend.listKeys()).filter(e=>/^pg_\d+$/.test(e));if(0===e.length)return;const t=new Set,s=async e=>{const s="main"===e?"__aria_lsm_meta":`__aria_lsm_meta_${e}`,n=await this.backend.read(s);if(n)try{const e=JSON.parse((new TextDecoder).decode(n));for(const s of e)if(s.pageIds)for(const e of s.pageIds)t.add(e)}catch{}};await s("main");for(const[e,t]of this.schemas)for(const[n,i]of Object.entries(t.columns))(i.index||i.unique)&&await s(`idx_${e}_${n}`);const n=e.map(e=>Number(e.slice(3))).filter(e=>!t.has(e));n.length>0&&await this.backend.deleteMany(n.map(e=>`pg_${e}`))}async clearAll(){this.ensureOpen(),await this.backend.clear(),await this.bufferPool.clear(),await this.fileManager.clearAll(),this.schemas.clear(),this.tablePKs.clear(),this.secondaryIndexes.clear(),this.lsm.clear(),this.mvcc=new ae,this.currentTxnId=null,this.txnSnapshot=null,this.savepoints.clear(),this.opCounter=0,await this.persistSchemas(),await this.wal.checkpoint()}isOpen(){return this.opened}async getMeta(e){const t=await this.backend.read(`__meta_${e}`);return t?(new TextDecoder).decode(t):null}async setMeta(e,t){await this.backend.write(`__meta_${e}`,(new TextEncoder).encode(t).buffer)}async createTable(e){if(this.ensureOpen(),this.ensureNoDDLInTransaction("CREATE TABLE"),this.schemas.has(e.name))throw new n(`Table "${e.name}" already exists`,"TABLE_EXISTS");this.schemas.set(e.name,e),this.tablePKs.set(e.name,this.getPK(e));for(const[t,s]of Object.entries(e.columns))if(s.index||s.unique){const s=`${e.name}:idx:${t}`;if(!this.secondaryIndexes.has(s)){const n=new U({memtableSizeThreshold:this.config.memtableSizeThreshold,levelSizeMultiplier:this.config.levelSizeMultiplier,blockSize:this.config.pageSize,bloomBitsPerKey:this.config.bloomFilterBitsPerKey,cacheLimitBytes:this.config.bufferPoolPages*this.config.pageSize,sstableStore:this.createSSTableStore(`idx_${e.name}_${t}`)});await n.init(),this.secondaryIndexes.set(s,n)}}await this.persistSchemas(),await this.wal.append({type:E.CREATE_TABLE,txnId:0,tableName:e.name,key:"",data:{schema:JSON.stringify(e)}})}async dropTable(e){this.ensureOpen(),this.ensureNoDDLInTransaction("DROP TABLE"),this.ensureTable(e);const t=await this.getAllRows(e);for(const s of t){const t=this.tablePKs.get(e);this.lsm.delete(`${e}:${s[t]}`)}await this.cleanupTableIndexes(e),this.schemas.delete(e),this.tablePKs.delete(e),await this.persistSchemas(),await this.wal.append({type:E.DROP_TABLE,txnId:0,tableName:e,key:""})}async cleanupTableIndexes(e){const t=`${e}:idx:`,s=[];for(const[e,n]of this.secondaryIndexes)if(e.startsWith(t)){s.push(e);try{await n.clear()}catch{}}for(const e of s)this.secondaryIndexes.delete(e)}async hasTable(e){return this.schemas.has(e)}async getTableNames(){return Array.from(this.schemas.keys())}async getTableSchema(e){return this.schemas.get(e)??null}async insert(e,t){this.ensureOpen(),this.ensureTable(e);const s=this.schemas.get(e),i=this.tablePKs.get(e),r=[],a=[];for(const o of t){const t=this.validateRow(s,o),h=String(t[i]),c=`${e}:${h}`;await this.lsm.prefetchKeys([c]);const l=this.currentTxnId?this.txnSnapshot?.get(c)??this.lsm.get(c):this.lsm.get(c);if(l&&!l.__txn_deleted)throw new n(`Duplicate primary key "${h}" in table "${e}"`,"DUPLICATE_KEY");this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(c,t),this.mvcc.writeVersion(e,h,t,this.currentTxnId)):this.lsm.put(c,t),this.updateSecondaryIndexes(e,h,t,null),r.push(h),a.push({type:E.INSERT,txnId:this.currentTxnId??0,tableName:e,key:h,data:t})}return await this.wal.appendBatch(a),this.opCounter+=t.length,this.checkMemoryBudget(),await this.checkpointManager.tick(),this.tryGC(),r}async find(e,t){let s;this.ensureOpen(),this.ensureTable(e);const n=await this.tryIndexLookup(e,t);s=null!==n?n:await this.getAllRows(e),s=this.mergeTxnSnapshot(e,s),t.where&&Object.keys(t.where).length>0&&(s=s.filter(e=>a(e,t.where))),t.orderBy&&t.orderBy.length>0&&(s=c(s,t.orderBy));const i=t.offset??0,r=t.limit??s.length;return s=s.slice(i,i+r),t.columns&&t.columns.length>0&&"*"!==t.columns[0]&&(s=s.map(e=>u(e,t.columns))),this.trimAllCaches(),s}async update(e,t,s){this.ensureOpen(),this.ensureTable(e);const n=this.schemas.get(e),i=await this.getAllRows(e);let r=0;const o=[],h=new Set;for(const c of i){const i=this.tablePKs.get(e),l=`${e}:${c[i]}`;if(!t.where||0===Object.keys(t.where).length||a(c,t.where)){const t={...c,...s};this.validateRow(n,t);const a=String(t[i]),u=a!==String(c[i]);u&&await this.applyForeignKeyUpdateRules(e,String(c[i]),a,o,h),this.currentTxnId&&this.txnSnapshot?(u&&(this.txnSnapshot.set(l,{__txn_deleted:!0}),this.mvcc.deleteVersion(e,String(c[i]),this.currentTxnId)),this.txnSnapshot.set(`${e}:${a}`,t),this.mvcc.writeVersion(e,a,t,this.currentTxnId)):(u&&this.lsm.delete(l),this.lsm.put(`${e}:${a}`,t)),r++,u&&o.push({type:E.DELETE,txnId:this.currentTxnId??0,tableName:e,key:String(c[i])}),o.push({type:E.UPDATE,txnId:this.currentTxnId??0,tableName:e,key:a,data:t}),this.updateSecondaryIndexes(e,a,t,u?c:null)}}return await this.wal.appendBatch(o),this.opCounter+=r,await this.checkpointManager.tick(),this.trimAllCaches(),r}async applyForeignKeyUpdateRules(e,t,s,i,r){const a=`${e}:${t}`;if(!r.has(a)){r.add(a);for(const[s,i]of this.schemas)if(s!==e)for(const[r,a]of Object.entries(i.columns)){if(!a.references||!a.onUpdate)continue;const[i]=a.references.split(".");if(i===e&&("RESTRICT"===a.onUpdate&&(await this.getAllRows(s)).some(e=>String(e[r])===t)))throw new n(`Cannot update "${e}" key "${t}": foreign key "${r}" in "${s}" has dependent rows`,"FOREIGN_KEY_VIOLATION")}for(const[n,r]of this.schemas)if(n!==e)for(const[a,o]of Object.entries(r.columns)){if(!o.references||!o.onUpdate)continue;const[r]=o.references.split(".");if(r!==e)continue;if("CASCADE"!==o.onUpdate&&"SET NULL"!==o.onUpdate)continue;const h=await this.getAllRows(n);for(const e of h){if(String(e[a])!==t)continue;const r=this.tablePKs.get(n),h=String(e[r]),c={...e,[a]:"CASCADE"===o.onUpdate?s:null},l=`${n}:${h}`;this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(l,c),this.mvcc.writeVersion(n,h,c,this.currentTxnId)):this.lsm.put(l,c),this.updateSecondaryIndexes(n,h,c,e),i.push({type:E.UPDATE,txnId:this.currentTxnId??0,tableName:n,key:h,data:c})}}}}async delete(e,t){this.ensureOpen(),this.ensureTable(e);const s=await this.getAllRows(e);let n=0;const i=[],r=new Set;for(const o of s){const s=this.tablePKs.get(e),h=`${e}:${o[s]}`;t.where&&0!==Object.keys(t.where).length&&!a(o,t.where)||(n+=await this.applyForeignKeyRules(e,String(o[s]),i,r),this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(h,{__txn_deleted:!0}),this.mvcc.deleteVersion(e,String(o[s]),this.currentTxnId)):this.lsm.delete(h),n++,i.push({type:E.DELETE,txnId:this.currentTxnId??0,tableName:e,key:String(o[s])}),this.updateSecondaryIndexes(e,String(o[s]),null,o))}return await this.wal.appendBatch(i),this.opCounter+=n,await this.checkpointManager.tick(),this.trimAllCaches(),n}async applyForeignKeyRules(e,t,s,i){let r=0;const a=`${e}:${t}`;if(i.has(a))return 0;i.add(a);for(const[a,o]of this.schemas)if(a!==e)for(const[h,c]of Object.entries(o.columns)){if(!c.references||!c.onDelete)continue;const[o]=c.references.split(".");if(o!==e)continue;const l=(await this.getAllRows(a)).filter(e=>String(e[h])===t);if("RESTRICT"===c.onDelete&&l.length>0)throw new n(`Cannot delete from "${e}": foreign key "${h}" in "${a}" has dependent rows`,"FOREIGN_KEY_VIOLATION");if("CASCADE"===c.onDelete){const e=this.tablePKs.get(a);for(const t of l){const n=String(t[e]);r+=await this.applyForeignKeyRules(a,n,s,i);const o=`${a}:${n}`;this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(o,{__txn_deleted:!0}),this.mvcc.deleteVersion(a,n,this.currentTxnId)):this.lsm.delete(o),this.updateSecondaryIndexes(a,n,null,t),s.push({type:E.DELETE,txnId:this.currentTxnId??0,tableName:a,key:n}),r++}}else if("SET NULL"===c.onDelete){const e=this.tablePKs.get(a);for(const t of l){const n=String(t[e]),i={...t,[h]:null},r=`${a}:${n}`;this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(r,i),this.mvcc.writeVersion(a,n,i,this.currentTxnId)):this.lsm.put(r,i),this.updateSecondaryIndexes(a,n,i,t),s.push({type:E.UPDATE,txnId:this.currentTxnId??0,tableName:a,key:n,data:i})}}}return r}async findStream(e,t,s){this.ensureOpen(),this.ensureTable(e);const n=!!(t.where&&Object.keys(t.where).length>0),i=t.columns&&t.columns.length>0&&"*"!==t.columns[0]?e=>u(e,t.columns):null,r=t.limit??1/0,o=t.offset??0,h=this.tablePKs.get(e),c=`${e}:`;let l=0,d=0;const f=e=>!(!n||a(e,t.where))||(d{if(l>=r)return;const s={...t};s[h]=e.slice(c.length),f(s)}),l}async count(e,t){this.ensureOpen(),this.ensureTable(e);const s=await this.getAllRows(e);return this.trimAllCaches(),t?.where&&0!==Object.keys(t.where).length?s.filter(e=>a(e,t.where)).length:s.length}async clear(e){this.ensureOpen(),this.ensureTable(e);const t=await this.getAllRows(e),s=[];for(const n of t){const t=this.tablePKs.get(e),i=`${e}:${n[t]}`;this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(i,{__txn_deleted:!0}),this.mvcc.deleteVersion(e,String(n[t]),this.currentTxnId)):this.lsm.delete(i),s.push({type:E.DELETE,txnId:this.currentTxnId??0,tableName:e,key:String(n[t])}),this.updateSecondaryIndexes(e,String(n[t]),null,n)}await this.wal.appendBatch(s),this.opCounter+=t.length,await this.checkpointManager.tick(),this.tryGC()}async alterTable(e,t,s){this.ensureOpen(),this.ensureNoDDLInTransaction("ALTER TABLE"),this.ensureTable(e);const i=this.schemas.get(e);if("ADD"===t){if(i.columns[s.name])throw new n(`Column "${s.name}" already exists in table "${e}"`,"COLUMN_EXISTS");return i.columns[s.name]=s,void await this.persistSchemas()}if(!i.columns[s.name])throw new n(`Column "${s.name}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");if(i.columns[s.name].index||i.columns[s.name].unique){const t=`${e}:idx:${s.name}`,n=this.secondaryIndexes.get(t);if(n){try{await n.clear()}catch{}this.secondaryIndexes.delete(t)}}delete i.columns[s.name],await this.persistSchemas();const r=`${e}:`,a=`${r}￿`;await this.lsm.prefetchRange(r,a);const o=this.lsm.rangeScan(r,a),h=[];for(const[t,n]of o){if(!(s.name in n))continue;const i={...n};delete i[s.name],this.lsm.put(t,i);const a=t.slice(r.length);this.updateSecondaryIndexes(e,a,i,n),h.push({type:E.UPDATE,txnId:this.currentTxnId??0,tableName:e,key:a,data:i})}await this.wal.appendBatch(h),this.opCounter+=h.length,await this.checkpointManager.tick(),this.trimAllCaches()}async createIndex(e,t,s){this.ensureOpen(),this.ensureNoDDLInTransaction("CREATE INDEX"),this.ensureTable(e);const i=this.schemas.get(e).columns[t];if(!i)throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");const r=`${e}:idx:${t}`;if(this.secondaryIndexes.has(r))return;i.index=!0,s&&(i.unique=!0);const a=new U({memtableSizeThreshold:this.config.memtableSizeThreshold,levelSizeMultiplier:this.config.levelSizeMultiplier,blockSize:this.config.pageSize,bloomBitsPerKey:this.config.bloomFilterBitsPerKey,cacheLimitBytes:this.config.bufferPoolPages*this.config.pageSize,sstableStore:this.createSSTableStore(`idx_${e}_${t}`)});await a.init(),this.secondaryIndexes.set(r,a);const o=this.tablePKs.get(e),h=await this.getAllRows(e);for(const e of h){const s=e[t];null!=s&&a.put(`${String(s)}:${e[o]}`,{pk:e[o]})}await a.flush(),await this.persistSchemas()}async dropIndex(e,t,s){this.ensureOpen(),this.ensureNoDDLInTransaction("DROP INDEX"),this.ensureTable(e);const i=this.schemas.get(e).columns[t];if(!i)throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");if(i.primaryKey)throw new n(`Cannot drop primary key index on column "${t}"`,"NOT_SUPPORTED");if(!i.index&&!i.unique&&!this.secondaryIndexes.has(`${e}:idx:${t}`))throw new n(`Index on column "${t}" does not exist in table "${e}"`,"INDEX_NOT_FOUND");i.index=!1,i.unique=!1;const r=`${e}:idx:${t}`,a=this.secondaryIndexes.get(r);a&&(await a.clear(),this.secondaryIndexes.delete(r)),await this.persistSchemas()}async beginTransaction(){if(this.currentTxnId)throw new n("Transaction already in progress","TX_ACTIVE");this.currentTxnId=this.mvcc.beginTransaction(),this.txnSnapshot=new Map,await this.wal.append({type:E.BEGIN,txnId:this.currentTxnId,tableName:"",key:""})}async commitTransaction(){if(!this.currentTxnId)throw new n("No active transaction","TX_NONE");if(await this.wal.append({type:E.COMMIT,txnId:this.currentTxnId,tableName:"",key:""}),await this.wal.flush(),this.txnSnapshot)for(const[e,t]of this.txnSnapshot)t.__txn_deleted?this.lsm.delete(e):this.lsm.put(e,t);this.mvcc.commitTransaction(this.currentTxnId),this.currentTxnId=null,this.txnSnapshot=null}async rollbackTransaction(){if(!this.currentTxnId)throw new n("No active transaction","TX_NONE");const e=new Set;if(this.txnSnapshot)for(const t of this.txnSnapshot.keys()){const s=t.indexOf(":");s>0&&e.add(t.slice(0,s))}this.mvcc.rollbackTransaction(this.currentTxnId),this.txnSnapshot=null,await this.wal.append({type:E.ROLLBACK,txnId:this.currentTxnId,tableName:"",key:""}),this.currentTxnId=null;for(const t of e)this.schemas.has(t)&&await this.reindexTable(t)}async savepoint(e){if(!this.currentTxnId)throw new n("No active transaction for savepoint","TX_NONE");if(this.savepoints.has(e))throw new n(`Savepoint "${e}" already exists`,"SAVEPOINT_EXISTS");this.savepoints.set(e,{txnId:this.currentTxnId,snapshot:this.txnSnapshot?new Map(this.txnSnapshot):null})}async rollbackToSavepoint(e){const t=this.savepoints.get(e);if(!t)throw new n(`Savepoint "${e}" not found`,"SAVEPOINT_NOT_FOUND");this.txnSnapshot=t.snapshot?new Map(t.snapshot):null,this.mvcc.discardVersions(this.currentTxnId);let s=!1;for(const[t]of this.savepoints)t!==e?s&&this.savepoints.delete(t):s=!0}async releaseSavepoint(e){if(!this.savepoints.has(e))throw new n(`Savepoint "${e}" not found`,"SAVEPOINT_NOT_FOUND");this.savepoints.delete(e)}async backup(){this.ensureOpen();const e={};for(const t of this.schemas.keys())e[t]=await this.getAllRows(t);return e}async getAllRows(e){const t=this.tablePKs.get(e),s=`${e}:`;await this.lsm.prefetchRange(s,`${s}￿`);const n=this.lsm.rangeScan(s,`${s}￿`).map(([e,n])=>{const i={...n};return i[t]=e.slice(s.length),i});return this.mergeTxnSnapshot(e,n)}mergeTxnSnapshot(e,t){if(!this.currentTxnId||!this.txnSnapshot)return t;const s=this.tablePKs.get(e),n=`${e}:`;for(const[e,i]of this.txnSnapshot){if(!e.startsWith(n))continue;const r=e.slice(n.length),a=i.__txn_deleted,o=t.findIndex(e=>e[s]===r);if(a)o>=0&&t.splice(o,1);else{const e={...i,[s]:r};o>=0?t[o]=e:t.push(e)}}return t}getPK(e){for(const[t,s]of Object.entries(e.columns))if(s.primaryKey)return t;return Object.keys(e.columns)[0]}validateRow(e,t){const s={};for(const[i,r]of Object.entries(e.columns)){let a=t[i];if(void 0===a&&void 0!==r.default&&(a=r.default),r.required&&null==a)throw new n(`Column "${i}" is required in table "${e.name}"`,"VALIDATION_ERROR");null!=a&&this.checkType(i,r.type,a,r),void 0!==a&&(s[i]=a)}return s}checkType(e,t,s,i){!function(e,t,s,i,r){const a=typeof i;switch(s){case"string":if("string"!==a)throw new n(`Column "${t}" in table "" expects string, got ${a}`,"TYPE_ERROR");if(void 0!==r?.maxLength&&i.length>r.maxLength)throw new n(`Column "${t}" in table "" exceeds max length ${r.maxLength}`,"VALIDATION_ERROR");break;case"number":if("number"!==a)throw new n(`Column "${t}" in table "" expects number, got ${a}`,"TYPE_ERROR");if(void 0!==r?.min&&ir.max)throw new n(`Column "${t}" in table "" value ${i} above maximum ${r.max}`,"VALIDATION_ERROR");break;case"boolean":if("boolean"!==a)throw new n(`Column "${t}" in table "" expects boolean, got ${a}`,"TYPE_ERROR");break;case"date":if("string"!==a||isNaN(Date.parse(i)))throw new n(`Column "${t}" in table "" expects valid date string, got ${typeof i}`,"TYPE_ERROR");break;case"json":if("object"!==a)throw new n(`Column "${t}" in table "" expects object/array, got ${a}`,"TYPE_ERROR")}}(0,e,t,s,i)}async persistSchemas(){const e={};for(const[t,s]of this.schemas)e[t]=s.columns;const t=JSON.stringify(e),s=(new TextEncoder).encode(t).buffer;await this.backend.write("__aria_schemas",s)}async loadSchemas(){const e=await this.backend.read("__aria_schemas");if(e)try{const t=(new TextDecoder).decode(e),s=JSON.parse(t);for(const[e,t]of Object.entries(s)){const s={name:e,columns:t};this.schemas.set(e,s),this.tablePKs.set(e,this.getPK(s))}}catch{}}createSSTableStore(e){const t="main"===e?"sst_":`sst_${e}_`,s="main"===e?"__aria_lsm_meta":`__aria_lsm_meta_${e}`;let n=0,i=!1;const r=this.isPageStorage()?new ie(this.fileManager,this.bufferPool):null,a=e=>(new TextEncoder).encode(e).buffer,o=async()=>{const e=await this.backend.read(s);if(!e)return[];try{return JSON.parse((new TextDecoder).decode(e))}catch{return[]}};return{save:async(e,s)=>{if(r)return void await r.save(e,s);let n=s.buffer.slice(s.byteOffset,s.byteOffset+s.byteLength);if(this.config.compression){const e=function(e){if(0===e.byteLength){const e=new Uint8Array(4);return new DataView(e.buffer).setUint32(0,0,!0),e}const t=e.byteLength+Math.ceil(e.byteLength/15)+8,s=new Uint8Array(t);let n=0,i=0,r=0;for(;n=4&&i>t&&(t=i,a=n-s)}if(t>4&&n-r<=15){const o=n-r,h=t-4;s[i++]=(15&o)<<4|15&h;for(let t=0;t>8&255,n+=t,r=n}else if(n++,n-r>=15){s[i++]=240;for(let t=0;t<15;t++)s[i++]=e[r+t];r=n}}let a=n-r;for(;a>0;){const t=Math.min(a,15);s[i++]=(15&t)<<4;for(let n=0;n{if(r){const t=(await o()).find(t=>t.id===e);if(t&&t.pageIds&&t.pageIds.length>0)return r.load(e,t.pageIds,t.totalSize)}const s=await this.backend.read(`${t}${e}`);if(!s)return null;let n=new Uint8Array(s);return this.config.compression&&(n=function(e){if(e.byteLength<4)throw new Error("LZ4 stream too short: missing header");const t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!0);if(0===t&&4===e.byteLength)return new Uint8Array(0);if(t<=0||t>1073741823)throw new Error("Invalid LZ4 header: bad original size");const s=e.subarray(4),n=new Uint8Array(t);let i=0,r=0;for(;i>4&15,o=15&e;for(let e=0;e=s.byteLength)break;const h=s[i++]|s[i++]<<8,c=o+4;for(let e=0;e{if(r){const t=(await o()).find(t=>t.id===e);t&&t.pageIds&&t.pageIds.length>0&&await r.delete(e,t.pageIds)}await this.backend.delete(`${t}${e}`)},allocateId:async()=>{if(!i){const e=await o();n=e.reduce((e,t)=>Math.max(e,t.id),0),i=!0}return++n},listMeta:o,saveMeta:async e=>{const t=await o(),n=r?.getPageIds(e.id),i=n&&n.length>0?{...e,pageIds:n}:e,h=t.findIndex(t=>t.id===e.id);h>=0?t[h]=i:t.push(i),await this.backend.write(s,a(JSON.stringify(t)))},deleteMeta:async e=>{const t=(await o()).filter(t=>t.id!==e);await this.backend.write(s,a(JSON.stringify(t)))}}}isPageStorage(){return!0===this.config.pageStorage||!1!==this.config.pageStorage&&"opfs"===this.config.storageBackend}applyWALRecord(e){switch(e.type){case E.INSERT:case E.UPDATE:e.data&&this.lsm.put(`${e.tableName}:${e.key}`,e.data);break;case E.DELETE:this.lsm.delete(`${e.tableName}:${e.key}`);break;case E.CREATE_TABLE:if(e.data?.schema)try{const t=JSON.parse(e.data.schema);this.schemas.has(t.name)||(this.schemas.set(t.name,t),this.tablePKs.set(t.name,this.getPK(t)))}catch{}case E.COMMIT:case E.ROLLBACK:case E.BEGIN:}}async applyDropTableRecovery(e){if(!e)return;await this.cleanupTableIndexes(e),this.schemas.delete(e),this.tablePKs.delete(e);const t=`${e}:`,s=`${t}￿`;await this.lsm.prefetchRange(t,s);const n=this.lsm.rangeScan(t,s);for(const[e]of n)this.lsm.delete(e)}updateSecondaryIndexes(e,t,s,n){const i=this.schemas.get(e);if(i)for(const[r,a]of Object.entries(i.columns)){if(!a.index&&!a.unique)continue;const i=`${e}:idx:${r}`,o=this.secondaryIndexes.get(i);if(o){if(n){const e=n[r];null!=e&&o.delete(`${String(e)}:${t}`)}if(s){const e=s[r];null!=e&&o.put(`${String(e)}:${t}`,{pk:t})}}}}async tryIndexLookup(e,t){if(!t.where)return null;const s=this.schemas.get(e);if(!s)return null;const n=this.tablePKs.get(e);for(const[i,r]of Object.entries(t.where)){if("$and"===i||"$or"===i||"$not"===i)continue;const t=s.columns[i];if(!(t&&(t.index||t.unique||t.primaryKey)||i===n))continue;if(i===n){if("object"!=typeof r||null===r){const t=`${e}:${r}`;await this.lsm.prefetchKeys([t]);const s=this.lsm.get(t);return s?[{...s,[n]:r}]:[]}const t=r;if("$eq"in t){const s=`${e}:${t.$eq}`;await this.lsm.prefetchKeys([s]);const i=this.lsm.get(s);return i?[{...i,[n]:t.$eq}]:[]}if("$in"in t&&Array.isArray(t.$in)){const s=t.$in.map(t=>`${e}:${t}`);await this.lsm.prefetchKeys(s);const i=[],r=new Set;for(const s of t.$in){const t=String(s);if(r.has(t))continue;const a=this.lsm.get(`${e}:${t}`);a&&(r.add(t),i.push({...a,[n]:t}))}return i}if("$gt"in t||"$gte"in t||"$lt"in t||"$lte"in t){const t=`${e}:`;await this.lsm.prefetchRange(t,`${t}￿`);const s=this.lsm.rangeScan(t,`${t}￿`),i=[];for(const[e,o]of s){const s={...o,[n]:e.slice(t.length)};a(s,{[n]:r})&&i.push(s)}return i}}const o=`${e}:idx:${i}`,h=this.secondaryIndexes.get(o);if(!h)continue;if("object"!=typeof r||null===r)return this.indexScanToRows(e,n,h,String(r),String(r));const c=r;if("$eq"in c){const t=String(c.$eq);return this.indexScanToRows(e,n,h,t,t)}if("$in"in c&&Array.isArray(c.$in)){const t=[],s=new Set;for(const i of c.$in){const r=await this.indexScanToRows(e,n,h,String(i),String(i));for(const e of r){const i=String(e[n]);s.has(i)||(s.add(i),t.push(e))}}return t}if("$gt"in c||"$gte"in c||"$lt"in c||"$lte"in c){let t="",s="￿";return void 0!==c.$gt?t=`${String(Number(c.$gt)+1)}:`:void 0!==c.$gte&&(t=`${String(c.$gte)}:`),void 0!==c.$lt?s=`${String(Number(c.$lt)-1)}:￿`:void 0!==c.$lte&&(s=`${String(c.$lte)}:￿`),this.indexScanToRows(e,n,h,t,s)}}return null}async indexScanToRows(e,t,s,n,i){const r=i.includes("￿")?i:`${i}￿`;await s.prefetchRange(n,r);const a=s.rangeScan(n,r),o=[];for(const[,e]of a){const t=e.pk;t&&o.push(t)}await this.lsm.prefetchKeys(o.map(t=>`${e}:${t}`));const h=[];for(const s of o){const n=this.lsm.get(`${e}:${s}`);n&&h.push({...n,[t]:s})}return h}tryGC(){this.gcCounter++,this.gcCounter>=10&&(this.mvcc.gc(100),this.gcCounter=0)}trimAllCaches(){this.lsm.trimCache();for(const e of this.secondaryIndexes.values())e.trimCache()}checkMemoryBudget(){const e=1024*this.config.maxMemoryMB*1024;this.lsm.getEstimatedMemory()>e&&(this.lsm.flush().catch(()=>{}),this.mvcc.gc(50))}getWALEstimatedSize(){return 200*this.wal.getBufferedCount()}async analyzeTable(e){this.ensureOpen(),this.ensureTable(e);const t=await this.getAllRows(e),s={table:e,rowCount:t.length,avgRowSize:t.length>0?Math.round(t.reduce((e,t)=>e+JSON.stringify(t).length,0)/t.length):0,indexDepth:this.lsm.getStats().levelCounts.filter(e=>e>0).length,sstableCount:this.lsm.getStats().sstableCount,memtableSize:this.lsm.getStats().memtableSize,estimatedMemory:this.lsm.getEstimatedMemory()},n=this.schemas.get(e);if(n&&t.length>0){const e={};for(const s of Object.keys(n.columns)){const n=new Set(t.map(e=>String(e[s])));e[s]={distinctValues:n.size}}s.columnStats=e}return s}async reindexTable(e){return this.ensureOpen(),this.ensureTable(e),this.reindexTableInternal(e)}async reindexTableInternal(e){const t=this.schemas.get(e);if(!t)return 0;let s=0;for(const[n,i]of Object.entries(t.columns)){if(!i.index&&!i.unique)continue;const t=`${e}:idx:${n}`,r=this.secondaryIndexes.get(t);if(!r)continue;await r.clear(),s++;const a=await this.getAllRows(e);for(const t of a){const s=t[n];null!=s&&r.put(`${String(s)}:${t[this.tablePKs.get(e)]}`,{pk:t[this.tablePKs.get(e)]})}}return s}async vacuum(){this.ensureOpen(),await this.lsm.flush();for(let e=0;e<6;e++)this.lsm.getStats().levelCounts[e]>=2&&await this.lsm.compactLevel(e);const e=this.mvcc.getGlobalLSN();return this.mvcc.gc(10),{compactedLevels:6,gcVersions:e}}ensureOpen(){if(!this.opened)throw new n("AriaEngine not opened","DB_NOT_OPEN")}ensureNoDDLInTransaction(e){if(this.currentTxnId)throw new n(`${e} is not supported inside a transaction (AriaEngine DDL is not transactional)`,"NOT_SUPPORTED")}ensureTable(e){if(!this.schemas.has(e))throw new n(`Table "${e}" does not exist`,"TABLE_NOT_FOUND")}}class de{constructor(e="indexeddb"){this.name="hybrid",this.dbName="",this.version=1,this.memoryEngine=new d,this.diskEngineType=e,this.diskEngine="opfs"===e?new m:new f}async open(e,t){this.dbName=e,this.version=t,await this.diskEngine.open(e,t),await this.memoryEngine.open(e,t),await this.reloadMemoryFromDisk()}async reloadMemoryFromDisk(){await this.memoryEngine.close(),await this.memoryEngine.open(this.dbName,this.version);const e=await this.diskEngine.getTableNames();for(const t of e){const e=await this.diskEngine.getTableSchema(t);if(!e)continue;await this.memoryEngine.createTable(e);const s=await this.diskEngine.find(t,{table:t});if(s.length>0)try{await this.memoryEngine.insert(t,s)}catch(e){}}}async close(){await this.memoryEngine.close(),await this.diskEngine.close()}isOpen(){return this.memoryEngine.isOpen()&&this.diskEngine.isOpen()}async repair(){"function"==typeof this.diskEngine.repair&&await this.diskEngine.repair(),await this.reloadMemoryFromDisk()}async clearAll(){if("function"==typeof this.diskEngine.clearAll)await this.diskEngine.clearAll();else{const e=await this.diskEngine.getTableNames();for(const t of e)await this.diskEngine.dropTable(t)}if("function"==typeof this.memoryEngine.clearAll)await this.memoryEngine.clearAll();else{const e=await this.memoryEngine.getTableNames();for(const t of e)await this.memoryEngine.dropTable(t)}}async getMeta(e){return"function"==typeof this.diskEngine.getMeta?this.diskEngine.getMeta(e):null}async setMeta(e,t){"function"==typeof this.diskEngine.setMeta&&await this.diskEngine.setMeta(e,t)}async createTable(e){await this.memoryEngine.createTable(e),await this.diskEngine.createTable(e)}async dropTable(e){await this.memoryEngine.dropTable(e),await this.diskEngine.dropTable(e)}async hasTable(e){return this.memoryEngine.hasTable(e)}async getTableNames(){return this.memoryEngine.getTableNames()}async getTableSchema(e){return this.memoryEngine.getTableSchema(e)}async alterTable(e,t,s){if(await this.memoryEngine.alterTable(e,t,s),"function"==typeof this.diskEngine.alterTable)await this.diskEngine.alterTable(e,t,s);else{const n=await this.diskEngine.getTableSchema(e);n&&"DROP"===t&&delete n.columns[s.name]}}async insert(e,t){const s=await this.memoryEngine.insert(e,t);return await this.diskEngine.insert(e,t),s}async find(e,t){return this.memoryEngine.find(e,t)}async findStream(e,t,s){return this.memoryEngine.findStream(e,t,s)}async update(e,t,s){const n=await this.memoryEngine.update(e,t,s);return await this.diskEngine.update(e,t,s),n}async delete(e,t){const s=await this.memoryEngine.delete(e,t);return await this.diskEngine.delete(e,t),s}async count(e,t){return this.memoryEngine.count(e,t)}async clear(e){await this.memoryEngine.clear(e),await this.diskEngine.clear(e)}async createIndex(e,t,s){await this.memoryEngine.createIndex(e,t,s),"function"==typeof this.diskEngine.createIndex&&await this.diskEngine.createIndex(e,t,s)}async dropIndex(e,t,s){await this.memoryEngine.dropIndex(e,t,s),"function"==typeof this.diskEngine.dropIndex&&await this.diskEngine.dropIndex(e,t,s)}async beginTransaction(){await this.memoryEngine.beginTransaction(),await this.diskEngine.beginTransaction()}async commitTransaction(){await this.diskEngine.commitTransaction();try{await this.memoryEngine.commitTransaction()}catch(e){throw new n("Hybrid commit failed: memory engine error after disk commit (disk data is committed)","TX_COMMIT_ERROR",e)}}async rollbackTransaction(){await this.memoryEngine.rollbackTransaction(),await this.diskEngine.rollbackTransaction()}getDiskEngineType(){return this.diskEngineType}getMemoryEngine(){return this.memoryEngine}}class fe{constructor(e,t,s=["*"],n){this.engine=e,this.tableName=t,this._columns=s,this._where={},this._orderBy=[],this._joins=[],this._executor=n}as(e){return this._alias=e,this}innerJoin(e,t,s){return this._addJoin("INNER",e,t,s)}leftJoin(e,t,s){return this._addJoin("LEFT",e,t,s)}rightJoin(e,t,s){return this._addJoin("RIGHT",e,t,s)}crossJoin(e,t){return this._addJoin("CROSS",e,{},t)}join(e,t,s){return this._addJoin("INNER",e,t,s)}_addJoin(e,t,s,n){return this._joins.push({type:e,table:t,on:s,alias:n}),this}where(e){return this._where={...this._where,...e},this}orderBy(e,t="asc"){return this._orderBy.push({column:e,direction:t}),this}limit(e){return this._limit=e,this}offset(e){return this._offset=e,this}async execute(){if(this._joins.length>0&&this._executor){const e=this.toAST();return this._executor.execute(e)}return this.engine.find(this.tableName,{table:this.tableName,columns:this._columns,where:this._where,orderBy:this._orderBy.length>0?this._orderBy:void 0,limit:this._limit,offset:this._offset})}toAST(){return{type:"SELECT",columns:this._columns,from:this.tableName,alias:this._alias,joins:this._joins.length>0?[...this._joins]:void 0,where:this._where,orderBy:this._orderBy.length>0?this._orderBy:void 0,limit:this._limit,offset:this._offset}}}class pe{constructor(e,t,s,n,i){this.engine=e,this.tableName=t,this._updates=s,this._where={},this.onWrite=n,this.onHooks=i}where(e){return this._where={...this._where,...e},this}async execute(){const e={table:this.tableName,where:this._where};await(this.onHooks?.("beforeUpdate",[e,this._updates]));const t=await this.engine.update(this.tableName,e,this._updates);return this.onWrite?.(this.tableName),await(this.onHooks?.("afterUpdate",[e,this._updates,t])),t}toAST(){return{type:"UPDATE",table:this.tableName,sets:this._updates,where:this._where}}}class me{constructor(e,t,s,n){this.engine=e,this.tableName=t,this._where={},this.onWrite=s,this.onHooks=n}where(e){return this._where={...this._where,...e},this}async execute(){const e={table:this.tableName,where:this._where};await(this.onHooks?.("beforeDelete",[e]));const t=await this.engine.delete(this.tableName,e);return this.onWrite?.(this.tableName),await(this.onHooks?.("afterDelete",[e,t])),t}toAST(){return{type:"DELETE",from:this.tableName,where:this._where}}}class ye{constructor(e,t,s,n,i){this.schema=null,this.engine=e,this.name=t,this.executor=s,this.onWrite=n,this.onHooks=i}async getSchema(){if(!this.schema){const e=await this.engine.getTableSchema(this.name);if(!e)throw new n(`Table "${this.name}" does not exist`,"TABLE_NOT_FOUND");this.schema=e}return this.schema}async insert(e){await(this.onHooks?.("beforeInsert",[[e]]));const t=await this.engine.insert(this.name,[e]);return this.onWrite?.(this.name),await(this.onHooks?.("afterInsert",[[e],t])),t[0]}async insertMany(e){await(this.onHooks?.("beforeInsert",[e]));const t=await this.engine.insert(this.name,e);return this.onWrite?.(this.name),await(this.onHooks?.("afterInsert",[e,t])),t}select(e=["*"]){return new fe(this.engine,this.name,e,this.executor)}async stream(e,t={}){if("function"!=typeof this.engine.findStream){const s=await this.engine.find(this.name,{table:this.name,where:t.where,limit:t.limit,offset:t.offset,columns:t.columns});for(const t of s)e(t);return s.length}return this.engine.findStream(this.name,{table:this.name,where:t.where,limit:t.limit,offset:t.offset,columns:t.columns},e)}update(e){return new pe(this.engine,this.name,e,this.onWrite,this.onHooks)}delete(){return new me(this.engine,this.name,this.onWrite,this.onHooks)}async count(e){return this.engine.count(this.name,e?{table:this.name,where:e}:void 0)}async clear(){await this.engine.clear(this.name),this.onWrite?.(this.name)}async drop(){await this.engine.dropTable(this.name),this.onWrite?.(this.name)}}function ge(e){switch(e.type){case"SELECT":return function(e){return{table:e.from,columns:e.columns,where:e.where,orderBy:e.orderBy?.length?e.orderBy:void 0,limit:e.limit,offset:e.offset}}(e);case"DELETE":return function(e){return{table:e.from,where:e.where}}(e);case"UPDATE":return function(e){return{table:e.table,where:e.where}}(e);default:throw new n(`Cannot compile statement type "${e.type}" to QueryPlan`,"COMPILE_ERROR")}}var we;!function(e){e.SELECT="SELECT",e.FROM="FROM",e.WHERE="WHERE",e.INSERT="INSERT",e.INTO="INTO",e.VALUES="VALUES",e.UPDATE="UPDATE",e.SET="SET",e.DELETE="DELETE",e.CREATE="CREATE",e.TABLE="TABLE",e.DROP="DROP",e.ORDER="ORDER",e.BY="BY",e.ASC="ASC",e.DESC="DESC",e.LIMIT="LIMIT",e.OFFSET="OFFSET",e.AND="AND",e.OR="OR",e.NOT="NOT",e.LIKE="LIKE",e.IN="IN",e.PRIMARY="PRIMARY",e.KEY="KEY",e.UNIQUE="UNIQUE",e.DEFAULT="DEFAULT",e.NULL="NULL",e.TRUE="TRUE",e.REFERENCES="REFERENCES",e.CASCADE="CASCADE",e.BETWEEN="BETWEEN",e.IF="IF",e.EXISTS="EXISTS",e.FALSE="FALSE",e.ALTER="ALTER",e.ADD="ADD",e.TRUNCATE="TRUNCATE",e.INNER="INNER",e.LEFT="LEFT",e.RIGHT="RIGHT",e.CROSS="CROSS",e.JOIN="JOIN",e.ON="ON",e.AS="AS",e.OUTER="OUTER",e.GROUP="GROUP",e.HAVING="HAVING",e.COUNT="COUNT",e.SUM="SUM",e.AVG="AVG",e.MIN="MIN",e.MAX="MAX",e.DISTINCT="DISTINCT",e.BEGIN="BEGIN",e.COMMIT="COMMIT",e.ROLLBACK="ROLLBACK",e.UNION="UNION",e.ALL="ALL",e.INDEX="INDEX",e.CASE="CASE",e.WHEN="WHEN",e.THEN="THEN",e.ELSE="ELSE",e.END="END",e.EXPLAIN="EXPLAIN",e.ANALYZE="ANALYZE",e.REINDEX="REINDEX",e.VACUUM="VACUUM",e.SAVEPOINT="SAVEPOINT",e.RELEASE="RELEASE",e.TO="TO",e.IDENTIFIER="IDENTIFIER",e.STRING="STRING",e.NUMBER="NUMBER",e.COMMA="COMMA",e.LPAREN="LPAREN",e.RPAREN="RPAREN",e.SEMICOLON="SEMICOLON",e.EQ="EQ",e.NEQ="NEQ",e.GT="GT",e.GTE="GTE",e.LT="LT",e.LTE="LTE",e.STAR="STAR",e.DOT="DOT",e.EOF="EOF",e.ILLEGAL="ILLEGAL"}(we||(we={}));const be={SELECT:we.SELECT,FROM:we.FROM,WHERE:we.WHERE,INSERT:we.INSERT,INTO:we.INTO,VALUES:we.VALUES,UPDATE:we.UPDATE,SET:we.SET,DELETE:we.DELETE,CREATE:we.CREATE,TABLE:we.TABLE,DROP:we.DROP,ORDER:we.ORDER,BY:we.BY,ASC:we.ASC,DESC:we.DESC,LIMIT:we.LIMIT,OFFSET:we.OFFSET,AND:we.AND,OR:we.OR,NOT:we.NOT,LIKE:we.LIKE,IN:we.IN,PRIMARY:we.PRIMARY,KEY:we.KEY,UNIQUE:we.UNIQUE,DEFAULT:we.DEFAULT,NULL:we.NULL,TRUE:we.TRUE,FALSE:we.FALSE,REFERENCES:we.REFERENCES,CASCADE:we.CASCADE,BETWEEN:we.BETWEEN,IF:we.IF,EXISTS:we.EXISTS,ALTER:we.ALTER,ADD:we.ADD,TRUNCATE:we.TRUNCATE,INNER:we.INNER,LEFT:we.LEFT,RIGHT:we.RIGHT,CROSS:we.CROSS,JOIN:we.JOIN,ON:we.ON,AS:we.AS,OUTER:we.OUTER,GROUP:we.GROUP,HAVING:we.HAVING,COUNT:we.COUNT,SUM:we.SUM,AVG:we.AVG,MIN:we.MIN,MAX:we.MAX,DISTINCT:we.DISTINCT,BEGIN:we.BEGIN,COMMIT:we.COMMIT,ROLLBACK:we.ROLLBACK,UNION:we.UNION,ALL:we.ALL,INDEX:we.INDEX,CASE:we.CASE,WHEN:we.WHEN,THEN:we.THEN,ELSE:we.ELSE,END:we.END,EXPLAIN:we.EXPLAIN,ANALYZE:we.ANALYZE,REINDEX:we.REINDEX,VACUUM:we.VACUUM,SAVEPOINT:we.SAVEPOINT,RELEASE:we.RELEASE,TO:we.TO};class Te{constructor(e){this.position=0,this.readPosition=0,this.ch="",this.input=e,this.readChar()}nextToken(){let e;switch(this.skipWhitespace(),this.ch){case",":e=this.makeToken(we.COMMA,",");break;case"(":e=this.makeToken(we.LPAREN,"(");break;case")":e=this.makeToken(we.RPAREN,")");break;case";":e=this.makeToken(we.SEMICOLON,";");break;case"*":e=this.makeToken(we.STAR,"*");break;case".":e=this.makeToken(we.DOT,".");break;case"=":e=this.makeToken(we.EQ,"=");break;case"!":"="===this.peekChar()?(this.readChar(),e=this.makeToken(we.NEQ,"!=")):e=this.makeToken(we.ILLEGAL,"!");break;case">":"="===this.peekChar()?(this.readChar(),e=this.makeToken(we.GTE,">=")):e=this.makeToken(we.GT,">");break;case"<":"="===this.peekChar()?(this.readChar(),e=this.makeToken(we.LTE,"<=")):">"===this.peekChar()?(this.readChar(),e=this.makeToken(we.NEQ,"<>")):e=this.makeToken(we.LT,"<");break;case"'":case'"':e=this.readString(this.ch);break;case"":e={type:we.EOF,value:"",position:this.position};break;default:if("-"===this.ch&&"-"===this.peekChar())return this.skipLineComment(),this.nextToken();if("/"===this.ch&&"*"===this.peekChar())return this.skipBlockComment(),this.nextToken();if(this.isLetter(this.ch)){const t=this.readIdentifier();return e={type:be[t.toUpperCase()]??we.IDENTIFIER,value:t,position:this.position-t.length},e}if(this.isDigit(this.ch)||"-"===this.ch&&this.isDigit(this.peekChar())){const t=this.readNumber();return e={type:we.NUMBER,value:t,position:this.position-t.length},e}e=this.makeToken(we.ILLEGAL,this.ch)}return this.readChar(),e}readChar(){this.readPosition>=this.input.length?this.ch="":this.ch=this.input[this.readPosition],this.position=this.readPosition,this.readPosition++}peekChar(){return this.readPosition>=this.input.length?"":this.input[this.readPosition]}skipWhitespace(){for(;" "===this.ch||"\t"===this.ch||"\n"===this.ch||"\r"===this.ch;)this.readChar()}skipLineComment(){for(;"\n"!==this.ch&&"\r"!==this.ch&&""!==this.ch;)this.readChar()}skipBlockComment(){for(this.readChar(),this.readChar();""!==this.ch&&("*"!==this.ch||"/"!==this.peekChar());)this.readChar();""!==this.ch&&(this.readChar(),this.readChar())}readIdentifier(){const e=this.position;for(;this.isLetter(this.ch)||this.isDigit(this.ch)||"_"===this.ch;)this.readChar();return this.input.slice(e,this.position)}readNumber(){const e=this.position;for("-"===this.ch&&this.readChar();this.isDigit(this.ch);)this.readChar();if("."===this.ch&&this.isDigit(this.peekChar()))for(this.readChar();this.isDigit(this.ch);)this.readChar();return this.input.slice(e,this.position)}readString(e){const t=this.position+1;this.readChar();let s="";for(;""!==this.ch;){if(this.ch===e){if(this.peekChar()===e){s+=e,this.readChar(),this.readChar();continue}break}"\\"!==this.ch||this.peekChar()!==e?(s+=this.ch,this.readChar()):(this.readChar(),s+=e,this.readChar())}return{type:we.STRING,value:s,position:t}}isLetter(e){return/[a-zA-Z_]/.test(e)}isDigit(e){return/[0-9]/.test(e)}makeToken(e,t){return{type:e,value:t,position:this.position}}}class Ee{constructor(e){this.sql=e,this.lexer=new Te(e),this.nextToken(),this.nextToken()}parseStatement(){switch(this.curToken.type){case we.SELECT:return this.parseSelect();case we.INSERT:return this.parseInsert();case we.UPDATE:return this.parseUpdate();case we.DELETE:return this.parseDelete();case we.CREATE:return this.parseCreateStatement();case we.DROP:return this.parseDropStatement();case we.ALTER:return this.parseAlterTable();case we.TRUNCATE:return this.parseTruncateTable();case we.BEGIN:return this.parseBegin();case we.COMMIT:return this.parseCommit();case we.ROLLBACK:return this.parseRollback();case we.EXPLAIN:return this.parseExplain();case we.ANALYZE:return this.parseAnalyze();case we.REINDEX:return this.parseReindex();case we.VACUUM:return this.parseVacuum();case we.SAVEPOINT:case we.RELEASE:return this.parseSavepoint();default:throw this.error(`Unexpected token "${this.curToken.value}"`)}}parseAllStatements(){const e=[];for(;!this.curTokenIs(we.EOF);){for(;this.curTokenIs(we.SEMICOLON);)this.nextToken();if(this.curTokenIs(we.EOF))break;if(e.push(this.parseStatement()),this.curTokenIs(we.SEMICOLON))this.nextToken();else if(!this.curTokenIs(we.EOF))throw this.error(`Expected ';' after statement, got "${this.curToken.value}"`)}return e}parseExplain(){if(this.expect(we.EXPLAIN),this.curTokenIs(we.EXPLAIN))throw this.error("Nested EXPLAIN is not allowed");return{type:"EXPLAIN",query:this.parseStatement()}}parseAnalyze(){return this.expect(we.ANALYZE),this._isKeywordAsIdent()&&"TABLE"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"ANALYZE",table:this.expectIdentifier("table name")}}parseReindex(){return this.expect(we.REINDEX),this._isKeywordAsIdent()&&"TABLE"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"REINDEX",table:this.expectIdentifier("table name")}}parseVacuum(){return this.expect(we.VACUUM),{type:"VACUUM"}}parseSavepoint(){let e;return this.curTokenIs(we.RELEASE)?(e="RELEASE",this.nextToken()):(e="SAVE",this.expect(we.SAVEPOINT)),this.curTokenIs(we.SAVEPOINT)&&this.nextToken(),{type:"SAVEPOINT",name:this.expectIdentifier("savepoint name"),action:e}}parseBegin(){return this.expect(we.BEGIN),this._isKeywordAsIdent()&&"TRANSACTION"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"BEGIN"}}parseCommit(){return this.expect(we.COMMIT),this._isKeywordAsIdent()&&"TRANSACTION"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"COMMIT"}}parseRollback(){return this.expect(we.ROLLBACK),this._isKeywordAsIdent()&&"TRANSACTION"===this.curToken.value.toUpperCase()?(this.nextToken(),{type:"ROLLBACK"}):this.curTokenIs(we.TO)||this._isKeywordAsIdent()&&"TO"===this.curToken.value.toUpperCase()?(this.nextToken(),(this.curTokenIs(we.SAVEPOINT)||this._isKeywordAsIdent()&&"SAVEPOINT"===this.curToken.value.toUpperCase())&&this.nextToken(),{type:"SAVEPOINT",name:this.expectIdentifier("savepoint name"),action:"ROLLBACK"}):{type:"ROLLBACK"}}parseCreateStatement(){if(this.expect(we.CREATE),this.curTokenIs(we.TABLE))return this.parseCreateTable();if(this.curTokenIs(we.INDEX)||this._isKeywordAsIdent()&&"INDEX"===this.curToken.value.toUpperCase())return this.parseCreateIndex();if(this.curTokenIs(we.UNIQUE)&&(this.nextToken(),this.curTokenIs(we.INDEX)||this._isKeywordAsIdent()&&"INDEX"===this.curToken.value.toUpperCase())){const e=this.parseCreateIndex();return e.unique=!0,e}throw this.error(`Expected TABLE or INDEX after CREATE, got "${this.curToken.value}"`)}parseCreateIndex(){this.expect(we.INDEX);const e=this.expectIdentifier("index name");this.expect(we.ON);const t=this.expectIdentifier("table name");this.expect(we.LPAREN);const s=this.expectIdentifier("column name");return this.expect(we.RPAREN),{type:"CREATE_INDEX",name:e,table:t,column:s}}parseDropStatement(){if(this.expect(we.DROP),this.curTokenIs(we.TABLE))return this.parseDropTable();if(this.curTokenIs(we.INDEX)||this._isKeywordAsIdent()&&"INDEX"===this.curToken.value.toUpperCase())return this.parseDropIndex();throw this.error(`Expected TABLE or INDEX after DROP, got "${this.curToken.value}"`)}parseDropIndex(){this.expect(we.INDEX);const e=this.expectIdentifier("index name");let t="",s="";return this.curTokenIs(we.ON)&&(this.nextToken(),t=this.expectIdentifier("table name"),this.curTokenIs(we.LPAREN)&&(this.nextToken(),s=this.expectIdentifier("column name"),this.expect(we.RPAREN))),{type:"DROP_INDEX",name:e,table:t,column:s}}parseSelect(){this.expect(we.SELECT);let e=!1;this.curTokenIs(we.DISTINCT)&&(e=!0,this.nextToken());const t=[];let s;this.curTokenIs(we.STAR)?(t.push("*"),this.nextToken()):t.push(...this.parseColumnList());let n,i="";this.curTokenIs(we.FROM)&&(this.nextToken(),this.curTokenIs(we.LPAREN)?(this.nextToken(),s=this.parseSelect(),this.expect(we.RPAREN),this.curTokenIs(we.AS)?(this.nextToken(),n=this.expectIdentifier("alias")):this.curToken.type!==we.IDENTIFIER||this._isReservedAfterFrom()||(n=this.curToken.value,this.nextToken())):(i=this.expectIdentifier("table name"),this.curTokenIs(we.AS)?(this.nextToken(),n=this.expectIdentifier("alias")):this.curToken.type!==we.IDENTIFIER||this._isReservedAfterFrom()||(n=this.curToken.value,this.nextToken())));const r={type:"SELECT",columns:t,distinct:e||void 0,from:i,alias:n,where:{}};s&&(r.fromSubquery=s);const a=this.parseJoinClauses();return a.length>0&&(r.joins=a),this.curTokenIs(we.WHERE)&&(this.nextToken(),r.where=this.parseCondition()),this.curTokenIs(we.GROUP)&&(this.nextToken(),this.expect(we.BY),r.groupBy=this.parseIdentifierList()),this.curTokenIs(we.HAVING)&&(this.nextToken(),r.having=this.parseCondition()),this.curTokenIs(we.ORDER)&&(this.nextToken(),this.expect(we.BY),r.orderBy=this.parseOrderByList()),this.curTokenIs(we.LIMIT)&&(this.nextToken(),r.limit=this.expectNumber("LIMIT value")),this.curTokenIs(we.OFFSET)&&(this.nextToken(),r.offset=this.expectNumber("OFFSET value")),this.curTokenIs(we.UNION)?this.parseUnion(r):r}parseUnion(e){this.expect(we.UNION);let t=!1;this.curTokenIs(we.ALL)&&(t=!0,this.nextToken());const s={type:"SELECT_UNION",left:e,right:this.parseSelect(),all:t||void 0};return this.curTokenIs(we.UNION)?this.parseUnionChain(s):s}parseUnionChain(e){this.expect(we.UNION);let t=!1;this.curTokenIs(we.ALL)&&(t=!0,this.nextToken());const s={type:"SELECT_UNION",left:e,right:this.parseSelect(),all:t||void 0};return this.curTokenIs(we.UNION)?this.parseUnionChain(s):s}parseJoinClauses(){const e=[];for(;this._isJoinKeyword();)e.push(this.parseJoinClause());return e}_isJoinKeyword(){return this.curTokenIs(we.INNER)||this.curTokenIs(we.LEFT)||this.curTokenIs(we.RIGHT)||this.curTokenIs(we.CROSS)||this.curTokenIs(we.JOIN)}parseJoinClause(){let e="INNER";this.curTokenIs(we.INNER)?(e="INNER",this.nextToken()):this.curTokenIs(we.LEFT)?(e="LEFT",this.nextToken(),this.curTokenIs(we.OUTER)&&this.nextToken()):this.curTokenIs(we.RIGHT)?(e="RIGHT",this.nextToken(),this.curTokenIs(we.OUTER)&&this.nextToken()):this.curTokenIs(we.CROSS)&&(e="CROSS",this.nextToken()),this.expect(we.JOIN);const t=this.expectIdentifier("table name");let s;this.curTokenIs(we.AS)?(this.nextToken(),s=this.expectIdentifier("alias")):this.curToken.type!==we.IDENTIFIER||this._isJoinReserved()||(s=this.curToken.value,this.nextToken());let n={};return"CROSS"!==e&&this.curTokenIs(we.ON)&&(this.nextToken(),n=this.parseCondition()),{type:e,table:t,alias:s,on:n}}_isReservedAfterFrom(){return this.curTokenIs(we.WHERE)||this.curTokenIs(we.ORDER)||this.curTokenIs(we.LIMIT)||this.curTokenIs(we.OFFSET)||this.curTokenIs(we.GROUP)||this._isJoinKeyword()}_isJoinReserved(){return this.curTokenIs(we.ON)||this.curTokenIs(we.WHERE)||this.curTokenIs(we.ORDER)||this.curTokenIs(we.LIMIT)||this._isJoinKeyword()}parseInsert(){this.expect(we.INSERT),this.expect(we.INTO);const e=this.expectIdentifier("table name");let t;if(this.curTokenIs(we.LPAREN)&&(this.nextToken(),t=this.parseIdentifierList(),this.expect(we.RPAREN)),this.curTokenIs(we.SELECT))return{type:"INSERT",into:e,columns:t,select:this.parseSelect()};this.expect(we.VALUES);const s=[];do{this.curTokenIs(we.COMMA)&&this.nextToken(),this.expect(we.LPAREN);const e=this.parseValueList();this.expect(we.RPAREN),s.push(e)}while(this.curTokenIs(we.COMMA));return{type:"INSERT",into:e,columns:t,values:s}}parseUpdate(){this.expect(we.UPDATE);const e=this.expectIdentifier("table name");this.expect(we.SET);const t={};do{this.curTokenIs(we.COMMA)&&this.nextToken();const e=this.expectIdentifier("column name");this.expect(we.EQ),t[e]=this.parseValue()}while(this.curTokenIs(we.COMMA));let s={};return this.curTokenIs(we.WHERE)&&(this.nextToken(),s=this.parseCondition()),{type:"UPDATE",table:e,sets:t,where:s}}parseDelete(){this.expect(we.DELETE),this.expect(we.FROM);const e=this.expectIdentifier("table name");let t={};return this.curTokenIs(we.WHERE)&&(this.nextToken(),t=this.parseCondition()),{type:"DELETE",from:e,where:t}}parseCreateTable(){this.expect(we.TABLE);let e=!1;this.curTokenIs(we.IF)&&(this.nextToken(),this.expect(we.NOT),this.expect(we.EXISTS),e=!0);const t=this.expectIdentifier("table name");this.expect(we.LPAREN);const s=[];do{this.curTokenIs(we.COMMA)&&this.nextToken(),s.push(this.parseColumnDef())}while(this.curTokenIs(we.COMMA));return this.expect(we.RPAREN),{type:"CREATE_TABLE",name:t,columns:s,ifNotExists:e||void 0}}parseColumnDef(){const e={name:this.expectIdentifier("column name"),type:this.expectIdentifier("column type").toLowerCase()};for(;this.curTokenIs(we.PRIMARY)||this.curTokenIs(we.UNIQUE)||this.curTokenIs(we.NOT)||this.curTokenIs(we.DEFAULT)||this.curTokenIs(we.REFERENCES);)if(this.curTokenIs(we.PRIMARY))this.nextToken(),this.expect(we.KEY),e.primaryKey=!0;else if(this.curTokenIs(we.UNIQUE))this.nextToken(),e.unique=!0;else if(this.curTokenIs(we.NOT))this.nextToken(),this.expect(we.NULL),e.required=!0;else if(this.curTokenIs(we.DEFAULT))this.nextToken(),e.default=this.parseValue();else{if(!this.curTokenIs(we.REFERENCES))break;{this.nextToken();const t=this.expectIdentifier("referenced table");this.expect(we.LPAREN);const s=this.expectIdentifier("referenced column");for(this.expect(we.RPAREN),e.references=`${t}.${s}`;this.curTokenIs(we.ON);)if(this.nextToken(),this.curTokenIs(we.DELETE))this.nextToken(),e.onDelete=this.parseCascadeAction();else{if(!this.curTokenIs(we.UPDATE))break;this.nextToken(),e.onUpdate=this.parseCascadeAction()}}}return e}parseCascadeAction(){return this.curTokenIs(we.CASCADE)?(this.nextToken(),"CASCADE"):this.curTokenIs(we.SET)?(this.nextToken(),this.expect(we.NULL),"SET NULL"):this.curToken.type===we.IDENTIFIER&&"RESTRICT"===this.curToken.value.toUpperCase()?(this.nextToken(),"RESTRICT"):"RESTRICT"}parseAlterTable(){this.expect(we.ALTER),this.expect(we.TABLE);const e=this.expectIdentifier("table name");let t;if(this.curTokenIs(we.ADD))return t="ADD",this.nextToken(),this.curToken.type===we.IDENTIFIER&&"COLUMN"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"ALTER_TABLE",name:e,action:t,column:this.parseColumnDef()};if(this.curTokenIs(we.DROP)||this._isKeywordAsIdent()&&"DROP"===this.curToken.value.toUpperCase())return t="DROP",this.nextToken(),this.curToken.type===we.IDENTIFIER&&"COLUMN"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"ALTER_TABLE",name:e,action:t,column:{name:this.expectIdentifier("column name"),type:"string"}};throw this.error("Expected ADD or DROP in ALTER TABLE")}parseTruncateTable(){return this.expect(we.TRUNCATE),this.expect(we.TABLE),{type:"TRUNCATE_TABLE",name:this.expectIdentifier("table name")}}parseDropTable(){this.expect(we.TABLE);let e=!1;return this.curTokenIs(we.IF)&&(this.nextToken(),this.expect(we.EXISTS),e=!0),{type:"DROP_TABLE",name:this.expectIdentifier("table name"),ifExists:e||void 0}}parseCondition(){let e=this.parseSimpleCondition();for(;this.curTokenIs(we.AND)||this.curTokenIs(we.OR);){const t=this.curTokenIs(we.AND);this.nextToken();const s=this.parseSimpleCondition();e=t?{$and:[e,s]}:{$or:[e,s]}}return e}parseWhere(){return this.parseCondition()}parseSimpleCondition(){if(this.curTokenIs(we.EXISTS)||this._isKeywordAsIdent()&&"EXISTS"===this.curToken.value.toUpperCase())return this.nextToken(),this.parseExistsCondition(!1);if(this.curTokenIs(we.NOT)&&this._peekIsExists())return this.nextToken(),this.nextToken(),this.parseExistsCondition(!0);if(this.curTokenIs(we.NOT)&&!this._isNotInOrLike())return this.nextToken(),{$not:this.parseSimpleCondition()};if(this.curTokenIs(we.LPAREN)){this.nextToken();const e=this.parseCondition();return this.expect(we.RPAREN),e}const e=this.parseColumnRef();if(this.curTokenIs(we.IDENTIFIER)&&"IS"===this.curToken.value.toUpperCase()){this.nextToken();const t=this.curTokenIs(we.NOT);t&&this.nextToken(),this.expect(we.NULL);const s={};return s[e]=t?{$ne:null}:{$eq:null},s}if(this.curTokenIs(we.BETWEEN)){this.nextToken();const t=this.parseValue();this.expect(we.AND);const s=this.parseValue(),n={};return n[e]={$gte:t,$lte:s},n}if(this.curTokenIs(we.NOT)&&this.peekTokenIs(we.BETWEEN)){this.nextToken(),this.nextToken();const t=this.parseValue();this.expect(we.AND);const s=this.parseValue(),n={};return n[e]={$not:{$gte:t,$lte:s}},n}if(this.curTokenIs(we.NOT)){if(this.peekTokenIs(we.IN)){if(this.nextToken(),this.nextToken(),this.expect(we.LPAREN),this.curTokenIs(we.SELECT)){const t=this.parseSelect();this.expect(we.RPAREN);const s={};return s[e]={$nin:{$subquery:t}},s}const t=this.parseValueList();this.expect(we.RPAREN);const s={};return s[e]={$nin:t},s}if(this.peekTokenIs(we.LIKE)){this.nextToken(),this.nextToken();const t=this.parseValue(),s={};return s[e]={$not:{$like:t}},s}}if(this.curTokenIs(we.LIKE)){this.nextToken();const t=this.parseValue(),s={};return s[e]={$like:t},s}if(this.curTokenIs(we.IN)){if(this.nextToken(),this.expect(we.LPAREN),this.curTokenIs(we.SELECT)){const t=this.parseSelect();this.expect(we.RPAREN);const s={};return s[e]={$in:{$subquery:t}},s}const t=this.parseValueList();this.expect(we.RPAREN);const s={};return s[e]={$in:t},s}if(this.curTokenIs(we.AND)||this.curTokenIs(we.OR)||this.curTokenIs(we.RPAREN)||this.curTokenIs(we.EOF)||this.curToken.type===we.IDENTIFIER&&["THEN","END","ELSE","NULLS","LIMIT","OFFSET","ORDER","GROUP","HAVING","UNION","WHERE"].includes(this.curToken.value.toUpperCase())){const t={};return t[e]={$eq:!0},t}const t=this.parseComparisonOp();if(this.curTokenIs(we.LPAREN)&&this.peekTokenIs(we.SELECT)){this.nextToken();const s=this.parseSelect();this.expect(we.RPAREN);const n={};return n[e]={[t]:{$subquery:s}},n}let s;s=(this.curToken.type===we.IDENTIFIER||this._isKeywordAsIdent())&&this.peekTokenIs(we.DOT)?{$col:this.parseColumnRef()}:this.parseValue();const n={};return n[e]={[t]:s},n}parseExistsCondition(e){this.expect(we.LPAREN);const t=this.parseSelect();return this.expect(we.RPAREN),{$exists:{$subquery:t,$negate:e||void 0}}}_peekIsExists(){return this.peekToken.type===we.EXISTS||this.peekToken.type===we.IDENTIFIER&&"EXISTS"===this.peekToken.value.toUpperCase()}_isNotInOrLike(){return this.peekTokenIs(we.IN)||this.peekTokenIs(we.LIKE)}peekTokenIs(e){return this.peekToken.type===e}parseComparisonOp(){switch(this.curToken.type){case we.EQ:return this.nextToken(),"$eq";case we.NEQ:return this.nextToken(),"$ne";case we.GT:return this.nextToken(),"$gt";case we.GTE:return this.nextToken(),"$gte";case we.LT:return this.nextToken(),"$lt";case we.LTE:return this.nextToken(),"$lte";default:throw this.error(`Expected comparison operator, got "${this.curToken.value}"`)}}parseColumnList(){const e=[];for(e.push(this.parseColumnWithAlias());this.curTokenIs(we.COMMA);)this.nextToken(),e.push(this.parseColumnWithAlias());return e}parseColumnWithAlias(){let e=this.parseColumnRef();if(this.curTokenIs(we.AS))this.nextToken(),e=`${e} AS ${this.expectIdentifier("alias")}`;else if(this.curToken.type===we.IDENTIFIER&&!this._isReservedAfterFrom()&&!this._isJoinKeyword()){const t=this.curToken.value;this.nextToken(),e=`${e} AS ${t}`}return e}parseColumnRef(){if(this.curTokenIs(we.CASE))return this.parseCaseExpressionText();if(this.curTokenIs(we.NUMBER)){const e=this.curToken.value;return this.nextToken(),e}if(this.curTokenIs(we.STRING)){const e=this.curToken.value;return this.nextToken(),`'${e}'`}if(this.curTokenIs(we.COUNT)||this.curTokenIs(we.SUM)||this.curTokenIs(we.AVG)||this.curTokenIs(we.MIN)||this.curTokenIs(we.MAX))return this.parseAggregateCall();const e=this.expectIdentifier("column name");return this.curTokenIs(we.DOT)?(this.nextToken(),`${e}.${this.expectIdentifier("column name")}`):e}parseCaseExpressionText(){const e=this.curToken.position;this.nextToken();let t=1,s=e+4;for(;!this.curTokenIs(we.EOF)&&t>0&&(this.curTokenIs(we.CASE)&&t++,!this.curTokenIs(we.END)||(t--,s=this.curToken.position+3,this.nextToken(),0!==t));)s=this.curToken.position+this.curToken.value.length,this.nextToken();let n=this.sql.slice(e,s);return this.curTokenIs(we.AS)?(this.nextToken(),n+=` AS ${this.expectIdentifier("alias")}`):this.curToken.type!==we.IDENTIFIER||this.curTokenIs(we.COMMA)||this._isReservedAfterFrom()||(n+=` AS ${this.curToken.value}`,this.nextToken()),n}parseAggregateCall(){const e=this.curToken.value.toUpperCase();this.nextToken(),this.expect(we.LPAREN);let t,s=!1;this.curTokenIs(we.DISTINCT)&&(s=!0,this.nextToken()),this.curTokenIs(we.STAR)?(t="*",this.nextToken()):t=this.parseColumnRef(),this.expect(we.RPAREN);let n="";this.curTokenIs(we.AS)?(this.nextToken(),n=this.expectIdentifier("alias")):this.curToken.type===we.IDENTIFIER&&this._isAggregateAlias()&&(n=this.curToken.value,this.nextToken());const i=s?`DISTINCT ${t}`:t;return n?`${e}(${i}) AS ${n}`:`${e}(${i})`}_isAggregateAlias(){return!this._isReservedAfterFrom()&&!this._isJoinKeyword()}parseIdentifierList(){const e=[];for(e.push(this.parseIdentifierWithDot());this.curTokenIs(we.COMMA);)this.nextToken(),e.push(this.parseIdentifierWithDot());return e}parseValueList(){const e=[];for(e.push(this.parseValue());this.curTokenIs(we.COMMA);)this.nextToken(),e.push(this.parseValue());return e}parseOrderByList(){const e=[];for(e.push(this.parseOrderBy());this.curTokenIs(we.COMMA);)this.nextToken(),e.push(this.parseOrderBy());return e}parseOrderBy(){const e=this.parseIdentifierWithDot();let t,s="asc";return this.curTokenIs(we.ASC)?this.nextToken():this.curTokenIs(we.DESC)&&(s="desc",this.nextToken()),this.curTokenIs(we.IDENTIFIER)&&"NULLS"===this.curToken.value.toUpperCase()&&(this.nextToken(),this.curTokenIs(we.IDENTIFIER)&&"FIRST"===this.curToken.value.toUpperCase()?(t="first",this.nextToken()):this.curTokenIs(we.IDENTIFIER)&&"LAST"===this.curToken.value.toUpperCase()&&(t="last",this.nextToken())),{column:e,direction:s,...t?{nulls:t}:{}}}parseIdentifierWithDot(){const e=this.expectIdentifier("identifier");return this.curTokenIs(we.DOT)?(this.nextToken(),`${e}.${this.expectIdentifier("identifier")}`):e}parseValue(){switch(this.curToken.type){case we.STRING:{const e=this.curToken.value;return this.nextToken(),e}case we.NUMBER:{const e=Number(this.curToken.value);return this.nextToken(),e}case we.TRUE:return this.nextToken(),!0;case we.FALSE:return this.nextToken(),!1;case we.NULL:return this.nextToken(),null;default:throw this.error(`Expected value, got "${this.curToken.value}"`)}}nextToken(){this.curToken=this.peekToken,this.peekToken=this.lexer.nextToken()}curTokenIs(e){return this.curToken.type===e}expect(e){if(!this.curTokenIs(e))throw this.error(`Expected ${e}, got "${this.curToken.value}"`);this.nextToken()}expectIdentifier(e){if(this.curToken.type===we.IDENTIFIER||this._isKeywordAsIdent()){const e=this.curToken.value;return this.nextToken(),e}throw this.error(`Expected ${e}, got "${this.curToken.value}"`)}_isKeywordAsIdent(){return this.curToken.type!==we.EOF&&this.curToken.type!==we.ILLEGAL&&this.curToken.type!==we.STRING&&this.curToken.type!==we.NUMBER&&this.curToken.type!==we.COMMA&&this.curToken.type!==we.LPAREN&&this.curToken.type!==we.RPAREN&&this.curToken.type!==we.SEMICOLON&&this.curToken.type!==we.EQ&&this.curToken.type!==we.NEQ&&this.curToken.type!==we.GT&&this.curToken.type!==we.GTE&&this.curToken.type!==we.LT&&this.curToken.type!==we.LTE&&this.curToken.type!==we.DOT&&this.curToken.type!==we.STAR}expectNumber(e){if(this.curToken.type===we.NUMBER){const e=Number(this.curToken.value);return this.nextToken(),e}throw this.error(`Expected ${e}, got "${this.curToken.value}"`)}error(e){return new n(`Parse error at position ${this.curToken.position}: ${e}`,"PARSE_ERROR")}}function Se(e){return new Ee(e).parseAllStatements()}function Ie(e){return new Ee(e).parseWhere()}function ke(e){const t=e.match(/^\s*CASE\s+([\s\S]*?)\s+END\s*(?:AS\s+(\w+))?\s*$/i);if(!t)return null;const s=t[1],n=t[2]??null,i=[],r=/WHEN\s+([\s\S]*?)\s+THEN\s+([\s\S]*?)(?=\s+WHEN\s+|\s+ELSE\s+|\s*$)/gi;let a;for(;null!==(a=r.exec(s));){let e=null;try{e=Ie(a[1].trim())}catch{}i.push({cond:e,value:a[2].trim()})}let o=null;const h=s.match(/\sELSE\s+([\s\S]*)$/i);return h&&(o=h[1].trim()),{whens:i,elseValue:o,alias:n}}function xe(e,t){const s=e.trim();if("null"===s)return null;if("true"===s)return!0;if("false"===s)return!1;const n=Number(s);if(""!==s&&!isNaN(n))return n;const i=s.match(/^'(.*)'$/s)||s.match(/^"(.*)"$/s);return i?i[1]:/^[a-zA-Z_][a-zA-Z0-9_.]*$/.test(s)?t[s]??null:s}function Ae(e,t){for(const{cond:s,value:n}of e.whens)if(s&&a(t,s))return xe(n,t);return null!==e.elseValue?xe(e.elseValue,t):null}class Re{constructor(e,t=0){this.engine=e,this.maxRowsPerQuery=t}async execute(e){switch(e.type){case"SELECT":return this.executeSelect(e);case"SELECT_UNION":return this.executeSelectUnion(e);case"EXPLAIN":return this.executeExplain(e);case"INSERT":return this.executeInsert(e);case"UPDATE":return this.executeUpdate(e);case"DELETE":return this.executeDelete(e);case"CREATE_TABLE":return this.executeCreateTable(e);case"DROP_TABLE":return this.executeDropTable(e);case"ALTER_TABLE":return this.executeAlterTable(e);case"TRUNCATE_TABLE":return this.executeTruncateTable(e);case"CREATE_INDEX":return this.executeCreateIndex(e);case"DROP_INDEX":return this.executeDropIndex(e);case"BEGIN":return this.executeBegin();case"COMMIT":return this.executeCommit();case"ROLLBACK":return this.executeRollback();case"SAVEPOINT":return this.executeSavepoint(e);case"ANALYZE":return this.executeAnalyze(e);case"REINDEX":return this.executeReindex(e);case"VACUUM":return this.executeVacuum();default:throw new n("Unknown statement type","UNKNOWN_STATEMENT")}}async executeSelectUnion(e){const t=await this.executeSelectPart(e.left),s=await this.executeSelectPart(e.right),n=t.length>0?Object.keys(t[0]):[],i=t.map(e=>e);if(e.all){for(const e of s)i.push(this.projectUnionRow(e,n));return i}const r=new Set,a=[];for(const e of i){const t=Object.values(e).map(e=>String(e??"\0")).join("");r.has(t)||(r.add(t),a.push(e))}for(const e of s){const t=this.projectUnionRow(e,n),s=Object.values(t).map(e=>String(e??"\0")).join("");r.has(s)||(r.add(s),a.push(t))}return a}async executeSelectPart(e){return"SELECT_UNION"===e.type?this.executeSelectUnion(e):this.executeSelect(e)}projectUnionRow(e,t){if(0===t.length)return e;const s=Object.values(e),n={};for(let e=0;e0),s=!t&&this._hasAggregateColumn(e.columns);let n;const i=!!(e.joins&&e.joins.length>0),r=this.hasCaseColumn(e.columns)||!!e.where&&this.whereHasCase(e.where),o=this.orderByUsesSelectAlias(e),h=e.columns.some(e=>/\s+AS\s+\w+$/i.test(e));if(e.fromSubquery){const t=await this.executeSelectPart(e.fromSubquery);n=i?await this.executeJoinSelect(e,t.map(t=>this.prefixRow(t,e.alias??""))):t,!i&&e.where&&Object.keys(e.where).length>0&&(e.where=await this.resolveSubqueries(e.where),n=n.filter(t=>a(t,e.where)))}else if(e.from||i)if(i)n=await this.executeJoinSelect(e);else{e.where&&Object.keys(e.where).length>0&&(e.where=this.normalizeWhereColumns(e.where,[e.alias??e.from]));const i=[e.alias??e.from].filter(Boolean);if(e.orderBy&&e.orderBy.length>0&&(e.orderBy=e.orderBy.map(e=>({...e,column:this.stripAlias(e.column,i)}))),e.groupBy&&e.groupBy.length>0&&(e.groupBy=e.groupBy.map(e=>this.stripAlias(e,i))),e.columns=e.columns.map(e=>{if("*"===e||/^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(e)||/^\s*CASE\b/i.test(e)||/^'/.test(e))return e;const t=e.match(/^(.+?)\s+AS\s+(\w+)$/i);if(t){const s=this.stripAlias(t[1].trim(),i);return s===t[1].trim()?e:`${s} AS ${t[2]}`}return this.stripAlias(e,i)}),e.where&&this.hasCorrelatedRefs(e.where)){const i=ge(t||s?{...e,columns:["*"]}:e);i.columns=["*"],o&&(i.orderBy=void 0,i.limit=void 0,i.offset=void 0),n=await this.engine.find(i.table,{...i,where:this.stripCorrelatedExists(e.where)}),n=await this.filterCorrelated(n,e.where)}else{e.where&&Object.keys(e.where).length>0&&(e.where=await this.resolveSubqueries(e.where));const i=ge(t||s?{...e,columns:["*"]}:e);(r||h)&&(i.columns=["*"]),o&&(i.orderBy=void 0,i.limit=void 0,i.offset=void 0),n=await this.engine.find(i.table,i)}}else n=[{}];if(s&&(n=[this.computeSingleAggregate(n,e)]),t&&(n=this.executeGroupBy(n,e)),e.distinct&&(n=this.executeDistinct(n)),e.having&&Object.keys(e.having).length>0){e.having=await this.resolveSubqueries(e.having);const t=e._aggAliasMap;if(t&&t.size>0){const s={};for(const[n,i]of Object.entries(e.having))s[t.get(n)??n]=i;e.having=s}n=n.filter(t=>a(t,e.having))}e.orderBy&&e.orderBy.length>0&&(n=c(n,e.orderBy)),!t&&!s&&e.columns.length>0&&"*"!==e.columns[0]&&(n=n.map(t=>this.projectRow(t,e.columns))),o&&e.orderBy&&e.orderBy.length>0&&(n=c(n,e.orderBy));const l=e.offset??0,u=e.limit??n.length;return n=n.slice(l,l+u),this.maxRowsPerQuery>0&&n.length>this.maxRowsPerQuery&&(n=n.slice(0,this.maxRowsPerQuery)),n}async executeJoinSelect(e,t){const s=e.alias??e.from;let n;if(t)n=t;else{const{pushable:t}=this.extractPushableWhere(e.where??{},s);n=(await this.engine.find(e.from,{table:e.from,where:Object.keys(t).length>0?t:void 0})).map(e=>this.prefixRow(e,s))}let i=n;for(const t of e.joins){const e=t.alias??t.table,n=await this.tryHashJoin(i,t,e,s);if(n){i=n;continue}const r=(await this.engine.find(t.table,{table:t.table})).map(t=>this.prefixRow(t,e));i=this.joinRows(i,r,t)}return e.where&&Object.keys(e.where).length>0&&(this.hasCorrelatedRefs(e.where)?i=await this.filterCorrelated(i,e.where):(e.where=await this.resolveSubqueries(e.where),i=i.filter(t=>a(t,e.where)))),i}prefixRow(e,t){const s={};for(const[n,i]of Object.entries(e))s[`${t}.${n}`]=i;return s}extractPushableWhere(e,t){const s={};if(!t)return{pushable:s};const n=`${t}.`;for(const[t,i]of Object.entries(e))t.startsWith(n)&&("object"==typeof i&&null!==i&&("$col"in i||"$subquery"in i||"$and"in i||"$or"in i||"$not"in i)||(s[t.slice(n.length)]=i));return{pushable:s}}async tryHashJoin(e,t,s,n){if("CROSS"===t.type||"RIGHT"===t.type)return null;const i=[],r=e=>{for(const[t,s]of Object.entries(e)){if("$and"===t){if(!s.every(r))return!1;continue}if("$or"===t||"$not"===t)return!1;let e=null;if("object"==typeof s&&null!==s){const t=s;"$eq"in t&&"object"==typeof t.$eq&&null!==t.$eq&&"$col"in t.$eq?e=String(t.$eq.$col):"$col"in t&&1===Object.keys(t).length&&(e=String(t.$col))}if(!e)return!1;const a=!!n&&t.startsWith(`${n}.`);i.push({leftCol:a?t:e,rightCol:a?e:t})}return!0};if(!r(t.on))return null;if(0===i.length)return null;const a=await this.engine.getTableSchema(t.table);if(!a)return null;const o=i.find(e=>{const t=e.rightCol.split(".").pop(),s=a.columns[t];return s&&(s.primaryKey||s.index||s.unique)});if(!o)return null;const h=o.rightCol.split(".").pop(),c=Array.from(new Set(e.map(e=>e[o.leftCol]).filter(e=>null!=e)));if(0===c.length)return null;const l=await this.engine.find(t.table,{table:t.table,where:{[h]:{$in:c}}}),u=new Map;for(const e of l){const t=i.map(t=>String(e[t.rightCol.split(".").pop()]??"\0")).join("");u.has(t)||u.set(t,[]),u.get(t).push(e)}const d={};for(const e of Object.keys(a.columns))d[e]=null;const f=[];for(const n of e){const e=i.map(e=>String(n[e.leftCol]??"\0")).join(""),r=u.get(e);if(r&&r.length>0)for(const e of r)f.push({...n,...this.prefixRow(e,s)});else"LEFT"===t.type&&f.push({...n,...this.prefixRow(d,s)})}return f}joinRows(e,t,s){if("CROSS"===s.type){const s=[];for(const n of e)for(const e of t)s.push({...n,...e});return s}const n=[];for(const i of e){let e=!1;for(const r of t){const t={...i,...r};a(t,s.on,{$col:!0})&&(n.push(t),e=!0)}if(!e&&"LEFT"===s.type){const e={};for(const s of Object.keys(t[0]??{}))e[s]=null;n.push({...i,...e})}}if("RIGHT"===s.type)for(const i of t)if(!e.some(e=>a({...e,...i},s.on,{$col:!0}))){const t={};for(const s of Object.keys(e[0]??{}))t[s]=null;n.push({...t,...i})}return n}executeGroupBy(e,t){const s=new Map;for(const n of e){const e=t.groupBy.map(e=>String(n[e]??"null")).join("|");s.has(e)||s.set(e,[]),s.get(e).push(n)}const n=[],i=new Map;for(const e of s.values()){const s={};for(const n of t.groupBy)s[n]=e[0][n];for(const n of t.columns){if("*"===n)continue;const r=n.match(/^(COUNT|SUM|AVG|MIN|MAX)\((.+?)\)(?:\s+AS\s+(\w+))?$/i);if(r){const[,t,a,o]=r,h=this.computeAggregate(t.toUpperCase(),e,a.trim()),c=`${t.toUpperCase()}(${a.trim()})`,l=o||n;l!==c&&i.set(c,l),s[l]=h}else if(/^\s*CASE\b/i.test(n)){const t=ke(n);s[t?.alias??n]=t?Ae(t,e[0]):null}else t.groupBy.includes(n)||(s[n]=e[0][n])}n.push(s)}return t._aggAliasMap=i,n}computeAggregate(e,t,s){const n=/^\s*CASE\b/i.test(s)?ke(s):null,i=!n&&/^\s*DISTINCT\s+/i.test(s),r=i?s.replace(/^\s*DISTINCT\s+/i,"").trim():s,a=t.map(e=>n?Ae(n,e):e[r]).filter(e=>null!=e);if("COUNT"===e)return"*"===r?t.length:i?new Set(a.map(e=>"object"==typeof e?JSON.stringify(e):String(e))).size:a.length;const o=a.map(Number),h=i?Array.from(new Set(o)):o;switch(e){case"SUM":return h.reduce((e,t)=>e+t,0);case"AVG":return 0===h.length?0:h.reduce((e,t)=>e+t,0)/h.length;case"MIN":return 0===h.length?0:Math.min(...h);case"MAX":return 0===h.length?0:Math.max(...h);default:return 0}}executeDistinct(e){const t=new Set;return e.filter(e=>{const s=Object.values(e).map(e=>String(e??"\0")).join("");return!t.has(s)&&(t.add(s),!0)})}async executeInsert(e){const t=await this.engine.getTableSchema(e.into);if(!t)throw new n(`Table "${e.into}" does not exist`,"TABLE_NOT_FOUND");const s=e.columns??Object.keys(t.columns);if(e.select){const t=await this.executeSelectPart(e.select);let n=[];const i=e.select;if("SELECT"===i.type)if(i.columns&&i.columns.length>0&&"*"!==i.columns[0])n=i.columns.map(e=>e.split(".").pop());else if(i.from){const e=await this.engine.getTableSchema(i.from);n=e?Object.keys(e.columns):[]}0===n.length&&t.length>0&&(n=Object.keys(t[0]));const r=t.map(e=>{const t={};for(let i=0;i{const t={};for(let n=0;n/^\s*CASE\b/i.test(e))}orderByUsesSelectAlias(e){if(!e.orderBy||0===e.orderBy.length)return!1;const t=new Set;for(const s of e.columns){const e=s.match(/\s+AS\s+(\w+)$/i);if(e)t.add(e[1]);else if(/^\s*CASE\b/i.test(s)){const e=ke(s);e?.alias&&t.add(e.alias)}}return 0!==t.size&&e.orderBy.some(e=>t.has(e.column))}whereHasCase(e){for(const[t,s]of Object.entries(e))if("$and"!==t&&"$or"!==t){if("$not"!==t){if(/^\s*CASE\b/i.test(t))return!0}else if(this.whereHasCase(s))return!0}else if(s.some(e=>this.whereHasCase(e)))return!0;return!1}getEngine(){return this.engine}projectRow(e,t){const s=[],n=[],i=[],r=[];for(const e of t){if("*"===e)continue;const t=ke(e);if(t){i.push({alias:t.alias??e,expr:t});continue}const a=e.match(/^(.+?)\s+AS\s+(\w+)$/i);if(a){n.push({alias:a[2],source:a[1].trim()});continue}const o=e.match(/^'(.*)'$/s);if(o){const t=o[1].replace(/\\'/g,"'");r.push({key:e,value:t});continue}s.push(e)}const a=s.length>0?u(e,s):{};for(const{alias:t,source:s}of n)if("*"===s)Object.assign(a,e);else{const n=s.match(/^'(.*)'$/s);a[t]=n?n[1].replace(/\\'/g,"'"):e[s]}for(const{key:e,value:t}of r)a[e]=t;for(const{alias:t,expr:s}of i)a[t]=Ae(s,e);return a}_hasAggregateColumn(e){return e.some(e=>/^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(e))}computeSingleAggregate(e,t){const s={};for(const n of t.columns){if("*"===n)continue;const t=n.match(/^(COUNT|SUM|AVG|MIN|MAX)\((.+?)\)(?:\s+AS\s+(\w+))?$/i);if(t){const[,i,r,a]=t;s[a||n]=this.computeAggregate(i.toUpperCase(),e,r.trim())}else s[n]=e.length>0?e[0][n]:null}return s}normalizeWhereColumns(e,t){const s={};for(const[n,i]of Object.entries(e))"$and"!==n&&"$or"!==n?"$not"!==n?"$exists"!==n?s[this.stripAlias(n,t)]=this.normalizeFieldValue(i,t):s[n]=this.normalizeExistsValue(i,t):s.$not=this.normalizeWhereColumns(i,t):s[n]=i.map(e=>this.normalizeWhereColumns(e,t));return s}normalizeExistsValue(e,t){if("object"!=typeof e||null===e)return e;const s=e;if(s.$subquery){const e=s.$subquery,n=[e.alias??e.from,...t].filter(Boolean);return{...s,$subquery:{...e,where:this.normalizeWhereColumns(e.where,n)}}}return e}normalizeFieldValue(e,t){if("object"!=typeof e||null===e||Array.isArray(e))return e;const s={};for(const[n,i]of Object.entries(e))"$and"===n||"$or"===n?s[n]=i.map(e=>this.normalizeWhereColumns(e,t)):"$not"===n&&"object"==typeof i&&null!==i?s[n]=this.normalizeFieldValue(i,t):"$col"===n?s[n]=this.stripAlias(String(i),t):"object"==typeof i&&null!==i&&!Array.isArray(i)&&"$col"in i?s[n]={$col:this.stripAlias(String(i.$col),t)}:s[n]=i;return s}stripAlias(e,t){for(const s of t){if(!s)continue;const t=`${s}.`;if(e.startsWith(t))return e.slice(t.length)}return e}hasCorrelatedRefs(e){for(const[t,s]of Object.entries(e))if("$and"!==t&&"$or"!==t){if("$not"!==t){if("$exists"!==t){if(/^\s*CASE\b/i.test(t))return!0;if(this.fieldHasColRef(s))return!0}else if("object"==typeof s&&null!==s&&"$subquery"in s)return!0}else if(this.hasCorrelatedRefs(s))return!0}else if(s.some(e=>this.hasCorrelatedRefs(e)))return!0;return!1}fieldHasColRef(e){if("object"!=typeof e||null===e||Array.isArray(e))return!1;const t=e;if("$col"in t)return!0;if("$and"in t||"$or"in t)return(t.$and??t.$or).some(e=>this.hasCorrelatedRefs(e));if("$not"in t&&"object"==typeof t.$not&&null!==t.$not)return this.fieldHasColRef(t.$not);for(const[,e]of Object.entries(t))if("object"==typeof e&&null!==e&&!Array.isArray(e)){if("$col"in e)return!0;if(this.fieldHasColRef(e))return!0}return!1}stripCorrelatedExists(e){const t={};for(const[s,n]of Object.entries(e))if("$and"!==s&&"$or"!==s){if("$not"===s){const e=this.stripCorrelatedExists(n);Object.keys(e).length>0&&(t.$not=e);continue}"$exists"!==s&&(/^\s*CASE\b/i.test(s)||(t[s]=n))}else t[s]=n.map(e=>this.stripCorrelatedExists(e));return t}async filterCorrelated(e,t){const s=[];for(const n of e){let e=this.resolveCaseKeys(t,n);e=await this.resolveSubqueries(e,n),a(n,e)&&s.push(n)}return s}resolveCaseKeys(e,t){const s={};for(const[n,i]of Object.entries(e))if("$and"!==n&&"$or"!==n)if("$not"!==n){if(/^\s*CASE\b/i.test(n)){const e=ke(n);if(!e)continue;const r=Ae(e,t);if(!this.caseConditionMatches(r,i))return{$caseResult:!1};s.$caseResult=!0;continue}s[n]=i}else s.$not=this.resolveCaseKeys(i,t);else s[n]=i.map(e=>this.resolveCaseKeys(e,t));return s}caseConditionMatches(e,t){if("object"!=typeof t||null===t||Array.isArray(t))return e===t;const s=t;for(const[t,n]of Object.entries(s))switch(t){case"$eq":if(e!==n)return!1;break;case"$ne":if(e===n)return!1;break;case"$gt":if(!(e>n))return!1;break;case"$gte":if(!(e>=n))return!1;break;case"$lt":if(!(ethis.bindWhereRefs(e,t)):"$not"===n&&"object"==typeof i&&null!==i?s[n]=this.bindColumnRefs(i,t):"object"==typeof i&&null!==i&&!Array.isArray(i)&&"$col"in i?s[n]=t[String(i.$col)]??null:s[n]=i;return s}bindWhereRefs(e,t){const s={};for(const[n,i]of Object.entries(e))"$and"===n||"$or"===n?s[n]=i.map(e=>this.bindWhereRefs(e,t)):"$not"===n?s.$not=this.bindWhereRefs(i,t):s[n]="$exists"===n?i:this.bindColumnRefs(i,t);return s}async resolveSubqueries(e,t){t&&(e=this.bindWhereRefs(e,t));const s={};for(const[n,i]of Object.entries(e)){if("$exists"===n&&"object"==typeof i&&null!==i){const e=i,n=e.$subquery,r=!!e.$negate;let a=n.where;this.hasCorrelatedRefs(a)&&(a=this.bindWhereRefs(a,t??{}));const o=await this.executeSelectPart({...n,where:a});s.$exists=o.length>0!==r;continue}"$and"===n&&Array.isArray(i)?s.$and=await Promise.all(i.map(e=>this.resolveSubqueries(e,t))):"$or"===n&&Array.isArray(i)?s.$or=await Promise.all(i.map(e=>this.resolveSubqueries(e,t))):"$not"!==n||"object"!=typeof i||null===i?s[n]="object"==typeof i&&null!==i?await this.resolveOperatorSubqueries(i):i:s.$not=await this.resolveSubqueries(i,t)}return s}async resolveOperatorSubqueries(e){const t={};for(const[s,n]of Object.entries(e))if("$and"===s&&Array.isArray(n))t.$and=await Promise.all(n.map(e=>this.resolveSubqueries(e)));else if("$or"===s&&Array.isArray(n))t.$or=await Promise.all(n.map(e=>this.resolveSubqueries(e)));else if("$not"!==s)if("object"==typeof n&&null!==n&&"$subquery"in n){const e=n.$subquery,i=await this.executeSelect(e);if("$in"===s||"$nin"===s){const e=Object.keys(i[0]||{})[0],n=i.map(t=>t[e]);t[s]=n}else if(0===i.length)t[s]=null;else{const e=Object.keys(i[0])[0];t[s]=i[0][e]}}else t[s]=n;else t.$not="object"==typeof n&&null!==n?await this.resolveOperatorSubqueries(n):n;return t}}class Ce{constructor(e){this.tables=new Map,this.completed=!1,this.engine=e}table(e){let t=this.tables.get(e);return t||(t=new ye(this.engine,e),this.tables.set(e,t)),t}_markCompleted(){this.completed=!0}isCompleted(){return this.completed}}class Ne{constructor(e){this.engine=e}async execute(e){const t=new Ce(this.engine);await this.engine.beginTransaction();try{const s=await e(t);return await this.engine.commitTransaction(),t._markCompleted(),s}catch(e){if(await this.engine.rollbackTransaction(),e instanceof n)throw e;throw new n(`Transaction failed: ${e.message}`,"TRANSACTION_ERROR",e)}}}class Oe{constructor(){this.plugins=[],this.hooks=new Map}register(e,t){const s=e.priority??0,n=this.plugins.findIndex(e=>(e.priority??0)t.name===e);-1!==t&&(this.plugins[t].destroy(),this.plugins.splice(t,1))}getPlugins(){return[...this.plugins]}on(e,t){const s=this.hooks.get(e)??[];s.push(t),this.hooks.set(e,s)}off(e,t){const s=this.hooks.get(e);if(s){const e=s.indexOf(t);-1!==e&&s.splice(e,1)}}async trigger(e,...t){const s=this.hooks.get(e);if(s)for(const e of s)await e(...t)}destroy(){for(const e of this.plugins)try{e.destroy()}catch(e){}this.plugins=[],this.hooks.clear()}}class _e{get version(){return this._version}get maxRowsPerQuery(){return this.config.maxRowsPerQuery??0}get debug(){return this.config.debug??!1}constructor(e){this.ready=!1,this.tableCache=new Map,this.channel=null,this.listeners=new Map,this.migrations=new Map,this.config=e,this.name=e.name??s.name,this.mode=e.mode??s.mode,this._version=e.version??s.version,this.pluginManager=new Oe,e.multiTabSync&&"undefined"!=typeof BroadcastChannel&&(this.channel=new BroadcastChannel(`metona-sqlark:${this.name}`),this.channel.onmessage=e=>{const t=e.data;t&&"change"===t.type&&(this.emit(t.table??"",{type:"external",table:t.table??""}),this.engine instanceof de&&this.engine.reloadMemoryFromDisk().catch(()=>{}))})}async init(){if(this.engine=this.createEngine(),await this.engine.open(this.name,this.version),"function"==typeof this.engine.getMeta)try{const e=await this.engine.getMeta("__metona_version");null!=e&&Number(e)>=1&&(this._version=Math.max(this._version,Math.floor(Number(e))))}catch{}if(this.executor=new Re(this.engine,this.maxRowsPerQuery),this.transactionManager=new Ne(this.engine),this.config.plugins)for(const e of this.config.plugins)this.pluginManager.register(e,this);this.ready=!0,this.config.onReady&&this.config.onReady(this)}isReady(){return this.ready}async defineTable(e,t){this.ensureReady();const s=y(e,t);try{await this.pluginManager.trigger("beforeCreateTable",s),await this.engine.createTable(s),await this.pluginManager.trigger("afterCreateTable",s)}catch(e){throw this._onError(e),e}this.tableCache.delete(e)}table(e){this.ensureReady();let t=this.tableCache.get(e);return t||(t=new ye(this.engine,e,this.executor,e=>this.broadcastChange(e),(e,t)=>this.pluginManager.trigger(e,...t)),this.tableCache.set(e,t)),t}async dropTable(e){this.ensureReady();try{await this.pluginManager.trigger("beforeDropTable",e),await this.engine.dropTable(e),await this.pluginManager.trigger("afterDropTable",e)}catch(e){throw this._onError(e),e}this.tableCache.delete(e)}async getTableNames(){return this.ensureReady(),this.engine.getTableNames()}async query(e){this.ensureReady();const t=this.debug?Date.now():0;let s;await this.pluginManager.trigger("beforeQuery",e);try{const t=Se(e);for(const e of t){await this.triggerStatementHooks(e,"before"),s=await this.executor.execute(e),await this.triggerStatementHooks(e,"after",s);const t=this.writeStatementTable(e);t&&this.broadcastChange(t)}}catch(e){throw this._onError(e),e}if(await this.pluginManager.trigger("afterQuery",e,s),this.debug){const n=Date.now()-t,i=Array.isArray(s)?s.length:0;this._debug(`query [${n}ms] ${i} rows: ${e.slice(0,100)}`)}return s}async queryStream(e,t){this.ensureReady();const s=Se(e)[0];if(!s||"SELECT"!==s.type)throw new n("queryStream only supports SELECT statements","NOT_SUPPORTED");const i=s,r=i.columns.some(e=>/^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(e));if(!(i.joins||i.groupBy||i.having||i.distinct||r||i.orderBy&&i.orderBy.length>0||i.where&&void 0!==i.where.$exists)&&"function"==typeof this.engine.findStream&&"AsyncFunction"!==t.constructor?.name){const e=this.normalizeWhereForStream(i),s=i.columns.filter(e=>!/\s+AS\s+\w+$/i.test(e));return this.engine.findStream(i.from,{table:i.from,columns:s.length>0&&"*"!==s[0]?s:["*"],where:e&&Object.keys(e).length>0?e:void 0,limit:i.limit,offset:i.offset},t)}const a=await this.query(e);if(Array.isArray(a)){for(const e of a)await t(e);return a.length}return 0}normalizeWhereForStream(e){const t=[e.alias??e.from].filter(Boolean),s=e=>{for(const s of t)if(e.startsWith(`${s}.`))return e.slice(s.length+1);return e},n=e=>{const t={};for(const[i,r]of Object.entries(e))"$and"===i||"$or"===i?t[i]=r.map(n):"$not"===i&&"object"==typeof r&&null!==r?t.$not=n(r):t[s(i)]=r;return t};return n(e.where??{})}async transaction(e){this.ensureReady(),await this.pluginManager.trigger("beforeTransaction");try{const t=await this.transactionManager.execute(e);return await this.pluginManager.trigger("afterTransaction"),t}catch(e){throw this._onError(e),e}}async exportTable(e){return this.ensureReady(),this.engine.find(e,{table:e})}async importTable(e,t){this.ensureReady();try{return await this.engine.insert(e,t)}catch(e){throw this._onError(e),e}}async exportAll(){this.ensureReady();const e={},t=await this.engine.getTableNames();for(const s of t)e[s]=await this.engine.find(s,{table:s});return e}async backup(){return this.ensureReady(),"function"==typeof this.engine.backup?this.engine.backup():this.exportAll()}subscribe(e,t){const s=`change:${e}`;return this.listeners.has(s)||this.listeners.set(s,new Set),this.listeners.get(s).add(t),()=>this.listeners.get(s)?.delete(t)}emit(e,t){const s=`change:${e}`;this.listeners.get(s)?.forEach(e=>e(t))}broadcastChange(e){if(this.channel)try{this.channel.postMessage({type:"change",table:e})}catch{}}writeStatementTable(e){switch(e.type){case"INSERT":return e.into;case"UPDATE":case"CREATE_INDEX":case"DROP_INDEX":return e.table;case"DELETE":return e.from;case"CREATE_TABLE":case"DROP_TABLE":case"TRUNCATE_TABLE":case"ALTER_TABLE":return e.name;default:return null}}async triggerStatementHooks(e,t,s){switch(e.type){case"INSERT":{const n=(e.values??[]).map(t=>{const s={},n=e.columns??[];for(let e=0;ee[0]-t[0]))t<=e&&t>this._version&&(await s(this),this._version=t);if("function"==typeof this.engine.setMeta)try{await this.engine.setMeta("__metona_version",String(this._version))}catch{}}async repair(){if(this.ensureReady(),"function"==typeof this.engine.repair)return await this.engine.repair(),void this.tableCache.clear();this.tableCache.clear()}async clearAll(){if(this.ensureReady(),"function"==typeof this.engine.clearAll)await this.engine.clearAll();else{const e=await this.engine.getTableNames();for(const t of e)await this.engine.dropTable(t)}this.tableCache.clear()}getPluginManager(){return this.pluginManager}on(e,t){this.pluginManager.on(e,t)}async close(){this.channel&&(this.channel.close(),this.channel=null),this.pluginManager.destroy(),await this.engine.close(),this.tableCache.clear(),this.ready=!1}getEngine(){return this.engine}createEngine(){const e=this.mode,t=this.config.diskEngine??"indexeddb";switch(e){case"memory":return new d;case"disk":return"opfs"===t?new m:new f;case"aria":return new ue({storageBackend:"opfs"===t?"opfs":"indexeddb",...this.config.aria??{}});case"hybrid":return new de(t);default:throw new n(`Unknown storage mode: ${e}`,"CONFIG_ERROR")}}ensureReady(){if(!this.ready)throw new n("Database not initialized. Call await db.init() first.","DB_NOT_READY")}_onError(e){if(this.config.onError)try{this.config.onError(e)}catch{}}_debug(e,...t){this.debug}}const De=new class{constructor(){this.connections=new Map,this.refCount=new Map}async connect(e){const t=e.name,s=this.connections.get(t);if(s&&s.isReady()){const e=(this.refCount.get(t)??0)+1;return this.refCount.set(t,e),s}const n=new _e(e);return await n.init(),this.connections.set(t,n),this.refCount.set(t,1),n.disconnect=async()=>{await this.release(t)},n}async release(e){const t=(this.refCount.get(e)??1)-1;if(t<=0){const t=this.connections.get(e);t&&(await t.close(),this.connections.delete(e)),this.refCount.delete(e)}else this.refCount.set(e,t)}async forceClose(e){const t=this.connections.get(e);t&&(await t.close(),this.connections.delete(e)),this.refCount.delete(e)}async closeAll(){for(const[,e]of this.connections)try{await e.close()}catch{}this.connections.clear(),this.refCount.clear()}getActiveConnections(){return Array.from(this.connections.keys())}},Le=_e;async function $e(e){const t=new _e(e);return await t.init(),t}Le.connect=e=>De.connect(e),Le.disconnect=e=>De.release(e),Le.disconnectAll=()=>De.closeAll(),Le.getActiveConnections=()=>De.getActiveConnections();const ve={VERSION:i,version:i,create:$e,MetonaSqlark:_e,MeSqlark:_e};"undefined"!=typeof window&&(window.MetonaSqlark=ve,window.MeSqlark=ve);const Be=_e;e.AriaEngine=ue,e.HybridEngine=de,e.IndexedDBEngine=f,e.MeSqlark=Be,e.MemoryEngine=d,e.MetonaSqlark=_e,e.OPFSBackend=J,e.OPFSEngine=m,e.Table=ye,e.VERSION=i,e.api=ve,e.create=$e,e.default=ve,e.parse=function(e){return new Ee(e).parseStatement()},e.parseAll=Se,e.tokenize=function(e){const t=new Te(e),s=[];let n=t.nextToken();for(;n.type!==we.EOF;)s.push(n),n=t.nextToken();return s.push(n),s},Object.defineProperty(e,"__esModule",{value:!0})}); diff --git a/jest.config.cjs b/jest.config.cjs index 9b6a9b8..db008a1 100644 --- a/jest.config.cjs +++ b/jest.config.cjs @@ -8,6 +8,12 @@ module.exports = { '/node_modules/(?!(@rollup)/)', ], moduleFileExtensions: ['ts', 'js', 'json'], + // Playwright e2e(tests/e2e/)与共享测试工具(tests/helpers/)不属于 jest 单元测试 + testPathIgnorePatterns: [ + '/node_modules/', + '/tests/e2e/', + '/tests/helpers/', + ], collectCoverageFrom: [ 'src/**/*.ts', '!src/index.ts', diff --git a/package-lock.json b/package-lock.json index 3299223..de123da 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,19 @@ { "name": "@metona-team/metona-sqlark", - "version": "0.4.1", + "version": "0.4.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@metona-team/metona-sqlark", - "version": "0.4.1", + "version": "0.4.4", "license": "MIT", "devDependencies": { "@babel/core": "^7.22.0", "@babel/plugin-transform-modules-commonjs": "^7.22.0", "@babel/preset-env": "^7.22.0", "@babel/preset-typescript": "^7.22.0", + "@playwright/test": "^1.62.1", "@rollup/plugin-commonjs": "^25.0.0", "@rollup/plugin-node-resolve": "^15.0.0", "@rollup/plugin-terser": "^0.4.0", @@ -25,6 +26,7 @@ "fake-indexeddb": "^6.2.5", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", + "playwright": "^1.62.1", "prettier": "^2.8.0", "rollup": "^3.20.0", "rollup-plugin-dts": "^5.3.0", @@ -2543,6 +2545,22 @@ "node": ">= 8" } }, + "node_modules/@playwright/test": { + "version": "1.62.1", + "resolved": "https://registry.npmmirror.com/@playwright/test/-/test-1.62.1.tgz", + "integrity": "sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.62.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/@rollup/plugin-commonjs": { "version": "25.0.8", "resolved": "https://registry.npmmirror.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz", @@ -6750,6 +6768,53 @@ "node": ">=8" } }, + "node_modules/playwright": { + "version": "1.62.1", + "resolved": "https://registry.npmmirror.com/playwright/-/playwright-1.62.1.tgz", + "integrity": "sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.62.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.62.1", + "resolved": "https://registry.npmmirror.com/playwright-core/-/playwright-core-1.62.1.tgz", + "integrity": "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", diff --git a/package.json b/package.json index 94f15ab..6deb245 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@metona-team/metona-sqlark", - "version": "0.4.4", + "version": "0.5.1", "description": "Frontend SQL database with in-memory and disk dual-mode storage", "type": "module", "main": "dist/metona-sqlark.cjs", @@ -35,6 +35,7 @@ "test": "jest", "test:coverage": "jest --coverage", "test:watch": "jest --watch", + "test:e2e": "playwright test", "lint": "eslint \"src/**/*.ts\"", "lint:fix": "eslint \"src/**/*.ts\" --fix", "format": "prettier --write \"src/**/*.ts\"", @@ -66,6 +67,7 @@ "@babel/plugin-transform-modules-commonjs": "^7.22.0", "@babel/preset-env": "^7.22.0", "@babel/preset-typescript": "^7.22.0", + "@playwright/test": "^1.62.1", "@rollup/plugin-commonjs": "^25.0.0", "@rollup/plugin-node-resolve": "^15.0.0", "@rollup/plugin-terser": "^0.4.0", @@ -78,6 +80,7 @@ "fake-indexeddb": "^6.2.5", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", + "playwright": "^1.62.1", "prettier": "^2.8.0", "rollup": "^3.20.0", "rollup-plugin-dts": "^5.3.0", diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 0000000..d79a1d1 --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,24 @@ +/** + * Playwright E2E 配置 — 真实 Chromium 环境验证 OPFS 存储后端 + */ +import { defineConfig } from '@playwright/test'; + +export default defineConfig({ + testDir: './tests/e2e', + timeout: 60_000, + fullyParallel: false, + workers: 1, // OPFS 有锁/配额,串行执行避免互相干扰 + retries: 1, + reporter: [['list']], + use: { + baseURL: 'http://127.0.0.1:3344', + trace: 'retain-on-failure', + }, + webServer: { + // Node 静态服务(与 MetonaEditor 一致,不依赖 python3) + command: 'node tests/e2e/server.cjs 3344', + url: 'http://127.0.0.1:3344', + reuseExistingServer: !process.env.CI, + timeout: 30_000, + }, +}); diff --git a/site/benchmark.html b/site/benchmark.html index 49a6121..a152b44 100644 --- a/site/benchmark.html +++ b/site/benchmark.html @@ -79,14 +79,14 @@

⚡ 性能基准测试

-

在浏览器中实测 MemoryAria(LSM-Tree 自研引擎)两种模式的真实性能。 - 数据量分三档(1K / 10K / 50K 行),测量 INSERT / 主键查询 / 索引查询 / UPDATE / DELETE 的吞吐(ops/sec)。 - 测试结果取决于你的设备与浏览器,仅供参考。

+

在浏览器中实测 MemoryAria(LSM-Tree 自研引擎)在纯内存 / IndexedDB / OPFS(页面化 4KB 存储)三种存储后端下的真实性能。 + 数据量分档(1K / 10K 行),测量 INSERT / 主键查询 / 索引查询 / UPDATE / DELETE 的吞吐(ops/sec)。 + 测试结果取决于你的设备与浏览器,仅供参考。磁盘后端结果反映真实持久化成本(WAL full 同步模式)。

- +
@@ -99,7 +99,9 @@ 引擎数据量INSERT主键查询索引查询UPDATEDELETE -

注:Memory 模式为纯内存 Map 存储;Aria 模式为 LSM-Tree + MemTable 存储(storageBackend: 'memory',无磁盘 I/O)。 +

注:Memory = 纯内存 Map 引擎;Aria-memory = LSM-Tree(内存后端,无磁盘 I/O); + Aria-IndexedDB = LSM-Tree(IDB 后端,整 value SSTable);Aria-OPFS = LSM-Tree(OPFS 后端,4KB 页面化存储 + BufferPool LRU 缓存 + WAL 分片真追加)。 + 磁盘后端使用 walSyncMode: 'full'(每条写入同步落盘,最安全的崩溃一致性)。 INSERT 为单行批量写入(含 WAL 记录);UPDATE/DELETE 按主键条件执行。

@@ -107,8 +109,16 @@ + + + diff --git a/tests/e2e/opfs.spec.ts b/tests/e2e/opfs.spec.ts new file mode 100644 index 0000000..0e58ce0 --- /dev/null +++ b/tests/e2e/opfs.spec.ts @@ -0,0 +1,261 @@ +/** + * MetonaSqlark E2E — 真实 Chromium + OPFS 环境验证 + * + * 覆盖: + * 1. OPFS 持久化:写入 → 刷新页面 → 数据保留(跨页面生命周期) + * 2. 优雅关闭后重开:数据完整 + * 3. 崩溃恢复:写入后强制终止(不 close)→ 重开 → WAL 重放数据完整 + * 4. 多标签页锁:页 A 持锁 → 页 B 打开同一库 → ARIA_LOCKED + * 5. 加密库密码往返(真实 WebCrypto) + * 6. 页面化 + OPFS 端到端 + * 7. repair() 自愈(真实文件系统) + */ +import { test, expect, type Page } from '@playwright/test'; + +const HARNESS = '/tests/e2e/harness.html'; + +async function openPage(page: Page): Promise { + await page.goto(HARNESS); + await expect(page.locator('#status')).toHaveText('ready'); +} + +/** 在页面中执行 harness 方法(统一包装错误信息) */ +async function run(page: Page, method: string, args: unknown): Promise { + const result = await page.evaluate( + ([m, a]) => (window as unknown as { __ms: Record Promise> }).__ms[m](a), + [method, args] as const, + ); + return result as T; +} + +/** 强制"崩溃"当前页面:终止渲染进程(不触发 beforeunload/close) */ +async function crashPage(page: Page): Promise { + await page.evaluate(() => { + // 模拟崩溃:直接终止。使用 CDP Page.crash 等价效果 —— 通过无限循环让渲染进程被杀 + // 但更可靠的方式是关闭页面连接(Playwright 无 Page.crash 公共 API), + // 这里用 context.close 前先把页面里的清理路径断开: + const win = window as unknown as { __ms: { __db: unknown } | null }; + // 断开所有引用(模拟进程死亡:不调用 close) + win.__ms = null; + }); + await page.close(); +} + +test.describe('OPFS 真实环境', () => { + test('写入 → 刷新页面 → 数据保留(持久化)', async ({ page }) => { + await openPage(page); + await run(page, 'open', { name: 'e2e-persist', diskEngine: 'opfs' }); + await run(page, 'createTable', { + table: 'users', + columns: [ + { name: 'id', type: 'string', primaryKey: true }, + { name: 'name', type: 'string' }, + { name: 'age', type: 'number' }, + ], + }); + await run(page, 'insert', { + table: 'users', + rows: [ + { id: '1', name: 'Alice', age: 30 }, + { id: '2', name: 'Bob', age: 25 }, + ], + }); + expect(await run<{ count: number }>(page, 'count', { table: 'users' })).toEqual({ count: 2 }); + + // 刷新页面(完全重新加载,OPFS 数据必须保留) + await page.reload(); + await expect(page.locator('#status')).toHaveText('ready'); + await run(page, 'open', { name: 'e2e-persist', diskEngine: 'opfs' }); + const res = await run<{ count: number }>(page, 'count', { table: 'users' }); + expect(res.count).toBe(2); + const found = await run<{ rows: Record[] }>(page, 'find', { + table: 'users', where: { id: '1' }, + }); + expect(found.rows[0].name).toBe('Alice'); + await run(page, 'close'); + }); + + test('优雅关闭后重开:数据完整', async ({ page }) => { + await openPage(page); + await run(page, 'open', { name: 'e2e-close-reopen', diskEngine: 'opfs' }); + await run(page, 'createTable', { + table: 't', columns: [{ name: 'id', type: 'string', primaryKey: true }], + }); + for (let i = 0; i < 20; i++) { + await run(page, 'insert', { table: 't', rows: [{ id: `r-${i}` }] }); + } + await run(page, 'close'); + + await run(page, 'open', { name: 'e2e-close-reopen', diskEngine: 'opfs' }); + expect(await run<{ count: number }>(page, 'count', { table: 't' })).toEqual({ count: 20 }); + await run(page, 'close'); + }); + + test('崩溃恢复:写入后强制终止 → 重开 WAL 重放数据完整', async ({ page }) => { + await openPage(page); + // 不 checkpoint(interval 极大),全部写入留在 WAL + await run(page, 'open', { + name: 'e2e-crash', diskEngine: 'opfs', checkpointInterval: 999999999, + }); + await run(page, 'createTable', { + table: 'logs', columns: [{ name: 'id', type: 'string', primaryKey: true }], + }); + const total = 50; + for (let i = 0; i < total; i++) { + await run(page, 'insert', { table: 'logs', rows: [{ id: `log-${i}` }] }); + } + // 模拟崩溃:直接终止页面(不调用 close → 不 checkpoint) + await crashPage(page); + + // 新页面重开:WAL 重放 + const page2 = await page.context().newPage(); + await openPage(page2); + await run(page2, 'open', { + name: 'e2e-crash', diskEngine: 'opfs', checkpointInterval: 999999999, + }); + const res = await run<{ count: number }>(page2, 'count', { table: 'logs' }); + expect(res.count).toBe(total); + await run(page2, 'close'); + await page2.close(); + }); + + test('多标签页锁:第二个标签页打开同一库 → ARIA_LOCKED', async ({ page }) => { + await openPage(page); + await run(page, 'open', { name: 'e2e-lock', diskEngine: 'opfs' }); + await run(page, 'createTable', { + table: 't', columns: [{ name: 'id', type: 'string', primaryKey: true }], + }); + + // 第二个标签页尝试打开同一库 + const page2 = await page.context().newPage(); + await openPage(page2); + const err = await page2.evaluate(async () => { + try { + await (window as unknown as { __ms: { open: (o: unknown) => Promise } }).__ms.open( + { name: 'e2e-lock', diskEngine: 'opfs' }, + ); + return { ok: true }; + } catch (e) { + return { ok: false, code: (e as { code?: string }).code, msg: (e as Error).message }; + } + }); + expect(err.ok).toBe(false); + expect((err as { code?: string }).code).toBe('ARIA_LOCKED'); + + // 第一个标签页关闭后 → 第二标签页可打开 + await run(page, 'close'); + const retry = await page2.evaluate(async () => { + const ms = (window as unknown as { __ms: { open: (o: unknown) => Promise; close: () => Promise } }).__ms; + await ms.open({ name: 'e2e-lock', diskEngine: 'opfs' }); + return { ok: true }; + }); + expect(retry.ok).toBe(true); + await run(page2, 'close'); + await page2.close(); + }); + + test('加密库:密码往返(真实 WebCrypto AES-GCM)', async ({ page }) => { + await openPage(page); + await run(page, 'open', { name: 'e2e-enc', diskEngine: 'opfs', encryptionPassword: 'correct-horse' }); + await run(page, 'createTable', { + table: 'secrets', + columns: [ + { name: 'id', type: 'string', primaryKey: true }, + { name: 'payload', type: 'string' }, + ], + }); + await run(page, 'insert', { + table: 'secrets', + rows: [{ id: 's1', payload: 'top-secret-content' }], + }); + await run(page, 'close'); + + // 错误密码 → 打开失败 + const page2 = await page.context().newPage(); + await openPage(page2); + const err = await page2.evaluate(async () => { + try { + await (window as unknown as { __ms: { open: (o: unknown) => Promise } }).__ms.open( + { name: 'e2e-enc', diskEngine: 'opfs', encryptionPassword: 'wrong-password' }, + ); + return { ok: true }; + } catch (e) { + return { ok: false, code: (e as { code?: string }).code }; + } + }); + expect((err as { code?: string }).code).toBe('ARIA_DECRYPT_ERROR'); + + // 正确密码 → 数据完整 + await run(page2, 'open', { name: 'e2e-enc', diskEngine: 'opfs', encryptionPassword: 'correct-horse' }); + const found = await run<{ rows: Record[] }>(page2, 'find', { + table: 'secrets', where: { id: 's1' }, + }); + expect(found.rows[0].payload).toBe('top-secret-content'); + await run(page2, 'close'); + await page2.close(); + }); + + test('OPFS 页面化端到端:大数据量 + 二级索引查询', async ({ page }) => { + await openPage(page); + await run(page, 'open', { name: 'e2e-paged', diskEngine: 'opfs' }); + await run(page, 'createTable', { + table: 'docs', + columns: [ + { name: 'id', type: 'string', primaryKey: true }, + { name: 'tag', type: 'string', index: true }, + { name: 'body', type: 'string' }, + ], + }); + const total = 100; + for (let batch = 0; batch < 5; batch++) { + const rows = []; + for (let i = 0; i < 20; i++) { + const idx = batch * 20 + i; + rows.push({ id: `d-${idx}`, tag: idx % 3 === 0 ? 'red' : 'blue', body: '页面化端到端内容'.repeat(30) }); + } + await run(page, 'insert', { table: 'docs', rows }); + } + expect(await run<{ count: number }>(page, 'count', { table: 'docs' })).toEqual({ count: total }); + + // 二级索引查询(真实浏览器中走 LSM 索引) + const reds = await run<{ rows: Record[] }>(page, 'find', { + table: 'docs', where: { tag: 'red' }, + }); + expect(reds.rows.length).toBeGreaterThan(0); + + // SQL 查询 + const sql = await run<{ rows: Record[] }>(page, 'query', { + sql: 'SELECT COUNT(*) AS n FROM docs WHERE tag = \'red\'', + }); + expect(Number(sql.rows[0].n)).toBe(reds.rows.length); + + await run(page, 'close'); + }); + + test('repair() 自愈(真实文件系统)', async ({ page }) => { + await openPage(page); + await run(page, 'open', { name: 'e2e-repair', diskEngine: 'opfs' }); + await run(page, 'createTable', { + table: 't', + columns: [ + { name: 'id', type: 'string', primaryKey: true }, + { name: 'v', type: 'string' }, + ], + }); + await run(page, 'insert', { table: 't', rows: [{ id: 'a', v: 'keep-me' }] }); + // 通过 SQL 触发 checkpoint + 手动 repair + await run(page, 'repair'); + expect(await run<{ count: number }>(page, 'count', { table: 't' })).toEqual({ count: 1 }); + // clearAll 后重建表(表结构随 clearAll 清空) + await run(page, 'clearAll'); + await run(page, 'createTable', { + table: 't', + columns: [ + { name: 'id', type: 'string', primaryKey: true }, + { name: 'v', type: 'string' }, + ], + }); + expect(await run<{ count: number }>(page, 'count', { table: 't' })).toEqual({ count: 0 }); + await run(page, 'close'); + }); +}); diff --git a/tests/e2e/server.cjs b/tests/e2e/server.cjs new file mode 100644 index 0000000..ada2e60 --- /dev/null +++ b/tests/e2e/server.cjs @@ -0,0 +1,39 @@ +#!/usr/bin/env node +/** + * MetonaSqlark E2E 静态文件服务器(Playwright webServer 用) + * 与 MetonaEditor 的 e2e 服务模式保持一致:Node http 静态服务,不依赖 python3。 + * 用法: node tests/e2e/server.cjs [port] + */ +const http = require('http'); +const fs = require('fs'); +const path = require('path'); + +const ROOT = path.resolve(__dirname, '..', '..'); +const PORT = Number(process.argv[2] || process.env.E2E_PORT || 3344); + +const MIME = { + '.html': 'text/html; charset=utf-8', + '.js': 'text/javascript', + '.mjs': 'text/javascript', + '.cjs': 'text/javascript', + '.css': 'text/css', + '.json': 'application/json', + '.svg': 'image/svg+xml', + '.png': 'image/png', +}; + +const server = http.createServer((req, res) => { + let p = decodeURIComponent((req.url || '/').split('?')[0]); + // 根路径指向 e2e harness(playwright webServer 探测要求 2xx/3xx) + if (p === '/') p = '/tests/e2e/harness.html'; + const file = path.resolve(ROOT, '.' + p); + if (!file.startsWith(ROOT) || !fs.existsSync(file) || !fs.statSync(file).isFile()) { + res.writeHead(404); res.end('404 Not Found'); return; + } + res.writeHead(200, { 'Content-Type': MIME[path.extname(file)] || 'text/plain' }); + fs.createReadStream(file).pipe(res); +}); + +server.listen(PORT, '127.0.0.1', () => { + console.log(`E2E server · http://127.0.0.1:${PORT}/`); +}); diff --git a/tests/engine/aria-advanced.test.ts b/tests/engine/aria-advanced.test.ts index 8afa553..249d074 100644 --- a/tests/engine/aria-advanced.test.ts +++ b/tests/engine/aria-advanced.test.ts @@ -113,10 +113,10 @@ describe('AriaEngine — Bloom + WAL + BufferPool', () => { freePageId: async (_id: number) => {}, }; const pool = new BufferPool(pageIO, 4); - const page = await pool.newPage(); - expect(page.pageId).toBeGreaterThan(0); - expect(page.pins).toBe(1); - pool.unpin(page); + const pages = await pool.newPages(1); + expect(pages[0].pageId).toBeGreaterThan(0); + expect(pages[0].pins).toBe(1); + pool.unpin(pages[0]); await backend.close(); }); @@ -130,11 +130,12 @@ describe('AriaEngine — Bloom + WAL + BufferPool', () => { freePageId: async (_id: number) => {}, }; const pool = new BufferPool(pageIO, 4); - const page = await pool.newPage(); - pool.markDirty(page); - pool.unpin(page); + const pages = await pool.newPages(1); + pool.markDirty(pages[0]); + pool.unpin(pages[0]); await pool.flushAll(); - expect(pool.getDirtyPageCount()).toBe(0); + const buf = await backend.read('pg_1'); + expect(buf).not.toBeNull(); await backend.close(); }); }); diff --git a/tests/engine/aria-buffer.test.ts b/tests/engine/aria-buffer.test.ts index bcb205d..c8e249c 100644 --- a/tests/engine/aria-buffer.test.ts +++ b/tests/engine/aria-buffer.test.ts @@ -1,273 +1,240 @@ -/** - * AriaEngine Buffer Pool + Eviction 单元测试 - */ -import { BufferPool, type PageIO } from '../../src/engine/aria/buffer/pool'; -import { LRUList, EvictionManager } from '../../src/engine/aria/buffer/eviction'; -import { PageType, PAGE_SIZE } from '../../src/engine/aria/types'; -import { initPageHeader } from '../../src/engine/aria/page/header'; - -// =================================================================== -// LRUList -// =================================================================== -describe('AriaEngine — LRUList', () => { - function makePage(id: number) { - const data = new ArrayBuffer(PAGE_SIZE); - initPageHeader(data, id, PageType.DATA); - return { pageId: id, type: PageType.DATA, data, dirty: false, pins: 0, prev: null, next: null, lastAccess: Date.now() }; - } - - it('moveToHead — 单元素', () => { - const list = new LRUList(); - const p = makePage(1); - list.moveToHead(p); - expect(list.size).toBe(1); - }); - - it('moveToHead — 多元素保持 MRU 顺序', () => { - const list = new LRUList(); - const a = makePage(1); - const b = makePage(2); - const c = makePage(3); - list.moveToHead(a); - list.moveToHead(b); - list.moveToHead(c); - expect(list.size).toBe(3); - // c 是最新的 - }); - - it('getLRU 返回最久未使用', () => { - const list = new LRUList(); - const a = makePage(1); - const b = makePage(2); - list.moveToHead(a); - list.moveToHead(b); - expect(list.getLRU()!.pageId).toBe(1); - }); - - it('popLRU 移除并返回最久未使用', () => { - const list = new LRUList(); - const a = makePage(1); - const b = makePage(2); - list.moveToHead(a); - list.moveToHead(b); - const popped = list.popLRU(); - expect(popped!.pageId).toBe(1); - expect(list.size).toBe(1); - }); - - it('remove — 从中间移除', () => { - const list = new LRUList(); - const a = makePage(1); - const b = makePage(2); - const c = makePage(3); - list.moveToHead(a); - list.moveToHead(b); - list.moveToHead(c); - list.remove(b); - expect(list.size).toBe(2); - }); - - it('clear 清空', () => { - const list = new LRUList(); - list.moveToHead(makePage(1)); - list.moveToHead(makePage(2)); - list.clear(); - expect(list.size).toBe(0); - }); - - it('getAllPages 返回所有页面', () => { - const list = new LRUList(); - list.moveToHead(makePage(1)); - list.moveToHead(makePage(2)); - expect(list.getAllPages()).toHaveLength(2); - }); - - it('空 LRU getLRU 返回 null', () => { - const list = new LRUList(); - expect(list.getLRU()).toBeNull(); - }); - - it('空 LRU popLRU 返回 null', () => { - const list = new LRUList(); - expect(list.popLRU()).toBeNull(); - }); - - it('moveToHead 同元素不移重复', () => { - const list = new LRUList(); - const p = makePage(1); - list.moveToHead(p); - list.moveToHead(p); - list.moveToHead(p); - expect(list.size).toBe(1); - }); -}); - -// =================================================================== -// EvictionManager -// =================================================================== -describe('AriaEngine — EvictionManager', () => { - function makePage(id: number, dirty = false) { - const data = new ArrayBuffer(PAGE_SIZE); - initPageHeader(data, id, PageType.DATA); - return { pageId: id, type: PageType.DATA, data, dirty, pins: 0, prev: null, next: null, lastAccess: Date.now() }; - } - - it('access 更新 LRU', async () => { - let evicted = -1; - const em = new EvictionManager(3, async (p) => { evicted = p.pageId; }); - const p = makePage(1); - em.add(p); - em.access(p); - expect(em.getSize()).toBe(1); - }); - - it('add 不超过容量不触发驱逐', async () => { - const evictedPages: number[] = []; - const em = new EvictionManager(4, async (p) => { evictedPages.push(p.pageId); }); - em.add(makePage(1)); - em.add(makePage(2)); - em.add(makePage(3)); - await em.evictIfNeeded(1); - expect(evictedPages).toHaveLength(0); - expect(em.getSize()).toBe(3); - }); - - it('evictIfNeeded 超容量触发驱逐', async () => { - const evictedPages: number[] = []; - const em = new EvictionManager(2, async (p) => { evictedPages.push(p.pageId); }); - em.add(makePage(1)); - em.add(makePage(2)); - em.add(makePage(3)); // 超容量 - await em.evictIfNeeded(0); - // 驱逐后 size 应 <= 2 - expect(em.getSize()).toBeLessThanOrEqual(2); - }); - - it('remove 减少 size', () => { - const em = new EvictionManager(4, async () => {}); - const p = makePage(1); - em.add(p); - em.add(makePage(2)); - em.remove(p); - expect(em.getSize()).toBe(1); - }); - - it('getCapacity 返回配置容量', () => { - const em = new EvictionManager(128, async () => {}); - expect(em.getCapacity()).toBe(128); - }); - - it('clear 清空', () => { - const em = new EvictionManager(4, async () => {}); - em.add(makePage(1)); - em.add(makePage(2)); - em.clear(); - expect(em.getSize()).toBe(0); - }); - - it('脏页驱逐前调用 onEvict 回调', async () => { - let flushed = 0; - const em = new EvictionManager(2, async (_p) => { flushed++; }); - em.add(makePage(1, true)); // dirty page - em.add(makePage(2)); - await em.evictIfNeeded(1); // need space → evict page 1 - expect(flushed).toBeGreaterThanOrEqual(0); // May or may not evict - }); -}); - -// =================================================================== -// BufferPool (with Mock PageIO) -// =================================================================== -describe('AriaEngine — BufferPool', () => { - class MockPageIO implements PageIO { - store = new Map(); - nextId = 1; - reads = 0; - writes = 0; - - async readPage(pageId: number) { this.reads++; return this.store.get(pageId) ?? null; } - async writePage(pageId: number, data: ArrayBuffer) { this.writes++; this.store.set(pageId, data); } - async allocatePageId() { return this.nextId++; } - async freePageId(_pageId: number) {} - } - - it('newPage 创建页面并 pin', async () => { - const io = new MockPageIO(); - const pool = new BufferPool(io, 4); - const page = await pool.newPage(); - expect(page.pageId).toBe(1); - expect(page.pins).toBe(1); - expect(page.type).toBe(PageType.DATA); - pool.unpin(page); - }); - - it('getPage — 池中已存在则 pin++', async () => { - const io = new MockPageIO(); - const pool = new BufferPool(io, 4); - const p1 = await pool.newPage(); - pool.unpin(p1); - - const p2 = await pool.getPage(p1.pageId); - expect(p2!.pageId).toBe(p1.pageId); - expect(p2!.pins).toBe(1); - pool.unpin(p2!); - }); - - it('markDirty + flushPage 写回', async () => { - const io = new MockPageIO(); - const pool = new BufferPool(io, 4); - const page = await pool.newPage(); - new Uint8Array(page.data)[100] = 42; - pool.markDirty(page); - pool.unpin(page); - - await pool.flushPage(page.pageId); - expect(io.writes).toBeGreaterThan(0); - }); - - it('flushAll 刷新所有脏页', async () => { - const io = new MockPageIO(); - const pool = new BufferPool(io, 8); - const p1 = await pool.newPage(); - const p2 = await pool.newPage(); - pool.markDirty(p1); - pool.markDirty(p2); - pool.unpin(p1); - pool.unpin(p2); - - await pool.flushAll(); - expect(io.writes).toBe(2); - }); - - it('getCachedPageCount 返回缓存数', async () => { - const io = new MockPageIO(); - const pool = new BufferPool(io, 4); - await pool.newPage(); - await pool.newPage(); - expect(pool.getCachedPageCount()).toBe(2); - }); - - it('getDirtyPageCount 返回脏页数', async () => { - const io = new MockPageIO(); - const pool = new BufferPool(io, 4); - const p = await pool.newPage(); - pool.markDirty(p); - pool.unpin(p); - expect(pool.getDirtyPageCount()).toBe(1); - }); - - it('getCapacity 返回容量', async () => { - const io = new MockPageIO(); - const pool = new BufferPool(io, 64); - expect(pool.getCapacity()).toBe(64); - }); - - it('removePage 移除缓存', async () => { - const io = new MockPageIO(); - const pool = new BufferPool(io, 4); - const p = await pool.newPage(); - pool.unpin(p); - pool.removePage(p.pageId); - expect(pool.getCachedPageCount()).toBe(0); - }); -}); +/** + * AriaEngine Buffer Pool + Eviction 单元测试 + */ +import { BufferPool, type PageIO } from '../../src/engine/aria/buffer/pool'; +import { LRUList, EvictionManager } from '../../src/engine/aria/buffer/eviction'; +import { PageType, PAGE_SIZE } from '../../src/engine/aria/types'; +import { initPageHeader } from '../../src/engine/aria/page/header'; + +// =================================================================== +// LRUList +// =================================================================== +describe('AriaEngine — LRUList', () => { + function makePage(id: number) { + const data = new ArrayBuffer(PAGE_SIZE); + initPageHeader(data, id, PageType.DATA); + return { pageId: id, type: PageType.DATA, data, dirty: false, pins: 0, prev: null, next: null, lastAccess: Date.now() }; + } + + it('moveToHead — 单元素', () => { + const list = new LRUList(); + const p = makePage(1); + list.moveToHead(p); + expect(list.size).toBe(1); + }); + + it('moveToHead — 多元素保持 MRU 顺序', () => { + const list = new LRUList(); + const a = makePage(1); + const b = makePage(2); + const c = makePage(3); + list.moveToHead(a); + list.moveToHead(b); + list.moveToHead(c); + expect(list.size).toBe(3); + // c 是最新的 + }); + + it('getLRU 返回最久未使用', () => { + const list = new LRUList(); + const a = makePage(1); + const b = makePage(2); + list.moveToHead(a); + list.moveToHead(b); + expect(list.getLRU()!.pageId).toBe(1); + }); + + it('remove — 从中间移除', () => { + const list = new LRUList(); + const a = makePage(1); + const b = makePage(2); + const c = makePage(3); + list.moveToHead(a); + list.moveToHead(b); + list.moveToHead(c); + list.remove(b); + expect(list.size).toBe(2); + }); + + it('clear 清空', () => { + const list = new LRUList(); + list.moveToHead(makePage(1)); + list.moveToHead(makePage(2)); + list.clear(); + expect(list.size).toBe(0); + }); + + it('remove 从尾部移除', () => { + const list = new LRUList(); + const a = makePage(1); + list.moveToHead(a); + list.remove(a); + expect(list.size).toBe(0); + }); + + it('空 LRU getLRU 返回 null', () => { + const list = new LRUList(); + expect(list.getLRU()).toBeNull(); + }); + + it('moveToHead 同元素不移重复', () => { + const list = new LRUList(); + const p = makePage(1); + list.moveToHead(p); + list.moveToHead(p); + list.moveToHead(p); + expect(list.size).toBe(1); + }); +}); + +// =================================================================== +// EvictionManager +// =================================================================== +describe('AriaEngine — EvictionManager', () => { + function makePage(id: number, dirty = false) { + const data = new ArrayBuffer(PAGE_SIZE); + initPageHeader(data, id, PageType.DATA); + return { pageId: id, type: PageType.DATA, data, dirty, pins: 0, prev: null, next: null, lastAccess: Date.now() }; + } + + it('access 更新 LRU', async () => { + let evicted = -1; + const em = new EvictionManager(3, async (p) => { evicted = p.pageId; }); + const p = makePage(1); + em.add(p); + em.access(p); + expect((em as unknown as { lru: { size: number } }).lru.size).toBe(1); + }); + + it('add 不超过容量不触发驱逐', async () => { + const evictedPages: number[] = []; + const em = new EvictionManager(4, async (p) => { evictedPages.push(p.pageId); }); + em.add(makePage(1)); + em.add(makePage(2)); + em.add(makePage(3)); + await em.evictIfNeeded(1); + expect(evictedPages).toHaveLength(0); + expect((em as unknown as { lru: { size: number } }).lru.size).toBe(3); + }); + + it('evictIfNeeded 超容量触发驱逐', async () => { + const evictedPages: number[] = []; + const em = new EvictionManager(2, async (p) => { evictedPages.push(p.pageId); }); + em.add(makePage(1)); + em.add(makePage(2)); + em.add(makePage(3)); // 超容量 + await em.evictIfNeeded(0); + // 驱逐后 size 应 <= 2 + expect((em as unknown as { lru: { size: number } }).lru.size).toBeLessThanOrEqual(2); + }); + + it('remove 减少 size', () => { + const em = new EvictionManager(4, async () => {}); + const p = makePage(1); + em.add(p); + em.add(makePage(2)); + em.remove(p); + expect((em as unknown as { lru: { size: number } }).lru.size).toBe(1); + }); + + it('clear 清空', () => { + const em = new EvictionManager(4, async () => {}); + em.add(makePage(1)); + em.add(makePage(2)); + em.clear(); + expect((em as unknown as { lru: { size: number } }).lru.size).toBe(0); + }); + + it('脏页驱逐前调用 onEvict 回调', async () => { + let flushed = 0; + const em = new EvictionManager(2, async (_p) => { flushed++; }); + em.add(makePage(1, true)); // dirty page + em.add(makePage(2)); + await em.evictIfNeeded(1); // need space → evict page 1 + expect(flushed).toBeGreaterThanOrEqual(0); // May or may not evict + }); +}); + +// =================================================================== +// BufferPool (with Mock PageIO) +// =================================================================== +describe('AriaEngine — BufferPool', () => { + class MockPageIO implements PageIO { + store = new Map(); + nextId = 1; + reads = 0; + writes = 0; + + async readPage(pageId: number) { this.reads++; return this.store.get(pageId) ?? null; } + async writePage(pageId: number, data: ArrayBuffer) { this.writes++; this.store.set(pageId, data); } + async allocatePageId() { return this.nextId++; } + async freePageId(_pageId: number) {} + } + + it('newPage 创建页面并 pin', async () => { + const io = new MockPageIO(); + const pool = new BufferPool(io, 4); + const page = (await pool.newPages(1))[0]; + expect(page.pageId).toBe(1); + expect(page.pins).toBe(1); + expect(page.type).toBe(PageType.DATA); + pool.unpin(page); + }); + + it('getPage — 池中已存在则 pin++', async () => { + const io = new MockPageIO(); + const pool = new BufferPool(io, 4); + const p1 = (await pool.newPages(1))[0]; + pool.unpin(p1); + + const p2 = await pool.getPage(p1.pageId); + expect(p2!.pageId).toBe(p1.pageId); + expect(p2!.pins).toBe(1); + pool.unpin(p2!); + }); + + it('markDirty + flushPage 写回', async () => { + const io = new MockPageIO(); + const pool = new BufferPool(io, 4); + const page = (await pool.newPages(1))[0]; + new Uint8Array(page.data)[100] = 42; + pool.markDirty(page); + pool.unpin(page); + + await pool.flushPage(page.pageId); + expect(io.writes).toBeGreaterThan(0); + }); + + it('flushAll 刷新所有脏页', async () => { + const io = new MockPageIO(); + const pool = new BufferPool(io, 8); + const p1 = (await pool.newPages(1))[0]; + const p2 = (await pool.newPages(1))[0]; + pool.markDirty(p1); + pool.markDirty(p2); + pool.unpin(p1); + pool.unpin(p2); + + await pool.flushAll(); + expect(io.writes).toBe(2); + }); + + it('newPages 批量创建页面并 pin', async () => { + const io = new MockPageIO(); + const pool = new BufferPool(io, 8); + const pages = await pool.newPages(3); + expect(pages.map((p) => p.pageId)).toEqual([1, 2, 3]); + expect(pages.every((p) => p.pins === 1)).toBe(true); + expect(pages.every((p) => p.type === PageType.DATA)).toBe(true); + for (const p of pages) pool.unpin(p); + }); + + it('removePage 移除缓存', async () => { + const io = new MockPageIO(); + const pool = new BufferPool(io, 4); + const p = (await pool.newPages(1))[0]; + pool.unpin(p); + pool.removePage(p.pageId); + expect((pool as unknown as { pages: Map }).pages.size).toBe(0); + }); +}); diff --git a/tests/engine/aria-cache.test.ts b/tests/engine/aria-cache.test.ts index caf0975..89a0a8d 100644 --- a/tests/engine/aria-cache.test.ts +++ b/tests/engine/aria-cache.test.ts @@ -53,7 +53,7 @@ describe('AriaEngine SSTable 缓存内存上限', () => { for (let round = 0; round < 5; round++) { const rows = await engine.find('users', { table: 'users', where: { age: 25 } }); expect(rows.length).toBe(10); - expect(lsm.getCacheSize()).toBeLessThanOrEqual(lsm.getCacheLimit()); + expect(lsm.cacheSize).toBeLessThanOrEqual(lsm.cacheLimitBytes); } await engine.close(); @@ -74,7 +74,7 @@ describe('AriaEngine SSTable 缓存内存上限', () => { expect(all.length).toBe(300); const lsm = (engine as any).lsm; - expect(lsm.getCacheSize()).toBeLessThanOrEqual(lsm.getCacheLimit()); + expect(lsm.cacheSize).toBeLessThanOrEqual(lsm.cacheLimitBytes); await engine.close(); }); @@ -165,7 +165,7 @@ describe('AriaEngine SSTable 缓存内存上限', () => { for (let batch = 0; batch < 10; batch++) { await engine.insert('users', makeRows(30).map((r, i) => ({ ...r, id: `b${batch}_u${i}` }))); const lsm = (engine as any).lsm; - expect(lsm.getCacheSize()).toBeLessThanOrEqual(lsm.getCacheLimit()); + expect(lsm.cacheSize).toBeLessThanOrEqual(lsm.cacheLimitBytes); } const all = await engine.find('users', { table: 'users' }); diff --git a/tests/engine/aria-checksum.test.ts b/tests/engine/aria-checksum.test.ts new file mode 100644 index 0000000..27b2ab2 --- /dev/null +++ b/tests/engine/aria-checksum.test.ts @@ -0,0 +1,181 @@ +/** + * AriaEngine — SSTable CRC-32 损坏检测集成测试 + * + * 覆盖: + * 1. 打开时整文件 CRC 校验失败 → 损坏 SSTable 被清理(自愈),打开不阻塞 + * 2. 运行期预加载 CRC 校验失败 → 损坏文件不缓存并被清理 + * 3. 旧版无校验文件(checksum=0)在 LSM 层仍正常加载 + */ +import { AriaEngine } from '../../src/engine/aria/index'; +import { createSchema } from '../../src/table/schema'; +import 'fake-indexeddb/auto'; + +let idbCounter = 0; +function uniqueDB(): string { + return `crc-${Date.now()}-${++idbCounter}-${Math.random().toString(36).slice(2, 8)}`; +} + +const SCHEMA = () => createSchema('users', { + id: { type: 'string', primaryKey: true }, + name: { type: 'string' }, + age: { type: 'number' }, +}); + +/** 篡改 MemoryBackend 中指定 key 的一个字节 */ +async function corruptKey(engine: AriaEngine, key: string, byteOffset: number): Promise { + const backend = (engine as any).backend; + const raw = await backend.read(key); + expect(raw).not.toBeNull(); + const buf = new Uint8Array(raw as ArrayBuffer); + buf[Math.min(byteOffset, buf.length - 1)] ^= 0xff; + await backend.write(key, buf.buffer as ArrayBuffer); +} + +/** 列出 backend 中所有 sst_ 前缀 key */ +async function listSSTKeys(engine: AriaEngine): Promise { + const backend = (engine as any).backend; + const keys = await backend.listKeys(); + return (keys as string[]).filter((k) => k.startsWith('sst_')); +} + +describe('AriaEngine — SSTable CRC 损坏检测(集成)', () => { + it('打开时 CRC 损坏的 SSTable 被清理,其余数据可读', async () => { + const engine = new AriaEngine({ storageBackend: 'indexeddb', memtableSizeThreshold: 64 * 1024 * 1024 }); + const dbName = uniqueDB(); + await engine.open(dbName, 1); + await engine.createTable(SCHEMA()); + + // 写入 200 行(触发多次 flush → 多个 SSTable) + for (let batch = 0; batch < 3; batch++) { + const rows = [] as Record[]; + for (let i = 0; i < 50; i++) { + rows.push({ id: `u-${batch * 50 + i}`, name: `User${batch * 50 + i}`, age: batch * 50 + i }); + } + await engine.insert('users', rows); + await (engine as any).lsm.flush(); + } + await engine.close(); + + // 重新打开,篡改第一个 SSTable 文件的数据区 + const engine2 = new AriaEngine({ storageBackend: 'indexeddb', memtableSizeThreshold: 64 * 1024 * 1024 }); + await engine2.open(dbName, 1); + const sstKeys = await listSSTKeys(engine2); + expect(sstKeys.length).toBeGreaterThanOrEqual(2); + await corruptKey(engine2, sstKeys[0], 64); + + // 再次打开:损坏文件应被跳过并清理,打开不抛错 + await engine2.close(); + const engine3 = new AriaEngine({ storageBackend: 'indexeddb', memtableSizeThreshold: 64 * 1024 * 1024 }); + await engine3.open(dbName, 1); + + // 剩余未损坏文件的数据应可查询 + const remaining = await engine3.find('users', { table: 'users' }); + expect(remaining.length).toBeGreaterThan(0); + expect(remaining.length).toBeLessThan(200); + + // 损坏文件已被清理(meta 移除) + const afterKeys = await listSSTKeys(engine3); + expect(afterKeys).not.toContain(sstKeys[0]); + const lsm = (engine3 as any).lsm; + const metas = await lsm.sstableStore.listMeta(); + expect(metas.some((m: { id: number }) => m.id === Number(sstKeys[0].replace('sst_', '')))).toBe(false); + + await engine3.close(); + }); + + it('打开时损坏全部 SSTable → 库仍可打开,数据为空但不崩溃', async () => { + const engine = new AriaEngine({ storageBackend: 'indexeddb', memtableSizeThreshold: 64 * 1024 * 1024 }); + const dbName = uniqueDB(); + await engine.open(dbName, 1); + await engine.createTable(SCHEMA()); + for (let batch = 0; batch < 2; batch++) { + const rows = [] as Record[]; + for (let i = 0; i < 50; i++) { + rows.push({ id: `u-${batch * 50 + i}`, name: `User${batch * 50 + i}`, age: batch * 50 + i }); + } + await engine.insert('users', rows); + await (engine as any).lsm.flush(); + } + await engine.close(); + + const engine2 = new AriaEngine({ storageBackend: 'indexeddb', memtableSizeThreshold: 64 * 1024 * 1024 }); + await engine2.open(dbName, 1); + for (const key of await listSSTKeys(engine2)) { + await corruptKey(engine2, key, 16); + } + await engine2.close(); + + const engine3 = new AriaEngine({ storageBackend: 'indexeddb', memtableSizeThreshold: 64 * 1024 * 1024 }); + // 不应抛 ARIA_OPEN_ERROR + await engine3.open(dbName, 1); + const rows3 = await engine3.find('users', { table: 'users' }); + expect(rows3.length).toBe(0); + await engine3.close(); + }); + + it('运行期 CRC 损坏 → 预加载不缓存损坏文件并清理(自愈)', async () => { + const engine = new AriaEngine({ storageBackend: 'indexeddb', memtableSizeThreshold: 64 * 1024 * 1024 }); + const dbName = uniqueDB(); + await engine.open(dbName, 1); + await engine.createTable(SCHEMA()); + for (let batch = 0; batch < 2; batch++) { + const rows = [] as Record[]; + for (let i = 0; i < 50; i++) { + rows.push({ id: `u-${batch * 50 + i}`, name: `User${batch * 50 + i}`, age: batch * 50 + i }); + } + await engine.insert('users', rows); + await (engine as any).lsm.flush(); + } + + // 运行期:直接篡改后端中的某个 SSTable 文件(不触发打开校验路径) + const sstKeys = await listSSTKeys(engine); + expect(sstKeys.length).toBeGreaterThanOrEqual(2); + const victim = sstKeys[sstKeys.length - 1]; // 篡改最新(memtable 已 flush 后的文件) + await corruptKey(engine, victim, 100); + + // 缓存里已有该文件(flush 时缓存)→ 先清缓存模拟运行期重载 + const lsm = (engine as any).lsm; + lsm.sstableCache.delete(Number(victim.replace('sst_', ''))); + + // 查询触发 prefetchRange → preloadSSTable 发现 CRC 失败 → 清理 + 不缓存 + const remaining = await engine.find('users', { table: 'users' }); + expect(remaining.length).toBeLessThan(100); + expect(lsm.sstableCache.has(Number(victim.replace('sst_', '')))).toBe(false); + const metas = await lsm.sstableStore.listMeta(); + expect(metas.some((m: { id: number }) => m.id === Number(victim.replace('sst_', '')))).toBe(false); + + await engine.close(); + }); + + it('旧版无校验文件(checksum=0)在 LSM 中正常加载', async () => { + const engine = new AriaEngine({ storageBackend: 'indexeddb', memtableSizeThreshold: 64 * 1024 * 1024 }); + const dbName = uniqueDB(); + await engine.open(dbName, 1); + await engine.createTable(SCHEMA()); + await engine.insert('users', [ + { id: 'a', name: 'Alice', age: 30 }, + { id: 'b', name: 'Bob', age: 25 }, + ]); + await (engine as any).lsm.flush(); + await engine.close(); + + const engine2 = new AriaEngine({ storageBackend: 'indexeddb', memtableSizeThreshold: 64 * 1024 * 1024 }); + await engine2.open(dbName, 1); + const sstKeys = await listSSTKeys(engine2); + expect(sstKeys.length).toBe(1); + const backend = (engine2 as any).backend; + const raw = await backend.read(sstKeys[0]); + const buf = new Uint8Array(raw as ArrayBuffer); + new DataView(buf.buffer).setUint32(buf.byteLength - 4, 0, false); // checksum 清零 → 旧版 + await backend.write(sstKeys[0], buf.buffer as ArrayBuffer); + await engine2.close(); + + // 重开:checksum=0 跳过校验,数据完整可读 + const engine3 = new AriaEngine({ storageBackend: 'indexeddb', memtableSizeThreshold: 64 * 1024 * 1024 }); + await engine3.open(dbName, 1); + const rows3 = await engine3.find('users', { table: 'users' }); + expect(rows3.length).toBe(2); + expect(rows3.map((r) => r.id).sort()).toEqual(['a', 'b']); + await engine3.close(); + }); +}); diff --git a/tests/engine/aria-compress.test.ts b/tests/engine/aria-compress.test.ts index a849758..09417c8 100644 --- a/tests/engine/aria-compress.test.ts +++ b/tests/engine/aria-compress.test.ts @@ -1,218 +1,250 @@ -/** - * AriaEngine LZ4 压缩 + LSM Merge Iterator 单元测试 - * 注:LZ4 为简化演示实现(默认 compression:false),测试聚焦于「不卡死」 - */ -import { compressLZ4, decompressLZ4 } from '../../src/engine/aria/compression/lz4'; -import { MergeIterator, ArrayEntrySource } from '../../src/engine/aria/index/merge_iterator'; - -// =================================================================== -// LZ4 压缩 — 安全烟雾测试(不卡死) -// =================================================================== -describe('AriaEngine — LZ4 Compression', () => { - it('短于 4 字节时压缩为纯字面量 token 且往返一致', () => { - const input = new Uint8Array([1, 2]); - const compressed = compressLZ4(input); - // token(lo=0) + 2 字节字面量 - expect(compressed.byteLength).toBe(3); - expect(compressed[0]).toBe(0x20); // litLen=2, matchField=0 - const restored = decompressLZ4(compressed, 2); - expect(Array.from(restored)).toEqual([1, 2]); - }); - - it('简单文本压缩不抛出异常且产生输出', () => { - const input = new TextEncoder().encode('hello world hello world hello world'); - const compressed = compressLZ4(input); - expect(compressed).toBeInstanceOf(Uint8Array); - expect(compressed.byteLength).toBeGreaterThan(0); - }); - - it('重复数据有压缩效果', () => { - const pattern = 'ABCD'; - const repeated = pattern.repeat(100); - const input = new TextEncoder().encode(repeated); - const compressed = compressLZ4(input); - expect(compressed.byteLength).toBeLessThan(input.byteLength); - }); - - it('随机不可压缩数据不卡死', () => { - const input = new Uint8Array(256); - for (let i = 0; i < 256; i++) input[i] = Math.floor(Math.random() * 256); - const compressed = compressLZ4(input); - expect(compressed).toBeInstanceOf(Uint8Array); - expect(compressed.byteLength).toBeGreaterThan(0); - }); - - it('长文本压缩不卡死', () => { - const input = new TextEncoder().encode('The quick brown fox jumps over the lazy dog. '.repeat(10)); - const compressed = compressLZ4(input); - expect(compressed).toBeTruthy(); - expect(compressed.byteLength).toBeGreaterThan(0); - }); - - it('多种长度输入均不卡死', () => { - for (const size of [10, 50, 100, 200, 500]) { - const input = new Uint8Array(size); - for (let i = 0; i < size; i++) input[i] = i % 256; - const compressed = compressLZ4(input); - expect(compressed.byteLength).toBeLessThanOrEqual(input.byteLength + 16); - } - }); - - it('解压不抛出异常', () => { - const input = new TextEncoder().encode('test data for decompression smoke test'); - const compressed = compressLZ4(input); - expect(() => decompressLZ4(compressed, input.byteLength)).not.toThrow(); - }); - - // ---- v0.2.6 补强:压缩 → 解压 往返一致性 ---- - - it('往返一致:重复模式数据', () => { - const input = new TextEncoder().encode('ABCD'.repeat(100)); - const compressed = compressLZ4(input); - const restored = decompressLZ4(compressed, input.byteLength); - expect(Array.from(restored)).toEqual(Array.from(input)); - }); - - it('往返一致:自然文本数据', () => { - const input = new TextEncoder().encode( - 'The quick brown fox jumps over the lazy dog. '.repeat(10), - ); - const compressed = compressLZ4(input); - const restored = decompressLZ4(compressed, input.byteLength); - expect(Array.from(restored)).toEqual(Array.from(input)); - }); - - it('往返一致:随机不可压缩数据', () => { - const input = new Uint8Array(512); - for (let i = 0; i < 512; i++) input[i] = Math.floor(Math.random() * 256); - const compressed = compressLZ4(input); - const restored = decompressLZ4(compressed, input.byteLength); - expect(Array.from(restored)).toEqual(Array.from(input)); - }); - - it('往返一致:多种长度与字节模式', () => { - for (const size of [4, 5, 15, 16, 17, 50, 100, 300, 1000]) { - const input = new Uint8Array(size); - for (let i = 0; i < size; i++) input[i] = i % 7 === 0 ? i % 256 : 0x41; - const compressed = compressLZ4(input); - const restored = decompressLZ4(compressed, input.byteLength); - expect(Array.from(restored)).toEqual(Array.from(input)); - } - }); - - it('往返一致:恰好 15 字节字面量边界', () => { - // 字面量长度恰好 15(token 上限)时不应丢字节 - const input = new Uint8Array(15); - for (let i = 0; i < 15; i++) input[i] = i; - const compressed = compressLZ4(input); - const restored = decompressLZ4(compressed, input.byteLength); - expect(Array.from(restored)).toEqual(Array.from(input)); - }); - - it('往返一致:超过 15 字节的连续匹配', () => { - const input = new TextEncoder().encode('X'.repeat(200) + 'Y' + 'X'.repeat(60)); - const compressed = compressLZ4(input); - const restored = decompressLZ4(compressed, input.byteLength); - expect(Array.from(restored)).toEqual(Array.from(input)); - }); -}); - -// =================================================================== -// MergeIterator — 归并迭代器单元测试 -// =================================================================== -describe('AriaEngine — MergeIterator', () => { - it('单数据源归并', () => { - const mi = new MergeIterator(); - mi.addSource(new ArrayEntrySource([ - ['a', { v: 1 }], - ['b', { v: 2 }], - ['c', { v: 3 }], - ])); - const result = mi.drain(); - expect(result).toHaveLength(3); - expect(result.map(([k]) => k)).toEqual(['a', 'b', 'c']); - }); - - it('多数据源归并去重(保留最新)', () => { - const mi = new MergeIterator(); - mi.addSource(new ArrayEntrySource([['a', { v: 'new' }], ['c', { v: 3 }]])); - mi.addSource(new ArrayEntrySource([['a', { v: 'old' }], ['b', { v: 2 }]])); - const result = mi.drain(); - expect(result).toHaveLength(3); - expect(result[0][0]).toBe('a'); - expect(result[0][1].v).toBe('new'); - expect(result[1][0]).toBe('b'); - expect(result[2][0]).toBe('c'); - }); - - // ---- v0.2.6 回归:同 key 多来源时保留 sourceIndex 最小(最新)的条目 ---- - it('回归:同 key 出现在多个来源时返回 sourceIndex 最小(最新来源)的值', () => { - const mi = new MergeIterator(); - // 语义:sourceIndex 越小越新(memtable=0 < immutable=1 < sstable=2+) - mi.addSource(new ArrayEntrySource([['a', { v: 'source0' }]])); // 最新来源 - mi.addSource(new ArrayEntrySource([['a', { v: 'source1' }]])); - mi.addSource(new ArrayEntrySource([['a', { v: 'source2' }]])); // 最旧来源 - const result = mi.drain(); - expect(result).toHaveLength(1); - // 取的是 sourceIndex 最小(最新来源)的条目,而非堆序决定的任意条目 - expect(result[0][1].v).toBe('source0'); - }); - - it('回归:最新来源的值位于中间 sourceIndex 时仍取 sourceIndex 最小者', () => { - const mi = new MergeIterator(); - mi.addSource(new ArrayEntrySource([['a', { v: 'middle' }]])); // index 0 = 最新来源 - mi.addSource(new ArrayEntrySource([['a', { v: 'newest' }]])); // index 1 - mi.addSource(new ArrayEntrySource([['a', { v: 'oldest' }]])); // index 2 - const result = mi.drain(); - expect(result).toHaveLength(1); - expect(result[0][1].v).toBe('middle'); // index 0 的条目胜出 - }); - - it('回归:多个同 key 来源 + 其他独立 key 混合', () => { - const mi = new MergeIterator(); - mi.addSource(new ArrayEntrySource([['a', { v: 1 }], ['b', { v: 10 }]])); - mi.addSource(new ArrayEntrySource([['a', { v: 2 }]])); - mi.addSource(new ArrayEntrySource([['a', { v: 3 }], ['c', { v: 30 }]])); - const result = mi.drain(); - expect(result.map(([k]) => k)).toEqual(['a', 'b', 'c']); - expect(result[0][1].v).toBe(1); // sourceIndex 0 = 最新 - expect(result[1][1].v).toBe(10); - expect(result[2][1].v).toBe(30); - }); - - it('空数据源归并', () => { - const mi = new MergeIterator(); - mi.addSource(new ArrayEntrySource([])); - const result = mi.drain(); - expect(result).toHaveLength(0); - }); - - it('大数量归并', () => { - const mi = new MergeIterator(); - for (let s = 0; s < 5; s++) { - const entries: [string, Record][] = []; - for (let i = 0; i < 100; i++) { - entries.push([`src${s}-key-${String(i).padStart(3, '0')}`, { src: s, idx: i }]); - } - mi.addSource(new ArrayEntrySource(entries)); - } - const result = mi.drain(); - // 5 sources × 100 unique keys = 500 total (keys are unique per source) - expect(result).toHaveLength(500); - }); - - it('ArrayEntrySource — 迭代器用完返回 null', () => { - const src = new ArrayEntrySource([['k', { v: 1 }]]); - expect(src.next()).not.toBeNull(); - expect(src.next()).toBeNull(); - expect(src.next()).toBeNull(); - }); - - it('ArrayEntrySource — reset 重置', () => { - const src = new ArrayEntrySource([['k1', { v: 1 }], ['k2', { v: 2 }]]); - src.next(); - src.reset(); - const val = src.next(); - expect(val![0]).toBe('k1'); - }); -}); +/** + * AriaEngine LZ4 压缩 + LSM Merge Iterator 单元测试 + * 注:LZ4 为简化演示实现(默认 compression:false),测试聚焦于「不卡死」 + */ +import { compressLZ4, decompressLZ4 } from '../../src/engine/aria/compression/lz4'; +import { MergeIterator, ArrayEntrySource } from '../../src/engine/aria/index/merge_iterator'; + +// =================================================================== +// LZ4 压缩 — 安全烟雾测试(不卡死) +// =================================================================== +describe('AriaEngine — LZ4 Compression', () => { + it('短于 4 字节时压缩为纯字面量 token 且往返一致(v0.4.5 带 4 字节原始大小头)', () => { + const input = new Uint8Array([1, 2]); + const compressed = compressLZ4(input); + // HEADER(4) + token(lo=0) + 2 字节字面量 + expect(compressed.byteLength).toBe(7); + // 头部 = 原始大小 2(LE) + expect(new DataView(compressed.buffer).getUint32(0, true)).toBe(2); + expect(compressed[4]).toBe(0x20); // litLen=2, matchField=0 + const restored = decompressLZ4(compressed, 2); + expect(Array.from(restored)).toEqual([1, 2]); + }); + + it('简单文本压缩不抛出异常且产生输出', () => { + const input = new TextEncoder().encode('hello world hello world hello world'); + const compressed = compressLZ4(input); + expect(compressed).toBeInstanceOf(Uint8Array); + expect(compressed.byteLength).toBeGreaterThan(0); + }); + + it('重复数据有压缩效果', () => { + const pattern = 'ABCD'; + const repeated = pattern.repeat(100); + const input = new TextEncoder().encode(repeated); + const compressed = compressLZ4(input); + expect(compressed.byteLength).toBeLessThan(input.byteLength); + }); + + it('随机不可压缩数据不卡死', () => { + const input = new Uint8Array(256); + for (let i = 0; i < 256; i++) input[i] = Math.floor(Math.random() * 256); + const compressed = compressLZ4(input); + expect(compressed).toBeInstanceOf(Uint8Array); + expect(compressed.byteLength).toBeGreaterThan(0); + }); + + it('长文本压缩不卡死', () => { + const input = new TextEncoder().encode('The quick brown fox jumps over the lazy dog. '.repeat(10)); + const compressed = compressLZ4(input); + expect(compressed).toBeTruthy(); + expect(compressed.byteLength).toBeGreaterThan(0); + }); + + it('多种长度输入均不卡死', () => { + for (const size of [10, 50, 100, 200, 500]) { + const input = new Uint8Array(size); + for (let i = 0; i < size; i++) input[i] = i % 256; + const compressed = compressLZ4(input); + // 头部 +4 字节开销 + expect(compressed.byteLength).toBeLessThanOrEqual(input.byteLength + 4 + 16); + } + }); + + it('解压不抛出异常', () => { + const input = new TextEncoder().encode('test data for decompression smoke test'); + const compressed = compressLZ4(input); + expect(() => decompressLZ4(compressed, input.byteLength)).not.toThrow(); + }); + + // ---- v0.2.6 补强:压缩 → 解压 往返一致性 ---- + + it('往返一致:重复模式数据', () => { + const input = new TextEncoder().encode('ABCD'.repeat(100)); + const compressed = compressLZ4(input); + const restored = decompressLZ4(compressed, input.byteLength); + expect(Array.from(restored)).toEqual(Array.from(input)); + }); + + it('往返一致:自然文本数据', () => { + const input = new TextEncoder().encode( + 'The quick brown fox jumps over the lazy dog. '.repeat(10), + ); + const compressed = compressLZ4(input); + const restored = decompressLZ4(compressed, input.byteLength); + expect(Array.from(restored)).toEqual(Array.from(input)); + }); + + it('往返一致:随机不可压缩数据', () => { + const input = new Uint8Array(512); + for (let i = 0; i < 512; i++) input[i] = Math.floor(Math.random() * 256); + const compressed = compressLZ4(input); + const restored = decompressLZ4(compressed, input.byteLength); + expect(Array.from(restored)).toEqual(Array.from(input)); + }); + + it('往返一致:多种长度与字节模式', () => { + for (const size of [4, 5, 15, 16, 17, 50, 100, 300, 1000]) { + const input = new Uint8Array(size); + for (let i = 0; i < size; i++) input[i] = i % 7 === 0 ? i % 256 : 0x41; + const compressed = compressLZ4(input); + const restored = decompressLZ4(compressed, input.byteLength); + expect(Array.from(restored)).toEqual(Array.from(input)); + } + }); + + it('往返一致:恰好 15 字节字面量边界', () => { + // 字面量长度恰好 15(token 上限)时不应丢字节 + const input = new Uint8Array(15); + for (let i = 0; i < 15; i++) input[i] = i; + const compressed = compressLZ4(input); + const restored = decompressLZ4(compressed, input.byteLength); + expect(Array.from(restored)).toEqual(Array.from(input)); + }); + + it('往返一致:超过 15 字节的连续匹配', () => { + const input = new TextEncoder().encode('X'.repeat(200) + 'Y' + 'X'.repeat(60)); + const compressed = compressLZ4(input); + const restored = decompressLZ4(compressed, input.byteLength); + expect(Array.from(restored)).toEqual(Array.from(input)); + }); + + it('往返一致:空输入', () => { + const compressed = compressLZ4(new Uint8Array(0)); + expect(compressed.byteLength).toBe(4); // 仅头部 + expect(new DataView(compressed.buffer).getUint32(0, true)).toBe(0); + const restored = decompressLZ4(compressed); + expect(restored.byteLength).toBe(0); + }); + + it('往返一致:头部自描述,无需外部原始大小(高压缩率回归)', () => { + // 中文重复内容 → 极高压缩率(此前 buf.length*2 估算不足导致解压截断) + const text = '这是需要加密的敏感内容'.repeat(500); + const input = new TextEncoder().encode(text); + const compressed = compressLZ4(input); + // 压缩率验证:远小于原始 + expect(compressed.byteLength).toBeLessThan(input.byteLength / 2); + // 不传 originalSize:从头部恢复 + const restored = decompressLZ4(compressed); + expect(Array.from(restored)).toEqual(Array.from(input)); + }); + + it('损坏头(原始大小非法)→ 抛错而非静默截断', () => { + const bad = new Uint8Array([0xff, 0xff, 0xff, 0xff, 0x20, 0x01, 0x02]); + expect(() => decompressLZ4(bad)).toThrow('Invalid LZ4 header'); + }); + + it('过短输入(无头)→ 抛错', () => { + expect(() => decompressLZ4(new Uint8Array([1, 2, 3]))).toThrow('missing header'); + }); +}); + +// =================================================================== +// MergeIterator — 归并迭代器单元测试 +// =================================================================== +describe('AriaEngine — MergeIterator', () => { + it('单数据源归并', () => { + const mi = new MergeIterator(); + mi.addSource(new ArrayEntrySource([ + ['a', { v: 1 }], + ['b', { v: 2 }], + ['c', { v: 3 }], + ])); + const result = mi.drain(); + expect(result).toHaveLength(3); + expect(result.map(([k]) => k)).toEqual(['a', 'b', 'c']); + }); + + it('多数据源归并去重(保留最新)', () => { + const mi = new MergeIterator(); + mi.addSource(new ArrayEntrySource([['a', { v: 'new' }], ['c', { v: 3 }]])); + mi.addSource(new ArrayEntrySource([['a', { v: 'old' }], ['b', { v: 2 }]])); + const result = mi.drain(); + expect(result).toHaveLength(3); + expect(result[0][0]).toBe('a'); + expect(result[0][1].v).toBe('new'); + expect(result[1][0]).toBe('b'); + expect(result[2][0]).toBe('c'); + }); + + // ---- v0.2.6 回归:同 key 多来源时保留 sourceIndex 最小(最新)的条目 ---- + it('回归:同 key 出现在多个来源时返回 sourceIndex 最小(最新来源)的值', () => { + const mi = new MergeIterator(); + // 语义:sourceIndex 越小越新(memtable=0 < immutable=1 < sstable=2+) + mi.addSource(new ArrayEntrySource([['a', { v: 'source0' }]])); // 最新来源 + mi.addSource(new ArrayEntrySource([['a', { v: 'source1' }]])); + mi.addSource(new ArrayEntrySource([['a', { v: 'source2' }]])); // 最旧来源 + const result = mi.drain(); + expect(result).toHaveLength(1); + // 取的是 sourceIndex 最小(最新来源)的条目,而非堆序决定的任意条目 + expect(result[0][1].v).toBe('source0'); + }); + + it('回归:最新来源的值位于中间 sourceIndex 时仍取 sourceIndex 最小者', () => { + const mi = new MergeIterator(); + mi.addSource(new ArrayEntrySource([['a', { v: 'middle' }]])); // index 0 = 最新来源 + mi.addSource(new ArrayEntrySource([['a', { v: 'newest' }]])); // index 1 + mi.addSource(new ArrayEntrySource([['a', { v: 'oldest' }]])); // index 2 + const result = mi.drain(); + expect(result).toHaveLength(1); + expect(result[0][1].v).toBe('middle'); // index 0 的条目胜出 + }); + + it('回归:多个同 key 来源 + 其他独立 key 混合', () => { + const mi = new MergeIterator(); + mi.addSource(new ArrayEntrySource([['a', { v: 1 }], ['b', { v: 10 }]])); + mi.addSource(new ArrayEntrySource([['a', { v: 2 }]])); + mi.addSource(new ArrayEntrySource([['a', { v: 3 }], ['c', { v: 30 }]])); + const result = mi.drain(); + expect(result.map(([k]) => k)).toEqual(['a', 'b', 'c']); + expect(result[0][1].v).toBe(1); // sourceIndex 0 = 最新 + expect(result[1][1].v).toBe(10); + expect(result[2][1].v).toBe(30); + }); + + it('空数据源归并', () => { + const mi = new MergeIterator(); + mi.addSource(new ArrayEntrySource([])); + const result = mi.drain(); + expect(result).toHaveLength(0); + }); + + it('大数量归并', () => { + const mi = new MergeIterator(); + for (let s = 0; s < 5; s++) { + const entries: [string, Record][] = []; + for (let i = 0; i < 100; i++) { + entries.push([`src${s}-key-${String(i).padStart(3, '0')}`, { src: s, idx: i }]); + } + mi.addSource(new ArrayEntrySource(entries)); + } + const result = mi.drain(); + // 5 sources × 100 unique keys = 500 total (keys are unique per source) + expect(result).toHaveLength(500); + }); + + it('ArrayEntrySource — 迭代器用完返回 null', () => { + const src = new ArrayEntrySource([['k', { v: 1 }]]); + expect(src.next()).not.toBeNull(); + expect(src.next()).toBeNull(); + expect(src.next()).toBeNull(); + }); + + it('ArrayEntrySource — reset 重置', () => { + const src = new ArrayEntrySource([['k1', { v: 1 }], ['k2', { v: 2 }]]); + src.next(); + src.reset(); + const val = src.next(); + expect(val![0]).toBe('k1'); + }); +}); diff --git a/tests/engine/aria-crypto.test.ts b/tests/engine/aria-crypto.test.ts index 814075a..b2449b1 100644 --- a/tests/engine/aria-crypto.test.ts +++ b/tests/engine/aria-crypto.test.ts @@ -5,13 +5,7 @@ * v0.2.6 补强:此前仅验证实例化,现在验证真实的加解密往返一致性。 */ import 'fake-indexeddb/auto'; -import { - CryptoManager, - initCrypto, - encryptPage, - decryptPage, - closeCrypto, -} from '../../src/engine/aria/crypto'; +import { CryptoManager } from '../../src/engine/aria/crypto'; function toBytes(data: ArrayBuffer): number[] { return Array.from(new Uint8Array(data)); @@ -89,15 +83,6 @@ describe('AriaEngine — CryptoManager', () => { cm2.close(); }); - test('全局兼容层往返一致', async () => { - await initCrypto('global-password'); - const original = new TextEncoder().encode('global compat layer').buffer; - const { iv, data } = await encryptPage(original); - const decrypted = await decryptPage(iv, data); - expect(toBytes(decrypted)).toEqual(toBytes(original)); - closeCrypto(); - }); - test('大块数据(接近页面大小)往返一致', async () => { const cm = new CryptoManager(); await cm.init('page-size-test'); @@ -111,47 +96,3 @@ describe('AriaEngine — CryptoManager', () => { }); }); -// =================================================================== -// 真实存储路径:SSTable 加密 → 持久化 → 重载解密(v0.3.2 CI 修复) -// =================================================================== - -describe('AriaEngine — SSTable 加密存储真实路径', () => { - test('加密落盘后重载可完整解密', async () => { - // eslint-disable-next-line @typescript-eslint/no-var-requires - const { AriaEngine } = require('../../src/engine/aria/index'); - // eslint-disable-next-line @typescript-eslint/no-var-requires - const { createSchema } = require('../../src/table/schema'); - const dbName = `enc-store-${Date.now()}`; - - await initCrypto('engine-store-password'); - - const engine = new AriaEngine({ - storageBackend: 'indexeddb', - walSyncMode: 'none', - } as any); - await engine.open(dbName, 1); - await engine.createTable(createSchema('t', { - id: { type: 'string', primaryKey: true }, - v: { type: 'number' }, - })); - await engine.insert('t', [{ id: '1', v: 42 }, { id: '2', v: 99 }]); - // 强制刷盘:SSTable 经加密保存(encryptPage 真实路径) - await (engine as any).lsm.flush(); - await engine.close(); - - // 重载:SSTable 解密恢复 - const engine2 = new AriaEngine({ - storageBackend: 'indexeddb', - walSyncMode: 'none', - } as any); - await engine2.open(dbName, 1); - const rows = await engine2.find('t', { table: 't' }); - expect(rows).toHaveLength(2); - const byId = Object.fromEntries(rows.map((r: any) => [r.id, r.v])); - expect(byId['1']).toBe(42); - expect(byId['2']).toBe(99); - await engine2.close(); - - closeCrypto(); - }); -}); diff --git a/tests/engine/aria-encryption.test.ts b/tests/engine/aria-encryption.test.ts new file mode 100644 index 0000000..77c77ed --- /dev/null +++ b/tests/engine/aria-encryption.test.ts @@ -0,0 +1,349 @@ +/** + * AriaEngine — 全库 AES-256-GCM 加密测试 + * + * 覆盖: + * 1. EncryptedBackend 单元:读写往返 / writeMany / delete / clear / 密文落盘验证 + * 2. AriaEngine 集成:密码往返(open → 写入 → close → 同密码重开数据完整) + * 3. 错误密码 → ARIA_DECRYPT_ERROR + * 4. 明文旧库 + 加密配置 → ARIA_ENCRYPT_CONFIG_ERROR + * 5. 加密库 + 无密码 → ARIA_ENCRYPT_REQUIRED + * 6. clearAll 后可换新密码重建 + * 7. 元数据(迁移版本)加密往返 + */ +import { AriaEngine } from '../../src/engine/aria/index'; +import { EncryptedBackend } from '../../src/engine/aria/store/encrypted_backend'; +import { MemoryBackend } from '../../src/engine/aria/store/backend'; +import { createSchema } from '../../src/table/schema'; +import 'fake-indexeddb/auto'; + +let idbCounter = 0; +function uniqueDB(): string { + return `enc-${Date.now()}-${++idbCounter}-${Math.random().toString(36).slice(2, 8)}`; +} + +const SCHEMA = () => createSchema('users', { + id: { type: 'string', primaryKey: true }, + name: { type: 'string' }, + secret: { type: 'string' }, +}); + +// =================================================================== +// EncryptedBackend 单元 +// =================================================================== +describe('AriaEngine — EncryptedBackend 单元', () => { + it('open 创建 keymeta,读写往返完整', async () => { + const inner = new MemoryBackend(); + const backend = new EncryptedBackend(inner, 's3cret-password'); + await backend.open('enc-unit-1'); + + // keymeta 已创建 + const keymeta = await inner.read('__aria_keymeta'); + expect(keymeta).not.toBeNull(); + + // 读写往返 + const payload = new TextEncoder().encode('hello encrypted world').buffer; + await backend.write('k1', payload); + const back = await backend.read('k1'); + expect(back).not.toBeNull(); + expect(new TextDecoder().decode(back)).toBe('hello encrypted world'); + + // 底层是密文(非明文) + const raw = await inner.read('k1'); + const rawStr = new TextDecoder().decode(raw); + expect(rawStr).not.toContain('hello encrypted world'); + + await backend.close(); + }); + + it('writeMany / deleteMany 往返', async () => { + const inner = new MemoryBackend(); + const backend = new EncryptedBackend(inner, 'pw'); + await backend.open('enc-unit-2'); + + const enc = (s: string) => new TextEncoder().encode(s).buffer; + await backend.writeMany({ a: enc('AAA'), b: enc('BBB'), c: enc('CCC') }); + expect(new TextDecoder().decode(await backend.read('a'))).toBe('AAA'); + expect(new TextDecoder().decode(await backend.read('c'))).toBe('CCC'); + + await backend.deleteMany(['a', 'c']); + expect(await backend.exists('a')).toBe(false); + expect(await backend.exists('b')).toBe(true); + + await backend.delete('b'); + expect(await backend.exists('b')).toBe(false); + expect(await backend.listKeys()).toEqual(['__aria_keymeta']); + await backend.close(); + }); + + it('每个 value 独立随机 IV(相同明文两次加密密文不同)', async () => { + const inner = new MemoryBackend(); + const backend = new EncryptedBackend(inner, 'pw'); + await backend.open('enc-unit-3'); + + const payload = new TextEncoder().encode('same plaintext').buffer; + await backend.write('x', payload); + await backend.write('y', payload); + const rawX = await inner.read('x'); + const rawY = await inner.read('y'); + // Jest toEqual 对 ArrayBuffer 不比较内容 → 字节级比较 + expect(new Uint8Array(rawX as ArrayBuffer)).not.toEqual(new Uint8Array(rawY as ArrayBuffer)); + // 但 IV 前 12 字节后的长度一致(密文长度 = 明文 + GCM tag 16B) + expect((rawX as ArrayBuffer).byteLength).toBe((rawY as ArrayBuffer).byteLength); + + // 但解密一致 + expect(new TextDecoder().decode(await backend.read('x'))).toBe('same plaintext'); + expect(new TextDecoder().decode(await backend.read('y'))).toBe('same plaintext'); + await backend.close(); + }); + + it('clear 清空全部数据但保留密钥元数据(库身份保留)', async () => { + const inner = new MemoryBackend(); + const backend = new EncryptedBackend(inner, 'pw'); + await backend.open('enc-unit-4'); + await backend.write('k', new TextEncoder().encode('v').buffer); + expect((await backend.listKeys()).length).toBe(2); + await backend.clear(); + // 数据清空,keymeta 保留 + expect(await backend.listKeys()).toEqual(['__aria_keymeta']); + expect(await backend.exists('k')).toBe(false); + await backend.close(); + + // 重新打开:keymeta 仍在,同密码可用 + const backend2 = new EncryptedBackend(inner, 'pw'); + await backend2.open('enc-unit-4'); + await backend2.write('k2', new TextEncoder().encode('v2').buffer); + expect(new TextDecoder().decode(await backend2.read('k2'))).toBe('v2'); + + // 换密码被拒(keymeta 与旧密码绑定)——注意:MemoryBackend close 清空 store, + // 因此在 close 前验证(backend2 仍持有 inner) + const backend3 = new EncryptedBackend(inner, 'other-pw'); + await expect(backend3.open('enc-unit-4')).rejects.toMatchObject({ code: 'ARIA_DECRYPT_ERROR' }); + await backend2.close(); + }); + + it('明文旧库(有数据无 keymeta)+ 加密 → ARIA_ENCRYPT_CONFIG_ERROR', async () => { + const inner = new MemoryBackend(); + await inner.open('enc-unit-5'); + await inner.write('__aria_schemas', new TextEncoder().encode('{}').buffer); + + const backend = new EncryptedBackend(inner, 'pw'); + await expect(backend.open('enc-unit-5')).rejects.toMatchObject({ code: 'ARIA_ENCRYPT_CONFIG_ERROR' }); + }); + + it('空密码配置直接抛错', () => { + const inner = new MemoryBackend(); + try { + new EncryptedBackend(inner, ''); + fail('should throw'); + } catch (error) { + expect((error as { code?: string }).code).toBe('ARIA_ENCRYPT_CONFIG_ERROR'); + } + }); + + it('getInner / isCryptoReady 访问器', async () => { + const inner = new MemoryBackend(); + const backend = new EncryptedBackend(inner, 'pw'); + await backend.open('enc-unit-6'); + expect(backend.getInner()).toBe(inner); + expect(backend.isCryptoReady()).toBe(true); + await backend.close(); + expect(backend.isCryptoReady()).toBe(false); + }); + + it('密文块被篡改 → 读取抛 ARIA_DECRYPT_ERROR(GCM 认证失败)', async () => { + const inner = new MemoryBackend(); + const backend = new EncryptedBackend(inner, 'pw'); + await backend.open('enc-unit-7'); + await backend.write('k', new TextEncoder().encode('integrity-check').buffer); + + // 篡改密文一个字节(绕过 IV 区) + const raw = (await inner.read('k')) as ArrayBuffer; + const buf = new Uint8Array(raw); + buf[16] ^= 0xff; + await inner.write('k', buf.buffer as ArrayBuffer); + + await expect(backend.read('k')).rejects.toMatchObject({ code: 'ARIA_DECRYPT_ERROR' }); + await backend.close(); + }); + + it('过短密文块 → 抛 ARIA_DECRYPT_ERROR', async () => { + const inner = new MemoryBackend(); + const backend = new EncryptedBackend(inner, 'pw'); + await backend.open('enc-unit-8'); + await inner.write('short', new Uint8Array(4).buffer); // 不足 IV(12) + tag + await expect(backend.read('short')).rejects.toMatchObject({ code: 'ARIA_DECRYPT_ERROR' }); + await backend.close(); + }); +}); + +// =================================================================== +// AriaEngine 集成 — 加密往返 +// =================================================================== +describe('AriaEngine — 全库加密(集成)', () => { + it('加密库:写入 → close → 同密码重开数据完整', async () => { + const dbName = uniqueDB(); + const engine = new AriaEngine({ storageBackend: 'indexeddb', encryption: { password: 'master-pass' } }); + await engine.open(dbName, 1); + await engine.createTable(SCHEMA()); + await engine.insert('users', [ + { id: '1', name: 'Alice', secret: 'top-secret-a' }, + { id: '2', name: 'Bob', secret: 'top-secret-b' }, + ]); + await engine.setMeta('__metona_version', '3'); + await engine.close(); + + // 重开(同密码) + const engine2 = new AriaEngine({ storageBackend: 'indexeddb', encryption: { password: 'master-pass' } }); + await engine2.open(dbName, 1); + const rows = await engine2.find('users', { table: 'users' }); + expect(rows).toHaveLength(2); + const byId = Object.fromEntries(rows.map((r) => [r.id, r])); + expect(byId['1'].secret).toBe('top-secret-a'); + expect(byId['2'].secret).toBe('top-secret-b'); + expect(await engine2.getMeta('__metona_version')).toBe('3'); + await engine2.close(); + }); + + it('加密库:错误密码重开 → ARIA_DECRYPT_ERROR', async () => { + const dbName = uniqueDB(); + const engine = new AriaEngine({ storageBackend: 'indexeddb', encryption: { password: 'right-pass' } }); + await engine.open(dbName, 1); + await engine.createTable(SCHEMA()); + await engine.insert('users', [{ id: '1', name: 'A', secret: 'x' }]); + await engine.close(); + + const engine2 = new AriaEngine({ storageBackend: 'indexeddb', encryption: { password: 'wrong-pass' } }); + await expect(engine2.open(dbName, 1)).rejects.toMatchObject({ code: 'ARIA_DECRYPT_ERROR' }); + }); + + it('加密库:无密码打开 → ARIA_ENCRYPT_REQUIRED', async () => { + const dbName = uniqueDB(); + const engine = new AriaEngine({ storageBackend: 'indexeddb', encryption: { password: 'pw' } }); + await engine.open(dbName, 1); + await engine.createTable(SCHEMA()); + await engine.close(); + + const engine2 = new AriaEngine({ storageBackend: 'indexeddb' }); + await expect(engine2.open(dbName, 1)).rejects.toMatchObject({ code: 'ARIA_ENCRYPT_REQUIRED' }); + }); + + it('明文库:加密配置打开 → ARIA_ENCRYPT_CONFIG_ERROR', async () => { + const dbName = uniqueDB(); + const engine = new AriaEngine({ storageBackend: 'indexeddb' }); + await engine.open(dbName, 1); + await engine.createTable(SCHEMA()); + await engine.insert('users', [{ id: '1', name: 'A', secret: 'plain' }]); + await engine.close(); + + const engine2 = new AriaEngine({ storageBackend: 'indexeddb', encryption: { password: 'pw' } }); + await expect(engine2.open(dbName, 1)).rejects.toMatchObject({ code: 'ARIA_ENCRYPT_CONFIG_ERROR' }); + }); + + it('加密库:底层存储全部为密文(SSTable/Schema/WAL 均不可见明文)', async () => { + const dbName = uniqueDB(); + const engine = new AriaEngine({ storageBackend: 'indexeddb', encryption: { password: 'pw' } }); + await engine.open(dbName, 1); + await engine.createTable(SCHEMA()); + await engine.insert('users', [{ id: '1', name: 'Alice', secret: 'needle-in-cipher' }]); + await (engine as any).lsm.flush(); + // 强制落盘后 WAL 仍有记录(checkpoint 截断前)→ 全量扫描检查 + const backend = (engine as any).backend as EncryptedBackend; + const inner = backend.getInner(); + const keys = await inner.listKeys(); + expect(keys.length).toBeGreaterThan(0); + + // 任何一个底层 key 的内容都不包含明文数据(需解密才可见) + for (const key of keys) { + if (key === '__aria_keymeta') continue; + const raw = await inner.read(key); + const str = new TextDecoder().decode(raw as ArrayBuffer); + expect(str).not.toContain('needle-in-cipher'); + expect(str).not.toContain('Alice'); + expect(str).not.toContain('users'); + } + await engine.close(); + }); + + it('加密 + 压缩组合:往返完整(压缩层先压,加密层后加密)', async () => { + const dbName = uniqueDB(); + const engine = new AriaEngine({ + storageBackend: 'indexeddb', + compression: true, + encryption: { password: 'pw-compress' }, + memtableSizeThreshold: 64 * 1024 * 1024, + }); + await engine.open(dbName, 1); + await engine.createTable(SCHEMA()); + const rows = [] as Record[]; + for (let i = 0; i < 200; i++) { + rows.push({ id: `u-${i}`, name: `User${i}`, secret: '这是需要加密的敏感内容'.repeat(5) }); + } + await engine.insert('users', rows); + await (engine as any).lsm.flush(); + await engine.close(); + + const engine2 = new AriaEngine({ + storageBackend: 'indexeddb', + compression: true, + encryption: { password: 'pw-compress' }, + }); + await engine2.open(dbName, 1); + expect(await engine2.count('users')).toBe(200); + const one = await engine2.find('users', { table: 'users', where: { id: 'u-42' } }); + expect(one[0].secret).toBe('这是需要加密的敏感内容'.repeat(5)); + await engine2.close(); + }); + + it('加密库:clearAll 保留密钥(库身份),同密码重开重建,新密码被拒', async () => { + const dbName = uniqueDB(); + const engine = new AriaEngine({ storageBackend: 'indexeddb', encryption: { password: 'old-pw' } }); + await engine.open(dbName, 1); + await engine.createTable(SCHEMA()); + await engine.insert('users', [{ id: '1', name: 'A', secret: 'x' }]); + await engine.clearAll(); + await engine.close(); + + // clearAll 保留 keymeta → 换新密码会被拒绝 + const engineWrong = new AriaEngine({ storageBackend: 'indexeddb', encryption: { password: 'new-pw' } }); + await expect(engineWrong.open(dbName, 1)).rejects.toMatchObject({ code: 'ARIA_DECRYPT_ERROR' }); + + // 同密码重开可重建 + const engine2 = new AriaEngine({ storageBackend: 'indexeddb', encryption: { password: 'old-pw' } }); + await engine2.open(dbName, 1); + await engine2.createTable(SCHEMA()); + await engine2.insert('users', [{ id: '1', name: 'A', secret: 'new' }]); + expect(await engine2.count('users')).toBe(1); + await engine2.close(); + }); + + it('加密库:WAL 崩溃恢复路径可用(含加密 WAL)', async () => { + const dbName = uniqueDB(); + const engine = new AriaEngine({ + storageBackend: 'indexeddb', + encryption: { password: 'pw' }, + walSyncMode: 'full', + checkpointInterval: 100000, + }); + await engine.open(dbName, 1); + await engine.createTable(SCHEMA()); + // 写入后不 flush 不 checkpoint,直接"崩溃"(close 会 checkpoint,这里模拟崩溃:直接断 backend) + for (let i = 0; i < 10; i++) { + await engine.insert('users', [{ id: `w-${i}`, name: `W${i}`, secret: `s${i}` }]); + } + // 模拟崩溃:不 close,直接断开(真实崩溃时 WAL 留在存储中) + await (engine as any).backend.close(); + (engine as any).opened = false; + + // 重开:WAL 重放(加密 WAL 解密后解析) + const engine2 = new AriaEngine({ + storageBackend: 'indexeddb', + encryption: { password: 'pw' }, + walSyncMode: 'full', + checkpointInterval: 100000, + }); + await engine2.open(dbName, 1); + const rows = await engine2.find('users', { table: 'users' }); + expect(rows).toHaveLength(10); + await engine2.close(); + }); +}); diff --git a/tests/engine/aria-index.test.ts b/tests/engine/aria-index.test.ts index b6036b9..95c4a1c 100644 --- a/tests/engine/aria-index.test.ts +++ b/tests/engine/aria-index.test.ts @@ -1,216 +1,198 @@ -/** - * AriaEngine Bloom Filter + MemTable 单元测试 - */ -import { BloomFilter } from '../../src/engine/aria/index/bloom'; -import { MemTable } from '../../src/engine/aria/index/memtable'; - -// =================================================================== -// BloomFilter -// =================================================================== -describe('AriaEngine — BloomFilter', () => { - it('插入后 mayContain 返回 true', () => { - const bf = new BloomFilter(100); - bf.insert('hello'); - expect(bf.mayContain('hello')).toBe(true); - }); - - it('未插入的 key mayContain 返回 false', () => { - const bf = new BloomFilter(100); - bf.insert('hello'); - expect(bf.mayContain('world')).toBe(false); - }); - - it('批量插入后所有 key 都判定存在', () => { - const bf = new BloomFilter(500); - const keys: string[] = []; - for (let i = 0; i < 200; i++) { - const k = `key-${i}`; - keys.push(k); - bf.insert(k); - } - for (const k of keys) { - expect(bf.mayContain(k)).toBe(true); - } - }); - - it('False positive 率可控', () => { - const n = 500; - const bf = new BloomFilter(n, 10); - for (let i = 0; i < n; i++) { - bf.insert(`present-${i}`); - } - let fp = 0; - for (let i = 0; i < 500; i++) { - if (bf.mayContain(`absent-${i}`)) fp++; - } - expect(fp).toBeLessThan(25); - }); - - it('getBitSize 返回正确位数', () => { - const bf = new BloomFilter(100, 10); - expect(bf.getBitSize()).toBeGreaterThanOrEqual(64); - }); - - it('getInsertedCount 追踪插入数', () => { - const bf = new BloomFilter(100); - bf.insert('a'); - bf.insert('b'); - bf.insert('c'); - expect(bf.getInsertedCount()).toBe(3); - }); - - it('getHashCount 返回哈希函数数量', () => { - const bf = new BloomFilter(1000, 10); - expect(bf.getHashCount()).toBeGreaterThan(0); - }); - - it('serialize + fromData 往返', () => { - const bf1 = new BloomFilter(100); - bf1.insert('a'); - bf1.insert('b'); - const data = bf1.serialize(); - - const bf2 = BloomFilter.fromData(data, bf1.getHashCount()); - expect(bf2.mayContain('a')).toBe(true); - expect(bf2.mayContain('b')).toBe(true); - expect(bf2.mayContain('c')).toBe(false); - }); - - it('空过滤器 mayContain 返回 false', () => { - const bf = new BloomFilter(100); - expect(bf.mayContain('anything')).toBe(false); - }); - - it('最少 1 个哈希函数', () => { - const bf = new BloomFilter(10, 1); - expect(bf.getHashCount()).toBeGreaterThanOrEqual(1); - }); -}); - -// =================================================================== -// MemTable -// =================================================================== -describe('AriaEngine — MemTable', () => { - let mt: MemTable; - - beforeEach(() => { - mt = new MemTable(4 * 1024 * 1024); - }); - - it('put + get 往返', () => { - mt.put('key1', { name: 'Alice', age: 30 }); - const val = mt.get('key1'); - expect(val).not.toBeNull(); - expect(val!.name).toBe('Alice'); - }); - - it('get — 不存在的 key 返回 null', () => { - expect(mt.get('nonexistent')).toBeNull(); - }); - - it('put 更新已存在的 key', () => { - mt.put('k', { v: 1 }); - mt.put('k', { v: 2 }); - expect(mt.get('k')!.v).toBe(2); - }); - - it('delete 删除成功', () => { - mt.put('k', { v: 1 }); - expect(mt.delete('k')).toBe(true); - expect(mt.get('k')).toBeNull(); - }); - - it('delete — 不存在的 key 返回 false', () => { - expect(mt.delete('ghost')).toBe(false); - }); - - it('getAllEntries 返回所有条目(有序)', () => { - mt.put('c', { v: 3 }); - mt.put('a', { v: 1 }); - mt.put('b', { v: 2 }); - const entries = mt.getAllEntries(); - expect(entries).toHaveLength(3); - expect(entries[0][0]).toBe('a'); - expect(entries[1][0]).toBe('b'); - expect(entries[2][0]).toBe('c'); - }); - - it('rangeScan — 范围查询', () => { - mt.put('a', { v: 1 }); - mt.put('b', { v: 2 }); - mt.put('c', { v: 3 }); - mt.put('d', { v: 4 }); - const results = mt.rangeScan('b', 'c'); - expect(results).toHaveLength(2); - expect(results[0][0]).toBe('b'); - expect(results[1][0]).toBe('c'); - }); - - it('rangeScan — 空结果', () => { - mt.put('a', { v: 1 }); - const results = mt.rangeScan('z', 'zz'); - expect(results).toHaveLength(0); - }); - - it('getEntryCount 正确计数', () => { - expect(mt.getEntryCount()).toBe(0); - mt.put('a', { v: 1 }); - mt.put('b', { v: 2 }); - expect(mt.getEntryCount()).toBe(2); - mt.delete('a'); - expect(mt.getEntryCount()).toBe(1); - }); - - it('contains 检查存在性', () => { - mt.put('x', { v: 1 }); - expect(mt.contains('x')).toBe(true); - expect(mt.contains('y')).toBe(false); - }); - - it('shouldFlush — 未达阈值返回 false', () => { - expect(mt.shouldFlush()).toBe(false); - }); - - it('clear 清空所有数据', () => { - mt.put('a', { v: 1 }); - mt.put('b', { v: 2 }); - mt.clear(); - expect(mt.getEntryCount()).toBe(0); - expect(mt.get('a')).toBeNull(); - }); - - it('getEstimatedSize 返回合理估计值', () => { - expect(mt.getEstimatedSize()).toBe(0); - mt.put('hello', { name: 'world', count: 42 }); - expect(mt.getEstimatedSize()).toBeGreaterThan(0); - }); - - it('大量数据插入保持有序', () => { - const count = 100; - for (let i = count - 1; i >= 0; i--) { - mt.put(`key-${String(i).padStart(3, '0')}`, { idx: i }); - } - const entries = mt.getAllEntries(); - expect(entries).toHaveLength(count); - for (let i = 0; i < count; i++) { - expect(entries[i][1].idx).toBe(i); - } - }); - - it('删除后重新插入', () => { - mt.put('k', { v: 1 }); - mt.delete('k'); - mt.put('k', { v: 2 }); - expect(mt.get('k')!.v).toBe(2); - }); - - it('范围扫描包含边界', () => { - mt.put('aa', { v: 1 }); - mt.put('ab', { v: 2 }); - mt.put('ac', { v: 3 }); - const results = mt.rangeScan('aa', 'ab'); - expect(results).toHaveLength(2); - expect(results[0][0]).toBe('aa'); - expect(results[1][0]).toBe('ab'); - }); -}); +/** + * AriaEngine Bloom Filter + MemTable 单元测试 + */ +import { BloomFilter } from '../../src/engine/aria/index/bloom'; +import { MemTable } from '../../src/engine/aria/index/memtable'; + +// =================================================================== +// BloomFilter +// =================================================================== +describe('AriaEngine — BloomFilter', () => { + it('插入后 mayContain 返回 true', () => { + const bf = new BloomFilter(100); + bf.insert('hello'); + expect(bf.mayContain('hello')).toBe(true); + }); + + it('未插入的 key mayContain 返回 false', () => { + const bf = new BloomFilter(100); + bf.insert('hello'); + expect(bf.mayContain('world')).toBe(false); + }); + + it('批量插入后所有 key 都判定存在', () => { + const bf = new BloomFilter(500); + const keys: string[] = []; + for (let i = 0; i < 200; i++) { + const k = `key-${i}`; + keys.push(k); + bf.insert(k); + } + for (const k of keys) { + expect(bf.mayContain(k)).toBe(true); + } + }); + + it('False positive 率可控', () => { + const n = 500; + const bf = new BloomFilter(n, 10); + for (let i = 0; i < n; i++) { + bf.insert(`present-${i}`); + } + let fp = 0; + for (let i = 0; i < 500; i++) { + if (bf.mayContain(`absent-${i}`)) fp++; + } + expect(fp).toBeLessThan(25); + }); + + it('getHashCount 返回哈希函数数量', () => { + const bf = new BloomFilter(1000, 10); + expect(bf.getHashCount()).toBeGreaterThan(0); + }); + + it('serialize + fromData 往返', () => { + const bf1 = new BloomFilter(100); + bf1.insert('a'); + bf1.insert('b'); + const data = bf1.serialize(); + + const bf2 = BloomFilter.fromData(data, bf1.getHashCount()); + expect(bf2.mayContain('a')).toBe(true); + expect(bf2.mayContain('b')).toBe(true); + expect(bf2.mayContain('c')).toBe(false); + }); + + it('空过滤器 mayContain 返回 false', () => { + const bf = new BloomFilter(100); + expect(bf.mayContain('anything')).toBe(false); + }); + + it('最少 1 个哈希函数', () => { + const bf = new BloomFilter(10, 1); + expect(bf.getHashCount()).toBeGreaterThanOrEqual(1); + }); +}); + +// =================================================================== +// MemTable +// =================================================================== +describe('AriaEngine — MemTable', () => { + let mt: MemTable; + + beforeEach(() => { + mt = new MemTable(4 * 1024 * 1024); + }); + + it('put + get 往返', () => { + mt.put('key1', { name: 'Alice', age: 30 }); + const val = mt.get('key1'); + expect(val).not.toBeNull(); + expect(val!.name).toBe('Alice'); + }); + + it('get — 不存在的 key 返回 null', () => { + expect(mt.get('nonexistent')).toBeNull(); + }); + + it('put 更新已存在的 key', () => { + mt.put('k', { v: 1 }); + mt.put('k', { v: 2 }); + expect(mt.get('k')!.v).toBe(2); + }); + + it('delete 删除成功', () => { + mt.put('k', { v: 1 }); + expect(mt.delete('k')).toBe(true); + expect(mt.get('k')).toBeNull(); + }); + + it('delete — 不存在的 key 返回 false', () => { + expect(mt.delete('ghost')).toBe(false); + }); + + it('getAllEntries 返回所有条目(有序)', () => { + mt.put('c', { v: 3 }); + mt.put('a', { v: 1 }); + mt.put('b', { v: 2 }); + const entries = mt.getAllEntries(); + expect(entries).toHaveLength(3); + expect(entries[0][0]).toBe('a'); + expect(entries[1][0]).toBe('b'); + expect(entries[2][0]).toBe('c'); + }); + + it('rangeScan — 范围查询', () => { + mt.put('a', { v: 1 }); + mt.put('b', { v: 2 }); + mt.put('c', { v: 3 }); + mt.put('d', { v: 4 }); + const results = mt.rangeScan('b', 'c'); + expect(results).toHaveLength(2); + expect(results[0][0]).toBe('b'); + expect(results[1][0]).toBe('c'); + }); + + it('rangeScan — 空结果', () => { + mt.put('a', { v: 1 }); + const results = mt.rangeScan('z', 'zz'); + expect(results).toHaveLength(0); + }); + + it('getEntryCount 正确计数', () => { + expect(mt.getEntryCount()).toBe(0); + mt.put('a', { v: 1 }); + mt.put('b', { v: 2 }); + expect(mt.getEntryCount()).toBe(2); + mt.delete('a'); + expect(mt.getEntryCount()).toBe(1); + }); + + + it('shouldFlush — 未达阈值返回 false', () => { + expect(mt.shouldFlush()).toBe(false); + }); + + it('clear 清空所有数据', () => { + mt.put('a', { v: 1 }); + mt.put('b', { v: 2 }); + mt.clear(); + expect(mt.getEntryCount()).toBe(0); + expect(mt.get('a')).toBeNull(); + }); + + it('getEstimatedSize 返回合理估计值', () => { + expect(mt.getEstimatedSize()).toBe(0); + mt.put('hello', { name: 'world', count: 42 }); + expect(mt.getEstimatedSize()).toBeGreaterThan(0); + }); + + it('大量数据插入保持有序', () => { + const count = 100; + for (let i = count - 1; i >= 0; i--) { + mt.put(`key-${String(i).padStart(3, '0')}`, { idx: i }); + } + const entries = mt.getAllEntries(); + expect(entries).toHaveLength(count); + for (let i = 0; i < count; i++) { + expect(entries[i][1].idx).toBe(i); + } + }); + + it('删除后重新插入', () => { + mt.put('k', { v: 1 }); + mt.delete('k'); + mt.put('k', { v: 2 }); + expect(mt.get('k')!.v).toBe(2); + }); + + it('范围扫描包含边界', () => { + mt.put('aa', { v: 1 }); + mt.put('ab', { v: 2 }); + mt.put('ac', { v: 3 }); + const results = mt.rangeScan('aa', 'ab'); + expect(results).toHaveLength(2); + expect(results[0][0]).toBe('aa'); + expect(results[1][0]).toBe('ab'); + }); +}); diff --git a/tests/engine/aria-locks.test.ts b/tests/engine/aria-locks.test.ts new file mode 100644 index 0000000..c9f10e5 --- /dev/null +++ b/tests/engine/aria-locks.test.ts @@ -0,0 +1,170 @@ +/** + * AriaEngine — 多标签页独占锁(Web Locks)测试 + * + * 覆盖: + * 1. 第一个引擎持锁 → 第二个引擎打开抛 ARIA_LOCKED + * 2. 关闭后锁释放 → 可再次打开 + * 3. 环境不支持 Web Locks → 降级打开(返回 false 语义 + 警告) + * 4. open 失败(如加密密码错误)→ 锁释放(其他标签页可打开) + * 5. 锁名按库隔离(不同库不互斥) + */ +import { AriaEngine } from '../../src/engine/aria/index'; +import { DatabaseLock, lockName } from '../../src/engine/aria/locks'; +import { createSchema } from '../../src/table/schema'; +import 'fake-indexeddb/auto'; + +let idbCounter = 0; +function uniqueDB(): string { + return `lock-${Date.now()}-${++idbCounter}-${Math.random().toString(36).slice(2, 8)}`; +} + +// =================================================================== +// Web Locks mock:真实语义(ifAvailable / 回调结束锁自动释放) +// =================================================================== +let lockHolders: Map; + +function installLocksMock() { + lockHolders = new Map(); + Object.defineProperty(globalThis, 'navigator', { + value: { + locks: { + request: async (_name: string, opts: { ifAvailable?: boolean }, cb: (lock: { name: string } | null) => Promise | void) => { + const name = _name; + if (lockHolders.has(name)) { + if (opts?.ifAvailable) { + await cb(null); + return; + } + throw new Error('unreachable: non-ifAvailable request not used'); + } + lockHolders.set(name, true); + try { + // 真实 Web Locks 语义:回调结束 → 锁自动释放 + await cb({ name }); + } finally { + lockHolders.delete(name); + } + }, + }, + }, + configurable: true, + writable: true, + }); +} + +function removeLocksMock() { + Object.defineProperty(globalThis, 'navigator', { + value: {}, + configurable: true, + writable: true, + }); +} + +// =================================================================== +// DatabaseLock 单元 +// =================================================================== +describe('AriaEngine — DatabaseLock 单元', () => { + beforeEach(installLocksMock); + + it('acquire 持锁 → 二次 acquire 抛 ARIA_LOCKED → release 后恢复', async () => { + const lock1 = new DatabaseLock(); + expect(await lock1.acquire('db-a')).toBe(true); + expect(lock1.isAcquired()).toBe(true); + expect(lock1.isSupported()).toBe(true); + expect(lockHolders.has(lockName('db-a'))).toBe(true); + + const lock2 = new DatabaseLock(); + await expect(lock2.acquire('db-a')).rejects.toMatchObject({ code: 'ARIA_LOCKED' }); + expect(lock2.isAcquired()).toBe(false); + + await lock1.release(); + expect(lock1.isAcquired()).toBe(false); + expect(lockHolders.has(lockName('db-a'))).toBe(false); + + const lock3 = new DatabaseLock(); + expect(await lock3.acquire('db-a')).toBe(true); + await lock3.release(); + }); + + it('不同库名互不阻塞', async () => { + const l1 = new DatabaseLock(); + const l2 = new DatabaseLock(); + expect(await l1.acquire('db-x')).toBe(true); + expect(await l2.acquire('db-y')).toBe(true); + await l1.release(); + await l2.release(); + }); + + it('无 Web Locks 环境 → acquire 返回 false(降级)', async () => { + removeLocksMock(); + const lock = new DatabaseLock(); + expect(await lock.acquire('db-z')).toBe(false); + expect(lock.isSupported()).toBe(false); + expect(lock.isAcquired()).toBe(false); + }); + + it('重复 release 幂等', async () => { + const lock = new DatabaseLock(); + await lock.acquire('db-r'); + await lock.release(); + await lock.release(); + expect(lock.isAcquired()).toBe(false); + }); +}); + +// =================================================================== +// AriaEngine 集成 — 多标签页锁 +// =================================================================== +describe('AriaEngine — 多标签页锁(集成)', () => { + beforeEach(installLocksMock); + + it('第二个标签页打开同一库 → ARIA_LOCKED', async () => { + const dbName = uniqueDB(); + const engine1 = new AriaEngine({ storageBackend: 'indexeddb' }); + await engine1.open(dbName, 1); + await engine1.createTable(createSchema('t', { id: { type: 'string', primaryKey: true } })); + + const engine2 = new AriaEngine({ storageBackend: 'indexeddb' }); + await expect(engine2.open(dbName, 1)).rejects.toMatchObject({ code: 'ARIA_LOCKED' }); + // engine2 未持锁、未 opened + expect((engine2 as any).opened).toBe(false); + + await engine1.close(); + + // 释放后可打开 + const engine3 = new AriaEngine({ storageBackend: 'indexeddb' }); + await engine3.open(dbName, 1); + expect(await engine3.count('t')).toBe(0); + await engine3.close(); + }); + + it('open 失败(错误密码)→ 锁释放,其他标签页可打开', async () => { + const dbName = uniqueDB(); + const engine1 = new AriaEngine({ storageBackend: 'indexeddb', encryption: { password: 'pw' } }); + await engine1.open(dbName, 1); + await engine1.createTable(createSchema('t', { id: { type: 'string', primaryKey: true } })); + await engine1.close(); + + // 错误密码 → open 失败 + const engineBad = new AriaEngine({ storageBackend: 'indexeddb', encryption: { password: 'wrong' } }); + await expect(engineBad.open(dbName, 1)).rejects.toMatchObject({ code: 'ARIA_DECRYPT_ERROR' }); + // 失败后锁已释放(未泄漏) + expect(lockHolders.has(lockName(dbName))).toBe(false); + + // 正确密码可打开 + const engineOk = new AriaEngine({ storageBackend: 'indexeddb', encryption: { password: 'pw' } }); + await engineOk.open(dbName, 1); + await engineOk.close(); + }); + + it('无 Web Locks 环境 → 降级打开(不抛错)', async () => { + removeLocksMock(); + const dbName = uniqueDB(); + const engine = new AriaEngine({ storageBackend: 'indexeddb' }); + await engine.open(dbName, 1); + await engine.createTable(createSchema('t', { id: { type: 'string', primaryKey: true } })); + await engine.insert('t', [{ id: '1' }]); + expect(await engine.count('t')).toBe(1); + await engine.close(); + }); +}); diff --git a/tests/engine/aria-maintenance.test.ts b/tests/engine/aria-maintenance.test.ts index 20a7374..a5a4f61 100644 --- a/tests/engine/aria-maintenance.test.ts +++ b/tests/engine/aria-maintenance.test.ts @@ -81,23 +81,6 @@ describe('AriaEngine — ANALYZE/VACUUM/REINDEX + EXPLAIN', () => { expect(plan.actualTimeMs).toBeGreaterThanOrEqual(0); }); - // ---- 查询优化器 ---- - it('estimateQueryCost PK 等值 → pk_lookup', () => { - const cost = (engine as any).estimateQueryCost('users', { table: 'users', where: { id: '1' } }); - expect(cost.strategy).toBe('pk_lookup'); - expect(cost.estimatedRows).toBe(1); - }); - - it('estimateQueryCost 索引等值 → index_eq', () => { - const cost = (engine as any).estimateQueryCost('users', { table: 'users', where: { name: 'Alice' } }); - expect(cost.strategy).toBe('index_eq:name'); - }); - - it('estimateQueryCost 无索引 → full_scan', () => { - const cost = (engine as any).estimateQueryCost('users', { table: 'users', where: { age: { $gt: 20 } } }); - expect(cost.strategy).toMatch(/index_range|full_scan/); - }); - // ---- 在线备份 ---- it('backup 导出全库一致性快照', async () => { const backup = await (engine as any).backup(); diff --git a/tests/engine/aria-mvcc-savepoint.test.ts b/tests/engine/aria-mvcc-savepoint.test.ts index 15edb9f..3351b0f 100644 --- a/tests/engine/aria-mvcc-savepoint.test.ts +++ b/tests/engine/aria-mvcc-savepoint.test.ts @@ -27,31 +27,20 @@ describe('AriaEngine — MVCC 事务 + Savepoint', () => { expect(id1).not.toBe(id2); }); - it('commit 后事务标记为非活跃', () => { + it('commit 后版本标记已提交', () => { const txnId = (engine as any).mvcc.beginTransaction(); + (engine as any).mvcc.writeVersion('users', '1', { name: 'Alice' }, txnId); (engine as any).mvcc.commitTransaction(txnId); - expect((engine as any).mvcc.isActive(txnId)).toBe(false); + const store = (engine as any).mvcc.versionStore; + expect(store.get('users.1')[0].committed).toBe(true); }); - it('rollback 后事务标记为非活跃', () => { + it('rollback 移除本事务版本', () => { const txnId = (engine as any).mvcc.beginTransaction(); + (engine as any).mvcc.writeVersion('users', '1', { name: 'Alice' }, txnId); (engine as any).mvcc.rollbackTransaction(txnId); - expect((engine as any).mvcc.isActive(txnId)).toBe(false); - }); - - it('事务中写入版本可读', () => { - const txnId = (engine as any).mvcc.beginTransaction(); - (engine as any).mvcc.writeVersion('users', '1', { name: 'Alice', balance: 100 }, txnId); - const val = (engine as any).mvcc.readVersion('users', '1', txnId); - expect(val).not.toBeNull(); - expect(val!.name).toBe('Alice'); - }); - - it('未提交版本对其他事务不可见', () => { - const txn1 = (engine as any).mvcc.beginTransaction(); - (engine as any).mvcc.writeVersion('users', '1', { name: 'Alice' }, txn1); - const txn2 = (engine as any).mvcc.beginTransaction(); - expect((engine as any).mvcc.readVersion('users', '1', txn2)).toBeNull(); + const store = (engine as any).mvcc.versionStore; + expect(store.has('users.1')).toBe(false); }); it('引擎层事务 commit 后数据可见', async () => { @@ -69,16 +58,14 @@ describe('AriaEngine — MVCC 事务 + Savepoint', () => { expect(await engine.count('users')).toBe(1); }); - it('GC 清理过旧版本', () => { + it('GC 清理过旧版本(保留最新 N 个)', () => { for (let i = 0; i < 200; i++) { const txnId = (engine as any).mvcc.beginTransaction(); (engine as any).mvcc.writeVersion('users', '1', { ver: i }, txnId); (engine as any).mvcc.commitTransaction(txnId); } (engine as any).mvcc.gc(50); - const txnId = (engine as any).mvcc.beginTransaction(); - expect((engine as any).mvcc.readVersion('users', '1', txnId)).not.toBeNull(); - (engine as any).mvcc.commitTransaction(txnId); + expect((engine as any).mvcc.versionStore.get('users.1').length).toBe(50); }); // ---- Savepoint ---- diff --git a/tests/engine/aria-opfs-backend.test.ts b/tests/engine/aria-opfs-backend.test.ts new file mode 100644 index 0000000..d4c0e28 --- /dev/null +++ b/tests/engine/aria-opfs-backend.test.ts @@ -0,0 +1,228 @@ +/** + * AriaEngine — OPFSBackend v2 测试 + * + * 覆盖: + * 1. read/write/append/exists/delete/clear 基本语义 + * 2. append 追加语义(keepExistingData + position)与字节顺序 + * 3. 写队列串行化(并发写顺序一致) + * 4. 单次任务失败不中断队列链(后续写正常) + * 5. close 等待挂起写完成 + * 6. open 清理崩溃残留临时文件(.crswap/.tmp) + * 7. writeMany/deleteMany 语义 + */ +import { OPFSBackend } from '../../src/engine/aria/store/opfs_backend'; + +// =================================================================== +// 真实语义 OPFS mock:记录文件内容、支持 keepExistingData+position +// =================================================================== +interface MockFile { + content: ArrayBuffer; + writeCalls: { position?: number; data: ArrayBuffer; keepExistingData?: boolean }[]; +} + +function createOPFSMock() { + const files = new Map(); + + const getFileHandle = async (name: string, opts?: { create?: boolean }) => { + if (!files.has(name)) { + if (!opts?.create) throw new Error(`NotFoundError: ${name}`); + files.set(name, { content: new ArrayBuffer(0), writeCalls: [] }); + } + const entry = files.get(name)!; + return { + getFile: async () => ({ size: entry.content.byteLength, arrayBuffer: async () => entry.content }), + createWritable: async (wOpts?: { keepExistingData?: boolean }) => { + const w: { + write: (arg: ArrayBuffer | { type: string; position: number; data: ArrayBuffer }) => Promise; + close: () => Promise; + } = { + write: async (arg) => { + const keepExisting = wOpts?.keepExistingData ?? false; + const isChunk = typeof arg !== 'object' || !('type' in (arg as object)) || (arg as { type?: string }).type === undefined + ? { data: arg as ArrayBuffer, position: keepExisting ? entry.content.byteLength : 0 } + : { data: (arg as { data: ArrayBuffer }).data, position: (arg as { position: number }).position }; + entry.writeCalls.push({ position: isChunk.position, data: isChunk.data, keepExistingData: keepExisting }); + const merged = new Uint8Array(isChunk.position + isChunk.data.byteLength); + if (keepExisting || isChunk.position > 0) { + merged.set(new Uint8Array(entry.content.subarray ? entry.content : entry.content), 0); + } + merged.set(new Uint8Array(isChunk.data), isChunk.position); + entry.content = merged.buffer; + }, + close: async () => { /* no-op */ }, + }; + return w; + }, + }; + }; + + const dir = { + getFileHandle, + entries: async function* () { + for (const [name] of files) yield [name]; + }, + removeEntry: async (name: string) => { + files.delete(name); + }, + }; + + Object.defineProperty(globalThis, 'navigator', { + value: { + storage: { + getDirectory: async () => ({ + getDirectoryHandle: async (_name: string, _opts?: unknown) => dir, + }), + }, + }, + configurable: true, + writable: true, + }); + + return { files, dir }; +} + +const enc = (s: string) => new Uint8Array(new TextEncoder().encode(s)).buffer; + +describe('AriaEngine — OPFSBackend v2', () => { + beforeEach(() => { + createOPFSMock(); + }); + + it('read/write/exists/delete 基本语义', async () => { + const backend = new OPFSBackend(); + await backend.open('opfs-test-1'); + expect(backend.isOpen()).toBe(true); + + await backend.write('k1', enc('hello')); + expect(await backend.exists('k1')).toBe(true); + expect(new TextDecoder().decode(await backend.read('k1'))).toBe('hello'); + expect(await backend.read('missing')).toBeNull(); + + await backend.delete('k1'); + expect(await backend.exists('k1')).toBe(false); + await backend.close(); + expect(backend.isOpen()).toBe(false); + }); + + it('append 追加语义:字节顺序与位置正确', async () => { + const backend = new OPFSBackend(); + await backend.open('opfs-test-2'); + await backend.append('wal', enc('AAA')); + await backend.append('wal', enc('BBB')); + await backend.append('wal', enc('CCC')); + const all = await backend.read('wal'); + expect(new TextDecoder().decode(all)).toBe('AAABBBCCC'); + await backend.close(); + }); + + it('write 覆盖语义(COW 原子替换)', async () => { + const backend = new OPFSBackend(); + await backend.open('opfs-test-3'); + await backend.write('f', enc('OLD-CONTENT')); + await backend.write('f', enc('NEW')); + expect(new TextDecoder().decode(await backend.read('f'))).toBe('NEW'); + await backend.close(); + }); + + it('并发写串行化:写入顺序与调用顺序一致', async () => { + const backend = new OPFSBackend(); + await backend.open('opfs-test-4'); + // 同时发起多个写(不 await 中间结果) + const p1 = backend.append('log', enc('A')); + const p2 = backend.append('log', enc('B')); + const p3 = backend.append('log', enc('C')); + await Promise.all([p1, p2, p3]); + expect(new TextDecoder().decode(await backend.read('log'))).toBe('ABC'); + await backend.close(); + }); + + it('单次写失败不中断队列链,后续写正常', async () => { + const backend = new OPFSBackend(); + await backend.open('opfs-test-5'); + + // 注入失败:让 write 抛错一次 + let failNext = true; + const origWrite = backend.write.bind(backend); + const mockDir = (backend as any).dbDir; + const origGetFileHandle = mockDir.getFileHandle.bind(mockDir); + mockDir.getFileHandle = async (name: string, opts?: { create?: boolean }) => { + if (failNext && name === 'boom') { + failNext = false; + throw new Error('Injected write failure'); + } + return origGetFileHandle(name, opts); + }; + (backend as any).dbDir = mockDir; + + await expect(origWrite('boom', enc('x'))).rejects.toThrow('Injected write failure'); + // 队列链恢复:后续写成功 + await backend.write('ok', enc('fine')); + expect(new TextDecoder().decode(await backend.read('ok'))).toBe('fine'); + await backend.close(); + }); + + it('close 等待挂起写完成(挂起写不丢失)', async () => { + const backend = new OPFSBackend(); + await backend.open('opfs-test-6'); + + // 发起一个写但不 await,立即 close + const pending = backend.append('late', enc('LATE-DATA')); + await backend.close(); + await pending; // close 已等队列 → 写已完成 + expect(pending).resolves.toBeUndefined(); + }); + + it('open 清理崩溃残留临时文件(.crswap/.tmp)', async () => { + const backend = new OPFSBackend(); + await backend.open('opfs-test-7'); + await backend.write('data', enc('real')); + // 手工制造残留 + const mockDir = (backend as any).dbDir; + await mockDir.getFileHandle('data.crswap', { create: true }); + await mockDir.getFileHandle('data.tmp', { create: true }); + await backend.close(); + + // 重开:open 自动清理 + const backend2 = new OPFSBackend(); + await backend2.open('opfs-test-7'); + const keys = await backend2.listKeys(); + expect(keys).toEqual(['data']); + expect(keys.some((k) => k.endsWith('.crswap') || k.endsWith('.tmp'))).toBe(false); + // 正常数据不受影响 + expect(new TextDecoder().decode(await backend2.read('data'))).toBe('real'); + await backend2.close(); + }); + + it('writeMany / deleteMany 语义', async () => { + const backend = new OPFSBackend(); + await backend.open('opfs-test-8'); + await backend.writeMany({ a: enc('AAA'), b: enc('BBB') }); + expect(new TextDecoder().decode(await backend.read('a'))).toBe('AAA'); + expect(new TextDecoder().decode(await backend.read('b'))).toBe('BBB'); + await backend.deleteMany(['a']); + expect(await backend.exists('a')).toBe(false); + expect(await backend.exists('b')).toBe(true); + await backend.clear(); + expect(await backend.listKeys()).toEqual([]); + await backend.close(); + }); + + it('close 后所有操作安全返回(dbDir 为 null 不抛错)', async () => { + const backend = new OPFSBackend(); + await backend.open('opfs-test-9'); + await backend.write('k', enc('v')); + await backend.close(); + + expect(backend.isOpen()).toBe(false); + expect(await backend.read('k')).toBeNull(); + await backend.write('late', enc('x')); // 静默忽略 + await backend.append('late2', enc('x')); + await backend.writeMany({ a: enc('1') }); + await backend.delete('k'); + await backend.deleteMany(['a']); + expect(await backend.listKeys()).toEqual([]); + expect(await backend.exists('k')).toBe(false); + await backend.clear(); + await backend.cleanupStaleFiles(); + }); +}); diff --git a/tests/engine/aria-page-core.test.ts b/tests/engine/aria-page-core.test.ts new file mode 100644 index 0000000..2fb2ca4 --- /dev/null +++ b/tests/engine/aria-page-core.test.ts @@ -0,0 +1,62 @@ +/** + * AriaEngine Page — 页面核心逻辑测试 + * + * v0.4.5: 页面层精简后仅保留生产代码实际使用的函数: + * - initPageHeader(FileManager 创建空页面) + * - createPage(BufferPool 分配新页面) + * - PAGE_HEADER_SIZE / PAGE_SIZE 常量 + * 页面内容为 SSTable 原始字节切片(PageSSTableStore 管理),无行级 slot 结构。 + */ +import { createPage } from '../../src/engine/aria/page/format'; +import { initPageHeader } from '../../src/engine/aria/page/header'; +import { PAGE_SIZE, PAGE_HEADER_SIZE, PageType } from '../../src/engine/aria/types'; + +describe('AriaEngine — Page 核心', () => { + it('initPageHeader 初始化 4KB 页面头部字段', () => { + const buf = new ArrayBuffer(PAGE_SIZE); + initPageHeader(buf, 42, PageType.DATA); + const view = new DataView(buf); + expect(view.getUint32(0, false)).toBe(42); // page_id + expect(view.getUint8(4)).toBe(PageType.DATA); // type + expect(view.getUint16(5, false)).toBe(PAGE_HEADER_SIZE); // free_start + expect(view.getUint16(7, false)).toBe(PAGE_SIZE); // free_end + expect(view.getUint16(9, false)).toBe(0); // slot_count + expect(view.getUint8(15)).toBe(0); // reserved + }); + + it('initPageHeader 支持不同页面类型', () => { + const buf = new ArrayBuffer(PAGE_SIZE); + initPageHeader(buf, 1, PageType.META); + expect(new DataView(buf).getUint8(4)).toBe(PageType.META); + }); + + it('createPage 创建脏页面(pins=0,初始化头部)', () => { + const page = createPage(7, PageType.DATA); + expect(page.pageId).toBe(7); + expect(page.type).toBe(PageType.DATA); + expect(page.data.byteLength).toBe(PAGE_SIZE); + expect(page.dirty).toBe(true); + expect(page.pins).toBe(0); + // 头部已初始化 + expect(new DataView(page.data).getUint32(0, false)).toBe(7); + expect(new DataView(page.data).getUint8(4)).toBe(PageType.DATA); + }); + + it('页面数据区从头部之后开始(跳过 16 字节头)', () => { + const page = createPage(1, PageType.DATA); + // 头部之后写入数据,头部字段不受影响 + const view = new Uint8Array(page.data); + view[PAGE_HEADER_SIZE] = 0xAB; + view[PAGE_HEADER_SIZE + 1] = 0xCD; + expect(view[PAGE_HEADER_SIZE]).toBe(0xAB); + expect(view[PAGE_HEADER_SIZE + 1]).toBe(0xCD); + // 头部字段保持 + expect(new DataView(page.data).getUint32(0, false)).toBe(1); + }); + + it('createPage 的 dirty 标记在写入后保持(PageSSTableStore 依赖)', () => { + const page = createPage(2, PageType.DATA); + new Uint8Array(page.data)[100] = 0x01; + expect(page.dirty).toBe(true); + }); +}); diff --git a/tests/engine/aria-page-store.test.ts b/tests/engine/aria-page-store.test.ts new file mode 100644 index 0000000..941346d --- /dev/null +++ b/tests/engine/aria-page-store.test.ts @@ -0,0 +1,318 @@ +/** + * AriaEngine — 页面化 SSTable 存储测试 + * + * 覆盖: + * 1. PageSSTableStore 单元:save/load 往返(页边界、非整数页)、delete 释放页面 + * 2. AriaEngine + OPFS(页面模式):写入 → flush → close → reopen 数据完整 + * 3. 大 SSTable 多页 + pageIds 注入 meta 验证 + * 4. 页面损坏(CRC 校验失败)→ 打开自愈清理 + * 5. 页面模式与非页面模式混合(pageIds 兼容:新页面写 + 旧整 value 读) + * 6. 页面化 + 加密 + 压缩组合 + */ +import { AriaEngine } from '../../src/engine/aria/index'; +import { PageSSTableStore } from '../../src/engine/aria/store/page_sstable_store'; +import { FileManager } from '../../src/engine/aria/store/file_manager'; +import { BufferPool } from '../../src/engine/aria/buffer/pool'; +import { MemoryBackend } from '../../src/engine/aria/store/backend'; +import { createSchema } from '../../src/table/schema'; +import { PAGE_SIZE } from '../../src/engine/aria/types'; + +// =================================================================== +// OPFS mock(共享工具) +// =================================================================== +import { installOPFSMock } from '../helpers/opfs-mock'; + +const SCHEMA = () => createSchema('users', { + id: { type: 'string', primaryKey: true }, + name: { type: 'string' }, + note: { type: 'string' }, +}); + +// =================================================================== +// PageSSTableStore 单元 +// =================================================================== +describe('AriaEngine — PageSSTableStore 单元', () => { + it('save/load 往返:单页数据', async () => { + const backend = new MemoryBackend(); + await backend.open('pg-unit-1'); + const fm = new FileManager(backend); + await fm.init('pg-unit-1'); + const bp = new BufferPool(fm, 64); + const store = new PageSSTableStore(fm, bp); + + const data = new Uint8Array(new TextEncoder().encode('hello page store')); + await store.save(1, data); + const pageIds = store.getPageIds(1)!; + expect(pageIds.length).toBe(1); + + const back = await store.load(1, pageIds, data.byteLength); + expect(back).not.toBeNull(); + expect(new TextDecoder().decode(back)).toBe('hello page store'); + + // 页面已落盘(backend 有 pg_ 键) + expect(await backend.exists('pg_1')).toBe(true); + + await store.delete(1, pageIds); + expect(await backend.exists('pg_1')).toBe(false); + await backend.close(); + }); + + it('save/load 往返:多页数据(跨 4KB 边界)', async () => { + const backend = new MemoryBackend(); + await backend.open('pg-unit-2'); + const fm = new FileManager(backend); + await fm.init('pg-unit-2'); + const bp = new BufferPool(fm, 64); + const store = new PageSSTableStore(fm, bp); + + // 3 页:4KB * 2 + 1KB + const size = PAGE_SIZE * 2 + 1024; + const data = new Uint8Array(size); + let x = 42; + for (let i = 0; i < size; i++) { + x = (x * 31 + 7) & 0xffff; + data[i] = x & 0xff; + } + await store.save(7, data); + const pageIds = store.getPageIds(7)!; + expect(pageIds.length).toBe(3); + + const back = await store.load(7, pageIds, size); + expect(back).not.toBeNull(); + expect(back!.byteLength).toBe(size); + expect(back).toEqual(data); + await backend.close(); + }); + + it('load 使用 totalSize 截断最后一页的 0 填充', async () => { + const backend = new MemoryBackend(); + await backend.open('pg-unit-3'); + const fm = new FileManager(backend); + await fm.init('pg-unit-3'); + const bp = new BufferPool(fm, 64); + const store = new PageSSTableStore(fm, bp); + + // 非整数页:4096 + 100 字节 + const real = new Uint8Array(PAGE_SIZE + 100); + for (let i = 0; i < real.length; i++) real[i] = i & 0xff; + await store.save(9, real); + const pageIds = store.getPageIds(9)!; + expect(pageIds.length).toBe(2); + + const back = await store.load(9, pageIds, real.length); + expect(back!.byteLength).toBe(real.length); + expect(back).toEqual(real); + await backend.close(); + }); + + it('页面缺失(磁盘文件丢失 + 缓存清空)→ load 返回 null', async () => { + const backend = new MemoryBackend(); + await backend.open('pg-unit-4'); + const fm = new FileManager(backend); + await fm.init('pg-unit-4'); + const bp = new BufferPool(fm, 64); + const store = new PageSSTableStore(fm, bp); + + await store.save(5, new Uint8Array(100)); + const pageIds = store.getPageIds(5)!; + // 模拟崩溃重开:磁盘文件丢失 + 页面缓存清空 + await backend.delete('pg_' + pageIds[0]); + bp.removePage(pageIds[0]); + + const back = await store.load(5, pageIds, 100); + expect(back).toBeNull(); + await backend.close(); + }); +}); + +// =================================================================== +// AriaEngine + OPFS 页面模式集成 +// =================================================================== +describe('AriaEngine — 页面化 SSTable 集成(OPFS)', () => { + it('写入 → flush → close → reopen 数据完整(页面模式默认启用)', async () => { + const files = installOPFSMock(new Map()); + const engine = new AriaEngine({ + storageBackend: 'opfs', + memtableSizeThreshold: 64 * 1024 * 1024, + checkpointInterval: 100000, + }); + await engine.open('page-db-1', 1); + await engine.createTable(SCHEMA()); + + // 多行 + 大 note → 超过 4KB → 多页 + const rows = [] as Record[]; + for (let i = 0; i < 30; i++) { + rows.push({ id: `u-${i}`, name: `User${i}`, note: 'page-store-note-'.repeat(40) }); + } + await engine.insert('users', rows); + await (engine as any).lsm.flush(); + + // 页面化落盘:backend 有 pg_ 键,meta 含 pageIds + const backend = (engine as any).backend; + const keys = await backend.listKeys(); + const pgKeys = keys.filter((k: string) => k.startsWith('pg_')); + const sstKeys = keys.filter((k: string) => k.startsWith('sst_')); + expect(pgKeys.length).toBeGreaterThan(0); + expect(sstKeys.length).toBe(0); // 页面模式下不写整 value SSTable + + const metas = await (engine as any).lsm.sstableStore.listMeta(); + expect(metas.length).toBeGreaterThan(0); + expect(metas[0].pageIds).toBeDefined(); + expect(metas[0].pageIds.length).toBeGreaterThan(0); + + await engine.close(); + + // reopen:数据完整 + const engine2 = new AriaEngine({ storageBackend: 'opfs', checkpointInterval: 100000 }); + await engine2.open('page-db-1', 1); + const found = await engine2.find('users', { table: 'users' }); + expect(found).toHaveLength(30); + expect(found[0].note).toBe('page-store-note-'.repeat(40)); + expect(await engine2.count('users')).toBe(30); + await engine2.close(); + }); + + it('多级 compaction 后页面化数据仍完整', async () => { + const files = installOPFSMock(new Map()); + const engine = new AriaEngine({ + storageBackend: 'opfs', + memtableSizeThreshold: 16 * 1024, + checkpointInterval: 100000, + }); + await engine.open('page-db-2', 1); + await engine.createTable(SCHEMA()); + + // 大量小批量写入 → 多次 flush → 触发 compaction + for (let batch = 0; batch < 8; batch++) { + const rows = [] as Record[]; + for (let i = 0; i < 20; i++) { + rows.push({ id: `b${batch}-u${i}`, name: `U${i}`, note: 'x'.repeat(200) }); + } + await engine.insert('users', rows); + await (engine as any).lsm.flush(); + } + // 强制压缩 + await (engine as any).lsm.compactLevel(0); + + await engine.close(); + const engine2 = new AriaEngine({ storageBackend: 'opfs', checkpointInterval: 100000 }); + await engine2.open('page-db-2', 1); + expect(await engine2.count('users')).toBe(160); + const one = await engine2.find('users', { table: 'users', where: { id: 'b3-u10' } }); + expect(one).toHaveLength(1); + await engine2.close(); + }); + + it('页面损坏(篡改 pg_ 文件)→ 打开自愈清理,其余数据可读', async () => { + const files = installOPFSMock(new Map()); + const engine = new AriaEngine({ + storageBackend: 'opfs', + memtableSizeThreshold: 64 * 1024 * 1024, + checkpointInterval: 100000, + }); + await engine.open('page-db-3', 1); + await engine.createTable(SCHEMA()); + for (let batch = 0; batch < 2; batch++) { + const rows = [] as Record[]; + for (let i = 0; i < 20; i++) { + rows.push({ id: `b${batch}-u${i}`, name: `U${i}`, note: 'n'.repeat(100) }); + } + await engine.insert('users', rows); + await (engine as any).lsm.flush(); + } + await engine.close(); + + // 篡改第一个 SSTable 的第一页 + const engine2 = new AriaEngine({ storageBackend: 'opfs', checkpointInterval: 100000 }); + await engine2.open('page-db-3', 1); + const metas = await (engine2 as any).lsm.sstableStore.listMeta(); + expect(metas.length).toBeGreaterThanOrEqual(2); + const victim = metas[0]; + const backend = (engine2 as any).backend; + const pageRaw = await backend.read(`pg_${victim.pageIds[0]}`); + const corrupted = new Uint8Array(pageRaw); + corrupted[100] ^= 0xff; + await backend.write(`pg_${victim.pageIds[0]}`, corrupted.buffer as ArrayBuffer); + await engine2.close(); + + // 重开:损坏页面的 SSTable 被清理,其余数据可读 + const engine3 = new AriaEngine({ storageBackend: 'opfs', checkpointInterval: 100000 }); + await engine3.open('page-db-3', 1); + const rows3 = await engine3.find('users', { table: 'users' }); + expect(rows3.length).toBeGreaterThan(0); + expect(rows3.length).toBeLessThan(40); + await engine3.close(); + }); + + it('页面模式与非页面模式混合兼容(pageIds 缺失 → 整 value 读取)', async () => { + const { files } = installOPFSMock(new Map()); + // 阶段 1:非页面模式写入(pageStorage: false → 整 value SSTable) + const engine = new AriaEngine({ + storageBackend: 'opfs', + pageStorage: false, + memtableSizeThreshold: 64 * 1024 * 1024, + checkpointInterval: 100000, + }); + await engine.open('page-db-4', 1); + await engine.createTable(SCHEMA()); + await engine.insert('users', [{ id: 'legacy-1', name: 'Old', note: 'whole-value' }]); + await (engine as any).lsm.flush(); + await engine.close(); + + const backendKeys1 = Array.from(files.keys()); + expect(backendKeys1.some((k) => k.startsWith('sst_'))).toBe(true); + + // 阶段 2:页面模式打开(默认 opfs → 启用),读旧数据 + 写新数据 + const engine2 = new AriaEngine({ storageBackend: 'opfs', checkpointInterval: 100000 }); + await engine2.open('page-db-4', 1); + expect(await engine2.count('users')).toBe(1); + const legacy = await engine2.find('users', { table: 'users', where: { id: 'legacy-1' } }); + expect(legacy[0].note).toBe('whole-value'); + // 新写入 → 页面化 + await engine2.insert('users', [{ id: 'new-1', name: 'New', note: 'paged' }]); + await (engine2 as any).lsm.flush(); + await engine2.close(); + + // 阶段 3:混合库重开,新旧数据都在 + const engine3 = new AriaEngine({ storageBackend: 'opfs', checkpointInterval: 100000 }); + await engine3.open('page-db-4', 1); + expect(await engine3.count('users')).toBe(2); + const both = await engine3.find('users', { table: 'users' }); + const byId = Object.fromEntries(both.map((r) => [r.id, r])); + expect(byId['legacy-1'].note).toBe('whole-value'); + expect(byId['new-1'].note).toBe('paged'); + await engine3.close(); + }); + + it('页面化 + 加密 + 压缩组合:往返完整', async () => { + const files = installOPFSMock(new Map()); + const engine = new AriaEngine({ + storageBackend: 'opfs', + compression: true, + encryption: { password: 'page-pass' }, + memtableSizeThreshold: 64 * 1024 * 1024, + checkpointInterval: 100000, + }); + await engine.open('page-db-5', 1); + await engine.createTable(SCHEMA()); + const rows = [] as Record[]; + for (let i = 0; i < 20; i++) { + rows.push({ id: `e-${i}`, name: `E${i}`, note: '加密的页面化内容'.repeat(30) }); + } + await engine.insert('users', rows); + await (engine as any).lsm.flush(); + await engine.close(); + + const engine2 = new AriaEngine({ + storageBackend: 'opfs', + compression: true, + encryption: { password: 'page-pass' }, + checkpointInterval: 100000, + }); + await engine2.open('page-db-5', 1); + expect(await engine2.count('users')).toBe(20); + const one = await engine2.find('users', { table: 'users', where: { id: 'e-7' } }); + expect(one[0].note).toBe('加密的页面化内容'.repeat(30)); + await engine2.close(); + }); +}); diff --git a/tests/engine/aria-page.test.ts b/tests/engine/aria-page.test.ts deleted file mode 100644 index 8334296..0000000 --- a/tests/engine/aria-page.test.ts +++ /dev/null @@ -1,337 +0,0 @@ -/** - * AriaEngine Page 格式单元测试 - * 覆盖: PageHeader / Slot / Tuple 编解码 + PageFormat 整合 - */ -import { - PAGE_SIZE, PageType, PAGE_HEADER_SIZE, SLOT_ENTRY_SIZE, -} from '../../src/engine/aria/types'; -import { - encodePageHeader, decodePageHeader, initPageHeader, getPageType, - getSlotCount, getFreeStart, setFreeStart, setFreeEnd, -} from '../../src/engine/aria/page/header'; -import { - getSlotEntry, setSlotEntry, getSlotDirectorySize, - getFreeSpace, hasEnoughSpace, allocateSlot, readSlotData, freeSlot, -} from '../../src/engine/aria/page/slot'; -import { - encodeTuple, decodeTuple, getColumnEncodingMap, -} from '../../src/engine/aria/page/tuple'; -import { ColumnEncoding } from '../../src/engine/aria/types'; -import { - createPage, pageFromBuffer, pageInsertRow, pageReadRow, - pageDeleteRow, pageUpdateRow, computeChecksum, verifyChecksum, updateChecksum, -} from '../../src/engine/aria/page/format'; - -// =================================================================== -// PageHeader -// =================================================================== -describe('AriaEngine Page — Header', () => { - let buf: ArrayBuffer; - - beforeEach(() => { - buf = new ArrayBuffer(PAGE_SIZE); - }); - - it('initPageHeader 初始化头部字段', () => { - initPageHeader(buf, 42, PageType.DATA); - const h = decodePageHeader(buf); - expect(h.pageId).toBe(42); - expect(h.type).toBe(PageType.DATA); - expect(h.slotCount).toBe(0); - expect(h.freeStart).toBe(PAGE_HEADER_SIZE); - expect(h.freeEnd).toBe(PAGE_SIZE); - }); - - it('initPageHeader — INDEX 类型页面', () => { - initPageHeader(buf, 99, PageType.INDEX); - expect(getPageType(buf)).toBe(PageType.INDEX); - }); - - it('encodePageHeader + decodePageHeader 往返一致', () => { - const header = { pageId: 7, type: PageType.META, freeStart: 32, freeEnd: 4000, slotCount: 5, checksum: 0xdeadbeef }; - encodePageHeader(header, buf); - const decoded = decodePageHeader(buf); - expect(decoded.pageId).toBe(7); - expect(decoded.type).toBe(PageType.META); - expect(decoded.freeStart).toBe(32); - expect(decoded.freeEnd).toBe(4000); - expect(decoded.slotCount).toBe(5); - }); - - it('不同 pageId 正确编解码', () => { - for (const id of [0, 1, 255, 65535, 0xffffffff]) { - initPageHeader(buf, id, PageType.DATA); - expect(decodePageHeader(buf).pageId).toBe(id >>> 0); - } - }); - - it('setFreeStart / setFreeEnd 修改字段', () => { - initPageHeader(buf, 1, PageType.DATA); - setFreeStart(buf, 100); - setFreeEnd(buf, 3000); - expect(getFreeStart(buf)).toBe(100); - expect(decodePageHeader(buf).freeEnd).toBe(3000); - }); -}); - -// =================================================================== -// Slot Directory -// =================================================================== -describe('AriaEngine Page — Slot', () => { - let buf: ArrayBuffer; - - beforeEach(() => { - buf = new ArrayBuffer(PAGE_SIZE); - initPageHeader(buf, 1, PageType.DATA); - }); - - it('getSlotEntry — 空页面 slotCount 为 0', () => { - expect(getSlotCount(buf)).toBe(0); - }); - - it('setSlotEntry + getSlotEntry 往返', () => { - // 手动写一个 slot(不通过 allocateSlot) - new DataView(buf).setUint16(9, 1, false); // slotCount = 1 - setSlotEntry(buf, 0, { offset: 1000, length: 50 }); - const entry = getSlotEntry(buf, 0); - expect(entry.offset).toBe(1000); - expect(entry.length).toBe(50); - }); - - it('getSlotDirectorySize 计算正确', () => { - expect(getSlotDirectorySize(0)).toBe(0); - expect(getSlotDirectorySize(1)).toBe(SLOT_ENTRY_SIZE); - expect(getSlotDirectorySize(10)).toBe(10 * SLOT_ENTRY_SIZE); - }); - - it('getFreeSpace — 空页面有最大空闲空间', () => { - const free = getFreeSpace(buf); - expect(free).toBe(PAGE_SIZE - PAGE_HEADER_SIZE); - }); - - it('hasEnoughSpace — 小数据返回 true', () => { - expect(hasEnoughSpace(buf, 100)).toBe(true); - }); - - it('hasEnoughSpace — 超大数据返回 false', () => { - expect(hasEnoughSpace(buf, PAGE_SIZE * 2)).toBe(false); - }); - - it('allocateSlot 分配并写入数据', () => { - const data = new Uint8Array([1, 2, 3, 4, 5]); - const idx = allocateSlot(buf, data); - expect(idx).toBe(0); - expect(getSlotCount(buf)).toBe(1); - - const readBack = readSlotData(buf, 0); - expect(readBack).not.toBeNull(); - expect(Array.from(readBack!)).toEqual([1, 2, 3, 4, 5]); - }); - - it('allocateSlot 多次分配', () => { - for (let i = 0; i < 10; i++) { - const data = new Uint8Array([i, i + 1]); - const idx = allocateSlot(buf, data); - expect(idx).toBe(i); - } - expect(getSlotCount(buf)).toBe(10); - - // 验证每个 slot 数据正确 - for (let i = 0; i < 10; i++) { - const data = readSlotData(buf, i); - expect(Array.from(data!)).toEqual([i, i + 1]); - } - }); - - it('freeSlot 标记为删除', () => { - const data = new Uint8Array([10, 20, 30]); - allocateSlot(buf, data); - freeSlot(buf, 0); - const entry = getSlotEntry(buf, 0); - expect(entry.offset).toBe(0); - expect(entry.length).toBe(0); - }); - - it('readSlotData — 已删除 slot 返回 null', () => { - allocateSlot(buf, new Uint8Array([1])); - freeSlot(buf, 0); - expect(readSlotData(buf, 0)).toBeNull(); - }); - - it('allocateSlot — 空间不足返回 -1', () => { - // 填满页面 - const big = new Uint8Array(PAGE_SIZE - PAGE_HEADER_SIZE - SLOT_ENTRY_SIZE); - const idx1 = allocateSlot(buf, big); - expect(idx1).toBe(0); - const idx2 = allocateSlot(buf, new Uint8Array([1])); - expect(idx2).toBe(-1); - }); -}); - -// =================================================================== -// Tuple Codec -// =================================================================== -describe('AriaEngine Page — Tuple', () => { - const colOrder = ['id', 'name', 'age', 'active', 'data']; - const colTypes: Record = { - id: 'string', name: 'string', age: 'number', active: 'boolean', data: 'json', - }; - - it('encodeTuple + decodeTuple 完整往返', () => { - const row = { id: '1', name: 'Alice', age: 30, active: true, data: { x: 1 } }; - const encoded = encodeTuple(row, colOrder, colTypes); - expect(encoded.byteLength).toBeGreaterThan(0); - - const decoded = decodeTuple(encoded, colOrder, colTypes); - expect(decoded).not.toBeNull(); - expect(decoded!.id).toBe('1'); - expect(decoded!.name).toBe('Alice'); - expect(decoded!.age).toBe(30); - expect(decoded!.active).toBe(true); - expect(decoded!.data).toEqual({ x: 1 }); - }); - - it('encodeTuple — null 值正确处理', () => { - const row = { id: '2', name: null, age: 25, active: null, data: null }; - const encoded = encodeTuple(row, colOrder, colTypes); - const decoded = decodeTuple(encoded, colOrder, colTypes); - expect(decoded!.name).toBeNull(); - expect(decoded!.active).toBeNull(); - expect(decoded!.data).toBeNull(); - }); - - it('encodeTuple — undefined 值按 null 处理', () => { - const row = { id: '3', age: 30 } as any; - const encoded = encodeTuple(row, colOrder, colTypes); - const decoded = decodeTuple(encoded, colOrder, colTypes); - expect(decoded!.id).toBe('3'); - expect(decoded!.name).toBeNull(); - }); - - it('encodeTuple — date 类型', () => { - const order = ['ts']; - const types = { ts: 'date' }; - const row = { ts: '2024-01-15T00:00:00.000Z' }; - const encoded = encodeTuple(row, order, types); - const decoded = decodeTuple(encoded, order, types); - expect(decoded!.ts).toBe('2024-01-15T00:00:00.000Z'); - }); - - it('encodeTuple — boolean false', () => { - const order = ['flag']; - const types = { flag: 'boolean' }; - const encoded = encodeTuple({ flag: false }, order, types); - const decoded = decodeTuple(encoded, order, types); - expect(decoded!.flag).toBe(false); - }); - - it('encodeTuple — 负数', () => { - const order = ['val']; - const types = { val: 'number' }; - const encoded = encodeTuple({ val: -42.5 }, order, types); - const decoded = decodeTuple(encoded, order, types); - expect(decoded!.val).toBe(-42.5); - }); - - it('encodeTuple — 空字符串', () => { - const order = ['s']; - const types = { s: 'string' }; - const encoded = encodeTuple({ s: '' }, order, types); - const decoded = decodeTuple(encoded, order, types); - expect(decoded!.s).toBe(''); - }); - - it('encodeTuple — 长字符串', () => { - const order = ['s']; - const types = { s: 'string' }; - const long = 'x'.repeat(10000); - const encoded = encodeTuple({ s: long }, order, types); - const decoded = decodeTuple(encoded, order, types); - expect(decoded!.s).toBe(long); - }); - - it('getColumnEncodingMap 返回正确映射', () => { - const map = getColumnEncodingMap(colOrder, colTypes); - expect(map.get('id')).toBe(ColumnEncoding.STRING); - expect(map.get('age')).toBe(ColumnEncoding.NUMBER); - expect(map.get('active')).toBe(ColumnEncoding.BOOLEAN); - expect(map.get('data')).toBe(ColumnEncoding.JSON); - }); - - it('decodeTuple — 损坏数据返回 null', () => { - const broken = new Uint8Array([0xff, 0xff, 0xff]); - expect(decodeTuple(broken, colOrder, colTypes)).toBeNull(); - }); -}); - -// =================================================================== -// Page Format 整合 -// =================================================================== -describe('AriaEngine Page — Format', () => { - const colOrder = ['id', 'name']; - const colTypes: Record = { id: 'string', name: 'string' }; - - it('createPage 创建合法页面', () => { - const page = createPage(100, PageType.DATA); - expect(page.pageId).toBe(100); - expect(page.type).toBe(PageType.DATA); - expect(page.pins).toBe(0); - expect(page.dirty).toBe(true); - }); - - it('pageInsertRow + pageReadRow 往返', () => { - const page = createPage(1, PageType.DATA); - const row = { id: 'u1', name: 'Test' }; - const idx = pageInsertRow(page, row, colOrder, colTypes); - expect(idx).toBe(0); - - const read = pageReadRow(page, 0, colOrder, colTypes); - expect(read).not.toBeNull(); - expect(read!.id).toBe('u1'); - expect(read!.name).toBe('Test'); - }); - - it('pageInsertRow — 多次插入', () => { - const page = createPage(1, PageType.DATA); - for (let i = 0; i < 50; i++) { - const idx = pageInsertRow(page, { id: `${i}`, name: `User${i}` }, colOrder, colTypes); - expect(idx).toBe(i); - } - for (let i = 0; i < 50; i++) { - const row = pageReadRow(page, i, colOrder, colTypes); - expect(row!.id).toBe(`${i}`); - } - }); - - it('pageDeleteRow 标记删除', () => { - const page = createPage(1, PageType.DATA); - pageInsertRow(page, { id: '1', name: 'A' }, colOrder, colTypes); - pageInsertRow(page, { id: '2', name: 'B' }, colOrder, colTypes); - pageDeleteRow(page, 0); - expect(page.dirty).toBe(true); - // 已删除的行读取失败 - const row = pageReadRow(page, 0, colOrder, colTypes); - expect(row).toBeNull(); - // 未删除的行仍然可读 - const row2 = pageReadRow(page, 1, colOrder, colTypes); - expect(row2!.id).toBe('2'); - }); - - it('pageFromBuffer 从 ArrayBuffer 恢复', () => { - const page = createPage(5, PageType.INDEX); - const restored = pageFromBuffer(5, page.data); - expect(restored.pageId).toBe(5); - expect(restored.type).toBe(PageType.INDEX); - expect(restored.dirty).toBe(false); - }); - - it('computeChecksum + verifyChecksum', () => { - const page = createPage(1, PageType.DATA); - updateChecksum(page); - expect(verifyChecksum(page)).toBe(true); - - // 修改页面 → 校验和失效 - new Uint8Array(page.data)[100] = 0xff; - expect(verifyChecksum(page)).toBe(false); - }); -}); diff --git a/tests/engine/aria-repair-hardening.test.ts b/tests/engine/aria-repair-hardening.test.ts new file mode 100644 index 0000000..10bfddc --- /dev/null +++ b/tests/engine/aria-repair-hardening.test.ts @@ -0,0 +1,249 @@ +/** + * AriaEngine — repair 自愈增强 + 随机操作压力测试 + * + * 覆盖: + * 1. repair 清理孤儿页面(meta 未引用的 pg_ 文件) + * 2. repair 清理 OPFS 残留临时文件 + * 3. WAL 空洞 + repair → 截断清空(不再重放错位数据) + * 4. 随机操作压力:insert/update/delete + 模拟崩溃(不 checkpoint 断开)→ 重开全量验证 + * 5. 随机操作 + 页面化 + 模拟崩溃 → 重开验证 + * 6. repair 幂等 + */ +import { AriaEngine } from '../../src/engine/aria/index'; +import { createSchema } from '../../src/table/schema'; +import { installOPFSMock } from '../helpers/opfs-mock'; +import 'fake-indexeddb/auto'; + +let idbCounter = 0; +function uniqueDB(): string { + return `rph-${Date.now()}-${++idbCounter}-${Math.random().toString(36).slice(2, 8)}`; +} + +const SCHEMA = () => createSchema('items', { + id: { type: 'string', primaryKey: true }, + val: { type: 'number' }, + tag: { type: 'string', index: true }, +}); + +// =================================================================== +// repair 增强 +// =================================================================== +describe('AriaEngine — repair 自愈增强', () => { + it('清理孤儿页面(meta 未引用的 pg_ 文件)', async () => { + const dbName = uniqueDB(); + const engine = new AriaEngine({ + storageBackend: 'indexeddb', + pageStorage: true, // 强制页面化(IDB 上也启用,便于断言页面文件) + memtableSizeThreshold: 64 * 1024 * 1024, + checkpointInterval: 100000, + }); + await engine.open(dbName, 1); + await engine.createTable(SCHEMA()); + await engine.insert('items', [{ id: 'a', val: 1, tag: 'x' }]); + await (engine as any).lsm.flush(); + + const backend = (engine as any).backend; + const keys = await backend.listKeys(); + const pgKeys = keys.filter((k: string) => k.startsWith('pg_')); + expect(pgKeys.length).toBeGreaterThan(0); + + // 伪造孤儿页面(模拟崩溃中断的删除流程) + await backend.write('pg_999999', new Uint8Array(4096).buffer); + await backend.write('pg_999998', new Uint8Array(4096).buffer); + expect((await backend.listKeys()).filter((k: string) => k.startsWith('pg_99999'))).toHaveLength(2); + + await (engine as any).repair(); + + // 孤儿页面被清理,正常页面保留 + const after = await backend.listKeys(); + expect(after).not.toContain('pg_999999'); + expect(after).not.toContain('pg_999998'); + expect(await engine.count('items')).toBe(1); + await engine.close(); + }); + + it('清理 OPFS 残留临时文件(.crswap/.tmp)', async () => { + // 用 OPFS mock 后端验证 cleanupStaleFiles 被调用 + const { files, dir } = installOPFSMock(new Map()); + const engine = new AriaEngine({ storageBackend: 'opfs', checkpointInterval: 100000 }); + await engine.open('repair-opfs-1', 1); + await engine.createTable(SCHEMA()); + await engine.insert('items', [{ id: 'a', val: 1, tag: 'x' }]); + + // 制造残留 + await dir.getFileHandle('junk.crswap', { create: true }); + await dir.getFileHandle('junk2.tmp', { create: true }); + expect(Array.from(files.keys()).some((k) => k.endsWith('.crswap'))).toBe(true); + + await (engine as any).repair(); + + const after = Array.from(files.keys()); + expect(after.some((k) => k.endsWith('.crswap'))).toBe(false); + expect(after.some((k) => k.endsWith('.tmp'))).toBe(false); + expect(await engine.count('items')).toBe(1); + await engine.close(); + }); + + it('WAL 空洞 + repair → 截断清空(不再重放错位数据)', async () => { + const dbName = uniqueDB(); + const engine = new AriaEngine({ storageBackend: 'indexeddb', checkpointInterval: 100000 }); + await engine.open(dbName, 1); + await engine.createTable(SCHEMA()); + // 数据落盘 + checkpoint 清 WAL + await engine.insert('items', [{ id: 'a', val: 1, tag: 'x' }]); + await (engine as any).lsm.flush(); + await (engine as any).wal.checkpoint(); + // 新数据只进 WAL + await engine.insert('items', [{ id: 'b', val: 2, tag: 'y' }]); + const backend = (engine as any).backend; + const keys = await backend.listKeys(); + const walSeg = keys.find((k: string) => k.startsWith('__wal_')); + // 制造空洞:删掉当前分片(数据仍在内存) + await backend.delete(walSeg); + + await (engine as any).repair(); + + // repair 后 WAL 已清空,无空洞残留 + const after = await backend.listKeys(); + expect(after.some((k: string) => k.startsWith('__wal_'))).toBe(false); + // 在线自愈:memtable 中的 'b'(已确认写入)随 flush 落盘 → 数据完整不丢 + const rows = await engine.find('items', { table: 'items' }); + expect(rows).toHaveLength(2); + expect(rows.some((r) => r.id === 'a')).toBe(true); + expect(rows.some((r) => r.id === 'b')).toBe(true); + await engine.close(); + }); + + it('repair 幂等(连续调用无副作用)', async () => { + const dbName = uniqueDB(); + const engine = new AriaEngine({ storageBackend: 'indexeddb', checkpointInterval: 100000 }); + await engine.open(dbName, 1); + await engine.createTable(SCHEMA()); + await engine.insert('items', [{ id: 'a', val: 1, tag: 'x' }]); + await (engine as any).repair(); + await (engine as any).repair(); + await (engine as any).repair(); + expect(await engine.count('items')).toBe(1); + await engine.close(); + }); +}); + +// =================================================================== +// 随机操作压力 + 模拟崩溃 +// =================================================================== +describe('AriaEngine — 随机操作压力 + 模拟崩溃', () => { + it('500 随机操作(insert/update/delete)→ 模拟崩溃 → 重开验证全部已确认写入', async () => { + const dbName = uniqueDB(); + const engine = new AriaEngine({ + storageBackend: 'indexeddb', + memtableSizeThreshold: 8 * 1024, + checkpointInterval: 50, + walSyncMode: 'full', + }); + await engine.open(dbName, 1); + await engine.createTable(SCHEMA()); + + let seed = 12345; + const rand = () => { seed = (seed * 1103515245 + 12345) & 0x7fffffff; return seed / 0x7fffffff; }; + + // 已确认写入集合(模拟应用层已收到成功返回) + const confirmed = new Map(); + for (let i = 0; i < 500; i++) { + const r = rand(); + const id = `k-${Math.floor(rand() * 100)}`; + if (r < 0.6) { + // insert/upsert(随机 id 可能碰撞 → 已存在则跳过,confirmed 保持首个值) + const row = { id, val: Math.floor(rand() * 1000), tag: `t${Math.floor(rand() * 5)}` }; + try { + await engine.insert('items', [row]); + confirmed.set(id, row); + } catch (e) { + if ((e as { code?: string }).code !== 'DUPLICATE_KEY') throw e; + } + } else if (r < 0.8) { + // update + const upd = { val: Math.floor(rand() * 1000) }; + await engine.update('items', { table: 'items', where: { id } }, upd); + const cur = confirmed.get(id); + if (cur) confirmed.set(id, { ...cur, ...upd }); + } else { + // delete + await engine.delete('items', { table: 'items', where: { id } }); + confirmed.delete(id); + } + } + + // 模拟崩溃:不 close(不 checkpoint),直接断开 backend + await (engine as any).backend.close(); + (engine as any).opened = false; + + // 重开:WAL 重放 + SSTable 加载 + const engine2 = new AriaEngine({ storageBackend: 'indexeddb', checkpointInterval: 50, walSyncMode: 'full' }); + await engine2.open(dbName, 1); + const rows = await engine2.find('items', { table: 'items' }); + const byId = new Map(rows.map((r) => [r.id, r])); + // 全部已确认写入可见 + expect(byId.size).toBe(confirmed.size); + for (const [id, expected] of confirmed) { + expect(byId.has(id)).toBe(true); + expect(byId.get(id)!.val).toBe(expected.val); + } + await engine2.close(); + }); + + it('随机操作 + 页面化 + 模拟崩溃 → 重开验证', async () => { + const files = installOPFSMock(new Map()); + const dbName = `rand-opfs-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`; + const engine = new AriaEngine({ + storageBackend: 'opfs', + memtableSizeThreshold: 8 * 1024, + checkpointInterval: 50, + walSyncMode: 'full', + }); + await engine.open(dbName, 1); + await engine.createTable(SCHEMA()); + + let seed = 999; + const rand = () => { seed = (seed * 1103515245 + 12345) & 0x7fffffff; return seed / 0x7fffffff; }; + const confirmed = new Map(); + for (let i = 0; i < 300; i++) { + const r = rand(); + const id = `p-${Math.floor(rand() * 80)}`; + if (r < 0.6) { + const row = { id, val: Math.floor(rand() * 500), tag: `tag${Math.floor(rand() * 4)}` }; + try { + await engine.insert('items', [row]); + confirmed.set(id, row); + } catch (e) { + if ((e as { code?: string }).code !== 'DUPLICATE_KEY') throw e; + } + } else if (r < 0.8) { + const upd = { val: Math.floor(rand() * 500) }; + await engine.update('items', { table: 'items', where: { id } }, upd); + const cur = confirmed.get(id); + if (cur) confirmed.set(id, { ...cur, ...upd }); + } else { + await engine.delete('items', { table: 'items', where: { id } }); + confirmed.delete(id); + } + } + + // 模拟崩溃 + await (engine as any).backend.close(); + (engine as any).opened = false; + + const engine2 = new AriaEngine({ storageBackend: 'opfs', checkpointInterval: 50, walSyncMode: 'full' }); + await engine2.open(dbName, 1); + const rows = await engine2.find('items', { table: 'items' }); + const byId = new Map(rows.map((r) => [r.id, r])); + expect(byId.size).toBe(confirmed.size); + for (const [id, expected] of confirmed) { + expect(byId.get(id)!.val).toBe(expected.val); + } + // 索引查询也验证 + const tagged = await engine2.find('items', { table: 'items', where: { tag: 'tag0' } }); + const expectedTagged = Array.from(confirmed.values()).filter((v) => v.tag === 'tag0').length; + expect(tagged.length).toBe(expectedTagged); + await engine2.close(); + }); +}); diff --git a/tests/engine/aria-sstable.test.ts b/tests/engine/aria-sstable.test.ts index 540d911..bd1564b 100644 --- a/tests/engine/aria-sstable.test.ts +++ b/tests/engine/aria-sstable.test.ts @@ -1,129 +1,264 @@ -/** - * AriaEngine SSTable Builder + Reader 单元测试 - */ -import { SSTableBuilder } from '../../src/engine/aria/index/sstable_builder'; -import { SSTableReader } from '../../src/engine/aria/index/sstable'; -import type { SSTableMeta } from '../../src/engine/aria/types'; - -// =================================================================== -// SSTable Builder + Reader -// =================================================================== -describe('AriaEngine — SSTable Builder + Reader', () => { - const makeMeta = (data: Uint8Array): SSTableMeta => ({ - id: 1, level: 0, minKey: '', maxKey: '\uffff', - blockCount: 1, totalSize: data.byteLength, bloomData: null, - }); - - it('构建单条目 SSTable 并精确读取', () => { - const builder = new SSTableBuilder(4096); - builder.add('key1', { name: 'Alice', age: 30 }); - const { sstableData } = builder.build(); - - const reader = new SSTableReader(sstableData, makeMeta(sstableData)); - const result = reader.get('key1'); - expect(result).not.toBeNull(); - expect(result!.name).toBe('Alice'); - expect(result!.age).toBe(30); - }); - - it('构建多条 SSTable 并全部读取', () => { - const builder = new SSTableBuilder(4096); - const items: [string, Record][] = []; - for (let i = 0; i < 100; i++) { - const key = `user-${String(i).padStart(3, '0')}`; - const value = { idx: i, name: `User${i}` }; - items.push([key, value]); - builder.add(key, value); - } - const { sstableData } = builder.build(); - - const reader = new SSTableReader(sstableData, makeMeta(sstableData)); - for (const [key, value] of items) { - const result = reader.get(key); - expect(result).not.toBeNull(); - expect(result!.idx).toBe(value.idx); - } - }); - - it('get — 不存在的 key 返回 null', () => { - const builder = new SSTableBuilder(4096); - builder.add('a', { v: 1 }); - const { sstableData } = builder.build(); - - const reader = new SSTableReader(sstableData, makeMeta(sstableData)); - expect(reader.get('nonexistent')).toBeNull(); - }); - - it('rangeScan — 范围查询', () => { - const builder = new SSTableBuilder(4096); - for (let i = 0; i < 20; i++) { - builder.add(`k-${String(i).padStart(2, '0')}`, { v: i }); - } - const { sstableData } = builder.build(); - - const reader = new SSTableReader(sstableData, makeMeta(sstableData)); - const results: [string, Record][] = []; - reader.rangeScan('k-05', 'k-10', (k, v) => results.push([k, v])); - expect(results).toHaveLength(6); - expect(results[0][0]).toBe('k-05'); - expect(results[results.length - 1][0]).toBe('k-10'); - }); - - it('scanAll — 遍历所有条目', () => { - const builder = new SSTableBuilder(4096); - const count = 50; - for (let i = 0; i < count; i++) { - builder.add(`item-${i}`, { idx: i }); - } - const { sstableData } = builder.build(); - - const reader = new SSTableReader(sstableData, makeMeta(sstableData)); - const items: [string, Record][] = []; - reader.scanAll((k, v) => items.push([k, v])); - expect(items).toHaveLength(count); - }); - - it('getIndexBlockCount 返回索引块数', () => { - const builder = new SSTableBuilder(256); // 小 block size 触发多个 block - for (let i = 0; i < 100; i++) { - builder.add(`k-${i}`, { data: 'x'.repeat(50) }); - } - const { sstableData } = builder.build(); - - const reader = new SSTableReader(sstableData, makeMeta(sstableData)); - expect(reader.getIndexBlockCount()).toBeGreaterThanOrEqual(1); - }); - - it('边界 — 空 SSTable 不抛异常', () => { - const builder = new SSTableBuilder(4096); - const { sstableData } = builder.build(); - - const reader = new SSTableReader(sstableData, makeMeta(sstableData)); - expect(reader.get('any')).toBeNull(); - const results: [string, Record][] = []; - reader.scanAll((k, v) => results.push([k, v])); - expect(results).toHaveLength(0); - }); - - it('带特殊字符的 key', () => { - const builder = new SSTableBuilder(4096); - // 必须按键排序添加(按 ASCII 排序:空格 < 短横 < 点号) - builder.add('key with space', { v: 3 }); - builder.add('key-with-dash', { v: 1 }); - builder.add('key.with.dot', { v: 2 }); - const { sstableData } = builder.build(); - - const reader = new SSTableReader(sstableData, makeMeta(sstableData)); - expect(reader.get('key-with-dash')!.v).toBe(1); - expect(reader.get('key.with.dot')!.v).toBe(2); - expect(reader.get('key with space')!.v).toBe(3); - }); - - it('getEntryCount 返回正确条目数', () => { - const builder = new SSTableBuilder(4096); - builder.add('a', { v: 1 }); - builder.add('b', { v: 2 }); - builder.add('c', { v: 3 }); - expect(builder.getEntryCount()).toBe(3); - }); -}); +/** + * AriaEngine SSTable Builder + Reader 单元测试 + */ +import { SSTableBuilder } from '../../src/engine/aria/index/sstable_builder'; +import { SSTableReader } from '../../src/engine/aria/index/sstable'; +import type { SSTableMeta } from '../../src/engine/aria/types'; + +// =================================================================== +// SSTable Builder + Reader +// =================================================================== +describe('AriaEngine — SSTable Builder + Reader', () => { + const makeMeta = (data: Uint8Array): SSTableMeta => ({ + id: 1, level: 0, minKey: '', maxKey: '\uffff', + blockCount: 1, totalSize: data.byteLength, bloomData: null, + }); + + it('构建单条目 SSTable 并精确读取', () => { + const builder = new SSTableBuilder(4096); + builder.add('key1', { name: 'Alice', age: 30 }); + const { sstableData } = builder.build(); + + const reader = new SSTableReader(sstableData, makeMeta(sstableData)); + const result = reader.get('key1'); + expect(result).not.toBeNull(); + expect(result!.name).toBe('Alice'); + expect(result!.age).toBe(30); + }); + + it('构建多条 SSTable 并全部读取', () => { + const builder = new SSTableBuilder(4096); + const items: [string, Record][] = []; + for (let i = 0; i < 100; i++) { + const key = `user-${String(i).padStart(3, '0')}`; + const value = { idx: i, name: `User${i}` }; + items.push([key, value]); + builder.add(key, value); + } + const { sstableData } = builder.build(); + + const reader = new SSTableReader(sstableData, makeMeta(sstableData)); + for (const [key, value] of items) { + const result = reader.get(key); + expect(result).not.toBeNull(); + expect(result!.idx).toBe(value.idx); + } + }); + + it('get — 不存在的 key 返回 null', () => { + const builder = new SSTableBuilder(4096); + builder.add('a', { v: 1 }); + const { sstableData } = builder.build(); + + const reader = new SSTableReader(sstableData, makeMeta(sstableData)); + expect(reader.get('nonexistent')).toBeNull(); + }); + + it('rangeScan — 范围查询', () => { + const builder = new SSTableBuilder(4096); + for (let i = 0; i < 20; i++) { + builder.add(`k-${String(i).padStart(2, '0')}`, { v: i }); + } + const { sstableData } = builder.build(); + + const reader = new SSTableReader(sstableData, makeMeta(sstableData)); + const results: [string, Record][] = []; + reader.rangeScan('k-05', 'k-10', (k, v) => results.push([k, v])); + expect(results).toHaveLength(6); + expect(results[0][0]).toBe('k-05'); + expect(results[results.length - 1][0]).toBe('k-10'); + }); + + it('scanAll — 遍历所有条目', () => { + const builder = new SSTableBuilder(4096); + const count = 50; + for (let i = 0; i < count; i++) { + builder.add(`item-${i}`, { idx: i }); + } + const { sstableData } = builder.build(); + + const reader = new SSTableReader(sstableData, makeMeta(sstableData)); + const items: [string, Record][] = []; + reader.scanAll((k, v) => items.push([k, v])); + expect(items).toHaveLength(count); + }); + + + it('边界 — 空 SSTable 不抛异常', () => { + const builder = new SSTableBuilder(4096); + const { sstableData } = builder.build(); + + const reader = new SSTableReader(sstableData, makeMeta(sstableData)); + expect(reader.get('any')).toBeNull(); + const results: [string, Record][] = []; + reader.scanAll((k, v) => results.push([k, v])); + expect(results).toHaveLength(0); + }); + + it('带特殊字符的 key', () => { + const builder = new SSTableBuilder(4096); + // 必须按键排序添加(按 ASCII 排序:空格 < 短横 < 点号) + builder.add('key with space', { v: 3 }); + builder.add('key-with-dash', { v: 1 }); + builder.add('key.with.dot', { v: 2 }); + const { sstableData } = builder.build(); + + const reader = new SSTableReader(sstableData, makeMeta(sstableData)); + expect(reader.get('key-with-dash')!.v).toBe(1); + expect(reader.get('key.with.dot')!.v).toBe(2); + expect(reader.get('key with space')!.v).toBe(3); + }); + + it('getEntryCount 返回正确条目数', () => { + const builder = new SSTableBuilder(4096); + builder.add('a', { v: 1 }); + builder.add('b', { v: 2 }); + builder.add('c', { v: 3 }); + expect(builder.getEntryCount()).toBe(3); + }); +}); + +// =================================================================== +// v0.4.5: 整文件 CRC-32 校验 +// =================================================================== +describe('AriaEngine — SSTable CRC-32 校验', () => { + const makeMeta = (data: Uint8Array): SSTableMeta => ({ + id: 1, level: 0, minKey: '', maxKey: '\uffff', + blockCount: 1, totalSize: data.byteLength, bloomData: null, + }); + + it('新构建的 SSTable 写入真实非零 checksum', () => { + const builder = new SSTableBuilder(4096); + builder.add('key1', { name: 'Alice' }); + const { sstableData } = builder.build(); + + const reader = new SSTableReader(sstableData, makeMeta(sstableData)); + // footer 最后 4 字节为真实 checksum(非 0) + const stored = new DataView(sstableData.buffer, sstableData.byteOffset + sstableData.byteLength - 4, 4).getUint32(0, false); + expect(stored).not.toBe(0); + expect(reader.verifyChecksum()).toBe(true); + }); + + it('正常文件校验通过后可正常读取', () => { + const builder = new SSTableBuilder(4096); + for (let i = 0; i < 50; i++) builder.add(`k-${i}`, { v: i }); + const { sstableData } = builder.build(); + + const reader = new SSTableReader(sstableData, makeMeta(sstableData)); + expect(reader.verifyChecksum()).toBe(true); + expect(reader.get('k-30')).toEqual({ v: 30 }); + }); + + it('数据块字节篡改 → 校验失败', () => { + const builder = new SSTableBuilder(4096); + for (let i = 0; i < 50; i++) builder.add(`k-${i}`, { v: i, pad: 'x'.repeat(64) }); + const { sstableData } = builder.build(); + + // 篡改数据区中部一个字节(非 footer) + const corrupted = new Uint8Array(sstableData); + corrupted[Math.floor(corrupted.length / 2)] ^= 0xff; + + const reader = new SSTableReader(corrupted, makeMeta(corrupted)); + // 结构仍可解析(长度一致),但 CRC 必须失败 + const stored = new DataView(corrupted.buffer, corrupted.byteOffset + corrupted.byteLength - 4, 4).getUint32(0, false); + expect(stored).not.toBe(0); + expect(reader.verifyChecksum()).toBe(false); + }); + + it('索引块字节篡改 → 校验失败', () => { + const builder = new SSTableBuilder(4096); + for (let i = 0; i < 20; i++) builder.add(`k-${i}`, { v: i }); + const { sstableData } = builder.build(); + + // 从 footer 反推索引块位置并篡改 + const footerOffset = sstableData.byteLength - 32; + const view = new DataView(sstableData.buffer, sstableData.byteOffset, sstableData.byteLength); + const indexOffset = view.getUint32(footerOffset, false); + const corrupted = new Uint8Array(sstableData); + corrupted[indexOffset + 8] ^= 0x01; + + const reader = new SSTableReader(corrupted, makeMeta(corrupted)); + expect(reader.verifyChecksum()).toBe(false); + }); + + it('旧版文件(checksum=0)跳过校验,保持兼容', () => { + const builder = new SSTableBuilder(4096); + builder.add('legacy', { v: 1 }); + const { sstableData } = builder.build(); + + // 手工把 checksum 字段清零,模拟旧版写入产物 + const legacy = new Uint8Array(sstableData); + new DataView(legacy.buffer).setUint32(legacy.byteLength - 4, 0, false); + + const reader = new SSTableReader(legacy, makeMeta(legacy)); + const stored = new DataView(legacy.buffer, legacy.byteOffset + legacy.byteLength - 4, 4).getUint32(0, false); + expect(stored).toBe(0); + expect(reader.verifyChecksum()).toBe(true); // 跳过校验 + expect(reader.get('legacy')).toEqual({ v: 1 }); // 数据仍可读 + }); + + it('v1 旧格式文件(magic SSTB,checksum=0)校验通过且可读', () => { + // 手工构造 v1 格式最小文件:单条记录 + 索引 + footer(magic SSTB, checksum 0) + const encoder = new TextEncoder(); + const keyBytes = encoder.encode('old-key'); + const valBytes = encoder.encode(JSON.stringify({ v: 42 })); + + // data block: entryCount(u32)=1 + keyLen(u16)+key + valLen(u16)+val + const block = new ArrayBuffer(4 + 2 + keyBytes.length + 2 + valBytes.length); + const bv = new DataView(block); + let off = 0; + bv.setUint32(off, 1, false); off += 4; + bv.setUint16(off, keyBytes.length, false); off += 2; + new Uint8Array(block).set(keyBytes, off); off += keyBytes.length; + bv.setUint16(off, valBytes.length, false); off += 2; + new Uint8Array(block).set(valBytes, off); off += valBytes.length; + + // index block: entryCount(u32)=1 + keyLen(u16)+key + blockOffset(u32) + blockSize(u32) + const blockSize = block.byteLength; + const idxKey = encoder.encode('old-key'); + const idxBlock = new ArrayBuffer(4 + 2 + idxKey.length + 4 + 4); + const iv = new DataView(idxBlock); + let ioff = 0; + iv.setUint32(ioff, 1, false); ioff += 4; + iv.setUint16(ioff, idxKey.length, false); ioff += 2; + new Uint8Array(idxBlock).set(idxKey, ioff); ioff += idxKey.length; + iv.setUint32(ioff, 0, false); ioff += 4; // blockOffset = 0 + iv.setUint32(ioff, blockSize, false); ioff += 4; + + const footerSize = 32; + const total = block.byteLength + idxBlock.byteLength + footerSize; + const file = new ArrayBuffer(total); + const fv = new DataView(file); + new Uint8Array(file).set(new Uint8Array(block), 0); + new Uint8Array(file).set(new Uint8Array(idxBlock), block.byteLength); + const fo = block.byteLength + idxBlock.byteLength; + fv.setUint32(fo, block.byteLength, false); // index_offset + fv.setUint32(fo + 4, idxBlock.byteLength, false); + fv.setUint32(fo + 8, 0, false); // bloom_offset + fv.setUint32(fo + 12, 0, false); // bloom_size + fv.setUint32(fo + 16, 0, false); // bloom_hash_count + fv.setUint32(fo + 20, 1, false); // entry_count + fv.setUint32(fo + 24, 0x53535442, false); // magic "SSTB" (v1) + fv.setUint32(fo + 28, 0, false); // checksum = 0(旧版无校验) + + const data = new Uint8Array(file); + const reader = new SSTableReader(data, makeMeta(data)); + const stored = new DataView(data.buffer, data.byteOffset + data.byteLength - 4, 4).getUint32(0, false); + expect(stored).toBe(0); + expect(reader.verifyChecksum()).toBe(true); + expect(reader.get('old-key')).toEqual({ v: 42 }); + }); + + it('footer checksum 字段自身篡改 → 校验失败', () => { + const builder = new SSTableBuilder(4096); + builder.add('a', { v: 1 }); + const { sstableData } = builder.build(); + + const tampered = new Uint8Array(sstableData); + const view = new DataView(tampered.buffer); + view.setUint32(tampered.byteLength - 4, view.getUint32(tampered.byteLength - 4, false) ^ 0x000000ff, false); + + const reader = new SSTableReader(tampered, makeMeta(tampered)); + expect(reader.verifyChecksum()).toBe(false); + }); +}); diff --git a/tests/engine/aria-wal-crc.test.ts b/tests/engine/aria-wal-crc.test.ts new file mode 100644 index 0000000..8171e53 --- /dev/null +++ b/tests/engine/aria-wal-crc.test.ts @@ -0,0 +1,218 @@ +/** + * AriaEngine WAL — CRC-32 校验升级测试 + * + * 覆盖: + * 1. 新算法记录往返(append → recover) + * 2. 篡改记录字节 → CRC 不匹配跳过 + * 3. 旧版弱校验记录兼容(双算法探测) + * 4. appendBatch 组提交记录往返 + * 5. 损坏记录跳过不影响后续完整记录 + */ +import { WAL } from '../../src/engine/aria/wal/log'; +import { WALRecordType } from '../../src/engine/aria/types'; + +// =================================================================== +// WAL 内存 Store(模拟 IStorageBackend 单记录语义) +// =================================================================== +class MemoryWALStore { + chunks: Uint8Array[] = []; + truncated = false; + + async append(data: Uint8Array): Promise { + this.chunks.push(data); + } + + async readAll(): Promise { + const total = this.chunks.reduce((s, c) => s + c.byteLength, 0); + const combined = new Uint8Array(total); + let off = 0; + for (const c of this.chunks) { combined.set(c, off); off += c.byteLength; } + return combined; + } + + async truncate(): Promise { + this.chunks = []; + this.truncated = true; + } + + async exists(): Promise { + return this.chunks.length > 0; + } +} + +function makeRecord(over: Partial = {}) { + return { + type: WALRecordType.INSERT, + txnId: 0, + tableName: 'users', + key: 'u-1', + data: { id: 'u-1', name: 'Alice' }, + ...over, + }; +} + +describe('AriaEngine — WAL CRC-32 校验', () => { + it('新算法记录 append → recover 往返完整', async () => { + const store = new MemoryWALStore(); + const wal = new WAL(store as never, true, 'full'); + + await wal.append(makeRecord({ key: 'u-1' })); + await wal.append(makeRecord({ key: 'u-2', data: { id: 'u-2', name: 'Bob' } })); + + const records: import('../../src/engine/aria/types').WALRecord[] = []; + await wal.recover((r) => records.push(r)); + expect(records).toHaveLength(2); + expect(records[0].key).toBe('u-1'); + expect(records[1].data).toEqual({ id: 'u-2', name: 'Bob' }); + }); + + it('appendBatch 组提交记录往返完整', async () => { + const store = new MemoryWALStore(); + const wal = new WAL(store as never, true, 'full'); + + await wal.appendBatch([ + makeRecord({ key: 'a' }), + makeRecord({ key: 'b' }), + makeRecord({ key: 'c' }), + ]); + + const records: import('../../src/engine/aria/types').WALRecord[] = []; + await wal.recover((r) => records.push(r)); + expect(records.map((r) => r.key)).toEqual(['a', 'b', 'c']); + expect(records.map((r) => r.lsn)).toEqual([1, 2, 3]); + }); + + it('篡改记录数据 → CRC 不匹配跳过', async () => { + const store = new MemoryWALStore(); + const wal = new WAL(store as never, true, 'full'); + + await wal.append(makeRecord({ key: 'good-1' })); + await wal.append(makeRecord({ key: 'evil' })); + await wal.append(makeRecord({ key: 'good-2' })); + + // 篡改第二条记录的 data 字节(LSN=2 的记录) + const raw = await store.readAll(); + const view = new DataView(raw.buffer, raw.byteOffset, raw.byteLength); + // 定位第二条记录起始:按记录格式顺序扫描直到 LSN=2 + // [lsn:4][type:1][txnId:4][tblLen:2][table][keyLen:2][key][jsonLen:4][json][crc:4] + let offset = 0; + while (offset + 4 <= raw.byteLength && view.getUint32(offset, false) !== 2) { + const tblLen = view.getUint16(offset + 9, false); + const keyLenOff = offset + 11 + tblLen; + const keyLen = view.getUint16(keyLenOff, false); + const jsonLenOff = keyLenOff + 2 + keyLen; + const jsonLen = view.getUint32(jsonLenOff, false); + offset += 4 + 1 + 4 + 2 + tblLen + 2 + keyLen + 4 + jsonLen + 4; + } + expect(view.getUint32(offset, false)).toBe(2); + // 篡改 data 区(json 起始处第 4 字节) + const tblLen2 = view.getUint16(offset + 9, false); + const jsonStart = offset + 4 + 1 + 4 + 2 + tblLen2 + 2 + view.getUint16(offset + 11 + tblLen2, false) + 4; + raw[jsonStart + 4] ^= 0x01; + // 写回 store(readAll 返回的是合并副本) + store.chunks = [raw]; + + // 恢复:坏记录被跳过,前后好记录保留 + const records: import('../../src/engine/aria/types').WALRecord[] = []; + await wal.recover((r) => records.push(r)); + expect(records.map((r) => r.key)).toEqual(['good-1', 'good-2']); + }); + + it('旧版弱校验记录兼容(双算法探测)', async () => { + const store = new MemoryWALStore(); + const wal = new WAL(store as never, true, 'full'); + + // 手工构造一条"旧算法"记录:与 encodeRecord 布局一致但 CRC 用旧算法计算 + const record = { + lsn: 1, + type: WALRecordType.INSERT as number, + txnId: 0, + tableName: 'legacy', + key: 'old', + data: { id: 'old', v: 1 }, + }; + const encoder = new TextEncoder(); + const tblB = encoder.encode(record.tableName); + const keyB = encoder.encode(record.key); + const jsonB = encoder.encode(JSON.stringify(record.data)); + const size = 4 + 1 + 4 + 2 + tblB.length + 2 + keyB.length + 4 + jsonB.length + 4; + const buf = new ArrayBuffer(size); + const v = new DataView(buf); + let o = 0; + v.setUint32(o, record.lsn, false); o += 4; + v.setUint8(o, record.type); o += 1; + v.setUint32(o, record.txnId, false); o += 4; + v.setUint16(o, tblB.length, false); o += 2; + new Uint8Array(buf).set(tblB, o); o += tblB.length; + v.setUint16(o, keyB.length, false); o += 2; + new Uint8Array(buf).set(keyB, o); o += keyB.length; + v.setUint32(o, jsonB.length, false); o += 4; + new Uint8Array(buf).set(jsonB, o); o += jsonB.length; + // 旧算法 CRC + let crc = 0; + const u8 = new Uint8Array(buf, 0, o); + for (let i = 0; i < u8.length; i++) crc = ((crc << 5) - crc + u8[i]) | 0; + v.setUint32(o, crc >>> 0, false); + + store.chunks.push(new Uint8Array(buf)); + + const records: import('../../src/engine/aria/types').WALRecord[] = []; + await wal.recover((r) => records.push(r)); + expect(records).toHaveLength(1); + expect(records[0].tableName).toBe('legacy'); + expect(records[0].data).toEqual({ id: 'old', v: 1 }); + }); + + it('旧算法记录 + 新算法记录混合 → 全部正确恢复', async () => { + const store = new MemoryWALStore(); + const wal = new WAL(store as never, true, 'full'); + + // 先放一条旧算法记录 + const record = { + lsn: 1, + type: WALRecordType.DELETE as number, + txnId: 0, + tableName: 't', + key: 'old-key', + data: undefined as Record | undefined, + }; + const encoder = new TextEncoder(); + const tblB = encoder.encode(record.tableName); + const keyB = encoder.encode(record.key); + const size = 4 + 1 + 4 + 2 + tblB.length + 2 + keyB.length + 4 + 4; + const buf = new ArrayBuffer(size); + const v = new DataView(buf); + let o = 0; + v.setUint32(o, record.lsn, false); o += 4; + v.setUint8(o, record.type); o += 1; + v.setUint32(o, record.txnId, false); o += 4; + v.setUint16(o, tblB.length, false); o += 2; + new Uint8Array(buf).set(tblB, o); o += tblB.length; + v.setUint16(o, keyB.length, false); o += 2; + new Uint8Array(buf).set(keyB, o); o += keyB.length; + v.setUint32(o, 0, false); o += 4; // jsonLen=0 + let crc = 0; + const u8 = new Uint8Array(buf, 0, o); + for (let i = 0; i < u8.length; i++) crc = ((crc << 5) - crc + u8[i]) | 0; + v.setUint32(o, crc >>> 0, false); + store.chunks.push(new Uint8Array(buf)); + + // 再追加一条新算法记录(LSN=2) + await wal.append(makeRecord({ key: 'new-key', lsn: 2 } as never)); + + const records: import('../../src/engine/aria/types').WALRecord[] = []; + await wal.recover((r) => records.push(r)); + expect(records.map((r) => r.key)).toEqual(['old-key', 'new-key']); + expect(records[0].type).toBe(WALRecordType.DELETE); + }); + + it('checkpoint 截断后 exists 返回 false', async () => { + const store = new MemoryWALStore(); + const wal = new WAL(store as never, true, 'full'); + await wal.append(makeRecord({ key: 'x' })); + expect(await store.exists()).toBe(true); + await wal.checkpoint(); + expect(store.truncated).toBe(true); + expect(await store.exists()).toBe(false); + }); +}); diff --git a/tests/engine/aria-wal-mvcc.test.ts b/tests/engine/aria-wal-mvcc.test.ts index 07f783c..9da96e4 100644 --- a/tests/engine/aria-wal-mvcc.test.ts +++ b/tests/engine/aria-wal-mvcc.test.ts @@ -1,289 +1,225 @@ -/** - * AriaEngine WAL + MVCC 单元测试 - */ -import { WAL, type WALStore } from '../../src/engine/aria/wal/log'; -import { WALRecordType, type WALRecord } from '../../src/engine/aria/types'; -import { CheckpointManager, type Flushable } from '../../src/engine/aria/wal/checkpoint'; -import { MVCCManager } from '../../src/engine/aria/transaction/mvcc'; - -// =================================================================== -// WAL 存储 Mock -// =================================================================== -class MockWALStore implements WALStore { - chunks: Uint8Array[] = []; - async append(data: Uint8Array) { this.chunks.push(data); } - async readAll(): Promise { - const total = this.chunks.reduce((s, c) => s + c.byteLength, 0); - const combined = new Uint8Array(total); - let off = 0; - for (const c of this.chunks) { combined.set(c, off); off += c.byteLength; } - return combined; - } - async truncate() { this.chunks = []; } - async exists() { return this.chunks.length > 0; } -} - -// =================================================================== -// WAL 测试 -// =================================================================== -describe('AriaEngine — WAL', () => { - it('append 记录后可恢复', async () => { - const store = new MockWALStore(); - const wal = new WAL(store, true, 'full'); - - wal.append({ type: WALRecordType.INSERT, txnId: 1, tableName: 'users', key: '1', data: { name: 'Alice' } }); - wal.append({ type: WALRecordType.INSERT, txnId: 1, tableName: 'users', key: '2', data: { name: 'Bob' } }); - - const records: WALRecord[] = []; - await wal.recover((r) => records.push(r)); - expect(records).toHaveLength(2); - expect(records[0].tableName).toBe('users'); - expect(records[0].key).toBe('1'); - }); - - it('batch 模式缓冲后 flush', async () => { - const store = new MockWALStore(); - const wal = new WAL(store, true, 'batch'); - - wal.append({ type: WALRecordType.UPDATE, txnId: 2, tableName: 'items', key: 'a', data: { v: 1 } }); - wal.append({ type: WALRecordType.DELETE, txnId: 2, tableName: 'items', key: 'b' }); - - // 未 flush 前无法恢复 - let records: WALRecord[] = []; - await wal.recover((r) => records.push(r)); - expect(records).toHaveLength(0); - - await wal.flush(); - records = []; - await wal.recover((r) => records.push(r)); - expect(records).toHaveLength(2); - }); - - it('none 模式不记录', async () => { - const store = new MockWALStore(); - const wal = new WAL(store, false, 'none'); - wal.append({ type: WALRecordType.INSERT, txnId: 3, tableName: 'x', key: 'y', data: {} }); - expect(store.chunks).toHaveLength(0); - }); - - it('checkpoint 清空 WAL', async () => { - const store = new MockWALStore(); - const wal = new WAL(store, true, 'full'); - - wal.append({ type: WALRecordType.CREATE_TABLE, txnId: 0, tableName: 't', key: '' }); - expect(await store.exists()).toBe(true); - - await wal.checkpoint(); - expect(await store.exists()).toBe(false); - }); - - it('getLSN 跟踪序列号', () => { - const store = new MockWALStore(); - const wal = new WAL(store, true, 'full'); - expect(wal.getLSN()).toBe(0); - wal.append({ type: WALRecordType.BEGIN, txnId: 10, tableName: '', key: '' }); - expect(wal.getLSN()).toBe(1); - wal.append({ type: WALRecordType.COMMIT, txnId: 10, tableName: '', key: '' }); - expect(wal.getLSN()).toBe(2); - }); - - it('isEnabled 反映配置', () => { - expect(new WAL(new MockWALStore(), true).isEnabled()).toBe(true); - expect(new WAL(new MockWALStore(), false).isEnabled()).toBe(false); - }); - - it('多种记录类型编解码', async () => { - const store = new MockWALStore(); - const wal = new WAL(store, true, 'full'); - - wal.append({ type: WALRecordType.BEGIN, txnId: 100, tableName: '', key: '' }); - wal.append({ type: WALRecordType.INSERT, txnId: 100, tableName: 'users', key: '1', data: { x: 'hello' } }); - wal.append({ type: WALRecordType.UPDATE, txnId: 100, tableName: 'users', key: '1', data: { x: 'world' } }); - wal.append({ type: WALRecordType.COMMIT, txnId: 100, tableName: '', key: '' }); - - const records: WALRecord[] = []; - await wal.recover((r) => records.push(r)); - expect(records).toHaveLength(4); - expect(records[0].type).toBe(WALRecordType.BEGIN); - expect(records[1].type).toBe(WALRecordType.INSERT); - expect(records[2].type).toBe(WALRecordType.UPDATE); - expect(records[3].type).toBe(WALRecordType.COMMIT); - }); - - it('getBufferedCount 返回缓冲数', () => { - const wal = new WAL(new MockWALStore(), true, 'batch'); - expect(wal.getBufferedCount()).toBe(0); - wal.append({ type: WALRecordType.INSERT, txnId: 0, tableName: 't', key: 'k' }); - expect(wal.getBufferedCount()).toBe(1); - }); -}); - -// =================================================================== -// Checkpoint 测试(使用安全 Mock,避免 null 引用导致 CI 卡死) -// =================================================================== -describe('AriaEngine — CheckpointManager', () => { - class MockFlushable implements Flushable { flushed = false; async flushAll() { this.flushed = true; } } - class MockLSM { flushed = false; async flush() { this.flushed = true; } } - class MockWAL { checkpointed = false; async checkpoint() { this.checkpointed = true; } async flush() {} } - - it('tick 未达间隔不触发 checkpoint', async () => { - const lsm = new MockLSM(); - const wal = new MockWAL(); - const flushable = new MockFlushable(); - const cm = new CheckpointManager(lsm as any, wal as any, flushable, 100); - await cm.tick(); - await cm.tick(); - expect(cm.getOpCount()).toBe(2); - expect(flushable.flushed).toBe(false); - expect(lsm.flushed).toBe(false); - }); - - it('setInterval 修改间隔后 tick 触发 checkpoint', async () => { - const lsm = new MockLSM(); - const wal = new MockWAL(); - const cm = new CheckpointManager(lsm as any, wal as any, null, 1000); - cm.setInterval(2); - await cm.tick(); - await cm.tick(); - expect(cm.getOpCount()).toBe(0); // reset after checkpoint - expect(lsm.flushed).toBe(true); - expect(wal.checkpointed).toBe(true); - }); - - it('forceCheckpoint 强制触发', async () => { - const lsm = new MockLSM(); - const wal = new MockWAL(); - const cm = new CheckpointManager(lsm as any, wal as any, null, 100); - await cm.forceCheckpoint(); - expect(cm.getOpCount()).toBe(0); - expect(lsm.flushed).toBe(true); - expect(wal.checkpointed).toBe(true); - }); -}); - -// =================================================================== -// MVCC 测试 -// =================================================================== -describe('AriaEngine — MVCC', () => { - let mvcc: MVCCManager; - - beforeEach(() => { mvcc = new MVCCManager(); }); - - it('beginTransaction 分配唯一 ID', () => { - const id1 = mvcc.beginTransaction(); - const id2 = mvcc.beginTransaction(); - expect(id1).not.toBe(id2); - expect(mvcc.isActive(id1)).toBe(true); - expect(mvcc.isActive(id2)).toBe(true); - }); - - it('commit 后 isActive 返回 false', () => { - const txnId = mvcc.beginTransaction(); - mvcc.commitTransaction(txnId); - expect(mvcc.isActive(txnId)).toBe(false); - }); - - it('rollback 后 isActive 返回 false', () => { - const txnId = mvcc.beginTransaction(); - mvcc.rollbackTransaction(txnId); - expect(mvcc.isActive(txnId)).toBe(false); - }); - - it('writeVersion + readVersion 往返', () => { - const txnId = mvcc.beginTransaction(); - mvcc.writeVersion('users', '1', { name: 'Alice', age: 30 }, txnId); - const val = mvcc.readVersion('users', '1', txnId); - expect(val).not.toBeNull(); - expect(val!.name).toBe('Alice'); - }); - - it('未提交版本对其他事务不可见', () => { - const txn1 = mvcc.beginTransaction(); - mvcc.writeVersion('users', '1', { name: 'Alice' }, txn1); - - const txn2 = mvcc.beginTransaction(); - const val = mvcc.readVersion('users', '1', txn2); - expect(val).toBeNull(); // txn1's write not yet committed - }); - - it('commit 后新事务可见', () => { - const txn1 = mvcc.beginTransaction(); - mvcc.writeVersion('users', '1', { name: 'Alice' }, txn1); - mvcc.commitTransaction(txn1); - - const txn2 = mvcc.beginTransaction(); - const val = mvcc.readVersion('users', '1', txn2); - expect(val).not.toBeNull(); - expect(val!.name).toBe('Alice'); - }); - - it('rollback 移除写入的版本', () => { - const txnId = mvcc.beginTransaction(); - mvcc.writeVersion('users', '1', { name: 'Temp' }, txnId); - mvcc.rollbackTransaction(txnId); - - const txn2 = mvcc.beginTransaction(); - expect(mvcc.readVersion('users', '1', txn2)).toBeNull(); - }); - - it('deleteVersion 创建墓碑', () => { - const txnId = mvcc.beginTransaction(); - mvcc.writeVersion('users', '1', { name: 'Alice' }, txnId); - mvcc.commitTransaction(txnId); - // delete - const txn2 = mvcc.beginTransaction(); - mvcc.deleteVersion('users', '1', txn2); - mvcc.commitTransaction(txn2); - // 删除后读取 - const txn3 = mvcc.beginTransaction(); - const val = mvcc.readVersion('users', '1', txn3); - expect(val).not.toBeNull(); - expect((val! as any).__mvcc_tombstone).toBe(true); - }); - - it('getLatestCommittedVersions 返回最新已提交', () => { - const txnId = mvcc.beginTransaction(); - mvcc.writeVersion('users', '1', { name: 'Alice' }, txnId); - mvcc.writeVersion('users', '2', { name: 'Bob' }, txnId); - mvcc.commitTransaction(txnId); - - const result = mvcc.getLatestCommittedVersions('users'); - expect(result['1'].name).toBe('Alice'); - expect(result['2'].name).toBe('Bob'); - }); - - it('clearTable 清理指定表', () => { - const txnId = mvcc.beginTransaction(); - mvcc.writeVersion('users', '1', { name: 'A' }, txnId); - mvcc.writeVersion('users', '2', { name: 'B' }, txnId); - mvcc.writeVersion('orders', 'o1', { amt: 100 }, txnId); - mvcc.commitTransaction(txnId); - - mvcc.clearTable('users'); - const txn2 = mvcc.beginTransaction(); - expect(mvcc.readVersion('users', '1', txn2)).toBeNull(); - expect(mvcc.readVersion('users', '2', txn2)).toBeNull(); - expect(mvcc.readVersion('orders', 'o1', txn2)).not.toBeNull(); - }); - - it('getActiveTxnCount 返回活跃事务数', () => { - expect(mvcc.getActiveTxnCount()).toBe(0); - mvcc.beginTransaction(); - mvcc.beginTransaction(); - expect(mvcc.getActiveTxnCount()).toBe(2); - }); - - it('gc 清理过旧版本', () => { - // 创建很多版本后 gc - for (let i = 0; i < 200; i++) { - const txnId = mvcc.beginTransaction(); - mvcc.writeVersion('users', '1', { ver: i }, txnId); - mvcc.commitTransaction(txnId); - } - mvcc.gc(100); - // gc 后应可继续操作 - const txnId = mvcc.beginTransaction(); - const val = mvcc.readVersion('users', '1', txnId); - expect(val).not.toBeNull(); - }); -}); +/** + * AriaEngine WAL + MVCC 单元测试 + */ +import { WAL, type WALStore } from '../../src/engine/aria/wal/log'; +import { WALRecordType, type WALRecord } from '../../src/engine/aria/types'; +import { CheckpointManager, type Flushable } from '../../src/engine/aria/wal/checkpoint'; +import { MVCCManager } from '../../src/engine/aria/transaction/mvcc'; + +// =================================================================== +// WAL 存储 Mock +// =================================================================== +class MockWALStore implements WALStore { + chunks: Uint8Array[] = []; + async append(data: Uint8Array) { this.chunks.push(data); } + async readAll(): Promise { + const total = this.chunks.reduce((s, c) => s + c.byteLength, 0); + const combined = new Uint8Array(total); + let off = 0; + for (const c of this.chunks) { combined.set(c, off); off += c.byteLength; } + return combined; + } + async truncate() { this.chunks = []; } + async exists() { return this.chunks.length > 0; } +} + +// =================================================================== +// WAL 测试 +// =================================================================== +describe('AriaEngine — WAL', () => { + it('append 记录后可恢复', async () => { + const store = new MockWALStore(); + const wal = new WAL(store, true, 'full'); + + wal.append({ type: WALRecordType.INSERT, txnId: 1, tableName: 'users', key: '1', data: { name: 'Alice' } }); + wal.append({ type: WALRecordType.INSERT, txnId: 1, tableName: 'users', key: '2', data: { name: 'Bob' } }); + + const records: WALRecord[] = []; + await wal.recover((r) => records.push(r)); + expect(records).toHaveLength(2); + expect(records[0].tableName).toBe('users'); + expect(records[0].key).toBe('1'); + }); + + it('batch 模式缓冲后 flush', async () => { + const store = new MockWALStore(); + const wal = new WAL(store, true, 'batch'); + + wal.append({ type: WALRecordType.UPDATE, txnId: 2, tableName: 'items', key: 'a', data: { v: 1 } }); + wal.append({ type: WALRecordType.DELETE, txnId: 2, tableName: 'items', key: 'b' }); + + // 未 flush 前无法恢复 + let records: WALRecord[] = []; + await wal.recover((r) => records.push(r)); + expect(records).toHaveLength(0); + + await wal.flush(); + records = []; + await wal.recover((r) => records.push(r)); + expect(records).toHaveLength(2); + }); + + it('none 模式不记录', async () => { + const store = new MockWALStore(); + const wal = new WAL(store, false, 'none'); + wal.append({ type: WALRecordType.INSERT, txnId: 3, tableName: 'x', key: 'y', data: {} }); + expect(store.chunks).toHaveLength(0); + }); + + it('checkpoint 清空 WAL', async () => { + const store = new MockWALStore(); + const wal = new WAL(store, true, 'full'); + + wal.append({ type: WALRecordType.CREATE_TABLE, txnId: 0, tableName: 't', key: '' }); + expect(await store.exists()).toBe(true); + + await wal.checkpoint(); + expect(await store.exists()).toBe(false); + }); + + it('多种记录类型编解码', async () => { + const store = new MockWALStore(); + const wal = new WAL(store, true, 'full'); + + wal.append({ type: WALRecordType.BEGIN, txnId: 100, tableName: '', key: '' }); + wal.append({ type: WALRecordType.INSERT, txnId: 100, tableName: 'users', key: '1', data: { x: 'hello' } }); + wal.append({ type: WALRecordType.UPDATE, txnId: 100, tableName: 'users', key: '1', data: { x: 'world' } }); + wal.append({ type: WALRecordType.COMMIT, txnId: 100, tableName: '', key: '' }); + + const records: WALRecord[] = []; + await wal.recover((r) => records.push(r)); + expect(records).toHaveLength(4); + expect(records[0].type).toBe(WALRecordType.BEGIN); + expect(records[1].type).toBe(WALRecordType.INSERT); + expect(records[2].type).toBe(WALRecordType.UPDATE); + expect(records[3].type).toBe(WALRecordType.COMMIT); + }); + + it('getBufferedCount 返回缓冲数', () => { + const wal = new WAL(new MockWALStore(), true, 'batch'); + expect(wal.getBufferedCount()).toBe(0); + wal.append({ type: WALRecordType.INSERT, txnId: 0, tableName: 't', key: 'k' }); + expect(wal.getBufferedCount()).toBe(1); + }); +}); + +// =================================================================== +// Checkpoint 测试(使用安全 Mock,避免 null 引用导致 CI 卡死) +// =================================================================== +describe('AriaEngine — CheckpointManager', () => { + class MockFlushable implements Flushable { flushed = false; async flushAll() { this.flushed = true; } } + class MockLSM { flushed = false; async flush() { this.flushed = true; } } + class MockWAL { checkpointed = false; async checkpoint() { this.checkpointed = true; } async flush() {} } + + it('tick 未达间隔不触发 checkpoint', async () => { + const lsm = new MockLSM(); + const wal = new MockWAL(); + const flushable = new MockFlushable(); + const cm = new CheckpointManager(lsm as any, wal as any, flushable, 100); + await cm.tick(); + await cm.tick(); + expect(flushable.flushed).toBe(false); + expect(lsm.flushed).toBe(false); + }); + + it('tick 达到间隔触发 checkpoint', async () => { + const lsm = new MockLSM(); + const wal = new MockWAL(); + const cm = new CheckpointManager(lsm as any, wal as any, null, 2); + await cm.tick(); + expect(lsm.flushed).toBe(false); + await cm.tick(); + expect(lsm.flushed).toBe(true); + expect(wal.checkpointed).toBe(true); + }); + + it('checkpoint 直接触发', async () => { + const lsm = new MockLSM(); + const wal = new MockWAL(); + const cm = new CheckpointManager(lsm as any, wal as any, null, 100); + await cm.checkpoint(); + expect(lsm.flushed).toBe(true); + expect(wal.checkpointed).toBe(true); + }); +}); + +// =================================================================== +// MVCC 测试 +// =================================================================== +describe('AriaEngine — MVCC', () => { + let mvcc: MVCCManager; + + beforeEach(() => { mvcc = new MVCCManager(); }); + + it('beginTransaction 分配唯一 ID', () => { + const id1 = mvcc.beginTransaction(); + const id2 = mvcc.beginTransaction(); + expect(id1).not.toBe(id2); + }); + + it('commit 标记版本为已提交并清理事务登记', () => { + const txnId = mvcc.beginTransaction(); + mvcc.writeVersion('users', '1', { name: 'Alice' }, txnId); + mvcc.commitTransaction(txnId); + const versions = (mvcc as unknown as { versionStore: Map }).versionStore.get('users.1'); + expect(versions).toHaveLength(1); + expect(versions![0].committed).toBe(true); + }); + + it('rollback 移除写入的版本', () => { + const txnId = mvcc.beginTransaction(); + mvcc.writeVersion('users', '1', { name: 'Temp' }, txnId); + mvcc.rollbackTransaction(txnId); + const store = (mvcc as unknown as { versionStore: Map }).versionStore; + expect(store.has('users.1')).toBe(false); + }); + + it('writeVersion 记录版本链(undo log 语义)', () => { + const txnId = mvcc.beginTransaction(); + mvcc.writeVersion('users', '1', { name: 'Alice', age: 30 }, txnId); + mvcc.writeVersion('users', '1', { name: 'Alice', age: 31 }, txnId); + const store = (mvcc as unknown as { versionStore: Map }).versionStore; + const versions = store.get('users.1')!; + expect(versions).toHaveLength(2); + expect(versions[1].prevVersion).not.toBeNull(); // 版本链 + }); + + it('deleteVersion 写入墓碑版本', () => { + const txnId = mvcc.beginTransaction(); + mvcc.deleteVersion('users', '1', txnId); + mvcc.commitTransaction(txnId); + const store = (mvcc as unknown as { versionStore: Map; committed: boolean }[]> }).versionStore; + const versions = store.get('users.1')!; + expect(versions[0].committed).toBe(true); + expect((versions[0].data as unknown as { __mvcc_tombstone: boolean }).__mvcc_tombstone).toBe(true); + }); + + it('活跃事务可并发登记', () => { + const t1 = mvcc.beginTransaction(); + const t2 = mvcc.beginTransaction(); + mvcc.writeVersion('users', '1', { v: 1 }, t1); + mvcc.writeVersion('users', '2', { v: 2 }, t2); + // 两个事务的写入各自独立记录 + const store = (mvcc as unknown as { versionStore: Map }).versionStore; + expect(store.has('users.1')).toBe(true); + expect(store.has('users.2')).toBe(true); + }); + + it('gc 清理过旧版本', () => { + // 创建很多版本后 gc + for (let i = 0; i < 200; i++) { + const txnId = mvcc.beginTransaction(); + mvcc.writeVersion('users', '1', { ver: i }, txnId); + mvcc.commitTransaction(txnId); + } + mvcc.gc(100); + // gc 后版本保留最新 100 个 + const store = (mvcc as unknown as { versionStore: Map }).versionStore; + expect(store.get('users.1')!.length).toBe(100); + // gc 后引擎仍可继续写入 + const txnId = mvcc.beginTransaction(); + mvcc.writeVersion('users', '1', { ver: 999 }, txnId); + mvcc.commitTransaction(txnId); + expect(store.get('users.1')!.length).toBe(101); + }); +}); diff --git a/tests/engine/aria-wal-segment.test.ts b/tests/engine/aria-wal-segment.test.ts new file mode 100644 index 0000000..e150c83 --- /dev/null +++ b/tests/engine/aria-wal-segment.test.ts @@ -0,0 +1,275 @@ +/** + * AriaEngine — SegmentedWALStore 分片 WAL 存储测试 + * + * 覆盖: + * 1. append → readAll 往返(分片切换、字节顺序) + * 2. 空洞检测:序号不连续 → 空洞后的分片丢弃 + * 3. 旧格式 __wal_N + __wal_count 兼容读取 + * 4. truncate / exists + * 5. 后端无 append 接口时回退 read+write(正确性一致) + * 6. AriaEngine 集成:高频写入跨重启数据完整(分片 + WAL 重放) + */ +import { SegmentedWALStore } from '../../src/engine/aria/wal/segmented_store'; +import { MemoryBackend } from '../../src/engine/aria/store/backend'; +import { AriaEngine } from '../../src/engine/aria/index'; +import { createSchema } from '../../src/table/schema'; +import 'fake-indexeddb/auto'; + +let idbCounter = 0; +function uniqueDB(): string { + return `seg-${Date.now()}-${++idbCounter}-${Math.random().toString(36).slice(2, 8)}`; +} + +const enc = (s: string) => new Uint8Array(new TextEncoder().encode(s)); + +describe('AriaEngine — SegmentedWALStore 单元', () => { + it('append → readAll 往返,多批次字节顺序一致', async () => { + const backend = new MemoryBackend(); + await backend.open('seg-unit-1'); + const store = new SegmentedWALStore(backend, 1024); + + expect(await store.exists()).toBe(false); + await store.append(enc('AAA')); + await store.append(enc('BBB')); + await store.append(enc('CCC')); + expect(await store.exists()).toBe(true); + + const all = await store.readAll(); + expect(new TextDecoder().decode(all)).toBe('AAABBBCCC'); + + // 后端是分片文件(单个 key) + const keys = await backend.listKeys(); + expect(keys).toEqual(['__wal_000000.bin']); + await backend.close(); + }); + + it('超过分片阈值自动切换分片', async () => { + const backend = new MemoryBackend(); + await backend.open('seg-unit-2'); + const store = new SegmentedWALStore(backend, 16); // 每分片 16 字节 + + await store.append(enc('AAAAAAAAAA')); // 10B → 分片 0 + await store.append(enc('BBBBBBBBBB')); // 10B → 分片 1(0 已 10B+10B > 16) + await store.append(enc('CC')); // 2B → 分片 1(10+2 <= 16) + + const all = await store.readAll(); + expect(new TextDecoder().decode(all)).toBe('AAAAAAAAAABBBBBBBBBBCC'); + const keys = await backend.listKeys().then((ks) => ks.sort()); + expect(keys).toEqual(['__wal_000000.bin', '__wal_000001.bin']); + await backend.close(); + }); + + it('空洞检测:分片序号不连续 → 空洞后的分片整体丢弃', async () => { + const backend = new MemoryBackend(); + await backend.open('seg-unit-3'); + const store = new SegmentedWALStore(backend, 16); + + await store.append(enc('SEG0-SEG0-S')); // 10B → 分片 0 + await store.append(enc('SEG1-SEG1-S')); // 10B → 分片 1(0 已 10B+10B > 16) + await store.append(enc('S2')); // 2B → 分片 1(10+2 <= 16) + + // 模拟 truncate 部分完成:删除分片 1(空洞) + await backend.delete('__wal_000001.bin'); + + const all = await store.readAll(); + // 空洞在分片 1 → 1 及之后丢弃,只保留分片 0 + expect(new TextDecoder().decode(all)).toBe('SEG0-SEG0-S'); + await backend.close(); + }); + + it('空洞在开头(分片 0 缺失)→ 全部丢弃(保守截断)', async () => { + const backend = new MemoryBackend(); + await backend.open('seg-unit-4'); + const store = new SegmentedWALStore(backend, 16); + await store.append(enc('X0')); + await store.append(enc('X1')); + await backend.delete('__wal_000000.bin'); + + const all = await store.readAll(); + expect(all.byteLength).toBe(0); + await backend.close(); + }); + + it('旧格式 __wal_N + __wal_count 兼容读取(迁移前数据)', async () => { + const backend = new MemoryBackend(); + await backend.open('seg-unit-5'); + // 构造旧格式数据 + await backend.write('__wal_0', enc('LEGACY0').buffer); + await backend.write('__wal_1', enc('LEGACY1').buffer); + await backend.write('__wal_count', enc('2').buffer); + + const store = new SegmentedWALStore(backend, 1024); + expect(await store.exists()).toBe(true); + const all = await store.readAll(); + expect(new TextDecoder().decode(all)).toBe('LEGACY0LEGACY1'); + + // 迁移中追加新格式:新记录写入分片文件(不与旧键冲突) + await store.append(enc('NEW')); + const keys = await backend.listKeys().then((ks) => ks.sort()); + expect(keys).toContain('__wal_000000.bin'); + expect(keys).toContain('__wal_0'); + + // truncate 清空新旧全部 + await store.truncate(); + expect(await store.exists()).toBe(false); + expect((await backend.listKeys()).length).toBe(0); + await backend.close(); + }); + + it('truncate 清空分片并重置状态', async () => { + const backend = new MemoryBackend(); + await backend.open('seg-unit-6'); + const store = new SegmentedWALStore(backend, 16); + await store.append(enc('AAAAAA')); + await store.append(enc('BBBBBB')); + await store.truncate(); + expect(await store.exists()).toBe(false); + expect((await backend.listKeys()).length).toBe(0); + + // 截断后继续追加从分片 0 重新开始 + await store.append(enc('CCC')); + const all = await store.readAll(); + expect(new TextDecoder().decode(all)).toBe('CCC'); + await backend.close(); + }); + + it('后端无 append 接口 → 回退 read+write 语义一致', async () => { + // MemoryBackend 没有 append 接口 → 走回退路径 + const backend = new MemoryBackend(); + await backend.open('seg-unit-7'); + const store = new SegmentedWALStore(backend, 1024); + await store.append(enc('PART1')); + await store.append(enc('PART2')); + const all = await store.readAll(); + expect(new TextDecoder().decode(all)).toBe('PART1PART2'); + await backend.close(); + }); +}); + +// =================================================================== +// AriaEngine 集成 — 分片 WAL 跨重启 +// =================================================================== +describe('AriaEngine — 分片 WAL 集成', () => { + it('高频写入(多条 WAL 记录)→ close → reopen 数据完整', async () => { + const dbName = uniqueDB(); + const engine = new AriaEngine({ + storageBackend: 'indexeddb', + checkpointInterval: 100000, + walSyncMode: 'full', + }); + await engine.open(dbName, 1); + await engine.createTable(createSchema('logs', { + id: { type: 'string', primaryKey: true }, + msg: { type: 'string' }, + })); + const total = 300; + for (let i = 0; i < total; i++) { + await engine.insert('logs', [{ id: `log-${i}`, msg: `message ${i}` }]); + } + // 不 flush 不 checkpoint,全部留在 WAL → 模拟崩溃后重放 + await (engine as any).backend.close(); + (engine as any).opened = false; + + const engine2 = new AriaEngine({ + storageBackend: 'indexeddb', + checkpointInterval: 100000, + walSyncMode: 'full', + }); + await engine2.open(dbName, 1); + const rows = await engine2.find('logs', { table: 'logs' }); + expect(rows).toHaveLength(total); + expect(rows.some((r) => r.id === 'log-299')).toBe(true); + await engine2.close(); + }); + + it('分片结构落盘验证(backend 中是分片文件而非旧单记录键)', async () => { + const dbName = uniqueDB(); + const engine = new AriaEngine({ + storageBackend: 'indexeddb', + checkpointInterval: 100000, + walSyncMode: 'full', + }); + await engine.open(dbName, 1); + await engine.createTable(createSchema('t', { + id: { type: 'string', primaryKey: true }, + })); + await engine.insert('t', [{ id: '1' }, { id: '2' }, { id: '3' }]); + + const backend = (engine as any).backend; + const keys = await backend.listKeys(); + const walKeys = keys.filter((k: string) => k.startsWith('__wal_')); + // 新格式:__wal_000000.bin;无旧格式单记录键与 count 键 + expect(walKeys).toContain('__wal_000000.bin'); + expect(walKeys.some((k: string) => /^__wal_\d+$/.test(k) && !k.endsWith('.bin'))).toBe(false); + expect(walKeys).not.toContain('__wal_count'); + await engine.close(); + }); + + it('WAL 分片部分残留(空洞)→ 重开恢复已落盘数据,不丢已 checkpoint 数据', async () => { + const dbName = uniqueDB(); + const engine = new AriaEngine({ + storageBackend: 'indexeddb', + checkpointInterval: 100000, + walSyncMode: 'full', + }); + await engine.open(dbName, 1); + await engine.createTable(createSchema('t', { + id: { type: 'string', primaryKey: true }, + })); + // 第一批:flush 落盘 + checkpoint 清 WAL + await engine.insert('t', [{ id: 'a' }, { id: 'b' }]); + await (engine as any).lsm.flush(); + await (engine as any).wal.checkpoint(); + // 第二批:只进 WAL(不 flush) + await engine.insert('t', [{ id: 'c' }, { id: 'd' }]); + + // 模拟 WAL 分片文件被外部删掉(空洞场景) + const backend = (engine as any).backend; + await backend.delete('__wal_000000.bin'); + + await engine.close(); + const engine2 = new AriaEngine({ storageBackend: 'indexeddb', checkpointInterval: 100000 }); + await engine2.open(dbName, 1); + // 已落盘的 a/b 必须保留;c/d 在 WAL 中且文件被删 → 恢复不到(可接受的保守丢弃) + const rows = await engine2.find('t', { table: 't' }); + expect(rows.some((r) => r.id === 'a')).toBe(true); + expect(rows.some((r) => r.id === 'b')).toBe(true); + await engine2.close(); + }); + + it('旧格式 WAL 升级迁移:旧键重放后 checkpoint 清空', async () => { + const dbName = uniqueDB(); + // 手工构造旧格式 WAL 库:直接写旧键(模拟 v0.4.4 库崩溃现场) + const engine = new AriaEngine({ + storageBackend: 'indexeddb', + checkpointInterval: 100000, + walSyncMode: 'full', + }); + await engine.open(dbName, 1); + await engine.createTable(createSchema('t', { + id: { type: 'string', primaryKey: true }, + })); + // 写入一批数据但只保留在 WAL(新格式)→ close 前手工转成旧格式 + await engine.insert('t', [{ id: 'x' }]); + const backend = (engine as any).backend; + const raw = await backend.read('__wal_000000.bin'); + expect(raw).not.toBeNull(); + // 清掉新格式,写成旧格式(单记录键) + await backend.delete('__wal_000000.bin'); + await backend.write('__wal_0', raw); + await backend.write('__wal_count', new TextEncoder().encode('1').buffer); + // 同时清掉内存里的 WAL 状态,模拟"重启" + await (engine as any).backend.close(); + (engine as any).opened = false; + + const engine2 = new AriaEngine({ storageBackend: 'indexeddb', checkpointInterval: 100000 }); + await engine2.open(dbName, 1); + const rows = await engine2.find('t', { table: 't' }); + expect(rows).toHaveLength(1); + expect(rows[0].id).toBe('x'); + // 恢复后 checkpoint 清空旧键 + const keys = await (engine2 as any).backend.listKeys(); + expect(keys.some((k: string) => k.startsWith('__wal_'))).toBe(false); + await engine2.close(); + }); +}); diff --git a/tests/engine/crc32.test.ts b/tests/engine/crc32.test.ts new file mode 100644 index 0000000..457301f --- /dev/null +++ b/tests/engine/crc32.test.ts @@ -0,0 +1,89 @@ +/** + * AriaEngine CRC32 单元测试 + */ +import { crc32, crc32Continue } from '../../src/engine/aria/crc32'; + +const enc = new TextEncoder(); + +function bytes(s: string): Uint8Array { + return enc.encode(s); +} + +describe('CRC32', () => { + test('标准测试向量:空串 = 0', () => { + expect(crc32(new Uint8Array(0))).toBe(0x00000000); + }); + + test('标准测试向量:123456789 = 0xCBF43926(IEEE 802.3 参考值)', () => { + expect(crc32(bytes('123456789'))).toBe(0xcbf43926); + }); + + test('标准测试向量:The quick brown fox... = 0x414FA339', () => { + expect(crc32(bytes('The quick brown fox jumps over the lazy dog'))).toBe(0x414fa339); + }); + + test('确定性:相同输入多次计算一致', () => { + const data = bytes('metona-sqlark aria engine'); + const a = crc32(data); + const b = crc32(data); + expect(a).toBe(b); + }); + + test('区分性:不同输入不同校验和', () => { + expect(crc32(bytes('hello'))).not.toBe(crc32(bytes('hellp'))); + expect(crc32(bytes('abc'))).not.toBe(crc32(bytes('abd'))); + }); + + test('单字节翻转可被检测', () => { + const original = bytes('metona-sqlark aria engine'); + const flipped = new Uint8Array(original); + flipped[10] ^= 0xff; + expect(crc32(original)).not.toBe(crc32(flipped)); + }); + + test('分段计算与一次性计算一致(crc32Continue)', () => { + const data = bytes('The quick brown fox jumps over the lazy dog'); + const whole = crc32(data); + + // 按 1 字节分段 + let seg = 0; + for (let i = 0; i < data.length; i++) { + seg = crc32Continue(seg, data.subarray(i, i + 1)); + } + expect(seg).toBe(whole); + + // 按 5 字节分段 + let seg2 = 0; + for (let i = 0; i < data.length; i += 5) { + seg2 = crc32Continue(seg2, data.subarray(i, i + 5)); + } + expect(seg2).toBe(whole); + }); + + test('seed 参数与 crc32Continue 等价', () => { + const data = bytes('metona-sqlark aria engine'); + const head = data.subarray(0, 7); + const tail = data.subarray(7); + const whole = crc32(data); + const split = crc32(tail, crc32(head)); + expect(split).toBe(whole); + }); + + test('中文 UTF-8 字节正确参与计算', () => { + const data = bytes('玥玥的测试数据:大段中文内容'); + expect(crc32(data)).toBe(crc32(new Uint8Array(data))); + }); + + test('大缓冲区(1MB 随机字节)稳定计算', () => { + const data = new Uint8Array(1024 * 1024); + let x = 12345; + for (let i = 0; i < data.length; i++) { + x = (x * 1103515245 + 12345) & 0x7fffffff; + data[i] = x & 0xff; + } + const a = crc32(data); + const b = crc32(data); + expect(a).toBe(b); + expect(a).not.toBe(0); + }); +}); diff --git a/tests/helpers/opfs-mock.ts b/tests/helpers/opfs-mock.ts new file mode 100644 index 0000000..f7feb21 --- /dev/null +++ b/tests/helpers/opfs-mock.ts @@ -0,0 +1,88 @@ +/** + * 测试共享 — 真实语义 OPFS mock + * + * 模拟 OPFS 的完整语义: + * - createWritable({ keepExistingData }) + position 追加写 + * - 文件内容以 ArrayBuffer 存储(跨 backend 实例共享于同一 Map) + * - entries() 迭代、removeEntry 删除 + * + * 用法: + * const files = installOPFSMock(new Map()); + * const backend = new OPFSBackend(); + * await backend.open('any'); + */ + +export interface MockOpfsFile { + content: ArrayBuffer; +} + +export function installOPFSMock(files: Map): { + files: Map; + dir: { + getFileHandle: (name: string, opts?: { create?: boolean }) => Promise<{ + getFile: () => Promise<{ size: number; arrayBuffer: () => Promise }>; + createWritable: (wOpts?: { keepExistingData?: boolean }) => Promise<{ + write: (arg: ArrayBuffer | { type: string; position: number; data: ArrayBuffer }) => Promise; + close: () => Promise; + }>; + }>; + entries: () => AsyncGenerator<[string]>; + removeEntry: (name: string) => Promise; + }; +} { + const getFileHandle = async (name: string, opts?: { create?: boolean }) => { + if (!files.has(name)) { + if (!opts?.create) throw new Error(`NotFoundError: ${name}`); + files.set(name, { content: new ArrayBuffer(0) }); + } + const entry = files.get(name)!; + return { + getFile: async () => ({ size: entry.content.byteLength, arrayBuffer: async () => entry.content }), + createWritable: async (wOpts?: { keepExistingData?: boolean }) => { + const w: { + write: (arg: ArrayBuffer | { type: string; position: number; data: ArrayBuffer }) => Promise; + close: () => Promise; + } = { + write: async (arg) => { + const keepExisting = wOpts?.keepExistingData ?? false; + const chunk = (arg as { type?: string }).type === 'write' + ? { data: (arg as { data: ArrayBuffer }).data, position: (arg as { position: number }).position } + : { data: arg as ArrayBuffer, position: keepExisting ? entry.content.byteLength : 0 }; + const merged = new Uint8Array(chunk.position + chunk.data.byteLength); + if (keepExisting || chunk.position > 0) { + merged.set(new Uint8Array(entry.content), 0); + } + merged.set(new Uint8Array(chunk.data), chunk.position); + entry.content = merged.buffer; + }, + close: async () => { /* no-op */ }, + }; + return w; + }, + }; + }; + + const dir = { + getFileHandle, + entries: async function* () { + for (const [name] of files) yield [name]; + }, + removeEntry: async (name: string) => { + files.delete(name); + }, + }; + + Object.defineProperty(globalThis, 'navigator', { + value: { + storage: { + getDirectory: async () => ({ + getDirectoryHandle: async (_name: string, _opts?: unknown) => dir, + }), + }, + }, + configurable: true, + writable: true, + }); + + return { files, dir }; +} diff --git a/tests/hooks-crud.test.ts b/tests/hooks-crud.test.ts new file mode 100644 index 0000000..113c300 --- /dev/null +++ b/tests/hooks-crud.test.ts @@ -0,0 +1,140 @@ +/** + * v0.5.1 — CRUD 生命周期钩子真实接线测试 + * + * 此前 beforeInsert/afterInsert/beforeUpdate/afterUpdate/beforeDelete/afterDelete + * 六个钩子虽在 HookName 类型与文档中宣称("14 种钩子"),但从未被任何路径触发。 + * 本次验证 Table API 与 SQL query 两条路径均真实触发全部 14 个钩子。 + */ +import { MetonaSqlark } from '../src/core'; +import 'fake-indexeddb/auto'; + +async function createDb(name: string): Promise { + const db = new MetonaSqlark({ name: `hooks-${name}-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`, mode: 'memory' }); + await db.init(); + await db.defineTable('users', { + id: { type: 'string', primaryKey: true }, + name: { type: 'string' }, + age: { type: 'number' }, + }); + return db; +} + +describe('v0.5.1 — CRUD hooks 真实接线', () => { + it('Table.insert / insertMany 触发 beforeInsert + afterInsert', async () => { + const db = await createDb('table-insert'); + const events: string[] = []; + db.on('beforeInsert', (rows) => { events.push(`before:${(rows as unknown[]).length}`); }); + db.on('afterInsert', (rows, pks) => { events.push(`after:${(rows as unknown[]).length}:${(pks as string[]).length}`); }); + + await db.table('users').insert({ id: '1', name: 'A' }); + await db.table('users').insertMany([{ id: '2', name: 'B' }, { id: '3', name: 'C' }]); + + expect(events).toEqual([ + 'before:1', 'after:1:1', + 'before:2', 'after:2:2', + ]); + await db.close(); + }); + + it('Table.update().execute() 触发 beforeUpdate + afterUpdate(含影响行数)', async () => { + const db = await createDb('table-update'); + await db.table('users').insertMany([{ id: '1', name: 'A', age: 1 }, { id: '2', name: 'B', age: 2 }]); + const events: string[] = []; + db.on('beforeUpdate', (query, updates) => { events.push(`before:${(updates as Record).name}`); }); + db.on('afterUpdate', (_query, _updates, count) => { events.push(`after:${count}`); }); + + await db.table('users').update({ name: 'X' }).where({ age: { $gt: 1 } }).execute(); + + expect(events).toEqual(['before:X', 'after:1']); + await db.close(); + }); + + it('Table.delete().execute() 触发 beforeDelete + afterDelete(含影响行数)', async () => { + const db = await createDb('table-delete'); + await db.table('users').insertMany([{ id: '1', name: 'A' }, { id: '2', name: 'B' }]); + const events: string[] = []; + db.on('beforeDelete', (query) => { events.push(`before:${(query as { where: Record }).where.id}`); }); + db.on('afterDelete', (_query, count) => { events.push(`after:${count}`); }); + + await db.table('users').delete().where({ id: '1' }).execute(); + + expect(events).toEqual(['before:1', 'after:1']); + await db.close(); + }); + + it('SQL query 路径触发全部 CRUD hooks(INSERT/UPDATE/DELETE)', async () => { + const db = await createDb('sql-crud'); + await db.query("INSERT INTO users VALUES ('1', 'Alice', 30)"); + const events: string[] = []; + db.on('beforeInsert', () => events.push('beforeInsert')); + db.on('afterInsert', () => events.push('afterInsert')); + db.on('beforeUpdate', () => events.push('beforeUpdate')); + db.on('afterUpdate', () => events.push('afterUpdate')); + db.on('beforeDelete', () => events.push('beforeDelete')); + db.on('afterDelete', () => events.push('afterDelete')); + + await db.query("INSERT INTO users VALUES ('2', 'Bob', 25)"); + await db.query("UPDATE users SET age = 26 WHERE id = '2'"); + await db.query("DELETE FROM users WHERE id = '1'"); + + expect(events).toEqual([ + 'beforeInsert', 'afterInsert', + 'beforeUpdate', 'afterUpdate', + 'beforeDelete', 'afterDelete', + ]); + await db.close(); + }); + + it('SQL INSERT 多行语句按列名映射触发 afterInsert', async () => { + const db = await createDb('sql-insert-cols'); + const seen: unknown[] = []; + db.on('afterInsert', (_rows, pks) => seen.push(pks)); + + await db.query("INSERT INTO users (id, name) VALUES ('9', 'Zed')"); + + expect(seen).toEqual([['9']]); + await db.close(); + }); + + it('全部 14 个钩子均可注册并真实触发', async () => { + const db = await createDb('all-hooks'); + const fired = new Set(); + const hooks = [ + 'beforeCreateTable', 'afterCreateTable', + 'beforeDropTable', 'afterDropTable', + 'beforeInsert', 'afterInsert', + 'beforeUpdate', 'afterUpdate', + 'beforeDelete', 'afterDelete', + 'beforeQuery', 'afterQuery', + 'beforeTransaction', 'afterTransaction', + ] as const; + for (const h of hooks) db.on(h, () => fired.add(h)); + + await db.defineTable('t2', { id: { type: 'string', primaryKey: true } }); // createTable hooks + await db.table('t2').insert({ id: '1' }); // insert hooks + await db.table('t2').update({}).where({ id: '1' }).execute(); // update hooks + await db.table('t2').delete().where({ id: '1' }).execute(); // delete hooks + await db.query('SELECT * FROM t2'); // query hooks + await db.transaction(async () => { /* noop */ }); // transaction hooks + await db.dropTable('t2'); // dropTable hooks + + for (const h of hooks) { + expect(fired.has(h)).toBe(true); + if (!fired.has(h)) throw new Error(`hook ${h} 应被触发`); + } + await db.close(); + }); + + it('事务路径不触发 CRUD hooks(Table 无 hooks 回调)', async () => { + const db = await createDb('tx-hooks'); + let fired = false; + db.on('beforeInsert', () => { fired = true; }); + + await db.transaction(async (trx) => { + await trx.table('users').insert({ id: '1', name: 'Tx' }); + }); + + expect(fired).toBe(false); + await db.close(); + }); +}); diff --git a/tests/maintenance-sql.test.ts b/tests/maintenance-sql.test.ts new file mode 100644 index 0000000..8bb794c --- /dev/null +++ b/tests/maintenance-sql.test.ts @@ -0,0 +1,172 @@ +/** + * v0.5.1 — 维护语句 SQL 入口测试(EXPLAIN / ANALYZE / REINDEX / VACUUM / SAVEPOINT) + * + * 此前这些功能仅有引擎方法/executor 分支而无 SQL 入口(parser 无法解析), + * 属"宣称存在但用户无法触发"的半成品。本次补齐 SQL 语法并验证真实执行。 + */ +import { MetonaSqlark } from '../src/core'; +import { parse } from '../src/sql/parser'; +import { createSchema } from '../src/table/schema'; +import 'fake-indexeddb/auto'; + +let dbCounter = 0; +function uniqueDB(): string { + return `maint-${Date.now()}-${++dbCounter}-${Math.random().toString(36).slice(2, 8)}`; +} + +describe('v0.5.1 — 维护语句解析', () => { + it('EXPLAIN SELECT 解析为 ExplainStatement', () => { + const stmt = parse('EXPLAIN SELECT * FROM users WHERE id = \'1\''); + expect(stmt.type).toBe('EXPLAIN'); + expect((stmt as { query: { type: string } }).query.type).toBe('SELECT'); + }); + + it('EXPLAIN 嵌套 EXPLAIN 拒绝', () => { + expect(() => parse('EXPLAIN EXPLAIN SELECT 1')).toThrow('Nested EXPLAIN'); + }); + + it('ANALYZE / ANALYZE TABLE 解析', () => { + expect(parse('ANALYZE users')).toMatchObject({ type: 'ANALYZE', table: 'users' }); + expect(parse('ANALYZE TABLE users')).toMatchObject({ type: 'ANALYZE', table: 'users' }); + }); + + it('REINDEX / VACUUM 解析', () => { + expect(parse('REINDEX users')).toMatchObject({ type: 'REINDEX', table: 'users' }); + expect(parse('REINDEX TABLE users')).toMatchObject({ type: 'REINDEX', table: 'users' }); + expect(parse('VACUUM')).toMatchObject({ type: 'VACUUM' }); + }); + + it('SAVEPOINT / ROLLBACK TO / RELEASE 解析', () => { + expect(parse('SAVEPOINT sp1')).toMatchObject({ type: 'SAVEPOINT', name: 'sp1', action: 'SAVE' }); + expect(parse('ROLLBACK TO sp1')).toMatchObject({ type: 'SAVEPOINT', name: 'sp1', action: 'ROLLBACK' }); + expect(parse('ROLLBACK TO SAVEPOINT sp1')).toMatchObject({ type: 'SAVEPOINT', name: 'sp1', action: 'ROLLBACK' }); + expect(parse('RELEASE SAVEPOINT sp1')).toMatchObject({ type: 'SAVEPOINT', name: 'sp1', action: 'RELEASE' }); + expect(parse('RELEASE sp1')).toMatchObject({ type: 'SAVEPOINT', name: 'sp1', action: 'RELEASE' }); + // ROLLBACK [TRANSACTION] 保持原语义 + expect(parse('ROLLBACK')).toMatchObject({ type: 'ROLLBACK' }); + expect(parse('ROLLBACK TRANSACTION')).toMatchObject({ type: 'ROLLBACK' }); + }); +}); + +describe('v0.5.1 — 维护语句执行(Aria 引擎)', () => { + async function createAriaDb(): Promise { + const db = new MetonaSqlark({ + name: uniqueDB(), + mode: 'aria', + diskEngine: 'indexeddb', + aria: { checkpointInterval: 100000, walSyncMode: 'full' }, + }); + await db.init(); + await db.defineTable('users', { + id: { type: 'string', primaryKey: true }, + name: { type: 'string', index: true }, + age: { type: 'number' }, + }); + await db.table('users').insertMany([ + { id: '1', name: 'Alice', age: 30 }, + { id: '2', name: 'Bob', age: 25 }, + { id: '3', name: 'Carol', age: 35 }, + ]); + return db; + } + + it('EXPLAIN SELECT 返回查询计划', async () => { + const db = await createAriaDb(); + const plan = await db.query("EXPLAIN SELECT * FROM users WHERE id = '1'") as Record; + expect(plan.type).toBe('SELECT'); + expect(plan.table).toBe('users'); + expect(plan.estimatedRows).toBe(1); + await db.close(); + }); + + it('EXPLAIN UPDATE / DELETE 返回计划', async () => { + const db = await createAriaDb(); + const planU = await db.query("EXPLAIN UPDATE users SET age = 31 WHERE id = '1'") as Record; + expect(planU.type).toBe('UPDATE'); + const planD = await db.query('EXPLAIN DELETE FROM users WHERE id = \'1\'') as Record; + expect(planD.type).toBe('DELETE'); + await db.close(); + }); + + it('ANALYZE TABLE 收集统计信息', async () => { + const db = await createAriaDb(); + const stats = await db.query('ANALYZE TABLE users') as Record; + expect(stats.rowCount).toBe(3); + expect(stats.table).toBe('users'); + await db.close(); + }); + + it('REINDEX TABLE 重建索引后索引查询正常', async () => { + const db = await createAriaDb(); + const count = await db.query('REINDEX TABLE users') as number; + expect(count).toBeGreaterThanOrEqual(0); + const rows = await db.query("SELECT * FROM users WHERE name = 'Bob'") as Record[]; + expect(rows).toHaveLength(1); + await db.close(); + }); + + it('VACUUM 压缩成功', async () => { + const db = await createAriaDb(); + const result = await db.query('VACUUM') as { compactedLevels: number }; + expect(typeof result.compactedLevels).toBe('number'); + await db.close(); + }); + + it('SAVEPOINT / ROLLBACK TO / RELEASE 真实执行', async () => { + const db = await createAriaDb(); + await db.query('BEGIN'); + await db.query("UPDATE users SET age = 99 WHERE id = '1'"); + await db.query('SAVEPOINT sp_a'); + await db.query("UPDATE users SET age = 88 WHERE id = '1'"); + // 回滚到 savepoint:恢复 age=99 + await db.query('ROLLBACK TO SAVEPOINT sp_a'); + await db.query('RELEASE SAVEPOINT sp_a'); + await db.query('COMMIT'); + + const rows = await db.query("SELECT age FROM users WHERE id = '1'") as Record[]; + expect(rows[0].age).toBe(99); + await db.close(); + }); + + it('savepoint 已存在 → 抛 SAVEPOINT_EXISTS', async () => { + const db = await createAriaDb(); + await db.query('BEGIN'); + await db.query('SAVEPOINT sp1'); + await expect(db.query('SAVEPOINT sp1')).rejects.toMatchObject({ code: 'SAVEPOINT_EXISTS' }); + await db.query('ROLLBACK'); + await db.close(); + }); + + it('回滚到不存在的 savepoint → 抛 SAVEPOINT_NOT_FOUND', async () => { + const db = await createAriaDb(); + await db.query('BEGIN'); + await expect(db.query('ROLLBACK TO nope')).rejects.toMatchObject({ code: 'SAVEPOINT_NOT_FOUND' }); + await db.query('ROLLBACK'); + await db.close(); + }); +}); + +describe('v0.5.1 — 维护语句执行(Memory 引擎不支持)', () => { + it('ANALYZE / REINDEX / VACUUM / SAVEPOINT → NOT_SUPPORTED', async () => { + const db = new MetonaSqlark({ name: uniqueDB(), mode: 'memory' }); + await db.init(); + await db.defineTable('t', { id: { type: 'string', primaryKey: true } }); + + await expect(db.query('ANALYZE TABLE t')).rejects.toMatchObject({ code: 'NOT_SUPPORTED' }); + await expect(db.query('REINDEX TABLE t')).rejects.toMatchObject({ code: 'NOT_SUPPORTED' }); + await expect(db.query('VACUUM')).rejects.toMatchObject({ code: 'NOT_SUPPORTED' }); + await expect(db.query('SAVEPOINT sp')).rejects.toMatchObject({ code: 'NOT_SUPPORTED' }); + await db.close(); + }); + + it('EXPLAIN 在所有引擎可用(返回基本信息)', async () => { + const db = new MetonaSqlark({ name: uniqueDB(), mode: 'memory' }); + await db.init(); + await db.defineTable('t', { id: { type: 'string', primaryKey: true } }); + await db.table('t').insert({ id: '1' }); + const plan = await db.query('EXPLAIN SELECT * FROM t') as Record; + expect(plan.type).toBe('SELECT'); + expect(plan.table).toBe('t'); + await db.close(); + }); +}); diff --git a/tests/sql-ext2.test.ts b/tests/sql-ext2.test.ts index 12e73bd..6f0df2f 100644 --- a/tests/sql-ext2.test.ts +++ b/tests/sql-ext2.test.ts @@ -287,14 +287,13 @@ describe('[v0.3.1] WAL 批量组提交', () => { await db.defineTable('users', { id: { type: 'string', primaryKey: true }, name: { type: 'string' } }); const engine = db.getEngine() as any; - // v0.4.2: WAL 记录与 count 改用 writeMany 单事务原子写入(记录仍合并为 1 次落盘) - const origWriteMany = engine.backend.writeMany.bind(engine.backend); + // v0.4.5: WAL 改用分片存储(SegmentedWALStore,无 append 接口的后端回退单 key write); + // 组提交语义保持:批量记录仍合并为 1 次底层落盘 const origWrite = engine.backend.write.bind(engine.backend); let walWrites = 0; - engine.backend.writeMany = async (entries: Record) => { - const keys = Object.keys(entries); - if (keys.some((k) => k.startsWith('__wal_') && !k.startsWith('__wal_count'))) walWrites++; - return origWriteMany(entries); + engine.backend.write = async (key: string, data: ArrayBuffer) => { + if (key.startsWith('__wal_')) walWrites++; + return origWrite(key, data); }; await db.table('users').insertMany([ @@ -305,7 +304,6 @@ describe('[v0.3.1] WAL 批量组提交', () => { ]); expect(walWrites).toBe(1); // 4 行合并为 1 次 WAL 落盘 - void origWrite; const rows = await db.query('SELECT * FROM users') as Record[]; expect(rows).toHaveLength(4); await db.close(); diff --git a/tests/utils.test.ts b/tests/utils.test.ts deleted file mode 100644 index bda55b1..0000000 --- a/tests/utils.test.ts +++ /dev/null @@ -1,99 +0,0 @@ -/** - * utils.ts 单元测试模板 - */ - -import { - generateId, - escapeHTML, - debounce, - throttle, - deepMerge, - isBrowser, -} from '../src/utils'; - -describe('generateId', () => { - test('返回字符串', () => { - expect(typeof generateId()).toBe('string'); - }); - - test('多次调用产生不同值', () => { - const ids = new Set(); - for (let i = 0; i < 100; i++) ids.add(generateId()); - expect(ids.size).toBe(100); - }); -}); - -describe('escapeHTML', () => { - test('转义 < > &', () => { - const out = escapeHTML('&b'); - expect(out).toContain('<'); - expect(out).toContain('>'); - expect(out).toContain('&'); - }); - - test('null/undefined 返回空字符串', () => { - expect(escapeHTML(null)).toBe(''); - expect(escapeHTML(undefined)).toBe(''); - }); -}); - -describe('debounce', () => { - test('延迟执行', (done) => { - let called = 0; - const fn = debounce(() => { called++; }, 20); - fn(); - expect(called).toBe(0); - setTimeout(() => { - expect(called).toBe(1); - done(); - }, 50); - }); - - test('多次调用只执行最后一次', (done) => { - let result = 0; - const fn = debounce((v: number) => { result = v; }, 20); - fn(1); - fn(2); - fn(3); - setTimeout(() => { - expect(result).toBe(3); - done(); - }, 50); - }); -}); - -describe('throttle', () => { - test('首次立即执行', () => { - let called = 0; - const fn = throttle(() => { called++; }, 50); - fn(); - expect(called).toBe(1); - }); - - test('限流期内不重复执行', () => { - let called = 0; - const fn = throttle(() => { called++; }, 50); - fn(); - fn(); - fn(); - expect(called).toBe(1); - }); -}); - -describe('deepMerge', () => { - test('浅层合并', () => { - const out = deepMerge({ a: 1, b: 2 }, { b: 3, c: 4 }); - expect(out).toEqual({ a: 1, b: 3, c: 4 }); - }); - - test('深层对象合并', () => { - const out = deepMerge({ obj: { x: 1 } }, { obj: { y: 2 } }); - expect(out).toEqual({ obj: { x: 1, y: 2 } }); - }); -}); - -describe('isBrowser', () => { - test('jsdom 环境下返回 true', () => { - expect(isBrowser()).toBe(true); - }); -}); diff --git a/tests/v025-fixes.test.ts b/tests/v025-fixes.test.ts index b40687b..f1ff619 100644 --- a/tests/v025-fixes.test.ts +++ b/tests/v025-fixes.test.ts @@ -23,8 +23,8 @@ import { createSchema } from '../src/table/schema'; // --------------------------------------------------------------------------- describe('[v0.2.5] P0-1: 版本号统一', () => { - test('VERSION 常量为当前版本(0.4.4)', () => { - expect(VERSION).toBe('0.4.4'); + test('VERSION 常量为当前版本(0.5.1)', () => { + expect(VERSION).toBe('0.5.1'); }); }); @@ -339,7 +339,6 @@ describe('[v0.2.5] P2-12: WAL 大小阈值', () => { const fakeWal = { flush: async () => {}, checkpoint: async () => {}, getBufferedCount: () => 0 }; const cm = new CheckpointManager(fakeLsm, fakeWal, null, 1000, 1024); expect(cm).toBeDefined(); - expect(cm.getOpCount()).toBe(0); }); }); diff --git a/tests/v033-fixes.test.ts b/tests/v033-fixes.test.ts index 6d5d6fc..fdf8b46 100644 --- a/tests/v033-fixes.test.ts +++ b/tests/v033-fixes.test.ts @@ -400,7 +400,7 @@ describe('[v0.3.3] P1-9: Savepoint + MVCC 一致性', () => { describe('[v0.3.3] 端到端', () => { test('全部修复点可共存于 MetonaSqlark API', async () => { - expect(VERSION).toBe('0.4.4'); + expect(VERSION).toBe('0.5.1'); const db = new MetonaSqlark({ name: `e2e-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`, mode: 'memory' }); await db.init(); await db.defineTable('users', { diff --git a/tests/v043-hardening.test.ts b/tests/v043-hardening.test.ts index 86e7d25..3e23917 100644 --- a/tests/v043-hardening.test.ts +++ b/tests/v043-hardening.test.ts @@ -111,7 +111,7 @@ describe('P0 — 事务进行中 checkpoint 不得截断 WAL', () => { await engine.insert('t', [{ id: 'tx1' }]); await engine.rollbackTransaction(); // 事务结束后 checkpoint 可正常截断 - await (engine as any).checkpointManager.forceCheckpoint(); + await (engine as any).checkpointManager.checkpoint(); await (engine as any).backend.close(); (engine as any).opened = false;