From 7563ec71bbce32f6710a182f2d39efc84e4acb65 Mon Sep 17 00:00:00 2001 From: xueyeshang1 Date: Fri, 30 Oct 2026 12:12:32 +0800 Subject: [PATCH 01/27] feat(workspace): enforce directory indexing exclusions (#958) --- ...026-10-28-workspace-indexing-exclusions.md | 136 +++ .../2026-10-08-windows-settings-hierarchy.md | 2 +- .../2026-10-15-macos-settings-hierarchy.md | 5 + .github/workflows/ci-windows.yml | 2 + macos/Resources/en.lproj/Localizable.strings | 24 + .../zh-Hans.lproj/Localizable.strings | 24 + .../WorkspaceProjectionComposition.swift | 7 + .../Lithe/Core/Rust/RustCoreBridge.swift | 30 +- .../Core/Rust/RustWorkspaceOperations.swift | 14 +- .../AppModel/AppModel+FeatureState.swift | 2 +- .../Lithe/Models/AppModel/AppModel.swift | 1 + .../Remote/RemoteWorkspaceRouting.swift | 16 + .../WorkspaceDirectoryMarkStore.swift | 9 + .../Views/App/GitExecutionSettingsView.swift | 10 +- .../Views/App/SettingsSearchVocabulary.swift | 2 +- .../App/WorkspaceIndexingSettingsView.swift | 29 + .../Views/Workspace/ProjectSidebarView.swift | 43 +- .../Workspace/WorkspaceFeatureContracts.swift | 13 + .../Workspace/WorkspaceIndexingPolicy.swift | 32 + .../Workspace/WorkspaceModels.swift | 4 +- .../Application/WorkspaceFeatureModel.swift | 222 ++++- .../LazyProjectTreeInventoryTests.swift | 172 +++- .../LitheTests/RemoteConnectionsTests.swift | 38 + .../SettingsSearchVocabularyTests.swift | 8 + .../WorkspaceDirectoryMarkStoreTests.swift | 20 + rust/lithe-core/src/lsp/interface/engine.rs | 389 +++++++- rust/lithe-core/src/lsp/languages/indexing.rs | 148 ++++ rust/lithe-core/src/lsp/languages/jdt.rs | 49 +- rust/lithe-core/src/lsp/languages/mod.rs | 1 + rust/lithe-core/src/project/files.rs | 157 +++- rust/lithe-core/src/project/indexing.rs | 827 ++++++++++++++++++ rust/lithe-core/src/project/mod.rs | 1 + rust/lithe-core/src/project/search_index.rs | 61 +- rust/lithe-core/src/protocol/command.rs | 6 + rust/lithe-core/src/protocol/contracts.rs | 3 + rust/lithe-core/src/runtime/dispatcher.rs | 33 + shared/contracts/rust-core-api.md | 45 + .../workspace/indexing-policy-v1.json | 23 + shared/i18n/locales/en-US.json | 14 +- shared/i18n/locales/zh-CN.json | 14 +- shared/i18n/messages.json | 143 +++ .../workspace-indexing-exclusions.json | 41 + .../agent/components/agent-composer.tsx | 7 +- .../features/ai/components/agent-launcher.tsx | 8 +- .../editor/hooks/use-lsp-integration.ts | 21 +- .../src/features/editor/lsp/lsp-client.ts | 118 +-- .../components/file-explorer-tree-item.tsx | 11 +- .../components/file-explorer-tree.tsx | 136 ++- .../hooks/use-file-explorer-context-menu.tsx | 13 +- .../stores/directory-marks.test.ts | 137 ++- .../file-explorer/stores/directory-marks.ts | 175 +++- .../stores/workspace-indexing.ts | 111 +++ .../file-search/hooks/use-fff-search.ts | 4 +- .../file-search/lib/file-search-api.ts | 41 +- .../services/file-watcher-listener.ts | 60 +- .../file-system/stores/file-system.store.ts | 12 +- .../global-search/hooks/use-content-search.ts | 7 +- .../quick-open/hooks/use-file-loader.ts | 16 +- .../components/git-execution-settings.tsx | 4 + .../components/git-indexing-settings.test.tsx | 104 +++ .../components/settings-hierarchy.test.tsx | 9 + .../workspace-indexing-settings.tsx | 81 ++ .../features/settings/config/search-index.ts | 8 + .../settings/lib/run-settings-search.test.ts | 9 + .../settings/lib/settings-navigation.ts | 6 + windows/tauri/src/i18n/shared.generated.ts | 22 + 66 files changed, 3726 insertions(+), 214 deletions(-) create mode 100644 .agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md create mode 100644 macos/Sources/Lithe/Views/App/WorkspaceIndexingSettingsView.swift create mode 100644 macos/Sources/LitheCoreContracts/Workspace/WorkspaceIndexingPolicy.swift create mode 100644 rust/lithe-core/src/lsp/languages/indexing.rs create mode 100644 rust/lithe-core/src/project/indexing.rs create mode 100644 shared/fixtures/workspace/indexing-policy-v1.json create mode 100644 shared/platform-feature-matrix/features/workspace-indexing-exclusions.json create mode 100644 windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts create mode 100644 windows/tauri/src/features/settings/components/git-indexing-settings.test.tsx create mode 100644 windows/tauri/src/features/settings/components/workspace-indexing-settings.tsx diff --git a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md new file mode 100644 index 0000000000..2b1f504c15 --- /dev/null +++ b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md @@ -0,0 +1,136 @@ +# Agent 笔记:目录索引排除与项目树可见性分离 + +状态:已实现 + +## 先说结论 + +目录能否在树里浏览,与是否进入 Lithe 自有索引是两种不同的策略。 +手动排除及 Git 自动排除由 Rust Core 判断,两端只存储项目偏好并触发刷新。 +语言服务拥有自己的扫描器;Java 导入排除不能当作整个 Java 资源扫描已停止的证据。 + +## 问题 + +目录标记原本是显示角色,用户把目录标记为已排除后仍可能进入搜索缓存。 +复用隐藏名单可以减少扫描,却会同时让用户无法在树里找到目录,违反浏览需求。 + +## 决策 + +索引策略使用独立版本,版本变化使旧缓存失效,并令在途扫描拒绝发布。 +窗口的释放句柄与扫描版本分开:Git watcher 更新只更换扫描版本,关闭窗口仍能 +释放原句柄;显式替换策略才生成新句柄,迟到的旧窗口不能关闭新窗口的策略。 +macOS 扫描期间修改开关或标记时,发布库存前比较当前策略并补扫,直到结果与 +当前项目偏好一致,不丢弃刷新期间的新设置。跨项目及同根重开时,配置调用按 +完成顺序串行;旧调用迟到成功须先释放其句柄,失败须丢弃,不能覆盖新项目的 +策略、加载状态或错误。关闭项目后尚未完成的安装同样由原调用回收。 +同一策略用于初次扫描、文件名和内容搜索、符号候选以及保存直更。 +例如 `vendor` 被手动排除时,`vendor/examples` 的自动包含例外不能绕过它。 +不要把浏览展开返回的文件重新加入项目库存,否则手动展开会暗中取消排除。 + +Git 忽略语义交给本机 Git 的 `check-ignore`;查询同层目录时批量提交, +再用 `ls-files` 保护已跟踪后代。单个被忽略文件不会被升级成目录排除。 +关闭自动排除保留手动标记与包含例外;应用存储不写入 `.gitignore` 或 `.iml`。 + +两端开关统一放在“设置 › 版本控制 › Git”,紧接程序与凭据设置,删除独立索引 +页面及项目环境页中的重复入口。开关仍绑定当前工作区,Git 页切到全局配置或 +选择子仓库都不改变它的范围;无项目时只显示禁用控件,不创建偏好。作用范围、 +取消排除例外和语言服务限制放入同一说明提示,读取或保存错误仍直接显示。 + +已排除目录的标记子菜单只保留“取消排除”,避免在仍受排除策略约束时直接改成 +源码、资源等角色。手动排除与 Git 自动排除使用同一菜单规则;取消后恢复普通 +目录可用的标记选项。继承手动排除的子目录仍须到对应父目录取消排除。 + +排除目录的文件仍可打开编辑。语言服务工作副本不自动打开这些文件; +已有工作副本在策略变化后关闭并清除其诊断。Java provider 合并导入排除配置, +但构建系统显式声明的模块和依赖仍由构建工具决定。Java 会话保留插件初始化时 +原有的导入排除项,每次初始化、配置查询和动态通知都重新合并当前策略;取消 +Lithe 排除不能清除插件规则,也不能把上一次合并结果作为下一次的原始配置。 + +Windows 附加目录按目标路径选择最近的工作区根,标记、包含例外和角色显示都 +读取该根的项目偏好;所有已配置根在树释放时退役。改名、删除按所属根迁移偏好,跨根移动则把角色、 +排除和包含例外转移到目标根,同时保留两根各自的 Git 开关。不要用主根的设置 +处理附加根。 +远程传输尚未接入索引排除,因此 Git 页显示不支持并禁用开关;不能把这一状态 +显示成 Git 解析失败,更不能声称远程手动排除已经生效。项目树也不提供无效的 +排除动作或显示已排除图标;已有偏好保留,待能力接入后再解释。 + +## 考虑过的备选方案 + +- 复用隐藏路径:会隐藏目录,不能满足浏览与编辑需求。 +- 自行解释 Git 通配符:无法完整复现嵌套规则、否定规则和已跟踪内容。 +- 只过滤搜索结果:无法减少目录访问、文本读取和索引驻留量。 +- 禁用整个语言服务:会影响未排除源码;采用工作副本门禁及 provider 能力提示。 + +## 后果 + +原有隐藏名单仍独立生效。新策略不会让隐藏目录重新出现。 +自动规则的决策缓存按需建立,因此状态中的目录集合不是完整的文件系统清单。 +Git 失败必须保留手动排除并报告失败,不能报告成无忽略规则。 +Java 的导入配置仅属部分支持;Rust 与 Go 分别合并原生目录列表与有序过滤规则, +配置源保持原样,取消排除后恢复原值。原生动态重扫效果仍需运行时验收。 +Python/Basedpyright 的项目配置可以覆盖语言服务器配置,因此不改写其项目配置, +界面明确提示不能保证扫描排除。其他 provider 保持运行。 + +上游依据: +- [rust-analyzer 配置](https://rust-analyzer.github.io/book/configuration#rust-analyzerfilesexclude):相对路径,不支持通配符。 +- [gopls directoryFilters](https://go.dev/gopls/settings#directoryFilters):最后匹配规则优先,并保留上游默认过滤。 +- [Basedpyright 服务设置](https://docs.basedpyright.com/latest/configuration/language-server-settings/):项目配置可以覆盖 exclude。 + +原生过滤器不能准确表示含通配符字符的字面目录时不扩宽排除范围,仍保留 Lithe +自身的字面路径判断。语言服务诊断的迟到通知也经过同一策略,以免关闭工作副本后重新回填。 +已有语言服务运行时,刷新策略必须先通过现有库存扫描器和原生 Git 补齐目录 +决策,再发送配置;不能把刷新后的空缓存当作“没有 Git 排除”推送给服务端。 +同一扫描版本只补齐一次,仍剪枝排除目录,不读取源文件文本。 + +## 验证 + +`cargo test --manifest-path rust/lithe-core/Cargo.toml --lib project::indexing::tests` +验证真实目录访问剪枝、树浏览、旧版本拒绝、保存回填防护、已跟踪文件保护及例外优先级。 +真实语言服务扫描及 Windows 原生运行的验证状态以功能矩阵为准。 + +macOS 实际应用验证发现,组合根包裹的 `RemoteRoutingWorkspaceOperations` +也必须显式转发配置和释放策略;否则协议默认实现会让本地工作区静默跳过排除。 +`RemoteWorkspaceRoutingTests` 用真实 Core 检查配置后的库存和释放后的拒绝行为。 + +真实 JDT LS 1.61.0 验证使用两个独立 Maven 项目:冷启动时,仅保留可见项目的 +入口和 Eclipse 项目元数据。其 `BasicFileDetector` 对目录本身做 glob 匹配, +因此导入规则同时包含目录本身与后代;仅写 `目录/**` 会漏掉目录中的 `pom.xml`。 +热更新排除后,已导入项目仍出现在 JDT LS 项目模型中,不能据此宣称资源扫描停止。 +Maven 聚合项目显式声明两个模块时,两者仍被导入,包含已排除目录中的模块; +索引排除不移除构建系统声明的模块。验收缓存放在项目外,避免 Eclipse 工作区重叠限制。 +真实 gopls 0.17.1 与 rust-analyzer 0.3.3097 已接受原生配置,工作副本门禁生效; +gopls 仍通过 `go/packages.Load` 查询模块树,配置送达不能证明零目录访问。 + +Swift 6.3.3 官方工具链配合本机 macOS 27 SDK 在依赖清单编译阶段崩溃,尚未取得 +固定 Xcode 26.6 环境的验证结果;Swift 6.4 的构建和定向测试结果不能替代该检查。 + +真实 macOS App 已验证手动及 Git 自动排除菜单只保留取消排除,取消后文件恢复搜索; +关闭 Git 自动排除后,嵌套匹配目录的文件也恢复搜索。重启后分别检查了开关 +关闭和开启状态,以及取消排除例外。 + +2026-10-30 使用同一开发构建、隔离偏好的英文原生实例补验:普通目录完整显示 +六种标记;继承手动排除的子目录仅显示取消排除,点击后仍受父目录约束,取消 +父目录排除后子文件恢复搜索。在项目 A 的全局 Git 配置范围关闭自动排除,切回 +仓库范围仍保持关闭;切换项目 B 后默认开启且忽略文件不可搜索,返回 A 则可搜索。 +项目偏好落盘仅包含 A 的关闭值,B 未产生覆盖;两个项目的 Git 配置、忽略文件及 +全局 Git 配置均未变化。原开发包 757 个文件的清单及哈希保持不变。 + +Git 设置入口已在真实 macOS App 检查:索引/忽略搜索定位 Git,欢迎页无项目时 +开关禁用,打开临时项目默认开启,关闭后重启时被忽略文件恢复搜索。子仓库隔离、 +原有例外以及存储失败另由前端回归验证。此前 48 项 Swift 和 20 项前端定向测试 +通过;Swift 使用本机 6.4,前端运行于 macOS,不能替代固定工具链和 Windows +原生验证。界面工具曾间歇超时,其中一次采样为 CoreText 等待字体服务回复; +将隔离实例置于前台后完成上述三项补验,不能把连接失败归因于排除策略。 + +2026-10-30 整合 `preview` 的 `fbb5e578` 后,最终定向回归通过:Swift 79 项、 +Rust 57 项,以及 macOS/Bun 前端 26 项与相关回归 25 项,均有逐项计时报告。 +新增用例覆盖扫描期间改策略、配置迟到成功/失败、同根重开与关闭回收、可见性 +刷新跨代拒绝、Git watcher 刷新后的释放与服务配置、Java 配置往返,以及附加根 +改名/删除/跨根移动和配额失败回滚。固定 Xcode 和 Windows 原生状态仍按前述限制。 + +## 适用范围 + +- `rust/lithe-core/src/project/indexing.rs` +- `rust/lithe-core/src/project/search_index.rs` +- `macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift` +- `windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts` +- `shared/fixtures/workspace/indexing-policy-v1.json` diff --git a/.agents/notes/implemented/feature/2026-10-08-windows-settings-hierarchy.md b/.agents/notes/implemented/feature/2026-10-08-windows-settings-hierarchy.md index c3761e3777..3689e228c5 100644 --- a/.agents/notes/implemented/feature/2026-10-08-windows-settings-hierarchy.md +++ b/.agents/notes/implemented/feature/2026-10-08-windows-settings-hierarchy.md @@ -20,7 +20,7 @@ Windows 的 `settings-navigation.ts` 集中定义可见分层和检索词。2026 | --- | --- | | 外观与行为 | 通用、更新、编辑器、快捷键 | | 插件(一级页面,不属于任何分组) | 插件 | -| 版本控制 | Git | +| 版本控制 | Git(含当前项目的 Git 忽略目录索引排除) | | 构建、执行、部署 | 项目环境、运行配置、Maven | | 语言与框架 | LSP | | 工具 | 终端、日志与诊断 | diff --git a/.agents/notes/implemented/feature/2026-10-15-macos-settings-hierarchy.md b/.agents/notes/implemented/feature/2026-10-15-macos-settings-hierarchy.md index 367da90435..181f84d059 100644 --- a/.agents/notes/implemented/feature/2026-10-15-macos-settings-hierarchy.md +++ b/.agents/notes/implemented/feature/2026-10-15-macos-settings-hierarchy.md @@ -26,6 +26,11 @@ macOS 设置侧栏现在只有七个一级入口:外观与行为、插件、 插件如果带来了新的设置,默认放进“插件”页;只有它新增的是上表中某个分组本来就该有的能力(例如新的版本控制系统)时,才放进那个分组。 +“根据 Git 忽略规则自动排除目录”放在“版本控制 › Git”的程序与凭据区域之后, +不再提供独立的“项目索引”页面。它是当前工作区的 Lithe 偏好,始终沿用原来的 +项目存储,不随 Git 页的全局/仓库配置范围或所选子仓库改变;未打开项目时禁用。 +搜索“索引”“忽略”“排除”及对应英文词也必须定位到 Git 页面。 + AI 分组内按“AI 服务商 → Agent 管理 → 指令 → 技能 → Hooks → MCP 配置 → AI 与提交”排列:先放基础配置,再放行为规则和扩展能力,最后放具体应用功能。顺序仍只在 `SettingsGroup.categories` 中声明,搜索过滤后的侧栏也沿用这一顺序。 ### 二级折叠:AI › 资源库 diff --git a/.github/workflows/ci-windows.yml b/.github/workflows/ci-windows.yml index 91672e2b87..eafb2dd2bb 100644 --- a/.github/workflows/ci-windows.yml +++ b/.github/workflows/ci-windows.yml @@ -622,6 +622,8 @@ jobs: # Keep DOM setup, native spies and store mocks isolated between suites. node $runner --suite-timeout-ms 60000 --report .artifacts/test-stability/windows-settings-hierarchy.json -- src/features/settings/components/settings-hierarchy.test.tsx if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } + node $runner --suite-timeout-ms 30000 --report .artifacts/test-stability/windows-git-indexing-settings.json -- src/features/settings/components/git-indexing-settings.test.tsx src/features/settings/lib/run-settings-search.test.ts + if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } node $runner --suite-timeout-ms 60000 --report .artifacts/test-stability/windows-settings-theme-sync.json -- src/features/settings/lib/settings-theme-sync.test.ts if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } node $runner --suite-timeout-ms 60000 --report .artifacts/test-stability/windows-settings-select.json -- src/ui/settings-select.test.tsx diff --git a/macos/Resources/en.lproj/Localizable.strings b/macos/Resources/en.lproj/Localizable.strings index 40734d2a1c..e6d0872649 100644 --- a/macos/Resources/en.lproj/Localizable.strings +++ b/macos/Resources/en.lproj/Localizable.strings @@ -346,6 +346,7 @@ "Applications" = "Applications"; "Applies immediately" = "Applies immediately"; "Applies the next time the language server starts." = "Applies the next time the language server starts."; +"Applies to the current project. Excluded directories remain browsable. Cancel Exclusion creates a project exception without changing Git rules." = "Applies only to the current project, regardless of the Git configuration scope. Excluded directories remain browsable. Cancel Exclusion creates a project exception without changing Git rules.\n\nNative exclusion settings are merged for Java imports, Rust and Go. Java resources already imported may still be scanned. Python project configuration can override server exclusions; other providers remain active without a verified scan-exclusion guarantee."; "Apply" = "Apply"; "Apply %@ to the current branch." = "Apply %@ to the current branch."; "Apply AI-generated content?" = "Apply AI-generated content?"; @@ -414,6 +415,7 @@ "Automatic tries your SSH agent and keys first, then asks for a password. Lithe asks in a dialog whenever the server needs an answer, such as a password, a passphrase, or a verification code." = "Automatic tries your SSH agent and keys first, then asks for a password. Lithe asks in a dialog whenever the server needs an answer, such as a password, a passphrase, or a verification code."; "Automatic uses a project mvnw first, then detected Maven, then mvnd." = "Automatic uses a project mvnw first, then detected Maven, then mvnd."; "Automatically accept all file edits" = "Automatically approve file edits; other actions follow permission rules."; +"Automatically exclude Git-ignored directories" = "Automatically exclude Git-ignored directories"; "Automatically generated" = "Automatically generated"; "Automatically identified" = "Automatically identified"; "Available" = "Available"; @@ -507,6 +509,7 @@ "Camera and microphone in use" = "Camera and microphone in use"; "Camera in use" = "Camera in use"; "Cancel" = "Cancel"; +"Cancel Exclusion" = "Cancel Exclusion"; "Cancel Quit" = "Cancel Quit"; "Cancel running Git operations" = "Cancel running Git operations"; "Cancelled" = "Cancelled"; @@ -1172,6 +1175,7 @@ "Directories" = "Directories"; "Directory" = "Directory"; "Directory imports preserve scripts, templates and other supporting files. Existing skills are never overwritten." = "Directory imports preserve scripts, templates and other supporting files. Existing skills are never overwritten."; +"Directory indexing exclusions are not supported for remote projects." = "Directory indexing exclusions are not supported for remote projects."; "Directory or file name" = "Directory or file name"; "Directory: %@" = "Directory: %@"; "Disable" = "Disable"; @@ -1391,6 +1395,8 @@ "Exclude from dependency tree" = "Exclude from dependency tree"; "Excluded" = "Excluded"; "Excluded Paths" = "Excluded Paths"; +"Excluded from indexing by Git ignore rules" = "Excluded from indexing by Git ignore rules"; +"Excluded from indexing by a parent directory" = "Excluded from indexing by a parent directory"; "Executable" = "Executable"; "Execute Maven Goal" = "Execute Maven Goal"; "Execute Maven goal" = "Execute Maven goal"; @@ -1580,6 +1586,7 @@ "Git executable: %@" = "Git executable: %@"; "Git execution" = "Git execution"; "Git exited with code %d" = "Git exited with code %d"; +"Git ignore exclusions could not be fully resolved. Manual exclusions remain active." = "Git ignore exclusions could not be fully resolved. Manual exclusions remain active."; "Git is preparing the sequencer." = "Git is preparing the sequencer."; "Git is ready" = "Git is ready"; "Git not found" = "Git not found"; @@ -1959,6 +1966,7 @@ "Lithe could not find a runnable Git." = "Lithe could not find a runnable Git."; "Lithe default" = "Lithe default"; "Lithe does not save passwords. Credentials are stored by the Git credential helper you choose." = "Lithe does not save passwords. Credentials are stored by the Git credential helper you choose."; +"Lithe excludes these directories from its own indexes. Third-party language servers may still scan them when their provider does not support exclusions." = "Native exclusion settings are merged for Java imports, Rust and Go. Java resources already imported may still be scanned. Python project configuration can override server exclusions; other providers remain active without a verified scan-exclusion guarantee."; "Lithe first asks each program to stop, giving it this long to save its work and exit. Programs still running afterwards are force-stopped." = "Lithe first asks each program to stop, giving it this long to save its work and exit. Programs still running afterwards are force-stopped."; "Lithe has not yet completed a real conversation with this adapter version." = "Lithe has not yet completed a real conversation with this adapter version."; "Lithe installs the ACP adapter package, not the vendor CLI. The two are independent and share the CLI's configuration." = "Lithe installs the ACP adapter package, not the vendor CLI. The two are independent and share the CLI's configuration."; @@ -2096,6 +2104,7 @@ "Manage…" = "Manage…"; "Manual" = "Manual"; "Manual stop" = "Manual stop"; +"Manually excluded from indexing" = "Manually excluded from indexing"; "Mark Target As" = "Mark Target As"; "Mark as Resolved" = "Mark as Resolved"; "Markdown Support" = "Markdown Support"; @@ -2761,6 +2770,7 @@ "Programs started in Lithe that left their terminal or tool to keep running on their own, like daemons or background dev servers. They are listed together when you quit, and you choose which ones to end. Only programs started in this Lithe are listed; containers and services started outside Lithe are never touched." = "Programs started in Lithe that left their terminal or tool to keep running on their own, like daemons or background dev servers. They are listed together when you quit, and you choose which ones to end. Only programs started in this Lithe are listed; containers and services started outside Lithe are never touched."; "Project" = "Project"; "Project Errors" = "Project Errors"; +"Project Indexing" = "Project Indexing"; "Project JDK" = "Project JDK"; "Project Local History" = "Project Local History"; "Project Template" = "Project Template"; @@ -2800,6 +2810,7 @@ "Provider details" = "Provider details"; "Provider name" = "Provider name"; "Provider requires an API key" = "Provider requires an API key"; +"Provider-dependent" = "Provider-dependent"; "Providers" = "Providers"; "Provides" = "Provides"; "Prune Stale Records" = "Prune Stale Records"; @@ -3527,6 +3538,7 @@ "Solidity Support" = "Solidity Support"; "Some MCP configuration files could not be restored: %@. Refresh and check these files before retrying." = "Some MCP configuration files could not be restored: %@. Refresh and check these files before retrying."; "Some dependencies are not shown." = "Some dependencies are not shown."; +"Some directories could not be scanned. Automatic project analysis was not refreshed." = "Some directories could not be scanned. Automatic project analysis was not refreshed."; "Some project folders could not be read. Existing run configurations were retained. Restore access, then regenerate configurations." = "Some project folders could not be read. Existing run configurations were retained. Restore access, then regenerate configurations."; "Some special files could not be copied" = "Some special files could not be copied"; "Sort by Last Updated" = "Sort by Last Updated"; @@ -4614,6 +4626,18 @@ "git.log.olderCommitsFailed" = "Could not load older commits. Refresh history"; "git.unifiedView" = "Unified view"; "https://github.com/owner/repository" = "https://github.com/owner/repository"; +"indexing.autoGit" = "Automatically exclude Git-ignored directories"; +"indexing.cancelExclusion" = "Cancel Exclusion"; +"indexing.description" = "Applies only to the current project, regardless of the Git configuration scope. Excluded directories remain browsable. Cancel Exclusion creates a project exception without changing Git rules.\n\nNative exclusion settings are merged for Java imports, Rust and Go. Java resources already imported may still be scanned. Python project configuration can override server exclusions; other providers remain active without a verified scan-exclusion guarantee."; +"indexing.gitFailed" = "Git ignore exclusions could not be fully resolved. Manual exclusions remain active."; +"indexing.gitReason" = "Excluded from indexing by Git ignore rules"; +"indexing.incomplete" = "Some directories could not be scanned. Automatic project analysis was not refreshed."; +"indexing.inheritedReason" = "Excluded from indexing by a parent directory"; +"indexing.languageDescription" = "Native exclusion settings are merged for Java imports, Rust and Go. Java resources already imported may still be scanned. Python project configuration can override server exclusions; other providers remain active without a verified scan-exclusion guarantee."; +"indexing.manualReason" = "Manually excluded from indexing"; +"indexing.providerDependent" = "Provider-dependent"; +"indexing.remoteUnsupported" = "Directory indexing exclusions are not supported for remote projects."; +"indexing.title" = "Project Indexing"; "just now" = "just now"; "local commit(s)" = "local commit(s)"; "macOS could not prepare the update disk image. Download the release manually and try again." = "macOS could not prepare the update disk image. Download the release manually and try again."; diff --git a/macos/Resources/zh-Hans.lproj/Localizable.strings b/macos/Resources/zh-Hans.lproj/Localizable.strings index 284cb78df5..8715ec4007 100644 --- a/macos/Resources/zh-Hans.lproj/Localizable.strings +++ b/macos/Resources/zh-Hans.lproj/Localizable.strings @@ -346,6 +346,7 @@ "Applications" = "应用"; "Applies immediately" = "立即生效"; "Applies the next time the language server starts." = "下次启动语言服务器时生效。"; +"Applies to the current project. Excluded directories remain browsable. Cancel Exclusion creates a project exception without changing Git rules." = "仅作用于当前项目,不受 Git 配置范围影响。已排除目录仍可浏览;取消排除会保存项目例外,不修改 Git 规则。\n\n已合并 Java 导入、Rust 和 Go 的原生排除配置。Java 已导入资源仍可能被扫描;Python 项目配置可覆盖服务端排除。其他服务保持运行,尚未保证其后台扫描排除效果。"; "Apply" = "应用"; "Apply %@ to the current branch." = "将提交 %@ 应用到当前分支。"; "Apply AI-generated content?" = "要应用 AI 生成的内容吗?"; @@ -414,6 +415,7 @@ "Automatic tries your SSH agent and keys first, then asks for a password. Lithe asks in a dialog whenever the server needs an answer, such as a password, a passphrase, or a verification code." = "“自动”会先尝试 SSH Agent 和密钥,再询问密码。服务器需要回答时(例如密码、私钥口令或验证码),Lithe 会弹窗询问。"; "Automatic uses a project mvnw first, then detected Maven, then mvnd." = "自动模式会优先使用项目 mvnw,其次使用检测到的 Maven,最后使用 mvnd。"; "Automatically accept all file edits" = "自动批准文件编辑,其他操作仍按权限规则处理。"; +"Automatically exclude Git-ignored directories" = "根据 Git 忽略规则自动排除目录"; "Automatically generated" = "自动生成"; "Automatically identified" = "自动识别"; "Available" = "可用"; @@ -507,6 +509,7 @@ "Camera and microphone in use" = "摄像头和麦克风使用中"; "Camera in use" = "摄像头使用中"; "Cancel" = "取消"; +"Cancel Exclusion" = "取消排除"; "Cancel Quit" = "取消退出"; "Cancel running Git operations" = "取消正在运行的 Git 操作"; "Cancelled" = "已取消"; @@ -1172,6 +1175,7 @@ "Directories" = "目录"; "Directory" = "目录"; "Directory imports preserve scripts, templates and other supporting files. Existing skills are never overwritten." = "导入目录会保留脚本、模板等配套文件,不会覆盖已有技能。"; +"Directory indexing exclusions are not supported for remote projects." = "远程项目暂不支持目录索引排除。"; "Directory or file name" = "目录或文件名"; "Directory: %@" = "目录:%@"; "Disable" = "禁用"; @@ -1391,6 +1395,8 @@ "Exclude from dependency tree" = "从依赖树中排除"; "Excluded" = "已排除"; "Excluded Paths" = "已排除路径"; +"Excluded from indexing by Git ignore rules" = "根据 Git 忽略规则排除索引"; +"Excluded from indexing by a parent directory" = "继承父目录的索引排除"; "Executable" = "可执行文件"; "Execute Maven Goal" = "执行 Maven 目标"; "Execute Maven goal" = "执行 Maven 目标"; @@ -1580,6 +1586,7 @@ "Git executable: %@" = "Git 可执行文件:%@"; "Git execution" = "Git 执行"; "Git exited with code %d" = "Git 已退出,退出码为 %d"; +"Git ignore exclusions could not be fully resolved. Manual exclusions remain active." = "无法完整解析 Git 忽略规则,手动排除仍然生效。"; "Git is preparing the sequencer." = "Git 正在准备变基步骤。"; "Git is ready" = "Git 已就绪"; "Git not found" = "未找到 Git"; @@ -1959,6 +1966,7 @@ "Lithe could not find a runnable Git." = "Lithe 未找到可运行的 Git。"; "Lithe default" = "Lithe 默认"; "Lithe does not save passwords. Credentials are stored by the Git credential helper you choose." = "Lithe 不保存密码,凭据由你选择的 Git 凭据助手保存。"; +"Lithe excludes these directories from its own indexes. Third-party language servers may still scan them when their provider does not support exclusions." = "已合并 Java 导入、Rust 和 Go 的原生排除配置。Java 已导入资源仍可能被扫描;Python 项目配置可覆盖服务端排除。其他服务保持运行,尚未保证其后台扫描排除效果。"; "Lithe first asks each program to stop, giving it this long to save its work and exit. Programs still running afterwards are force-stopped." = "Lithe 会先请求每个程序停止,并给它这么长的时间保存工作并退出。超时后仍在运行的程序会被强制结束。"; "Lithe has not yet completed a real conversation with this adapter version." = "Lithe 尚未用这个适配器版本完成过真实对话。"; "Lithe installs the ACP adapter package, not the vendor CLI. The two are independent and share the CLI's configuration." = "Lithe 安装的是 ACP 适配器包,而不是厂商的 CLI。两者相互独立,并共用 CLI 的配置。"; @@ -2096,6 +2104,7 @@ "Manage…" = "管理…"; "Manual" = "手动"; "Manual stop" = "手动停止"; +"Manually excluded from indexing" = "手动排除索引"; "Mark Target As" = "将目标标记为"; "Mark as Resolved" = "标记为已解决"; "Markdown Support" = "Markdown 支持"; @@ -2761,6 +2770,7 @@ "Programs started in Lithe that left their terminal or tool to keep running on their own, like daemons or background dev servers. They are listed together when you quit, and you choose which ones to end. Only programs started in this Lithe are listed; containers and services started outside Lithe are never touched." = "在 Lithe 中启动、但已脱离终端或工具独立运行的程序,例如守护进程或后台开发服务器。退出时会把它们列在一起,由你选择结束哪些。只会列出在本次 Lithe 中启动的程序;在 Lithe 之外启动的容器和服务一律不处理。"; "Project" = "项目"; "Project Errors" = "项目错误"; +"Project Indexing" = "项目索引"; "Project JDK" = "项目 JDK"; "Project Local History" = "项目本地历史"; "Project Template" = "项目模板"; @@ -2800,6 +2810,7 @@ "Provider details" = "服务商详情"; "Provider name" = "服务商名称"; "Provider requires an API key" = "服务商需要 API 密钥"; +"Provider-dependent" = "取决于语言服务"; "Providers" = "供应商管理"; "Provides" = "提供"; "Prune Stale Records" = "清理陈旧记录"; @@ -3527,6 +3538,7 @@ "Solidity Support" = "Solidity 支持"; "Some MCP configuration files could not be restored: %@. Refresh and check these files before retrying." = "部分 MCP 配置文件未能恢复:%@。请刷新并检查这些文件后重试。"; "Some dependencies are not shown." = "部分依赖未显示。"; +"Some directories could not be scanned. Automatic project analysis was not refreshed." = "部分目录无法扫描,未刷新项目自动分析。"; "Some project folders could not be read. Existing run configurations were retained. Restore access, then regenerate configurations." = "部分项目目录无法读取,已有运行配置已保留。请恢复访问权限后重新识别运行配置。"; "Some special files could not be copied" = "部分特殊文件未能复制"; "Sort by Last Updated" = "按最近更新排序"; @@ -4614,6 +4626,18 @@ "git.log.olderCommitsFailed" = "无法加载更早的提交,点击刷新历史"; "git.unifiedView" = "统一视图"; "https://github.com/owner/repository" = "https://github.com/owner/repository"; +"indexing.autoGit" = "根据 Git 忽略规则自动排除目录"; +"indexing.cancelExclusion" = "取消排除"; +"indexing.description" = "仅作用于当前项目,不受 Git 配置范围影响。已排除目录仍可浏览;取消排除会保存项目例外,不修改 Git 规则。\n\n已合并 Java 导入、Rust 和 Go 的原生排除配置。Java 已导入资源仍可能被扫描;Python 项目配置可覆盖服务端排除。其他服务保持运行,尚未保证其后台扫描排除效果。"; +"indexing.gitFailed" = "无法完整解析 Git 忽略规则,手动排除仍然生效。"; +"indexing.gitReason" = "根据 Git 忽略规则排除索引"; +"indexing.incomplete" = "部分目录无法扫描,未刷新项目自动分析。"; +"indexing.inheritedReason" = "继承父目录的索引排除"; +"indexing.languageDescription" = "已合并 Java 导入、Rust 和 Go 的原生排除配置。Java 已导入资源仍可能被扫描;Python 项目配置可覆盖服务端排除。其他服务保持运行,尚未保证其后台扫描排除效果。"; +"indexing.manualReason" = "手动排除索引"; +"indexing.providerDependent" = "取决于语言服务"; +"indexing.remoteUnsupported" = "远程项目暂不支持目录索引排除。"; +"indexing.title" = "项目索引"; "just now" = "刚刚"; "local commit(s)" = "个本地提交"; "macOS could not prepare the update disk image. Download the release manually and try again." = "macOS 无法准备更新磁盘映像,请手动下载版本后重试。"; diff --git a/macos/Sources/Lithe/Application/Composition/WorkspaceProjectionComposition.swift b/macos/Sources/Lithe/Application/Composition/WorkspaceProjectionComposition.swift index 3aa544c134..e40d659a08 100644 --- a/macos/Sources/Lithe/Application/Composition/WorkspaceProjectionComposition.swift +++ b/macos/Sources/Lithe/Application/Composition/WorkspaceProjectionComposition.swift @@ -82,6 +82,13 @@ enum WorkspaceProjectionComposition { onSnapshotLoaded: { [weak model] snapshot, isInitialLoad in guard let model else { return } model.suggestJavaPluginIfNeeded(files: snapshot.files) + if !isInitialLoad { + // Core may have withdrawn working copies after an exclusion change. + // Reconcile open buffers so cancelling exclusion restores language features. + for document in model.openDocuments { + _ = model.activateLanguageServerIfAvailable(for: document) + } + } // Loading a ready inventory also resumes deferred run actions. await model.loadProjectServices( at: snapshot.root.url, diff --git a/macos/Sources/Lithe/Core/Rust/RustCoreBridge.swift b/macos/Sources/Lithe/Core/Rust/RustCoreBridge.swift index fa0a96b17b..85e6ead36e 100644 --- a/macos/Sources/Lithe/Core/Rust/RustCoreBridge.swift +++ b/macos/Sources/Lithe/Core/Rust/RustCoreBridge.swift @@ -81,9 +81,10 @@ struct RustCoreBridge: Sendable, IncrementalLanguageServerRuntimeCore { let root: WorkspaceNodePayload let files: [String] let nestedWorktrees: [String] + let incompleteDirectories: [String] private enum CodingKeys: String, CodingKey { - case root, files, nestedWorktrees + case root, files, nestedWorktrees, incompleteDirectories } init(from decoder: any Decoder) throws { @@ -91,6 +92,7 @@ struct RustCoreBridge: Sendable, IncrementalLanguageServerRuntimeCore { root = try container.decode(WorkspaceNodePayload.self, forKey: .root) files = try container.decode([String].self, forKey: .files) nestedWorktrees = try container.decodeIfPresent([String].self, forKey: .nestedWorktrees) ?? [] + incompleteDirectories = try container.decodeIfPresent([String].self, forKey: .incompleteDirectories) ?? [] } func makeSnapshot(at rootURL: URL) -> WorkspaceSnapshot { @@ -99,7 +101,7 @@ struct RustCoreBridge: Sendable, IncrementalLanguageServerRuntimeCore { return WorkspaceSnapshot( root: FileNode(url: rootURL, isDirectory: true, children: nil), files: files.map { rootURL.appendingPathComponent($0) }, - nestedWorktrees: nested + nestedWorktrees: nested, incompleteDirectories: incompleteDirectories ) } // Preserve Core's file order while sharing URLs with the full tree. @@ -109,7 +111,7 @@ struct RustCoreBridge: Sendable, IncrementalLanguageServerRuntimeCore { return WorkspaceSnapshot( root: rootNode, files: files.map { fileURLs[$0] ?? rootURL.appendingPathComponent($0) }, - nestedWorktrees: nested + nestedWorktrees: nested, incompleteDirectories: incompleteDirectories ) } } @@ -2433,6 +2435,28 @@ struct RustCoreBridge: Sendable, IncrementalLanguageServerRuntimeCore { return String(cString: lithe_bridge_version()) } + func releaseIndexing(at rootURL: URL, revision: UInt64) { + struct Payload: Encodable { let root: String; let revision: UInt64 } + struct Response: Decodable { let released: Bool } + let _: Response? = execute(command: "workspace.releaseIndexing", payload: Payload(root: rootURL.path, revision: revision)) + } + + func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool) throws -> WorkspaceIndexingStatus { + struct Request: Encodable { + let root: String + let manualExcludedDirectories: [String] + let includedDirectories: [String] + let gitIgnoreEnabled: Bool + let refresh: Bool + } + return try executeResult(command: "workspace.configureIndexing", payload: Request( + root: rootURL.standardizedFileURL.path, + manualExcludedDirectories: policy.manualExcludedDirectories, + includedDirectories: policy.includedDirectories, + gitIgnoreEnabled: policy.gitIgnoreEnabled, refresh: refresh + )).get() + } + func snapshot( at rootURL: URL, hiddenDirectoryNames: [String] = [], diff --git a/macos/Sources/Lithe/Core/Rust/RustWorkspaceOperations.swift b/macos/Sources/Lithe/Core/Rust/RustWorkspaceOperations.swift index 403955930c..7ec77b3a7c 100644 --- a/macos/Sources/Lithe/Core/Rust/RustWorkspaceOperations.swift +++ b/macos/Sources/Lithe/Core/Rust/RustWorkspaceOperations.swift @@ -12,6 +12,14 @@ struct RustWorkspaceOperations: WorkspaceOperations, Sendable { directoryListings.invalidate() } + func releaseIndexing(at rootURL: URL, revision: UInt64) { + core.releaseIndexing(at: rootURL, revision: revision) + } + + func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool) throws -> WorkspaceIndexingStatus { + try core.configureIndexing(at: rootURL, policy: policy, refresh: refresh) + } + func snapshot( at rootURL: URL, visibilityRules: FileVisibilityRules @@ -23,10 +31,8 @@ struct RustWorkspaceOperations: WorkspaceOperations, Sendable { )?.makeSnapshot(at: rootURL) { return snapshot } - return FileSystemWorkspaceSnapshotBuilder().snapshot( - at: rootURL, - visibilityRules: visibilityRules - ) + // A failed policy-aware scan must not fall back to an unfiltered inventory. + return nil } func childRows( diff --git a/macos/Sources/Lithe/Models/AppModel/AppModel+FeatureState.swift b/macos/Sources/Lithe/Models/AppModel/AppModel+FeatureState.swift index 668796a7e8..65e9c9d8d0 100644 --- a/macos/Sources/Lithe/Models/AppModel/AppModel+FeatureState.swift +++ b/macos/Sources/Lithe/Models/AppModel/AppModel+FeatureState.swift @@ -12,7 +12,7 @@ extension AppModel { var rootNode: FileNode? { workspaceFeature.rootNode } var projectFiles: [URL] { workspaceFeature.projectFiles } var projectDirectoryMarks: [String: WorkspaceDirectoryMark] { - workspaceFeature.directoryMarks + workspaceFeature.indexingStatus.excludedDirectories.keys.reduce(into: workspaceFeature.directoryMarks) { marks, path in marks[path] = .excluded } } var javaEnvironmentReport: JavaEnvironmentReport? { runtimeFeature.javaEnvironmentReport diff --git a/macos/Sources/Lithe/Models/AppModel/AppModel.swift b/macos/Sources/Lithe/Models/AppModel/AppModel.swift index 49d064aca5..e27e7ce15b 100644 --- a/macos/Sources/Lithe/Models/AppModel/AppModel.swift +++ b/macos/Sources/Lithe/Models/AppModel/AppModel.swift @@ -1366,6 +1366,7 @@ final class AppModel: ObservableObject, Identifiable, UnsavedDocumentHandling { @discardableResult func activateLanguageServerIfAvailable(for document: EditorDocument) -> Bool { + guard !workspaceFeature.isIndexExcluded(document.url) else { return false } guard let identity = currentWorkspaceIdentity, let descriptor = languageProviderCatalog.provider(for: document.url) else { return false } let workspaceURL = identity.url diff --git a/macos/Sources/Lithe/Services/Remote/RemoteWorkspaceRouting.swift b/macos/Sources/Lithe/Services/Remote/RemoteWorkspaceRouting.swift index fd3c757400..b06c906fd1 100644 --- a/macos/Sources/Lithe/Services/Remote/RemoteWorkspaceRouting.swift +++ b/macos/Sources/Lithe/Services/Remote/RemoteWorkspaceRouting.swift @@ -161,6 +161,22 @@ struct RemoteRoutingWorkspaceOperations: WorkspaceOperations { func invalidateDirectoryListings() { local.invalidateDirectoryListings() } + func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool) throws -> WorkspaceIndexingStatus { + guard registry.binding(forRoot: rootURL) == nil else { + // Remote indexing is not supported by the current transport. Never + // configure the local placeholder as if it were the remote project. + var status = WorkspaceIndexingStatus() + status.supportsExclusions = false + return status + } + return try local.configureIndexing(at: rootURL, policy: policy, refresh: refresh) + } + + func releaseIndexing(at rootURL: URL, revision: UInt64) { + guard registry.binding(forRoot: rootURL) == nil else { return } + local.releaseIndexing(at: rootURL, revision: revision) + } + func snapshot(at rootURL: URL, visibilityRules: FileVisibilityRules) -> WorkspaceSnapshot? { guard let binding = registry.binding(forRoot: rootURL) else { return local.snapshot(at: rootURL, visibilityRules: visibilityRules) diff --git a/macos/Sources/Lithe/Services/Workspace/WorkspaceDirectoryMarkStore.swift b/macos/Sources/Lithe/Services/Workspace/WorkspaceDirectoryMarkStore.swift index 5ca7196c10..a3d114799e 100644 --- a/macos/Sources/Lithe/Services/Workspace/WorkspaceDirectoryMarkStore.swift +++ b/macos/Sources/Lithe/Services/Workspace/WorkspaceDirectoryMarkStore.swift @@ -32,6 +32,15 @@ final class WorkspaceDirectoryMarkStore: WorkspaceDirectoryMarkStoring, @uncheck store.set(try encoder.encode(payload), forKey: key(for: workspaceURL)) } + func loadIndexingSettings(for workspaceURL: URL) throws -> WorkspaceIndexingSettings { + guard let data = store.data(forKey: "lithe.workspace-indexing." + workspaceURL.standardizedFileURL.path) else { return WorkspaceIndexingSettings() } + return try JSONDecoder().decode(WorkspaceIndexingSettings.self, from: data) + } + + func saveIndexingSettings(_ settings: WorkspaceIndexingSettings, for workspaceURL: URL) throws { + store.set(try JSONEncoder().encode(settings), forKey: "lithe.workspace-indexing." + workspaceURL.standardizedFileURL.path) + } + private func key(for workspaceURL: URL) -> String { Self.keyPrefix + workspaceURL.standardizedFileURL.path } diff --git a/macos/Sources/Lithe/Views/App/GitExecutionSettingsView.swift b/macos/Sources/Lithe/Views/App/GitExecutionSettingsView.swift index d19408a091..94ef8ab893 100644 --- a/macos/Sources/Lithe/Views/App/GitExecutionSettingsView.swift +++ b/macos/Sources/Lithe/Views/App/GitExecutionSettingsView.swift @@ -2,6 +2,7 @@ import LitheModuleAPI import AppKit import SwiftUI import LitheGitModule +import LitheWorkspaceModule /// Version Control › Git. Ordered the way people set Git up: the program and /// credentials, then who commits, then how the repository syncs with its @@ -21,11 +22,14 @@ struct GitSettingsPage: View { feature: feature, execution: feature.executionSettings, identity: feature.identitySettings, - settings: settings + settings: settings, + workspace: model.workspaceFeature ) } else { VStack(alignment: .leading, spacing: 0) { - GitProgramSection(settings: settings, execution: nil) { EmptyView() } + GitProgramSection(settings: settings, execution: nil) { + WorkspaceIndexingSettingsView(feature: model.workspaceFeature) + } GitLocalChangesSection(settings: settings) } } @@ -43,6 +47,7 @@ private struct GitSettingsLoadedPage: View { @ObservedObject var execution: GitExecutionSettingsFeatureModel @ObservedObject var identity: GitRepositorySetupFeatureModel @ObservedObject var settings: AppSettings + @ObservedObject var workspace: WorkspaceFeatureModel @State private var scope = GitIdentityScope.local @State private var remoteURL: String? @State private var showsKeys = false @@ -67,6 +72,7 @@ private struct GitSettingsLoadedPage: View { GitProgramSection(settings: settings, execution: execution) { configurationRows(where: { $0.hasPrefix("credential.") }) + WorkspaceIndexingSettingsView(feature: workspace) } LitheSettingsSection(title: "Commit", accessory: { diff --git a/macos/Sources/Lithe/Views/App/SettingsSearchVocabulary.swift b/macos/Sources/Lithe/Views/App/SettingsSearchVocabulary.swift index c2c677d372..2957c70d4e 100644 --- a/macos/Sources/Lithe/Views/App/SettingsSearchVocabulary.swift +++ b/macos/Sources/Lithe/Views/App/SettingsSearchVocabulary.swift @@ -42,7 +42,7 @@ enum SettingsSearchVocabulary { case .providers: ["AI Providers", "AI provider", "Model", "API key", "Endpoint", "Responses", "Anthropic"] case .git: - ["Git", "Fetch", "Tags", "Submodules", "Prune", "Commit identity", "Committer name", "Committer email", "Configuration scope", "user.name", "user.email"] + ["Git", "Fetch", "Tags", "Submodules", "Prune", "Commit identity", "Committer name", "Committer email", "Configuration scope", "user.name", "user.email", "Project Indexing", "Automatically exclude Git-ignored directories", "Excluded", "Cancel Exclusion"] case .updates: ["Updates", "Application version", "Update status", "Check for Updates", "Update channel", "Stable (Recommended)", "AutoBuild Rolling"] case .processTermination: diff --git a/macos/Sources/Lithe/Views/App/WorkspaceIndexingSettingsView.swift b/macos/Sources/Lithe/Views/App/WorkspaceIndexingSettingsView.swift new file mode 100644 index 0000000000..84079588a5 --- /dev/null +++ b/macos/Sources/Lithe/Views/App/WorkspaceIndexingSettingsView.swift @@ -0,0 +1,29 @@ +import SwiftUI +import LitheWorkspaceModule + +struct WorkspaceIndexingSettingsView: View { + @ObservedObject var feature: WorkspaceFeatureModel + + var body: some View { + Group { + LitheSettingsRow("Automatically exclude Git-ignored directories", info: "indexing.description") { + Toggle("Automatically exclude Git-ignored directories", isOn: Binding( + get: { feature.indexingSettings.gitIgnoreEnabled }, + set: { enabled in Task { await feature.setGitIgnoreIndexing(enabled) } } + )) + .labelsHidden() + .toggleStyle(.switch) + .controlSize(.small) + .disabled(feature.rootNode == nil || !feature.indexingStatus.supportsExclusions) + } + if !feature.indexingStatus.supportsExclusions { + Text("Directory indexing exclusions are not supported for remote projects.") + .foregroundStyle(LitheTheme.secondaryText) + } else if feature.indexingStatus.gitIgnoreFailed { + Text("Git ignore exclusions could not be fully resolved. Manual exclusions remain active.") + .foregroundStyle(LitheTheme.secondaryText) + } + if let error = feature.indexingError { Text(error).foregroundStyle(.red) } + } + } +} diff --git a/macos/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift b/macos/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift index bae6a7845d..e0f32d7c6d 100644 --- a/macos/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift +++ b/macos/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift @@ -169,7 +169,10 @@ struct ProjectSidebarView: View { gitStatus: ProjectGitStatusSnapshot( repositoryRoot: model.gitRepositoryRoot, projection: model.gitTreeStatusProjection, vcs: vcsStatus ), - directoryMarks: model.projectDirectoryMarks, + directoryMarks: model.workspaceFeature.indexingStatus.supportsExclusions + ? model.projectDirectoryMarks : model.projectDirectoryMarks.filter { $0.value != .excluded }, + indexingReasons: model.workspaceFeature.indexingStatus.excludedDirectories, + supportsIndexingExclusions: model.workspaceFeature.indexingStatus.supportsExclusions, revealRequest: model.projectTreeRevealRequest, stateSnapshot: treeState, state: $treeState @@ -340,6 +343,8 @@ private struct ProjectSidebarTree: View, Equatable { let activeDocumentURL: URL? let gitStatus: ProjectGitStatusSnapshot let directoryMarks: [String: WorkspaceDirectoryMark] + let indexingReasons: [String: String] + let supportsIndexingExclusions: Bool let revealRequest: ProjectTreeRevealRequest? let stateSnapshot: ProjectTreeViewState @Binding var state: ProjectTreeViewState @@ -347,7 +352,8 @@ private struct ProjectSidebarTree: View, Equatable { static func == (lhs: Self, rhs: Self) -> Bool { lhs.model === rhs.model && lhs.root == rhs.root && lhs.rowHeight == rhs.rowHeight && lhs.activeDocumentURL == rhs.activeDocumentURL && lhs.gitStatus == rhs.gitStatus - && lhs.directoryMarks == rhs.directoryMarks && lhs.revealRequest == rhs.revealRequest + && lhs.directoryMarks == rhs.directoryMarks && lhs.indexingReasons == rhs.indexingReasons + && lhs.supportsIndexingExclusions == rhs.supportsIndexingExclusions && lhs.revealRequest == rhs.revealRequest && lhs.stateSnapshot == rhs.stateSnapshot } @@ -375,6 +381,8 @@ private struct ProjectSidebarTree: View, Equatable { activeDocumentURL: activeDocumentURL, gitStatus: gitStatus, directoryMarks: directoryMarks, + indexingReasons: indexingReasons, + supportsIndexingExclusions: supportsIndexingExclusions, actions: ProjectTreeActions(model: model), selectionSnapshot: state.selection, selection: $state.selection, @@ -631,6 +639,8 @@ private struct ProjectFileTreeContent: View, Equatable { let activeDocumentURL: URL? let gitStatus: ProjectGitStatusSnapshot let directoryMarks: [String: WorkspaceDirectoryMark] + let indexingReasons: [String: String] + let supportsIndexingExclusions: Bool let actions: ProjectTreeActions let selectionSnapshot: ProjectTreeSelection @Binding var selection: ProjectTreeSelection @@ -648,7 +658,8 @@ private struct ProjectFileTreeContent: View, Equatable { && lhs.rowHeight == rhs.rowHeight && lhs.activeDocumentURL == rhs.activeDocumentURL && lhs.gitStatus == rhs.gitStatus - && lhs.directoryMarks == rhs.directoryMarks + && lhs.directoryMarks == rhs.directoryMarks && lhs.indexingReasons == rhs.indexingReasons + && lhs.supportsIndexingExclusions == rhs.supportsIndexingExclusions && lhs.expandedDirectoryPathsSnapshot == rhs.expandedDirectoryPathsSnapshot && lhs.contextMenuPath == rhs.contextMenuPath && lhs.scrollRequest == rhs.scrollRequest @@ -670,6 +681,8 @@ private struct ProjectFileTreeContent: View, Equatable { gitStatus: gitStatus, projectRootURL: root.url, directoryMarks: directoryMarks, + indexingReasons: indexingReasons, + supportsIndexingExclusions: supportsIndexingExclusions, actions: actions, selection: $selection, visibleRows: visibleRows, @@ -689,6 +702,8 @@ private struct FileNodeRow: View { let gitStatus: ProjectGitStatusSnapshot let projectRootURL: URL let directoryMarks: [String: WorkspaceDirectoryMark] + let indexingReasons: [String: String] + let supportsIndexingExclusions: Bool let actions: ProjectTreeActions @Binding var selection: ProjectTreeSelection let visibleRows: [ProjectTreeSelection.VisibleRow] @@ -767,6 +782,17 @@ private struct FileNodeRow: View { ) } + private var exclusionHelp: String { + let relative = relativeDirectoryPath(for: node.url) + if let reason = indexingReasons[relative] { + return reason == "manual" ? L10n.string( "Manually excluded from indexing") : L10n.string( "Excluded from indexing by Git ignore rules") + } + if indexingReasons.keys.contains(where: { $0 == "." || relative.hasPrefix($0 + "/") }) { + return L10n.string( "Excluded from indexing by a parent directory") + } + return node.url.path + } + private var directoryRow: some View { Button { toggleExpanded() @@ -792,6 +818,7 @@ private struct FileNodeRow: View { } .buttonStyle(.litheNoPress) + .help(exclusionHelp) .overlay { rowInteraction } .litheContextMenu( items: { selection.paths.count > 1 ? batchMenuItems : clipboardMenuItems + [.separator] + directoryContextMenuItems }, @@ -982,7 +1009,9 @@ private struct FileNodeRow: View { } private var directoryMarkMenuItems: [LitheContextMenuItem] { - WorkspaceDirectoryMark.allCases.map { mark in + let marks: [WorkspaceDirectoryMark] = currentDirectoryMark == .excluded + ? [.plain] : WorkspaceDirectoryMark.allCases.filter { supportsIndexingExclusions || $0 != .excluded } + return marks.map { mark in .action( directoryMarkTitle(mark), iconKind: LitheIcons.kind(for: mark), @@ -995,7 +1024,7 @@ private struct FileNodeRow: View { private func directoryMarkTitle(_ mark: WorkspaceDirectoryMark) -> String { switch mark { - case .plain: "Normal Folder" + case .plain: currentDirectoryMark == .excluded ? "Cancel Exclusion" : "Normal Folder" case .sources: "Sources Root" case .resources: "Resources Root" case .excluded: "Excluded" @@ -1005,7 +1034,9 @@ private struct FileNodeRow: View { } private var currentDirectoryMark: WorkspaceDirectoryMark? { - directoryMarks[relativeDirectoryPath(for: node.url)] + let relative = relativeDirectoryPath(for: node.url) + if directoryMarks.contains(where: { $0.value == .excluded && ($0.key == "." || relative == $0.key || relative.hasPrefix($0.key + "/")) }) { return .excluded } + return directoryMarks[relative] } private var directoryIconKind: LitheIconKind { diff --git a/macos/Sources/LitheCoreContracts/Workspace/WorkspaceFeatureContracts.swift b/macos/Sources/LitheCoreContracts/Workspace/WorkspaceFeatureContracts.swift index 1dba4468c5..419bdf056d 100644 --- a/macos/Sources/LitheCoreContracts/Workspace/WorkspaceFeatureContracts.swift +++ b/macos/Sources/LitheCoreContracts/Workspace/WorkspaceFeatureContracts.swift @@ -69,6 +69,9 @@ package protocol WorkspaceSessionStoring: AnyObject { } package protocol WorkspaceOperations: Sendable { + func releaseIndexing(at rootURL: URL, revision: UInt64) + func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool) throws -> WorkspaceIndexingStatus + /// Drops package-compaction lookahead after workspace or filesystem changes. func invalidateDirectoryListings() func snapshot(at rootURL: URL, visibilityRules: FileVisibilityRules) -> WorkspaceSnapshot? @@ -88,6 +91,8 @@ package protocol WorkspaceOperations: Sendable { } extension WorkspaceOperations { + package func releaseIndexing(at rootURL: URL, revision: UInt64) {} + package func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool) throws -> WorkspaceIndexingStatus { WorkspaceIndexingStatus() } package func invalidateDirectoryListings() {} /// Operations whose snapshots already carry the whole tree never leave a @@ -114,6 +119,9 @@ package enum WorkspaceDirectoryMark: String, CaseIterable, Codable, Sendable { /// Persists directory roles without changing the marked directories themselves. package protocol WorkspaceDirectoryMarkStoring: Sendable { + func loadIndexingSettings(for workspaceURL: URL) throws -> WorkspaceIndexingSettings + func saveIndexingSettings(_ settings: WorkspaceIndexingSettings, for workspaceURL: URL) throws + func loadDirectoryMarks(for workspaceURL: URL) throws -> [String: WorkspaceDirectoryMark] func saveDirectoryMarks( _ marks: [String: WorkspaceDirectoryMark], @@ -220,3 +228,8 @@ public enum LocalHistoryReason: String, Codable, Sendable { } } } + +package extension WorkspaceDirectoryMarkStoring { + func loadIndexingSettings(for workspaceURL: URL) throws -> WorkspaceIndexingSettings { WorkspaceIndexingSettings() } + func saveIndexingSettings(_ settings: WorkspaceIndexingSettings, for workspaceURL: URL) throws {} +} diff --git a/macos/Sources/LitheCoreContracts/Workspace/WorkspaceIndexingPolicy.swift b/macos/Sources/LitheCoreContracts/Workspace/WorkspaceIndexingPolicy.swift new file mode 100644 index 0000000000..40db3b719f --- /dev/null +++ b/macos/Sources/LitheCoreContracts/Workspace/WorkspaceIndexingPolicy.swift @@ -0,0 +1,32 @@ +import Foundation + +/// Project preferences are separate from roles and from tree-hiding rules. +package struct WorkspaceIndexingSettings: Codable, Equatable, Sendable { + package var gitIgnoreEnabled = true + package var includedDirectories: [String] = [] + package var previousRoles: [String: WorkspaceDirectoryMark] = [:] + package init() {} +} + +package struct WorkspaceIndexingPolicy: Encodable, Equatable, Sendable { + package let manualExcludedDirectories: [String] + package let includedDirectories: [String] + package let gitIgnoreEnabled: Bool + package init(marks: [String: WorkspaceDirectoryMark], settings: WorkspaceIndexingSettings) { + manualExcludedDirectories = marks.filter { $0.value == .excluded }.map(\.key).sorted() + includedDirectories = settings.includedDirectories.sorted() + gitIgnoreEnabled = settings.gitIgnoreEnabled + } +} + +package struct WorkspaceIndexingStatus: Decodable, Sendable { + package var revision: UInt64 = 0 + package var excludedDirectories: [String: String] = [:] + // Local transport capability; deliberately absent from the Core JSON contract. + package var supportsExclusions = true + private enum CodingKeys: String, CodingKey { + case revision, excludedDirectories, gitIgnoreFailed + } + package var gitIgnoreFailed = false + package init() {} +} diff --git a/macos/Sources/LitheCoreContracts/Workspace/WorkspaceModels.swift b/macos/Sources/LitheCoreContracts/Workspace/WorkspaceModels.swift index 2ecd51e87a..eb2bdfdd8f 100644 --- a/macos/Sources/LitheCoreContracts/Workspace/WorkspaceModels.swift +++ b/macos/Sources/LitheCoreContracts/Workspace/WorkspaceModels.swift @@ -50,10 +50,12 @@ package struct WorkspaceSnapshot: Sendable { /// leaves them out of `root` and `files`, and watcher events below them are /// ignored instead of triggering refreshes. package let nestedWorktrees: [URL] - package init(root: FileNode, files: [URL], nestedWorktrees: [URL] = [], id: UUID = UUID()) { + package let incompleteDirectories: [String] + package init(root: FileNode, files: [URL], nestedWorktrees: [URL] = [], incompleteDirectories: [String] = [], id: UUID = UUID()) { self.id = id self.root = root self.files = files self.nestedWorktrees = nestedWorktrees + self.incompleteDirectories = incompleteDirectories } } diff --git a/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift b/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift index c6b5e4cb66..d7d97fdcf4 100644 --- a/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift +++ b/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift @@ -1,6 +1,7 @@ import Combine import Foundation import LitheCoreContracts +import LitheModuleAPI package enum WorkspaceRebuildResult: Sendable { case loaded(WorkspaceSnapshot) @@ -18,6 +19,9 @@ package final class WorkspaceFeatureModel: ObservableObject { @Published package private(set) var isLoadingWorkspace = false @Published package private(set) var isRefreshingWorkspace = false @Published package private(set) var loadErrorMessage: String? + @Published package private(set) var indexingSettings = WorkspaceIndexingSettings() + @Published package private(set) var indexingStatus = WorkspaceIndexingStatus() + @Published package private(set) var indexingError: String? @Published package private(set) var directoryMarks: [String: WorkspaceDirectoryMark] = [:] @Published package var projectItemEditRequest: ProjectItemEditRequest? @Published package var pendingProjectItemDeletion: ProjectItemDeletionRequest? @@ -33,6 +37,8 @@ package final class WorkspaceFeatureModel: ObservableObject { private let directoryMarkStore: any WorkspaceDirectoryMarkStoring private let directoryMarkPersistence: WorkspaceDirectoryMarkPersistence private var workspaceURL: URL? + private var indexingConfigurationTask: Task? + private var indexingConfigurationID: UUID? private var visibilityRules = FileVisibilityRules.default private var directoryMarkRevision = 0 private var watchConfiguration: DirectoryWatchConfiguration? @@ -43,6 +49,7 @@ package final class WorkspaceFeatureModel: ObservableObject { private var visibilityRulesRefreshTask: Task? private var pendingExternalPaths: Set = [] private var pendingGitRefresh = false + private var pendingIndexingRuleRefresh = false private var pendingFullRescan = false private var pendingWatchRootsChanged = false private var isGitRefreshRunning = false @@ -153,6 +160,7 @@ package final class WorkspaceFeatureModel: ObservableObject { package var hasActiveModuleResources: Bool { directoryWatcher != nil + || indexingConfigurationTask != nil || refreshTask != nil || gitRefreshTask != nil || recoveryTask != nil @@ -176,6 +184,7 @@ package final class WorkspaceFeatureModel: ObservableObject { workspaceSessionPersistenceTask = nil pendingExternalPaths.removeAll() pendingGitRefresh = false + pendingIndexingRuleRefresh = false pendingFullRescan = false pendingWatchRootsChanged = false isGitRefreshRunning = false @@ -184,7 +193,15 @@ package final class WorkspaceFeatureModel: ObservableObject { gitOperationFreezeDepth = 0 } + private func releaseIndexing() { + guard let root = workspaceURL, indexingStatus.revision != 0 else { return } + let revision = indexingStatus.revision + let operations = self.operations + Task.detached { operations.releaseIndexing(at: root, revision: revision) } + } + package func reset() { + releaseIndexing() invalidateDirectoryListings() workspaceGeneration &+= 1 directoryMarkRevision &+= 1 @@ -201,6 +218,7 @@ package final class WorkspaceFeatureModel: ObservableObject { workspaceSessionPersistenceTask?.cancel() pendingExternalPaths.removeAll() pendingGitRefresh = false + pendingIndexingRuleRefresh = false pendingFullRescan = false pendingWatchRootsChanged = false isGitRefreshRunning = false @@ -211,6 +229,9 @@ package final class WorkspaceFeatureModel: ObservableObject { hasRestoredWorkspaceSession = false rootNode = nil directoryMarks = [:] + indexingSettings = WorkspaceIndexingSettings() + indexingStatus = WorkspaceIndexingStatus() + indexingError = nil projectFiles = [] appliedSnapshot = nil isLoadingWorkspace = false @@ -232,6 +253,7 @@ package final class WorkspaceFeatureModel: ObservableObject { } package func beginWorkspace(at url: URL, visibilityRules: FileVisibilityRules) { + releaseIndexing() invalidateDirectoryListings() isPerformingProjectItemOperation = false workspaceGeneration &+= 1 @@ -239,14 +261,21 @@ package final class WorkspaceFeatureModel: ObservableObject { workspaceURL = url.standardizedFileURL do { directoryMarks = try directoryMarkStore.loadDirectoryMarks(for: url) + indexingSettings = try directoryMarkStore.loadIndexingSettings(for: url) + indexingStatus = WorkspaceIndexingStatus() + indexingError = nil } catch { directoryMarks = [:] + indexingSettings = WorkspaceIndexingSettings() + indexingStatus = WorkspaceIndexingStatus() + indexingError = error.localizedDescription notify?("Could not read directory marks: \(error.localizedDescription)") } self.visibilityRules = visibilityRules hasRestoredWorkspaceSession = false pendingExternalPaths.removeAll() pendingGitRefresh = false + pendingIndexingRuleRefresh = false pendingFullRescan = false pendingWatchRootsChanged = false externalRefreshGeneration += 1 @@ -294,6 +323,38 @@ package final class WorkspaceFeatureModel: ObservableObject { } } + /// Serialize installations across project switches. An obsolete successful + /// install is released before its successor can install a newer policy. + private func configureCurrentIndexing( + at root: URL, policy: WorkspaceIndexingPolicy, refresh: Bool, + isCurrent: @escaping @MainActor () -> Bool + ) async throws -> WorkspaceIndexingStatus { + let previous = indexingConfigurationTask + let operations = self.operations + let id = UUID() + let task = Task { @MainActor in + _ = try? await previous?.value + guard isCurrent() else { throw CancellationError() } + let status = try await Task.detached(priority: .userInitiated) { + try operations.configureIndexing(at: root, policy: policy, refresh: refresh) + }.value + guard isCurrent() else { + await Task.detached { operations.releaseIndexing(at: root, revision: status.revision) }.value + throw CancellationError() + } + return status + } + indexingConfigurationTask = task + indexingConfigurationID = id + defer { + if indexingConfigurationID == id { + indexingConfigurationTask = nil + indexingConfigurationID = nil + } + } + return try await task.value + } + package func rebuild( at workspaceURL: URL, rules: FileVisibilityRules, @@ -312,17 +373,47 @@ package final class WorkspaceFeatureModel: ObservableObject { let previouslyLoaded = rootNode?.url.standardizedFileURL == workspaceURL.standardizedFileURL ? Self.loadedDirectoryPaths(in: rootNode) : [] - let snapshot = await Task.detached(priority: .userInitiated) { - operations.snapshot(at: workspaceURL, visibilityRules: rules).map { snapshot in - Self.listingTree( - of: snapshot, - reloading: previouslyLoaded, - operations: operations, - rules: rules - ) + var snapshot: WorkspaceSnapshot? + while true { + let policy = WorkspaceIndexingPolicy(marks: directoryMarks, settings: indexingSettings) + do { + let status = try await configureCurrentIndexing(at: workspaceURL, policy: policy, refresh: true, isCurrent: isCurrent) + guard isCurrent() else { return .stale } + indexingStatus = status + indexingError = nil + } catch { + guard isCurrent() else { return .stale } + indexingError = error.localizedDescription + isLoadingWorkspace = false + isRefreshingWorkspace = false + return .unavailable } - }.value + snapshot = await Task.detached(priority: .userInitiated) { + operations.snapshot(at: workspaceURL, visibilityRules: rules).map { snapshot in + Self.listingTree( + of: snapshot, + reloading: previouslyLoaded, + operations: operations, + rules: rules + ) + } + }.value + if isCurrent() { + do { + let status = try await configureCurrentIndexing(at: workspaceURL, policy: policy, refresh: false, isCurrent: isCurrent) + guard isCurrent() else { return .stale } + indexingStatus = status + } catch { + guard isCurrent() else { return .stale } + indexingError = error.localizedDescription + } + } + // A persisted switch/mark can change while either Core call is in + // flight. Rescan with the latest policy before publishing inventory. + guard isCurrent() else { return .stale } + if policy == WorkspaceIndexingPolicy(marks: directoryMarks, settings: indexingSettings) { break } + } guard isCurrent() else { if isInitialLoad { isLoadingWorkspace = false @@ -358,7 +449,9 @@ package final class WorkspaceFeatureModel: ObservableObject { if !hasRestoredWorkspaceSession { if let restoreSession, let session = workspaceSessionStore.load(for: workspaceURL) { - await restoreSession(session, snapshot.files) + let excludedOpenFiles = session.openPaths.map { URL(fileURLWithPath: $0).standardizedFileURL } + .filter { isWorkspaceURL($0) && isIndexExcluded($0) && fileOperations.fileExists(at: $0) && !fileOperations.isDirectory(at: $0) } + await restoreSession(session, snapshot.files + excludedOpenFiles) } guard isCurrent() else { return .stale } hasRestoredWorkspaceSession = true @@ -366,7 +459,11 @@ package final class WorkspaceFeatureModel: ObservableObject { guard isCurrent() else { return .stale } await updateWatchConfiguration() guard isCurrent() else { return .stale } - await onSnapshotLoaded?(snapshot, isInitialLoad) + if snapshot.incompleteDirectories.isEmpty { + await onSnapshotLoaded?(snapshot, isInitialLoad) + } else { + indexingError = L10n.string( "Some directories could not be scanned. Automatic project analysis was not refreshed.") + } guard isCurrent() else { return .stale } await requestGitRefreshNow() if pendingFullRescan || pendingWatchRootsChanged { @@ -399,18 +496,30 @@ package final class WorkspaceFeatureModel: ObservableObject { package func markDirectory(_ url: URL, as mark: WorkspaceDirectoryMark) async { guard !isPerformingProjectItemOperation, + mark != .excluded || indexingStatus.supportsExclusions, let workspaceURL, let relativePath = Self.relativePath(for: url, in: workspaceURL) else { return } let workspaceGeneration = self.workspaceGeneration let previousMarks = directoryMarks var updatedMarks = directoryMarks - updatedMarks[relativePath] = mark - guard updatedMarks != previousMarks else { return } + let previousSettings = indexingSettings + if mark == .plain { + guard !directoryMarks.contains(where: { $0.value == .excluded && $0.key != relativePath && (relativePath.hasPrefix($0.key + "/") || $0.key == ".") }) else { return } + updatedMarks[relativePath] = indexingSettings.previousRoles.removeValue(forKey: relativePath) ?? .plain + if !indexingSettings.includedDirectories.contains(relativePath) { indexingSettings.includedDirectories.append(relativePath) } + } else { + if mark == .excluded, let previous = updatedMarks[relativePath], previous != .excluded { indexingSettings.previousRoles[relativePath] = previous } + updatedMarks[relativePath] = mark + indexingSettings.includedDirectories.removeAll { $0 == relativePath } + } + guard updatedMarks != previousMarks || previousSettings != indexingSettings else { return } directoryMarkRevision &+= 1 let revision = directoryMarkRevision directoryMarks = updatedMarks + do { try directoryMarkStore.saveIndexingSettings(indexingSettings, for: workspaceURL) } + catch { indexingSettings = previousSettings; directoryMarks = previousMarks; indexingError = error.localizedDescription; return } let saveError = await directoryMarkPersistence.save(updatedMarks, for: workspaceURL) guard self.workspaceURL == workspaceURL, self.workspaceGeneration == workspaceGeneration else { return } @@ -418,8 +527,26 @@ package final class WorkspaceFeatureModel: ObservableObject { if directoryMarkRevision == revision { directoryMarks = previousMarks } + indexingSettings = previousSettings + try? directoryMarkStore.saveIndexingSettings(previousSettings, for: workspaceURL) notify?("Could not update directory mark: \(saveError)") - } + await refreshCurrent() + } else if directoryMarkRevision == revision { await refreshCurrent() } + } + + package func setGitIgnoreIndexing(_ enabled: Bool) async { + guard let workspaceURL, indexingStatus.supportsExclusions else { return } + let previous = indexingSettings + indexingSettings.gitIgnoreEnabled = enabled + do { try directoryMarkStore.saveIndexingSettings(indexingSettings, for: workspaceURL) } + catch { indexingSettings = previous; indexingError = error.localizedDescription; return } + await refreshCurrent() + } + + + package func isIndexExcluded(_ url: URL) -> Bool { + guard let workspaceURL, let path = Self.relativePath(for: url, in: workspaceURL) else { return false } + return indexingStatus.excludedDirectories.keys.contains { $0 == "." || path == $0 || path.hasPrefix($0 + "/") } } private static func relativePath(for url: URL, in workspaceURL: URL) -> String? { @@ -457,18 +584,19 @@ package final class WorkspaceFeatureModel: ObservableObject { visibilityRulesRefreshTask?.cancel() refreshTask?.cancel() guard let workspaceURL else { return } + let generation = workspaceGeneration visibilityRules = rules visibilityRulesRefreshTask = Task { @MainActor [weak self] in guard let self else { return } while self.isLoadingWorkspace, !Task.isCancelled { try? await Task.sleep(for: .milliseconds(50)) } - guard !Task.isCancelled, self.workspaceURL == workspaceURL else { return } + guard !Task.isCancelled, self.workspaceURL == workspaceURL, self.workspaceGeneration == generation else { return } await self.updateHistoryVisibilityRules?(rules) _ = await self.rebuild( at: workspaceURL, rules: rules, - isCurrent: { [weak self] in self?.workspaceURL == workspaceURL } + isCurrent: { [weak self] in self?.workspaceURL == workspaceURL && self?.workspaceGeneration == generation && !Task.isCancelled } ) } } @@ -599,6 +727,7 @@ package final class WorkspaceFeatureModel: ObservableObject { } else { marksToMigrate = operationDirectoryMarks } + migrateIndexingSettings(moving: request.targetURL, to: destination, in: operationWorkspaceURL) let migratedMarks = Self.directoryMarks( marksToMigrate, moving: request.targetURL, @@ -695,6 +824,7 @@ package final class WorkspaceFeatureModel: ObservableObject { // Relocate open buffers immediately, before any further suspension. if isCurrent { relocateOpenDocuments?(source, destination) } let marks = isCurrent ? directoryMarks : previousMarks + migrateIndexingSettings(moving: source, to: destination, in: workspace) await persistDirectoryMarksAfterFileOperation( Self.directoryMarks(marks, moving: source, to: destination, in: workspace), previousMarks: marks, workspaceURL: workspace, workspaceGeneration: generation @@ -964,6 +1094,7 @@ package final class WorkspaceFeatureModel: ObservableObject { } else { marksToRemoveFrom = operationDirectoryMarks } + migrateIndexingSettings(moving: request.url, to: nil, in: operationWorkspaceURL) let remainingMarks = Self.directoryMarks( marksToRemoveFrom, removing: request.url, @@ -999,6 +1130,25 @@ package final class WorkspaceFeatureModel: ObservableObject { }.value } + private func migrateIndexingSettings(moving source: URL, to destination: URL?, in root: URL) { + do { + var settings = try directoryMarkStore.loadIndexingSettings(for: root) + let includes = Dictionary(settings.includedDirectories.map { ($0, WorkspaceDirectoryMark.plain) }, uniquingKeysWith: { first, _ in first }) + if let destination { + settings.includedDirectories = Self.directoryMarks(includes, moving: source, to: destination, in: root).keys.sorted() + settings.previousRoles = Self.directoryMarks(settings.previousRoles, moving: source, to: destination, in: root) + } else { + settings.includedDirectories = Self.directoryMarks(includes, removing: source, in: root).keys.sorted() + settings.previousRoles = Self.directoryMarks(settings.previousRoles, removing: source, in: root) + } + try directoryMarkStore.saveIndexingSettings(settings, for: root) + if workspaceURL == root { indexingSettings = settings } + } catch { + indexingError = error.localizedDescription + notify?(error.localizedDescription) + } + } + private func persistDirectoryMarksAfterFileOperation( _ updatedMarks: [String: WorkspaceDirectoryMark], previousMarks: [String: WorkspaceDirectoryMark], @@ -1116,6 +1266,7 @@ package final class WorkspaceFeatureModel: ObservableObject { if batch.gitStateMayHaveChanged { pendingGitRefresh = true } schedulePendingExternalRefresh() } else if batch.gitStateMayHaveChanged { + pendingIndexingRuleRefresh = indexingSettings.gitIgnoreEnabled scheduleGitRefresh() } } @@ -1226,6 +1377,10 @@ package final class WorkspaceFeatureModel: ObservableObject { await refreshGit?() } isGitRefreshRunning = false + if pendingIndexingRuleRefresh, !isLoadingWorkspace, !isRefreshingWorkspace { + pendingIndexingRuleRefresh = false + await refreshCurrentSnapshot() + } } private func applyExternalRefresh(_ paths: [String], at workspaceURL: URL) async { @@ -1239,7 +1394,7 @@ package final class WorkspaceFeatureModel: ObservableObject { scheduleExternalRefresh(paths: paths) return } - let changedURLs = paths + var changedURLs = paths .map { URL(fileURLWithPath: $0).standardizedFileURL } .filter { isWorkspaceURL($0) && watchConfiguration?.isIgnored($0) != true } .reduce(into: [URL]()) { values, url in @@ -1254,6 +1409,15 @@ package final class WorkspaceFeatureModel: ObservableObject { } let conflictDetected = processExternalChanges?(changedURLs) ?? false if conflictDetected { notify?("External edits conflict with unsaved changes") } + if changedURLs.contains(where: { $0.lastPathComponent == ".gitignore" || $0.path.contains("/.git/") }) { + await refreshCurrentSnapshot() + return + } + let excludedChanges = changedURLs.filter { isIndexExcluded($0) } + if !excludedChanges.isEmpty { await refreshExcludedTree(at: workspaceURL) } + guard self.workspaceURL == workspaceURL else { return } + changedURLs.removeAll { isIndexExcluded($0) && !$0.path.hasPrefix(workspaceURL.appendingPathComponent(".lithe").path + "/") } + guard !changedURLs.isEmpty else { await requestGitRefreshNow(); return } let fileChanges = changedURLs.compactMap { url -> WorkspaceFileChange? in let wasKnown = isKnownProjectFile(url) @@ -1365,7 +1529,7 @@ package final class WorkspaceFeatureModel: ObservableObject { ) -> IncrementalTreeResult { // A previous snapshot may have failed; watcher events must be able to // recover the tree instead of leaving the workspace empty indefinitely. - guard var root = rootNode else { return .requiresSnapshot } + guard appliedSnapshot?.incompleteDirectories.isEmpty != false, var root = rootNode else { return .requiresSnapshot } var files = projectFiles var didChange = false var reloadsTree = false @@ -1421,6 +1585,26 @@ package final class WorkspaceFeatureModel: ObservableObject { return didChange ? .updated(root: root, files: files, reloadsTree: reloadsTree) : .unchanged } + /// Relists only already-loaded levels; browsing never contributes index candidates. + private func refreshExcludedTree(at workspaceURL: URL) async { + guard let root = rootNode, let snapshot = appliedSnapshot else { return } + let generation = workspaceGeneration + let revision = directoryListingRevision + let operations = self.operations + let rules = visibilityRules + let loaded = Self.loadedDirectoryPaths(in: root) + let base = FileNode(url: root.url, isDirectory: true, children: nil) + let relisted = await Task.detached(priority: .userInitiated) { + Self.listingTree(base, reloading: loaded, at: workspaceURL, operations: operations, rules: rules) + }.value + guard self.workspaceURL == workspaceURL, workspaceGeneration == generation, + directoryListingRevision == revision, appliedSnapshot?.id == snapshot.id, + let relisted else { return } + rootNode = relisted + appliedSnapshot = WorkspaceSnapshot(root: relisted, files: projectFiles, + nestedWorktrees: snapshot.nestedWorktrees, incompleteDirectories: snapshot.incompleteDirectories, id: snapshot.id) + } + /// Publishes an updated inventory as a new snapshot so project services /// see the same files a rescan would have produced. private func applyIncrementalTree(root: FileNode, files: [URL], reloadsTree: Bool) async { @@ -1460,6 +1644,7 @@ package final class WorkspaceFeatureModel: ObservableObject { root: relisted, files: projectFiles, nestedWorktrees: currentSnapshot.nestedWorktrees, + incompleteDirectories: currentSnapshot.incompleteDirectories, id: currentSnapshot.id ) return @@ -1610,6 +1795,7 @@ package final class WorkspaceFeatureModel: ObservableObject { root: root, files: snapshot.files, nestedWorktrees: snapshot.nestedWorktrees, + incompleteDirectories: snapshot.incompleteDirectories, id: snapshot.id ) } diff --git a/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift b/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift index ec92d3876f..c8789f0243 100644 --- a/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift +++ b/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift @@ -7,6 +7,133 @@ import Testing @Suite("Lazy project tree inventory") @MainActor struct LazyProjectTreeInventoryTests { + @Test(arguments: [false, true], [false, true]) + func stalePolicyInstallCannotOverwriteOrFailTheNextWorkspace(staleFails: Bool, reopenSameRoot: Bool) async { + let oldRoot = URL(fileURLWithPath: "/in-memory/old-indexing") + let nextRoot = reopenSameRoot ? oldRoot : URL(fileURLWithPath: "/in-memory/next-indexing") + let file = nextRoot.appendingPathComponent("Keep.java") + let fixture = InventoryFixture(root: nextRoot, files: [file], rows: [nextRoot.path: []]) + defer { fixture.close() } + fixture.disk.blockNextConfiguration(failing: staleFails) + fixture.model.beginWorkspace(at: oldRoot, visibilityRules: .default) + let oldGeneration = fixture.model.workspaceGeneration + let first = Task { await fixture.model.rebuild(at: oldRoot, rules: .default, + isCurrent: { fixture.model.workspaceGeneration == oldGeneration }) } + defer { first.cancel(); fixture.disk.releaseConfiguration.open() } + #expect(await fixture.disk.configurationStarted.waitUntilOpen()) + fixture.model.beginWorkspace(at: nextRoot, visibilityRules: .default) + let nextGeneration = fixture.model.workspaceGeneration + fixture.disk.blockNextListing() + let second = Task { await fixture.model.rebuild(at: nextRoot, rules: .default, + isCurrent: { fixture.model.workspaceGeneration == nextGeneration }) } + defer { second.cancel(); fixture.disk.releaseListing.open() } + fixture.disk.releaseConfiguration.open() + let obsolete = await first.value + if case .stale = obsolete {} else { Issue.record("Old configuration was published") } + #expect(await fixture.disk.listingStarted.waitUntilOpen()) + #expect(fixture.model.isLoadingWorkspace) + #expect(fixture.model.indexingError == nil) + #expect(fixture.disk.releasedRoots == (staleFails ? [] : [oldRoot])) + fixture.disk.releaseListing.open() + _ = await second.value + #expect(fixture.model.projectFiles == [file]) + #expect(!fixture.model.isLoadingWorkspace) + #expect(!fixture.disk.configurationTimedOut) + } + + @Test + func visibilityRefreshCannotPublishAcrossSameRootReopen() async { + let root = URL(fileURLWithPath: "/in-memory/visibility-indexing-reopen") + let file = root.appendingPathComponent("Keep.java") + let fixture = InventoryFixture(root: root, files: [file], rows: [root.path: []]) + defer { fixture.close() } + await fixture.load() + fixture.disk.blockNextConfiguration(failing: false) + fixture.model.updateVisibilityRules(FileVisibilityRules(hiddenDirectoryNames: ["old-hidden"], hiddenFilePatterns: [])) + #expect(await fixture.disk.configurationStarted.waitUntilOpen()) + fixture.model.reset() + fixture.model.beginWorkspace(at: root, visibilityRules: .default) + let generation = fixture.model.workspaceGeneration + fixture.disk.blockNextListing() + let reopened = Task { await fixture.model.rebuild(at: root, rules: .default, + isCurrent: { fixture.model.workspaceGeneration == generation }) } + defer { reopened.cancel(); fixture.disk.releaseListing.open(); fixture.disk.releaseConfiguration.open() } + fixture.disk.releaseConfiguration.open() + #expect(await fixture.disk.listingStarted.waitUntilOpen()) + #expect(fixture.disk.releasedRoots == [root]) + #expect(fixture.model.isLoadingWorkspace) + fixture.disk.releaseListing.open() + _ = await reopened.value + #expect(fixture.model.projectFiles == [file]) + #expect(fixture.model.indexingError == nil) + #expect(!fixture.disk.configurationTimedOut) + } + + @Test + func policyInstalledAfterProjectCloseIsReleased() async { + let root = URL(fileURLWithPath: "/in-memory/closed-indexing") + let fixture = InventoryFixture(root: root, files: [], rows: [root.path: []]) + defer { fixture.close() } + fixture.disk.blockNextConfiguration(failing: false) + fixture.model.beginWorkspace(at: root, visibilityRules: .default) + let generation = fixture.model.workspaceGeneration + let loading = Task { await fixture.model.rebuild(at: root, rules: .default, + isCurrent: { fixture.model.workspaceGeneration == generation }) } + defer { loading.cancel(); fixture.disk.releaseConfiguration.open() } + #expect(await fixture.disk.configurationStarted.waitUntilOpen()) + fixture.model.reset() + fixture.disk.releaseConfiguration.open() + _ = await loading.value + #expect(fixture.disk.releasedRoots == [root]) + #expect(fixture.model.rootNode == nil) + #expect(!fixture.disk.configurationTimedOut) + } + + @Test + func unsupportedWorkspaceRejectsExclusionActions() async { + let root = URL(fileURLWithPath: "/in-memory/unsupported-indexing") + let file = root.appendingPathComponent("src/Keep.java") + let fixture = InventoryFixture(root: root, files: [file], rows: [root.path: []]) + defer { fixture.close() } + fixture.disk.supportsExclusions = false + await fixture.load() + await fixture.model.setGitIgnoreIndexing(false) + await fixture.model.markDirectory(root.appendingPathComponent("src"), as: .excluded) + #expect(fixture.model.indexingSettings.gitIgnoreEnabled) + #expect(fixture.model.directoryMarks.isEmpty) + #expect(fixture.model.projectFiles == [file]) + #expect(fixture.disk.snapshotCount == 1) + } + + @Test(arguments: [false, true]) + func policyChangesDuringScanPublishOnlyTheLatestInventory(manualMark: Bool) async { + let root = URL(fileURLWithPath: "/in-memory/indexing-policy-race") + let directory = root.appendingPathComponent(manualMark ? "manual" : "ignored") + let file = directory.appendingPathComponent("Candidate.java") + let fixture = InventoryFixture(root: root, files: [file], rows: [ + root.path: [FileNode(url: directory, isDirectory: true, children: nil)], directory.path: [], + ]) + defer { fixture.close() } + fixture.disk.blockNextListing() + let loading = Task { await fixture.load() } + defer { loading.cancel(); fixture.disk.releaseListing.open() } + #expect(await fixture.disk.listingStarted.waitUntilOpen()) + if manualMark { + await fixture.model.markDirectory(directory, as: .excluded) + } else { + await fixture.model.setGitIgnoreIndexing(false) + } + fixture.disk.releaseListing.open() + await loading.value + #expect(!fixture.disk.listingTimedOut) + #expect(fixture.disk.snapshotCount == 2) + #expect(fixture.model.projectFiles == (manualMark ? [] : [file])) + #expect(fixture.publishedFiles == [manualMark ? [] : [file]]) + #expect(fixture.model.isIndexExcluded(directory) == manualMark) + #expect(fixture.disk.appliedPolicy?.gitIgnoreEnabled == manualMark) + #expect(fixture.disk.appliedPolicy?.manualExcludedDirectories == (manualMark ? ["manual"] : [])) + } + @Test func expandAllLoadsEveryBranchWithoutRebuildingTheFileInventory() async throws { let root = URL(fileURLWithPath: "/in-memory/expand-all") @@ -340,6 +467,7 @@ private final class InventoryFixture { } func close() { + disk.releaseConfiguration.open() disk.releaseListing.open() model.reset() refreshGates.values.forEach { $0.open() } @@ -355,6 +483,18 @@ private final class InventoryDisk: WorkspaceOperations, WorkspaceFileOperations, private var shouldBlock = false private var timedOut = false private var scans = 0 + private var policy: WorkspaceIndexingPolicy? + var supportsExclusions = true + private var blockConfiguration = false + private var failConfiguration = false + private var configurationTimeout = false + private var releases: [URL] = [] + let configurationStarted = TestGate() + let releaseConfiguration = TestGate() + var releasedRoots: [URL] { lock.withLock { releases } } + var configurationTimedOut: Bool { lock.withLock { configurationTimeout } } + func blockNextConfiguration(failing: Bool) { lock.withLock { blockConfiguration = true; failConfiguration = failing } } + func releaseIndexing(at rootURL: URL, revision: UInt64) { lock.withLock { releases.append(rootURL) } } private var listings: [String: Int] = [:] let listingStarted = TestGate() let releaseListing = TestGate() @@ -364,6 +504,7 @@ private final class InventoryDisk: WorkspaceOperations, WorkspaceFileOperations, self.rows = rows } + var appliedPolicy: WorkspaceIndexingPolicy? { lock.withLock { policy } } var snapshotCount: Int { lock.withLock { scans } } var listingTimedOut: Bool { lock.withLock { timedOut } } func listingCount(for url: URL) -> Int { lock.withLock { listings[url.path, default: 0] } } @@ -374,10 +515,39 @@ private final class InventoryDisk: WorkspaceOperations, WorkspaceFileOperations, func blockNextListing() { lock.withLock { shouldBlock = true } } + func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool) throws -> WorkspaceIndexingStatus { + let (blocks, fails) = lock.withLock { + let blocks = blockConfiguration + blockConfiguration = false + return (blocks, failConfiguration) + } + if blocks { + configurationStarted.open() + // Only the production synchronous configuration worker enters this bounded gate. + let released = releaseConfiguration.waitSynchronously(timeout: 5) + lock.withLock { configurationTimeout = !released } + if !released || fails { throw CocoaError(.fileReadUnknown) } + } + return lock.withLock { + self.policy = policy + var status = WorkspaceIndexingStatus() + status.supportsExclusions = supportsExclusions + status.revision = blocks ? 1 : 0 + status.excludedDirectories = Dictionary(uniqueKeysWithValues: policy.manualExcludedDirectories.map { ($0, "manual") }) + if policy.gitIgnoreEnabled { status.excludedDirectories["ignored"] = "git" } + return status + } + } + func snapshot(at rootURL: URL, visibilityRules: FileVisibilityRules) -> WorkspaceSnapshot? { lock.withLock { scans += 1 - return WorkspaceSnapshot(root: FileNode(url: rootURL, isDirectory: true, children: nil), files: files) + let visible = files.filter { file in + let relative = String(file.path.dropFirst(rootURL.path.count + 1)) + return !(policy?.manualExcludedDirectories.contains(where: { relative == $0 || relative.hasPrefix($0 + "/") }) ?? false) + && !(policy?.gitIgnoreEnabled == true && relative.hasPrefix("ignored/")) + } + return WorkspaceSnapshot(root: FileNode(url: rootURL, isDirectory: true, children: nil), files: visible) } } diff --git a/macos/Tests/LitheTests/RemoteConnectionsTests.swift b/macos/Tests/LitheTests/RemoteConnectionsTests.swift index bdc1b3ebae..abd2f92cca 100644 --- a/macos/Tests/LitheTests/RemoteConnectionsTests.swift +++ b/macos/Tests/LitheTests/RemoteConnectionsTests.swift @@ -318,6 +318,30 @@ struct RemoteDirectoryEntryDecodingTests { @Suite("RemoteConnections routing") struct RemoteWorkspaceRoutingTests { + @Test + func localIndexingPolicyAndReleaseReachCoreThroughTheRemoteRouter() throws { + let core = RustCoreBridge() + try #require(core.isAvailable) + let root = FileManager.default.temporaryDirectory.appendingPathComponent("lithe-routed-indexing-\(UUID().uuidString)") + try FileManager.default.createDirectory(at: root.appendingPathComponent("excluded"), withIntermediateDirectories: true) + defer { try? FileManager.default.removeItem(at: root) } + try "hidden".write(to: root.appendingPathComponent("excluded/hidden.txt"), atomically: true, encoding: .utf8) + try "visible".write(to: root.appendingPathComponent("visible.txt"), atomically: true, encoding: .utf8) + let router = RemoteRoutingWorkspaceOperations(local: RustWorkspaceOperations(core: core), registry: RemoteWorkspaceRegistry(), transport: FakeTransport()) + var settings = WorkspaceIndexingSettings() + settings.gitIgnoreEnabled = false + let policy = WorkspaceIndexingPolicy(marks: ["excluded": .excluded], settings: settings) + let status = try router.configureIndexing(at: root, policy: policy, refresh: true) + defer { router.releaseIndexing(at: root, revision: status.revision) } + #expect(status.revision > 0) + #expect(status.excludedDirectories["excluded"] == "manual") + let rules = FileVisibilityRules(hiddenDirectoryNames: [], hiddenFilePatterns: []) + let snapshot = try #require(router.snapshot(at: root, visibilityRules: rules)) + #expect(snapshot.files.map(\.lastPathComponent) == ["visible.txt"]) + router.releaseIndexing(at: root, revision: status.revision) + #expect(router.snapshot(at: root, visibilityRules: rules) == nil) + } + private let root = URL(fileURLWithPath: "/tmp/lithe-tests/RemoteWorkspaces/c/h/app", isDirectory: true) private func routing() -> (RemoteRoutingFileOperations, RemoteRoutingWorkspaceOperations, FakeTransport, RemoteWorkspaceRegistry) { @@ -329,6 +353,20 @@ struct RemoteWorkspaceRoutingTests { return (files, tree, transport, registry) } + @Test + func remoteIndexingReportsUnsupportedWithoutClaimingManualExclusionsAreActive() throws { + let (_, router, _, _) = routing() + let policy = WorkspaceIndexingPolicy(marks: ["excluded": .excluded], settings: WorkspaceIndexingSettings()) + let status = try router.configureIndexing(at: root, policy: policy, refresh: true) + #expect(!status.supportsExclusions) + #expect(!status.gitIgnoreFailed) + #expect(status.excludedDirectories.isEmpty) + #expect(status.revision == 0) + let localStatus = try JSONDecoder().decode(WorkspaceIndexingStatus.self, from: Data( + #"{"revision":1,"excludedDirectories":{},"gitIgnoreFailed":false}"#.utf8)) + #expect(localStatus.supportsExclusions) + } + @Test func urlsBelowARemoteRootMapToHostPaths() { let (_, _, _, registry) = routing() diff --git a/macos/Tests/LitheTests/SettingsSearchVocabularyTests.swift b/macos/Tests/LitheTests/SettingsSearchVocabularyTests.swift index 0a7a285737..275c69735f 100644 --- a/macos/Tests/LitheTests/SettingsSearchVocabularyTests.swift +++ b/macos/Tests/LitheTests/SettingsSearchVocabularyTests.swift @@ -11,6 +11,14 @@ import Testing @Suite("Settings search vocabulary") @MainActor struct SettingsSearchVocabularyTests { + @Test func gitIgnoreExclusionQueriesFindGitSettings() throws { + let translations = try simplifiedChineseTranslations() + for query in ["Project Indexing", "index", "ignore", "exclude", "索引", "忽略", "排除", "根据 Git 忽略规则自动排除目录"] { + #expect(SettingsSearchVocabulary.matches(query: query, category: .git, localize: { translations[$0] ?? $0 })) + #expect(!SettingsSearchVocabulary.matches(query: query, category: .project, localize: { translations[$0] ?? $0 })) + } + } + @Test func globalInstructionsAreSearchableByNativeFileAndChineseName() throws { let translations = try simplifiedChineseTranslations() for query in ["Global instructions", "AGENTS.md", "AGENTS.override.md", "CLAUDE.md", "全局指令"] { diff --git a/macos/Tests/LitheTests/WorkspaceDirectoryMarkStoreTests.swift b/macos/Tests/LitheTests/WorkspaceDirectoryMarkStoreTests.swift index 483df3321c..819ffd904f 100644 --- a/macos/Tests/LitheTests/WorkspaceDirectoryMarkStoreTests.swift +++ b/macos/Tests/LitheTests/WorkspaceDirectoryMarkStoreTests.swift @@ -1,5 +1,6 @@ import Foundation import Testing +import LitheCoreContracts @testable import Lithe struct WorkspaceDirectoryMarkStoreTests { @@ -21,6 +22,25 @@ struct WorkspaceDirectoryMarkStoreTests { try store.loadDirectoryMarks(for: URL(fileURLWithPath: "/projects/other")).isEmpty ) } + @Test + func indexingSettingsPreserveManualMarksAndProjectIsolation() throws { + let store = WorkspaceDirectoryMarkStore(store: DirectoryMarkKeyValueStore()) + let root = URL(fileURLWithPath: "/projects/example") + #expect(try store.loadIndexingSettings(for: root).gitIgnoreEnabled) + try store.saveDirectoryMarks(["vendor": .excluded], for: root) + var settings = WorkspaceIndexingSettings() + settings.gitIgnoreEnabled = false + settings.includedDirectories = ["generated/examples"] + settings.previousRoles = ["vendor": .sources] + let similarlyNamedRoot = URL(fileURLWithPath: "/projects/example.indexing") + try store.saveDirectoryMarks(["source": .sources], for: similarlyNamedRoot) + try store.saveIndexingSettings(settings, for: root) + #expect(try store.loadDirectoryMarks(for: similarlyNamedRoot) == ["source": .sources]) + #expect(try store.loadIndexingSettings(for: root) == settings) + #expect(try store.loadDirectoryMarks(for: root) == ["vendor": .excluded]) + #expect(try store.loadIndexingSettings(for: URL(fileURLWithPath: "/projects/other")).includedDirectories.isEmpty) + } + } private final class DirectoryMarkKeyValueStore: KeyValueStore { diff --git a/rust/lithe-core/src/lsp/interface/engine.rs b/rust/lithe-core/src/lsp/interface/engine.rs index 1989c25f27..aaa82f9d7c 100644 --- a/rust/lithe-core/src/lsp/interface/engine.rs +++ b/rust/lithe-core/src/lsp/interface/engine.rs @@ -758,12 +758,16 @@ struct RuntimeSession { /// Plugin completion options fixed at initialize, retained for later Java /// configuration notifications and section pulls through the same adapter. jdt_completion: Option, + /// Immutable plugin input retained when workspace exclusions change or are removed. + jdt_import_exclusions: Option, /// Gradle import settings JDT LS holds. Fixed for the session's lifetime /// because the wrapper is a property of the workspace root at startup. jdt_gradle_configuration: Option, /// Workspace URI the server was initialized with; scopes workspace-wide /// queries such as Java entry-point discovery. root_uri: String, + indexing_roots: Mutex>, + indexing_revision: std::sync::atomic::AtomicU64, /// Serializes protocol-state commits with complete outbound message batches. /// Callers acquire this before `state` whenever an action can write to the /// server, preserving the same order in memory and on the wire. @@ -882,6 +886,107 @@ pub fn update_workspace_configuration( .update_plugin_configuration(configuration) } +/// Withdraw excluded working copies and update supported provider import configuration. +pub(crate) fn indexing_changed(root: &Path) -> Result<(), CoreError> { + let sessions = engine() + .sessions + .lock() + .map_err(|_| CoreError::new(ErrorCode::Unknown, "LSP registry lock was poisoned"))? + .values() + .cloned() + .collect::>(); + apply_indexing_to_sessions(root, sessions) +} + +fn apply_indexing_to_sessions( + root: &Path, + sessions: Vec>, +) -> Result<(), CoreError> { + let root_uri = url::Url::from_directory_path(root).ok(); + let canonical_root = root_uri + .as_ref() + .and_then(|uri| canonical_workspace_root(uri.as_str())); + let sessions = sessions + .into_iter() + .filter(|session| { + canonical_workspace_root(&session.root_uri) == canonical_root + && session.active.load(Ordering::Acquire) + }) + .collect::>(); + if sessions.is_empty() { + return Ok(()); + } + crate::project::indexing::prepare_provider_exclusions(root)?; + let roots = crate::project::indexing::excluded_roots(root); + let revision = crate::project::indexing::context(root).map_or(0, |policy| policy.revision); + for session in sessions { + if ensure_not_terminal(session.lock_state()?.lifecycle).is_err() { + continue; + } + if canonical_workspace_root(&session.root_uri) != canonical_root { + continue; + } + let mut previous = session + .indexing_roots + .lock() + .map_err(|_| CoreError::new(ErrorCode::Unknown, "LSP indexing lock was poisoned"))?; + if *previous == roots && session.indexing_revision.load(Ordering::Acquire) == revision { + continue; + } + let documents = session + .lock_state()? + .client + .open_documents + .keys() + .cloned() + .collect::>(); + for uri in documents { + if crate::project::indexing::uri_is_excluded(&session.root_uri, &uri)? { + session.close_document(&uri)?; + } + } + let diagnostic_uris = session + .lock_state()? + .client + .diagnostics + .keys() + .cloned() + .collect::>(); + for uri in diagnostic_uris { + if crate::project::indexing::uri_is_excluded(&session.root_uri, &uri)? { + let mut state = session.lock_state()?; + state.client.diagnostics.remove(&uri); + state.client.diagnostic_versions.remove(&uri); + push_diagnostics_event(&session, &mut state, &uri, None, Vec::new()); + } + } + if session.provider_id == "java" { + let order = session.lock_outbound_order()?; + if session.lock_state()?.client.initialized { + let maven = session.maven_configuration(); + let notification = settings_notification(session.jdt_settings(maven.as_deref())); + let message = serde_json::to_string(&json!({"jsonrpc":"2.0", "method":notification.method, "params":notification.params})).map_err(|error| CoreError::new(ErrorCode::Unknown, error.to_string()))?; + session.send_messages_or_fail(&order, vec![message], "indexingChanged")?; + } + } + if session.provider_id != "java" { + let order = session.lock_outbound_order()?; + if session.lock_state()?.client.initialized { + if let Some(configuration) = session.plugin_configuration() { + session.send_messages_or_fail( + &order, + vec![plugin_configuration_notification(&configuration)], + "indexingChanged", + )?; + } + } + } + *previous = roots.clone(); + session.indexing_revision.store(revision, Ordering::Release); + } + Ok(()) +} + /// Starts a managed language-server process and begins LSP initialization. pub fn start_server(request: StartServerRequest) -> Result { engine().start_server(request) @@ -944,10 +1049,17 @@ pub fn update_maven_configuration( impl RuntimeSession { /// Plugin configuration the server currently sees, if any. fn plugin_configuration(&self) -> Option> { - self.plugin_configuration + let base = self + .plugin_configuration .lock() .map(|configuration| configuration.clone()) - .unwrap_or_else(|poisoned| poisoned.into_inner().clone()) + .unwrap_or_else(|poisoned| poisoned.into_inner().clone()); + crate::lsp::languages::indexing::configuration( + &self.provider_id, + &self.root_uri, + base.as_deref(), + ) + .map(Arc::new) } fn update_plugin_configuration( @@ -984,7 +1096,11 @@ impl RuntimeSession { .lock() .unwrap_or_else(|poisoned| poisoned.into_inner()) = Some(configuration.clone()); let messages = if initialized { - vec![plugin_configuration_notification(&configuration)] + vec![plugin_configuration_notification( + self.plugin_configuration() + .as_deref() + .unwrap_or(&configuration), + )] } else { Vec::new() }; @@ -1003,7 +1119,9 @@ impl RuntimeSession { /// Java settings Lithe owns for this session, as sent to JDT LS. fn jdt_settings<'a>(&'a self, maven: Option<&'a JdtMavenConfiguration>) -> JdtSettings<'a> { JdtSettings { + indexing_root_uri: Some(&self.root_uri), completion: self.jdt_completion.as_ref(), + import_exclusions: self.jdt_import_exclusions.as_ref(), maven, gradle: self.jdt_gradle_configuration.as_ref(), java_runtimes: &self.jdt_java_runtimes, @@ -1617,6 +1735,12 @@ impl LspEngine { .and_then(|options| options.pointer("/settings/java/completion")) .filter(|completion| completion.is_object()) .cloned(); + let jdt_import_exclusions = request + .initialization_options + .as_ref() + .and_then(|options| options.pointer("/settings/java/import/exclusions")) + .filter(|exclusions| exclusions.is_array()) + .cloned(); let workspace_configuration = checked_workspace_configuration(request.workspace_configuration)?; let initialize = client_initialize_for_plugin( @@ -1630,7 +1754,9 @@ impl LspEngine { request.initialization_options, &java_extension_bundle_paths, JdtSettings { + indexing_root_uri: Some(&request.root_uri), completion: jdt_completion.as_ref(), + import_exclusions: jdt_import_exclusions.as_ref(), maven: jdt_maven_configuration.as_deref(), gradle: request.java_gradle.as_ref(), java_runtimes: &jdt_java_runtimes, @@ -1664,8 +1790,11 @@ impl LspEngine { plugin_configuration: Mutex::new(workspace_configuration.map(Arc::new)), jdt_java_runtimes, jdt_completion, + jdt_import_exclusions, jdt_gradle_configuration: request.java_gradle, root_uri: request.root_uri, + indexing_roots: Mutex::default(), + indexing_revision: std::sync::atomic::AtomicU64::new(0), outbound_order: Mutex::new(()), state: Mutex::new(SessionState { lifecycle: LspLifecycleState::Created, @@ -1839,6 +1968,9 @@ impl RuntimeSession { } let mut normalized = BTreeMap::new(); for change in changes { + if crate::project::indexing::uri_is_excluded(&self.root_uri, &change.uri)? { + continue; + } if !change.uri.contains("://") || change.uri.contains('\0') { return Err(CoreError::new( ErrorCode::InvalidRequest, @@ -1870,6 +2002,12 @@ impl RuntimeSession { &self, request: SyncDocumentRequest, ) -> Result { + if crate::project::indexing::uri_is_excluded(&self.root_uri, &request.uri)? { + return Err(CoreError::new( + ErrorCode::InvalidRequest, + "Document is excluded from indexing", + )); + } let uri = request.uri; let mut messages = Vec::new(); let mut stale_cancellations = Vec::new(); @@ -3112,6 +3250,13 @@ impl RuntimeSession { None => value, }; let method = value.get("method").and_then(Value::as_str); + if method == Some("textDocument/publishDiagnostics") { + if let Some(uri) = value.pointer("/params/uri").and_then(Value::as_str) { + if crate::project::indexing::uri_is_excluded(&self.root_uri, uri).unwrap_or(true) { + return Ok(()); + } + } + } let readiness = readiness_signal(&self.provider_id, method, value.get("params")); let java_import_progress = import_progress(&self.provider_id, method, value.get("params")); if method == Some("workspace/configuration") { @@ -8590,6 +8735,244 @@ mod tests { assert_eq!(harness.snapshot().state, LspLifecycleState::Failed); } + #[test] + fn indexing_java_retains_plugin_exclusions_across_all_configuration_channels() { + let workspace = TemporaryMavenWorkspace::recursive("indexing-java-base"); + let root = workspace.root.canonicalize().unwrap(); + let root_uri = url::Url::from_directory_path(&root).unwrap().to_string(); + struct Lease { + root: PathBuf, + revision: u64, + } + impl Drop for Lease { + fn drop(&mut self) { + let _ = crate::project::indexing::release( + crate::project::indexing::ReleaseIndexingRequest { + root: self.root.to_string_lossy().into_owned(), + revision: self.revision, + }, + ); + } + } + let mut lease = Lease { + root: root.clone(), + revision: 0, + }; + let plugin = json!({"settings":{"java":{"import":{"exclusions":["**/vendor/**"]}}}}); + let mut harness = Harness::start(|request| { + workspace.configure(request); + request.root_uri = root_uri.clone(); + request.initialization_options = Some(plugin.clone()); + }); + harness + .server + .complete_java_initialize(ready_capabilities()); + harness.await_state(LspLifecycleState::Ready); + for (index, excluded) in [true, false, true, false].into_iter().enumerate() { + let status = crate::project::indexing::configure(serde_json::from_value(json!({ + "root":root,"manualExcludedDirectories":if excluded {vec!["reactor"]} else {vec![]}, + "includedDirectories":[],"gitIgnoreEnabled":false + })).unwrap()).unwrap(); + lease.revision = status.revision; + apply_indexing_to_sessions(&root, vec![harness.session()]).unwrap(); + let mut expected = vec![json!("**/vendor/**")]; + if excluded { + let directory = root.join("reactor").to_string_lossy().into_owned(); + expected.extend([json!(directory), json!(format!("{directory}/**"))]); + } + let notifications = notifications(&harness, "workspace/didChangeConfiguration"); + assert_eq!( + notifications.last().unwrap()["params"]["settings"]["java"]["import"]["exclusions"], + json!(expected) + ); + let id = format!("indexing-java-{index}"); + harness.server.send(json!({"jsonrpc":"2.0", "id":id, "method":"workspace/configuration", "params":{"items":[ + {"section":"java.import.exclusions"},{"section":"java.import"},{"section":"java"} + ]}})); + let reply = await_reply(&harness, &id); + assert_eq!(reply["result"][0], json!(expected)); + assert_eq!(reply["result"][1]["exclusions"], json!(expected)); + assert_eq!(reply["result"][2]["import"]["exclusions"], json!(expected)); + } + assert_eq!( + harness.session().jdt_import_exclusions, + Some(json!(["**/vendor/**"])) + ); + // Restarting from the same immutable plugin input must not accumulate old overlays. + let restarted = Harness::start(|request| { + workspace.configure(request); + request.root_uri = root_uri; + request.initialization_options = Some(plugin); + }); + let initialize = notifications(&restarted, "initialize").pop().unwrap(); + assert_eq!( + initialize["params"]["initializationOptions"]["settings"]["java"]["import"] + ["exclusions"], + json!(["**/vendor/**"]) + ); + } + + #[test] + fn indexing_watcher_rebuild_publishes_recomputed_git_exclusions_to_java() { + let workspace = TemporaryMavenWorkspace::recursive("indexing-watcher-provider"); + let root = workspace.root.canonicalize().unwrap(); + std::fs::create_dir_all(root.join("ignored")).unwrap(); + std::fs::write(root.join("ignored/hidden.txt"), "hidden").unwrap(); + std::fs::write(root.join(".gitignore"), "ignored/\n").unwrap(); + let git = crate::git::execute_git_readonly( + &root.to_string_lossy(), + &["init".into(), "--quiet".into()], + None, + ) + .unwrap(); + assert_eq!(git.exit_code, 0, "{}", git.stderr); + let mut harness = Harness::start(|request| workspace.configure(request)); + harness + .server + .complete_java_initialize(ready_capabilities()); + harness.await_state(LspLifecycleState::Ready); + // Production notifications address the registry. Install this scripted + // session under a fixture-unique key and remove it even on assertion failure. + struct Registered { + key: String, + root: PathBuf, + revision: u64, + } + impl Drop for Registered { + fn drop(&mut self) { + engine().sessions.lock().unwrap().remove(&self.key); + let _ = crate::project::indexing::release( + crate::project::indexing::ReleaseIndexingRequest { + root: self.root.to_string_lossy().into_owned(), + revision: self.revision, + }, + ); + } + } + let mut registered = Registered { + key: root.to_string_lossy().into_owned(), + root: root.clone(), + revision: 0, + }; + engine() + .sessions + .lock() + .unwrap() + .insert(registered.key.clone(), harness.session()); + let status = crate::project::indexing::configure( + serde_json::from_value(json!({ + "root":root,"manualExcludedDirectories":[],"includedDirectories":[], + "gitIgnoreEnabled":true,"paths":["ignored"] + })) + .unwrap(), + ) + .unwrap(); + registered.revision = status.revision; + let before = notifications(&harness, "workspace/didChangeConfiguration"); + assert!( + before.last().unwrap()["params"]["settings"]["java"]["import"]["exclusions"] + .as_array() + .unwrap() + .len() + >= 2 + ); + // Hosts first refresh with no paths, before rebuilding their inventory. + let refreshed = crate::project::indexing::configure( + serde_json::from_value(json!({ + "root":root,"manualExcludedDirectories":[],"includedDirectories":[], + "gitIgnoreEnabled":true,"refresh":true,"paths":[] + })) + .unwrap(), + ) + .unwrap(); + registered.revision = refreshed.revision; + let host_refresh = notifications(&harness, "workspace/didChangeConfiguration"); + assert_eq!( + host_refresh.last().unwrap()["params"]["settings"]["java"]["import"]["exclusions"], + before.last().unwrap()["params"]["settings"]["java"]["import"]["exclusions"] + ); + crate::project::files::update_search_index( + serde_json::from_value(json!({ + "root":root,"paths":[".gitignore"] + })) + .unwrap(), + ) + .unwrap(); + let after = notifications(&harness, "workspace/didChangeConfiguration"); + assert!(after.len() > before.len()); + assert_eq!( + after.last().unwrap()["params"]["settings"]["java"]["import"]["exclusions"], + before.last().unwrap()["params"]["settings"]["java"]["import"]["exclusions"] + ); + assert_eq!( + harness.session().indexing_revision.load(Ordering::Acquire), + crate::project::indexing::context(&root).unwrap().revision + ); + } + + #[test] + fn indexing_change_withdraws_open_working_copies_and_rejects_sync() { + let workspace = TemporaryMavenWorkspace::recursive("indexing-working-copy"); + let root = workspace.root.canonicalize().unwrap(); + let root_uri = url::Url::from_directory_path(&root).unwrap().to_string(); + let mut harness = Harness::start(|request| { + request.root_uri = root_uri.clone(); + request.working_directory = root.to_string_lossy().into_owned(); + }); + harness.server.complete_initialize(ready_capabilities()); + harness.await_state(LspLifecycleState::Ready); + let uri = url::Url::from_file_path(root.join("reactor/main.go")) + .unwrap() + .to_string(); + harness.sync(&uri, "package main"); + let status = crate::project::indexing::configure( + serde_json::from_value(json!({ + "root":root,"manualExcludedDirectories":["reactor"], + "includedDirectories":[],"gitIgnoreEnabled":false + })) + .unwrap(), + ) + .unwrap(); + apply_indexing_to_sessions(&root, vec![harness.session()]).unwrap(); + assert!(!harness + .session() + .lock_state() + .unwrap() + .client + .open_documents + .contains_key(&uri)); + assert!(crate::project::indexing::uri_is_excluded(&root_uri, &uri).unwrap()); + let session = harness.session(); + assert!(session + .sync_document(SyncDocumentRequest { + session_id: harness.session_id.clone(), + uri: uri.clone(), + language_id: "go".into(), + text: "package main".into(), + content_changes: Vec::new(), + }) + .is_err()); + session.handle_server_message(json!({"jsonrpc":"2.0","method":"textDocument/publishDiagnostics", "params":{ + "uri":uri,"diagnostics":[{"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":1}},"severity":1,"message":"late"}] + }}).to_string()).unwrap(); + assert!(!session + .lock_state() + .unwrap() + .client + .diagnostics + .contains_key(&uri)); + + assert_eq!( + harness.session().indexing_revision.load(Ordering::Acquire), + status.revision + ); + crate::project::indexing::release(crate::project::indexing::ReleaseIndexingRequest { + root: root.to_string_lossy().into_owned(), + revision: status.revision, + }) + .unwrap(); + } + /// Criterion 8: diagnostics for a stale document version are ignored. /// Criterion 9: closing a document clears document and diagnostic state. #[test] diff --git a/rust/lithe-core/src/lsp/languages/indexing.rs b/rust/lithe-core/src/lsp/languages/indexing.rs new file mode 100644 index 0000000000..daa3c0958c --- /dev/null +++ b/rust/lithe-core/src/lsp/languages/indexing.rs @@ -0,0 +1,148 @@ +//! Provider-owned native scan settings. These are not build-system exclusions. +use serde_json::{json, Value}; + +/// Overlay the current policy without mutating the user's stored configuration. +/// Removing exclusions therefore restores the original settings exactly. +pub(crate) fn configuration(provider: &str, root_uri: &str, base: Option<&Value>) -> Option { + if !matches!(provider, "rust" | "go") { + return base.cloned(); + } + let Some(root) = url::Url::parse(root_uri) + .ok() + .and_then(|uri| uri.to_file_path().ok()) + else { + return base.cloned(); + }; + let root = root.canonicalize().unwrap_or(root); + if crate::project::indexing::context(&root).is_none() { + return base.cloned(); + } + Some(with_roots( + provider, + base, + &crate::project::indexing::excluded_roots(&root), + )) +} + +fn with_roots(provider: &str, base: Option<&Value>, roots: &[String]) -> Value { + let mut configuration = base.cloned().unwrap_or_else(|| json!({})); + match provider { + // rust-analyzer.files.exclude takes literal workspace-relative paths, not globs. + // https://rust-analyzer.github.io/book/configuration#rust-analyzerfilesexclude + "rust" => append_array( + &mut configuration, + &["rust-analyzer", "files", "exclude"], + roots.to_vec(), + &[], + ), + // https://go.dev/gopls/settings#directoryFilters: ordered filters, last match wins. + // Preserve its documented default when the user did not configure this array. + "go" => append_array( + &mut configuration, + &["gopls", "directoryFilters"], + roots + .iter() + .filter(|path| !path.contains(['*', '?', '[', ']', '{', '}'])) + .map(|path| { + if path == "." { + "-".into() + } else { + format!("-{path}") + } + }) + .collect(), + &["-**/node_modules"], + ), + _ => {} + } + configuration +} + +/// Normalize owned dotted prefixes, so a request for the provider section sees them too. +fn append_array(value: &mut Value, path: &[&str], additions: Vec, defaults: &[&str]) { + for length in 2..=path.len() { + let dotted = path[..length].join("."); + let previous = value + .as_object_mut() + .and_then(|object| object.remove(&dotted)); + if let Some(previous) = previous { + if let Some(slot) = nested_slot(value, &path[..length]) { + *slot = previous; + } + } + } + let Some(slot) = nested_slot(value, path) else { + return; + }; + if slot.is_null() { + *slot = json!(defaults); + } + if let Some(array) = slot.as_array_mut() { + for addition in additions { + let value = Value::String(addition); + // Go filters are ordered: an existing exclusion before a later inclusion + // must move to the end rather than being treated as a harmless duplicate. + array.retain(|item| item != &value); + array.push(value); + } + } +} + +fn nested_slot<'a>(value: &'a mut Value, path: &[&str]) -> Option<&'a mut Value> { + let object = value.as_object_mut()?; + let child = object.entry(path[0]).or_insert(Value::Null); + if path.len() == 1 { + return Some(child); + } + if child.is_null() { + *child = json!({}); + } + nested_slot(child, &path[1..]) +} + +#[cfg(test)] +mod tests { + use super::*; + #[test] + fn native_exclusions_preserve_settings_and_restore_them_on_undo() { + let base = json!({"rust-analyzer":{"files":{"exclude":["existing"]},"cargo":{"allFeatures":true}}}); + let excluded = with_roots("rust", Some(&base), &["vendor".into(), "带 空格".into()]); + assert_eq!( + excluded["rust-analyzer"]["files"]["exclude"], + json!(["existing", "vendor", "带 空格"]) + ); + assert_eq!( + excluded["rust-analyzer"]["cargo"], + base["rust-analyzer"]["cargo"] + ); + assert_eq!(with_roots("rust", Some(&base), &[]), base); + let go = json!({"gopls.directoryFilters":["+vendor","-cache"]}); + assert_eq!( + with_roots("go", Some(&go), &["vendor".into()])["gopls"]["directoryFilters"], + json!(["+vendor", "-cache", "-vendor"]) + ); + assert_eq!( + with_roots( + "go", + Some(&json!({"gopls":{"directoryFilters":["-vendor","+vendor"]}})), + &["vendor".into()] + )["gopls"]["directoryFilters"], + json!(["+vendor", "-vendor"]) + ); + assert_eq!( + with_roots("go", None, &["vendor".into()])["gopls"]["directoryFilters"], + json!(["-**/node_modules", "-vendor"]) + ); + } + #[test] + fn native_patterns_do_not_accidentally_exclude_literal_metacharacter_siblings() { + assert_eq!( + with_roots("go", None, &["literal*".into()])["gopls"]["directoryFilters"], + json!(["-**/node_modules"]) + ); + assert_eq!( + with_roots("rust", None, &["literal*".into()])["rust-analyzer"]["files"]["exclude"], + json!(["literal*"]) + ); + } +} diff --git a/rust/lithe-core/src/lsp/languages/jdt.rs b/rust/lithe-core/src/lsp/languages/jdt.rs index 36f9f43259..d17b914741 100644 --- a/rust/lithe-core/src/lsp/languages/jdt.rs +++ b/rust/lithe-core/src/lsp/languages/jdt.rs @@ -162,9 +162,13 @@ pub(crate) struct JdtJavaRuntime { /// Values Lithe owns in JDT LS's `settings.java`, borrowed from one session. #[derive(Debug, Clone, Copy, Default)] pub(crate) struct JdtSettings<'a> { + /// Workspace indexing policy, when the host has installed one. + pub indexing_root_uri: Option<&'a str>, /// Plugin-declared completion options from this session's initialization; /// all leaves survive except the provider-owned guessMethodArguments. pub completion: Option<&'a Value>, + /// Original plugin import exclusions, before Lithe overlays the workspace policy. + pub import_exclusions: Option<&'a Value>, pub maven: Option<&'a JdtMavenConfiguration>, /// Gradle import settings, present only for Gradle workspaces. pub gradle: Option<&'a JdtGradleConfiguration>, @@ -488,6 +492,25 @@ fn merge_java_settings(options: &mut Map, provider_settings: Valu // `offline.enabled`, ...) have to survive, so the owned leaves merge // into the declared `import` object instead of replacing it. if key == "import" { + if let Some(exclusions) = value.get("exclusions").and_then(Value::as_array) { + let import = java + .entry("import".to_string()) + .or_insert_with(|| json!({})); + if !import.is_object() { + *import = json!({}); + } + let mut combined = import + .get("exclusions") + .and_then(Value::as_array) + .cloned() + .unwrap_or_default(); + for exclusion in exclusions { + if !combined.contains(exclusion) { + combined.push(exclusion.clone()); + } + } + import["exclusions"] = json!(combined); + } if let Some(gradle) = value.get("gradle").and_then(Value::as_object) { let import = java .entry("import".to_string()) @@ -513,6 +536,9 @@ fn merge_java_settings(options: &mut Map, provider_settings: Valu continue; } } + if key == "import" && value.get("exclusions").is_some() { + continue; + } java.insert(key, value); } } @@ -1195,6 +1221,22 @@ fn java_settings(settings: JdtSettings<'_>) -> Value { if let Some(section) = gradle_settings_section(gradle_configuration) { java["java"]["import"]["gradle"] = section; } + if settings.indexing_root_uri.is_some() || settings.import_exclusions.is_some() { + let mut exclusions = settings + .import_exclusions + .and_then(Value::as_array) + .cloned() + .unwrap_or_default(); + if let Some(root_uri) = settings.indexing_root_uri { + for path in crate::project::indexing::java_import_exclusions(root_uri) { + let value = Value::String(path); + if !exclusions.contains(&value) { + exclusions.push(value); + } + } + } + java["java"]["import"]["exclusions"] = json!(exclusions); + } if let Some(configuration) = maven_configuration { java["java"]["project"]["sourcePaths"] = json!(configuration.source_paths); } @@ -1306,9 +1348,10 @@ fn java_configuration_for_section(section: Option<&str>, settings: JdtSettings<' Some("java.configuration.maven.globalSettings") => maven_configuration .and_then(|value| value.global_settings_path.as_ref()) .map_or(Value::Null, |path| json!(path)), - Some("java.import") => gradle_settings_section(gradle_configuration) - .map(|section| json!({ "gradle": section })) - .unwrap_or(Value::Null), + Some("java.import") => java_settings(settings)["java"]["import"].clone(), + Some("java.import.exclusions") => { + java_settings(settings)["java"]["import"]["exclusions"].clone() + } Some("java.import.gradle") => { gradle_settings_section(gradle_configuration).unwrap_or(Value::Null) } diff --git a/rust/lithe-core/src/lsp/languages/mod.rs b/rust/lithe-core/src/lsp/languages/mod.rs index 33b674161d..29b695639b 100644 --- a/rust/lithe-core/src/lsp/languages/mod.rs +++ b/rust/lithe-core/src/lsp/languages/mod.rs @@ -1,6 +1,7 @@ //! Dynamic provider metadata and host-model adapters for individual languages. mod catalog; +pub(crate) mod indexing; pub(crate) mod java_entrypoints; pub(crate) mod java_main_methods; pub(crate) mod java_navigation_syntax; diff --git a/rust/lithe-core/src/project/files.rs b/rust/lithe-core/src/project/files.rs index 0654ffe3b1..601b96662c 100644 --- a/rust/lithe-core/src/project/files.rs +++ b/rust/lithe-core/src/project/files.rs @@ -87,6 +87,9 @@ pub struct DirectoryListingRequest { #[serde(rename_all = "camelCase")] /// Bounded file, content, and symbol search options. pub struct SearchRequest { + /// Workspace-relative scopes, applied before result caps without changing policy ownership. + #[serde(default)] + pub scope_paths: Vec, pub root: String, pub query: String, #[serde(default)] @@ -201,14 +204,30 @@ fn default_max_results() -> usize { /// Scans visible workspace entries and invalidates any stale search index. pub fn snapshot(request: WorkspaceSnapshotRequest) -> Result { let root = existing_root(&request.root)?; + let indexing_policy = super::indexing::context(&root); search_index::invalidate_root(&root); let rules = VisibilityRules::new(request.hidden_directory_names, request.hidden_file_patterns); let mut files = Vec::new(); let mut nested_worktrees = Vec::new(); + let mut incomplete_directories = Vec::new(); let node = if request.include_tree { - scan_node(&root, &root, &rules, &mut files, &mut nested_worktrees)? + scan_node( + &root, + &root, + &rules, + &mut files, + &mut nested_worktrees, + &mut incomplete_directories, + )? } else { - collect_snapshot_files(&root, &root, &rules, &mut files, &mut nested_worktrees)?; + collect_snapshot_files( + &root, + &root, + &rules, + &mut files, + &mut nested_worktrees, + &mut incomplete_directories, + )?; WorkspaceNode { path: String::new(), name: node_name(&root), @@ -216,10 +235,14 @@ pub fn snapshot(request: WorkspaceSnapshotRequest) -> Result listing, + Err(error) + if matches!( + error.code, + ErrorCode::PermissionDenied | ErrorCode::WorkspaceNotFound + ) => + { + continue + } + Err(error) => return Err(error), }; let children = listing .children @@ -251,7 +283,10 @@ pub fn list_directories( path: relative_path(&path, &root), name: node_name(&path), is_directory, - children: if is_directory && directory_is_visibly_empty(&path, &root, &rules) { + children: if is_directory + && !super::indexing::is_excluded(&root, &path, true).unwrap_or(true) + && directory_is_visibly_empty(&path, &root, &rules) + { Some(Vec::new()) } else { None @@ -296,6 +331,7 @@ fn listable_directory(root: &Path, relative: &str, rules: &VisibilityRules) -> O /// Searches visible file paths and current file contents using the shared index. pub fn search(request: SearchRequest) -> Result { let root = existing_root(&request.root)?; + let indexing_policy = super::indexing::context(&root); let query = request.query.trim().to_string(); if query.is_empty() { return Ok(SearchResponse { @@ -311,7 +347,25 @@ pub fn search(request: SearchRequest) -> Result { let index = index .read() .map_err(|_| CoreError::new(ErrorCode::Unknown, "Search index lock was poisoned"))?; - search_with_index(&root, &request, &query, &index) + let result = search_with_index(&root, &request, &query, &index)?; + if let Some(policy) = &indexing_policy { + policy.check()?; + } + Ok(result) +} + +fn scope_allows(scopes: &[String], path: &str) -> bool { + scopes.is_empty() + || scopes.iter().any(|scope| { + #[cfg(windows)] + let (scope, path) = (scope.to_lowercase(), path.to_lowercase()); + scope.is_empty() + || scope == "." + || path == scope.as_str() + || path + .strip_prefix(scope.as_str()) + .is_some_and(|suffix| suffix.starts_with('/')) + }) } fn search_with_index( @@ -342,7 +396,7 @@ fn search_with_index( continue; }; let path = &indexed_file.path; - if !file_mask_allows(&masks, path) { + if !scope_allows(&request.scope_paths, path) || !file_mask_allows(&masks, path) { continue; } if matcher.matches(path) { @@ -370,7 +424,7 @@ fn search_with_index( continue; }; let path = &indexed_file.path; - if !file_mask_allows(&masks, path) { + if !scope_allows(&request.scope_paths, path) || !file_mask_allows(&masks, path) { continue; } let file = root.join(path); @@ -404,6 +458,7 @@ fn search_with_index( /// Combines file, content, and Java-symbol results for Search Everywhere. pub fn search_everywhere(request: SearchRequest) -> Result { let root = existing_root(&request.root)?; + let indexing_policy = super::indexing::context(&root); let query = request.query.trim().to_string(); if query.is_empty() { return Ok(SearchResponse { @@ -553,6 +608,9 @@ pub fn search_everywhere(request: SearchRequest) -> Result Result { let root = existing_root(&request.root)?; + let indexing_policy = super::indexing::context(&root); let query = request.query.trim().to_string(); if query.is_empty() { return Ok(ReplacementPreviewResponse { files: Vec::new() }); @@ -628,6 +687,9 @@ pub fn replace_preview( continue; } let file = root.join(&relative); + if super::indexing::is_excluded(&root, &file, false)? { + continue; + } let text = request .text_overrides .get(&relative) @@ -659,6 +721,9 @@ pub fn replace_preview( } } files.sort_by(|left, right| left.path.cmp(&right.path)); + if let Some(policy) = &indexing_policy { + policy.check()?; + } Ok(ReplacementPreviewResponse { files }) } @@ -687,12 +752,23 @@ pub fn update_search_index( ) -> Result { let root = existing_root(&request.root)?; let rules = VisibilityRules::new(request.hidden_directory_names, request.hidden_file_patterns); + if request.paths.iter().any(|path| { + path.ends_with(".gitignore") + || path.contains(".git/") + || path.ends_with(".git") + || root.join(path).is_dir() + }) { + super::indexing::refresh(&root)?; + } let outcome = search_index::update_paths(&root, &rules, &request.paths); let rebuilt = matches!(outcome, UpdateOutcome::RequiresRebuild); if rebuilt { search_index::invalidate_root(&root); } let index = search_index::get_or_build(&root, &rules)?; + // Refresh starts with no Git decisions. Publish only after traversal has + // resolved them, otherwise providers briefly (or permanently) lose exclusions. + super::super::lsp::indexing_changed(&root)?; let index = index .read() .map_err(|_| CoreError::new(ErrorCode::Unknown, "Search index lock was poisoned"))?; @@ -857,6 +933,7 @@ fn scan_node( rules: &VisibilityRules, files: &mut Vec, nested_worktrees: &mut Vec, + incomplete_directories: &mut Vec, ) -> Result { crate::protocol::cancellation::check()?; let metadata = fs::symlink_metadata(path)?; @@ -866,6 +943,14 @@ fn scan_node( .and_then(|value| value.to_str()) .unwrap_or("Workspace") .to_string(); + if super::indexing::is_excluded(root, path, metadata.is_dir())? { + return Ok(WorkspaceNode { + path: relative, + name, + is_directory: metadata.is_dir(), + children: None, + }); + } if !metadata.is_dir() { files.push(relative.clone()); return Ok(WorkspaceNode { @@ -886,8 +971,29 @@ fn scan_node( let mut visible_children = Vec::new(); for (child_path, _) in listing.children { crate::protocol::cancellation::check()?; - if let Ok(child) = scan_node(&child_path, root, rules, files, nested_worktrees) { - visible_children.push(child); + match scan_node( + &child_path, + root, + rules, + files, + nested_worktrees, + incomplete_directories, + ) { + Ok(child) => visible_children.push(child), + Err(error) + if matches!( + error.code, + ErrorCode::PermissionDenied | ErrorCode::WorkspaceNotFound + ) => + { + incomplete_directories.push(relative_path(&child_path, root)); + eprintln!( + "Workspace skipped directory {:?}: {}", + relative_path(&child_path, root), + error.message + ); + } + Err(error) => return Err(error), } } Ok(WorkspaceNode { @@ -905,8 +1011,12 @@ fn collect_snapshot_files( rules: &VisibilityRules, files: &mut Vec, nested_worktrees: &mut Vec, + incomplete_directories: &mut Vec, ) -> Result<(), CoreError> { crate::protocol::cancellation::check()?; + if super::indexing::is_excluded(root, path, true)? { + return Ok(()); + } let listing = visible_children(path, root, rules, ChildOrder::Traversal)?; nested_worktrees.extend( listing @@ -917,8 +1027,31 @@ fn collect_snapshot_files( for (child_path, is_directory) in listing.children { if is_directory { // A directory that vanished mid-scan is skipped, as in `scan_node`. - let _ = collect_snapshot_files(&child_path, root, rules, files, nested_worktrees); + if let Err(error) = collect_snapshot_files( + &child_path, + root, + rules, + files, + nested_worktrees, + incomplete_directories, + ) { + if !matches!( + error.code, + ErrorCode::PermissionDenied | ErrorCode::WorkspaceNotFound + ) { + return Err(error); + } + incomplete_directories.push(relative_path(&child_path, root)); + eprintln!( + "Workspace skipped directory {:?}: {}", + relative_path(&child_path, root), + error.message + ); + } } else { + if super::indexing::is_excluded(root, &child_path, false)? { + continue; + } files.push(relative_path(&child_path, root)); } } @@ -1121,7 +1254,7 @@ pub(crate) fn is_inside_nested_linked_worktree(root: &Path, relative: &str) -> b false } -fn existing_root(value: &str) -> Result { +pub(crate) fn existing_root(value: &str) -> Result { let path = PathBuf::from(value); let metadata = fs::metadata(&path) .map_err(|_| CoreError::new(ErrorCode::WorkspaceNotFound, "Workspace does not exist"))?; diff --git a/rust/lithe-core/src/project/indexing.rs b/rust/lithe-core/src/project/indexing.rs new file mode 100644 index 0000000000..920ffdb8f8 --- /dev/null +++ b/rust/lithe-core/src/project/indexing.rs @@ -0,0 +1,827 @@ +//! Workspace-owned indexing exclusions, independent of tree visibility and Git writes. + +use super::files::{existing_root, relative_path}; +use crate::protocol::{CoreError, ErrorCode}; +use serde::{Deserialize, Serialize}; +use std::collections::{BTreeMap, HashMap}; +use std::path::{Path, PathBuf}; +use std::sync::atomic::{AtomicBool, AtomicU64, Ordering}; +use std::sync::{Arc, Mutex, OnceLock}; + +#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +/// User-owned policy. Missing policies preserve legacy Core callers' behavior. +pub struct IndexingPolicy { + pub manual_excluded_directories: Vec, + pub included_directories: Vec, + pub git_ignore_enabled: bool, +} + +#[derive(Deserialize)] +#[serde(rename_all = "camelCase")] +/// Installs a policy before workspace consumers start; refresh discards Git decisions. +pub struct ConfigureIndexingRequest { + pub root: String, + #[serde(flatten)] + pub policy: IndexingPolicy, + #[serde(default)] + pub refresh: bool, + #[serde(default)] + pub paths: Vec, +} + +#[derive(Serialize)] +#[serde(rename_all = "camelCase")] +/// Effective directory reasons and Git availability, never a claim about third-party scans. +pub struct IndexingStatus { + pub revision: u64, + pub excluded_directories: BTreeMap, + pub git_ignore_failed: bool, +} + +/// Immutable policy generation with lazily cached Git directory decisions. +pub(crate) struct IndexingContext { + pub(crate) revision: u64, + /// Host release token; watcher refreshes replace readers without changing ownership. + owner_revision: u64, + root: PathBuf, + policy: IndexingPolicy, + decisions: Mutex>, + pub(crate) retired: AtomicBool, + git_failed: AtomicBool, + git_resolved: AtomicBool, +} + +static POLICIES: OnceLock>>> = OnceLock::new(); +static REVISION: AtomicU64 = AtomicU64::new(1); + +fn policies() -> &'static Mutex>> { + POLICIES.get_or_init(Mutex::default) +} + +fn validate_paths(paths: &mut Vec) -> Result<(), CoreError> { + for path in paths.iter_mut() { + *path = path.trim_end_matches('/').to_string(); + if path != "." + && (path.is_empty() + || Path::new(path).is_absolute() + || path.contains(['\\', '\0', ':']) + || path + .split('/') + .any(|part| part.is_empty() || part == ".." || part == ".")) + { + return Err(CoreError::new( + ErrorCode::InvalidRequest, + "Invalid indexing directory", + )); + } + } + paths.sort(); + paths.dedup(); + Ok(()) +} + +/// Registers a project policy atomically. In-flight readers cannot publish a retired generation. +pub fn configure(mut request: ConfigureIndexingRequest) -> Result { + let root = existing_root(&request.root)?; + validate_paths(&mut request.policy.manual_excluded_directories)?; + validate_paths(&mut request.policy.included_directories)?; + validate_paths(&mut request.paths)?; + let mut changed = false; + let context = { + let mut entries = policies() + .lock() + .map_err(|_| CoreError::new(ErrorCode::Unknown, "Indexing policy lock was poisoned"))?; + let unchanged = entries.get(&root).filter(|old| { + old.policy == request.policy && !request.refresh && !old.retired.load(Ordering::Acquire) + }); + if let Some(old) = unchanged { + Arc::clone(old) + } else { + changed = true; + if let Some(old) = entries.get(&root) { + old.retired.store(true, Ordering::Release); + } + let revision = REVISION.fetch_add(1, Ordering::Relaxed); + let next = Arc::new(IndexingContext { + revision, + owner_revision: revision, + root: root.clone(), + policy: request.policy, + decisions: Mutex::default(), + retired: AtomicBool::new(false), + git_failed: AtomicBool::new(false), + git_resolved: AtomicBool::new(false), + }); + entries.insert(root.clone(), Arc::clone(&next)); + next + } + }; + if changed { + super::search_index::invalidate_root(&root); + } + let mut excluded_directories = BTreeMap::new(); + for path in request.paths { + if let Some(reason) = context.reason(&path, true)? { + excluded_directories.insert(path, reason.to_string()); + } + } + for path in &context.policy.manual_excluded_directories { + excluded_directories.insert(path.clone(), "manual".into()); + } + if let Ok(decisions) = context.decisions.lock() { + for (path, excluded) in decisions.iter() { + if *excluded + && !context + .policy + .included_directories + .iter() + .any(|included| contains(included, path) || contains(path, included)) + { + excluded_directories + .entry(path.clone()) + .or_insert_with(|| "git".into()); + } + } + } + crate::lsp::indexing_changed(&root)?; + Ok(IndexingStatus { + revision: context.owner_revision, + excluded_directories, + git_ignore_failed: context.git_failed.load(Ordering::Acquire), + }) +} + +#[derive(Deserialize)] +#[serde(rename_all = "camelCase")] +/// Revision-guarded release; a late old window must not retire a newly opened project. +pub struct ReleaseIndexingRequest { + pub root: String, + pub revision: u64, +} + +pub fn release(request: ReleaseIndexingRequest) -> Result { + let requested = PathBuf::from(request.root); + let root = + super::search_index::canonicalize_with_missing_components(&requested).unwrap_or(requested); + let entries = policies() + .lock() + .map_err(|_| CoreError::new(ErrorCode::Unknown, "Indexing policy lock was poisoned"))?; + let Some(context) = entries + .get(&root) + .filter(|context| context.owner_revision == request.revision) + else { + return Ok(false); + }; + context.retired.store(true, Ordering::Release); + context + .decisions + .lock() + .map_err(|_| CoreError::new(ErrorCode::Unknown, "Indexing decision lock was poisoned"))? + .clear(); + drop(entries); + super::search_index::invalidate_root(&root); + Ok(true) +} + +pub(crate) fn context(root: &Path) -> Option> { + policies().lock().ok()?.get(root).cloned() +} + +pub(crate) fn refresh(root: &Path) -> Result<(), CoreError> { + { + let mut entries = policies() + .lock() + .map_err(|_| CoreError::new(ErrorCode::Unknown, "Indexing policy lock was poisoned"))?; + let Some(old) = entries.get(root) else { + return Ok(()); + }; + // Closing a workspace must never be undone by a late watcher event. + old.check()?; + let next = Arc::new(IndexingContext { + revision: REVISION.fetch_add(1, Ordering::Relaxed), + owner_revision: old.owner_revision, + root: old.root.clone(), + policy: old.policy.clone(), + decisions: Mutex::default(), + retired: AtomicBool::new(false), + git_failed: AtomicBool::new(false), + git_resolved: AtomicBool::new(false), + }); + old.retired.store(true, Ordering::Release); + entries.insert(root.to_path_buf(), next); + } + super::search_index::invalidate_root(root); + // The caller rebuilds Git decisions before publishing provider settings. + Ok(()) +} + +/// Resolve native Git decisions before a live provider receives a new generation. +/// This reuses the inventory walker (no file text reads) and prunes excluded trees. +pub(crate) fn prepare_provider_exclusions(root: &Path) -> Result<(), CoreError> { + let Some(context) = context(root) else { + return Ok(()); + }; + context.check()?; + if context.policy.git_ignore_enabled && !context.git_resolved.load(Ordering::Acquire) { + context.prepare_parent(root, "")?; + super::files::snapshot(super::files::WorkspaceSnapshotRequest { + root: root.to_string_lossy().into_owned(), + hidden_directory_names: Vec::new(), + hidden_file_patterns: Vec::new(), + include_tree: false, + })?; + context.check()?; + context.git_resolved.store(true, Ordering::Release); + } + Ok(()) +} + +fn contains(directory: &str, path: &str) -> bool { + #[cfg(windows)] + let (directory, path) = (directory.to_lowercase(), path.to_lowercase()); + directory == "." + || path == directory + || path + .strip_prefix(&directory[..]) + .is_some_and(|suffix| suffix.starts_with('/')) +} + +impl IndexingContext { + pub(crate) fn check(&self) -> Result<(), CoreError> { + crate::protocol::cancellation::check()?; + if self.retired.load(Ordering::Acquire) { + return Err(CoreError::new( + ErrorCode::Cancelled, + "Indexing policy changed", + )); + } + Ok(()) + } + + pub(crate) fn reason( + &self, + relative: &str, + is_directory: bool, + ) -> Result, CoreError> { + self.check()?; + if self + .policy + .manual_excluded_directories + .iter() + .any(|dir| contains(dir, relative)) + { + return Ok(Some("manual")); + } + if !self.policy.git_ignore_enabled + || self + .policy + .included_directories + .iter() + .any(|dir| contains(dir, relative)) + { + return Ok(None); + } + if relative.is_empty() || relative == "." { + return Ok(None); + } + if is_directory + && self + .policy + .included_directories + .iter() + .any(|included| contains(relative, included)) + { + return Ok(None); + } + let parts = relative.split('/').collect::>(); + let count = parts.len().saturating_sub(usize::from(!is_directory)); + for length in 1..=count { + let directory = parts[..length].join("/"); + self.prepare_parent( + self.root.join(&directory).parent().unwrap_or(&self.root), + &directory, + )?; + if self + .decisions + .lock() + .map_err(|_| { + CoreError::new(ErrorCode::Unknown, "Indexing decision lock was poisoned") + })? + .get(&directory) + == Some(&true) + { + return Ok(Some("git")); + } + } + Ok(None) + } + + /// Queries sibling directories in one batch, without enumerating their contents. + fn prepare_parent(&self, parent: &Path, requested: &str) -> Result<(), CoreError> { + self.check()?; + + if self + .decisions + .lock() + .map_err(|_| CoreError::new(ErrorCode::Unknown, "Indexing decision lock was poisoned"))? + .contains_key(requested) + { + return Ok(()); + } + let Ok(entries) = std::fs::read_dir(parent) else { + return Ok(()); + }; + let candidates = entries + .filter_map(Result::ok) + .filter(|entry| entry.file_type().is_ok_and(|kind| kind.is_dir())) + .filter_map(|entry| entry.file_name().into_string().ok()) + .collect::>(); + let ignored = crate::git::ignored_paths(parent, &candidates)?; + let mut decisions = HashMap::new(); + if let Some(ignored) = ignored { + // The index is authoritative for tracked descendants; check-ignore on a directory + // alone does not protect tracked files below an otherwise ignored directory. + for name in candidates { + let excluded = if parent.join(&name).join(".git").exists() { + // A nested repository owns its ignore rules and tracked content. + false + } else if ignored.contains(&name) { + let response = crate::git::execute_git_readonly( + &parent.to_string_lossy(), + &[ + "--literal-pathspecs".into(), + "ls-files".into(), + "-z".into(), + "--".into(), + name.clone(), + ], + None, + ); + self.check()?; + let Ok(response) = response else { + self.git_failed.store(true, Ordering::Release); + continue; + }; + if response.exit_code != 0 { + self.git_failed.store(true, Ordering::Release); + false + } else { + response.stdout.is_empty() + } + } else { + false + }; + decisions.insert(relative_path(&parent.join(name), &self.root), excluded); + } + } else { + self.git_failed.store(true, Ordering::Release); + for name in candidates { + decisions.insert(relative_path(&parent.join(name), &self.root), false); + } + } + self.check()?; + let mut cache = self.decisions.lock().map_err(|_| { + CoreError::new(ErrorCode::Unknown, "Indexing decision lock was poisoned") + })?; + cache.extend(decisions); + Ok(()) + } +} + +pub(crate) fn is_excluded(root: &Path, path: &Path, is_directory: bool) -> Result { + match context(root) { + Some(policy) => Ok(policy + .reason(&relative_path(path, root), is_directory)? + .is_some()), + None => Ok(false), + } +} + +/// Resolved roots for provider adapters. Git decisions are populated by the project scan. +pub(crate) fn excluded_roots(root: &Path) -> Vec { + let Some(context) = context(root) else { + return Vec::new(); + }; + let mut roots = context.policy.manual_excluded_directories.clone(); + if let Ok(decisions) = context.decisions.lock() { + roots.extend( + decisions + .iter() + .filter(|(path, excluded)| { + **excluded + && !context + .policy + .included_directories + .iter() + .any(|included| contains(included, path) || contains(path, included)) + }) + .map(|(path, _)| path.clone()), + ); + } + roots.sort(); + roots.dedup(); + roots +} + +/// File URIs are normalized through the same workspace root as index consumers. +pub(crate) fn uri_is_excluded(root_uri: &str, uri: &str) -> Result { + let root = url::Url::parse(root_uri) + .ok() + .and_then(|value| value.to_file_path().ok()); + let path = url::Url::parse(uri) + .ok() + .and_then(|value| value.to_file_path().ok()); + match (root, path) { + (Some(root), Some(path)) if path.starts_with(&root) => { + let relative = path.strip_prefix(&root).unwrap_or(&path).to_path_buf(); + let root = root.canonicalize().unwrap_or(root); + is_excluded(&root, &root.join(relative), false) + } + _ => Ok(false), + } +} + +/// Import globs only: these do not guarantee exclusion of referenced Java resources. +pub(crate) fn java_import_exclusions(root_uri: &str) -> Vec { + let Some(root) = url::Url::parse(root_uri) + .ok() + .and_then(|value| value.to_file_path().ok()) + else { + return Vec::new(); + }; + let root = root.canonicalize().unwrap_or(root); + excluded_roots(&root) + .into_iter() + // Native import patterns cannot faithfully represent literal glob metacharacters. + .filter(|path| !path.contains(['*', '?', '[', ']', '{', '}'])) + .flat_map(|path| { + if path == "." { + vec!["**".into()] + } else { + let directory = root.join(path).to_string_lossy().replace('\\', "/"); + // JDT LS BasicFileDetector matches the candidate directory itself + // before visiting children. A trailing /** alone misses its pom.xml. + vec![directory.clone(), format!("{directory}/**")] + } + }) + .collect() +} + +#[cfg(test)] +mod tests { + use super::super::{files, search_index}; + use super::*; + use serde_json::json; + use std::fs; + + #[test] + fn java_import_exclusion_matches_the_directory_itself_before_its_descendants() { + let workspace = Workspace::new(); + workspace.configure(&["ignored"], &[], false); + let uri = url::Url::from_directory_path(&workspace.0).unwrap(); + let directory = workspace.0.join("ignored").to_string_lossy().into_owned(); + assert_eq!( + java_import_exclusions(uri.as_str()), + vec![directory.clone(), format!("{directory}/**")] + ); + } + + struct Workspace(PathBuf); + impl Workspace { + fn new() -> Self { + let root = crate::tests::support::temporary_root("indexing-policy"); + fs::create_dir_all(root.join("ignored/deep")).unwrap(); + fs::create_dir_all(root.join("src")).unwrap(); + fs::write( + root.join("ignored/deep/Excluded.java"), + "class Excluded { String needle; }", + ) + .unwrap(); + fs::write( + root.join("src/Included.java"), + "class Included { String needle; }", + ) + .unwrap(); + Self(root.canonicalize().unwrap()) + } + fn configure(&self, manual: &[&str], included: &[&str], git: bool) -> IndexingStatus { + configure( + serde_json::from_value(json!({"root": self.0, + "manualExcludedDirectories": manual, "includedDirectories": included, + "gitIgnoreEnabled": git, "refresh": true})) + .unwrap(), + ) + .unwrap() + } + fn files(&self) -> Vec { + files::snapshot( + serde_json::from_value(json!({"root": self.0, "includeTree": false})).unwrap(), + ) + .unwrap() + .files + } + fn git(&self, args: &[&str]) { + let response = crate::git::execute_git_readonly( + &self.0.to_string_lossy(), + &args.iter().map(|s| s.to_string()).collect::>(), + None, + ) + .unwrap(); + assert_eq!(response.exit_code, 0, "{}", response.stderr); + } + } + impl Drop for Workspace { + fn drop(&mut self) { + if let Some(context) = policies().lock().unwrap().remove(&self.0) { + context.retired.store(true, Ordering::Release); + } + search_index::invalidate_root(&self.0); + files::DIRECTORY_VISITS.with_borrow_mut(|trace| *trace = None); + let _ = fs::remove_dir_all(&self.0); + } + } + + #[test] + fn manual_exclusion_prunes_enumeration_but_keeps_tree_browsing() { + let workspace = Workspace::new(); + workspace.configure(&["ignored"], &[], false); + files::DIRECTORY_VISITS.with_borrow_mut(|trace| *trace = Some(Vec::new())); + assert_eq!(workspace.files(), ["src/Included.java"]); + files::DIRECTORY_VISITS.with_borrow(|trace| { + assert!(!trace + .as_ref() + .unwrap() + .iter() + .any(|path| path.starts_with(workspace.0.join("ignored")))) + }); + let tree = files::list_directories( + serde_json::from_value( + json!({"root": workspace.0, "paths": ["", "ignored", "ignored/deep"]}), + ) + .unwrap(), + ) + .unwrap(); + assert_eq!(tree.directories.len(), 3); + assert!(tree.directories[2] + .children + .iter() + .any(|node| node.name == "Excluded.java")); + assert_eq!( + workspace.files(), + ["src/Included.java"], + "Browsing must not add candidates" + ); + } + + #[test] + fn policy_change_retires_old_readers_and_blocks_warm_cache_refill() { + let workspace = Workspace::new(); + workspace.configure(&[], &[], false); + let old = context(&workspace.0).unwrap(); + let query = || { + files::search_everywhere(serde_json::from_value(json!({"root":workspace.0,"query":"Excluded", "includeGeneratedFileNames":true})).unwrap()).unwrap() + }; + assert!(!query().matches.is_empty()); + workspace.configure(&["ignored"], &["ignored/deep"], false); + assert!(matches!( + old.check().unwrap_err().code, + ErrorCode::Cancelled + )); + assert!( + query().matches.is_empty(), + "A child exception cannot bypass a manual ancestor" + ); + search_index::update_cached_file( + &workspace.0, + &workspace.0.join("ignored/deep/Excluded.java"), + ); + assert!(query().matches.is_empty()); + workspace.configure(&[], &[], false); + assert!(!query().matches.is_empty()); + } + + /// Integration fixture uses the bounded native Git runner; no user repository or Git config is modified. + #[test] + fn git_directory_rules_preserve_tracked_files_and_include_exceptions() { + let workspace = Workspace::new(); + workspace.git(&["init", "--quiet"]); + fs::write( + workspace.0.join(".gitignore"), + "ignored/\n*.log\ntracked/\n", + ) + .unwrap(); + fs::write(workspace.0.join("single.log"), "still a candidate").unwrap(); + fs::create_dir_all(workspace.0.join("tracked")).unwrap(); + fs::write(workspace.0.join("tracked/keep.java"), "class Keep {}").unwrap(); + workspace.git(&["add", "-f", "tracked/keep.java"]); + workspace.configure(&[], &[], true); + let files = workspace.files(); + assert!(!files.contains(&"ignored/deep/Excluded.java".into())); + assert!(files.contains(&"single.log".into())); + assert!(files.contains(&"tracked/keep.java".into())); + workspace.configure(&[], &["ignored/deep"], true); + assert!(workspace + .files() + .contains(&"ignored/deep/Excluded.java".into())); + workspace.configure(&["ignored/deep"], &["ignored"], true); + assert!(!workspace + .files() + .contains(&"ignored/deep/Excluded.java".into())); + workspace.configure(&[], &[], false); + assert!(workspace + .files() + .contains(&"ignored/deep/Excluded.java".into())); + } + #[test] + fn watcher_refresh_preserves_host_release_and_rejects_both_stale_and_closed_readers() { + let workspace = Workspace::new(); + let installed = workspace.configure(&["ignored"], &[], false); + let before = context(&workspace.0).unwrap(); + files::update_search_index( + serde_json::from_value(json!({ + "root": workspace.0, "paths": [".gitignore"] + })) + .unwrap(), + ) + .unwrap(); + let after = context(&workspace.0).unwrap(); + assert_ne!(before.revision, after.revision); + assert!(before.check().is_err()); + assert_eq!(workspace.files(), ["src/Included.java"]); + assert!(release(ReleaseIndexingRequest { + root: workspace.0.to_string_lossy().into_owned(), + revision: installed.revision, + }) + .unwrap()); + assert!(after.check().is_err()); + assert!( + refresh(&workspace.0).is_err(), + "A late watcher cannot reopen a closed policy" + ); + assert!( + files::snapshot(serde_json::from_value(json!({ "root": workspace.0 })).unwrap()) + .is_err() + ); + let reopened = workspace.configure(&[], &[], false); + assert!(!release(ReleaseIndexingRequest { + root: workspace.0.to_string_lossy().into_owned(), + revision: installed.revision, + }) + .unwrap()); + assert_ne!(reopened.revision, installed.revision); + assert_eq!(workspace.files().len(), 2); + } + + #[test] + fn release_rejects_late_work_and_cannot_retire_a_new_generation() { + let workspace = Workspace::new(); + let first = workspace.configure(&[], &[], false); + let old = context(&workspace.0).unwrap(); + assert!(release(ReleaseIndexingRequest { + root: workspace.0.to_string_lossy().into_owned(), + revision: first.revision + }) + .unwrap()); + assert!(old.check().is_err()); + let second = workspace.configure(&["ignored"], &[], false); + assert!(second.revision > first.revision); + assert!(!release(ReleaseIndexingRequest { + root: workspace.0.to_string_lossy().into_owned(), + revision: first.revision + }) + .unwrap()); + assert_eq!(workspace.files(), ["src/Included.java"]); + } + + #[test] + fn git_negation_nested_rules_new_directories_and_unicode_are_native() { + let workspace = Workspace::new(); + workspace.git(&["init", "--quiet"]); + fs::write( + workspace.0.join(".gitignore"), + "projects/*/repos/\n晚到目录/\n", + ) + .unwrap(); + fs::create_dir_all(workspace.0.join("projects/中文 空格/repos")).unwrap(); + fs::write( + workspace.0.join("projects/.gitignore"), + "!中文 空格/repos/\n", + ) + .unwrap(); + fs::write( + workspace.0.join("projects/中文 空格/repos/kept.txt"), + "kept", + ) + .unwrap(); + workspace.configure(&[], &[], true); + assert!(workspace + .files() + .contains(&"projects/中文 空格/repos/kept.txt".into())); + fs::create_dir_all(workspace.0.join("晚到目录")).unwrap(); + fs::write(workspace.0.join("晚到目录/hidden.txt"), "hidden").unwrap(); + assert!( + !workspace.files().contains(&"晚到目录/hidden.txt".into()), + "A cached parent must still check a newly created directory" + ); + } + + #[test] + fn git_failure_does_not_drop_manual_exclusions() { + let workspace = Workspace::new(); + workspace.configure(&["ignored"], &[], true); + assert_eq!(workspace.files(), ["src/Included.java"]); + let status = configure(serde_json::from_value(json!({"root":workspace.0, + "manualExcludedDirectories":["ignored"],"includedDirectories":[],"gitIgnoreEnabled":true})).unwrap()).unwrap(); + assert!(status.git_ignore_failed); + assert_eq!(status.excluded_directories["ignored"], "manual"); + } + #[test] + fn scoped_search_keeps_project_policy_and_applies_scope_before_limit() { + let workspace = Workspace::new(); + workspace.configure(&[], &[], false); + let search = || { + files::search( + serde_json::from_value(json!({ + "root":workspace.0,"query":"needle","scopePaths":["src"], + "maxResults":1,"maxFileResults":0 + })) + .unwrap(), + ) + .unwrap() + }; + assert_eq!(search().matches[0].path, "src/Included.java"); + workspace.configure(&["src"], &[], false); + assert!(search().matches.is_empty()); + } + #[test] + fn repository_archive_fixture_reduces_visits_and_resident_index_files() { + let workspace = Workspace::new(); + workspace.git(&["init", "--quiet"]); + fs::write( + workspace.0.join(".gitignore"), + "bare-repos/\nprojects/*/repos/\n", + ) + .unwrap(); + for directory in [ + "bare-repos/archive", + "projects/alpha/repos/archive", + "projects/beta/repos/archive", + ] { + fs::create_dir_all(workspace.0.join(directory)).unwrap(); + for index in 0..32 { + fs::write( + workspace.0.join(directory).join(format!("file{index}.txt")), + "needle", + ) + .unwrap(); + } + } + let measure = |git| { + workspace.configure(&[], &[], git); + files::DIRECTORY_VISITS.with_borrow_mut(|trace| *trace = Some(Vec::new())); + let stats = files::warm_search_index( + serde_json::from_value(json!({"root":workspace.0})).unwrap(), + ) + .unwrap(); + let visits = files::DIRECTORY_VISITS.with_borrow(|trace| trace.as_ref().unwrap().len()); + (stats.file_count, visits) + }; + let before = measure(false); + let after = measure(true); + assert_eq!(before.0 - after.0, 96); + assert!(after.1 < before.1); + eprintln!( + "archive fixture: indexed files {} -> {}, directory visits {} -> {}", + before.0, after.0, before.1, after.1 + ); + } + #[cfg(unix)] + #[test] + fn inaccessible_optional_directory_reports_an_incomplete_inventory() { + use std::os::unix::fs::PermissionsExt; + let workspace = Workspace::new(); + workspace.configure(&[], &[], false); + let directory = workspace.0.join("ignored/deep"); + struct Restore(std::path::PathBuf); + impl Drop for Restore { + fn drop(&mut self) { + let _ = fs::set_permissions(&self.0, fs::Permissions::from_mode(0o755)); + } + } + let _restore = Restore(directory.clone()); + fs::set_permissions(&directory, fs::Permissions::from_mode(0o000)).unwrap(); + if fs::read_dir(&directory).is_ok() { + return; + } // Privileged hosts cannot exercise permission denial. + for include_tree in [true, false] { + let snapshot = files::snapshot( + serde_json::from_value(json!({"root":workspace.0,"includeTree":include_tree})) + .unwrap(), + ) + .unwrap(); + assert_eq!(snapshot.incomplete_directories, ["ignored/deep"]); + assert!(snapshot.files.contains(&"src/Included.java".into())); + } + } +} diff --git a/rust/lithe-core/src/project/mod.rs b/rust/lithe-core/src/project/mod.rs index a1b711f315..0e1e40f647 100644 --- a/rust/lithe-core/src/project/mod.rs +++ b/rust/lithe-core/src/project/mod.rs @@ -4,6 +4,7 @@ mod document_lifecycle; pub(crate) mod file_name_order; pub(crate) mod files; mod history; +pub(crate) mod indexing; mod markdown; mod maven; mod maven_dependency_tree; diff --git a/rust/lithe-core/src/project/search_index.rs b/rust/lithe-core/src/project/search_index.rs index 88456ab446..27cb07aedd 100644 --- a/rust/lithe-core/src/project/search_index.rs +++ b/rust/lithe-core/src/project/search_index.rs @@ -65,6 +65,7 @@ struct IndexKey { hidden_directories: Vec, hidden_file_patterns: Vec, names_only: bool, + policy_revision: u64, } type SharedIndex = Arc>; @@ -82,6 +83,7 @@ fn key(root: &Path, rules: &VisibilityRules) -> IndexKey { hidden_directories: rules.hidden_directories.clone(), hidden_file_patterns: rules.hidden_file_patterns.clone(), names_only: false, + policy_revision: super::indexing::context(root).map_or(0, |policy| policy.revision), } } @@ -156,7 +158,20 @@ pub(crate) fn update_cached_file(root: &Path, path: &Path) { return; } let metadata = fs::symlink_metadata(&absolute).ok(); + if super::indexing::is_excluded( + root, + &absolute, + metadata.as_ref().is_some_and(|m| m.is_dir()), + ) + .unwrap_or(true) + { + return; + } + let revision = super::indexing::context(root).map_or(0, |policy| policy.revision); for (cache_key, index) in entries { + if cache_key.policy_revision != revision { + continue; + } let rules = VisibilityRules { hidden_directories: cache_key.hidden_directories, hidden_file_patterns: cache_key.hidden_file_patterns, @@ -189,7 +204,11 @@ pub(crate) fn update_paths( if entries.is_empty() { return UpdateOutcome::NotIndexed; } + let revision = super::indexing::context(root).map_or(0, |policy| policy.revision); for (cache_key, shared) in entries { + if cache_key.policy_revision != revision { + return UpdateOutcome::RequiresRebuild; + } let Ok(mut index) = shared.write() else { return UpdateOutcome::RequiresRebuild; }; @@ -207,6 +226,15 @@ pub(crate) fn update_paths( continue; } let metadata = fs::symlink_metadata(&absolute).ok(); + if super::indexing::is_excluded( + root, + &absolute, + metadata.as_ref().is_some_and(|m| m.is_dir()), + ) + .unwrap_or(true) + { + continue; + } if metadata.as_ref().is_some_and(|value| value.is_dir()) || (metadata.is_none() && index.has_descendant(&relative)) { @@ -221,7 +249,8 @@ pub(crate) fn update_paths( impl WorkspaceSearchIndex { fn build(root: &Path, rules: &VisibilityRules, names_only: bool) -> Result { let mut paths = Vec::new(); - collect_files(root, root, rules, &mut paths)?; + let policy = super::indexing::context(root); + collect_files(root, root, rules, &mut paths, policy.as_deref())?; let mut index = Self { files: Vec::new(), free_ids: Vec::new(), @@ -231,9 +260,15 @@ impl WorkspaceSearchIndex { }; for path in paths { crate::protocol::cancellation::check()?; + if let Some(policy) = &policy { + policy.check()?; + } let relative = relative_path(&path, root); index.add_file(&path, relative); } + if let Some(policy) = &policy { + policy.check()?; + } Ok(index) } @@ -418,8 +453,14 @@ fn collect_files( path: &Path, rules: &VisibilityRules, files: &mut Vec, + policy: Option<&super::indexing::IndexingContext>, ) -> Result<(), CoreError> { crate::protocol::cancellation::check()?; + if let Some(policy) = policy { + if policy.reason(&relative_path(path, root), true)?.is_some() { + return Ok(()); + } + } let children = match visible_children(path, root, rules, ChildOrder::Traversal) { Ok(listing) => listing.children, Err(error) @@ -442,8 +483,16 @@ fn collect_files( }; for (child, is_directory) in children { if is_directory { - collect_files(root, &child, rules, files)?; + collect_files(root, &child, rules, files, policy)?; } else { + if let Some(policy) = policy { + if policy + .reason(&relative_path(&child, root), false)? + .is_some() + { + continue; + } + } files.push(child); } } @@ -600,10 +649,10 @@ mod tests { hidden_file_patterns: vec![], }; let mut paths = Vec::new(); - assert!(collect_files(&root, &root.join("vanished"), &rules, &mut paths).is_ok()); + assert!(collect_files(&root, &root.join("vanished"), &rules, &mut paths, None).is_ok()); assert!(paths.is_empty()); assert!(matches!( - collect_files(&root, &root, &rules, &mut paths) + collect_files(&root, &root, &rules, &mut paths, None) .unwrap_err() .code, ErrorCode::WorkspaceNotFound @@ -612,7 +661,7 @@ mod tests { let _scope = crate::protocol::cancellation::Scope::begin(Some(operation_id.clone()), None); assert!(crate::protocol::cancellation::cancel(&operation_id)); assert!(matches!( - collect_files(&root, &root.join("vanished"), &rules, &mut paths) + collect_files(&root, &root.join("vanished"), &rules, &mut paths, None) .unwrap_err() .code, ErrorCode::Cancelled @@ -679,7 +728,7 @@ mod tests { }; let mut paths = Vec::new(); assert!(matches!( - collect_files(&blocked, &blocked, &rules, &mut paths) + collect_files(&blocked, &blocked, &rules, &mut paths, None) .unwrap_err() .code, ErrorCode::PermissionDenied diff --git a/rust/lithe-core/src/protocol/command.rs b/rust/lithe-core/src/protocol/command.rs index 97cb4f4d36..52036a2000 100644 --- a/rust/lithe-core/src/protocol/command.rs +++ b/rust/lithe-core/src/protocol/command.rs @@ -184,6 +184,10 @@ pub enum CoreCommand { CommunityDiscourseAuthRevoke, /// Builds the visible project tree (`workspace.snapshot`). WorkspaceSnapshot, + /// Configure workspace indexing independently of tree visibility. + WorkspaceConfigureIndexing, + /// Releases an indexing generation when its project closes. + WorkspaceReleaseIndexing, /// Lists the visible children of project directories (`workspace.listDirectories`). WorkspaceListDirectories, /// Filter ordinary workspace-relative event paths using shared defaults. @@ -607,6 +611,8 @@ impl CoreCommand { "community.discourse.search" => Some(Self::CommunityDiscourseSearch), "community.discourse.auth.revoke" => Some(Self::CommunityDiscourseAuthRevoke), "workspace.snapshot" => Some(Self::WorkspaceSnapshot), + "workspace.releaseIndexing" => Some(Self::WorkspaceReleaseIndexing), + "workspace.configureIndexing" => Some(Self::WorkspaceConfigureIndexing), "workspace.filterChanges" => Some(Self::WorkspaceFilterChanges), "workspace.listDirectories" => Some(Self::WorkspaceListDirectories), "workspace.repositories" => Some(Self::WorkspaceRepositories), diff --git a/rust/lithe-core/src/protocol/contracts.rs b/rust/lithe-core/src/protocol/contracts.rs index 618ce5a593..b821ee654f 100644 --- a/rust/lithe-core/src/protocol/contracts.rs +++ b/rust/lithe-core/src/protocol/contracts.rs @@ -71,6 +71,9 @@ pub struct WorkspaceNode { #[serde(rename_all = "camelCase")] /// Complete visible workspace tree and its flattened file paths. pub struct WorkspaceSnapshotResponse { + /// Optional directories that could not be read; hosts must not infer deletions from this inventory. + #[serde(skip_serializing_if = "Vec::is_empty")] + pub incomplete_directories: Vec, pub root: WorkspaceNode, pub files: Vec, /// Linked worktrees checked out inside their own repository. They are left diff --git a/rust/lithe-core/src/runtime/dispatcher.rs b/rust/lithe-core/src/runtime/dispatcher.rs index 643c16dbd7..556ef01e44 100644 --- a/rust/lithe-core/src/runtime/dispatcher.rs +++ b/rust/lithe-core/src/runtime/dispatcher.rs @@ -536,6 +536,39 @@ fn execute(request: &str) -> CoreResponse { Err(error) => CoreResponse::failure(id, error), } } + CoreCommand::WorkspaceReleaseIndexing => { + match serde_json::from_value::( + parsed.payload, + ) + .map_err(|error| { + CoreError::new(ErrorCode::InvalidRequest, "Invalid indexing release") + .with_details(error.to_string()) + }) + .and_then(project::indexing::release) + { + Ok(released) => { + CoreResponse::success(id, serde_json::json!({"released": released})) + } + Err(error) => CoreResponse::failure(id, error), + } + } + CoreCommand::WorkspaceConfigureIndexing => { + match serde_json::from_value::( + parsed.payload, + ) + .map_err(|error| { + CoreError::new(ErrorCode::InvalidRequest, "Invalid indexing policy") + .with_details(error.to_string()) + }) + .and_then(project::indexing::configure) + { + Ok(data) => CoreResponse::success( + id, + serde_json::to_value(data).expect("indexing status should encode"), + ), + Err(error) => CoreResponse::failure(id, error), + } + } CoreCommand::WorkspaceSnapshot => { match serde_json::from_value::(parsed.payload) .map_err(|error| { diff --git a/shared/contracts/rust-core-api.md b/shared/contracts/rust-core-api.md index 2cd048b917..031f7472a7 100644 --- a/shared/contracts/rust-core-api.md +++ b/shared/contracts/rust-core-api.md @@ -975,6 +975,8 @@ package manager owns the download and Lithe does not infer bytes from logs. | `community.discourse.search` | Search normalized topics and sanitized posts | | `editor.lineEdit` | Apply a deterministic line-level text transform and return the replacement plus selection to restore | | `editor.lineCommentToken` | Resolve the line comment token for a file extension or language id | +| `workspace.releaseIndexing` | Retire a policy and clear index/cache data at project close; accepts `root` and the last observed `revision`, returns `released`; an old close must not retire a new generation | +| `workspace.configureIndexing` | Install a process-local, canonical-root indexing policy before workspace consumers run; returns a monotonic revision, effective directory reasons and Git failure state; see `shared/fixtures/workspace/indexing-policy-v1.json` | | `workspace.snapshot` | Enumerate visible workspace nodes and relative file paths; `nestedWorktrees` lists linked worktrees checked out inside their own repository, which are left out of the tree, files, and search index ; `includeTree: false` returns only `files` and a childless `root`; `files` (and the tree, when included) keep the lowercase traversal order that bounded consumers such as Windows Quick Open rely on, not the natural display order of `workspace.listDirectories` | | `workspace.filterChanges` | Filter an array of workspace-relative paths against Core's default build/cache exclusions; preserve order, spelling, and the empty root path. Native event loss bypasses filtering. Hosts relativize to the most specific explicit watch root and retain explicitly watched files. | | `workspace.listDirectories` | Return one visible level of children for each requested workspace-relative directory (`""` is the root); missing, hidden, symlinked, or nested-worktree paths are omitted, and each listing reports the nested worktrees it left out. Child directories have `children: []` only when a shallow probe proves them visibly empty; otherwise children remain omitted (unloaded), with no recursive tree allocation. Children list directories first, then names in IDEA's natural file-name order (digit runs compare by value, case-insensitive, `-` next to `_`; fixture `shared/fixtures/workspace/file-name-order-v1.json`) | @@ -4321,3 +4323,46 @@ The macOS settings surface offers search, refresh, file details, native open and reveal, creation and import. It keeps native loading separate from management and rejects stale results after project changes. Windows can use the same Core operations; the settings UI and Windows runtime validation remain pending. + + +### Workspace indexing policy + +`workspace.configureIndexing` accepts `root`, `manualExcludedDirectories`, +`includedDirectories`, `gitIgnoreEnabled`, optional `refresh` and `paths`. +Directory identifiers are workspace-relative `/` paths; `.` names the root. +Manual ancestor exclusions take precedence over every include exception. An include +exception disables automatic Git exclusion for its subtree, while allowing a +more-specific manual exclusion. Ancestors needed to reach an exception remain +traversable. Standalone ignored files are not converted to directory exclusions. +Git checks use native `check-ignore` and protect tracked descendants with `ls-files`. +No `.gitignore`, index, or project configuration files are written by this command. + +`revision` is the host-owned release token. Explicit policy replacement or refresh +creates a new token; internal Git watcher refreshes retain it while advancing a +separate Core-only scan generation used by index and language-service caches. +Changing settings or `refresh: true` retires the old generation and discards its +cache. Hosts persist settings in application storage and reinstall them on project +open. Consumers must not create a new policy root for a scoped search; search scopes +are subsets of the registered project root. `paths` asks for additional effective +directory reasons without changing the generation. `excludedDirectories` is a +resolved, lazily populated set, not a complete enumeration of the filesystem. +`gitIgnoreFailed` means automatic decisions are incomplete; manual exclusions remain +in force. Hosts must display this state instead of treating it as empty rules. + +Tree listings deliberately remain available. Snapshot inventories, filename and +content indexes, symbols and replacement preview candidates obey the policy. +Generated filename search cannot bypass it. Language-server working-copy sync is +blocked for excluded paths. Java additionally receives import exclusions; this does +not promise resource-scan exclusion for imported or build-declared modules. Rust and Go receive native configuration overlays that preserve user settings; +other providers may continue background scanning and hosts must display that limitation. + +`workspace.snapshot.incompleteDirectories` is present when optional child directories +could not be scanned. Hosts retain browsing but must not treat that inventory as an +authoritative deletion list or refresh automatic analysis from it. Root failures and +cancellation remain errors. `workspace.releaseIndexing` retires the revision and clears +cached Git decisions and indexes; a small retired policy record rejects late work +until the next explicit configuration for that root. + +`workspace.search.scopePaths` optionally limits candidates to workspace-relative +files or directory subtrees before applying result caps. It never establishes a new +policy root. Empty scopes search the full registered project. diff --git a/shared/fixtures/workspace/indexing-policy-v1.json b/shared/fixtures/workspace/indexing-policy-v1.json new file mode 100644 index 0000000000..1e3e9201a7 --- /dev/null +++ b/shared/fixtures/workspace/indexing-policy-v1.json @@ -0,0 +1,23 @@ +{ + "schemaVersion": 1, + "command": "workspace.configureIndexing", + "request": { + "root": "/workspace", + "manualExcludedDirectories": ["vendor"], + "includedDirectories": ["generated/examples"], + "gitIgnoreEnabled": true, + "refresh": false, + "paths": ["vendor", "generated"] + }, + "response": { + "revision": 1, + "excludedDirectories": {"vendor": "manual"}, + "gitIgnoreFailed": false + }, + "cases": [ + {"path": "vendor/src", "reason": "manual"}, + {"path": "generated/examples", "reason": null}, + {"path": "generated", "reason": null} + ], + "notes": "generated is a traversal ancestor of an include exception and cannot be pruned as a whole. Hidden-path rules are separate." +} diff --git a/shared/i18n/locales/en-US.json b/shared/i18n/locales/en-US.json index 4acee3de83..e7cf227c2e 100644 --- a/shared/i18n/locales/en-US.json +++ b/shared/i18n/locales/en-US.json @@ -9515,7 +9515,19 @@ "document.fileAccess.theSharedFileCouldNotBeFullySavedAllHardLinksMayContainPartialChangesYourEditorContentsAreRetainedCheckTheFileBeforeRetrying": "The shared file could not be fully saved. All hard links may contain partial changes. Your editor contents are retained; check the file before retrying.", "document.fileAccess.thisFileTypeCannotBeOpenedInThisEditor": "This file type cannot be opened in this editor", "document.fileAccess.updateAllHardLinks": "Update All Hard Links", - "document.fileAccess.savePermissionDenied": "Could not save {arg1}: permission denied. Check the file and parent folder permissions. Your edits are still unsaved." + "document.fileAccess.savePermissionDenied": "Could not save {arg1}: permission denied. Check the file and parent folder permissions. Your edits are still unsaved.", + "indexing.title": "Project Indexing", + "indexing.autoGit": "Automatically exclude Git-ignored directories", + "indexing.description": "Applies only to the current project, regardless of the Git configuration scope. Excluded directories remain browsable. Cancel Exclusion creates a project exception without changing Git rules.\n\nNative exclusion settings are merged for Java imports, Rust and Go. Java resources already imported may still be scanned. Python project configuration can override server exclusions; other providers remain active without a verified scan-exclusion guarantee.", + "indexing.cancelExclusion": "Cancel Exclusion", + "indexing.languageDescription": "Native exclusion settings are merged for Java imports, Rust and Go. Java resources already imported may still be scanned. Python project configuration can override server exclusions; other providers remain active without a verified scan-exclusion guarantee.", + "indexing.providerDependent": "Provider-dependent", + "indexing.gitFailed": "Git ignore exclusions could not be fully resolved. Manual exclusions remain active.", + "indexing.manualReason": "Manually excluded from indexing", + "indexing.gitReason": "Excluded from indexing by Git ignore rules", + "indexing.inheritedReason": "Excluded from indexing by a parent directory", + "indexing.incomplete": "Some directories could not be scanned. Automatic project analysis was not refreshed.", + "indexing.remoteUnsupported": "Directory indexing exclusions are not supported for remote projects." }, "overrides": { "windows": { diff --git a/shared/i18n/locales/zh-CN.json b/shared/i18n/locales/zh-CN.json index d3d242a32e..a32c4d2188 100644 --- a/shared/i18n/locales/zh-CN.json +++ b/shared/i18n/locales/zh-CN.json @@ -9515,7 +9515,19 @@ "document.fileAccess.theSharedFileCouldNotBeFullySavedAllHardLinksMayContainPartialChangesYourEditorContentsAreRetainedCheckTheFileBeforeRetrying": "未能完整保存共享文件。所有硬链接可能已包含部分修改。编辑器中的内容已保留,请检查文件后再重试。", "document.fileAccess.thisFileTypeCannotBeOpenedInThisEditor": "此编辑器不支持打开这种文件类型", "document.fileAccess.updateAllHardLinks": "更新所有硬链接", - "document.fileAccess.savePermissionDenied": "无法保存 {arg1}:权限不足。请检查文件及其父文件夹的权限,编辑内容尚未保存。" + "document.fileAccess.savePermissionDenied": "无法保存 {arg1}:权限不足。请检查文件及其父文件夹的权限,编辑内容尚未保存。", + "indexing.title": "项目索引", + "indexing.autoGit": "根据 Git 忽略规则自动排除目录", + "indexing.description": "仅作用于当前项目,不受 Git 配置范围影响。已排除目录仍可浏览;取消排除会保存项目例外,不修改 Git 规则。\n\n已合并 Java 导入、Rust 和 Go 的原生排除配置。Java 已导入资源仍可能被扫描;Python 项目配置可覆盖服务端排除。其他服务保持运行,尚未保证其后台扫描排除效果。", + "indexing.cancelExclusion": "取消排除", + "indexing.languageDescription": "已合并 Java 导入、Rust 和 Go 的原生排除配置。Java 已导入资源仍可能被扫描;Python 项目配置可覆盖服务端排除。其他服务保持运行,尚未保证其后台扫描排除效果。", + "indexing.providerDependent": "取决于语言服务", + "indexing.gitFailed": "无法完整解析 Git 忽略规则,手动排除仍然生效。", + "indexing.manualReason": "手动排除索引", + "indexing.gitReason": "根据 Git 忽略规则排除索引", + "indexing.inheritedReason": "继承父目录的索引排除", + "indexing.incomplete": "部分目录无法扫描,未刷新项目自动分析。", + "indexing.remoteUnsupported": "远程项目暂不支持目录索引排除。" }, "overrides": { "macos": { diff --git a/shared/i18n/messages.json b/shared/i18n/messages.json index c391ee48c3..fab9742d68 100644 --- a/shared/i18n/messages.json +++ b/shared/i18n/messages.json @@ -90792,6 +90792,149 @@ "arg1" ] } + }, + { + "id": "indexing.title", + "description": "Workspace indexing exclusions", + "platforms": [ + "macos", + "windows" + ], + "macos": { + "key": "Project Indexing", + "arguments": [] + } + }, + { + "id": "indexing.autoGit", + "description": "Workspace indexing exclusions", + "platforms": [ + "macos", + "windows" + ], + "macos": { + "key": "Automatically exclude Git-ignored directories", + "arguments": [] + } + }, + { + "id": "indexing.description", + "description": "Project-scoped Git ignore indexing control and language-service limitations", + "platforms": [ + "macos", + "windows" + ], + "macos": { + "key": "Applies to the current project. Excluded directories remain browsable. Cancel Exclusion creates a project exception without changing Git rules.", + "arguments": [] + } + }, + { + "id": "indexing.cancelExclusion", + "description": "Workspace indexing exclusions", + "platforms": [ + "macos", + "windows" + ], + "macos": { + "key": "Cancel Exclusion", + "arguments": [] + } + }, + { + "id": "indexing.languageDescription", + "description": "Workspace indexing exclusions", + "platforms": [ + "macos", + "windows" + ], + "macos": { + "key": "Lithe excludes these directories from its own indexes. Third-party language servers may still scan them when their provider does not support exclusions.", + "arguments": [] + } + }, + { + "id": "indexing.providerDependent", + "description": "Workspace indexing exclusions", + "platforms": [ + "macos", + "windows" + ], + "macos": { + "key": "Provider-dependent", + "arguments": [] + } + }, + { + "id": "indexing.gitFailed", + "description": "Workspace indexing exclusions", + "platforms": [ + "macos", + "windows" + ], + "macos": { + "key": "Git ignore exclusions could not be fully resolved. Manual exclusions remain active.", + "arguments": [] + } + }, + { + "id": "indexing.manualReason", + "description": "Workspace indexing exclusion reason", + "platforms": [ + "macos", + "windows" + ], + "macos": { + "key": "Manually excluded from indexing", + "arguments": [] + } + }, + { + "id": "indexing.gitReason", + "description": "Workspace indexing exclusion reason", + "platforms": [ + "macos", + "windows" + ], + "macos": { + "key": "Excluded from indexing by Git ignore rules", + "arguments": [] + } + }, + { + "id": "indexing.inheritedReason", + "description": "Workspace indexing exclusion reason", + "platforms": [ + "macos", + "windows" + ], + "macos": { + "key": "Excluded from indexing by a parent directory", + "arguments": [] + } + }, + { + "id": "indexing.incomplete", + "description": "Workspace indexing exclusion reason", + "platforms": [ + "macos", + "windows" + ], + "macos": { + "key": "Some directories could not be scanned. Automatic project analysis was not refreshed.", + "arguments": [] + } + }, + { + "id": "indexing.remoteUnsupported", + "description": "Remote workspace indexing exclusion capability", + "platforms": [ + "macos" + ], + "macos": { + "key": "Directory indexing exclusions are not supported for remote projects.", + "arguments": [] + } } ] } diff --git a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json new file mode 100644 index 0000000000..23782cbaad --- /dev/null +++ b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json @@ -0,0 +1,41 @@ +{ + "id": "workspace-indexing-exclusions", + "area": "工作区", + "group": "工作区生命周期", + "capability": "目录索引排除与 Git 自动排除", + "owner": "Workspace", + "verification": "两端开关已统一到设置 › 版本控制 › Git,移除原索引/项目环境入口。macOS 自动排除使用与凭据助手相同的小型 switch 样式,已在真实 App 目视核对;Windows 两项沿用同一个 Checkbox。真实 macOS App 已验证中文索引/忽略搜索定位、无项目禁用、默认开启、启闭重启和取消排除例外持久化。2026-10-30 同一开发构建的隔离英文原生实例补验通过:普通目录六项标记、继承排除仅取消排除且须由父级恢复、全局/仓库 Git 范围往返保持项目 A 的关闭值,项目 B 仍默认开启;两项目搜索结果分别符合开关值。Git 配置与忽略文件未变,原开发包 757 文件清单及哈希不变。此前 48 项 Swift、20 项前端定向测试通过,包含子仓库隔离和存储失败(本机 Swift 6.4,前端在 macOS/Bun 运行)。固定 Xcode 26.6 仍待验证;Windows 原生按用户要求不执行。Java 已导入项目仍可能扫描,Maven 显式模块保留;Go/Rust 原生配置与同步门禁已验证,不保证零后台目录访问。 2026-10-30 整合 preview fbb5e578 后修复刷新期间策略变更、watcher 刷新后的释放句柄、Java 原有导入排除保留、Windows 附加根菜单范围及远程误导提示;补充回归覆盖项目切换/同根重开/关闭期间的在途配置回收、跨工作区根移动目录的标记与例外迁移,以及先刷新策略再扫描时保留语言服务 Git 排除;TypeScript 类型检查通过。指定目录查找按用户要求暂不调整;远程索引排除未实现,明确显示不支持。 最终定向计时回归通过:Swift 79 项(6.4)、Rust 57 项、macOS/Bun 前端 26 项及相关回归 25 项;新增配额失败逆序回滚与可见性规则同根重开隔离。", + "macos": { + "implementationStatus": "partial", + "verificationStatus": "pending", + "evidence": [ + "macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift", + "macos/Sources/Lithe/Views/App/WorkspaceIndexingSettingsView.swift", + "rust/lithe-core/src/project/indexing.rs", + "shared/fixtures/workspace/indexing-policy-v1.json", + "rust/lithe-core/src/lsp/languages/indexing.rs", + "macos/Tests/LitheTests/RemoteConnectionsTests.swift", + "macos/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift", + "macos/Sources/Lithe/Views/App/GitExecutionSettingsView.swift", + "macos/Tests/LitheTests/SettingsSearchVocabularyTests.swift", + ".agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md", + "macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift" + ] + }, + "windows": { + "implementationStatus": "partial", + "verificationStatus": "pending", + "evidence": [ + "windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts", + "windows/tauri/src/features/settings/components/workspace-indexing-settings.tsx", + "rust/lithe-core/src/project/indexing.rs", + "shared/fixtures/workspace/indexing-policy-v1.json", + "rust/lithe-core/src/lsp/languages/indexing.rs", + "windows/tauri/src/features/file-explorer/hooks/use-file-explorer-context-menu.tsx", + "windows/tauri/src/features/settings/components/git-execution-settings.tsx", + "windows/tauri/src/features/settings/components/git-indexing-settings.test.tsx", + "windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts", + "windows/tauri/src/features/file-system/stores/file-system.store.ts" + ] + } +} diff --git a/windows/tauri/src/features/agent/components/agent-composer.tsx b/windows/tauri/src/features/agent/components/agent-composer.tsx index dc0b79d50b..44bfadebc4 100644 --- a/windows/tauri/src/features/agent/components/agent-composer.tsx +++ b/windows/tauri/src/features/agent/components/agent-composer.tsx @@ -7,7 +7,7 @@ import { type AgentFileDropHoverDetail, } from "@/features/file-system/utils/file-system-drop-controller"; import { extractDroppedFilePaths } from "@/features/file-system/utils/file-system-dropped-paths"; -import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; +import { useFileLoader } from "@/features/quick-open/hooks/use-file-loader"; import type { FileEntry } from "@/features/file-system/types/app.types"; import { useTranslation } from "@/i18n/locale-provider"; import { @@ -54,7 +54,6 @@ import { AgentBrandIcon } from "./brand/agent-brand-icon"; import { AgentSessionSelectors } from "./agent-session-selectors"; import { AgentContextUsageView, AgentSubscriptionQuotaView } from "./agent-usage-panel"; -const EMPTY_PROJECT_FILES: FileEntry[] = []; const FILE_RESULT_LIMIT = 50; function candidateFiles(entries: FileEntry[], limit: number): FileEntry[] { @@ -127,9 +126,7 @@ export function AgentComposer({ }: AgentComposerProps) { const { t } = useTranslation(); const snapshot = useAgentSnapshot(); - const projectFiles = useFileSystemStore( - (state) => state.projectFilesCache?.files ?? EMPTY_PROJECT_FILES, - ); + const { files: projectFiles } = useFileLoader(true); const activeFilePath = useBufferStore((state) => { const active = state.buffers.find((buffer) => buffer.isActive); return typeof active?.path === "string" ? active.path : null; diff --git a/windows/tauri/src/features/ai/components/agent-launcher.tsx b/windows/tauri/src/features/ai/components/agent-launcher.tsx index 8df677dc6a..c5d27bca4e 100644 --- a/windows/tauri/src/features/ai/components/agent-launcher.tsx +++ b/windows/tauri/src/features/ai/components/agent-launcher.tsx @@ -5,12 +5,10 @@ import { openTerminalAgent } from "@/features/ai/lib/terminal-agent-terminal"; import { useAIChatStore } from "@/features/ai/stores/ai-chat.store"; import type { FileEntry } from "@/features/file-system/types/app.types"; import { useBufferStore } from "@/features/editor/stores/buffer.store"; -import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; +import { useFileLoader } from "@/features/quick-open/hooks/use-file-loader"; import { useUIState } from "@/features/window/stores/ui-state.store"; import Command from "@/ui/command"; -const EMPTY_PROJECT_FILES: FileEntry[] = []; - interface AgentLaunchInputProps { active?: boolean; autoFocus?: boolean; @@ -26,9 +24,7 @@ export function AgentLaunchInput({ }: AgentLaunchInputProps) { const buffers = useBufferStore((state) => state.buffers); const openAgentBuffer = useBufferStore.use.actions().openAgentBuffer; - const allProjectFiles = useFileSystemStore( - (state) => state.projectFilesCache?.files ?? EMPTY_PROJECT_FILES, - ); + const { files: allProjectFiles } = useFileLoader(active); const selectedAgentId = useAIChatStore((state) => state.selectedAgentId); const createNewChat = useAIChatStore((state) => state.actions.createNewChat); const setSelectedAgentId = useAIChatStore((state) => state.actions.setSelectedAgentId); diff --git a/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts b/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts index 6fe5b10e99..460098e8c0 100644 --- a/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts +++ b/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts @@ -1,3 +1,4 @@ +import { useIndexingVersion } from "@/features/file-explorer/stores/workspace-indexing"; import { useEffect, useMemo, useRef } from "react"; import { useExtensionStore } from "@/extensions/registry/extension-store"; import { deferUntilAfterNextPaint } from "@/features/editor/lsp/deferred-lsp-work"; @@ -42,6 +43,7 @@ type DocumentChangeOwnerState = | { phase: "flushing"; completion: Promise }; interface LspDocumentOwner { + indexingVersion: number; // One record owns every asynchronous resource for one editor attachment. state: LspDocumentOwnerState; changes: DocumentChangeOwnerState; @@ -68,6 +70,9 @@ export const useLspIntegration = ({ filePath, contentRevision = 0, }: UseLspIntegrationOptions) => { + const indexingVersion = useIndexingVersion(); + const indexingVersionRef = useRef(indexingVersion); + indexingVersionRef.current = indexingVersion; const lspClient = useMemo(() => LspClient.getInstance(), []); const workspaceId = useActiveWorkspaceId(); const rootFolderPath = useFileSystemStore((state) => state.rootFolderPath); @@ -102,9 +107,12 @@ export const useLspIntegration = ({ const existingOwner = documentOwnersRef.current.get(filePath); const owner: LspDocumentOwner = - existingOwner && !isTerminalOwnerState(existingOwner.state) + existingOwner && + existingOwner.indexingVersion === indexingVersion && + !isTerminalOwnerState(existingOwner.state) ? existingOwner : { + indexingVersion, state: { phase: "scheduled" }, changes: { phase: "idle", completion: Promise.resolve() }, }; @@ -114,7 +122,7 @@ export const useLspIntegration = ({ const isStillOpen = Boolean( getSourceEditorBufferByPath(useBufferStore.getState().buffers, filePath), ); - if (isStillOpen) return; + if (isStillOpen && indexingVersionRef.current === indexingVersion) return; if (owner.state.phase === "stopping" || owner.state.phase === "stopped") return; const previousState = owner.state; @@ -147,12 +155,17 @@ export const useLspIntegration = ({ void stopTask; }; - if (existingOwner && !isTerminalOwnerState(existingOwner.state)) { + if ( + existingOwner && + existingOwner.indexingVersion === indexingVersion && + !isTerminalOwnerState(existingOwner.state) + ) { return cleanupDocument; } const initializeLsp = async () => { try { + if (existingOwner?.state.phase === "stopping") await existingOwner.state.task; logger.debug("LspIntegration", `Starting LSP for ${filePath} in ${workspacePath}`); const attachment = await lspClient.startForFile(filePath, scope); if (attachment.kind !== "attached") { @@ -196,7 +209,7 @@ export const useLspIntegration = ({ cancelInitialization(); cleanupDocument(); }; - }, [enabled, filePath, isLspSupported, lspClient, rootFolderPath, workspaceId]); + }, [enabled, filePath, isLspSupported, lspClient, rootFolderPath, workspaceId, indexingVersion]); useEffect(() => { if (!enabled || !filePath || !isLspSupported) return; diff --git a/windows/tauri/src/features/editor/lsp/lsp-client.ts b/windows/tauri/src/features/editor/lsp/lsp-client.ts index 8a78207a54..7e098e30f1 100644 --- a/windows/tauri/src/features/editor/lsp/lsp-client.ts +++ b/windows/tauri/src/features/editor/lsp/lsp-client.ts @@ -1,3 +1,5 @@ +import { canUseNativeFileSearch } from "@/features/file-search/utils/file-search-paths"; +import { configureWorkspaceIndexing } from "@/features/file-explorer/stores/workspace-indexing"; import { getLspSessionSnapshot, getLspWorkspaceSessionSnapshot, @@ -84,7 +86,7 @@ export type LspWorkspaceStartOutcome = export type LspFileAttachmentOutcome = | { kind: "attached"; attachmentId: string } - | { kind: "cancelled"; reason: "superseded" | "unsupportedHost" }; + | { kind: "cancelled"; reason: "superseded" | "unsupportedHost" | "excluded" }; type LanguageServerRepairOutcome = | { kind: "repaired" } @@ -714,12 +716,18 @@ export class LspClient { if (!payload.sessionId) return; presentMavenProfileTask(payload, { toast, - clearProjects: (sessionId) => useLspStore.getState().actions.clearMavenProfileProjects(sessionId), + clearProjects: (sessionId) => + useLspStore.getState().actions.clearMavenProfileProjects(sessionId), retry: (sessionId) => invoke("lsp_retry_maven_profiles", { sessionId }), }); }), ); - await listen( + await listen< + import("./stores/lsp.store").MavenProfileProjectResult & { + workspacePath?: string; + sessionId?: string; + } + >( "lsp://maven-profile-project", ownedLifecycleHandler(ownsLspSession, (payload) => { if (!payload?.projectUri || !payload.sessionId) return; @@ -771,43 +779,44 @@ export class LspClient { } if (existingTask) await existingTask.task; - const task: Promise = (async (): Promise => { - logger.debug( - "LSPClient", - `Using LSP server: ${launch.serverPath} for language: ${launch.languageId}`, - ); - useLspStore.getState().actions.updateLspStatus("connecting"); - await invoke("lsp_start", { - workspacePath, - serverPath: launch.serverPath, - serverArgs: launch.serverArgs, - languageId: launch.languageId, - providerId: launch.providerId, - pluginId: launch.pluginId, - tools: launch.tools || null, - initializationOptions: launch.initializationOptions || null, - workspaceConfiguration: launch.workspaceConfiguration || null, - runtimeExecutablePath: launch.runtimeExecutablePath || null, - jdtlsLaunchResources: launch.jdtlsLaunchResources || null, - cacheDirectory: launch.cacheDirectory || null, - environment: launch.environment || null, - workspaceFingerprint: launch.workspaceFingerprint || null, - mavenContext: launch.mavenContext || null, - javaRuntimes: launch.javaRuntimes ?? [], - javaGradle: launch.javaGradle ?? null, - }); + const task: Promise = + (async (): Promise => { + logger.debug( + "LSPClient", + `Using LSP server: ${launch.serverPath} for language: ${launch.languageId}`, + ); + useLspStore.getState().actions.updateLspStatus("connecting"); + await invoke("lsp_start", { + workspacePath, + serverPath: launch.serverPath, + serverArgs: launch.serverArgs, + languageId: launch.languageId, + providerId: launch.providerId, + pluginId: launch.pluginId, + tools: launch.tools || null, + initializationOptions: launch.initializationOptions || null, + workspaceConfiguration: launch.workspaceConfiguration || null, + runtimeExecutablePath: launch.runtimeExecutablePath || null, + jdtlsLaunchResources: launch.jdtlsLaunchResources || null, + cacheDirectory: launch.cacheDirectory || null, + environment: launch.environment || null, + workspaceFingerprint: launch.workspaceFingerprint || null, + mavenContext: launch.mavenContext || null, + javaRuntimes: launch.javaRuntimes ?? [], + javaGradle: launch.javaGradle ?? null, + }); - if (representativeFilePath) { - this.workspaceRepresentativeFiles.set(serverKey, representativeFilePath); - } - this.registerActiveServer(serverKey, launch.languageId, scope); - logger.debug("LSPClient", "LSP started successfully for workspace:", workspacePath); - return { kind: "ready" }; - })().finally(() => { - if (this.workspaceStartTasks.get(serverKey)?.task === task) { - this.workspaceStartTasks.delete(serverKey); - } - }); + if (representativeFilePath) { + this.workspaceRepresentativeFiles.set(serverKey, representativeFilePath); + } + this.registerActiveServer(serverKey, launch.languageId, scope); + logger.debug("LSPClient", "LSP started successfully for workspace:", workspacePath); + return { kind: "ready" }; + })().finally(() => { + if (this.workspaceStartTasks.get(serverKey)?.task === task) { + this.workspaceStartTasks.delete(serverKey); + } + }); this.workspaceStartTasks.set(serverKey, { scope, task }); return await task; } catch (error) { @@ -879,6 +888,20 @@ export class LspClient { scope: WorkspaceLaunchScope, intent: LspFileStartIntent = "attach", ): Promise { + if (canUseNativeFileSearch(scope.root)) { + const relative = filePath + .replace(/\\/g, "/") + .slice(scope.root.replace(/\\/g, "/").replace(/\/+$/, "").length + 1); + const parent = relative.includes("/") ? relative.slice(0, relative.lastIndexOf("/")) : "."; + const indexing = await configureWorkspaceIndexing(scope.root, [parent]); + if ( + Object.keys(indexing.excludedDirectories).some( + (directory) => + directory === "." || relative === directory || relative.startsWith(directory + "/"), + ) + ) + return { kind: "cancelled", reason: "excluded" }; + } const attachmentKey = trackedFileKey(filePath); const currentAttachmentId = this.fileAttachmentIds.get(attachmentKey); const currentSession = getLspSessionSnapshot({ filePath }); @@ -1990,16 +2013,13 @@ export class LspClient { ): Promise { const attachmentKey = trackedFileKey(filePath); const previous = this.documentChangeTasks.get(attachmentKey) ?? Promise.resolve(); - const task = previous.catch(() => undefined).then(async () => { - const document = this.documents.get(attachmentKey); - if (document?.phase !== "open" || document.content === content) return; - await this.notifyDocumentChange( - filePath, - content, - document.version + 1, - contentChanges, - ); - }); + const task = previous + .catch(() => undefined) + .then(async () => { + const document = this.documents.get(attachmentKey); + if (document?.phase !== "open" || document.content === content) return; + await this.notifyDocumentChange(filePath, content, document.version + 1, contentChanges); + }); this.documentChangeTasks.set(attachmentKey, task); const cleanup = () => { if (this.documentChangeTasks.get(attachmentKey) === task) { diff --git a/windows/tauri/src/features/file-explorer/components/file-explorer-tree-item.tsx b/windows/tauri/src/features/file-explorer/components/file-explorer-tree-item.tsx index 6b20ed2021..24dbec3a8c 100644 --- a/windows/tauri/src/features/file-explorer/components/file-explorer-tree-item.tsx +++ b/windows/tauri/src/features/file-explorer/components/file-explorer-tree-item.tsx @@ -54,6 +54,7 @@ interface FileExplorerTreeItemProps { isRoot: boolean; semanticKind?: FileIconSemanticKind; directoryMark?: DirectoryMark; + exclusionReason?: string; isCut: boolean; isDragOver: boolean; isDragging: boolean; @@ -102,6 +103,7 @@ function FileExplorerTreeItemComponent({ isRoot, semanticKind, directoryMark, + exclusionReason, isCut, isDragOver, isDragging, @@ -223,9 +225,11 @@ function FileExplorerTreeItemComponent({ title={ file.isSymlink && file.symlinkTarget ? t("files.symlinkTo", { target: file.symlinkTarget }) - : directoryMark - ? t(`project.mark.${directoryMark}`) - : undefined + : exclusionReason + ? exclusionReason + : directoryMark + ? t(`project.mark.${directoryMark}`) + : undefined } className={cn( "min-w-max", @@ -278,6 +282,7 @@ export const FileExplorerTreeItem = memo( prev.isRoot === next.isRoot && prev.semanticKind === next.semanticKind && prev.directoryMark === next.directoryMark && + prev.exclusionReason === next.exclusionReason && prev.isCut === next.isCut && prev.isDragOver === next.isDragOver && prev.isDragging === next.isDragging && diff --git a/windows/tauri/src/features/file-explorer/components/file-explorer-tree.tsx b/windows/tauri/src/features/file-explorer/components/file-explorer-tree.tsx index b751219e0f..baa7222a93 100644 --- a/windows/tauri/src/features/file-explorer/components/file-explorer-tree.tsx +++ b/windows/tauri/src/features/file-explorer/components/file-explorer-tree.tsx @@ -1,4 +1,11 @@ -import { useDirectoryMarks } from "../stores/directory-marks"; +import { canUseNativeFileSearch } from "@/features/file-search/utils/file-search-paths"; +import { + configureWorkspaceIndexing, + releaseWorkspaceIndexing, + indexingEvent, + type IndexingStatus, +} from "../stores/workspace-indexing"; +import { directoryMarkRoot, useDirectoryMarks } from "../stores/directory-marks"; import { ProjectDependencies } from "@/features/maven/components/project-dependencies"; import { useMavenStore } from "@/features/maven/stores/maven.store"; import { useUIState } from "@/features/window/stores/ui-state.store"; @@ -182,7 +189,93 @@ function FileExplorerTreeComponent({ }: FileExplorerTreeProps) { useJavaFileIconCacheLifecycle(); const [projectView, setProjectView] = useState("project"); - const { marks, markDirectory } = useDirectoryMarks(rootFolderPath); + const workspaceRootPaths = useMemo(() => { + const roots: string[] = []; + let hasRootFolderPath = false; + + for (const file of files) { + if (!file.isDir) continue; + roots.push(file.path); + if (file.path === rootFolderPath) { + hasRootFolderPath = true; + } + } + + if (rootFolderPath && !hasRootFolderPath) { + roots.unshift(rootFolderPath); + } + + return roots; + }, [files, rootFolderPath]); + + const { markForPath, markDirectory, error: directoryMarksError } = useDirectoryMarks(workspaceRootPaths); + useEffect(() => { if (directoryMarksError) toast.error(directoryMarksError); }, [directoryMarksError]); + const indexingRootsKey = JSON.stringify(workspaceRootPaths.filter(canUseNativeFileSearch)); + useEffect( + () => () => { + for (const root of JSON.parse(indexingRootsKey) as string[]) void releaseWorkspaceIndexing(root).catch(console.error); + }, + [indexingRootsKey], + ); + const [indexingStatuses, setIndexingStatuses] = useState>({}); + useEffect(() => { + const roots = [ + ...new Set( + [rootFolderPath, ...files.filter((entry) => entry.isDir).map((entry) => entry.path)].filter( + canUseNativeFileSearch, + ), + ), + ]; + let disposed = false; + const refresh = () => { + void Promise.all( + roots.map(async (root) => { + const paths: string[] = []; + const visit = (entries: FileEntry[]) => { + for (const entry of entries) { + if (!pathStartsWithRoot(entry.path, root)) continue; + if (entry.isDir) + paths.push(getRelativePath(entry.path, root).replace(/\\/g, "/") || "."); + if (entry.children) visit(entry.children); + } + }; + visit(files); + return [root, await configureWorkspaceIndexing(root, paths)] as const; + }), + ) + .then((values) => { + if (!disposed) setIndexingStatuses(Object.fromEntries(values)); + }) + .catch((error) => { + if (!disposed) toast.error(String(error)); + }); + }; + refresh(); + window.addEventListener(indexingEvent, refresh); + window.addEventListener("lithe:directory-marks-changed", refresh); + return () => { + disposed = true; + window.removeEventListener(indexingEvent, refresh); + window.removeEventListener("lithe:directory-marks-changed", refresh); + }; + }, [files, rootFolderPath]); + const exclusionReason = (path: string): string | undefined => { + const root = Object.keys(indexingStatuses) + .filter((root) => pathStartsWithRoot(path, root)) + .sort((a, b) => b.length - a.length)[0]; + if (!root) return undefined; + const relative = getRelativePath(path, root).replace(/\\/g, "/") || "."; + const reasons = indexingStatuses[root].excludedDirectories; + const exact = reasons[relative]; + return exact + ? t(exact === "manual" ? "indexing.manualReason" : "indexing.gitReason") + : Object.keys(reasons).some( + (directory) => directory === "." || relative.startsWith(directory + "/"), + ) + ? t("indexing.inheritedReason") + : undefined; + }; + const isIndexExcluded = (path: string) => exclusionReason(path) !== undefined; const [deleteCandidate, setDeleteCandidate] = useState<{ path: string; isDir: boolean; @@ -299,27 +392,9 @@ function FileExplorerTreeComponent({ return ig; }, [fileTreeSettings.hiddenFilePatterns, fileTreeSettings.hiddenDirectoryPatterns]); - const workspaceRootPaths = useMemo(() => { - const roots: string[] = []; - let hasRootFolderPath = false; - - for (const file of files) { - if (!file.isDir) continue; - roots.push(file.path); - if (file.path === rootFolderPath) { - hasRootFolderPath = true; - } - } - - if (rootFolderPath && !hasRootFolderPath) { - roots.unshift(rootFolderPath); - } - - return roots; - }, [files, rootFolderPath]); const getWorkspaceRootForPath = useCallback( - (path: string) => workspaceRootPaths.find((rootPath) => pathStartsWithRoot(path, rootPath)), + (path: string) => directoryMarkRoot(path, workspaceRootPaths), [workspaceRootPaths], ); @@ -1006,6 +1081,7 @@ function FileExplorerTreeComponent({ selectedEntries, selectedPaths, markDirectory, + isIndexExcluded, onFileSelect, onCreateNewFileInDirectory, onCreateNewFolderInDirectory, @@ -1778,22 +1854,18 @@ function FileExplorerTreeComponent({ ? selectedPaths.has(row.file.path) : highlightedPath === row.file.path } + exclusionReason={exclusionReason(row.file.path)} directoryMark={ - marks[getRelativePath(row.file.path, rootFolderPath).replace(/\\/g, "/") || "."] + isIndexExcluded(row.file.path) + ? "excluded" + : markForPath(row.file.path) } semanticKind={ - marks[ - getRelativePath(row.file.path, rootFolderPath).replace(/\\/g, "/") || "." - ] === "sources" + markForPath(row.file.path) === "sources" ? "folder.source-root" - : marks[ - getRelativePath(row.file.path, rootFolderPath).replace(/\\/g, "/") || "." - ] === "resources" + : markForPath(row.file.path) === "resources" ? "folder.resources-root" - : marks[ - getRelativePath(row.file.path, rootFolderPath).replace(/\\/g, "/") || - "." - ] === "package" + : markForPath(row.file.path) === "package" ? "folder.package" : row.semanticKind } diff --git a/windows/tauri/src/features/file-explorer/hooks/use-file-explorer-context-menu.tsx b/windows/tauri/src/features/file-explorer/hooks/use-file-explorer-context-menu.tsx index 063190ba33..a952642b56 100644 --- a/windows/tauri/src/features/file-explorer/hooks/use-file-explorer-context-menu.tsx +++ b/windows/tauri/src/features/file-explorer/hooks/use-file-explorer-context-menu.tsx @@ -90,6 +90,7 @@ interface UseFileExplorerContextMenuOptions { rootFolderPath?: string; selectedEntries?: Array<{ path: string; is_dir: boolean }>; selectedPaths?: ReadonlySet; + isIndexExcluded?: (path: string) => boolean; markDirectory?: (path: string, mark: DirectoryMark) => void; onFileSelect: (path: string, isDir: boolean) => void | string | Promise; onCreateNewFileInDirectory?: ( @@ -157,6 +158,7 @@ export function useFileExplorerContextMenu({ selectedEntries = [], selectedPaths, markDirectory, + isIndexExcluded, onFileSelect, onCreateNewFileInDirectory, onCreateNewFolderInDirectory, @@ -856,9 +858,15 @@ export function useFileExplorerContextMenu({ label: t("project.markAs"), icon: , onClick: () => {}, - children: DIRECTORY_MARKS.map((mark) => ({ + children: DIRECTORY_MARKS.filter( + (mark) => !isIndexExcluded?.(contextMenu.path) || mark === "plain", + ).map((mark) => ({ id: `mark-${mark}`, - label: t(`project.mark.${mark}`), + label: t( + mark === "plain" && isIndexExcluded?.(contextMenu.path) + ? "indexing.cancelExclusion" + : `project.mark.${mark}`, + ), onClick: () => { try { markDirectory(contextMenu.path, mark); @@ -1005,6 +1013,7 @@ export function useFileExplorerContextMenu({ selectedEntries, selectedPaths, markDirectory, + isIndexExcluded, availableRepoPaths, canRemoveWorkspaceRootPath, clipboardActions, diff --git a/windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts b/windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts index 55a8b13cdc..8a9bbec933 100644 --- a/windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts +++ b/windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts @@ -1,6 +1,7 @@ import { afterEach, beforeEach, expect, test } from "bun:test"; import { installHappyDom } from "@/test-utils/happy-dom"; -import { migrateDirectoryMarks, readDirectoryMarks } from "./directory-marks"; +import { readIndexingSettings, writeIndexingSettings } from "./workspace-indexing"; +import { directoryMarkRoot, markWorkspaceDirectory, migrateWorkspaceDirectoryMarks, migrateDirectoryMarks, readDirectoryMarks } from "./directory-marks"; let restore: () => void; const storageKey = "lithe.workspace-directory-marks.c:/workspace"; @@ -101,3 +102,137 @@ test("corrupt storage remains intact and legal dotted directory names are accept ); expect(() => readDirectoryMarks("C:/workspace")).toThrow(); }); + +test("Git include exceptions and remembered roles follow directory moves and deletion", () => { + writeIndexingSettings("C:/workspace", { + gitIgnoreEnabled: false, + includedDirectories: ["src/examples", "assets"], + previousRoles: { "src/examples": "sources" }, + }); + migrateDirectoryMarks("C:/workspace", "C:/workspace/src", "C:/workspace/code"); + expect(readIndexingSettings("C:/workspace")).toEqual({ + gitIgnoreEnabled: false, + includedDirectories: ["code/examples", "assets"], + previousRoles: { "code/examples": "sources" }, + }); + migrateDirectoryMarks("C:/workspace", "C:/workspace/code"); + expect(readIndexingSettings("C:/workspace")).toEqual({ + gitIgnoreEnabled: false, + includedDirectories: ["assets"], + previousRoles: {}, + }); +}); + + +test("indexing preferences do not overwrite marks for a similarly named workspace", () => { + window.localStorage.setItem("lithe.workspace-directory-marks.c:/workspace.indexing", JSON.stringify({version: 1, marks: {src: "sources"}})); + writeIndexingSettings("C:/workspace", {gitIgnoreEnabled: true, includedDirectories: [], previousRoles: {}}); + expect(readDirectoryMarks("C:/workspace.indexing")).toEqual({src: "sources"}); +}); + + +test("added and nested roots own exclusion marks and Git include exceptions", () => { + const roots = ["C:/main", "D:/added", "D:/added/nested"]; + writeIndexingSettings("C:/main", {gitIgnoreEnabled: false, includedDirectories: ["keep"], previousRoles: {}}); + markWorkspaceDirectory(roots, "d:\\ADDED\\build", "sources"); + markWorkspaceDirectory(roots, "d:\\ADDED\\build", "excluded"); + expect(readDirectoryMarks("D:/added")).toEqual({build: "excluded"}); + expect(readIndexingSettings("D:/added").previousRoles).toEqual({build: "sources"}); + markWorkspaceDirectory(roots, "D:/added/build", "plain"); + expect(readDirectoryMarks("D:/added")).toEqual({build: "sources"}); + expect(readIndexingSettings("D:/added").includedDirectories).toEqual(["build"]); + markWorkspaceDirectory(roots, "D:/added/nested/vendor", "plain"); + expect(directoryMarkRoot("D:/ADDED/nested/vendor", roots)).toBe("D:/added/nested"); + expect(readIndexingSettings("D:/added/nested").includedDirectories).toEqual(["vendor"]); + expect(readIndexingSettings("C:/main")).toEqual({gitIgnoreEnabled: false, includedDirectories: ["keep"], previousRoles: {}}); + expect(readDirectoryMarks("C:/main")).toEqual({}); + expect(() => markWorkspaceDirectory(roots, "E:/outside", "excluded")).toThrow(); +}); + + +test.each(["D:/added", "C:/main/nested"])("added-root marks and include exceptions follow rename and deletion: %s", (root) => { + const roots = ["C:/main", root]; + markWorkspaceDirectory(roots, `${root}/src`, "sources"); + markWorkspaceDirectory(roots, `${root}/src`, "excluded"); + markWorkspaceDirectory(roots, `${root}/src/examples`, "plain"); + // Include exceptions cannot override a manually excluded ancestor. + expect(readIndexingSettings(root).includedDirectories).toEqual([]); + migrateWorkspaceDirectoryMarks(roots, `${root}/src`, `${root}/code`); + expect(readDirectoryMarks(root)).toEqual({code: "excluded"}); + expect(readIndexingSettings(root).previousRoles).toEqual({code: "sources"}); + markWorkspaceDirectory(roots, `${root}/code`, "plain"); + expect(readDirectoryMarks(root)).toEqual({code: "sources"}); + expect(readIndexingSettings(root).includedDirectories).toEqual(["code"]); + migrateWorkspaceDirectoryMarks(roots, `${root}/code`); + expect(readDirectoryMarks(root)).toEqual({}); + expect(readIndexingSettings(root).includedDirectories).toEqual([]); + expect(readIndexingSettings(root).previousRoles).toEqual({}); + expect(readDirectoryMarks("C:/main")).toEqual({}); +}); + + +test.each(["D:/added", "C:/main/nested"])("moving between workspace roots preserves exclusions and exceptions: %s", (root) => { + const roots = ["C:/main", root]; + markWorkspaceDirectory(roots, `${root}/src`, "sources"); + markWorkspaceDirectory(roots, `${root}/src`, "excluded"); + markWorkspaceDirectory(roots, `${root}/examples`, "plain"); + migrateWorkspaceDirectoryMarks(roots, `${root}/src`, "C:/main/code"); + migrateWorkspaceDirectoryMarks(roots, `${root}/examples`, "C:/main/demos"); + expect(readDirectoryMarks(root)).toEqual({}); + expect(readDirectoryMarks("C:/main")).toEqual({code: "excluded"}); + expect(readIndexingSettings("C:/main").previousRoles).toEqual({code: "sources"}); + expect(readIndexingSettings("C:/main").includedDirectories).toEqual(["demos"]); + expect(readIndexingSettings(root).includedDirectories).toEqual([]); + markWorkspaceDirectory(roots, "C:/main/code", "plain"); + expect(readDirectoryMarks("C:/main")).toEqual({code: "sources"}); +}); + + +test("cross-root quota failure rolls back in reverse order without publishing partial state", () => { + const roots = ["C:/main", "D:/added"]; + markWorkspaceDirectory(roots, "D:/added/long-directory-name", "sources"); + markWorkspaceDirectory(roots, "D:/added/long-directory-name", "excluded"); + const keys = roots.flatMap((root) => [ + `lithe.workspace-directory-marks.${root.toLowerCase()}`, + `lithe.workspace-indexing.${root.toLowerCase()}`, + ]); + const before = keys.map((key) => window.localStorage.getItem(key)); + const storage = window.localStorage; + const originalSet = storage.setItem.bind(storage); + const sourceKey = keys[2]; + const targetKey = keys[0]; + let rejected = false; + let published = 0; + const listener = () => { published += 1; }; + window.addEventListener("lithe:directory-marks-changed", listener); + window.addEventListener("lithe:workspace-indexing-changed", listener); + const storageDescriptor = Object.getOwnPropertyDescriptor(window, "localStorage"); + const setItem = (key: string, value: string) => { + if (key === keys[1] && !rejected) { + rejected = true; + throw new DOMException("Fixture quota", "QuotaExceededError"); + } + // Restoring the large source before removing the new destination would + // exceed the same quota again and leave a partially migrated workspace. + if (rejected && key === sourceKey && value === before[2] && storage.getItem(targetKey) !== before[0]) { + throw new DOMException("Source restored before destination", "QuotaExceededError"); + } + originalSet(key, value); + }; + Object.defineProperty(window, "localStorage", {configurable: true, value: { + getItem: storage.getItem.bind(storage), removeItem: storage.removeItem.bind(storage), + clear: storage.clear.bind(storage), key: storage.key.bind(storage), + get length() { return storage.length; }, setItem, + }}); + try { + expect(() => migrateWorkspaceDirectoryMarks(roots, "D:/added/long-directory-name", "C:/main/code")).toThrow(); + expect(rejected).toBe(true); + expect(keys.map((key) => storage.getItem(key))).toEqual(before); + expect(published).toBe(0); + } finally { + if (storageDescriptor) Object.defineProperty(window, "localStorage", storageDescriptor); + else Reflect.deleteProperty(window, "localStorage"); + window.removeEventListener("lithe:directory-marks-changed", listener); + window.removeEventListener("lithe:workspace-indexing-changed", listener); + } +}); diff --git a/windows/tauri/src/features/file-explorer/stores/directory-marks.ts b/windows/tauri/src/features/file-explorer/stores/directory-marks.ts index d0c9a2ee79..9bdf4c8402 100644 --- a/windows/tauri/src/features/file-explorer/stores/directory-marks.ts +++ b/windows/tauri/src/features/file-explorer/stores/directory-marks.ts @@ -1,3 +1,9 @@ +import { + indexingEvent, + indexingSettingsStorageKey, + readIndexingSettings, + writeIndexingSettings, +} from "./workspace-indexing"; import { useCallback, useEffect, useState } from "react"; import { getRelativePath, @@ -67,43 +73,168 @@ export function migrateDirectoryMarks(root: string, source: string, destination? changed = true; if (replacement) marks[replacement + path.slice(relative.length)] = mark; } + const settings = readIndexingSettings(root); + const migrate = (path: string): string | undefined => { + const identity = markPathIdentity(root, path); + if (identity !== sourceIdentity && !identity.startsWith(`${sourceIdentity}/`)) return path; + return replacement ? replacement + path.slice(relative.length) : undefined; + }; + settings.includedDirectories = settings.includedDirectories + .map(migrate) + .filter((path): path is string => path !== undefined); + settings.previousRoles = Object.fromEntries( + Object.entries(settings.previousRoles).flatMap(([path, role]) => { + const moved = migrate(path); + return moved === undefined ? [] : [[moved, role]]; + }), + ); + writeIndexingSettings(root, settings); if (changed) writeMarks(root, marks); } -export function useDirectoryMarks(root?: string) { - const [snapshot, setSnapshot] = useState<{ root?: string; marks: Marks; error?: string }>({ - marks: {}, +/** The closest workspace owns preferences, including nested added roots. */ +export function directoryMarkRoot(path: string, roots: readonly string[]): string | undefined { + return roots.filter((root) => pathStartsWithRoot(path, root)) + .sort((a, b) => getPathIdentity(b).length - getPathIdentity(a).length)[0]; +} + +export function migrateWorkspaceDirectoryMarks(roots: readonly string[], source: string, destination?: string) { + const root = directoryMarkRoot(source, roots); + if (!root) return; + const targetRoot = destination ? directoryMarkRoot(destination, roots) : undefined; + if (!destination || !targetRoot || getPathIdentity(root) === getPathIdentity(targetRoot)) { + migrateDirectoryMarks(root, source, destination); + return; + } + const sourceRelative = getRelativePath(source, root).replace(/\\/g, "/") || "."; + const targetRelative = getRelativePath(destination, targetRoot).replace(/\\/g, "/") || "."; + const movePath = (path: string): string | undefined => { + const identity = markPathIdentity(root, path); + const sourceIdentity = markPathIdentity(root, sourceRelative); + if (sourceIdentity !== "." && identity !== sourceIdentity && !identity.startsWith(sourceIdentity + "/")) return; + const suffix = sourceRelative === "." ? (path === "." ? "" : "/" + path) : path.slice(sourceRelative.length); + return targetRelative === "." ? suffix.replace(/^\//, "") || "." : targetRelative + suffix; + }; + const sourceMarks = readDirectoryMarks(root); + const targetMarks = readDirectoryMarks(targetRoot); + const sourceSettings = readIndexingSettings(root); + const targetSettings = readIndexingSettings(targetRoot); + for (const path of Object.keys(sourceMarks)) { + const moved = movePath(path); + if (moved === undefined) continue; + targetMarks[moved] = sourceMarks[path]; + delete sourceMarks[path]; + } + sourceSettings.includedDirectories = sourceSettings.includedDirectories.filter((path) => { + const moved = movePath(path); + if (moved === undefined) return true; + if (!targetSettings.includedDirectories.includes(moved)) targetSettings.includedDirectories.push(moved); + return false; }); + for (const path of Object.keys(sourceSettings.previousRoles)) { + const moved = movePath(path); + if (moved === undefined) continue; + targetSettings.previousRoles[moved] = sourceSettings.previousRoles[path]; + delete sourceSettings.previousRoles[path]; + } + const writes: [string, string][] = [ + [key(root), JSON.stringify({version: 1, marks: sourceMarks})], + [indexingSettingsStorageKey(root), JSON.stringify(sourceSettings)], + [key(targetRoot), JSON.stringify({version: 1, marks: targetMarks})], + [indexingSettingsStorageKey(targetRoot), JSON.stringify(targetSettings)], + ]; + const previous = writes.map(([key]) => [key, window.localStorage.getItem(key)] as const); + let completed = 0; + try { + for (const [key, value] of writes) { + window.localStorage.setItem(key, value); + completed += 1; + } + } catch (error) { + // Undo destination growth before restoring the larger source entries. + for (const [key, value] of previous.slice(0, completed).reverse()) { + if (value === null) window.localStorage.removeItem(key); + else window.localStorage.setItem(key, value); + } + throw error; + } + for (const changedRoot of [root, targetRoot]) { + window.dispatchEvent(new window.CustomEvent(eventName, {detail: changedRoot})); + window.dispatchEvent(new window.CustomEvent(indexingEvent, {detail: changedRoot})); + } +} + +export function markWorkspaceDirectory(roots: readonly string[], path: string, mark: DirectoryMark) { + const root = directoryMarkRoot(path, roots); + if (!root) throw new Error("Directory is outside the workspace"); + const marks = readDirectoryMarks(root); + const relative = getRelativePath(path, root).replace(/\\/g, "/") || "."; + const settings = readIndexingSettings(root); + if (mark === "plain") { + if ( + Object.entries(marks).some( + ([path, value]) => + value === "excluded" && + path !== relative && + (path === "." || relative.startsWith(path + "/")), + ) + ) + return; + const previous = settings.previousRoles[relative] as DirectoryMark | undefined; + if (previous) marks[relative] = previous; + else delete marks[relative]; + delete settings.previousRoles[relative]; + if (!settings.includedDirectories.includes(relative)) + settings.includedDirectories.push(relative); + } else { + if (mark === "excluded" && marks[relative] && marks[relative] !== "excluded") + settings.previousRoles[relative] = marks[relative]; + marks[relative] = mark; + settings.includedDirectories = settings.includedDirectories.filter( + (path) => path !== relative, + ); + } + const oldSettings = window.localStorage.getItem(indexingSettingsStorageKey(root)); + try { + // Publish only after both preference writes succeed. + window.localStorage.setItem(indexingSettingsStorageKey(root), JSON.stringify(settings)); + writeMarks(root, marks); + window.dispatchEvent(new window.CustomEvent(indexingEvent, { detail: root })); + } catch (error) { + if (oldSettings === null) window.localStorage.removeItem(indexingSettingsStorageKey(root)); + else window.localStorage.setItem(indexingSettingsStorageKey(root), oldSettings); + throw error; + } +} + +export function useDirectoryMarks(roots: readonly string[]) { + const rootsKey = JSON.stringify(roots); + const [snapshot, setSnapshot] = useState<{ key: string; marks: Record; error?: string }>({ key: "", marks: {} }); useEffect(() => { const refresh = () => { try { - setSnapshot({ root, marks: root ? readDirectoryMarks(root) : {} }); + setSnapshot({ key: rootsKey, marks: Object.fromEntries(roots.map((root) => [root, readDirectoryMarks(root)])) }); } catch (error) { - setSnapshot({ root, marks: {}, error: String(error) }); + setSnapshot({ key: rootsKey, marks: {}, error: String(error) }); } }; refresh(); window.addEventListener(eventName, refresh); + window.addEventListener(indexingEvent, refresh); window.addEventListener("storage", refresh); return () => { window.removeEventListener(eventName, refresh); + window.removeEventListener(indexingEvent, refresh); window.removeEventListener("storage", refresh); }; - }, [root]); - const markDirectory = useCallback( - (path: string, mark: DirectoryMark) => { - if (!root || !pathStartsWithRoot(path, root)) - throw new Error("Directory is outside the workspace"); - const marks = readDirectoryMarks(root); - const relative = getRelativePath(path, root).replace(/\\/g, "/") || "."; - if (mark === "plain") delete marks[relative]; - else marks[relative] = mark; - writeMarks(root, marks); - }, - [root], - ); - return { - marks: snapshot.root === root ? snapshot.marks : {}, - error: snapshot.root === root ? snapshot.error : undefined, - markDirectory, + }, [rootsKey]); + const markDirectory = useCallback((path: string, mark: DirectoryMark) => { + markWorkspaceDirectory(roots, path, mark); + }, [rootsKey]); + const markForPath = (path: string): DirectoryMark | undefined => { + const root = directoryMarkRoot(path, roots); + if (!root || snapshot.key !== rootsKey) return undefined; + const relative = getRelativePath(path, root).replace(/\\/g, "/") || "."; + return snapshot.marks[root]?.[relative]; }; + return { markForPath, markDirectory, error: snapshot.key === rootsKey ? snapshot.error : undefined }; } diff --git a/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts b/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts new file mode 100644 index 0000000000..10aa782112 --- /dev/null +++ b/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts @@ -0,0 +1,111 @@ +import { useEffect, useState } from "react"; +import { executeCore } from "@/core/lithe-core-client"; +import { getPathIdentity } from "@/utils/path-helpers"; + +export interface IndexingSettings { + gitIgnoreEnabled: boolean; + includedDirectories: string[]; + previousRoles: Record; +} +export interface IndexingStatus { + revision: number; + excludedDirectories: Record; + gitIgnoreFailed: boolean; +} +export const indexingEvent = "lithe:workspace-indexing-changed"; +const key = (root: string) => + `lithe.workspace-directory-marks.${getPathIdentity(root).replace(/\/+$/, "")}`; +export const indexingSettingsStorageKey = (root: string) => + `lithe.workspace-indexing.${getPathIdentity(root).replace(/\/+$/, "")}`; +export function readIndexingSettings(root: string): IndexingSettings { + const raw = window.localStorage.getItem(indexingSettingsStorageKey(root)); + if (!raw) return { gitIgnoreEnabled: true, includedDirectories: [], previousRoles: {} }; + const value = JSON.parse(raw); + if ( + typeof value.gitIgnoreEnabled !== "boolean" || + !Array.isArray(value.includedDirectories) || + !value.includedDirectories.every((path: unknown) => typeof path === "string") + ) + throw new Error("Invalid indexing settings"); + return { ...value, previousRoles: value.previousRoles ?? {} }; +} +export function writeIndexingSettings(root: string, settings: IndexingSettings) { + window.localStorage.setItem(indexingSettingsStorageKey(root), JSON.stringify(settings)); + window.dispatchEvent(new window.CustomEvent(indexingEvent, { detail: root })); +} + +/** Serialize policy installation per root, so older settings cannot win an async race. */ +const queues = new Map>(); +const revisions = new Map(); +export async function configureWorkspaceIndexing( + root: string, + paths: string[] = [], + refresh = false, +): Promise { + const identity = getPathIdentity(root); + const operation = async () => { + const settings = readIndexingSettings(root); + const raw = window.localStorage.getItem(key(root)); + const marks = raw ? JSON.parse(raw).marks : {}; + const response = await executeCore({ + id: crypto.randomUUID(), + command: "workspace.configureIndexing", + payload: { + root, + ...settings, + manualExcludedDirectories: Object.entries(marks ?? {}) + .filter(([, role]) => role === "excluded") + .map(([path]) => path), + paths, + refresh, + }, + }); + if (!response.ok) throw new Error(response.error.message); + revisions.set(identity, response.data.revision); + return response.data; + }; + const task = (queues.get(identity) ?? Promise.resolve()).catch(() => {}).then(operation); + queues.set(identity, task); + try { + return await task; + } finally { + if (queues.get(identity) === task) queues.delete(identity); + } +} + +/** React consumers retire visible results when either source of policy changes. */ +export function useIndexingVersion(): number { + const [version, setVersion] = useState(0); + useEffect(() => { + const changed = () => setVersion((value) => value + 1); + window.addEventListener(indexingEvent, changed); + window.addEventListener("lithe:directory-marks-changed", changed); + return () => { + window.removeEventListener(indexingEvent, changed); + window.removeEventListener("lithe:directory-marks-changed", changed); + }; + }, []); + return version; +} + +export async function releaseWorkspaceIndexing(root: string): Promise { + const identity = getPathIdentity(root); + const task = (queues.get(identity) ?? Promise.resolve()) + .catch(() => {}) + .then(async () => { + const revision = revisions.get(identity); + if (revision === undefined) return; + await executeCore({ + id: crypto.randomUUID(), + command: "workspace.releaseIndexing", + payload: { root, revision }, + }); + revisions.delete(identity); + }); + queues.set(identity, task); + try { + await task; + } finally { + if (queues.get(identity) === task) queues.delete(identity); + } +} diff --git a/windows/tauri/src/features/file-search/hooks/use-fff-search.ts b/windows/tauri/src/features/file-search/hooks/use-fff-search.ts index f1abc91edb..e2029fd18f 100644 --- a/windows/tauri/src/features/file-search/hooks/use-fff-search.ts +++ b/windows/tauri/src/features/file-search/hooks/use-fff-search.ts @@ -1,3 +1,4 @@ +import { useIndexingVersion } from "@/features/file-explorer/stores/workspace-indexing"; import { useEffect, useState } from "react"; import { fffSearchFiles, type FffSearchHit } from "../lib/file-search-api"; import { getNativeWorkspaceRootPaths } from "../utils/file-search-paths"; @@ -8,11 +9,12 @@ export const useFffSearch = ( rootPaths: readonly string[], limit = 100, ) => { + const indexingVersion = useIndexingVersion(); const trimmedQuery = query.trim(); const searchRootPaths = getNativeWorkspaceRootPaths(rootPaths[0], rootPaths.slice(1)); const searchKey = enabled && trimmedQuery && searchRootPaths.length > 0 - ? JSON.stringify([searchRootPaths, trimmedQuery, limit]) + ? JSON.stringify([searchRootPaths, trimmedQuery, limit, indexingVersion]) : null; const [searchState, setSearchState] = useState<{ key: string | null; diff --git a/windows/tauri/src/features/file-search/lib/file-search-api.ts b/windows/tauri/src/features/file-search/lib/file-search-api.ts index 1d377c6519..f5f6b734ea 100644 --- a/windows/tauri/src/features/file-search/lib/file-search-api.ts +++ b/windows/tauri/src/features/file-search/lib/file-search-api.ts @@ -1,6 +1,7 @@ +import { configureWorkspaceIndexing } from "@/features/file-explorer/stores/workspace-indexing"; import { executeCore } from "@/core/lithe-core-client"; import { getFilenameFromPath } from "@/features/file-system/controllers/file-utils"; -import { joinPath } from "@/utils/path-helpers"; +import { joinPath, getRelativePath, pathStartsWithRoot } from "@/utils/path-helpers"; export interface SearchMatchRange { start: number; @@ -38,6 +39,7 @@ export interface SearchFilesResponse { export interface SearchFilesRequest { root_paths: string[]; + scope_paths?: string[]; query: string; case_sensitive?: boolean; whole_word?: boolean; @@ -90,9 +92,15 @@ export async function searchFilesContent( ): Promise { const maxResults = request.max_results ?? 500; const responses = await Promise.all( - request.root_paths.map(async (root) => { - const response = await executeCore<{ matches: CoreSearchMatch[] }>( - { + request.root_paths + .filter( + (root) => + !request.scope_paths?.length || + request.scope_paths.some((scope) => pathStartsWithRoot(scope, root)), + ) + .map(async (root) => { + await configureWorkspaceIndexing(root); + const response = await executeCore<{ matches: CoreSearchMatch[] }>({ id: crypto.randomUUID(), command: "workspace.search", payload: { @@ -102,12 +110,15 @@ export async function searchFilesContent( wholeWords: request.whole_word ?? false, regularExpression: request.use_regex ?? false, maxResults, + maxFileResults: 0, + scopePaths: request.scope_paths + ?.filter((scope) => pathStartsWithRoot(scope, root)) + .map((scope) => getRelativePath(scope, root).replace(/\\/g, "/") || "."), fileMask: "", }, - }, - ); - return { root, matches: coreData(response).matches }; - }), + }); + return { root, matches: coreData(response).matches }; + }), ); const grouped = new Map(); @@ -199,10 +210,18 @@ export async function fffTrackAccess(_path: string): Promise { } async function listWorkspaceFiles(root: string): Promise { - const response = await executeCore<{ root: CoreWorkspaceNode; files: string[] }>({ + await configureWorkspaceIndexing(root); + const response = await executeCore<{ + root: CoreWorkspaceNode; + files: string[]; + incompleteDirectories?: string[]; + }>({ id: crypto.randomUUID(), command: "workspace.snapshot", - payload: { root }, + payload: { root, includeTree: false }, }); - return coreData(response).files; + const data = coreData(response); + if (data.incompleteDirectories?.length) + throw new Error("Workspace scan is incomplete: " + data.incompleteDirectories.join(", ")); + return data.files; } diff --git a/windows/tauri/src/features/file-system/services/file-watcher-listener.ts b/windows/tauri/src/features/file-system/services/file-watcher-listener.ts index e73f066d0a..5cc4d57252 100644 --- a/windows/tauri/src/features/file-system/services/file-watcher-listener.ts +++ b/windows/tauri/src/features/file-system/services/file-watcher-listener.ts @@ -1,4 +1,13 @@ -import { initializeDocumentWatches, cleanupDocumentWatches } from "@/features/editor/services/document-watch-controller"; +import { canUseNativeFileSearch } from "@/features/file-search/utils/file-search-paths"; +import { subscribeToGitChanges, isGitChangeRelevant } from "@/features/git/events/git-events"; +import { + configureWorkspaceIndexing, + indexingEvent, +} from "@/features/file-explorer/stores/workspace-indexing"; +import { + initializeDocumentWatches, + cleanupDocumentWatches, +} from "@/features/editor/services/document-watch-controller"; import { listen, type UnlistenFn } from "@tauri-apps/api/event"; import { dirname } from "@tauri-apps/api/path"; import { workspaceRuntimeRegistry } from "@/features/workspace/runtime/workspace-runtime-registry"; @@ -23,6 +32,7 @@ interface FileChangeEvent { } let unlistenFileChanged: UnlistenFn | null = null; +let unlistenGitChanged: (() => void) | undefined; const MAX_PENDING_REFRESH_DIRECTORIES = 128; export interface PendingWorkspaceRefresh { @@ -129,9 +139,7 @@ function scheduleWorkspaceRefresh( if (pathStartsWithRoot(path, workspaceRoot)) directories.add(path); } } - const orderedDirectories = [...directories].sort( - (left, right) => left.length - right.length, - ); + const orderedDirectories = [...directories].sort((left, right) => left.length - right.length); for (const directoryPath of orderedDirectories) { await refreshDirectory(directoryPath, { force: true }); } @@ -141,6 +149,23 @@ function scheduleWorkspaceRefresh( export async function initializeFileWatcherListener() { await cleanupFileWatcherListener(); await initializeDocumentWatches(); + unlistenGitChanged = subscribeToGitChanges((change) => { + if (["save", "auto-save", "external-file-change"].includes(change.source ?? "")) return; + const workspaceId = workspaceRuntimeRegistry.getActiveWorkspaceId(); + const state = useFileSystemStore.getStore(workspaceId).getState(); + const roots = new Set([ + state.rootFolderPath, + ...state.workspaceFolders.map((folder) => folder.path), + ]); + for (const root of roots) { + if (!canUseNativeFileSearch(root) || !isGitChangeRelevant(change, root)) continue; + scheduleFileWatcherRefresh(workspaceId, `indexing:${root}`, async () => { + if (!workspaceRuntimeRegistry.hasWorkspace(workspaceId)) return; + await configureWorkspaceIndexing(root, [], true); + window.dispatchEvent(new CustomEvent(indexingEvent, { detail: root })); + }); + } + }); unlistenFileChanged = await listen("file-changed", async (event) => { const { path, event_type } = event.payload; @@ -154,6 +179,17 @@ export async function initializeFileWatcherListener() { ); if (!rootFolderPath || !workspaceRoot) return; + const relative = getRelativePath(path, workspaceRoot).replace(/\\/g, "/"); + if ( + event_type === "rescan" || + relative.split("/").some((part) => part === ".gitignore" || part === ".git") + ) { + scheduleFileWatcherRefresh(workspaceId, `indexing:${workspaceRoot}`, async () => { + if (!workspaceRuntimeRegistry.hasWorkspace(workspaceId)) return; + await configureWorkspaceIndexing(workspaceRoot, [], true); + window.dispatchEvent(new CustomEvent(indexingEvent, { detail: workspaceRoot })); + }); + } if (event_type === "rescan") { window.dispatchEvent( new CustomEvent("file-external-change", { @@ -174,12 +210,22 @@ export async function initializeFileWatcherListener() { }), ); + const parentRelative = + getRelativePath(parentDirectory, workspaceRoot).replace(/\\/g, "/") || "."; + const policy = await configureWorkspaceIndexing(workspaceRoot, [parentRelative]); + const excluded = Object.keys(policy.excludedDirectories).some( + (directory) => + directory === "." || + parentRelative === directory || + parentRelative.startsWith(directory + "/"), + ); if (mavenPomPath !== null) { useMavenStore.getStore(workspaceId).getState().actions.markPomReloadRequired(mavenPomPath); - } else { + } else if (!excluded) { scheduleJavaWorkspaceChange(workspaceId, workspaceRoot, { path, - kind: event_type === "deleted" ? "deleted" : event_type === "opened" ? "created" : "changed", + kind: + event_type === "deleted" ? "deleted" : event_type === "opened" ? "created" : "changed", includeSource: true, }); } @@ -197,6 +243,8 @@ export async function initializeFileWatcherListener() { } export async function cleanupFileWatcherListener() { + unlistenGitChanged?.(); + unlistenGitChanged = undefined; await cleanupDocumentWatches(); cancelFileWatcherRefreshes(); pendingWorkspaceRefreshes.clear(); diff --git a/windows/tauri/src/features/file-system/stores/file-system.store.ts b/windows/tauri/src/features/file-system/stores/file-system.store.ts index 8c84203b57..5c36da1ea8 100644 --- a/windows/tauri/src/features/file-system/stores/file-system.store.ts +++ b/windows/tauri/src/features/file-system/stores/file-system.store.ts @@ -1,4 +1,4 @@ -import { migrateDirectoryMarks } from "@/features/file-explorer/stores/directory-marks"; +import { migrateWorkspaceDirectoryMarks } from "@/features/file-explorer/stores/directory-marks"; import { loadFileContent } from "../controllers/workspace-session-restore"; import { invoke } from "@/platform/tauri-core"; import { LspOperationLog } from "@/platform/lsp-session-lifecycle"; @@ -2453,7 +2453,7 @@ const createFileSystemStore = (workspaceId: string): StoreApi { - const marksRoot = get().rootFolderPath; + const marksRoots = getWorkspaceFolderPaths(get); if (newName) { const remoteInfo = parseRemotePath(path); const wslInfo = parseWslPath(path); @@ -2919,9 +2919,9 @@ const createFileSystemStore = (workspaceId: string): StoreApi 0) { try { - migrateDirectoryMarks(marksRoot, path, targetPath); + migrateWorkspaceDirectoryMarks(marksRoots, path, targetPath); } catch (error) { toast.error(getCurrentTranslator()("project.markFailed"), { description: String(error), diff --git a/windows/tauri/src/features/global-search/hooks/use-content-search.ts b/windows/tauri/src/features/global-search/hooks/use-content-search.ts index 282b8c31e1..5f74b52a8e 100644 --- a/windows/tauri/src/features/global-search/hooks/use-content-search.ts +++ b/windows/tauri/src/features/global-search/hooks/use-content-search.ts @@ -1,3 +1,4 @@ +import { useIndexingVersion } from "@/features/file-explorer/stores/workspace-indexing"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { useDebounce } from "use-debounce"; import type { FileEntry } from "@/features/file-system/types/app.types"; @@ -92,6 +93,7 @@ export const useContentSearch = () => { () => getNativeWorkspaceRootPaths(rootFolderPath, workspaceFolders), [rootFolderPath, workspaceFolders], ); + const indexingVersion = useIndexingVersion(); const searchSession = useGlobalSearchStore((state) => state); const { query, @@ -125,6 +127,7 @@ export const useContentSearch = () => { () => [ nativeRootPaths.join("\n") || rootFolderPath || "", + indexingVersion, debouncedQuery, JSON.stringify(scopePaths), debouncedIncludeQuery, @@ -137,6 +140,7 @@ export const useContentSearch = () => { debouncedExcludeQuery, debouncedIncludeQuery, debouncedQuery, + indexingVersion, nativeRootPaths, scopePaths, rootFolderPath, @@ -212,7 +216,8 @@ export const useContentSearch = () => { } return searchFilesContent({ - root_paths: scopePaths.length ? scopePaths : nativeRootPaths, + root_paths: nativeRootPaths, + scope_paths: scopePaths, query: debouncedQuery, case_sensitive: searchOptions.caseSensitive, whole_word: searchOptions.wholeWord, diff --git a/windows/tauri/src/features/quick-open/hooks/use-file-loader.ts b/windows/tauri/src/features/quick-open/hooks/use-file-loader.ts index 30c39f276e..931ef88205 100644 --- a/windows/tauri/src/features/quick-open/hooks/use-file-loader.ts +++ b/windows/tauri/src/features/quick-open/hooks/use-file-loader.ts @@ -1,3 +1,4 @@ +import { indexingEvent } from "@/features/file-explorer/stores/workspace-indexing"; import { useEffect, useMemo, useRef, useState } from "react"; import { type FffIndexedFile, fffListFiles } from "@/features/file-search/lib/file-search-api"; import { getNativeWorkspaceRootPaths } from "@/features/file-search/utils/file-search-paths"; @@ -25,6 +26,19 @@ export const useFileLoader = (isVisible: boolean) => { rootFolderPath, workspaceFolders.map((folder) => folder.path), ]); + const [policyVersion, setPolicyVersion] = useState(0); + useEffect(() => { + const invalidate = () => { + setFiles([]); + setPolicyVersion((value) => value + 1); + }; + window.addEventListener(indexingEvent, invalidate); + window.addEventListener("lithe:directory-marks-changed", invalidate); + return () => { + window.removeEventListener(indexingEvent, invalidate); + window.removeEventListener("lithe:directory-marks-changed", invalidate); + }; + }, []); const [files, setFiles] = useState([]); const [isLoadingFiles, setIsLoadingFiles] = useState(false); const [isIndexing, setIsIndexing] = useState(false); @@ -70,7 +84,7 @@ export const useFileLoader = (isVisible: boolean) => { void loadFiles(); return cleanup; - }, [getAllProjectFiles, isVisible, nativeRootPaths, workspaceKey]); + }, [getAllProjectFiles, isVisible, nativeRootPaths, workspaceKey, policyVersion]); return { files, diff --git a/windows/tauri/src/features/settings/components/git-execution-settings.tsx b/windows/tauri/src/features/settings/components/git-execution-settings.tsx index e5e07a8e46..192eb61b0a 100644 --- a/windows/tauri/src/features/settings/components/git-execution-settings.tsx +++ b/windows/tauri/src/features/settings/components/git-execution-settings.tsx @@ -9,6 +9,8 @@ import { Button } from "@/ui/button"; import Input from "@/ui/input"; import { Checkbox } from "@/ui/checkbox"; import Section from "./settings-section"; +import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; +import { WorkspaceIndexingSettings } from "./workspace-indexing-settings"; type Field = { key: string; choices: string[]; configuredValues: string[] }; type Snapshot = { @@ -27,6 +29,7 @@ export function GitExecutionSettings() { const activeRoot = useRepositoryStore.use.activeRepoPath(); const workspace = useProjectStore((state) => state.rootFolderPath); const root = activeRoot ?? workspace; + const indexingRoot = useFileSystemStore((state) => state.rootFolderPath); const executable = useSettingsStore((state) => state.settings.gitExecutable); const fetchPrune = useSettingsStore((state) => state.settings.gitFetchPrune); const fetchSubmodules = useSettingsStore((state) => state.settings.gitFetchSubmodules); @@ -133,6 +136,7 @@ export function GitExecutionSettings() { {t("git.execution.helper")}

{t("git.execution.credentials")}

+
{ + const restoreDom = installHappyDom(); + const environment = globalThis as typeof globalThis & { IS_REACT_ACT_ENVIRONMENT?: boolean }; + const previousAct = environment.IS_REACT_ACT_ENVIRONMENT; + const workspaceId = `git-indexing-${language}`; + const first = "C:/first-project"; + const second = "C:/second-project"; + const nested = `${first}/nested-repo`; + const settings = { gitIgnoreEnabled: false, includedDirectories: ["vendor/examples"], previousRoles: { vendor: "sources" } }; + const configure = spyOn(indexing, "configureWorkspaceIndexing").mockImplementation(async () => ({ + revision: 1, excludedDirectories: {}, gitIgnoreFailed: false, + })); + const host = document.createElement("div"); + const root = createRoot(host); + const t = createTranslator(language); + const checkbox = () => Array.from(host.querySelectorAll('[role="checkbox"]')) + .find((element) => element.getAttribute("aria-label") === t("indexing.autoGit") + || document.getElementById(element.getAttribute("aria-labelledby") ?? "")?.textContent === t("indexing.autoGit"))!; + const render = () => root.render( + + + , + ); + try { + environment.IS_REACT_ACT_ENVIRONMENT = true; + document.body.append(host); + window.localStorage.setItem(indexing.indexingSettingsStorageKey(first), JSON.stringify(settings)); + const fileSystem = useFileSystemStore.getStore(workspaceId); + const repositories = useRepositoryStore.getStore(workspaceId); + fileSystem.setState({ rootFolderPath: first }); + useProjectStore.getStore(workspaceId).setState({ rootFolderPath: first }); + repositories.setState({ activeRepoPath: nested }); + await act(async () => render()); + + expect(checkbox()).toBeDefined(); + expect(checkbox().getAttribute("aria-checked")).toBe("false"); + expect(window.localStorage.getItem(indexing.indexingSettingsStorageKey(first))).toBe(JSON.stringify(settings)); + expect(configure).toHaveBeenCalledWith(first); + expect(configure.mock.calls.every(([path]) => path !== nested)).toBe(true); + await act(async () => checkbox().click()); + expect(indexing.readIndexingSettings(first)).toEqual({ ...settings, gitIgnoreEnabled: true }); + expect(window.localStorage.getItem(indexing.indexingSettingsStorageKey(nested))).toBeNull(); + + await act(async () => fileSystem.setState({ rootFolderPath: second })); + expect(checkbox().getAttribute("aria-checked")).toBe("true"); + // Reading a default value on the Git page must not create a saved preference. + expect(window.localStorage.getItem(indexing.indexingSettingsStorageKey(second))).toBeNull(); + await act(async () => checkbox().click()); + expect(indexing.readIndexingSettings(second).gitIgnoreEnabled).toBe(false); + expect(indexing.readIndexingSettings(first)).toEqual({ ...settings, gitIgnoreEnabled: true }); + + await act(async () => fileSystem.setState({ rootFolderPath: undefined })); + expect(checkbox().getAttribute("aria-disabled")).toBe("true"); + const callsWithoutProject = configure.mock.calls.length; + await act(async () => checkbox().click()); + expect(configure.mock.calls.length).toBe(callsWithoutProject); + await act(async () => fileSystem.setState({ rootFolderPath: first })); + expect(checkbox().getAttribute("aria-checked")).toBe("true"); + expect(indexing.readIndexingSettings(first).includedDirectories).toEqual(settings.includedDirectories); + + const failedWrite = spyOn(indexing, "writeIndexingSettings").mockImplementationOnce(() => { + throw new Error("fixture storage is full"); + }); + try { + await act(async () => checkbox().click()); + expect(host.querySelector('[role="alert"]')?.textContent).toContain("fixture storage is full"); + expect(indexing.readIndexingSettings(first)).toEqual({ ...settings, gitIgnoreEnabled: true }); + expect(checkbox().getAttribute("aria-checked")).toBe("true"); + } finally { failedWrite.mockRestore(); } + + window.localStorage.setItem(indexing.indexingSettingsStorageKey(first), "not-json"); + await act(async () => window.dispatchEvent(new window.CustomEvent(indexing.indexingEvent, { detail: first }))); + expect(checkbox().getAttribute("aria-disabled")).toBe("true"); + expect(host.querySelector('[role="alert"]')).not.toBeNull(); + expect(window.localStorage.getItem(indexing.indexingSettingsStorageKey(first))).toBe("not-json"); + } finally { + try { await act(async () => root.unmount()); } + finally { + host.remove(); + configure.mockRestore(); + workspaceRuntimeRegistry.removeWorkspace(workspaceId); + if (previousAct === undefined) delete environment.IS_REACT_ACT_ENVIRONMENT; + else environment.IS_REACT_ACT_ENVIRONMENT = previousAct; + restoreDom(); + } + } + }, +); diff --git a/windows/tauri/src/features/settings/components/settings-hierarchy.test.tsx b/windows/tauri/src/features/settings/components/settings-hierarchy.test.tsx index db354d2a36..ffa0089716 100644 --- a/windows/tauri/src/features/settings/components/settings-hierarchy.test.tsx +++ b/windows/tauri/src/features/settings/components/settings-hierarchy.test.tsx @@ -105,6 +105,15 @@ test("every settings page belongs to exactly one group or is a top-level page, i } }); +test("indexing and ignore exclusion queries lead to Git instead of Project settings", () => { + for (const language of ["en-US", "zh-CN"] as const) { + const t = createTranslator(language); + for (const query of ["index", "ignore", "exclude", "索引", "忽略", "排除", t("indexing.autoGit")]) { + expect(filterSettingsCategories(query, t).map(({ id }) => id)).toEqual(["git"]); + } + } +}); + test("settings search excludes fields absent from the current panels", () => { for (const language of ["en-US", "zh-CN"] as const) { const t = createTranslator(language); diff --git a/windows/tauri/src/features/settings/components/workspace-indexing-settings.tsx b/windows/tauri/src/features/settings/components/workspace-indexing-settings.tsx new file mode 100644 index 0000000000..47aabbf8f7 --- /dev/null +++ b/windows/tauri/src/features/settings/components/workspace-indexing-settings.tsx @@ -0,0 +1,81 @@ +import { useEffect, useState } from "react"; +import { useTranslation } from "@/i18n/locale-provider"; +import { Checkbox } from "@/ui/checkbox"; +import { InfoIcon } from "@/ui/icons"; +import Tooltip from "@/ui/tooltip"; +import { SettingRow } from "./settings-section"; +import { + configureWorkspaceIndexing, + indexingEvent, + readIndexingSettings, + writeIndexingSettings, +} from "@/features/file-explorer/stores/workspace-indexing"; + +export function WorkspaceIndexingSettings({ root }: { root: string | undefined }) { + const { t } = useTranslation(); + const [enabled, setEnabled] = useState(true); + const [error, setError] = useState(""); + const [failed, setFailed] = useState(false); + const [loaded, setLoaded] = useState(false); + useEffect(() => { + if (!root) return; + let disposed = false; + const read = () => { + try { + setEnabled(readIndexingSettings(root).gitIgnoreEnabled); + setLoaded(true); + setError(""); + } catch (cause) { + setLoaded(false); + setError(String(cause)); + return; + } + void configureWorkspaceIndexing(root) + .then((status) => { + if (!disposed) setFailed(status.gitIgnoreFailed); + }) + .catch((cause) => { + if (!disposed) setError(String(cause)); + }); + }; + read(); + window.addEventListener(indexingEvent, read); + return () => { + disposed = true; + window.removeEventListener(indexingEvent, read); + }; + }, [root]); + return ( + <> + + + + } + > + { + if (!root || !loaded) return; + try { + const settings = readIndexingSettings(root); + writeIndexingSettings(root, { ...settings, gitIgnoreEnabled: checked }); + setEnabled(checked); + setError(""); + } catch (cause) { + setError(String(cause)); + } + }} + /> + + {failed &&

{t("indexing.gitFailed")}

} + {error &&

{error}

} + + ); +} diff --git a/windows/tauri/src/features/settings/config/search-index.ts b/windows/tauri/src/features/settings/config/search-index.ts index 81329dd6d7..7b495a7358 100644 --- a/windows/tauri/src/features/settings/config/search-index.ts +++ b/windows/tauri/src/features/settings/config/search-index.ts @@ -2,6 +2,14 @@ import type { SettingSearchRecord } from "../types/search.types"; import { IS_LINUX, IS_MAC, IS_WINDOWS } from "@/utils/platform"; export const settingsSearchIndex: SettingSearchRecord[] = [ + { + id: "git-indexing-exclusions", + tab: "git", + section: "Git Program and Credentials", + label: "Automatically exclude Git-ignored directories", + description: "Exclude ignored directories from current project analysis while keeping them browsable", + keywords: ["indexing", "ignore", "exclude", "索引", "忽略", "排除"], + }, { id: "run-configurations", tab: "run", diff --git a/windows/tauri/src/features/settings/lib/run-settings-search.test.ts b/windows/tauri/src/features/settings/lib/run-settings-search.test.ts index 84f60a566c..c03ff32992 100644 --- a/windows/tauri/src/features/settings/lib/run-settings-search.test.ts +++ b/windows/tauri/src/features/settings/lib/run-settings-search.test.ts @@ -10,3 +10,12 @@ test("run configuration searches target Settings rather than project toolchain d expect(scoreSettingSearchRecord(query, record)).toBeGreaterThan(0); } }); + +test("Git ignore indexing searches target the Git settings page", () => { + const record = settingsSearchIndex.find((entry) => entry.id === "git-indexing-exclusions"); + expect(record?.tab).toBe("git"); + if (!record) throw new Error("Missing Git indexing settings search entry"); + for (const query of ["indexing", "ignore", "exclude", "索引", "忽略", "排除"]) { + expect(scoreSettingSearchRecord(query, record)).toBeGreaterThan(0); + } +}); diff --git a/windows/tauri/src/features/settings/lib/settings-navigation.ts b/windows/tauri/src/features/settings/lib/settings-navigation.ts index 9cd3020526..2c6713c1e6 100644 --- a/windows/tauri/src/features/settings/lib/settings-navigation.ts +++ b/windows/tauri/src/features/settings/lib/settings-navigation.ts @@ -196,6 +196,12 @@ export const settingsCategories: Array<{ "Commit identity", "user.name", "user.email", + "Indexing", + "Ignore", + "Exclude", + "indexing.title", + "indexing.autoGit", + "indexing.cancelExclusion", "git.setup.name", "git.setup.email", "git.execution.title", diff --git a/windows/tauri/src/i18n/shared.generated.ts b/windows/tauri/src/i18n/shared.generated.ts index f476af8655..7b402ad0e3 100644 --- a/windows/tauri/src/i18n/shared.generated.ts +++ b/windows/tauri/src/i18n/shared.generated.ts @@ -2988,6 +2988,17 @@ export const sharedCatalogs = { "image.undoLastOperation": "Undo last operation", "image.updateFailed": "Failed to update image", "image.widthPx": "Width (px)", + "indexing.autoGit": "Automatically exclude Git-ignored directories", + "indexing.cancelExclusion": "Cancel Exclusion", + "indexing.description": "Applies only to the current project, regardless of the Git configuration scope. Excluded directories remain browsable. Cancel Exclusion creates a project exception without changing Git rules.\n\nNative exclusion settings are merged for Java imports, Rust and Go. Java resources already imported may still be scanned. Python project configuration can override server exclusions; other providers remain active without a verified scan-exclusion guarantee.", + "indexing.gitFailed": "Git ignore exclusions could not be fully resolved. Manual exclusions remain active.", + "indexing.gitReason": "Excluded from indexing by Git ignore rules", + "indexing.incomplete": "Some directories could not be scanned. Automatic project analysis was not refreshed.", + "indexing.inheritedReason": "Excluded from indexing by a parent directory", + "indexing.languageDescription": "Native exclusion settings are merged for Java imports, Rust and Go. Java resources already imported may still be scanned. Python project configuration can override server exclusions; other providers remain active without a verified scan-exclusion guarantee.", + "indexing.manualReason": "Manually excluded from indexing", + "indexing.providerDependent": "Provider-dependent", + "indexing.title": "Project Indexing", "inlineEdit.addApiKey": "Add API key", "inlineEdit.apiKeyRequired": "{provider} API key is required for inline edit.", "inlineEdit.applied": "Inline edit applied.", @@ -7937,6 +7948,17 @@ export const sharedCatalogs = { "image.undoLastOperation": "撤销上次操作", "image.updateFailed": "更新图片失败", "image.widthPx": "宽度(px)", + "indexing.autoGit": "根据 Git 忽略规则自动排除目录", + "indexing.cancelExclusion": "取消排除", + "indexing.description": "仅作用于当前项目,不受 Git 配置范围影响。已排除目录仍可浏览;取消排除会保存项目例外,不修改 Git 规则。\n\n已合并 Java 导入、Rust 和 Go 的原生排除配置。Java 已导入资源仍可能被扫描;Python 项目配置可覆盖服务端排除。其他服务保持运行,尚未保证其后台扫描排除效果。", + "indexing.gitFailed": "无法完整解析 Git 忽略规则,手动排除仍然生效。", + "indexing.gitReason": "根据 Git 忽略规则排除索引", + "indexing.incomplete": "部分目录无法扫描,未刷新项目自动分析。", + "indexing.inheritedReason": "继承父目录的索引排除", + "indexing.languageDescription": "已合并 Java 导入、Rust 和 Go 的原生排除配置。Java 已导入资源仍可能被扫描;Python 项目配置可覆盖服务端排除。其他服务保持运行,尚未保证其后台扫描排除效果。", + "indexing.manualReason": "手动排除索引", + "indexing.providerDependent": "取决于语言服务", + "indexing.title": "项目索引", "inlineEdit.addApiKey": "添加 API 密钥", "inlineEdit.apiKeyRequired": "行内编辑需要 {provider} API 密钥。", "inlineEdit.applied": "行内编辑已应用。", From ba421e252f3f2b4e9f05fe61e376ceeabc4f61c8 Mon Sep 17 00:00:00 2001 From: xueyeshang1 Date: Fri, 30 Oct 2026 15:00:30 +0800 Subject: [PATCH 02/27] fix(workspace): honor indexing ownership across Windows roots Fix attached-root LSP gates and reevaluate documents when workspace roots change. Carry request-local ownership through inventory, search, replacement and incremental index caches; preserve scoped search when unrelated roots are unavailable. Disable unsupported remote indexing settings, localize settings failures, normalize both Java exclusion test expectations, and register regressions in Windows CI. --- ...026-10-28-workspace-indexing-exclusions.md | 23 +++ .github/workflows/ci-windows.yml | 6 +- rust/lithe-core/src/lsp/interface/engine.rs | 2 +- rust/lithe-core/src/project/files.rs | 68 ++++++- rust/lithe-core/src/project/indexing.rs | 182 +++++++++++++++++- rust/lithe-core/src/project/search_index.rs | 17 ++ shared/contracts/rust-core-api.md | 14 ++ .../workspace/indexing-policy-v1.json | 44 ++++- shared/i18n/locales/en-US.json | 6 +- shared/i18n/locales/zh-CN.json | 6 +- shared/i18n/messages.json | 31 ++- .../workspace-indexing-exclusions.json | 9 +- .../use-lsp-integration-indexing.test.tsx | 115 +++++++++++ .../editor/hooks/use-lsp-integration.ts | 22 ++- .../editor/lsp/lsp-client-indexing.test.ts | 72 +++++++ .../src/features/editor/lsp/lsp-client.ts | 24 ++- .../file-explorer/stores/directory-marks.ts | 4 +- .../stores/workspace-indexing.test.ts | 66 +++++++ .../stores/workspace-indexing.ts | 66 +++++-- .../file-search/hooks/use-fff-search.test.tsx | 56 ++++++ .../file-search/lib/file-search-api.test.ts | 75 ++++++++ .../file-search/lib/file-search-api.ts | 26 ++- .../components/git-indexing-settings.test.tsx | 139 ++++++++++--- .../workspace-indexing-settings.tsx | 31 ++- .../workspace/types/workspace-root.ts | 8 + windows/tauri/src/i18n/shared.generated.ts | 10 + 26 files changed, 1024 insertions(+), 98 deletions(-) create mode 100644 windows/tauri/src/features/editor/hooks/use-lsp-integration-indexing.test.tsx create mode 100644 windows/tauri/src/features/editor/lsp/lsp-client-indexing.test.ts create mode 100644 windows/tauri/src/features/file-explorer/stores/workspace-indexing.test.ts create mode 100644 windows/tauri/src/features/file-search/hooks/use-fff-search.test.tsx create mode 100644 windows/tauri/src/features/file-search/lib/file-search-api.test.ts create mode 100644 windows/tauri/src/features/workspace/types/workspace-root.ts diff --git a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md index 2b1f504c15..00adf606b4 100644 --- a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md +++ b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md @@ -49,9 +49,25 @@ Windows 附加目录按目标路径选择最近的工作区根,标记、包含 读取该根的项目偏好;所有已配置根在树释放时退役。改名、删除按所属根迁移偏好,跨根移动则把角色、 排除和包含例外转移到目标根,同时保留两根各自的 Git 开关。不要用主根的设置 处理附加根。 +最近根归属同样用于 Windows 编辑器的语言服务门禁:先验证文件属于哪个已打开 +根,再计算相对目录;工作区之外的文件不提交项目排除查询。启动与取消仍保留 +原工作区的生命周期身份,不能为了查附加根策略就替换主根 scope。增删根集合 +也会清理并重新评估已打开的工作副本,不能只在下次打开文件时才使用新归属。 + +多根库存、搜索与替换请求显式携带当前工作区的根集合。父根到达另行登记的嵌套 +根时停止索引遍历,由嵌套根按自己的偏好生成候选。例如打开 `main` 与 +`main/nested`,只在后者排除 `archive`,父根不能再把该目录加入候选或读取内容。 +这一边界进入缓存身份,保存和 watcher 直更也保留同样的边界;移除嵌套根后, +父根恢复扫描。失效的无关附加根不应阻断当前根的限定搜索;尚未移除的缺失嵌套 +根仍保留归属边界,避免目录重建后从父根回填。不能从 Core 全局策略表推断根成员,否则另一个窗口的策略或关闭 +后保留的退役记录会改变当前窗口的结果。只过滤最终结果也不够,因为文本已经 +被读取并驻留索引。 + 远程传输尚未接入索引排除,因此 Git 页显示不支持并禁用开关;不能把这一状态 显示成 Git 解析失败,更不能声称远程手动排除已经生效。项目树也不提供无效的 排除动作或显示已排除图标;已有偏好保留,待能力接入后再解释。 +Windows 设置页同样先检查能力,不向本机 Core 提交远程根。设置解析及存储错误 +返回稳定分类,界面通过共享中英词条呈现;损坏数据保留原值,不以默认值覆盖。 ## 考虑过的备选方案 @@ -85,6 +101,13 @@ Python/Basedpyright 的项目配置可以覆盖语言服务器配置,因此不 `cargo test --manifest-path rust/lithe-core/Cargo.toml --lib project::indexing::tests` 验证真实目录访问剪枝、树浏览、旧版本拒绝、保存回填防护、已跟踪文件保护及例外优先级。 +其中嵌套根回归通过真实库存、内容搜索、文件名搜索、预热及替换入口,验证手动与 +Git 排除、父根遍历剪枝、缓存切换和保存/watcher 回填防护。Java 导入排除测试的 +预期路径使用原生配置所需的 `/` 格式,避免 Windows 分隔符制造断言失败;这类 +脚本会在首个失败停止,因此两个相关断言都须在 Windows 执行到并通过。 +本轮本机 Core 1371 项单元及 32 项集成测试、索引/LSP 22 项逐项计时与 macOS/Bun +前端 42 项回归通过,含失效根限定搜索及根增删时关闭/恢复工作副本。独立 Swift/C ABI +探针通过,整应用验证因缺 Metal Toolchain 中断;Windows 原生环境不可用,保留未验证状态。 真实语言服务扫描及 Windows 原生运行的验证状态以功能矩阵为准。 macOS 实际应用验证发现,组合根包裹的 `RemoteRoutingWorkspaceOperations` diff --git a/.github/workflows/ci-windows.yml b/.github/workflows/ci-windows.yml index eafb2dd2bb..8d1f405df3 100644 --- a/.github/workflows/ci-windows.yml +++ b/.github/workflows/ci-windows.yml @@ -267,7 +267,7 @@ jobs: bun test src/features/editor/lsp/language-server-navigation.test.ts src/features/editor/lsp/java-navigation-marker-loader.test.ts src/features/editor/engines/monaco/definition-link-scheduler.test.ts src/features/editor/engines/monaco/java-implementation-markers.test.ts src/features/editor/engines/monaco/java-run-markers.test.ts node .agents/skills/write-stable-tests/scripts/run-bun-tests-with-timing.mjs --suite-timeout-ms 60000 --report .artifacts/test-stability/windows-definition-link.json -- src/features/editor/engines/monaco/definition-link.test.ts src/features/editor/engines/monaco/definition-link-scheduler.test.ts if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } - node .agents/skills/write-stable-tests/scripts/run-bun-tests-with-timing.mjs --suite-timeout-ms 60000 --report .artifacts/test-stability/windows-semantic-tokens.json -- src/platform/lsp-core-adapter.test.ts src/features/editor/lsp/lsp-client-semantic-tokens.test.ts src/features/editor/lsp/lsp-client-navigation-context.test.ts src/features/editor/engines/monaco/semantic-token-provider.test.ts + node .agents/skills/write-stable-tests/scripts/run-bun-tests-with-timing.mjs --suite-timeout-ms 60000 --report .artifacts/test-stability/windows-semantic-tokens.json -- src/platform/lsp-core-adapter.test.ts src/features/editor/lsp/lsp-client-semantic-tokens.test.ts src/features/editor/lsp/lsp-client-navigation-context.test.ts src/features/editor/lsp/lsp-client-indexing.test.ts src/features/editor/hooks/use-lsp-integration-indexing.test.tsx src/features/editor/engines/monaco/semantic-token-provider.test.ts if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } node .agents/skills/write-stable-tests/scripts/run-bun-tests-with-timing.mjs --suite-timeout-ms 60000 --report .artifacts/test-stability/windows-editor-ownership.json -- src/features/editor/extensions/api.owner-navigation.test.ts if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } @@ -369,7 +369,7 @@ jobs: shell: pwsh timeout-minutes: 2 run: | - node .agents/skills/write-stable-tests/scripts/run-bun-tests-with-timing.mjs --suite-timeout-ms 60000 --report .artifacts/test-stability/windows-project-tree.json -- src/features/file-explorer/hooks/use-file-explorer-drag-drop.test.tsx src/features/file-explorer/components/file-explorer-selection.test.tsx src/features/file-explorer/components/file-explorer-reveal.test.tsx src/features/file-explorer/stores/directory-marks.test.ts src/features/sidebar/utils/tree-selection.test.ts src/utils/path-helpers.test.ts + node .agents/skills/write-stable-tests/scripts/run-bun-tests-with-timing.mjs --suite-timeout-ms 60000 --report .artifacts/test-stability/windows-project-tree.json -- src/features/file-explorer/hooks/use-file-explorer-drag-drop.test.tsx src/features/file-explorer/components/file-explorer-selection.test.tsx src/features/file-explorer/components/file-explorer-reveal.test.tsx src/features/file-explorer/stores/directory-marks.test.ts src/features/file-explorer/stores/workspace-indexing.test.ts src/features/sidebar/utils/tree-selection.test.ts src/utils/path-helpers.test.ts if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } - name: Test F4 focused file navigation @@ -590,7 +590,7 @@ jobs: - name: Test quick-open file search, number input steppers and editor settings route shell: pwsh - run: node .agents/skills/write-stable-tests/scripts/run-bun-tests-with-timing.mjs --suite-timeout-ms 60000 --report .artifacts/test-stability/windows-quick-open-number-input.json -- src/features/quick-open/hooks/use-file-loader.test.tsx src/features/quick-open/hooks/use-file-search.test.tsx src/ui/number-input.test.tsx src/features/settings/components/editor-settings-routing.test.tsx + run: node .agents/skills/write-stable-tests/scripts/run-bun-tests-with-timing.mjs --suite-timeout-ms 60000 --report .artifacts/test-stability/windows-quick-open-number-input.json -- src/features/quick-open/hooks/use-file-loader.test.tsx src/features/quick-open/hooks/use-file-search.test.tsx src/features/file-search/lib/file-search-api.test.ts src/features/file-search/hooks/use-fff-search.test.tsx src/ui/number-input.test.tsx src/features/settings/components/editor-settings-routing.test.tsx - name: Test wheel scroll animation and container wheel ownership shell: pwsh diff --git a/rust/lithe-core/src/lsp/interface/engine.rs b/rust/lithe-core/src/lsp/interface/engine.rs index aaa82f9d7c..a9b819ae17 100644 --- a/rust/lithe-core/src/lsp/interface/engine.rs +++ b/rust/lithe-core/src/lsp/interface/engine.rs @@ -8777,7 +8777,7 @@ mod tests { apply_indexing_to_sessions(&root, vec![harness.session()]).unwrap(); let mut expected = vec![json!("**/vendor/**")]; if excluded { - let directory = root.join("reactor").to_string_lossy().into_owned(); + let directory = root.join("reactor").to_string_lossy().replace('\\', "/"); expected.extend([json!(directory), json!(format!("{directory}/**"))]); } let notifications = notifications(&harness, "workspace/didChangeConfiguration"); diff --git a/rust/lithe-core/src/project/files.rs b/rust/lithe-core/src/project/files.rs index 26e52f3c08..2f36aa1e15 100644 --- a/rust/lithe-core/src/project/files.rs +++ b/rust/lithe-core/src/project/files.rs @@ -55,6 +55,9 @@ const MAX_OPEN_FILE_SIZE: u64 = 32 * 1024 * 1024; /// Workspace root and visibility overrides used to build a file-tree snapshot. pub struct WorkspaceSnapshotRequest { pub root: String, + /// Explicit roots of this workspace; nested roots own their inventories independently. + #[serde(default)] + pub workspace_roots: Vec, #[serde(default)] pub hidden_directory_names: Vec, #[serde(default)] @@ -92,6 +95,9 @@ pub struct SearchRequest { #[serde(default)] pub scope_paths: Vec, pub root: String, + /// Request-local ownership boundaries; omitted roots preserve single-root behavior. + #[serde(default)] + pub workspace_roots: Vec, pub query: String, #[serde(default)] pub case_sensitive: bool, @@ -124,6 +130,9 @@ pub struct SearchRequest { /// Workspace root and visibility rules used to warm or invalidate an index. pub struct SearchIndexRequest { pub root: String, + /// Explicit workspace roots used when warming this index variant. + #[serde(default)] + pub workspace_roots: Vec, #[serde(default)] pub hidden_directory_names: Vec, #[serde(default)] @@ -135,6 +144,9 @@ pub struct SearchIndexRequest { /// Changed workspace-relative paths to apply to a cached search index. pub struct SearchIndexUpdateRequest { pub root: String, + /// Explicit workspace roots used when rebuilding after an update. + #[serde(default)] + pub workspace_roots: Vec, #[serde(default)] pub paths: Vec, #[serde(default)] @@ -158,6 +170,9 @@ pub struct SearchIndexStatusResponse { /// Search and replacement options used to produce a non-mutating preview. pub struct ReplacementPreviewRequest { pub root: String, + /// Nested roots are previewed through their own root and policy. + #[serde(default)] + pub workspace_roots: Vec, pub query: String, pub replacement: String, #[serde(default)] @@ -207,7 +222,8 @@ pub fn snapshot(request: WorkspaceSnapshotRequest) -> Result Result { let rules = VisibilityRules::new( request.hidden_directory_names.clone(), request.hidden_file_patterns.clone(), - ); + ) + .with_workspace_roots(&root, &request.workspace_roots); let index = search_index::get_or_build(&root, &rules)?; let index = index .read() @@ -432,7 +449,8 @@ fn search_with_index( let path = &indexed_file.path; if page.is_some_and(|page| !page.accepts_path(path)) || !scope_allows(&request.scope_paths, path) - || !file_mask_allows(&masks, path) { + || !file_mask_allows(&masks, path) + { continue; } let file = root.join(path); @@ -488,7 +506,8 @@ pub(crate) fn search_everywhere_with_page( let rules = VisibilityRules::new( request.hidden_directory_names.clone(), request.hidden_file_patterns.clone(), - ); + ) + .with_workspace_roots(&root, &request.workspace_roots); let matcher = Matcher::new( &query, request.case_sensitive, @@ -533,6 +552,7 @@ pub(crate) fn search_everywhere_with_page( .cloned() .collect(), hidden_file_patterns: rules.hidden_file_patterns.clone(), + delegated_roots: rules.delegated_roots.clone(), }; let names = search_index::get_names(&root, &name_rules)?; let names = names @@ -793,7 +813,8 @@ pub fn replace_preview( let rules = VisibilityRules::new( request.hidden_directory_names.clone(), request.hidden_file_patterns.clone(), - ); + ) + .with_workspace_roots(&root, &request.workspace_roots); let shared_index = search_index::get_or_build(&root, &rules)?; let index = shared_index .read() @@ -836,7 +857,7 @@ pub fn replace_preview( continue; } let file = root.join(&relative); - if super::indexing::is_excluded(&root, &file, false)? { + if rules.is_delegated(&file) || super::indexing::is_excluded(&root, &file, false)? { continue; } let text = request @@ -881,7 +902,8 @@ pub fn warm_search_index( request: SearchIndexRequest, ) -> Result { let root = existing_root(&request.root)?; - let rules = VisibilityRules::new(request.hidden_directory_names, request.hidden_file_patterns); + let rules = VisibilityRules::new(request.hidden_directory_names, request.hidden_file_patterns) + .with_workspace_roots(&root, &request.workspace_roots); let index = search_index::get_or_build(&root, &rules)?; let index = index .read() @@ -900,7 +922,8 @@ pub fn update_search_index( request: SearchIndexUpdateRequest, ) -> Result { let root = existing_root(&request.root)?; - let rules = VisibilityRules::new(request.hidden_directory_names, request.hidden_file_patterns); + let rules = VisibilityRules::new(request.hidden_directory_names, request.hidden_file_patterns) + .with_workspace_roots(&root, &request.workspace_roots); if request.paths.iter().any(|path| { path.ends_with(".gitignore") || path.contains(".git/") @@ -988,6 +1011,8 @@ pub fn write_file(request: FileWriteRequest) -> Result, pub(crate) hidden_file_patterns: Vec, + /// Canonical nested roots delegated by this request, never by the global policy registry. + pub(crate) delegated_roots: Vec, } impl VisibilityRules { @@ -1005,9 +1030,32 @@ impl VisibilityRules { Self { hidden_directories: normalize(directories), hidden_file_patterns: normalize(files), + delegated_roots: Vec::new(), } } + /// Binds scan ownership to the caller's workspace without changing directory browsing. + fn with_workspace_roots(mut self, root: &Path, roots: &[String]) -> Self { + for value in roots { + // Disconnected siblings must not fail an otherwise valid scoped request. + // Missing descendants still retain their boundary until the host removes the root. + let candidate = search_index::canonicalize_with_missing_components(Path::new(value)) + .unwrap_or_else(|| PathBuf::from(value)); + if candidate != root && candidate.starts_with(root) { + self.delegated_roots.push(candidate); + } + } + self.delegated_roots.sort(); + self.delegated_roots.dedup(); + self + } + + pub(crate) fn is_delegated(&self, path: &Path) -> bool { + self.delegated_roots + .iter() + .any(|root| path.starts_with(root)) + } + pub(crate) fn is_hidden(&self, path: &str, is_directory: bool) -> bool { let components = path .split('/') @@ -1092,7 +1140,7 @@ fn scan_node( .and_then(|value| value.to_str()) .unwrap_or("Workspace") .to_string(); - if super::indexing::is_excluded(root, path, metadata.is_dir())? { + if rules.is_delegated(path) || super::indexing::is_excluded(root, path, metadata.is_dir())? { return Ok(WorkspaceNode { path: relative, name, @@ -1163,7 +1211,7 @@ fn collect_snapshot_files( incomplete_directories: &mut Vec, ) -> Result<(), CoreError> { crate::protocol::cancellation::check()?; - if super::indexing::is_excluded(root, path, true)? { + if rules.is_delegated(path) || super::indexing::is_excluded(root, path, true)? { return Ok(()); } let listing = visible_children(path, root, rules, ChildOrder::Traversal)?; diff --git a/rust/lithe-core/src/project/indexing.rs b/rust/lithe-core/src/project/indexing.rs index 920ffdb8f8..b7a4aac9a6 100644 --- a/rust/lithe-core/src/project/indexing.rs +++ b/rust/lithe-core/src/project/indexing.rs @@ -227,6 +227,7 @@ pub(crate) fn prepare_provider_exclusions(root: &Path) -> Result<(), CoreError> context.prepare_parent(root, "")?; super::files::snapshot(super::files::WorkspaceSnapshotRequest { root: root.to_string_lossy().into_owned(), + workspace_roots: Vec::new(), hidden_directory_names: Vec::new(), hidden_file_patterns: Vec::new(), include_tree: false, @@ -480,7 +481,11 @@ mod tests { let workspace = Workspace::new(); workspace.configure(&["ignored"], &[], false); let uri = url::Url::from_directory_path(&workspace.0).unwrap(); - let directory = workspace.0.join("ignored").to_string_lossy().into_owned(); + let directory = workspace + .0 + .join("ignored") + .to_string_lossy() + .replace('\\', "/"); assert_eq!( java_import_exclusions(uri.as_str()), vec![directory.clone(), format!("{directory}/**")] @@ -542,6 +547,181 @@ mod tests { } } + #[test] + fn nested_roots_prune_real_inventories_search_and_incremental_refills() { + let parent = Workspace::new(); + let nested = Workspace(parent.0.join("ignored")); + parent.configure(&[], &[], false); + fs::write( + nested.0.join("Visible.java"), + "class Visible { String needle; }", + ) + .unwrap(); + let roots = vec![parent.0.clone(), nested.0.clone()]; + let search = |root: &Path, roots: &[PathBuf]| { + files::search( + serde_json::from_value(json!({ + "root": root, "workspaceRoots": roots, "query":"needle", "maxFileResults":0 + })) + .unwrap(), + ) + .unwrap() + }; + assert_eq!( + search(&parent.0, &[]).matches.len(), + 3, + "warm the legacy parent index" + ); + for git in [false, true] { + if git { + nested.git(&["init", "--quiet"]); + fs::write(nested.0.join(".gitignore"), "deep/\n").unwrap(); + } + nested.configure(if git { &[] } else { &["deep"] }, &[], git); + files::DIRECTORY_VISITS.with_borrow_mut(|trace| *trace = Some(Vec::new())); + let inventory = files::snapshot( + serde_json::from_value(json!({ + "root":parent.0, "workspaceRoots":roots, "includeTree":false + })) + .unwrap(), + ) + .unwrap(); + assert_eq!(inventory.files, ["src/Included.java"]); + files::DIRECTORY_VISITS.with_borrow(|trace| { + assert!(!trace + .as_ref() + .unwrap() + .iter() + .any(|path| path.starts_with(&nested.0))) + }); + assert_eq!(search(&parent.0, &roots).matches.len(), 1); + assert_eq!( + search(&nested.0, &roots) + .matches + .iter() + .map(|item| item.path.as_str()) + .collect::>(), + ["Visible.java"] + ); + let warm = files::warm_search_index( + serde_json::from_value(json!({ + "root":parent.0,"workspaceRoots":roots + })) + .unwrap(), + ) + .unwrap(); + assert_eq!(warm.file_count, 1); + search_index::update_cached_file(&parent.0, &nested.0.join("Visible.java")); + let updated = files::update_search_index( + serde_json::from_value(json!({ + "root":parent.0,"workspaceRoots":roots,"paths":["ignored/Visible.java"] + })) + .unwrap(), + ) + .unwrap(); + assert_eq!( + updated.file_count, 1, + "watcher updates cannot refill a delegated subtree" + ); + let preview = files::replace_preview(serde_json::from_value(json!({ + "root":parent.0,"workspaceRoots":roots,"query":"needle","replacement":"changed", + "paths":["ignored/Visible.java"],"textOverrides":{"ignored/Visible.java":"needle"} + })).unwrap()).unwrap(); + assert!( + preview.files.is_empty(), + "explicit paths and dirty overrides also obey ownership" + ); + let names = files::search_everywhere(serde_json::from_value(json!({ + "root":parent.0,"workspaceRoots":roots,"query":"Visible","includeGeneratedFileNames":true + })).unwrap()).unwrap(); + assert!(names.matches.is_empty()); + } + // Another window's registered policy does not delegate this window's scan. + assert_eq!(search(&parent.0, &[]).matches.len(), 3); + let status = context(&nested.0).unwrap(); + release(ReleaseIndexingRequest { + root: nested.0.to_string_lossy().into_owned(), + revision: status.owner_revision, + }) + .unwrap(); + assert_eq!( + search(&parent.0, &[parent.0.clone()]).matches.len(), + 3, + "removing an added root restores parent scanning even while its policy is retired" + ); + } + + #[test] + fn unavailable_roots_do_not_break_scoped_search_or_missing_descendant_boundaries() { + let workspace = Workspace::new(); + workspace.configure(&[], &[], false); + let unavailable_sibling = workspace.0.with_extension("disconnected"); + let roots = vec![workspace.0.clone(), unavailable_sibling]; + let response = files::search( + serde_json::from_value(json!({ + "root":workspace.0,"workspaceRoots":roots,"scopePaths":["src"], + "query":"needle","maxFileResults":0,"maxResults":1 + })) + .unwrap(), + ) + .unwrap(); + assert_eq!(response.matches.len(), 1); + let nested = workspace.0.join("ignored"); + fs::remove_dir_all(&nested).unwrap(); + let request = + json!({"root":workspace.0,"workspaceRoots":[workspace.0,nested],"includeTree":false}); + assert_eq!( + files::snapshot(serde_json::from_value(request.clone()).unwrap()) + .unwrap() + .files, + ["src/Included.java"] + ); + fs::create_dir_all(&nested).unwrap(); + fs::write(nested.join("Reappeared.java"), "class Reappeared {}").unwrap(); + assert_eq!( + files::snapshot(serde_json::from_value(request).unwrap()) + .unwrap() + .files, + ["src/Included.java"], + "reappearing delegated content cannot leak into the parent" + ); + } + + #[test] + fn nested_root_fixture_keeps_scopes_caps_and_tree_browsing_independent() { + let parent = Workspace::new(); + let nested = Workspace(parent.0.join("ignored")); + parent.configure(&[], &[], false); + nested.configure(&["deep"], &[], false); + let fixture: serde_json::Value = serde_json::from_str(include_str!( + "../../../../shared/fixtures/workspace/indexing-policy-v1.json" + )) + .unwrap(); + for case in fixture["ownershipCases"].as_array().unwrap() { + let roots = if case["nestedRegistered"].as_bool().unwrap() { + vec![parent.0.clone(), nested.0.clone()] + } else { + vec![parent.0.clone()] + }; + let response = files::search(serde_json::from_value(json!({ + "root":parent.0,"workspaceRoots":roots,"query":"needle","scopePaths":["ignored"], + "maxFileResults":0,"maxResults":1 + })).unwrap()).unwrap(); + assert_eq!( + response.matches.len(), + case["parentScopedMatches"].as_u64().unwrap() as usize + ); + } + let tree = files::list_directories( + serde_json::from_value(json!({ + "root":parent.0,"paths":["ignored/deep"] + })) + .unwrap(), + ) + .unwrap(); + assert_eq!(tree.directories[0].children[0].name, "Excluded.java"); + } + #[test] fn manual_exclusion_prunes_enumeration_but_keeps_tree_browsing() { let workspace = Workspace::new(); diff --git a/rust/lithe-core/src/project/search_index.rs b/rust/lithe-core/src/project/search_index.rs index 27cb07aedd..ef76b145c5 100644 --- a/rust/lithe-core/src/project/search_index.rs +++ b/rust/lithe-core/src/project/search_index.rs @@ -65,6 +65,7 @@ struct IndexKey { hidden_directories: Vec, hidden_file_patterns: Vec, names_only: bool, + delegated_roots: Vec, policy_revision: u64, } @@ -83,6 +84,7 @@ fn key(root: &Path, rules: &VisibilityRules) -> IndexKey { hidden_directories: rules.hidden_directories.clone(), hidden_file_patterns: rules.hidden_file_patterns.clone(), names_only: false, + delegated_roots: rules.delegated_roots.clone(), policy_revision: super::indexing::context(root).map_or(0, |policy| policy.revision), } } @@ -175,7 +177,11 @@ pub(crate) fn update_cached_file(root: &Path, path: &Path) { let rules = VisibilityRules { hidden_directories: cache_key.hidden_directories, hidden_file_patterns: cache_key.hidden_file_patterns, + delegated_roots: cache_key.delegated_roots, }; + if rules.is_delegated(&absolute) { + continue; + } if let Ok(mut index) = index.write() { index.update_file(&absolute, &relative, metadata.as_ref(), &rules); } @@ -215,11 +221,15 @@ pub(crate) fn update_paths( let effective_rules = VisibilityRules { hidden_directories: cache_key.hidden_directories, hidden_file_patterns: cache_key.hidden_file_patterns, + delegated_roots: cache_key.delegated_roots, }; for value in paths { let Some(absolute) = normalized_update_path(root, value) else { continue; }; + if effective_rules.is_delegated(&absolute) { + continue; + } let relative = relative_path(&absolute, root); // Both name and content indexes exclude nested linked worktrees. if is_inside_nested_linked_worktree(root, &relative) { @@ -456,6 +466,9 @@ fn collect_files( policy: Option<&super::indexing::IndexingContext>, ) -> Result<(), CoreError> { crate::protocol::cancellation::check()?; + if rules.is_delegated(path) { + return Ok(()); + } if let Some(policy) = policy { if policy.reason(&relative_path(path, root), true)?.is_some() { return Ok(()); @@ -646,6 +659,7 @@ mod tests { let root = crate::tests::support::temporary_root("search-missing-descendant"); let rules = VisibilityRules { hidden_directories: vec![], + delegated_roots: Vec::new(), hidden_file_patterns: vec![], }; let mut paths = Vec::new(); @@ -724,6 +738,7 @@ mod tests { } let rules = VisibilityRules { hidden_directories: vec![], + delegated_roots: Vec::new(), hidden_file_patterns: vec![], }; let mut paths = Vec::new(); @@ -768,6 +783,7 @@ mod tests { // judge the same list. let rules = VisibilityRules { hidden_directories: vec![], + delegated_roots: Vec::new(), hidden_file_patterns: fixture["hiddenFilePatterns"] .as_array() .unwrap() @@ -837,6 +853,7 @@ mod tests { for index in 0..32 { let rules = VisibilityRules { hidden_directories: vec![], + delegated_roots: Vec::new(), hidden_file_patterns: vec![format!("exclude-{index}/")], }; let content = get_or_build(&root, &rules).unwrap(); diff --git a/shared/contracts/rust-core-api.md b/shared/contracts/rust-core-api.md index d943d6e624..9f2556dbcb 100644 --- a/shared/contracts/rust-core-api.md +++ b/shared/contracts/rust-core-api.md @@ -4407,3 +4407,17 @@ until the next explicit configuration for that root. `workspace.search.scopePaths` optionally limits candidates to workspace-relative files or directory subtrees before applying result caps. It never establishes a new policy root. Empty scopes search the full registered project. + +Inventory snapshots, search (including Search Everywhere and its pages), index +warm/update requests and replacement previews accept optional `workspaceRoots`: +the absolute native roots explicitly opened in the calling workspace. Omission or +an empty array preserves single-root behavior. Core canonicalizes the roots and +prunes strict descendant roots from the current root's inventory and indexes; +the host queries each descendant using its own policy. Directory listing remains +available. Explicit replacement paths and text overrides cannot bypass ownership. +The effective descendant set is part of each index cache key and is retained for +save/watcher updates. It is request-local, never inferred from process-global +indexing policies or retired roots. Hosts discard in-flight results when their +workspace root set changes. Removing a nested root restores parent scanning. +An unavailable non-current root does not fail a scoped request for an accessible +root; a missing descendant retains its ownership boundary until removed by the host. diff --git a/shared/fixtures/workspace/indexing-policy-v1.json b/shared/fixtures/workspace/indexing-policy-v1.json index 1e3e9201a7..774aa2b480 100644 --- a/shared/fixtures/workspace/indexing-policy-v1.json +++ b/shared/fixtures/workspace/indexing-policy-v1.json @@ -3,21 +3,49 @@ "command": "workspace.configureIndexing", "request": { "root": "/workspace", - "manualExcludedDirectories": ["vendor"], - "includedDirectories": ["generated/examples"], + "manualExcludedDirectories": [ + "vendor" + ], + "includedDirectories": [ + "generated/examples" + ], "gitIgnoreEnabled": true, "refresh": false, - "paths": ["vendor", "generated"] + "paths": [ + "vendor", + "generated" + ] }, "response": { "revision": 1, - "excludedDirectories": {"vendor": "manual"}, + "excludedDirectories": { + "vendor": "manual" + }, "gitIgnoreFailed": false }, "cases": [ - {"path": "vendor/src", "reason": "manual"}, - {"path": "generated/examples", "reason": null}, - {"path": "generated", "reason": null} + { + "path": "vendor/src", + "reason": "manual" + }, + { + "path": "generated/examples", + "reason": null + }, + { + "path": "generated", + "reason": null + } ], - "notes": "generated is a traversal ancestor of an include exception and cannot be pruned as a whole. Hidden-path rules are separate." + "notes": "generated is a traversal ancestor of an include exception and cannot be pruned as a whole. Hidden-path rules are separate.", + "ownershipCases": [ + { + "nestedRegistered": true, + "parentScopedMatches": 0 + }, + { + "nestedRegistered": false, + "parentScopedMatches": 1 + } + ] } diff --git a/shared/i18n/locales/en-US.json b/shared/i18n/locales/en-US.json index c35c575c67..e25d43dd88 100644 --- a/shared/i18n/locales/en-US.json +++ b/shared/i18n/locales/en-US.json @@ -9563,7 +9563,11 @@ "indexing.gitReason": "Excluded from indexing by Git ignore rules", "indexing.inheritedReason": "Excluded from indexing by a parent directory", "indexing.incomplete": "Some directories could not be scanned. Automatic project analysis was not refreshed.", - "indexing.remoteUnsupported": "Directory indexing exclusions are not supported for remote projects." + "indexing.remoteUnsupported": "Directory indexing exclusions are not supported for remote projects.", + "indexing.invalidSettings": "Project indexing settings are invalid. The saved data has been preserved.", + "indexing.readFailed": "Could not read project indexing settings. Try reopening the project.", + "indexing.writeFailed": "Could not save project indexing settings. Your previous settings remain unchanged.", + "indexing.configureFailed": "Could not apply project indexing exclusions. Try reopening the project." }, "overrides": { "windows": { diff --git a/shared/i18n/locales/zh-CN.json b/shared/i18n/locales/zh-CN.json index 99cf75cf1a..2aed06b07d 100644 --- a/shared/i18n/locales/zh-CN.json +++ b/shared/i18n/locales/zh-CN.json @@ -9563,7 +9563,11 @@ "indexing.gitReason": "根据 Git 忽略规则排除索引", "indexing.inheritedReason": "继承父目录的索引排除", "indexing.incomplete": "部分目录无法扫描,未刷新项目自动分析。", - "indexing.remoteUnsupported": "远程项目暂不支持目录索引排除。" + "indexing.remoteUnsupported": "远程项目暂不支持目录索引排除。", + "indexing.invalidSettings": "项目索引设置格式无效,原始设置已保留。", + "indexing.readFailed": "无法读取项目索引设置,请重新打开项目后重试。", + "indexing.writeFailed": "无法保存项目索引设置,原有设置未改变。", + "indexing.configureFailed": "无法应用项目索引排除策略,请重新打开项目后重试。" }, "overrides": { "macos": { diff --git a/shared/i18n/messages.json b/shared/i18n/messages.json index bf74f21c7c..5f1ac781a2 100644 --- a/shared/i18n/messages.json +++ b/shared/i18n/messages.json @@ -91330,12 +91330,41 @@ "id": "indexing.remoteUnsupported", "description": "Remote workspace indexing exclusion capability", "platforms": [ - "macos" + "macos", + "windows" ], "macos": { "key": "Directory indexing exclusions are not supported for remote projects.", "arguments": [] } + }, + { + "id": "indexing.invalidSettings", + "description": "Project indexing settings failure", + "platforms": [ + "windows" + ] + }, + { + "id": "indexing.readFailed", + "description": "Project indexing settings failure", + "platforms": [ + "windows" + ] + }, + { + "id": "indexing.writeFailed", + "description": "Project indexing settings failure", + "platforms": [ + "windows" + ] + }, + { + "id": "indexing.configureFailed", + "description": "Project indexing settings failure", + "platforms": [ + "windows" + ] } ] } diff --git a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json index 23782cbaad..e9b4258dcb 100644 --- a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json +++ b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json @@ -4,7 +4,7 @@ "group": "工作区生命周期", "capability": "目录索引排除与 Git 自动排除", "owner": "Workspace", - "verification": "两端开关已统一到设置 › 版本控制 › Git,移除原索引/项目环境入口。macOS 自动排除使用与凭据助手相同的小型 switch 样式,已在真实 App 目视核对;Windows 两项沿用同一个 Checkbox。真实 macOS App 已验证中文索引/忽略搜索定位、无项目禁用、默认开启、启闭重启和取消排除例外持久化。2026-10-30 同一开发构建的隔离英文原生实例补验通过:普通目录六项标记、继承排除仅取消排除且须由父级恢复、全局/仓库 Git 范围往返保持项目 A 的关闭值,项目 B 仍默认开启;两项目搜索结果分别符合开关值。Git 配置与忽略文件未变,原开发包 757 文件清单及哈希不变。此前 48 项 Swift、20 项前端定向测试通过,包含子仓库隔离和存储失败(本机 Swift 6.4,前端在 macOS/Bun 运行)。固定 Xcode 26.6 仍待验证;Windows 原生按用户要求不执行。Java 已导入项目仍可能扫描,Maven 显式模块保留;Go/Rust 原生配置与同步门禁已验证,不保证零后台目录访问。 2026-10-30 整合 preview fbb5e578 后修复刷新期间策略变更、watcher 刷新后的释放句柄、Java 原有导入排除保留、Windows 附加根菜单范围及远程误导提示;补充回归覆盖项目切换/同根重开/关闭期间的在途配置回收、跨工作区根移动目录的标记与例外迁移,以及先刷新策略再扫描时保留语言服务 Git 排除;TypeScript 类型检查通过。指定目录查找按用户要求暂不调整;远程索引排除未实现,明确显示不支持。 最终定向计时回归通过:Swift 79 项(6.4)、Rust 57 项、macOS/Bun 前端 26 项及相关回归 25 项;新增配额失败逆序回滚与可见性规则同根重开隔离。", + "verification": "两端开关已统一到设置 › 版本控制 › Git,移除原索引/项目环境入口。macOS 自动排除使用与凭据助手相同的小型 switch 样式,已在真实 App 目视核对;Windows 两项沿用同一个 Checkbox。真实 macOS App 已验证中文索引/忽略搜索定位、无项目禁用、默认开启、启闭重启和取消排除例外持久化。2026-10-30 同一开发构建的隔离英文原生实例补验通过:普通目录六项标记、继承排除仅取消排除且须由父级恢复、全局/仓库 Git 范围往返保持项目 A 的关闭值,项目 B 仍默认开启;两项目搜索结果分别符合开关值。Git 配置与忽略文件未变,原开发包 757 文件清单及哈希不变。此前 48 项 Swift、20 项前端定向测试通过,包含子仓库隔离和存储失败(本机 Swift 6.4,前端在 macOS/Bun 运行)。固定 Xcode 26.6 仍待验证;Windows 原生按用户要求不执行。Java 已导入项目仍可能扫描,Maven 显式模块保留;Go/Rust 原生配置与同步门禁已验证,不保证零后台目录访问。 2026-10-30 整合 preview fbb5e578 后修复刷新期间策略变更、watcher 刷新后的释放句柄、Java 原有导入排除保留、Windows 附加根菜单范围及远程误导提示;补充回归覆盖项目切换/同根重开/关闭期间的在途配置回收、跨工作区根移动目录的标记与例外迁移,以及先刷新策略再扫描时保留语言服务 Git 排除;TypeScript 类型检查通过。指定目录查找按用户要求暂不调整;远程索引排除未实现,明确显示不支持。 最终定向计时回归通过:Swift 79 项(6.4)、Rust 57 项、macOS/Bun 前端 26 项及相关回归 25 项;新增配额失败逆序回滚与可见性规则同根重开隔离。 本轮修复 Windows LSP 最近根查询、远程设置能力与本地化错误、多根请求的父根扫描剪枝和缓存回填边界,并修正两项 Java 排除测试的跨平台路径期望。本机最终 Core 1371 项单元及 32 项集成测试通过,相关索引/LSP 22 项逐项计时通过;macOS/Bun 前端 42 项与 TypeScript 检查通过,覆盖失效根限定搜索、根增删后的工作副本关闭/恢复及旧结果拒绝。独立 Swift/C ABI 探针通过,但整应用验证因缺 Metal Toolchain 中断,工具链为 Swift 6.4。Windows 原生验证尚未完成:本机 Parallels 命令链接指向已不存在的应用,不能据此标记 verified。", "macos": { "implementationStatus": "partial", "verificationStatus": "pending", @@ -35,7 +35,12 @@ "windows/tauri/src/features/settings/components/git-execution-settings.tsx", "windows/tauri/src/features/settings/components/git-indexing-settings.test.tsx", "windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts", - "windows/tauri/src/features/file-system/stores/file-system.store.ts" + "windows/tauri/src/features/file-system/stores/file-system.store.ts", + "windows/tauri/src/features/editor/lsp/lsp-client-indexing.test.ts", + "windows/tauri/src/features/file-search/lib/file-search-api.test.ts", + "windows/tauri/src/features/file-search/hooks/use-fff-search.test.tsx", + "windows/tauri/src/features/file-explorer/stores/workspace-indexing.test.ts", + "windows/tauri/src/features/editor/hooks/use-lsp-integration-indexing.test.tsx" ] } } diff --git a/windows/tauri/src/features/editor/hooks/use-lsp-integration-indexing.test.tsx b/windows/tauri/src/features/editor/hooks/use-lsp-integration-indexing.test.tsx new file mode 100644 index 0000000000..2e921e4e5c --- /dev/null +++ b/windows/tauri/src/features/editor/hooks/use-lsp-integration-indexing.test.tsx @@ -0,0 +1,115 @@ +import { expect, spyOn, test } from "bun:test"; +import { act } from "react"; +import { createRoot } from "react-dom/client"; +import { createPaneContent } from "@/features/editor/stores/buffer-content-factory"; +import { useBufferStore } from "@/features/editor/stores/buffer.store"; +import { LspClient } from "@/features/editor/lsp/lsp-client"; +import * as deferred from "@/features/editor/lsp/deferred-lsp-work"; +import * as indexing from "@/features/file-explorer/stores/workspace-indexing"; +import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; +import { workspaceRuntimeRegistry } from "@/features/workspace/runtime/workspace-runtime-registry"; +import * as adapter from "@/platform/lsp-core-adapter"; +import { installHappyDom } from "@/test-utils/happy-dom"; +import { useLspIntegration } from "./use-lsp-integration"; + +test("adding and removing a nested root reevaluates an open document's LSP policy", async () => { + const restoreDom = installHappyDom(); + const environment = globalThis as typeof globalThis & { IS_REACT_ACT_ENVIRONMENT?: boolean }; + const previousAct = environment.IS_REACT_ACT_ENVIRONMENT; + const previousWorkspace = workspaceRuntimeRegistry.getActiveWorkspaceId(); + const workspaceId = "lsp-root-membership-fixture"; + const filePath = "C:/main/nested/src/Main.java"; + workspaceRuntimeRegistry.activateWorkspace({ id: workspaceId, name: "fixture" }, "ready"); + const store = useFileSystemStore.getStore(workspaceId); + store.setState({ rootFolderPath: "C:/main", workspaceFolders: [] }); + const buffers = useBufferStore.getStore(workspaceId); + buffers.setState({ + buffers: [ + createPaneContent("fixture", { + type: "editor", + name: "Main.java", + path: filePath, + content: "class Main {}", + }), + ], + }); + const scheduled = new Set<() => void>(); + const defer = spyOn(deferred, "deferUntilAfterNextPaint").mockImplementation((work) => { + scheduled.add(work); + return () => { + scheduled.delete(work); + }; + }); + const configure = spyOn(indexing, "configureWorkspaceIndexing").mockImplementation( + async (root): Promise => ({ + revision: 1, + excludedDirectories: root.endsWith("nested") ? { src: "manual" } : {}, + gitIgnoreFailed: false, + }), + ); + const snapshot = spyOn(adapter, "getLspSessionSnapshot").mockReturnValue(null); + const events: string[] = []; + const client = Object.create(LspClient.prototype) as LspClient; + Object.assign(client, { + fileAttachmentIds: new Map(), + fileStartTasks: new Map(), + startFileAttachment: async () => ({ kind: "attached", attachmentId: "fixture" }), + notifyDocumentOpen: async () => { + events.push("open"); + }, + notifyDocumentClose: async () => { + events.push("close"); + }, + stopForFile: async () => { + events.push("stop"); + }, + }); + const instance = spyOn(LspClient, "getInstance").mockReturnValue(client); + const host = document.createElement("div"); + const root = createRoot(host); + function Probe() { + useLspIntegration({ filePath }); + return null; + } + const flush = async () => + act(async () => { + const ready = [...scheduled]; + scheduled.clear(); + for (const work of ready) work(); + }); + try { + environment.IS_REACT_ACT_ENVIRONMENT = true; + document.body.append(host); + await act(async () => root.render()); + await flush(); + expect(events).toEqual(["open"]); + await act(async () => + store.setState({ + workspaceFolders: [{ path: "C:/main/nested", name: "nested", isPrimary: false }], + }), + ); + await flush(); + expect(events).toEqual(["open", "close", "stop"]); + expect(configure).toHaveBeenLastCalledWith("C:/main/nested", ["src"]); + await act(async () => store.setState({ workspaceFolders: [] })); + await flush(); + expect(events).toEqual(["open", "close", "stop", "open"]); + } finally { + buffers.setState({ buffers: [] }); + try { + await act(async () => root.unmount()); + } finally { + scheduled.clear(); + defer.mockRestore(); + configure.mockRestore(); + snapshot.mockRestore(); + instance.mockRestore(); + host.remove(); + workspaceRuntimeRegistry.removeWorkspace(workspaceId); + workspaceRuntimeRegistry.activateWorkspace({ id: previousWorkspace, name: "restored" }); + if (previousAct === undefined) delete environment.IS_REACT_ACT_ENVIRONMENT; + else environment.IS_REACT_ACT_ENVIRONMENT = previousAct; + restoreDom(); + } + } +}); diff --git a/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts b/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts index 460098e8c0..327f9da54d 100644 --- a/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts +++ b/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts @@ -1,3 +1,4 @@ +import { getNativeWorkspaceRootPaths } from "@/features/file-search/utils/file-search-paths"; import { useIndexingVersion } from "@/features/file-explorer/stores/workspace-indexing"; import { useEffect, useMemo, useRef } from "react"; import { useExtensionStore } from "@/extensions/registry/extension-store"; @@ -43,7 +44,7 @@ type DocumentChangeOwnerState = | { phase: "flushing"; completion: Promise }; interface LspDocumentOwner { - indexingVersion: number; + indexingKey: string; // One record owns every asynchronous resource for one editor attachment. state: LspDocumentOwnerState; changes: DocumentChangeOwnerState; @@ -71,11 +72,16 @@ export const useLspIntegration = ({ contentRevision = 0, }: UseLspIntegrationOptions) => { const indexingVersion = useIndexingVersion(); - const indexingVersionRef = useRef(indexingVersion); - indexingVersionRef.current = indexingVersion; const lspClient = useMemo(() => LspClient.getInstance(), []); const workspaceId = useActiveWorkspaceId(); const rootFolderPath = useFileSystemStore((state) => state.rootFolderPath); + const workspaceFolders = useFileSystemStore((state) => state.workspaceFolders); + // Root membership changes must withdraw old attachments even when settings are unchanged. + const indexingKey = JSON.stringify([ + workspaceId, indexingVersion, getNativeWorkspaceRootPaths(rootFolderPath, workspaceFolders), + ]); + const indexingKeyRef = useRef(indexingKey); + indexingKeyRef.current = indexingKey; const installedExtensions = useExtensionStore.use.installedExtensions(); const activeFilePath = enabled ? filePath : undefined; const isLspSupported = useMemo( @@ -108,11 +114,11 @@ export const useLspIntegration = ({ const existingOwner = documentOwnersRef.current.get(filePath); const owner: LspDocumentOwner = existingOwner && - existingOwner.indexingVersion === indexingVersion && + existingOwner.indexingKey === indexingKey && !isTerminalOwnerState(existingOwner.state) ? existingOwner : { - indexingVersion, + indexingKey, state: { phase: "scheduled" }, changes: { phase: "idle", completion: Promise.resolve() }, }; @@ -122,7 +128,7 @@ export const useLspIntegration = ({ const isStillOpen = Boolean( getSourceEditorBufferByPath(useBufferStore.getState().buffers, filePath), ); - if (isStillOpen && indexingVersionRef.current === indexingVersion) return; + if (isStillOpen && indexingKeyRef.current === indexingKey) return; if (owner.state.phase === "stopping" || owner.state.phase === "stopped") return; const previousState = owner.state; @@ -157,7 +163,7 @@ export const useLspIntegration = ({ if ( existingOwner && - existingOwner.indexingVersion === indexingVersion && + existingOwner.indexingKey === indexingKey && !isTerminalOwnerState(existingOwner.state) ) { return cleanupDocument; @@ -209,7 +215,7 @@ export const useLspIntegration = ({ cancelInitialization(); cleanupDocument(); }; - }, [enabled, filePath, isLspSupported, lspClient, rootFolderPath, workspaceId, indexingVersion]); + }, [enabled, filePath, isLspSupported, lspClient, rootFolderPath, workspaceId, indexingKey]); useEffect(() => { if (!enabled || !filePath || !isLspSupported) return; diff --git a/windows/tauri/src/features/editor/lsp/lsp-client-indexing.test.ts b/windows/tauri/src/features/editor/lsp/lsp-client-indexing.test.ts new file mode 100644 index 0000000000..da397d963c --- /dev/null +++ b/windows/tauri/src/features/editor/lsp/lsp-client-indexing.test.ts @@ -0,0 +1,72 @@ +import { expect, spyOn, test } from "bun:test"; +import * as indexing from "@/features/file-explorer/stores/workspace-indexing"; +import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; +import { workspaceRuntimeRegistry } from "@/features/workspace/runtime/workspace-runtime-registry"; +import * as adapter from "@/platform/lsp-core-adapter"; +import { LspClient } from "./lsp-client"; + +test.each([ + ["C:/main/src/main.go", "C:/main", "src"], + ["D:/added/src/main.go", "D:/added", "src"], + ["d:\\ADDED\\nested\\SRC\\main.go", "D:/added/nested", "SRC"], + ["//?/D:/added/main.go", "D:/added", "."], + ["E:/outside/main.go", undefined, undefined], +] as const)("LSP indexing uses the file's owning root: %s", async (file, owner, parent) => { + const workspaceId = "indexing-lsp-fixture"; + const scope = { workspaceId, root: "C:/main" }; + const store = useFileSystemStore.getStore(workspaceId); + store.setState({ + rootFolderPath: scope.root, + workspaceFolders: [ + { path: "D:/added", name: "added", isPrimary: false }, + { path: "D:/added/nested", name: "nested", isPrimary: false }, + ], + }); + const configure = spyOn(indexing, "configureWorkspaceIndexing").mockResolvedValue({ + revision: 1, + excludedDirectories: {}, + gitIgnoreFailed: false, + }); + const snapshot = spyOn(adapter, "getLspSessionSnapshot").mockReturnValue(null); + const client = Object.create(LspClient.prototype) as LspClient; + const starts: unknown[] = []; + Object.assign(client, { + fileAttachmentIds: new Map(), + fileStartTasks: new Map(), + startFileAttachment: async (_file: string, receivedScope: unknown) => { + starts.push(receivedScope); + return { kind: "attached", attachmentId: "fixture" }; + }, + }); + try { + expect((await client.startForFile(file, scope)).kind).toBe("attached"); + expect(starts).toEqual([scope]); + if (owner) expect(configure).toHaveBeenCalledWith(owner, [parent]); + else expect(configure).not.toHaveBeenCalled(); + if (owner) { + configure.mockResolvedValue({ + revision: 2, + excludedDirectories: { [parent!]: "manual" }, + gitIgnoreFailed: false, + }); + expect(await client.startForFile(file, scope)).toEqual({ + kind: "cancelled", + reason: "excluded", + }); + expect(starts).toHaveLength(1); + configure.mockImplementation(async () => { + workspaceRuntimeRegistry.removeWorkspace(workspaceId); + return { revision: 3, excludedDirectories: {}, gitIgnoreFailed: false }; + }); + expect(await client.startForFile(file, scope)).toEqual({ + kind: "cancelled", + reason: "superseded", + }); + expect(workspaceRuntimeRegistry.hasWorkspace(workspaceId)).toBe(false); + } + } finally { + configure.mockRestore(); + snapshot.mockRestore(); + workspaceRuntimeRegistry.removeWorkspace(workspaceId); + } +}); diff --git a/windows/tauri/src/features/editor/lsp/lsp-client.ts b/windows/tauri/src/features/editor/lsp/lsp-client.ts index 7e098e30f1..06325b5139 100644 --- a/windows/tauri/src/features/editor/lsp/lsp-client.ts +++ b/windows/tauri/src/features/editor/lsp/lsp-client.ts @@ -1,5 +1,9 @@ import { canUseNativeFileSearch } from "@/features/file-search/utils/file-search-paths"; import { configureWorkspaceIndexing } from "@/features/file-explorer/stores/workspace-indexing"; +import { getNativeWorkspaceRootPaths } from "@/features/file-search/utils/file-search-paths"; +import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; +import { closestWorkspaceRoot } from "@/features/workspace/types/workspace-root"; +import { workspaceRuntimeRegistry } from "@/features/workspace/runtime/workspace-runtime-registry"; import { getLspSessionSnapshot, getLspWorkspaceSessionSnapshot, @@ -37,7 +41,7 @@ import { hasTextContent, shouldStartLsp } from "@/features/panes/types/pane-cont import { useBufferStore } from "../stores/buffer.store"; import type { EditorTextChange } from "../types/editor.types"; import { logger } from "../utils/logger"; -import { normalizePath, pathStartsWithRoot } from "@/utils/path-helpers"; +import { getRelativePath, joinPath, normalizePath, pathStartsWithRoot } from "@/utils/path-helpers"; import { getLanguageDisplayName } from "../utils/language-id"; import { isBuiltInLspPath, @@ -888,16 +892,22 @@ export class LspClient { scope: WorkspaceLaunchScope, intent: LspFileStartIntent = "attach", ): Promise { - if (canUseNativeFileSearch(scope.root)) { - const relative = filePath - .replace(/\\/g, "/") - .slice(scope.root.replace(/\\/g, "/").replace(/\/+$/, "").length + 1); + const policyRoot = () => { + if (!workspaceRuntimeRegistry.hasWorkspace(scope.workspaceId)) return undefined; + const state = useFileSystemStore.getStore(scope.workspaceId).getState(); + return closestWorkspaceRoot(filePath, + getNativeWorkspaceRootPaths(state.rootFolderPath, state.workspaceFolders)); + }; + const root = canUseNativeFileSearch(filePath) ? policyRoot() : undefined; + if (root) { + const relative = getRelativePath(filePath, root); const parent = relative.includes("/") ? relative.slice(0, relative.lastIndexOf("/")) : "."; - const indexing = await configureWorkspaceIndexing(scope.root, [parent]); + const indexing = await configureWorkspaceIndexing(root, [parent]); + if (policyRoot() !== root) return { kind: "cancelled", reason: "superseded" }; if ( Object.keys(indexing.excludedDirectories).some( (directory) => - directory === "." || relative === directory || relative.startsWith(directory + "/"), + directory === "." || pathStartsWithRoot(filePath, joinPath(root, directory)), ) ) return { kind: "cancelled", reason: "excluded" }; diff --git a/windows/tauri/src/features/file-explorer/stores/directory-marks.ts b/windows/tauri/src/features/file-explorer/stores/directory-marks.ts index 9bdf4c8402..437dedb771 100644 --- a/windows/tauri/src/features/file-explorer/stores/directory-marks.ts +++ b/windows/tauri/src/features/file-explorer/stores/directory-marks.ts @@ -5,6 +5,7 @@ import { writeIndexingSettings, } from "./workspace-indexing"; import { useCallback, useEffect, useState } from "react"; +import { closestWorkspaceRoot } from "@/features/workspace/types/workspace-root"; import { getRelativePath, isCaseInsensitivePath, @@ -93,8 +94,7 @@ export function migrateDirectoryMarks(root: string, source: string, destination? } /** The closest workspace owns preferences, including nested added roots. */ export function directoryMarkRoot(path: string, roots: readonly string[]): string | undefined { - return roots.filter((root) => pathStartsWithRoot(path, root)) - .sort((a, b) => getPathIdentity(b).length - getPathIdentity(a).length)[0]; + return closestWorkspaceRoot(path, roots); } export function migrateWorkspaceDirectoryMarks(roots: readonly string[], source: string, destination?: string) { diff --git a/windows/tauri/src/features/file-explorer/stores/workspace-indexing.test.ts b/windows/tauri/src/features/file-explorer/stores/workspace-indexing.test.ts new file mode 100644 index 0000000000..cebba94bc3 --- /dev/null +++ b/windows/tauri/src/features/file-explorer/stores/workspace-indexing.test.ts @@ -0,0 +1,66 @@ +import { afterEach, beforeEach, expect, test } from "bun:test"; +import { installHappyDom } from "@/test-utils/happy-dom"; +import { + IndexingSettingsError, + indexingSettingsStorageKey, + readIndexingSettings, + writeIndexingSettings, +} from "./workspace-indexing"; + +let restore: () => void; +beforeEach(() => { + restore = installHappyDom(); +}); +afterEach(() => restore()); + +test.each([ + "", + "broken", + "null", + "[]", + "{}", + '{"gitIgnoreEnabled":true,"includedDirectories":[1]}', + '{"gitIgnoreEnabled":true,"includedDirectories":[],"previousRoles":null}', + '{"gitIgnoreEnabled":true,"includedDirectories":[],"previousRoles":{"src":1}}', +])("invalid indexing settings are classified and preserved: %s", (raw) => { + const key = indexingSettingsStorageKey("C:/fixture"); + window.localStorage.setItem(key, raw); + expect(() => readIndexingSettings("C:/fixture")).toThrow(IndexingSettingsError); + try { + readIndexingSettings("C:/fixture"); + } catch (cause) { + expect((cause as IndexingSettingsError).code).toBe("invalidSettings"); + } + expect(window.localStorage.getItem(key)).toBe(raw); +}); + +test("storage failures expose stable codes and preserve the saved preference", () => { + const settings = { gitIgnoreEnabled: false, includedDirectories: ["keep"], previousRoles: {} }; + writeIndexingSettings("C:/fixture", settings); + const descriptor = Object.getOwnPropertyDescriptor(window, "localStorage"); + const storage = window.localStorage; + let failRead = true; + Object.defineProperty(window, "localStorage", { + configurable: true, + value: { + getItem: (key: string) => { + if (failRead) throw new Error("fixture read"); + return storage.getItem(key); + }, + setItem: () => { + throw new Error("fixture quota"); + }, + }, + }); + try { + expect(() => readIndexingSettings("C:/fixture")).toThrow("readFailed"); + failRead = false; + expect(() => + writeIndexingSettings("C:/fixture", { ...settings, gitIgnoreEnabled: true }), + ).toThrow("writeFailed"); + } finally { + if (descriptor) Object.defineProperty(window, "localStorage", descriptor); + else Reflect.deleteProperty(window, "localStorage"); + } + expect(readIndexingSettings("C:/fixture")).toEqual(settings); +}); diff --git a/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts b/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts index 10aa782112..1b2b4ba92a 100644 --- a/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts +++ b/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts @@ -17,20 +17,64 @@ const key = (root: string) => `lithe.workspace-directory-marks.${getPathIdentity(root).replace(/\/+$/, "")}`; export const indexingSettingsStorageKey = (root: string) => `lithe.workspace-indexing.${getPathIdentity(root).replace(/\/+$/, "")}`; +export type IndexingErrorCode = + | "invalidSettings" + | "readFailed" + | "writeFailed" + | "configureFailed"; +export class IndexingSettingsError extends Error { + constructor( + readonly code: IndexingErrorCode, + cause?: unknown, + ) { + super(code, { cause }); + this.name = "IndexingSettingsError"; + } +} + +function readStoredValue(key: string): string | null { + try { + return window.localStorage.getItem(key); + } catch (cause) { + throw new IndexingSettingsError("readFailed", cause); + } +} + export function readIndexingSettings(root: string): IndexingSettings { - const raw = window.localStorage.getItem(indexingSettingsStorageKey(root)); - if (!raw) return { gitIgnoreEnabled: true, includedDirectories: [], previousRoles: {} }; - const value = JSON.parse(raw); + const raw = readStoredValue(indexingSettingsStorageKey(root)); + if (raw === null) return { gitIgnoreEnabled: true, includedDirectories: [], previousRoles: {} }; + let value: unknown; + try { + value = JSON.parse(raw); + } catch (cause) { + throw new IndexingSettingsError("invalidSettings", cause); + } + if (!value || typeof value !== "object" || Array.isArray(value)) + throw new IndexingSettingsError("invalidSettings"); + const settings = value as Record; if ( - typeof value.gitIgnoreEnabled !== "boolean" || - !Array.isArray(value.includedDirectories) || - !value.includedDirectories.every((path: unknown) => typeof path === "string") + typeof settings.gitIgnoreEnabled !== "boolean" || + !Array.isArray(settings.includedDirectories) || + !settings.includedDirectories.every((path: unknown) => typeof path === "string") || + (settings.previousRoles !== undefined && + (!settings.previousRoles || + typeof settings.previousRoles !== "object" || + Array.isArray(settings.previousRoles) || + !Object.values(settings.previousRoles).every((role) => typeof role === "string"))) ) - throw new Error("Invalid indexing settings"); - return { ...value, previousRoles: value.previousRoles ?? {} }; + throw new IndexingSettingsError("invalidSettings"); + return { + gitIgnoreEnabled: settings.gitIgnoreEnabled, + includedDirectories: settings.includedDirectories, + previousRoles: (settings.previousRoles ?? {}) as Record, + }; } export function writeIndexingSettings(root: string, settings: IndexingSettings) { - window.localStorage.setItem(indexingSettingsStorageKey(root), JSON.stringify(settings)); + try { + window.localStorage.setItem(indexingSettingsStorageKey(root), JSON.stringify(settings)); + } catch (cause) { + throw new IndexingSettingsError("writeFailed", cause); + } window.dispatchEvent(new window.CustomEvent(indexingEvent, { detail: root })); } @@ -45,7 +89,7 @@ export async function configureWorkspaceIndexing( const identity = getPathIdentity(root); const operation = async () => { const settings = readIndexingSettings(root); - const raw = window.localStorage.getItem(key(root)); + const raw = readStoredValue(key(root)); const marks = raw ? JSON.parse(raw).marks : {}; const response = await executeCore({ id: crypto.randomUUID(), @@ -60,7 +104,7 @@ export async function configureWorkspaceIndexing( refresh, }, }); - if (!response.ok) throw new Error(response.error.message); + if (!response.ok) throw new IndexingSettingsError("configureFailed", response.error); revisions.set(identity, response.data.revision); return response.data; }; diff --git a/windows/tauri/src/features/file-search/hooks/use-fff-search.test.tsx b/windows/tauri/src/features/file-search/hooks/use-fff-search.test.tsx new file mode 100644 index 0000000000..671379b988 --- /dev/null +++ b/windows/tauri/src/features/file-search/hooks/use-fff-search.test.tsx @@ -0,0 +1,56 @@ +import { expect, spyOn, test } from "bun:test"; +import { act } from "react"; +import { createRoot } from "react-dom/client"; +import * as api from "../lib/file-search-api"; +import { installHappyDom } from "@/test-utils/happy-dom"; +import { useFffSearch } from "./use-fff-search"; + +test("an old root set cannot publish after nested-root ownership changes", async () => { + const restoreDom = installHappyDom(); + const environment = globalThis as typeof globalThis & { IS_REACT_ACT_ENVIRONMENT?: boolean }; + const previousAct = environment.IS_REACT_ACT_ENVIRONMENT; + let finish!: (hits: api.FffSearchHit[]) => void; + const old = new Promise((resolve) => { + finish = resolve; + }); + const search = spyOn(api, "fffSearchFiles") + .mockImplementationOnce(() => old) + .mockResolvedValue([]); + const host = document.createElement("div"); + const root = createRoot(host); + let result: ReturnType | undefined; + function Probe({ roots }: { roots: string[] }) { + result = useFffSearch("needle", true, roots); + return null; + } + try { + environment.IS_REACT_ACT_ENVIRONMENT = true; + document.body.append(host); + await act(async () => root.render()); + await act(async () => root.render()); + await act(async () => + finish([ + { + path: "C:/main/nested/Excluded.java", + name: "Excluded.java", + relative_path: "nested/Excluded.java", + score: 1, + }, + ]), + ); + expect(result?.hits).toEqual([]); + expect(result?.isSearching).toBe(false); + expect(search).toHaveBeenCalledTimes(2); + } finally { + finish([]); + try { + await act(async () => root.unmount()); + } finally { + search.mockRestore(); + host.remove(); + if (previousAct === undefined) delete environment.IS_REACT_ACT_ENVIRONMENT; + else environment.IS_REACT_ACT_ENVIRONMENT = previousAct; + restoreDom(); + } + } +}); diff --git a/windows/tauri/src/features/file-search/lib/file-search-api.test.ts b/windows/tauri/src/features/file-search/lib/file-search-api.test.ts new file mode 100644 index 0000000000..2fb17fac8b --- /dev/null +++ b/windows/tauri/src/features/file-search/lib/file-search-api.test.ts @@ -0,0 +1,75 @@ +import { expect, spyOn, test } from "bun:test"; +import * as core from "@/core/lithe-core-client"; +import * as indexing from "@/features/file-explorer/stores/workspace-indexing"; +import { fffListFiles, searchFilesContent } from "./file-search-api"; + +test("multi-root inventory and scoped search carry the complete ownership context", async () => { + const roots = ["C:/main", "C:/main/nested"]; + const requests: Array<{ command: string; payload: Record }> = []; + const configure = spyOn(indexing, "configureWorkspaceIndexing").mockResolvedValue({ + revision: 1, + excludedDirectories: {}, + gitIgnoreFailed: false, + }); + const execute = spyOn(core, "executeCore").mockImplementation( + async (request: core.CoreRequest

) => { + requests.push({ + command: request.command, + payload: request.payload as Record, + }); + const parent = (request.payload as Record).root === roots[0]; + const data = + request.command === "workspace.snapshot" + ? { files: parent ? ["Main.java"] : ["Visible.java"] } + : { + matches: [ + { + kind: "content", + path: parent ? "Main.java" : "Visible.java", + line: 1, + preview: "needle", + }, + ], + }; + return { id: request.id, ok: true as const, data: data as T }; + }, + ); + try { + const inventory = await fffListFiles(roots); + expect(inventory.map((file) => file.path.replace(/\\/g, "/"))).toEqual([ + "C:/main/Main.java", + "C:/main/nested/Visible.java", + ]); + expect( + requests.every( + (request) => JSON.stringify(request.payload.workspaceRoots) === JSON.stringify(roots), + ), + ).toBe(true); + requests.length = 0; + const result = await searchFilesContent({ + root_paths: roots, + scope_paths: ["C:/main"], + query: "needle", + }); + expect(result.results).toHaveLength(2); + expect(requests.map((request) => request.payload.scopePaths)).toEqual([["."], ["."]]); + expect( + requests.every( + (request) => JSON.stringify(request.payload.workspaceRoots) === JSON.stringify(roots), + ), + ).toBe(true); + requests.length = 0; + await searchFilesContent({ + root_paths: roots, + scope_paths: ["C:/main/nested/src"], + query: "needle", + }); + expect(requests.map((request) => request.payload.scopePaths)).toEqual([ + ["nested/src"], + ["src"], + ]); + } finally { + execute.mockRestore(); + configure.mockRestore(); + } +}); diff --git a/windows/tauri/src/features/file-search/lib/file-search-api.ts b/windows/tauri/src/features/file-search/lib/file-search-api.ts index f5f6b734ea..13449d71a8 100644 --- a/windows/tauri/src/features/file-search/lib/file-search-api.ts +++ b/windows/tauri/src/features/file-search/lib/file-search-api.ts @@ -96,7 +96,9 @@ export async function searchFilesContent( .filter( (root) => !request.scope_paths?.length || - request.scope_paths.some((scope) => pathStartsWithRoot(scope, root)), + request.scope_paths.some( + (scope) => pathStartsWithRoot(scope, root) || pathStartsWithRoot(root, scope), + ), ) .map(async (root) => { await configureWorkspaceIndexing(root); @@ -105,6 +107,7 @@ export async function searchFilesContent( command: "workspace.search", payload: { root, + workspaceRoots: request.root_paths, query: request.query, caseSensitive: request.case_sensitive ?? false, wholeWords: request.whole_word ?? false, @@ -112,8 +115,12 @@ export async function searchFilesContent( maxResults, maxFileResults: 0, scopePaths: request.scope_paths - ?.filter((scope) => pathStartsWithRoot(scope, root)) - .map((scope) => getRelativePath(scope, root).replace(/\\/g, "/") || "."), + ?.filter( + (scope) => pathStartsWithRoot(scope, root) || pathStartsWithRoot(root, scope), + ) + .map((scope) => + pathStartsWithRoot(root, scope) ? "." : getRelativePath(scope, root), + ), fileMask: "", }, }); @@ -164,11 +171,11 @@ export async function searchFilesContent( } export async function fffEnsureWorkspaces(rootPaths: readonly string[]): Promise { - await Promise.all(rootPaths.map((root) => listWorkspaceFiles(root))); + await Promise.all(rootPaths.map((root) => listWorkspaceFiles(root, rootPaths))); } export async function fffScanStatus(rootPaths: readonly string[]): Promise { - const files = await Promise.all(rootPaths.map((root) => listWorkspaceFiles(root))); + const files = await Promise.all(rootPaths.map((root) => listWorkspaceFiles(root, rootPaths))); const count = files.reduce((total, entries) => total + entries.length, 0); return { is_scanning: false, @@ -194,7 +201,7 @@ export async function fffSearchFiles( export async function fffListFiles(rootPaths: readonly string[]): Promise { const workspaces = await Promise.all( - rootPaths.map(async (root) => ({ root, files: await listWorkspaceFiles(root) })), + rootPaths.map(async (root) => ({ root, files: await listWorkspaceFiles(root, rootPaths) })), ); return workspaces.flatMap(({ root, files }) => files.map((relativePath) => ({ @@ -209,7 +216,10 @@ export async function fffTrackAccess(_path: string): Promise { // Access ranking is frontend-owned until the shared contract exposes it. } -async function listWorkspaceFiles(root: string): Promise { +async function listWorkspaceFiles( + root: string, + workspaceRoots: readonly string[], +): Promise { await configureWorkspaceIndexing(root); const response = await executeCore<{ root: CoreWorkspaceNode; @@ -218,7 +228,7 @@ async function listWorkspaceFiles(root: string): Promise { }>({ id: crypto.randomUUID(), command: "workspace.snapshot", - payload: { root, includeTree: false }, + payload: { root, workspaceRoots, includeTree: false }, }); const data = coreData(response); if (data.incompleteDirectories?.length) diff --git a/windows/tauri/src/features/settings/components/git-indexing-settings.test.tsx b/windows/tauri/src/features/settings/components/git-indexing-settings.test.tsx index 9d8891e0f4..30285e0ea3 100644 --- a/windows/tauri/src/features/settings/components/git-indexing-settings.test.tsx +++ b/windows/tauri/src/features/settings/components/git-indexing-settings.test.tsx @@ -10,6 +10,7 @@ import * as indexing from "@/features/file-explorer/stores/workspace-indexing"; import { createTranslator } from "@/i18n/locale"; import { LocaleProvider } from "@/i18n/locale-provider"; import { installHappyDom } from "@/test-utils/happy-dom"; +import { WorkspaceIndexingSettings } from "./workspace-indexing-settings"; import { GitSettings } from "./tabs/git-settings"; test.each(["en-US", "zh-CN"] as const)( @@ -22,25 +23,43 @@ test.each(["en-US", "zh-CN"] as const)( const first = "C:/first-project"; const second = "C:/second-project"; const nested = `${first}/nested-repo`; - const settings = { gitIgnoreEnabled: false, includedDirectories: ["vendor/examples"], previousRoles: { vendor: "sources" } }; - const configure = spyOn(indexing, "configureWorkspaceIndexing").mockImplementation(async () => ({ - revision: 1, excludedDirectories: {}, gitIgnoreFailed: false, - })); + const settings = { + gitIgnoreEnabled: false, + includedDirectories: ["vendor/examples"], + previousRoles: { vendor: "sources" }, + }; + const configure = spyOn(indexing, "configureWorkspaceIndexing").mockImplementation( + async () => ({ + revision: 1, + excludedDirectories: {}, + gitIgnoreFailed: false, + }), + ); const host = document.createElement("div"); const root = createRoot(host); const t = createTranslator(language); - const checkbox = () => Array.from(host.querySelectorAll('[role="checkbox"]')) - .find((element) => element.getAttribute("aria-label") === t("indexing.autoGit") - || document.getElementById(element.getAttribute("aria-labelledby") ?? "")?.textContent === t("indexing.autoGit"))!; - const render = () => root.render( - - - , - ); + const checkbox = () => + Array.from(host.querySelectorAll('[role="checkbox"]')).find( + (element) => + element.getAttribute("aria-label") === t("indexing.autoGit") || + document.getElementById(element.getAttribute("aria-labelledby") ?? "")?.textContent === + t("indexing.autoGit"), + )!; + const render = () => + root.render( + + + + + , + ); try { environment.IS_REACT_ACT_ENVIRONMENT = true; document.body.append(host); - window.localStorage.setItem(indexing.indexingSettingsStorageKey(first), JSON.stringify(settings)); + window.localStorage.setItem( + indexing.indexingSettingsStorageKey(first), + JSON.stringify(settings), + ); const fileSystem = useFileSystemStore.getStore(workspaceId); const repositories = useRepositoryStore.getStore(workspaceId); fileSystem.setState({ rootFolderPath: first }); @@ -50,7 +69,9 @@ test.each(["en-US", "zh-CN"] as const)( expect(checkbox()).toBeDefined(); expect(checkbox().getAttribute("aria-checked")).toBe("false"); - expect(window.localStorage.getItem(indexing.indexingSettingsStorageKey(first))).toBe(JSON.stringify(settings)); + expect(window.localStorage.getItem(indexing.indexingSettingsStorageKey(first))).toBe( + JSON.stringify(settings), + ); expect(configure).toHaveBeenCalledWith(first); expect(configure.mock.calls.every(([path]) => path !== nested)).toBe(true); await act(async () => checkbox().click()); @@ -72,26 +93,54 @@ test.each(["en-US", "zh-CN"] as const)( expect(configure.mock.calls.length).toBe(callsWithoutProject); await act(async () => fileSystem.setState({ rootFolderPath: first })); expect(checkbox().getAttribute("aria-checked")).toBe("true"); - expect(indexing.readIndexingSettings(first).includedDirectories).toEqual(settings.includedDirectories); + expect(indexing.readIndexingSettings(first).includedDirectories).toEqual( + settings.includedDirectories, + ); const failedWrite = spyOn(indexing, "writeIndexingSettings").mockImplementationOnce(() => { throw new Error("fixture storage is full"); }); try { await act(async () => checkbox().click()); - expect(host.querySelector('[role="alert"]')?.textContent).toContain("fixture storage is full"); - expect(indexing.readIndexingSettings(first)).toEqual({ ...settings, gitIgnoreEnabled: true }); + expect(host.querySelector('[role="alert"]')?.textContent).toBe(t("indexing.writeFailed")); + expect(indexing.readIndexingSettings(first)).toEqual({ + ...settings, + gitIgnoreEnabled: true, + }); expect(checkbox().getAttribute("aria-checked")).toBe("true"); - } finally { failedWrite.mockRestore(); } + } finally { + failedWrite.mockRestore(); + } - window.localStorage.setItem(indexing.indexingSettingsStorageKey(first), "not-json"); - await act(async () => window.dispatchEvent(new window.CustomEvent(indexing.indexingEvent, { detail: first }))); - expect(checkbox().getAttribute("aria-disabled")).toBe("true"); - expect(host.querySelector('[role="alert"]')).not.toBeNull(); - expect(window.localStorage.getItem(indexing.indexingSettingsStorageKey(first))).toBe("not-json"); + for (const remote of ["remote://fixture/project", "wsl://fixture/project"]) { + const raw = JSON.stringify({ ...settings, gitIgnoreEnabled: false }); + window.localStorage.setItem(indexing.indexingSettingsStorageKey(remote), raw); + const calls = configure.mock.calls.length; + await act(async () => fileSystem.setState({ rootFolderPath: remote })); + expect(checkbox().getAttribute("aria-disabled")).toBe("true"); + expect(checkbox().getAttribute("aria-checked")).toBe("false"); + expect(host.textContent).toContain(t("indexing.remoteUnsupported")); + await act(async () => checkbox().click()); + expect(configure.mock.calls.length).toBe(calls); + expect(window.localStorage.getItem(indexing.indexingSettingsStorageKey(remote))).toBe(raw); + } + await act(async () => fileSystem.setState({ rootFolderPath: first })); + expect(checkbox().getAttribute("aria-disabled")).not.toBe("true"); + for (const raw of ["not-json", "{}", "null"]) { + window.localStorage.setItem(indexing.indexingSettingsStorageKey(first), raw); + await act(async () => + window.dispatchEvent(new window.CustomEvent(indexing.indexingEvent, { detail: first })), + ); + expect(checkbox().getAttribute("aria-disabled")).toBe("true"); + expect(host.querySelector('[role="alert"]')?.textContent).toBe( + t("indexing.invalidSettings"), + ); + expect(window.localStorage.getItem(indexing.indexingSettingsStorageKey(first))).toBe(raw); + } } finally { - try { await act(async () => root.unmount()); } - finally { + try { + await act(async () => root.unmount()); + } finally { host.remove(); configure.mockRestore(); workspaceRuntimeRegistry.removeWorkspace(workspaceId); @@ -102,3 +151,43 @@ test.each(["en-US", "zh-CN"] as const)( } }, ); + +test("a late local configuration cannot replace the remote capability state", async () => { + const restoreDom = installHappyDom(); + const environment = globalThis as typeof globalThis & { IS_REACT_ACT_ENVIRONMENT?: boolean }; + const previousAct = environment.IS_REACT_ACT_ENVIRONMENT; + let finish!: (status: indexing.IndexingStatus) => void; + const pending = new Promise((resolve) => { + finish = resolve; + }); + const configure = spyOn(indexing, "configureWorkspaceIndexing").mockImplementation(() => pending); + const host = document.createElement("div"); + const root = createRoot(host); + const render = (path: string) => + root.render( + + + , + ); + try { + environment.IS_REACT_ACT_ENVIRONMENT = true; + document.body.append(host); + await act(async () => render("C:/fixture")); + await act(async () => render("remote://fixture/project")); + await act(async () => finish({ revision: 1, excludedDirectories: {}, gitIgnoreFailed: true })); + expect(configure).toHaveBeenCalledTimes(1); + expect(host.textContent).toContain(createTranslator("zh-CN")("indexing.remoteUnsupported")); + expect(host.querySelector('[role="alert"]')).toBeNull(); + } finally { + finish({ revision: 1, excludedDirectories: {}, gitIgnoreFailed: false }); + try { + await act(async () => root.unmount()); + } finally { + configure.mockRestore(); + host.remove(); + if (previousAct === undefined) delete environment.IS_REACT_ACT_ENVIRONMENT; + else environment.IS_REACT_ACT_ENVIRONMENT = previousAct; + restoreDom(); + } + } +}); diff --git a/windows/tauri/src/features/settings/components/workspace-indexing-settings.tsx b/windows/tauri/src/features/settings/components/workspace-indexing-settings.tsx index 47aabbf8f7..f18e974960 100644 --- a/windows/tauri/src/features/settings/components/workspace-indexing-settings.tsx +++ b/windows/tauri/src/features/settings/components/workspace-indexing-settings.tsx @@ -1,4 +1,5 @@ import { useEffect, useState } from "react"; +import { canUseNativeFileSearch } from "@/features/file-search/utils/file-search-paths"; import { useTranslation } from "@/i18n/locale-provider"; import { Checkbox } from "@/ui/checkbox"; import { InfoIcon } from "@/ui/icons"; @@ -6,6 +7,7 @@ import Tooltip from "@/ui/tooltip"; import { SettingRow } from "./settings-section"; import { configureWorkspaceIndexing, + IndexingSettingsError, indexingEvent, readIndexingSettings, writeIndexingSettings, @@ -13,29 +15,39 @@ import { export function WorkspaceIndexingSettings({ root }: { root: string | undefined }) { const { t } = useTranslation(); + const supported = canUseNativeFileSearch(root); + const errorKey = (cause: unknown, fallback: string) => + cause instanceof IndexingSettingsError ? `indexing.${cause.code}` : fallback; const [enabled, setEnabled] = useState(true); const [error, setError] = useState(""); const [failed, setFailed] = useState(false); const [loaded, setLoaded] = useState(false); useEffect(() => { + setLoaded(false); + setFailed(false); + setError(""); if (!root) return; let disposed = false; + let generation = 0; const read = () => { + const current = ++generation; try { setEnabled(readIndexingSettings(root).gitIgnoreEnabled); setLoaded(true); setError(""); } catch (cause) { setLoaded(false); - setError(String(cause)); + setError(errorKey(cause, "indexing.readFailed")); return; } + if (!supported) return; void configureWorkspaceIndexing(root) .then((status) => { - if (!disposed) setFailed(status.gitIgnoreFailed); + if (!disposed && current === generation) setFailed(status.gitIgnoreFailed); }) .catch((cause) => { - if (!disposed) setError(String(cause)); + if (!disposed && current === generation) + setError(errorKey(cause, "indexing.configureFailed")); }); }; read(); @@ -44,7 +56,7 @@ export function WorkspaceIndexingSettings({ root }: { root: string | undefined } disposed = true; window.removeEventListener(indexingEvent, read); }; - }, [root]); + }, [root, supported]); return ( <> { - if (!root || !loaded) return; + if (!root || !supported || !loaded) return; try { const settings = readIndexingSettings(root); writeIndexingSettings(root, { ...settings, gitIgnoreEnabled: checked }); setEnabled(checked); setError(""); } catch (cause) { - setError(String(cause)); + setError(errorKey(cause, "indexing.writeFailed")); } }} /> - {failed &&

{t("indexing.gitFailed")}

} - {error &&

{error}

} + {root && !supported &&

{t("indexing.remoteUnsupported")}

} + {supported && failed &&

{t("indexing.gitFailed")}

} + {error &&

{t(error)}

} ); } diff --git a/windows/tauri/src/features/workspace/types/workspace-root.ts b/windows/tauri/src/features/workspace/types/workspace-root.ts new file mode 100644 index 0000000000..f228a6b2c5 --- /dev/null +++ b/windows/tauri/src/features/workspace/types/workspace-root.ts @@ -0,0 +1,8 @@ +import { getPathIdentity, pathStartsWithRoot } from "@/utils/path-helpers"; + +/** The closest explicitly opened root owns a path, including nested added roots. */ +export function closestWorkspaceRoot(path: string, roots: readonly string[]): string | undefined { + return roots + .filter((root) => pathStartsWithRoot(path, root)) + .sort((a, b) => getPathIdentity(b).length - getPathIdentity(a).length)[0]; +} diff --git a/windows/tauri/src/i18n/shared.generated.ts b/windows/tauri/src/i18n/shared.generated.ts index 7b402ad0e3..bc20fb1734 100644 --- a/windows/tauri/src/i18n/shared.generated.ts +++ b/windows/tauri/src/i18n/shared.generated.ts @@ -2990,15 +2990,20 @@ export const sharedCatalogs = { "image.widthPx": "Width (px)", "indexing.autoGit": "Automatically exclude Git-ignored directories", "indexing.cancelExclusion": "Cancel Exclusion", + "indexing.configureFailed": "Could not apply project indexing exclusions. Try reopening the project.", "indexing.description": "Applies only to the current project, regardless of the Git configuration scope. Excluded directories remain browsable. Cancel Exclusion creates a project exception without changing Git rules.\n\nNative exclusion settings are merged for Java imports, Rust and Go. Java resources already imported may still be scanned. Python project configuration can override server exclusions; other providers remain active without a verified scan-exclusion guarantee.", "indexing.gitFailed": "Git ignore exclusions could not be fully resolved. Manual exclusions remain active.", "indexing.gitReason": "Excluded from indexing by Git ignore rules", "indexing.incomplete": "Some directories could not be scanned. Automatic project analysis was not refreshed.", "indexing.inheritedReason": "Excluded from indexing by a parent directory", + "indexing.invalidSettings": "Project indexing settings are invalid. The saved data has been preserved.", "indexing.languageDescription": "Native exclusion settings are merged for Java imports, Rust and Go. Java resources already imported may still be scanned. Python project configuration can override server exclusions; other providers remain active without a verified scan-exclusion guarantee.", "indexing.manualReason": "Manually excluded from indexing", "indexing.providerDependent": "Provider-dependent", + "indexing.readFailed": "Could not read project indexing settings. Try reopening the project.", + "indexing.remoteUnsupported": "Directory indexing exclusions are not supported for remote projects.", "indexing.title": "Project Indexing", + "indexing.writeFailed": "Could not save project indexing settings. Your previous settings remain unchanged.", "inlineEdit.addApiKey": "Add API key", "inlineEdit.apiKeyRequired": "{provider} API key is required for inline edit.", "inlineEdit.applied": "Inline edit applied.", @@ -7950,15 +7955,20 @@ export const sharedCatalogs = { "image.widthPx": "宽度(px)", "indexing.autoGit": "根据 Git 忽略规则自动排除目录", "indexing.cancelExclusion": "取消排除", + "indexing.configureFailed": "无法应用项目索引排除策略,请重新打开项目后重试。", "indexing.description": "仅作用于当前项目,不受 Git 配置范围影响。已排除目录仍可浏览;取消排除会保存项目例外,不修改 Git 规则。\n\n已合并 Java 导入、Rust 和 Go 的原生排除配置。Java 已导入资源仍可能被扫描;Python 项目配置可覆盖服务端排除。其他服务保持运行,尚未保证其后台扫描排除效果。", "indexing.gitFailed": "无法完整解析 Git 忽略规则,手动排除仍然生效。", "indexing.gitReason": "根据 Git 忽略规则排除索引", "indexing.incomplete": "部分目录无法扫描,未刷新项目自动分析。", "indexing.inheritedReason": "继承父目录的索引排除", + "indexing.invalidSettings": "项目索引设置格式无效,原始设置已保留。", "indexing.languageDescription": "已合并 Java 导入、Rust 和 Go 的原生排除配置。Java 已导入资源仍可能被扫描;Python 项目配置可覆盖服务端排除。其他服务保持运行,尚未保证其后台扫描排除效果。", "indexing.manualReason": "手动排除索引", "indexing.providerDependent": "取决于语言服务", + "indexing.readFailed": "无法读取项目索引设置,请重新打开项目后重试。", + "indexing.remoteUnsupported": "远程项目暂不支持目录索引排除。", "indexing.title": "项目索引", + "indexing.writeFailed": "无法保存项目索引设置,原有设置未改变。", "inlineEdit.addApiKey": "添加 API 密钥", "inlineEdit.apiKeyRequired": "行内编辑需要 {provider} API 密钥。", "inlineEdit.applied": "行内编辑已应用。", From 4e95fe0aa0f9581705e255b9191edfd907d17e00 Mon Sep 17 00:00:00 2001 From: xueyeshang1 Date: Sat, 31 Oct 2026 10:27:57 +0800 Subject: [PATCH 03/27] =?UTF-8?q?fix(workspace):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=B4=A2=E5=BC=95=E7=A7=9F=E7=BA=A6=E7=94=9F=E5=91=BD=E5=91=A8?= =?UTF-8?q?=E6=9C=9F=E4=B8=8E=E8=B7=A8=E7=AA=97=E5=8F=A3=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...026-10-28-workspace-indexing-exclusions.md | 50 ++- macos/Resources/en.lproj/Localizable.strings | 12 + .../zh-Hans.lproj/Localizable.strings | 12 + .../WorkspaceSessionCoordinator.swift | 31 +- .../Lithe/Core/Rust/RustCoreBridge.swift | 10 +- .../Core/Rust/RustWorkspaceOperations.swift | 18 +- .../Lithe/Models/AppModel/AppModel.swift | 11 +- .../Remote/RemoteWorkspaceRouting.swift | 8 +- .../WorkspaceDirectoryMarkStore.swift | 6 +- .../App/WorkspaceIndexingSettingsView.swift | 2 +- .../Views/Workspace/ProjectSidebarView.swift | 8 +- .../Workspace/WorkspaceFeatureContracts.swift | 12 +- .../Workspace/WorkspaceIndexingPolicy.swift | 5 + .../Application/WorkspaceFeatureModel.swift | 169 +++++-- .../GitStatusObservationTests.swift | 5 +- .../LazyProjectTreeInventoryTests.swift | 101 ++++- .../WorkspaceDirectoryMarkStoreTests.swift | 12 + .../WorkspaceSessionCoordinatorTests.swift | 131 ++++++ rust/lithe-core/src/lsp/interface/engine.rs | 229 +++++++++- rust/lithe-core/src/project/indexing.rs | 411 ++++++++++++++++-- scripts/ci/common/classify-ci-changes.sh | 2 +- scripts/ci/common/test-classify-ci-changes.sh | 7 + shared/contracts/rust-core-api.md | 16 +- .../workspace/indexing-policy-v1.json | 20 +- shared/i18n/locales/en-US.json | 4 +- shared/i18n/locales/zh-CN.json | 4 +- shared/i18n/messages.json | 52 ++- .../workspace-indexing-exclusions.json | 10 +- windows/tauri/src-tauri/src/core.rs | 194 ++++++++- windows/tauri/src-tauri/src/main.rs | 1 + .../use-lsp-integration-indexing.test.tsx | 2 +- .../editor/hooks/use-lsp-integration.ts | 6 +- .../editor/lsp/lsp-client-indexing.test.ts | 2 +- .../src/features/editor/lsp/lsp-client.ts | 2 +- .../components/file-explorer-tree.tsx | 76 ++-- .../hooks/use-file-explorer-context-menu.tsx | 15 +- .../stores/directory-marks.test.ts | 23 +- .../file-explorer/stores/directory-marks.ts | 20 +- .../stores/workspace-indexing.test.ts | 150 ++++++- .../stores/workspace-indexing.ts | 231 +++++++--- .../file-search/hooks/use-fff-search.test.tsx | 32 ++ .../file-search/hooks/use-fff-search.ts | 10 +- .../file-search/lib/file-search-api.ts | 21 +- .../services/workspace-file-search.ts | 3 +- .../services/file-watcher-listener.ts | 6 +- .../file-system/stores/file-system.store.ts | 21 +- .../global-search/hooks/use-content-search.ts | 13 +- .../quick-open/hooks/use-file-loader.ts | 24 +- .../components/git-indexing-settings.test.tsx | 10 +- .../workspace-indexing-settings.tsx | 12 +- .../runtime/workspace-runtime-registry.ts | 1 + .../workspace/services/workspace-lifecycle.ts | 1 + .../stores/create-workspace-scoped-store.ts | 7 + .../types/workspace-runtime.types.ts | 1 + windows/tauri/src/i18n/shared.generated.ts | 4 + 55 files changed, 1896 insertions(+), 350 deletions(-) diff --git a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md index 00adf606b4..20a118fa1b 100644 --- a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md +++ b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md @@ -16,8 +16,11 @@ ## 决策 索引策略使用独立版本,版本变化使旧缓存失效,并令在途扫描拒绝发布。 -窗口的释放句柄与扫描版本分开:Git watcher 更新只更换扫描版本,关闭窗口仍能 -释放原句柄;显式替换策略才生成新句柄,迟到的旧窗口不能关闭新窗口的策略。 +每个工作区运行实例持有独立的租约,即同一根仍在使用的凭据;扫描版本与 +释放句柄分开。Git watcher 只更换扫描版本,同根的其他工作区关闭时不能使 +当前工作区退役。显式配置替换本 owner 的句柄,成功返回前保留旧句柄,失败 +恢复旧租约;已经交给并发成功调用的句柄不能被另一次失败回收。策略校验和 +句柄发布在同一个临界区完成。最后一个 owner 释放后才清理根的库存和缓存。 macOS 扫描期间修改开关或标记时,发布库存前比较当前策略并补扫,直到结果与 当前项目偏好一致,不丢弃刷新期间的新设置。跨项目及同根重开时,配置调用按 完成顺序串行;旧调用迟到成功须先释放其句柄,失败须丢弃,不能覆盖新项目的 @@ -37,7 +40,9 @@ Git 忽略语义交给本机 Git 的 `check-ignore`;查询同层目录时批 已排除目录的标记子菜单只保留“取消排除”,避免在仍受排除策略约束时直接改成 源码、资源等角色。手动排除与 Git 自动排除使用同一菜单规则;取消后恢复普通 -目录可用的标记选项。继承手动排除的子目录仍须到对应父目录取消排除。 +目录可用的标记选项。普通文件夹只改变角色,不创建包含例外;只有明确的取消 +排除动作才恢复原角色并创建例外。不能猜测旧例外的产生原因,因此不自动删除 +历史例外。继承手动排除的子目录仍须到对应父目录取消排除。 排除目录的文件仍可打开编辑。语言服务工作副本不自动打开这些文件; 已有工作副本在策略变化后关闭并清除其诊断。Java provider 合并导入排除配置, @@ -46,13 +51,21 @@ Git 忽略语义交给本机 Git 的 `check-ignore`;查询同层目录时批 Lithe 排除不能清除插件规则,也不能把上一次合并结果作为下一次的原始配置。 Windows 附加目录按目标路径选择最近的工作区根,标记、包含例外和角色显示都 -读取该根的项目偏好;所有已配置根在树释放时退役。改名、删除按所属根迁移偏好,跨根移动则把角色、 +读取该根的项目偏好。根集合和租约由工作区运行时拥有;切换 Project、Git、 +Search 或文件树卸载只清理呈现,不释放策略。移除根、关闭或替换工作区才 +回收租约,原生窗口销毁同时回收已安装和迟到安装的租约。树中展开的目录只 +查询状态,不成为新的工作区根。改名、删除按所属根迁移偏好,跨根移动则把角色、 排除和包含例外转移到目标根,同时保留两根各自的 Git 开关。不要用主根的设置 处理附加根。 最近根归属同样用于 Windows 编辑器的语言服务门禁:先验证文件属于哪个已打开 根,再计算相对目录;工作区之外的文件不提交项目排除查询。启动与取消仍保留 原工作区的生命周期身份,不能为了查附加根策略就替换主根 scope。增删根集合 也会清理并重新评估已打开的工作副本,不能只在下次打开文件时才使用新归属。 +跨窗口偏好更新统一处理 storage 和本窗事件,按根过滤并合并后重读当前值。 +后台扫描必须贯穿工作区身份;缓存 pane 优先使用其 WorkspaceStoreScopeContext, +不能在异步边界重新取活动工作区,否则切换项目会把旧根查询交给新 owner。 +同根的另一个 owner 刷新扫描版本时,配置请求可重读偏好后重试两次;关闭或 +移除根仍立即终止,不能把暂时的代际替换直接变成搜索错误,也不能无限重试。 多根库存、搜索与替换请求显式携带当前工作区的根集合。父根到达另行登记的嵌套 根时停止索引遍历,由嵌套根按自己的偏好生成候选。例如打开 `main` 与 @@ -68,6 +81,19 @@ Windows 附加目录按目标路径选择最近的工作区根,标记、包含 排除动作或显示已排除图标;已有偏好保留,待能力接入后再解释。 Windows 设置页同样先检查能力,不向本机 Core 提交远程根。设置解析及存储错误 返回稳定分类,界面通过共享中英词条呈现;损坏数据保留原值,不以默认值覆盖。 +macOS 同样在适配器返回类型化失败,状态保留失败分类,呈现时再通过共享 i18n +读取当前应用语言。不要缓存已经翻译的错误字符串,否则语言即时切换后会保留旧文案。首次配置失败 +保留项目身份并显示重试,重试重新读取偏好;读取失败不允许写入默认值。 +刷新失败保留已加载树。释放 Workspace 模块须使整个重建代际失效,不能只 +拒绝已经开始的配置,否则等待库存的任务仍可能安装新租约。 +工作区切换须先等待旧模块图关闭,再重新绑定 Workspace 资源所有者,最后 +开始新投影代际。旧模块和新项目共用长期存在的界面投影;只在配置完成时 +检查代际不能防止旧模块稍后释放刚开始的新项目。同根连续打开也要按独立 +操作身份拒绝迟到准备结果,不能只比较根路径。 + +Git 元数据事件使用索引专用重评估,不递归请求第二次 Git 刷新。只有有效 +库存变化或先前不完整库存恢复完整时,才再次发布项目快照;普通 commit、 +stage 等无库存变化的事件不重载项目服务。 ## 考虑过的备选方案 @@ -95,7 +121,12 @@ Python/Basedpyright 的项目配置可以覆盖语言服务器配置,因此不 自身的字面路径判断。语言服务诊断的迟到通知也经过同一策略,以免关闭工作副本后重新回填。 已有语言服务运行时,刷新策略必须先通过现有库存扫描器和原生 Git 补齐目录 决策,再发送配置;不能把刷新后的空缓存当作“没有 Git 排除”推送给服务端。 -同一扫描版本只补齐一次,仍剪枝排除目录,不读取源文件文本。 +同一扫描版本只补齐一次,仍剪枝排除目录,不读取源文件文本。冷启动也必须 +准备排除,并保留本次扫描的同一个代际句柄。会话先登记再校验,初始化发送 +后再次校验;无策略变为有策略同样视为代际变化并取消过期启动,不能漏掉 +登记空窗期间的设置变更。 +最后一个租约释放后,保留的退役记录只用于取消迟到库存;没有活动 owner 的 +独立语言服务启动及工作副本不继承旧排除。新的活动策略仍会取消在途启动。 ## 验证 @@ -105,9 +136,12 @@ Python/Basedpyright 的项目配置可以覆盖语言服务器配置,因此不 Git 排除、父根遍历剪枝、缓存切换和保存/watcher 回填防护。Java 导入排除测试的 预期路径使用原生配置所需的 `/` 格式,避免 Windows 分隔符制造断言失败;这类 脚本会在首个失败停止,因此两个相关断言都须在 Windows 执行到并通过。 -本轮本机 Core 1371 项单元及 32 项集成测试、索引/LSP 22 项逐项计时与 macOS/Bun -前端 42 项回归通过,含失效根限定搜索及根增删时关闭/恢复工作副本。独立 Swift/C ABI -探针通过,整应用验证因缺 Metal Toolchain 中断;Windows 原生环境不可用,保留未验证状态。 +2026-10-31 本机 Core 1379 项单元及 32 项集成测试、1411 项逐项计时、Swift 67 项 +定向计时,以及 macOS/Bun 设置、租约与目录角色 37 项回归通过;完整 Rust 门禁含 +Swift/C ABI、链接符号与 Git 执行集成。真实 App 已补验普通目录不创建包含例外、 +取消排除恢复搜索、同窗口项目切换、外部 stage/commit 自动刷新、真实 JDT 的 +可见项目补全及中英文错误即时切换。该构建 1404 个普通文件及符号链接未变; +最新 preview 整合后的最终 Native 验收和固定工具链 CI 尚未完成。 真实语言服务扫描及 Windows 原生运行的验证状态以功能矩阵为准。 macOS 实际应用验证发现,组合根包裹的 `RemoteRoutingWorkspaceOperations` diff --git a/macos/Resources/en.lproj/Localizable.strings b/macos/Resources/en.lproj/Localizable.strings index 78748579e9..4c19412511 100644 --- a/macos/Resources/en.lproj/Localizable.strings +++ b/macos/Resources/en.lproj/Localizable.strings @@ -960,6 +960,7 @@ "Copy session ID" = "Copy session ID"; "Copy table" = "Copy table"; "Copy worktree path" = "Copy worktree path"; +"Could not apply project indexing exclusions. Try reopening the project." = "Could not apply project indexing exclusions. Try reopening the project."; "Could not check for updates" = "Could not check for updates"; "Could not check for updates." = "Could not check for updates."; "Could not compare the local adapter with the verified version." = "Could not compare the local adapter with the verified version."; @@ -991,6 +992,7 @@ "Could not prepare the run configuration: %@" = "Could not prepare the run configuration: %@"; "Could not read %@." = "Could not read %@."; "Could not read %@: %@" = "Could not read %@: %@"; +"Could not read project indexing settings. Try reopening the project." = "Could not read project indexing settings. Try reopening the project."; "Could not read the command line." = "Could not read the command line."; "Could not read the project folder. Check that it still exists and that Lithe has permission to access it." = "Could not read the project folder. Check that it still exists and that Lithe has permission to access it."; "Could not read the selected built-in background." = "Could not read the selected built-in background."; @@ -1002,6 +1004,7 @@ "Could not restore this project history entry" = "Could not restore this project history entry"; "Could not save %@: permission denied. Check the file and parent folder permissions. Your edits are still unsaved." = "Could not save %@: permission denied. Check the file and parent folder permissions. Your edits are still unsaved."; "Could not save access to the selected background image." = "Could not save access to the selected background image."; +"Could not save project indexing settings. Your previous settings remain unchanged." = "Could not save project indexing settings. Your previous settings remain unchanged."; "Could not save service selection" = "Could not save service selection"; "Could not save the connections: %@" = "Could not save the connections: %@"; "Could not start the Java test result listener: %@" = "Could not start the Java test result listener: %@"; @@ -1977,6 +1980,7 @@ "Lithe Shelves" = "Lithe Shelves"; "Lithe application default" = "Lithe application default"; "Lithe asks again after the plugin is disabled, updated, or Lithe restarts." = "Lithe asks again after the plugin is disabled, updated, or Lithe restarts."; +"Lithe cannot access the project folder. Check its permissions, then retry." = "Lithe cannot access the project folder. Check its permissions, then retry."; "Lithe cannot replace this app in its current folder. Move it to a writable Applications folder or install the stable release manually." = "Lithe cannot replace this app in its current folder. Move it to a writable Applications folder or install the stable release manually."; "Lithe can’t give pages access to the camera or microphone in this version." = "Lithe can’t give pages access to the camera or microphone in this version."; "Lithe checks GitHub Releases for published updates." = "Lithe checks GitHub Releases for published updates."; @@ -2806,6 +2810,7 @@ "Project identification complete" = "Project identification complete"; "Project identification did not produce a run configuration." = "Project identification did not produce a run configuration."; "Project identification failed" = "Project identification failed"; +"Project indexing settings are invalid. The saved data has been preserved." = "Project indexing settings are invalid. The saved data has been preserved."; "Project is still loading" = "Project is still loading"; "Project opened" = "Project opened"; "Project options" = "Project options"; @@ -3985,6 +3990,7 @@ "The program chosen in the “%@” setting of %@ is missing or not executable: %@" = "The program chosen in the “%@” setting of %@ is missing or not executable: %@"; "The project archive from %@ is too large." = "The project archive from %@ is too large."; "The project directory is unavailable." = "The project directory is unavailable."; +"The project folder is unavailable. Restore it, then retry." = "The project folder is unavailable. Restore it, then retry."; "The project folder on the host. Browse connects, installs the Lithe server on the host if needed, and lets you pick a folder." = "The project folder on the host. Browse connects, installs the Lithe server on the host if needed, and lets you pick a folder."; "The project folder on the host; empty uses the home directory. Browse connects, installs the Lithe server on the host if needed, and lets you pick a folder." = "The project folder on the host; empty uses the home directory. Browse connects, installs the Lithe server on the host if needed, and lets you pick a folder."; "The project model is not loaded." = "The project model is not loaded."; @@ -4665,16 +4671,22 @@ "https://github.com/owner/repository" = "https://github.com/owner/repository"; "indexing.autoGit" = "Automatically exclude Git-ignored directories"; "indexing.cancelExclusion" = "Cancel Exclusion"; +"indexing.configureFailed" = "Could not apply project indexing exclusions. Try reopening the project."; "indexing.description" = "Applies only to the current project, regardless of the Git configuration scope. Excluded directories remain browsable. Cancel Exclusion creates a project exception without changing Git rules.\n\nNative exclusion settings are merged for Java imports, Rust and Go. Java resources already imported may still be scanned. Python project configuration can override server exclusions; other providers remain active without a verified scan-exclusion guarantee."; "indexing.gitFailed" = "Git ignore exclusions could not be fully resolved. Manual exclusions remain active."; "indexing.gitReason" = "Excluded from indexing by Git ignore rules"; "indexing.incomplete" = "Some directories could not be scanned. Automatic project analysis was not refreshed."; "indexing.inheritedReason" = "Excluded from indexing by a parent directory"; +"indexing.invalidSettings" = "Project indexing settings are invalid. The saved data has been preserved."; "indexing.languageDescription" = "Native exclusion settings are merged for Java imports, Rust and Go. Java resources already imported may still be scanned. Python project configuration can override server exclusions; other providers remain active without a verified scan-exclusion guarantee."; "indexing.manualReason" = "Manually excluded from indexing"; +"indexing.permissionDenied" = "Lithe cannot access the project folder. Check its permissions, then retry."; "indexing.providerDependent" = "Provider-dependent"; +"indexing.readFailed" = "Could not read project indexing settings. Try reopening the project."; "indexing.remoteUnsupported" = "Directory indexing exclusions are not supported for remote projects."; "indexing.title" = "Project Indexing"; +"indexing.workspaceUnavailable" = "The project folder is unavailable. Restore it, then retry."; +"indexing.writeFailed" = "Could not save project indexing settings. Your previous settings remain unchanged."; "just now" = "just now"; "local commit(s)" = "local commit(s)"; "macOS could not prepare the update disk image. Download the release manually and try again." = "macOS could not prepare the update disk image. Download the release manually and try again."; diff --git a/macos/Resources/zh-Hans.lproj/Localizable.strings b/macos/Resources/zh-Hans.lproj/Localizable.strings index bfc557ddd8..f344563c01 100644 --- a/macos/Resources/zh-Hans.lproj/Localizable.strings +++ b/macos/Resources/zh-Hans.lproj/Localizable.strings @@ -960,6 +960,7 @@ "Copy session ID" = "复制会话 ID"; "Copy table" = "复制表格"; "Copy worktree path" = "复制工作树路径"; +"Could not apply project indexing exclusions. Try reopening the project." = "无法应用项目索引排除策略,请重新打开项目后重试。"; "Could not check for updates" = "无法检查更新"; "Could not check for updates." = "无法检查更新。"; "Could not compare the local adapter with the verified version." = "无法比较本地适配器与已核验版本。"; @@ -991,6 +992,7 @@ "Could not prepare the run configuration: %@" = "无法准备运行配置:%@"; "Could not read %@." = "无法读取 %@。"; "Could not read %@: %@" = "无法读取 %@:%@"; +"Could not read project indexing settings. Try reopening the project." = "无法读取项目索引设置,请重新打开项目后重试。"; "Could not read the command line." = "无法读取命令行。"; "Could not read the project folder. Check that it still exists and that Lithe has permission to access it." = "无法读取项目文件夹,请确认文件夹仍然存在并允许 Lithe 访问。"; "Could not read the selected built-in background." = "无法读取所选的内置背景。"; @@ -1002,6 +1004,7 @@ "Could not restore this project history entry" = "无法恢复此项目历史记录"; "Could not save %@: permission denied. Check the file and parent folder permissions. Your edits are still unsaved." = "无法保存 %@:权限不足。请检查文件及其父文件夹的权限,编辑内容尚未保存。"; "Could not save access to the selected background image." = "无法保存所选背景图片的访问权限。"; +"Could not save project indexing settings. Your previous settings remain unchanged." = "无法保存项目索引设置,原有设置未改变。"; "Could not save service selection" = "无法保存服务勾选状态"; "Could not save the connections: %@" = "无法保存连接:%@"; "Could not start the Java test result listener: %@" = "无法启动 Java 测试结果监听器:%@"; @@ -1977,6 +1980,7 @@ "Lithe Shelves" = "Lithe 搁置记录"; "Lithe application default" = "Lithe 应用默认值"; "Lithe asks again after the plugin is disabled, updated, or Lithe restarts." = "插件被停用、更新或 Lithe 重启后会再次询问。"; +"Lithe cannot access the project folder. Check its permissions, then retry." = "Lithe 无法访问项目目录。请检查权限后重试。"; "Lithe cannot replace this app in its current folder. Move it to a writable Applications folder or install the stable release manually." = "Lithe 无法替换当前目录中的应用。请将应用移到有写入权限的应用程序目录,或手动安装正式版。"; "Lithe can’t give pages access to the camera or microphone in this version." = "此版本的 Lithe 无法让页面使用摄像头或麦克风。"; "Lithe checks GitHub Releases for published updates." = "Lithe 会检查 GitHub Releases 中发布的更新。"; @@ -2806,6 +2810,7 @@ "Project identification complete" = "项目识别完成"; "Project identification did not produce a run configuration." = "项目识别没有生成运行配置。"; "Project identification failed" = "项目识别失败"; +"Project indexing settings are invalid. The saved data has been preserved." = "项目索引设置格式无效,原始设置已保留。"; "Project is still loading" = "项目仍在加载中"; "Project opened" = "项目已打开"; "Project options" = "项目选项"; @@ -3985,6 +3990,7 @@ "The program chosen in the “%@” setting of %@ is missing or not executable: %@" = "在 %2$@ 的“%1$@”设置中选择的程序不存在或不可执行:%3$@"; "The project archive from %@ is too large." = "来自 %@ 的项目压缩包过大。"; "The project directory is unavailable." = "项目目录不可用。"; +"The project folder is unavailable. Restore it, then retry." = "项目目录不可用。请恢复目录后重试。"; "The project folder on the host. Browse connects, installs the Lithe server on the host if needed, and lets you pick a folder." = "主机上的项目文件夹。“浏览”会连接主机,必要时在主机上安装 Lithe 远端服务,然后让你选择文件夹。"; "The project folder on the host; empty uses the home directory. Browse connects, installs the Lithe server on the host if needed, and lets you pick a folder." = "主机上的项目文件夹,留空时使用主目录。“浏览”会连接主机,必要时在主机上安装 Lithe 远端服务,然后让你选择文件夹。"; "The project model is not loaded." = "项目模型尚未加载。"; @@ -4665,16 +4671,22 @@ "https://github.com/owner/repository" = "https://github.com/owner/repository"; "indexing.autoGit" = "根据 Git 忽略规则自动排除目录"; "indexing.cancelExclusion" = "取消排除"; +"indexing.configureFailed" = "无法应用项目索引排除策略,请重新打开项目后重试。"; "indexing.description" = "仅作用于当前项目,不受 Git 配置范围影响。已排除目录仍可浏览;取消排除会保存项目例外,不修改 Git 规则。\n\n已合并 Java 导入、Rust 和 Go 的原生排除配置。Java 已导入资源仍可能被扫描;Python 项目配置可覆盖服务端排除。其他服务保持运行,尚未保证其后台扫描排除效果。"; "indexing.gitFailed" = "无法完整解析 Git 忽略规则,手动排除仍然生效。"; "indexing.gitReason" = "根据 Git 忽略规则排除索引"; "indexing.incomplete" = "部分目录无法扫描,未刷新项目自动分析。"; "indexing.inheritedReason" = "继承父目录的索引排除"; +"indexing.invalidSettings" = "项目索引设置格式无效,原始设置已保留。"; "indexing.languageDescription" = "已合并 Java 导入、Rust 和 Go 的原生排除配置。Java 已导入资源仍可能被扫描;Python 项目配置可覆盖服务端排除。其他服务保持运行,尚未保证其后台扫描排除效果。"; "indexing.manualReason" = "手动排除索引"; +"indexing.permissionDenied" = "Lithe 无法访问项目目录。请检查权限后重试。"; "indexing.providerDependent" = "取决于语言服务"; +"indexing.readFailed" = "无法读取项目索引设置,请重新打开项目后重试。"; "indexing.remoteUnsupported" = "远程项目暂不支持目录索引排除。"; "indexing.title" = "项目索引"; +"indexing.workspaceUnavailable" = "项目目录不可用。请恢复目录后重试。"; +"indexing.writeFailed" = "无法保存项目索引设置,原有设置未改变。"; "just now" = "刚刚"; "local commit(s)" = "个本地提交"; "macOS could not prepare the update disk image. Download the release manually and try again." = "macOS 无法准备更新磁盘映像,请手动下载版本后重试。"; diff --git a/macos/Sources/Lithe/Application/Features/WorkspaceSessionCoordinator.swift b/macos/Sources/Lithe/Application/Features/WorkspaceSessionCoordinator.swift index d5b4879dc6..344783db19 100644 --- a/macos/Sources/Lithe/Application/Features/WorkspaceSessionCoordinator.swift +++ b/macos/Sources/Lithe/Application/Features/WorkspaceSessionCoordinator.swift @@ -27,6 +27,7 @@ final class WorkspaceSessionCoordinator: ObservableObject { let runServicesCloseConfirmation: @MainActor () -> (@MainActor () async -> Bool)? let restoreDebugBreakpoints: @MainActor (URL) async -> Void let visibilityRules: @MainActor () -> FileVisibilityRules + var waitForWorkspaceOpenPreparation: @MainActor () async -> Void = {} } @Published private(set) var workspaceURL: URL? @@ -42,6 +43,7 @@ final class WorkspaceSessionCoordinator: ObservableObject { private var securityScopedWorkspaceURL: URL? private var lifecycleHandlers: LifecycleHandlers? private var workspaceRebuildTask: Task? + private var workspaceRebuildID = UUID() init( recentProjectsStore: RecentProjectsStore, @@ -75,18 +77,15 @@ final class WorkspaceSessionCoordinator: ObservableObject { lifecycleHandlers.prepareForWorkspaceOpen(normalizedURL) beginWorkspace(at: normalizedURL) - guard let workspaceFeature else { + guard workspaceFeature != nil else { assertionFailure("Workspace feature is required to open a workspace.") return } - workspaceFeature.beginWorkspace( - at: normalizedURL, - visibilityRules: lifecycleHandlers.visibilityRules() - ) recordRecentProject(normalizedURL) startWorkspaceRebuild( at: normalizedURL, - generation: workspaceFeature.workspaceGeneration, + operationID: workspaceRebuildID, + waitForPreparation: lifecycleHandlers.waitForWorkspaceOpenPreparation, restoreDebugBreakpoints: lifecycleHandlers.restoreDebugBreakpoints ) } @@ -131,6 +130,7 @@ final class WorkspaceSessionCoordinator: ObservableObject { /// Stops coordinator-owned asynchronous work and releases the native URL /// lease. Feature shutdown remains owned by the application's module graph. func stopSessionResources() { + workspaceRebuildID = UUID() workspaceRebuildTask?.cancel() workspaceRebuildTask = nil pendingCloseRequest = nil @@ -138,6 +138,7 @@ final class WorkspaceSessionCoordinator: ObservableObject { } func beginWorkspace(at url: URL) { + workspaceRebuildID = UUID() stopAccessingWorkspace() workspaceURL = url.standardizedFileURL standaloneFileURL = nil @@ -147,12 +148,14 @@ final class WorkspaceSessionCoordinator: ObservableObject { } func beginStandaloneFile(at url: URL) { + workspaceRebuildID = UUID() stopAccessingWorkspace() workspaceURL = nil standaloneFileURL = url.standardizedFileURL } func clearSession() { + workspaceRebuildID = UUID() workspaceRebuildTask?.cancel() workspaceRebuildTask = nil pendingCloseRequest = nil @@ -251,7 +254,8 @@ final class WorkspaceSessionCoordinator: ObservableObject { private func startWorkspaceRebuild( at workspaceURL: URL, - generation: Int, + operationID: UUID, + waitForPreparation: @escaping @MainActor () async -> Void, restoreDebugBreakpoints: @escaping @MainActor (URL) async -> Void ) { guard let workspaceFeature else { @@ -259,17 +263,24 @@ final class WorkspaceSessionCoordinator: ObservableObject { return } workspaceRebuildTask = Task { @MainActor [weak self, workspaceFeature] in + await waitForPreparation() + guard let self, !Task.isCancelled, self.workspaceRebuildID == operationID, + self.workspaceURL == workspaceURL.standardizedFileURL else { return } + // The old graph may stop this same UI projection. Begin the new + // lifetime only after that teardown and its resource rebinding finish. + let rules = self.lifecycleHandlers?.visibilityRules() ?? .default + workspaceFeature.beginWorkspace(at: workspaceURL, visibilityRules: rules) + let generation = workspaceFeature.workspaceGeneration await restoreDebugBreakpoints(workspaceURL) - guard let self, + guard !Task.isCancelled, self.workspaceRebuildID == operationID, self.isCurrentWorkspace(workspaceURL, generation: generation) else { return } - let rules = self.lifecycleHandlers?.visibilityRules() ?? .default _ = await workspaceFeature.rebuild( at: workspaceURL, rules: rules, isCurrent: { [weak self] in - self?.isCurrentWorkspace(workspaceURL, generation: generation) == true + self?.workspaceRebuildID == operationID && self?.isCurrentWorkspace(workspaceURL, generation: generation) == true } ) } diff --git a/macos/Sources/Lithe/Core/Rust/RustCoreBridge.swift b/macos/Sources/Lithe/Core/Rust/RustCoreBridge.swift index 19f22584ec..f8cbaedff7 100644 --- a/macos/Sources/Lithe/Core/Rust/RustCoreBridge.swift +++ b/macos/Sources/Lithe/Core/Rust/RustCoreBridge.swift @@ -2440,15 +2440,16 @@ struct RustCoreBridge: Sendable, IncrementalLanguageServerRuntimeCore { return String(cString: lithe_bridge_version()) } - func releaseIndexing(at rootURL: URL, revision: UInt64) { - struct Payload: Encodable { let root: String; let revision: UInt64 } + func releaseIndexing(at rootURL: URL, revision: UInt64, ownerID: String? = nil) { + struct Payload: Encodable { let root: String; let revision: UInt64; let ownerId: String? } struct Response: Decodable { let released: Bool } - let _: Response? = execute(command: "workspace.releaseIndexing", payload: Payload(root: rootURL.path, revision: revision)) + let _: Response? = execute(command: "workspace.releaseIndexing", payload: Payload(root: rootURL.path, revision: revision, ownerId: ownerID)) } - func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool) throws -> WorkspaceIndexingStatus { + func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool, ownerID: String? = nil) throws -> WorkspaceIndexingStatus { struct Request: Encodable { let root: String + let ownerId: String? let manualExcludedDirectories: [String] let includedDirectories: [String] let gitIgnoreEnabled: Bool @@ -2456,6 +2457,7 @@ struct RustCoreBridge: Sendable, IncrementalLanguageServerRuntimeCore { } return try executeResult(command: "workspace.configureIndexing", payload: Request( root: rootURL.standardizedFileURL.path, + ownerId: ownerID, manualExcludedDirectories: policy.manualExcludedDirectories, includedDirectories: policy.includedDirectories, gitIgnoreEnabled: policy.gitIgnoreEnabled, refresh: refresh diff --git a/macos/Sources/Lithe/Core/Rust/RustWorkspaceOperations.swift b/macos/Sources/Lithe/Core/Rust/RustWorkspaceOperations.swift index 5d96cc1e80..4a8f7805b9 100644 --- a/macos/Sources/Lithe/Core/Rust/RustWorkspaceOperations.swift +++ b/macos/Sources/Lithe/Core/Rust/RustWorkspaceOperations.swift @@ -12,12 +12,22 @@ struct RustWorkspaceOperations: WorkspaceOperations, Sendable { directoryListings.invalidate() } - func releaseIndexing(at rootURL: URL, revision: UInt64) { - core.releaseIndexing(at: rootURL, revision: revision) + func releaseIndexing(at rootURL: URL, revision: UInt64, ownerID: String? = nil) { + core.releaseIndexing(at: rootURL, revision: revision, ownerID: ownerID) } - func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool) throws -> WorkspaceIndexingStatus { - try core.configureIndexing(at: rootURL, policy: policy, refresh: refresh) + func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool, ownerID: String? = nil) throws -> WorkspaceIndexingStatus { + do { + return try core.configureIndexing(at: rootURL, policy: policy, refresh: refresh, ownerID: ownerID) + } catch let error as RustCoreBridge.CoreCallError { + switch error.code { + case "cancelled": throw CancellationError() + case "invalid_request", "parse_failed": throw WorkspaceIndexingFailure.invalidSettings + case "workspace_not_found": throw WorkspaceIndexingFailure.workspaceUnavailable + case "permission_denied": throw WorkspaceIndexingFailure.permissionDenied + default: throw WorkspaceIndexingFailure.configureFailed + } + } catch { throw WorkspaceIndexingFailure.configureFailed } } func snapshot( diff --git a/macos/Sources/Lithe/Models/AppModel/AppModel.swift b/macos/Sources/Lithe/Models/AppModel/AppModel.swift index e27e7ce15b..4298097ed3 100644 --- a/macos/Sources/Lithe/Models/AppModel/AppModel.swift +++ b/macos/Sources/Lithe/Models/AppModel/AppModel.swift @@ -541,6 +541,13 @@ final class AppModel: ObservableObject, Identifiable, UnsavedDocumentHandling { }, visibilityRules: { [weak self] in self?.settings.fileVisibilityRules ?? .default + }, + waitForWorkspaceOpenPreparation: { [weak self] in + guard let self else { return } + await self.awaitModuleRuntimeShutdown() + guard let capability = try? await self.services.moduleRuntime.activateCapability(.workspaceFoundation), + let capability = capability as? LitheWorkspaceModule.WorkspaceFoundationCapability else { return } + capability.attach(workspaceProjection: self.workspaceFeature) } ) ) @@ -1124,8 +1131,8 @@ final class AppModel: ObservableObject, Identifiable, UnsavedDocumentHandling { await workspaceFeature.refreshCurrent() } - func markProjectDirectory(_ url: URL, as mark: WorkspaceDirectoryMark) async { - await workspaceFeature.markDirectory(url, as: mark) + func markProjectDirectory(_ url: URL, as mark: WorkspaceDirectoryMark, cancelExclusion: Bool = false) async { + await workspaceFeature.markDirectory(url, as: mark, cancelExclusion: cancelExclusion) } func requestCreateFile(in directory: URL) { diff --git a/macos/Sources/Lithe/Services/Remote/RemoteWorkspaceRouting.swift b/macos/Sources/Lithe/Services/Remote/RemoteWorkspaceRouting.swift index b06c906fd1..5b60034231 100644 --- a/macos/Sources/Lithe/Services/Remote/RemoteWorkspaceRouting.swift +++ b/macos/Sources/Lithe/Services/Remote/RemoteWorkspaceRouting.swift @@ -161,7 +161,7 @@ struct RemoteRoutingWorkspaceOperations: WorkspaceOperations { func invalidateDirectoryListings() { local.invalidateDirectoryListings() } - func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool) throws -> WorkspaceIndexingStatus { + func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool, ownerID: String? = nil) throws -> WorkspaceIndexingStatus { guard registry.binding(forRoot: rootURL) == nil else { // Remote indexing is not supported by the current transport. Never // configure the local placeholder as if it were the remote project. @@ -169,12 +169,12 @@ struct RemoteRoutingWorkspaceOperations: WorkspaceOperations { status.supportsExclusions = false return status } - return try local.configureIndexing(at: rootURL, policy: policy, refresh: refresh) + return try local.configureIndexing(at: rootURL, policy: policy, refresh: refresh, ownerID: ownerID) } - func releaseIndexing(at rootURL: URL, revision: UInt64) { + func releaseIndexing(at rootURL: URL, revision: UInt64, ownerID: String? = nil) { guard registry.binding(forRoot: rootURL) == nil else { return } - local.releaseIndexing(at: rootURL, revision: revision) + local.releaseIndexing(at: rootURL, revision: revision, ownerID: ownerID) } func snapshot(at rootURL: URL, visibilityRules: FileVisibilityRules) -> WorkspaceSnapshot? { diff --git a/macos/Sources/Lithe/Services/Workspace/WorkspaceDirectoryMarkStore.swift b/macos/Sources/Lithe/Services/Workspace/WorkspaceDirectoryMarkStore.swift index a3d114799e..8e2a229e59 100644 --- a/macos/Sources/Lithe/Services/Workspace/WorkspaceDirectoryMarkStore.swift +++ b/macos/Sources/Lithe/Services/Workspace/WorkspaceDirectoryMarkStore.swift @@ -19,7 +19,8 @@ final class WorkspaceDirectoryMarkStore: WorkspaceDirectoryMarkStoring, @uncheck for workspaceURL: URL ) throws -> [String: WorkspaceDirectoryMark] { guard let data = store.data(forKey: key(for: workspaceURL)) else { return [:] } - return try JSONDecoder().decode(Payload.self, from: data).marks + do { return try JSONDecoder().decode(Payload.self, from: data).marks } + catch { throw WorkspaceIndexingFailure.invalidSettings } } func saveDirectoryMarks( @@ -34,7 +35,8 @@ final class WorkspaceDirectoryMarkStore: WorkspaceDirectoryMarkStoring, @uncheck func loadIndexingSettings(for workspaceURL: URL) throws -> WorkspaceIndexingSettings { guard let data = store.data(forKey: "lithe.workspace-indexing." + workspaceURL.standardizedFileURL.path) else { return WorkspaceIndexingSettings() } - return try JSONDecoder().decode(WorkspaceIndexingSettings.self, from: data) + do { return try JSONDecoder().decode(WorkspaceIndexingSettings.self, from: data) } + catch { throw WorkspaceIndexingFailure.invalidSettings } } func saveIndexingSettings(_ settings: WorkspaceIndexingSettings, for workspaceURL: URL) throws { diff --git a/macos/Sources/Lithe/Views/App/WorkspaceIndexingSettingsView.swift b/macos/Sources/Lithe/Views/App/WorkspaceIndexingSettingsView.swift index 84079588a5..45e349b2ce 100644 --- a/macos/Sources/Lithe/Views/App/WorkspaceIndexingSettingsView.swift +++ b/macos/Sources/Lithe/Views/App/WorkspaceIndexingSettingsView.swift @@ -14,7 +14,7 @@ struct WorkspaceIndexingSettingsView: View { .labelsHidden() .toggleStyle(.switch) .controlSize(.small) - .disabled(feature.rootNode == nil || !feature.indexingStatus.supportsExclusions) + .disabled(feature.rootNode == nil || !feature.indexingStatus.supportsExclusions || !feature.canEditIndexingSettings) } if !feature.indexingStatus.supportsExclusions { Text("Directory indexing exclusions are not supported for remote projects.") diff --git a/macos/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift b/macos/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift index e0f32d7c6d..156d7b45d7 100644 --- a/macos/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift +++ b/macos/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift @@ -76,7 +76,7 @@ struct ProjectSidebarView: View { .foregroundStyle(LitheTheme.warning) Text("Could not load project") .font(LitheTheme.uiFont(size: 12, weight: .semibold)) - Text(LocalizedStringKey(error)) + Text(error) .font(LitheTheme.smallFont) .foregroundStyle(LitheTheme.secondaryText) .multilineTextAlignment(.center) @@ -596,8 +596,8 @@ private final class ProjectTreeActions: @unchecked Sendable { nonisolated func refreshWorkspace() { Task { await self.model.refreshWorkspace() } } - nonisolated func markDirectory(_ url: URL, as mark: WorkspaceDirectoryMark) { - Task { await self.model.markProjectDirectory(url, as: mark) } + nonisolated func markDirectory(_ url: URL, as mark: WorkspaceDirectoryMark, cancelExclusion: Bool = false) { + Task { await self.model.markProjectDirectory(url, as: mark, cancelExclusion: cancelExclusion) } } nonisolated func showGitDirectoryDiff(_ url: URL) { Task { await self.model.showGitDirectoryDiff(for: url) } @@ -1017,7 +1017,7 @@ private struct FileNodeRow: View { iconKind: LitheIcons.kind(for: mark), shortcut: currentDirectoryMark == mark ? "✓" : nil ) { - actions.markDirectory(node.url, as: mark) + actions.markDirectory(node.url, as: mark, cancelExclusion: currentDirectoryMark == .excluded) } } } diff --git a/macos/Sources/LitheCoreContracts/Workspace/WorkspaceFeatureContracts.swift b/macos/Sources/LitheCoreContracts/Workspace/WorkspaceFeatureContracts.swift index 419bdf056d..70bec329ea 100644 --- a/macos/Sources/LitheCoreContracts/Workspace/WorkspaceFeatureContracts.swift +++ b/macos/Sources/LitheCoreContracts/Workspace/WorkspaceFeatureContracts.swift @@ -69,8 +69,8 @@ package protocol WorkspaceSessionStoring: AnyObject { } package protocol WorkspaceOperations: Sendable { - func releaseIndexing(at rootURL: URL, revision: UInt64) - func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool) throws -> WorkspaceIndexingStatus + func releaseIndexing(at rootURL: URL, revision: UInt64, ownerID: String?) + func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool, ownerID: String?) throws -> WorkspaceIndexingStatus /// Drops package-compaction lookahead after workspace or filesystem changes. func invalidateDirectoryListings() @@ -91,8 +91,12 @@ package protocol WorkspaceOperations: Sendable { } extension WorkspaceOperations { - package func releaseIndexing(at rootURL: URL, revision: UInt64) {} - package func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool) throws -> WorkspaceIndexingStatus { WorkspaceIndexingStatus() } + package func releaseIndexing(at rootURL: URL, revision: UInt64) { releaseIndexing(at: rootURL, revision: revision, ownerID: nil) } + package func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool) throws -> WorkspaceIndexingStatus { + try configureIndexing(at: rootURL, policy: policy, refresh: refresh, ownerID: nil) + } + package func releaseIndexing(at rootURL: URL, revision: UInt64, ownerID: String?) {} + package func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool, ownerID: String?) throws -> WorkspaceIndexingStatus { WorkspaceIndexingStatus() } package func invalidateDirectoryListings() {} /// Operations whose snapshots already carry the whole tree never leave a diff --git a/macos/Sources/LitheCoreContracts/Workspace/WorkspaceIndexingPolicy.swift b/macos/Sources/LitheCoreContracts/Workspace/WorkspaceIndexingPolicy.swift index 40db3b719f..d910f3dbeb 100644 --- a/macos/Sources/LitheCoreContracts/Workspace/WorkspaceIndexingPolicy.swift +++ b/macos/Sources/LitheCoreContracts/Workspace/WorkspaceIndexingPolicy.swift @@ -1,5 +1,10 @@ import Foundation +/// Stable application failures. Presentation owns translation; adapters retain diagnostics. +package enum WorkspaceIndexingFailure: Error, Equatable, Sendable { + case invalidSettings, readFailed, writeFailed, configureFailed, workspaceUnavailable, permissionDenied +} + /// Project preferences are separate from roles and from tree-hiding rules. package struct WorkspaceIndexingSettings: Codable, Equatable, Sendable { package var gitIgnoreEnabled = true diff --git a/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift b/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift index d7d97fdcf4..3f0997be0f 100644 --- a/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift +++ b/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift @@ -18,10 +18,23 @@ package final class WorkspaceFeatureModel: ObservableObject { @Published package private(set) var projectFiles: [URL] = [] @Published package private(set) var isLoadingWorkspace = false @Published package private(set) var isRefreshingWorkspace = false - @Published package private(set) var loadErrorMessage: String? + @Published private var loadFailure: WorkspaceIndexingFailure? + package var loadErrorMessage: String? { loadFailure.map(indexingFailureMessage) } @Published package private(set) var indexingSettings = WorkspaceIndexingSettings() @Published package private(set) var indexingStatus = WorkspaceIndexingStatus() - @Published package private(set) var indexingError: String? + private enum IndexingIssue { + case failure(WorkspaceIndexingFailure) + case incompleteScan + } + @Published private var indexingIssue: IndexingIssue? + /// Keep the failure classification; resolve copy when the current UI reads it. + package var indexingError: String? { + switch indexingIssue { + case .failure(let failure): indexingFailureMessage(failure) + case .incompleteScan: L10n.string("Some directories could not be scanned. Automatic project analysis was not refreshed.") + case nil: nil + } + } @Published package private(set) var directoryMarks: [String: WorkspaceDirectoryMark] = [:] @Published package var projectItemEditRequest: ProjectItemEditRequest? @Published package var pendingProjectItemDeletion: ProjectItemDeletionRequest? @@ -39,6 +52,9 @@ package final class WorkspaceFeatureModel: ObservableObject { private var workspaceURL: URL? private var indexingConfigurationTask: Task? private var indexingConfigurationID: UUID? + private var indexingOwnerID = UUID().uuidString + private var indexingPreferencesFailed = false + private var workspaceResourcesReleased = false private var visibilityRules = FileVisibilityRules.default private var directoryMarkRevision = 0 private var watchConfiguration: DirectoryWatchConfiguration? @@ -158,6 +174,8 @@ package final class WorkspaceFeatureModel: ObservableObject { rootNode != nil || !projectFiles.isEmpty } + package var canEditIndexingSettings: Bool { !indexingPreferencesFailed } + package var hasActiveModuleResources: Bool { directoryWatcher != nil || indexingConfigurationTask != nil @@ -169,6 +187,13 @@ package final class WorkspaceFeatureModel: ObservableObject { } package func prepareForModuleRelease() { + workspaceResourcesReleased = true + workspaceGeneration &+= 1 + isLoadingWorkspace = false + isRefreshingWorkspace = false + releaseIndexing() + indexingStatus.revision = 0 + indexingOwnerID = UUID().uuidString directoryWatcher?.stop() directoryWatcher = nil watchConfiguration = nil @@ -197,11 +222,33 @@ package final class WorkspaceFeatureModel: ObservableObject { guard let root = workspaceURL, indexingStatus.revision != 0 else { return } let revision = indexingStatus.revision let operations = self.operations - Task.detached { operations.releaseIndexing(at: root, revision: revision) } + let ownerID = indexingOwnerID + Task.detached { operations.releaseIndexing(at: root, revision: revision, ownerID: ownerID) } + } + + @discardableResult + private func recordIndexingFailure(_ error: Error, fallback: WorkspaceIndexingFailure = .configureFailed) -> WorkspaceIndexingFailure { + let failure = (error as? WorkspaceIndexingFailure) ?? fallback + indexingIssue = .failure(failure) + return failure + } + + private func indexingFailureMessage(_ failure: WorkspaceIndexingFailure) -> String { + switch failure { + case .invalidSettings: L10n.string("Project indexing settings are invalid. The saved data has been preserved.") + case .readFailed: L10n.string("Could not read project indexing settings. Try reopening the project.") + case .writeFailed: L10n.string("Could not save project indexing settings. Your previous settings remain unchanged.") + case .configureFailed: L10n.string("Could not apply project indexing exclusions. Try reopening the project.") + case .workspaceUnavailable: L10n.string("The project folder is unavailable. Restore it, then retry.") + case .permissionDenied: L10n.string("Lithe cannot access the project folder. Check its permissions, then retry.") + } } package func reset() { releaseIndexing() + indexingOwnerID = UUID().uuidString + indexingPreferencesFailed = false + workspaceResourcesReleased = false invalidateDirectoryListings() workspaceGeneration &+= 1 directoryMarkRevision &+= 1 @@ -231,12 +278,12 @@ package final class WorkspaceFeatureModel: ObservableObject { directoryMarks = [:] indexingSettings = WorkspaceIndexingSettings() indexingStatus = WorkspaceIndexingStatus() - indexingError = nil + indexingIssue = nil projectFiles = [] appliedSnapshot = nil isLoadingWorkspace = false isRefreshingWorkspace = false - loadErrorMessage = nil + loadFailure = nil projectItemEditRequest = nil pendingProjectItemDeletion = nil isPerformingProjectItemOperation = false @@ -254,6 +301,8 @@ package final class WorkspaceFeatureModel: ObservableObject { package func beginWorkspace(at url: URL, visibilityRules: FileVisibilityRules) { releaseIndexing() + indexingOwnerID = UUID().uuidString + workspaceResourcesReleased = false invalidateDirectoryListings() isPerformingProjectItemOperation = false workspaceGeneration &+= 1 @@ -263,13 +312,14 @@ package final class WorkspaceFeatureModel: ObservableObject { directoryMarks = try directoryMarkStore.loadDirectoryMarks(for: url) indexingSettings = try directoryMarkStore.loadIndexingSettings(for: url) indexingStatus = WorkspaceIndexingStatus() - indexingError = nil + indexingIssue = nil + indexingPreferencesFailed = false } catch { directoryMarks = [:] indexingSettings = WorkspaceIndexingSettings() indexingStatus = WorkspaceIndexingStatus() - indexingError = error.localizedDescription - notify?("Could not read directory marks: \(error.localizedDescription)") + indexingPreferencesFailed = true + recordIndexingFailure(error, fallback: .readFailed) } self.visibilityRules = visibilityRules hasRestoredWorkspaceSession = false @@ -332,14 +382,15 @@ package final class WorkspaceFeatureModel: ObservableObject { let previous = indexingConfigurationTask let operations = self.operations let id = UUID() + let ownerID = indexingOwnerID let task = Task { @MainActor in _ = try? await previous?.value - guard isCurrent() else { throw CancellationError() } + guard isCurrent(), self.indexingOwnerID == ownerID else { throw CancellationError() } let status = try await Task.detached(priority: .userInitiated) { - try operations.configureIndexing(at: root, policy: policy, refresh: refresh) + try operations.configureIndexing(at: root, policy: policy, refresh: refresh, ownerID: ownerID) }.value - guard isCurrent() else { - await Task.detached { operations.releaseIndexing(at: root, revision: status.revision) }.value + guard isCurrent(), self.indexingOwnerID == ownerID else { + await Task.detached { operations.releaseIndexing(at: root, revision: status.revision, ownerID: ownerID) }.value throw CancellationError() } return status @@ -358,13 +409,23 @@ package final class WorkspaceFeatureModel: ObservableObject { package func rebuild( at workspaceURL: URL, rules: FileVisibilityRules, - isCurrent: @escaping @MainActor () -> Bool + refreshGitAfterwards: Bool = true, + indexingOnly: Bool = false, + isCurrent current: @escaping @MainActor () -> Bool ) async -> WorkspaceRebuildResult { + let generation = workspaceGeneration + let ownerID = indexingOwnerID + let isCurrent: @MainActor () -> Bool = { + current() && !self.workspaceResourcesReleased && self.workspaceGeneration == generation + && self.indexingOwnerID == ownerID && self.workspaceURL == workspaceURL.standardizedFileURL + } + guard isCurrent() else { return .stale } invalidateDirectoryListings() let isInitialLoad = !hasSnapshot + let reloadPreferences = indexingPreferencesFailed || (isInitialLoad && loadErrorMessage != nil) if isInitialLoad { isLoadingWorkspace = true - loadErrorMessage = nil + loadFailure = nil } else { isRefreshingWorkspace = true } @@ -374,16 +435,38 @@ package final class WorkspaceFeatureModel: ObservableObject { ? Self.loadedDirectoryPaths(in: rootNode) : [] var snapshot: WorkspaceSnapshot? + if reloadPreferences { + do { + let marks = try directoryMarkStore.loadDirectoryMarks(for: workspaceURL) + let settings = try directoryMarkStore.loadIndexingSettings(for: workspaceURL) + directoryMarks = marks + indexingSettings = settings + indexingPreferencesFailed = false + } catch { + guard isCurrent() else { return .stale } + let failure = recordIndexingFailure(error, fallback: .readFailed) + if isInitialLoad { loadFailure = failure } + isLoadingWorkspace = false + isRefreshingWorkspace = false + return .unavailable + } + } while true { let policy = WorkspaceIndexingPolicy(marks: directoryMarks, settings: indexingSettings) do { let status = try await configureCurrentIndexing(at: workspaceURL, policy: policy, refresh: true, isCurrent: isCurrent) guard isCurrent() else { return .stale } indexingStatus = status - indexingError = nil + indexingIssue = nil } catch { guard isCurrent() else { return .stale } - indexingError = error.localizedDescription + if error is CancellationError { + isLoadingWorkspace = false + isRefreshingWorkspace = false + return .stale + } + let failure = recordIndexingFailure(error) + if isInitialLoad { loadFailure = failure } isLoadingWorkspace = false isRefreshingWorkspace = false return .unavailable @@ -406,7 +489,7 @@ package final class WorkspaceFeatureModel: ObservableObject { indexingStatus = status } catch { guard isCurrent() else { return .stale } - indexingError = error.localizedDescription + if !(error is CancellationError) { recordIndexingFailure(error) } } } // A persisted switch/mark can change while either Core call is in @@ -429,11 +512,17 @@ package final class WorkspaceFeatureModel: ObservableObject { isRefreshingWorkspace = false } if isInitialLoad { - loadErrorMessage = "Could not read the project folder. Check that it still exists and that Lithe has permission to access it." + loadFailure = .workspaceUnavailable } return .unavailable } - loadErrorMessage = nil + if indexingOnly, snapshot.files == projectFiles, snapshot.incompleteDirectories.isEmpty, + appliedSnapshot?.incompleteDirectories.isEmpty == true { + isLoadingWorkspace = false + isRefreshingWorkspace = false + return .loaded(snapshot) + } + loadFailure = nil rootNode = snapshot.root projectFiles = snapshot.files appliedSnapshot = snapshot @@ -462,10 +551,10 @@ package final class WorkspaceFeatureModel: ObservableObject { if snapshot.incompleteDirectories.isEmpty { await onSnapshotLoaded?(snapshot, isInitialLoad) } else { - indexingError = L10n.string( "Some directories could not be scanned. Automatic project analysis was not refreshed.") + indexingIssue = .incompleteScan } guard isCurrent() else { return .stale } - await requestGitRefreshNow() + if refreshGitAfterwards { await requestGitRefreshNow() } if pendingFullRescan || pendingWatchRootsChanged { scheduleRecovery() } @@ -482,20 +571,23 @@ package final class WorkspaceFeatureModel: ObservableObject { /// Watcher-driven refreshes must not cancel the task that is applying their /// batch: cancellation would also abort Git context discovery during rebuild. - private func refreshCurrentSnapshot() async { + private func refreshCurrentSnapshot(refreshGitAfterwards: Bool = true, indexingOnly: Bool = false) async { guard let workspaceURL, !isLoadingWorkspace, !isRefreshingWorkspace else { return } let generation = workspaceGeneration _ = await rebuild( at: workspaceURL, rules: visibilityRules, + refreshGitAfterwards: refreshGitAfterwards, + indexingOnly: indexingOnly, isCurrent: { [weak self] in self?.workspaceURL == workspaceURL && self?.workspaceGeneration == generation } ) } - package func markDirectory(_ url: URL, as mark: WorkspaceDirectoryMark) async { + package func markDirectory(_ url: URL, as mark: WorkspaceDirectoryMark, cancelExclusion: Bool = false) async { guard !isPerformingProjectItemOperation, + !indexingPreferencesFailed, mark != .excluded || indexingStatus.supportsExclusions, let workspaceURL, let relativePath = Self.relativePath(for: url, in: workspaceURL) else { return } @@ -503,14 +595,14 @@ package final class WorkspaceFeatureModel: ObservableObject { let previousMarks = directoryMarks var updatedMarks = directoryMarks let previousSettings = indexingSettings - if mark == .plain { + if cancelExclusion { guard !directoryMarks.contains(where: { $0.value == .excluded && $0.key != relativePath && (relativePath.hasPrefix($0.key + "/") || $0.key == ".") }) else { return } updatedMarks[relativePath] = indexingSettings.previousRoles.removeValue(forKey: relativePath) ?? .plain if !indexingSettings.includedDirectories.contains(relativePath) { indexingSettings.includedDirectories.append(relativePath) } } else { if mark == .excluded, let previous = updatedMarks[relativePath], previous != .excluded { indexingSettings.previousRoles[relativePath] = previous } updatedMarks[relativePath] = mark - indexingSettings.includedDirectories.removeAll { $0 == relativePath } + if mark != .plain { indexingSettings.includedDirectories.removeAll { $0 == relativePath } } } guard updatedMarks != previousMarks || previousSettings != indexingSettings else { return } @@ -519,7 +611,7 @@ package final class WorkspaceFeatureModel: ObservableObject { directoryMarks = updatedMarks do { try directoryMarkStore.saveIndexingSettings(indexingSettings, for: workspaceURL) } - catch { indexingSettings = previousSettings; directoryMarks = previousMarks; indexingError = error.localizedDescription; return } + catch { indexingSettings = previousSettings; directoryMarks = previousMarks; recordIndexingFailure(error, fallback: .writeFailed); return } let saveError = await directoryMarkPersistence.save(updatedMarks, for: workspaceURL) guard self.workspaceURL == workspaceURL, self.workspaceGeneration == workspaceGeneration else { return } @@ -529,17 +621,18 @@ package final class WorkspaceFeatureModel: ObservableObject { } indexingSettings = previousSettings try? directoryMarkStore.saveIndexingSettings(previousSettings, for: workspaceURL) - notify?("Could not update directory mark: \(saveError)") + recordIndexingFailure(WorkspaceIndexingFailure.writeFailed) + notify?(indexingError ?? "") await refreshCurrent() } else if directoryMarkRevision == revision { await refreshCurrent() } } package func setGitIgnoreIndexing(_ enabled: Bool) async { - guard let workspaceURL, indexingStatus.supportsExclusions else { return } + guard let workspaceURL, indexingStatus.supportsExclusions, !indexingPreferencesFailed else { return } let previous = indexingSettings indexingSettings.gitIgnoreEnabled = enabled do { try directoryMarkStore.saveIndexingSettings(indexingSettings, for: workspaceURL) } - catch { indexingSettings = previous; indexingError = error.localizedDescription; return } + catch { indexingSettings = previous; recordIndexingFailure(error, fallback: .writeFailed); return } await refreshCurrent() } @@ -1144,8 +1237,8 @@ package final class WorkspaceFeatureModel: ObservableObject { try directoryMarkStore.saveIndexingSettings(settings, for: root) if workspaceURL == root { indexingSettings = settings } } catch { - indexingError = error.localizedDescription - notify?(error.localizedDescription) + recordIndexingFailure(error, fallback: .writeFailed) + notify?(indexingError ?? "") } } @@ -1372,14 +1465,24 @@ package final class WorkspaceFeatureModel: ObservableObject { private func drainGitRefreshes() async { guard gitOperationFreezeDepth == 0, !isGitRefreshRunning else { return } isGitRefreshRunning = true + defer { isGitRefreshRunning = false } while pendingGitRefresh, gitOperationFreezeDepth == 0 { pendingGitRefresh = false await refreshGit?() } - isGitRefreshRunning = false if pendingIndexingRuleRefresh, !isLoadingWorkspace, !isRefreshingWorkspace { pendingIndexingRuleRefresh = false - await refreshCurrentSnapshot() + await refreshCurrentSnapshot(refreshGitAfterwards: false, indexingOnly: true) + } + if pendingGitRefresh { scheduleGitRefreshAfterDrain() } + } + + private func scheduleGitRefreshAfterDrain() { + // A burst arriving during policy evaluation gets its own debounce pass. + gitRefreshTask = Task { @MainActor [weak self, observationDelay] in + do { try await observationDelay(.milliseconds(350)) } catch { return } + guard !Task.isCancelled else { return } + await self?.drainGitRefreshes() } } diff --git a/macos/Tests/LitheTests/GitStatusObservationTests.swift b/macos/Tests/LitheTests/GitStatusObservationTests.swift index ab905cd1c4..a8d5a08f20 100644 --- a/macos/Tests/LitheTests/GitStatusObservationTests.swift +++ b/macos/Tests/LitheTests/GitStatusObservationTests.swift @@ -310,6 +310,7 @@ struct GitStatusObservationTests { #expect(recorder.gitRefreshCount == 1, "A commit event burst should be coalesced") #expect(recorder.externalChangeBatches.isEmpty) #expect(recorder.projectServiceReloadCount == 0) + #expect(recorder.snapshotPublicationCount == 0, "Unchanged indexing inventory must not republish a project snapshot") } @Test @@ -537,11 +538,13 @@ private final class GitObservationRecorder { var gitRefreshCount = 0 var externalChangeBatches: [[URL]] = [] var projectServiceReloadCount = 0 + var snapshotPublicationCount = 0 func reset() { gitRefreshCount = 0 externalChangeBatches = [] projectServiceReloadCount = 0 + snapshotPublicationCount = 0 } } @@ -671,7 +674,7 @@ private func makeObservationModel(recorder: GitObservationRecorder) -> Workspace recorder.gitRefreshCount += 1 }, updateHistoryVisibilityRules: { _ in }, - onSnapshotLoaded: { _, _, _ in } + onSnapshotLoaded: { _, _, _ in recorder.snapshotPublicationCount += 1 } ) return model } diff --git a/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift b/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift index c8789f0243..965454ed6b 100644 --- a/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift +++ b/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift @@ -7,6 +7,82 @@ import Testing @Suite("Lazy project tree inventory") @MainActor struct LazyProjectTreeInventoryTests { + @Test + func moduleReleaseDuringSnapshotCannotAcquireAnotherLeaseOrPublishInventory() async { + let root = URL(fileURLWithPath: "/in-memory/indexing-release-during-snapshot") + let fixture = InventoryFixture(root: root, files: [], rows: [root.path: []]) + defer { fixture.close() } + fixture.disk.setConfigurationRevision(10) + fixture.disk.blockNextListing() + fixture.model.beginWorkspace(at: root, visibilityRules: .default) + let loading = Task { await fixture.model.rebuild(at: root, rules: .default, isCurrent: { true }) } + defer { loading.cancel(); fixture.disk.releaseListing.open() } + #expect(await fixture.disk.listingStarted.waitUntilOpen()) + fixture.model.prepareForModuleRelease() + #expect(await fixture.disk.releaseObserved.waitUntilOpen()) + fixture.disk.releaseListing.open() + let result = await loading.value + if case .stale = result {} else { Issue.record("A released workspace published its inventory") } + #expect(fixture.disk.configurationCount == 1) + #expect(fixture.disk.releasedRoots == [root]) + #expect(fixture.publishedFiles.isEmpty) + } + + @Test + func aCompleteIndexingRescanPublishesRecoveryEvenWhenTheFileListIsUnchanged() async { + let root = URL(fileURLWithPath: "/in-memory/indexing-complete-recovery") + let file = root.appendingPathComponent("Keep.java") + let fixture = InventoryFixture(root: root, files: [file], rows: [root.path: []]) + defer { fixture.close() } + fixture.disk.setIncompleteDirectories(["unreadable"]) + await fixture.load() + #expect(fixture.publishedFiles.isEmpty) + #expect(fixture.model.appliedSnapshot?.incompleteDirectories == ["unreadable"]) + fixture.disk.setIncompleteDirectories([]) + _ = await fixture.model.rebuild(at: root, rules: .default, refreshGitAfterwards: false, indexingOnly: true, isCurrent: { true }) + #expect(fixture.publishedFiles == [[file]]) + #expect(fixture.model.appliedSnapshot?.incompleteDirectories.isEmpty == true) + } + + @Test + func initialIndexingFailureKeepsProjectIdentityForRetryAndRefreshFailureKeepsTheTree() async { + let root = URL(fileURLWithPath: "/in-memory/indexing-retry"); let file = root.appendingPathComponent("Keep.java") + let fixture = InventoryFixture(root: root, files: [file], rows: [root.path: []]) + defer { fixture.close() } + fixture.disk.failNextConfiguration(.workspaceUnavailable) + await fixture.load() + #expect(fixture.model.loadErrorMessage != nil) + #expect(!fixture.model.isLoadingWorkspace) + #expect(fixture.model.rootNode == nil) + await fixture.model.refreshCurrent() + #expect(fixture.model.projectFiles == [file]) + #expect(fixture.model.loadErrorMessage == nil) + fixture.disk.failNextConfiguration(.configureFailed) + await fixture.model.refreshCurrent() + #expect(fixture.model.projectFiles == [file]) + #expect(fixture.model.rootNode != nil) + #expect(fixture.model.loadErrorMessage == nil) + #expect(fixture.model.indexingError != nil) + #expect(!fixture.model.isRefreshingWorkspace) + } + + @Test + func normalFolderDoesNotCreateAnIncludeExceptionButCancelExclusionDoes() async { + let root = URL(fileURLWithPath: "/in-memory/indexing-normal-folder") + let directory = root.appendingPathComponent("src") + let fixture = InventoryFixture(root: root, files: [directory.appendingPathComponent("Keep.java")], rows: [root.path: []]) + defer { fixture.close() } + await fixture.load() + await fixture.model.markDirectory(directory, as: .sources) + await fixture.model.markDirectory(directory, as: .plain) + #expect(fixture.model.indexingSettings.includedDirectories.isEmpty) + #expect(fixture.model.directoryMarks["src"] == .plain) + await fixture.model.markDirectory(directory, as: .excluded) + await fixture.model.markDirectory(directory, as: .plain, cancelExclusion: true) + #expect(fixture.model.indexingSettings.includedDirectories == ["src"]) + #expect(fixture.model.directoryMarks["src"] == .plain) + } + @Test(arguments: [false, true], [false, true]) func stalePolicyInstallCannotOverwriteOrFailTheNextWorkspace(staleFails: Bool, reopenSameRoot: Bool) async { let oldRoot = URL(fileURLWithPath: "/in-memory/old-indexing") @@ -69,8 +145,8 @@ struct LazyProjectTreeInventoryTests { #expect(!fixture.disk.configurationTimedOut) } - @Test - func policyInstalledAfterProjectCloseIsReleased() async { + @Test(arguments: [false, true]) + func policyInstalledAfterProjectCloseIsReleased(moduleRelease: Bool) async { let root = URL(fileURLWithPath: "/in-memory/closed-indexing") let fixture = InventoryFixture(root: root, files: [], rows: [root.path: []]) defer { fixture.close() } @@ -81,7 +157,7 @@ struct LazyProjectTreeInventoryTests { isCurrent: { fixture.model.workspaceGeneration == generation }) } defer { loading.cancel(); fixture.disk.releaseConfiguration.open() } #expect(await fixture.disk.configurationStarted.waitUntilOpen()) - fixture.model.reset() + if moduleRelease { fixture.model.prepareForModuleRelease() } else { fixture.model.reset() } fixture.disk.releaseConfiguration.open() _ = await loading.value #expect(fixture.disk.releasedRoots == [root]) @@ -483,18 +559,27 @@ private final class InventoryDisk: WorkspaceOperations, WorkspaceFileOperations, private var shouldBlock = false private var timedOut = false private var scans = 0 + private var incompleteDirectories: [String] = [] + func setIncompleteDirectories(_ paths: [String]) { lock.withLock { incompleteDirectories = paths } } private var policy: WorkspaceIndexingPolicy? var supportsExclusions = true private var blockConfiguration = false private var failConfiguration = false private var configurationTimeout = false + private var configurationRevision: UInt64 = 0 + private var configurations = 0 + var configurationCount: Int { lock.withLock { configurations } } + func setConfigurationRevision(_ revision: UInt64) { lock.withLock { configurationRevision = revision } } + let releaseObserved = TestGate() + private var nextFailure: WorkspaceIndexingFailure? + func failNextConfiguration(_ error: WorkspaceIndexingFailure) { lock.withLock { nextFailure = error } } private var releases: [URL] = [] let configurationStarted = TestGate() let releaseConfiguration = TestGate() var releasedRoots: [URL] { lock.withLock { releases } } var configurationTimedOut: Bool { lock.withLock { configurationTimeout } } func blockNextConfiguration(failing: Bool) { lock.withLock { blockConfiguration = true; failConfiguration = failing } } - func releaseIndexing(at rootURL: URL, revision: UInt64) { lock.withLock { releases.append(rootURL) } } + func releaseIndexing(at rootURL: URL, revision: UInt64, ownerID: String? = nil) { lock.withLock { releases.append(rootURL) }; releaseObserved.open() } private var listings: [String: Int] = [:] let listingStarted = TestGate() let releaseListing = TestGate() @@ -515,7 +600,9 @@ private final class InventoryDisk: WorkspaceOperations, WorkspaceFileOperations, func blockNextListing() { lock.withLock { shouldBlock = true } } - func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool) throws -> WorkspaceIndexingStatus { + func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool, ownerID: String? = nil) throws -> WorkspaceIndexingStatus { + lock.withLock { configurations += 1 } + if let error = lock.withLock({ let error = nextFailure; nextFailure = nil; return error }) { throw error } let (blocks, fails) = lock.withLock { let blocks = blockConfiguration blockConfiguration = false @@ -532,7 +619,7 @@ private final class InventoryDisk: WorkspaceOperations, WorkspaceFileOperations, self.policy = policy var status = WorkspaceIndexingStatus() status.supportsExclusions = supportsExclusions - status.revision = blocks ? 1 : 0 + status.revision = blocks ? 1 : configurationRevision status.excludedDirectories = Dictionary(uniqueKeysWithValues: policy.manualExcludedDirectories.map { ($0, "manual") }) if policy.gitIgnoreEnabled { status.excludedDirectories["ignored"] = "git" } return status @@ -547,7 +634,7 @@ private final class InventoryDisk: WorkspaceOperations, WorkspaceFileOperations, return !(policy?.manualExcludedDirectories.contains(where: { relative == $0 || relative.hasPrefix($0 + "/") }) ?? false) && !(policy?.gitIgnoreEnabled == true && relative.hasPrefix("ignored/")) } - return WorkspaceSnapshot(root: FileNode(url: rootURL, isDirectory: true, children: nil), files: visible) + return WorkspaceSnapshot(root: FileNode(url: rootURL, isDirectory: true, children: nil), files: visible, incompleteDirectories: incompleteDirectories) } } diff --git a/macos/Tests/LitheTests/WorkspaceDirectoryMarkStoreTests.swift b/macos/Tests/LitheTests/WorkspaceDirectoryMarkStoreTests.swift index 819ffd904f..1f43ccf003 100644 --- a/macos/Tests/LitheTests/WorkspaceDirectoryMarkStoreTests.swift +++ b/macos/Tests/LitheTests/WorkspaceDirectoryMarkStoreTests.swift @@ -4,6 +4,18 @@ import LitheCoreContracts @testable import Lithe struct WorkspaceDirectoryMarkStoreTests { + @Test(arguments: ["broken", "null", "{}", "{\"gitIgnoreEnabled\":null,\"includedDirectories\":[]}", "{\"gitIgnoreEnabled\":true,\"includedDirectories\":[1]}"]) + func invalidIndexingSettingsAreClassifiedAndPreserved(_ raw: String) throws { + let preferences = DirectoryMarkKeyValueStore() + let root = URL(fileURLWithPath: "/projects/invalid-indexing") + let key = "lithe.workspace-indexing." + root.path + let data = Data(raw.utf8) + preferences.set(data, forKey: key) + let store = WorkspaceDirectoryMarkStore(store: preferences) + #expect(throws: WorkspaceIndexingFailure.invalidSettings) { try store.loadIndexingSettings(for: root) } + #expect(preferences.data(forKey: key) == data) + } + @Test func directoryMarksRoundTripWithoutWritingIntoTheWorkspace() throws { let preferences = DirectoryMarkKeyValueStore() diff --git a/macos/Tests/LitheTests/WorkspaceSessionCoordinatorTests.swift b/macos/Tests/LitheTests/WorkspaceSessionCoordinatorTests.swift index bff6088b05..f8ab687e4d 100644 --- a/macos/Tests/LitheTests/WorkspaceSessionCoordinatorTests.swift +++ b/macos/Tests/LitheTests/WorkspaceSessionCoordinatorTests.swift @@ -1,10 +1,111 @@ import Foundation +import LitheCoreContracts +import LitheWorkspaceModule import Testing @testable import Lithe @Suite("Workspace session coordinator") @MainActor struct WorkspaceSessionCoordinatorTests { + @Test + func openingWaitsForOldModuleTeardownBeforeBeginningTheNewFeatureLifetime() async { + let preparationStarted = TestGate() + let finishTeardown = TestGate() + let loaded = TestGate() + let feature = makeOpeningFeature(loaded: loaded) + let platform = CoordinatorTestPlatformUI() + let coordinator = WorkspaceSessionCoordinator( + recentProjectsStore: RecentProjectsStore(store: CoordinatorTestStore()), + platformUI: platform, workspaceFeature: feature + ) + defer { finishTeardown.open(); coordinator.clearSession(); feature.prepareForModuleRelease() } + let oldRoot = URL(fileURLWithPath: "/in-memory/coordinator-old") + let newRoot = URL(fileURLWithPath: "/in-memory/coordinator-new") + feature.beginWorkspace(at: oldRoot, visibilityRules: .default) + let oldGeneration = feature.workspaceGeneration + coordinator.configureLifecycle(with: openingHandlers(wait: { + preparationStarted.open() + #expect(await finishTeardown.waitUntilOpen()) + // The old module owns the same long-lived UI projection. + feature.prepareForModuleRelease() + })) + coordinator.openWorkspace(at: newRoot) + #expect(await preparationStarted.waitUntilOpen()) + #expect(feature.workspaceGeneration == oldGeneration) + #expect(feature.appliedSnapshot == nil) + finishTeardown.open() + #expect(await loaded.waitUntilOpen()) + #expect(feature.rootNode?.url == newRoot) + #expect(feature.loadErrorMessage == nil) + } + + @Test + func reopeningTheSameRootWhilePreparationIsPendingStartsOnlyTheLatestLifetime() async { + let preparationStarted = TestGate() + let finishPreparation = TestGate() + let loaded = TestGate() + let feature = makeOpeningFeature(loaded: loaded) + let platform = CoordinatorTestPlatformUI() + let coordinator = WorkspaceSessionCoordinator( + recentProjectsStore: RecentProjectsStore(store: CoordinatorTestStore()), + platformUI: platform, workspaceFeature: feature + ) + defer { finishPreparation.open(); coordinator.clearSession(); feature.prepareForModuleRelease() } + var preparationCount = 0 + var restorations = 0 + var handlers = openingHandlers(wait: { + preparationCount += 1 + preparationStarted.open() + _ = await finishPreparation.waitUntilOpen() + }) + handlers = .init( + prepareForWorkspaceOpen: handlers.prepareForWorkspaceOpen, + prepareForWorkspaceClose: handlers.prepareForWorkspaceClose, + prepareForStandaloneOpen: handlers.prepareForStandaloneOpen, + finishStandaloneClose: handlers.finishStandaloneClose, + beginDocumentClose: handlers.beginDocumentClose, + runServicesCloseConfirmation: handlers.runServicesCloseConfirmation, + restoreDebugBreakpoints: { _ in restorations += 1 }, + visibilityRules: handlers.visibilityRules, + waitForWorkspaceOpenPreparation: handlers.waitForWorkspaceOpenPreparation + ) + coordinator.configureLifecycle(with: handlers) + let root = URL(fileURLWithPath: "/in-memory/coordinator-reopen") + coordinator.openWorkspace(at: root) + #expect(await preparationStarted.waitUntilOpen()) + coordinator.openWorkspace(at: root) + finishPreparation.open() + #expect(await loaded.waitUntilOpen()) + #expect(preparationCount == 2) + #expect(restorations == 1) + #expect(feature.workspaceGeneration == 1) + #expect(feature.rootNode?.url == root) + } + + private func openingHandlers(wait: @escaping @MainActor () async -> Void) -> WorkspaceSessionCoordinator.LifecycleHandlers { + .init(prepareForWorkspaceOpen: { _ in }, prepareForWorkspaceClose: { _ in }, + prepareForStandaloneOpen: { _ in }, finishStandaloneClose: {}, beginDocumentClose: { false }, + runServicesCloseConfirmation: { nil }, restoreDebugBreakpoints: { _ in }, + visibilityRules: { .default }, waitForWorkspaceOpenPreparation: wait) + } + + private func makeOpeningFeature(loaded: TestGate) -> WorkspaceFeatureModel { + let feature = WorkspaceFeatureModel( + operations: CoordinatorWorkspaceOperations(), fileOperations: MacWorkspaceFileOperations(), + gitWatchContextProvider: CoordinatorGitContext(), directoryWatcherFactory: CoordinatorWatcherFactory(), + workspaceSessionStore: CoordinatorSessionStore() + ) + feature.configureProjection( + documentsProvider: { [] }, activeDocumentProvider: { nil }, selectedSidebarProvider: { "project" }, + setSelectedSidebar: { _ in }, restoreSession: { _, _ in }, openFile: { _ in }, notify: { _ in }, + recordHistory: { _, _ in }, relocateHistory: { _, _ in }, relocateOpenDocuments: { _, _ in }, + closeDocuments: { _ in }, processExternalChanges: { _ in false }, reloadProjectServices: {}, + refreshGit: {}, updateHistoryVisibilityRules: { _ in }, onSnapshotLoaded: { _, _ in loaded.open() }, + warmSearchIndex: { _, _ in }, updateSearchIndex: { _, _, _ in }, invalidateSearchIndex: { _, _ in } + ) + return feature + } + @Test func cancelledWorkspaceClosePreservesLeaseAndAllowsRetry() { let platform = CoordinatorTestPlatformUI() @@ -251,6 +352,36 @@ struct WorkspaceSessionCoordinatorTests { } } +private struct CoordinatorWorkspaceOperations: WorkspaceOperations { + func snapshot(at rootURL: URL, visibilityRules: FileVisibilityRules) -> WorkspaceSnapshot? { + WorkspaceSnapshot(root: FileNode(url: rootURL, isDirectory: true, children: []), files: []) + } + func readFile(at rootURL: URL, relativePath: String) -> String? { nil } + func writeFile(_ text: String, at rootURL: URL, relativePath: String) -> Bool { false } +} + +private struct CoordinatorGitContext: GitWatchContextProviding { + func watchContext(for workspace: URL) async -> GitWatchContext? { nil } +} + +@MainActor +private final class CoordinatorSessionStore: WorkspaceSessionStoring { + func load(for workspaceURL: URL) -> WorkspaceSession? { nil } + func save(_ session: WorkspaceSession, for workspaceURL: URL) {} +} + +private struct CoordinatorWatcherFactory: DirectoryWatcherFactory { + func make(configuration: DirectoryWatchConfiguration, visibilityRules: FileVisibilityRules, + onChange: @escaping @Sendable (DirectoryChangeBatch) -> Void) -> any DirectoryChangeSource { + CoordinatorChangeSource() + } +} + +private final class CoordinatorChangeSource: DirectoryChangeSource { + func start() {} + func stop() {} +} + @MainActor private final class CoordinatorTestPlatformUI: PlatformUI { private(set) var startedURLs: [URL] = [] diff --git a/rust/lithe-core/src/lsp/interface/engine.rs b/rust/lithe-core/src/lsp/interface/engine.rs index a9b819ae17..54f61800f8 100644 --- a/rust/lithe-core/src/lsp/interface/engine.rs +++ b/rust/lithe-core/src/lsp/interface/engine.rs @@ -916,10 +916,16 @@ fn apply_indexing_to_sessions( if sessions.is_empty() { return Ok(()); } - crate::project::indexing::prepare_provider_exclusions(root)?; + let prepared = crate::project::indexing::prepare_provider_exclusions(root)?; let roots = crate::project::indexing::excluded_roots(root); - let revision = crate::project::indexing::context(root).map_or(0, |policy| policy.revision); + let revision = prepared.as_ref().map_or(0, |policy| policy.revision); + if let Some(policy) = &prepared { + policy.check()?; + } for session in sessions { + if let Some(policy) = &prepared { + policy.check()?; + } if ensure_not_terminal(session.lock_state()?.lifecycle).is_err() { continue; } @@ -1593,6 +1599,28 @@ impl LspEngine { "Remote Java language servers require a host-compatible plugin launch plan", )); } + // Initial provider settings must include native Git decisions even when + // no session or inventory warm-up has run. Never scan under registry locks. + let indexing_root = canonical_workspace_root(&request.root_uri).map(PathBuf::from); + let indexing_context = if let Some(root) = &indexing_root { + crate::project::indexing::prepare_provider_exclusions(root)? + } else { + None + }; + let check_indexing = || { + if let Some(context) = &indexing_context { + return context.check(); + } + if indexing_root.as_ref().is_some_and(|root| { + crate::project::indexing::active_provider_context(root).is_some() + }) { + return Err(CoreError::new( + ErrorCode::Cancelled, + "Indexing policy changed", + )); + } + Ok(()) + }; let startup_started_at = Instant::now(); let session_id = format!( "lsp-session-{}", @@ -1901,8 +1929,16 @@ impl LspEngine { } } + // Register before checking the prepared generation. A policy change + // either retires that generation or sees this session for its update. self.lock_sessions()? .insert(session_id.clone(), session.clone()); + if let Err(error) = check_indexing() { + self.lock_sessions()?.remove(&session_id); + session.active.store(false, Ordering::Release); + session.kill_process(); + return Err(error); + } session.spawn_readers(process.output, process.errors); session.spawn_monitor(); session.spawn_outbound_maintenance(); @@ -1919,6 +1955,13 @@ impl LspEngine { return Err(error); } + if let Err(error) = check_indexing() { + self.lock_sessions()?.remove(&session_id); + session.active.store(false, Ordering::Release); + session.kill_process(); + return Err(error); + } + Ok(StartServerResponse { session_id, state: LspLifecycleState::Initializing, @@ -8748,6 +8791,7 @@ mod tests { fn drop(&mut self) { let _ = crate::project::indexing::release( crate::project::indexing::ReleaseIndexingRequest { + owner_id: None, root: self.root.to_string_lossy().into_owned(), revision: self.revision, }, @@ -8812,6 +8856,185 @@ mod tests { ); } + #[test] + fn indexing_startup_cancels_when_policy_changes_during_process_launch() { + struct RetireOnLaunch { + inner: Arc, + root: PathBuf, + revision: Arc, + process: Arc>>>, + } + impl LspProcessLauncher for RetireOnLaunch { + fn launch( + &self, + spec: LspProcessSpec, + ) -> Result { + let process = self.inner.launch(spec)?; + *self.process.lock().unwrap() = Some(process.handle.clone()); + let status = crate::project::indexing::configure(serde_json::from_value(json!({ + "root": self.root, "manualExcludedDirectories": ["reactor"], "includedDirectories": [], "gitIgnoreEnabled": false + })).unwrap())?; + self.revision.store(status.revision, Ordering::Release); + Ok(process) + } + } + struct Cleanup { + root: PathBuf, + revision: Arc, + process: Arc>>>, + } + impl Drop for Cleanup { + fn drop(&mut self) { + if let Some(process) = self.process.lock().unwrap().as_ref() { + process.terminate(); + } + let _ = crate::project::indexing::release( + crate::project::indexing::ReleaseIndexingRequest { + root: self.root.to_string_lossy().into_owned(), + owner_id: None, + revision: self.revision.load(Ordering::Acquire), + }, + ); + } + } + for initially_configured in [false, true] { + let workspace = TemporaryMavenWorkspace::recursive(&format!( + "indexing-startup-retired-{initially_configured}" + )); + let root = workspace.root.canonicalize().unwrap(); + let installed = if initially_configured { + crate::project::indexing::configure(serde_json::from_value(json!({ + "root":root,"manualExcludedDirectories":[],"includedDirectories":[],"gitIgnoreEnabled":false + })).unwrap()).unwrap().revision + } else { + 0 + }; + let cleanup = Cleanup { + root: root.clone(), + revision: Arc::new(AtomicU64::new(installed)), + process: Arc::new(Mutex::new(None)), + }; + let server = ScriptedServer::new(); + let engine = LspEngine::with_launcher(Arc::new(RetireOnLaunch { + inner: server.launcher(), + root: root.clone(), + revision: cleanup.revision.clone(), + process: cleanup.process.clone(), + })); + let mut request = start_request(&server); + request.provider_id = "python".into(); + request.root_uri = url::Url::from_directory_path(&root).unwrap().to_string(); + request.working_directory = root.to_string_lossy().into_owned(); + match engine.start_server(request) { + Err(error) => assert!(matches!(error.code, ErrorCode::Cancelled)), + Ok(_) => panic!("an obsolete startup must not publish a session"), + } + assert!(engine.lock_sessions().unwrap().is_empty()); + assert!( + server.input_was_closed(), + "the cancelled startup owns process termination" + ); + } + } + + #[test] + fn indexing_released_root_allows_a_standalone_provider_without_old_exclusions() { + let workspace = TemporaryMavenWorkspace::recursive("indexing-released-standalone"); + let root = workspace.root.canonicalize().unwrap(); + let root_uri = url::Url::from_directory_path(&root).unwrap().to_string(); + let status = crate::project::indexing::configure(serde_json::from_value(json!({ + "root": root, "manualExcludedDirectories": ["reactor"], "includedDirectories": [], "gitIgnoreEnabled": false + })).unwrap()).unwrap(); + let old = crate::project::indexing::context(&root).unwrap(); + crate::project::indexing::release(crate::project::indexing::ReleaseIndexingRequest { + root: root.to_string_lossy().into_owned(), + revision: status.revision, + owner_id: None, + }) + .unwrap(); + assert!( + old.check().is_err(), + "late inventory readers must remain cancelled" + ); + let harness = Harness::start(|request| { + workspace.configure(request); + request.root_uri = root_uri.clone(); + request.initialization_options = + Some(json!({"settings":{"java":{"import":{"exclusions":["**/vendor/**"]}}}})); + }); + let initialize = notifications(&harness, "initialize").pop().unwrap(); + assert_eq!( + initialize["params"]["initializationOptions"]["settings"]["java"]["import"] + ["exclusions"], + json!(["**/vendor/**"]) + ); + let file_uri = url::Url::from_file_path(root.join("reactor/Visible.java")) + .unwrap() + .to_string(); + assert!(!crate::project::indexing::uri_is_excluded(&root_uri, &file_uri).unwrap()); + } + + #[test] + fn indexing_cold_start_resolves_git_before_provider_initialization() { + let workspace = TemporaryMavenWorkspace::recursive("indexing-cold-start"); + let root = workspace.root.canonicalize().unwrap(); + std::fs::create_dir_all(root.join("ignored")).unwrap(); + std::fs::write(root.join("ignored/hidden.txt"), "hidden").unwrap(); + std::fs::write(root.join(".gitignore"), "ignored/\n").unwrap(); + let git = crate::git::execute_git_readonly( + &root.to_string_lossy(), + &["init".into(), "--quiet".into()], + None, + ) + .unwrap(); + assert_eq!(git.exit_code, 0, "{}", git.stderr); + let status = crate::project::indexing::configure(serde_json::from_value(json!({ + "root": root, "manualExcludedDirectories": [], "includedDirectories": [], "gitIgnoreEnabled": true + })).unwrap()).unwrap(); + let harness = Harness::start(|request| { + workspace.configure(request); + request.root_uri = url::Url::from_directory_path(&root).unwrap().to_string(); + request.initialization_options = + Some(json!({"settings":{"java":{"import":{"exclusions":["**/vendor/**"]}}}})); + }); + let initialize = notifications(&harness, "initialize").pop().unwrap(); + let excluded = root.join("ignored").to_string_lossy().replace('\\', "/"); + assert_eq!( + initialize["params"]["initializationOptions"]["settings"]["java"]["import"] + ["exclusions"], + json!(["**/vendor/**", excluded, format!("{excluded}/**")]) + ); + for (provider, pointer) in [ + ("go", "/gopls/directoryFilters"), + ("rust", "/rust-analyzer/files/exclude"), + ] { + let value = crate::lsp::languages::indexing::configuration( + provider, + &harness.session().root_uri, + None, + ) + .unwrap(); + assert!(value + .pointer(pointer) + .unwrap() + .as_array() + .unwrap() + .iter() + .any(|item| item + == if provider == "go" { + "-ignored" + } else { + "ignored" + })); + } + crate::project::indexing::release(crate::project::indexing::ReleaseIndexingRequest { + root: root.to_string_lossy().into_owned(), + revision: status.revision, + owner_id: None, + }) + .unwrap(); + } + #[test] fn indexing_watcher_rebuild_publishes_recomputed_git_exclusions_to_java() { let workspace = TemporaryMavenWorkspace::recursive("indexing-watcher-provider"); @@ -8843,6 +9066,7 @@ mod tests { engine().sessions.lock().unwrap().remove(&self.key); let _ = crate::project::indexing::release( crate::project::indexing::ReleaseIndexingRequest { + owner_id: None, root: self.root.to_string_lossy().into_owned(), revision: self.revision, }, @@ -8967,6 +9191,7 @@ mod tests { status.revision ); crate::project::indexing::release(crate::project::indexing::ReleaseIndexingRequest { + owner_id: None, root: root.to_string_lossy().into_owned(), revision: status.revision, }) diff --git a/rust/lithe-core/src/project/indexing.rs b/rust/lithe-core/src/project/indexing.rs index b7a4aac9a6..3ac02a554c 100644 --- a/rust/lithe-core/src/project/indexing.rs +++ b/rust/lithe-core/src/project/indexing.rs @@ -22,6 +22,9 @@ pub struct IndexingPolicy { /// Installs a policy before workspace consumers start; refresh discards Git decisions. pub struct ConfigureIndexingRequest { pub root: String, + /// Runtime identity. Omitted by legacy callers, which share one guarded lease. + #[serde(default)] + pub owner_id: Option, #[serde(flatten)] pub policy: IndexingPolicy, #[serde(default)] @@ -42,8 +45,10 @@ pub struct IndexingStatus { /// Immutable policy generation with lazily cached Git directory decisions. pub(crate) struct IndexingContext { pub(crate) revision: u64, - /// Host release token; watcher refreshes replace readers without changing ownership. + /// Legacy release token; watcher refreshes preserve host ownership. owner_revision: u64, + /// Shared across scan generations so one owner cannot retire another owner's root. + leases: Arc, IndexingLease>>>, root: PathBuf, policy: IndexingPolicy, decisions: Mutex>, @@ -52,6 +57,14 @@ pub(crate) struct IndexingContext { git_resolved: AtomicBool, } +/// A failed installer may reclaim a token only before any caller has received it. +struct IndexingLease { + revision: u64, + published: bool, + /// Remains releasable until a replacement token has actually been returned. + previous_published: Option, +} + static POLICIES: OnceLock>>> = OnceLock::new(); static REVISION: AtomicU64 = AtomicU64::new(1); @@ -82,30 +95,59 @@ fn validate_paths(paths: &mut Vec) -> Result<(), CoreError> { } /// Registers a project policy atomically. In-flight readers cannot publish a retired generation. -pub fn configure(mut request: ConfigureIndexingRequest) -> Result { +pub fn configure(request: ConfigureIndexingRequest) -> Result { + configure_with_provider_update(request, crate::lsp::indexing_changed) +} + +fn configure_with_provider_update( + mut request: ConfigureIndexingRequest, + update_provider: impl FnOnce(&Path) -> Result<(), CoreError>, +) -> Result { + if request + .owner_id + .as_ref() + .is_some_and(|owner| owner.is_empty()) + { + return Err(CoreError::new( + ErrorCode::InvalidRequest, + "Indexing owner is empty", + )); + } let root = existing_root(&request.root)?; validate_paths(&mut request.policy.manual_excluded_directories)?; validate_paths(&mut request.policy.included_directories)?; validate_paths(&mut request.paths)?; let mut changed = false; - let context = { + let (context, lease_revision, installed_lease) = { let mut entries = policies() .lock() .map_err(|_| CoreError::new(ErrorCode::Unknown, "Indexing policy lock was poisoned"))?; let unchanged = entries.get(&root).filter(|old| { old.policy == request.policy && !request.refresh && !old.retired.load(Ordering::Acquire) }); - if let Some(old) = unchanged { + let context = if let Some(old) = unchanged { Arc::clone(old) } else { changed = true; + let active = entries + .get(&root) + .filter(|old| !old.retired.load(Ordering::Acquire)); + let leases = active + .map(|old| Arc::clone(&old.leases)) + .unwrap_or_default(); + let legacy_revision = active.map(|old| old.owner_revision); if let Some(old) = entries.get(&root) { old.retired.store(true, Ordering::Release); } let revision = REVISION.fetch_add(1, Ordering::Relaxed); let next = Arc::new(IndexingContext { revision, - owner_revision: revision, + owner_revision: if request.owner_id.is_none() { + revision + } else { + legacy_revision.unwrap_or(revision) + }, + leases, root: root.clone(), policy: request.policy, decisions: Mutex::default(), @@ -115,41 +157,111 @@ pub fn configure(mut request: ConfigureIndexingRequest) -> Result Result, } pub fn release(request: ReleaseIndexingRequest) -> Result { + release_lease(request, false) +} + +fn release_lease( + request: ReleaseIndexingRequest, + only_unpublished: bool, +) -> Result { let requested = PathBuf::from(request.root); let root = super::search_index::canonicalize_with_missing_components(&requested).unwrap_or(requested); let entries = policies() .lock() .map_err(|_| CoreError::new(ErrorCode::Unknown, "Indexing policy lock was poisoned"))?; - let Some(context) = entries - .get(&root) - .filter(|context| context.owner_revision == request.revision) - else { + let Some(context) = entries.get(&root) else { + return Ok(false); + }; + let mut leases = context + .leases + .lock() + .map_err(|_| CoreError::new(ErrorCode::Unknown, "Indexing lease lock was poisoned"))?; + let Some(lease) = leases.get(&request.owner_id) else { return Ok(false); }; + let matches = lease.revision == request.revision + || (!only_unpublished && lease.previous_published == Some(request.revision)); + if !matches || (only_unpublished && lease.published) { + return Ok(false); + } + if only_unpublished { + if let Some(previous) = lease.previous_published { + leases.insert( + request.owner_id, + IndexingLease { + revision: previous, + published: true, + previous_published: None, + }, + ); + return Ok(false); + } + } + leases.remove(&request.owner_id); + if !leases.is_empty() { + return Ok(true); + } context.retired.store(true, Ordering::Release); context .decisions .lock() .map_err(|_| CoreError::new(ErrorCode::Unknown, "Indexing decision lock was poisoned"))? .clear(); + drop(leases); drop(entries); super::search_index::invalidate_root(&root); Ok(true) @@ -188,6 +337,12 @@ pub(crate) fn context(root: &Path) -> Option> { policies().lock().ok()?.get(root).cloned() } +/// Provider requests without a live owner retain their standalone behavior. +/// Retired records still cancel late inventory readers through `context`. +pub(crate) fn active_provider_context(root: &Path) -> Option> { + context(root).filter(|context| !context.retired.load(Ordering::Acquire)) +} + pub(crate) fn refresh(root: &Path) -> Result<(), CoreError> { { let mut entries = policies() @@ -201,6 +356,7 @@ pub(crate) fn refresh(root: &Path) -> Result<(), CoreError> { let next = Arc::new(IndexingContext { revision: REVISION.fetch_add(1, Ordering::Relaxed), owner_revision: old.owner_revision, + leases: Arc::clone(&old.leases), root: old.root.clone(), policy: old.policy.clone(), decisions: Mutex::default(), @@ -218,9 +374,11 @@ pub(crate) fn refresh(root: &Path) -> Result<(), CoreError> { /// Resolve native Git decisions before a live provider receives a new generation. /// This reuses the inventory walker (no file text reads) and prunes excluded trees. -pub(crate) fn prepare_provider_exclusions(root: &Path) -> Result<(), CoreError> { - let Some(context) = context(root) else { - return Ok(()); +pub(crate) fn prepare_provider_exclusions( + root: &Path, +) -> Result>, CoreError> { + let Some(context) = active_provider_context(root) else { + return Ok(None); }; context.check()?; if context.policy.git_ignore_enabled && !context.git_resolved.load(Ordering::Acquire) { @@ -235,7 +393,7 @@ pub(crate) fn prepare_provider_exclusions(root: &Path) -> Result<(), CoreError> context.check()?; context.git_resolved.store(true, Ordering::Release); } - Ok(()) + Ok(Some(context)) } fn contains(directory: &str, path: &str) -> bool { @@ -401,7 +559,7 @@ pub(crate) fn is_excluded(root: &Path, path: &Path, is_directory: bool) -> Resul /// Resolved roots for provider adapters. Git decisions are populated by the project scan. pub(crate) fn excluded_roots(root: &Path) -> Vec { - let Some(context) = context(root) else { + let Some(context) = active_provider_context(root) else { return Vec::new(); }; let mut roots = context.policy.manual_excluded_directories.clone(); @@ -437,6 +595,9 @@ pub(crate) fn uri_is_excluded(root_uri: &str, uri: &str) -> Result { let relative = path.strip_prefix(&root).unwrap_or(&path).to_path_buf(); let root = root.canonicalize().unwrap_or(root); + if active_provider_context(&root).is_none() { + return Ok(false); + } is_excluded(&root, &root.join(relative), false) } _ => Ok(false), @@ -640,6 +801,7 @@ mod tests { assert_eq!(search(&parent.0, &[]).matches.len(), 3); let status = context(&nested.0).unwrap(); release(ReleaseIndexingRequest { + owner_id: None, root: nested.0.to_string_lossy().into_owned(), revision: status.owner_revision, }) @@ -830,6 +992,7 @@ mod tests { assert!(before.check().is_err()); assert_eq!(workspace.files(), ["src/Included.java"]); assert!(release(ReleaseIndexingRequest { + owner_id: None, root: workspace.0.to_string_lossy().into_owned(), revision: installed.revision, }) @@ -845,6 +1008,7 @@ mod tests { ); let reopened = workspace.configure(&[], &[], false); assert!(!release(ReleaseIndexingRequest { + owner_id: None, root: workspace.0.to_string_lossy().into_owned(), revision: installed.revision, }) @@ -859,6 +1023,7 @@ mod tests { let first = workspace.configure(&[], &[], false); let old = context(&workspace.0).unwrap(); assert!(release(ReleaseIndexingRequest { + owner_id: None, root: workspace.0.to_string_lossy().into_owned(), revision: first.revision }) @@ -867,6 +1032,7 @@ mod tests { let second = workspace.configure(&["ignored"], &[], false); assert!(second.revision > first.revision); assert!(!release(ReleaseIndexingRequest { + owner_id: None, root: workspace.0.to_string_lossy().into_owned(), revision: first.revision }) @@ -874,6 +1040,171 @@ mod tests { assert_eq!(workspace.files(), ["src/Included.java"]); } + #[test] + fn shared_root_leases_survive_other_owner_refresh_close_and_late_release() { + let workspace = Workspace::new(); + let install = |owner: &str, excluded: bool, refresh: bool| { + configure(serde_json::from_value(json!({ + "root": workspace.0, "ownerId": owner, "manualExcludedDirectories": if excluded { vec!["ignored"] } else { vec![] }, + "includedDirectories": [], "gitIgnoreEnabled": false, "refresh": refresh + })).unwrap()).unwrap().revision + }; + let close = |owner: &str, revision| { + release(ReleaseIndexingRequest { + root: workspace.0.to_string_lossy().into_owned(), + owner_id: Some(owner.into()), + revision, + }) + .unwrap() + }; + let first = install("window-a/workspace-a", false, false); + let second = install("window-b/workspace-b", false, false); + assert_ne!(first, second); + assert!( + !release_lease( + ReleaseIndexingRequest { + root: workspace.0.to_string_lossy().into_owned(), + owner_id: Some("window-b/workspace-b".into()), + revision: second, + }, + true + ) + .unwrap(), + "a failed concurrent installer cannot reclaim a token already returned to a caller" + ); + assert!(close("window-a/workspace-a", first)); + assert_eq!( + workspace.files().len(), + 2, + "the other workspace still owns this root" + ); + let reopened = install("window-a/workspace-reopened", true, true); + assert!(!close("window-a/workspace-a", first)); + assert!( + close("window-b/workspace-b", second), + "policy replacement preserves other leases" + ); + refresh(&workspace.0).unwrap(); + assert_eq!(workspace.files(), ["src/Included.java"]); + let replacement = install("window-a/workspace-reopened", false, true); + assert!(!close("window-a/workspace-reopened", reopened)); + assert_eq!(workspace.files().len(), 2); + assert!(close("window-a/workspace-reopened", replacement)); + assert!(context(&workspace.0).unwrap().check().is_err()); + assert!( + refresh(&workspace.0).is_err(), + "watchers must not resurrect the last closed lease" + ); + } + + #[test] + fn cancelled_reconfiguration_preserves_the_last_published_owner_lease() { + let workspace = Workspace::new(); + let request = |owner: &str, excluded: bool, refresh: bool| { + serde_json::from_value(json!({ + "root":workspace.0,"ownerId":owner,"manualExcludedDirectories":if excluded {vec!["ignored"]} else {vec![]}, + "includedDirectories":[],"gitIgnoreEnabled":false,"refresh":refresh + })).unwrap() + }; + let original = configure(request("owner-a", false, false)).unwrap(); + let mut other = 0; + let cancelled = configure_with_provider_update(request("owner-a", false, true), |_| { + other = configure(request("owner-b", true, false))?.revision; + Ok(()) + }); + assert!(matches!( + cancelled, + Err(CoreError { + code: ErrorCode::Cancelled, + .. + }) + )); + assert!(release(ReleaseIndexingRequest { + root: workspace.0.to_string_lossy().into_owned(), + owner_id: Some("owner-b".into()), + revision: other + }) + .unwrap()); + assert_eq!( + workspace.files(), + ["src/Included.java"], + "the still-open owner keeps the latest root policy alive" + ); + assert!(release(ReleaseIndexingRequest { + root: workspace.0.to_string_lossy().into_owned(), + owner_id: Some("owner-a".into()), + revision: original.revision + }) + .unwrap()); + assert!(context(&workspace.0).unwrap().check().is_err()); + } + + #[test] + fn cancelled_installer_cannot_withdraw_a_shared_token_returned_by_another_call() { + let workspace = Workspace::new(); + let request = |owner: &str, excluded: bool| { + serde_json::from_value(json!({ + "root":workspace.0,"ownerId":owner,"manualExcludedDirectories":if excluded {vec!["ignored"]} else {vec![]}, + "includedDirectories":[],"gitIgnoreEnabled":false + })).unwrap() + }; + let mut received = 0; + let mut other = 0; + let cancelled = configure_with_provider_update(request("owner-a", false), |_| { + received = configure(request("owner-a", false))?.revision; + other = configure(request("owner-b", true))?.revision; + Ok(()) + }); + assert!(cancelled.is_err()); + assert!(release(ReleaseIndexingRequest { + root: workspace.0.to_string_lossy().into_owned(), + owner_id: Some("owner-b".into()), + revision: other + }) + .unwrap()); + assert_eq!(workspace.files(), ["src/Included.java"]); + assert!(release(ReleaseIndexingRequest { + root: workspace.0.to_string_lossy().into_owned(), + owner_id: Some("owner-a".into()), + revision: received + }) + .unwrap()); + } + + #[test] + fn closing_the_published_lease_also_cancels_an_unpublished_replacement() { + let workspace = Workspace::new(); + let request = |refresh| { + serde_json::from_value(json!({ + "root":workspace.0,"ownerId":"owner-a","manualExcludedDirectories":[],"includedDirectories":[],"gitIgnoreEnabled":false,"refresh":refresh + })).unwrap() + }; + let original = configure(request(false)).unwrap(); + let cancelled = configure_with_provider_update(request(true), |_| { + assert!(release(ReleaseIndexingRequest { + root: workspace.0.to_string_lossy().into_owned(), + owner_id: Some("owner-a".into()), + revision: original.revision + })?); + Ok(()) + }); + assert!(cancelled.is_err()); + assert!(context(&workspace.0).unwrap().check().is_err()); + } + + #[test] + fn provider_preparation_returns_the_exact_generation_that_was_scanned() { + let workspace = Workspace::new(); + workspace.configure(&[], &[], true); + let prepared = prepare_provider_exclusions(&workspace.0).unwrap().unwrap(); + assert!(prepared.git_resolved.load(Ordering::Acquire)); + refresh(&workspace.0).unwrap(); + assert!(prepared.check().is_err()); + let next = context(&workspace.0).unwrap(); + assert!(!next.git_resolved.load(Ordering::Acquire)); + assert!(next.check().is_ok()); + } + #[test] fn git_negation_nested_rules_new_directories_and_unicode_are_native() { let workspace = Workspace::new(); diff --git a/scripts/ci/common/classify-ci-changes.sh b/scripts/ci/common/classify-ci-changes.sh index 2399285742..5e7e209208 100755 --- a/scripts/ci/common/classify-ci-changes.sh +++ b/scripts/ci/common/classify-ci-changes.sh @@ -214,7 +214,7 @@ classify_path() { swift=true macos_release=true ;; - macos/sources/lithegitmodule/*|macos/sources/lithe/application/composition/gitmodulecoordinator.swift|macos/sources/lithe/models/appmodel/appmodel+git*|macos/sources/lithe/models/bridges/gitmodulebridges.swift|macos/sources/lithe/platform/macos/storage/macgit*|macos/sources/lithe/views/git/*) + macos/sources/lithegitmodule/*|macos/sources/litheworkspacemodule/application/workspacefeaturemodel.swift|macos/sources/lithe/application/composition/gitmodulecoordinator.swift|macos/sources/lithe/models/appmodel/appmodel+git*|macos/sources/lithe/models/bridges/gitmodulebridges.swift|macos/sources/lithe/platform/macos/storage/macgit*|macos/sources/lithe/views/git/*) swift=true git_validation=true ;; diff --git a/scripts/ci/common/test-classify-ci-changes.sh b/scripts/ci/common/test-classify-ci-changes.sh index 96daed9758..89141cf53c 100755 --- a/scripts/ci/common/test-classify-ci-changes.sh +++ b/scripts/ci/common/test-classify-ci-changes.sh @@ -137,6 +137,10 @@ modify_unknown_script() { printf '%s\n' '#!/bin/zsh' 'print -- unknown' > script modify_swift_source() { printf '%s\n' 'struct UpdatedApp {}' > macos/Sources/Lithe/App.swift; } modify_swift_bridge() { printf '%s\n' 'struct UpdatedRustCoreBridge {}' > macos/Sources/Lithe/Core/Rust/RustCoreBridge.swift; } modify_git_source() { printf '%s\n' 'struct UpdatedGitFeature {}' > macos/Sources/LitheGitModule/GitFeature.swift; } +modify_workspace_git_observation() { + mkdir -p macos/Sources/LitheWorkspaceModule/Application + printf '%s\n' 'struct UpdatedWorkspaceFeature {}' > macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift +} modify_git_performance_test() { printf '%s\n' 'struct UpdatedGitPerformanceTests {}' > macos/Tests/LitheGitPerformanceTests/GitPerformanceTests.swift; } modify_swift_test() { printf '%s\n' 'struct UpdatedAppTests {}' > macos/Tests/LitheTests/AppTests.swift; } modify_plugin_manifest() { printf '%s\n' '{"id":"dev.lithe.go-support","version":"2.0.0"}' > Plugins/mac/Official/GoSupport/plugin.json; } @@ -257,6 +261,9 @@ assert_classification swift-bridge \ assert_classification git-source \ "$(classification true false false false false false false false true)" \ modify_git_source +assert_classification workspace-git-observation \ + "$(classification true false false false false false false false true)" \ + modify_workspace_git_observation assert_classification git-performance-test \ "$(classification true false false false false false false false true)" \ modify_git_performance_test diff --git a/shared/contracts/rust-core-api.md b/shared/contracts/rust-core-api.md index 9f2556dbcb..db247ad25c 100644 --- a/shared/contracts/rust-core-api.md +++ b/shared/contracts/rust-core-api.md @@ -975,7 +975,7 @@ package manager owns the download and Lithe does not infer bytes from logs. | `community.discourse.search` | Search normalized topics and sanitized posts | | `editor.lineEdit` | Apply a deterministic line-level text transform and return the replacement plus selection to restore | | `editor.lineCommentToken` | Resolve the line comment token for a file extension or language id | -| `workspace.releaseIndexing` | Retire a policy and clear index/cache data at project close; accepts `root` and the last observed `revision`, returns `released`; an old close must not retire a new generation | +| `workspace.releaseIndexing` | Retire a policy and clear index/cache data at project close; accepts `root`, optional `ownerId`, and that owner's last observed `revision`, returns `released`; an old close must not retire a new generation | | `workspace.configureIndexing` | Install a process-local, canonical-root indexing policy before workspace consumers run; returns a monotonic revision, effective directory reasons and Git failure state; see `shared/fixtures/workspace/indexing-policy-v1.json` | | `workspace.snapshot` | Enumerate visible workspace nodes and relative file paths; `nestedWorktrees` lists linked worktrees checked out inside their own repository, which are left out of the tree, files, and search index ; `includeTree: false` returns only `files` and a childless `root`; `files` (and the tree, when included) keep the lowercase traversal order that bounded consumers such as Windows Quick Open rely on, not the natural display order of `workspace.listDirectories` | | `workspace.filterChanges` | Filter an array of workspace-relative paths against Core's default build/cache exclusions; preserve order, spelling, and the empty root path. Native event loss bypasses filtering. Hosts relativize to the most specific explicit watch root and retain explicitly watched files. | @@ -4378,8 +4378,14 @@ traversable. Standalone ignored files are not converted to directory exclusions. Git checks use native `check-ignore` and protect tracked descendants with `ls-files`. No `.gitignore`, index, or project configuration files are written by this command. -`revision` is the host-owned release token. Explicit policy replacement or refresh -creates a new token; internal Git watcher refreshes retain it while advancing a +`ownerId` optionally identifies one workspace runtime lifetime. Independent runtimes +using the same canonical root hold independent leases. Hosts acquire/release leases +with workspace membership, never with tool-window or tree mounting. Omitting +`ownerId` retains the legacy revision-guarded lease. A native window host must reclaim +its leases on destruction, including installations that finish after destruction. + +`revision` is the requesting owner's release token. Explicit policy replacement or refresh +replaces only that owner's token; other owners retain their valid release tokens; internal Git watcher refreshes retain it while advancing a separate Core-only scan generation used by index and language-service caches. Changing settings or `refresh: true` retires the old generation and discards its cache. Hosts persist settings in application storage and reinstall them on project @@ -4400,8 +4406,8 @@ other providers may continue background scanning and hosts must display that lim `workspace.snapshot.incompleteDirectories` is present when optional child directories could not be scanned. Hosts retain browsing but must not treat that inventory as an authoritative deletion list or refresh automatic analysis from it. Root failures and -cancellation remain errors. `workspace.releaseIndexing` retires the revision and clears -cached Git decisions and indexes; a small retired policy record rejects late work +cancellation remain errors. `workspace.releaseIndexing` removes only the matching owner/token lease. The last +release retires the policy and clears cached Git decisions and indexes; a small retired policy record rejects late work until the next explicit configuration for that root. `workspace.search.scopePaths` optionally limits candidates to workspace-relative diff --git a/shared/fixtures/workspace/indexing-policy-v1.json b/shared/fixtures/workspace/indexing-policy-v1.json index 774aa2b480..62f9788c91 100644 --- a/shared/fixtures/workspace/indexing-policy-v1.json +++ b/shared/fixtures/workspace/indexing-policy-v1.json @@ -14,7 +14,8 @@ "paths": [ "vendor", "generated" - ] + ], + "ownerId": "window-one/workspace-one" }, "response": { "revision": 1, @@ -47,5 +48,22 @@ "nestedRegistered": false, "parentScopedMatches": 1 } + ], + "leaseCases": [ + { + "owners": [ + "window-one/workspace-one", + "window-two/workspace-two" + ], + "releasedOwner": "window-one/workspace-one", + "rootRetired": false + }, + { + "owners": [ + "window-two/workspace-two" + ], + "releasedOwner": "window-two/workspace-two", + "rootRetired": true + } ] } diff --git a/shared/i18n/locales/en-US.json b/shared/i18n/locales/en-US.json index e25d43dd88..0c41a000d3 100644 --- a/shared/i18n/locales/en-US.json +++ b/shared/i18n/locales/en-US.json @@ -9567,7 +9567,9 @@ "indexing.invalidSettings": "Project indexing settings are invalid. The saved data has been preserved.", "indexing.readFailed": "Could not read project indexing settings. Try reopening the project.", "indexing.writeFailed": "Could not save project indexing settings. Your previous settings remain unchanged.", - "indexing.configureFailed": "Could not apply project indexing exclusions. Try reopening the project." + "indexing.configureFailed": "Could not apply project indexing exclusions. Try reopening the project.", + "indexing.workspaceUnavailable": "The project folder is unavailable. Restore it, then retry.", + "indexing.permissionDenied": "Lithe cannot access the project folder. Check its permissions, then retry." }, "overrides": { "windows": { diff --git a/shared/i18n/locales/zh-CN.json b/shared/i18n/locales/zh-CN.json index 2aed06b07d..a062c697bb 100644 --- a/shared/i18n/locales/zh-CN.json +++ b/shared/i18n/locales/zh-CN.json @@ -9567,7 +9567,9 @@ "indexing.invalidSettings": "项目索引设置格式无效,原始设置已保留。", "indexing.readFailed": "无法读取项目索引设置,请重新打开项目后重试。", "indexing.writeFailed": "无法保存项目索引设置,原有设置未改变。", - "indexing.configureFailed": "无法应用项目索引排除策略,请重新打开项目后重试。" + "indexing.configureFailed": "无法应用项目索引排除策略,请重新打开项目后重试。", + "indexing.workspaceUnavailable": "项目目录不可用。请恢复目录后重试。", + "indexing.permissionDenied": "Lithe 无法访问项目目录。请检查权限后重试。" }, "overrides": { "macos": { diff --git a/shared/i18n/messages.json b/shared/i18n/messages.json index 5f1ac781a2..4fc74a1a8f 100644 --- a/shared/i18n/messages.json +++ b/shared/i18n/messages.json @@ -91342,29 +91342,73 @@ "id": "indexing.invalidSettings", "description": "Project indexing settings failure", "platforms": [ + "macos", "windows" - ] + ], + "macos": { + "key": "Project indexing settings are invalid. The saved data has been preserved.", + "arguments": [] + } }, { "id": "indexing.readFailed", "description": "Project indexing settings failure", "platforms": [ + "macos", "windows" - ] + ], + "macos": { + "key": "Could not read project indexing settings. Try reopening the project.", + "arguments": [] + } }, { "id": "indexing.writeFailed", "description": "Project indexing settings failure", "platforms": [ + "macos", "windows" - ] + ], + "macos": { + "key": "Could not save project indexing settings. Your previous settings remain unchanged.", + "arguments": [] + } }, { "id": "indexing.configureFailed", "description": "Project indexing settings failure", "platforms": [ + "macos", "windows" - ] + ], + "macos": { + "key": "Could not apply project indexing exclusions. Try reopening the project.", + "arguments": [] + } + }, + { + "id": "indexing.workspaceUnavailable", + "description": "Project indexing failure", + "platforms": [ + "macos", + "windows" + ], + "macos": { + "key": "The project folder is unavailable. Restore it, then retry.", + "arguments": [] + } + }, + { + "id": "indexing.permissionDenied", + "description": "Project indexing failure", + "platforms": [ + "macos", + "windows" + ], + "macos": { + "key": "Lithe cannot access the project folder. Check its permissions, then retry.", + "arguments": [] + } } ] } diff --git a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json index e9b4258dcb..7a49cfe610 100644 --- a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json +++ b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json @@ -4,7 +4,7 @@ "group": "工作区生命周期", "capability": "目录索引排除与 Git 自动排除", "owner": "Workspace", - "verification": "两端开关已统一到设置 › 版本控制 › Git,移除原索引/项目环境入口。macOS 自动排除使用与凭据助手相同的小型 switch 样式,已在真实 App 目视核对;Windows 两项沿用同一个 Checkbox。真实 macOS App 已验证中文索引/忽略搜索定位、无项目禁用、默认开启、启闭重启和取消排除例外持久化。2026-10-30 同一开发构建的隔离英文原生实例补验通过:普通目录六项标记、继承排除仅取消排除且须由父级恢复、全局/仓库 Git 范围往返保持项目 A 的关闭值,项目 B 仍默认开启;两项目搜索结果分别符合开关值。Git 配置与忽略文件未变,原开发包 757 文件清单及哈希不变。此前 48 项 Swift、20 项前端定向测试通过,包含子仓库隔离和存储失败(本机 Swift 6.4,前端在 macOS/Bun 运行)。固定 Xcode 26.6 仍待验证;Windows 原生按用户要求不执行。Java 已导入项目仍可能扫描,Maven 显式模块保留;Go/Rust 原生配置与同步门禁已验证,不保证零后台目录访问。 2026-10-30 整合 preview fbb5e578 后修复刷新期间策略变更、watcher 刷新后的释放句柄、Java 原有导入排除保留、Windows 附加根菜单范围及远程误导提示;补充回归覆盖项目切换/同根重开/关闭期间的在途配置回收、跨工作区根移动目录的标记与例外迁移,以及先刷新策略再扫描时保留语言服务 Git 排除;TypeScript 类型检查通过。指定目录查找按用户要求暂不调整;远程索引排除未实现,明确显示不支持。 最终定向计时回归通过:Swift 79 项(6.4)、Rust 57 项、macOS/Bun 前端 26 项及相关回归 25 项;新增配额失败逆序回滚与可见性规则同根重开隔离。 本轮修复 Windows LSP 最近根查询、远程设置能力与本地化错误、多根请求的父根扫描剪枝和缓存回填边界,并修正两项 Java 排除测试的跨平台路径期望。本机最终 Core 1371 项单元及 32 项集成测试通过,相关索引/LSP 22 项逐项计时通过;macOS/Bun 前端 42 项与 TypeScript 检查通过,覆盖失效根限定搜索、根增删后的工作副本关闭/恢复及旧结果拒绝。独立 Swift/C ABI 探针通过,但整应用验证因缺 Metal Toolchain 中断,工具链为 Swift 6.4。Windows 原生验证尚未完成:本机 Parallels 命令链接指向已不存在的应用,不能据此标记 verified。", + "verification": "本地索引策略与目录浏览分离,Git 开关位于设置 › 版本控制 › Git;远程根明确禁用,不扩展远程索引能力。2026-10-30/31 的 Core 1379 项单元与 32 项集成测试、1411 项逐项计时、Swift 67 项定向计时,以及 macOS/Bun 设置、租约和目录角色 37 项回归与相关 tree/LSP/quick 分组通过,TypeScript 检查通过。覆盖共享根 owner 租约、迟到安装/释放、缓存 pane 身份、跨窗口 storage、普通目录与取消排除、冷启动排除、首次失败/重试及刷新保树。真实 macOS App 已验证普通目录不创建包含例外、Git 排除与取消排除搜索、同窗口项目切换、外部 stage/commit 自动更新、真实 JDT 冷启动仅导入 visible 且返回 print 补全,以及中英文错误的即时双向切换和损坏配置保留;1404 个包文件哈希及符号链接未变。本机为 Swift 6.4,最终固定 Xcode 26.6 CI 尚待最终 SHA;正在整合最新 preview 并补充剩余 Native 验收。Windows 原生界面未验收,前端本机 Bun 结果不能替代 Windows UI。Java 已导入资源与构建系统显式模块仍可能扫描,Go/Rust 仅合并原生配置,不保证零后台目录访问。", "macos": { "implementationStatus": "partial", "verificationStatus": "pending", @@ -19,7 +19,9 @@ "macos/Sources/Lithe/Views/App/GitExecutionSettingsView.swift", "macos/Tests/LitheTests/SettingsSearchVocabularyTests.swift", ".agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md", - "macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift" + "macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift", + "macos/Tests/LitheTests/WorkspaceSessionCoordinatorTests.swift", + "macos/Tests/LitheTests/GitStatusObservationTests.swift" ] }, "windows": { @@ -40,7 +42,9 @@ "windows/tauri/src/features/file-search/lib/file-search-api.test.ts", "windows/tauri/src/features/file-search/hooks/use-fff-search.test.tsx", "windows/tauri/src/features/file-explorer/stores/workspace-indexing.test.ts", - "windows/tauri/src/features/editor/hooks/use-lsp-integration-indexing.test.tsx" + "windows/tauri/src/features/editor/hooks/use-lsp-integration-indexing.test.tsx", + "windows/tauri/src-tauri/src/core.rs", + "windows/tauri/src/features/workspace/services/workspace-lifecycle.ts" ] } } diff --git a/windows/tauri/src-tauri/src/core.rs b/windows/tauri/src-tauri/src/core.rs index bfb12c0caa..82298342fe 100644 --- a/windows/tauri/src-tauri/src/core.rs +++ b/windows/tauri/src-tauri/src/core.rs @@ -1,19 +1,129 @@ -#[tauri::command] -pub async fn core_execute(request: String) -> String { - tauri::async_runtime::spawn_blocking(move || lithe_core::execute_json(&request)) - .await - .unwrap_or_else(|error| { - serde_json::json!({ - "id": null, - "ok": false, - "error": { - "code": "unknown", - "message": "The shared core operation could not complete", - "details": error.to_string() +use std::collections::{HashMap, HashSet}; +use std::sync::{Mutex, OnceLock}; + +#[derive(Default)] +struct WindowIndexingOwners { + closed: HashSet, + leases: HashMap>, +} + +fn indexing_owners() -> &'static Mutex { + static OWNERS: OnceLock> = OnceLock::new(); + OWNERS.get_or_init(Mutex::default) +} + +fn cancelled_indexing(id: serde_json::Value) -> String { + serde_json::json!({"id":id,"ok":false,"error":{"code":"cancelled","message":"Workspace window closed"}}).to_string() +} + +fn execute_for_window(owner: &str, request: &str, execute: impl Fn(&str) -> String) -> String { + let Ok(mut value) = serde_json::from_str::(request) else { + return execute(request); + }; + let configuring = value["command"] == "workspace.configureIndexing"; + let releasing = value["command"] == "workspace.releaseIndexing"; + if !configuring && !releasing { + return execute(request); + } + let (Some(runtime), Some(root)) = ( + value["payload"]["ownerId"].as_str(), + value["payload"]["root"].as_str(), + ) else { + return execute(request); + }; + // The native label is trusted; a WebView cannot acquire another window's lease. + let runtime = format!("{owner}/{runtime}"); + let root = root.to_owned(); + value["payload"]["ownerId"] = serde_json::json!(runtime); + { + let mut owners = indexing_owners() + .lock() + .unwrap_or_else(|error| error.into_inner()); + if owners.closed.contains(owner) { + return cancelled_indexing(value["id"].clone()); + } + owners.leases.entry(owner.to_owned()).or_default(); + } + let response = execute(&value.to_string()); + let Ok(result) = serde_json::from_str::(&response) else { + return response; + }; + if result["ok"] != true { + return response; + } + let revision = if configuring { + result["data"]["revision"].as_u64() + } else { + value["payload"]["revision"].as_u64() + }; + let Some(revision) = revision else { + return response; + }; + let closed = { + let mut owners = indexing_owners() + .lock() + .unwrap_or_else(|error| error.into_inner()); + let closed = owners.closed.contains(owner); + if !closed { + let leases = owners.leases.entry(owner.to_owned()).or_default(); + let key = (root.clone(), runtime.clone()); + if configuring { + leases.insert(key, revision); + } else if leases.get(&key) == Some(&revision) { + leases.remove(&key); + } + } + closed + }; + if closed && configuring { + // Destruction may win while Core is installing the policy. Reclaim the + // returned token here, after the destroy callback drained earlier tokens. + execute(&serde_json::json!({"command":"workspace.releaseIndexing","payload":{"root":root,"ownerId":runtime,"revision":revision}}).to_string()); + return cancelled_indexing(value["id"].clone()); + } + response +} + +/// Native destruction is the fallback when a WebView cannot run workspace teardown. +pub fn close_window_indexing(owner: &str) { + let leases = { + let mut owners = indexing_owners() + .lock() + .unwrap_or_else(|error| error.into_inner()); + owners.closed.insert(owner.to_owned()); + owners.leases.remove(owner).unwrap_or_default() + }; + tauri::async_runtime::spawn_blocking(move || { + for ((root, owner_id), revision) in leases { + let response = lithe_core::execute_json(&serde_json::json!({"command":"workspace.releaseIndexing","payload":{"root":root,"ownerId":owner_id,"revision":revision}}).to_string()); + if let Ok(value) = serde_json::from_str::(&response) { + if value["ok"] != true { + eprintln!("Could not release window indexing: {}", value["error"]); } - }) - .to_string() + } + } + }); +} + +#[tauri::command] +pub async fn core_execute(window: tauri::WebviewWindow, request: String) -> String { + let owner = window.label().to_owned(); + tauri::async_runtime::spawn_blocking(move || { + execute_for_window(&owner, &request, lithe_core::execute_json) + }) + .await + .unwrap_or_else(|error| { + serde_json::json!({ + "id": null, + "ok": false, + "error": { + "code": "unknown", + "message": "The shared core operation could not complete", + "details": error.to_string() + } }) + .to_string() + }) } #[tauri::command] @@ -50,3 +160,59 @@ pub fn close_ide_hosts(owner: &str) { } } } + +#[cfg(test)] +mod indexing_tests { + use super::*; + use serde_json::{json, Value}; + use std::cell::RefCell; + + #[test] + fn native_destruction_reclaims_an_installation_that_finishes_after_close() { + let owner = "indexing-close-during-install"; + let calls = RefCell::new(Vec::::new()); + let response = execute_for_window(owner, &json!({"id":"late", "command":"workspace.configureIndexing", "payload":{"root":"C:/fixture", "ownerId":"workspace-one"}}).to_string(), |request| { + let value: Value = serde_json::from_str(request).unwrap(); + calls.borrow_mut().push(value.clone()); + if value["command"] == "workspace.configureIndexing" { + indexing_owners().lock().unwrap().closed.insert(owner.to_owned()); + json!({"ok":true,"data":{"revision":7}}).to_string() + } else { json!({"ok":true,"data":{"released":true}}).to_string() } + }); + let response: Value = serde_json::from_str(&response).unwrap(); + assert_eq!(response["error"]["code"], "cancelled"); + let calls = calls.borrow(); + assert_eq!(calls.len(), 2); + assert_eq!( + calls[0]["payload"]["ownerId"], + format!("{owner}/workspace-one") + ); + assert_eq!(calls[1]["command"], "workspace.releaseIndexing"); + assert_eq!(calls[1]["payload"]["revision"], 7); + let mut owners = indexing_owners().lock().unwrap(); + owners.closed.remove(owner); + owners.leases.remove(owner); + } + + #[test] + fn late_release_keeps_the_new_native_cleanup_token() { + let owner = "indexing-late-release"; + let request = |command: &str, revision: u64| { + json!({"command":command,"payload":{"root":"C:/fixture","ownerId":"workspace-one","revision":revision}}).to_string() + }; + for revision in [1, 2] { + execute_for_window(owner, &request("workspace.configureIndexing", 0), |_| { + json!({"ok":true,"data":{"revision":revision}}).to_string() + }); + } + execute_for_window(owner, &request("workspace.releaseIndexing", 1), |_| { + json!({"ok":true,"data":{"released":false}}).to_string() + }); + let mut owners = indexing_owners().lock().unwrap(); + assert_eq!( + owners.leases[owner][&("C:/fixture".into(), format!("{owner}/workspace-one"))], + 2 + ); + owners.leases.remove(owner); + } +} diff --git a/windows/tauri/src-tauri/src/main.rs b/windows/tauri/src-tauri/src/main.rs index 9648749696..e70052f332 100644 --- a/windows/tauri/src-tauri/src/main.rs +++ b/windows/tauri/src-tauri/src/main.rs @@ -164,6 +164,7 @@ fn main() { plugin_host::lifecycle::window_destroyed(window.app_handle(), window.label()); run::release_window_processes(window.label()); core::close_ide_hosts(window.label()); + core::close_window_indexing(window.label()); agent::close_window_connections(window.label()); terminal::close_window_terminals(window.app_handle(), window.label()); project_windows::release_window(window.app_handle(), window.label().to_owned()); diff --git a/windows/tauri/src/features/editor/hooks/use-lsp-integration-indexing.test.tsx b/windows/tauri/src/features/editor/hooks/use-lsp-integration-indexing.test.tsx index 2e921e4e5c..d25cb2520c 100644 --- a/windows/tauri/src/features/editor/hooks/use-lsp-integration-indexing.test.tsx +++ b/windows/tauri/src/features/editor/hooks/use-lsp-integration-indexing.test.tsx @@ -90,7 +90,7 @@ test("adding and removing a nested root reevaluates an open document's LSP polic ); await flush(); expect(events).toEqual(["open", "close", "stop"]); - expect(configure).toHaveBeenLastCalledWith("C:/main/nested", ["src"]); + expect(configure).toHaveBeenLastCalledWith("C:/main/nested", ["src"], false, workspaceId); await act(async () => store.setState({ workspaceFolders: [] })); await flush(); expect(events).toEqual(["open", "close", "stop", "open"]); diff --git a/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts b/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts index 327f9da54d..b085813442 100644 --- a/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts +++ b/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts @@ -15,7 +15,7 @@ import { useBufferStore } from "@/features/editor/stores/buffer.store"; import { getSourceEditorBufferByPath } from "@/features/editor/utils/buffer-index"; import { logger } from "@/features/editor/utils/logger"; import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; -import { useActiveWorkspaceId } from "@/features/workspace/stores/create-workspace-scoped-store"; +import { useWorkspaceId } from "@/features/workspace/stores/create-workspace-scoped-store"; import { workspaceScopeMatchesRoot } from "@/features/workspace/types/workspace-launch-scope"; import { getDirName } from "@/utils/path-helpers"; @@ -71,11 +71,11 @@ export const useLspIntegration = ({ filePath, contentRevision = 0, }: UseLspIntegrationOptions) => { - const indexingVersion = useIndexingVersion(); const lspClient = useMemo(() => LspClient.getInstance(), []); - const workspaceId = useActiveWorkspaceId(); + const workspaceId = useWorkspaceId(); const rootFolderPath = useFileSystemStore((state) => state.rootFolderPath); const workspaceFolders = useFileSystemStore((state) => state.workspaceFolders); + const indexingVersion = useIndexingVersion(getNativeWorkspaceRootPaths(rootFolderPath, workspaceFolders)); // Root membership changes must withdraw old attachments even when settings are unchanged. const indexingKey = JSON.stringify([ workspaceId, indexingVersion, getNativeWorkspaceRootPaths(rootFolderPath, workspaceFolders), diff --git a/windows/tauri/src/features/editor/lsp/lsp-client-indexing.test.ts b/windows/tauri/src/features/editor/lsp/lsp-client-indexing.test.ts index da397d963c..70e38dbdab 100644 --- a/windows/tauri/src/features/editor/lsp/lsp-client-indexing.test.ts +++ b/windows/tauri/src/features/editor/lsp/lsp-client-indexing.test.ts @@ -41,7 +41,7 @@ test.each([ try { expect((await client.startForFile(file, scope)).kind).toBe("attached"); expect(starts).toEqual([scope]); - if (owner) expect(configure).toHaveBeenCalledWith(owner, [parent]); + if (owner) expect(configure).toHaveBeenCalledWith(owner, [parent], false, workspaceId); else expect(configure).not.toHaveBeenCalled(); if (owner) { configure.mockResolvedValue({ diff --git a/windows/tauri/src/features/editor/lsp/lsp-client.ts b/windows/tauri/src/features/editor/lsp/lsp-client.ts index 06325b5139..0d10294dac 100644 --- a/windows/tauri/src/features/editor/lsp/lsp-client.ts +++ b/windows/tauri/src/features/editor/lsp/lsp-client.ts @@ -902,7 +902,7 @@ export class LspClient { if (root) { const relative = getRelativePath(filePath, root); const parent = relative.includes("/") ? relative.slice(0, relative.lastIndexOf("/")) : "."; - const indexing = await configureWorkspaceIndexing(root, [parent]); + const indexing = await configureWorkspaceIndexing(root, [parent], false, scope.workspaceId); if (policyRoot() !== root) return { kind: "cancelled", reason: "superseded" }; if ( Object.keys(indexing.excludedDirectories).some( diff --git a/windows/tauri/src/features/file-explorer/components/file-explorer-tree.tsx b/windows/tauri/src/features/file-explorer/components/file-explorer-tree.tsx index baa7222a93..66c7a33966 100644 --- a/windows/tauri/src/features/file-explorer/components/file-explorer-tree.tsx +++ b/windows/tauri/src/features/file-explorer/components/file-explorer-tree.tsx @@ -1,8 +1,9 @@ +import { useWorkspaceId } from "@/features/workspace/stores/create-workspace-scoped-store"; import { canUseNativeFileSearch } from "@/features/file-search/utils/file-search-paths"; import { configureWorkspaceIndexing, - releaseWorkspaceIndexing, - indexingEvent, + IndexingSettingsError, + subscribeToIndexingChanges, type IndexingStatus, } from "../stores/workspace-indexing"; import { directoryMarkRoot, useDirectoryMarks } from "../stores/directory-marks"; @@ -188,46 +189,26 @@ function FileExplorerTreeComponent({ onFileMove, }: FileExplorerTreeProps) { useJavaFileIconCacheLifecycle(); + const workspaceId = useWorkspaceId(); const [projectView, setProjectView] = useState("project"); - const workspaceRootPaths = useMemo(() => { - const roots: string[] = []; - let hasRootFolderPath = false; - - for (const file of files) { - if (!file.isDir) continue; - roots.push(file.path); - if (file.path === rootFolderPath) { - hasRootFolderPath = true; - } - } - - if (rootFolderPath && !hasRootFolderPath) { - roots.unshift(rootFolderPath); - } - - return roots; - }, [files, rootFolderPath]); - + const workspaceFolders = useFileSystemStore((state) => state.workspaceFolders); + const nativeRootPaths = useMemo( + () => getNativeWorkspaceRootPaths(rootFolderPath, workspaceFolders), + [rootFolderPath, workspaceFolders], + ); + const workspaceRootPaths = useMemo( + () => [...new Set([rootFolderPath, ...workspaceFolders.map((folder) => folder.path)].filter((path): path is string => Boolean(path)))], + [rootFolderPath, workspaceFolders], + ); const { markForPath, markDirectory, error: directoryMarksError } = useDirectoryMarks(workspaceRootPaths); useEffect(() => { if (directoryMarksError) toast.error(directoryMarksError); }, [directoryMarksError]); - const indexingRootsKey = JSON.stringify(workspaceRootPaths.filter(canUseNativeFileSearch)); - useEffect( - () => () => { - for (const root of JSON.parse(indexingRootsKey) as string[]) void releaseWorkspaceIndexing(root).catch(console.error); - }, - [indexingRootsKey], - ); const [indexingStatuses, setIndexingStatuses] = useState>({}); useEffect(() => { - const roots = [ - ...new Set( - [rootFolderPath, ...files.filter((entry) => entry.isDir).map((entry) => entry.path)].filter( - canUseNativeFileSearch, - ), - ), - ]; + const roots = nativeRootPaths; let disposed = false; + let generation = 0; const refresh = () => { + const current = ++generation; void Promise.all( roots.map(async (root) => { const paths: string[] = []; @@ -240,25 +221,23 @@ function FileExplorerTreeComponent({ } }; visit(files); - return [root, await configureWorkspaceIndexing(root, paths)] as const; + return [root, await configureWorkspaceIndexing(root, paths, false, workspaceId)] as const; }), ) .then((values) => { - if (!disposed) setIndexingStatuses(Object.fromEntries(values)); + if (!disposed && current === generation) setIndexingStatuses(Object.fromEntries(values)); }) .catch((error) => { - if (!disposed) toast.error(String(error)); + if (!disposed && current === generation) toast.error(t(error instanceof IndexingSettingsError ? `indexing.${error.code}` : "indexing.configureFailed")); }); }; refresh(); - window.addEventListener(indexingEvent, refresh); - window.addEventListener("lithe:directory-marks-changed", refresh); + const unsubscribe = subscribeToIndexingChanges(roots, refresh); return () => { disposed = true; - window.removeEventListener(indexingEvent, refresh); - window.removeEventListener("lithe:directory-marks-changed", refresh); + unsubscribe(); }; - }, [files, rootFolderPath]); + }, [files, nativeRootPaths, workspaceId]); const exclusionReason = (path: string): string | undefined => { const root = Object.keys(indexingStatuses) .filter((root) => pathStartsWithRoot(path, root)) @@ -340,11 +319,6 @@ function FileExplorerTreeComponent({ const addFolderToWorkspace = useFileSystemStore((state) => state.addFolderToWorkspace); const removeFolderFromWorkspace = useFileSystemStore((state) => state.removeFolderFromWorkspace); const revealPathInTree = useFileSystemStore((state) => state.revealPathInTree); - const workspaceFolders = useFileSystemStore((state) => state.workspaceFolders); - const nativeRootPaths = useMemo( - () => getNativeWorkspaceRootPaths(rootFolderPath, workspaceFolders), - [rootFolderPath, workspaceFolders], - ); useLayoutEffect(() => { if (!rootFolderPath) return; @@ -1081,6 +1055,8 @@ function FileExplorerTreeComponent({ selectedEntries, selectedPaths, markDirectory, + markForPath, + canExcludeDirectory: canUseNativeFileSearch, isIndexExcluded, onFileSelect, onCreateNewFileInDirectory, @@ -1858,7 +1834,9 @@ function FileExplorerTreeComponent({ directoryMark={ isIndexExcluded(row.file.path) ? "excluded" - : markForPath(row.file.path) + : !canUseNativeFileSearch(row.file.path) && markForPath(row.file.path) === "excluded" + ? undefined + : markForPath(row.file.path) } semanticKind={ markForPath(row.file.path) === "sources" diff --git a/windows/tauri/src/features/file-explorer/hooks/use-file-explorer-context-menu.tsx b/windows/tauri/src/features/file-explorer/hooks/use-file-explorer-context-menu.tsx index a952642b56..71a445fbca 100644 --- a/windows/tauri/src/features/file-explorer/hooks/use-file-explorer-context-menu.tsx +++ b/windows/tauri/src/features/file-explorer/hooks/use-file-explorer-context-menu.tsx @@ -91,7 +91,9 @@ interface UseFileExplorerContextMenuOptions { selectedEntries?: Array<{ path: string; is_dir: boolean }>; selectedPaths?: ReadonlySet; isIndexExcluded?: (path: string) => boolean; - markDirectory?: (path: string, mark: DirectoryMark) => void; + markForPath?: (path: string) => DirectoryMark | undefined; + canExcludeDirectory?: (path: string) => boolean; + markDirectory?: (path: string, mark: DirectoryMark, cancelExclusion?: boolean) => void; onFileSelect: (path: string, isDir: boolean) => void | string | Promise; onCreateNewFileInDirectory?: ( directoryPath: string, @@ -159,6 +161,8 @@ export function useFileExplorerContextMenu({ selectedPaths, markDirectory, isIndexExcluded, + markForPath, + canExcludeDirectory, onFileSelect, onCreateNewFileInDirectory, onCreateNewFolderInDirectory, @@ -852,6 +856,7 @@ export function useFileExplorerContextMenu({ } if (contextMenu.isDir) { + const excluded = Boolean(isIndexExcluded?.(contextMenu.path)) || markForPath?.(contextMenu.path) === "excluded"; if (markDirectory) items.push({ id: "mark-directory", @@ -859,17 +864,17 @@ export function useFileExplorerContextMenu({ icon: , onClick: () => {}, children: DIRECTORY_MARKS.filter( - (mark) => !isIndexExcluded?.(contextMenu.path) || mark === "plain", + (mark) => (!excluded || mark === "plain") && (mark !== "excluded" || canExcludeDirectory?.(contextMenu.path) !== false), ).map((mark) => ({ id: `mark-${mark}`, label: t( - mark === "plain" && isIndexExcluded?.(contextMenu.path) + mark === "plain" && excluded ? "indexing.cancelExclusion" : `project.mark.${mark}`, ), onClick: () => { try { - markDirectory(contextMenu.path, mark); + markDirectory(contextMenu.path, mark, mark === "plain" && excluded); } catch (error) { toast.error(t("project.markFailed"), { description: String(error) }); } @@ -1014,6 +1019,8 @@ export function useFileExplorerContextMenu({ selectedPaths, markDirectory, isIndexExcluded, + markForPath, + canExcludeDirectory, availableRepoPaths, canRemoveWorkspaceRootPath, clipboardActions, diff --git a/windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts b/windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts index 8a9bbec933..56d1567923 100644 --- a/windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts +++ b/windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts @@ -138,10 +138,10 @@ test("added and nested roots own exclusion marks and Git include exceptions", () markWorkspaceDirectory(roots, "d:\\ADDED\\build", "excluded"); expect(readDirectoryMarks("D:/added")).toEqual({build: "excluded"}); expect(readIndexingSettings("D:/added").previousRoles).toEqual({build: "sources"}); - markWorkspaceDirectory(roots, "D:/added/build", "plain"); + markWorkspaceDirectory(roots, "D:/added/build", "plain", true); expect(readDirectoryMarks("D:/added")).toEqual({build: "sources"}); expect(readIndexingSettings("D:/added").includedDirectories).toEqual(["build"]); - markWorkspaceDirectory(roots, "D:/added/nested/vendor", "plain"); + markWorkspaceDirectory(roots, "D:/added/nested/vendor", "plain", true); expect(directoryMarkRoot("D:/ADDED/nested/vendor", roots)).toBe("D:/added/nested"); expect(readIndexingSettings("D:/added/nested").includedDirectories).toEqual(["vendor"]); expect(readIndexingSettings("C:/main")).toEqual({gitIgnoreEnabled: false, includedDirectories: ["keep"], previousRoles: {}}); @@ -149,18 +149,29 @@ test("added and nested roots own exclusion marks and Git include exceptions", () expect(() => markWorkspaceDirectory(roots, "E:/outside", "excluded")).toThrow(); }); +test("normal-folder role changes do not create Git include exceptions", () => { + const roots = ["C:/normal"]; + markWorkspaceDirectory(roots, "C:/normal/src", "sources"); + markWorkspaceDirectory(roots, "C:/normal/src", "plain"); + markWorkspaceDirectory(roots, "C:/normal/ordinary", "plain"); + expect(readIndexingSettings(roots[0]).includedDirectories).toEqual([]); + markWorkspaceDirectory(roots, "C:/normal/src", "excluded"); + markWorkspaceDirectory(roots, "C:/normal/src", "plain", true); + expect(readIndexingSettings(roots[0]).includedDirectories).toEqual(["src"]); +}); + test.each(["D:/added", "C:/main/nested"])("added-root marks and include exceptions follow rename and deletion: %s", (root) => { const roots = ["C:/main", root]; markWorkspaceDirectory(roots, `${root}/src`, "sources"); markWorkspaceDirectory(roots, `${root}/src`, "excluded"); - markWorkspaceDirectory(roots, `${root}/src/examples`, "plain"); + markWorkspaceDirectory(roots, `${root}/src/examples`, "plain", true); // Include exceptions cannot override a manually excluded ancestor. expect(readIndexingSettings(root).includedDirectories).toEqual([]); migrateWorkspaceDirectoryMarks(roots, `${root}/src`, `${root}/code`); expect(readDirectoryMarks(root)).toEqual({code: "excluded"}); expect(readIndexingSettings(root).previousRoles).toEqual({code: "sources"}); - markWorkspaceDirectory(roots, `${root}/code`, "plain"); + markWorkspaceDirectory(roots, `${root}/code`, "plain", true); expect(readDirectoryMarks(root)).toEqual({code: "sources"}); expect(readIndexingSettings(root).includedDirectories).toEqual(["code"]); migrateWorkspaceDirectoryMarks(roots, `${root}/code`); @@ -175,7 +186,7 @@ test.each(["D:/added", "C:/main/nested"])("moving between workspace roots preser const roots = ["C:/main", root]; markWorkspaceDirectory(roots, `${root}/src`, "sources"); markWorkspaceDirectory(roots, `${root}/src`, "excluded"); - markWorkspaceDirectory(roots, `${root}/examples`, "plain"); + markWorkspaceDirectory(roots, `${root}/examples`, "plain", true); migrateWorkspaceDirectoryMarks(roots, `${root}/src`, "C:/main/code"); migrateWorkspaceDirectoryMarks(roots, `${root}/examples`, "C:/main/demos"); expect(readDirectoryMarks(root)).toEqual({}); @@ -183,7 +194,7 @@ test.each(["D:/added", "C:/main/nested"])("moving between workspace roots preser expect(readIndexingSettings("C:/main").previousRoles).toEqual({code: "sources"}); expect(readIndexingSettings("C:/main").includedDirectories).toEqual(["demos"]); expect(readIndexingSettings(root).includedDirectories).toEqual([]); - markWorkspaceDirectory(roots, "C:/main/code", "plain"); + markWorkspaceDirectory(roots, "C:/main/code", "plain", true); expect(readDirectoryMarks("C:/main")).toEqual({code: "sources"}); }); diff --git a/windows/tauri/src/features/file-explorer/stores/directory-marks.ts b/windows/tauri/src/features/file-explorer/stores/directory-marks.ts index 437dedb771..a77626ac8e 100644 --- a/windows/tauri/src/features/file-explorer/stores/directory-marks.ts +++ b/windows/tauri/src/features/file-explorer/stores/directory-marks.ts @@ -1,5 +1,6 @@ import { indexingEvent, + subscribeToIndexingChanges, indexingSettingsStorageKey, readIndexingSettings, writeIndexingSettings, @@ -163,13 +164,13 @@ export function migrateWorkspaceDirectoryMarks(roots: readonly string[], source: } } -export function markWorkspaceDirectory(roots: readonly string[], path: string, mark: DirectoryMark) { +export function markWorkspaceDirectory(roots: readonly string[], path: string, mark: DirectoryMark, cancelExclusion = false) { const root = directoryMarkRoot(path, roots); if (!root) throw new Error("Directory is outside the workspace"); const marks = readDirectoryMarks(root); const relative = getRelativePath(path, root).replace(/\\/g, "/") || "."; const settings = readIndexingSettings(root); - if (mark === "plain") { + if (cancelExclusion) { if ( Object.entries(marks).some( ([path, value]) => @@ -189,7 +190,7 @@ export function markWorkspaceDirectory(roots: readonly string[], path: string, m if (mark === "excluded" && marks[relative] && marks[relative] !== "excluded") settings.previousRoles[relative] = marks[relative]; marks[relative] = mark; - settings.includedDirectories = settings.includedDirectories.filter( + if (mark !== "plain") settings.includedDirectories = settings.includedDirectories.filter( (path) => path !== relative, ); } @@ -218,17 +219,10 @@ export function useDirectoryMarks(roots: readonly string[]) { } }; refresh(); - window.addEventListener(eventName, refresh); - window.addEventListener(indexingEvent, refresh); - window.addEventListener("storage", refresh); - return () => { - window.removeEventListener(eventName, refresh); - window.removeEventListener(indexingEvent, refresh); - window.removeEventListener("storage", refresh); - }; + return subscribeToIndexingChanges(roots, refresh); }, [rootsKey]); - const markDirectory = useCallback((path: string, mark: DirectoryMark) => { - markWorkspaceDirectory(roots, path, mark); + const markDirectory = useCallback((path: string, mark: DirectoryMark, cancelExclusion = false) => { + markWorkspaceDirectory(roots, path, mark, cancelExclusion); }, [rootsKey]); const markForPath = (path: string): DirectoryMark | undefined => { const root = directoryMarkRoot(path, roots); diff --git a/windows/tauri/src/features/file-explorer/stores/workspace-indexing.test.ts b/windows/tauri/src/features/file-explorer/stores/workspace-indexing.test.ts index cebba94bc3..aff9e16dac 100644 --- a/windows/tauri/src/features/file-explorer/stores/workspace-indexing.test.ts +++ b/windows/tauri/src/features/file-explorer/stores/workspace-indexing.test.ts @@ -1,13 +1,20 @@ -import { afterEach, beforeEach, expect, test } from "bun:test"; +import { afterEach, beforeEach, expect, spyOn, test } from "bun:test"; +import * as core from "@/core/lithe-core-client"; +import { workspaceRuntimeRegistry as registry } from "@/features/workspace/runtime/workspace-runtime-registry"; +import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; import { installHappyDom } from "@/test-utils/happy-dom"; import { IndexingSettingsError, indexingSettingsStorageKey, readIndexingSettings, writeIndexingSettings, + configureWorkspaceIndexing, + syncWorkspaceIndexingRoots, + subscribeToIndexingChanges, } from "./workspace-indexing"; let restore: () => void; +const coreReply = (id: string, data: unknown): core.CoreResponse => ({id, ok: true, data: data as T}); beforeEach(() => { restore = installHappyDom(); }); @@ -64,3 +71,144 @@ test("storage failures expose stable codes and preserve the saved preference", ( } expect(readIndexingSettings("C:/fixture")).toEqual(settings); }); + +test("view subscribers do not own policy leases and shared roots use distinct runtime owners", async () => { + const calls: Array<{command: string; payload?: unknown}> = []; + let revision = 0; + const execute = spyOn(core, "executeCore").mockImplementation(async (request: core.CoreRequest) => { + calls.push(request); + return coreReply(request.id, { revision: ++revision, excludedDirectories: {}, gitIgnoreFailed: false }); + }); + const first = registry.ensureWorkspace({id: "lease-first", name: "first"}); + const second = registry.ensureWorkspace({id: "lease-second", name: "second"}); + try { + for (const id of [first.descriptor.id, second.descriptor.id]) syncWorkspaceIndexingRoots(id, ["C:/shared"]); + await configureWorkspaceIndexing("C:/shared", [], false, first.descriptor.id); + await configureWorkspaceIndexing("C:/shared", [], false, second.descriptor.id); + const owners = calls.map((call) => (call.payload as {ownerId: string}).ownerId); + expect(owners[0]).not.toBe(owners[1]); + const unsubscribeView = subscribeToIndexingChanges(["C:/shared"], () => {}); + unsubscribeView(); + expect(calls.filter((call) => call.command === "workspace.releaseIndexing")).toHaveLength(0); + await first.disposeIndexing?.(); + const release = calls.find((call) => call.command === "workspace.releaseIndexing"); + expect((release?.payload as {ownerId: string}).ownerId).toBe(owners[0]); + await configureWorkspaceIndexing("C:/shared", [], false, second.descriptor.id); + expect((calls[calls.length - 1]?.payload as {ownerId: string}).ownerId).toBe(owners[1]); + } finally { + await first.disposeIndexing?.(); await second.disposeIndexing?.(); + registry.removeWorkspace(first.descriptor.id); registry.removeWorkspace(second.descriptor.id); + execute.mockRestore(); + } +}); + +test("removing a root reclaims a policy installed after the removal", async () => { + let started!: () => void; + const began = new Promise((resolve) => { started = resolve; }); + let finish!: (value: {id: string; ok: true; data: {revision: number; excludedDirectories: {}; gitIgnoreFailed: boolean}}) => void; + const pending = new Promise<{id: string; ok: true; data: {revision: number; excludedDirectories: {}; gitIgnoreFailed: boolean}}>((resolve) => { finish = resolve; }); + const calls: string[] = []; + const execute = spyOn(core, "executeCore").mockImplementation(async (request: core.CoreRequest) => { + calls.push(request.command); + if (request.command === "workspace.configureIndexing") { started(); return coreReply(request.id, (await pending).data); } + return coreReply(request.id, {released: true}); + }); + const runtime = registry.ensureWorkspace({id: "lease-late", name: "late"}); + syncWorkspaceIndexingRoots(runtime.descriptor.id, ["C:/late"]); + const query = configureWorkspaceIndexing("C:/late", [], false, runtime.descriptor.id); + try { + await began; + syncWorkspaceIndexingRoots(runtime.descriptor.id, []); + finish({id: "late", ok: true, data: {revision: 41, excludedDirectories: {}, gitIgnoreFailed: false}}); + await expect(query).rejects.toThrow(IndexingSettingsError); + expect(calls).toEqual(["workspace.configureIndexing", "workspace.releaseIndexing"]); + } finally { + finish({id: "late", ok: true, data: {revision: 41, excludedDirectories: {}, gitIgnoreFailed: false}}); + await query.catch(() => {}); await runtime.disposeIndexing?.(); + registry.removeWorkspace(runtime.descriptor.id); execute.mockRestore(); + } +}, 2000); + +test.each([true, false])("superseded configuration retries are bounded, success=%s", async (succeeds) => { + const runtime = registry.ensureWorkspace({id: `lease-superseded-${succeeds}`, name: "superseded"}); + syncWorkspaceIndexingRoots(runtime.descriptor.id, ["C:/superseded"]); + let attempts = 0; + const execute = spyOn(core, "executeCore").mockImplementation(async (request: core.CoreRequest) => { + if (request.command !== "workspace.configureIndexing") return coreReply(request.id, {released: true}); + attempts++; + if (!succeeds || attempts < 3) return {id: request.id, ok: false, error: {code: "cancelled", message: "superseded"}}; + return coreReply(request.id, {revision: 42, excludedDirectories: {}, gitIgnoreFailed: false}); + }); + try { + const query = configureWorkspaceIndexing("C:/superseded", [], false, runtime.descriptor.id); + if (succeeds) expect((await query).revision).toBe(42); + else await expect(query).rejects.toThrow(IndexingSettingsError); + expect(attempts).toBe(3); + } finally { + await runtime.disposeIndexing?.(); registry.removeWorkspace(runtime.descriptor.id); execute.mockRestore(); + } +}); + +test("root removal during a superseded configuration prevents a retry", async () => { + const runtime = registry.ensureWorkspace({id: "lease-retry-removed", name: "removed"}); + syncWorkspaceIndexingRoots(runtime.descriptor.id, ["C:/removed"]); + let attempts = 0; + const execute = spyOn(core, "executeCore").mockImplementation(async (request: core.CoreRequest) => { + if (request.command !== "workspace.configureIndexing") return coreReply(request.id, {released: true}); + attempts++; + syncWorkspaceIndexingRoots(runtime.descriptor.id, []); + return {id: request.id, ok: false, error: {code: "cancelled", message: "superseded"}}; + }); + try { + await expect(configureWorkspaceIndexing("C:/removed", [], false, runtime.descriptor.id)).rejects.toThrow(IndexingSettingsError); + expect(attempts).toBe(1); + } finally { + await runtime.disposeIndexing?.(); registry.removeWorkspace(runtime.descriptor.id); execute.mockRestore(); + } +}); + +test("cross-window storage changes are root-filtered, coalesced and cancelled on disposal", async () => { + let changes = 0; + const stop = subscribeToIndexingChanges(["C:/fixture"], () => changes++); + try { + window.dispatchEvent(new window.StorageEvent("storage", {key: indexingSettingsStorageKey("D:/other")})); + await Promise.resolve(); expect(changes).toBe(0); + window.dispatchEvent(new window.StorageEvent("storage", {key: indexingSettingsStorageKey("C:/fixture")})); + window.dispatchEvent(new window.StorageEvent("storage", {key: "lithe.workspace-directory-marks.c:/fixture"})); + await Promise.resolve(); expect(changes).toBe(1); + window.dispatchEvent(new window.StorageEvent("storage", {key: indexingSettingsStorageKey("C:/fixture")})); + stop(); await Promise.resolve(); expect(changes).toBe(1); + } finally { stop(); } +}); + +test("background project inventory keeps its owner when another workspace becomes active", async () => { + const previous = registry.getActiveWorkspaceId(); + const first = registry.ensureWorkspace({id: "inventory-owner-first", name: "first"}); + const second = registry.ensureWorkspace({id: "inventory-owner-second", name: "second"}); + const store = useFileSystemStore.getStore(first.descriptor.id); + store.setState({rootFolderPath: "C:/inventory-first", workspaceFolders: []}); + useFileSystemStore.getStore(second.descriptor.id).setState({rootFolderPath: "D:/inventory-second", workspaceFolders: []}); + registry.activateWorkspace(first.descriptor, "ready"); + const owners: string[] = []; + const execute = spyOn(core, "executeCore").mockImplementation(async (request: core.CoreRequest) => { + if (request.command === "workspace.configureIndexing") { + owners.push((request.payload as {ownerId: string}).ownerId); + return coreReply(request.id, {revision: 1, excludedDirectories: {}, gitIgnoreFailed: false}); + } + if (request.command === "workspace.snapshot") { + registry.activateWorkspace(second.descriptor, "ready"); + return coreReply(request.id, {files: ["Keep.ts"], incompleteDirectories: []}); + } + return coreReply(request.id, {released: true}); + }); + try { + const files = await store.getState().getAllProjectFiles(); + expect(files.map((file) => file.path.replace(/\\/g, "/"))).toEqual(["C:/inventory-first/Keep.ts"]); + expect(owners).toHaveLength(2); + expect(new Set(owners).size).toBe(1); + } finally { + await first.disposeIndexing?.(); await second.disposeIndexing?.(); + registry.removeWorkspace(first.descriptor.id); registry.removeWorkspace(second.descriptor.id); + registry.activateWorkspace({id: previous, name: "restored"}); execute.mockRestore(); + } +}); diff --git a/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts b/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts index 1b2b4ba92a..703ec4a162 100644 --- a/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts +++ b/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts @@ -1,4 +1,8 @@ import { useEffect, useState } from "react"; +import type { StoreApi } from "zustand"; +import { workspaceRuntimeRegistry } from "@/features/workspace/runtime/workspace-runtime-registry"; +import type { WorkspaceRuntime } from "@/features/workspace/types/workspace-runtime.types"; +import { getNativeWorkspaceRootPaths } from "@/features/file-search/utils/file-search-paths"; import { executeCore } from "@/core/lithe-core-client"; import { getPathIdentity } from "@/utils/path-helpers"; @@ -78,78 +82,175 @@ export function writeIndexingSettings(root: string, settings: IndexingSettings) window.dispatchEvent(new window.CustomEvent(indexingEvent, { detail: root })); } -/** Serialize policy installation per root, so older settings cannot win an async race. */ +/** Coalesce both same-window writes and cross-window storage notifications. */ +export function subscribeToIndexingChanges( + roots: readonly string[] | (() => readonly string[]) | undefined, + changed: () => void, +): () => void { + if (typeof window === "undefined") return () => {}; + let active = true; + let queued = false; + const relevant = (identity?: string) => { + const current = typeof roots === "function" ? roots() : roots; + return !identity || !current || current.some((root) => getPathIdentity(root).replace(/\/+$/, "") === identity); + }; + const schedule = () => { + if (queued) return; + queued = true; + queueMicrotask(() => { queued = false; if (active) changed(); }); + }; + const local = (event: Event) => { + const root = (event as CustomEvent).detail; + if (relevant(typeof root === "string" ? getPathIdentity(root).replace(/\/+$/, "") : undefined)) schedule(); + }; + const stored = (event: StorageEvent) => { + if (event.storageArea && event.storageArea !== window.localStorage) return; + if (event.key === null) { schedule(); return; } + for (const prefix of ["lithe.workspace-indexing.", "lithe.workspace-directory-marks."]) { + if (event.key.startsWith(prefix) && relevant(event.key.slice(prefix.length))) { schedule(); return; } + } + }; + window.addEventListener(indexingEvent, local); + window.addEventListener("lithe:directory-marks-changed", local); + window.addEventListener("storage", stored); + return () => { + active = false; + window.removeEventListener(indexingEvent, local); + window.removeEventListener("lithe:directory-marks-changed", local); + window.removeEventListener("storage", stored); + }; +} + +type RootLease = { root: string; revision?: number }; +type IndexingOwner = { + id: string; + roots: Map; + closed: boolean; + stopPreferences: () => void; + stopRoots?: () => void; +}; +const owners = new WeakMap(); const queues = new Map>(); -const revisions = new Map(); -export async function configureWorkspaceIndexing( - root: string, - paths: string[] = [], - refresh = false, -): Promise { - const identity = getPathIdentity(root); - const operation = async () => { - const settings = readIndexingSettings(root); - const raw = readStoredValue(key(root)); - const marks = raw ? JSON.parse(raw).marks : {}; - const response = await executeCore({ - id: crypto.randomUUID(), - command: "workspace.configureIndexing", - payload: { - root, - ...settings, - manualExcludedDirectories: Object.entries(marks ?? {}) - .filter(([, role]) => role === "excluded") - .map(([path]) => path), - paths, - refresh, - }, - }); - if (!response.ok) throw new IndexingSettingsError("configureFailed", response.error); - revisions.set(identity, response.data.revision); - return response.data; + +function ownerFor(workspaceId: string): IndexingOwner { + const runtime = workspaceRuntimeRegistry.getWorkspace(workspaceId); + if (!runtime) throw new IndexingSettingsError("configureFailed"); + const existing = owners.get(runtime); + if (existing) return existing; + const owner: IndexingOwner = { id: crypto.randomUUID(), roots: new Map(), closed: false, stopPreferences: () => {} }; + owners.set(runtime, owner); + owner.stopPreferences = subscribeToIndexingChanges(() => [...owner.roots.values()].map((lease) => lease.root), () => { + for (const { root } of owner.roots.values()) void configureWorkspaceIndexing(root, [], false, workspaceId).catch(console.error); + }); + runtime.disposeIndexing = async () => { + if (owner.closed) return; + owner.closed = true; + owner.stopPreferences(); + owner.stopRoots?.(); + const leases = [...owner.roots.values()]; + owner.roots.clear(); + await Promise.all(leases.map((lease) => releaseLease(owner, lease))); }; - const task = (queues.get(identity) ?? Promise.resolve()).catch(() => {}).then(operation); - queues.set(identity, task); - try { - return await task; - } finally { - if (queues.get(identity) === task) queues.delete(identity); + return owner; +} + +function serialized(owner: IndexingOwner, root: string, operation: () => Promise): Promise { + const queueKey = JSON.stringify([owner.id, getPathIdentity(root)]); + const task = (queues.get(queueKey) ?? Promise.resolve()).catch(() => {}).then(operation); + queues.set(queueKey, task); + void task.finally(() => { if (queues.get(queueKey) === task) queues.delete(queueKey); }).catch(() => {}); + return task; +} + +async function releaseToken(owner: IndexingOwner, root: string, revision: number): Promise { + const response = await executeCore({ id: crypto.randomUUID(), command: "workspace.releaseIndexing", payload: { root, revision, ownerId: owner.id } }); + if (!response.ok) throw new IndexingSettingsError("configureFailed", response.error); +} +function releaseLease(owner: IndexingOwner, lease: RootLease): Promise { + return serialized(owner, lease.root, async () => { + if (lease.revision !== undefined) { + await releaseToken(owner, lease.root, lease.revision); + lease.revision = undefined; + } + }); +} + +/** Workspace membership, never component mounting, owns root acquisition/release. */ +export function syncWorkspaceIndexingRoots(workspaceId: string, roots: readonly string[]): void { + const owner = ownerFor(workspaceId); + if (owner.closed) return; + const wanted = new Map(roots.map((root) => [getPathIdentity(root), root])); + for (const [identity, lease] of owner.roots) { + if (!wanted.has(identity)) { + owner.roots.delete(identity); + void releaseLease(owner, lease).catch(console.error); + } + } + for (const [identity, root] of wanted) { + if (!owner.roots.has(identity)) owner.roots.set(identity, { root }); } } -/** React consumers retire visible results when either source of policy changes. */ -export function useIndexingVersion(): number { - const [version, setVersion] = useState(0); - useEffect(() => { - const changed = () => setVersion((value) => value + 1); - window.addEventListener(indexingEvent, changed); - window.addEventListener("lithe:directory-marks-changed", changed); - return () => { - window.removeEventListener(indexingEvent, changed); - window.removeEventListener("lithe:directory-marks-changed", changed); - }; - }, []); - return version; +export function bindWorkspaceIndexingRoots( + workspaceId: string, store: StoreApi, +): void { + const owner = ownerFor(workspaceId); + let rootsKey = ""; + const update = () => { + const state = store.getState(); + const roots = getNativeWorkspaceRootPaths(state.rootFolderPath, state.workspaceFolders); + const next = JSON.stringify(roots); + if (next === rootsKey) return; + rootsKey = next; + syncWorkspaceIndexingRoots(workspaceId, roots); + }; + owner.stopRoots?.(); + owner.stopRoots = store.subscribe(update); + update(); } -export async function releaseWorkspaceIndexing(root: string): Promise { +/** Queries share the runtime lease; a disposed tree cannot retire its workspace. */ +export async function configureWorkspaceIndexing( + root: string, paths: string[] = [], refresh = false, + workspaceId = workspaceRuntimeRegistry.getActiveWorkspaceId(), +): Promise { + const owner = ownerFor(workspaceId); const identity = getPathIdentity(root); - const task = (queues.get(identity) ?? Promise.resolve()) - .catch(() => {}) - .then(async () => { - const revision = revisions.get(identity); - if (revision === undefined) return; - await executeCore({ - id: crypto.randomUUID(), - command: "workspace.releaseIndexing", - payload: { root, revision }, + const lease = owner.roots.get(identity); + if (!lease || owner.closed) throw new IndexingSettingsError("configureFailed"); + return serialized(owner, root, async () => { + let supersededRetries = 0; + while (true) { + if (owner.closed || owner.roots.get(identity) !== lease) throw new IndexingSettingsError("configureFailed"); + const signature = JSON.stringify([readStoredValue(indexingSettingsStorageKey(root)), readStoredValue(key(root))]); + const settings = readIndexingSettings(root); + const raw = readStoredValue(key(root)); + const marks = raw ? JSON.parse(raw).marks : {}; + const response = await executeCore({ + id: crypto.randomUUID(), command: "workspace.configureIndexing", + payload: { root, ownerId: owner.id, ...settings, + manualExcludedDirectories: Object.entries(marks ?? {}).filter(([, role]) => role === "excluded").map(([path]) => path), paths, refresh }, }); - revisions.delete(identity); - }); - queues.set(identity, task); - try { - await task; - } finally { - if (queues.get(identity) === task) queues.delete(identity); - } + if (!response.ok) { + // Another workspace owner can replace the shared scan generation. + // These requests have no user cancellation token; re-read current + // preferences and retry only that transient Core cancellation. + if (response.error.code === "cancelled" && supersededRetries++ < 2) continue; + throw new IndexingSettingsError("configureFailed", response.error); + } + if (owner.closed || owner.roots.get(identity) !== lease) { + await releaseToken(owner, root, response.data.revision); + throw new IndexingSettingsError("configureFailed"); + } + lease.revision = response.data.revision; + if (signature === JSON.stringify([readStoredValue(indexingSettingsStorageKey(root)), readStoredValue(key(root))])) return response.data; + } + }); +} + +export function useIndexingVersion(roots?: readonly string[]): number { + const [version, setVersion] = useState(0); + const rootsKey = roots === undefined ? undefined : JSON.stringify(roots); + useEffect(() => subscribeToIndexingChanges(rootsKey === undefined ? undefined : JSON.parse(rootsKey), () => setVersion((value) => value + 1)), [rootsKey]); + return version; } diff --git a/windows/tauri/src/features/file-search/hooks/use-fff-search.test.tsx b/windows/tauri/src/features/file-search/hooks/use-fff-search.test.tsx index 671379b988..d386434c67 100644 --- a/windows/tauri/src/features/file-search/hooks/use-fff-search.test.tsx +++ b/windows/tauri/src/features/file-search/hooks/use-fff-search.test.tsx @@ -4,6 +4,38 @@ import { createRoot } from "react-dom/client"; import * as api from "../lib/file-search-api"; import { installHappyDom } from "@/test-utils/happy-dom"; import { useFffSearch } from "./use-fff-search"; +import { WorkspaceStoreScopeContext } from "@/features/workspace/stores/create-workspace-scoped-store"; +import { workspaceRuntimeRegistry as registry } from "@/features/workspace/runtime/workspace-runtime-registry"; + +test("cached panes retain their scoped search owners when the active workspace changes", async () => { + const restoreDom = installHappyDom(); + const environment = globalThis as typeof globalThis & { IS_REACT_ACT_ENVIRONMENT?: boolean }; + const previousAct = environment.IS_REACT_ACT_ENVIRONMENT; + const previousWorkspace = registry.getActiveWorkspaceId(); + registry.activateWorkspace({id: "cached-search-a", name: "A"}, "ready"); + const search = spyOn(api, "fffSearchFiles").mockResolvedValue([]); + const host = document.createElement("div"); + const root = createRoot(host); + function Probe({query, path}: {query: string; path: string}) { useFffSearch(query, true, [path]); return null; } + const panes = (query: string) => <> + + + ; + try { + environment.IS_REACT_ACT_ENVIRONMENT = true; + document.body.append(host); + await act(async () => root.render(panes("first"))); + await act(async () => { registry.activateWorkspace({id: "cached-search-b", name: "B"}, "ready"); root.render(panes("second")); }); + expect(search.mock.calls.length).toBe(4); + for (const call of search.mock.calls) expect(call[3]).toBe(call[1][0] === "C:/cached-a" ? "cached-search-a" : "cached-search-b"); + } finally { + await act(async () => root.unmount()); search.mockRestore(); host.remove(); + registry.removeWorkspace("cached-search-a"); registry.removeWorkspace("cached-search-b"); + registry.activateWorkspace({id: previousWorkspace, name: "restored"}); + if (previousAct === undefined) delete environment.IS_REACT_ACT_ENVIRONMENT; else environment.IS_REACT_ACT_ENVIRONMENT = previousAct; + restoreDom(); + } +}); test("an old root set cannot publish after nested-root ownership changes", async () => { const restoreDom = installHappyDom(); diff --git a/windows/tauri/src/features/file-search/hooks/use-fff-search.ts b/windows/tauri/src/features/file-search/hooks/use-fff-search.ts index e2029fd18f..2c1dfccd5e 100644 --- a/windows/tauri/src/features/file-search/hooks/use-fff-search.ts +++ b/windows/tauri/src/features/file-search/hooks/use-fff-search.ts @@ -1,3 +1,4 @@ +import { useWorkspaceId } from "@/features/workspace/stores/create-workspace-scoped-store"; import { useIndexingVersion } from "@/features/file-explorer/stores/workspace-indexing"; import { useEffect, useState } from "react"; import { fffSearchFiles, type FffSearchHit } from "../lib/file-search-api"; @@ -9,12 +10,13 @@ export const useFffSearch = ( rootPaths: readonly string[], limit = 100, ) => { - const indexingVersion = useIndexingVersion(); + const workspaceId = useWorkspaceId(); + const indexingVersion = useIndexingVersion(rootPaths); const trimmedQuery = query.trim(); const searchRootPaths = getNativeWorkspaceRootPaths(rootPaths[0], rootPaths.slice(1)); const searchKey = enabled && trimmedQuery && searchRootPaths.length > 0 - ? JSON.stringify([searchRootPaths, trimmedQuery, limit, indexingVersion]) + ? JSON.stringify([searchRootPaths, trimmedQuery, limit, indexingVersion, workspaceId]) : null; const [searchState, setSearchState] = useState<{ key: string | null; @@ -32,7 +34,7 @@ export const useFffSearch = ( const [currentRootPaths] = JSON.parse(searchKey) as [string[], string, number]; let cancelled = false; - fffSearchFiles(trimmedQuery, currentRootPaths, limit) + fffSearchFiles(trimmedQuery, currentRootPaths, limit, workspaceId) .then((results) => { if (cancelled) return; setSearchState({ key: searchKey, hits: results, error: null }); @@ -46,7 +48,7 @@ export const useFffSearch = ( return () => { cancelled = true; }; - }, [searchKey, trimmedQuery, limit]); + }, [searchKey, trimmedQuery, limit, workspaceId]); const hasCurrentResult = searchKey !== null && searchState.key === searchKey; diff --git a/windows/tauri/src/features/file-search/lib/file-search-api.ts b/windows/tauri/src/features/file-search/lib/file-search-api.ts index 13449d71a8..f70c5a5985 100644 --- a/windows/tauri/src/features/file-search/lib/file-search-api.ts +++ b/windows/tauri/src/features/file-search/lib/file-search-api.ts @@ -38,6 +38,7 @@ export interface SearchFilesResponse { } export interface SearchFilesRequest { + workspaceId?: string; root_paths: string[]; scope_paths?: string[]; query: string; @@ -101,7 +102,7 @@ export async function searchFilesContent( ), ) .map(async (root) => { - await configureWorkspaceIndexing(root); + await configureWorkspaceIndexing(root, [], false, request.workspaceId); const response = await executeCore<{ matches: CoreSearchMatch[] }>({ id: crypto.randomUUID(), command: "workspace.search", @@ -170,12 +171,12 @@ export async function searchFilesContent( }; } -export async function fffEnsureWorkspaces(rootPaths: readonly string[]): Promise { - await Promise.all(rootPaths.map((root) => listWorkspaceFiles(root, rootPaths))); +export async function fffEnsureWorkspaces(rootPaths: readonly string[], workspaceId?: string): Promise { + await Promise.all(rootPaths.map((root) => listWorkspaceFiles(root, rootPaths, workspaceId))); } -export async function fffScanStatus(rootPaths: readonly string[]): Promise { - const files = await Promise.all(rootPaths.map((root) => listWorkspaceFiles(root, rootPaths))); +export async function fffScanStatus(rootPaths: readonly string[], workspaceId?: string): Promise { + const files = await Promise.all(rootPaths.map((root) => listWorkspaceFiles(root, rootPaths, workspaceId))); const count = files.reduce((total, entries) => total + entries.length, 0); return { is_scanning: false, @@ -190,8 +191,9 @@ export async function fffSearchFiles( query: string, rootPaths: readonly string[], limit = 100, + workspaceId?: string, ): Promise { - const files = await fffListFiles(rootPaths); + const files = await fffListFiles(rootPaths, workspaceId); const normalizedQuery = query.toLocaleLowerCase(); return files .filter((file) => file.relative_path.toLocaleLowerCase().includes(normalizedQuery)) @@ -199,9 +201,9 @@ export async function fffSearchFiles( .map((file, index) => ({ ...file, score: limit - index })); } -export async function fffListFiles(rootPaths: readonly string[]): Promise { +export async function fffListFiles(rootPaths: readonly string[], workspaceId?: string): Promise { const workspaces = await Promise.all( - rootPaths.map(async (root) => ({ root, files: await listWorkspaceFiles(root, rootPaths) })), + rootPaths.map(async (root) => ({ root, files: await listWorkspaceFiles(root, rootPaths, workspaceId) })), ); return workspaces.flatMap(({ root, files }) => files.map((relativePath) => ({ @@ -219,8 +221,9 @@ export async function fffTrackAccess(_path: string): Promise { async function listWorkspaceFiles( root: string, workspaceRoots: readonly string[], + workspaceId?: string, ): Promise { - await configureWorkspaceIndexing(root); + await configureWorkspaceIndexing(root, [], false, workspaceId); const response = await executeCore<{ root: CoreWorkspaceNode; files: string[]; diff --git a/windows/tauri/src/features/file-search/services/workspace-file-search.ts b/windows/tauri/src/features/file-search/services/workspace-file-search.ts index d4f3b8c789..e15ca5187b 100644 --- a/windows/tauri/src/features/file-search/services/workspace-file-search.ts +++ b/windows/tauri/src/features/file-search/services/workspace-file-search.ts @@ -3,10 +3,11 @@ import { canUseNativeFileSearch } from "../utils/file-search-paths"; export const ensureWorkspaceFileSearch = async ( rootPaths: readonly string[], + workspaceId?: string, ): Promise => { const nativeRootPaths = Array.from(new Set(rootPaths.filter(canUseNativeFileSearch))); if (nativeRootPaths.length === 0) return []; - await fffEnsureWorkspaces(nativeRootPaths); + await fffEnsureWorkspaces(nativeRootPaths, workspaceId); return nativeRootPaths; }; diff --git a/windows/tauri/src/features/file-system/services/file-watcher-listener.ts b/windows/tauri/src/features/file-system/services/file-watcher-listener.ts index 5cc4d57252..fee9b3bbac 100644 --- a/windows/tauri/src/features/file-system/services/file-watcher-listener.ts +++ b/windows/tauri/src/features/file-system/services/file-watcher-listener.ts @@ -161,7 +161,7 @@ export async function initializeFileWatcherListener() { if (!canUseNativeFileSearch(root) || !isGitChangeRelevant(change, root)) continue; scheduleFileWatcherRefresh(workspaceId, `indexing:${root}`, async () => { if (!workspaceRuntimeRegistry.hasWorkspace(workspaceId)) return; - await configureWorkspaceIndexing(root, [], true); + await configureWorkspaceIndexing(root, [], true, workspaceId); window.dispatchEvent(new CustomEvent(indexingEvent, { detail: root })); }); } @@ -186,7 +186,7 @@ export async function initializeFileWatcherListener() { ) { scheduleFileWatcherRefresh(workspaceId, `indexing:${workspaceRoot}`, async () => { if (!workspaceRuntimeRegistry.hasWorkspace(workspaceId)) return; - await configureWorkspaceIndexing(workspaceRoot, [], true); + await configureWorkspaceIndexing(workspaceRoot, [], true, workspaceId); window.dispatchEvent(new CustomEvent(indexingEvent, { detail: workspaceRoot })); }); } @@ -212,7 +212,7 @@ export async function initializeFileWatcherListener() { const parentRelative = getRelativePath(parentDirectory, workspaceRoot).replace(/\\/g, "/") || "."; - const policy = await configureWorkspaceIndexing(workspaceRoot, [parentRelative]); + const policy = await configureWorkspaceIndexing(workspaceRoot, [parentRelative], false, workspaceId); const excluded = Object.keys(policy.excludedDirectories).some( (directory) => directory === "." || diff --git a/windows/tauri/src/features/file-system/stores/file-system.store.ts b/windows/tauri/src/features/file-system/stores/file-system.store.ts index 5c36da1ea8..921c8da2e6 100644 --- a/windows/tauri/src/features/file-system/stores/file-system.store.ts +++ b/windows/tauri/src/features/file-system/stores/file-system.store.ts @@ -1,3 +1,4 @@ +import { bindWorkspaceIndexingRoots } from "@/features/file-explorer/stores/workspace-indexing"; import { migrateWorkspaceDirectoryMarks } from "@/features/file-explorer/stores/directory-marks"; import { loadFileContent } from "../controllers/workspace-session-restore"; import { invoke } from "@/platform/tauri-core"; @@ -216,9 +217,9 @@ const getWorkspaceFolderPaths = (get: FileSystemGet) => (folder) => folder.path, ); -const syncFffWorkspace = async (get: FileSystemGet): Promise => { +const syncFffWorkspace = async (get: FileSystemGet, workspaceId: string): Promise => { try { - await ensureWorkspaceFileSearch(getWorkspaceFolderPaths(get)); + await ensureWorkspaceFileSearch(getWorkspaceFolderPaths(get), workspaceId); } catch (error) { console.error("[fff] workspace sync failed:", error); } @@ -617,7 +618,7 @@ const initializeLocalWorkspaceInBackground = ( return; } - void syncFffWorkspace(get); + void syncFffWorkspace(get, workspaceId); await waitForWorkspaceIdle(); @@ -874,7 +875,7 @@ const createFileSystemStore = (workspaceId: string): StoreApi | undefined; const coordinateProjectFileScan = createProjectFileScanCoordinator(); - return createStore()( + const store = createStore()( immer((set, get) => ({ // State files: [], @@ -1068,7 +1069,7 @@ const createFileSystemStore = (workspaceId: string): StoreApi { - const nativeRootPaths = await ensureWorkspaceFileSearch(workspaceFolderPaths); - const indexedFiles = await fffListFiles(nativeRootPaths); + const nativeRootPaths = await ensureWorkspaceFileSearch(workspaceFolderPaths, workspaceId); + const indexedFiles = await fffListFiles(nativeRootPaths, workspaceId); const files = indexedFiles.map((file) => ({ name: file.name, path: file.path, @@ -3133,6 +3134,8 @@ const createFileSystemStore = (workspaceId: string): StoreApi( diff --git a/windows/tauri/src/features/global-search/hooks/use-content-search.ts b/windows/tauri/src/features/global-search/hooks/use-content-search.ts index 5f74b52a8e..251caaa26c 100644 --- a/windows/tauri/src/features/global-search/hooks/use-content-search.ts +++ b/windows/tauri/src/features/global-search/hooks/use-content-search.ts @@ -1,3 +1,4 @@ +import { useWorkspaceId } from "@/features/workspace/stores/create-workspace-scoped-store"; import { useIndexingVersion } from "@/features/file-explorer/stores/workspace-indexing"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { useDebounce } from "use-debounce"; @@ -87,13 +88,14 @@ interface ProviderSearchSession { } export const useContentSearch = () => { + const workspaceId = useWorkspaceId(); const rootFolderPath = useFileSystemStore((state) => state.rootFolderPath); const workspaceFolders = useFileSystemStore((state) => state.workspaceFolders); const nativeRootPaths = useMemo( () => getNativeWorkspaceRootPaths(rootFolderPath, workspaceFolders), [rootFolderPath, workspaceFolders], ); - const indexingVersion = useIndexingVersion(); + const indexingVersion = useIndexingVersion(nativeRootPaths); const searchSession = useGlobalSearchStore((state) => state); const { query, @@ -128,6 +130,7 @@ export const useContentSearch = () => { [ nativeRootPaths.join("\n") || rootFolderPath || "", indexingVersion, + workspaceId, debouncedQuery, JSON.stringify(scopePaths), debouncedIncludeQuery, @@ -142,6 +145,7 @@ export const useContentSearch = () => { debouncedQuery, indexingVersion, nativeRootPaths, + workspaceId, scopePaths, rootFolderPath, searchOptions.caseSensitive, @@ -216,6 +220,7 @@ export const useContentSearch = () => { } return searchFilesContent({ + workspaceId, root_paths: nativeRootPaths, scope_paths: scopePaths, query: debouncedQuery, @@ -229,11 +234,13 @@ export const useContentSearch = () => { }, [ availability, + workspaceId, debouncedExcludeQuery, debouncedIncludeQuery, debouncedQuery, getProviderFiles, nativeRootPaths, + workspaceId, scopePaths, rootFolderPath, searchActions, @@ -328,6 +335,7 @@ export const useContentSearch = () => { }, [ availability, + workspaceId, debouncedQuery, requestVisibleSearchPage, resultsSearchKey, @@ -395,7 +403,7 @@ export const useContentSearch = () => { const pollScanStatus = async () => { try { - const status = await fffScanStatus(nativeRootPaths); + const status = await fffScanStatus(nativeRootPaths, workspaceId); if (disposed || !searchActions.isCurrentRequest(pollingRequestId)) return; searchActions.setIndexProgress( @@ -436,6 +444,7 @@ export const useContentSearch = () => { debouncedQuery, isIndexing, nativeRootPaths, + workspaceId, performSearch, requestGeneration, rootFolderPath, diff --git a/windows/tauri/src/features/quick-open/hooks/use-file-loader.ts b/windows/tauri/src/features/quick-open/hooks/use-file-loader.ts index 931ef88205..3bcf003be6 100644 --- a/windows/tauri/src/features/quick-open/hooks/use-file-loader.ts +++ b/windows/tauri/src/features/quick-open/hooks/use-file-loader.ts @@ -1,4 +1,5 @@ -import { indexingEvent } from "@/features/file-explorer/stores/workspace-indexing"; +import { useWorkspaceId } from "@/features/workspace/stores/create-workspace-scoped-store"; +import { useIndexingVersion } from "@/features/file-explorer/stores/workspace-indexing"; import { useEffect, useMemo, useRef, useState } from "react"; import { type FffIndexedFile, fffListFiles } from "@/features/file-search/lib/file-search-api"; import { getNativeWorkspaceRootPaths } from "@/features/file-search/utils/file-search-paths"; @@ -15,6 +16,7 @@ const toQuickOpenFiles = (files: readonly Pick[ })); export const useFileLoader = (isVisible: boolean) => { + const workspaceId = useWorkspaceId(); const getAllProjectFiles = useFileSystemStore((state) => state.getAllProjectFiles); const rootFolderPath = useFileSystemStore((state) => state.rootFolderPath); const workspaceFolders = useFileSystemStore((state) => state.workspaceFolders); @@ -22,23 +24,13 @@ export const useFileLoader = (isVisible: boolean) => { () => getNativeWorkspaceRootPaths(rootFolderPath, workspaceFolders), [rootFolderPath, workspaceFolders], ); + const policyVersion = useIndexingVersion(nativeRootPaths); const workspaceKey = JSON.stringify([ rootFolderPath, workspaceFolders.map((folder) => folder.path), + policyVersion, + workspaceId, ]); - const [policyVersion, setPolicyVersion] = useState(0); - useEffect(() => { - const invalidate = () => { - setFiles([]); - setPolicyVersion((value) => value + 1); - }; - window.addEventListener(indexingEvent, invalidate); - window.addEventListener("lithe:directory-marks-changed", invalidate); - return () => { - window.removeEventListener(indexingEvent, invalidate); - window.removeEventListener("lithe:directory-marks-changed", invalidate); - }; - }, []); const [files, setFiles] = useState([]); const [isLoadingFiles, setIsLoadingFiles] = useState(false); const [isIndexing, setIsIndexing] = useState(false); @@ -61,7 +53,7 @@ export const useFileLoader = (isVisible: boolean) => { // Refresh once per opening; typing searches this list without rescanning. const allFiles = nativeRootPaths.length > 0 - ? await fffListFiles(nativeRootPaths) + ? await fffListFiles(nativeRootPaths, workspaceId) : (await getAllProjectFiles()).filter((file) => !file.isDir); if (cancelled) return; loadedForRootRef.current = workspaceKey; @@ -87,7 +79,7 @@ export const useFileLoader = (isVisible: boolean) => { }, [getAllProjectFiles, isVisible, nativeRootPaths, workspaceKey, policyVersion]); return { - files, + files: loadedForRootRef.current === workspaceKey ? files : [], hasLoadedFiles: loadedForRootRef.current === workspaceKey, isLoadingFiles, isIndexing, diff --git a/windows/tauri/src/features/settings/components/git-indexing-settings.test.tsx b/windows/tauri/src/features/settings/components/git-indexing-settings.test.tsx index 30285e0ea3..bc78701099 100644 --- a/windows/tauri/src/features/settings/components/git-indexing-settings.test.tsx +++ b/windows/tauri/src/features/settings/components/git-indexing-settings.test.tsx @@ -72,12 +72,20 @@ test.each(["en-US", "zh-CN"] as const)( expect(window.localStorage.getItem(indexing.indexingSettingsStorageKey(first))).toBe( JSON.stringify(settings), ); - expect(configure).toHaveBeenCalledWith(first); + expect(configure).toHaveBeenCalledWith(first, [], false, workspaceId); expect(configure.mock.calls.every(([path]) => path !== nested)).toBe(true); await act(async () => checkbox().click()); expect(indexing.readIndexingSettings(first)).toEqual({ ...settings, gitIgnoreEnabled: true }); expect(window.localStorage.getItem(indexing.indexingSettingsStorageKey(nested))).toBeNull(); + // Storage events model a preference saved by another native window. + await act(async () => { + window.localStorage.setItem(indexing.indexingSettingsStorageKey(first), JSON.stringify(settings)); + window.dispatchEvent(new window.StorageEvent("storage", {key: indexing.indexingSettingsStorageKey(first)})); + }); + expect(checkbox().getAttribute("aria-checked")).toBe("false"); + await act(async () => checkbox().click()); + await act(async () => fileSystem.setState({ rootFolderPath: second })); expect(checkbox().getAttribute("aria-checked")).toBe("true"); // Reading a default value on the Git page must not create a saved preference. diff --git a/windows/tauri/src/features/settings/components/workspace-indexing-settings.tsx b/windows/tauri/src/features/settings/components/workspace-indexing-settings.tsx index f18e974960..350fd26d4f 100644 --- a/windows/tauri/src/features/settings/components/workspace-indexing-settings.tsx +++ b/windows/tauri/src/features/settings/components/workspace-indexing-settings.tsx @@ -1,3 +1,4 @@ +import { useWorkspaceId } from "@/features/workspace/stores/create-workspace-scoped-store"; import { useEffect, useState } from "react"; import { canUseNativeFileSearch } from "@/features/file-search/utils/file-search-paths"; import { useTranslation } from "@/i18n/locale-provider"; @@ -8,13 +9,14 @@ import { SettingRow } from "./settings-section"; import { configureWorkspaceIndexing, IndexingSettingsError, - indexingEvent, + subscribeToIndexingChanges, readIndexingSettings, writeIndexingSettings, } from "@/features/file-explorer/stores/workspace-indexing"; export function WorkspaceIndexingSettings({ root }: { root: string | undefined }) { const { t } = useTranslation(); + const workspaceId = useWorkspaceId(); const supported = canUseNativeFileSearch(root); const errorKey = (cause: unknown, fallback: string) => cause instanceof IndexingSettingsError ? `indexing.${cause.code}` : fallback; @@ -41,7 +43,7 @@ export function WorkspaceIndexingSettings({ root }: { root: string | undefined } return; } if (!supported) return; - void configureWorkspaceIndexing(root) + void configureWorkspaceIndexing(root, [], false, workspaceId) .then((status) => { if (!disposed && current === generation) setFailed(status.gitIgnoreFailed); }) @@ -51,12 +53,12 @@ export function WorkspaceIndexingSettings({ root }: { root: string | undefined } }); }; read(); - window.addEventListener(indexingEvent, read); + const unsubscribe = subscribeToIndexingChanges([root], read); return () => { disposed = true; - window.removeEventListener(indexingEvent, read); + unsubscribe(); }; - }, [root, supported]); + }, [root, supported, workspaceId]); return ( <> () => workspaceRuntimeRegistry.isWorkspaceReady(workspaceId), diff --git a/windows/tauri/src/features/workspace/types/workspace-runtime.types.ts b/windows/tauri/src/features/workspace/types/workspace-runtime.types.ts index 03b38a218e..85e743d185 100644 --- a/windows/tauri/src/features/workspace/types/workspace-runtime.types.ts +++ b/windows/tauri/src/features/workspace/types/workspace-runtime.types.ts @@ -15,4 +15,5 @@ export interface WorkspaceRuntime { status: WorkspaceRuntimeStatus; error?: string; stores: Map>; + disposeIndexing?: () => Promise; } diff --git a/windows/tauri/src/i18n/shared.generated.ts b/windows/tauri/src/i18n/shared.generated.ts index bc20fb1734..594992e2dc 100644 --- a/windows/tauri/src/i18n/shared.generated.ts +++ b/windows/tauri/src/i18n/shared.generated.ts @@ -2999,10 +2999,12 @@ export const sharedCatalogs = { "indexing.invalidSettings": "Project indexing settings are invalid. The saved data has been preserved.", "indexing.languageDescription": "Native exclusion settings are merged for Java imports, Rust and Go. Java resources already imported may still be scanned. Python project configuration can override server exclusions; other providers remain active without a verified scan-exclusion guarantee.", "indexing.manualReason": "Manually excluded from indexing", + "indexing.permissionDenied": "Lithe cannot access the project folder. Check its permissions, then retry.", "indexing.providerDependent": "Provider-dependent", "indexing.readFailed": "Could not read project indexing settings. Try reopening the project.", "indexing.remoteUnsupported": "Directory indexing exclusions are not supported for remote projects.", "indexing.title": "Project Indexing", + "indexing.workspaceUnavailable": "The project folder is unavailable. Restore it, then retry.", "indexing.writeFailed": "Could not save project indexing settings. Your previous settings remain unchanged.", "inlineEdit.addApiKey": "Add API key", "inlineEdit.apiKeyRequired": "{provider} API key is required for inline edit.", @@ -7964,10 +7966,12 @@ export const sharedCatalogs = { "indexing.invalidSettings": "项目索引设置格式无效,原始设置已保留。", "indexing.languageDescription": "已合并 Java 导入、Rust 和 Go 的原生排除配置。Java 已导入资源仍可能被扫描;Python 项目配置可覆盖服务端排除。其他服务保持运行,尚未保证其后台扫描排除效果。", "indexing.manualReason": "手动排除索引", + "indexing.permissionDenied": "Lithe 无法访问项目目录。请检查权限后重试。", "indexing.providerDependent": "取决于语言服务", "indexing.readFailed": "无法读取项目索引设置,请重新打开项目后重试。", "indexing.remoteUnsupported": "远程项目暂不支持目录索引排除。", "indexing.title": "项目索引", + "indexing.workspaceUnavailable": "项目目录不可用。请恢复目录后重试。", "indexing.writeFailed": "无法保存项目索引设置,原有设置未改变。", "inlineEdit.addApiKey": "添加 API 密钥", "inlineEdit.apiKeyRequired": "行内编辑需要 {provider} API 密钥。", From 7c5173b5ff06587cf61348de08f690c7b6f6cae8 Mon Sep 17 00:00:00 2001 From: xueyeshang1 Date: Sat, 31 Oct 2026 11:41:20 +0800 Subject: [PATCH 04/27] =?UTF-8?q?docs(workspace):=20=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=A4=8D=E5=AE=A1=E4=BF=AE=E5=A4=8D=E4=B8=8E=20macOS=20?= =?UTF-8?q?=E5=8E=9F=E7=94=9F=E9=AA=8C=E6=94=B6=E8=AF=81=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...026-10-28-workspace-indexing-exclusions.md | 24 ++++++++++++++----- .../workspace-indexing-exclusions.json | 8 ++++--- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md index 17519ae0f3..2ba298c5f9 100644 --- a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md +++ b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md @@ -152,12 +152,24 @@ Python/Basedpyright 的项目配置可以覆盖语言服务器配置,因此不 Git 排除、父根遍历剪枝、缓存切换和保存/watcher 回填防护。Java 导入排除测试的 预期路径使用原生配置所需的 `/` 格式,避免 Windows 分隔符制造断言失败;这类 脚本会在首个失败停止,因此两个相关断言都须在 Windows 执行到并通过。 -2026-10-31 本机 Core 1379 项单元及 32 项集成测试、1411 项逐项计时、Swift 67 项 -定向计时,以及 macOS/Bun 设置、租约与目录角色 37 项回归通过;完整 Rust 门禁含 -Swift/C ABI、链接符号与 Git 执行集成。真实 App 已补验普通目录不创建包含例外、 -取消排除恢复搜索、同窗口项目切换、外部 stage/commit 自动刷新、真实 JDT 的 -可见项目补全及中英文错误即时切换。该构建 1404 个普通文件及符号链接未变; -最新 preview 整合后的最终 Native 验收和固定工具链 CI 尚未完成。 +2026-10-31 整合 `preview` 的 `0c13ca25` 后,本地修复提交 `9068703a` 通过完整 +Rust 门禁及 Core 1474 项逐项计时(1442 单元、32 集成),新增索引/LSP 聚焦回归 +34 项通过;Swift 6.4 定向计时 98 项通过,包含完整 Git 状态观察和受控并发回归。 +macOS/Bun 项目树 74、文件系统 17、LSP 68、Java watcher 15、工作区生命周期 31、 +快速打开 10 项及 Git 设置组件回归通过,TypeScript 通过。 + +最终开发 App 首次加载损坏配置时显示中文错误,原始 `{}` 保留;修正配置后点击 +重试恢复项目。不可读取根分别显示中英文错误,恢复权限并点击 Retry 后加载成功。 +完全缺失的最近项目被现有欢迎页禁用,因此以真实权限失败验证恢复流程,不声称 +从禁用条目重开。取消排除后内容搜索恢复,重启后包含例外仍生效;同窗口切换 +linked worktree 正常,外部 stage/commit 自动更新,父仓库自动观察子模块 HEAD。 +全新 JDT 缓存仅生成 `visible` 项目,真实编辑器返回 `PrintStream.print(Object)` +候选;该结果不证明语言服务后台零扫描。 + +运行前后 1419 个普通包文件及 9 个符号链接保持不变。原生工具一度失去窗口连接, +恢复前台后完成剩余流程;测试实例、JDT 与辅助进程已关闭,开发偏好已精确恢复, +用户的另一份 Dev 实例保留。此前构建还验证了普通目录不创建包含例外及错误语言 +即时双向切换;这部分仍标注为历史证据。固定工具链 CI 须在最终批次推送后检查。 真实语言服务扫描及 Windows 原生运行的验证状态以功能矩阵为准。 macOS 实际应用验证发现,组合根包裹的 `RemoteRoutingWorkspaceOperations` diff --git a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json index 7a49cfe610..1c8de87948 100644 --- a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json +++ b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json @@ -4,10 +4,10 @@ "group": "工作区生命周期", "capability": "目录索引排除与 Git 自动排除", "owner": "Workspace", - "verification": "本地索引策略与目录浏览分离,Git 开关位于设置 › 版本控制 › Git;远程根明确禁用,不扩展远程索引能力。2026-10-30/31 的 Core 1379 项单元与 32 项集成测试、1411 项逐项计时、Swift 67 项定向计时,以及 macOS/Bun 设置、租约和目录角色 37 项回归与相关 tree/LSP/quick 分组通过,TypeScript 检查通过。覆盖共享根 owner 租约、迟到安装/释放、缓存 pane 身份、跨窗口 storage、普通目录与取消排除、冷启动排除、首次失败/重试及刷新保树。真实 macOS App 已验证普通目录不创建包含例外、Git 排除与取消排除搜索、同窗口项目切换、外部 stage/commit 自动更新、真实 JDT 冷启动仅导入 visible 且返回 print 补全,以及中英文错误的即时双向切换和损坏配置保留;1404 个包文件哈希及符号链接未变。本机为 Swift 6.4,最终固定 Xcode 26.6 CI 尚待最终 SHA;正在整合最新 preview 并补充剩余 Native 验收。Windows 原生界面未验收,前端本机 Bun 结果不能替代 Windows UI。Java 已导入资源与构建系统显式模块仍可能扫描,Go/Rust 仅合并原生配置,不保证零后台目录访问。", + "verification": "本地索引策略与目录浏览分离;远程根禁用并保留偏好。2026-10-31 整合preview 0c13ca25后,源码9068703a通过完整Rust门禁及Core1474项逐项计时(1442单元、32集成),索引/LSP聚焦34项、Swift6.4定向98项、macOS/Bun项目树74、文件系统17、LSP68、Java watcher15、工作区生命周期31、快速打开10及Git设置3项通过,TypeScript通过。最终macOS App验证损坏配置中文错误与原值保留、修正后重试、不可读取根中英文错误及恢复权限后显式Retry、取消排除搜索与重启持久化、同窗口项目切换、linked worktree外部stage/commit和父仓库观察子模块HEAD。新JDT缓存仅生成visible项目并返回PrintStream.print候选,不当作后台零扫描保证。1419个包文件与9个符号链接未变,测试实例/JDT/辅助进程已关闭,开发偏好恢复,保留用户另一Dev实例。普通目录与即时双向语言切换另有此前构建原生证据。完全缺失最近项目被欢迎页禁用,恢复流程使用真实权限失败验收。固定Xcode26.6 CI待最终SHA。Windows原生界面仍pending,Bun结果不能替代Windows UI;Java构建系统模块仍可能扫描,Go/Rust仅合并原生配置。", "macos": { "implementationStatus": "partial", - "verificationStatus": "pending", + "verificationStatus": "verified", "evidence": [ "macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift", "macos/Sources/Lithe/Views/App/WorkspaceIndexingSettingsView.swift", @@ -44,7 +44,9 @@ "windows/tauri/src/features/file-explorer/stores/workspace-indexing.test.ts", "windows/tauri/src/features/editor/hooks/use-lsp-integration-indexing.test.tsx", "windows/tauri/src-tauri/src/core.rs", - "windows/tauri/src/features/workspace/services/workspace-lifecycle.ts" + "windows/tauri/src/features/workspace/services/workspace-lifecycle.ts", + "windows/tauri/src/features/file-system/services/file-watcher-listener.ts", + "windows/tauri/src/features/file-system/services/file-watcher-listener.test.ts" ] } } From 2caac891aab1bd4e759c9430b612e50c142e81a6 Mon Sep 17 00:00:00 2001 From: xueyeshang1 Date: Sat, 31 Oct 2026 12:01:14 +0800 Subject: [PATCH 05/27] =?UTF-8?q?fix(lsp):=20=E4=BF=9D=E7=95=99=20Windows?= =?UTF-8?q?=20=E5=86=B7=E5=90=AF=E5=8A=A8=E7=B4=A2=E5=BC=95=E7=AD=96?= =?UTF-8?q?=E7=95=A5=E7=9A=84=E5=8E=9F=E7=94=9F=E8=B7=AF=E5=BE=84=E8=BA=AB?= =?UTF-8?q?=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2026-10-28-workspace-indexing-exclusions.md | 10 ++++++++-- rust/lithe-core/src/lsp/interface/engine.rs | 12 +++++++++--- .../features/workspace-indexing-exclusions.json | 2 +- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md index 2ba298c5f9..1485353194 100644 --- a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md +++ b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md @@ -143,6 +143,10 @@ Python/Basedpyright 的项目配置可以覆盖语言服务器配置,因此不 登记空窗期间的设置变更。 最后一个租约释放后,保留的退役记录只用于取消迟到库存;没有活动 owner 的 独立语言服务启动及工作副本不继承旧排除。新的活动策略仍会取消在途启动。 +冷启动查找策略必须使用文件系统返回的原生规范路径。Windows 的 `\\?\` 前缀 +属于 Core 策略键;面向 JDT 诊断/协议的去前缀显示路径不能再转回 `PathBuf` +用于查表,否则冷启动会漏掉 Git 排除,且无法检测初始化期间的策略替换。 +路径身份与协议文本归一化分别处理,不更改已有配置断言来掩盖规则缺失。 ## 验证 @@ -185,8 +189,10 @@ Maven 聚合项目显式声明两个模块时,两者仍被导入,包含已 真实 gopls 0.17.1 与 rust-analyzer 0.3.3097 已接受原生配置,工作副本门禁生效; gopls 仍通过 `go/packages.Load` 查询模块树,配置送达不能证明零目录访问。 -Swift 6.3.3 官方工具链配合本机 macOS 27 SDK 在依赖清单编译阶段崩溃,尚未取得 -固定 Xcode 26.6 环境的验证结果;Swift 6.4 的构建和定向测试结果不能替代该检查。 +Swift 6.3.3 官方工具链配合本机 macOS 27 SDK 曾在依赖清单编译阶段崩溃。 +2026-10-31 的固定 Swift 6.3.3 / Xcode 26.6 CI 在 `7c5173b5` 已完成编译、插件 +测试与完整发布包验证;完整应用测试和后续修复的结果以 PR 最终 SHA 报告为准, +本机 Swift 6.4 结果不替代固定工具链检查。 真实 macOS App 已验证手动及 Git 自动排除菜单只保留取消排除,取消后文件恢复搜索; 关闭 Git 自动排除后,嵌套匹配目录的文件也恢复搜索。重启后分别检查了开关 diff --git a/rust/lithe-core/src/lsp/interface/engine.rs b/rust/lithe-core/src/lsp/interface/engine.rs index d513dd13f9..f0f6c271d5 100644 --- a/rust/lithe-core/src/lsp/interface/engine.rs +++ b/rust/lithe-core/src/lsp/interface/engine.rs @@ -1719,7 +1719,7 @@ impl LspEngine { } // Initial provider settings must include native Git decisions even when // no session or inventory warm-up has run. Never scan under registry locks. - let indexing_root = canonical_workspace_root(&request.root_uri).map(PathBuf::from); + let indexing_root = canonical_workspace_path(&request.root_uri); let indexing_context = if let Some(root) = &indexing_root { crate::project::indexing::prepare_provider_exclusions(root)? } else { @@ -5781,9 +5781,15 @@ fn java_entrypoint_scope_uri(root_uri: &str) -> String { /// /// Resolving links touches the file system, so it happens here in the engine /// rather than in the pure normalizer that receives the result. -fn canonical_workspace_root(root_uri: &str) -> Option { +fn canonical_workspace_path(root_uri: &str) -> Option { let path = url::Url::parse(root_uri).ok()?.to_file_path().ok()?; - let canonical = crate::remote::workspace_io::canonicalize(path).ok()?; + // Core policy identity uses the native canonical path, including Windows' + // verbatim prefix. A protocol/display path is not a policy registry key. + crate::remote::workspace_io::canonicalize(path).ok() +} + +fn canonical_workspace_root(root_uri: &str) -> Option { + let canonical = canonical_workspace_path(root_uri)?; let canonical = canonical.to_string_lossy().replace('\\', "/"); // Windows canonical paths carry a verbatim `\\?\` prefix that JDT never reports. Some( diff --git a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json index 1c8de87948..423a0d0a43 100644 --- a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json +++ b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json @@ -4,7 +4,7 @@ "group": "工作区生命周期", "capability": "目录索引排除与 Git 自动排除", "owner": "Workspace", - "verification": "本地索引策略与目录浏览分离;远程根禁用并保留偏好。2026-10-31 整合preview 0c13ca25后,源码9068703a通过完整Rust门禁及Core1474项逐项计时(1442单元、32集成),索引/LSP聚焦34项、Swift6.4定向98项、macOS/Bun项目树74、文件系统17、LSP68、Java watcher15、工作区生命周期31、快速打开10及Git设置3项通过,TypeScript通过。最终macOS App验证损坏配置中文错误与原值保留、修正后重试、不可读取根中英文错误及恢复权限后显式Retry、取消排除搜索与重启持久化、同窗口项目切换、linked worktree外部stage/commit和父仓库观察子模块HEAD。新JDT缓存仅生成visible项目并返回PrintStream.print候选,不当作后台零扫描保证。1419个包文件与9个符号链接未变,测试实例/JDT/辅助进程已关闭,开发偏好恢复,保留用户另一Dev实例。普通目录与即时双向语言切换另有此前构建原生证据。完全缺失最近项目被欢迎页禁用,恢复流程使用真实权限失败验收。固定Xcode26.6 CI待最终SHA。Windows原生界面仍pending,Bun结果不能替代Windows UI;Java构建系统模块仍可能扫描,Go/Rust仅合并原生配置。", + "verification": "本地索引策略与目录浏览分离;远程根禁用并保留偏好。2026-10-31 整合preview 0c13ca25后,源码9068703a通过完整Rust门禁及Core1474项逐项计时(1442单元、32集成),索引/LSP聚焦34项、Swift6.4定向98项、macOS/Bun项目树74、文件系统17、LSP68、Java watcher15、工作区生命周期31、快速打开10及Git设置3项通过,TypeScript通过。最终macOS App验证损坏配置中文错误与原值保留、修正后重试、不可读取根中英文错误及恢复权限后显式Retry、取消排除搜索与重启持久化、同窗口项目切换、linked worktree外部stage/commit和父仓库观察子模块HEAD。新JDT缓存仅生成visible项目并返回PrintStream.print候选,不当作后台零扫描保证。1419个包文件与9个符号链接未变,测试实例/JDT/辅助进程已关闭,开发偏好恢复,保留用户另一Dev实例。普通目录与即时双向语言切换另有此前构建原生证据。完全缺失最近项目被欢迎页禁用,恢复流程使用真实权限失败验收。固定Xcode26.6 CI待最终SHA。Windows原生界面仍pending,Bun结果不能替代Windows UI;Java构建系统模块仍可能扫描,Go/Rust仅合并原生配置。 首轮最终SHA 7c5173b5的Windows前端2922项通过;SharedRust与真实JDT同停于冷启动Git排除断言,已确认并修复Windows原生规范路径与协议显示路径混用导致的策略查表缺失,修复后本机完整Core1474项再次计时通过、聚焦34项通过,独立只读复审无发现,待后续SHA原生CI确认。", "macos": { "implementationStatus": "partial", "verificationStatus": "verified", From ea6fe9222dcdc26473ed0d16319480fbf8590eb4 Mon Sep 17 00:00:00 2001 From: xueyeshang1 Date: Sat, 31 Oct 2026 13:20:31 +0800 Subject: [PATCH 06/27] =?UTF-8?q?fix(macos):=20=E4=BF=9D=E6=8C=81=E6=89=93?= =?UTF-8?q?=E5=BC=80=E8=BA=AB=E4=BB=BD=E5=B9=B6=E4=BF=AE=E5=A4=8D=E7=B4=A2?= =?UTF-8?q?=E5=BC=95=E5=9B=9E=E5=BD=92=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将会话打开代次与资源投影代次分开,保留立即 Run 的等待意图及同根重开隔离。 避免无待确认 Java 决策时重复发布空值,并使设置与混合规则夹具等待真实生命周期边界。 为 Git 观察 CI 补齐逐项报告,按原始输出活性检测 Swift 停顿,保留既有断言与预算。 记录通过的 126 条受影响 Swift 及 116 条身份消费者验证。 --- ...026-10-28-workspace-indexing-exclusions.md | 22 +++++++- .../references/macos-swift.md | 4 +- .../scripts/run-swift-tests-with-timing.mjs | 18 +++++-- .../scripts/test-timing-lib.mjs | 3 ++ .../scripts/test-verify-test-stability.mjs | 53 +++++++++++++++++++ .github/workflows/ci-macos.yml | 5 +- .../WorkspaceSessionCoordinator.swift | 6 +++ .../AppModel+JavaLaunchDecision.swift | 5 +- .../AppModel/AppModel+RunConfiguration.swift | 2 +- .../AppModelSettingsChangesTests.swift | 8 +++ .../LazyProjectTreeInventoryTests.swift | 19 ++++++- .../WorkspaceSessionCoordinatorTests.swift | 7 +++ .../workspace-indexing-exclusions.json | 2 +- 13 files changed, 141 insertions(+), 13 deletions(-) diff --git a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md index 1485353194..2ffd9ddece 100644 --- a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md +++ b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md @@ -94,6 +94,11 @@ macOS 同样在适配器返回类型化失败,状态保留失败分类,呈 开始新投影代际。旧模块和新项目共用长期存在的界面投影;只在配置完成时 检查代际不能防止旧模块稍后释放刚开始的新项目。同根连续打开也要按独立 操作身份拒绝迟到准备结果,不能只比较根路径。 +应用动作使用的打开代次由工作区会话在同步打开时建立,不能借用投影资源的代次。 +等待旧图清理、重新绑定和首次开始库存会改变投影代次,但不能让刚点击的 Run、 +Java 保存或语言启动请求变成旧操作。同根重开、关闭及停止会话仍使打开代次失效。 +稳定身份不代表库存已就绪:Run 继续以完整快照 UUID 判断 ready,没有快照时只 +绑定配置并保留延后动作,不能将空文件列表当作可运行库存。 Git 元数据事件使用索引专用重评估,不递归请求第二次 Git 刷新。只有有效 库存变化或先前不完整库存恢复完整时,才再次发布项目快照;普通 commit、 @@ -150,6 +155,16 @@ Python/Basedpyright 的项目配置可以覆盖语言服务器配置,因此不 ## 验证 +直接重建库存的界面夹具也须先建立工作区会话与投影身份,并等待必需的工作区 +模块启动,再建立通知计数基线。否则旧夹具会被新的代际校验拒绝,或把模块启动 +通知误算成库存通知。Git 回调与索引配置是独立完成边界;检查配置结果时须等待 +配置完成事件,不能把 Git 回调当作配置完成。保留原有通知次数和配置断言。 +Git 状态观察的 CI 入口使用同一逐项计时工具生成 HTML/JUnit,不能只凭任务退出 +码宣称首错之后的用例已经执行。 +建立真实工作区身份后,Java 准备流程也会实际执行;没有待确认请求时取消准备 +不能给已为 `nil` 的可观察决策属性重复写入 `nil`,否则普通库存更新会刷新设置根。 +已有请求仍须清除,已有等待续体仍须恢复,不能通过关闭项目服务来让通知断言通过。 + `cargo test --manifest-path rust/lithe-core/Cargo.toml --lib project::indexing::tests` 验证真实目录访问剪枝、树浏览、旧版本拒绝、保存回填防护、已跟踪文件保护及例外优先级。 其中嵌套根回归通过真实库存、内容搜索、文件名搜索、预热及替换入口,验证手动与 @@ -159,10 +174,15 @@ Git 排除、父根遍历剪枝、缓存切换和保存/watcher 回填防护。J 2026-10-31 整合 `preview` 的 `0c13ca25` 后,本地修复提交 `9068703a` 通过完整 Rust 门禁及 Core 1474 项逐项计时(1442 单元、32 集成),新增索引/LSP 聚焦回归 34 项通过;Swift 6.4 定向计时 98 项通过,包含完整 Git 状态观察和受控并发回归。 +首轮 CI 后补查的本机 Swift 6.4.2 / Xcode 27.2 受影响组合 126 条计时记录全部 +通过,包含双语设置、完整 Git 观察及 Run 入口;身份消费者 116 条也通过,包含 +Java/LSP、关闭等待、Agent 文件及插件宿主。此前立即 Run 的失效与超时用例恢复, +没有增加等待预算。完整套件在本机另见 AppKit 动画等待,不能据此代替固定工具链 +CI,也不把最后输出的同步测试认定为根因。 macOS/Bun 项目树 74、文件系统 17、LSP 68、Java watcher 15、工作区生命周期 31、 快速打开 10 项及 Git 设置组件回归通过,TypeScript 通过。 -最终开发 App 首次加载损坏配置时显示中文错误,原始 `{}` 保留;修正配置后点击 +源码 `9068703a` 的开发 App 首次加载损坏配置时显示中文错误,原始 `{}` 保留;修正配置后点击 重试恢复项目。不可读取根分别显示中英文错误,恢复权限并点击 Retry 后加载成功。 完全缺失的最近项目被现有欢迎页禁用,因此以真实权限失败验证恢复流程,不声称 从禁用条目重开。取消排除后内容搜索恢复,重启后包含例外仍生效;同窗口切换 diff --git a/.agents/skills/write-stable-tests/references/macos-swift.md b/.agents/skills/write-stable-tests/references/macos-swift.md index 1513e6b6fe..30b7a8346b 100644 --- a/.agents/skills/write-stable-tests/references/macos-swift.md +++ b/.agents/skills/write-stable-tests/references/macos-swift.md @@ -50,7 +50,9 @@ local budget. Because the runner writes to a block-buffered pipe, a finish line can arrive late or be lost; the harness therefore never kills the runner on a per-test timer. Instead a stall watchdog (`--stall-timeout-seconds`, default 120) terminates the runner only when it produces no output at all, and reports -the tests still awaiting a result without asserting a single culprit. Reports +the tests still awaiting a result without asserting a single culprit. Any +nonempty stdout or stderr chunk resets that watchdog, including a partial line; +only complete lines are parsed into test results. Reports are written below `.artifacts/test-stability/`. Each run produces JSON and raw logs for diagnosis, JUnit XML for CI tooling, and a self-contained HTML report for module and performance review. diff --git a/.agents/skills/write-stable-tests/scripts/run-swift-tests-with-timing.mjs b/.agents/skills/write-stable-tests/scripts/run-swift-tests-with-timing.mjs index eb907e7c67..3d36c8dd43 100755 --- a/.agents/skills/write-stable-tests/scripts/run-swift-tests-with-timing.mjs +++ b/.agents/skills/write-stable-tests/scripts/run-swift-tests-with-timing.mjs @@ -87,7 +87,11 @@ function parseArguments(arguments_) { return options; } -export async function run(options, { runProcessImpl = runProcess } = {}) { +export async function run(options, { + runProcessImpl = runProcess, + setTimeoutImpl = setTimeout, + clearTimeoutImpl = clearTimeout, +} = {}) { mkdirSync(path.dirname(options.report), { recursive: true }); const logPath = options.report.replace(/\.json$/i, ".log"); const log = createWriteStream(logPath, { flags: "w" }); @@ -170,8 +174,8 @@ export async function run(options, { runProcessImpl = runProcess } = {}) { } }; const armStallTimer = () => { - if (stallTimer) clearTimeout(stallTimer); - stallTimer = setTimeout(() => { + if (stallTimer) clearTimeoutImpl(stallTimer); + stallTimer = setTimeoutImpl(() => { stalled = true; captureStallSample(); terminateChild(); @@ -217,6 +221,12 @@ export async function run(options, { runProcessImpl = runProcess } = {}) { childPid = pid ?? null; terminateChild = terminate; }, + // Swift may split a timing line across writes. Silence is measured from + // actual bytes, while complete lines remain the source of test results. + onOutputChunk: () => { + lastOutputAt = new Date().toISOString(); + armStallTimer(); + }, onStdoutLine: (line) => recordLine(line, "stdout"), onStderrLine: (line) => recordLine(line, "stderr"), streamStdout: true, @@ -231,7 +241,7 @@ export async function run(options, { runProcessImpl = runProcess } = {}) { try { result = await childPromise; } finally { - if (stallTimer) clearTimeout(stallTimer); + if (stallTimer) clearTimeoutImpl(stallTimer); stallTimer = null; await new Promise((resolve) => { log.once("error", (error) => { diff --git a/.agents/skills/write-stable-tests/scripts/test-timing-lib.mjs b/.agents/skills/write-stable-tests/scripts/test-timing-lib.mjs index b35e661b30..f67709def4 100755 --- a/.agents/skills/write-stable-tests/scripts/test-timing-lib.mjs +++ b/.agents/skills/write-stable-tests/scripts/test-timing-lib.mjs @@ -153,6 +153,7 @@ export function runProcess({ timeoutMs, onStdoutLine = () => {}, onStderrLine = () => {}, + onOutputChunk = () => {}, onSpawn = () => {}, streamStdout = false, streamStderr = false, @@ -200,11 +201,13 @@ export function runProcess({ } child.stdout.on("data", (chunk) => { + if (chunk.length > 0) onOutputChunk(chunk, "stdout"); stdoutChunks.push(chunk); stdoutLines.push(chunk); if (streamStdout) process.stdout.write(chunk); }); child.stderr.on("data", (chunk) => { + if (chunk.length > 0) onOutputChunk(chunk, "stderr"); stderrChunks.push(chunk); stderrLines.push(chunk); if (streamStderr) process.stderr.write(chunk); diff --git a/.agents/skills/write-stable-tests/scripts/test-verify-test-stability.mjs b/.agents/skills/write-stable-tests/scripts/test-verify-test-stability.mjs index 73e23886a9..aa4dfadd69 100755 --- a/.agents/skills/write-stable-tests/scripts/test-verify-test-stability.mjs +++ b/.agents/skills/write-stable-tests/scripts/test-verify-test-stability.mjs @@ -258,6 +258,59 @@ try { rmSync(swiftTimeoutRoot, { recursive: true, force: true }); } +// A write without a newline is still activity. Advance an injected clock so +// the watchdog is verified independently of machine load or real sleeps. +const swiftPartialOutputRoot = mkdtempSync(path.join(os.tmpdir(), "lithe-test-stability-swift-partial-")); +try { + let now = 0; + let nextTimer = 1; + let terminated = false; + const timers = new Map(); + const advance = (milliseconds) => { + now += milliseconds; + for (const [id, timer] of [...timers]) { + if (timer.deadline <= now) { timers.delete(id); timer.callback(); } + } + }; + const report = path.join(swiftPartialOutputRoot, "partial.json"); + await runSwiftTestsWithTiming({ + warnMs: 50, maxMs: 200, stallTimeoutMs: 100, suiteTimeoutMs: 5000, + report, command: "swift", commandArguments: ["test"], + }, { + setTimeoutImpl: (callback, delay) => { + const id = nextTimer++; + timers.set(id, { callback, deadline: now + delay }); + return id; + }, + clearTimeoutImpl: (id) => timers.delete(id), + runProcessImpl: async ({ onSpawn, onStdoutLine, onOutputChunk }) => { + onSpawn({ terminate: async () => { terminated = true; return true; } }); + onStdoutLine("◇ Test partialLine() started."); + for (const stream of ["stdout", "stderr", "stdout"]) { + advance(90); + onOutputChunk(Buffer.from("partial"), stream); + assert.equal(terminated, false); + } + onStdoutLine("✔ Test partialLine() passed after 0.001 seconds."); + return { code: 0, timedOut: false, terminationConfirmed: true, durationMs: now, stdout: "", stderr: "" }; + }, + }); + assert.equal(timers.size, 0, "the injected watchdog must be released after completion"); + assert.deepEqual(JSON.parse(readFileSync(report, "utf8")).tests.map(({status}) => status), ["passed"]); +} finally { + rmSync(swiftPartialOutputRoot, { recursive: true, force: true }); +} + +const partialEvents = []; +const partialProcess = await runProcess({ + command: process.execPath, args: ["-e", 'process.stdout.write("partial")'], timeoutMs: 2000, + onOutputChunk: (chunk, stream) => partialEvents.push(["chunk", stream, chunk.toString()]), + onStdoutLine: (line) => partialEvents.push(["line", "stdout", line]), +}); +assert.equal(partialProcess.code, 0); +assert.equal(partialProcess.stdout, "partial"); +assert.deepEqual(partialEvents, [["chunk", "stdout", "partial"], ["line", "stdout", "partial"]]); + // Regression coverage for the CI misattribution incident: block-buffered pipes // can swallow a finish line, so a stall must be reported as runner silence with // the unfinished tests listed, never as "test X exceeded the budget". diff --git a/.github/workflows/ci-macos.yml b/.github/workflows/ci-macos.yml index ecdc18bf41..898645aa08 100644 --- a/.github/workflows/ci-macos.yml +++ b/.github/workflows/ci-macos.yml @@ -340,8 +340,9 @@ jobs: if: needs.changes.outputs.git_validation == 'true' timeout-minutes: 3 run: | - ./scripts/macos/test/test-macos.sh \ - --skip-build \ + ./.agents/skills/write-stable-tests/scripts/test-stability-macos.sh \ + --report .artifacts/test-stability/macos-git-observation.json \ + --suite-timeout-seconds 120 -- --skip-build \ --filter GitStatusObservationTests - name: Run stable rollback disk image integration tests diff --git a/macos/Sources/Lithe/Application/Features/WorkspaceSessionCoordinator.swift b/macos/Sources/Lithe/Application/Features/WorkspaceSessionCoordinator.swift index 344783db19..d9b045dce7 100644 --- a/macos/Sources/Lithe/Application/Features/WorkspaceSessionCoordinator.swift +++ b/macos/Sources/Lithe/Application/Features/WorkspaceSessionCoordinator.swift @@ -35,6 +35,8 @@ final class WorkspaceSessionCoordinator: ObservableObject { @Published private(set) var recentProjects: [RecentProject] @Published private(set) var isActive = true private(set) var pendingCloseRequest: CloseRequest? + /// One session opening, independent of the resource projection's rebuilds. + private(set) var openingGeneration = 0 private let recentProjectsStore: RecentProjectsStore private let recentProjectBranchReader: any RecentProjectBranchReading @@ -130,6 +132,7 @@ final class WorkspaceSessionCoordinator: ObservableObject { /// Stops coordinator-owned asynchronous work and releases the native URL /// lease. Feature shutdown remains owned by the application's module graph. func stopSessionResources() { + openingGeneration &+= 1 workspaceRebuildID = UUID() workspaceRebuildTask?.cancel() workspaceRebuildTask = nil @@ -138,6 +141,7 @@ final class WorkspaceSessionCoordinator: ObservableObject { } func beginWorkspace(at url: URL) { + openingGeneration &+= 1 workspaceRebuildID = UUID() stopAccessingWorkspace() workspaceURL = url.standardizedFileURL @@ -148,6 +152,7 @@ final class WorkspaceSessionCoordinator: ObservableObject { } func beginStandaloneFile(at url: URL) { + openingGeneration &+= 1 workspaceRebuildID = UUID() stopAccessingWorkspace() workspaceURL = nil @@ -155,6 +160,7 @@ final class WorkspaceSessionCoordinator: ObservableObject { } func clearSession() { + openingGeneration &+= 1 workspaceRebuildID = UUID() workspaceRebuildTask?.cancel() workspaceRebuildTask = nil diff --git a/macos/Sources/Lithe/Models/AppModel/AppModel+JavaLaunchDecision.swift b/macos/Sources/Lithe/Models/AppModel/AppModel+JavaLaunchDecision.swift index 45c5eebb01..3c2806fb49 100644 --- a/macos/Sources/Lithe/Models/AppModel/AppModel+JavaLaunchDecision.swift +++ b/macos/Sources/Lithe/Models/AppModel/AppModel+JavaLaunchDecision.swift @@ -46,7 +46,10 @@ extension AppModel { return } guard let continuation = pendingJavaLaunchDecisionContinuation else { - pendingJavaLaunchDecision = nil + // Repeated cancellation must not publish a nil-to-nil change. + if pendingJavaLaunchDecision != nil { + pendingJavaLaunchDecision = nil + } return } pendingJavaLaunchDecisionContinuation = nil diff --git a/macos/Sources/Lithe/Models/AppModel/AppModel+RunConfiguration.swift b/macos/Sources/Lithe/Models/AppModel/AppModel+RunConfiguration.swift index 1432d07e29..a7d3991f88 100644 --- a/macos/Sources/Lithe/Models/AppModel/AppModel+RunConfiguration.swift +++ b/macos/Sources/Lithe/Models/AppModel/AppModel+RunConfiguration.swift @@ -183,7 +183,7 @@ extension AppModel { var currentWorkspaceIdentity: WorkspaceIdentity? { guard !isProjectSessionClosed, let url = workspaceURL?.standardizedFileURL else { return nil } - return WorkspaceIdentity(url: url, generation: workspaceFeature.workspaceGeneration) + return WorkspaceIdentity(url: url, generation: workspaceSessionCoordinator.openingGeneration) } func isCurrentWorkspace(_ identity: WorkspaceIdentity) -> Bool { diff --git a/macos/Tests/LitheTests/AppModelSettingsChangesTests.swift b/macos/Tests/LitheTests/AppModelSettingsChangesTests.swift index efaf1b61aa..c64a41383a 100644 --- a/macos/Tests/LitheTests/AppModelSettingsChangesTests.swift +++ b/macos/Tests/LitheTests/AppModelSettingsChangesTests.swift @@ -65,6 +65,13 @@ struct AppModelSettingsChangesTests { ]) let probe = SettingsChangesProbe(workspaceOperations: operations, language: language) let model = probe.model + // AppModel starts this required module asynchronously, even in safe + // mode. Await its activation before establishing the notification baseline. + _ = try await model.services.moduleRuntime.activateCapability(.workspaceFoundation) + // Establish both session and feature identities without consuming the + // controlled inventories through an automatic background rebuild. + model.workspaceSessionCoordinator.beginWorkspace(at: root) + model.workspaceFeature.beginWorkspace(at: root, visibilityRules: .default) let usage = model.languageToolingFeature.projectUsage let context = SettingsModelContext(model: model) let viewState = SettingsViewState(initialCategory: .lsp) @@ -83,6 +90,7 @@ struct AppModelSettingsChangesTests { window.close() usage.reset() model.workspaceFeature.reset() + model.workspaceSessionCoordinator.clearSession() probe.cancel() } host.layoutSubtreeIfNeeded() diff --git a/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift b/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift index 48ae4ff187..6ddb8a6ffc 100644 --- a/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift +++ b/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift @@ -15,6 +15,7 @@ struct LazyProjectTreeInventoryTests { defer { fixture.close() } await fixture.load() let configured = fixture.disk.configurationCount + let configurationFinished = fixture.disk.expectConfiguration() let finished = fixture.expectRefresh(for: keep) let gitFinished = fixture.expectGitRefresh() let source = try #require(fixture.watcher.source) @@ -27,6 +28,7 @@ struct LazyProjectTreeInventoryTests { // A stable inventory must not swallow the ordinary file's content update. #expect(fixture.changes.contains(WorkspaceFileChange(fileURL: keep, kind: .changed))) #expect(await gitFinished.waitUntilOpen()) + #expect(await configurationFinished.waitUntilOpen()) #expect(fixture.disk.configurationCount > configured) } @@ -655,7 +657,13 @@ private final class InventoryDisk: WorkspaceOperations, WorkspaceFileOperations, private var configurationTimeout = false private var configurationRevision: UInt64 = 0 private var configurations = 0 + private var nextConfigurationFinished: TestGate? var configurationCount: Int { lock.withLock { configurations } } + func expectConfiguration() -> TestGate { + let gate = TestGate() + lock.withLock { nextConfigurationFinished = gate } + return gate + } func setConfigurationRevision(_ revision: UInt64) { lock.withLock { configurationRevision = revision } } let releaseObserved = TestGate() private var nextFailure: WorkspaceIndexingFailure? @@ -688,7 +696,12 @@ private final class InventoryDisk: WorkspaceOperations, WorkspaceFileOperations, func blockNextListing() { lock.withLock { shouldBlock = true } } func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool, ownerID: String? = nil) throws -> WorkspaceIndexingStatus { - lock.withLock { configurations += 1 } + let completion = lock.withLock { + configurations += 1 + let gate = nextConfigurationFinished + nextConfigurationFinished = nil + return gate + } if let error = lock.withLock({ let error = nextFailure; nextFailure = nil; return error }) { throw error } let (blocks, fails) = lock.withLock { let blocks = blockConfiguration @@ -702,7 +715,7 @@ private final class InventoryDisk: WorkspaceOperations, WorkspaceFileOperations, lock.withLock { configurationTimeout = !released } if !released || fails { throw CocoaError(.fileReadUnknown) } } - return lock.withLock { + let status = lock.withLock { self.policy = policy var status = WorkspaceIndexingStatus() status.supportsExclusions = supportsExclusions @@ -711,6 +724,8 @@ private final class InventoryDisk: WorkspaceOperations, WorkspaceFileOperations, if policy.gitIgnoreEnabled { status.excludedDirectories["ignored"] = "git" } return status } + completion?.open() + return status } func snapshot(at rootURL: URL, visibilityRules: FileVisibilityRules) -> WorkspaceSnapshot? { diff --git a/macos/Tests/LitheTests/WorkspaceSessionCoordinatorTests.swift b/macos/Tests/LitheTests/WorkspaceSessionCoordinatorTests.swift index f8ab687e4d..d58360fc15 100644 --- a/macos/Tests/LitheTests/WorkspaceSessionCoordinatorTests.swift +++ b/macos/Tests/LitheTests/WorkspaceSessionCoordinatorTests.swift @@ -30,13 +30,16 @@ struct WorkspaceSessionCoordinatorTests { feature.prepareForModuleRelease() })) coordinator.openWorkspace(at: newRoot) + let openingGeneration = coordinator.openingGeneration #expect(await preparationStarted.waitUntilOpen()) + #expect(coordinator.openingGeneration == openingGeneration) #expect(feature.workspaceGeneration == oldGeneration) #expect(feature.appliedSnapshot == nil) finishTeardown.open() #expect(await loaded.waitUntilOpen()) #expect(feature.rootNode?.url == newRoot) #expect(feature.loadErrorMessage == nil) + #expect(coordinator.openingGeneration == openingGeneration) } @Test @@ -72,14 +75,18 @@ struct WorkspaceSessionCoordinatorTests { coordinator.configureLifecycle(with: handlers) let root = URL(fileURLWithPath: "/in-memory/coordinator-reopen") coordinator.openWorkspace(at: root) + let firstOpeningGeneration = coordinator.openingGeneration #expect(await preparationStarted.waitUntilOpen()) coordinator.openWorkspace(at: root) + let secondOpeningGeneration = coordinator.openingGeneration + #expect(secondOpeningGeneration != firstOpeningGeneration) finishPreparation.open() #expect(await loaded.waitUntilOpen()) #expect(preparationCount == 2) #expect(restorations == 1) #expect(feature.workspaceGeneration == 1) #expect(feature.rootNode?.url == root) + #expect(coordinator.openingGeneration == secondOpeningGeneration) } private func openingHandlers(wait: @escaping @MainActor () async -> Void) -> WorkspaceSessionCoordinator.LifecycleHandlers { diff --git a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json index 423a0d0a43..cf381087de 100644 --- a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json +++ b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json @@ -4,7 +4,7 @@ "group": "工作区生命周期", "capability": "目录索引排除与 Git 自动排除", "owner": "Workspace", - "verification": "本地索引策略与目录浏览分离;远程根禁用并保留偏好。2026-10-31 整合preview 0c13ca25后,源码9068703a通过完整Rust门禁及Core1474项逐项计时(1442单元、32集成),索引/LSP聚焦34项、Swift6.4定向98项、macOS/Bun项目树74、文件系统17、LSP68、Java watcher15、工作区生命周期31、快速打开10及Git设置3项通过,TypeScript通过。最终macOS App验证损坏配置中文错误与原值保留、修正后重试、不可读取根中英文错误及恢复权限后显式Retry、取消排除搜索与重启持久化、同窗口项目切换、linked worktree外部stage/commit和父仓库观察子模块HEAD。新JDT缓存仅生成visible项目并返回PrintStream.print候选,不当作后台零扫描保证。1419个包文件与9个符号链接未变,测试实例/JDT/辅助进程已关闭,开发偏好恢复,保留用户另一Dev实例。普通目录与即时双向语言切换另有此前构建原生证据。完全缺失最近项目被欢迎页禁用,恢复流程使用真实权限失败验收。固定Xcode26.6 CI待最终SHA。Windows原生界面仍pending,Bun结果不能替代Windows UI;Java构建系统模块仍可能扫描,Go/Rust仅合并原生配置。 首轮最终SHA 7c5173b5的Windows前端2922项通过;SharedRust与真实JDT同停于冷启动Git排除断言,已确认并修复Windows原生规范路径与协议显示路径混用导致的策略查表缺失,修复后本机完整Core1474项再次计时通过、聚焦34项通过,独立只读复审无发现,待后续SHA原生CI确认。", + "verification": "本地索引策略与目录浏览分离;远程根禁用并保留偏好。2026-10-31 整合preview 0c13ca25后,源码9068703a通过完整Rust门禁及Core1474项逐项计时(1442单元、32集成),索引/LSP聚焦34项、Swift6.4定向98项、macOS/Bun项目树74、文件系统17、LSP68、Java watcher15、工作区生命周期31、快速打开10及Git设置3项通过,TypeScript通过。源码9068703a的macOS App验证损坏配置中文错误与原值保留、修正后重试、不可读取根中英文错误及恢复权限后显式Retry、取消排除搜索与重启持久化、同窗口项目切换、linked worktree外部stage/commit和父仓库观察子模块HEAD。新JDT缓存仅生成visible项目并返回PrintStream.print候选,不当作后台零扫描保证。1419个包文件与9个符号链接未变,测试实例/JDT/辅助进程已关闭,开发偏好恢复,保留用户另一Dev实例。普通目录与即时双向语言切换另有此前构建原生证据。完全缺失最近项目被欢迎页禁用,恢复流程使用真实权限失败验收。固定Xcode26.6完整CI以PR最终SHA报告为准。Windows原生界面仍pending,Bun结果不能替代Windows UI;Java构建系统模块仍可能扫描,Go/Rust仅合并原生配置。 首轮最终SHA 7c5173b5的Windows前端2922项通过;SharedRust与真实JDT同停于冷启动Git排除断言,已确认并修复Windows原生规范路径与协议显示路径混用导致的策略查表缺失,修复后本机完整Core1474项再次计时通过、聚焦34项通过,独立只读复审无发现,后续原生CI以PR最终SHA为准。补查后修复macOS打开代次与投影资源代次混用,以及无Java决策时重复写空值造成的设置根通知;本机Swift6.4.2/Xcode27.2受影响126条和身份消费者116条计时记录全通过,包含完整Git观察、双语设置、立即Run与同根/跨根旧动作隔离,未放宽等待或断言。本机完整套件另见AppKit动画等待,最终固定工具链仍由CI确认。", "macos": { "implementationStatus": "partial", "verificationStatus": "verified", From e2e7f5cad92e69d0b635642570697d1da56f5b35 Mon Sep 17 00:00:00 2001 From: Xiaoyumuxi <23722032@bjtu.edu.cn> Date: Sat, 31 Oct 2026 17:33:53 +0800 Subject: [PATCH 07/27] =?UTF-8?q?feat(plugins):=20=E7=8B=AC=E7=AB=8B?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=99=A8=E9=AB=98=E4=BA=AE=E4=B8=8E=E5=8A=A8?= =?UTF-8?q?=E4=BD=9C=20API=EF=BC=8C=E5=A4=8D=E7=94=A8=E6=99=AE=E9=80=9A?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E8=B0=83=E7=94=A8=20(#1617)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(plugins): 声明式语法高亮与运行标记(API-25/27/29) - languages 2:插件语言可带 Monarch 语法和编辑器配置,Core 校验,纯语法插件免重启 - runMarkers 1:backend 2 插件函数回答可运行行,编辑器画运行按钮,点击经 commands/didRun 带 runMarker - 契约、fixture、Agent Note、计划文档与功能矩阵同步更新;Windows 暂不支持 Refs #570 * feat(plugins): 独立编辑器高亮与动作扩展 - languages 2 提供静态语法和独立编辑配置,插件正则在可终止 worker 中运行\n- editor/registerActions 运行期注册文本动作,点击复用普通函数调用,不扩张 Run/LSP/Build/Debug 领域契约\n- 补齐文档版本、动作租约、取消与清理、独立工具后端启用及安全模式边界\n- 更新 Skill、审查规则与决策笔记,总结 #1581/#1558 的架构边界\n- 同步契约、fixtures、中英词条、功能矩阵与资源复用说明\n\nRefs #570\nReworks #1617 * docs(plugins): 明确 API-25 JSON 贡献的支持范围与局限 区分包内静态 JSON 贡献与尚未开放的运行期 Provider 注册、替换和释放;说明独立语义 Provider、新引擎适配及平台、SDK 和验收限制。同步计划、架构笔记、正式契约与功能矩阵。 * fix(plugins): 修复编辑器扩展审查中的生命周期与高亮问题 动作刷新立即确认调度并隔离非致命失败,整批收集共享八秒期限并在撤销时清理计时任务。 Core 保留校验后的 grammar 原始文本,worker 按源顺序解析 cases 并显式默认 root;配置-only 别名借用既有 tokenizer,重映射 token 语言身份以保留独立注释配置。 模块状态观察弱引用 runtime,补齐有界、确定性的 Swift/Rust/WebKit 回归与测试文档模型清理,同步契约、Agent Note 和功能矩阵。 验证:57 项 Swift、1459 项 Rust、39 项编辑器和 119 项真实 WebKit 测试通过;静态边界、i18n、只读 bundle、资源复用与矩阵门禁通过。未执行 Windows 原生构建或打包安装验收。 Refs #1617, #570 --- .../2026-10-20-plugin-function-contract.md | 2 +- .../2026-10-26-plugin-live-activation.md | 7 +- ...plugin-capability-and-domain-boundaries.md | 75 +++ ...2026-10-31-plugin-editor-extension-apis.md | 83 +++ .agents/skills/develop-lithe/SKILL.md | 22 + .../references/review-policy.md | 5 + docs/ci-builds.md | 1 + docs/development/macos-plugin-api-plan.md | 35 +- frontend/editor/src/language-contributions.ts | 3 + .../src/monaco-tokenization-internals.d.ts | 9 + frontend/editor/src/plugin-editor-actions.ts | 107 +++ .../editor/src/plugin-grammar-tokenizer.ts | 150 +++++ frontend/editor/src/plugin-grammar-worker.ts | 54 ++ frontend/editor/src/plugin-languages.test.ts | 100 +++ frontend/editor/src/plugin-languages.ts | 70 ++ frontend/editor/src/textmate-worker.ts | 6 + frontend/editor/src/workbench.ts | 64 +- macos/Experiments/Monaco/main.swift | 20 + .../Monaco/workbench.integration.ts | 139 ++++ macos/Resources/en.lproj/Localizable.strings | 2 + .../zh-Hans.lproj/Localizable.strings | 2 + .../Application/Composition/AppServices.swift | 4 + .../PluginEditorActionHostService.swift | 146 +++++ .../Features/PluginEditorLanguages.swift | 19 + .../PluginLanguageProviderCatalogSource.swift | 4 +- .../RustDeclarativePluginOperations.swift | 20 +- .../Platform/MacOS/MacServiceContainer.swift | 47 +- .../MacOS/MonacoWorkbenchEditor.swift | 185 +++++- .../Plugins/MacPluginBackendSessions.swift | 11 +- .../Plugins/MacPluginEditorLanguages.swift | 137 ++++ .../Views/App/PluginMarketplaceView.swift | 2 + .../Plugins/PluginManifestValidator.swift | 2 +- .../Plugins/DeclarativePluginContracts.swift | 71 +- .../Plugins/PluginEditorActionContracts.swift | 27 + .../Catalog/BuiltInModuleCatalog.swift | 18 + .../Lifecycle/ModuleTypes.swift | 11 + .../LitheModuleAPI/Plugins/PluginTypes.swift | 19 +- .../MonacoWorkbenchSessionLifetimeTests.swift | 2 +- .../LitheTests/PluginEditorActionTests.swift | 97 +++ .../PluginEditorLanguagesTests.swift | 205 ++++++ .../src/lsp/interface/plugin_function.rs | 8 + rust/lithe-core/src/plugins/capabilities.rs | 5 +- rust/lithe-core/src/plugins/declarative.rs | 120 +++- rust/lithe-core/src/plugins/editor_actions.rs | 250 +++++++ rust/lithe-core/src/plugins/grammar.rs | 617 ++++++++++++++++++ rust/lithe-core/src/plugins/mod.rs | 3 + rust/lithe-core/src/protocol/command.rs | 6 + rust/lithe-core/src/runtime/dispatcher.rs | 10 + .../src/tests/declarative_plugins.rs | 5 + rust/lithe-core/src/tests/mod.rs | 2 + .../src/tests/plugin_editor_resources.rs | 210 ++++++ .../resources/reuse-worktree-resources.mjs | 2 + .../test-reuse-worktree-resources.mjs | 10 + scripts/resources/worktree-resources.json | 6 +- shared/contracts/plugins/v1/README.md | 150 ++++- .../v1/fixtures/editor-actions.plugin.json | 36 + .../v1/fixtures/function-protocol.json | 5 +- .../v1/fixtures/grammars/http.monarch.json | 44 ++ .../v1/fixtures/invalid-manifests.json | 7 +- .../v1/fixtures/language-grammar.plugin.json | 43 ++ .../plugins/v1/plugin-manifest.schema.json | 31 +- shared/contracts/rust-core-api.md | 21 + shared/i18n/locales/en-US.json | 3 +- shared/i18n/locales/zh-CN.json | 3 +- shared/i18n/messages.json | 11 + .../features/plugin-editor-actions.json | 26 + .../features/plugin-editor-grammars.json | 27 + 67 files changed, 3589 insertions(+), 55 deletions(-) create mode 100644 .agents/notes/implemented/architecture/2026-10-31-plugin-capability-and-domain-boundaries.md create mode 100644 .agents/notes/implemented/architecture/2026-10-31-plugin-editor-extension-apis.md create mode 100644 frontend/editor/src/plugin-editor-actions.ts create mode 100644 frontend/editor/src/plugin-grammar-tokenizer.ts create mode 100644 frontend/editor/src/plugin-grammar-worker.ts create mode 100644 frontend/editor/src/plugin-languages.test.ts create mode 100644 frontend/editor/src/plugin-languages.ts create mode 100644 macos/Sources/Lithe/Application/Features/PluginEditorActionHostService.swift create mode 100644 macos/Sources/Lithe/Application/Features/PluginEditorLanguages.swift create mode 100644 macos/Sources/Lithe/Platform/MacOS/Plugins/MacPluginEditorLanguages.swift create mode 100644 macos/Sources/LitheCoreContracts/Plugins/PluginEditorActionContracts.swift create mode 100644 macos/Tests/LitheTests/PluginEditorActionTests.swift create mode 100644 macos/Tests/LitheTests/PluginEditorLanguagesTests.swift create mode 100644 rust/lithe-core/src/plugins/editor_actions.rs create mode 100644 rust/lithe-core/src/plugins/grammar.rs create mode 100644 rust/lithe-core/src/tests/plugin_editor_resources.rs create mode 100644 shared/contracts/plugins/v1/fixtures/editor-actions.plugin.json create mode 100644 shared/contracts/plugins/v1/fixtures/grammars/http.monarch.json create mode 100644 shared/contracts/plugins/v1/fixtures/language-grammar.plugin.json create mode 100644 shared/platform-feature-matrix/features/plugin-editor-actions.json create mode 100644 shared/platform-feature-matrix/features/plugin-editor-grammars.json diff --git a/.agents/notes/implemented/architecture/2026-10-20-plugin-function-contract.md b/.agents/notes/implemented/architecture/2026-10-20-plugin-function-contract.md index f9e20ad737..5e04e1a462 100644 --- a/.agents/notes/implemented/architecture/2026-10-20-plugin-function-contract.md +++ b/.agents/notes/implemented/architecture/2026-10-20-plugin-function-contract.md @@ -33,7 +33,7 @@ Issue #1351 要把 Maven、Gradle 这类插件从“只给声明”推进到“ | 插件提供插件函数 | 插件 | 插件后端 | `lithe/function/invoke` | | 插件调用宿主能力 | 宿主 | 宿主 | `lithe/host/*`,按协议版本逐个开放 | -开发者判断时只问一句:**结果要不要被 Lithe 理解?** 要被 IDE 工作流、展示层或另一个平台使用的,就是领域能力,必须有类型化契约;只给插件自己界面用的,才是插件函数。 +开发者判断时先问:**宿主需要理解哪个能力的数据?** 参与构建等原生领域工作流的结果走对应领域契约;高亮、文档和编辑器动作走独立扩展点的类型化契约,不因宿主需要展示就强塞进 Build/LSP/Debug。插件私有业务继续用插件函数,独立扩展点可以在用户操作时绑定同一插件的函数;边界见[独立插件能力与领域契约](2026-10-31-plugin-capability-and-domain-boundaries.md)。 ### 2. 禁止回调自己 diff --git a/.agents/notes/implemented/architecture/2026-10-26-plugin-live-activation.md b/.agents/notes/implemented/architecture/2026-10-26-plugin-live-activation.md index f3b39fa508..698d234faa 100644 --- a/.agents/notes/implemented/architecture/2026-10-26-plugin-live-activation.md +++ b/.agents/notes/implemented/architecture/2026-10-26-plugin-live-activation.md @@ -4,7 +4,7 @@ ## 先说结论 -安装、更新、回退、卸载、启用、停用一个插件时,只有“它的每一项贡献在宿主里都有运行期实现”的插件才免重启生效。判断由宿主后端决定,写在 `PluginDescriptor.canActivateWithoutRestart`,不是 `plugin.json` 里的字段,所以插件契约没有变化,也不需要同步 lithe-plugin-docs。这条规则目前只落地了第一阶段:只有“纯调试适配器插件”(只贡献 `debugAdapters`,以及它声明的语言和设置,没有后端、没有其他模块)满足条件。 +安装、更新、回退、卸载、启用、停用一个插件时,只有“它的每一项贡献在宿主里都有运行期实现”的插件才免重启生效。判断由宿主后端决定,写在 `PluginDescriptor.canActivateWithoutRestart`,不是 `plugin.json` 里的字段,所以插件契约没有变化,也不需要同步 lithe-plugin-docs。这条规则目前落地了两类:第一阶段的“纯调试适配器插件”(只贡献 `debugAdapters`,以及它声明的语言和设置,没有后端、没有其他模块),和第二阶段的“纯语法高亮插件”(只贡献带 `grammar` 或编辑配置的语言,见 [独立插件编辑器 API](2026-10-31-plugin-editor-extension-apis.md))。两者也可以出现在同一个插件里。 满足条件的插件不进模块图,而是登记在一个**内存实时注册表**(`MacLivePluginRegistry`)里。注册表用后台线程扫描已安装目录,主线程只读取扫描结果快照。其他插件的路径完全不变:仍然写成 `.updateStaged`,等重启才生效。 @@ -23,7 +23,7 @@ ### 1. 由后端能力决定,不是清单字段 -`canActivateWithoutRestart` 现在的定义是:有调试适配器、没有 `backend` 声明、模块列表恰好是 `[debugAdaptersExtension(<插件 id>)]`,且该模块没有其他贡献。 +`canActivateWithoutRestart` 现在的定义是:没有 `backend` 声明、模块列表非空,且每个模块都是 `debugAdaptersExtension(<插件 id>)` 或 `grammarsExtension(<插件 id>)`,并且没有其他贡献。语法模块只承载启用状态,它的运行期登记、撤回和查找由 `MacPluginEditorLanguages` 完成(编辑器每次变化都收到完整的语言列表,撤回就是从列表里拿掉)。 - 正确做法:新增一种贡献(例如语言服务器)的热激活时,先实现它的运行期登记和撤回,再在这个谓词里放行。 - 错误做法:在 `plugin.json` 里加 `restartRequired: false` 让插件作者声明。作者不了解宿主哪些贡献有运行期实现;声明错了,用户看到的是“装上了但没生效”。 @@ -97,12 +97,13 @@ 5. 传给 Core 的 `registrationGeneration` 是准备调试适配器时注册表的 `generation`,Core 只比较是否相等,不解释数值。 6. `stopSessions(ofPlugin:)` 只停该插件拥有的会话。会话记录的所有者是创建时选中的插件;同一个语言下另一个插件的会话继续运行。 7. debug-only 声明里的文件扩展名会并入语言;扩展名集合变化会让该语言的服务器按原有规则重启。 -8. 目前仍然需要重启的贡献:语言服务器、运行/测试、构建系统、VCS、项目生成器、界面贡献、`backend`、网页窗口。后续阶段按“先有运行期登记和撤回,再放进谓词”的顺序逐类加入,每类单独验证。 +8. 目前仍然需要重启的贡献:语言服务器、运行/测试、编辑器动作后端(因为它依赖 `backend`)、构建系统、VCS、项目生成器、界面贡献、`backend`、网页窗口。后续阶段按“先有运行期登记和撤回,再放进谓词”的顺序逐类加入,每类单独验证。 ## 验证 - `macos/Tests/LitheTests/PluginLiveActivationTests.swift`:谓词的正反例(含契约 fixture)、debug-only 语言与插件 id 排序无关、注册表的收录/代数/启用/撤回/按 id 取第一个、后台扫描不在主线程、扫描失败保留旧登记、另一窗口的通知触发重扫、管理器的安装/更新/回退/启用/卸载流程。等待事件使用带本地期限的 `ChangeLatch`,不用真实 sleep。 - `LanguageProviderCatalogSourceTests`(debug-only 声明不抢语言、顺序无关、不触发扩展提示、每次 load 读取实时声明)、`DebugModuleTests`(`providersSource` 每次调用都查)、`LanguageIntelligenceModuleTests`(出现调试器不会停正在运行的语言服务器)。 +- `macos/Tests/LitheTests/PluginEditorLanguagesTests.swift`:纯语法插件满足谓词、带后端的工具插件不满足;实时语法随插件出现和消失。 - `scripts/macos/verify/verify-runtime-bundle-immutability.sh` 和 `./scripts/agent-notes/verify-agent-notes.sh`。 ## 适用范围 diff --git a/.agents/notes/implemented/architecture/2026-10-31-plugin-capability-and-domain-boundaries.md b/.agents/notes/implemented/architecture/2026-10-31-plugin-capability-and-domain-boundaries.md new file mode 100644 index 0000000000..7e9fa459a1 --- /dev/null +++ b/.agents/notes/implemented/architecture/2026-10-31-plugin-capability-and-domain-boundaries.md @@ -0,0 +1,75 @@ +# Agent 笔记:独立插件能力与领域契约的边界 + +状态:已实现 + +## 先说结论 + +领域契约的目的,是让同一类事实和工作流只有一个稳定模型,而不是要求所有插件都成为语言、构建或调试提供者。普通工具插件可以独立使用高亮、文档和编辑器动作 API;底层复用同一个进程、函数调用或 JSON-RPC 通信机制,不改变它的业务归属。本笔记落地的是设计与审查规则,不表示下文提到的工具链、配置编辑或编辑器扩展提案已经全部实现。 + +## 问题 + +用户在三组讨论中反复指出同一种偏差:实现者为了接入已有模块,把工具专属知识重新写回宿主,或者把独立能力强行套成某个领域操作。 + +- [PR #1581 的方案评论](https://github.com/1lck/Lithe-IDEA/pull/1581#issuecomment-6498462433):版本管理器的别名、版本文件覆盖规则和安装布局属于插件/上游;封闭的 `miseToml | toolVersions` 枚举不等于通用扩展。新增另一种管理器应只改插件,不改 Core。 +- [PR #1581 的后续评论](https://github.com/1lck/Lithe-IDEA/pull/1581#issuecomment-6499617033):查询和观察机制可内置,观察对象仍需声明;相关输入变化应撤销并重载整份查询结果。环境信息可以统一展示,工具专属设置必须由插件注入,而不是固定模板。 +- [PR #1558 的正式评审](https://github.com/1lck/Lithe-IDEA/pull/1558#pullrequestreview-5715250513):不透明测试选择器、统一测试结果和通用运行选项合理;XML 专属配置绑定、`runtime: jvm`、固定 Maven 工具链名、固定 Java 准备任务 ID 不合理。调试应声明适配器与连接目标,不经宿主 Java 特判;临时迁移要单独跟踪退出条件。 +- PR #1617 的本次设计讨论:HTTP 工具插件解析文本并提供高亮和按钮,不因此成为 LSP(语言服务器协议)、Build 或 Debug 插件;播放图标也不是接入原生 Run 工作流的证据。 + +以上评论中的示意字段和拆分顺序是各自提案的讨论材料,不作为已经发布的正式 API。 + +## 决策 + +### 按语义分三类,不按实现文件名分 + +| 类别 | 宿主需要理解什么 | 应放在哪里 | +| --- | --- | --- | +| 领域模型 | 构建目标、测试结果、调试会话等同领域事实 | 对应的类型化领域契约 | +| 独立扩展点 | 文档范围、图标、动作调用目标、语法资源等有限数据 | 独立的编辑器或宿主能力契约 | +| 插件业务 | HTTP 请求结构、版本别名、工具配置格式、框架启动参数 | 插件自身或成熟上游 | + +旧规则“结果要被 IDE 理解就是领域能力”过宽。正确判断应是:宿主理解的是哪个稳定能力的语义?理解编辑器动作的范围和标题,不代表宿主需要理解 HTTP,更不代表它属于构建领域。 + +正确做法:HTTP 插件通过独立编辑器动作 API 绑定自己的函数;宿主只管理显示、明确点击、版本、取消和所有权。不要这样做:新增 `http`/`sql` 运行种类,让 Build Provider 报一个假任务,或者向通用命令通知加入专用 `runMarker` 对象。 + +### 共享机制,不共享不相干的业务模型 + +身份、权限、会话、能力发现、请求 ID、超时、取消、过期结果隔离和清理可以复用。不另建每工具一个进程/RPC 框架;也不因为复用了名字带 `lsp` 的内部传输实现,就要求普通后端提供语言智能。 + +插件参与已有原生领域时必须使用该领域的统一模型。例如向原生 Build 窗口提供工程模型不能改走私有函数逃过 Core 解码。独立 API 同样需要可校验的输入输出;“独立”不等于任意 JSON 直接进入界面或跨插件调用。 + +### 新工具接入不修改宿主的工具知识 + +工具定义负责可执行入口、探测和环境;提供方返回安装与作用域事实;使用方引用工具 ID。工具名、框架名、解析格式、任务用途之间的关联必须显式声明,不靠文件名巧合、魔法字符串或固定私有 ID。 + +配置格式及其优先级由工具/插件负责;宿主只管理已确认来源、版本冲突、安全写入和回读。声明的观察输入变化后撤销相关快照,不能保留一部分来自旧输入的“有效”结果。权限描述必须对应实际影响,发现运行时不能暗中获得替换任意宿主命令的权力。 + +### 版本演进不机械扩大 + +先复用已有 API,新增能力优先用已发布协议允许的能力发现和可选扩展。旧宿主可忽略的可选展示允许降级;不可忽略的启动、安全或必需行为需要明确准入。清单新增资源字段仍按该清单能力版本管理,不放宽严格解码来伪装兼容。所有公共变化照常更新契约、消费者和官方 SDK 验证,独立 API 也不例外。 + +## 考虑过的备选方案 + +- 全部经 LSP/Build/Debug 接入:现成模型多,但普通工具被迫提供假领域对象,宿主逐渐堆积专属分支,拒绝。 +- 全部经无类型函数:接口少,却让宿主无法统一理解真正的构建、测试或编辑器贡献,绕过校验,拒绝。 +- 每种工具单开一套协议:短期直接,但复制生命周期并让新增工具依赖宿主发版,拒绝。 +- 用受限独立扩展点绑定既有函数:宿主只定义自己需要理解的数据,插件保留业务自由度,采用。 + +## 后果 + +收益是独立工具不会污染领域模块,真正参与领域工作流的插件仍共享一个模型;新增同类工具只改插件。代价是实现者必须先说明契约所有者、调用方向和第二个使用场景,而不是沿最方便的模块塞字段。已有历史特判不在一次功能 PR 中无界清理;新代码不能继续扩大,必要迁移记录退出条件。 + +## 验证 + +- `./scripts/agent-notes/verify-agent-notes.sh`:决策引用、路径和笔记结构。 +- `./scripts/architecture/verify-service-boundaries.sh`:职责边界;不能替代人工审查工具专属分支。 +- `./scripts/architecture/verify-shared-contracts.sh`:正式契约与 fixture 一致性。 +- 审查时用两个语义不同的工具走同一扩展点,检查是否需要新增工具名枚举、宿主解析器或固定调用 ID;运行期验证继续遵循所属能力的验收和矩阵要求。 + +## 适用范围 + +- `.agents/skills/develop-lithe/SKILL.md` +- `.agents/skills/lithe-code-review/` +- `shared/contracts/plugins/v1/` +- `rust/lithe-core/src/plugins/` +- `macos/Sources/Lithe/Application/Features/` +- `macos/Sources/Lithe/Platform/MacOS/Plugins/` diff --git a/.agents/notes/implemented/architecture/2026-10-31-plugin-editor-extension-apis.md b/.agents/notes/implemented/architecture/2026-10-31-plugin-editor-extension-apis.md new file mode 100644 index 0000000000..8f3a455a16 --- /dev/null +++ b/.agents/notes/implemented/architecture/2026-10-31-plugin-editor-extension-apis.md @@ -0,0 +1,83 @@ +# Agent 笔记:独立的插件高亮与编辑器动作 API + +状态:已实现 + +## 先说结论 + +普通工具插件可以独立提供文本高亮、编辑器配置和位置动作,不要求实现 LSP(语言服务器协议)、构建、运行或调试提供者。静态资源使用 `languages:2`,位置动作通过函数协议 3 的独立宿主方法注册,再复用原有函数调用执行;没有 `runMarkers` 清单能力,也不修改 `commands/didRun`。当前接线限 macOS,运行和界面验收以功能矩阵为准,不把静态校验当作产品验收。 + +## 问题 + +HTTP 工具插件需要高亮和请求旁的按钮。原方案把按钮建模成专用运行标记,并向通用命令通知加入 `runMarker`,扩大了无关领域的兼容面。用户确认[独立能力与领域边界](2026-10-31-plugin-capability-and-domain-boundaries.md):宿主理解动作的有限展示结构,插件理解 HTTP/SQL 等业务,不能因为按钮像播放图标就归入 Run。 + +## 决策 + +### 静态高亮与后端业务分离 + +语法和注释/括号配置属于安装包内只读资源,通过独立编辑器模块启用;不要求语言服务器或后端。仅配置贡献也应用,编辑器模块不抢占已有语言的运行、调试和服务器所有权。纯静态资源可安装、停用和卸载即时生效,带后端的插件继续遵循既有启动登记规则。没有 UI 或领域模块的独立后端派生应用级启用模块,不能为通过 catalog 检查伪造网页;启动仍检查明确启用、安全模式和隔离状态。 + +复用已固定版本的 Monaco Monarch 引擎,不在 Core 重写词法分析。Core 校验资源大小、状态和规则,并拒绝 include 环及展开后超过预算的图;浏览器中的专用 worker 才编译和执行插件正则,主线程只接受 token。worker 超过本地执行期限时终止,该语言退为普通文本,不影响编辑与保存。现有 TextMate/Oniguruma 已打包,不以“需要新增 WASM”作为否决理由;首版选择 Monarch 是局部数据适配,不改变 Java 的 TextMate 工作流。 + +Monarch 的 `cases` 按声明顺序执行,不能把语法当成无序字典重建。Core 校验后返回原始 JSON 文本,Swift 和浏览器主线程只传递文本,worker 才解析并在缺少 `start` 时显式使用 `root`。仅贡献配置的 `properties`、`bash` 等语言保留独立文档身份,但借用既有 `ini`、`shell` tokenizer;撤回配置只释放借用登记,不销毁上游引擎。 + +### 编辑器动作是小型独立契约 + +后端先注册普通函数,再通过 `editor/registerActions` 注册上下文、文件选择器和收集函数。宿主返回既有 subscription,由会话、上下文或显式释放共同清理。注册时只记录绑定,下一事件轮才请求解析,避免后端等待宿主注册答复、宿主又等待同一后端的循环。 + +宿主向收集函数提供公开文档身份、内容版本和当前脏缓冲。返回范围、标题、受限图标和同插件函数绑定;Core 只校验结构和 UTF-16 边界,不解释请求、查询、框架或任务 ID。多个同一行动作进入同一菜单,不制造测试种类或覆盖为只剩一个动作。 + +正确做法:HTTP 的“发送请求”和 SQL 的“执行查询”都返回同一展示结构,分别绑定自己已有的普通函数。不要这样做:新增 `http`/`sql` 执行类型、把请求包成假 Build 任务,或者要求工具插件提供 LSP CodeLens。 + +点击时浏览器只回传宿主生成的批次和动作键,不能提供函数或业务参数。宿主重新验证内容版本、上下文、注册租约与会话函数,再用已有 invocation 调用;插件收到文档身份、预期版本和自己的不透明数据,执行前核对当前文本。命令通知保持原样,命令面板可调用同一插件业务实现。 + +### 生命周期与兼容 + +动作刷新只确认已调度,不能等待插件返回后才结束编辑器桥接调用。整批收集共享八秒期限,各注册只拿剩余预算;失败不进入编辑、保存同步的致命错误路径。模块状态观察者弱引用运行时,避免事件源持有回调、回调又持有事件源,导致关闭项目后模块图不能释放。 + +编辑立即撤销旧动作,取消旧收集任务,防抖后再请求;关闭、替换和失效结果均不得恢复旧按钮。解析和用户执行分开管理,后者不因重新解析被误取消;撤销注册、关闭上下文或会话结束时取消所属执行,不自动重试 HTTP 等副作用。 + +新宿主方法在已支持增量能力发现的函数协议 3 内新增,不提高整套协议或新增领域版本。新增 `editor.actions` 权限由安装审查明确确认,旧宿主不认识时拒绝安装;不能一边要求新权限、一边宣称同一包能在旧宿主无条件降级。静态清单新增资源仍要求 `languages:2`;契约、fixture 与两个 SDK 的验证和合并后镜像同步不能省略。 + +第一版使用既有 `onWorkspaceOpen` 启动,接受其后台成本。不会通过尚未存在的注册信息发现一个未启动的后端,也不假称已支持按文件懒启动或后端热安装。 + +### 资源生命周期 + +grammar 从只读插件包有界读取,校验结果仅在本次进程内缓存;编译后的状态与文档 token 属于一个 worker,终止/停用时释放,不落盘。worker 代码复用本工作树生成的 `textmate-worker.js`,应用运行时只读;编辑器动作和租约也仅在内存。没有 bundle、安装资源或跨工作树缓存写入,不影响签名及 Sparkle 增量基线。 + +## 考虑过的备选方案 + +- 要求工具插件提供 LSP:标准化但无必要地强加语言服务生命周期,拒绝。 +- 专用 `runMarkers` 和 `didRun.runMarker`:把展示和执行耦合,新增一种动作就扩张执行通知,拒绝。 +- 函数名约定或插件名分支:宿主猜私有协议且无法安全撤回,拒绝。 +- 首版做任意样式装饰/万能工具工作流:超出当前需求;仅开放范围、标题、图标与函数绑定。 +- 直接在主线程运行语法:长度限额不能阻止病态回溯,采用可终止 worker。 + +## 后果 + +收益是工具插件不污染领域模型,执行复用现成函数基础设施。代价是增加一个明确授权的独立编辑器贡献契约,需要跨语言校验与生命周期接线。首版不支持远程、只读预览动作,也不承诺任意大型文档的插件高亮;Windows 产品接入和完整界面验收仍需后续完成。 + +### API-25 当前不是通用 Provider 注册框架 + +当前高亮入口只接受插件清单和包内 JSON 资源;纯静态插件的安装、更新与撤回即时生效,不代表后端可以在运行中直接传 JSON 注册、替换或释放高亮 Provider(能力提供者)。已安装包仍只读,也没有任意语法文件修改后自动重载的承诺。 + +独立补全、悬浮、定义、符号、格式化、重命名和 Code Action 尚无 JSON 到普通插件函数的注册绑定;既有 LSP 实现和独立 `editor/registerActions` 都不能冒充这些接口。新增符合既有 Monarch 结构的文本格式只改插件,不因规则变化升级 API;新增引擎或能力种类则仍需宿主适配与契约,不能靠未知 `kind` 自动获得实现。 + +因此 API-25 只完成静态语法与编辑配置这一部分。当前 worker 对超过 128 Ki UTF-16 单位或 10,000 行的文档保持普通文本,嵌入语言也按普通文本处理;SDK 兼容性测试通过不等于新增能力的封装、发布及真实插件安装验收已经完成。 + +## 验证 + +- `cargo test --manifest-path rust/Cargo.toml -p lithe-core --lib plugin_editor_resources`:静态资源、配置及 include 预算。 +- `cargo test --manifest-path rust/Cargo.toml -p lithe-core --lib plugins::editor_actions`:HTTP/SQL 同构动作、范围、重复身份及不透明数据。 +- `bun test frontend/editor/src`:活跃文件匹配、别名身份、配置独立应用与撤回。 +- `scripts/macos/test/test-macos.sh --filter 'PluginEditorLanguagesTests|PluginEditorActionTests'`:真实 catalog 接纳、独立模块与动作注册清理。 +- `scripts/macos/verify/verify-runtime-bundle-immutability.sh`:发行路径只读静态边界。 + +## 适用范围 + +- `rust/lithe-core/src/plugins/grammar.rs` +- `rust/lithe-core/src/plugins/editor_actions.rs` +- `macos/Sources/Lithe/Application/Features/PluginEditorActionHostService.swift` +- `macos/Sources/Lithe/Platform/MacOS/Plugins/MacPluginEditorLanguages.swift` +- `frontend/editor/src/plugin-languages.ts` +- `frontend/editor/src/plugin-editor-actions.ts` +- `frontend/editor/src/plugin-grammar-tokenizer.ts` diff --git a/.agents/skills/develop-lithe/SKILL.md b/.agents/skills/develop-lithe/SKILL.md index d7ca426865..8e6488fefe 100644 --- a/.agents/skills/develop-lithe/SKILL.md +++ b/.agents/skills/develop-lithe/SKILL.md @@ -49,6 +49,28 @@ description: 在 Lithe 仓库进行实现、重构、审查、调试、测试、 局部复用也必须保留上游子系统的正确性边界。验证完整的用户流程, 例如“保存 -> 同步项目状态 -> 构建 -> 解析运行路径 -> 启动”,不能只验证单条上游命令被调用。 +### 插件能力:同领域统一模型,不把独立能力硬塞进领域 + +新增插件 API 或迁移内置工具前,先读 +`.agents/notes/implemented/architecture/2026-10-31-plugin-capability-and-domain-boundaries.md`。 + +- 领域契约用于统一同一领域的事实和工作流,不是插件的强制入口。只有确实参与原生 + Build、Run、Test、LSP 或 Debug 工作流时才使用对应模型;文本高亮、文档读写、 + 编辑器动作和插件自有界面是独立扩展能力。HTTP 请求旁的播放图标不等于 Run Provider。 +- 独立扩展点有自己的最小类型化契约、权限和生命周期,复用已有函数调用与取消等基础设施; + 不把宿主需要理解的数据伪装成无类型私有函数,也不因宿主理解展示数据就强塞进 Build/LSP。 +- 先盘点已有公共 API;缺口按真实能力边界扩展,并优先使用已有运行期协商和能力发现。 + 增量兼容字段不机械升级整套协议,但必须同步契约、消费者和 SDK 验证;不能谎称零 API 改动。 +- 工具或运行时专属的解析、版本别名、框架参数、配置格式和业务选择归插件或成熟上游。 + 宿主/Core 不新增按工具名、工具私有配置格式、私有错误码、固定任务 ID 或约定函数名的分支。 + 通用模型保留不透明 ID,能力关联靠显式声明,不靠名称猜测;不能只把特判改名成封闭枚举。 +- “声明式”要经第二个不同工具验证:已有扩展点能否只改插件就接入?不能时先查是否泄漏 + 插件语义,不以堆叠目录/格式解析器冒充通用性。工具定义、事实提供方和使用方应分清所有权。 +- 原生设置读写不限定某种配置格式;插件负责格式语义,宿主保留确认、版本冲突和安全提交边界。 + 插件专属配置通过插件管理页注入;公共展示外壳不是固定的业务表单。监听对象由声明提供, + 宿主可统一观察和使查询快照失效,但不复制工具的配置发现或优先级语义。 +- 一次性兼容迁移必须标明适用版本、退出条件和跟踪位置,不得被新生产路径当作业务回退复用。 + ### 目录归属 | 路径 | 职责 | diff --git a/.agents/skills/lithe-code-review/references/review-policy.md b/.agents/skills/lithe-code-review/references/review-policy.md index 3c301e0656..94dfd465e0 100644 --- a/.agents/skills/lithe-code-review/references/review-policy.md +++ b/.agents/skills/lithe-code-review/references/review-policy.md @@ -36,6 +36,11 @@ ## 成熟能力复用审查 +插件 API 和迁移审查同时检查 `develop-lithe` 的“插件能力”规则:领域模型统一不等于所有插件必须 +经 LSP/Build/Debug。独立高亮、文档和编辑器动作有自己的小型契约,复用基础设施但不继承无关 +领域语义;真正的构建模型等也不能借私有函数绕过领域校验。用第二个不同工具检查通用性, +重点查宿主新增的工具/运行时/格式枚举、固定任务 ID、名字猜测、配置解析器及无退出条件的迁移回退。 + 当改动新增或扩大语言智能、项目导入、构建模型、依赖解析、编译、 格式化、重构、测试发现、运行/调试计划或 LSP/DAP 行为时,必须检查: diff --git a/docs/ci-builds.md b/docs/ci-builds.md index 6a55479eaa..8dd0acb090 100644 --- a/docs/ci-builds.md +++ b/docs/ci-builds.md @@ -715,6 +715,7 @@ Inter 4.1 的 18 个静态 OTF(内部版本 4.001)及许可、JetBrains Mono 版本绑定,没有可靠构建身份 stamp;各工作树构建时一起生成 JS 并复制许可证,不在任何阶段 跨树复制。运行时只读,不改变签名和 Sparkle delta。官方插件等尚未写入构建身份 stamp 的 生成资源同样不得复用; +- 插件高亮沿用本工作树生成的 `textmate-worker.js`,不新增下载入口;解码语法、worker/token 状态和编辑器动作租约仅在进程内,属于 `editor-theme-assets` 排除路由,无 identity stamp,任何阶段不得跨工作树复制。源插件包只读,运行时不写安装目录或改变 Sparkle 基线。 - `.build` 中的 SwiftPM 构建状态; - `rust/target/` 中与当前源码、编译器或构建参数绑定的构建输出; - LSP workspace `-data`、运行时数据库、测试报告和其他会被进程修改的状态。 diff --git a/docs/development/macos-plugin-api-plan.md b/docs/development/macos-plugin-api-plan.md index 0245ef5aa0..e2cc45715c 100644 --- a/docs/development/macos-plugin-api-plan.md +++ b/docs/development/macos-plugin-api-plan.md @@ -47,11 +47,11 @@ Windows 不在本轮,平台矩阵的 partial/pending 保持真实。 | API-22 | 部分完成 | 既有函数进度与取消;独立 output channel、通用 log/progress API 未做 | | API-23 | 部分完成 | 已有进程声明与运行时解析;通用 toolchains/process 服务未开放 | | API-24 | 未做 | 插件专属终端 create/sendText/onExit 未开放 | -| API-25 | 既有能力 | 语言/LSP 贡献与成熟上游链路;本 PR 不新增语言语义 Provider | +| API-25 | 部分完成 | 既有语言/LSP 贡献;新增 `languages:2` 的清单与包内 JSON 语法/编辑配置,仅支持 Monarch;运行期传入 JSON 动态注册/替换高亮 Provider、独立语言语义 Provider 未做,详见下方范围说明 | | API-26 | 未做 | 公共诊断 collection/events API 未开放;既有 LSP 诊断不等于该 API | -| API-27 | 未做 | 通用主题、片段、装饰贡献未实现;既有 UI 图标不等价于完整主题 API | +| API-27 | 部分完成 | 独立 `editor/registerActions` 绑定普通函数与文档范围,不依赖 LSP/Build/Run;通用主题、片段、其他装饰未做 | | API-28 | 未做 | 公共 custom editor 文档 owner/保存/撤销/恢复未开放 | -| API-29 | 既有能力 | #1517 BuildProvider 1–6/model inputs;本轮旧 SDK E2E 兼容,不代表新指南齐全 | +| API-29 | 部分完成 | #1517 BuildProvider 1–6/model inputs;普通编辑器动作不属于本领域项;新指南未齐全 | | API-30 | 既有能力 | 已有 debugAdapters 1/2 与 DAP 宿主;本 PR 不重建调试协议 | | API-31 | 既有能力 | 已有 vcsProviders:1;不包含内置 Git 公共读取面 | | API-32 | 未做 | 通用 ServiceProvider 仍为提案 | @@ -68,6 +68,29 @@ Windows 不在本轮,平台矩阵的 partial/pending 保持真实。 | API-43 | 未做 | 保存前事件/带超时编辑尚未开放 | | API-44 | 未做 | 插件贡献 Skills/Hooks/MCP 候选及独立授权评审未完成 | +### API-25:JSON 配置的支持范围与局限 + +当前新增的是**静态编辑器资源贡献**,不是任意 Provider(能力提供者)的运行期注册框架。 + +| 场景 | 当前支持范围 | +| --- | --- | +| 新增文本格式或高亮规则 | 通过插件清单 `languages[]` 声明文件类型,`grammar.path` 引用包内 JSON 语法;宿主校验后由 worker 执行,不需要 LSP 或后端 | +| 注释、括号、自动配对 | 可仅贡献 `configuration`,不要求同时提供 grammar | +| 安装、更新、停用或卸载纯静态贡献 | 随已验证插件包的生命周期更新编辑器;这不等于插件可以调用动态 Provider 注册方法,也不授权修改已安装包或监听任意 JSON 文件自动重载 | +| 运行中直接提交 JSON,注册、替换或释放高亮 Provider | 尚未开放公共方法;当前不是接收任意内联 grammar 的注册入口 | +| 用 JSON 将独立补全、悬浮、定义、符号、格式化、重命名或 Code Action 绑定到普通插件函数 | 尚未开放;既有 LSP 能力不等于已有这些独立 Provider 接口,`editor/registerActions` 也不提供它们 | +| 切换语法引擎或新增宿主不认识的能力种类 | `grammar.kind` 当前仅接受 `monarch`;TextMate、tree-sitter 等新引擎及新能力种类仍需宿主适配和明确契约,不能只增加一个 JSON `kind` 值 | + +新增一个使用**已支持结构**的语言实例、语法规则或编辑配置,只改插件内容,不因此升级宿主 API; +只有使用当前新增静态字段时才要求已有的 `languages:2`。不要把“新增 Provider 实例”与 +“新增宿主能力种类”混为一谈,也不要据此把整个 API-25 标记为完成。 + +本项目前只接线 macOS;插件高亮超过 128 Ki UTF-16 单位或 10,000 行时保持普通文本, +嵌入语言在该 worker 适配器中按普通文本处理。Windows 接入、SDK 新能力封装与发布、 +打包后安装真实插件的完整验收仍未完成,功能矩阵保持 partial/pending。 +决策边界见[独立插件编辑器 API](../../.agents/notes/implemented/architecture/2026-10-31-plugin-editor-extension-apis.md), +正式资源契约见[语法与编辑配置](../../shared/contracts/plugins/v1/README.md#grammars-and-editor-configuration-languages-2)。 + ### 当前公共调用面汇总 所有宿主请求以 `lithe/host/` 为前缀;这里的点号是阅读简写,正式方法使用 `/`。 @@ -206,9 +229,9 @@ Mac 当前声明的能力版本为:`backend:1`、`buildModelInputs:1`、`build | API-22 H/E | `output.createChannel/append/dispose`、`log`、`progress.withCancellation`;已有函数进度与输出生命周期 [S2/S11] | 插件/操作归属、日志脱敏与字节预算;取消/超时后不再更新 UI。只复用已有进度状态机,不把 stdout 协议流与业务日志混用 | M1:命令结果/进度;M3:独立输出 | | API-23 H | `toolchains.resolve/list`、受管 `process.run/cancel`;已有 executable/runtime 解析与进程链路 [S1/S11] | 显式执行授权,executable/argv 分离,cwd/环境白名单、输出和超时上限、进程树清理;不提供任意 shell 字符串,也不自动下载运行时 | M4 | | API-24 H/E | `terminal.create/show/sendText/onExit`;已有终端模块 [S12] | 创建与写终端都按执行授权处理;只控制自身终端,不能读用户其他会话或注入命令。禁用释放插件拥有资源,不停止用户独立终端 | 后续 | -| API-25 C/P | 语言/语法/LSP、补全/悬浮/定义/符号/格式化/重命名/Code Action;已有语言服务器贡献 [S1/S13] | 优先接成熟 LSP 的完整能力;自定义 Provider 仅补上游确实缺失项,按文档版本取消旧请求。避免让 SDK 成为第二套语言/工程引擎 | M4:已支持能力文档;后续:新 Provider | +| API-25 C/P | 语言/语法/LSP、补全/悬浮/定义/符号/格式化/重命名/Code Action;已有语言服务器贡献 [S1/S13] | 优先接成熟 LSP 的完整能力;自定义 Provider 仅补上游确实缺失项,按文档版本取消旧请求。避免让 SDK 成为第二套语言/工程引擎 | M4:已支持能力文档;`languages:2` 声明式语法已实现(见 Agent Note 2026-10-31-plugin-editor-extension-apis);后续:新 Provider | | API-26 H/P/E | `diagnostics.createCollection/set/delete/onDidChange`;已有 Problems/诊断 owner [S13] | 只能写本插件 collection,带文档版本和稳定范围;编辑/卸载后旧诊断可撤回。不能覆盖其他 LSP 结果或伪造宿主诊断身份 | M4 | -| API-27 C/H/P | 主题/图标/片段、只读装饰、CodeLens/Inlay;已有内部 theme/editor 能力 [S5/S16] | 数据贡献/资源路径校验、预算与卸载;图标/主题用宿主 token,不允许 CSS/原生视图注入。语言信息优先走 LSP,UI 资源不得执行脚本 | 后续 | +| API-27 C/H/P | 主题/图标/片段、只读装饰、CodeLens/Inlay;已有内部 theme/editor 能力 [S5/S16] | 数据贡献/资源路径校验、预算与卸载;图标/主题用宿主 token,不允许 CSS/原生视图注入。语言信息优先走 LSP,UI 资源不得执行脚本 | 独立编辑器动作 API 已接线(Mac,待运行验收;复用 backend 2/函数协议 3,不升领域版本);主题/片段/其他装饰后续 | | API-28 C/P/H | `customEditors.register`、打开/保存/撤销/恢复;已有特殊文档视图不等于公开扩展点 [S5/S9] | 先说明唯一文档 owner 和 readonly/dirty/backup/undo 语义;可选 Webview 仅做视图。崩溃后可恢复且不丢未保存内容才可发布 | 后续 | 设置分类遵循[macOS 设置层级](../../.agents/notes/implemented/feature/2026-10-15-macos-settings-hierarchy.md),原生配置编辑遵循[真实来源决策](../../.agents/notes/implemented/architecture/2026-10-25-settings-native-configuration-editing.md)。插件提供的文本/上游诊断不伪装成宿主翻译;宿主新增按钮、权限说明和错误必须走 `shared/i18n/`。 @@ -217,7 +240,7 @@ Mac 当前声明的能力版本为:`backend:1`、`buildModelInputs:1`、`build | ID / 方向 | 候选能力与现状/所有者 | 权限、作用域与验收 | 阶段 | | --- | --- | --- | --- | -| API-29 P/C | Build/Task/Test/Run Preparation、只读工程模型输入;#1517 已合并,Mac 已声明 `buildProviders:1–6`、`buildModelInputs:1`、`debugAdapters:2` [S1/S11] | 本项只补文档、SDK 对齐和真实项目端到端验收,不重复定义协议。原生 Build/Test/Run 展示、准备、取消共用宿主;快照带源/版本,不能成为第二份 classpath/工程真相;远程工作区下的 Provider 启动限制见 API-40 | M4 | +| API-29 P/C | Build/Task/Test/Run Preparation、只读工程模型输入;#1517 已合并,Mac 已声明 `buildProviders:1–6`、`buildModelInputs:1`、`debugAdapters:2` [S1/S11] | 本项只补文档、SDK 对齐和真实项目端到端验收,不重复定义协议。原生 Build/Test/Run 展示、准备、取消共用宿主;快照带源/版本,不能成为第二份 classpath/工程真相;远程工作区下的 Provider 启动限制见 API-40。编辑器动作是独立扩展点,不计入领域执行。 | M4 | | API-30 P/C/E | Debug Adapter 注册、配置和会话事件;已有 DAP 宿主 [S14] | 进程/连接授权、launch 与 attach 所有权、终止和断开区别;复用断点/调试 UI。高级内存/反汇编按独立提案,不阻塞基础 API | M4 | | API-31 P/C | VCS 仓库/状态/diff/提交等领域能力;已有 vcsProviders 1 [S14],只覆盖插件提供的 VCS,内置 Git 见 API-42 | 读取与修改仓库分权;危险操作有明确确认,结果有仓库/操作身份。插件私有函数不能代替宿主可理解的 VCS 协议 | M4 | | API-32 P/C/E | Services 的实例/状态/动作/日志;数据库已有自身路径,通用 ServiceProvider 仍为提案 [S17] | 插件拥有的连接/进程与用户外部服务分开;停用只清理前者,不默认停用户数据库/容器。服务接入现有 Services,不再画一套工作台 | 后续 | diff --git a/frontend/editor/src/language-contributions.ts b/frontend/editor/src/language-contributions.ts index ae4ad0ba79..297b258a9f 100644 --- a/frontend/editor/src/language-contributions.ts +++ b/frontend/editor/src/language-contributions.ts @@ -35,6 +35,7 @@ import "monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution. import "monaco-editor/esm/vs/basic-languages/xml/xml.contribution.js"; import "monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution.js"; import { zigMonarchLanguage } from "./zig-language"; +import { hasPluginGrammar } from "./plugin-languages"; type MonarchLanguageModule = { conf: Parameters[1]; @@ -83,6 +84,8 @@ const monarchLanguageLoaders: Record Promise>(); export function ensureMonacoLanguageTokenizer(languageId: string): Promise { + // A plugin grammar replaces the built-in one for its language. + if (hasPluginGrammar(languageId)) return Promise.resolve(true); if (languageId === "json") { const existing = monarchLanguagePromises.get(languageId); if (existing) return existing; diff --git a/frontend/editor/src/monaco-tokenization-internals.d.ts b/frontend/editor/src/monaco-tokenization-internals.d.ts index 4c05931266..18df5623e9 100644 --- a/frontend/editor/src/monaco-tokenization-internals.d.ts +++ b/frontend/editor/src/monaco-tokenization-internals.d.ts @@ -1,5 +1,13 @@ // Narrow declarations for the private tokenization APIs in pinned Monaco 0.55.1. // Keep these with the shared adapter so both platform builds check the same boundary. +declare module "monaco-editor/esm/vs/editor/standalone/common/monarch/monarchCompile.js" { + export function compile(languageID: string, grammar: unknown): unknown; +} +declare module "monaco-editor/esm/vs/editor/standalone/common/monarch/monarchLexer.js" { + export class MonarchTokenizer { + constructor(language: unknown, theme: unknown, languageID: string, lexer: unknown, configuration: unknown); + } +} declare module "monaco-editor/esm/vs/editor/common/languages.js" { import type { IDisposable, editor, languages } from "monaco-editor"; export class Token { @@ -24,6 +32,7 @@ declare module "monaco-editor/esm/vs/editor/common/languages.js" { backgroundTokenizationFinished(): void; } export const TokenizationRegistry: { + get(language: string): any; handleChange(languages: string[]): void; register(language: string, support: { getInitialState(): languages.IState; diff --git a/frontend/editor/src/plugin-editor-actions.ts b/frontend/editor/src/plugin-editor-actions.ts new file mode 100644 index 0000000000..9d6772876f --- /dev/null +++ b/frontend/editor/src/plugin-editor-actions.ts @@ -0,0 +1,107 @@ +import * as monaco from "monaco-editor/esm/vs/editor/editor.api.js"; +import { Action } from "monaco-editor/esm/vs/base/common/actions.js"; +import { StandaloneServices } from "monaco-editor/esm/vs/editor/standalone/browser/standaloneServices.js"; +import { IContextMenuService } from "monaco-editor/esm/vs/platform/contextview/browser/contextView.js"; + +type Entry = { + model: monaco.editor.ITextModel; revision: number; chain: Promise; + readonly: boolean; frozen: boolean; closingHolds?: number; +}; +type EditorAction = { id: string; line: number; endLine: number; title: string; icon: string }; +type State = { + generation: number; version: number; revision: number; batch?: string; + actions: EditorAction[]; decorations: string[]; timer?: ReturnType; +}; + +/** Presentation only: opaque action keys route back to a versioned host list. */ +export function attachPluginEditorActions(host: { + entries(): Map; + editors(): monaco.editor.IStandaloneCodeEditor[]; + request(payload: object): Promise; + current(id: string, entry: E): () => boolean; + lineNumbersFirst: boolean; +}) { + const states = new Map(); + let disposed = false; + const get = (entry: E): State => { + const found = states.get(entry); + if (found) return found; + const state: State = { generation: 0, version: 0, revision: 0, actions: [], decorations: [] }; + states.set(entry, state); + entry.model.onWillDispose(() => { clearTimeout(state.timer); state.generation++; states.delete(entry); }); + return state; + }; + async function refreshOne(id: string, entry: E) { + const state = get(entry), generation = ++state.generation, version = entry.model.getVersionId(); + clearTimeout(state.timer); + await entry.chain; + const current = host.current(id, entry), revision = entry.revision; + if (disposed || entry.model.isDisposed() || !current() || entry.readonly) return; + const result = await host.request({ type: "pluginEditorActions", id, revision }); + if (disposed || !current() || state.generation !== generation || result.cancelled || entry.model.getVersionId() !== version) return; + const actions: EditorAction[] = (Array.isArray(result.actions) ? result.actions : []).filter((item: EditorAction) => + typeof item?.id === "string" && typeof item.title === "string" && + Number.isInteger(item.line) && item.line >= 1 && item.line <= entry.model.getLineCount()); + // Multiple actions on one line share a popup rather than overwriting one another. + const lines = [...new Map(actions.map(item => [item.line, item])).values()]; + state.decorations = entry.model.deltaDecorations(state.decorations, lines.map(item => ({ + range: new monaco.Range(item.line, 1, item.line, 1), options: { + glyphMarginClassName: `lithe-plugin-editor-action lithe-java-run-${item.icon}`, + linesDecorationsClassName: host.lineNumbersFirst ? `lithe-plugin-editor-action lithe-java-run-${item.icon}` : undefined, + linesDecorationsTooltip: item.title, + glyphMargin: { position: monaco.editor.GlyphMarginLane.Right }, + glyphMarginHoverMessage: { value: item.title.replace(/[\\`*_{}\[\]()#+.!<>|]/g, "\\$&"), isTrusted: false }, + }, + }))); + Object.assign(state, { version, revision, batch: result.batch, actions }); + } + function schedule(id: string, entry: E) { + const state = get(entry); + clearTimeout(state.timer); state.generation++; state.actions = []; state.batch = undefined; + if (!entry.model.isDisposed()) state.decorations = entry.model.deltaDecorations(state.decorations, []); + state.timer = setTimeout(() => { void refreshOne(id, entry).catch(console.error); }, 180); + } + return { + schedule, + async refresh() { + for (const [entry, state] of states) { + clearTimeout(state.timer); state.generation++; state.actions = []; state.batch = undefined; + if (!entry.model.isDisposed()) state.decorations = entry.model.deltaDecorations(state.decorations, []); + } + await Promise.all([...host.entries()].filter(([, entry]) => host.editors().some(view => view.getModel() === entry.model)) + .map(([id, entry]) => refreshOne(id, entry))); + }, + attach(view: monaco.editor.IStandaloneCodeEditor) { + const mouse = view.onMouseDown(event => { + const element = event.target.element?.closest(".lithe-plugin-editor-action"); + const pair = [...host.entries()].find(([, entry]) => entry.model === view.getModel()); + if (!element || !pair || !event.target.position || !event.event.leftButton) return; + event.event.preventDefault(); event.event.stopPropagation(); + const [id, entry] = pair, state = states.get(entry), line = event.target.position.lineNumber; + const current = host.current(id, entry); + if (!state || !current() || entry.readonly || entry.frozen || entry.closingHolds || + state.version !== entry.model.getVersionId() || state.revision !== entry.revision) return; + const batch = state.batch; + const items = state.actions.filter(item => item.line === line).map(item => new Action( + `lithe.pluginEditor.${item.id}`, item.title, undefined, true, async () => { + if (!current() || states.get(entry)?.batch !== batch || entry.readonly) return; + await host.request({ type: "pluginEditorAction", id, revision: state.revision, batch, action: item.id }); + })); + if (items.length) StandaloneServices.get(IContextMenuService).showContextMenu({ + getAnchor: () => ({ x: event.event.posx, y: event.event.posy }), getActions: () => items, + }); + }); + const mouseUp = (event: MouseEvent) => { + if ((event.target as Element | null)?.closest(".lithe-plugin-editor-action") && view.getDomNode()?.contains(event.target as Node)) + event.stopPropagation(); + }; + document.addEventListener("mouseup", mouseUp, true); + view.onDidDispose(() => { mouse.dispose(); document.removeEventListener("mouseup", mouseUp, true); }); + }, + dispose() { + disposed = true; + for (const state of states.values()) { clearTimeout(state.timer); state.generation++; } + states.clear(); + }, + }; +} diff --git a/frontend/editor/src/plugin-grammar-tokenizer.ts b/frontend/editor/src/plugin-grammar-tokenizer.ts new file mode 100644 index 0000000000..6443906934 --- /dev/null +++ b/frontend/editor/src/plugin-grammar-tokenizer.ts @@ -0,0 +1,150 @@ +/// +import type { editor, languages } from "monaco-editor"; +import { TokenizationRegistry, Token, TokenizationResult, EncodedTokenizationResult } from "monaco-editor/esm/vs/editor/common/languages.js"; +import { ContiguousMultilineTokensBuilder } from "monaco-editor/esm/vs/editor/common/tokens/contiguousMultilineTokensBuilder.js"; +import { StandaloneServices } from "monaco-editor/esm/vs/editor/standalone/browser/standaloneServices.js"; +import { IStandaloneThemeService } from "monaco-editor/esm/vs/editor/standalone/common/standaloneTheme.js"; +import { ILanguageService } from "monaco-editor/esm/vs/editor/common/languages/language.js"; + +class PlainState implements languages.IState { + clone() { return this; } + equals(other: languages.IState) { return other instanceof PlainState; } +} +const plain = new PlainState(); +let workerSource: Promise | undefined; + +/** Borrow the existing engine without owning or disposing its tokenizer. */ +export function inheritPluginTokenizer(languageID: string, alias: string) { + const support = TokenizationRegistry.get(alias); + if (!support) throw new Error(`Tokenizer unavailable for language alias ${alias}`); + const codec = StandaloneServices.get(ILanguageService).languageIdCodec; + const originalID = codec.encodeLanguageId(alias), inheritedID = codec.encodeLanguageId(languageID); + const languageMask = 0xff; // Monaco 0.55.1 MetadataConsts.LANGUAGEID_MASK. + return TokenizationRegistry.register(languageID, { + getInitialState: () => support.getInitialState(), + tokenize(line, hasEOL, state) { + const result = support.tokenize(line, hasEOL, state); + return new TokenizationResult(result.tokens.map((token: Token) => + new Token(token.offset, token.type, token.language === alias ? languageID : token.language)), result.endState); + }, + tokenizeEncoded(line, hasEOL, state) { + const result = support.tokenizeEncoded(line, hasEOL, state), tokens = result.tokens.slice(); + // Monaco reads comment/bracket configuration from token language IDs. + // Remap only the base language; genuinely embedded tokens keep theirs. + for (let i = 1; i < tokens.length; i += 2) { + if ((tokens[i] & languageMask) === originalID) tokens[i] = (tokens[i] & ~languageMask) | inheritedID; + } + return new EncodedTokenizationResult(tokens, result.endState); + }, + createBackgroundTokenizer() { return undefined; }, + }); +} + +/** Regex execution is isolated behind a terminable worker with a local deadline. */ +export function installPluginGrammar(languageID: string, source: string) { + const previous = TokenizationRegistry.get(languageID); + const theme = StandaloneServices.get(IStandaloneThemeService); + const encodedID = StandaloneServices.get(ILanguageService).languageIdCodec.encodeLanguageId(languageID); + type Binding = { model: editor.ITextModel; store: import("monaco-editor/esm/vs/editor/common/languages.js").BackgroundTokenStore; pending: boolean; debounce?: ReturnType }; + const bindings = new Map(); + let nextID = 0, worker: Worker | undefined, url: string | undefined, stopped = false, ready = false; + let deadline: ReturnType | undefined; + const stop = (error?: unknown) => { + if (stopped) return; + stopped = true; clearTimeout(deadline); worker?.terminate(); if (url) URL.revokeObjectURL(url); + for (const binding of bindings.values()) { + clearTimeout(binding.debounce); binding.pending = false; + if (error && !binding.model.isDisposed()) { + const builder = new ContiguousMultilineTokensBuilder(); + for (let line = 1; line <= binding.model.getLineCount(); line++) { + builder.add(line, new Uint32Array([binding.model.getLineLength(line), + theme.getColorTheme().tokenTheme.match(encodedID, "") | 1024])); + binding.store.setEndState(line, plain); + } + binding.store.setTokens(builder.finalize()); + } + binding.store.backgroundTokenizationFinished(); + } + if (error) console.warn("Plugin tokenizer stopped", languageID, String(error)); + }; + const watch = () => { + clearTimeout(deadline); + if (!stopped) deadline = setTimeout(() => stop("worker exceeded its execution budget"), 2000); + }; + const open = (id: number, binding: Binding) => { + if (!worker || !ready || stopped || binding.model.isDisposed()) return; + // Large buffers remain editable/plain, and cannot flood a worker queue. + if (binding.model.getValueLength() > 128 * 1024 || binding.model.getLineCount() > 10_000) { + binding.pending = false; binding.store.backgroundTokenizationFinished(); return; + } + binding.pending = true; + worker.postMessage({ type: "open", id, version: binding.model.getVersionId(), lines: binding.model.getLinesContent() }); + if (!deadline) watch(); + }; + const registration = TokenizationRegistry.register(languageID, { + getInitialState: () => plain, + tokenize(line) { return new TokenizationResult([new Token(0, "", languageID)], plain); }, + tokenizeEncoded() { return new EncodedTokenizationResult(new Uint32Array([0, theme.getColorTheme().tokenTheme.match(encodedID, "") | 1024]), plain); }, + createBackgroundTokenizer(model, store) { + const id = ++nextID, binding: Binding = { model, store, pending: false }; + bindings.set(id, binding); + const changed = model.onDidChangeContent(() => { + clearTimeout(binding.debounce); + binding.debounce = setTimeout(() => open(id, binding), 80); + }); + queueMicrotask(() => open(id, binding)); + return { + requestTokens() { if (!binding.pending) open(id, binding); }, + dispose() { + changed.dispose(); clearTimeout(binding.debounce); bindings.delete(id); + worker?.postMessage({ type: "dispose", id }); + if (![...bindings.values()].some(value => value.pending)) { clearTimeout(deadline); deadline = undefined; } + }, + }; + }, + }); + workerSource ??= fetch("textmate-worker.js").then(response => { + if (!response.ok) throw new Error("Tokenizer worker unavailable"); + return response.text(); + }); + watch(); + void workerSource.then(code => { + if (stopped) return; + url = URL.createObjectURL(new Blob([code], { type: "text/javascript" })); + worker = new Worker(url); + worker.onerror = event => stop(event.message); + worker.onmessage = ({ data }) => { + if (stopped) return; + if (data.type === "error") { stop(data.message); return; } + clearTimeout(deadline); deadline = undefined; + if (data.type === "ready") { + ready = true; + for (const [id, binding] of bindings) open(id, binding); + } else { + const binding = bindings.get(data.id); + if (binding && !binding.model.isDisposed() && binding.model.getVersionId() === data.version) { + const builder = new ContiguousMultilineTokensBuilder(); + for (const row of data.rows ?? []) { + const tokens = new Uint32Array(row.tokens.length * 2); + for (let i = 0; i < row.tokens.length; i++) { + tokens[i * 2] = row.tokens[i + 1]?.offset ?? binding.model.getLineLength(row.line); + tokens[i * 2 + 1] = theme.getColorTheme().tokenTheme.match(encodedID, row.tokens[i].type) | 1024; + } + builder.add(row.line, tokens); binding.store.setEndState(row.line, plain); + } + binding.store.setTokens(builder.finalize()); + if (data.complete) { binding.pending = false; binding.store.backgroundTokenizationFinished(); } + } else if (binding && data.complete) { binding.pending = false; } + } + if ([...bindings.values()].some(binding => binding.pending) && !deadline) watch(); + }; + worker.postMessage({ type: "pluginGrammar", languageID, source }); + }).catch(stop); + const themeChanges = theme.onDidColorThemeChange(() => { + for (const [id, binding] of bindings) open(id, binding); + }); + return { dispose() { + stop(); registration.dispose(); themeChanges.dispose(); bindings.clear(); + if (previous) TokenizationRegistry.register(languageID, previous); + } }; +} diff --git a/frontend/editor/src/plugin-grammar-worker.ts b/frontend/editor/src/plugin-grammar-worker.ts new file mode 100644 index 0000000000..6f690cc4f7 --- /dev/null +++ b/frontend/editor/src/plugin-grammar-worker.ts @@ -0,0 +1,54 @@ +import { compile } from "monaco-editor/esm/vs/editor/standalone/common/monarch/monarchCompile.js"; +import { MonarchTokenizer } from "monaco-editor/esm/vs/editor/standalone/common/monarch/monarchLexer.js"; + +/** Reuse pinned Monaco's engine, but never compile/run plugin regexes on the UI thread. */ +export function installPluginGrammarWorker() { + let tokenizer: any; + const documents = new Map(); + const queue = new MessageChannel(); + queue.port1.onmessage = ({ data: id }) => { + const document = documents.get(id); + if (!document) return; + try { + const rows = [], started = performance.now(); + while (document.cursor < document.lines.length && rows.length < 64) { + const line = document.lines[document.cursor]; + const result = tokenizer.tokenize(line, true, document.state); + document.state = result.endState; + rows.push({ line: ++document.cursor, tokens: result.tokens }); + if (performance.now() - started > 8) break; + } + const complete = document.cursor === document.lines.length; + postMessage({ type: "tokens", id, version: document.version, rows, complete }); + if (!complete) queue.port2.postMessage(id); + } catch (error) { postMessage({ type: "error", message: String(error) }); } + }; + self.onmessage = ({ data }) => { + try { + if (data.type === "init") { + // Only the worker parses the source: cases retain package order even + // after the host's Rust/Swift dictionary and JSON roundtrips. + const grammar = JSON.parse(data.source); + grammar.start ??= "root"; + // Monarch's public engine needs configuration/language services even + // for lexical-only use. Embedded languages remain plain text here. + tokenizer = new MonarchTokenizer({ + isRegisteredLanguageId: () => false, + getLanguageIdByLanguageName: () => null, getLanguageIdByMimeType: () => null, + languageIdCodec: { encodeLanguageId: () => 1 }, requestBasicLanguageFeatures() {}, + }, {}, data.languageID, compile(data.languageID, grammar), { + getValue: () => 20_000, + onDidChangeConfiguration: () => ({ dispose() {} }), + }); + postMessage({ type: "ready" }); return; + } + if (data.type === "dispose") { documents.delete(data.id); return; } + if (data.type === "open") { + const previous = documents.get(data.id); + if (previous && previous.version > data.version) return; + documents.set(data.id, { lines: data.lines, version: data.version, cursor: 0, state: tokenizer.getInitialState() }); + queue.port2.postMessage(data.id); + } + } catch (error) { postMessage({ type: "error", message: String(error) }); } + }; +} diff --git a/frontend/editor/src/plugin-languages.test.ts b/frontend/editor/src/plugin-languages.test.ts new file mode 100644 index 0000000000..ceec5a3edf --- /dev/null +++ b/frontend/editor/src/plugin-languages.test.ts @@ -0,0 +1,100 @@ +import { beforeEach, expect, test } from "bun:test"; +import { hasPluginGrammar, pluginLanguageForFilename, setPluginLanguages as replace, toLanguageConfiguration, + type MonacoLanguages, type PluginLanguage } from "./plugin-languages"; + +const registered: { id: string }[] = []; +const live = new Map(); +let failCompile = new Set(); +const inherited: [string, string][] = []; +const provider = (id: string) => { + live.set(id, (live.get(id) ?? 0) + 1); + return { dispose: () => live.set(id, (live.get(id) ?? 0) - 1) }; +}; +const monaco = { + getLanguages: () => registered, + register: (language: { id: string }) => registered.push(language), + setLanguageConfiguration: (id: string) => provider(id), +} as unknown as MonacoLanguages; +const install = (id: string) => { + if (failCompile.has(id)) throw new Error(`cannot compile ${id}`); + return provider(id); +}; +const setPluginLanguages = (list: PluginLanguage[]) => replace(monaco, list, install, (id, alias) => { + inherited.push([id, alias]); + return provider(id); +}); +const http: PluginLanguage = { + id: "http", fileExtensions: ["http", ".rest"], + grammar: { kind: "monarch", source: '{"tokenizer":{"root":[]}}' }, + configuration: { lineComment: "#", brackets: [["{", "}"]], autoClosingPairs: [["\"", "\""]] }, +}; +beforeEach(() => { setPluginLanguages([]); failCompile = new Set(); inherited.length = 0; }); + +test("owns providers, matches only active file types and disposes on withdrawal", () => { + try { + expect(setPluginLanguages([http])).toEqual({ failed: [], removed: [] }); + expect(hasPluginGrammar("http")).toBe(true); + expect(live.get("http")).toBe(2); + expect(pluginLanguageForFilename("users.REST")).toBe("http"); + setPluginLanguages([http]); + expect(live.get("http")).toBe(2); + setPluginLanguages([]); + expect(hasPluginGrammar("http")).toBe(false); + expect(pluginLanguageForFilename("users.http")).toBeUndefined(); + expect(live.get("http")).toBe(0); + expect(registered.filter(value => value.id === "http")).toHaveLength(1); + } finally { setPluginLanguages([]); } +}); + +test("updates file matching and keeps plugin IDs distinct from tokenizer aliases", () => { + try { + setPluginLanguages([{ ...http, id: "properties", fileExtensions: ["properties"] }]); + expect(pluginLanguageForFilename("a.properties")).toBe("properties"); + setPluginLanguages([{ ...http, id: "properties", fileExtensions: ["newproperties"] }]); + expect(pluginLanguageForFilename("a.properties")).toBeUndefined(); + expect(pluginLanguageForFilename("a.newproperties")).toBe("properties"); + expect(hasPluginGrammar("ini")).toBe(false); + } finally { setPluginLanguages([]); } +}); + +test("configuration does not require a grammar or backend", () => { + try { + setPluginLanguages([{ ...http, grammar: null }]); + expect(live.get("http")).toBe(1); + expect(hasPluginGrammar("http")).toBe(false); + expect(pluginLanguageForFilename("a.http")).toBe("http"); + } finally { setPluginLanguages([]); } +}); + +test("a refused grammar does not prevent another file type from applying", () => { + try { + failCompile.add("broken"); + expect(setPluginLanguages([{ ...http, id: "broken" }, http]).failed) + .toEqual([{ id: "broken", message: "cannot compile broken" }]); + expect(hasPluginGrammar("broken")).toBe(false); + expect(hasPluginGrammar("http")).toBe(true); + } finally { setPluginLanguages([]); } +}); + +test("configuration-only aliases borrow and withdraw their existing tokenizer", () => { + try { + setPluginLanguages([{ ...http, id: "properties", fileExtensions: ["properties"], grammar: null }, + { ...http, id: "bash", fileExtensions: ["sh"], grammar: null }, + { ...http, id: "systemrdl", fileExtensions: ["rdl"], grammar: null }]); + expect(inherited).toEqual([["properties", "ini"], ["bash", "shell"]]); + expect(pluginLanguageForFilename("a.properties")).toBe("properties"); + expect(hasPluginGrammar("properties")).toBe(false); + expect(live.get("properties")).toBe(2); + expect(live.get("systemrdl")).toBe(1); + setPluginLanguages([]); + expect(live.get("properties")).toBe(0); + expect(live.get("bash")).toBe(0); + } finally { setPluginLanguages([]); } +}); + +test("maps bounded editing configuration", () => { + expect(toLanguageConfiguration(http.configuration)).toEqual({ + comments: { lineComment: "#", blockComment: undefined }, brackets: [["{", "}"]], + autoClosingPairs: [{ open: "\"", close: "\"" }], surroundingPairs: [{ open: "\"", close: "\"" }], + }); +}); diff --git a/frontend/editor/src/plugin-languages.ts b/frontend/editor/src/plugin-languages.ts new file mode 100644 index 0000000000..d04690cd8d --- /dev/null +++ b/frontend/editor/src/plugin-languages.ts @@ -0,0 +1,70 @@ +// Static file types and presentation are independent of language-server ownership. +import type { languages } from "monaco-editor/esm/vs/editor/editor.api.js"; +import { toMonacoLanguageId } from "./language"; + +export interface PluginLanguage { + id: string; + fileExtensions?: string[]; + fileNames?: string[]; + grammar?: { kind: "monarch"; source: string } | null; + configuration?: { + lineComment?: string; + blockComment?: [string, string]; + brackets?: [string, string][]; + autoClosingPairs?: [string, string][]; + } | null; +} +const owned = new Map(); +export function hasPluginGrammar(id: string): boolean { return !!owned.get(id)?.language.grammar; } +export function hasPluginLanguage(id: string): boolean { return owned.has(id); } +export function pluginLanguageForFilename(filename: string): string | undefined { + const name = filename.toLowerCase(); + const list = [...owned.values()].map(value => value.language); + return list.find(language => language.fileNames?.some(file => file.toLowerCase() === name))?.id + ?? list.flatMap(language => (language.fileExtensions ?? []).map(extension => ({ id: language.id, extension: withDot(extension).toLowerCase() }))) + .filter(value => name.endsWith(value.extension)).sort((a, b) => b.extension.length - a.extension.length)[0]?.id; +} +export function toLanguageConfiguration(configuration: PluginLanguage["configuration"]): languages.LanguageConfiguration { + const pairs = (configuration?.autoClosingPairs ?? []).map(([open, close]) => ({ open, close })); + return { + comments: configuration?.lineComment || configuration?.blockComment + ? { lineComment: configuration.lineComment, blockComment: configuration.blockComment } : undefined, + brackets: configuration?.brackets, autoClosingPairs: pairs, surroundingPairs: pairs, + }; +} +const withDot = (extension: string) => extension.startsWith(".") ? extension : `.${extension}`; +export type MonacoLanguages = Pick; + +/** The caller supplies the worker-isolated engine; this pure registry never runs plugin regexes. */ +export function setPluginLanguages(monaco: MonacoLanguages, list: readonly PluginLanguage[], + installGrammar: (id: string, source: string) => { dispose(): void } = () => ({ dispose() {} }), + inheritTokenizer: (id: string, alias: string) => { dispose(): void } = () => ({ dispose() {} }), +): { failed: { id: string; message: string }[]; removed: string[] } { + const failed: { id: string; message: string }[] = [], removed: string[] = []; + const next = new Map(list.filter(language => language?.id).map(language => [language.id, language])); + for (const [id, current] of owned) { + if (next.has(id)) continue; + current.providers.forEach(provider => provider.dispose()); owned.delete(id); removed.push(id); + } + for (const [id, language] of next) { + const key = JSON.stringify(language); + if (owned.get(id)?.key === key) continue; + owned.get(id)?.providers.forEach(provider => provider.dispose()); owned.delete(id); + // Monaco cannot unregister file associations; matching above uses only live contributions. + if (!monaco.getLanguages().some(registered => registered.id === id)) monaco.register({ id }); + const providers: { dispose(): void }[] = []; + try { + if (language.grammar) providers.push(installGrammar(id, language.grammar.source)); + else { + const alias = toMonacoLanguageId(id); + if (alias !== id && alias !== "plaintext") providers.push(inheritTokenizer(id, alias)); + } + if (language.configuration) providers.push(monaco.setLanguageConfiguration(id, toLanguageConfiguration(language.configuration))); + owned.set(id, { key, language, providers }); + } catch (error) { + providers.forEach(provider => provider.dispose()); + failed.push({ id, message: error instanceof Error ? error.message : String(error) }); + } + } + return { failed, removed }; +} diff --git a/frontend/editor/src/textmate-worker.ts b/frontend/editor/src/textmate-worker.ts index 63f2d1a526..e691ea170b 100644 --- a/frontend/editor/src/textmate-worker.ts +++ b/frontend/editor/src/textmate-worker.ts @@ -2,6 +2,7 @@ import { createJavaGrammar, INITIAL } from "./textmate-grammar"; import { tokenizeLineWithinLimit } from "./textmate-line-limit"; import { TextmateDocument } from "./textmate-document"; import { diffStateStacksRefEq } from "vscode-textmate"; +import { installPluginGrammarWorker } from "./plugin-grammar-worker"; type Document = { text: TextmateDocument; visible: boolean; timer?: ReturnType }; const documents = new Map(); @@ -39,6 +40,11 @@ function tokenize(id: number) { } self.onmessage = async ({ data }) => { try { + if (data.type === "pluginGrammar") { + installPluginGrammarWorker(); + self.onmessage!({ data: { type: "init", languageID: data.languageID, source: data.source } } as MessageEvent); + return; + } if (data.type === "init") { grammar = (await createJavaGrammar(data.wasm, data.grammar)).grammar; // vscode-textmate/Oniguruma lazily compiles grammar patterns on the first diff --git a/frontend/editor/src/workbench.ts b/frontend/editor/src/workbench.ts index a52b5fc82e..0d02ad3835 100644 --- a/frontend/editor/src/workbench.ts +++ b/frontend/editor/src/workbench.ts @@ -27,6 +27,9 @@ import { isMacintosh } from "monaco-editor/esm/vs/base/common/platform.js"; import { IContextMenuService } from "monaco-editor/esm/vs/platform/contextview/browser/contextView.js"; import { Action, Separator, type IAction } from "monaco-editor/esm/vs/base/common/actions.js"; import { normalizeRunMarkers, runMarkerForLine, runMarkerIcon, type RunMarker, type RunMarkerIcon } from "./run-markers"; +import { attachPluginEditorActions } from "./plugin-editor-actions"; +import { installPluginGrammar, inheritPluginTokenizer } from "./plugin-grammar-tokenizer"; +import { setPluginLanguages, hasPluginLanguage, pluginLanguageForFilename, type PluginLanguage } from "./plugin-languages"; const escapeHTML = (value: string) => value.replace(/[&<>"']/g, character => ({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" })[character]!); @@ -54,8 +57,12 @@ export interface WorkbenchHost { keybindings?: { command: string; label: string; keybinding: number }[]; } +const editorLanguageID = (id: string | undefined) => id && hasPluginLanguage(id) ? id : toMonacoLanguageId(id); + function languageForFilename(filename: string | undefined): string { if (!filename) return "plaintext"; + const plugin = pluginLanguageForFilename(filename); + if (plugin) return plugin; const name = filename.toLowerCase(); const registered = monaco.languages.getLanguages(); const exact = registered.find(language => language.filenames?.some(file => file.toLowerCase() === name)); @@ -213,10 +220,17 @@ export function mountWorkbench(host: WorkbenchHost) { Object.assign(state, { markers, version, revision }); for (const view of allEditors()) navigationContexts.get(view)?.(); } + const pluginActions = attachPluginEditorActions({ + entries: () => entries, editors: allEditors, request: languageRequest, + current: (id, entry) => documentCheckpoint(id, entry), + lineNumbersFirst: host.lineNumbersFirst === true, + }); // Java Run markers: the host answers which `main` methods and tests exist and // their last outcomes; the editor only draws them and routes actions back. type RunMarkerState = { generation: number; version: number; revision: number; markers: RunMarker[]; canDebug: boolean; decorations: string[]; timer?: ReturnType }; + let previousPluginLanguageIDs = new Set(); + let pluginLanguageUpdates: Promise = Promise.resolve(); const runMarkerStates = new WeakMap(); const runMarkerContexts = new WeakMap void>(); async function refreshRunMarkers(id: string, entry: Entry) { @@ -260,6 +274,7 @@ export function mountWorkbench(host: WorkbenchHost) { state.timer = setTimeout(() => { void refreshRunMarkers(id, entry).catch(console.error); }, 180); } function scheduleNavigation(id: string, entry: Entry) { + pluginActions.schedule(id, entry); scheduleRunMarkers(id, entry); if (entry.model.getLanguageId() !== "java" && !navigationStates.has(entry)) return; const state = navigationStates.get(entry); @@ -325,7 +340,7 @@ export function mountWorkbench(host: WorkbenchHost) { let entry = entries.get(payload.id); const languageID = payload.language || (entry && (payload.filename === undefined || payload.filename === entry.filename) ? entry.languageID : languageForFilename(payload.filename)); - const language = toMonacoLanguageId(languageID); + const language = editorLanguageID(languageID); if (!entry) { if (typeof payload.text !== "string") throw new Error("New model requires document text"); await ensureMonacoLanguageTokenizer(language); @@ -929,6 +944,7 @@ export function mountWorkbench(host: WorkbenchHost) { view.onDidChangeModelLanguage(() => syncDefinitionNavigation(view)); view.onDidDispose(() => { definitionNavigation.get(view)?.lifetime.dispose(); definitionNavigation.delete(view); }); attachRunInteractions(view); + pluginActions.attach(view); debugRunContexts.set(view, view.createContextKey("litheCanRunToCursor", false)); function request(type: "toggleBreakpoint" | "editBreakpoint" | "runToCursor", line: number, column = 1) { const model = view.getModel(); @@ -1032,6 +1048,46 @@ export function mountWorkbench(host: WorkbenchHost) { lastMarkdownRatio = Math.min(1, Math.max(0, payload.ratio!)); } finally { applyingMarkdownScroll = false; } }, + /** + * Replaces independent file types, configurations and tokenizers. + */ + setPluginLanguages(payload: { languages?: PluginLanguage[] }) { + pluginLanguageUpdates = pluginLanguageUpdates.then(async () => { + await activation; + const languages = Array.isArray(payload?.languages) ? payload.languages : []; + // Built-in tokenizer setup also writes configuration. Complete it before + // applying a configuration-only contribution, never after the override. + await Promise.all(languages.filter(language => !language.grammar) + .map(language => ensureMonacoLanguageTokenizer(toMonacoLanguageId(language.id)))); + const result = setPluginLanguages(monaco.languages, languages, installPluginGrammar, inheritPluginTokenizer); + // A plugin installed while its files are open: they take its language + // now, and leave it when the plugin goes. + const pluginIDs = new Set([...previousPluginLanguageIDs, ...languages.map(language => editorLanguageID(language?.id))]); + previousPluginLanguageIDs = new Set(languages.map(language => editorLanguageID(language?.id))); + for (const [id, entry] of entries) { + if (entry.filename === undefined || entry.model.isDisposed()) continue; + const languageID = languageForFilename(entry.filename), language = editorLanguageID(languageID); + if (language === entry.model.getLanguageId() && languageID === entry.languageID || !(pluginIDs.has(language) || pluginIDs.has(entry.model.getLanguageId()))) continue; + await ensureMonacoLanguageTokenizer(language); + if (entries.get(id) !== entry || entry.model.isDisposed()) continue; + entry.contextGeneration++; + entry.languageID = languageID; + monaco.editor.setModelLanguage(entry.model, language); + for (const view of allEditors()) { + if (view.getModel() === entry.model) syncDefinitionNavigation(view); + } + } + void pluginActions.refresh().catch(console.error); + return result; + }); + return pluginLanguageUpdates; + }, + async refreshPluginEditorActions() { + await activation; + // Acknowledge scheduling, not plugin completion: optional collectors + // must never hold the native save/edit bridge until its fatal deadline. + void pluginActions.refresh().catch(console.error); + }, async refreshJavaRunMarkers() { await activation; await Promise.all([...entries].filter(([, entry]) => allEditors().some(view => view.getModel() === entry.model)) @@ -1526,14 +1582,14 @@ export function mountWorkbench(host: WorkbenchHost) { .monaco-editor .lithe-java-navigation-down:after,.monaco-editor .lithe-java-navigation-both:after{content:'↓'} .monaco-editor .lithe-java-navigation-both:before,.monaco-editor .lithe-java-navigation-both:after{width:50%;max-width:12px} ${navigationIconStyles} - .monaco-editor .lithe-java-run{cursor:pointer;background-size:14px 14px;background-repeat:no-repeat;background-position:center;opacity:.9} + .monaco-editor .lithe-java-run,.monaco-editor .lithe-plugin-editor-action{cursor:pointer;background-size:14px 14px;background-repeat:no-repeat;background-position:center;opacity:.9} .monaco-editor .lithe-java-run:hover{opacity:1} ${runIconStyles} ${darkRunIconStyles} ${host.lineNumbersFirst ? ` .monaco-editor.lithe-line-numbers-first .line-numbers.lithe-breakpoint{font-size:0;color:var(--vscode-debugIcon-breakpointForeground,#e51400)} .monaco-editor.lithe-line-numbers-first .line-numbers.lithe-breakpoint:before{font-size:16px} - .monaco-editor.lithe-line-numbers-first .cldr.lithe-java-run{width:${nativeGutter.icon}px!important;margin-left:${nativeGutter.gap}px;opacity:1} + .monaco-editor.lithe-line-numbers-first .cldr.lithe-java-run,.monaco-editor.lithe-line-numbers-first .cldr.lithe-plugin-editor-action{width:${nativeGutter.icon}px!important;margin-left:${nativeGutter.gap}px;opacity:1} .monaco-editor.lithe-line-numbers-first .lithe-java-run-run,.monaco-editor.lithe-line-numbers-first .lithe-java-run-run-all{background-size:16px 16px} .monaco-editor.lithe-line-numbers-first .lithe-java-run-passed,.monaco-editor.lithe-line-numbers-first .lithe-java-run-failed{background-size:14px 14px} .monaco-editor.lithe-line-numbers-first .cldr.lithe-java-navigation{width:${nativeGutter.icon}px!important;margin-left:${nativeGutter.gap + nativeGutter.icon}px} @@ -1827,7 +1883,7 @@ export function mountWorkbench(host: WorkbenchHost) { debugStyle.remove(); for (const cancel of openingMeasurements) cancel(); ++nativeFindGeneration; dismissNativeFind(); - review?.dispose(); semanticChanges.dispose(); for (const view of allEditors()) view.dispose(); surfaces.clear(); entries.forEach(entry => entry.release()); textmate?.dispose(); workers.forEach(worker => worker.terminate()); URL.revokeObjectURL(url); + pluginActions.dispose(); setPluginLanguages(monaco.languages, [], installPluginGrammar); review?.dispose(); semanticChanges.dispose(); for (const view of allEditors()) view.dispose(); surfaces.clear(); entries.forEach(entry => entry.release()); textmate?.dispose(); workers.forEach(worker => worker.terminate()); URL.revokeObjectURL(url); }); await send({ type: "ready" }); } diff --git a/macos/Experiments/Monaco/main.swift b/macos/Experiments/Monaco/main.swift index 0d2eee7754..19f75cf166 100644 --- a/macos/Experiments/Monaco/main.swift +++ b/macos/Experiments/Monaco/main.swift @@ -88,6 +88,9 @@ final class Probe: NSObject, NSApplicationDelegate, WKScriptMessageHandlerWithRe var holdFormat = false var heldFormat: ((Any?, String?) -> Void)? var formatWaiter: ((Any?, String?) -> Void)? + var holdPluginActions = false + var heldPluginActions: [((Any?, String?) -> Void)] = [] + var pluginActionsWaiter: ((Any?, String?) -> Void)? let formatResult: [String: Any] = ["edits": [["range": ["startLineNumber": 1, "startColumn": 1, "endLineNumber": 1, "endColumn": 15], "text": "class Probe { }"]]] var holdSemantic = false @@ -187,6 +190,21 @@ final class Probe: NSObject, NSApplicationDelegate, WKScriptMessageHandlerWithRe case "javaRunMarkerAction": javaRunActionCount += 1 replyHandler(["ok": true], nil) + case "pluginEditorActions": + if holdPluginActions { + heldPluginActions.append(replyHandler) + pluginActionsWaiter?(["ok": true], nil); pluginActionsWaiter = nil + } else { replyHandler(["actions": []], nil) } + case "holdPluginActions": holdPluginActions = true; replyHandler(["ok": true], nil) + case "awaitPluginActions": + if !heldPluginActions.isEmpty { replyHandler(["ok": true], nil) } + else { pluginActionsWaiter = replyHandler } + case "releasePluginActions": + holdPluginActions = false + let replies = heldPluginActions; heldPluginActions.removeAll() + replies.forEach { $0(["actions": []], nil) } + pluginActionsWaiter?(["cancelled": true], nil); pluginActionsWaiter = nil + replyHandler(["ok": true], nil) case "javaRunActionCount": replyHandler(["count": javaRunActionCount], nil) case "javaNavigation": if holdNavigation { @@ -537,6 +555,8 @@ final class Probe: NSObject, NSApplicationDelegate, WKScriptMessageHandlerWithRe func windowWillClose(_ notification: Notification) { finish(error: automated && !completed ? "Closed before completion" : nil) } func finish(error: String?) { + heldPluginActions.forEach { $0(nil, "Probe finished") }; heldPluginActions.removeAll() + pluginActionsWaiter?(nil, "Probe finished"); pluginActionsWaiter = nil closedDocumentNotificationWaiter?(nil, "Probe finished"); closedDocumentNotificationWaiter = nil closedFixtureDocuments.removeAll() markdownScrollWaiter?(nil, "Probe finished"); markdownScrollWaiter = nil diff --git a/macos/Experiments/Monaco/workbench.integration.ts b/macos/Experiments/Monaco/workbench.integration.ts index d2ba137b40..e219a63a86 100644 --- a/macos/Experiments/Monaco/workbench.integration.ts +++ b/macos/Experiments/Monaco/workbench.integration.ts @@ -23,6 +23,9 @@ import { editor as monacoEditor, languages, Range, Selection, Uri } from "monaco import { mouseInputCases } from "./mouse-input.integration"; import { contextMenuCases } from "./context-menu.integration"; import { IContextMenuService } from "monaco-editor/esm/vs/platform/contextview/browser/contextView.js"; +import { installPluginGrammar } from "@lithe/editor/plugin-grammar-tokenizer"; +import { attachPluginEditorActions } from "@lithe/editor/plugin-editor-actions"; +import httpGrammarSource from "../../../shared/contracts/plugins/v1/fixtures/grammars/http.monarch.json" with { type: "text" }; import { imeInputCases } from "./ime-input.integration"; // Real WebKit integration, using the exact workbench bundle and the existing @@ -54,6 +57,142 @@ async function verify() { await operation(); cases.push({ name, durationMs: performance.now() - started }); } + await check("ordinary plugin grammar runs in a worker and preserves Monaco editing", async () => { + if (!languages.getLanguages().some(language => language.id === "fixture-http")) languages.register({ id: "fixture-http" }); + const installation = installPluginGrammar("fixture-http", JSON.stringify({ tokenizer: { root: [["#.*$", "comment"]] } })); + const previous = initialEditor.getModel(); + const model = monacoEditor.createModel("# request\nGET /orders", "fixture-http"); + let listener: { dispose(): void } | undefined; + try { + const colored = new Promise(resolve => { + listener = model.onDidChangeTokens(() => { + const tokens = (model as any).tokenization.getLineTokens(1); + if (tokens.getStandardTokenType(0) === 1) resolve(); + }); + }); + initialEditor.setModel(model); + await withDeadline(colored, "plugin worker never published comment tokens"); + initialEditor.executeEdits("plugin-worker-fixture", [{ range: new Range(2, 5, 2, 5), text: " /new" }]); + assert(model.getValue().includes("/new"), "plugin tokenization blocked editing"); + } finally { listener?.dispose(); initialEditor.setModel(previous); model.dispose(); installation.dispose(); } + }); + await check("worker grammar preserves ordered cases and defaults to root after a host roundtrip", async () => { + const id = "fixture-ordered-http"; + if (!languages.getLanguages().some(language => language.id === id)) languages.register({ id }); + // Sorted host dictionaries must not reorder anything inside the source string. + const source = '{"tokenizer":{"comment":[[".*","comment"]],"root":[["[A-Z]+",{"cases":{"GET":"string","[A-Z]+":"comment","@default":"identifier"}}]]}}'; + const payload = JSON.parse(JSON.stringify({ grammar: { kind: "monarch", source } })); + const installation = installPluginGrammar(id, payload.grammar.source); + const previous = initialEditor.getModel(), model = monacoEditor.createModel("GET", id); + let listener: { dispose(): void } | undefined; + try { + const colored = new Promise(resolve => { + listener = model.onDidChangeTokens(() => { + if ((model as any).tokenization.getLineTokens(1).getStandardTokenType(0) === 2) resolve(); + }); + }); + initialEditor.setModel(model); + await withDeadline(colored, "worker lost root or the first matching case"); + } finally { listener?.dispose(); initialEditor.setModel(previous); model.dispose(); installation.dispose(); } + }); + await check("configuration-only aliases retain syntax and withdraw without changing their sibling language", async () => { + const previous = initialEditor.getModel(); + try { + await window.lithe.setPluginLanguages({ languages: [{ id: "properties", fileExtensions: ["properties"], + configuration: { lineComment: "!" } }] }); + await send({ type: "open", id: "plugin-properties", text: "# comment\nkey=value" }); + await window.lithe.activate({ id: "plugin-properties", filename: "example.properties", text: "# comment\nkey=value", revision: 0, readonly: false }); + const model = initialEditor.getModel()!; + assert(model.getLanguageId() === "properties", "plugin identity was replaced by its tokenizer alias"); + (model as any).tokenization.forceTokenization(1); + assert((model as any).tokenization.getLineTokens(1).getStandardTokenType(0) === 1, + "configuration-only properties lost the ini tokenizer"); + initialEditor.setPosition(new Position(2, 1)); + await initialEditor.getAction("editor.action.commentLine")!.run(); + assert(model.getLineContent(2).startsWith("!"), "alias did not use its independent comment configuration"); + await window.lithe.setPluginLanguages({ languages: [] }); + assert(model.getLanguageId() === "ini", "withdrawing the configuration did not restore the tokenizer alias"); + (model as any).tokenization.forceTokenization(1); + assert((model as any).tokenization.getLineTokens(1).getStandardTokenType(0) === 1, "withdrawing alias disposed the base engine"); + } finally { + await window.lithe.setPluginLanguages({ languages: [] }); + await window.lithe.retain([]); + await send({ type: "closeFixtureDocument", documentID: "plugin-properties" }); + initialEditor.setModel(previous); + } + }); + await check("plugin action refresh acknowledges scheduling while collection is pending and editing still drains", async () => { + const previous = initialEditor.getModel(); + await send({ type: "open", id: "plugin-slow-actions", text: "GET /orders" }); + await window.lithe.activate({ id: "plugin-slow-actions", filename: "orders.http", text: "GET /orders", revision: 0, readonly: false }); + await send({ type: "holdPluginActions" }); + try { + await withDeadline(window.lithe.refreshPluginEditorActions(), "refresh waited for plugin collection"); + await withDeadline(send({ type: "awaitPluginActions" }), "collector did not start"); + // Grammar/config updates must not wait for pending actions either. + await withDeadline(window.lithe.setPluginLanguages({ languages: [{ id: "fixture-source", fileExtensions: ["orderedhttp"], + grammar: { kind: "monarch", source: httpGrammarSource } }] }), "static language update waited for plugin collection"); + initialEditor.executeEdits("slow-plugin", [{ range: new Range(1, 1, 1, 1), text: "# edited\n" }]); + const snapshot = await withDeadline(window.lithe.freeze("plugin-slow-actions"), "slow plugin blocked save barrier"); + assert(snapshot.text.startsWith("# edited"), "save barrier lost input while plugin was pending"); + window.lithe.unlock("plugin-slow-actions"); + } finally { + await send({ type: "releasePluginActions" }); + await window.lithe.setPluginLanguages({ languages: [] }); + await window.lithe.retain([]); + await send({ type: "closeFixtureDocument", documentID: "plugin-slow-actions" }); + initialEditor.setModel(previous); + } + }); + await check("tool actions share a gutter menu and reject superseded batches", async () => { + const previous = initialEditor.getModel(); + const model = monacoEditor.createModel("GET /orders", "plaintext"); + const entry = { model, revision: 0, chain: Promise.resolve(), readonly: false, frozen: false, closingHolds: 0 }; + let active = true, collections = 0; + const calls: any[] = []; + const service = StandaloneServices.get(IContextMenuService), originalMenu = service.showContextMenu; + let menu: any[] = []; + service.showContextMenu = delegate => { menu = [...delegate.getActions()]; }; + const entries = new Map([["tool", entry]]); + const binding = attachPluginEditorActions({ + entries: () => entries, editors: () => [initialEditor], lineNumbersFirst: true, + current: () => { const version = model.getVersionId(); return () => active && !model.isDisposed() && model.getVersionId() === version; }, + request: async payload => { + if ((payload as any).type === "pluginEditorAction") { calls.push(payload); return { ok: true }; } + return { batch: String(++collections), actions: [ + { id: "send", line: 1, endLine: 1, title: "Send request", icon: "run" }, + { id: "preview", line: 1, endLine: 1, title: "Preview request", icon: "run" }, + ] }; + }, + }); + try { + initialEditor.setModel(model); + binding.attach(initialEditor); + await binding.refresh(); + assert(model.getAllDecorations().filter(value => value.options.linesDecorationsClassName?.includes("lithe-plugin-editor-action")).length === 1, + "same-line actions created competing gutter decorations"); + const target = document.createElement("span"); + target.className = "lithe-plugin-editor-action"; + (initialEditor as any)._onMouseDown.fire({ + target: { element: target, position: new Position(1, 1) }, + event: { leftButton: true, posx: 10, posy: 10, preventDefault() {}, stopPropagation() {} }, + }); + assert(menu.length === 2 && menu[0].label === "Send request" && menu[1].label === "Preview request", + "same-line plugin actions lost their separate menu labels"); + await menu[0].run(); + assert(calls.length === 1 && calls[0].action === "send" && calls[0].batch === "1", + "explicit click did not preserve the opaque action/batch identity"); + entry.revision++; + binding.schedule("tool", entry); + assert(!model.getAllDecorations().some(value => value.options.linesDecorationsClassName?.includes("lithe-plugin-editor-action")), + "edited document kept its old action clickable"); + await menu[0].run(); + assert(calls.length === 1, "retained menu executed an action after its batch was revoked"); + } finally { + service.showContextMenu = originalMenu; + active = false; binding.dispose(); initialEditor.setModel(previous); model.dispose(); + } + }); for (const test of contextMenuCases) await check(test.name, async () => test.run()); for (const test of mouseInputCases) await check(test.name, async () => test.run()); for (const test of imeInputCases) await check(test.name, async () => test.run()); diff --git a/macos/Resources/en.lproj/Localizable.strings b/macos/Resources/en.lproj/Localizable.strings index 2fcf4dc877..d4a91515b2 100644 --- a/macos/Resources/en.lproj/Localizable.strings +++ b/macos/Resources/en.lproj/Localizable.strings @@ -235,6 +235,7 @@ "Add another account" = "Add another account"; "Add at least one absolute allowed folder path after the Filesystem package argument." = "Add at least one absolute allowed folder path after the Filesystem package argument."; "Add at least one absolute folder path after the package argument, one per line. Filesystem can read and write only in the folders you allow. Requires Node.js 24 or later." = "Add at least one absolute folder path after the package argument, one per line. Filesystem can read and write only in the folders you allow. Requires Node.js 24 or later."; +"Add clickable actions beside document text" = "Add clickable actions beside document text"; "Add database connection" = "Add database connection"; "Add header" = "Add header"; "Add memory usage monitoring\n\nTrack current and average memory usage in the status bar." = "Add memory usage monitoring\n\nTrack current and average memory usage in the status bar."; @@ -4874,6 +4875,7 @@ "native.addAnAIProviderInAIProvidersFirst" = "Add an AI provider in AI Providers first."; "native.addAtLeastOneAbsoluteAllowedFolderPathAfterTheFilesystemPackageArgument" = "Add at least one absolute allowed folder path after the Filesystem package argument."; "native.addAtLeastOneAbsoluteFolderPathAfterThePackageArgumentOnePerLineFilesystemCanReadAndWriteOnlyInTheFoldersYouAllowRequiresNodeJs24OrLater" = "Add at least one absolute folder path after the package argument, one per line. Filesystem can read and write only in the folders you allow. Requires Node.js 24 or later."; +"native.addClickableActionsBesideDocumentText" = "Add clickable actions beside document text"; "native.addDatabaseConnection" = "Add database connection"; "native.addHeader" = "Add header"; "native.addHook" = "Add Hook"; diff --git a/macos/Resources/zh-Hans.lproj/Localizable.strings b/macos/Resources/zh-Hans.lproj/Localizable.strings index ea4dcd246a..ca32b7f055 100644 --- a/macos/Resources/zh-Hans.lproj/Localizable.strings +++ b/macos/Resources/zh-Hans.lproj/Localizable.strings @@ -235,6 +235,7 @@ "Add another account" = "添加另一个账号"; "Add at least one absolute allowed folder path after the Filesystem package argument." = "请在 Filesystem 包参数后至少添加一个允许访问的文件夹绝对路径。"; "Add at least one absolute folder path after the package argument, one per line. Filesystem can read and write only in the folders you allow. Requires Node.js 24 or later." = "在包参数后至少添加一个文件夹的绝对路径,每行一个。Filesystem 只可读写你允许的文件夹。需要 Node.js 24 或更高版本。"; +"Add clickable actions beside document text" = "在文档文本旁添加可点击的操作"; "Add database connection" = "添加数据库连接"; "Add header" = "添加请求头"; "Add memory usage monitoring\n\nTrack current and average memory usage in the status bar." = "添加内存占用监控\n\n在状态栏显示当前及平均内存占用。"; @@ -4874,6 +4875,7 @@ "native.addAnAIProviderInAIProvidersFirst" = "请先在“AI 服务商”中添加服务商。"; "native.addAtLeastOneAbsoluteAllowedFolderPathAfterTheFilesystemPackageArgument" = "请在 Filesystem 包参数后至少添加一个允许访问的文件夹绝对路径。"; "native.addAtLeastOneAbsoluteFolderPathAfterThePackageArgumentOnePerLineFilesystemCanReadAndWriteOnlyInTheFoldersYouAllowRequiresNodeJs24OrLater" = "在包参数后至少添加一个文件夹的绝对路径,每行一个。Filesystem 只可读写你允许的文件夹。需要 Node.js 24 或更高版本。"; +"native.addClickableActionsBesideDocumentText" = "在文档文本旁添加可点击的操作"; "native.addDatabaseConnection" = "添加数据库连接"; "native.addHeader" = "添加请求头"; "native.addHook" = "添加 Hook"; diff --git a/macos/Sources/Lithe/Application/Composition/AppServices.swift b/macos/Sources/Lithe/Application/Composition/AppServices.swift index d39b69d5ae..239ced2d76 100644 --- a/macos/Sources/Lithe/Application/Composition/AppServices.swift +++ b/macos/Sources/Lithe/Application/Composition/AppServices.swift @@ -42,6 +42,10 @@ final class AppServices { /// Starts plugin backends on `onWorkspaceOpen` and `onCommand:`; /// `nil` when the platform runs no plugin backends. var pluginBackendActivation: (any PluginBackendActivating)? + var pluginEditorActions: PluginEditorActionHostService? + /// Static plugin editor resources; `nil` when + /// the platform loads no plugins. + var pluginEditorLanguages: (any PluginEditorLanguageProviding)? let moduleRuntime: ModuleRuntime let pluginManager: any PluginManaging let pluginMarketplace: any PluginMarketplaceServicing diff --git a/macos/Sources/Lithe/Application/Features/PluginEditorActionHostService.swift b/macos/Sources/Lithe/Application/Features/PluginEditorActionHostService.swift new file mode 100644 index 0000000000..6537345561 --- /dev/null +++ b/macos/Sources/Lithe/Application/Features/PluginEditorActionHostService.swift @@ -0,0 +1,146 @@ +import Combine +import Foundation +import LitheCoreContracts +import LitheModuleAPI + +// Note: 独立扩展点与领域契约的边界见 .agents/notes/implemented/architecture/2026-10-31-plugin-capability-and-domain-boundaries.md + +/// One total collection budget, below the editor bridge's ten-second deadline. +enum PluginEditorActionCollectionBudget { + static let maximum: Duration = .seconds(8) + + static func remaining(after elapsed: Duration) -> Duration? { + let remaining = maximum - elapsed + return remaining > .zero ? remaining : nil + } +} + +/// A context/session-owned binding, not a language, Build or Run provider. +struct PluginEditorActionRegistration: Equatable { + let lease: UUID + let pluginID: String + let sessionID: String + let context: PluginWorkspaceContextReference + let id: String + let functionID: String + let fileExtensions: [String] + let fileNames: [String] + + func matches(_ filename: String) -> Bool { + let filename = filename.lowercased() + return fileNames.contains(filename) || fileExtensions.contains { filename.hasSuffix("." + $0) } + } +} + +/// Registration only changes a binding. It never calls a backend while the +/// backend is awaiting this host response; collection happens in a later turn. +@MainActor +final class PluginEditorActionHostService: PluginHostServiceHandling { + let service = "editor" + let methods: Set = ["lithe/host/editor/registerActions"] + private let contexts: PluginWorkspaceContexts + private let decoder: any PluginEditorActionDecoding + private let changed = PassthroughSubject() + private var entries: [UUID: PluginEditorActionRegistration] = [:] + private var disposeRegistration: [UUID: @MainActor () -> Void] = [:] + private var functions: [String: (session: String, ids: Set)] = [:] + + var changes: AnyPublisher { changed.eraseToAnyPublisher() } + + init(contexts: PluginWorkspaceContexts, decoder: any PluginEditorActionDecoding) { + self.contexts = contexts + self.decoder = decoder + } + + func registrations(context: PluginWorkspaceContextReference, filename: String) -> [PluginEditorActionRegistration] { + entries.values.filter { $0.context == context && $0.matches(filename) } + .sorted { ($0.pluginID, $0.id) < ($1.pluginID, $1.id) } + } + + func contains(_ registration: PluginEditorActionRegistration, functionID: String? = nil) -> Bool { + entries[registration.lease] == registration + && functions[registration.pluginID]?.session == registration.sessionID + && functions[registration.pluginID]?.ids.contains(functionID ?? registration.functionID) == true + } + + /// Function withdrawal invalidates the complete binding. Register it again + /// explicitly; a reused function ID must not resurrect old document actions. + func updateFunctions(pluginID: String, sessionID: String, ids: [String]) { + let ids = Set(ids) + guard functions[pluginID]?.session != sessionID || functions[pluginID]?.ids != ids else { return } + let previous = functions[pluginID] + functions[pluginID] = (sessionID, ids) + let revoked = previous?.session != sessionID || !(previous?.ids ?? []).isSubset(of: ids) + guard revoked else { return } + for entry in Array(entries.values) where entry.pluginID == pluginID { + disposeRegistration[entry.lease]?() + } + changed.send() + } + + func answer(_ call: PluginHostCall) async -> Result { + do { + let scope = try PluginHostAPIContext(call, contexts: contexts) + let args = try PluginHostArguments(call.params, allowed: ["context", "id", "function", "selector"]) + let input: ToolingJSONValue = .object([ + "id": .string(try args.string("id")), "function": .string(try args.string("function")), + "selector": .object(try args.object("selector")), + ]) + let normalized: ToolingJSONValue + do { normalized = try decoder.decodeEditorActions(kind: "registration", value: input, text: "") } + catch { throw PluginHostArguments.invalid } + guard case .object(let result) = normalized, case .object(let value)? = result["registration"], + case .string(let id)? = value["id"], case .string(let functionID)? = value["function"], + case .object(let selector)? = value["selector"], + case .array(let extensions)? = selector["fileExtensions"], case .array(let names)? = selector["fileNames"], + functions[call.pluginID]?.session == call.sessionID, + functions[call.pluginID]?.ids.contains(functionID) == true else { throw PluginHostArguments.invalid } + guard entries.values.filter({ $0.pluginID == call.pluginID }).count < 32 else { + throw PluginHostServiceError(.limitExceeded, L10n.string("The plugin host request could not be completed.")) + } + guard !entries.values.contains(where: { $0.pluginID == call.pluginID && $0.context == scope.workspace.reference && $0.id == id }) else { + throw PluginHostServiceError(.preconditionFailed, L10n.string("The plugin host request parameters are invalid.")) + } + let lease = UUID() + let registration = PluginEditorActionRegistration( + lease: lease, pluginID: call.pluginID, sessionID: call.sessionID, context: scope.workspace.reference, + id: id, functionID: functionID, + fileExtensions: extensions.compactMap { if case .string(let text) = $0 { text } else { nil } }, + fileNames: names.compactMap { if case .string(let text) = $0 { text } else { nil } } + ) + let subscription = call.subscriptions.add(pluginID: call.pluginID, contextID: scope.workspace.reference.contextID) { [weak self] in + self?.disposeRegistration[lease] = nil + guard self?.entries.removeValue(forKey: lease) != nil else { return } + self?.changed.send() + } + entries[lease] = registration + let pluginID = call.pluginID + disposeRegistration[lease] = { [weak subscriptions = call.subscriptions] in + subscriptions?.dispose(pluginID: pluginID, subscriptionID: subscription) + } + changed.send() + return .success(.object(["subscriptionID": .string(subscription)])) + } catch { return .failure(PluginHostAPIValues.failure(error)) } + } + + func decode(_ result: ToolingJSONValue, text: String) throws -> [PluginEditorAction] { + let value = try decoder.decodeEditorActions(kind: "actions", value: result, text: text) + struct Response: Decodable { let actions: [PluginEditorAction] } + return try JSONDecoder().decode(Response.self, from: JSONEncoder().encode(value)).actions + } + + func endSession(pluginID: String, sessionID: String) { + guard functions[pluginID]?.session == sessionID else { return } + functions[pluginID] = nil + for entry in Array(entries.values) where entry.pluginID == pluginID { + disposeRegistration[entry.lease]?() + } + changed.send() + } + + func closeContext(_ contextID: String) { + for entry in Array(entries.values) where entry.context.contextID == contextID { + disposeRegistration[entry.lease]?() + } + } +} diff --git a/macos/Sources/Lithe/Application/Features/PluginEditorLanguages.swift b/macos/Sources/Lithe/Application/Features/PluginEditorLanguages.swift new file mode 100644 index 0000000000..69276a22b1 --- /dev/null +++ b/macos/Sources/Lithe/Application/Features/PluginEditorLanguages.swift @@ -0,0 +1,19 @@ +import Combine +import Foundation +import LitheCoreContracts + +/// Static editor resources are independent of language-server and Run providers. +struct PluginEditorLanguageSet: Equatable { + var languages: [ToolingJSONValue] = [] + + var editorPayload: [String: Any] { + let values = (try? JSONSerialization.jsonObject(with: JSONEncoder().encode(languages))) ?? [] + return ["languages": values] + } +} + +@MainActor +protocol PluginEditorLanguageProviding: AnyObject { + var changes: AnyPublisher { get } + func current() -> PluginEditorLanguageSet +} diff --git a/macos/Sources/Lithe/Core/Language/PluginLanguageProviderCatalogSource.swift b/macos/Sources/Lithe/Core/Language/PluginLanguageProviderCatalogSource.swift index eed1113111..4b24b8d948 100644 --- a/macos/Sources/Lithe/Core/Language/PluginLanguageProviderCatalogSource.swift +++ b/macos/Sources/Lithe/Core/Language/PluginLanguageProviderCatalogSource.swift @@ -45,7 +45,7 @@ extension LanguageProviderCatalog { // Debug-only declarations go last: they add to what the owning package // declared, and an owner applied after them would erase their debugger. let ordered = languageSupports.sorted { - ($0.isDebugOnly ? 1 : 0, $0.id) < ($1.isDebugOnly ? 1 : 0, $1.id) + ($0.isDebugOnly || $0.isEditorOnly ? 1 : 0, $0.id) < ($1.isDebugOnly || $1.isEditorOnly ? 1 : 0, $1.id) } for support in ordered { let existingIndex = indicesByID[support.id] @@ -58,7 +58,7 @@ extension LanguageProviderCatalog { // A debug-only declaration adds a debugger to a language another // package or the catalog already provides; it must not take that // language's server, run, or test features away. - let isDebugOnly = support.isDebugOnly && existing != nil + let isDebugOnly = (support.isDebugOnly || support.isEditorOnly) && existing != nil if !isDebugOnly { capabilities.subtract([.run, .languageServer, .debugAdapter, .testing]) } diff --git a/macos/Sources/Lithe/Core/Rust/RustDeclarativePluginOperations.swift b/macos/Sources/Lithe/Core/Rust/RustDeclarativePluginOperations.swift index 27448a2dd5..d1afb2094b 100644 --- a/macos/Sources/Lithe/Core/Rust/RustDeclarativePluginOperations.swift +++ b/macos/Sources/Lithe/Core/Rust/RustDeclarativePluginOperations.swift @@ -6,7 +6,8 @@ import LitheModuleAPI /// validation and template expansion for both products; this adapter only /// translates payloads and outcomes. struct RustDeclarativePluginOperations: DeclarativePluginManifestValidating, DeclarativeExecutionPlanning, - DeclarativeLanguageServerLaunchPlanning, DeclarativePluginSettingsResolving, LanguageServerRuntimeVersionChecking { + DeclarativeLanguageServerLaunchPlanning, DeclarativePluginSettingsResolving, LanguageServerRuntimeVersionChecking, + DeclarativeEditorContributionDecoding, PluginEditorActionDecoding { let core: RustCoreBridge func validateNativeNodes(ui: PluginNativeUI, data: ToolingJSONValue) throws -> [PluginNativeUI.Node] { @@ -298,6 +299,23 @@ struct RustDeclarativePluginOperations: DeclarativePluginManifestValidating, Dec return result } + func decodeGrammar(manifest: Data, languageID: String, grammar: String) throws -> ToolingJSONValue { + struct Payload: Encodable { let manifest: ToolingJSONValue; let languageID: String; let grammar: String } + struct Result: Decodable { let language: ToolingJSONValue } + let outcome: Outcome = try execute( + "plugins.declarative.decodeGrammar", + payload: Payload(manifest: try Self.json(manifest), languageID: languageID, grammar: grammar) + ) + return outcome.value.language + } + + func decodeEditorActions(kind: String, value: ToolingJSONValue, text: String = "") throws -> ToolingJSONValue { + struct Payload: Encodable { let kind: String; let value: ToolingJSONValue; let text: String } + let result: ToolingJSONValue = try core.executeResult( + command: "plugins.editorActions.decode", payload: Payload(kind: kind, value: value, text: text)).get() + return result + } + func resolveSettings( manifest: Data, settings: [String: ToolingJSONValue], diff --git a/macos/Sources/Lithe/Platform/MacOS/MacServiceContainer.swift b/macos/Sources/Lithe/Platform/MacOS/MacServiceContainer.swift index f08ac9d3b9..a5baa3f16c 100644 --- a/macos/Sources/Lithe/Platform/MacOS/MacServiceContainer.swift +++ b/macos/Sources/Lithe/Platform/MacOS/MacServiceContainer.swift @@ -1,3 +1,4 @@ +import Combine import Foundation import LitheAIAssistanceModule import LitheAgentConversationModule @@ -448,6 +449,8 @@ final class MacServiceContainer { ) hostDispatcher.register(workspaceHost) hostDispatcher.register(PluginDocumentHostService(contexts: .shared)) + let editorActions = PluginEditorActionHostService(contexts: .shared, decoder: declarativePluginOperations) + hostDispatcher.register(editorActions) hostDispatcher.register(PluginFileHostService(contexts: .shared, metadata: workspaceHost, files: MacPluginWorkspaceFileService( searchOperations: RustWorkspaceOperations(core: rustCore), @@ -470,8 +473,18 @@ final class MacServiceContainer { fields: ["profiles": String(profiles), "passwords": String(passwords)]) } }, + canStart: { id in + guard moduleLaunchMode != .safeMode, + let package = pluginStartup.registeredPlugins.first(where: { $0.descriptor.id.rawValue == id }), + let module = package.manifest.modules.first(where: { + $0.manifest.id == .backendExtension(id) || $0.manifest.id == ModuleID("\(id).ui") + })?.manifest else { return false } + return (moduleStore.enabledState(for: module.id) ?? (module.defaultState == .enabled)) + && !moduleStore.isQuarantined(module.id) + }, hostDispatcher: hostDispatcher ) + sessions.editorActions = editorActions sessions.onActivationFailure = { [applicationLogging] pluginID, error in applicationLogging?.record(level: "warn", scope: "plugins.backend", message: "backend activation failed", fields: ["plugin": pluginID, "error": error.localizedDescription]) @@ -500,7 +513,7 @@ final class MacServiceContainer { ) // A debug-only declaration adds a debugger to a language another owner // serves, so it must not switch the host's own tools for it off. - let languageOwningSupports = installedLanguageSupports.filter { !$0.isDebugOnly } + let languageOwningSupports = installedLanguageSupports.filter { !$0.isDebugOnly && !$0.isEditorOnly } let pluginLanguageIDs = Set(languageOwningSupports.map(\.id)) // A package may declare, through its host integration, that the host // keeps providing a feature of its language. Everything else of an @@ -1132,6 +1145,34 @@ final class MacServiceContainer { ) services.ideCapabilityRegistry = ideCapabilityRegistry services.pluginRegistrationChanges = livePlugins.changes + // Static editor resources follow their own enablement; ordinary tool + // actions register at runtime in the shared backend's host services. + let editorLanguageModuleChanges = PassthroughSubject() + MacPluginEditorLanguages.observeModuleChanges(on: moduleRuntime, changed: { + editorLanguageModuleChanges.send() + }) { runtime in + for package in pluginStartup.registeredPlugins where package.descriptor.declaresBackend && package.descriptor.ui == nil { + let id = package.descriptor.id.rawValue + if let state = try? runtime.snapshot(for: .backendExtension(id)), + state.state != .disabled, !state.isQuarantined, !state.isSuppressedBySafeMode { + pluginBackends.enable(id) + } else { pluginBackends.disable(id) } + } + } + services.pluginEditorActions = pluginBackends.editorActions + services.pluginEditorLanguages = MacPluginEditorLanguages( + launchRegistered: pluginStartup.registeredPlugins, + isModuleUsable: { [weak moduleRuntime] id in + guard let snapshot = try? moduleRuntime?.snapshot(for: id) else { return false } + return snapshot.state != .disabled && !snapshot.isQuarantined && !snapshot.isSuppressedBySafeMode + }, + livePackages: { liveSnapshotBox.snapshot.activePackages }, + decoder: declarativePluginOperations, + triggers: [livePlugins.changes, editorLanguageModuleChanges.eraseToAnyPublisher()], + log: { message, fields in + NSLog("Lithe %@ %@", message, fields.sorted { $0.key < $1.key }.map { "\($0.key)=\($0.value)" }.joined(separator: " ")) + } + ) services.ideHostTransport = MacIdeHostTransport(core: rustCore, storage: fileStorage) services.proxyPasswordStore = proxyPasswordStore services.proxyConnectionChecker = proxyConnectionChecker @@ -1252,7 +1293,7 @@ final class MacServiceContainer { prepareTools: @MainActor (LanguageProviderDescriptor) async -> Void ) async throws { try Task.checkCancellation() - guard let support = supports.first(where: { $0.id == languageID && !$0.isDebugOnly }), + guard let support = supports.first(where: { $0.id == languageID && !$0.isDebugOnly && !$0.isEditorOnly }), let moduleID = support.languageServerModuleID, let snapshot = try? runtime.snapshot(for: moduleID), snapshot.state != .disabled, !snapshot.isQuarantined, !snapshot.isSuppressedBySafeMode else { @@ -1351,6 +1392,8 @@ final class MacServiceContainer { || $0.manifest.id == .buildSystemsExtension(descriptor.id.rawValue) || $0.manifest.id == .vcsProvidersExtension(descriptor.id.rawValue) || $0.manifest.id == .debugAdaptersExtension(descriptor.id.rawValue) + || $0.manifest.id == .grammarsExtension(descriptor.id.rawValue) + || $0.manifest.id == .backendExtension(descriptor.id.rawValue) || $0.manifest.id == .projectGeneratorsExtension(descriptor.id.rawValue) }.map { declaration in ModuleFactory(manifest: declaration.manifest, contributions: declaration.contributions) { diff --git a/macos/Sources/Lithe/Platform/MacOS/MonacoWorkbenchEditor.swift b/macos/Sources/Lithe/Platform/MacOS/MonacoWorkbenchEditor.swift index f2313307e1..9d266ca44b 100644 --- a/macos/Sources/Lithe/Platform/MacOS/MonacoWorkbenchEditor.swift +++ b/macos/Sources/Lithe/Platform/MacOS/MonacoWorkbenchEditor.swift @@ -6,6 +6,7 @@ import LitheCoreContracts import LitheDebugModule import LitheExecutionModule import LitheGitModule +import LitheModuleAPI /// Local editor assets included by ordinary preview and release packaging. enum MonacoWorkbenchResources { @@ -316,6 +317,18 @@ final class MonacoWorkbenchSession: NSObject, ObservableObject, WKNavigationDele private var javaRunMarkerLists: [String: (context: MonacoDocumentContext, revision: Int, url: URL, markers: [JavaRunMarker])] = [:] private var javaRunMarkerRequests: [String: UUID] = [:] private var javaRunMarkerRefreshSubscription: AnyCancellable? + private struct EditorActionList { + let context: MonacoDocumentContext + let contentVersion: UInt64 + let batch: String + let actions: [(key: String, registration: PluginEditorActionRegistration, action: PluginEditorAction)] + } + private var pluginActionLists: [String: EditorActionList] = [:] + private var pluginActionRequests: [String: (id: UUID, task: Task, deadline: Task)] = [:] + private var pluginActionExecutions: [UUID: (documentID: String, registration: PluginEditorActionRegistration, task: Task)] = [:] + private var pluginActionsSubscription: AnyCancellable? + private var pluginLanguagesSubscription: AnyCancellable? + private var lastPluginLanguages: PluginEditorLanguageSet? private var testOutcomeSubscription: AnyCancellable? private var testServiceIdentity: ObjectIdentifier? private var codeActionCommands: [String: (context: MonacoDocumentContext, key: String, root: URL?, command: LanguageServerCommand)] = [:] @@ -607,6 +620,7 @@ final class MonacoWorkbenchSession: NSObject, ObservableObject, WKNavigationDele bindSynchronization(document) subscriptions[id] = document.textDidChange.sink { [weak self, weak document] in guard let self, let document, self.currentDocument(id) === document, !self.applyingEdit else { return } + self.cancelPluginActions(for: id) let previous = self.revisions[id] ?? 0 self.revisions[id] = previous + 1 self.call("window.lithe.replace(payload)", arguments: ["payload": ["id": id, "text": document.text, "previousRevision": previous, "revision": previous + 1]]) @@ -722,6 +736,68 @@ final class MonacoWorkbenchSession: NSObject, ObservableObject, WKNavigationDele .sink { [weak self] _ in self?.call("window.lithe.refreshJavaRunMarkers()") } } + /// Plugin grammars apply without a restart: the editor follows every + /// change of the plugins' independent static editor resources. + private func observePluginLanguages(model: AppModel) { + guard let languages = model.services.pluginEditorLanguages else { return } + if pluginLanguagesSubscription == nil { + pluginLanguagesSubscription = languages.changes + .receive(on: DispatchQueue.main) + .sink { [weak self, weak languages] in + guard let self, let languages, self.ready, !self.failed else { return } + self.sendPluginLanguages(languages.current()) + } + } + sendPluginLanguages(languages.current()) + } + + private func sendPluginLanguages(_ set: PluginEditorLanguageSet) { + guard set != lastPluginLanguages else { return } + lastPluginLanguages = set + call("window.lithe.setPluginLanguages(payload)", arguments: ["payload": set.editorPayload]) { result in + if case .success(let value) = result, let failed = (value as? [String: Any])?["failed"] as? [[String: Any]] { + for failure in failed { + NSLog("Lithe plugin grammar failed in the editor: %@ %@", + failure["id"] as? String ?? "-", failure["message"] as? String ?? "-") + } + } + } + } + + private func cancelPluginActions(for id: String, closing: Bool = false) { + pluginActionLists[id] = nil + if let request = pluginActionRequests.removeValue(forKey: id) { + request.deadline.cancel() + request.task.cancel() + } + if closing { + for (operation, execution) in pluginActionExecutions where execution.documentID == id { + execution.task.cancel() + pluginActionExecutions[operation] = nil + } + } + } + + private func observePluginActions(model: AppModel) { + guard pluginActionsSubscription == nil, let service = model.services.pluginEditorActions else { return } + pluginActionsSubscription = service.changes.receive(on: DispatchQueue.main).sink { [weak self, weak service] in + guard let self, let service else { return } + for id in Array(self.pluginActionRequests.keys) { self.cancelPluginActions(for: id) } + self.pluginActionLists.removeAll() + for (id, execution) in self.pluginActionExecutions where !service.contains(execution.registration) { + execution.task.cancel() + self.pluginActionExecutions[id] = nil + } + if self.ready, !self.failed { + self.call("window.lithe.refreshPluginEditorActions()") { result in + if case .failure(let error) = result { + NSLog("Lithe plugin editor action refresh failed: %@", error.localizedDescription) + } + } + } + } + } + private func observeCodeVision(model: AppModel) { if codeVisionSubscription == nil { codeVisionSubscription = model.javaFeature.$javaCodeVisionHints @@ -836,6 +912,9 @@ final class MonacoWorkbenchSession: NSObject, ObservableObject, WKNavigationDele private func present(document: EditorDocument, model: AppModel, fontSize: Double, fontFamily: String, theme: MonacoWorkbenchThemeConfiguration, wrap: Bool, minimap: Bool, javaKeywordNavigationFilter: Bool = true, appearance: EditorAppearanceSettings = EditorAppearanceSettings(), markers: [EditorDiagnostic], surface: String = "primary") { guard viewOwnerID != nil else { return } + // Before the document: its file may be of a plugin language. + observePluginLanguages(model: model) + observePluginActions(model: model) let id = document.id.uuidString let groupDocuments: [EditorDocument] if let scopedDocumentID { @@ -859,6 +938,7 @@ final class MonacoWorkbenchSession: NSObject, ObservableObject, WKNavigationDele javaNavigationRequests[oldID] = nil javaRunMarkerLists[oldID] = nil javaRunMarkerRequests[oldID] = nil + cancelPluginActions(for: oldID, closing: true) lastGitStates[oldID] = nil gitLoads.removeValue(forKey: oldID)?.cancel() blameLoads.removeValue(forKey: oldID)?.cancel() @@ -1066,7 +1146,8 @@ final class MonacoWorkbenchSession: NSObject, ObservableObject, WKNavigationDele func allowsMessage(_ type: String) -> Bool { !isReadOnlyPreview || !["format", "codeActions", "resolveCodeAction", "executeCodeAction", - "rename", "resolveCompletion", "javaRunMarkerAction", "setBlameVisibility"].contains(type) + "rename", "resolveCompletion", "javaRunMarkerAction", "pluginEditorAction", + "setBlameVisibility"].contains(type) } func receive(_ message: WKScriptMessage, reply: @escaping (Any?, String?) -> Void) { @@ -1218,6 +1299,102 @@ final class MonacoWorkbenchSession: NSObject, ObservableObject, WKNavigationDele model.editorDidFocus(document) model.performJavaRunMarker(marker, action: action, in: document.url) reply(["ok": true], nil) + case "pluginEditorActions": + guard let model, !failed, !isReadOnlyPreview, + let revision = body["revision"] as? Int, revision == revisions[id], + let workspace = model.pluginWebWorkspaceContext, + model.services.pluginWorkspaceContexts?.contexts.contains(where: { $0.reference == workspace && $0.authority == .local }) == true, + let service = model.services.pluginEditorActions, let backends = model.pluginWebBackends, + document.text.utf8.count <= 128 * 1024 else { reply(["actions": []], nil); return } + cancelPluginActions(for: id) + let registrations = service.registrations(context: workspace, filename: document.url.lastPathComponent) + let text = document.text, version = document.contentVersion, requestID = UUID(), batch = UUID().uuidString + let input: ToolingJSONValue = .object([ + "document": .object(["documentID": .string(id), "version": .integer(Int(clamping: version)), + "path": model.workspaceURL.flatMap { root in + let prefix = root.standardizedFileURL.path + "/", path = document.url.standardizedFileURL.path + return path.hasPrefix(prefix) ? .string(String(path.dropFirst(prefix.count))) : nil + } ?? .null]), + "text": .string(text), + ]) + let task = Task { @MainActor [weak self, weak document] in + defer { + if self?.pluginActionRequests[id]?.id == requestID { + self?.pluginActionRequests.removeValue(forKey: id)?.deadline.cancel() + } + } + var items: [(key: String, registration: PluginEditorActionRegistration, action: PluginEditorAction)] = [] + let clock = ContinuousClock(), started = clock.now + for registration in registrations { + do { + try Task.checkCancellation() + guard let remaining = PluginEditorActionCollectionBudget.remaining(after: started.duration(to: clock.now)) else { break } + guard service.contains(registration) else { continue } + let result = try await backends.invokePluginFunction(registration.functionID, params: input, + ofPlugin: registration.pluginID, context: workspace, timeout: remaining, progress: { _ in }) + try Task.checkCancellation() + let actions = try service.decode(result, text: text) + guard service.contains(registration), actions.allSatisfy({ service.contains(registration, functionID: $0.invoke.functionID) }) else { continue } + for action in actions { items.append((UUID().uuidString, registration, action)) } + guard items.count <= 1000 else { items = []; break } + } catch { + if Task.isCancelled { break } + NSLog("Lithe plugin editor actions failed [%@]: %@", registration.pluginID, error.localizedDescription) + } + } + guard let self, let document, !Task.isCancelled, self.isCurrent(context), document.contentVersion == version, + self.pluginActionRequests[id]?.id == requestID, + items.allSatisfy({ service.contains($0.registration, functionID: $0.action.invoke.functionID) }) else { + reply(["cancelled": true], nil); return + } + self.pluginActionRequests.removeValue(forKey: id)?.deadline.cancel() + self.pluginActionLists[id] = EditorActionList(context: context, contentVersion: version, batch: batch, actions: items) + reply(["batch": batch, "actions": items.map { item in + ["id": item.key, "line": item.action.range.start.line, "endLine": item.action.range.end.line, + "title": item.action.title, "icon": item.action.icon] as [String: Any] + }], nil) + } + let deadline = Task { @MainActor [weak self] in + do { try await Task.sleep(for: PluginEditorActionCollectionBudget.maximum) } catch { return } + guard self?.pluginActionRequests[id]?.id == requestID else { return } + self?.cancelPluginActions(for: id) + } + pluginActionRequests[id] = (requestID, task, deadline) + case "pluginEditorAction": + guard let model, !failed, !isReadOnlyPreview, !self.isReadOnly(document), + let revision = body["revision"] as? Int, revision == revisions[id], + let list = pluginActionLists[id], list.batch == body["batch"] as? String, + isCurrent(list.context), list.contentVersion == document.contentVersion, + let key = body["action"] as? String, let item = list.actions.first(where: { $0.key == key }), + let service = model.services.pluginEditorActions, + service.contains(item.registration, functionID: item.action.invoke.functionID), + model.pluginWebWorkspaceContext == item.registration.context, + let backends = model.pluginWebBackends, + pluginActionExecutions.count < 16 else { reply(["cancelled": true], nil); return } + model.editorDidFocus(document) + let operation = UUID() + let params: ToolingJSONValue = .object([ + "documentID": .string(id), "expectedVersion": .integer(Int(clamping: list.contentVersion)), + "actionID": .string(item.action.id), "data": item.action.invoke.params, + ]) + let task = Task { @MainActor [weak self] in + defer { self?.pluginActionExecutions[operation] = nil } + do { + _ = try await backends.invokePluginFunction(item.action.invoke.functionID, params: params, + ofPlugin: item.registration.pluginID, context: item.registration.context, + timeout: .seconds(60), progress: { _ in }) + try Task.checkCancellation() + reply(["ok": true], nil) + } catch { + if Task.isCancelled { reply(["cancelled": true], nil) } + else { + NSLog("Lithe plugin editor action failed [%@]: %@", item.registration.pluginID, error.localizedDescription) + self?.model?.showNotification("The plugin host request could not be completed.") + reply(["ok": false], nil) + } + } + } + pluginActionExecutions[operation] = (id, item.registration, task) case "javaNavigationAction": guard let model, !failed, let revision = body["revision"] as? Int, revision == revisions[id], let list = javaNavigationLists[id], isCurrent(list.context), list.revision == revision, list.url == document.url, @@ -1354,6 +1531,7 @@ final class MonacoWorkbenchSession: NSObject, ObservableObject, WKNavigationDele } } case "edit": + cancelPluginActions(for: id) guard !self.isReadOnly(document), !failed, body["baseRevision"] as? Int == revisions[id], let changes = body["changes"] as? [[String: Any]] else { reply(nil, "Stale editor edit"); return } var bound = (document.text as NSString).length @@ -1681,6 +1859,9 @@ final class MonacoWorkbenchSession: NSObject, ObservableObject, WKNavigationDele private func fail(_ message: String) { failed = true + pluginActionRequests.values.forEach { $0.deadline.cancel(); $0.task.cancel() } + pluginActionExecutions.values.forEach { $0.task.cancel() } + pluginActionRequests.removeAll(); pluginActionExecutions.removeAll(); pluginActionLists.removeAll() contextMenu.dismiss() model?.showNotification("Editor: \(message)") } @@ -1691,6 +1872,8 @@ final class MonacoWorkbenchSession: NSObject, ObservableObject, WKNavigationDele func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) { fail(error.localizedDescription) } isolated deinit { + pluginActionRequests.values.forEach { $0.deadline.cancel(); $0.task.cancel() } + pluginActionExecutions.values.forEach { $0.task.cancel() } contextMenu.dismiss() gitLoads.values.forEach { $0.cancel() } blameLoads.values.forEach { $0.cancel() } diff --git a/macos/Sources/Lithe/Platform/MacOS/Plugins/MacPluginBackendSessions.swift b/macos/Sources/Lithe/Platform/MacOS/Plugins/MacPluginBackendSessions.swift index 5efd2773b8..8523b178d8 100644 --- a/macos/Sources/Lithe/Platform/MacOS/Plugins/MacPluginBackendSessions.swift +++ b/macos/Sources/Lithe/Platform/MacOS/Plugins/MacPluginBackendSessions.swift @@ -66,11 +66,13 @@ final class MacPluginBackendSessions: PluginBackendRequesting, PluginBackendActi private let credentials: any PluginCredentialStoring private let prepareState: @Sendable (_ installation: PluginInstallationRecord, _ stateDirectory: URL) -> Void private let endBackendProcesses: @MainActor (_ token: String, _ immediately: Bool) -> Void + private let canStart: @MainActor (String) -> Bool private let stuckSendGrace: Duration /// Serves the host requests of every backend. let hostDispatcher: PluginHostServiceDispatcher /// Reports a backend that an activation event failed to start; the /// workspace or command goes on without it. + var editorActions: PluginEditorActionHostService? var onActivationFailure: (@MainActor (_ pluginID: String, _ error: Error) -> Void)? private static let maximumBackgroundStarts = 2 private static let maximumPendingNotifications = 128 @@ -114,6 +116,7 @@ final class MacPluginBackendSessions: PluginBackendRequesting, PluginBackendActi credentials: any PluginCredentialStoring, prepareState: @escaping @Sendable (_ installation: PluginInstallationRecord, _ stateDirectory: URL) -> Void = { _, _ in }, stuckSendGrace: Duration = .seconds(2), + canStart: @escaping @MainActor (String) -> Bool = { _ in true }, hostDispatcher: PluginHostServiceDispatcher? = nil, endBackendProcesses: @escaping @MainActor (_ token: String, _ immediately: Bool) -> Void = { token, immediately in MacPluginBackendProcesses.end( @@ -131,6 +134,7 @@ final class MacPluginBackendSessions: PluginBackendRequesting, PluginBackendActi self.credentials = credentials self.prepareState = prepareState self.stuckSendGrace = stuckSendGrace + self.canStart = canStart self.endBackendProcesses = endBackendProcesses if let hostDispatcher { self.hostDispatcher = hostDispatcher @@ -213,7 +217,7 @@ final class MacPluginBackendSessions: PluginBackendRequesting, PluginBackendActi packages.filter { id, package in package.backendVersion >= 2 && package.activationEvents.contains(event) - && !disabledPluginIDs.contains(id) + && !disabledPluginIDs.contains(id) && canStart(id) && (owner == nil || owner == ModuleID("\(id).ui")) }.keys.sorted() } @@ -395,7 +399,7 @@ final class MacPluginBackendSessions: PluginBackendRequesting, PluginBackendActi /// exited is replaced, and so is one started with other setting values. private func session(for pluginID: String) async throws -> LanguageServerRuntimeSession { try Task.checkCancellation() - guard let package = packages[pluginID], !disabledPluginIDs.contains(pluginID) else { + guard let package = packages[pluginID], !disabledPluginIDs.contains(pluginID), canStart(pluginID) else { throw PluginFunctionFailure( code: "plugin.function.unavailable", message: L10n.string("This plugin has no backend that can run now.") @@ -497,6 +501,9 @@ final class MacPluginBackendSessions: PluginBackendRequesting, PluginBackendActi hostDispatcher.endSession(pluginID: pluginID) let sessionToken = hostDispatcher.beginSession(pluginID: pluginID, hostServices: hostServices) entry.hostServices = Set(hostServices) + session.onFunctionsChange = { [weak self] ids in + self?.editorActions?.updateFunctions(pluginID: pluginID, sessionID: sessionToken, ids: ids) + } session.onHostRequest = { [weak session] request in hostDispatcher.handle(request, pluginID: pluginID, sessionID: sessionToken) { outcome in session?.respond(to: request.id, with: outcome) diff --git a/macos/Sources/Lithe/Platform/MacOS/Plugins/MacPluginEditorLanguages.swift b/macos/Sources/Lithe/Platform/MacOS/Plugins/MacPluginEditorLanguages.swift new file mode 100644 index 0000000000..9ef406a313 --- /dev/null +++ b/macos/Sources/Lithe/Platform/MacOS/Plugins/MacPluginEditorLanguages.swift @@ -0,0 +1,137 @@ +import Combine +import Foundation +import LitheApplicationKernel +import LitheCoreContracts +import LitheModuleAPI + +// Note: 插件语法高亮与运行标记的决策见 .agents/notes/implemented/architecture/2026-10-31-plugin-editor-extension-apis.md + +/// Collects independent static editor resources of enabled plugins. +/// +/// Grammar files are read from the installed package, read-only and only +/// inside it; Rust Core validates them. Nothing is written: decoded grammars +/// live in memory for this launch, keyed by the file's path, size and date, +/// so an updated package is read again. +@MainActor +final class MacPluginEditorLanguages: PluginEditorLanguageProviding { + /// Largest grammar file Rust Core accepts (`MAX_GRAMMAR_BYTES`). + static let maximumGrammarBytes = 256 * 1024 + + private let launchRegistered: [InstalledPluginPackage] + private let isModuleUsable: @MainActor (ModuleID) -> Bool + private let livePackages: @MainActor () -> [InstalledPluginPackage] + private let decoder: any DeclarativeEditorContributionDecoding + private let log: @MainActor (_ message: String, _ fields: [String: String]) -> Void + private let changeSubject = PassthroughSubject() + private var subscriptions: Set = [] + /// Decoded languages by file identity; nil records a refused grammar so + /// it is reported once. + private var decoded: [String: ToolingJSONValue?] = [:] + + var changes: AnyPublisher { changeSubject.eraseToAnyPublisher() } + + /// The runtime owns this observer; the callback must not own the runtime. + @discardableResult + static func observeModuleChanges( + on runtime: ModuleRuntime, + changed: @escaping @MainActor () -> Void, + refreshBackends: @escaping @MainActor (ModuleRuntime) -> Void + ) -> UUID { + runtime.observeEvents { [weak runtime] event in + guard event.name == ModuleEvent.stateChangedName, let runtime else { return } + changed() + refreshBackends(runtime) + } + } + + /// - Parameters: + /// - launchRegistered: Plugins in the module graph since launch. Their editor resources follow the grammars module. + /// - livePackages: The enabled plugins of the live registry. + /// - triggers: Live registry and module state changes. + init( + launchRegistered: [InstalledPluginPackage], + isModuleUsable: @escaping @MainActor (ModuleID) -> Bool, + livePackages: @escaping @MainActor () -> [InstalledPluginPackage], + decoder: any DeclarativeEditorContributionDecoding, + triggers: [AnyPublisher], + log: @escaping @MainActor (_ message: String, _ fields: [String: String]) -> Void + ) { + self.launchRegistered = launchRegistered.filter { + $0.descriptor.languages.contains { $0.hasEditorResources } + } + self.isModuleUsable = isModuleUsable + self.livePackages = livePackages + self.decoder = decoder + self.log = log + for trigger in triggers { + trigger.sink { [weak self] in self?.changeSubject.send() }.store(in: &subscriptions) + } + } + + func current() -> PluginEditorLanguageSet { + var set = PluginEditorLanguageSet() + var seen: Set = [] + let grammarPackages = (launchRegistered.filter { + isModuleUsable(.grammarsExtension($0.descriptor.id.rawValue)) + } + livePackages()).sorted { $0.descriptor.id.rawValue < $1.descriptor.id.rawValue } + for package in grammarPackages { + for language in package.descriptor.languages where language.hasEditorResources { + // Static editor contributions may coexist with a domain owner. + // First enabled plugin ID wins deterministically for presentation. + guard seen.insert(language.id).inserted, let value = grammar(of: language, in: package) else { continue } + set.languages.append(value) + } + } + return set + } + + private func grammar(of language: DeclarativePluginLanguage, in package: InstalledPluginPackage) -> ToolingJSONValue? { + let fields = ["plugin": package.descriptor.id.rawValue, "language": language.id] + guard let path = language.grammarPath else { + return try? decoder.decodeGrammar(manifest: package.descriptor.normalizedManifest, languageID: language.id, grammar: "") + } + guard let url = Self.packageFile(path, in: package.packageURL) else { + log("plugin grammar is outside its package", fields) + return nil + } + guard (try? url.resourceValues(forKeys: [.isRegularFileKey]).isRegularFile) == true else { + log("plugin grammar is not a regular file", fields) + return nil + } + let attributes = try? FileManager.default.attributesOfItem(atPath: url.path) + let size = (attributes?[.size] as? NSNumber)?.intValue ?? -1 + let date = (attributes?[.modificationDate] as? Date)?.timeIntervalSince1970 ?? 0 + let key = "\(url.path)|\(size)|\(date)|\(language.id)|\(package.descriptor.normalizedManifest.base64EncodedString())" + if let cached = decoded[key] { return cached } + let value: ToolingJSONValue? + do { + guard size >= 0, size <= Self.maximumGrammarBytes else { + throw DeclarativePluginRejection(code: "plugin.grammar.invalid", + message: "The grammar file is missing or larger than 256 KiB.", field: "grammar.path") + } + let handle = try FileHandle(forReadingFrom: url) + defer { try? handle.close() } + let bytes = try handle.read(upToCount: Self.maximumGrammarBytes + 1) ?? Data() + guard bytes.count <= Self.maximumGrammarBytes, + let text = String(data: bytes, encoding: .utf8) else { + throw DeclarativePluginRejection(code: "plugin.grammar.invalid", + message: "The grammar file is not UTF-8.", field: "grammar.path") + } + value = try decoder.decodeGrammar(manifest: package.descriptor.normalizedManifest, + languageID: language.id, grammar: text) + } catch { + log("plugin grammar refused", fields.merging(["error": error.localizedDescription]) { _, new in new }) + value = nil + } + decoded[key] = .some(value) + return value + } + + /// `path` inside the package, after resolving links; nil when it leaves it. + static func packageFile(_ path: String, in packageURL: URL) -> URL? { + let root = packageURL.standardizedFileURL.resolvingSymlinksInPath().path + let file = packageURL.appendingPathComponent(path).standardizedFileURL.resolvingSymlinksInPath() + let prefix = root.hasSuffix("/") ? root : root + "/" + return file.path.hasPrefix(prefix) ? file : nil + } +} diff --git a/macos/Sources/Lithe/Views/App/PluginMarketplaceView.swift b/macos/Sources/Lithe/Views/App/PluginMarketplaceView.swift index a724bba107..5595b57405 100644 --- a/macos/Sources/Lithe/Views/App/PluginMarketplaceView.swift +++ b/macos/Sources/Lithe/Views/App/PluginMarketplaceView.swift @@ -756,6 +756,8 @@ enum PluginMarketplacePresentation { switch permission { case "languageServer.launch": PluginMarketplacePresentation.localized("Start a language server when you open files of its language", locale: locale) + case "editor.actions": + L10n.string("Add clickable actions beside document text") case "process.run": PluginMarketplacePresentation.localized("Run your files", locale: locale) case "ui.contribute": diff --git a/macos/Sources/LitheApplicationKernel/Plugins/PluginManifestValidator.swift b/macos/Sources/LitheApplicationKernel/Plugins/PluginManifestValidator.swift index f2a84bc4bb..704f14335b 100644 --- a/macos/Sources/LitheApplicationKernel/Plugins/PluginManifestValidator.swift +++ b/macos/Sources/LitheApplicationKernel/Plugins/PluginManifestValidator.swift @@ -167,7 +167,7 @@ public struct ValidatedPluginCatalog: Sendable { // another package owns; it never takes that ownership over. // Plugins are visited in ID order, so it waits until every // owning declaration is in, whichever ID sorts first. - if support.isDebugOnly { + if support.isDebugOnly || support.isEditorOnly { debugOnlySupports.append((plugin.id, support)) continue } diff --git a/macos/Sources/LitheCoreContracts/Plugins/DeclarativePluginContracts.swift b/macos/Sources/LitheCoreContracts/Plugins/DeclarativePluginContracts.swift index 590016a5b9..e67a02ddc4 100644 --- a/macos/Sources/LitheCoreContracts/Plugins/DeclarativePluginContracts.swift +++ b/macos/Sources/LitheCoreContracts/Plugins/DeclarativePluginContracts.swift @@ -319,16 +319,20 @@ public struct DeclarativePluginSetting: Equatable, Identifiable, Sendable { public struct DeclarativePluginLanguage: Equatable, Hashable, Sendable { public let id: String public let displayName: String + /// Package-relative grammar file (`languages` 2). The host reads it from + /// the installed package and has Rust Core validate it. + public let grammarPath: String? + public let hasEditorResources: Bool - public init(id: String, displayName: String) { + public init(id: String, displayName: String, grammarPath: String? = nil, hasEditorResources: Bool = false) { self.id = id self.displayName = displayName + self.grammarPath = grammarPath + self.hasEditorResources = hasEditorResources || grammarPath != nil } } -/// A button a plugin adds to a settings page. The host draws it and invokes -/// the named plugin function of the same plugin; what it does is the -/// plugin's business. +/// A settings button binds a function of the same plugin; its business stays private. public struct DeclarativePluginSettingAction: Equatable, Identifiable, Sendable { public let id: String public let title: String @@ -714,7 +718,10 @@ public struct DeclarativePluginDescriptor: Equatable, Sendable { declaresBackend = decoded.backend != nil settings = try decoded.settings.map { try $0.declaration() } settingActions = decoded.settingActions.map { $0.declaration() } - languages = decoded.languages.map { DeclarativePluginLanguage(id: $0.id, displayName: $0.displayName) } + languages = decoded.languages.map { + DeclarativePluginLanguage(id: $0.id, displayName: $0.displayName, grammarPath: $0.grammar?.path, + hasEditorResources: $0.grammar != nil || $0.configuration != nil) + } permissions = decoded.permissions activationEvents = decoded.activationEvents self.normalizedManifest = normalizedManifest @@ -786,6 +793,16 @@ public struct DeclarativePluginDescriptor: Equatable, Sendable { ) )) } + if languages.contains(where: \.hasEditorResources) { + // Enablement only: the editor applies the grammars while it is on. + modules.append(PluginModuleDeclaration( + manifest: LanguageExtensionModuleManifests.grammars( + pluginID: decoded.id, + displayName: decoded.displayName, + enabledByDefault: enabledByDefault + ) + )) + } if !projectGenerators.isEmpty { modules.append(PluginModuleDeclaration( manifest: LanguageExtensionModuleManifests.projectGenerators( @@ -804,6 +821,13 @@ public struct DeclarativePluginDescriptor: Equatable, Sendable { contributions: ui.contributions )) } + if decoded.backend != nil && decoded.ui == nil { + modules.append(PluginModuleDeclaration(manifest: ModuleManifest( + id: .backendExtension(decoded.id), displayName: decoded.displayName, + scope: .application, defaultState: enabledByDefault ? .enabled : .disabled, + activationPolicy: .onDemand + ))) + } let debuggedLanguages = Set(debugAdapters.flatMap(\.languageIDs)) let languageSupports = decoded.languages.map { language in let execution = executionByLanguage[language.id] @@ -833,6 +857,8 @@ public struct DeclarativePluginDescriptor: Equatable, Sendable { debugModuleID: debuggedLanguages.contains(language.id) ? .debugAdaptersExtension(decoded.id) : nil, + editorModuleID: language.grammar != nil || language.configuration != nil + ? .grammarsExtension(decoded.id) : nil, hostCapabilities: hostCapabilitiesByLanguage[language.id] ?? [] ) } @@ -858,16 +884,18 @@ public struct DeclarativePluginDescriptor: Equatable, Sendable { } /// Whether the plugin can take effect in a running session. That holds when - /// debug adapters are its only contribution: the host reads them on demand - /// when a debug session starts, so the module graph, the language-server and - /// run/test modules, backend processes and UI composition built at launch do - /// not change. Anything else waits for the next launch. + /// debug adapters and language grammars are its only contributions: the + /// host reads adapters on demand when a debug session starts and hands + /// grammars to open editors when the registry changes, so the module graph, + /// the language-server and run/test modules, backend processes and UI + /// composition built at launch do not change. Anything else waits for the + /// next launch. public var canActivateWithoutRestart: Bool { let modules = pluginManifest.modules - return !debugAdapters.isEmpty + let live: Set = [.debugAdaptersExtension(id.rawValue), .grammarsExtension(id.rawValue)] + return !modules.isEmpty && !declaresBackend - && modules.map(\.manifest.id) == [.debugAdaptersExtension(id.rawValue)] - && modules.allSatisfy { $0.contributions.isEmpty } + && modules.allSatisfy { live.contains($0.manifest.id) && $0.contributions.isEmpty } } private static func launch(_ launch: NormalizedManifest.Launch) -> DeclarativeLanguageServer.Launch { @@ -918,6 +946,12 @@ public struct DeclarativePluginDescriptor: Equatable, Sendable { let fileNames: [String] let projectFileNames: [String] let dependencies: Dependencies? + let grammar: Grammar? + let configuration: ToolingJSONValue? + + struct Grammar: Decodable { + let path: String + } init(from decoder: Decoder) throws { let values = try decoder.container(keyedBy: CodingKeys.self) @@ -927,10 +961,12 @@ public struct DeclarativePluginDescriptor: Equatable, Sendable { fileNames = try values.decodeIfPresent([String].self, forKey: .fileNames) ?? [] projectFileNames = try values.decodeIfPresent([String].self, forKey: .projectFileNames) ?? [] dependencies = try values.decodeIfPresent(Dependencies.self, forKey: .dependencies) + grammar = try values.decodeIfPresent(Grammar.self, forKey: .grammar) + configuration = try values.decodeIfPresent(ToolingJSONValue.self, forKey: .configuration) } private enum CodingKeys: String, CodingKey { - case id, displayName, fileExtensions, fileNames, projectFileNames, dependencies + case id, displayName, fileExtensions, fileNames, projectFileNames, dependencies, grammar, configuration } } struct Launch: Decodable { @@ -1506,8 +1542,13 @@ public struct ResolvedPluginSetting: Equatable, Sendable { } } -/// Rust Core's view of plugin settings: the values a launch would use and the -/// workspace configuration an `immediate` change sends to a running server. +/// Core validates package-owned editor resources; the host only reads files. +public protocol DeclarativeEditorContributionDecoding: Sendable { + /// The registered file type, optional grammar, and editor configuration. + func decodeGrammar(manifest: Data, languageID: String, grammar: String) throws -> ToolingJSONValue +} + +/// Settings values for launches and immediate workspace configuration changes. public protocol DeclarativePluginSettingsResolving: Sendable { func resolveSettings( manifest: Data, diff --git a/macos/Sources/LitheCoreContracts/Plugins/PluginEditorActionContracts.swift b/macos/Sources/LitheCoreContracts/Plugins/PluginEditorActionContracts.swift new file mode 100644 index 0000000000..416abaa851 --- /dev/null +++ b/macos/Sources/LitheCoreContracts/Plugins/PluginEditorActionContracts.swift @@ -0,0 +1,27 @@ +import Foundation + +/// Core validates independent editor presentation without interpreting plugin business data. +public protocol PluginEditorActionDecoding: Sendable { + func decodeEditorActions(kind: String, value: ToolingJSONValue, text: String) throws -> ToolingJSONValue +} + +/// One plugin-private action, anchored in a one-based UTF-16 document range. +public struct PluginEditorAction: Equatable, Decodable, Sendable { + public struct Position: Equatable, Decodable, Sendable { + public let line: Int + public let column: Int + } + public struct Range: Equatable, Decodable, Sendable { + public let start: Position + public let end: Position + } + public struct Invocation: Equatable, Decodable, Sendable { + public let functionID: String + public let params: ToolingJSONValue + } + public let id: String + public let range: Range + public let title: String + public let icon: String + public let invoke: Invocation +} diff --git a/macos/Sources/LitheModuleAPI/Catalog/BuiltInModuleCatalog.swift b/macos/Sources/LitheModuleAPI/Catalog/BuiltInModuleCatalog.swift index 343108bac0..95eee7b464 100644 --- a/macos/Sources/LitheModuleAPI/Catalog/BuiltInModuleCatalog.swift +++ b/macos/Sources/LitheModuleAPI/Catalog/BuiltInModuleCatalog.swift @@ -372,6 +372,24 @@ public enum LanguageExtensionModuleManifests { ) } + /// One module for all language grammars of a plugin (`languages` 2). It + /// owns no process: while it is enabled the editor highlights the + /// plugin's languages with their grammars. + public static func grammars( + pluginID: String, + displayName: String, + enabledByDefault: Bool = false + ) -> ModuleManifest { + ModuleManifest( + id: .grammarsExtension(pluginID), + displayName: displayName, + scope: .workspace, + defaultState: enabledByDefault ? .enabled : .disabled, + activationPolicy: .onDemand, + dependencies: [.module(.workspace)] + ) + } + /// One module for all project generators of a plugin. The New Project /// window runs without a workspace, so the module is application-scoped /// and owns no process: Core plans and the host creates the project. diff --git a/macos/Sources/LitheModuleAPI/Lifecycle/ModuleTypes.swift b/macos/Sources/LitheModuleAPI/Lifecycle/ModuleTypes.swift index 21c3fbeb43..d049041dab 100644 --- a/macos/Sources/LitheModuleAPI/Lifecycle/ModuleTypes.swift +++ b/macos/Sources/LitheModuleAPI/Lifecycle/ModuleTypes.swift @@ -319,6 +319,17 @@ public extension ModuleID { ModuleID("\(pluginID).debug-adapters") } + /// Enablement for a standalone tool backend with no UI/domain module. + static func backendExtension(_ pluginID: String) -> ModuleID { + ModuleID("\(pluginID).backend") + } + + /// The language grammars one declarative plugin declares, enabled + /// together. Nothing runs while it is enabled; it only gates highlighting. + static func grammarsExtension(_ pluginID: String) -> ModuleID { + ModuleID("\(pluginID).grammars") + } + /// The New Project entries one declarative plugin declares, enabled /// together. Nothing runs while it is enabled; it only gates the entries. static func projectGeneratorsExtension(_ pluginID: String) -> ModuleID { diff --git a/macos/Sources/LitheModuleAPI/Plugins/PluginTypes.swift b/macos/Sources/LitheModuleAPI/Plugins/PluginTypes.swift index 3bed98a4c6..7ac2b2ed1a 100644 --- a/macos/Sources/LitheModuleAPI/Plugins/PluginTypes.swift +++ b/macos/Sources/LitheModuleAPI/Plugins/PluginTypes.swift @@ -353,7 +353,7 @@ public extension Sequence where Element == LanguageSupportDeclaration { /// A debug-only declaration adds a debugger to a language another owner /// serves, so it never takes the host's run or test features away. func languageIDs(requiringExtensionFor capability: LanguageHostCapability) -> Set { - Set(lazy.filter { !$0.isDebugOnly && !$0.hostCapabilities.contains(capability) }.map(\.id)) + Set(lazy.filter { !$0.isDebugOnly && !$0.isEditorOnly && !$0.hostCapabilities.contains(capability) }.map(\.id)) } } @@ -371,6 +371,8 @@ public struct LanguageSupportDeclaration: Equatable, Codable, Sendable { public let executionModuleID: ModuleID? public let testingModuleID: ModuleID? public let debugModuleID: ModuleID? + /// Static editor resources; no language server or execution ownership. + public let editorModuleID: ModuleID? /// Features the host's own implementation provides for this language, as /// declared by the plugin's host integration. Never overlaps with a /// capability one of the modules above provides. @@ -388,6 +390,7 @@ public struct LanguageSupportDeclaration: Equatable, Codable, Sendable { executionModuleID: ModuleID? = nil, testingModuleID: ModuleID? = nil, debugModuleID: ModuleID? = nil, + editorModuleID: ModuleID? = nil, hostCapabilities: Set = [] ) { self.id = id @@ -401,6 +404,7 @@ public struct LanguageSupportDeclaration: Equatable, Codable, Sendable { self.executionModuleID = executionModuleID self.testingModuleID = testingModuleID self.debugModuleID = debugModuleID + self.editorModuleID = editorModuleID self.hostCapabilities = hostCapabilities } @@ -414,15 +418,21 @@ public struct LanguageSupportDeclaration: Equatable, Codable, Sendable { && hostCapabilities.isEmpty } + /// A presentation-only contribution must not claim a language's domain ownership. + public var isEditorOnly: Bool { + editorModuleID != nil && languageServerModuleID == nil && executionModuleID == nil + && testingModuleID == nil && debugModuleID == nil && hostCapabilities.isEmpty + } + public var moduleIDs: [ModuleID] { - [languageServerModuleID, executionModuleID, testingModuleID, debugModuleID].compactMap { $0 } + [languageServerModuleID, executionModuleID, testingModuleID, debugModuleID, editorModuleID].compactMap { $0 } } private enum CodingKeys: String, CodingKey { case id, displayName, fileExtensions, fileNames, projectFileNames case dependencies, virtualDocumentSchemes case languageServerModuleID, executionModuleID, testingModuleID, debugModuleID - case hostCapabilities + case editorModuleID, hostCapabilities } public init(from decoder: Decoder) throws { @@ -439,6 +449,7 @@ public struct LanguageSupportDeclaration: Equatable, Codable, Sendable { executionModuleID: try values.decodeIfPresent(ModuleID.self, forKey: .executionModuleID), testingModuleID: try values.decodeIfPresent(ModuleID.self, forKey: .testingModuleID), debugModuleID: try values.decodeIfPresent(ModuleID.self, forKey: .debugModuleID), + editorModuleID: try values.decodeIfPresent(ModuleID.self, forKey: .editorModuleID), hostCapabilities: try values.decodeIfPresent( Set.self, forKey: .hostCapabilities @@ -514,7 +525,7 @@ public struct PluginManifest: Equatable, Codable, Sendable { "buildSystems": [1, 2], "debugAdapters": [1, 2], "executableResolution": [1], "executionProviders": [1], "languageServers": [1, 2], - "languages": [1], + "languages": [1, 2], "projectGenerators": [1], "serverProcess": [1], "settings": [1, 2], diff --git a/macos/Tests/LitheTests/MonacoWorkbenchSessionLifetimeTests.swift b/macos/Tests/LitheTests/MonacoWorkbenchSessionLifetimeTests.swift index 0f1d8d7e29..7a119413c3 100644 --- a/macos/Tests/LitheTests/MonacoWorkbenchSessionLifetimeTests.swift +++ b/macos/Tests/LitheTests/MonacoWorkbenchSessionLifetimeTests.swift @@ -69,7 +69,7 @@ struct MonacoWorkbenchSessionLifetimeTests { @Test func readOnlyPreviewRejectsRunActionsAtTheNativeBoundary() { let main = MonacoWorkbenchSession.forModel(UUID()) let preview = MonacoWorkbenchSession.forModel(UUID(), documentID: UUID(), previewID: UUID()) - for message in ["javaRunMarkerAction", "format", "rename", "executeCodeAction", "setBlameVisibility"] { + for message in ["javaRunMarkerAction", "pluginEditorAction", "format", "rename", "executeCodeAction", "setBlameVisibility"] { #expect(main.allowsMessage(message)) #expect(!preview.allowsMessage(message)) } diff --git a/macos/Tests/LitheTests/PluginEditorActionTests.swift b/macos/Tests/LitheTests/PluginEditorActionTests.swift new file mode 100644 index 0000000000..4c557f54fb --- /dev/null +++ b/macos/Tests/LitheTests/PluginEditorActionTests.swift @@ -0,0 +1,97 @@ +import Foundation +import LitheCoreContracts +import Testing +@testable import Lithe + +@MainActor +struct PluginEditorActionTests { + @Test + func collectionUsesOneTotalBudgetRatherThanRestartingItForEachRegistration() { + #expect(PluginEditorActionCollectionBudget.remaining(after: .zero) == .seconds(8)) + #expect(PluginEditorActionCollectionBudget.remaining(after: .seconds(6)) == .seconds(2)) + #expect(PluginEditorActionCollectionBudget.remaining(after: .seconds(8)) == nil) + #expect(PluginEditorActionCollectionBudget.remaining(after: .seconds(12)) == nil) + } + + @Test + func registrationsAreIndependentScopedAndDisposable() async throws { + let fixture = PluginHostFixture() + defer { fixture.tearDown() } + let contexts = PluginWorkspaceContexts() + let context = contexts.open(owner: fixture.window, rootURL: PluginHostFixture.workspaceURL, remote: nil) + let service = PluginEditorActionHostService(contexts: contexts, decoder: DeclarativePluginTestSupport.operations) + let dispatcher = PluginHostServiceDispatcher(contexts: contexts) + dispatcher.register(service) + let session = dispatcher.beginSession(pluginID: "tool", hostServices: ["lithe/host/editor/registerActions"]) + defer { dispatcher.endSession(pluginID: "tool") } + service.updateFunctions(pluginID: "tool", sessionID: session, ids: ["actions.collect", "requests.send", "queries.execute"]) + let result = try await dispatcher.dispatch(request(context: context, function: "actions.collect"), pluginID: "tool").get() + let registration = try #require(service.registrations(context: context.reference, filename: "a.HTTP").first) + #expect(service.contains(registration, functionID: "requests.send")) + #expect(service.contains(registration, functionID: "queries.execute")) + #expect(!service.contains(registration, functionID: "anotherPlugin.execute")) + #expect(service.registrations(context: context.reference, filename: "a.txt").isEmpty) + service.updateFunctions(pluginID: "tool", sessionID: session, ids: ["actions.collect", "requests.send", "queries.execute", "extra.function"]) + #expect(service.contains(registration), "adding a function must not withdraw unrelated bindings") + guard case .object(let value) = result, case .string(let subscription)? = value["subscriptionID"] else { + Issue.record("missing subscription"); return + } + dispatcher.subscriptions.dispose(pluginID: "tool", subscriptionID: subscription) + #expect(!service.contains(registration)) + } + + @Test + func withdrawalAndSessionReplacementNeverResurrectOldLeases() async throws { + let fixture = PluginHostFixture() + defer { fixture.tearDown() } + let contexts = PluginWorkspaceContexts() + let context = contexts.open(owner: fixture.window, rootURL: PluginHostFixture.workspaceURL, remote: nil) + let service = PluginEditorActionHostService(contexts: contexts, decoder: DeclarativePluginTestSupport.operations) + let dispatcher = PluginHostServiceDispatcher(contexts: contexts) + dispatcher.register(service) + let session = dispatcher.beginSession(pluginID: "tool", hostServices: ["lithe/host/editor/registerActions"]) + defer { dispatcher.endSession(pluginID: "tool") } + service.updateFunctions(pluginID: "tool", sessionID: session, ids: ["actions.collect"]) + _ = try await dispatcher.dispatch(request(context: context, function: "actions.collect"), pluginID: "tool").get() + let old = try #require(service.registrations(context: context.reference, filename: "a.http").first) + service.updateFunctions(pluginID: "tool", sessionID: session, ids: []) + service.updateFunctions(pluginID: "tool", sessionID: session, ids: ["actions.collect"]) + #expect(!service.contains(old)) + _ = try await dispatcher.dispatch(request(context: context, function: "actions.collect"), pluginID: "tool").get() + let current = try #require(service.registrations(context: context.reference, filename: "a.http").first) + #expect(current.lease != old.lease) + contexts.close(owner: fixture.window) + #expect(!service.contains(current)) + #expect(dispatcher.subscriptions.count(pluginID: "tool") == 0) + } + + @Test + func missingPermissionAndUnknownFunctionDoNotCreateBindings() async throws { + let fixture = PluginHostFixture() + defer { fixture.tearDown() } + let contexts = PluginWorkspaceContexts() + let context = contexts.open(owner: fixture.window, rootURL: PluginHostFixture.workspaceURL, remote: nil) + let service = PluginEditorActionHostService(contexts: contexts, decoder: DeclarativePluginTestSupport.operations) + let dispatcher = PluginHostServiceDispatcher(contexts: contexts) + dispatcher.register(service) + dispatcher.beginSession(pluginID: "tool", hostServices: []) + defer { dispatcher.endSession(pluginID: "tool") } + if case .failure(let error) = await dispatcher.dispatch(request(context: context, function: "actions.collect"), pluginID: "tool") { + #expect(error.code == "plugin.host.permissionDenied") + } else { Issue.record("permission must be denied") } + let session = dispatcher.beginSession(pluginID: "tool", hostServices: ["lithe/host/editor/registerActions"]) + service.updateFunctions(pluginID: "tool", sessionID: session, ids: []) + if case .failure(let error) = await dispatcher.dispatch(request(context: context, function: "actions.collect"), pluginID: "tool") { + #expect(error.code == "plugin.host.invalidParams") + } else { Issue.record("unknown function must be denied") } + #expect(service.registrations(context: context.reference, filename: "a.http").isEmpty) + } + + private func request(context: PluginWorkspaceContext, function: String) -> PluginHostRequest { + PluginHostRequest(id: "registration", method: "lithe/host/editor/registerActions", service: "editor", params: .object([ + "context": .object(["contextID": .string(context.contextID), "generation": .integer(context.generation)]), + "id": .string("actions"), "function": .string(function), + "selector": .object(["fileExtensions": .array([.string("http")])]), + ])) + } +} diff --git a/macos/Tests/LitheTests/PluginEditorLanguagesTests.swift b/macos/Tests/LitheTests/PluginEditorLanguagesTests.swift new file mode 100644 index 0000000000..c995c489bb --- /dev/null +++ b/macos/Tests/LitheTests/PluginEditorLanguagesTests.swift @@ -0,0 +1,205 @@ +import Combine +import Foundation +@testable import Lithe +import LitheCoreContracts +import LitheModuleAPI +import LitheApplicationKernel +import Testing + +/// Static editor resources are accepted without language-server or Run providers. +@Suite("Plugin editor languages") +@MainActor +struct PluginEditorLanguagesTests { + private static let fixtures = DeclarativePluginTestSupport.repositoryRoot + .appendingPathComponent("shared/contracts/plugins/v1/fixtures", isDirectory: true) + + @Test + func pluginModuleObservationDeliversChangesWithoutRetainingItsRuntime() { + weak var released: ModuleRuntime? + var changes = 0, backendRefreshes = 0 + do { + let runtime = ModuleRuntime() + released = runtime + MacPluginEditorLanguages.observeModuleChanges(on: runtime, changed: { changes += 1 }) { observed in + #expect(observed === released) + backendRefreshes += 1 + } + runtime.publish(ModuleEvent(source: .workspace, name: "unrelated")) + #expect(changes == 0 && backendRefreshes == 0) + runtime.publish(ModuleEvent(source: .workspace, name: ModuleEvent.stateChangedName)) + #expect(changes == 1 && backendRefreshes == 1) + } + #expect(released == nil, "The plugin state observer must not own its event source") + } + + @Test + func orderedGrammarSourceSurvivesCoreAndSwiftDictionaryRoundtrips() throws { + let descriptor = try Self.descriptor("language-grammar") + let source = #"{"tokenizer":{"comment":[[".*","comment"]],"root":[["[A-Z]+",{"cases":{"GET":"keyword","[A-Z]+":"string","@default":"identifier"}}]]}}"# + let decoded = try DeclarativePluginTestSupport.operations.decodeGrammar( + manifest: descriptor.normalizedManifest, languageID: "http", grammar: source) + let encoder = JSONEncoder() + encoder.outputFormatting = .sortedKeys + let payload = try JSONDecoder().decode(ToolingJSONValue.self, from: encoder.encode(decoded)) + guard case .object(let language) = payload, case .object(let grammar)? = language["grammar"] else { + Issue.record("missing grammar payload"); return + } + #expect(grammar["source"] == .string(source)) + #expect(grammar["monarch"] == nil) + } + + @Test + func aGrammarOnlyPluginActivatesWithoutARestart() throws { + let descriptor = try Self.descriptor("language-grammar") + #expect(descriptor.languages.map(\.grammarPath) == ["grammars/http.monarch.json"]) + #expect(descriptor.pluginManifest.modules.map(\.manifest.id) == [.grammarsExtension(descriptor.id.rawValue)]) + #expect(descriptor.canActivateWithoutRestart) + } + + @Test + func grammarContributionsPassTheRealCatalogValidation() throws { + let descriptor = try Self.descriptor("language-grammar") + let catalog = try ValidatedPluginCatalog(manifests: BuiltInPluginCatalog.manifests + [descriptor.pluginManifest], + hostVersion: BuiltInPluginCatalog.hostVersion) + #expect(catalog.languageSupport(for: URL(fileURLWithPath: "/workspace/test.http")) != nil) + #expect(descriptor.pluginManifest.languageSupports?.first?.isEditorOnly == true) + #expect(descriptor.pluginManifest.languageSupports?.languageIDs(requiringExtensionFor: .run).isEmpty == true) + } + + @Test + func aStandaloneToolBackendPassesTheCatalogWithoutFakeUIOrLSP() throws { + let descriptor = try Self.descriptor("editor-actions") + #expect(descriptor.pluginManifest.modules.map(\.manifest.id) == [.backendExtension(descriptor.id.rawValue)]) + #expect(descriptor.languages.isEmpty) + #expect(descriptor.languageServers.isEmpty) + _ = try ValidatedPluginCatalog(manifests: BuiltInPluginCatalog.manifests + [descriptor.pluginManifest], + hostVersion: BuiltInPluginCatalog.hostVersion) + } + + @Test + func configurationOnlyNeedsNoBackendAndDecodesWithoutAFile() throws { + let fixture = try Fixture() + defer { fixture.cleanUp() } + var object = try #require(JSONSerialization.jsonObject(with: Data(contentsOf: + Self.fixtures.appendingPathComponent("language-grammar.plugin.json"))) as? [String: Any]) + var languages = try #require(object["languages"] as? [[String: Any]]) + languages[0]["grammar"] = nil + object["languages"] = languages + let descriptor = try DeclarativePluginTestSupport.operations.validate(manifest: JSONSerialization.data(withJSONObject: object)) + #expect(!descriptor.declaresBackend) + #expect(descriptor.canActivateWithoutRestart) + let decoded = try DeclarativePluginTestSupport.operations.decodeGrammar(manifest: descriptor.normalizedManifest, + languageID: "http", grammar: "") + guard case .object(let result) = decoded, case .object(let configuration)? = result["configuration"] else { + Issue.record("missing independent editor configuration"); return + } + #expect(result["grammar"] == .null) + #expect(configuration["lineComment"] == .string("#")) + } + + @Test + func liveGrammarsReachTheEditorAndLeaveWithThePlugin() throws { + let fixture = try Fixture() + defer { fixture.cleanUp() } + let package = try fixture.package("language-grammar") + var live = [package] + let languages = fixture.languages(livePackages: { live }) + let set = languages.current() + #expect(set.languages.count == 1) + guard case .object(let language) = try #require(set.languages.first), + case .object(let grammar) = try #require(language["grammar"]) else { + Issue.record("decoded language is not an object"); return + } + #expect(language["id"] == .string("http")) + #expect(grammar["kind"] == .string("monarch")) + let source = try String(contentsOf: Self.fixtures.appendingPathComponent("grammars/http.monarch.json"), encoding: .utf8) + #expect(grammar["source"] == .string(source)) + live = [] + #expect(languages.current() == PluginEditorLanguageSet()) + } + + @Test + func staticEditorResourcesFollowTheirOwnEnablement() throws { + let fixture = try Fixture() + defer { fixture.cleanUp() } + let package = try fixture.package("language-grammar") + var enabled = true + let languages = fixture.languages(launchRegistered: [package], isModuleUsable: { _ in enabled }) + #expect(languages.current().languages.count == 1) + enabled = false + #expect(languages.current().languages.isEmpty) + } + + @Test + func aGrammarOutsideItsPackageOrTooLargeIsRefusedOnce() throws { + let fixture = try Fixture() + defer { fixture.cleanUp() } + let package = try fixture.package("language-grammar") + let grammar = package.packageURL.appendingPathComponent("grammars/http.monarch.json") + try FileManager.default.removeItem(at: grammar) + let outside = fixture.root.appendingPathComponent("outside.json") + try Data("{}".utf8).write(to: outside) + try FileManager.default.createSymbolicLink(at: grammar, withDestinationURL: outside) + #expect(MacPluginEditorLanguages.packageFile("grammars/http.monarch.json", in: package.packageURL) == nil) + #expect(MacPluginEditorLanguages.packageFile("../outside.json", in: package.packageURL) == nil) + + var messages: [String] = [] + let languages = fixture.languages(livePackages: { [package] }, log: { message, _ in messages.append(message) }) + #expect(languages.current().languages.isEmpty) + try FileManager.default.removeItem(at: grammar) + try Data(repeating: 0x20, count: MacPluginEditorLanguages.maximumGrammarBytes + 1).write(to: grammar) + #expect(languages.current().languages.isEmpty) + #expect(languages.current().languages.isEmpty) + #expect(messages == ["plugin grammar is outside its package", "plugin grammar refused"]) + } + + private static func descriptor(_ name: String) throws -> DeclarativePluginDescriptor { + try DeclarativePluginTestSupport.operations.validate( + manifest: Data(contentsOf: fixtures.appendingPathComponent("\(name).plugin.json")) + ) + } + + @MainActor + private final class Fixture { + let root = FileManager.default.temporaryDirectory + .appendingPathComponent("PluginEditorLanguagesTests-\(UUID().uuidString)", isDirectory: true) + + init() throws { + try FileManager.default.createDirectory(at: root, withIntermediateDirectories: true) + } + + func package(_ name: String) throws -> InstalledPluginPackage { + let descriptor = try PluginEditorLanguagesTests.descriptor(name) + let packageURL = root.appendingPathComponent(name, isDirectory: true) + let grammars = packageURL.appendingPathComponent("grammars", isDirectory: true) + try FileManager.default.createDirectory(at: grammars, withIntermediateDirectories: true) + try FileManager.default.copyItem( + at: PluginEditorLanguagesTests.fixtures.appendingPathComponent("grammars/http.monarch.json"), + to: grammars.appendingPathComponent("http.monarch.json") + ) + return InstalledPluginPackage( + descriptor: descriptor, + installation: PluginInstallationRecord( + pluginID: descriptor.id, activeVersion: descriptor.pluginManifest.version, + origin: .marketplace, status: .installed + ), + packageURL: packageURL + ) + } + + @MainActor + func languages( + launchRegistered: [InstalledPluginPackage] = [], + isModuleUsable: @escaping @MainActor (ModuleID) -> Bool = { _ in true }, + livePackages: @escaping @MainActor () -> [InstalledPluginPackage] = { [] }, + log: @escaping @MainActor (String, [String: String]) -> Void = { _, _ in } + ) -> MacPluginEditorLanguages { + MacPluginEditorLanguages( + launchRegistered: launchRegistered, isModuleUsable: isModuleUsable, livePackages: livePackages, + decoder: DeclarativePluginTestSupport.operations, triggers: [], log: log + ) + } + + func cleanUp() { try? FileManager.default.removeItem(at: root) } + } +} diff --git a/rust/lithe-core/src/lsp/interface/plugin_function.rs b/rust/lithe-core/src/lsp/interface/plugin_function.rs index 6ca174a28a..3bdfb4caf5 100644 --- a/rust/lithe-core/src/lsp/interface/plugin_function.rs +++ b/rust/lithe-core/src/lsp/interface/plugin_function.rs @@ -100,6 +100,7 @@ pub(crate) const HOST_PERMISSIONS: &[&str] = &[ "workspace.search", "documents.read", "editor.edit", + "editor.actions", "editor.open", "preview.open", "browser.open", @@ -610,6 +611,13 @@ pub(crate) const HOST_METHODS: &[HostMethod] = &[ since: CONTEXT_VERSION, params: HostParams::Object, }, + HostMethod { + method: "lithe/host/editor/registerActions", + service: "editor", + permission: Some("editor.actions"), + since: CONTEXT_VERSION, + params: HostParams::Object, + }, HostMethod { method: "lithe/host/editor/getActive", service: "editor", diff --git a/rust/lithe-core/src/plugins/capabilities.rs b/rust/lithe-core/src/plugins/capabilities.rs index e1e56208c8..e17d2f2b1c 100644 --- a/rust/lithe-core/src/plugins/capabilities.rs +++ b/rust/lithe-core/src/plugins/capabilities.rs @@ -22,7 +22,8 @@ use std::collections::{BTreeMap, BTreeSet}; /// First plugin API level whose manifests declare capability versions. pub(crate) const CAPABILITIES_API_VERSION: u32 = 3; -/// `languages[]`: file types and project markers. +/// `languages[]`: file types and project markers. Version 2 adds a +/// declarative `grammar` and an editing `configuration`; see `super::grammar`. pub(crate) const LANGUAGES: &str = "languages"; /// `languageServers[]` apart from their launch fields. Version 2 adds /// `workspaceConfiguration`. @@ -80,7 +81,7 @@ pub const SUPPORTED_CAPABILITIES: &[(&str, &[u32])] = &[ (EXECUTION_PROVIDERS, &[1]), (EXECUTABLE_RESOLUTION, &[1]), (LANGUAGE_SERVERS, &[1, 2]), - (LANGUAGES, &[1]), + (LANGUAGES, &[1, 2]), (PACKAGE_TRUST, &[1]), (PROJECT_GENERATORS, &[1]), (SERVER_PROCESS, &[1, 2]), diff --git a/rust/lithe-core/src/plugins/declarative.rs b/rust/lithe-core/src/plugins/declarative.rs index 62770d46be..a13ab4897a 100644 --- a/rust/lithe-core/src/plugins/declarative.rs +++ b/rust/lithe-core/src/plugins/declarative.rs @@ -421,6 +421,13 @@ struct LanguageDeclaration { project_file_names: Vec, #[serde(default, skip_serializing_if = "Option::is_none")] dependencies: Option, + /// Syntax highlighting from a package file. `languages` 2; see + /// `super::grammar`. + #[serde(default, skip_serializing_if = "Option::is_none")] + grammar: Option, + /// Comment and bracket behavior of the editor. `languages` 2. + #[serde(default, skip_serializing_if = "Option::is_none")] + configuration: Option, } #[derive(Debug, Clone, Deserialize, Serialize)] @@ -857,9 +864,14 @@ impl DeclarativePluginManifest { return Err(invalid("languages", "The plugin declares no languages.")); } + let languages_version = self + .requires + .get(capabilities::LANGUAGES) + .copied() + .unwrap_or(1); let mut language_ids = BTreeSet::new(); for (index, language) in self.languages.iter_mut().enumerate() { - language.normalize(index)?; + language.normalize(index, languages_version)?; if !language_ids.insert(language.id.clone()) { return Err(invalid( format!("languages[{index}].id"), @@ -868,6 +880,17 @@ impl DeclarativePluginManifest { } } self.languages.sort_by(|left, right| left.id.cmp(&right.id)); + if languages_version >= super::grammar::GRAMMAR_LANGUAGES_VERSION + && !self + .languages + .iter() + .any(LanguageDeclaration::uses_version_2) + { + return Err(invalid( + "requires.languages", + "The declared languages version must be used: languages 2 adds grammar and configuration.", + )); + } let declared_settings = self.validate_settings()?; @@ -983,6 +1006,8 @@ impl DeclarativePluginManifest { && self.debug_adapters.is_empty() && self.project_generators.is_empty() && self.backend.is_none() + // A grammar alone is a complete highlighting plugin. + && !self.languages.iter().any(LanguageDeclaration::uses_version_2) { return Err(invalid( "languages", @@ -1406,6 +1431,20 @@ impl DeclarativePluginManifest { "Host API permissions require backend 2.", )); } + if self + .permissions + .iter() + .any(|permission| permission == "editor.actions") + && !self + .permissions + .iter() + .any(|permission| permission == "documents.read") + { + return Err(invalid( + "permissions", + "Editor actions require documents.read for live snapshots.", + )); + } for permission in required { if !self .permissions @@ -1750,8 +1789,29 @@ impl DeclarativePluginManifest { } impl LanguageDeclaration { - fn normalize(&mut self, index: usize) -> Validation<()> { + /// Whether the language uses a field `languages` 2 adds. + fn uses_version_2(&self) -> bool { + self.grammar.is_some() || self.configuration.is_some() + } + + fn normalize(&mut self, index: usize, capability_version: u32) -> Validation<()> { let field = format!("languages[{index}]"); + if self.uses_version_2() && capability_version < super::grammar::GRAMMAR_LANGUAGES_VERSION { + return Err(invalid( + if self.grammar.is_some() { + format!("{field}.grammar") + } else { + format!("{field}.configuration") + }, + "grammar and configuration require version 2 of the languages capability.", + )); + } + if let Some(grammar) = &self.grammar { + grammar.validate(&format!("{field}.grammar"))?; + } + if let Some(configuration) = &self.configuration { + configuration.validate(&format!("{field}.configuration"))?; + } let id = self.id.trim().to_lowercase(); if id.is_empty() || id != self.id @@ -4121,6 +4181,62 @@ pub fn workspace_configuration_command(payload: Value) -> Result Result { + let payload: GrammarPayload = decode_payload(payload, "plugins.declarative.decodeGrammar")?; + Ok(outcome(validate_manifest_value(payload.manifest).and_then( + |manifest| { + let language = manifest + .languages + .iter() + .find(|language| language.id == payload.language_id) + .filter(|language| language.grammar.is_some() || language.configuration.is_some()) + .ok_or_else(|| { + PluginRejection::new( + "plugin.grammar.unavailable", + format!( + "The plugin declares no grammar for {}.", + payload.language_id + ), + ) + })?; + let grammar = language + .grammar + .as_ref() + .map(|grammar| match grammar.kind { + super::grammar::GrammarKind::Monarch => { + // Monarch cases are ordered. Keep the validated source + // opaque across JSON maps and platform dictionaries. + super::grammar::decode_monarch(&payload.grammar) + .map(|_| json!({"kind": grammar.kind, "source": payload.grammar})) + } + }) + .transpose()?; + Ok(( + "language", + json!({ + "id": language.id, + "fileExtensions": language.file_extensions, + "fileNames": language.file_names, + "grammar": grammar, + "configuration": language.configuration, + }), + )) + }, + ))) +} + /// `plugins.declarative.checkRuntimeVersion`: decides whether a launch /// runtime's version output meets the plan's `minimumVersion`. pub fn check_runtime_version_command(payload: Value) -> Result { diff --git a/rust/lithe-core/src/plugins/editor_actions.rs b/rust/lithe-core/src/plugins/editor_actions.rs new file mode 100644 index 0000000000..5ea741b24b --- /dev/null +++ b/rust/lithe-core/src/plugins/editor_actions.rs @@ -0,0 +1,250 @@ +//! Independent editor actions for tool plugins, not language/build/run providers. +//! +//! Core validates presentation and opaque function bindings. Plugin parsers own +//! their business facts; hosts own document versions, session leases and clicks. + +use crate::lsp::interface::plugin_function::is_function_id; +use crate::protocol::{CoreError, ErrorCode}; +use serde::{Deserialize, Serialize}; +use serde_json::{json, Value}; +use std::collections::BTreeSet; + +const MAX_ACTIONS: usize = 1000; +const MAX_BYTES: usize = 1024 * 1024; + +#[derive(Debug, Deserialize, Serialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +struct Registration { + id: String, + function: String, + selector: Selector, +} + +#[derive(Debug, Deserialize, Serialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +struct Selector { + #[serde(default)] + file_extensions: Vec, + #[serde(default)] + file_names: Vec, +} + +#[derive(Debug, Deserialize, Serialize, PartialEq, Eq, PartialOrd, Ord)] +#[serde(deny_unknown_fields)] +struct Position { + line: usize, + column: usize, +} + +#[derive(Debug, Deserialize, Serialize)] +#[serde(deny_unknown_fields)] +struct Range { + start: Position, + end: Position, +} + +#[derive(Debug, Deserialize, Serialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +struct Invocation { + #[serde(rename = "functionID")] + function_id: String, + /// Plugin-private data: Core never interprets tool names or selectors. + #[serde(default = "empty_params")] + params: Value, +} + +fn empty_params() -> Value { + json!({}) +} + +#[derive(Debug, Deserialize, Serialize)] +#[serde(deny_unknown_fields)] +struct Action { + id: String, + range: Range, + title: String, + /// Presentation only; never identifies a Run/Test/Debug domain operation. + icon: String, + invoke: Invocation, +} + +#[derive(Debug, Deserialize)] +#[serde(deny_unknown_fields)] +struct ResultList { + actions: Vec, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +struct Payload { + kind: String, + value: Value, + #[serde(default)] + text: String, +} + +fn invalid(message: impl Into) -> CoreError { + CoreError::new(ErrorCode::InvalidRequest, message) +} + +fn identifier(value: &str) -> bool { + !value.is_empty() && value.len() <= 128 && !value.chars().any(char::is_control) +} + +fn registration(value: Value) -> Result { + let mut item: Registration = serde_json::from_value(value) + .map_err(|_| invalid("An editor action registration needs id, function and selector."))?; + if !identifier(&item.id) || !is_function_id(&item.function) { + return Err(invalid( + "Invalid editor action registration or function ID.", + )); + } + if item.selector.file_extensions.len() + item.selector.file_names.len() > 32 + || item.selector.file_extensions.is_empty() && item.selector.file_names.is_empty() + { + return Err(invalid( + "An editor selector has 1 to 32 file names/extensions.", + )); + } + for extension in &mut item.selector.file_extensions { + *extension = extension.trim_start_matches('.').to_lowercase(); + } + for name in &mut item.selector.file_names { + *name = name.to_lowercase(); + } + for name in item + .selector + .file_extensions + .iter() + .chain(&item.selector.file_names) + { + if !identifier(name) || name.contains(['/', '\\', '*', '?', ':']) { + return Err(invalid( + "An editor selector contains literal file names/extensions only.", + )); + } + } + item.selector.file_extensions.sort(); + item.selector.file_extensions.dedup(); + item.selector.file_names.sort(); + item.selector.file_names.dedup(); + serde_json::to_value(item).map_err(|_| invalid("Cannot encode editor registration.")) +} + +fn actions(value: Value, text: &str) -> Result { + let mut result: ResultList = serde_json::from_value(value) + .map_err(|_| invalid("An editor action result is { actions: [...] }."))?; + if result.actions.len() > MAX_ACTIONS || text.len() > 128 * 1024 { + return Err(invalid( + "The editor action result or document exceeds its limit.", + )); + } + let normalized = text.replace("\r\n", "\n").replace('\r', "\n"); + let lines: Vec<&str> = normalized.split('\n').collect(); + let valid_position = |position: &Position| { + lines + .get(position.line.wrapping_sub(1)) + .is_some_and(|line| { + let line = line.strip_suffix('\r').unwrap_or(line); + if position.column == 0 { + return false; + } + let target = position.column - 1; + let mut offset = 0; + for character in line.chars() { + if offset == target { + return true; + } + offset += character.len_utf16(); + } + offset == target + }) + }; + let mut ids = BTreeSet::new(); + for item in &result.actions { + if !identifier(&item.id) + || !ids.insert(&item.id) + || item.title.trim().is_empty() + || item.title.chars().count() > 200 + || item.title.chars().any(char::is_control) + || !["run", "run-all"].contains(&item.icon.as_str()) + || !is_function_id(&item.invoke.function_id) + || !item.invoke.params.is_object() + || item.range.start > item.range.end + || !valid_position(&item.range.start) + || !valid_position(&item.range.end) + { + return Err(invalid( + "Invalid editor action identity, range, presentation or invocation.", + )); + } + } + result + .actions + .sort_by(|a, b| a.range.start.cmp(&b.range.start).then(a.id.cmp(&b.id))); + serde_json::to_value(result.actions).map_err(|_| invalid("Cannot encode editor actions.")) +} + +/// Validates an independent registration (`kind: registration`) or a parser +/// result (`kind: actions`, with its exact text). No I/O or tool parsing occurs. +pub fn decode_command(payload: Value) -> Result { + let payload: Payload = serde_json::from_value(payload) + .map_err(|_| invalid("Invalid editor action validation payload."))?; + if payload.value.to_string().len() > MAX_BYTES { + return Err(invalid("Editor action data exceeds 1 MiB.")); + } + match payload.kind.as_str() { + "registration" => Ok(json!({"registration": registration(payload.value)?})), + "actions" => Ok(json!({"actions": actions(payload.value, &payload.text)?})), + _ => Err(invalid("Unknown editor action validation kind.")), + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn different_tools_share_registration_and_opaque_invocations() { + for (extension, function) in [("http", "requests.send"), ("sql", "queries.execute")] { + let registration = decode_command(json!({"kind":"registration", "value":{ + "id":"actions", "function":"actions.collect", "selector":{"fileExtensions":[extension]} + }})).unwrap(); + assert_eq!( + registration["registration"]["selector"]["fileExtensions"][0], + extension + ); + let result = decode_command(json!({"kind":"actions", "text":"hello\nworld", "value":{"actions":[{ + "id":"a", "range":{"start":{"line":1,"column":1},"end":{"line":2,"column":6}}, + "title":"Execute", "icon":"run", "invoke":{"functionID":function,"params":{"opaque":[1,2]}} + }]}})).unwrap(); + assert_eq!( + result["actions"][0]["invoke"]["params"]["opaque"], + json!([1, 2]) + ); + } + } + + #[test] + fn invalid_ranges_and_duplicate_ids_reject_the_whole_result() { + let item = json!({"id":"a","range":{"start":{"line":1,"column":1},"end":{"line":1,"column":3}}, + "title":"Execute","icon":"run","invoke":{"functionID":"action.execute","params":{}}}); + for (text, items) in [ + ("x", json!([item.clone()])), + ("abc", json!([item.clone(), item])), + ] { + assert!(decode_command( + json!({"kind":"actions","text":text,"value":{"actions":items}}) + ) + .is_err()); + } + // Column 2 splits an astral character's UTF-16 surrogate pair. + assert!( + decode_command(json!({"kind":"actions","text":"😀","value":{"actions":[{ + "id":"a","range":{"start":{"line":1,"column":2},"end":{"line":1,"column":3}}, + "title":"Execute","icon":"run","invoke":{"functionID":"action.execute"} + }]}})) + .is_err() + ); + } +} diff --git a/rust/lithe-core/src/plugins/grammar.rs b/rust/lithe-core/src/plugins/grammar.rs new file mode 100644 index 0000000000..0133e68c0e --- /dev/null +++ b/rust/lithe-core/src/plugins/grammar.rs @@ -0,0 +1,617 @@ +//! Declarative syntax highlighting of plugin languages, `languages` 2. +//! +//! A language may name a grammar file in its package and a small editing +//! configuration (comments and brackets). The grammar is data the editor's +//! tokenizer engine runs; `kind` names that engine, so a later version can add +//! another engine without changing what an existing grammar means. Version 2 +//! accepts only `monarch`, the tokenizer the shared Monaco editor already +//! runs for its built-in languages. Plugin definitions compile and tokenize +//! only in a separate, terminable worker; no extra regex engine is introduced. +//! +//! The host reads the file from the read-only package and passes its text to +//! `plugins.declarative.decodeGrammar`; Core never opens package files. Core +//! checks the Monarch subset below and bounds its size, so a hostile grammar +//! cannot write to the console, jump to a state that does not exist, or grow +//! without limit. Expanded include graphs have their own budget. Regex cost +//! cannot be proven by string length: the host editor terminates a stalled +//! worker and keeps text editable without executing plugin regexes on its UI thread. +//! +//! Note: the decision is recorded in .agents/notes/implemented/architecture/2026-10-31-plugin-editor-extension-apis.md + +use super::declarative::{invalid, is_safe_relative_path, PluginRejection, Validation}; +use serde::{Deserialize, Serialize}; +use serde_json::{Map, Value}; +use std::collections::BTreeSet; + +/// First `languages` version with `grammar` and `configuration`. +pub(crate) const GRAMMAR_LANGUAGES_VERSION: u32 = 2; + +/// Largest grammar file, in UTF-8 bytes. +pub(crate) const MAX_GRAMMAR_BYTES: usize = 256 * 1024; +/// Most tokenizer states in one grammar. +const MAX_STATES: usize = 256; +/// Most rules across every state. +const MAX_RULES: usize = 4096; +/// Longest regular expression source or attribute string. +const MAX_REGEX_BYTES: usize = 2048; +/// Most entries of one attribute list, such as `keywords`. +const MAX_ATTRIBUTE_ENTRIES: usize = 4096; +/// Longest attribute list entry. +const MAX_ATTRIBUTE_ENTRY_BYTES: usize = 256; +/// Most guards of one `cases` object. +const MAX_CASES: usize = 64; +/// Deepest nesting of actions inside groups and `cases`. +const MAX_ACTION_DEPTH: usize = 8; +/// Longest token, state, or embedded language name. +const MAX_NAME_BYTES: usize = 128; +/// Most bracket pairs in a grammar or a language configuration. +const MAX_BRACKETS: usize = 32; +/// Longest comment or bracket delimiter. +const MAX_DELIMITER_BYTES: usize = 16; + +/// Keys of an action object. `log` is refused: a grammar never writes to the +/// editor's console. +const ACTION_KEYS: &[&str] = &[ + "token", + "next", + "switchTo", + "goBack", + "bracket", + "nextEmbedded", + "cases", +]; + +/// Engine that runs a grammar. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize, Serialize)] +#[serde(rename_all = "camelCase")] +pub(crate) enum GrammarKind { + /// A Monaco Monarch tokenizer as JSON. + Monarch, +} + +/// `languages[].grammar`: the engine and the package file it reads. +#[derive(Debug, Clone, Deserialize, Serialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub(crate) struct GrammarDeclaration { + pub(crate) kind: GrammarKind, + /// Package-relative grammar file, e.g. `syntax/http.monarch.json`. + pub(crate) path: String, +} + +/// `languages[].configuration`: comment and bracket behavior of the editor. +#[derive(Debug, Clone, Default, Deserialize, Serialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub(crate) struct LanguageConfiguration { + #[serde(default, skip_serializing_if = "Option::is_none")] + line_comment: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + block_comment: Option<[String; 2]>, + #[serde(default, skip_serializing_if = "Vec::is_empty")] + brackets: Vec<[String; 2]>, + #[serde(default, skip_serializing_if = "Vec::is_empty")] + auto_closing_pairs: Vec<[String; 2]>, +} + +impl GrammarDeclaration { + pub(crate) fn validate(&self, field: &str) -> Validation<()> { + if !is_safe_relative_path(&self.path) || self.path.contains(':') { + return Err(invalid( + format!("{field}.path"), + "The grammar must be a file inside the plugin package.", + )); + } + Ok(()) + } +} + +impl LanguageConfiguration { + pub(crate) fn validate(&self, field: &str) -> Validation<()> { + let delimiter = |value: &str| { + !value.is_empty() + && value.len() <= MAX_DELIMITER_BYTES + && !value.chars().any(char::is_control) + }; + if self + .line_comment + .as_deref() + .is_some_and(|value| !delimiter(value)) + { + return Err(invalid( + format!("{field}.lineComment"), + "A comment delimiter is 1 to 16 bytes without control characters.", + )); + } + if self + .block_comment + .as_ref() + .is_some_and(|[open, close]| !delimiter(open) || !delimiter(close)) + { + return Err(invalid( + format!("{field}.blockComment"), + "A comment delimiter is 1 to 16 bytes without control characters.", + )); + } + for (key, pairs) in [ + ("brackets", &self.brackets), + ("autoClosingPairs", &self.auto_closing_pairs), + ] { + if pairs.len() > MAX_BRACKETS + || pairs + .iter() + .any(|[open, close]| !delimiter(open) || !delimiter(close)) + { + return Err(invalid( + format!("{field}.{key}"), + "At most 32 pairs, each delimiter 1 to 16 bytes without control characters.", + )); + } + } + Ok(()) + } +} + +fn grammar_error(field: impl Into, message: impl Into) -> PluginRejection { + PluginRejection::at("plugin.grammar.invalid", field, message) +} + +/// Validates the text of a Monarch grammar file and returns it as a JSON +/// object for validation. Hosts transport the original text, not this map, +/// because Monarch case precedence depends on source key order. +pub(crate) fn decode_monarch(text: &str) -> Validation { + if text.len() > MAX_GRAMMAR_BYTES { + return Err(grammar_error( + "grammar", + "The grammar file is larger than 256 KiB.", + )); + } + let value: Value = serde_json::from_str(text) + .map_err(|error| grammar_error("grammar", format!("The grammar is not JSON: {error}.")))?; + let Value::Object(grammar) = &value else { + return Err(grammar_error( + "grammar", + "A Monarch grammar is a JSON object.", + )); + }; + let Some(Value::Object(tokenizer)) = grammar.get("tokenizer") else { + return Err(grammar_error( + "grammar.tokenizer", + "A Monarch grammar has a tokenizer object.", + )); + }; + if tokenizer.is_empty() || tokenizer.len() > MAX_STATES { + return Err(grammar_error( + "grammar.tokenizer", + "A tokenizer has 1 to 256 states.", + )); + } + let states: BTreeSet<&str> = tokenizer.keys().map(String::as_str).collect(); + if let Some(state) = states.iter().find(|state| !is_state_name(state)) { + return Err(grammar_error( + format!("grammar.tokenizer.{state}"), + "A state name is an identifier, optionally with dot-separated parts.", + )); + } + let start = match grammar.get("start") { + None => "root", + Some(Value::String(start)) => start.as_str(), + Some(_) => return Err(grammar_error("grammar.start", "start names a state.")), + }; + if !states.contains(start) { + return Err(grammar_error( + "grammar.start", + format!("The tokenizer has no {start} state to start in."), + )); + } + let mut attributes = BTreeSet::new(); + for (key, entry) in grammar { + let field = format!("grammar.{key}"); + match key.as_str() { + "tokenizer" | "start" => {} + "ignoreCase" | "unicode" | "includeLF" => { + if !entry.is_boolean() { + return Err(grammar_error(field, format!("{key} is a boolean."))); + } + } + "defaultToken" | "tokenPostfix" => { + if !entry.as_str().is_some_and(is_token) { + return Err(grammar_error(field, format!("{key} is a token name."))); + } + } + "brackets" => check_grammar_brackets(entry, &field)?, + _ => { + if !is_identifier(key) { + return Err(grammar_error(field, "An attribute name is an identifier.")); + } + check_attribute(entry, &field)?; + attributes.insert(key.as_str()); + } + } + } + let context = RuleContext { + states: &states, + attributes: &attributes, + }; + let mut rules = 0; + for (state, entry) in tokenizer { + let field = format!("grammar.tokenizer.{state}"); + let Value::Array(entries) = entry else { + return Err(grammar_error(field, "A state is an array of rules.")); + }; + rules += entries.len(); + if rules > MAX_RULES { + return Err(grammar_error( + "grammar.tokenizer", + "A tokenizer has at most 4096 rules.", + )); + } + for (index, rule) in entries.iter().enumerate() { + context.check_rule(rule, &format!("{field}[{index}]"))?; + } + } + // Monarch expands includes synchronously. Bound the expanded graph, not + // merely the input JSON; cycles and repeated fan-out must fail in Core. + fn expanded( + state: &str, + tokenizer: &Map, + stack: &mut BTreeSet, + memo: &mut std::collections::BTreeMap, + ) -> Validation { + if let Some(count) = memo.get(state) { + return Ok(*count); + } + if !stack.insert(state.to_string()) { + return Err(grammar_error( + "grammar.tokenizer", + "Tokenizer includes must not form a cycle.", + )); + } + let rules = tokenizer + .get(state) + .and_then(Value::as_array) + .ok_or_else(|| { + grammar_error("grammar.tokenizer", "An include names an exact state.") + })?; + let mut count = 0usize; + for rule in rules { + count = count.saturating_add( + if let Some(target) = rule.get("include").and_then(Value::as_str) { + expanded( + target.strip_prefix('@').unwrap_or(target), + tokenizer, + stack, + memo, + )? + } else { + 1 + }, + ); + if count > MAX_RULES { + return Err(grammar_error( + "grammar.tokenizer", + "Expanded tokenizer exceeds 4096 rules.", + )); + } + } + stack.remove(state); + memo.insert(state.to_string(), count); + Ok(count) + } + let mut memo = std::collections::BTreeMap::new(); + for state in &states { + expanded(state, tokenizer, &mut BTreeSet::new(), &mut memo)?; + } + Ok(value) +} + +struct RuleContext<'a> { + states: &'a BTreeSet<&'a str>, + attributes: &'a BTreeSet<&'a str>, +} + +impl RuleContext<'_> { + fn check_rule(&self, rule: &Value, field: &str) -> Validation<()> { + match rule { + Value::Array(parts) => { + let (regex, action, next) = match parts.as_slice() { + [regex, action] => (regex, action, None), + [regex, action, next] => (regex, action, Some(next)), + _ => { + return Err(grammar_error( + field, + "A rule array is [regex, action] or [regex, action, next].", + )) + } + }; + self.check_regex(regex, field)?; + self.check_action(action, &format!("{field}[1]"), 0)?; + if let Some(next) = next { + self.check_next(next, &format!("{field}[2]"))?; + } + Ok(()) + } + Value::Object(object) if object.contains_key("include") => { + if object.len() != 1 { + return Err(grammar_error(field, "An include rule has only include.")); + } + let target = object.get("include").and_then(Value::as_str).unwrap_or(""); + let state = target.strip_prefix('@').unwrap_or(target); + if !self.has_state(state) { + return Err(grammar_error( + format!("{field}.include"), + "An include names a state of the tokenizer.", + )); + } + Ok(()) + } + Value::Object(object) => { + if object.keys().any(|key| key != "regex" && key != "action") { + return Err(grammar_error( + field, + "A rule object has regex and action, or include.", + )); + } + let regex = object + .get("regex") + .ok_or_else(|| grammar_error(field, "A rule object has a regex."))?; + self.check_regex(regex, field)?; + let action = object + .get("action") + .ok_or_else(|| grammar_error(field, "A rule object has an action."))?; + self.check_action(action, &format!("{field}.action"), 0) + } + _ => Err(grammar_error(field, "A rule is an array or an object.")), + } + } + + fn check_regex(&self, regex: &Value, field: &str) -> Validation<()> { + match regex.as_str() { + Some(source) + if !source.is_empty() + && source.len() <= MAX_REGEX_BYTES + && !source.contains('\0') => + { + Ok(()) + } + _ => Err(grammar_error( + field, + "A rule regex is a string of 1 to 2048 bytes without NUL.", + )), + } + } + + fn check_action(&self, action: &Value, field: &str, depth: usize) -> Validation<()> { + if depth > MAX_ACTION_DEPTH { + return Err(grammar_error(field, "Actions nest at most 8 levels deep.")); + } + match action { + Value::String(token) if is_token(token) => Ok(()), + Value::Array(group) if !group.is_empty() && group.len() <= MAX_CASES => { + for (index, part) in group.iter().enumerate() { + self.check_action(part, &format!("{field}[{index}]"), depth + 1)?; + } + Ok(()) + } + Value::Object(object) => self.check_action_object(object, field, depth), + _ => Err(grammar_error( + field, + "An action is a token name, a group of actions, or an action object.", + )), + } + } + + fn check_action_object( + &self, + object: &Map, + field: &str, + depth: usize, + ) -> Validation<()> { + if let Some(key) = object + .keys() + .find(|key| !ACTION_KEYS.contains(&key.as_str())) + { + return Err(grammar_error( + format!("{field}.{key}"), + "Unknown action field; log is not allowed.", + )); + } + if let Some(cases) = object.get("cases") { + let Value::Object(cases) = cases else { + return Err(grammar_error( + format!("{field}.cases"), + "cases is an object.", + )); + }; + if cases.is_empty() || cases.len() > MAX_CASES { + return Err(grammar_error( + format!("{field}.cases"), + "cases has 1 to 64 guards.", + )); + } + for (guard, case) in cases { + let case_field = format!("{field}.cases.{guard}"); + if guard.is_empty() || guard.len() > MAX_REGEX_BYTES { + return Err(grammar_error(case_field, "A guard is 1 to 2048 bytes.")); + } + if let Some(attribute) = guard.strip_prefix('@') { + if !matches!(attribute, "default" | "eos") + && is_identifier(attribute) + && !self.attributes.contains(attribute) + { + return Err(grammar_error( + case_field, + format!("The guard names an undeclared attribute {attribute}."), + )); + } + } + self.check_action(case, &case_field, depth + 1)?; + } + } + if let Some(token) = object.get("token") { + if !token.as_str().is_some_and(is_token) { + return Err(grammar_error( + format!("{field}.token"), + "token is a token name.", + )); + } + } + for key in ["next", "switchTo"] { + if let Some(next) = object.get(key) { + self.check_next(next, &format!("{field}.{key}"))?; + } + } + if let Some(back) = object.get("goBack") { + if !back + .as_u64() + .is_some_and(|count| count <= MAX_REGEX_BYTES as u64) + { + return Err(grammar_error( + format!("{field}.goBack"), + "goBack is a small non-negative integer.", + )); + } + } + if let Some(bracket) = object.get("bracket") { + if !matches!(bracket.as_str(), Some("@open" | "@close")) { + return Err(grammar_error( + format!("{field}.bracket"), + "bracket is @open or @close.", + )); + } + } + if let Some(embedded) = object.get("nextEmbedded") { + if !embedded + .as_str() + .is_some_and(|name| name == "@pop" || is_embedded_language(name)) + { + return Err(grammar_error( + format!("{field}.nextEmbedded"), + "nextEmbedded is @pop or a language ID.", + )); + } + } + if !object.contains_key("token") && !object.contains_key("cases") { + return Err(grammar_error(field, "An action object has token or cases.")); + } + Ok(()) + } + + fn check_next(&self, next: &Value, field: &str) -> Validation<()> { + let Some(next) = next.as_str() else { + return Err(grammar_error(field, "next names a state.")); + }; + if matches!(next, "@pop" | "@push" | "@popall") { + return Ok(()); + } + // `$S2`-style substitutions are resolved by the editor at run time. + if next.contains('$') && next.starts_with('@') && next.len() <= MAX_NAME_BYTES { + return Ok(()); + } + let state = next.strip_prefix('@').unwrap_or(next); + if self.has_state(state) { + Ok(()) + } else { + Err(grammar_error( + field, + format!("The tokenizer has no {state} state."), + )) + } + } + + /// Monarch resolves `a.b.c` to the longest declared prefix, so a dotted + /// state exists when one of its prefixes does. + fn has_state(&self, state: &str) -> bool { + let mut candidate = state; + loop { + if self.states.contains(candidate) { + return true; + } + match candidate.rfind('.') { + Some(index) => candidate = &candidate[..index], + None => return false, + } + } + } +} + +fn check_attribute(value: &Value, field: &str) -> Validation<()> { + match value { + Value::String(text) if text.len() <= MAX_REGEX_BYTES && !text.contains('\0') => Ok(()), + Value::Array(entries) + if entries.len() <= MAX_ATTRIBUTE_ENTRIES + && entries.iter().all(|entry| { + entry.as_str().is_some_and(|text| { + text.len() <= MAX_ATTRIBUTE_ENTRY_BYTES && !text.contains('\0') + }) + }) => + { + Ok(()) + } + _ => Err(grammar_error( + field, + "An attribute is a regex string or a list of at most 4096 strings.", + )), + } +} + +fn check_grammar_brackets(value: &Value, field: &str) -> Validation<()> { + let Value::Array(brackets) = value else { + return Err(grammar_error(field, "brackets is an array.")); + }; + if brackets.len() > MAX_BRACKETS { + return Err(grammar_error(field, "A grammar has at most 32 brackets.")); + } + for (index, bracket) in brackets.iter().enumerate() { + let well_formed = bracket.as_object().is_some_and(|bracket| { + bracket.len() == 3 + && ["open", "close"].iter().all(|key| { + bracket + .get(*key) + .and_then(Value::as_str) + .is_some_and(|text| !text.is_empty() && text.len() <= MAX_DELIMITER_BYTES) + }) + && bracket + .get("token") + .and_then(Value::as_str) + .is_some_and(is_token) + }); + if !well_formed { + return Err(grammar_error( + format!("{field}[{index}]"), + "A bracket is { open, close, token }.", + )); + } + } + Ok(()) +} + +fn is_identifier(value: &str) -> bool { + let mut characters = value.chars(); + value.len() <= MAX_NAME_BYTES + && characters + .next() + .is_some_and(|first| first.is_ascii_alphabetic() || first == '_') + && characters.all(|rest| rest.is_ascii_alphanumeric() || rest == '_') +} + +fn is_state_name(value: &str) -> bool { + value.len() <= MAX_NAME_BYTES && value.split('.').all(is_identifier) +} + +/// Token names map to theme roles; `$n` and `@` forms are Monarch +/// substitutions (`$S0`, `@rematch`, `@brackets`). The empty token is plain text. +fn is_token(value: &str) -> bool { + value.len() <= MAX_NAME_BYTES + && value + .chars() + .all(|character| character.is_ascii_alphanumeric() || "._-$@#".contains(character)) +} + +fn is_embedded_language(value: &str) -> bool { + !value.is_empty() + && value.len() <= MAX_NAME_BYTES + && value.chars().all(|character| { + character.is_ascii_lowercase() + || character.is_ascii_digit() + || "+-_.$".contains(character) + }) +} diff --git a/rust/lithe-core/src/plugins/mod.rs b/rust/lithe-core/src/plugins/mod.rs index a7ea21d897..da3fd6006b 100644 --- a/rust/lithe-core/src/plugins/mod.rs +++ b/rust/lithe-core/src/plugins/mod.rs @@ -3,7 +3,10 @@ pub(crate) mod backend; pub mod capabilities; pub mod declarative; +/// Independent, host-rendered editor actions of ordinary tool plugins. +pub mod editor_actions; pub(crate) mod executables; +pub(crate) mod grammar; pub mod marketplace; pub(crate) mod native_ui; pub(crate) mod settings; diff --git a/rust/lithe-core/src/protocol/command.rs b/rust/lithe-core/src/protocol/command.rs index 2f613c9945..be4d3964e8 100644 --- a/rust/lithe-core/src/protocol/command.rs +++ b/rust/lithe-core/src/protocol/command.rs @@ -104,6 +104,10 @@ pub enum CoreCommand { PluginsDeclarativeResolveSettings, /// Expands a language server's `workspaceConfiguration` (`plugins.declarative.workspaceConfiguration`). PluginsDeclarativeWorkspaceConfiguration, + /// Validates a language's grammar file (`plugins.declarative.decodeGrammar`). + PluginsDeclarativeDecodeGrammar, + /// Validates independent editor action registration or results. + PluginsEditorActionsDecode, /// Finds the build-system instances of a workspace (`build.detect`). BuildDetect, /// Lists a build system's executable candidates and version probes (`build.invocationPlan`). @@ -582,6 +586,8 @@ impl CoreCommand { "plugins.declarative.workspaceConfiguration" => { Some(Self::PluginsDeclarativeWorkspaceConfiguration) } + "plugins.declarative.decodeGrammar" => Some(Self::PluginsDeclarativeDecodeGrammar), + "plugins.editorActions.decode" => Some(Self::PluginsEditorActionsDecode), "build.detect" => Some(Self::BuildDetect), "build.invocationPlan" => Some(Self::BuildInvocationPlan), "build.checkToolVersion" => Some(Self::BuildCheckToolVersion), diff --git a/rust/lithe-core/src/runtime/dispatcher.rs b/rust/lithe-core/src/runtime/dispatcher.rs index 2c1cf77947..026c2bf001 100644 --- a/rust/lithe-core/src/runtime/dispatcher.rs +++ b/rust/lithe-core/src/runtime/dispatcher.rs @@ -266,6 +266,16 @@ fn execute(request: &str) -> CoreResponse { parsed.payload, crate::plugins::declarative::workspace_configuration_command, ), + CoreCommand::PluginsDeclarativeDecodeGrammar => plugin_response( + id, + parsed.payload, + crate::plugins::declarative::decode_grammar_command, + ), + CoreCommand::PluginsEditorActionsDecode => plugin_response( + id, + parsed.payload, + crate::plugins::editor_actions::decode_command, + ), CoreCommand::BuildDetect => { plugin_response(id, parsed.payload, crate::build::build_detect_command) } diff --git a/rust/lithe-core/src/tests/declarative_plugins.rs b/rust/lithe-core/src/tests/declarative_plugins.rs index 4908e58b5f..7706a7d625 100644 --- a/rust/lithe-core/src/tests/declarative_plugins.rs +++ b/rust/lithe-core/src/tests/declarative_plugins.rs @@ -38,6 +38,8 @@ const DEBUG_ADAPTER_LANGUAGE_SERVER_FIXTURE: &str = const DEBUG_ADAPTER_REMOTE_ATTACH_FIXTURE: &str = contract_file!("fixtures/debug-adapter-remote-attach.plugin.json"); const DEBUG_ADAPTER_REJECTIONS: &str = contract_file!("fixtures/debug-adapter-rejections.json"); +const EDITOR_ACTIONS_FIXTURE: &str = contract_file!("fixtures/editor-actions.plugin.json"); +const GRAMMAR_FIXTURE: &str = contract_file!("fixtures/language-grammar.plugin.json"); const INVALID_MANIFESTS: &str = contract_file!("fixtures/invalid-manifests.json"); const COMMAND_PLANS: &str = contract_file!("fixtures/command-plans.json"); const RUNTIME_VERSIONS: &str = contract_file!("fixtures/runtime-versions.json"); @@ -66,6 +68,7 @@ fn fixture(name: &str) -> Value { "debug-adapter.plugin.json" => DEBUG_ADAPTER_FIXTURE, "debug-adapter-language-server.plugin.json" => DEBUG_ADAPTER_LANGUAGE_SERVER_FIXTURE, "debug-adapter-remote-attach.plugin.json" => DEBUG_ADAPTER_REMOTE_ATTACH_FIXTURE, + "language-grammar.plugin.json" => GRAMMAR_FIXTURE, other => panic!("unknown fixture {other}"), }; serde_json::from_str(source).expect("fixture manifest is JSON") @@ -89,6 +92,8 @@ fn contract_fixtures_and_official_plugins_validate() { WORKSPACE_BACKEND_FIXTURE, DEBUG_ADAPTER_FIXTURE, DEBUG_ADAPTER_REMOTE_ATTACH_FIXTURE, + GRAMMAR_FIXTURE, + EDITOR_ACTIONS_FIXTURE, OFFICIAL_JAVA, ] { let outcome = validate(serde_json::from_str(source).unwrap()); diff --git a/rust/lithe-core/src/tests/mod.rs b/rust/lithe-core/src/tests/mod.rs index 27f124b6da..673fe8e091 100644 --- a/rust/lithe-core/src/tests/mod.rs +++ b/rust/lithe-core/src/tests/mod.rs @@ -26,3 +26,5 @@ mod run_configuration; mod spring; pub(crate) mod support; mod vcs; + +mod plugin_editor_resources; diff --git a/rust/lithe-core/src/tests/plugin_editor_resources.rs b/rust/lithe-core/src/tests/plugin_editor_resources.rs new file mode 100644 index 0000000000..e5473cc563 --- /dev/null +++ b/rust/lithe-core/src/tests/plugin_editor_resources.rs @@ -0,0 +1,210 @@ +//! Independent static editor resources, without language-server or Run providers. + +use crate::plugins::declarative::{decode_grammar_command, validate_command}; +use serde_json::{json, Value}; + +macro_rules! contract_file { + ($path:literal) => { + include_str!(concat!( + env!("CARGO_MANIFEST_DIR"), + "/../../shared/contracts/plugins/v1/", + $path + )) + }; +} + +const GRAMMAR_PLUGIN: &str = contract_file!("fixtures/language-grammar.plugin.json"); +const HTTP_GRAMMAR: &str = contract_file!("fixtures/grammars/http.monarch.json"); + +fn manifest(source: &str) -> Value { + serde_json::from_str(source).expect("fixture manifest is JSON") +} + +fn decode_grammar(grammar: &str) -> Value { + decode_grammar_command(json!({ + "manifest": manifest(GRAMMAR_PLUGIN), + "languageID": "http", + "grammar": grammar, + })) + .expect("payload is well formed") +} + +fn grammar_rejection(grammar: Value) -> (String, String) { + let outcome = decode_grammar(&grammar.to_string()); + assert_eq!(outcome["status"], "rejected", "{grammar}: {outcome}"); + ( + outcome["error"]["code"].as_str().unwrap().to_string(), + outcome["error"]["field"] + .as_str() + .unwrap_or_default() + .to_string(), + ) +} + +/// The editor gets the grammar file unchanged with what it needs to +/// register the language: file matching, engine kind and configuration. +#[test] +fn a_grammar_file_decodes_to_the_language_the_editor_registers() { + let outcome = decode_grammar(HTTP_GRAMMAR); + assert_eq!(outcome["status"], "ok", "{outcome}"); + let language = &outcome["language"]; + assert_eq!(language["id"], "http"); + assert_eq!(language["fileExtensions"], json!(["http", "rest"])); + assert_eq!(language["grammar"]["kind"], "monarch"); + assert_eq!(language["grammar"]["source"], HTTP_GRAMMAR); + assert_eq!(language["configuration"]["lineComment"], "#"); + assert_eq!( + language["configuration"]["brackets"], + json!([["{", "}"], ["[", "]"]]) + ); +} + +#[test] +fn grammar_source_preserves_order_through_sorted_json_roundtrips() { + let source = r#"{"tokenizer":{"comment":[[".*","comment"]],"root":[["[A-Z]+",{"cases":{"GET":"keyword","[A-Z]+":"string","@default":"identifier"}}]]}}"#; + let outcome = decode_grammar(source); + assert_eq!(outcome["status"], "ok", "{outcome}"); + let roundtrip: Value = serde_json::from_str(&outcome.to_string()).unwrap(); + assert_eq!(roundtrip["language"]["grammar"]["source"], source); + assert!(roundtrip["language"]["grammar"].get("monarch").is_none()); +} + +#[test] +fn a_language_without_a_grammar_has_nothing_to_decode() { + let outcome = decode_grammar_command(json!({ + "manifest": manifest(GRAMMAR_PLUGIN), + "languageID": "rest", + "grammar": HTTP_GRAMMAR, + })) + .unwrap(); + assert_eq!( + outcome["error"]["code"], "plugin.grammar.unavailable", + "{outcome}" + ); +} + +/// A grammar is data the editor runs on every keystroke, so anything that +/// would make it fail at run time, print, or grow without bound is refused +/// before it reaches the editor. +#[test] +fn grammar_files_are_refused_when_the_editor_could_not_run_them() { + let rejected = |grammar: Value, field: &str| { + let (code, actual) = grammar_rejection(grammar.clone()); + assert_eq!(code, "plugin.grammar.invalid", "{grammar}"); + assert_eq!(actual, field, "{grammar}"); + }; + rejected(json!([]), "grammar"); + rejected(json!({ "tokenizer": {} }), "grammar.tokenizer"); + rejected(json!({ "tokenizer": { "main": [] } }), "grammar.start"); + rejected( + json!({ "tokenizer": { "root": [["a", "keyword", "@missing"]] } }), + "grammar.tokenizer.root[0][2]", + ); + rejected( + json!({ "tokenizer": { "root": [["a", { "token": "keyword", "log": "hit" }]] } }), + "grammar.tokenizer.root[0][1].log", + ); + rejected( + json!({ "tokenizer": { "root": [["\\w+", { "cases": { "@keywords": "keyword" } }]] } }), + "grammar.tokenizer.root[0][1].cases.@keywords", + ); + rejected( + json!({ "tokenizer": { "root": [["", "keyword"]] } }), + "grammar.tokenizer.root[0]", + ); + rejected( + json!({ "tokenizer": { "root": [{ "include": "@other" }] } }), + "grammar.tokenizer.root[0].include", + ); + rejected( + json!({ "ignoreCase": "yes", "tokenizer": { "root": [] } }), + "grammar.ignoreCase", + ); + rejected( + json!({ "tokenizer": { "root": [["a", { "token": "x", "nextEmbedded": "Bad Lang" }]] } }), + "grammar.tokenizer.root[0][1].nextEmbedded", + ); + let (code, _) = grammar_rejection(json!({ + "tokenizer": { "root": [["a".repeat(2049), "keyword"]] } + })); + assert_eq!(code, "plugin.grammar.invalid"); + let oversized = format!( + "{{\"padding\":\"{}\",\"tokenizer\":{{\"root\":[]}}}}", + "x".repeat(256 * 1024) + ); + assert_eq!( + decode_grammar(&oversized)["error"]["code"], + "plugin.grammar.invalid" + ); +} + +/// Monarch resolves `@comment.block` to the longest declared prefix, so a +/// dotted next state is accepted when its prefix exists. +#[test] +fn dotted_states_resolve_to_their_declared_prefix() { + let outcome = decode_grammar( + &json!({ + "tokenizer": { + "root": [["/\\*", "comment", "@comment.block"]], + "comment": [["\\*/", "comment", "@pop"], [".", "comment"]] + } + }) + .to_string(), + ); + assert_eq!(outcome["status"], "ok", "{outcome}"); +} + +/// A grammar on its own is a complete plugin: it needs no language server, +/// no backend, and no permission. +#[test] +fn a_grammar_only_plugin_validates_without_a_language_server() { + let outcome = validate_command(json!({ "manifest": manifest(GRAMMAR_PLUGIN) })).unwrap(); + assert_eq!(outcome["status"], "ok", "{outcome}"); + let language = &outcome["plugin"]["languages"][0]; + assert_eq!(language["grammar"]["path"], "grammars/http.monarch.json"); +} + +#[test] +fn includes_reject_cycles_and_expanded_fan_out() { + assert_eq!( + decode_grammar(&json!({"tokenizer":{"root":[{"include":"@root"}]}}).to_string())["error"] + ["code"], + "plugin.grammar.invalid" + ); + let mut states = serde_json::Map::new(); + states.insert("root".into(), json!([{"include":"@s0"}])); + for index in 0..16 { + states.insert( + format!("s{index}"), + json!([ + {"include":format!("@s{}",index+1)}, {"include":format!("@s{}",index+1)}]), + ); + } + states.insert("s16".into(), json!([["a", "keyword"]])); + assert_eq!( + decode_grammar(&json!({"tokenizer":states}).to_string())["error"]["code"], + "plugin.grammar.invalid" + ); +} + +#[test] +fn configuration_only_contribution_decodes_without_grammar() { + let mut plugin = manifest(GRAMMAR_PLUGIN); + plugin["languages"][0] + .as_object_mut() + .unwrap() + .remove("grammar"); + // A backend is a complete tool plugin, with no language-server ownership. + let tool = manifest(contract_file!("fixtures/backend-workspace.plugin.json")); + plugin["backend"] = tool["backend"].clone(); + plugin["requires"]["backend"] = json!(2); + plugin["requires"]["serverProcess"] = json!(1); + plugin["permissions"] = json!(["backend.launch"]); + plugin["activationEvents"] = json!(["onWorkspaceOpen"]); + let result = + decode_grammar_command(json!({"manifest":plugin,"languageID":"http","grammar":""})) + .unwrap(); + assert_eq!(result["status"], "ok", "{result}"); + assert!(result["language"]["grammar"].is_null()); + assert_eq!(result["language"]["configuration"]["lineComment"], "#"); +} diff --git a/scripts/resources/reuse-worktree-resources.mjs b/scripts/resources/reuse-worktree-resources.mjs index 19f3e51934..90356f2500 100644 --- a/scripts/resources/reuse-worktree-resources.mjs +++ b/scripts/resources/reuse-worktree-resources.mjs @@ -81,6 +81,8 @@ async function readRegistry() { // are mutable user state, never download artifacts. Runtime profile import is // owned by the platform startup adapters; this build reuse route always rejects // both original state and migration snapshots and must not gain a validator. + // Plugin grammar workers use checkout-built editor assets; decoded grammars, + // document tokens and editor action leases are memory-only, never reusable. // Shared i18n source and generated tables take this same refusal route: // rebuild from the target checkout, never copy another worktree's translations. // AutoBuild publication checkpoints and baseline downloads are invocation-owned, diff --git a/scripts/resources/test-reuse-worktree-resources.mjs b/scripts/resources/test-reuse-worktree-resources.mjs index f2ddc9b21b..2ecde67ad3 100644 --- a/scripts/resources/test-reuse-worktree-resources.mjs +++ b/scripts/resources/test-reuse-worktree-resources.mjs @@ -117,6 +117,16 @@ try { assert.notEqual(refused.status, 0); assert.match(diagnostics(refused), /editor-theme-assets.*cannot be reused/); }); + await test("plugin grammar tokens and action leases cannot cross worktrees", { timeout: 15000 }, async () => { + const registry = JSON.parse(await fs.readFile(path.join(scriptDirectory, "worktree-resources.json"), "utf8")); + const resource = registry.excludedResources.find(item => item.id === "editor-theme-assets"); + assert.equal(resource.reusable, false); + assert.ok(resource.locations.includes("/plugin-grammar-workers-and-tokens")); + assert.ok(resource.locations.includes("/plugin-editor-action-leases")); + const refused = reuse(["--resource", resource.id]); + assert.notEqual(refused.status, 0); + assert.match(diagnostics(refused), /editor-theme-assets.*cannot be reused/); + }); await test("shared translations are regenerated locally rather than reused", { timeout: 15000 }, async () => { const registry = JSON.parse(await fs.readFile(path.join(scriptDirectory, "worktree-resources.json"), "utf8")); const resource = registry.excludedResources.find(item => item.id === "shared-i18n"); diff --git a/scripts/resources/worktree-resources.json b/scripts/resources/worktree-resources.json index f148aef983..c89deb5c18 100644 --- a/scripts/resources/worktree-resources.json +++ b/scripts/resources/worktree-resources.json @@ -436,10 +436,12 @@ "locations": [ ".artifacts/editor/macos/", ".artifacts/monaco-workbench/test-assets/", - ".artifacts/monaco-probe/assets/" + ".artifacts/monaco-probe/assets/", + "/plugin-grammar-workers-and-tokens", + "/plugin-editor-action-leases" ], "identity": "Current source palettes, upstream pinned theme revisions, license/NOTICE files, Monaco and Bun versions; no validated build identity stamp", - "reason": "Rebuild JavaScript and bundled theme licenses together from this checkout. No copy stage or runtime writes; packaged assets remain read-only and preserve code signatures and Sparkle delta baselines." + "reason": "Rebuild JavaScript and bundled theme licenses together from this checkout. No copy stage or runtime writes; packaged assets remain read-only and preserve code signatures and Sparkle delta baselines. Plugin grammars compile only in terminable workers loaded from the same checkout-built textmate-worker.js. Decoded package resources, tokens and action leases stay in process memory; no reusable identity stamp or runtime bundle writes." }, { "id": "plugin-host-runtime-state", diff --git a/shared/contracts/plugins/v1/README.md b/shared/contracts/plugins/v1/README.md index bd94d74663..0a99c04483 100644 --- a/shared/contracts/plugins/v1/README.md +++ b/shared/contracts/plugins/v1/README.md @@ -85,6 +85,77 @@ present. A leading dot is optional only in `fileExtensions` (`.php` equals is part of the name, so `.toolrc` and `.env.example` stay hidden-file names. Optional `dependencies` lists `managementFileNames`, `projectDependencyPaths`, and `projectBinaryPaths` relative to the project. +#### Grammars and editor configuration (`languages` 2) + +`languages` 2 adds two optional fields to a language. Both are data: the host +reads them from the package and the editor applies them without starting any +process, so a language with a grammar needs no language server, backend, or +activation event, and a plugin may consist of grammars alone. + +```json +{ + "id": "http", + "displayName": "HTTP Request", + "fileExtensions": ["http", "rest"], + "grammar": { "kind": "monarch", "path": "grammars/http.monarch.json" }, + "configuration": { + "lineComment": "#", + "blockComment": ["/*", "*/"], + "brackets": [["{", "}"], ["[", "]"]], + "autoClosingPairs": [["{", "}"], ["\"", "\""]] + } +} +``` + +- `grammar.kind` names the highlighting engine. Version 2 defines only + `monarch`; another engine is added as a new kind in a later version, so a + plugin can move between engines without changing anything else. +- This is a static package contribution: `languages[]` belongs to the manifest + and `grammar.path` references a package JSON file. No public host method accepts + inline grammar JSON to dynamically register, replace, or dispose a highlighting + provider. Live installation/update/withdrawal of eligible static packages does + not imply such an API or automatic reload after arbitrary file changes; + installed packages remain read-only. +- Adding another language or grammar using the supported structure needs only + plugin data; changing its rules does not itself raise the API version. A new + engine or capability kind still needs an implemented host adapter and an + explicit contract; an arbitrary new `kind` string cannot supply one. +- This contribution does not register completion, hover, definition, symbol, + formatting, rename, or Code Action providers backed by ordinary plugin + functions. Those independent provider bindings are not implemented; existing + LSP support and `editor/registerActions` are separate capabilities, not a + substitute for them. +- `grammar.path` is a package-relative file that stays inside the package. + Hosts read it read-only from the installed package, pass its text to + `plugins.declarative.decodeGrammar`, and hand the returned object to the + editor as validated source text, never through a reconstructed JSON object: + Monarch `cases` are evaluated in source order. The worker parses that text and + defaults `start` to `root` when absent. A grammar Core refuses is `plugin.grammar.invalid` with the + failing field (such as `grammar.tokenizer.root[3][1].log`); the language then + opens as plain text and the rest of the plugin keeps working. +- A Monarch grammar is the JSON form of a + [Monaco Monarch](https://microsoft.github.io/monaco-editor/monarch.html) + definition: rule regexes are strings, and attribute values are strings or + string lists. Core accepts at most 256 KiB, 256 states, 4096 rules, regexes + of 2048 bytes, attribute lists of 4096 entries, 64 `cases` guards, 32 + brackets, and actions nested 8 deep. It refuses `log` actions, `next`, + `switchTo`, and `include` targets that are not states of the grammar + (`@a.b` resolves to the longest declared prefix, as in Monarch), `cases` + guards naming an undeclared attribute, and `nextEmbedded` values other + than `@pop` or a language ID. The fixture + [`fixtures/grammars/http.monarch.json`](fixtures/grammars/http.monarch.json) + is a complete example. +- `configuration` sets `lineComment`, `blockComment` (open and close), + `brackets`, and `autoClosingPairs`. Each delimiter is 1 to 16 bytes without + control characters; each list has at most 32 pairs. +- Grammar compilation and matching run only in a terminable worker. No plugin + regex runs on the editor UI thread. Include cycles and expanded rule counts + over 4096 are refused; a stalled worker is terminated after its local deadline. + Buffers over 128 Ki UTF-16 units or 10,000 lines remain plain/editable. Embedded + languages are plain text in this first worker adapter. +- Declaring `languages: 2` without using either field is + `plugin.manifest.invalid`; using them under `languages: 1` is too. + ### Language servers | Field | Meaning | @@ -399,7 +470,7 @@ hosts. Level 3 versions each section on its own. A level 3 manifest lists in | Capability | Covers | Versions | | --- | --- | --- | -| `languages` | `languages[]` | `1` | +| `languages` | `languages[]` | `1`, `2` (adds [`grammar` and `configuration`](#grammars-and-editor-configuration-languages-2)) | | `packageTrust` | `vendor.bundledSignatureRequirement`: origin-scoped trust for a host-sealed bundled copy of a publisher-signed plugin | `1` | | `languageServers` | `languageServers[]` apart from their launch fields | `1`, `2` (adds [`workspaceConfiguration`](#workspace-configuration-languageservers-2)) | | `serverProcess` | The launch fields of language servers, of build providers with a process of their own, of VCS providers, and of the plugin backend: `launch`, `arguments`, `validationArguments`, `runtimeDependencies`, `initializationOptions` | `1` | @@ -502,6 +573,7 @@ Rules for publishing across levels and capability versions: | `backend.launch` | `backend` is declared | | `credentials.store` | the backend uses the [credentials host service](#host-services-protocol-version-2); refused without a `backend` | | `workspace.metadata` | the backend uses the [workspace host service](#workspace-contexts-and-capability-discovery-protocol-version-3); refused without `backend` 2 | +| `editor.actions` | the backend registers independent editor actions; requires `backend` 2 and `documents.read`, grants only `editor/registerActions`, not document edits or domain execution | | Activation event | Meaning | | --- | --- | @@ -2094,6 +2166,7 @@ methods. Unknown options fail before side effects with `unsupportedOption`. | --- | --- | --- | --- | | `documents/list` | `documents.read` | none | `{documents:[]}` | | `documents/getSnapshot` | `documents.read` | `documentID` | `{document:, text}` from the dirty live buffer | +| `editor/registerActions` | `editor.actions` (+ `documents.read`) | `id,function,selector` | `{subscriptionID}`; independent editor actions, see below | | `editor/getActive` | `documents.read` | none | summary of the foreground text tab, or `null` | | `editor/getSelections` | `documents.read` | `documentID` | `{documentID,version,selections:[{anchor,active}],primaryIndex}` | | `editor/applyEdits` | `editor.edit` | `documentID,expectedVersion,edits:[{range,text}]` | `{documentID,version,applied}` | @@ -2168,6 +2241,79 @@ plugins. `didRun` remains an event, not an acknowledgement that the command's business action succeeded; a future result-bearing execute API must use the existing request lifecycle rather than infer success from notification delivery. +### Independent editor actions (protocol version 3) + +Editor actions are a host presentation capability of an ordinary tool backend, +not an LSP, Build, Run, Test or Debug provider. A play icon is presentation, not +an execution kind. The host understands the bounded range/title/icon/invocation +shape; HTTP/SQL parsing and execution remain private to the plugin. Native domain +workflows still use their own typed contracts, never a private-function substitute. + +A backend declares `backend: 2`, `documents.read` and `editor.actions`, discovers +`lithe/host/editor/registerActions` with `getCapabilities`, then registers per +workspace context: + +```json +{ + "context": {"contextID": "w1", "generation": 1}, + "id": "requestActions", + "function": "requests.collectActions", + "selector": {"fileExtensions": ["http", "rest"], "fileNames": []} +} +``` + +- Registration returns `{subscriptionID}`. Dispose with the existing subscription + API. It only records the binding and never calls the backend while answering; + collection runs later. The function must already be registered on that session. +- No manifest `runMarkers` section or capability, no special command notification, + and no language-server/Run declaration is added. The first implementation starts + through existing `onWorkspaceOpen` (or an existing explicit entry); registration + cannot discover a backend that has not started. Backend installation still needs + restart. Standalone backends have an application-scoped enablement module, + without a fake UI or language provider; safe mode/quarantine/disable still veto + their startup. Example package: `fixtures/editor-actions.plugin.json`. +- A selector has 1 to 32 literal names/extensions; extensions accept an optional + leading dot. Matching is case-insensitive. At most 32 bindings per plugin across + contexts; duplicate registration IDs in a context are refused. +- The host invokes the collection function via existing `lithe/function/invoke` + with workspace context and `{document:{documentID,version,path},text}`. Version + is the same public buffer version as `documents/getSnapshot`, not a WebView + revision. Source is the dirty live buffer, capped at 128 KiB. Remote workspaces + and read-only preview surfaces are not served by this first implementation. +- Collection is read-only by contract: no network request or business execution. + Edits invalidate the old actions immediately and cancel older collection work; + the host debounces fresh collection and rejects stale or withdrawn results. + macOS bounds the whole collection batch to eight seconds, not eight seconds per + binding. Refresh acknowledges scheduling without waiting for collectors; a slow + or failed collector must not fail editing or the save synchronization barrier. +- Return `{actions:[{id,range:{start:{line,column},end:{line,column}},title,icon, + invoke:{functionID,params?}}]}`. Positions are one-based UTF-16, half-open and + cannot split surrogate pairs. Each range stays in the exact input document. + `id` is 1 to 128 bytes without controls, unique per answer; `title` is 1 to 200 + characters on one line. `icon` is `run` or `run-all`, a host-owned presentation + token. At most 1000 actions and 1 MiB serialized; malformed answers are refused + whole. Same-line actions share a menu rather than silently replacing each other. +- Each invocation target is a currently registered function of the same plugin; + `params` is a plugin-private JSON object. The host stores it behind an opaque + per-batch action key, never accepts invocation payloads from the web editor, and + validates document/context/session/registration again on click. It calls the + function with `{documentID,expectedVersion,actionID,data:}` through the + ordinary invocation lifecycle. The plugin validates/re-reads the live document + before side effects. Click executions are not cancelled by unrelated re-parsing; + withdrawing the binding, ending its session/context or tearing down the owning + editor cancels them. The host never retries side effects automatically. +- Registration/collection validation is shared Core command + `plugins.editorActions.decode`; public host failures retain protocol 3's existing + distinct codes (`invalidParams`, `permissionDenied`, `versionConflict`, etc.). + No tool-private error or result is interpreted as a build/test result. +- Existing `commands/didRun {commandID,context?}` is unchanged. A command-palette + entry can read the document/selection and call the same plugin implementation. +- This is an additive host method within protocol 3, not a protocol-version bump. + Old hosts do not advertise it. A plugin can retain its existing command/window + entry point; a package requiring `editor.actions` is deliberately refused by an + older host that does not recognize that permission, rather than silently granted. + Grammar capability admission is separate. SDK/contract mirrors still need sync. + ### Compatibility - Packages of every API level are unchanged: functions add no manifest field. @@ -2260,6 +2406,8 @@ command payload is a Core `invalid_request` failure instead. | `plugin.build.invalidSelection` | Core | A build request selects a scope, target, filter, or argument the declaration does not allow, or misses a required path | | `plugin.build.invalidOutput` | Core | Build-tool output or a report does not fit its decoder | | `plugin.launch.invalidRequest` | Core | A launch plan request has an unusable directory or an unknown architecture | +| `plugin.grammar.invalid` | Core | A language's grammar file is not a Monarch grammar Core accepts; `field` names the failing part | +| `plugin.grammar.unavailable` | Core | The plugin declares no grammar for the language | | `plugin.vcs.reserved` | Core | A VCS provider claims the ID of the built-in Git support | | `plugin.vcs.invalidOutput` | Core | A VCS provider's reply does not fit the [VCS provider contract](https://github.com/1lck/Lithe-IDEA/blob/preview/shared/contracts/vcs-provider-v1.md) | | `plugin.index.invalid` | Core | Malformed index root or entry, or an invalid URL, checksum, platform, version, or date | diff --git a/shared/contracts/plugins/v1/fixtures/editor-actions.plugin.json b/shared/contracts/plugins/v1/fixtures/editor-actions.plugin.json new file mode 100644 index 0000000000..2c499d2f7c --- /dev/null +++ b/shared/contracts/plugins/v1/fixtures/editor-actions.plugin.json @@ -0,0 +1,36 @@ +{ + "schemaVersion": 2, + "id": "dev.lithe.fixture.editoractions", + "displayName": "Editor Actions", + "version": "1.0.0", + "pluginAPIVersion": 3, + "requires": { + "backend": 2, + "serverProcess": 1 + }, + "vendor": { + "id": "org.example", + "displayName": "Example", + "signatureRequirement": "publisherPackage" + }, + "permissions": [ + "backend.launch", + "documents.read", + "editor.actions", + "workspace.metadata" + ], + "activationEvents": [ + "onWorkspaceOpen" + ], + "languages": [], + "backend": { + "launch": { + "kind": "packaged", + "path": "bin/backend" + }, + "arguments": [ + "--state", + "${stateDir}" + ] + } +} diff --git a/shared/contracts/plugins/v1/fixtures/function-protocol.json b/shared/contracts/plugins/v1/fixtures/function-protocol.json index b79fdcb094..6bd6b38809 100644 --- a/shared/contracts/plugins/v1/fixtures/function-protocol.json +++ b/shared/contracts/plugins/v1/fixtures/function-protocol.json @@ -532,7 +532,10 @@ "method": "lithe/host/process/run", "params": {}, "expected": { "rpcCode": -32601, "code": "plugin.host.unavailable" } - } + }, + {"name": "editor actions are a discoverable independent host service", "method": "lithe/host/editor/registerActions", "version": 3, "hostServices": ["lithe/host/editor/registerActions"], "params": {"context": {"contextID": "w1", "generation": 1}, "id": "actions", "function": "actions.collect", "selector": {"fileExtensions": ["http"]}}, "expected": {"forward": "editor"}}, + {"name": "document reads do not grant editor action contribution", "method": "lithe/host/editor/registerActions", "version": 3, "hostServices": ["lithe/host/documents/getSnapshot"], "params": {}, "expected": {"code": "plugin.host.permissionDenied", "rpcCode": -32010}}, + {"name": "protocol 2 does not expose independent editor actions", "method": "lithe/host/editor/registerActions", "version": 2, "hostServices": ["lithe/host/editor/registerActions"], "params": {}, "expected": {"code": "plugin.host.unavailable", "rpcCode": -32601}} ], "invocationContexts": [ { diff --git a/shared/contracts/plugins/v1/fixtures/grammars/http.monarch.json b/shared/contracts/plugins/v1/fixtures/grammars/http.monarch.json new file mode 100644 index 0000000000..ca824f09d7 --- /dev/null +++ b/shared/contracts/plugins/v1/fixtures/grammars/http.monarch.json @@ -0,0 +1,44 @@ +{ + "defaultToken": "", + "tokenPostfix": ".http", + "methods": ["GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE", "CONNECT"], + "brackets": [ + { "open": "{", "close": "}", "token": "delimiter.curly" }, + { "open": "[", "close": "]", "token": "delimiter.square" } + ], + "tokenizer": { + "root": [ + ["###.*$", "comment.separator"], + ["\\s*(#|//).*$", "comment"], + ["@[A-Za-z_][\\w.-]*", "variable", "@variableValue"], + ["([A-Z]+)(\\s+)", [{ "cases": { "@methods": "keyword", "@default": "identifier" } }, ""], "@requestTarget"], + { "include": "@variables" }, + ["[A-Za-z][\\w-]*(?=\\s*:)", "attribute.name", "@headerValue"], + ["[{}\\[\\]]", "@brackets"], + ["\"([^\"\\\\]|\\\\.)*\"", "string"], + ["-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?", "number"], + ["\\b(true|false|null)\\b", "keyword"] + ], + "requestTarget": [ + { "include": "@variables" }, + ["\\s+HTTP/[\\d.]+\\s*$", "keyword", "@pop"], + ["[^\\s{]+", "string.link"], + ["$", "", "@pop"] + ], + "headerValue": [ + [":\\s*", "delimiter"], + { "include": "@variables" }, + ["[^{]+", "attribute.value"], + ["$", "", "@pop"] + ], + "variableValue": [ + ["\\s*=\\s*", "delimiter"], + { "include": "@variables" }, + ["[^{]+", "string"], + ["$", "", "@pop"] + ], + "variables": [ + ["\\{\\{[^}]*\\}\\}", "variable"] + ] + } +} diff --git a/shared/contracts/plugins/v1/fixtures/invalid-manifests.json b/shared/contracts/plugins/v1/fixtures/invalid-manifests.json index dd82092e47..2a20bb42db 100644 --- a/shared/contracts/plugins/v1/fixtures/invalid-manifests.json +++ b/shared/contracts/plugins/v1/fixtures/invalid-manifests.json @@ -1049,6 +1049,11 @@ "base": "backend-workspace.plugin.json", "edits": [{ "op": "set", "path": "/backend/arguments", "value": ["--cache", "${workspaceStateDir}"] }], "expectedCode": "plugin.manifest.invalid" - } + }, + {"name": "a grammar needs languages 2", "base": "language-grammar.plugin.json", "edits": [{"op": "set", "path": "/requires/languages", "value": 1}], "expectedCode": "plugin.manifest.invalid"}, + {"name": "languages 2 is used by a grammar or configuration", "base": "language-grammar.plugin.json", "edits": [{"op": "remove", "path": "/languages/0/grammar"}, {"op": "remove", "path": "/languages/0/configuration"}], "expectedCode": "plugin.manifest.invalid"}, + {"name": "a grammar names a known engine", "base": "language-grammar.plugin.json", "edits": [{"op": "set", "path": "/languages/0/grammar/kind", "value": "textmate"}], "expectedCode": "plugin.manifest.invalid"}, + {"name": "a grammar file stays in the package", "base": "language-grammar.plugin.json", "edits": [{"op": "set", "path": "/languages/0/grammar/path", "value": "../http.monarch.json"}], "expectedCode": "plugin.manifest.invalid"}, + {"name": "a comment delimiter is one short line", "base": "language-grammar.plugin.json", "edits": [{"op": "set", "path": "/languages/0/configuration/lineComment", "value": "#\n"}], "expectedCode": "plugin.manifest.invalid"} ] } diff --git a/shared/contracts/plugins/v1/fixtures/language-grammar.plugin.json b/shared/contracts/plugins/v1/fixtures/language-grammar.plugin.json new file mode 100644 index 0000000000..09be19bab4 --- /dev/null +++ b/shared/contracts/plugins/v1/fixtures/language-grammar.plugin.json @@ -0,0 +1,43 @@ +{ + "schemaVersion": 2, + "id": "dev.lithe.fixture.httpgrammar", + "displayName": "HTTP Request Syntax", + "version": "1.0.0", + "pluginAPIVersion": 3, + "requires": { + "languages": 2 + }, + "vendor": { + "id": "org.example", + "displayName": "Example", + "signatureRequirement": "publisherPackage" + }, + "permissions": [], + "activationEvents": [], + "languages": [ + { + "id": "http", + "displayName": "HTTP Request", + "fileExtensions": [ + "http", + "rest" + ], + "grammar": { + "kind": "monarch", + "path": "grammars/http.monarch.json" + }, + "configuration": { + "lineComment": "#", + "brackets": [ + ["{", "}"], + ["[", "]"] + ], + "autoClosingPairs": [ + ["{", "}"], + ["[", "]"], + ["\"", "\""] + ] + } + } + ] +} diff --git a/shared/contracts/plugins/v1/plugin-manifest.schema.json b/shared/contracts/plugins/v1/plugin-manifest.schema.json index 1d2b09a9ee..e108cc36ab 100644 --- a/shared/contracts/plugins/v1/plugin-manifest.schema.json +++ b/shared/contracts/plugins/v1/plugin-manifest.schema.json @@ -35,7 +35,7 @@ "executableResolution": { "enum": [1], "description": "Shared executable candidate ordering and strict selection." }, "executionProviders": { "enum": [1] }, "languageServers": { "enum": [1] }, - "languages": { "enum": [1] }, + "languages": { "description": "Version 2 adds languages[].grammar and languages[].configuration and is required exactly when one of them is used.", "enum": [1, 2] }, "packageTrust": { "description": "Required exactly when vendor.bundledSignatureRequirement is present.", "enum": [1] }, "projectGenerators": { "description": "Entries of the New Project window: fields, requirements, and steps.", "enum": [1] }, "serverProcess": { "description": "The launch fields of language servers, of build providers that start their own process, of VCS providers, of debug adapters, and of the plugin backend. Version 2 adds runSelectedRuntime and is required exactly when a debug adapter uses it (pluginAPIVersion 4).", "enum": [1, 2] }, @@ -66,6 +66,7 @@ "workspace.search", "documents.read", "editor.edit", + "editor.actions", "editor.open", "preview.open", "browser.open", @@ -1056,9 +1057,37 @@ "projectDependencyPaths": { "$ref": "#/$defs/fileNameList" }, "projectBinaryPaths": { "$ref": "#/$defs/fileNameList" } } + }, + "grammar": { + "description": "languages 2: syntax highlighting from a package file, applied by the editor without any process.", + "type": "object", + "additionalProperties": false, + "required": ["kind", "path"], + "properties": { + "kind": { "description": "Highlighting engine of the file. Version 2 defines monarch: the JSON form of a Monaco Monarch definition.", "enum": ["monarch"] }, + "path": { "description": "Package-relative grammar file inside the package.", "type": "string", "minLength": 1 } + } + }, + "configuration": { + "description": "languages 2: comment and bracket behavior of the editor.", + "type": "object", + "additionalProperties": false, + "properties": { + "lineComment": { "$ref": "#/$defs/editorDelimiter" }, + "blockComment": { "$ref": "#/$defs/editorDelimiterPair" }, + "brackets": { "type": "array", "maxItems": 32, "items": { "$ref": "#/$defs/editorDelimiterPair" } }, + "autoClosingPairs": { "type": "array", "maxItems": 32, "items": { "$ref": "#/$defs/editorDelimiterPair" } } + } } } }, + "editorDelimiter": { "type": "string", "minLength": 1, "maxLength": 16 }, + "editorDelimiterPair": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { "$ref": "#/$defs/editorDelimiter" } + }, "languageServer": { "type": "object", "$ref": "#/$defs/serverProcess", diff --git a/shared/contracts/rust-core-api.md b/shared/contracts/rust-core-api.md index 5716fa0dee..bf8ede9a3b 100644 --- a/shared/contracts/rust-core-api.md +++ b/shared/contracts/rust-core-api.md @@ -1141,6 +1141,8 @@ package manager owns the download and Lithe does not infer bytes from logs. | `plugins.declarative.resolveSettings` | Merge a plugin's stored global and project setting layers into effective values with their source | | `plugins.declarative.workspaceConfiguration` | Expand a language server's `workspaceConfiguration` with the merged setting values | | `plugins.declarative.checkRuntimeVersion` | Decide whether a launch runtime's version output meets the declared minimum version | +| `plugins.declarative.decodeGrammar` | Validate independent static editor resources (`languages` 2) | +| `plugins.editorActions.decode` | Validate independent action registration or collection results | | `build.detect` | Find every build-system instance the enabled plugins declare in a workspace, with models that need no process | | `build.invocationPlan` | List a build system's executable candidates, runtime dependencies, and version probe for one platform | | `build.checkToolVersion` | Decide whether a build tool's or runtime's version output meets the declared minimum | @@ -3830,6 +3832,25 @@ for the plan's `launch.versionArguments`, and returns `{ "status": "ok", "check": { "satisfied": bool, "version"?: string } }`. `version` is absent when the output contains none. It takes no manifest. +`plugins.declarative.decodeGrammar` accepts `{ manifest, languageID, grammar }`, +where `grammar` is the text the host read from the language's `grammar.path` +inside the installed package, and returns `language: { id, fileExtensions, +fileNames, grammar: { kind, source }, configuration }`. `source` is the +validated original JSON text, kept opaque through host dictionaries so Monarch's +ordered `cases` retain their precedence. Only the terminable worker parses and +compiles it, explicitly using `root` when `start` is absent. A grammar Core +refuses is `plugin.grammar.invalid` with the failing `field`; a language +without static editor resources is `plugin.grammar.unavailable`. Configuration-only +languages return `grammar:null` and require no file read. Core reads no files. + +`plugins.editorActions.decode` accepts `{kind:"registration",value}` or +`{kind:"actions",value,text}` and returns `{registration}` or `{actions}`. +Core validates literal selectors, one-based UTF-16 ranges and bounded opaque +function bindings. Hosts enforce permission, live document versions and session +ownership; HTTP/SQL business semantics stay with plugins. See the plugin +contract's independent editor actions section. + + The `plugins.marketplace.*` commands are equally pure: hosts fetch indexes and archives and pass the parsed JSON. `validateIndex` accepts `{ index, sourceKind: "official" | "thirdParty", platform, hostCapabilities? }` diff --git a/shared/i18n/locales/en-US.json b/shared/i18n/locales/en-US.json index ff68fb19ea..b26ba6b8af 100644 --- a/shared/i18n/locales/en-US.json +++ b/shared/i18n/locales/en-US.json @@ -9729,7 +9729,8 @@ "native.gitIgnored": "Git: ignored", "native.gitNotIgnored": "Git: not ignored", "native.onePatternPerLineCaseInsensitivePatternsUseWildcardsASimplifiedFormOfRegularEx35941b6a99": "One pattern per line, case-insensitive. Patterns use wildcards, a simplified form of regular expressions: `*` matches any characters and `?` matches one.\nEnd a pattern with `/`, `/*` or `/**` to hide a folder and everything in it; start with `**/` to match at any depth. A pattern without a trailing slash only hides files: `.lithe` hides a file named .lithe, not the folder.\nExamples:\n`**/dist/` — every dist folder\n`.lithe/**` — the .lithe folder in the project root\n`*.log` — all log files\n`docs/*.md` — Markdown files in docs\nThe list starts with the built-in patterns. Delete one to show those files again; type it back to hide them.", - "history.clearFailed": "Could not clear this project's local history. Check storage permissions and try again." + "history.clearFailed": "Could not clear this project's local history. Check storage permissions and try again.", + "native.addClickableActionsBesideDocumentText": "Add clickable actions beside document text" }, "overrides": { "windows": { diff --git a/shared/i18n/locales/zh-CN.json b/shared/i18n/locales/zh-CN.json index 9542eea2a9..8ea52e14b0 100644 --- a/shared/i18n/locales/zh-CN.json +++ b/shared/i18n/locales/zh-CN.json @@ -9729,7 +9729,8 @@ "native.gitIgnored": "Git:已忽略", "native.gitNotIgnored": "Git:未忽略", "native.onePatternPerLineCaseInsensitivePatternsUseWildcardsASimplifiedFormOfRegularEx35941b6a99": "每行一条规则,不区分大小写。规则使用通配符,是正则表达式的简化写法:`*` 匹配任意字符,`?` 匹配单个字符。\n以 `/`、`/*` 或 `/**` 结尾表示隐藏整个文件夹及其内容,以 `**/` 开头表示匹配任意层级。不带结尾斜杠的规则只隐藏文件:`.lithe` 隐藏名为 .lithe 的文件,而不是文件夹。\n示例:\n`**/dist/` — 任意层级的 dist 文件夹\n`.lithe/**` — 项目根目录下的 .lithe 文件夹\n`*.log` — 所有 .log 文件\n`docs/*.md` — docs 下的 Markdown 文件\n列表开头是内置规则。删掉一行即可重新显示这些文件,再输入回来就会重新隐藏。", - "history.clearFailed": "无法清空此项目的本地历史。请检查存储目录权限后重试。" + "history.clearFailed": "无法清空此项目的本地历史。请检查存储目录权限后重试。", + "native.addClickableActionsBesideDocumentText": "在文档文本旁添加可点击的操作" }, "overrides": { "macos": { diff --git a/shared/i18n/messages.json b/shared/i18n/messages.json index 764579b111..3068c8aa8a 100644 --- a/shared/i18n/messages.json +++ b/shared/i18n/messages.json @@ -93151,6 +93151,17 @@ "key": "Could not clear this project's local history. Check storage permissions and try again.", "arguments": [] } + }, + { + "id": "native.addClickableActionsBesideDocumentText", + "description": "Native UI: editor action contribution permission", + "platforms": [ + "macos" + ], + "macos": { + "key": "Add clickable actions beside document text", + "arguments": [] + } } ] } diff --git a/shared/platform-feature-matrix/features/plugin-editor-actions.json b/shared/platform-feature-matrix/features/plugin-editor-actions.json new file mode 100644 index 0000000000..20f7a57192 --- /dev/null +++ b/shared/platform-feature-matrix/features/plugin-editor-actions.json @@ -0,0 +1,26 @@ +{ + "id": "plugin-editor-actions", + "area": "扩展", + "group": "插件与主题", + "capability": "普通工具插件的独立编辑器动作:运行期注册文件选择器,收集文档范围与同插件函数绑定,点击复用普通 invocation;不接 LSP/Build/Run/Debug", + "macos": { + "implementationStatus": "partial", + "verificationStatus": "pending", + "evidence": [ + "rust/lithe-core/src/plugins/editor_actions.rs", + "macos/Sources/Lithe/Application/Features/PluginEditorActionHostService.swift", + "frontend/editor/src/plugin-editor-actions.ts", + "shared/contracts/plugins/v1/fixtures/editor-actions.plugin.json" + ] + }, + "windows": { + "implementationStatus": "missing", + "verificationStatus": "not-applicable", + "evidence": [ + "shared/contracts/plugins/v1/README.md" + ] + }, + "owner": "Extensions", + "verification": "用 HTTP 与 SQL 两种解析函数注册动作;验证当前脏文档版本、同一行多动作、明确点击执行、编辑取消旧解析、撤回/关闭/会话替换清理,不自动重试副作用。慢收集保持未完成时刷新立即确认,仍能输入并完成保存屏障;整批只使用八秒预算。", + "notes": "当前仅 macOS 接线;真机和完整用户流程仍待验证。共享校验通过不代表 Windows 已实现。" +} diff --git a/shared/platform-feature-matrix/features/plugin-editor-grammars.json b/shared/platform-feature-matrix/features/plugin-editor-grammars.json new file mode 100644 index 0000000000..389940b2c3 --- /dev/null +++ b/shared/platform-feature-matrix/features/plugin-editor-grammars.json @@ -0,0 +1,27 @@ +{ + "id": "plugin-editor-grammars", + "area": "扩展", + "group": "插件与主题", + "capability": "独立插件语法高亮与编辑配置:不依赖 LSP/Run,配置可独立于 grammar,语法仅在可终止 worker 执行", + "macos": { + "implementationStatus": "partial", + "verificationStatus": "pending", + "evidence": [ + "rust/lithe-core/src/plugins/grammar.rs", + "frontend/editor/src/plugin-languages.ts", + "frontend/editor/src/plugin-grammar-tokenizer.ts", + "macos/Sources/Lithe/Platform/MacOS/Plugins/MacPluginEditorLanguages.swift", + "macos/Tests/LitheTests/PluginEditorLanguagesTests.swift" + ] + }, + "windows": { + "implementationStatus": "missing", + "verificationStatus": "not-applicable", + "evidence": [ + "shared/contracts/plugins/v1/README.md" + ] + }, + "owner": "Extensions", + "verification": "安装纯语法插件后打开 .http;验证即时出现、停用撤回、配置独立应用、病态语法不阻塞输入和保存;安装目录哈希不变。语法源文本经 Core/Swift/worker 往返保持 cases 顺序并显式默认 root;properties 等仅配置别名保留高亮、撤回不销毁基础 tokenizer;模块状态观察回调不持有运行时。", + "notes": "当前仅 macOS 接线,只接受清单与包内 JSON 静态资源,grammar.kind 仅支持 monarch;没有运行期传 JSON 注册/替换/释放高亮 Provider 的公共方法,也未开放独立语言语义 Provider 的普通函数绑定。静态插件生命周期即时更新不等于动态注册 API。高亮超过 128 Ki UTF-16 单位或 10,000 行时保持普通文本,嵌入语言按普通文本处理;SDK 新能力封装/发布和真实插件完整安装验收仍待完成。共享校验通过不代表 Windows 已实现。" +} From 921c888ce42eb3967db24730dd12c918bbe67363 Mon Sep 17 00:00:00 2001 From: xueyeshang1 Date: Sat, 31 Oct 2026 17:59:43 +0800 Subject: [PATCH 08/27] fix(indexing): preserve scan ownership and snapshot publication Retry current-workspace indexing cancellation without retiring another owner, publish only the latest complete inventory, and restore saved sessions once per workspace. Apply scoped search before caps and cursors, preserve dotted provider configuration siblings, and normalize Windows mark identity and localized read failures. --- ...026-10-28-workspace-indexing-exclusions.md | 47 +++- .../Lithe/Core/Rust/RustCoreBridge.swift | 6 +- .../Core/Rust/RustWorkspaceOperations.swift | 37 ++-- .../Remote/RemoteWorkspaceRouting.swift | 4 +- .../Workspace/WorkspaceFeatureContracts.swift | 4 +- .../Application/WorkspaceFeatureModel.swift | 84 ++++--- .../LazyProjectTreeInventoryTests.swift | 205 +++++++++++++++++- .../LitheTests/RemoteConnectionsTests.swift | 6 +- rust/lithe-core/src/lsp/languages/indexing.rs | 39 +++- rust/lithe-core/src/project/files.rs | 8 +- rust/lithe-core/src/project/indexing.rs | 58 +++++ .../workspace-indexing-exclusions.json | 4 +- .../components/file-explorer-tree.tsx | 2 +- .../stores/directory-marks.test.ts | 30 ++- .../file-explorer/stores/directory-marks.ts | 51 +++-- 15 files changed, 489 insertions(+), 96 deletions(-) diff --git a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md index 2ffd9ddece..f2c5cb5e14 100644 --- a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md +++ b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md @@ -29,6 +29,14 @@ macOS 扫描期间修改开关或标记时,发布库存前比较当前策略 当前项目偏好一致,不丢弃刷新期间的新设置。跨项目及同根重开时,配置调用按 完成顺序串行;旧调用迟到成功须先释放其句柄,失败须丢弃,不能覆盖新项目的 策略、加载状态或错误。关闭项目后尚未完成的安装同样由原调用回收。 +Core 的扫描代际取消经 Swift 桥接和远程路由原样保留;当前工作区遭其他 owner +刷新时复用新代际重扫,不把取消误报成目录不可用,也不反复强制退休对方的代际。 +任务取消或工作区关闭后立即停止重试。库存准备、Git 刷新及会话恢复的异步边界 +之后还须核对已应用快照 UUID,不能在较新库存发布后再次提交旧文件集。 +会话恢复的完成状态归工作区生命周期所有;恢复期间库存 UUID 改变不能让已完成 +的恢复重新变成未执行,否则下一次重扫会重开用户已经关闭的旧会话标签。 +首次完整库存的发布与树是否已经显示分开跟踪;首次扫描不完整,或被增量库存 +替换时,由第一个有效完整库存承担项目服务和本地历史基线的首次初始化。 同一策略用于初次扫描、文件名和内容搜索、符号候选以及保存直更。 例如 `vendor` 被手动排除时,`vendor/examples` 的自动包含例外不能绕过它。 不要把浏览展开返回的文件重新加入项目库存,否则手动展开会暗中取消排除。 @@ -47,6 +55,8 @@ Git 忽略语义交给本机 Git 的 `check-ignore`;查询同层目录时批 目录可用的标记选项。普通文件夹只改变角色,不创建包含例外;只有明确的取消 排除动作才恢复原角色并创建例外。不能猜测旧例外的产生原因,因此不自动删除 历史例外。继承手动排除的子目录仍须到对应父目录取消排除。 +树中的排除状态使用目录图标及提示表达,目录后代仍可浏览;文件名文字保留 +独立的 Git 状态颜色,不把整个排除子树统一染色而遮盖修改或冲突状态。 排除目录的文件仍可打开编辑。语言服务工作副本不自动打开这些文件; 已有工作副本在策略变化后关闭并清除其诊断。Java provider 合并导入排除配置, @@ -68,7 +78,7 @@ Search 或文件树卸载只清理呈现,不释放策略。移除根、关闭 跨窗口偏好更新统一处理 storage 和本窗事件,按根过滤并合并后重读当前值。 后台扫描必须贯穿工作区身份;缓存 pane 优先使用其 WorkspaceStoreScopeContext, 不能在异步边界重新取活动工作区,否则切换项目会把旧根查询交给新 owner。 -同根的另一个 owner 刷新扫描版本时,配置请求可重读偏好后重试两次;关闭或 +Windows 同根的另一个 owner 刷新扫描版本时,配置请求可重读偏好后重试两次;关闭或 移除根仍立即终止,不能把暂时的代际替换直接变成搜索错误,也不能无限重试。 多根库存、搜索与替换请求显式携带当前工作区的根集合。父根到达另行登记的嵌套 @@ -79,12 +89,17 @@ Search 或文件树卸载只清理呈现,不释放策略。移除根、关闭 根仍保留归属边界,避免目录重建后从父根回填。不能从 Core 全局策略表推断根成员,否则另一个窗口的策略或关闭 后保留的退役记录会改变当前窗口的结果。只过滤最终结果也不够,因为文本已经 被读取并驻留索引。 +同一搜索请求的目录范围同时过滤文件名、类型、符号和内容来源,并在结果上限与 +分页游标之前应用,不能让范围之外的候选占满一页。 远程传输尚未接入索引排除,因此 Git 页显示不支持并禁用开关;不能把这一状态 显示成 Git 解析失败,更不能声称远程手动排除已经生效。项目树也不提供无效的 排除动作或显示已排除图标;已有偏好保留,待能力接入后再解释。 Windows 设置页同样先检查能力,不向本机 Core 提交远程根。设置解析及存储错误 返回稳定分类,界面通过共享中英词条呈现;损坏数据保留原值,不以默认值覆盖。 +目录标记的读取也使用同一稳定错误分类,树提示不能直接展示 JSON 或存储异常的 +英文字符串。Windows 原生路径的标记、祖先约束、包含例外与记忆角色按路径身份 +匹配,外部仅修改目录名大小写后仍能取消排除;远程及大小写敏感根维持区分。 macOS 同样在适配器返回类型化失败,状态保留失败分类,呈现时再通过共享 i18n 读取当前应用语言。不要缓存已经翻译的错误字符串,否则语言即时切换后会保留旧文案。首次配置失败 保留项目身份并显示重试,重试重新读取偏好;读取失败不允许写入默认值。 @@ -126,10 +141,16 @@ Git 规则变更信号独立于可见文件路径:隐藏的 `.gitignore`、位 ## 后果 原有隐藏名单仍独立生效。新策略不会让隐藏目录重新出现。 +内置隐藏规则被用户通过 `!` 条目取消后,该条目须继续传到 Core 库存和 watcher +过滤,不能在某一层重新加入已取消的内置隐藏项。显示该目录也不代表取消其 +Git 索引排除。本地历史的单条通配符匹配不使用工作区索引的嵌套根边界; +构造独立规则时显式保留空边界,不把索引策略变成本地历史规则的来源。 自动规则的决策缓存按需建立,因此状态中的目录集合不是完整的文件系统清单。 Git 失败必须保留手动排除并报告失败,不能报告成无忽略规则。 Java 的导入配置仅属部分支持;Rust 与 Go 分别合并原生目录列表与有序过滤规则, 配置源保持原样,取消排除后恢复原值。原生动态重扫效果仍需运行时验收。 +同一 provider 同时使用嵌套对象与点分键时,递归合并对象,保留无关兄弟字段; +冲突叶子由点分键覆盖,更具体的点分前缀最后应用,再叠加当前目录排除。 Python/Basedpyright 的项目配置可以覆盖语言服务器配置,因此不改写其项目配置, 界面明确提示不能保证扫描排除。其他 provider 保持运行。 @@ -155,6 +176,30 @@ Python/Basedpyright 的项目配置可以覆盖语言服务器配置,因此不 ## 验证 +2026-10-31 整合 `preview` 的 `a1ed8f4c` 后,源码 `4e7b8441` 的 Core 1482 项 +逐项计时通过,Swift 6.4.2 / Xcode 27.2 受影响组合 177 条计时记录通过,包含 +上游本地历史、内置隐藏规则、完整 Git 观察、工作区生命周期和 Run/Java 入口。 +合成工作区包含 200 个普通文件、10000 个 Git 忽略文件及一个取消内置隐藏的 +生成文件;通过真实 Core 库存入口,关闭自动排除时返回 10202 个文件,开启时 +返回 201 个,目录浏览仍能返回生成文件。该结果证明库存剪枝和两种策略独立, +不等同于真实大型项目的 UI、内存或语言服务扫描性能保证。本轮按用户要求不 +执行 Windows 测试,Windows 原生状态继续保持未验证;固定工具链完整 CI 单独记录。 + +整合后的复审补修版通过完整 Core 1484 项逐项计时,以及本机受影响 Swift +182 条计时记录,包含完整 Git 观察 28 条、跨 owner 取消、旧快照晚发、首次完整 +库存、恢复期间的完整重扫及增量更新。编译与测试按现有 CI 分开执行,测试使用 +`--skip-build`;此前把编译放入计时入口曾在测试启动前触发 120 秒无输出保护, +未修改该预算。最终编译、182 条回归、Rust↔Swift 桥接及 Core 边界检查均通过, +运行前后 macOS diff 指纹一致。新增 Windows 回归仅书写并完成静态审查,按用户 +要求未执行;不能把共享 Core 的 macOS 结果当作 Windows 原生结果。 + +源码 `4e7b8441` 的真实 App 补验已确认普通角色不写包含例外,随后新增 Git 忽略 +仍排除目录;明确取消排除后搜索恢复,目录及后代仍可浏览并显示排除图标。 +全新 JDT 缓存只导入 `visible`,但编辑器实际补全、重启及错误恢复未在该构建 +全部完成。原生连接先后报告 `noWindowsAvailable` 与 `cgWindowNotFound`,这不是 +排除策略失败的证据。旧 QA、JDT 和辅助进程已清理,偏好精确恢复;1419 个包 +文件、9 个符号链接及签名不变。最新补修构建仍须单独取得原生证据。 + 直接重建库存的界面夹具也须先建立工作区会话与投影身份,并等待必需的工作区 模块启动,再建立通知计数基线。否则旧夹具会被新的代际校验拒绝,或把模块启动 通知误算成库存通知。Git 回调与索引配置是独立完成边界;检查配置结果时须等待 diff --git a/macos/Sources/Lithe/Core/Rust/RustCoreBridge.swift b/macos/Sources/Lithe/Core/Rust/RustCoreBridge.swift index ce32233f4b..785e2276d5 100644 --- a/macos/Sources/Lithe/Core/Rust/RustCoreBridge.swift +++ b/macos/Sources/Lithe/Core/Rust/RustCoreBridge.swift @@ -2541,8 +2541,8 @@ struct RustCoreBridge: Sendable, IncrementalLanguageServerRuntimeCore { at rootURL: URL, hiddenDirectoryNames: [String] = [], hiddenFilePatterns: [String] = [] - ) -> WorkspaceSnapshotPayload? { - execute( + ) throws -> WorkspaceSnapshotPayload { + try executeResult( command: "workspace.snapshot", payload: SnapshotRequest( root: rootURL.standardizedFileURL.path, @@ -2550,7 +2550,7 @@ struct RustCoreBridge: Sendable, IncrementalLanguageServerRuntimeCore { hiddenFilePatterns: hiddenFilePatterns, includeTree: false ) - ) + ).get() } /// Lists one visible level below each workspace-relative directory. diff --git a/macos/Sources/Lithe/Core/Rust/RustWorkspaceOperations.swift b/macos/Sources/Lithe/Core/Rust/RustWorkspaceOperations.swift index 4a8f7805b9..88829f4950 100644 --- a/macos/Sources/Lithe/Core/Rust/RustWorkspaceOperations.swift +++ b/macos/Sources/Lithe/Core/Rust/RustWorkspaceOperations.swift @@ -20,29 +20,34 @@ struct RustWorkspaceOperations: WorkspaceOperations, Sendable { do { return try core.configureIndexing(at: rootURL, policy: policy, refresh: refresh, ownerID: ownerID) } catch let error as RustCoreBridge.CoreCallError { - switch error.code { - case "cancelled": throw CancellationError() - case "invalid_request", "parse_failed": throw WorkspaceIndexingFailure.invalidSettings - case "workspace_not_found": throw WorkspaceIndexingFailure.workspaceUnavailable - case "permission_denied": throw WorkspaceIndexingFailure.permissionDenied - default: throw WorkspaceIndexingFailure.configureFailed - } + throw indexingFailure(error) } catch { throw WorkspaceIndexingFailure.configureFailed } } + private func indexingFailure(_ error: RustCoreBridge.CoreCallError) -> any Error { + switch error.code { + case "cancelled": CancellationError() + case "invalid_request", "parse_failed": WorkspaceIndexingFailure.invalidSettings + case "workspace_not_found": WorkspaceIndexingFailure.workspaceUnavailable + case "permission_denied": WorkspaceIndexingFailure.permissionDenied + default: WorkspaceIndexingFailure.configureFailed + } + } + func snapshot( at rootURL: URL, visibilityRules: FileVisibilityRules - ) -> WorkspaceSnapshot? { - if let snapshot = core.snapshot( - at: rootURL, - hiddenDirectoryNames: visibilityRules.hiddenDirectoryNames, - hiddenFilePatterns: visibilityRules.hiddenFilePatterns - )?.makeSnapshot(at: rootURL) { - return snapshot + ) throws -> WorkspaceSnapshot? { + do { + return try core.snapshot( + at: rootURL, + hiddenDirectoryNames: visibilityRules.hiddenDirectoryNames, + hiddenFilePatterns: visibilityRules.hiddenFilePatterns + ).makeSnapshot(at: rootURL) + } catch let error as RustCoreBridge.CoreCallError { + // Preserve cancellation; an unfiltered inventory is never a fallback. + throw indexingFailure(error) } - // A failed policy-aware scan must not fall back to an unfiltered inventory. - return nil } func childRows( diff --git a/macos/Sources/Lithe/Services/Remote/RemoteWorkspaceRouting.swift b/macos/Sources/Lithe/Services/Remote/RemoteWorkspaceRouting.swift index 5b60034231..2efc56bd26 100644 --- a/macos/Sources/Lithe/Services/Remote/RemoteWorkspaceRouting.swift +++ b/macos/Sources/Lithe/Services/Remote/RemoteWorkspaceRouting.swift @@ -177,9 +177,9 @@ struct RemoteRoutingWorkspaceOperations: WorkspaceOperations { local.releaseIndexing(at: rootURL, revision: revision, ownerID: ownerID) } - func snapshot(at rootURL: URL, visibilityRules: FileVisibilityRules) -> WorkspaceSnapshot? { + func snapshot(at rootURL: URL, visibilityRules: FileVisibilityRules) throws -> WorkspaceSnapshot? { guard let binding = registry.binding(forRoot: rootURL) else { - return local.snapshot(at: rootURL, visibilityRules: visibilityRules) + return try local.snapshot(at: rootURL, visibilityRules: visibilityRules) } let root = binding.root guard let children = try? rows(of: root, at: root, binding: binding, rules: visibilityRules) else { diff --git a/macos/Sources/LitheCoreContracts/Workspace/WorkspaceFeatureContracts.swift b/macos/Sources/LitheCoreContracts/Workspace/WorkspaceFeatureContracts.swift index 70bec329ea..baa6405e50 100644 --- a/macos/Sources/LitheCoreContracts/Workspace/WorkspaceFeatureContracts.swift +++ b/macos/Sources/LitheCoreContracts/Workspace/WorkspaceFeatureContracts.swift @@ -74,7 +74,9 @@ package protocol WorkspaceOperations: Sendable { /// Drops package-compaction lookahead after workspace or filesystem changes. func invalidateDirectoryListings() - func snapshot(at rootURL: URL, visibilityRules: FileVisibilityRules) -> WorkspaceSnapshot? + /// A retired indexing generation throws CancellationError so a current + /// workspace can rescan without reporting a filesystem failure. + func snapshot(at rootURL: URL, visibilityRules: FileVisibilityRules) throws -> WorkspaceSnapshot? func warmSearchIndex(at rootURL: URL, visibilityRules: FileVisibilityRules) func updateSearchIndex(at rootURL: URL, changedPaths: [String], visibilityRules: FileVisibilityRules) func invalidateSearchIndex(at rootURL: URL, visibilityRules: FileVisibilityRules) diff --git a/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift b/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift index 1ded2ebea0..e84168719c 100644 --- a/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift +++ b/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift @@ -79,6 +79,7 @@ package final class WorkspaceFeatureModel: ObservableObject { private var gitRefreshGeneration = 0 private var workspaceSessionPersistenceTask: Task? private var hasRestoredWorkspaceSession = false + private var hasPublishedCompleteSnapshot = false private var directoryListingRevision = 0 private struct DirectoryLoad { let id: UUID @@ -281,6 +282,7 @@ package final class WorkspaceFeatureModel: ObservableObject { gitOperationFreezeDepth = 0 workspaceURL = nil hasRestoredWorkspaceSession = false + hasPublishedCompleteSnapshot = false rootNode = nil directoryMarks = [:] indexingSettings = WorkspaceIndexingSettings() @@ -338,6 +340,7 @@ package final class WorkspaceFeatureModel: ObservableObject { } self.visibilityRules = visibilityRules hasRestoredWorkspaceSession = false + hasPublishedCompleteSnapshot = false pendingExternalPaths.removeAll() pendingGitRefresh = false pendingIndexingRuleRefresh = false @@ -479,17 +482,39 @@ package final class WorkspaceFeatureModel: ObservableObject { return .unavailable } } + var refreshIndexing = true while true { + if Task.isCancelled { + if isCurrent() { isLoadingWorkspace = false; isRefreshingWorkspace = false } + return .stale + } let rulesRevision = indexingRulesRevision let policy = WorkspaceIndexingPolicy(marks: directoryMarks, settings: indexingSettings) do { - let status = try await configureCurrentIndexing(at: workspaceURL, policy: policy, refresh: true, isCurrent: isCurrent) + let status = try await configureCurrentIndexing(at: workspaceURL, policy: policy, refresh: refreshIndexing, isCurrent: isCurrent) guard isCurrent() else { return .stale } indexingStatus = status indexingIssue = nil + snapshot = try await Task.detached(priority: .userInitiated) { + try operations.snapshot(at: workspaceURL, visibilityRules: rules).map { snapshot in + Self.listingTree(of: snapshot, reloading: previouslyLoaded, operations: operations, rules: rules) + } + }.value + guard isCurrent() else { return .stale } + let validatedStatus = try await configureCurrentIndexing(at: workspaceURL, policy: policy, refresh: false, isCurrent: isCurrent) + guard isCurrent() else { return .stale } + indexingStatus = validatedStatus } catch { guard isCurrent() else { return .stale } if error is CancellationError { + if !Task.isCancelled { + // Another owner refreshed the root. Reuse its current + // generation rather than retiring it again on retry. + refreshIndexing = rulesRevision != indexingRulesRevision + || policy != WorkspaceIndexingPolicy(marks: directoryMarks, settings: indexingSettings) + await Task.yield() + continue + } isLoadingWorkspace = false isRefreshingWorkspace = false return .stale @@ -500,27 +525,6 @@ package final class WorkspaceFeatureModel: ObservableObject { isRefreshingWorkspace = false return .unavailable } - snapshot = await Task.detached(priority: .userInitiated) { - operations.snapshot(at: workspaceURL, visibilityRules: rules).map { snapshot in - Self.listingTree( - of: snapshot, - reloading: previouslyLoaded, - operations: operations, - rules: rules - ) - } - }.value - - if isCurrent() { - do { - let status = try await configureCurrentIndexing(at: workspaceURL, policy: policy, refresh: false, isCurrent: isCurrent) - guard isCurrent() else { return .stale } - indexingStatus = status - } catch { - guard isCurrent() else { return .stale } - if !(error is CancellationError) { recordIndexingFailure(error) } - } - } // A persisted switch/mark can change while either Core call is in // flight. Rescan with the latest policy before publishing inventory. guard isCurrent() else { return .stale } @@ -529,6 +533,7 @@ package final class WorkspaceFeatureModel: ObservableObject { pendingIndexingRuleRefresh = false break } + refreshIndexing = true } guard isCurrent() else { if isInitialLoad { @@ -570,33 +575,43 @@ package final class WorkspaceFeatureModel: ObservableObject { } if !hasRestoredWorkspaceSession { + // Claim restoration before yielding: a concurrent inventory rescan + // belongs to the same session and must not start it a second time. + hasRestoredWorkspaceSession = true if let restoreSession, let session = workspaceSessionStore.load(for: workspaceURL) { let excludedOpenFiles = session.openPaths.map { URL(fileURLWithPath: $0).standardizedFileURL } .filter { isWorkspaceURL($0) && isIndexExcluded($0) && fileOperations.fileExists(at: $0) && !fileOperations.isDirectory(at: $0) } await restoreSession(session, snapshot.files + excludedOpenFiles) } + // A newer inventory does not undo a completed session restore. guard isCurrent() else { return .stale } - hasRestoredWorkspaceSession = true } - guard isCurrent() else { return .stale } + guard isCurrent(), appliedSnapshot?.id == snapshot.id else { return .stale } await updateWatchConfiguration() - guard isCurrent() else { return .stale } + guard isCurrent(), appliedSnapshot?.id == snapshot.id else { return .stale } // Publish Git before slow project preparation, but metadata-only policy // reevaluation must not recursively request another Git refresh. if refreshGitAfterwards { await requestGitRefreshNow() } - guard isCurrent() else { return .stale } - if snapshot.incompleteDirectories.isEmpty { - await onSnapshotLoaded?(snapshot, isInitialLoad) - } else { - indexingIssue = .incompleteScan - } - guard isCurrent() else { return .stale } + guard isCurrent(), appliedSnapshot?.id == snapshot.id else { return .stale } + await publishCompleteSnapshot(snapshot) + guard isCurrent(), appliedSnapshot?.id == snapshot.id else { return .stale } if pendingFullRescan || pendingWatchRootsChanged { scheduleRecovery() } return .loaded(snapshot) } + private func publishCompleteSnapshot(_ snapshot: WorkspaceSnapshot) async { + guard appliedSnapshot?.id == snapshot.id else { return } + guard snapshot.incompleteDirectories.isEmpty else { + indexingIssue = .incompleteScan + return + } + let isFirstCompleteSnapshot = !hasPublishedCompleteSnapshot + hasPublishedCompleteSnapshot = true + await onSnapshotLoaded?(snapshot, isFirstCompleteSnapshot) + } + package func refreshCurrent() async { guard workspaceURL != nil, !isLoadingWorkspace, !isRefreshingWorkspace else { return } refreshTask?.cancel() @@ -1794,14 +1809,15 @@ package final class WorkspaceFeatureModel: ObservableObject { let snapshot = WorkspaceSnapshot( root: root, files: files, - nestedWorktrees: appliedSnapshot?.nestedWorktrees ?? [] + nestedWorktrees: appliedSnapshot?.nestedWorktrees ?? [], + incompleteDirectories: appliedSnapshot?.incompleteDirectories ?? [] ) // Commit the inventory before yielding. A later watcher batch must merge // into these files even when compact-package rows still need relisting. rootNode = root projectFiles = files appliedSnapshot = snapshot - await onSnapshotLoaded?(snapshot, false) + await publishCompleteSnapshot(snapshot) guard reloadsTree, let workspaceURL else { return } let operations = self.operations diff --git a/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift b/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift index 6ddb8a6ffc..e14c5422f9 100644 --- a/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift +++ b/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift @@ -1,12 +1,122 @@ import Combine import Foundation import LitheCoreContracts +import LitheModuleAPI import LitheWorkspaceModule import Testing @Suite("Lazy project tree inventory") @MainActor struct LazyProjectTreeInventoryTests { + @Test(arguments: [false, true]) + func aNewSnapshotDuringSessionRestoreDoesNotReplayTheSavedSession(fullRescan: Bool) async throws { + let root = URL(fileURLWithPath: "/in-memory/snapshot-during-session-restore") + let old = root.appendingPathComponent("Old.java"), new = root.appendingPathComponent("New.java") + let fixture = InventoryFixture(root: root, files: [old], rows: [root.path: []]) + fixture.sessionStore.session = WorkspaceSession(openPaths: [old.path], activePath: old.path, selectedSidebar: "project") + let started = TestGate(), release = TestGate() + fixture.restoreSessionAction = { started.open(); _ = await release.waitUntilOpen() } + fixture.model.beginWorkspace(at: root, visibilityRules: .default) + let loading = Task { await fixture.model.rebuild(at: root, rules: .default, refreshGitAfterwards: false, isCurrent: { true }) } + defer { release.open(); loading.cancel(); fixture.close() } + #expect(await started.waitUntilOpen()) + fixture.disk.set(files: [new], rows: [root.path: []]) + if fullRescan { + _ = await fixture.model.rebuild(at: root, rules: .default, refreshGitAfterwards: false, isCurrent: { true }) + } else { + let updated = fixture.expectRefresh(for: new) + try fixture.emit([old, new]) + #expect(await updated.waitUntilOpen()) + } + release.open() + _ = await loading.value + _ = await fixture.model.rebuild(at: root, rules: .default, refreshGitAfterwards: false, isCurrent: { true }) + #expect(fixture.restoreSessionCount == 1) + #expect(fixture.model.projectFiles == [new]) + } + + @Test(arguments: [false, true]) + func aNewerSnapshotPublishedDuringGitRefreshCannotBeFollowedByTheOldInventory(incremental: Bool) async throws { + let root = URL(fileURLWithPath: "/in-memory/snapshot-publication-order") + let old = root.appendingPathComponent("Old.java"), new = root.appendingPathComponent("New.java") + let fixture = InventoryFixture(root: root, files: [old], rows: [root.path: []]) + let gitStarted = TestGate(), releaseGit = TestGate() + fixture.gitRefreshAction = { gitStarted.open(); _ = await releaseGit.waitUntilOpen() } + fixture.model.beginWorkspace(at: root, visibilityRules: .default) + let first = Task { await fixture.model.rebuild(at: root, rules: .default, isCurrent: { true }) } + defer { releaseGit.open(); first.cancel(); fixture.close() } + #expect(await gitStarted.waitUntilOpen()) + fixture.disk.set(files: [new], rows: [root.path: []]) + if incremental { + let updated = fixture.expectRefresh(for: new) + try fixture.emit([old, new]) + #expect(await updated.waitUntilOpen()) + } else { + _ = await fixture.model.rebuild(at: root, rules: .default, refreshGitAfterwards: false, indexingOnly: true, isCurrent: { true }) + } + let currentID = fixture.model.appliedSnapshot?.id + releaseGit.open() + let obsolete = await first.value + if case .stale = obsolete {} else { Issue.record("The replaced snapshot was still published") } + #expect(fixture.publishedFiles == [[new]]) + #expect(fixture.publishedInitialFlags == [true]) + #expect(fixture.model.appliedSnapshot?.id == currentID) + } + + @Test(arguments: ["configure", "snapshot", "validate"]) + func anotherOwnersIndexingRefreshRetriesTheCurrentWorkspaceWithoutRetiringItAgain(phase: String) async { + let root = URL(fileURLWithPath: "/in-memory/cross-owner-indexing-refresh") + let file = root.appendingPathComponent("Keep.java") + let fixture = InventoryFixture(root: root, files: [file], rows: [root.path: []]) + defer { fixture.close() } + if phase == "snapshot" { + fixture.disk.failNextSnapshot(CancellationError()) + } else { + fixture.disk.cancelConfiguration(number: phase == "configure" ? 1 : 2) + } + await fixture.load() + #expect(fixture.model.projectFiles == [file]) + #expect(fixture.model.loadErrorMessage == nil) + #expect(fixture.model.indexingError == nil) + #expect(!fixture.model.isLoadingWorkspace) + #expect(fixture.publishedFiles == [[file]]) + #expect(fixture.disk.snapshotCount == (phase == "configure" ? 1 : 2)) + #expect(fixture.disk.configurationRefreshes == (phase == "validate" ? [true, false, false, false] : [true, false, false])) + } + + @Test(arguments: [false, true]) + func aCancelledSnapshotCannotRetryAfterItsWorkspaceOrTaskEnds(closeWorkspace: Bool) async { + let root = URL(fileURLWithPath: "/in-memory/cancelled-indexing-snapshot") + let fixture = InventoryFixture(root: root, files: [], rows: [root.path: []]) + fixture.disk.failNextSnapshot(CancellationError(), block: true) + fixture.model.beginWorkspace(at: root, visibilityRules: .default) + let loading = Task { await fixture.model.rebuild(at: root, rules: .default, isCurrent: { true }) } + defer { loading.cancel(); fixture.disk.releaseSnapshot.open(); fixture.close() } + #expect(await fixture.disk.snapshotStarted.waitUntilOpen()) + if closeWorkspace { fixture.model.reset() } else { loading.cancel() } + fixture.disk.releaseSnapshot.open() + let result = await loading.value + if case .stale = result {} else { Issue.record("An obsolete snapshot was retried or published") } + #expect(fixture.disk.snapshotCount == 1) + #expect(fixture.disk.configurationCount == 1) + #expect(!fixture.disk.snapshotTimedOut) + #expect(fixture.publishedFiles.isEmpty) + #expect(fixture.model.loadErrorMessage == nil) + } + + @Test + func aSnapshotReadFailureKeepsItsClassificationAndDoesNotRetry() async { + let root = URL(fileURLWithPath: "/in-memory/snapshot-permission-error") + let fixture = InventoryFixture(root: root, files: [], rows: [root.path: []]) + defer { fixture.close() } + fixture.disk.failNextSnapshot(WorkspaceIndexingFailure.permissionDenied) + await fixture.load() + #expect(fixture.model.loadErrorMessage == L10n.string("Lithe cannot access the project folder. Check its permissions, then retry.")) + #expect(fixture.disk.snapshotCount == 1) + #expect(fixture.publishedFiles.isEmpty) + #expect(!fixture.model.isLoadingWorkspace) + } + @Test(arguments: [false, true]) func mixedRuleChangesStillDeliverOrdinaryFileUpdates(metadata: Bool) async throws { let root = URL(fileURLWithPath: "/in-memory/mixed-indexing-rules") @@ -110,8 +220,8 @@ struct LazyProjectTreeInventoryTests { #expect(fixture.publishedFiles.isEmpty) } - @Test - func aCompleteIndexingRescanPublishesRecoveryEvenWhenTheFileListIsUnchanged() async { + @Test(arguments: [false, true]) + func aCompleteIndexingRescanPublishesRecoveryEvenWhenTheFileListIsUnchanged(watcherUpdate: Bool) async throws { let root = URL(fileURLWithPath: "/in-memory/indexing-complete-recovery") let file = root.appendingPathComponent("Keep.java") let fixture = InventoryFixture(root: root, files: [file], rows: [root.path: []]) @@ -120,10 +230,27 @@ struct LazyProjectTreeInventoryTests { await fixture.load() #expect(fixture.publishedFiles.isEmpty) #expect(fixture.model.appliedSnapshot?.incompleteDirectories == ["unreadable"]) + let files: [URL] + if watcherUpdate { + let added = root.appendingPathComponent("Added.java") + files = [file, added] + fixture.disk.set(files: files, rows: [root.path: []]) + // Incomplete inventories use a full rescan. Wait for its applied + // tree instead of an incremental-index or unrelated Git callback. + let updated = fixture.expectSnapshotRefresh() + try fixture.emit([added]) + #expect(await updated.waitUntilOpen()) + #expect(Set(fixture.model.projectFiles) == Set(files)) + #expect(fixture.model.appliedSnapshot?.incompleteDirectories == ["unreadable"]) + #expect(fixture.publishedFiles.isEmpty) + } else { files = [file] } fixture.disk.setIncompleteDirectories([]) _ = await fixture.model.rebuild(at: root, rules: .default, refreshGitAfterwards: false, indexingOnly: true, isCurrent: { true }) - #expect(fixture.publishedFiles == [[file]]) + #expect(fixture.publishedFiles.map(Set.init) == [Set(files)]) + #expect(fixture.publishedInitialFlags == [true]) #expect(fixture.model.appliedSnapshot?.incompleteDirectories.isEmpty == true) + _ = await fixture.model.rebuild(at: root, rules: .default, refreshGitAfterwards: false, isCurrent: { true }) + #expect(fixture.publishedInitialFlags == [true, false]) } @Test @@ -577,11 +704,17 @@ private final class InventoryFixture { let root: URL let disk: InventoryDisk let watcher = InventoryWatcherFactory() + let sessionStore = InventorySessionStore() let model: WorkspaceFeatureModel var changes: [WorkspaceFileChange] = [] var publishedFiles: [[URL]] = [] + var publishedInitialFlags: [Bool] = [] + var gitRefreshAction: (@MainActor () async -> Void)? + var restoreSessionAction: (@MainActor () async -> Void)? + var restoreSessionCount = 0 private var refreshGates: [String: TestGate] = [:] private var gitRefreshGate: TestGate? + private var refreshObservations: Set = [] init(root: URL, files: [URL], rows: [String: [FileNode]], directoryMarkStore: any WorkspaceDirectoryMarkStoring = EmptyWorkspaceDirectoryMarkStore()) { self.root = root @@ -589,18 +722,27 @@ private final class InventoryFixture { model = WorkspaceFeatureModel( operations: disk, fileOperations: disk, gitWatchContextProvider: InventoryGitContext(), directoryWatcherFactory: watcher, - workspaceSessionStore: InventorySessionStore(), directoryMarkStore: directoryMarkStore, observationDelay: { _ in } + workspaceSessionStore: sessionStore, directoryMarkStore: directoryMarkStore, observationDelay: { _ in } ) model.configureProjection( documentsProvider: { [] }, activeDocumentProvider: { nil }, selectedSidebarProvider: { "project" }, setSelectedSidebar: { _ in }, - restoreSession: { _, _ in }, openFile: { _ in }, notify: { _ in }, + restoreSession: { [weak self] _, _ in + self?.restoreSessionCount += 1 + await self?.restoreSessionAction?() + }, openFile: { _ in }, notify: { _ in }, recordHistory: { _, _ in }, relocateHistory: { _, _ in }, relocateOpenDocuments: { _, _ in }, closeDocuments: { _ in }, processExternalChanges: { _ in false }, notifyWorkspaceFileChanges: { [weak self] in self?.changes.append(contentsOf: $0) }, - reloadProjectServices: {}, refreshGit: { [weak self] in self?.gitRefreshGate?.open() }, updateHistoryVisibilityRules: { _ in }, - onSnapshotLoaded: { [weak self] snapshot, _ in self?.publishedFiles.append(snapshot.files) }, + reloadProjectServices: {}, refreshGit: { [weak self] in + self?.gitRefreshGate?.open() + await self?.gitRefreshAction?() + }, updateHistoryVisibilityRules: { _ in }, + onSnapshotLoaded: { [weak self] snapshot, initial in + self?.publishedFiles.append(snapshot.files) + self?.publishedInitialFlags.append(initial) + }, warmSearchIndex: { _, _ in }, updateSearchIndex: { [weak self] _, paths, _ in for path in paths { self?.refreshGates[path]?.open() } @@ -626,12 +768,21 @@ private final class InventoryFixture { return gate } + func expectSnapshotRefresh() -> TestGate { + let gate = TestGate() + model.$isRefreshingWorkspace.dropFirst().filter { !$0 } + .sink { _ in gate.open() }.store(in: &refreshObservations) + return gate + } + func emit(_ urls: [URL]) throws { let source = try #require(watcher.source) source.emit(urls.map(\.path)) } func close() { + refreshObservations.removeAll() + disk.releaseSnapshot.open() disk.releaseConfiguration.open() disk.releaseListing.open() model.reset() @@ -657,6 +808,19 @@ private final class InventoryDisk: WorkspaceOperations, WorkspaceFileOperations, private var configurationTimeout = false private var configurationRevision: UInt64 = 0 private var configurations = 0 + private var refreshes: [Bool] = [] + private var cancelledConfigurations: Set = [] + var configurationRefreshes: [Bool] { lock.withLock { refreshes } } + func cancelConfiguration(number: Int) { lock.withLock { cancelledConfigurations.insert(number) } } + private var snapshotFailure: (any Error)? + private var blockSnapshot = false + private var snapshotTimeout = false + var snapshotTimedOut: Bool { lock.withLock { snapshotTimeout } } + let snapshotStarted = TestGate() + let releaseSnapshot = TestGate() + func failNextSnapshot(_ error: any Error, block: Bool = false) { + lock.withLock { snapshotFailure = error; blockSnapshot = block } + } private var nextConfigurationFinished: TestGate? var configurationCount: Int { lock.withLock { configurations } } func expectConfiguration() -> TestGate { @@ -696,12 +860,14 @@ private final class InventoryDisk: WorkspaceOperations, WorkspaceFileOperations, func blockNextListing() { lock.withLock { shouldBlock = true } } func configureIndexing(at rootURL: URL, policy: WorkspaceIndexingPolicy, refresh: Bool, ownerID: String? = nil) throws -> WorkspaceIndexingStatus { - let completion = lock.withLock { + let (completion, cancelled) = lock.withLock { configurations += 1 + refreshes.append(refresh) let gate = nextConfigurationFinished nextConfigurationFinished = nil - return gate + return (gate, cancelledConfigurations.remove(configurations) != nil) } + if cancelled { throw CancellationError() } if let error = lock.withLock({ let error = nextFailure; nextFailure = nil; return error }) { throw error } let (blocks, fails) = lock.withLock { let blocks = blockConfiguration @@ -728,9 +894,23 @@ private final class InventoryDisk: WorkspaceOperations, WorkspaceFileOperations, return status } - func snapshot(at rootURL: URL, visibilityRules: FileVisibilityRules) -> WorkspaceSnapshot? { - lock.withLock { + func snapshot(at rootURL: URL, visibilityRules: FileVisibilityRules) throws -> WorkspaceSnapshot? { + let (failure, blocks) = lock.withLock { scans += 1 + let failure = snapshotFailure + snapshotFailure = nil + let blocks = blockSnapshot + blockSnapshot = false + return (failure, blocks) + } + if blocks { + snapshotStarted.open() + // The production snapshot worker owns this synchronous protocol call. + let released = releaseSnapshot.waitSynchronously(timeout: 5) + lock.withLock { snapshotTimeout = !released } + } + if let failure { throw failure } + return lock.withLock { let visible = files.filter { file in let relative = String(file.path.dropFirst(rootURL.path.count + 1)) return !(policy?.manualExcludedDirectories.contains(where: { relative == $0 || relative.hasPrefix($0 + "/") }) ?? false) @@ -778,7 +958,8 @@ private struct InventoryGitContext: GitWatchContextProviding { @MainActor private final class InventorySessionStore: WorkspaceSessionStoring { - func load(for workspaceURL: URL) -> WorkspaceSession? { nil } + var session: WorkspaceSession? + func load(for workspaceURL: URL) -> WorkspaceSession? { session } func save(_ session: WorkspaceSession, for workspaceURL: URL) {} } diff --git a/macos/Tests/LitheTests/RemoteConnectionsTests.swift b/macos/Tests/LitheTests/RemoteConnectionsTests.swift index abd2f92cca..5e226b16ac 100644 --- a/macos/Tests/LitheTests/RemoteConnectionsTests.swift +++ b/macos/Tests/LitheTests/RemoteConnectionsTests.swift @@ -336,10 +336,10 @@ struct RemoteWorkspaceRoutingTests { #expect(status.revision > 0) #expect(status.excludedDirectories["excluded"] == "manual") let rules = FileVisibilityRules(hiddenDirectoryNames: [], hiddenFilePatterns: []) - let snapshot = try #require(router.snapshot(at: root, visibilityRules: rules)) + let snapshot = try #require(try router.snapshot(at: root, visibilityRules: rules)) #expect(snapshot.files.map(\.lastPathComponent) == ["visible.txt"]) router.releaseIndexing(at: root, revision: status.revision) - #expect(router.snapshot(at: root, visibilityRules: rules) == nil) + #expect(throws: CancellationError.self) { try router.snapshot(at: root, visibilityRules: rules) } } private let root = URL(fileURLWithPath: "/tmp/lithe-tests/RemoteWorkspaces/c/h/app", isDirectory: true) @@ -509,7 +509,7 @@ struct RemoteWorkspaceRoutingTests { let (_, tree, transport, _) = routing() transport.directories["/srv/app"] = [entry("b.txt", "file"), entry("src", "directory"), entry(".git", "directory"), entry("A.md", "file")] let rules = FileVisibilityRules(hiddenDirectoryNames: [".git"], hiddenFilePatterns: []) - let snapshot = try #require(tree.snapshot(at: root, visibilityRules: rules)) + let snapshot = try #require(try tree.snapshot(at: root, visibilityRules: rules)) #expect(snapshot.root.children?.map(\.url.lastPathComponent) == ["src", "A.md", "b.txt"]) #expect(snapshot.root.children?.first?.children == nil) } diff --git a/rust/lithe-core/src/lsp/languages/indexing.rs b/rust/lithe-core/src/lsp/languages/indexing.rs index daa3c0958c..385deea488 100644 --- a/rust/lithe-core/src/lsp/languages/indexing.rs +++ b/rust/lithe-core/src/lsp/languages/indexing.rs @@ -67,7 +67,7 @@ fn append_array(value: &mut Value, path: &[&str], additions: Vec, defaul .and_then(|object| object.remove(&dotted)); if let Some(previous) = previous { if let Some(slot) = nested_slot(value, &path[..length]) { - *slot = previous; + merge_dotted_configuration(slot, previous); } } } @@ -88,6 +88,19 @@ fn append_array(value: &mut Value, path: &[&str], additions: Vec, defaul } } +// Dotted prefixes override conflicting leaves, with the longest prefix applied +// last. Unrelated nested provider settings must survive normalization. +fn merge_dotted_configuration(target: &mut Value, overlay: Value) { + match (target, overlay) { + (Value::Object(target), Value::Object(overlay)) => { + for (key, value) in overlay { + merge_dotted_configuration(target.entry(key).or_insert(Value::Null), value); + } + } + (target, overlay) => *target = overlay, + } +} + fn nested_slot<'a>(value: &'a mut Value, path: &[&str]) -> Option<&'a mut Value> { let object = value.as_object_mut()?; let child = object.entry(path[0]).or_insert(Value::Null); @@ -104,6 +117,30 @@ fn nested_slot<'a>(value: &'a mut Value, path: &[&str]) -> Option<&'a mut Value> mod tests { use super::*; #[test] + fn dotted_native_settings_preserve_nested_siblings_and_override_only_conflicting_leaves() { + let base = json!({ + "rust-analyzer":{"files":{"watcher":"client","exclude":["nested"]},"cargo":{"allFeatures":true}}, + "rust-analyzer.files":{"exclude":["prefix"],"otherSetting":true}, + "rust-analyzer.files.exclude":["leaf"] + }); + let original = base.clone(); + let configured = with_roots("rust", Some(&base), &["vendor".into()]); + assert_eq!( + configured["rust-analyzer"]["files"], + json!({ + "watcher":"client","exclude":["leaf","vendor"],"otherSetting":true + }) + ); + assert_eq!( + configured["rust-analyzer"]["cargo"], + base["rust-analyzer"]["cargo"] + ); + assert_eq!( + base, original, + "normalization must not mutate stored settings" + ); + } + #[test] fn native_exclusions_preserve_settings_and_restore_them_on_undo() { let base = json!({"rust-analyzer":{"files":{"exclude":["existing"]},"cargo":{"allFeatures":true}}}); let excluded = with_roots("rust", Some(&base), &["vendor".into(), "带 空格".into()]); diff --git a/rust/lithe-core/src/project/files.rs b/rust/lithe-core/src/project/files.rs index afaf81a665..80ea386bce 100644 --- a/rust/lithe-core/src/project/files.rs +++ b/rust/lithe-core/src/project/files.rs @@ -625,7 +625,9 @@ pub(crate) fn search_everywhere_with_page( for id in names.all_file_ids() { crate::protocol::cancellation::check()?; let Some(file) = names.file(id) else { continue }; - if !file_mask_allows(&masks, &file.path) { + if !scope_allows(&request.scope_paths, &file.path) + || !file_mask_allows(&masks, &file.path) + { continue; } let name = file.path.rsplit('/').next().unwrap_or(&file.path); @@ -699,7 +701,9 @@ pub(crate) fn search_everywhere_with_page( for id in index.all_file_ids() { crate::protocol::cancellation::check()?; let Some(file) = index.file(id) else { continue }; - if !file_mask_allows(&masks, &file.path) { + if !scope_allows(&request.scope_paths, &file.path) + || !file_mask_allows(&masks, &file.path) + { continue; } for symbol in index.symbols(id) { diff --git a/rust/lithe-core/src/project/indexing.rs b/rust/lithe-core/src/project/indexing.rs index b55bfd3e60..e406e8c635 100644 --- a/rust/lithe-core/src/project/indexing.rs +++ b/rust/lithe-core/src/project/indexing.rs @@ -714,6 +714,64 @@ mod tests { use serde_json::json; use std::fs; + #[test] + fn scoped_everywhere_search_filters_each_source_before_limits_and_pagination() { + let workspace = Workspace::new(); + workspace.configure(&[], &[], false); + for folder in ["a-outside", "src", "src-other"] { + fs::create_dir_all(workspace.0.join(folder)).unwrap(); + for name in ["NeedleA", "NeedleB"] { + fs::write( + workspace.0.join(folder).join(format!("{name}.java")), + format!("class {name} {{\n void needleMethod() {{}}\n}}\n"), + ) + .unwrap(); + } + } + for kind in ["file", "type", "symbol"] { + let request = json!({ + "root":workspace.0,"query":"Needle","scopePaths":["src"],"maxResults":1, + "maxFileResults":usize::from(kind == "file"), + "maxSymbolResults":usize::from(kind != "file"),"maxContentResults":0 + }); + let response = + files::search_everywhere(serde_json::from_value(request).unwrap()).unwrap(); + assert_eq!(response.matches.len(), 1); + assert!(response.matches[0].path.starts_with("src/")); + + let mut request = json!({ + "root":workspace.0,"query":"Needle","scopePaths":["src"], + "pageSize":1,"resultKinds":[kind] + }); + let mut paths = std::collections::BTreeSet::new(); + let mut complete = false; + for _ in 0..4 { + let page = super::super::search_paging::search_page( + serde_json::from_value(request.clone()).unwrap(), + ) + .unwrap(); + for item in page["matches"].as_array().unwrap() { + assert_eq!(item["kind"], kind); + let path = item["path"].as_str().unwrap(); + assert!(path.starts_with("src/"), "out-of-scope result: {path}"); + assert!(paths.insert(path.to_owned()), "duplicate result: {path}"); + } + if page["nextCursor"].is_null() { + complete = true; + break; + } + request["cursor"] = page["nextCursor"].clone(); + } + assert!(complete, "scoped pagination did not terminate"); + assert_eq!( + paths, + ["src/NeedleA.java".to_owned(), "src/NeedleB.java".to_owned()] + .into_iter() + .collect() + ); + } + } + #[test] fn java_import_exclusion_matches_the_directory_itself_before_its_descendants() { let workspace = Workspace::new(); diff --git a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json index cf381087de..284e6bd9dd 100644 --- a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json +++ b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json @@ -4,10 +4,10 @@ "group": "工作区生命周期", "capability": "目录索引排除与 Git 自动排除", "owner": "Workspace", - "verification": "本地索引策略与目录浏览分离;远程根禁用并保留偏好。2026-10-31 整合preview 0c13ca25后,源码9068703a通过完整Rust门禁及Core1474项逐项计时(1442单元、32集成),索引/LSP聚焦34项、Swift6.4定向98项、macOS/Bun项目树74、文件系统17、LSP68、Java watcher15、工作区生命周期31、快速打开10及Git设置3项通过,TypeScript通过。源码9068703a的macOS App验证损坏配置中文错误与原值保留、修正后重试、不可读取根中英文错误及恢复权限后显式Retry、取消排除搜索与重启持久化、同窗口项目切换、linked worktree外部stage/commit和父仓库观察子模块HEAD。新JDT缓存仅生成visible项目并返回PrintStream.print候选,不当作后台零扫描保证。1419个包文件与9个符号链接未变,测试实例/JDT/辅助进程已关闭,开发偏好恢复,保留用户另一Dev实例。普通目录与即时双向语言切换另有此前构建原生证据。完全缺失最近项目被欢迎页禁用,恢复流程使用真实权限失败验收。固定Xcode26.6完整CI以PR最终SHA报告为准。Windows原生界面仍pending,Bun结果不能替代Windows UI;Java构建系统模块仍可能扫描,Go/Rust仅合并原生配置。 首轮最终SHA 7c5173b5的Windows前端2922项通过;SharedRust与真实JDT同停于冷启动Git排除断言,已确认并修复Windows原生规范路径与协议显示路径混用导致的策略查表缺失,修复后本机完整Core1474项再次计时通过、聚焦34项通过,独立只读复审无发现,后续原生CI以PR最终SHA为准。补查后修复macOS打开代次与投影资源代次混用,以及无Java决策时重复写空值造成的设置根通知;本机Swift6.4.2/Xcode27.2受影响126条和身份消费者116条计时记录全通过,包含完整Git观察、双语设置、立即Run与同根/跨根旧动作隔离,未放宽等待或断言。本机完整套件另见AppKit动画等待,最终固定工具链仍由CI确认。", + "verification": "本轮按用户要求保持Draft,不执行Windows/Frontend测试或Windows CI。整合preview a1ed8f4c的源码4e7b8441通过Core1482项、本机Swift6.4.2/Xcode27.2受影响177条及插件512条计时记录;合成工作区关闭/开启Git自动排除的库存为10202/201,目录浏览保持可用,该结果仅证明剪枝而非UI或LSP后台性能。随后独立复审补修跨owner取消分类与重试、快照晚发、首次完整库存及会话恢复、范围分页、点分配置合并、Windows路径身份及目录标记错误本地化;修复后的完整Core1484项计时全部通过,按现有CI分离编译后,当前源码Swift182条计时记录(含完整Git观察28条)、Rust↔Swift桥接与Core边界检查通过,macOS diff指纹在运行前后一致;此前将构建放入计时入口的无输出保护保留,未放宽预算。最新App证据待本轮结束后记录。源码4e7b8441真实App已验证普通角色不写include、Git忽略仍排除、明确取消排除恢复搜索,以及冷JDT仅导入visible;实际补全、重启和错误恢复尚未在该构建完成,CUA窗口故障已记录。旧QA进程已清理、偏好精确恢复,1419包文件/9符号链接及签名不变。9068703a的完整原生错误/Retry、外部Git/子模块、真实JDT补全与EA切换/重启证据保留在Note,不能改标新源码。最新原生与固定Xcode26.6完整CI仍pending;Windows新回归本轮仅书写和静态审查,未执行。Java显式构建模块仍可能扫描,Go/Rust配置送达不等于后台零扫描。", "macos": { "implementationStatus": "partial", - "verificationStatus": "verified", + "verificationStatus": "pending", "evidence": [ "macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift", "macos/Sources/Lithe/Views/App/WorkspaceIndexingSettingsView.swift", diff --git a/windows/tauri/src/features/file-explorer/components/file-explorer-tree.tsx b/windows/tauri/src/features/file-explorer/components/file-explorer-tree.tsx index 470b3a8443..0625c6bae6 100644 --- a/windows/tauri/src/features/file-explorer/components/file-explorer-tree.tsx +++ b/windows/tauri/src/features/file-explorer/components/file-explorer-tree.tsx @@ -202,7 +202,6 @@ function FileExplorerTreeComponent({ [rootFolderPath, workspaceFolders], ); const { markForPath, markDirectory, error: directoryMarksError } = useDirectoryMarks(workspaceRootPaths); - useEffect(() => { if (directoryMarksError) toast.error(directoryMarksError); }, [directoryMarksError]); const [indexingStatuses, setIndexingStatuses] = useState>({}); useEffect(() => { const roots = nativeRootPaths; @@ -309,6 +308,7 @@ function FileExplorerTreeComponent({ ); const updateSetting = useSettingsStore((state) => state.actions.updateSetting); const { t } = useTranslation(); + useEffect(() => { if (directoryMarksError) toast.error(t(`indexing.${directoryMarksError}`)); }, [directoryMarksError, t]); const cutClipboardEntries = useFileClipboardStore((state) => state.clipboard?.operation === "cut" ? state.clipboard.entries : null, ); diff --git a/windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts b/windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts index 8b1926fe51..536df68bf8 100644 --- a/windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts +++ b/windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts @@ -4,7 +4,7 @@ import { LocaleProvider } from "@/i18n/locale-provider"; import { useFileExplorerContextMenu } from "../hooks/use-file-explorer-context-menu"; import { afterEach, beforeEach, expect, test } from "bun:test"; import { installHappyDom } from "@/test-utils/happy-dom"; -import { indexingSettingsStorageKey, readIndexingSettings, writeIndexingSettings } from "./workspace-indexing"; +import { IndexingSettingsError, indexingSettingsStorageKey, readIndexingSettings, writeIndexingSettings } from "./workspace-indexing"; import { directoryMarkRoot, markWorkspaceDirectory, migrateWorkspaceDirectoryMarks, migrateDirectoryMarks, readDirectoryMarks } from "./directory-marks"; let restore: () => void; @@ -14,6 +14,34 @@ beforeEach(() => { }); afterEach(() => restore()); +test("cancelling exclusion follows Windows path identity after a case-only rename", () => { + markWorkspaceDirectory(["C:/workspace"], "C:/workspace/src", "sources"); + markWorkspaceDirectory(["C:/workspace"], "C:/workspace/src", "excluded"); + markWorkspaceDirectory(["C:/workspace"], "C:/workspace/SRC", "plain", true); + expect(readDirectoryMarks("C:/workspace")).toEqual({ SRC: "sources" }); + expect(readIndexingSettings("C:/workspace").previousRoles).toEqual({}); + expect(readIndexingSettings("C:/workspace").includedDirectories).toEqual(["SRC"]); + markWorkspaceDirectory(["C:/workspace"], "C:/workspace/src", "excluded"); + expect(readDirectoryMarks("C:/workspace")).toEqual({ src: "excluded" }); + expect(readIndexingSettings("C:/workspace").includedDirectories).toEqual([]); + markWorkspaceDirectory(["C:/workspace"], "C:/workspace/SRC/child", "plain", true); + expect(readIndexingSettings("C:/workspace").includedDirectories).toEqual([]); +}); + +test("directory mark read failures use stable classes and preserve the original data", () => { + for (const raw of ["broken", "null", "{}", '{"version":1,"marks":[]}']) { + window.localStorage.setItem(storageKey, raw); + try { readDirectoryMarks("C:/workspace"); throw new Error("Expected invalid data to fail"); } + catch (error) { + expect(error).toBeInstanceOf(IndexingSettingsError); + expect((error as IndexingSettingsError).code).toBe("invalidSettings"); + } + expect(window.localStorage.getItem(storageKey)).toBe(raw); + } + const failing = { getItem: () => { throw new Error("storage is unavailable"); } } as unknown as Storage; + expect(() => readDirectoryMarks("C:/workspace", failing)).toThrow(IndexingSettingsError); +}); + test("directory marks migrate a renamed subtree and remove a deleted subtree", () => { window.localStorage.setItem( storageKey, diff --git a/windows/tauri/src/features/file-explorer/stores/directory-marks.ts b/windows/tauri/src/features/file-explorer/stores/directory-marks.ts index a77626ac8e..526f055023 100644 --- a/windows/tauri/src/features/file-explorer/stores/directory-marks.ts +++ b/windows/tauri/src/features/file-explorer/stores/directory-marks.ts @@ -4,6 +4,8 @@ import { indexingSettingsStorageKey, readIndexingSettings, writeIndexingSettings, + IndexingSettingsError, + type IndexingErrorCode, } from "./workspace-indexing"; import { useCallback, useEffect, useState } from "react"; import { closestWorkspaceRoot } from "@/features/workspace/types/workspace-root"; @@ -33,9 +35,13 @@ const markPathIdentity = (root: string, relativePath: string): string => { return isCaseInsensitivePath(root) ? normalized.toLowerCase() : normalized; }; export function readDirectoryMarks(root: string, storage: Storage = window.localStorage): Marks { - const raw = storage.getItem(key(root)); + let raw: string | null; + try { raw = storage.getItem(key(root)); } + catch (cause) { throw new IndexingSettingsError("readFailed", cause); } if (!raw) return {}; - const value = JSON.parse(raw); + let value: { version?: unknown; marks?: unknown } | null; + try { value = JSON.parse(raw); } + catch (cause) { throw new IndexingSettingsError("invalidSettings", cause); } if ( value?.version !== 1 || !value.marks || @@ -50,8 +56,8 @@ export function readDirectoryMarks(root: string, storage: Storage = window.local DIRECTORY_MARKS.includes(mark as DirectoryMark), ) ) - throw new Error("Invalid directory marks"); - return value.marks; + throw new IndexingSettingsError("invalidSettings"); + return value.marks as Marks; } function writeMarks(root: string, marks: Marks) { window.localStorage.setItem(key(root), JSON.stringify({ version: 1, marks })); @@ -169,29 +175,37 @@ export function markWorkspaceDirectory(roots: readonly string[], path: string, m if (!root) throw new Error("Directory is outside the workspace"); const marks = readDirectoryMarks(root); const relative = getRelativePath(path, root).replace(/\\/g, "/") || "."; + const relativeIdentity = markPathIdentity(root, relative); + const samePath = (path: string) => markPathIdentity(root, path) === relativeIdentity; + const markKeys = Object.keys(marks).filter(samePath); const settings = readIndexingSettings(root); if (cancelExclusion) { if ( Object.entries(marks).some( ([path, value]) => value === "excluded" && - path !== relative && - (path === "." || relative.startsWith(path + "/")), + !samePath(path) && + (path === "." || relativeIdentity.startsWith(markPathIdentity(root, path) + "/")), ) ) return; - const previous = settings.previousRoles[relative] as DirectoryMark | undefined; - if (previous) marks[relative] = previous; - else delete marks[relative]; - delete settings.previousRoles[relative]; - if (!settings.includedDirectories.includes(relative)) + const previousKeys = Object.keys(settings.previousRoles).filter(samePath); + const previousKey = previousKeys.find((path) => path === relative) ?? previousKeys[0]; + const previous = previousKey === undefined ? undefined : settings.previousRoles[previousKey]; + for (const path of markKeys) delete marks[path]; + for (const path of previousKeys) delete settings.previousRoles[path]; + if (previous) marks[relative] = previous as DirectoryMark; + if (!settings.includedDirectories.some(samePath)) settings.includedDirectories.push(relative); } else { - if (mark === "excluded" && marks[relative] && marks[relative] !== "excluded") - settings.previousRoles[relative] = marks[relative]; + const previousKey = markKeys.find((path) => path === relative) ?? markKeys[0]; + const previous = previousKey === undefined ? undefined : marks[previousKey]; + if (mark === "excluded" && previous && previous !== "excluded") + settings.previousRoles[relative] = previous; + for (const path of markKeys) delete marks[path]; marks[relative] = mark; if (mark !== "plain") settings.includedDirectories = settings.includedDirectories.filter( - (path) => path !== relative, + (path) => !samePath(path), ); } const oldSettings = window.localStorage.getItem(indexingSettingsStorageKey(root)); @@ -209,13 +223,13 @@ export function markWorkspaceDirectory(roots: readonly string[], path: string, m export function useDirectoryMarks(roots: readonly string[]) { const rootsKey = JSON.stringify(roots); - const [snapshot, setSnapshot] = useState<{ key: string; marks: Record; error?: string }>({ key: "", marks: {} }); + const [snapshot, setSnapshot] = useState<{ key: string; marks: Record; error?: IndexingErrorCode }>({ key: "", marks: {} }); useEffect(() => { const refresh = () => { try { setSnapshot({ key: rootsKey, marks: Object.fromEntries(roots.map((root) => [root, readDirectoryMarks(root)])) }); } catch (error) { - setSnapshot({ key: rootsKey, marks: {}, error: String(error) }); + setSnapshot({ key: rootsKey, marks: {}, error: error instanceof IndexingSettingsError ? error.code : "readFailed" }); } }; refresh(); @@ -228,7 +242,10 @@ export function useDirectoryMarks(roots: readonly string[]) { const root = directoryMarkRoot(path, roots); if (!root || snapshot.key !== rootsKey) return undefined; const relative = getRelativePath(path, root).replace(/\\/g, "/") || "."; - return snapshot.marks[root]?.[relative]; + const marks = snapshot.marks[root]; + if (!marks) return undefined; + const storedPath = Object.keys(marks).find((path) => markPathIdentity(root, path) === markPathIdentity(root, relative)); + return storedPath === undefined ? undefined : marks[storedPath]; }; return { markForPath, markDirectory, error: snapshot.key === rootsKey ? snapshot.error : undefined }; } From 324587648e97b75d4b5e4e0f89c5056b33ad81a3 Mon Sep 17 00:00:00 2001 From: xueyeshang1 Date: Sat, 31 Oct 2026 18:50:53 +0800 Subject: [PATCH 09/27] docs(indexing): record final macOS native acceptance evidence --- ...026-10-28-workspace-indexing-exclusions.md | 26 ++++++++++++++++++- .../workspace-indexing-exclusions.json | 4 +-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md index f2c5cb5e14..058cb29992 100644 --- a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md +++ b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md @@ -198,7 +198,31 @@ Python/Basedpyright 的项目配置可以覆盖语言服务器配置,因此不 全新 JDT 缓存只导入 `visible`,但编辑器实际补全、重启及错误恢复未在该构建 全部完成。原生连接先后报告 `noWindowsAvailable` 与 `cgWindowNotFound`,这不是 排除策略失败的证据。旧 QA、JDT 和辅助进程已清理,偏好精确恢复;1419 个包 -文件、9 个符号链接及签名不变。最新补修构建仍须单独取得原生证据。 +文件、9 个符号链接及签名不变。该记录保留为历史证据;最新补修构建的原生结果单独记录如下。 + +源码 `921c888c` 的完整开发 App 使用本机 Swift 6.4.2 / Xcode 27.2 构建, +源码树指纹为 `a5a9a3f092094060f98be181244a4e3bc0252e1a1cdf65218f98dcfe0a895c3c`。 +独立临时项目中,排除目录及继承排除的子目录仍能展开,目录图标显示排除状态, +文件名保留独立状态色。全新 JDT 缓存只导入 `visible`,真实编辑器返回 +`PrintStream.print(Object)`、`printf` 和 `println` 候选;外部 stage/commit 自动 +更新 Commit 列表,既有 JDT 进程及补全仍可用。明确取消排除由用户完成菜单动作, +代理核验搜索恢复、包含例外落盘,并在退出重开及 A/B 项目来回切换后确认保持; +两项目查询隔离,关闭 A 后 B 仍可搜索。 + +同一构建首次读取损坏配置时,错误随应用语言从英文即时切换为中文,原始 `{}` +未覆盖;恢复合法数据后,用户点击重试,代理读回正常项目树及原有排除状态。 +临时根设为不可读后分别显示中文及英文权限错误,项目身份和重试入口保留。 +恢复原权限后观察到项目重新加载,项目树与 Java 服务恢复;代理没有在此场景 +点击 Retry,显式重试由前述损坏配置流程验证。关闭设置时原生工具再次超时, +因此只重启测试实例后完成英文验收,未据此推断产品假死。 + +本轮截图、AX 操作证据、构建身份和 JSON 索引存于独立验收目录。结束后,1419 个 +包文件与 9 个符号链接的清单及哈希一致,签名校验通过;测试 App、JDT 和辅助 +进程均已退出,用户原有 Dev 实例保留。开发偏好与备份字典精确相等,8 个本轮 +夹具键移除,临时目录权限恢复,新增 JDT 缓存归档后移出运行时位置,测试 App +注册已取消。上述结果来自本机工具链,不代替最终提交的固定工具链 CI。 +Linked worktree、子模块及普通角色不创建包含例外的原生证据保留为前述较早 +源码记录,不改标为本构建执行结果。 直接重建库存的界面夹具也须先建立工作区会话与投影身份,并等待必需的工作区 模块启动,再建立通知计数基线。否则旧夹具会被新的代际校验拒绝,或把模块启动 diff --git a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json index 284e6bd9dd..b1b88caf9f 100644 --- a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json +++ b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json @@ -4,10 +4,10 @@ "group": "工作区生命周期", "capability": "目录索引排除与 Git 自动排除", "owner": "Workspace", - "verification": "本轮按用户要求保持Draft,不执行Windows/Frontend测试或Windows CI。整合preview a1ed8f4c的源码4e7b8441通过Core1482项、本机Swift6.4.2/Xcode27.2受影响177条及插件512条计时记录;合成工作区关闭/开启Git自动排除的库存为10202/201,目录浏览保持可用,该结果仅证明剪枝而非UI或LSP后台性能。随后独立复审补修跨owner取消分类与重试、快照晚发、首次完整库存及会话恢复、范围分页、点分配置合并、Windows路径身份及目录标记错误本地化;修复后的完整Core1484项计时全部通过,按现有CI分离编译后,当前源码Swift182条计时记录(含完整Git观察28条)、Rust↔Swift桥接与Core边界检查通过,macOS diff指纹在运行前后一致;此前将构建放入计时入口的无输出保护保留,未放宽预算。最新App证据待本轮结束后记录。源码4e7b8441真实App已验证普通角色不写include、Git忽略仍排除、明确取消排除恢复搜索,以及冷JDT仅导入visible;实际补全、重启和错误恢复尚未在该构建完成,CUA窗口故障已记录。旧QA进程已清理、偏好精确恢复,1419包文件/9符号链接及签名不变。9068703a的完整原生错误/Retry、外部Git/子模块、真实JDT补全与EA切换/重启证据保留在Note,不能改标新源码。最新原生与固定Xcode26.6完整CI仍pending;Windows新回归本轮仅书写和静态审查,未执行。Java显式构建模块仍可能扫描,Go/Rust配置送达不等于后台零扫描。", + "verification": "本轮按用户要求保持 Draft,不执行 Windows/Frontend 测试或 Windows CI。整合 preview a1ed8f4c 后,补修源码921c888c通过完整Core1484项、本机Swift6.4.2/Xcode27.2受影响182条(含完整Git观察28条)、Rust↔Swift桥接及Core边界检查;编译与测试按现有CI分离,未放宽计时预算。完整开发App原生验收确认排除目录与后代仍可浏览并显示排除图标,冷JDT仅导入visible且实际返回PrintStream补全,外部stage/commit自动更新且JDT和补全保持;用户操作取消排除后由代理核验搜索、落盘、重启持久化及A/B项目查询与关闭隔离。损坏配置随App语言中英即时切换且原值保留,修正后显式重试成功;真实权限失败分别显示中英文错误,权限恢复后观察到项目重载,代理未点击该流程的Retry。1419包文件/9符号链接及签名不变;QA/JDT/辅助进程清理,用户Dev保留,开发偏好精确恢复,新增缓存归档。4e7b8441的插件512条及合成库存10202/201剪枝结果保留原版本,不能当作UI或LSP后台性能基准。较早源码的普通角色、linked-worktree和子模块原生证据见Note。macOS在上述能力范围完成本机运行验证,固定Xcode26.6完整CI仍待最终提交检查;Windows新回归仅书写和静态复审,原生仍pending。Java显式构建模块仍可能扫描,Go/Rust配置送达不等于后台零扫描。", "macos": { "implementationStatus": "partial", - "verificationStatus": "pending", + "verificationStatus": "verified", "evidence": [ "macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift", "macos/Sources/Lithe/Views/App/WorkspaceIndexingSettingsView.swift", From bc57f7c98eeacb139b8b33fae758e0b1b963279d Mon Sep 17 00:00:00 2001 From: xueyeshang1 Date: Sat, 31 Oct 2026 20:29:04 +0800 Subject: [PATCH 10/27] fix(search): localize indexing failures and synchronize deferred Run tests --- ...026-10-28-workspace-indexing-exclusions.md | 21 ++++ .github/workflows/ci-windows.yml | 5 + .../Tests/LitheTests/RunEntryPointTests.swift | 14 ++- .../workspace-indexing-exclusions.json | 2 +- .../f4-file-navigation.integration.test.tsx | 38 ++++++- .../components/global-search-buffer.tsx | 9 +- .../components/global-search-state.tsx | 56 +++++++--- .../use-content-search.integration.test.tsx | 105 ++++++++++++++++-- .../global-search/hooks/use-content-search.ts | 17 ++- .../stores/global-search.store.ts | 10 +- .../types/global-search.types.ts | 7 ++ 11 files changed, 237 insertions(+), 47 deletions(-) diff --git a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md index 058cb29992..c2a50326b3 100644 --- a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md +++ b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md @@ -100,6 +100,13 @@ Windows 设置页同样先检查能力,不向本机 Core 提交远程根。设 目录标记的读取也使用同一稳定错误分类,树提示不能直接展示 JSON 或存储异常的 英文字符串。Windows 原生路径的标记、祖先约束、包含例外与记忆角色按路径身份 匹配,外部仅修改目录名大小写后仍能取消排除;远程及大小写敏感根维持区分。 +内容搜索的首次请求、加载更多和库存状态失败同样保存类型化的索引错误,呈现层 +再按当前应用语言读取词条,不能把 `Error.message` 中的内部错误码直接展示。 +这样已有错误随语言切换更新,无须再次搜索;加载更多失败仍保留已取得的结果, +读取损坏偏好也不写入默认值。上游搜索诊断继续原样显示,搜索失败标题由共享 +i18n 提供,不在模型中另拼英文前缀。 +已有结果时继续显示列表,并在其旁呈现紧凑的错误及重试入口,不能只依赖空状态 +组件。失败后暂停自动翻页,用户明确重试后才恢复请求,避免滚动观察反复触发失败。 macOS 同样在适配器返回类型化失败,状态保留失败分类,呈现时再通过共享 i18n 读取当前应用语言。不要缓存已经翻译的错误字符串,否则语言即时切换后会保留旧文案。首次配置失败 保留项目身份并显示重试,重试重新读取偏好;读取失败不允许写入默认值。 @@ -193,6 +200,14 @@ Python/Basedpyright 的项目配置可以覆盖语言服务器配置,因此不 运行前后 macOS diff 指纹一致。新增 Windows 回归仅书写并完成静态审查,按用户 要求未执行;不能把共享 Core 的 macOS 结果当作 Windows 原生结果。 +随后内容搜索错误呈现的补修在本机 Bun 1.3.13 通过 19 条逐项计时回归及 +TypeScript 检查:损坏 `{}` 经真实偏好解析后显示共享中英词条,原值保留; +已有错误在语言切换后立即更新且不额外搜索,加载更多读取失败保留已有结果。 +真实搜索页面还验证了有结果时错误可见、保留列表、暂停自动翻页及显式重试。 +该逻辑回归接入 Windows CI 的隔离分组,不把本机 Bun 结果作为 Windows +原生界面验收。前述未运行 Windows 的限制属于较早本地验收阶段;用户之后已 +授权 Ready 触发完整自动 CI,结果以对应提交的 PR 报告为准。 + 源码 `4e7b8441` 的真实 App 补验已确认普通角色不写包含例外,随后新增 Git 忽略 仍排除目录;明确取消排除后搜索恢复,目录及后代仍可浏览并显示排除图标。 全新 JDT 缓存只导入 `visible`,但编辑器实际补全、重启及错误恢复未在该构建 @@ -228,6 +243,12 @@ Linked worktree、子模块及普通角色不创建包含例外的原生证据 模块启动,再建立通知计数基线。否则旧夹具会被新的代际校验拒绝,或把模块启动 通知误算成库存通知。Git 回调与索引配置是独立完成边界;检查配置结果时须等待 配置完成事件,不能把 Git 回调当作配置完成。保留原有通知次数和配置断言。 +批量 Run 的延后夹具在发布新库存前还须确认首次未完成库存的扫描已经结束, +因为加载期间的显式刷新会被忽略。通过已有的加载错误和忙碌状态等待该边界, +刷新后先核验应用的快照 UUID,再等待两项启动;不依赖机器调度速度,不读取 +私有状态,也不增加等待预算或放宽批量启动断言。 +该夹具同步补修由本机 Swift 6.4.2 的完整 Run 入口 21 条计时回归验证,固定 +Swift 6.3.3 / Xcode 26.6 仍需在补修后的提交上重跑。 Git 状态观察的 CI 入口使用同一逐项计时工具生成 HTML/JUnit,不能只凭任务退出 码宣称首错之后的用例已经执行。 建立真实工作区身份后,Java 准备流程也会实际执行;没有待确认请求时取消准备 diff --git a/.github/workflows/ci-windows.yml b/.github/workflows/ci-windows.yml index 425ac92ee3..b478309122 100644 --- a/.github/workflows/ci-windows.yml +++ b/.github/workflows/ci-windows.yml @@ -609,6 +609,11 @@ jobs: # Isolated step: this suite installs a process-wide Tauri boundary mock. run: node .agents/skills/write-stable-tests/scripts/run-bun-tests-with-timing.mjs --suite-timeout-ms 60000 --report .artifacts/test-stability/windows-file-search-snapshot.json -- src/features/file-search/lib/file-search-api.test.ts + - name: Test content search indexing errors and session lifecycle + shell: pwsh + # Isolate this suite's filesystem, settings and search-provider mocks. + run: node .agents/skills/write-stable-tests/scripts/run-bun-tests-with-timing.mjs --suite-timeout-ms 60000 --report .artifacts/test-stability/windows-content-search-indexing.json -- src/features/global-search/hooks/use-content-search.integration.test.tsx src/features/global-search/stores/global-search.store.test.ts + - name: Test wheel scroll animation and container wheel ownership shell: pwsh timeout-minutes: 3 diff --git a/macos/Tests/LitheTests/RunEntryPointTests.swift b/macos/Tests/LitheTests/RunEntryPointTests.swift index 91051df907..bf65893d48 100644 --- a/macos/Tests/LitheTests/RunEntryPointTests.swift +++ b/macos/Tests/LitheTests/RunEntryPointTests.swift @@ -510,8 +510,20 @@ struct RunEntryPointTests { #expect(model.pendingRunAction?.kind == .startConfigurations(ids.sorted())) #expect(runConfigurations.launchPlanCallCount == 0) - operations.publish(workspace.snapshot) + // The batch can defer before the opening scan has returned. A refresh + // while that scan is loading is intentionally ignored, so first await + // the observable provisional result rather than dropping the test's + // only request for the newly published inventory. + try #require(await awaitChange(on: model.workspaceFeature, timeout: .seconds(30)) { + model.workspaceLoadErrorMessage != nil + && !model.workspaceFeature.isLoadingWorkspace + && !model.workspaceFeature.isRefreshingWorkspace + }) + let snapshot = workspace.snapshot + operations.publish(snapshot) await model.workspaceFeature.refreshCurrent() + try #require(model.workspaceSnapshotID == snapshot.id, + "the published inventory must be applied before resuming the batch") #expect(await runConfigurations.launchPlanRequested(2)) #expect(model.pendingRunAction == nil) #expect(runConfigurations.launchPlanCallCount == 2) diff --git a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json index b1b88caf9f..42ab85350e 100644 --- a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json +++ b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json @@ -4,7 +4,7 @@ "group": "工作区生命周期", "capability": "目录索引排除与 Git 自动排除", "owner": "Workspace", - "verification": "本轮按用户要求保持 Draft,不执行 Windows/Frontend 测试或 Windows CI。整合 preview a1ed8f4c 后,补修源码921c888c通过完整Core1484项、本机Swift6.4.2/Xcode27.2受影响182条(含完整Git观察28条)、Rust↔Swift桥接及Core边界检查;编译与测试按现有CI分离,未放宽计时预算。完整开发App原生验收确认排除目录与后代仍可浏览并显示排除图标,冷JDT仅导入visible且实际返回PrintStream补全,外部stage/commit自动更新且JDT和补全保持;用户操作取消排除后由代理核验搜索、落盘、重启持久化及A/B项目查询与关闭隔离。损坏配置随App语言中英即时切换且原值保留,修正后显式重试成功;真实权限失败分别显示中英文错误,权限恢复后观察到项目重载,代理未点击该流程的Retry。1419包文件/9符号链接及签名不变;QA/JDT/辅助进程清理,用户Dev保留,开发偏好精确恢复,新增缓存归档。4e7b8441的插件512条及合成库存10202/201剪枝结果保留原版本,不能当作UI或LSP后台性能基准。较早源码的普通角色、linked-worktree和子模块原生证据见Note。macOS在上述能力范围完成本机运行验证,固定Xcode26.6完整CI仍待最终提交检查;Windows新回归仅书写和静态复审,原生仍pending。Java显式构建模块仍可能扫描,Go/Rust配置送达不等于后台零扫描。", + "verification": "较早本地验收阶段未执行 Windows/Frontend 测试;用户随后授权 Ready 触发完整自动 CI,原生界面验证仍单独记录。整合 preview a1ed8f4c 后,补修源码921c888c通过完整Core1484项、本机Swift6.4.2/Xcode27.2受影响182条(含完整Git观察28条)、Rust↔Swift桥接及Core边界检查;编译与测试按现有CI分离,未放宽计时预算。完整开发App原生验收确认排除目录与后代仍可浏览并显示排除图标,冷JDT仅导入visible且实际返回PrintStream补全,外部stage/commit自动更新且JDT和补全保持;用户操作取消排除后由代理核验搜索、落盘、重启持久化及A/B项目查询与关闭隔离。损坏配置随App语言中英即时切换且原值保留,修正后显式重试成功;真实权限失败分别显示中英文错误,权限恢复后观察到项目重载,代理未点击该流程的Retry。1419包文件/9符号链接及签名不变;QA/JDT/辅助进程清理,用户Dev保留,开发偏好精确恢复,新增缓存归档。4e7b8441的插件512条及合成库存10202/201剪枝结果保留原版本,不能当作UI或LSP后台性能基准。较早源码的普通角色、linked-worktree和子模块原生证据见Note。macOS在上述能力范围完成本机运行验证,固定Xcode26.6完整CI仍待最终提交检查;Windows新回归仅书写和静态复审,原生仍pending。Java显式构建模块仍可能扫描,Go/Rust配置送达不等于后台零扫描。 后续补修内容搜索首次请求、加载更多及索引状态的错误呈现:保存类型化错误,按当前语言使用共享词条,不拼接内部错误码;本机Bun1.3.13的19条逐项计时及TypeScript检查通过,损坏偏好保留、语言切换不重搜及加载更多保留结果有回归。真实页面有结果时显示紧凑错误和重试,失败暂停自动翻页;新增回归接入Windows CI隔离分组;该补修的最终CI仍待取得,Windows原生界面保持pending。 批量Run夹具增加首扫完成与快照UUID同步,本机Swift6.4.2完整Run入口21条通过,固定工具链CI待补修提交复验。", "macos": { "implementationStatus": "partial", "verificationStatus": "verified", diff --git a/windows/tauri/src/features/global-search/components/f4-file-navigation.integration.test.tsx b/windows/tauri/src/features/global-search/components/f4-file-navigation.integration.test.tsx index faaaa7aede..35bdf9f0c7 100644 --- a/windows/tauri/src/features/global-search/components/f4-file-navigation.integration.test.tsx +++ b/windows/tauri/src/features/global-search/components/f4-file-navigation.integration.test.tsx @@ -3,6 +3,7 @@ import { act } from "react"; import { createRoot, type Root } from "react-dom/client"; import { installHappyDom } from "@/test-utils/happy-dom"; import { LocaleProvider } from "@/i18n/locale-provider"; +import { createTranslator, type DisplayLanguage } from "@/i18n/locale"; import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; import { useKeymaps } from "@/features/keymaps/hooks/use-keymaps"; import { openFocusedFile } from "@/features/keymaps/hooks/use-file-open-target"; @@ -33,18 +34,19 @@ let container: HTMLDivElement; let observerDescriptor: PropertyDescriptor | undefined; let intersectionObserverDescriptor: PropertyDescriptor | undefined; const spies: Array<{ mockRestore(): void }> = []; +const observeMore = mock((_target: Element) => {}); -function Navigation() { +function Navigation({ language }: { language: DisplayLanguage }) { useKeymaps(); return ( - + ); } -async function render() { - await act(async () => root.render()); +async function render(language: DisplayLanguage = "en-US") { + await act(async () => root.render()); } async function press(target: HTMLElement, key: string, ctrlKey = false, altKey = false) { @@ -70,6 +72,7 @@ beforeEach(async () => { spies.push(spyOn(globalThis, "requestAnimationFrame").mockReturnValue(0)); previousAct = actGlobal.IS_REACT_ACT_ENVIRONMENT; actGlobal.IS_REACT_ACT_ENVIRONMENT = true; + observeMore.mockClear(); observerDescriptor = Object.getOwnPropertyDescriptor(globalThis, "ResizeObserver"); intersectionObserverDescriptor = Object.getOwnPropertyDescriptor( globalThis, @@ -78,7 +81,7 @@ beforeEach(async () => { Object.defineProperty(globalThis, "IntersectionObserver", { configurable: true, value: class { - observe() {} + observe(target: Element) { observeMore(target); } disconnect() {} }, }); @@ -178,6 +181,31 @@ afterEach(async () => { else actGlobal.IS_REACT_ACT_ENVIRONMENT = previousAct; }); +test("partial search failures stay visible beside results and pause automatic loading until retry", async () => { + const retry = mock(async () => {}); + const priorObservations = observeMore.mock.calls.length; + search = { + ...search, + error: { kind: "indexing", code: "readFailed" }, + hasMoreResults: true, + loadMoreResults: retry, + }; + await render("zh-CN"); + const firstRow = () => container.querySelector(`[data-file-navigator-key="${firstPath}"]`); + expect(firstRow()).not.toBeNull(); + expect(container.querySelector('[role="alert"]')?.textContent).toContain( + createTranslator("zh-CN")("indexing.readFailed"), + ); + expect(observeMore).toHaveBeenCalledTimes(priorObservations); + await render("en-US"); + const alert = container.querySelector('[role="alert"]')!; + expect(alert.textContent).toContain(createTranslator("en-US")("indexing.readFailed")); + expect(retry).not.toHaveBeenCalled(); + await act(async () => alert.querySelector("button")!.click()); + expect(retry).toHaveBeenCalledTimes(1); + expect(firstRow()).not.toBeNull(); +}); + test("F4 from the search query opens the keyboard-selected match with one-based location", async () => { const input = queryInput(); expect(input).not.toBeNull(); diff --git a/windows/tauri/src/features/global-search/components/global-search-buffer.tsx b/windows/tauri/src/features/global-search/components/global-search-buffer.tsx index 90b4321441..2ce53bb8a4 100644 --- a/windows/tauri/src/features/global-search/components/global-search-buffer.tsx +++ b/windows/tauri/src/features/global-search/components/global-search-buffer.tsx @@ -20,7 +20,7 @@ import { useKeyboardNavigation } from "../hooks/use-keyboard-navigation"; import { buildSearchExcerpts } from "../utils/search-excerpts"; import { replaceAllInSources, replaceNextInSource } from "../utils/source-replace"; import { GlobalSearchResults } from "./global-search-results"; -import { GlobalSearchState } from "./global-search-state"; +import { GlobalSearchError, GlobalSearchState } from "./global-search-state"; import { GlobalSearchToolbar } from "./global-search-toolbar"; const DEFAULT_CONTEXT_LINES = 2; @@ -525,7 +525,7 @@ const GlobalSearchBuffer = ({ compact = false }: GlobalSearchBufferProps) => { useEffect(() => { const sentinel = loadMoreRef.current; const scrollContainer = scrollContainerRef.current; - if (!sentinel || !scrollContainer || !hasMore || showBusy) return; + if (!sentinel || !scrollContainer || !hasMore || showBusy || error) return; const observer = new IntersectionObserver( ([entry]) => { @@ -541,7 +541,7 @@ const GlobalSearchBuffer = ({ compact = false }: GlobalSearchBufferProps) => { observer.observe(sentinel); return () => observer.disconnect(); - }, [hasMore, loadMoreResults, scrollContainerRef, showBusy]); + }, [error, hasMore, loadMoreResults, scrollContainerRef, showBusy]); return (
@@ -586,6 +586,9 @@ const GlobalSearchBuffer = ({ compact = false }: GlobalSearchBufferProps) => {
)} + {hasResults && !showInitialBusy && error && ( + void loadMoreBackendResults()} /> + )}
{hasResults && !showInitialBusy ? ( void; } +export function GlobalSearchError({ + error, + onRetry, + compact = false, +}: { + error: ContentSearchFailure; + onRetry: () => void; + compact?: boolean; +}) { + const { t } = useTranslation(); + const message = + typeof error === "string" + ? error + : t(error.kind === "indexing" ? `indexing.${error.code}` : "search.failed"); + if (compact) { + return ( +
+

{message}

+ +
+ ); + } + return ( + + + {t("search.failed")} + {message} + + + + + + ); +} + function SearchIntroduction({ title, description }: { title: string; description: string }) { return ( @@ -83,19 +123,7 @@ export function GlobalSearchState({ } if (error) { - return ( - - - {t("search.failed")} - {error} - - - - - - ); + return ; } if (debouncedQuery.trim()) { diff --git a/windows/tauri/src/features/global-search/hooks/use-content-search.integration.test.tsx b/windows/tauri/src/features/global-search/hooks/use-content-search.integration.test.tsx index bf3f8cf4d7..39d8f6b17a 100644 --- a/windows/tauri/src/features/global-search/hooks/use-content-search.integration.test.tsx +++ b/windows/tauri/src/features/global-search/hooks/use-content-search.integration.test.tsx @@ -1,10 +1,13 @@ -import { afterAll, beforeEach, describe, expect, mock, test } from "bun:test"; +import { afterAll, afterEach, beforeEach, describe, expect, mock, test } from "bun:test"; import { act, type ReactNode } from "react"; import { createRoot, type Root } from "react-dom/client"; import type { SearchFilesResponse } from "@/features/file-search/lib/file-search-api"; import { installHappyDom } from "@/test-utils/happy-dom"; const restoreDom = installHappyDom(); +const previousActEnvironment = + (globalThis as typeof globalThis & { IS_REACT_ACT_ENVIRONMENT?: boolean }) + .IS_REACT_ACT_ENVIRONMENT; (globalThis as typeof globalThis & { IS_REACT_ACT_ENVIRONMENT: boolean }).IS_REACT_ACT_ENVIRONMENT = true; @@ -59,42 +62,85 @@ mock.module("../services/provider-content-search", () => ({ loadProviderSearchFiles: mock(async () => []), searchProviderFilesContent: mock(async () => response), })); +mock.module("@/features/settings/stores/settings.store", () => ({ + useSettingsStore: ( + selector: (state: { settings: { displayLanguage: "en-US" } }) => Value, + ) => selector({ settings: { displayLanguage: "en-US" } }), +})); const { useContentSearch } = await import("./use-content-search"); +const { GlobalSearchState } = await import("../components/global-search-state"); +const { LocaleProvider } = await import("@/i18n/locale-provider"); +const { createTranslator } = await import("@/i18n/locale"); +const { IndexingSettingsError, indexingSettingsStorageKey, readIndexingSettings } = + await import("@/features/file-explorer/stores/workspace-indexing"); const { workspaceRuntimeRegistry } = await import("@/features/workspace/runtime/workspace-runtime-registry"); type SearchHook = ReturnType; +const mountedProbes = new Map(); function mountSearchProbe(onRender: (search: SearchHook) => void): { root: Root; - render: () => Promise; + container: HTMLElement; + render: (language?: "en-US" | "zh-CN") => Promise; + unmount: () => Promise; } { const container = document.createElement("div"); document.body.append(container); const root = createRoot(container); + mountedProbes.set(root, container); function Probe(): ReactNode { - onRender(useContentSearch()); - return null; + const search = useContentSearch(); + onRender(search); + return ( + + ); } return { root, - render: async () => { + container, + render: async (language = "en-US") => { await act(async () => { - root.render(); + root.render(); }); }, + unmount: async () => { + await act(async () => root.unmount()); + mountedProbes.delete(root); + container.remove(); + }, }; } beforeEach(() => { workspaceRuntimeRegistry.resetForTests(); - searchFilesContent.mockClear(); + searchFilesContent.mockReset().mockResolvedValue(response); + window.localStorage.clear(); +}); + +afterEach(async () => { + for (const [root, container] of mountedProbes) { + await act(async () => root.unmount()); + container.remove(); + } + mountedProbes.clear(); }); afterAll(() => { + (globalThis as typeof globalThis & { IS_REACT_ACT_ENVIRONMENT?: boolean }) + .IS_REACT_ACT_ENVIRONMENT = previousActEnvironment; restoreDom(); }); @@ -118,9 +164,7 @@ describe("content search lifecycle", () => { expect(searchFilesContent).toHaveBeenCalledTimes(1); expect(readCurrentSearch().results).toEqual(response.results); - await act(async () => { - firstMount.root.unmount(); - }); + await firstMount.unmount(); const secondMount = mountSearchProbe((search) => { currentSearch = search; @@ -131,8 +175,45 @@ describe("content search lifecycle", () => { expect(readCurrentSearch().results).toEqual(response.results); expect(searchFilesContent).toHaveBeenCalledTimes(1); - await act(async () => { - secondMount.root.unmount(); + await secondMount.unmount(); + }); + + test("corrupt indexing preferences render in the current language without being overwritten", async () => { + const storageKey = indexingSettingsStorageKey("C:/workspace"); + window.localStorage.setItem(storageKey, "{}"); + searchFilesContent.mockImplementation(async () => { + readIndexingSettings("C:/workspace"); + return response; }); + let current: SearchHook | undefined; + const probe = mountSearchProbe((search) => { current = search; }); + await probe.render(); + await act(async () => current!.setQuery("retained")); + + expect(current!.error).toEqual({ kind: "indexing", code: "invalidSettings" }); + expect(probe.container.textContent).toContain(createTranslator("en-US")("indexing.invalidSettings")); + expect(probe.container.textContent).not.toContain("invalidSettings"); + await probe.render("zh-CN"); + expect(probe.container.textContent).toContain(createTranslator("zh-CN")("indexing.invalidSettings")); + expect(searchFilesContent).toHaveBeenCalledTimes(1); + expect(window.localStorage.getItem(storageKey)).toBe("{}"); + }); + + test("load-more indexing failures retain results and translate without another search", async () => { + searchFilesContent + .mockResolvedValueOnce({ ...response, has_more: true, next_file_offset: 1 }) + .mockRejectedValueOnce(new IndexingSettingsError("readFailed")); + let current: SearchHook | undefined; + const probe = mountSearchProbe((search) => { current = search; }); + await probe.render("zh-CN"); + await act(async () => current!.setQuery("retained")); + await act(async () => { await current!.loadMoreResults(); }); + + expect(current!.results).toEqual(response.results); + expect(current!.error).toEqual({ kind: "indexing", code: "readFailed" }); + expect(probe.container.textContent).toContain(createTranslator("zh-CN")("indexing.readFailed")); + await probe.render("en-US"); + expect(probe.container.textContent).toContain(createTranslator("en-US")("indexing.readFailed")); + expect(searchFilesContent).toHaveBeenCalledTimes(2); }); }); diff --git a/windows/tauri/src/features/global-search/hooks/use-content-search.ts b/windows/tauri/src/features/global-search/hooks/use-content-search.ts index 251caaa26c..4ab2a1704a 100644 --- a/windows/tauri/src/features/global-search/hooks/use-content-search.ts +++ b/windows/tauri/src/features/global-search/hooks/use-content-search.ts @@ -1,5 +1,8 @@ import { useWorkspaceId } from "@/features/workspace/stores/create-workspace-scoped-store"; -import { useIndexingVersion } from "@/features/file-explorer/stores/workspace-indexing"; +import { + IndexingSettingsError, + useIndexingVersion, +} from "@/features/file-explorer/stores/workspace-indexing"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { useDebounce } from "use-debounce"; import type { FileEntry } from "@/features/file-system/types/app.types"; @@ -18,6 +21,7 @@ import { mergeSearchResults } from "../utils/content-search-results"; import { createPathFilterPredicate } from "../utils/path-filters"; import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; import { useGlobalSearchStore } from "../stores/global-search.store"; +import type { ContentSearchFailure } from "../types/global-search.types"; export type { ContentSearchOptions } from "../types/global-search.types"; @@ -43,10 +47,11 @@ function getSearchAvailability(rootPath: string | null | undefined): ContentSear return "unsupported"; } -function getErrorMessage(error: unknown): string { +function getSearchFailure(error: unknown): ContentSearchFailure { + if (error instanceof IndexingSettingsError) return { kind: "indexing", code: error.code }; if (error instanceof Error) return error.message; if (typeof error === "string") return error; - return "Unknown search error"; + return { kind: "unknown" }; } function hasPathFilters(includeQuery: string, excludeQuery: string): boolean { @@ -326,7 +331,7 @@ export const useContentSearch = () => { } catch (searchError) { if (!searchActions.isCurrentRequest(currentRequestId)) return; console.error("Search error:", searchError); - searchActions.failSearch(searchKey, `Search failed: ${getErrorMessage(searchError)}`); + searchActions.failSearch(searchKey, getSearchFailure(searchError)); } finally { if (searchActions.isCurrentRequest(currentRequestId)) { setIsSearching(false); @@ -375,7 +380,7 @@ export const useContentSearch = () => { } catch (searchError) { if (!searchActions.isCurrentRequest(currentRequestId)) return; console.error("Search error:", searchError); - searchActions.failLoadMore(`Search failed: ${getErrorMessage(searchError)}`); + searchActions.failLoadMore(getSearchFailure(searchError)); } finally { if (searchActions.isCurrentRequest(currentRequestId)) { setIsLoadingMore(false); @@ -426,7 +431,7 @@ export const useContentSearch = () => { if (failureCount >= 3) { searchActions.failIndexing( searchKey, - `Search indexing failed: ${getErrorMessage(statusError)}`, + getSearchFailure(statusError), ); return; } diff --git a/windows/tauri/src/features/global-search/stores/global-search.store.ts b/windows/tauri/src/features/global-search/stores/global-search.store.ts index dde371ad6f..ac67e07274 100644 --- a/windows/tauri/src/features/global-search/stores/global-search.store.ts +++ b/windows/tauri/src/features/global-search/stores/global-search.store.ts @@ -5,7 +5,7 @@ import type { SearchFilesResponse, } from "@/features/file-search/lib/file-search-api"; import { createWorkspaceScopedStore } from "@/features/workspace/stores/create-workspace-scoped-store"; -import type { ContentSearchOptions } from "../types/global-search.types"; +import type { ContentSearchFailure, ContentSearchOptions } from "../types/global-search.types"; import { mergeSearchResults } from "../utils/content-search-results"; const DEFAULT_SEARCH_OPTIONS: ContentSearchOptions = { @@ -19,7 +19,7 @@ interface GlobalSearchSessionSnapshot { scopePaths: string[]; replaceVisible: boolean; results: FileSearchResult[]; - error: string | null; + error: ContentSearchFailure | null; searchWarning: string | null; nextFileOffset: number; hasMoreResults: boolean; @@ -49,12 +49,12 @@ interface GlobalSearchSessionState extends GlobalSearchSessionSnapshot { clearSearch: () => void; beginSearch: () => number; completeSearch: (searchKey: string, response: SearchFilesResponse) => void; - failSearch: (searchKey: string, error: string) => void; + failSearch: (searchKey: string, error: ContentSearchFailure) => void; setIndexProgress: (isIndexing: boolean, indexedFiles: number, scannedFiles: number) => void; - failIndexing: (searchKey: string, error: string) => void; + failIndexing: (searchKey: string, error: ContentSearchFailure) => void; beginLoadMore: () => void; completeLoadMore: (response: SearchFilesResponse) => void; - failLoadMore: (error: string) => void; + failLoadMore: (error: ContentSearchFailure) => void; isCurrentRequest: (generation: number) => boolean; }; } diff --git a/windows/tauri/src/features/global-search/types/global-search.types.ts b/windows/tauri/src/features/global-search/types/global-search.types.ts index 49b3a918e1..4ef9c8f2b9 100644 --- a/windows/tauri/src/features/global-search/types/global-search.types.ts +++ b/windows/tauri/src/features/global-search/types/global-search.types.ts @@ -1,3 +1,10 @@ +import type { IndexingErrorCode } from "@/features/file-explorer/stores/workspace-indexing"; + +export type ContentSearchFailure = + | string + | { kind: "indexing"; code: IndexingErrorCode } + | { kind: "unknown" }; + export interface FileItem { name: string; path: string; From d678b2df98aa8e8b4087feff35d85492478dd37f Mon Sep 17 00:00:00 2001 From: xueyeshang1 Date: Sat, 31 Oct 2026 21:06:46 +0800 Subject: [PATCH 11/27] test(macos): synchronize every initial Run inventory release --- ...026-10-28-workspace-indexing-exclusions.md | 17 ++-- .../Tests/LitheTests/RunEntryPointTests.swift | 78 ++++++++++++------- .../workspace-indexing-exclusions.json | 5 +- 3 files changed, 62 insertions(+), 38 deletions(-) diff --git a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md index c2a50326b3..805c1cf480 100644 --- a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md +++ b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md @@ -243,12 +243,17 @@ Linked worktree、子模块及普通角色不创建包含例外的原生证据 模块启动,再建立通知计数基线。否则旧夹具会被新的代际校验拒绝,或把模块启动 通知误算成库存通知。Git 回调与索引配置是独立完成边界;检查配置结果时须等待 配置完成事件,不能把 Git 回调当作配置完成。保留原有通知次数和配置断言。 -批量 Run 的延后夹具在发布新库存前还须确认首次未完成库存的扫描已经结束, -因为加载期间的显式刷新会被忽略。通过已有的加载错误和忙碌状态等待该边界, -刷新后先核验应用的快照 UUID,再等待两项启动;不依赖机器调度速度,不读取 -私有状态,也不增加等待预算或放宽批量启动断言。 -该夹具同步补修由本机 Swift 6.4.2 的完整 Run 入口 21 条计时回归验证,固定 -Swift 6.3.3 / Xcode 26.6 仍需在补修后的提交上重跑。 +Run、Debug、单项、批量、服务及重启的首次库存夹具统一等待首扫返回,再在 +主 actor 的空闲状态发布完整库存,因为加载期间的显式刷新会被忽略。等待续体 +恢复时重新核验忙碌状态,使用同一个单调时钟期限,防止排队的刷新先开始; +发布后任何扫描都会看到已释放库存。普通流程核验确切快照 UUID;刻意阻塞 +inspection 或 Git watch 的竞态测试保留调用方拥有的刷新任务,不在发布助手里 +等待被门控的服务回调。原有启动、会话及等待预算保持不变。 + +只同步批量用例后,它在固定 CI 中已通过,但同组另外两个未同步的发布点失败, +因此将相同边界应用到全部 10 处首次库存发布。统一后,本机 Swift 6.4.2 的完整 +Run 入口 21 条计时回归在三个独立进程中均通过;本机证据不替代对应提交的 +Swift 6.3.3 / Xcode 26.6 检查,最终结果在 PR 中单独记录。 Git 状态观察的 CI 入口使用同一逐项计时工具生成 HTML/JUnit,不能只凭任务退出 码宣称首错之后的用例已经执行。 建立真实工作区身份后,Java 准备流程也会实际执行;没有待确认请求时取消准备 diff --git a/macos/Tests/LitheTests/RunEntryPointTests.swift b/macos/Tests/LitheTests/RunEntryPointTests.swift index bf65893d48..2254878e63 100644 --- a/macos/Tests/LitheTests/RunEntryPointTests.swift +++ b/macos/Tests/LitheTests/RunEntryPointTests.swift @@ -231,8 +231,7 @@ struct RunEntryPointTests { #expect(runFeature.generationState == .projectNotReady) #expect(runFeature.configurationStatus != .ready, "a partial inventory must not be identified") - operations.publish(workspace.snapshot) - await model.workspaceFeature.refreshCurrent() + try await publishFirstCompleteSnapshot(workspace.snapshot, using: operations, in: model) let ready = await awaitLoadDrivenChange(on: model) { model.runFeatureIfActive?.isProjectReady( @@ -264,8 +263,7 @@ struct RunEntryPointTests { let deferred = await awaitLoadDrivenChange(on: model) { model.pendingRunAction?.kind == .run } #expect(deferred, "Run must be deferred while the inventory is provisional") - operations.publish(workspace.snapshot) - await model.workspaceFeature.refreshCurrent() + try await publishFirstCompleteSnapshot(workspace.snapshot, using: operations, in: model) let ready = await awaitLoadDrivenChange(on: model) { model.runFeatureIfActive?.isProjectReady( @@ -318,8 +316,7 @@ struct RunEntryPointTests { #expect(model.pendingRunAction?.kind == .run) #expect(runConfigurations.launchPlanCallCount == 0) - workspaceOperations.publish(workspace.snapshot) - await model.workspaceFeature.refreshCurrent() + try await publishFirstCompleteSnapshot(workspace.snapshot, using: workspaceOperations, in: model) // Production clears the deferred action before it re-issues Run, so // waiting for the action to clear would pass even if the relaunch were @@ -376,7 +373,9 @@ struct RunEntryPointTests { // The snapshot lands and is fully consumed while that load is suspended. // The refresh cannot be awaited here: the load it drives suspends on the // inspection this test releases further down. - workspaceOperations.publish(workspace.snapshot) + try await publishFirstCompleteSnapshot( + workspace.snapshot, using: workspaceOperations, in: model, refresh: false + ) let refreshTask = Task { await model.workspaceFeature.refreshCurrent() } #expect( await runConfigurations.inspectionEntered(2), @@ -424,8 +423,7 @@ struct RunEntryPointTests { #expect(bound, "the Debug entry point never bound the workspace") #expect(model.runFeatureIfActive?.isProjectReady(for: workspace.root, snapshotID: model.workspaceSnapshotID) == false) - operations.publish(workspace.snapshot) - await model.workspaceFeature.refreshCurrent() + try await publishFirstCompleteSnapshot(workspace.snapshot, using: operations, in: model) let ready = await awaitLoadDrivenChange(on: model) { model.runFeatureIfActive?.isProjectReady( @@ -487,8 +485,7 @@ struct RunEntryPointTests { "direct start must not build a launch plan from a provisional inventory" ) - workspaceOperations.publish(workspace.snapshot) - await model.workspaceFeature.refreshCurrent() + try await publishFirstCompleteSnapshot(workspace.snapshot, using: workspaceOperations, in: model) let relaunched = await runConfigurations.launchPlanRequested(1) #expect(relaunched, "the deferred direct start was never actually re-issued") @@ -510,20 +507,7 @@ struct RunEntryPointTests { #expect(model.pendingRunAction?.kind == .startConfigurations(ids.sorted())) #expect(runConfigurations.launchPlanCallCount == 0) - // The batch can defer before the opening scan has returned. A refresh - // while that scan is loading is intentionally ignored, so first await - // the observable provisional result rather than dropping the test's - // only request for the newly published inventory. - try #require(await awaitChange(on: model.workspaceFeature, timeout: .seconds(30)) { - model.workspaceLoadErrorMessage != nil - && !model.workspaceFeature.isLoadingWorkspace - && !model.workspaceFeature.isRefreshingWorkspace - }) - let snapshot = workspace.snapshot - operations.publish(snapshot) - await model.workspaceFeature.refreshCurrent() - try #require(model.workspaceSnapshotID == snapshot.id, - "the published inventory must be applied before resuming the batch") + try await publishFirstCompleteSnapshot(workspace.snapshot, using: operations, in: model) #expect(await runConfigurations.launchPlanRequested(2)) #expect(model.pendingRunAction == nil) #expect(runConfigurations.launchPlanCallCount == 2) @@ -561,8 +545,7 @@ struct RunEntryPointTests { "run-all-services must not build a launch plan from a provisional inventory" ) - workspaceOperations.publish(workspace.snapshot) - await model.workspaceFeature.refreshCurrent() + try await publishFirstCompleteSnapshot(workspace.snapshot, using: workspaceOperations, in: model) let relaunched = await runConfigurations.launchPlanRequested(1) #expect(relaunched, "the deferred run-all-services was never actually re-issued") @@ -596,8 +579,7 @@ struct RunEntryPointTests { #expect(deferred) #expect(runConfigurations.launchPlanCallCount == 0) - workspaceOperations.publish(workspace.snapshot) - await model.workspaceFeature.refreshCurrent() + try await publishFirstCompleteSnapshot(workspace.snapshot, using: workspaceOperations, in: model) let relaunched = await runConfigurations.launchPlanRequested(2) #expect(relaunched) #expect(model.pendingRunAction == nil) @@ -648,7 +630,7 @@ struct RunEntryPointTests { // Each refresh is held at its watch-configuration fetch, so it runs as a // task the test releases; a refresh must also finish before the next one // starts, or the workspace feature would drop it as already refreshing. - workspaceOperations.publish(first) + try await publishFirstCompleteSnapshot(first, using: workspaceOperations, in: model, refresh: false) let firstRefresh = Task { await model.workspaceFeature.refreshCurrent() } #expect(await watchContext.entered(1)) watchContext.release(1) @@ -984,6 +966,42 @@ private func awaitLoadDrivenChange( await awaitChange(on: model, timeout: .seconds(30), until: isSatisfied) } +/// Releases the first complete inventory only after the opening scan has +/// reported its provisional result. Publishing while the workspace is idle +/// ensures any subsequent scan sees the released inventory, even if a watcher +/// starts before the caller's explicit refresh. Gated service loads keep their +/// refresh in a caller-owned task instead of awaiting it here. +@MainActor +private func publishFirstCompleteSnapshot( + _ snapshot: WorkspaceSnapshot, + using operations: SequencedWorkspaceOperations, + in model: AppModel, + refresh: Bool = true +) async throws { + let deadline = DispatchTime.now() + .seconds(30) + let openingScanFinished: @MainActor @Sendable () -> Bool = { + model.workspaceLoadErrorMessage != nil + && !model.workspaceFeature.isLoadingWorkspace + && !model.workspaceFeature.isRefreshingWorkspace + } + // A queued refresh can begin before an observation's continuation resumes. + // Recheck on this actor, retaining one deadline across those state changes. + while !openingScanFinished() { + let now = DispatchTime.now() + try #require(now < deadline, "the provisional opening scan did not finish") + let remaining = DispatchTimeInterval.nanoseconds(Int(deadline.uptimeNanoseconds - now.uptimeNanoseconds)) + try #require(await awaitChange( + on: model.workspaceFeature, timeout: remaining, until: openingScanFinished + )) + } + operations.publish(snapshot) + guard refresh else { return } + await model.workspaceFeature.refreshCurrent() + try #require(await awaitChange(on: model.workspaceFeature, timeout: .seconds(30)) { + model.workspaceSnapshotID == snapshot.id + }, "the released inventory must be applied before checking deferred Run") +} + /// A real workspace on disk holding one Java entry point, so generation runs /// through the shared Core instead of a stubbed result. @MainActor diff --git a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json index 42ab85350e..55e3b16e7e 100644 --- a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json +++ b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json @@ -4,7 +4,7 @@ "group": "工作区生命周期", "capability": "目录索引排除与 Git 自动排除", "owner": "Workspace", - "verification": "较早本地验收阶段未执行 Windows/Frontend 测试;用户随后授权 Ready 触发完整自动 CI,原生界面验证仍单独记录。整合 preview a1ed8f4c 后,补修源码921c888c通过完整Core1484项、本机Swift6.4.2/Xcode27.2受影响182条(含完整Git观察28条)、Rust↔Swift桥接及Core边界检查;编译与测试按现有CI分离,未放宽计时预算。完整开发App原生验收确认排除目录与后代仍可浏览并显示排除图标,冷JDT仅导入visible且实际返回PrintStream补全,外部stage/commit自动更新且JDT和补全保持;用户操作取消排除后由代理核验搜索、落盘、重启持久化及A/B项目查询与关闭隔离。损坏配置随App语言中英即时切换且原值保留,修正后显式重试成功;真实权限失败分别显示中英文错误,权限恢复后观察到项目重载,代理未点击该流程的Retry。1419包文件/9符号链接及签名不变;QA/JDT/辅助进程清理,用户Dev保留,开发偏好精确恢复,新增缓存归档。4e7b8441的插件512条及合成库存10202/201剪枝结果保留原版本,不能当作UI或LSP后台性能基准。较早源码的普通角色、linked-worktree和子模块原生证据见Note。macOS在上述能力范围完成本机运行验证,固定Xcode26.6完整CI仍待最终提交检查;Windows新回归仅书写和静态复审,原生仍pending。Java显式构建模块仍可能扫描,Go/Rust配置送达不等于后台零扫描。 后续补修内容搜索首次请求、加载更多及索引状态的错误呈现:保存类型化错误,按当前语言使用共享词条,不拼接内部错误码;本机Bun1.3.13的19条逐项计时及TypeScript检查通过,损坏偏好保留、语言切换不重搜及加载更多保留结果有回归。真实页面有结果时显示紧凑错误和重试,失败暂停自动翻页;新增回归接入Windows CI隔离分组;该补修的最终CI仍待取得,Windows原生界面保持pending。 批量Run夹具增加首扫完成与快照UUID同步,本机Swift6.4.2完整Run入口21条通过,固定工具链CI待补修提交复验。", + "verification": "较早本地验收阶段未执行 Windows/Frontend 测试;用户随后授权 Ready 触发完整自动 CI,原生界面验证仍单独记录。整合 preview a1ed8f4c 后,补修源码921c888c通过完整Core1484项、本机Swift6.4.2/Xcode27.2受影响182条(含完整Git观察28条)、Rust↔Swift桥接及Core边界检查;编译与测试按现有CI分离,未放宽计时预算。完整开发App原生验收确认排除目录与后代仍可浏览并显示排除图标,冷JDT仅导入visible且实际返回PrintStream补全,外部stage/commit自动更新且JDT和补全保持;用户操作取消排除后由代理核验搜索、落盘、重启持久化及A/B项目查询与关闭隔离。损坏配置随App语言中英即时切换且原值保留,修正后显式重试成功;真实权限失败分别显示中英文错误,权限恢复后观察到项目重载,代理未点击该流程的Retry。1419包文件/9符号链接及签名不变;QA/JDT/辅助进程清理,用户Dev保留,开发偏好精确恢复,新增缓存归档。4e7b8441的插件512条及合成库存10202/201剪枝结果保留原版本,不能当作UI或LSP后台性能基准。较早源码的普通角色、linked-worktree和子模块原生证据见Note。macOS在上述能力范围完成本机运行验证,固定Xcode26.6完整CI与本机结果分别核对;Windows新回归仅书写和静态复审,原生仍pending。Java显式构建模块仍可能扫描,Go/Rust配置送达不等于后台零扫描。 后续补修内容搜索首次请求、加载更多及索引状态的错误呈现:保存类型化错误,按当前语言使用共享词条,不拼接内部错误码;本机Bun1.3.13的19条逐项计时及TypeScript检查通过,损坏偏好保留、语言切换不重搜及加载更多保留结果有回归。真实页面有结果时显示紧凑错误和重试,失败暂停自动翻页;新增回归接入Windows CI隔离分组;该补修的固定工具链及Windows CI按对应提交的PR报告单独记录,Windows原生界面保持pending。 批量Run夹具增加首扫完成与快照UUID同步,本机Swift6.4.2完整Run入口21条通过,固定工具链结果以对应PR提交报告为准。 继而统一全部10处Run/Debug/单项/批量/服务/重启首次库存发布:在主actor空闲边界释放库存,重查排队刷新状态并核验准确快照UUID,保留刻意门控的调用方刷新任务;本机完整Run入口21条在三个独立进程中通过。", "macos": { "implementationStatus": "partial", "verificationStatus": "verified", @@ -21,7 +21,8 @@ ".agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md", "macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift", "macos/Tests/LitheTests/WorkspaceSessionCoordinatorTests.swift", - "macos/Tests/LitheTests/GitStatusObservationTests.swift" + "macos/Tests/LitheTests/GitStatusObservationTests.swift", + "macos/Tests/LitheTests/RunEntryPointTests.swift" ] }, "windows": { From c892981e5b588878c1b31bc82879d9292342991b Mon Sep 17 00:00:00 2001 From: xueyeshang1 Date: Sat, 31 Oct 2026 21:43:48 +0800 Subject: [PATCH 12/27] fix: preserve excluded history and validate indexing marks --- ...026-10-28-workspace-indexing-exclusions.md | 16 +++ .../Application/WorkspaceFeatureModel.swift | 20 +-- .../LitheTests/LitheCoreLogicTests.swift | 38 +++++- rust/lithe-core/src/project/history.rs | 41 ++++-- rust/lithe-core/src/tests/project.rs | 118 ++++++++++++++++++ shared/contracts/rust-core-api.md | 9 +- shared/fixtures/history/relocation-v1.json | 9 ++ .../features/history-snapshots.json | 7 +- .../workspace-indexing-exclusions.json | 6 +- .../stores/directory-marks-storage.ts | 33 +++++ .../file-explorer/stores/directory-marks.ts | 39 +----- .../stores/indexing-settings-error.ts | 12 ++ .../stores/workspace-indexing.ts | 24 +--- .../use-content-search.integration.test.tsx | 37 +++++- 14 files changed, 317 insertions(+), 92 deletions(-) create mode 100644 shared/fixtures/history/relocation-v1.json create mode 100644 windows/tauri/src/features/file-explorer/stores/directory-marks-storage.ts create mode 100644 windows/tauri/src/features/file-explorer/stores/indexing-settings-error.ts diff --git a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md index 805c1cf480..2a054de115 100644 --- a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md +++ b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md @@ -152,6 +152,13 @@ Git 规则变更信号独立于可见文件路径:隐藏的 `.gitignore`、位 过滤,不能在某一层重新加入已取消的内置隐藏项。显示该目录也不代表取消其 Git 索引排除。本地历史的单条通配符匹配不使用工作区索引的嵌套根边界; 构造独立规则时显式保留空边界,不把索引策略变成本地历史规则的来源。 +重命名和移动同样不能从索引候选枚举历史文件。工作区对选中的源、目标调用一次 +历史迁移,Core 根据历史存储的元数据迁移精确路径及目录后代,保留相对后缀; +例如排除 `archive` 后重命名为 `archive-old`,已有 `archive/notes.txt` 的记录仍须 +出现在新路径。不要为了迁移历史重新扫描排除目录或把后代加入索引库存。 +目录标记由树与索引配置共用同一个存储读取和结构校验器,错误类型放在无运行时 +依赖的模块。搜索不能自行 `JSON.parse` 并在字段缺失时安装空标记,否则树与搜索 +会对同一份损坏数据作出不同决定,原始解析错误也会绕过本地化。 自动规则的决策缓存按需建立,因此状态中的目录集合不是完整的文件系统清单。 Git 失败必须保留手动排除并报告失败,不能报告成无忽略规则。 Java 的导入配置仅属部分支持;Rust 与 Go 分别合并原生目录列表与有序过滤规则, @@ -183,6 +190,15 @@ Python/Basedpyright 的项目配置可以覆盖语言服务器配置,因此不 ## 验证 +最新复审的历史迁移补修通过 Core 1485 条逐项计时、本机 Swift 6.4.2 的 64 条 +组合回归及 9 条 Git 桥接回归。共享夹具覆盖文件、目录重命名与移动,核验排除 +后的历史内容、ID、时间和相对后缀保留,同名前缀兄弟不受影响;Swift 使用真实 +文件操作验证空索引库存仍提交迁移,并核验移动后的文件内容。 +共享目录标记校验通过本机 Bun 的搜索 CI 分组 13 条、目录标记与租约 38 条, +以及 TypeScript 检查。真实内容搜索 API 在损坏数据时返回类型化错误,按当前 +应用语言显示,并保留原数据、不安装空策略。完整 Core、共享契约、i18n、 +分层、包只读、Notes、矩阵和稳定性门禁通过;未新增 Windows 原生界面证据。 + 2026-10-31 整合 `preview` 的 `a1ed8f4c` 后,源码 `4e7b8441` 的 Core 1482 项 逐项计时通过,Swift 6.4.2 / Xcode 27.2 受影响组合 177 条计时记录通过,包含 上游本地历史、内置隐藏规则、完整 Git 观察、工作区生命周期和 Run/Java 入口。 diff --git a/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift b/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift index e84168719c..798ec11336 100644 --- a/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift +++ b/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift @@ -835,17 +835,8 @@ package final class WorkspaceFeatureModel: ObservableObject { destination = request.targetURL.deletingLastPathComponent().appendingPathComponent(name) } - var relocatedHistoryFiles: [(URL, URL)] = [] if request.kind == .rename { - let sourcePath = request.targetURL.standardizedFileURL.path await recordHistory?(request.targetURL, .beforeRename) - relocatedHistoryFiles = projectFiles - .filter { urlContains(request.targetURL, child: $0) } - .map { source in - let suffix = String(source.standardizedFileURL.path.dropFirst(sourcePath.count)) - .trimmingCharacters(in: CharacterSet(charactersIn: "/")) - return (source, suffix.isEmpty ? destination : destination.appendingPathComponent(suffix)) - } } let fileOperations = self.fileOperations @@ -901,9 +892,7 @@ package final class WorkspaceFeatureModel: ObservableObject { ) guard workspaceURL == operationWorkspaceURL, workspaceGeneration == operationWorkspaceGeneration else { return } - for (source, destination) in relocatedHistoryFiles { - await relocateHistory?(source, destination) - } + await relocateHistory?(request.targetURL, destination) relocateOpenDocuments?(request.targetURL, destination) notify?("Renamed to \(name)") } else if request.kind == .createFile { @@ -958,7 +947,6 @@ package final class WorkspaceFeatureModel: ObservableObject { failure = "Save or discard unsaved files before moving these items" break } - let historyFiles = projectFiles.filter { urlContains(source, child: $0) } let previousMarks = directoryMarks var movedByVersionControl = false if let moveTrackedItem { @@ -989,11 +977,7 @@ package final class WorkspaceFeatureModel: ObservableObject { previousMarks: marks, workspaceURL: workspace, workspaceGeneration: generation ) guard workspaceGeneration == generation, workspaceURL == workspace else { return } - for file in historyFiles { - guard workspaceGeneration == generation, workspaceURL == workspace else { return } - let suffix = String(file.path.dropFirst(source.path.count)).trimmingCharacters(in: CharacterSet(charactersIn: "/")) - await relocateHistory?(file, suffix.isEmpty ? destination : destination.appendingPathComponent(suffix)) - } + await relocateHistory?(source, destination) } guard workspaceGeneration == generation, workspaceURL == workspace else { return } if let failure { diff --git a/macos/Tests/LitheTests/LitheCoreLogicTests.swift b/macos/Tests/LitheTests/LitheCoreLogicTests.swift index f24e457444..3660bb69d1 100644 --- a/macos/Tests/LitheTests/LitheCoreLogicTests.swift +++ b/macos/Tests/LitheTests/LitheCoreLogicTests.swift @@ -3232,6 +3232,41 @@ struct EditorDocumentTests { #expect(markStore.savedMarks == expected) } + @Test(arguments: [false, true]) + @MainActor + func excludedItemsRelocateHistoryWithoutIndexCandidates(isDirectory: Bool) async throws { + let workspace = FileManager.default.temporaryDirectory + .appendingPathComponent("excluded-history-\(UUID().uuidString)").standardizedFileURL + try FileManager.default.createDirectory(at: workspace.appendingPathComponent("archive"), withIntermediateDirectories: true) + defer { try? FileManager.default.removeItem(at: workspace) } + try Data("retained history".utf8).write(to: workspace.appendingPathComponent("archive/note.txt")) + let target = workspace.appendingPathComponent("dest") + try FileManager.default.createDirectory(at: target, withIntermediateDirectories: true) + let source = workspace.appendingPathComponent(isDirectory ? "archive" : "archive/note.txt") + let destination = source.deletingLastPathComponent().appendingPathComponent("renamed") + var relocations: [(URL, URL)] = [] + let model = makeWorkspaceObservationUnitModel( + fileOperations: MacWorkspaceFileOperations(), provider: SequencedGitWatchContextProvider([nil]), + watcherFactory: TestDirectoryWatcherFactory(), refreshGit: {}, + relocateHistory: { relocations.append(($0, $1)) }, + directoryMarkStore: RecordingWorkspaceDirectoryMarkStore(initial: ["archive": .excluded]) + ) + defer { model.reset() } + model.beginWorkspace(at: workspace, visibilityRules: .default) + #expect(model.projectFiles.isEmpty) + model.requestRenameProjectItem(at: source) + await model.performProjectItemEdit(named: "renamed") + #expect(relocations.map { $0.0.standardizedFileURL.path } == [source.path]) + #expect(relocations.map { $0.1.standardizedFileURL.path } == [destination.path]) + await model.moveProjectItems([destination], to: target) + let moved = target.appendingPathComponent("renamed") + #expect(relocations.map { $0.0.standardizedFileURL.path } == [source.path, destination.path]) + #expect(relocations.map { $0.1.standardizedFileURL.path } == [destination.path, moved.path]) + let movedFile = isDirectory ? moved.appendingPathComponent("note.txt") : moved + #expect(try String(contentsOf: movedFile, encoding: .utf8) == "retained history") + #expect(model.projectFiles.isEmpty, "history migration must not repopulate index candidates") + } + @Test @MainActor func batchMoveRejectsConflictsBeforeMovingAnyFile() async { @@ -6419,6 +6454,7 @@ private func makeWorkspaceObservationUnitModel( notifyWorkspaceFileChanges: @escaping @MainActor ([WorkspaceFileChange]) -> Void = { _ in }, reloadProjectServices: @escaping @MainActor () async -> Void = {}, recordHistory: @escaping @MainActor (URL, LocalHistoryReason) async -> Void = { _, _ in }, + relocateHistory: @escaping @MainActor (URL, URL) async -> Void = { _, _ in }, directoryMarkStore: any WorkspaceDirectoryMarkStoring = EmptyWorkspaceDirectoryMarkStore(), observationDelay: (@Sendable (Duration) async throws -> Void)? = nil, documentsProvider: @escaping @MainActor @Sendable () -> [EditorDocument] = { [] }, @@ -6444,7 +6480,7 @@ private func makeWorkspaceObservationUnitModel( openFile: { _ in }, notify: notify, recordHistory: recordHistory, - relocateHistory: { _, _ in }, + relocateHistory: relocateHistory, relocateOpenDocuments: { _, _ in }, closeDocuments: closeDocuments, processExternalChanges: processExternalChanges, diff --git a/rust/lithe-core/src/project/history.rs b/rust/lithe-core/src/project/history.rs index 90f8a3fbc0..0512ee48be 100644 --- a/rust/lithe-core/src/project/history.rs +++ b/rust/lithe-core/src/project/history.rs @@ -4,7 +4,7 @@ use crate::project::files::VisibilityRules; use crate::protocol::{invalid_relative_path, CoreError, ErrorCode}; use crate::protocol::{HistoryEntriesResponse, HistoryEntryResponse}; use serde::{Deserialize, Serialize}; -use std::collections::HashMap; +use std::collections::{BTreeSet, HashMap}; use std::fs; use std::path::{Path, PathBuf}; use std::sync::{Arc, Mutex, OnceLock, Weak}; @@ -439,27 +439,53 @@ pub fn content(request: HistoryContentRequest) -> Result { Ok(String::from_utf8_lossy(&data).into_owned()) } -/// Moves history metadata between workspace-relative paths. +/// Moves retained history for a file or subtree, independently of index inventory. pub fn relocate(request: HistoryRelocateRequest) -> Result<(), CoreError> { let storage = storage_root(&request.storage_root)?; let lock = storage_lock(&storage); let _guard = lock.lock().unwrap_or_else(|poisoned| poisoned.into_inner()); let source = safe_relative_path(&request.source_path)?; let destination = safe_relative_path(&request.destination_path)?; - let source_directory = storage.join(stable_identifier(&source)); + if source == destination { + return Ok(()); + } + let prefix = format!("{source}/"); + if destination.starts_with(&prefix) || source.starts_with(&format!("{destination}/")) { + return Err(CoreError::new( + ErrorCode::InvalidRequest, + "History relocation paths must not overlap", + )); + } + // History can outlive indexing or visibility rules. Enumerate its retained + // metadata, never the project's index candidates or current filesystem tree. + let paths = all_entries(&storage) + .into_iter() + .filter_map(|entry| safe_relative_path(&entry.relative_path).ok()) + .filter(|path| path == &source || path.starts_with(&prefix)) + .collect::>(); + invalidate_storage_usage(&storage); + for path in paths { + let relocated = format!("{destination}{}", &path[source.len()..]); + relocate_file_history(&storage, &path, &relocated)?; + } + Ok(()) +} + +fn relocate_file_history(storage: &Path, source: &str, destination: &str) -> Result<(), CoreError> { + let source_directory = storage.join(stable_identifier(source)); if !source_directory.exists() { return Ok(()); } - let destination_directory = storage.join(stable_identifier(&destination)); + let destination_directory = storage.join(stable_identifier(destination)); fs::create_dir_all(&destination_directory)?; - for entry in read_entries(&source_directory, &storage) { + for entry in read_entries(&source_directory, storage) { let content_name = format!("{}.snapshot", entry.id); let metadata_name = format!("{}.json", entry.id); let content_path = destination_directory.join(&content_name); fs::rename(storage.join(&entry.content_path), &content_path)?; let relocated = StoredEntry { - relative_path: destination.clone(), - content_path: format!("{}/{}", stable_identifier(&destination), content_name), + relative_path: destination.to_string(), + content_path: format!("{}/{}", stable_identifier(destination), content_name), ..entry }; fs::write( @@ -468,7 +494,6 @@ pub fn relocate(request: HistoryRelocateRequest) -> Result<(), CoreError> { )?; } let _ = fs::remove_dir_all(source_directory); - invalidate_storage_usage(&storage); Ok(()) } diff --git a/rust/lithe-core/src/tests/project.rs b/rust/lithe-core/src/tests/project.rs index d14df602a8..07a2ee08b6 100644 --- a/rust/lithe-core/src/tests/project.rs +++ b/rust/lithe-core/src/tests/project.rs @@ -1187,6 +1187,124 @@ fn preserve_case_matches_original_occurrence_shape() { fs::remove_dir_all(root).expect("temporary fixture should be removable"); } +#[test] +fn local_history_relocates_excluded_files_and_subtrees_from_retained_metadata() { + let cases: Value = serde_json::from_str(include_str!( + "../../../../shared/fixtures/history/relocation-v1.json" + )) + .unwrap(); + for case in cases["cases"].as_array().unwrap() { + let root = temporary_root("excluded-history-relocation"); + struct Cleanup(std::path::PathBuf, Option); + impl Drop for Cleanup { + fn drop(&mut self) { + if let Some(revision) = self.1 { + let _ = execute_json(&serde_json::json!({ + "command": "workspace.releaseIndexing", + "payload": {"root": self.0, "revision": revision, "ownerId": "history-relocation-test"} + }).to_string()); + } + let _ = fs::remove_dir_all(&self.0); + } + } + let mut cleanup = Cleanup(root.clone(), None); + let storage = root.join("history-storage"); + let request = |command: &str, payload: Value| -> Value { + let response: Value = serde_json::from_str(&execute_json( + &serde_json::json!({"command": command, "payload": payload}).to_string(), + )) + .unwrap(); + assert_eq!(response["ok"], true, "{response}"); + response["data"].clone() + }; + let source = case["source"].as_str().unwrap(); + let destination = case["destination"].as_str().unwrap(); + let unaffected = cases["unaffected"].as_str().unwrap(); + let paths = case["files"] + .as_array() + .unwrap() + .iter() + .map(|path| path.as_str().unwrap()) + .chain([unaffected]) + .collect::>(); + let mut recorded = Vec::new(); + for path in &paths { + let file = root.join(path); + fs::create_dir_all(file.parent().unwrap()).unwrap(); + fs::write(&file, path).unwrap(); + recorded.push(request( + "history.record", + serde_json::json!({ + "workspaceRoot": root, "storageRoot": storage, "path": path, + "reason": "saved", "content": path + }), + )); + } + let policy = request( + "workspace.configureIndexing", + serde_json::json!({ + "root": root, "ownerId": "history-relocation-test", "gitIgnoreEnabled": false, + "manualExcludedDirectories": ["archive"], "includedDirectories": [] + }), + ); + cleanup.1 = policy["revision"].as_u64(); + let snapshot = request("workspace.snapshot", serde_json::json!({"root": root})); + assert!(!snapshot["files"] + .as_array() + .unwrap() + .iter() + .any(|path| path.as_str().unwrap().starts_with("archive/"))); + fs::create_dir_all(root.join(destination).parent().unwrap()).unwrap(); + fs::rename(root.join(source), root.join(destination)).unwrap(); + request( + "history.relocate", + serde_json::json!({ + "storageRoot": storage, "sourcePath": source, "destinationPath": destination + }), + ); + request( + "history.relocate", + serde_json::json!({ + "storageRoot": storage, "sourcePath": destination, "destinationPath": destination + }), + ); + for (path, original) in paths.iter().zip(recorded) { + let relocated = if *path == unaffected { + path.to_string() + } else { + format!("{destination}{}", &path[source.len()..]) + }; + let entries = request( + "history.entries", + serde_json::json!({ + "workspaceRoot": root, "storageRoot": storage, "path": relocated + }), + ); + let entries = entries["entries"].as_array().unwrap(); + assert_eq!(entries.len(), 1, "{relocated}"); + for field in ["id", "timestamp", "reason", "byteCount", "label"] { + assert_eq!(entries[0][field], original[field], "{relocated}: {field}"); + } + let content = request( + "history.content", + serde_json::json!({ + "storageRoot": storage, "contentPath": entries[0]["contentPath"] + }), + ); + assert_eq!(content["text"], *path); + if *path != unaffected { + let previous = request( + "history.entries", + serde_json::json!({ + "workspaceRoot": root, "storageRoot": storage, "path": path + }), + ); + assert!(previous["entries"].as_array().unwrap().is_empty()); + } + } + } +} + #[test] fn local_history_records_deduplicates_lists_and_relocates() { let root = temporary_root("history"); diff --git a/shared/contracts/rust-core-api.md b/shared/contracts/rust-core-api.md index 7b2f5af322..1116aef936 100644 --- a/shared/contracts/rust-core-api.md +++ b/shared/contracts/rust-core-api.md @@ -991,7 +991,7 @@ package manager owns the download and Lithe does not infer bytes from logs. | `history.record` | Store a versioned text snapshot and metadata | | `history.entries` | List valid history entries for one file or a workspace | | `history.content` | Read a stored history snapshot by relative storage path | -| `history.relocate` | Move a file's history records after a rename | +| `history.relocate` | Move retained history for a file or directory subtree after a rename or move | | `history.rename` | Set or clear a user-visible label on a history entry | | `history.delete` | Delete one history entry and its snapshot | | `history.ignorePreview` | Validate local history ignore rules and report which rule skips a sample path | @@ -3135,9 +3135,14 @@ tree, so a hidden path (including folder patterns such as `**/generated/` or `.lithe/*`) is neither recorded nor listed. Invalid metadata and missing snapshot files are ignored. `history.entries` returns Unix-second timestamps and relative `contentPath` values. `history.content` rejects traversal, -`history.relocate` updates metadata and storage paths, and `history.rename` and +`history.relocate` updates metadata and storage paths for the exact `sourcePath` +and its `/`-delimited descendants, preserving each suffix under `destinationPath`. +It enumerates retained history metadata independently of workspace indexing and +current visibility rules; similarly prefixed siblings are unchanged. Equal paths +are a no-op; overlapping ancestor/descendant paths are rejected. `history.rename` and `history.delete` validate both the relative file path and entry ID before changing stored metadata. +File and subtree relocation cases are defined in `shared/fixtures/history/relocation-v1.json`. A `hiddenFilePatterns` entry starting with `!` turns a rule off instead of adding one: `!**/name/` or `!name` removes that hidden folder (built-in or not), diff --git a/shared/fixtures/history/relocation-v1.json b/shared/fixtures/history/relocation-v1.json new file mode 100644 index 0000000000..bc2673de65 --- /dev/null +++ b/shared/fixtures/history/relocation-v1.json @@ -0,0 +1,9 @@ +{ + "cases": [ + { "source": "archive", "destination": "archive-old", "files": ["archive/notes.txt", "archive/deep/draft.txt"] }, + { "source": "archive", "destination": "bucket/archive", "files": ["archive/notes.txt", "archive/deep/draft.txt"] }, + { "source": "archive/notes.txt", "destination": "archive/renamed.txt", "files": ["archive/notes.txt"] }, + { "source": "archive/notes.txt", "destination": "bucket/notes.txt", "files": ["archive/notes.txt"] } + ], + "unaffected": "archive-other/notes.txt" +} diff --git a/shared/platform-feature-matrix/features/history-snapshots.json b/shared/platform-feature-matrix/features/history-snapshots.json index 518a21f948..0d4d3f034d 100644 --- a/shared/platform-feature-matrix/features/history-snapshots.json +++ b/shared/platform-feature-matrix/features/history-snapshots.json @@ -13,7 +13,10 @@ "macos/Sources/Lithe/Views/App/LocalHistorySettingsControl.swift", "macos/Tests/LitheTests/LocalHistoryIgnoreRulesTests.swift", "macos/Sources/Lithe/Application/Features/LocalHistoryStorageSettingsModel.swift", - "macos/Tests/LitheTests/LocalHistorySettingsTests.swift" + "macos/Tests/LitheTests/LocalHistorySettingsTests.swift", + "rust/lithe-core/src/tests/project.rs", + "shared/fixtures/history/relocation-v1.json", + "macos/Tests/LitheTests/LitheCoreLogicTests.swift" ], "implementationStatus": "implemented", "verificationStatus": "pending" @@ -28,6 +31,6 @@ "verificationStatus": "pending" }, "owner": "Local History", - "verification": "编辑同一文件多次,比较快照时间、内容 Diff 和文件范围。 macOS 外部变更和目录操作按批记录历史,仅首个成功快照触发全库过期清理;验证跳过文件、连续批次、取消及单文件保存,4000 文件变化后 CPU 回落且历史仍可读取。 编辑同一文件多次,比较快照时间、内容 Diff 和文件范围。存储上限:Rust 测试覆盖基线跳过生成目录与嵌套仓库、保存时清理旧版本留下的排除目录基线、超过 100MB 先淘汰旧基线再淘汰编辑和标签、基线预算 50MB。忽略规则:Rust 测试覆盖通配符与正则忽略新记录但保留已有历史、正则不区分大小写且无效或空正则不匹配、预览报告无效正则行和命中规则(隐藏、通配符含内置文件夹、正则)、拒绝越界路径、占用统计与清空项目历史。内置项可改:Rust 测试覆盖内置文件夹以 `**/名称/` 通配符规则生效、命中时报告该规则、`!**/名称/` 或 `!名称` 关闭内置项后重新记录;隐藏路径的 `!` 条目关闭内置隐藏目录。上限可配:Rust 测试覆盖默认 100MB、配置值生效并限定在 10MB–100GB、基线预算为上限一半。Git 对照:Rust 测试覆盖测试路径在 Git 仓库中返回是否被 .gitignore 忽略、非仓库返回空。 PR #1615 回归:关闭内置隐藏项和历史忽略项后,添加无关通配符仍可预览及记录;清空前取消并等待已有保存和外部变更任务,清空代次拒绝在途批次续写,清空后新保存可记录;隐藏路径变化纳入预览请求身份并重新计算结果。 容量输入仅接受完整非负整数与可选 MB 后缀,指数、负数、字母、溢出等无效输入不改变已保存值;回车和失焦均验证恢复或范围限定。清空失败显示中英错误与需再次确认的重试入口,回读剩余用量;重试成功清除错误并显示新用量。", + "verification": "编辑同一文件多次,比较快照时间、内容 Diff 和文件范围。 macOS 外部变更和目录操作按批记录历史,仅首个成功快照触发全库过期清理;验证跳过文件、连续批次、取消及单文件保存,4000 文件变化后 CPU 回落且历史仍可读取。 编辑同一文件多次,比较快照时间、内容 Diff 和文件范围。存储上限:Rust 测试覆盖基线跳过生成目录与嵌套仓库、保存时清理旧版本留下的排除目录基线、超过 100MB 先淘汰旧基线再淘汰编辑和标签、基线预算 50MB。忽略规则:Rust 测试覆盖通配符与正则忽略新记录但保留已有历史、正则不区分大小写且无效或空正则不匹配、预览报告无效正则行和命中规则(隐藏、通配符含内置文件夹、正则)、拒绝越界路径、占用统计与清空项目历史。内置项可改:Rust 测试覆盖内置文件夹以 `**/名称/` 通配符规则生效、命中时报告该规则、`!**/名称/` 或 `!名称` 关闭内置项后重新记录;隐藏路径的 `!` 条目关闭内置隐藏目录。上限可配:Rust 测试覆盖默认 100MB、配置值生效并限定在 10MB–100GB、基线预算为上限一半。Git 对照:Rust 测试覆盖测试路径在 Git 仓库中返回是否被 .gitignore 忽略、非仓库返回空。 PR #1615 回归:关闭内置隐藏项和历史忽略项后,添加无关通配符仍可预览及记录;清空前取消并等待已有保存和外部变更任务,清空代次拒绝在途批次续写,清空后新保存可记录;隐藏路径变化纳入预览请求身份并重新计算结果。 容量输入仅接受完整非负整数与可选 MB 后缀,指数、负数、字母、溢出等无效输入不改变已保存值;回车和失焦均验证恢复或范围限定。清空失败显示中英错误与需再次确认的重试入口,回读剩余用量;重试成功清除错误并显示新用量。 PR #1597 历史迁移回归:文件与目录已有历史后排除索引,再重命名或移动,按历史元数据迁移精确路径和后代,保留内容、ID及相对后缀,同名前缀兄弟不变;工作区回归使用真实文件操作与空索引候选,不能为迁移历史重新纳入索引。目标平台原生历史界面验收仍待完成。", "notes": "Windows 新增项目历史聚合入口与路径筛选,可进入既有单文件时间线比较和恢复;存储改按规范化工作区哈希隔离,Core 秒级时间转换为界面毫秒。项目历史入口只对原生本地工作区开放,WSL 与远程 provider 路径不会展示或调用不支持的 Core 查询。旧全局历史不含可靠工作区归属,原样保留但不自动归入新时间线。每个项目的本地历史上限 100MB(按 4KB 分配块计),其中项目基线最多 50MB;node_modules、.venv、target、.claude 等依赖、缓存和构建输出文件夹作为内置通配符忽略规则(`**/名称/`),基线和编辑都不记录;基线另外跳过嵌套 Git 仓库。超限时在下次保存时按基线、普通编辑、带标签条目的顺序从旧到新淘汰,两端共用 Core 行为。macOS 设置 › 通用 › 本地历史可配置只作用于本地历史的忽略规则(通配符或正则,每行一条,应用后生效),项目树仍显示这些文件;测试路径实时显示被哪条规则忽略,无效正则提示行号并跳过;显示本项目占用/上限,可确认后清空本项目历史。通配符忽略规则和隐藏路径都以文本框列出内置项,删掉一行即关闭该内置项(保存为 `!条目`,后续版本新增的内置项仍会生效);用量按二进制单位显示(100 MB)。每个项目的上限可在「已用」旁用步进器调整(50–5000 MB,默认 100 MB),保存时按新上限淘汰;上限也可直接输入数值;测试路径旁有 ⓘ 说明,结果分两行显示本地历史是否记录、Git 是否忽略(仅作对照,本地历史不跟随 .gitignore)。Windows 暂无忽略规则与上限设置,但 Core 的 history.record 已支持 ignoreRules。" } diff --git a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json index 55e3b16e7e..30d7e0b426 100644 --- a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json +++ b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json @@ -4,7 +4,7 @@ "group": "工作区生命周期", "capability": "目录索引排除与 Git 自动排除", "owner": "Workspace", - "verification": "较早本地验收阶段未执行 Windows/Frontend 测试;用户随后授权 Ready 触发完整自动 CI,原生界面验证仍单独记录。整合 preview a1ed8f4c 后,补修源码921c888c通过完整Core1484项、本机Swift6.4.2/Xcode27.2受影响182条(含完整Git观察28条)、Rust↔Swift桥接及Core边界检查;编译与测试按现有CI分离,未放宽计时预算。完整开发App原生验收确认排除目录与后代仍可浏览并显示排除图标,冷JDT仅导入visible且实际返回PrintStream补全,外部stage/commit自动更新且JDT和补全保持;用户操作取消排除后由代理核验搜索、落盘、重启持久化及A/B项目查询与关闭隔离。损坏配置随App语言中英即时切换且原值保留,修正后显式重试成功;真实权限失败分别显示中英文错误,权限恢复后观察到项目重载,代理未点击该流程的Retry。1419包文件/9符号链接及签名不变;QA/JDT/辅助进程清理,用户Dev保留,开发偏好精确恢复,新增缓存归档。4e7b8441的插件512条及合成库存10202/201剪枝结果保留原版本,不能当作UI或LSP后台性能基准。较早源码的普通角色、linked-worktree和子模块原生证据见Note。macOS在上述能力范围完成本机运行验证,固定Xcode26.6完整CI与本机结果分别核对;Windows新回归仅书写和静态复审,原生仍pending。Java显式构建模块仍可能扫描,Go/Rust配置送达不等于后台零扫描。 后续补修内容搜索首次请求、加载更多及索引状态的错误呈现:保存类型化错误,按当前语言使用共享词条,不拼接内部错误码;本机Bun1.3.13的19条逐项计时及TypeScript检查通过,损坏偏好保留、语言切换不重搜及加载更多保留结果有回归。真实页面有结果时显示紧凑错误和重试,失败暂停自动翻页;新增回归接入Windows CI隔离分组;该补修的固定工具链及Windows CI按对应提交的PR报告单独记录,Windows原生界面保持pending。 批量Run夹具增加首扫完成与快照UUID同步,本机Swift6.4.2完整Run入口21条通过,固定工具链结果以对应PR提交报告为准。 继而统一全部10处Run/Debug/单项/批量/服务/重启首次库存发布:在主actor空闲边界释放库存,重查排队刷新状态并核验准确快照UUID,保留刻意门控的调用方刷新任务;本机完整Run入口21条在三个独立进程中通过。", + "verification": "较早本地验收阶段未执行 Windows/Frontend 测试;用户随后授权 Ready 触发完整自动 CI,原生界面验证仍单独记录。整合 preview a1ed8f4c 后,补修源码921c888c通过完整Core1484项、本机Swift6.4.2/Xcode27.2受影响182条(含完整Git观察28条)、Rust↔Swift桥接及Core边界检查;编译与测试按现有CI分离,未放宽计时预算。完整开发App原生验收确认排除目录与后代仍可浏览并显示排除图标,冷JDT仅导入visible且实际返回PrintStream补全,外部stage/commit自动更新且JDT和补全保持;用户操作取消排除后由代理核验搜索、落盘、重启持久化及A/B项目查询与关闭隔离。损坏配置随App语言中英即时切换且原值保留,修正后显式重试成功;真实权限失败分别显示中英文错误,权限恢复后观察到项目重载,代理未点击该流程的Retry。1419包文件/9符号链接及签名不变;QA/JDT/辅助进程清理,用户Dev保留,开发偏好精确恢复,新增缓存归档。4e7b8441的插件512条及合成库存10202/201剪枝结果保留原版本,不能当作UI或LSP后台性能基准。较早源码的普通角色、linked-worktree和子模块原生证据见Note。macOS在上述能力范围完成本机运行验证,固定Xcode26.6完整CI与本机结果分别核对;Windows新回归仅书写和静态复审,原生仍pending。Java显式构建模块仍可能扫描,Go/Rust配置送达不等于后台零扫描。 后续补修内容搜索首次请求、加载更多及索引状态的错误呈现:保存类型化错误,按当前语言使用共享词条,不拼接内部错误码;本机Bun1.3.13的19条逐项计时及TypeScript检查通过,损坏偏好保留、语言切换不重搜及加载更多保留结果有回归。真实页面有结果时显示紧凑错误和重试,失败暂停自动翻页;新增回归接入Windows CI隔离分组;该补修的固定工具链及Windows CI按对应提交的PR报告单独记录,Windows原生界面保持pending。 批量Run夹具增加首扫完成与快照UUID同步,本机Swift6.4.2完整Run入口21条通过,固定工具链结果以对应PR提交报告为准。 继而统一全部10处Run/Debug/单项/批量/服务/重启首次库存发布:在主actor空闲边界释放库存,重查排队刷新状态并核验准确快照UUID,保留刻意门控的调用方刷新任务;本机完整Run入口21条在三个独立进程中通过。 目录标记读取由树与索引配置共用版本、结构、角色和相对路径校验,真实内容搜索API回归用于核验非法JSON、空结构、null、错误marks类型及越界路径均显示共享中英错误,切语言不重搜、不调用Core安装空策略、不覆盖原始存储。", "macos": { "implementationStatus": "partial", "verificationStatus": "verified", @@ -47,7 +47,9 @@ "windows/tauri/src-tauri/src/core.rs", "windows/tauri/src/features/workspace/services/workspace-lifecycle.ts", "windows/tauri/src/features/file-system/services/file-watcher-listener.ts", - "windows/tauri/src/features/file-system/services/file-watcher-listener.test.ts" + "windows/tauri/src/features/file-system/services/file-watcher-listener.test.ts", + "windows/tauri/src/features/file-explorer/stores/directory-marks-storage.ts", + "windows/tauri/src/features/global-search/hooks/use-content-search.integration.test.tsx" ] } } diff --git a/windows/tauri/src/features/file-explorer/stores/directory-marks-storage.ts b/windows/tauri/src/features/file-explorer/stores/directory-marks-storage.ts new file mode 100644 index 0000000000..3a012250c6 --- /dev/null +++ b/windows/tauri/src/features/file-explorer/stores/directory-marks-storage.ts @@ -0,0 +1,33 @@ +import { getPathIdentity } from "@/utils/path-helpers"; +import { IndexingSettingsError } from "./indexing-settings-error"; + +export const DIRECTORY_MARKS = [ + "plain", "sources", "resources", "excluded", "module", "package", +] as const; +export type DirectoryMark = (typeof DIRECTORY_MARKS)[number]; +export type DirectoryMarks = Record; + +export const directoryMarksStorageKey = (root: string) => + `lithe.workspace-directory-marks.${getPathIdentity(root).replace(/\/+$/, "")}`; + +/** Tree presentation and indexing must reject the same damaged preference. */ +export function readDirectoryMarks(root: string, storage?: Storage): DirectoryMarks { + let raw: string | null; + try { raw = (storage ?? window.localStorage).getItem(directoryMarksStorageKey(root)); } + catch (cause) { throw new IndexingSettingsError("readFailed", cause); } + if (raw === null) return {}; + let value: unknown; + try { value = JSON.parse(raw); } + catch (cause) { throw new IndexingSettingsError("invalidSettings", cause); } + if (!value || typeof value !== "object" || Array.isArray(value)) + throw new IndexingSettingsError("invalidSettings"); + const settings = value as { version?: unknown; marks?: unknown }; + if ( + settings.version !== 1 || !settings.marks || + Array.isArray(settings.marks) || typeof settings.marks !== "object" || + !Object.entries(settings.marks).every(([path, mark]) => + !path.startsWith("/") && !path.includes("\\") && !path.includes(":") && + !path.split("/").includes("..") && DIRECTORY_MARKS.includes(mark as DirectoryMark)) + ) throw new IndexingSettingsError("invalidSettings"); + return settings.marks as DirectoryMarks; +} diff --git a/windows/tauri/src/features/file-explorer/stores/directory-marks.ts b/windows/tauri/src/features/file-explorer/stores/directory-marks.ts index 526f055023..0d89a59e1e 100644 --- a/windows/tauri/src/features/file-explorer/stores/directory-marks.ts +++ b/windows/tauri/src/features/file-explorer/stores/directory-marks.ts @@ -7,6 +7,8 @@ import { IndexingSettingsError, type IndexingErrorCode, } from "./workspace-indexing"; +import { directoryMarksStorageKey as key, readDirectoryMarks, type DirectoryMark, type DirectoryMarks as Marks } from "./directory-marks-storage"; +export { DIRECTORY_MARKS, readDirectoryMarks, type DirectoryMark } from "./directory-marks-storage"; import { useCallback, useEffect, useState } from "react"; import { closestWorkspaceRoot } from "@/features/workspace/types/workspace-root"; import { @@ -16,49 +18,12 @@ import { pathStartsWithRoot, } from "@/utils/path-helpers"; -export const DIRECTORY_MARKS = [ - "plain", - "sources", - "resources", - "excluded", - "module", - "package", -] as const; -export type DirectoryMark = (typeof DIRECTORY_MARKS)[number]; -type Marks = Record; const eventName = "lithe:directory-marks-changed"; -const key = (root: string) => - `lithe.workspace-directory-marks.${getPathIdentity(root).replace(/\/+$/, "")}`; const markPathIdentity = (root: string, relativePath: string): string => { const normalized = relativePath.replace(/\\/g, "/"); return isCaseInsensitivePath(root) ? normalized.toLowerCase() : normalized; }; -export function readDirectoryMarks(root: string, storage: Storage = window.localStorage): Marks { - let raw: string | null; - try { raw = storage.getItem(key(root)); } - catch (cause) { throw new IndexingSettingsError("readFailed", cause); } - if (!raw) return {}; - let value: { version?: unknown; marks?: unknown } | null; - try { value = JSON.parse(raw); } - catch (cause) { throw new IndexingSettingsError("invalidSettings", cause); } - if ( - value?.version !== 1 || - !value.marks || - Array.isArray(value.marks) || - typeof value.marks !== "object" || - !Object.entries(value.marks).every( - ([path, mark]) => - !path.startsWith("/") && - !path.includes("\\") && - !path.includes(":") && - !path.split("/").includes("..") && - DIRECTORY_MARKS.includes(mark as DirectoryMark), - ) - ) - throw new IndexingSettingsError("invalidSettings"); - return value.marks as Marks; -} function writeMarks(root: string, marks: Marks) { window.localStorage.setItem(key(root), JSON.stringify({ version: 1, marks })); window.dispatchEvent(new window.CustomEvent(eventName, { detail: root })); diff --git a/windows/tauri/src/features/file-explorer/stores/indexing-settings-error.ts b/windows/tauri/src/features/file-explorer/stores/indexing-settings-error.ts new file mode 100644 index 0000000000..939127c368 --- /dev/null +++ b/windows/tauri/src/features/file-explorer/stores/indexing-settings-error.ts @@ -0,0 +1,12 @@ +export type IndexingErrorCode = + | "invalidSettings" + | "readFailed" + | "writeFailed" + | "configureFailed"; + +export class IndexingSettingsError extends Error { + constructor(readonly code: IndexingErrorCode, cause?: unknown) { + super(code, { cause }); + this.name = "IndexingSettingsError"; + } +} diff --git a/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts b/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts index 703ec4a162..586cc1b987 100644 --- a/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts +++ b/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts @@ -5,6 +5,9 @@ import type { WorkspaceRuntime } from "@/features/workspace/types/workspace-runt import { getNativeWorkspaceRootPaths } from "@/features/file-search/utils/file-search-paths"; import { executeCore } from "@/core/lithe-core-client"; import { getPathIdentity } from "@/utils/path-helpers"; +import { directoryMarksStorageKey as key, readDirectoryMarks } from "./directory-marks-storage"; +import { IndexingSettingsError } from "./indexing-settings-error"; +export { IndexingSettingsError, type IndexingErrorCode } from "./indexing-settings-error"; export interface IndexingSettings { gitIgnoreEnabled: boolean; @@ -17,24 +20,8 @@ export interface IndexingStatus { gitIgnoreFailed: boolean; } export const indexingEvent = "lithe:workspace-indexing-changed"; -const key = (root: string) => - `lithe.workspace-directory-marks.${getPathIdentity(root).replace(/\/+$/, "")}`; export const indexingSettingsStorageKey = (root: string) => `lithe.workspace-indexing.${getPathIdentity(root).replace(/\/+$/, "")}`; -export type IndexingErrorCode = - | "invalidSettings" - | "readFailed" - | "writeFailed" - | "configureFailed"; -export class IndexingSettingsError extends Error { - constructor( - readonly code: IndexingErrorCode, - cause?: unknown, - ) { - super(code, { cause }); - this.name = "IndexingSettingsError"; - } -} function readStoredValue(key: string): string | null { try { @@ -224,12 +211,11 @@ export async function configureWorkspaceIndexing( if (owner.closed || owner.roots.get(identity) !== lease) throw new IndexingSettingsError("configureFailed"); const signature = JSON.stringify([readStoredValue(indexingSettingsStorageKey(root)), readStoredValue(key(root))]); const settings = readIndexingSettings(root); - const raw = readStoredValue(key(root)); - const marks = raw ? JSON.parse(raw).marks : {}; + const marks = readDirectoryMarks(root); const response = await executeCore({ id: crypto.randomUUID(), command: "workspace.configureIndexing", payload: { root, ownerId: owner.id, ...settings, - manualExcludedDirectories: Object.entries(marks ?? {}).filter(([, role]) => role === "excluded").map(([path]) => path), paths, refresh }, + manualExcludedDirectories: Object.entries(marks).filter(([, role]) => role === "excluded").map(([path]) => path), paths, refresh }, }); if (!response.ok) { // Another workspace owner can replace the shared scan generation. diff --git a/windows/tauri/src/features/global-search/hooks/use-content-search.integration.test.tsx b/windows/tauri/src/features/global-search/hooks/use-content-search.integration.test.tsx index 39d8f6b17a..1717c9d302 100644 --- a/windows/tauri/src/features/global-search/hooks/use-content-search.integration.test.tsx +++ b/windows/tauri/src/features/global-search/hooks/use-content-search.integration.test.tsx @@ -1,7 +1,7 @@ import { afterAll, afterEach, beforeEach, describe, expect, mock, test } from "bun:test"; import { act, type ReactNode } from "react"; import { createRoot, type Root } from "react-dom/client"; -import type { SearchFilesResponse } from "@/features/file-search/lib/file-search-api"; +import type { SearchFilesRequest, SearchFilesResponse } from "@/features/file-search/lib/file-search-api"; import { installHappyDom } from "@/test-utils/happy-dom"; const restoreDom = installHappyDom(); @@ -37,7 +37,8 @@ const response: SearchFilesResponse = { regex_fallback_error: null, }; -const searchFilesContent = mock(async () => response); +const searchFilesContent = mock(async (_request: SearchFilesRequest) => response); +const executeCore = mock(async () => { throw new Error("Unexpected native request"); }); const fileSystemState = { rootFolderPath: "C:/workspace", workspaceFolders: [] as never[] }; mock.module("use-debounce", () => ({ @@ -48,6 +49,9 @@ mock.module("@/features/file-system/stores/file-system.store", () => ({ selector: (state: { rootFolderPath: string; workspaceFolders: never[] }) => Value, ) => selector(fileSystemState), })); +mock.module("@/core/lithe-core-client", () => ({ executeCore })); +const { searchFilesContent: realSearchFilesContent } = + await import("@/features/file-search/lib/file-search-api"); mock.module("@/features/file-search/lib/file-search-api", () => ({ searchFilesContent, fffScanStatus: mock(async () => ({ @@ -72,7 +76,7 @@ const { useContentSearch } = await import("./use-content-search"); const { GlobalSearchState } = await import("../components/global-search-state"); const { LocaleProvider } = await import("@/i18n/locale-provider"); const { createTranslator } = await import("@/i18n/locale"); -const { IndexingSettingsError, indexingSettingsStorageKey, readIndexingSettings } = +const { IndexingSettingsError, indexingSettingsStorageKey, readIndexingSettings, syncWorkspaceIndexingRoots } = await import("@/features/file-explorer/stores/workspace-indexing"); const { workspaceRuntimeRegistry } = await import("@/features/workspace/runtime/workspace-runtime-registry"); @@ -127,6 +131,7 @@ function mountSearchProbe(onRender: (search: SearchHook) => void): { beforeEach(() => { workspaceRuntimeRegistry.resetForTests(); searchFilesContent.mockReset().mockResolvedValue(response); + executeCore.mockClear(); window.localStorage.clear(); }); @@ -145,6 +150,32 @@ afterAll(() => { }); describe("content search lifecycle", () => { + test.each(["{", "{}", "null", '{"version":1,"marks":[]}', '{"version":1,"marks":{"../outside":"excluded"}}'])( + "real content search rejects corrupt directory marks and localizes the error: %s", async (raw) => { + const workspaceId = workspaceRuntimeRegistry.getActiveWorkspaceId(); + const runtime = workspaceRuntimeRegistry.ensureWorkspace({ id: workspaceId, name: "search marks" }); + syncWorkspaceIndexingRoots(workspaceId, ["C:/workspace"]); + const storageKey = "lithe.workspace-directory-marks.c:/workspace"; + window.localStorage.setItem(storageKey, raw); + searchFilesContent.mockImplementation(realSearchFilesContent); + let current: SearchHook | undefined; + const probe = mountSearchProbe((search) => { current = search; }); + try { + await probe.render(); + await act(async () => current!.setQuery("retained")); + expect(current!.error).toEqual({ kind: "indexing", code: "invalidSettings" }); + expect(probe.container.textContent).toContain(createTranslator("en-US")("indexing.invalidSettings")); + await probe.render("zh-CN"); + expect(probe.container.textContent).toContain(createTranslator("zh-CN")("indexing.invalidSettings")); + expect(searchFilesContent).toHaveBeenCalledTimes(1); + expect(executeCore).not.toHaveBeenCalled(); + expect(window.localStorage.getItem(storageKey)).toBe(raw); + } finally { + await probe.unmount(); + await runtime.disposeIndexing?.(); + } + }, + ); test("retains completed results without searching again after remount", async () => { let currentSearch: SearchHook | null = null; const readCurrentSearch = (): SearchHook => { From d5e47e17ab87bd38d22d5cefba75dff8c16de3fb Mon Sep 17 00:00:00 2001 From: ZJUSCODE <152275506+ZJUSCODE@users.noreply.github.com> Date: Sat, 31 Oct 2026 23:24:56 +0800 Subject: [PATCH 13/27] =?UTF-8?q?fix(macos):=20=E4=BF=AE=E5=A4=8D=E5=88=86?= =?UTF-8?q?=E6=94=AF=E5=88=97=E8=A1=A8=E6=82=AC=E5=81=9C=E9=95=BF=E5=88=86?= =?UTF-8?q?=E6=94=AF=E5=90=8D=E6=97=B6=E8=A7=A6=E6=8E=A7=E6=9D=BF=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E6=BB=9A=E5=8A=A8=20(#1621)=20(#1625)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(macos): 修复分支列表悬停长分支名时触控板无法滚动 (#1621) 触控板手势绑定在开始时的窗口上。悬停扩展面板收到首个滚动事件就关闭, 导致同一手势的后续事件全部丢失。手势期间改为隐藏面板并继续转发给列表, 手势结束后再关闭。鼠标滚轮行为不变。 Co-Authored-By: Claude Opus 5.5 * docs(matrix): 记录分支列表触控板滚动的验证要求 (#1621) Co-Authored-By: Claude Opus 5.5 * fix(macos): 手指停顿时保留滚动手势,点击立即回收隐藏面板 (#1621) 手势进行中的回收超时从 1 秒放宽到 10 秒,避免停顿后继续滚动时丢失手势。 隐藏面板收到点击时立即回收,并在功能矩阵补充对应验收步骤。 Co-Authored-By: Claude Opus 5.5 * test(macos): remove push dialog file request ordering race --------- Co-authored-by: ZJUSCODE Co-authored-by: Claude Opus 5.5 Co-authored-by: Yao Jingxi <23722032@bjtu.edu.cn> --- .../Lithe/Views/Git/BranchPopupRowView.swift | 108 +++++++++++++++-- .../BranchSwitcherPopoverBehaviorTests.swift | 114 ++++++++++++++++++ .../GitPushDialogPresentationTests.swift | 23 ++-- .../features/git-branches-remotes.json | 4 +- 4 files changed, 228 insertions(+), 21 deletions(-) diff --git a/macos/Sources/Lithe/Views/Git/BranchPopupRowView.swift b/macos/Sources/Lithe/Views/Git/BranchPopupRowView.swift index 41ebaeef95..6fc413ecb3 100644 --- a/macos/Sources/Lithe/Views/Git/BranchPopupRowView.swift +++ b/macos/Sources/Lithe/Views/Git/BranchPopupRowView.swift @@ -95,6 +95,10 @@ final class BranchPopupRowControl: NSControl { var onPress: (() -> Void)? var onSecondaryPress: ((NSPoint) -> Void)? var isPresented = false + /// Runs a retired expansion's cleanup after a delay; replaced by tests. + var scheduleExpansionRetirement: (TimeInterval, DispatchWorkItem) -> Void = { delay, work in + DispatchQueue.main.asyncAfter(deadline: .now() + delay, execute: work) + } private var isHovered = false private var reportedHover = false private var expansion: NSPanel? @@ -239,13 +243,39 @@ final class BranchPopupRowControl: NSControl { } private func closeExpansion() { + guard let closing = detachExpansion() else { return } + Self.dismiss(closing) + } + + /// Stops this row owning its expansion without closing the panel. + private func detachExpansion() -> NSPanel? { if let parentCloseObserver { NotificationCenter.default.removeObserver(parentCloseObserver) } parentCloseObserver = nil expansionContent = nil - guard let closing = expansion else { return } - expansion = nil - closing.parent?.removeChildWindow(closing) - closing.close() + defer { expansion = nil } + return expansion + } + + private static func dismiss(_ panel: NSPanel) { + panel.parent?.removeChildWindow(panel) + panel.close() + } + + /// Trackpad gestures stay bound to the window they began in, so closing the + /// expansion on the first event silently dropped the rest of the gesture and + /// the list barely moved (issue 1621). Mouse wheel ticks route independently. + private func handleExpansionScroll(_ event: NSEvent, in overlay: BranchPopupExpansionView) { + // Resting fingers on the trackpad scrolls nothing, so the name stays expanded. + if event.phase == .mayBegin || event.phase == .cancelled { scrollWheel(with: event); return } + let isGesture = !event.phase.isEmpty || !event.momentumPhase.isEmpty + if isGesture, let panel = detachExpansion() { + // The panel outlives this row, which a lazy list may drop mid-gesture. + overlay.handOffScrollGesture(to: enclosingScrollView ?? nextResponder, + schedule: scheduleExpansionRetirement) { Self.dismiss(panel) } + } + isHovered = false + refresh() + if isGesture { overlay.scrollWheel(with: event) } else { scrollWheel(with: event) } } private func updateExpansion() { @@ -286,11 +316,9 @@ final class BranchPopupRowControl: NSControl { self?.onSecondaryPress?(point) } overlay.onExit = { [weak self] in self?.isHovered = false; self?.refresh() } - overlay.onScroll = { [weak self] event in - guard let self else { return } - self.isHovered = false - self.refresh() - self.scrollWheel(with: event) + overlay.onScroll = { [weak self, weak overlay] event in + guard let self, let overlay else { return } + self.handleExpansionScroll(event, in: overlay) } panel.contentView = overlay panel.setFrame(frame, display: false) @@ -308,10 +336,62 @@ final class BranchPopupRowControl: NSControl { /// The expansion remains clickable, while its parent popup retains keyboard focus. private final class BranchPopupExpansionView: NSView { + /// Momentum follows lifted fingers almost immediately, but fingers may rest + /// mid-gesture for as long as they like and retiring then loses the gesture. + /// The long delay only bounds a gesture whose end never arrives; a click on + /// the invisible panel retires it sooner. + private enum RetirementDelay { + static let afterFingersLift: TimeInterval = 0.15 + static let whileGestureActive: TimeInterval = 10 + } + + private struct ScrollGestureHandoff { + weak var target: NSResponder? + let schedule: (TimeInterval, DispatchWorkItem) -> Void + let retire: () -> Void + } + var onPress: (() -> Void)? var onSecondaryPress: ((NSPoint) -> Void)? var onExit: (() -> Void)? var onScroll: ((NSEvent) -> Void)? + private var handoff: ScrollGestureHandoff? + private var pendingRetirement: DispatchWorkItem? + + /// Hides the panel but keeps it receiving the gesture. An alpha 0 window is + /// click-through by default, which loses the gesture just like closing it, + /// unless it explicitly opts back into mouse events. + func handOffScrollGesture(to target: NSResponder?, schedule: @escaping (TimeInterval, DispatchWorkItem) -> Void, + retire: @escaping () -> Void) { + onPress = nil + onSecondaryPress = nil + onExit = nil + window?.ignoresMouseEvents = false + window?.alphaValue = 0 + handoff = ScrollGestureHandoff(target: target, schedule: schedule, retire: retire) + } + + private func forward(_ event: NSEvent, using handoff: ScrollGestureHandoff) { + handoff.target?.scrollWheel(with: event) + pendingRetirement?.cancel() + let work = DispatchWorkItem { [weak self] in + MainActor.assumeIsolated { self?.retireHandoff() } + } + pendingRetirement = work + let finished: [NSEvent.Phase] = [.ended, .cancelled] + let isActive = finished.contains(event.momentumPhase) ? false + : !event.momentumPhase.isEmpty || !finished.contains(event.phase) + handoff.schedule(isActive ? RetirementDelay.whileGestureActive : RetirementDelay.afterFingersLift, work) + } + + private func retireHandoff() { + pendingRetirement?.cancel() + pendingRetirement = nil + let retiring = handoff + handoff = nil + retiring?.retire() + } + override func hitTest(_ point: NSPoint) -> NSView? { frame.contains(point) ? self : nil } override func updateTrackingAreas() { super.updateTrackingAreas() @@ -319,12 +399,18 @@ private final class BranchPopupExpansionView: NSView { addTrackingArea(NSTrackingArea(rect: .zero, options: [.mouseEnteredAndExited, .activeAlways, .inVisibleRect], owner: self, userInfo: nil)) } - override func mouseDown(with event: NSEvent) { onPress?() } + override func mouseDown(with event: NSEvent) { + retireHandoff() + onPress?() + } override func rightMouseDown(with event: NSEvent) { + retireHandoff() onSecondaryPress?(event.window?.convertPoint(toScreen: event.locationInWindow) ?? NSEvent.mouseLocation) } override func mouseExited(with event: NSEvent) { onExit?() } - override func scrollWheel(with event: NSEvent) { onScroll?(event) } + override func scrollWheel(with event: NSEvent) { + if let handoff { forward(event, using: handoff) } else { onScroll?(event) } + } } /// GitIncomingOutgoingUi colors and New UI 12pt assets, Community c7f91397daa3. diff --git a/macos/Tests/LitheTests/BranchSwitcherPopoverBehaviorTests.swift b/macos/Tests/LitheTests/BranchSwitcherPopoverBehaviorTests.swift index 026e05a15d..61cf4df5f6 100644 --- a/macos/Tests/LitheTests/BranchSwitcherPopoverBehaviorTests.swift +++ b/macos/Tests/LitheTests/BranchSwitcherPopoverBehaviorTests.swift @@ -1,6 +1,7 @@ import AppKit import SwiftUI import LitheGitModule +import LitheTestDesktopIsolation import Testing @testable import Lithe @@ -186,6 +187,74 @@ struct BranchSwitcherPopoverBehaviorTests { #expect(highlighted.values.allSatisfy { !$0 }, "Leaving the viewport clears the last hover") } + /// Issue 1621: a trackpad gesture stays bound to the window it began in. + @Test + @MainActor + func trackpadGestureOverAnExpansionReachesTheListUntilItFinishes() throws { + let harness = try BranchExpansionScrollHarness() + defer { harness.close() } + var scheduled: [(delay: TimeInterval, work: DispatchWorkItem)] = [] + harness.row.scheduleExpansionRetirement = { scheduled.append(($0, $1)) } + let panel = harness.panel + let overlay = try #require(panel.contentView) + + overlay.scrollWheel(with: try harness.event(phase: .mayBegin)) + #expect(panel.isVisible && LitheTestRequestedWindowAlpha(panel) == 1, "Resting fingers must not hide the full name") + #expect(scheduled.isEmpty) + + overlay.scrollWheel(with: try harness.event(phase: .began)) + #expect(panel.isVisible, "Closing the panel here is what dropped the gesture") + #expect(LitheTestRequestedWindowAlpha(panel) == 0, "The stale name must not float over the scrolling list") + #expect(!panel.ignoresMouseEvents, "An alpha 0 panel is click-through unless it opts in") + + // The list may release the row mid-gesture without ending the handoff. + harness.row.removeFromSuperview() + #expect(panel.isVisible) + overlay.scrollWheel(with: try harness.event(phase: .changed)) + overlay.scrollWheel(with: try harness.event(phase: .ended)) + overlay.scrollWheel(with: try harness.event(momentum: .begin)) + overlay.scrollWheel(with: try harness.event(momentum: .end)) + #expect(harness.scroll.received.count == 6, "Every event of the gesture reaches the list") + #expect(scheduled.map(\.delay) == [10, 10, 0.15, 10, 0.15]) + let superseded = scheduled.dropLast().allSatisfy { $0.work.isCancelled } + #expect(superseded, "A later event supersedes earlier retirements") + #expect(panel.isVisible) + + try #require(scheduled.last).work.perform() + #expect(!panel.isVisible) + #expect(harness.window.childWindows?.contains(panel) != true) + } + + @Test + @MainActor + func clickingTheHiddenExpansionRetiresItImmediately() throws { + let harness = try BranchExpansionScrollHarness() + defer { harness.close() } + var scheduled: [DispatchWorkItem] = [] + harness.row.scheduleExpansionRetirement = { scheduled.append($1) } + let panel = harness.panel + let overlay = try #require(panel.contentView) + overlay.scrollWheel(with: try harness.event(phase: .began)) + #expect(panel.isVisible) + + overlay.mouseDown(with: try #require(NSEvent.mouseEvent(with: .leftMouseDown, location: .zero, + modifierFlags: [], timestamp: 0, windowNumber: panel.windowNumber, context: nil, + eventNumber: 0, clickCount: 1, pressure: 1))) + #expect(!panel.isVisible, "A gesture that never ended must not keep an invisible panel over the list") + #expect(scheduled.allSatisfy { $0.isCancelled }) + } + + @Test + @MainActor + func mouseWheelOverAnExpansionClosesItAndScrollsTheList() throws { + let harness = try BranchExpansionScrollHarness() + defer { harness.close() } + let panel = harness.panel + try #require(panel.contentView).scrollWheel(with: try harness.event()) + #expect(!panel.isVisible) + #expect(harness.scroll.received.count == 1) + } + @Test(arguments: [ColorScheme.light, .dark]) @MainActor func branchExpansionPreservesTheRowAndClickAction(scheme: ColorScheme) throws { @@ -580,6 +649,51 @@ struct BranchSwitcherPopoverBehaviorTests { } @MainActor +private final class BranchExpansionScrollHarness { + final class RecordingScrollView: NSScrollView { + var received: [NSEvent] = [] + override func scrollWheel(with event: NSEvent) { received.append(event) } + } + + let window = NSWindow(contentRect: NSRect(x: 100, y: 100, width: 120, height: 24), + styleMask: [.borderless], backing: .buffered, defer: false) + let scroll = RecordingScrollView(frame: NSRect(x: 0, y: 0, width: 120, height: 24)) + let row = BranchPopupRowControl() + let panel: NSWindow + + init() throws { + window.isReleasedWhenClosed = false + let document = NSView(frame: NSRect(x: 0, y: 0, width: 120, height: 24)) + scroll.documentView = document + window.contentView = scroll + window.orderFrontRegardless() + row.frame = document.bounds + row.renderExpansion = { + AnyView(Text("a-branch-name-that-is-much-wider-than-the-row").fixedSize()) + } + document.addSubview(row) + row.mouseEntered(with: try #require(NSEvent.enterExitEvent(with: .mouseEntered, location: .zero, + modifierFlags: [], timestamp: 0, windowNumber: window.windowNumber, context: nil, + eventNumber: 0, trackingNumber: 0, userData: nil))) + panel = try #require(window.childWindows?.first(where: { $0.isVisible })) + } + + func close() { + panel.close() + window.contentView = nil + window.close() + } + + /// With no phase this is a mouse wheel tick. + func event(phase: CGScrollPhase? = nil, momentum: CGMomentumScrollPhase? = nil) throws -> NSEvent { + let event = try #require(CGEvent(scrollWheelEvent2Source: nil, units: .pixel, wheelCount: 1, + wheel1: -8, wheel2: 0, wheel3: 0)) + if let phase { event.setIntegerValueField(.scrollWheelEventScrollPhase, value: Int64(phase.rawValue)) } + if let momentum { event.setIntegerValueField(.scrollWheelEventMomentumPhase, value: Int64(momentum.rawValue)) } + return try #require(NSEvent(cgEvent: event)) + } +} + private final class BranchHoverTestWindow: NSWindow { var pointer = NSPoint.zero override var mouseLocationOutsideOfEventStream: NSPoint { pointer } diff --git a/macos/Tests/LitheTests/GitPushDialogPresentationTests.swift b/macos/Tests/LitheTests/GitPushDialogPresentationTests.swift index 0520d49008..15aeb74b04 100644 --- a/macos/Tests/LitheTests/GitPushDialogPresentationTests.swift +++ b/macos/Tests/LitheTests/GitPushDialogPresentationTests.swift @@ -169,21 +169,28 @@ struct GitPushDialogModelTests { #expect(!model.canPush) } - @Test - func selectingACommitLoadsItsChangedFiles() async { + @Test(arguments: [false, true]) + func selectingACommitLoadsItsChangedFiles(waitForInitialFiles: Bool) async throws { + let initialFiles = [GitCommitFile(status: "A", path: "Sources/Initial.swift")] let files = [GitCommitFile(status: "M", path: "Sources/App.swift")] let script = PushDialogScript( previews: [.success(pushPreview(branch: "topic", commits: [commit("c1"), commit("c2")]))], - files: files + filesByCommit: ["c1": initialFiles, "c2": files] ) let model = GitPushDialogModel(actions: actions(script)) + defer { model.selectCommit(nil) } await model.load() + if waitForInitialFiles { + try #require(await awaitChange(on: model) { model.files == .loaded(initialFiles) }) + } model.selectCommit(commit("c2")) #expect(model.selectedCommit?.hash == "c2") + // Cancellation does not order callbacks: c1 may be requested after c2. + // Distinct results verify the selected commit without assuming request order. #expect(await awaitChange(on: model) { model.files == .loaded(files) }) - #expect(script.filesRequests.last == "c2") + #expect(script.filesRequests.contains("c2")) } } @@ -194,16 +201,16 @@ private final class PushDialogScript: @unchecked Sendable { private var recordedTargets: [GitPushTargetChoice?] = [] private var recordedPushes: [(preview: GitPushPreview, target: GitPushTargetChoice?)] = [] private var recordedFiles: [String] = [] - private let files: [GitCommitFile]? + private let filesByCommit: [String: [GitCommitFile]] init( previews: [Result], pushResults: [GitPushFailure?] = [], - files: [GitCommitFile]? = nil + filesByCommit: [String: [GitCommitFile]] = [:] ) { self.previews = previews self.pushResults = pushResults - self.files = files + self.filesByCommit = filesByCommit } func nextPreview(_ target: GitPushTargetChoice?) -> Result { @@ -222,7 +229,7 @@ private final class PushDialogScript: @unchecked Sendable { func nextFiles(_ commit: GitCommit) -> [GitCommitFile]? { lock.lock(); defer { lock.unlock() } recordedFiles.append(commit.hash) - return files + return filesByCommit[commit.hash] } var previewTargets: [GitPushTargetChoice?] { lock.lock(); defer { lock.unlock() }; return recordedTargets } diff --git a/shared/platform-feature-matrix/features/git-branches-remotes.json b/shared/platform-feature-matrix/features/git-branches-remotes.json index e3969ca124..f34ad24e32 100644 --- a/shared/platform-feature-matrix/features/git-branches-remotes.json +++ b/shared/platform-feature-matrix/features/git-branches-remotes.json @@ -97,6 +97,6 @@ "verificationStatus": "pending" }, "owner": "Git", - "verification": "创建、切换、合并分支并查看标签和远程,确认冲突与认证失败可恢复。 macOS 悬停分支弹窗内被截断的行,确认沿原行位置展开完整分支名与 upstream,延续选中底色和行高;完整可见的行不展开,离开或打开动作菜单后展开层消失。滚动列表且鼠标位置不动时,高亮跟随当前鼠标下的行,离开的行清除 hover,不出现多行残留选中底色;已打开动作菜单的行仍保持高亮。顶部项目及分支按钮保持箭头光标,顶部当前分支不显示帮助浮层。 macOS 检查右侧真实上游列靠右显示、末尾省略且选中后沿用行文字颜色及普通字重;悬停直接显示沿原行展开的非激活子窗口,保留原行位置、选择底色、普通字重与高度,转交点击及滚轮,父弹窗关闭时清理,显示完整名称,不额外插入分组前缀,领先/落后提交数与 Git 一致(大于 99 显示 99+),无上游时不猜测远端。确认搜索框固定,其下操作项和全部分支分组共用一个滚动区,缩小弹窗时操作项也能滚出视口;拖动分支弹窗右边缘调整宽度、右上角/右下角无需先点击即分别使用东北—西南/西北—东南的斜向调整光标并调整宽高,固定另一侧边界,连续事件合并且不逐事件同步重绘,检查鼠标光标、内容刷新保留尺寸、关闭重开及重启后按项目恢复,切换项目互不覆盖,并检查屏幕边界及最小尺寸,普通菜单不出现拖动入口。 macOS 分支弹窗或 Git 已保存更改列表打开且鼠标悬停在被截断的行上时,反复切换到其他应用再切回、让窗口失焦/激活,应用不崩溃(issue #1277),悬停展开层仍只有一个且在布局完成后刷新;长分支列表快速滚动保持流畅,行内容、选中底色与展开层不丢失。 两端在仅抓取 preview、其他分支已有 remote/merge 配置和远端引用的仓库中确认上游名称与领先/落后计数仍可见,Recent 与 Local 一致,查询不修改 fetch 配置;同名远端但未设置跟踪时仍不显示上游。 Windows Git Log 普通 Fetch 和 Fetch 选项执行后保持当前页签,底部状态栏显示等待或真实阶段进度;连接等待、认证、多个远程切换不沿用旧百分比,成功、失败、取消和预检查失败均收起;Console 仍保留命令与输出。核对中英文、明暗主题与窄窗口。 Windows Git Log 普通 Checkout 不再二次确认,仍阻止覆盖本地修改;Update Selected 按跟踪分支配置启用,不依赖缓存 behind。当前分支后台 Merge,未检出分支原地快进,其他 worktree 内仅快进;不打开 Pull 弹窗,分叉/脏工作区保留本地内容并报告失败,仓库或工作区切换后迟到结果不得刷新或解锁新请求。 Windows Update Selected 在 Fetch 等待期间及预检后切换目标 worktree 的分支,或分离 HEAD,应返回 state-changed,不执行新分支的 Pull;Core 在执行前校验完整 expectedBranch,省略时保留兼容行为。 带 expectedBranch 的后台更新整合已 Fetch 的固定 upstream 提交,不再次执行 pull/fetch;验证 Merge、仅快进和 Rebase 策略,普通 Pull 省略字段时保持原行为。 Windows 顶部、Commit 和 Project 文件树由同一个仓库状态表生成展示;关闭 Commit 后外部 pull、checkout 和暂存仍刷新分支名、领先/落后及文件状态,已同步分支的 incoming 箭头消失。覆盖多仓库选择、根目录文件路径、快速切仓库/工作区与旧请求迟到,查询失败保留成功快照,草稿不丢失;元数据监听覆盖已发现仓库并在卸载时全部释放。真实 Windows 交互验收 pending。 两端 Fetch 后从其他分支及已处于目标本地分支时 Checkout Remote,确认 HEAD、本地分支和文件内容更新到所选已 Fetch 节点,重复操作成功且不生成合并提交。缺少本地分支时创建并配置跟踪;本地独有提交在切换或自动 stash 前被拒绝,Force 不丢弃提交;阻塞的工作区、暂存区、未跟踪文件和其他工作树占用保持原状态。Smart Checkout 更新后恢复本地修改,失败后界面刷新真实仓库状态;普通本地 Checkout 与 Checkout and Rebase 保持原行为。 Windows Git Log 的本地及远程 Checkout 成功后不再弹出成功提示(与 IDEA 一致,分支标签直接切换),失败时仍显示错误原因。 Windows Git Log 与分支切换器 Checkout 失败(例如目标分支已被其他 worktree 占用)时,右下角显示需手动关闭的 IDEA BalloonError 红色错误气泡,标题为“无法签出 {分支}”/“Could not checkout {branch}”,正文为去掉 fatal:/error: 前缀的 Git 输出;中英文、明暗主题下核对图标与换行。 macOS 分支弹窗和 Git Log 分支右键菜单中,有上游的未检出本地分支启用“更新”,原地快进且不切换 HEAD;本地有上游没有的提交时提示分叉、不强制更新;被其他 worktree 检出时提示到该 worktree 更新且不执行 Fetch;无上游的分支保持禁用;当前分支仍走原有拉取流程。在中文 Git 输出环境下核对提示。 macOS 分支弹窗按 Community 的 8pt 四边和角落沿边 16pt 规则命中;四边仅调整对应轴,四角同时调整两轴,反向边固定。水平/垂直使用 AppKit 双向光标,对角线直接使用 SDK JavaRuntimeSupport 的 javaResizeNE/NW/SE/SW,与 JBR 映射同源;检查原始图像、尺寸和热点一致。检查中央的搜索输入、滚动与分支点击不被边缘层拦截,移回中央释放调整光标,拖动中合并更新、松开才保存,内容刷新保持释放位置。 Windows Git Log 右键分支选择“新建分支”,弹窗对齐 IDEA 的 Create Branch from 对话框:标题为“从 {引用} 创建分支”,单行“分支名称”输入、创建/取消按钮,无 Checkout 与 Overwrite 选项,创建后固定检出新分支;初始名称本地分支沿用原名、远程分支去掉远程前缀,打开即全选,按一次退格即可清空;输入时空格转为连字符并丢弃非法字符且光标位置保持。打开及输入期间不做重名检测,点击创建后若名称为空,或与现有本地分支、远程分支、本地分支目录或 HEAD 冲突,才在输入框下方显示错误并禁用创建,此后错误随输入实时更新;创建按钮在前、取消按钮在后,创建为实心主色;Git 失败时错误显示在弹窗内且可重试,成功后不弹出提示,直接刷新历史。核对中英文与明暗主题。 Windows Git Log 右键本地分支选择“删除分支”不再弹出确认框,直接删除并在右下角弹出 IDEA 样式的通知(信息图标、粗体“已删除分支:”加分支名、下一行蓝色“恢复”文字链接、右上角关闭按钮,约 15 秒内有效,核对明暗主题与长分支名换行);点击后在原提交上重建该分支且不切换,原上游仍存在时恢复跟踪;分支重建成功但上游跟踪恢复失败时提示“分支已恢复,但上游跟踪恢复失败”,不得误报为整体失败,仍刷新历史。工作区切换后迟到的恢复不得刷新新工作区。分支未完全合并、被其他工作树占用等 Core 拒绝删除的情况显示 Git 给出的原因,不弹出恢复提示。远程分支和标签的删除保持原有确认。 Windows 所有右键菜单的弹出位置对齐 IDEA(Swing JPopupMenu):菜单左上角落在点击点,靠下或靠右放不下时整体平移回窗口内,不翻到光标上方或左侧;子菜单首行与父行对齐,右侧放不下时翻到左侧,纵向只平移。覆盖 Git Log 分支树、提交表、侧边栏、标签页、终端、文件树及通知/扩展/GitHub 等自绘菜单,并检查窗口很矮时菜单可滚动。 分支跟踪名称不同的远端分支(例如从 origin/main 新建分支后手动设置 upstream)时:Windows 推送弹窗必须先让用户在“发布到同名分支”和“推送到 upstream”之间选择,选择后弹窗展示的目标分支和提交列表与最终远端一致;“提交并推送”在写入提交前一次性询问所有异名仓库,取消后不产生提交;普通同名推送不出现任何询问。macOS 每次推送(分支列表与顶部分支弹窗)都先打开推送弹窗,顶部显示“本地分支 → 远端/分支”,左侧列出将推送的提交、右侧显示所选提交的改动文件,点击“推送”前不写远端;异名上游时“推送”保持禁用,直到在“发布到同名分支”和“推送到 upstream”之间选择,选择后目的地与提交列表随之更新,远端 main 不变;弹窗打开后仓库又有新提交时推送被拒绝并给出原因。macOS “提交并推送”始终先出审阅单列出每个仓库的目的地,异名仓库在审阅单内选择,未选择时“继续”不可用,取消后不产生提交。核对中英文、明暗主题与窄窗口。", - "notes": "2026-10-06:用户确认 PR #1083 涉及的 Windows 功能改动均已完成实机测试,未发现问题;实机验收依据为用户反馈。 2026-10-08:用户确认本次远程 Checkout 更新和 Windows 成功提示修复的本地测试没有问题;作为本次 Windows 改动的用户验收依据,未宣称完成其他矩阵场景或 macOS 验收。 2026-10-17:issue #1272 推送目标修复。Core 与 Windows 本地自动化已覆盖:从 origin/main 新建分支不继承 upstream;异名目标未确认时拒绝推送;预览与推送共用同一个按选择解析的目标,确认后 upstream 被改指其他分支时已审阅的推送被判过期;--force-with-lease 作用在所选 upstream 分支;提交并推送在写入提交前由 Core 按仓库提问,重试时恢复并重新校验;省略 targetKind 的旧调用方仍可推送。 2026-10-22:macOS 补上界面。每次推送先打开 IDEA 式推送弹窗(目的地、将推送的提交、所选提交的改动文件),异名上游需先选择;“提交并推送”先出审阅单并就地选择。原生层与真实 Core 的衔接由 GitPushReviewBridgeTests 覆盖,相关套件经 scripts/macos/test/test-macos.sh 串行运行通过;完整套件在本机并行运行时有与本变更无关的超时类失败。SwiftUI 窗口本身尚未在真机上目视验证。两端真实 Windows/macOS 交互验收仍为 pending。" + "verification": "创建、切换、合并分支并查看标签和远程,确认冲突与认证失败可恢复。 macOS 悬停分支弹窗内被截断的行,确认沿原行位置展开完整分支名与 upstream,延续选中底色和行高;完整可见的行不展开,离开或打开动作菜单后展开层消失。滚动列表且鼠标位置不动时,高亮跟随当前鼠标下的行,离开的行清除 hover,不出现多行残留选中底色;已打开动作菜单的行仍保持高亮。顶部项目及分支按钮保持箭头光标,顶部当前分支不显示帮助浮层。 macOS 检查右侧真实上游列靠右显示、末尾省略且选中后沿用行文字颜色及普通字重;悬停直接显示沿原行展开的非激活子窗口,保留原行位置、选择底色、普通字重与高度,转交点击及滚轮,父弹窗关闭时清理,显示完整名称,不额外插入分组前缀,领先/落后提交数与 Git 一致(大于 99 显示 99+),无上游时不猜测远端。确认搜索框固定,其下操作项和全部分支分组共用一个滚动区,缩小弹窗时操作项也能滚出视口;拖动分支弹窗右边缘调整宽度、右上角/右下角无需先点击即分别使用东北—西南/西北—东南的斜向调整光标并调整宽高,固定另一侧边界,连续事件合并且不逐事件同步重绘,检查鼠标光标、内容刷新保留尺寸、关闭重开及重启后按项目恢复,切换项目互不覆盖,并检查屏幕边界及最小尺寸,普通菜单不出现拖动入口。 macOS 分支弹窗或 Git 已保存更改列表打开且鼠标悬停在被截断的行上时,反复切换到其他应用再切回、让窗口失焦/激活,应用不崩溃(issue #1277),悬停展开层仍只有一个且在布局完成后刷新;长分支列表快速滚动保持流畅,行内容、选中底色与展开层不丢失。 两端在仅抓取 preview、其他分支已有 remote/merge 配置和远端引用的仓库中确认上游名称与领先/落后计数仍可见,Recent 与 Local 一致,查询不修改 fetch 配置;同名远端但未设置跟踪时仍不显示上游。 Windows Git Log 普通 Fetch 和 Fetch 选项执行后保持当前页签,底部状态栏显示等待或真实阶段进度;连接等待、认证、多个远程切换不沿用旧百分比,成功、失败、取消和预检查失败均收起;Console 仍保留命令与输出。核对中英文、明暗主题与窄窗口。 Windows Git Log 普通 Checkout 不再二次确认,仍阻止覆盖本地修改;Update Selected 按跟踪分支配置启用,不依赖缓存 behind。当前分支后台 Merge,未检出分支原地快进,其他 worktree 内仅快进;不打开 Pull 弹窗,分叉/脏工作区保留本地内容并报告失败,仓库或工作区切换后迟到结果不得刷新或解锁新请求。 Windows Update Selected 在 Fetch 等待期间及预检后切换目标 worktree 的分支,或分离 HEAD,应返回 state-changed,不执行新分支的 Pull;Core 在执行前校验完整 expectedBranch,省略时保留兼容行为。 带 expectedBranch 的后台更新整合已 Fetch 的固定 upstream 提交,不再次执行 pull/fetch;验证 Merge、仅快进和 Rebase 策略,普通 Pull 省略字段时保持原行为。 Windows 顶部、Commit 和 Project 文件树由同一个仓库状态表生成展示;关闭 Commit 后外部 pull、checkout 和暂存仍刷新分支名、领先/落后及文件状态,已同步分支的 incoming 箭头消失。覆盖多仓库选择、根目录文件路径、快速切仓库/工作区与旧请求迟到,查询失败保留成功快照,草稿不丢失;元数据监听覆盖已发现仓库并在卸载时全部释放。真实 Windows 交互验收 pending。 两端 Fetch 后从其他分支及已处于目标本地分支时 Checkout Remote,确认 HEAD、本地分支和文件内容更新到所选已 Fetch 节点,重复操作成功且不生成合并提交。缺少本地分支时创建并配置跟踪;本地独有提交在切换或自动 stash 前被拒绝,Force 不丢弃提交;阻塞的工作区、暂存区、未跟踪文件和其他工作树占用保持原状态。Smart Checkout 更新后恢复本地修改,失败后界面刷新真实仓库状态;普通本地 Checkout 与 Checkout and Rebase 保持原行为。 Windows Git Log 的本地及远程 Checkout 成功后不再弹出成功提示(与 IDEA 一致,分支标签直接切换),失败时仍显示错误原因。 Windows Git Log 与分支切换器 Checkout 失败(例如目标分支已被其他 worktree 占用)时,右下角显示需手动关闭的 IDEA BalloonError 红色错误气泡,标题为“无法签出 {分支}”/“Could not checkout {branch}”,正文为去掉 fatal:/error: 前缀的 Git 输出;中英文、明暗主题下核对图标与换行。 macOS 分支弹窗和 Git Log 分支右键菜单中,有上游的未检出本地分支启用“更新”,原地快进且不切换 HEAD;本地有上游没有的提交时提示分叉、不强制更新;被其他 worktree 检出时提示到该 worktree 更新且不执行 Fetch;无上游的分支保持禁用;当前分支仍走原有拉取流程。在中文 Git 输出环境下核对提示。 macOS 分支弹窗按 Community 的 8pt 四边和角落沿边 16pt 规则命中;四边仅调整对应轴,四角同时调整两轴,反向边固定。水平/垂直使用 AppKit 双向光标,对角线直接使用 SDK JavaRuntimeSupport 的 javaResizeNE/NW/SE/SW,与 JBR 映射同源;检查原始图像、尺寸和热点一致。检查中央的搜索输入、滚动与分支点击不被边缘层拦截,移回中央释放调整光标,拖动中合并更新、松开才保存,内容刷新保持释放位置。 Windows Git Log 右键分支选择“新建分支”,弹窗对齐 IDEA 的 Create Branch from 对话框:标题为“从 {引用} 创建分支”,单行“分支名称”输入、创建/取消按钮,无 Checkout 与 Overwrite 选项,创建后固定检出新分支;初始名称本地分支沿用原名、远程分支去掉远程前缀,打开即全选,按一次退格即可清空;输入时空格转为连字符并丢弃非法字符且光标位置保持。打开及输入期间不做重名检测,点击创建后若名称为空,或与现有本地分支、远程分支、本地分支目录或 HEAD 冲突,才在输入框下方显示错误并禁用创建,此后错误随输入实时更新;创建按钮在前、取消按钮在后,创建为实心主色;Git 失败时错误显示在弹窗内且可重试,成功后不弹出提示,直接刷新历史。核对中英文与明暗主题。 Windows Git Log 右键本地分支选择“删除分支”不再弹出确认框,直接删除并在右下角弹出 IDEA 样式的通知(信息图标、粗体“已删除分支:”加分支名、下一行蓝色“恢复”文字链接、右上角关闭按钮,约 15 秒内有效,核对明暗主题与长分支名换行);点击后在原提交上重建该分支且不切换,原上游仍存在时恢复跟踪;分支重建成功但上游跟踪恢复失败时提示“分支已恢复,但上游跟踪恢复失败”,不得误报为整体失败,仍刷新历史。工作区切换后迟到的恢复不得刷新新工作区。分支未完全合并、被其他工作树占用等 Core 拒绝删除的情况显示 Git 给出的原因,不弹出恢复提示。远程分支和标签的删除保持原有确认。 Windows 所有右键菜单的弹出位置对齐 IDEA(Swing JPopupMenu):菜单左上角落在点击点,靠下或靠右放不下时整体平移回窗口内,不翻到光标上方或左侧;子菜单首行与父行对齐,右侧放不下时翻到左侧,纵向只平移。覆盖 Git Log 分支树、提交表、侧边栏、标签页、终端、文件树及通知/扩展/GitHub 等自绘菜单,并检查窗口很矮时菜单可滚动。 分支跟踪名称不同的远端分支(例如从 origin/main 新建分支后手动设置 upstream)时:Windows 推送弹窗必须先让用户在“发布到同名分支”和“推送到 upstream”之间选择,选择后弹窗展示的目标分支和提交列表与最终远端一致;“提交并推送”在写入提交前一次性询问所有异名仓库,取消后不产生提交;普通同名推送不出现任何询问。macOS 每次推送(分支列表与顶部分支弹窗)都先打开推送弹窗,顶部显示“本地分支 → 远端/分支”,左侧列出将推送的提交、右侧显示所选提交的改动文件,点击“推送”前不写远端;异名上游时“推送”保持禁用,直到在“发布到同名分支”和“推送到 upstream”之间选择,选择后目的地与提交列表随之更新,远端 main 不变;弹窗打开后仓库又有新提交时推送被拒绝并给出原因。macOS “提交并推送”始终先出审阅单列出每个仓库的目的地,异名仓库在审阅单内选择,未选择时“继续”不可用,取消后不产生提交。核对中英文、明暗主题与窄窗口。 macOS 指针停在被截断的分支行上时,用触控板双指滚动,确认列表持续跟随手势(含抬指后的惯性滚动),展开层在滚动时隐藏且手势结束后不残留;手指只放在触控板上不滚动时展开层保持显示。滚动中途手指停顿超过 1 秒再继续移动,确认列表仍跟随手势;原行滚出列表后手势不中断;滚动结束后点击同一位置,确认没有隐藏层拦截后续操作。", + "notes": "2026-10-06:用户确认 PR #1083 涉及的 Windows 功能改动均已完成实机测试,未发现问题;实机验收依据为用户反馈。 2026-10-08:用户确认本次远程 Checkout 更新和 Windows 成功提示修复的本地测试没有问题;作为本次 Windows 改动的用户验收依据,未宣称完成其他矩阵场景或 macOS 验收。 2026-10-17:issue #1272 推送目标修复。Core 与 Windows 本地自动化已覆盖:从 origin/main 新建分支不继承 upstream;异名目标未确认时拒绝推送;预览与推送共用同一个按选择解析的目标,确认后 upstream 被改指其他分支时已审阅的推送被判过期;--force-with-lease 作用在所选 upstream 分支;提交并推送在写入提交前由 Core 按仓库提问,重试时恢复并重新校验;省略 targetKind 的旧调用方仍可推送。 2026-10-22:macOS 补上界面。每次推送先打开 IDEA 式推送弹窗(目的地、将推送的提交、所选提交的改动文件),异名上游需先选择;“提交并推送”先出审阅单并就地选择。原生层与真实 Core 的衔接由 GitPushReviewBridgeTests 覆盖,相关套件经 scripts/macos/test/test-macos.sh 串行运行通过;完整套件在本机并行运行时有与本变更无关的超时类失败。SwiftUI 窗口本身尚未在真机上目视验证。两端真实 Windows/macOS 交互验收仍为 pending。 2026-10-31:issue #1621 修复悬停展开层关闭后丢失触控板手势后续事件。自动化测试已覆盖手势全程转发、行中途被移除和鼠标滚轮路径;尚未用真实触控板完成 macOS 实机验收,验证状态保持 pending。" } From a0aa5596c4d755ba601418344e1a7b821d907654 Mon Sep 17 00:00:00 2001 From: Xiaoyumuxi <23722032@bjtu.edu.cn> Date: Sun, 1 Nov 2026 00:04:43 +0800 Subject: [PATCH 14/27] fix(macos): forward hidden branch expansion clicks and clean up on close (#1629) --- .../2026-09-30-macos-shared-dropdown-style.md | 13 ++++ .../Lithe/Views/Git/BranchPopupRowView.swift | 71 ++++++++++++++--- .../BranchSwitcherPopoverBehaviorTests.swift | 78 +++++++++++++++++-- .../features/git-branches-remotes.json | 4 +- 4 files changed, 146 insertions(+), 20 deletions(-) diff --git a/.agents/notes/implemented/simplification/2026-09-30-macos-shared-dropdown-style.md b/.agents/notes/implemented/simplification/2026-09-30-macos-shared-dropdown-style.md index e2d6b8f406..aa720b49e4 100644 --- a/.agents/notes/implemented/simplification/2026-09-30-macos-shared-dropdown-style.md +++ b/.agents/notes/implemented/simplification/2026-09-30-macos-shared-dropdown-style.md @@ -508,6 +508,16 @@ Lithe 使用 `BranchPopupRowView` 包装原有 SwiftUI 行,保留共享 `Lithe 直接调用 cell 的检查通过,但用户实测仍未出现展开,不能继续把它当作可靠入口。 子窗口接收该行点击并转交原动作,键盘焦点留在父弹窗;滚轮转交原行滚动路径。 离开、打开动作菜单、禁用、脱离窗口及父窗口关闭都清理浮层及父窗口关闭观察器。 +触控板手势绑定开始时的窗口,不能收到首个滚动事件就关闭展开层,否则后续手势会丢失。 +展开层在真实滚动时隐藏但继续接收事件,将后续手势转交原生滚动区;只是放上手指时保持名称显示。 +手势接收对象不依赖旧行存活,因此懒列表滚走并移除原行后仍可继续滚动。它自己拥有父窗口关闭监听, +父弹窗关闭时立即取消回收任务并移除展开层,不等待结束事件或兜底计时。回收闭包不强持有面板, +避免面板、内容视图和闭包互相持有。 +隐藏层上的点击必须按屏幕坐标转换后,重新交给父窗口的原生事件派发(由当前命中控件处理); +左键、右键、拖动和松开属于同一次鼠标操作,隐藏层在松开后回收,父窗口提前关闭则立即回收。 +例如滚动后原位置已经是分支 B,点击应交给 B,而不是调用已滚走分支 A 的回调,也不能只关闭隐藏层吞掉点击。 +指针超出父窗口内容时,不猜测其他应用或全局窗口的目标,不使用全局事件注入。 +代价是手势移交期间短暂保留透明子窗口,并需要转换鼠标事件;丢失结束事件仍由有界计时兜底。 只测量当前悬停行,不给空闲行登记全局悬浮几何;展开使用当前分组里的本地名称, 不额外插入 namespace。 行点击仍通过 `LitheDropdownPopover` 打开动作菜单,无障碍按下和键盘按下保留。 @@ -533,6 +543,9 @@ Stash/Shelf 复用同一边界,独立展开宿主继续测量完整名称。 `BranchSwitcherPopoverBehaviorTests` 检查深浅选中底色、尺寸、无须展开的行、 动作和禁用行为;悬停必须实际创建可见子窗口,检查完整内容、原行位置、 绘制底色、点击转交、焦点及父窗口关闭清理,不能再直接调用展开或绘制方法证明触发。 +手势回归还要覆盖移除旧行后完整滚动转发、隐藏层左/右键的按下/拖动/松开转交当前内容、 +事件坐标与修饰键保留,以及父窗口关闭时无需执行定时任务就取消回收和解除父子关系。 +通过窗口派发的组件事件不能替代完整产品中的真实触控板与惯性滚动验收。 完整预览已核对分支列表、长名称截断和搜索,原生悬浮层与实际菜单的组合 尚未取得可靠的实机截图,不能用组件截图代替最终视觉验收。 diff --git a/macos/Sources/Lithe/Views/Git/BranchPopupRowView.swift b/macos/Sources/Lithe/Views/Git/BranchPopupRowView.swift index 6fc413ecb3..971a321ba0 100644 --- a/macos/Sources/Lithe/Views/Git/BranchPopupRowView.swift +++ b/macos/Sources/Lithe/Views/Git/BranchPopupRowView.swift @@ -271,7 +271,9 @@ final class BranchPopupRowControl: NSControl { if isGesture, let panel = detachExpansion() { // The panel outlives this row, which a lazy list may drop mid-gesture. overlay.handOffScrollGesture(to: enclosingScrollView ?? nextResponder, - schedule: scheduleExpansionRetirement) { Self.dismiss(panel) } + schedule: scheduleExpansionRetirement) { [weak panel] in + if let panel { Self.dismiss(panel) } + } } isHovered = false refresh() @@ -338,8 +340,8 @@ final class BranchPopupRowControl: NSControl { private final class BranchPopupExpansionView: NSView { /// Momentum follows lifted fingers almost immediately, but fingers may rest /// mid-gesture for as long as they like and retiring then loses the gesture. - /// The long delay only bounds a gesture whose end never arrives; a click on - /// the invisible panel retires it sooner. + /// The long delay only bounds a gesture whose end never arrives. A click + /// transfers its full mouse sequence to the current parent content. private enum RetirementDelay { static let afterFingersLift: TimeInterval = 0.15 static let whileGestureActive: TimeInterval = 10 @@ -357,6 +359,13 @@ private final class BranchPopupExpansionView: NSView { var onScroll: ((NSEvent) -> Void)? private var handoff: ScrollGestureHandoff? private var pendingRetirement: DispatchWorkItem? + private var parentCloseObserver: NSObjectProtocol? + private weak var mouseWindow: NSWindow? + + deinit { + pendingRetirement?.cancel() + if let parentCloseObserver { NotificationCenter.default.removeObserver(parentCloseObserver) } + } /// Hides the panel but keeps it receiving the gesture. An alpha 0 window is /// click-through by default, which loses the gesture just like closing it, @@ -366,27 +375,64 @@ private final class BranchPopupExpansionView: NSView { onPress = nil onSecondaryPress = nil onExit = nil + onScroll = nil window?.ignoresMouseEvents = false window?.alphaValue = 0 handoff = ScrollGestureHandoff(target: target, schedule: schedule, retire: retire) + if let parent = window?.parent { + parentCloseObserver = NotificationCenter.default.addObserver( + forName: NSWindow.willCloseNotification, object: parent, queue: .main + ) { [weak self] _ in MainActor.assumeIsolated { self?.retireHandoff() } } + } } private func forward(_ event: NSEvent, using handoff: ScrollGestureHandoff) { handoff.target?.scrollWheel(with: event) + guard self.handoff != nil, mouseWindow == nil else { return } + let finished: [NSEvent.Phase] = [.ended, .cancelled] + let isActive = finished.contains(event.momentumPhase) ? false + : !event.momentumPhase.isEmpty || !finished.contains(event.phase) + scheduleRetirement(after: isActive ? RetirementDelay.whileGestureActive : RetirementDelay.afterFingersLift) + } + + private func scheduleRetirement(after delay: TimeInterval) { pendingRetirement?.cancel() let work = DispatchWorkItem { [weak self] in MainActor.assumeIsolated { self?.retireHandoff() } } pendingRetirement = work - let finished: [NSEvent.Phase] = [.ended, .cancelled] - let isActive = finished.contains(event.momentumPhase) ? false - : !event.momentumPhase.isEmpty || !finished.contains(event.phase) - handoff.schedule(isActive ? RetirementDelay.whileGestureActive : RetirementDelay.afterFingersLift, work) + handoff?.schedule(delay, work) + } + + /// Re-enter window dispatch so the current hit view, focus and native mouse + /// tracking own the click, not the row that scrolled away. Keep the hidden + /// panel until mouse-up because AppKit may bind this sequence to it too. + private func forwardMouse(_ event: NSEvent, startsSequence: Bool = false, endsSequence: Bool = false) { + guard handoff != nil, let source = window else { return } + if startsSequence { + mouseWindow = source.parent + scheduleRetirement(after: RetirementDelay.whileGestureActive) + } + defer { if endsSequence { retireHandoff() } } + guard let destination = mouseWindow, destination.isVisible else { retireHandoff(); return } + let point = destination.convertPoint(fromScreen: source.convertPoint(toScreen: event.locationInWindow)) + if startsSequence { + guard let content = destination.contentView, + content.bounds.contains(content.convert(point, from: nil)) else { retireHandoff(); return } + } + guard let forwarded = NSEvent.mouseEvent(with: event.type, location: point, + modifierFlags: event.modifierFlags, timestamp: event.timestamp, + windowNumber: destination.windowNumber, context: nil, eventNumber: event.eventNumber, + clickCount: event.clickCount, pressure: event.pressure) else { retireHandoff(); return } + NSApp.sendEvent(forwarded) } private func retireHandoff() { pendingRetirement?.cancel() pendingRetirement = nil + if let parentCloseObserver { NotificationCenter.default.removeObserver(parentCloseObserver) } + parentCloseObserver = nil + mouseWindow = nil let retiring = handoff handoff = nil retiring?.retire() @@ -400,13 +446,16 @@ private final class BranchPopupExpansionView: NSView { owner: self, userInfo: nil)) } override func mouseDown(with event: NSEvent) { - retireHandoff() - onPress?() + if handoff != nil { forwardMouse(event, startsSequence: true) } else { onPress?() } } override func rightMouseDown(with event: NSEvent) { - retireHandoff() - onSecondaryPress?(event.window?.convertPoint(toScreen: event.locationInWindow) ?? NSEvent.mouseLocation) + if handoff != nil { forwardMouse(event, startsSequence: true) } + else { onSecondaryPress?(event.window?.convertPoint(toScreen: event.locationInWindow) ?? NSEvent.mouseLocation) } } + override func mouseDragged(with event: NSEvent) { forwardMouse(event) } + override func mouseUp(with event: NSEvent) { forwardMouse(event, endsSequence: true) } + override func rightMouseDragged(with event: NSEvent) { forwardMouse(event) } + override func rightMouseUp(with event: NSEvent) { forwardMouse(event, endsSequence: true) } override func mouseExited(with event: NSEvent) { onExit?() } override func scrollWheel(with event: NSEvent) { if let handoff { forward(event, using: handoff) } else { onScroll?(event) } diff --git a/macos/Tests/LitheTests/BranchSwitcherPopoverBehaviorTests.swift b/macos/Tests/LitheTests/BranchSwitcherPopoverBehaviorTests.swift index 61cf4df5f6..83addf698f 100644 --- a/macos/Tests/LitheTests/BranchSwitcherPopoverBehaviorTests.swift +++ b/macos/Tests/LitheTests/BranchSwitcherPopoverBehaviorTests.swift @@ -225,25 +225,79 @@ struct BranchSwitcherPopoverBehaviorTests { #expect(harness.window.childWindows?.contains(panel) != true) } - @Test + @Test(arguments: [false, true]) @MainActor - func clickingTheHiddenExpansionRetiresItImmediately() throws { + func clickingTheHiddenExpansionReachesTheCurrentContent(rightClick: Bool) throws { let harness = try BranchExpansionScrollHarness() defer { harness.close() } var scheduled: [DispatchWorkItem] = [] harness.row.scheduleExpansionRetirement = { scheduled.append($1) } + harness.row.onPress = { Issue.record("A hidden expansion must not activate its old row") } + harness.row.onSecondaryPress = { _ in Issue.record("A hidden expansion must not open its old row's menu") } let panel = harness.panel let overlay = try #require(panel.contentView) overlay.scrollWheel(with: try harness.event(phase: .began)) - #expect(panel.isVisible) - overlay.mouseDown(with: try #require(NSEvent.mouseEvent(with: .leftMouseDown, location: .zero, - modifierFlags: [], timestamp: 0, windowNumber: panel.windowNumber, context: nil, - eventNumber: 0, clickCount: 1, pressure: 1))) - #expect(!panel.isVisible, "A gesture that never ended must not keep an invisible panel over the list") + // Replace the source row, just as scrolling a lazy list can do. + harness.row.removeFromSuperview() + let current = BranchExpansionClickRecorder(frame: harness.scroll.bounds) + harness.scroll.documentView = current + panel.setFrameOrigin(NSPoint(x: panel.frame.minX + 12, y: panel.frame.minY + 3)) + let point = NSPoint(x: 20, y: 12) + let expectedPoint = harness.window.convertPoint(fromScreen: panel.convertPoint(toScreen: point)) + let types: [NSEvent.EventType] = rightClick + ? [.rightMouseDown, .rightMouseDragged, .rightMouseUp] + : [.leftMouseDown, .leftMouseDragged, .leftMouseUp] + for type in types { + panel.sendEvent(try #require(NSEvent.mouseEvent(with: type, location: point, + modifierFlags: [.shift], timestamp: 42, windowNumber: panel.windowNumber, context: nil, + eventNumber: 7, clickCount: 2, pressure: 0.5))) + if type == types.first { #expect(panel.isVisible, "Keep receiving the native mouse sequence until mouse-up") } + } + #expect(current.events.map(\.type) == types) + #expect(current.events.allSatisfy { $0.window === harness.window && $0.locationInWindow == expectedPoint }) + #expect(current.events.allSatisfy { $0.modifierFlags.contains(.shift) && $0.clickCount == 2 && $0.timestamp == 42 }) + #expect(!panel.isVisible) + #expect(harness.window.childWindows?.contains(panel) != true) #expect(scheduled.allSatisfy { $0.isCancelled }) } + @Test + @MainActor + func clickingOutsideTheParentContentOnlyRetiresTheHiddenExpansion() throws { + let harness = try BranchExpansionScrollHarness() + defer { harness.close() } + harness.row.scheduleExpansionRetirement = { _, _ in } + let panel = harness.panel + try #require(panel.contentView).scrollWheel(with: try harness.event(phase: .began)) + harness.row.removeFromSuperview() + let current = BranchExpansionClickRecorder(frame: harness.scroll.bounds) + harness.scroll.documentView = current + panel.sendEvent(try #require(NSEvent.mouseEvent(with: .leftMouseDown, + location: NSPoint(x: harness.window.frame.width + 20, y: 12), modifierFlags: [], timestamp: 0, + windowNumber: panel.windowNumber, context: nil, eventNumber: 0, clickCount: 1, pressure: 1))) + #expect(current.events.isEmpty) + #expect(!panel.isVisible && panel.parent == nil) + } + + @Test + @MainActor + func closingTheParentRetiresTheDetachedExpansionWithoutWaitingForItsTimer() throws { + let harness = try BranchExpansionScrollHarness() + defer { harness.close() } + var scheduled: [DispatchWorkItem] = [] + harness.row.scheduleExpansionRetirement = { scheduled.append($1) } + let panel = harness.panel + try #require(panel.contentView).scrollWheel(with: try harness.event(phase: .began)) + harness.row.removeFromSuperview() + + harness.window.close() + + #expect(!panel.isVisible) + #expect(panel.parent == nil) + #expect(scheduled.count == 1 && scheduled.allSatisfy { $0.isCancelled }) + } + @Test @MainActor func mouseWheelOverAnExpansionClosesItAndScrollsTheList() throws { @@ -694,6 +748,16 @@ private final class BranchExpansionScrollHarness { } } +private final class BranchExpansionClickRecorder: NSView { + var events: [NSEvent] = [] + override func mouseDown(with event: NSEvent) { events.append(event) } + override func mouseDragged(with event: NSEvent) { events.append(event) } + override func mouseUp(with event: NSEvent) { events.append(event) } + override func rightMouseDown(with event: NSEvent) { events.append(event) } + override func rightMouseDragged(with event: NSEvent) { events.append(event) } + override func rightMouseUp(with event: NSEvent) { events.append(event) } +} + private final class BranchHoverTestWindow: NSWindow { var pointer = NSPoint.zero override var mouseLocationOutsideOfEventStream: NSPoint { pointer } diff --git a/shared/platform-feature-matrix/features/git-branches-remotes.json b/shared/platform-feature-matrix/features/git-branches-remotes.json index f34ad24e32..7be56196fc 100644 --- a/shared/platform-feature-matrix/features/git-branches-remotes.json +++ b/shared/platform-feature-matrix/features/git-branches-remotes.json @@ -97,6 +97,6 @@ "verificationStatus": "pending" }, "owner": "Git", - "verification": "创建、切换、合并分支并查看标签和远程,确认冲突与认证失败可恢复。 macOS 悬停分支弹窗内被截断的行,确认沿原行位置展开完整分支名与 upstream,延续选中底色和行高;完整可见的行不展开,离开或打开动作菜单后展开层消失。滚动列表且鼠标位置不动时,高亮跟随当前鼠标下的行,离开的行清除 hover,不出现多行残留选中底色;已打开动作菜单的行仍保持高亮。顶部项目及分支按钮保持箭头光标,顶部当前分支不显示帮助浮层。 macOS 检查右侧真实上游列靠右显示、末尾省略且选中后沿用行文字颜色及普通字重;悬停直接显示沿原行展开的非激活子窗口,保留原行位置、选择底色、普通字重与高度,转交点击及滚轮,父弹窗关闭时清理,显示完整名称,不额外插入分组前缀,领先/落后提交数与 Git 一致(大于 99 显示 99+),无上游时不猜测远端。确认搜索框固定,其下操作项和全部分支分组共用一个滚动区,缩小弹窗时操作项也能滚出视口;拖动分支弹窗右边缘调整宽度、右上角/右下角无需先点击即分别使用东北—西南/西北—东南的斜向调整光标并调整宽高,固定另一侧边界,连续事件合并且不逐事件同步重绘,检查鼠标光标、内容刷新保留尺寸、关闭重开及重启后按项目恢复,切换项目互不覆盖,并检查屏幕边界及最小尺寸,普通菜单不出现拖动入口。 macOS 分支弹窗或 Git 已保存更改列表打开且鼠标悬停在被截断的行上时,反复切换到其他应用再切回、让窗口失焦/激活,应用不崩溃(issue #1277),悬停展开层仍只有一个且在布局完成后刷新;长分支列表快速滚动保持流畅,行内容、选中底色与展开层不丢失。 两端在仅抓取 preview、其他分支已有 remote/merge 配置和远端引用的仓库中确认上游名称与领先/落后计数仍可见,Recent 与 Local 一致,查询不修改 fetch 配置;同名远端但未设置跟踪时仍不显示上游。 Windows Git Log 普通 Fetch 和 Fetch 选项执行后保持当前页签,底部状态栏显示等待或真实阶段进度;连接等待、认证、多个远程切换不沿用旧百分比,成功、失败、取消和预检查失败均收起;Console 仍保留命令与输出。核对中英文、明暗主题与窄窗口。 Windows Git Log 普通 Checkout 不再二次确认,仍阻止覆盖本地修改;Update Selected 按跟踪分支配置启用,不依赖缓存 behind。当前分支后台 Merge,未检出分支原地快进,其他 worktree 内仅快进;不打开 Pull 弹窗,分叉/脏工作区保留本地内容并报告失败,仓库或工作区切换后迟到结果不得刷新或解锁新请求。 Windows Update Selected 在 Fetch 等待期间及预检后切换目标 worktree 的分支,或分离 HEAD,应返回 state-changed,不执行新分支的 Pull;Core 在执行前校验完整 expectedBranch,省略时保留兼容行为。 带 expectedBranch 的后台更新整合已 Fetch 的固定 upstream 提交,不再次执行 pull/fetch;验证 Merge、仅快进和 Rebase 策略,普通 Pull 省略字段时保持原行为。 Windows 顶部、Commit 和 Project 文件树由同一个仓库状态表生成展示;关闭 Commit 后外部 pull、checkout 和暂存仍刷新分支名、领先/落后及文件状态,已同步分支的 incoming 箭头消失。覆盖多仓库选择、根目录文件路径、快速切仓库/工作区与旧请求迟到,查询失败保留成功快照,草稿不丢失;元数据监听覆盖已发现仓库并在卸载时全部释放。真实 Windows 交互验收 pending。 两端 Fetch 后从其他分支及已处于目标本地分支时 Checkout Remote,确认 HEAD、本地分支和文件内容更新到所选已 Fetch 节点,重复操作成功且不生成合并提交。缺少本地分支时创建并配置跟踪;本地独有提交在切换或自动 stash 前被拒绝,Force 不丢弃提交;阻塞的工作区、暂存区、未跟踪文件和其他工作树占用保持原状态。Smart Checkout 更新后恢复本地修改,失败后界面刷新真实仓库状态;普通本地 Checkout 与 Checkout and Rebase 保持原行为。 Windows Git Log 的本地及远程 Checkout 成功后不再弹出成功提示(与 IDEA 一致,分支标签直接切换),失败时仍显示错误原因。 Windows Git Log 与分支切换器 Checkout 失败(例如目标分支已被其他 worktree 占用)时,右下角显示需手动关闭的 IDEA BalloonError 红色错误气泡,标题为“无法签出 {分支}”/“Could not checkout {branch}”,正文为去掉 fatal:/error: 前缀的 Git 输出;中英文、明暗主题下核对图标与换行。 macOS 分支弹窗和 Git Log 分支右键菜单中,有上游的未检出本地分支启用“更新”,原地快进且不切换 HEAD;本地有上游没有的提交时提示分叉、不强制更新;被其他 worktree 检出时提示到该 worktree 更新且不执行 Fetch;无上游的分支保持禁用;当前分支仍走原有拉取流程。在中文 Git 输出环境下核对提示。 macOS 分支弹窗按 Community 的 8pt 四边和角落沿边 16pt 规则命中;四边仅调整对应轴,四角同时调整两轴,反向边固定。水平/垂直使用 AppKit 双向光标,对角线直接使用 SDK JavaRuntimeSupport 的 javaResizeNE/NW/SE/SW,与 JBR 映射同源;检查原始图像、尺寸和热点一致。检查中央的搜索输入、滚动与分支点击不被边缘层拦截,移回中央释放调整光标,拖动中合并更新、松开才保存,内容刷新保持释放位置。 Windows Git Log 右键分支选择“新建分支”,弹窗对齐 IDEA 的 Create Branch from 对话框:标题为“从 {引用} 创建分支”,单行“分支名称”输入、创建/取消按钮,无 Checkout 与 Overwrite 选项,创建后固定检出新分支;初始名称本地分支沿用原名、远程分支去掉远程前缀,打开即全选,按一次退格即可清空;输入时空格转为连字符并丢弃非法字符且光标位置保持。打开及输入期间不做重名检测,点击创建后若名称为空,或与现有本地分支、远程分支、本地分支目录或 HEAD 冲突,才在输入框下方显示错误并禁用创建,此后错误随输入实时更新;创建按钮在前、取消按钮在后,创建为实心主色;Git 失败时错误显示在弹窗内且可重试,成功后不弹出提示,直接刷新历史。核对中英文与明暗主题。 Windows Git Log 右键本地分支选择“删除分支”不再弹出确认框,直接删除并在右下角弹出 IDEA 样式的通知(信息图标、粗体“已删除分支:”加分支名、下一行蓝色“恢复”文字链接、右上角关闭按钮,约 15 秒内有效,核对明暗主题与长分支名换行);点击后在原提交上重建该分支且不切换,原上游仍存在时恢复跟踪;分支重建成功但上游跟踪恢复失败时提示“分支已恢复,但上游跟踪恢复失败”,不得误报为整体失败,仍刷新历史。工作区切换后迟到的恢复不得刷新新工作区。分支未完全合并、被其他工作树占用等 Core 拒绝删除的情况显示 Git 给出的原因,不弹出恢复提示。远程分支和标签的删除保持原有确认。 Windows 所有右键菜单的弹出位置对齐 IDEA(Swing JPopupMenu):菜单左上角落在点击点,靠下或靠右放不下时整体平移回窗口内,不翻到光标上方或左侧;子菜单首行与父行对齐,右侧放不下时翻到左侧,纵向只平移。覆盖 Git Log 分支树、提交表、侧边栏、标签页、终端、文件树及通知/扩展/GitHub 等自绘菜单,并检查窗口很矮时菜单可滚动。 分支跟踪名称不同的远端分支(例如从 origin/main 新建分支后手动设置 upstream)时:Windows 推送弹窗必须先让用户在“发布到同名分支”和“推送到 upstream”之间选择,选择后弹窗展示的目标分支和提交列表与最终远端一致;“提交并推送”在写入提交前一次性询问所有异名仓库,取消后不产生提交;普通同名推送不出现任何询问。macOS 每次推送(分支列表与顶部分支弹窗)都先打开推送弹窗,顶部显示“本地分支 → 远端/分支”,左侧列出将推送的提交、右侧显示所选提交的改动文件,点击“推送”前不写远端;异名上游时“推送”保持禁用,直到在“发布到同名分支”和“推送到 upstream”之间选择,选择后目的地与提交列表随之更新,远端 main 不变;弹窗打开后仓库又有新提交时推送被拒绝并给出原因。macOS “提交并推送”始终先出审阅单列出每个仓库的目的地,异名仓库在审阅单内选择,未选择时“继续”不可用,取消后不产生提交。核对中英文、明暗主题与窄窗口。 macOS 指针停在被截断的分支行上时,用触控板双指滚动,确认列表持续跟随手势(含抬指后的惯性滚动),展开层在滚动时隐藏且手势结束后不残留;手指只放在触控板上不滚动时展开层保持显示。滚动中途手指停顿超过 1 秒再继续移动,确认列表仍跟随手势;原行滚出列表后手势不中断;滚动结束后点击同一位置,确认没有隐藏层拦截后续操作。", - "notes": "2026-10-06:用户确认 PR #1083 涉及的 Windows 功能改动均已完成实机测试,未发现问题;实机验收依据为用户反馈。 2026-10-08:用户确认本次远程 Checkout 更新和 Windows 成功提示修复的本地测试没有问题;作为本次 Windows 改动的用户验收依据,未宣称完成其他矩阵场景或 macOS 验收。 2026-10-17:issue #1272 推送目标修复。Core 与 Windows 本地自动化已覆盖:从 origin/main 新建分支不继承 upstream;异名目标未确认时拒绝推送;预览与推送共用同一个按选择解析的目标,确认后 upstream 被改指其他分支时已审阅的推送被判过期;--force-with-lease 作用在所选 upstream 分支;提交并推送在写入提交前由 Core 按仓库提问,重试时恢复并重新校验;省略 targetKind 的旧调用方仍可推送。 2026-10-22:macOS 补上界面。每次推送先打开 IDEA 式推送弹窗(目的地、将推送的提交、所选提交的改动文件),异名上游需先选择;“提交并推送”先出审阅单并就地选择。原生层与真实 Core 的衔接由 GitPushReviewBridgeTests 覆盖,相关套件经 scripts/macos/test/test-macos.sh 串行运行通过;完整套件在本机并行运行时有与本变更无关的超时类失败。SwiftUI 窗口本身尚未在真机上目视验证。两端真实 Windows/macOS 交互验收仍为 pending。 2026-10-31:issue #1621 修复悬停展开层关闭后丢失触控板手势后续事件。自动化测试已覆盖手势全程转发、行中途被移除和鼠标滚轮路径;尚未用真实触控板完成 macOS 实机验收,验证状态保持 pending。" + "verification": "创建、切换、合并分支并查看标签和远程,确认冲突与认证失败可恢复。 macOS 悬停分支弹窗内被截断的行,确认沿原行位置展开完整分支名与 upstream,延续选中底色和行高;完整可见的行不展开,离开或打开动作菜单后展开层消失。滚动列表且鼠标位置不动时,高亮跟随当前鼠标下的行,离开的行清除 hover,不出现多行残留选中底色;已打开动作菜单的行仍保持高亮。顶部项目及分支按钮保持箭头光标,顶部当前分支不显示帮助浮层。 macOS 检查右侧真实上游列靠右显示、末尾省略且选中后沿用行文字颜色及普通字重;悬停直接显示沿原行展开的非激活子窗口,保留原行位置、选择底色、普通字重与高度,转交点击及滚轮,父弹窗关闭时清理,显示完整名称,不额外插入分组前缀,领先/落后提交数与 Git 一致(大于 99 显示 99+),无上游时不猜测远端。确认搜索框固定,其下操作项和全部分支分组共用一个滚动区,缩小弹窗时操作项也能滚出视口;拖动分支弹窗右边缘调整宽度、右上角/右下角无需先点击即分别使用东北—西南/西北—东南的斜向调整光标并调整宽高,固定另一侧边界,连续事件合并且不逐事件同步重绘,检查鼠标光标、内容刷新保留尺寸、关闭重开及重启后按项目恢复,切换项目互不覆盖,并检查屏幕边界及最小尺寸,普通菜单不出现拖动入口。 macOS 分支弹窗或 Git 已保存更改列表打开且鼠标悬停在被截断的行上时,反复切换到其他应用再切回、让窗口失焦/激活,应用不崩溃(issue #1277),悬停展开层仍只有一个且在布局完成后刷新;长分支列表快速滚动保持流畅,行内容、选中底色与展开层不丢失。 两端在仅抓取 preview、其他分支已有 remote/merge 配置和远端引用的仓库中确认上游名称与领先/落后计数仍可见,Recent 与 Local 一致,查询不修改 fetch 配置;同名远端但未设置跟踪时仍不显示上游。 Windows Git Log 普通 Fetch 和 Fetch 选项执行后保持当前页签,底部状态栏显示等待或真实阶段进度;连接等待、认证、多个远程切换不沿用旧百分比,成功、失败、取消和预检查失败均收起;Console 仍保留命令与输出。核对中英文、明暗主题与窄窗口。 Windows Git Log 普通 Checkout 不再二次确认,仍阻止覆盖本地修改;Update Selected 按跟踪分支配置启用,不依赖缓存 behind。当前分支后台 Merge,未检出分支原地快进,其他 worktree 内仅快进;不打开 Pull 弹窗,分叉/脏工作区保留本地内容并报告失败,仓库或工作区切换后迟到结果不得刷新或解锁新请求。 Windows Update Selected 在 Fetch 等待期间及预检后切换目标 worktree 的分支,或分离 HEAD,应返回 state-changed,不执行新分支的 Pull;Core 在执行前校验完整 expectedBranch,省略时保留兼容行为。 带 expectedBranch 的后台更新整合已 Fetch 的固定 upstream 提交,不再次执行 pull/fetch;验证 Merge、仅快进和 Rebase 策略,普通 Pull 省略字段时保持原行为。 Windows 顶部、Commit 和 Project 文件树由同一个仓库状态表生成展示;关闭 Commit 后外部 pull、checkout 和暂存仍刷新分支名、领先/落后及文件状态,已同步分支的 incoming 箭头消失。覆盖多仓库选择、根目录文件路径、快速切仓库/工作区与旧请求迟到,查询失败保留成功快照,草稿不丢失;元数据监听覆盖已发现仓库并在卸载时全部释放。真实 Windows 交互验收 pending。 两端 Fetch 后从其他分支及已处于目标本地分支时 Checkout Remote,确认 HEAD、本地分支和文件内容更新到所选已 Fetch 节点,重复操作成功且不生成合并提交。缺少本地分支时创建并配置跟踪;本地独有提交在切换或自动 stash 前被拒绝,Force 不丢弃提交;阻塞的工作区、暂存区、未跟踪文件和其他工作树占用保持原状态。Smart Checkout 更新后恢复本地修改,失败后界面刷新真实仓库状态;普通本地 Checkout 与 Checkout and Rebase 保持原行为。 Windows Git Log 的本地及远程 Checkout 成功后不再弹出成功提示(与 IDEA 一致,分支标签直接切换),失败时仍显示错误原因。 Windows Git Log 与分支切换器 Checkout 失败(例如目标分支已被其他 worktree 占用)时,右下角显示需手动关闭的 IDEA BalloonError 红色错误气泡,标题为“无法签出 {分支}”/“Could not checkout {branch}”,正文为去掉 fatal:/error: 前缀的 Git 输出;中英文、明暗主题下核对图标与换行。 macOS 分支弹窗和 Git Log 分支右键菜单中,有上游的未检出本地分支启用“更新”,原地快进且不切换 HEAD;本地有上游没有的提交时提示分叉、不强制更新;被其他 worktree 检出时提示到该 worktree 更新且不执行 Fetch;无上游的分支保持禁用;当前分支仍走原有拉取流程。在中文 Git 输出环境下核对提示。 macOS 分支弹窗按 Community 的 8pt 四边和角落沿边 16pt 规则命中;四边仅调整对应轴,四角同时调整两轴,反向边固定。水平/垂直使用 AppKit 双向光标,对角线直接使用 SDK JavaRuntimeSupport 的 javaResizeNE/NW/SE/SW,与 JBR 映射同源;检查原始图像、尺寸和热点一致。检查中央的搜索输入、滚动与分支点击不被边缘层拦截,移回中央释放调整光标,拖动中合并更新、松开才保存,内容刷新保持释放位置。 Windows Git Log 右键分支选择“新建分支”,弹窗对齐 IDEA 的 Create Branch from 对话框:标题为“从 {引用} 创建分支”,单行“分支名称”输入、创建/取消按钮,无 Checkout 与 Overwrite 选项,创建后固定检出新分支;初始名称本地分支沿用原名、远程分支去掉远程前缀,打开即全选,按一次退格即可清空;输入时空格转为连字符并丢弃非法字符且光标位置保持。打开及输入期间不做重名检测,点击创建后若名称为空,或与现有本地分支、远程分支、本地分支目录或 HEAD 冲突,才在输入框下方显示错误并禁用创建,此后错误随输入实时更新;创建按钮在前、取消按钮在后,创建为实心主色;Git 失败时错误显示在弹窗内且可重试,成功后不弹出提示,直接刷新历史。核对中英文与明暗主题。 Windows Git Log 右键本地分支选择“删除分支”不再弹出确认框,直接删除并在右下角弹出 IDEA 样式的通知(信息图标、粗体“已删除分支:”加分支名、下一行蓝色“恢复”文字链接、右上角关闭按钮,约 15 秒内有效,核对明暗主题与长分支名换行);点击后在原提交上重建该分支且不切换,原上游仍存在时恢复跟踪;分支重建成功但上游跟踪恢复失败时提示“分支已恢复,但上游跟踪恢复失败”,不得误报为整体失败,仍刷新历史。工作区切换后迟到的恢复不得刷新新工作区。分支未完全合并、被其他工作树占用等 Core 拒绝删除的情况显示 Git 给出的原因,不弹出恢复提示。远程分支和标签的删除保持原有确认。 Windows 所有右键菜单的弹出位置对齐 IDEA(Swing JPopupMenu):菜单左上角落在点击点,靠下或靠右放不下时整体平移回窗口内,不翻到光标上方或左侧;子菜单首行与父行对齐,右侧放不下时翻到左侧,纵向只平移。覆盖 Git Log 分支树、提交表、侧边栏、标签页、终端、文件树及通知/扩展/GitHub 等自绘菜单,并检查窗口很矮时菜单可滚动。 分支跟踪名称不同的远端分支(例如从 origin/main 新建分支后手动设置 upstream)时:Windows 推送弹窗必须先让用户在“发布到同名分支”和“推送到 upstream”之间选择,选择后弹窗展示的目标分支和提交列表与最终远端一致;“提交并推送”在写入提交前一次性询问所有异名仓库,取消后不产生提交;普通同名推送不出现任何询问。macOS 每次推送(分支列表与顶部分支弹窗)都先打开推送弹窗,顶部显示“本地分支 → 远端/分支”,左侧列出将推送的提交、右侧显示所选提交的改动文件,点击“推送”前不写远端;异名上游时“推送”保持禁用,直到在“发布到同名分支”和“推送到 upstream”之间选择,选择后目的地与提交列表随之更新,远端 main 不变;弹窗打开后仓库又有新提交时推送被拒绝并给出原因。macOS “提交并推送”始终先出审阅单列出每个仓库的目的地,异名仓库在审阅单内选择,未选择时“继续”不可用,取消后不产生提交。核对中英文、明暗主题与窄窗口。 macOS 指针停在被截断的分支行上时,用触控板双指滚动,确认列表持续跟随手势(含抬指后的惯性滚动),展开层在滚动时隐藏且手势结束后不残留;手指只放在触控板上不滚动时展开层保持显示。滚动中途手指停顿超过 1 秒再继续移动,确认列表仍跟随手势;原行滚出列表后手势不中断;滚动结束后点击同一位置,确认没有隐藏层拦截后续操作。 macOS 触控板滚动隐藏名称展开层后,立即在原位置左键/右键并拖动、松开,确认当前可见行收到完整操作,修饰键与点击次数不变,不触发滚走的旧行;滚动中按 Esc 关闭父弹窗后立即重开,确认隐藏层和回收任务已清理、无残留点击拦截。", + "notes": "2026-10-06:用户确认 PR #1083 涉及的 Windows 功能改动均已完成实机测试,未发现问题;实机验收依据为用户反馈。 2026-10-08:用户确认本次远程 Checkout 更新和 Windows 成功提示修复的本地测试没有问题;作为本次 Windows 改动的用户验收依据,未宣称完成其他矩阵场景或 macOS 验收。 2026-10-17:issue #1272 推送目标修复。Core 与 Windows 本地自动化已覆盖:从 origin/main 新建分支不继承 upstream;异名目标未确认时拒绝推送;预览与推送共用同一个按选择解析的目标,确认后 upstream 被改指其他分支时已审阅的推送被判过期;--force-with-lease 作用在所选 upstream 分支;提交并推送在写入提交前由 Core 按仓库提问,重试时恢复并重新校验;省略 targetKind 的旧调用方仍可推送。 2026-10-22:macOS 补上界面。每次推送先打开 IDEA 式推送弹窗(目的地、将推送的提交、所选提交的改动文件),异名上游需先选择;“提交并推送”先出审阅单并就地选择。原生层与真实 Core 的衔接由 GitPushReviewBridgeTests 覆盖,相关套件经 scripts/macos/test/test-macos.sh 串行运行通过;完整套件在本机并行运行时有与本变更无关的超时类失败。SwiftUI 窗口本身尚未在真机上目视验证。两端真实 Windows/macOS 交互验收仍为 pending。 2026-10-31:issue #1621 修复悬停展开层关闭后丢失触控板手势后续事件。自动化测试已覆盖手势全程转发、行中途被移除和鼠标滚轮路径;尚未用真实触控板完成 macOS 实机验收,验证状态保持 pending。 2026-10-31:PR #1625 后续修复将隐藏展开层的完整鼠标操作交给当前父窗口命中控件,并由移交对象在父窗口关闭时立即清理;不依赖旧行存活或兜底计时,真实触控板验收仍为 pending。" } From 18841d1853fe3267e7c4920e39d4622f2643411e Mon Sep 17 00:00:00 2001 From: xueyeshang1 Date: Sun, 1 Nov 2026 01:00:55 +0800 Subject: [PATCH 15/27] fix(workspace): preserve directory roles and indexing watcher ownership --- ...2026-10-08-windows-git-status-ownership.md | 6 +- ...026-10-28-workspace-indexing-exclusions.md | 55 ++- .../Lithe/Models/AppModel/AppModel.swift | 4 +- .../Views/Workspace/ProjectSidebarView.swift | 7 +- .../Workspace/WorkspaceIndexingPolicy.swift | 7 + .../Application/WorkspaceFeatureModel.swift | 23 +- .../LazyProjectTreeInventoryTests.swift | 59 ++- .../LitheTests/LitheCoreLogicTests.swift | 8 +- .../ProjectTreeBatchFileWorkflowTests.swift | 2 +- rust/lithe-core/src/project/indexing.rs | 224 ++++++++++- rust/lithe-core/src/protocol/command.rs | 3 + rust/lithe-core/src/runtime/dispatcher.rs | 19 +- shared/contracts/rust-core-api.md | 27 +- .../workspace/directory-actions-v1.json | 275 ++++++++++++++ .../workspace-indexing-exclusions.json | 14 +- .../tauri/crates/project/src/git_watcher.rs | 113 +++++- .../crates/project/src/indexing_refresh.rs | 236 ++++++++++++ windows/tauri/crates/project/src/lib.rs | 164 +++++++- windows/tauri/src-tauri/src/core.rs | 355 +++++++++++++++++- windows/tauri/src-tauri/src/file_events.rs | 23 +- windows/tauri/src-tauri/src/main.rs | 21 +- windows/tauri/src-tauri/src/watcher.rs | 137 ++++--- .../use-lsp-integration-indexing.test.tsx | 59 +++ .../editor/hooks/use-lsp-integration.ts | 34 +- .../editor/lsp/lsp-client-indexing.test.ts | 107 ++++++ .../src/features/editor/lsp/lsp-client.ts | 107 +++++- .../editor/lsp/mounted-lsp-documents.ts | 23 ++ .../components/file-explorer-tree.tsx | 6 +- .../hooks/use-file-explorer-context-menu.tsx | 12 +- .../stores/directory-marks-storage.ts | 4 + .../stores/directory-marks.test.ts | 115 ++++-- .../file-explorer/stores/directory-marks.ts | 26 +- .../stores/workspace-indexing.test.ts | 51 ++- .../stores/workspace-indexing.ts | 40 +- .../services/file-watcher-listener.ts | 180 ++++----- .../stores/file-watcher.store.test.ts | 51 ++- .../file-system/stores/file-watcher.store.ts | 27 +- .../git/runtime/git-metadata-watch-host.tsx | 129 ++++--- .../runtime/git-status-refresh-host.test.tsx | 26 +- .../runtime/workspace-runtime-registry.ts | 7 + .../types/workspace-runtime.types.ts | 1 + 41 files changed, 2423 insertions(+), 364 deletions(-) create mode 100644 shared/fixtures/workspace/directory-actions-v1.json create mode 100644 windows/tauri/crates/project/src/indexing_refresh.rs create mode 100644 windows/tauri/src/features/editor/lsp/mounted-lsp-documents.ts diff --git a/.agents/notes/implemented/architecture/2026-10-08-windows-git-status-ownership.md b/.agents/notes/implemented/architecture/2026-10-08-windows-git-status-ownership.md index 03b8a73a04..e20c6c99e3 100644 --- a/.agents/notes/implemented/architecture/2026-10-08-windows-git-status-ownership.md +++ b/.agents/notes/implemented/architecture/2026-10-08-windows-git-status-ownership.md @@ -33,7 +33,11 @@ Project 文件树则需要主目录所属仓库的原始相对路径。互相覆 单仓库时两个投影可直接使用同一个对象;多仓库 Commit 聚合文件并保留 `repositoryPath` 和仓库相对路径,Project 投影保留主目录原始路径。 - `GitStatusRefreshHost` 随主布局运行,监听全部已发现仓库的变更并合并读取。 - 元数据监听覆盖全部已知仓库;重新安装或卸载时释放每个监听标识。 + 元数据监听由应用级控制器按存活工作区运行实例维护,覆盖主根、附加根及已知仓库; + 切换活动项目不释放。移除根、关闭实例或窗口才撤销对应注册。窗口身份由原生注入, + 每个仓库拥有独立注册 ID,规范路径共享底层监听,防止同窗多仓库相互覆盖。 + 重新安装使用新 ID,迟到完成仍须回收;安装失败等待后续成员变化或焦点恢复重试。 + 打开仓库子目录时同时监听其祖先规则目录;仓库链接变化重建观察并刷新策略。 顶部与文件树的全局状态刷新延续原先始终更新的行为,Commit 自动刷新设置仍控制 面板额外的分支、stash 等读取,不再使顶部保留旧状态。 - 原始记录及相同投影复用对象,重复的相同快照不会反复重建文件列表。 diff --git a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md index 2a054de115..a14d50b975 100644 --- a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md +++ b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md @@ -53,7 +53,10 @@ Git 忽略语义交给本机 Git 的 `check-ignore`;查询同层目录时批 已排除目录的标记子菜单只保留“取消排除”,避免在仍受排除策略约束时直接改成 源码、资源等角色。手动排除与 Git 自动排除使用同一菜单规则;取消后恢复普通 目录可用的标记选项。普通文件夹只改变角色,不创建包含例外;只有明确的取消 -排除动作才恢复原角色并创建例外。不能猜测旧例外的产生原因,因此不自动删除 +排除动作才创建例外:取消手动排除恢复记忆角色,取消 Git 自动排除保留当前角色。 +修改任何普通角色都保留已有例外,只有明确手动排除删除该目录自身的例外。 +不能用历史记忆角色覆盖自动排除前仍有效的源码、资源等角色。 +不能猜测旧例外的产生原因,因此不自动删除 历史例外。继承手动排除的子目录仍须到对应父目录取消排除。 树中的排除状态使用目录图标及提示表达,目录后代仍可浏览;文件名文字保留 独立的 Git 状态颜色,不把整个排除子树统一染色而遮盖修改或冲突状态。 @@ -138,6 +141,30 @@ Git 规则变更信号独立于可见文件路径:隐藏的 `.gitignore`、位 判断解析符号链接,删除事件使用最近仍存在的祖先,避免同一文件的 URI 别名 绕过排除。 +Windows 所有存活本机运行实例保持轻量监听。原生注册以窗口、运行实例和注册 ID +区分持有者;路径规范化后共享底层监听,最后一个持有者关闭才释放。同根重开 +建立新运行实例,关闭后的迟到安装须回收。仓库子目录同时观察到仓库根之间的 +祖先规则目录,linked worktree 继续使用原生 Git 返回的独立及公共元数据路径。 +普通隐藏文件过滤不能吞掉 `.gitignore` 信号,混合批次先失效再分发文件通知。 + +`workspace.refreshIndexing` 验证已有 owner/令牌后只推进扫描代际,不安装新租约。 +Windows 原生宿主按根合并事件,失效版本先递增,再交给后台任务和查询共用的 +刷新队列。刷新期间的新事件不能由旧结果清除;等待有期限,最多处理三轮, +失败保留 dirty 状态,由下一次查询、激活、窗口焦点或显式刷新再次尝试。 +首次配置进行中也登记根,避免安装前收到的事件丢失。查询返回前重查失效版本。 +活动工作区改变前同步登记前端刷新任务,使库存、搜索和文档准入等待同一任务。 +偏好变化与刷新完成使用不同事件,完成事件不能重新写偏好或触发无限刷新。 + +后台刷新不建立全文索引;只有运行中的语言服务需要目录判断时才扫描目录。 +完成后,已挂载编辑器由原来的 hook 接回文档所有权,工作区控制器只重查未挂载 +的源码 buffer。最初就被排除、尚未启动语言服务的 buffer 也要重新准入;没有 +LSP provider 的文件跳过,单个 provider 失败不能中断后面的文档。工作副本重开 +等待在途关闭,打开后再同步期间的新编辑;补同步失败保留已打开的 owner,使 +后续编辑仍可重试并能正常释放 attachment。每个异步边界检查运行实例、根成员、 +buffer、挂载状态及 attachment;不重启整个语言服务。 +全局 Git 忽略文件仍通过激活、焦点和显式刷新补偿,不持续监听任意外部配置。 +本轮不新增“恢复跟随 Git”菜单,也不迁移已丢失的历史角色和例外。 + ## 考虑过的备选方案 - 复用隐藏路径:会隐藏目录,不能满足浏览与编辑需求。 @@ -349,6 +376,32 @@ Rust 57 项,以及 macOS/Bun 前端 26 项与相关回归 25 项,均有逐 刷新跨代拒绝、Git watcher 刷新后的释放与服务配置、Java 配置往返,以及附加根 改名/删除/跨根移动和配额失败回滚。固定 Xcode 和 Windows 原生状态仍按前述限制。 +### PR1597 后续目录动作与监听修复验证 + +本轮以 `preview d5e47e17` 与 PR1597 的 `c892981e` 整合提交 `4e47d784` +为基线。本节与补修代码一同提交到 PR1597;PR 说明记录准确的修复提交身份与 +仍未完成的验收。测试报告、源码文件哈希和补丁哈希在本地保存在 +`.artifacts/pr1597-final-verification/`,提交后另记录 commit 与 tree 身份。 + +共享 Core 完整门禁、Rust/Swift 桥接和 Core 分层检查通过;目录动作、索引与 +文件工作流的 Swift 聚焦测试共 33 条通过。共享 fixture 包含 Git 自动排除前后 +设置角色的两个方向、所有普通角色以及祖先手动排除;Core 使用真实 Git 和内容 +搜索验证 fixture 的预期资格。本机 Swift 6.4.2 结果不替代固定工具链 CI。 + +用户要求本机不再进行 Windows 测试,因此最终 LSP 所有权、在途编辑和失败恢复 +补修只完成 TypeScript 静态检查及只读审查,新增回归尚未执行。此前本轮阶段的 +Bun 79 条、macOS 上 project Rust 41 条和原生宿主独立测试 5 条通过,仅是各自 +当时源码的组件证据,不覆盖随后 LSP 修改,也不代表 Windows 原生验收。现有 +Windows CI 的项目树、LSP 与 Git 监听明确清单以及 Rust 逐项计时入口会包含本轮 +回归;A/B 切换、多仓库、共享根及真实语言服务恢复仍待 Windows 产品验收。 + +macOS 使用最新构建的可执行及 Swift 资源,组装独立 QA bundle,配合单独偏好域 +和隔离 Application Support/Caches 验证。已观察到 Git 忽略目录取消排除后改为 +源码角色,目录继续可见,持久化同时保留 `sources`、包含例外与开启的自动排除 +开关;真实内容搜索返回两个测试文件。随后原生自动化持续返回 +`cgWindowNotFound` / `noWindowsAvailable`,第二方向菜单和重启后的界面检查未完成, +这部分不以 fixture 或历史 UI 结果代替。QA 包的来源身份与运行前后清单单独记录。 + ## 适用范围 - `rust/lithe-core/src/project/indexing.rs` diff --git a/macos/Sources/Lithe/Models/AppModel/AppModel.swift b/macos/Sources/Lithe/Models/AppModel/AppModel.swift index 36965c25a2..49f9822b3f 100644 --- a/macos/Sources/Lithe/Models/AppModel/AppModel.swift +++ b/macos/Sources/Lithe/Models/AppModel/AppModel.swift @@ -1145,8 +1145,8 @@ final class AppModel: ObservableObject, Identifiable, UnsavedDocumentHandling { await workspaceFeature.refreshCurrent() } - func markProjectDirectory(_ url: URL, as mark: WorkspaceDirectoryMark, cancelExclusion: Bool = false) async { - await workspaceFeature.markDirectory(url, as: mark, cancelExclusion: cancelExclusion) + func markProjectDirectory(_ url: URL, action: WorkspaceDirectoryAction) async { + await workspaceFeature.markDirectory(url, action: action) } func requestCreateFile(in directory: URL) { diff --git a/macos/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift b/macos/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift index 156d7b45d7..3f25971739 100644 --- a/macos/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift +++ b/macos/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift @@ -596,8 +596,8 @@ private final class ProjectTreeActions: @unchecked Sendable { nonisolated func refreshWorkspace() { Task { await self.model.refreshWorkspace() } } - nonisolated func markDirectory(_ url: URL, as mark: WorkspaceDirectoryMark, cancelExclusion: Bool = false) { - Task { await self.model.markProjectDirectory(url, as: mark, cancelExclusion: cancelExclusion) } + nonisolated func markDirectory(_ url: URL, action: WorkspaceDirectoryAction) { + Task { await self.model.markProjectDirectory(url, action: action) } } nonisolated func showGitDirectoryDiff(_ url: URL) { Task { await self.model.showGitDirectoryDiff(for: url) } @@ -1017,7 +1017,8 @@ private struct FileNodeRow: View { iconKind: LitheIcons.kind(for: mark), shortcut: currentDirectoryMark == mark ? "✓" : nil ) { - actions.markDirectory(node.url, as: mark, cancelExclusion: currentDirectoryMark == .excluded) + actions.markDirectory(node.url, action: currentDirectoryMark == .excluded + ? .cancelExclusion : mark == .excluded ? .exclude : .setRole(mark)) } } } diff --git a/macos/Sources/LitheCoreContracts/Workspace/WorkspaceIndexingPolicy.swift b/macos/Sources/LitheCoreContracts/Workspace/WorkspaceIndexingPolicy.swift index d910f3dbeb..e4c71c78f4 100644 --- a/macos/Sources/LitheCoreContracts/Workspace/WorkspaceIndexingPolicy.swift +++ b/macos/Sources/LitheCoreContracts/Workspace/WorkspaceIndexingPolicy.swift @@ -1,5 +1,12 @@ import Foundation +/// Directory roles and explicit indexing overrides are independent user intents. +package enum WorkspaceDirectoryAction: Equatable, Sendable { + case setRole(WorkspaceDirectoryMark) + case exclude + case cancelExclusion +} + /// Stable application failures. Presentation owns translation; adapters retain diagnostics. package enum WorkspaceIndexingFailure: Error, Equatable, Sendable { case invalidSettings, readFailed, writeFailed, configureFailed, workspaceUnavailable, permissionDenied diff --git a/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift b/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift index 798ec11336..48e5604661 100644 --- a/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift +++ b/macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift @@ -636,24 +636,31 @@ package final class WorkspaceFeatureModel: ObservableObject { ) } - package func markDirectory(_ url: URL, as mark: WorkspaceDirectoryMark, cancelExclusion: Bool = false) async { + package func markDirectory(_ url: URL, action: WorkspaceDirectoryAction) async { guard !isPerformingProjectItemOperation, !indexingPreferencesFailed, - mark != .excluded || indexingStatus.supportsExclusions, + action != .exclude || indexingStatus.supportsExclusions, let workspaceURL, let relativePath = Self.relativePath(for: url, in: workspaceURL) else { return } let workspaceGeneration = self.workspaceGeneration let previousMarks = directoryMarks var updatedMarks = directoryMarks let previousSettings = indexingSettings - if cancelExclusion { + switch action { + case .cancelExclusion: guard !directoryMarks.contains(where: { $0.value == .excluded && $0.key != relativePath && (relativePath.hasPrefix($0.key + "/") || $0.key == ".") }) else { return } - updatedMarks[relativePath] = indexingSettings.previousRoles.removeValue(forKey: relativePath) ?? .plain + let remembered = indexingSettings.previousRoles.removeValue(forKey: relativePath) + if updatedMarks[relativePath] == .excluded { + updatedMarks[relativePath] = remembered ?? .plain + } if !indexingSettings.includedDirectories.contains(relativePath) { indexingSettings.includedDirectories.append(relativePath) } - } else { - if mark == .excluded, let previous = updatedMarks[relativePath], previous != .excluded { indexingSettings.previousRoles[relativePath] = previous } - updatedMarks[relativePath] = mark - if mark != .plain { indexingSettings.includedDirectories.removeAll { $0 == relativePath } } + case .exclude: + if let previous = updatedMarks[relativePath], previous != .excluded { indexingSettings.previousRoles[relativePath] = previous } + updatedMarks[relativePath] = .excluded + indexingSettings.includedDirectories.removeAll { $0 == relativePath } + case .setRole(let role): + guard role != .excluded else { return } + updatedMarks[relativePath] = role } guard updatedMarks != previousMarks || previousSettings != indexingSettings else { return } diff --git a/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift b/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift index e14c5422f9..63051f365e 100644 --- a/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift +++ b/macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift @@ -8,6 +8,49 @@ import Testing @Suite("Lazy project tree inventory") @MainActor struct LazyProjectTreeInventoryTests { + @Test + func sharedDirectoryActionsPreserveRolesAndIncludeOverrides() async throws { + struct Fixture: Decodable { + struct Scenario: Decodable { + struct Step: Decodable { + struct Action: Decodable { let kind: String; let role: String? } + let action: Action + let role: String + let included: Bool + } + let id: String + let steps: [Step] + } + let cases: [Scenario] + } + let repository = URL(fileURLWithPath: #filePath).deletingLastPathComponent() + .deletingLastPathComponent().deletingLastPathComponent().deletingLastPathComponent() + let contract = try JSONDecoder().decode(Fixture.self, from: Data(contentsOf: + repository.appendingPathComponent("shared/fixtures/workspace/directory-actions-v1.json"))) + for scenario in contract.cases { + let root = URL(fileURLWithPath: "/in-memory/roles/" + scenario.id) + let directory = root.appendingPathComponent("archive") + let fixture = InventoryFixture(root: root, files: [directory.appendingPathComponent("Keep.java")], rows: [root.path: []]) + defer { fixture.close() } + await fixture.load() + for step in scenario.steps { + let action: WorkspaceDirectoryAction + switch step.action.kind { + case "exclude": action = .exclude + case "cancelExclusion": action = .cancelExclusion + default: action = .setRole(try #require(WorkspaceDirectoryMark(rawValue: step.action.role ?? ""))) + } + await fixture.model.markDirectory(directory, action: action) + #expect((fixture.model.directoryMarks["archive"] ?? .plain).rawValue == step.role, "\(scenario.id)") + #expect(fixture.model.indexingSettings.includedDirectories == (step.included ? ["archive"] : [])) + } + let saved = fixture.model.indexingSettings + await fixture.model.setGitIgnoreIndexing(false) + await fixture.model.setGitIgnoreIndexing(true) + #expect(fixture.model.indexingSettings == saved) + } + } + @Test(arguments: [false, true]) func aNewSnapshotDuringSessionRestoreDoesNotReplayTheSavedSession(fullRescan: Bool) async throws { let root = URL(fileURLWithPath: "/in-memory/snapshot-during-session-restore") @@ -172,12 +215,12 @@ struct LazyProjectTreeInventoryTests { let fixture = InventoryFixture(root: root, files: [], rows: [root.path: []], directoryMarkStore: store) defer { store.release.open(); fixture.close() } await fixture.load() - let first = Task { await fixture.model.markDirectory(root.appendingPathComponent("a"), as: .excluded) } + let first = Task { await fixture.model.markDirectory(root.appendingPathComponent("a"), action: .exclude) } defer { first.cancel(); store.release.open() } #expect(await store.started.waitUntilOpen()) let second: Task? if cancelExclusion { - second = Task { await fixture.model.markDirectory(root.appendingPathComponent("b"), as: .plain, cancelExclusion: true) } + second = Task { await fixture.model.markDirectory(root.appendingPathComponent("b"), action: .cancelExclusion) } #expect(await store.newSettingsSaved.waitUntilOpen()) } else { second = nil @@ -282,12 +325,12 @@ struct LazyProjectTreeInventoryTests { let fixture = InventoryFixture(root: root, files: [directory.appendingPathComponent("Keep.java")], rows: [root.path: []]) defer { fixture.close() } await fixture.load() - await fixture.model.markDirectory(directory, as: .sources) - await fixture.model.markDirectory(directory, as: .plain) + await fixture.model.markDirectory(directory, action: .setRole(.sources)) + await fixture.model.markDirectory(directory, action: .setRole(.plain)) #expect(fixture.model.indexingSettings.includedDirectories.isEmpty) #expect(fixture.model.directoryMarks["src"] == .plain) - await fixture.model.markDirectory(directory, as: .excluded) - await fixture.model.markDirectory(directory, as: .plain, cancelExclusion: true) + await fixture.model.markDirectory(directory, action: .exclude) + await fixture.model.markDirectory(directory, action: .cancelExclusion) #expect(fixture.model.indexingSettings.includedDirectories == ["src"]) #expect(fixture.model.directoryMarks["src"] == .plain) } @@ -383,7 +426,7 @@ struct LazyProjectTreeInventoryTests { fixture.disk.supportsExclusions = false await fixture.load() await fixture.model.setGitIgnoreIndexing(false) - await fixture.model.markDirectory(root.appendingPathComponent("src"), as: .excluded) + await fixture.model.markDirectory(root.appendingPathComponent("src"), action: .exclude) #expect(fixture.model.indexingSettings.gitIgnoreEnabled) #expect(fixture.model.directoryMarks.isEmpty) #expect(fixture.model.projectFiles == [file]) @@ -404,7 +447,7 @@ struct LazyProjectTreeInventoryTests { defer { loading.cancel(); fixture.disk.releaseListing.open() } #expect(await fixture.disk.listingStarted.waitUntilOpen()) if manualMark { - await fixture.model.markDirectory(directory, as: .excluded) + await fixture.model.markDirectory(directory, action: .exclude) } else { await fixture.model.setGitIgnoreIndexing(false) } diff --git a/macos/Tests/LitheTests/LitheCoreLogicTests.swift b/macos/Tests/LitheTests/LitheCoreLogicTests.swift index 3660bb69d1..034be1b79e 100644 --- a/macos/Tests/LitheTests/LitheCoreLogicTests.swift +++ b/macos/Tests/LitheTests/LitheCoreLogicTests.swift @@ -3109,7 +3109,7 @@ struct EditorDocumentTests { await model.markDirectory( workspace.appendingPathComponent("assets", isDirectory: true), - as: .resources + action: .setRole(.resources) ) #expect(model.directoryMarks["assets"] == .resources) @@ -3146,7 +3146,7 @@ struct EditorDocumentTests { let saveTask = Task { await model.markDirectory( firstWorkspace.appendingPathComponent("assets", isDirectory: true), - as: .resources + action: .setRole(.resources) ) } @@ -3184,14 +3184,14 @@ struct EditorDocumentTests { let firstSave = Task { await model.markDirectory( workspace.appendingPathComponent("Sources", isDirectory: true), - as: .sources + action: .setRole(.sources) ) } #expect(await saveStarted.waitUntilOpen(timeout: .seconds(5))) let secondSave = Task { await model.markDirectory( workspace.appendingPathComponent("assets", isDirectory: true), - as: .resources + action: .setRole(.resources) ) } diff --git a/macos/Tests/LitheTests/ProjectTreeBatchFileWorkflowTests.swift b/macos/Tests/LitheTests/ProjectTreeBatchFileWorkflowTests.swift index ec947e28c1..995d5bb80a 100644 --- a/macos/Tests/LitheTests/ProjectTreeBatchFileWorkflowTests.swift +++ b/macos/Tests/LitheTests/ProjectTreeBatchFileWorkflowTests.swift @@ -69,7 +69,7 @@ struct ProjectTreeBatchFileWorkflowTests { model.openFile(fixture.url("dest/a.txt")) #expect(await awaitChange(on: model) { model.openDocuments.contains { $0.url == fixture.url("dest/a.txt") } }) let document = try #require(model.openDocuments.first { $0.url == fixture.url("dest/a.txt") }) - await model.markProjectDirectory(fixture.url("dest"), as: .resources) + await model.markProjectDirectory(fixture.url("dest"), action: .setRole(.resources)) // A selected folder and its selected child must produce one directory move. await model.moveProjectItems([fixture.url("b.txt"), fixture.url("dest/a.txt"), fixture.url("dest")], to: fixture.url("bucket")) diff --git a/rust/lithe-core/src/project/indexing.rs b/rust/lithe-core/src/project/indexing.rs index e406e8c635..09f34cfd87 100644 --- a/rust/lithe-core/src/project/indexing.rs +++ b/rust/lithe-core/src/project/indexing.rs @@ -343,6 +343,88 @@ pub struct ReleaseIndexingRequest { pub owner_id: Option, } +#[derive(Deserialize)] +#[serde(rename_all = "camelCase")] +/// Refreshes external Git facts without replacing the caller's published lease. +pub struct RefreshIndexingRequest { + pub root: String, + pub owner_id: String, + /// Existing release token, not the internal scan generation. + pub revision: u64, +} + +/// Invalidates cached decisions for a live owner and reconciles existing providers. +/// No content index is built, and a late request cannot acquire or revive a lease. +pub fn refresh_indexing(request: RefreshIndexingRequest) -> Result { + let root = existing_root(&request.root)?; + let owner = Some(request.owner_id); + let check_lease = |context: &IndexingContext| -> Result<(), CoreError> { + context.check()?; + let leases = context + .leases + .lock() + .map_err(|_| CoreError::new(ErrorCode::Unknown, "Indexing lease lock was poisoned"))?; + if !leases.get(&owner).is_some_and(|lease| { + (lease.published && lease.revision == request.revision) + || lease.previous_published == Some(request.revision) + }) { + return Err(CoreError::new( + ErrorCode::Cancelled, + "Indexing lease changed", + )); + } + Ok(()) + }; + let next = { + let mut entries = policies() + .lock() + .map_err(|_| CoreError::new(ErrorCode::Unknown, "Indexing policy lock was poisoned"))?; + let old = entries + .get(&root) + .ok_or_else(|| CoreError::new(ErrorCode::Cancelled, "Indexing workspace closed"))?; + check_lease(old)?; + let next = refreshed_context(old); + old.retired.store(true, Ordering::Release); + entries.insert(root.clone(), Arc::clone(&next)); + next + }; + super::search_index::invalidate_root(&root); + crate::lsp::indexing_changed(&root)?; + // Release and replacement use this same lock: never acknowledge a retired owner. + let _entries = policies() + .lock() + .map_err(|_| CoreError::new(ErrorCode::Unknown, "Indexing policy lock was poisoned"))?; + check_lease(&next)?; + let mut excluded_directories = next + .policy + .manual_excluded_directories + .iter() + .map(|path| (path.clone(), "manual".to_string())) + .collect::>(); + let decisions = next + .decisions + .lock() + .map_err(|_| CoreError::new(ErrorCode::Unknown, "Indexing decisions lock was poisoned"))?; + for (path, excluded) in decisions.iter() { + if *excluded + && !next + .policy + .included_directories + .iter() + .any(|included| contains(included, path) || contains(path, included)) + { + excluded_directories + .entry(path.clone()) + .or_insert_with(|| "git".into()); + } + } + Ok(IndexingStatus { + revision: request.revision, + excluded_directories, + git_ignore_failed: next.git_failed.load(Ordering::Acquire), + }) +} + pub fn release(request: ReleaseIndexingRequest) -> Result { release_lease(request, false) } @@ -421,20 +503,7 @@ pub(crate) fn refresh(root: &Path) -> Result<(), CoreError> { }; // Closing a workspace must never be undone by a late watcher event. old.check()?; - let next = Arc::new(IndexingContext { - revision: REVISION.fetch_add(1, Ordering::Relaxed), - installation_revision: old.installation_revision, - owner_revision: old.owner_revision, - leases: Arc::clone(&old.leases), - root: old.root.clone(), - policy: old.policy.clone(), - fallback_policy: old.fallback_policy.clone(), - published: AtomicBool::new(old.published.load(Ordering::Acquire)), - decisions: Mutex::default(), - retired: AtomicBool::new(false), - git_failed: AtomicBool::new(false), - git_resolved: AtomicBool::new(false), - }); + let next = refreshed_context(old); old.retired.store(true, Ordering::Release); entries.insert(root.to_path_buf(), next); } @@ -443,6 +512,23 @@ pub(crate) fn refresh(root: &Path) -> Result<(), CoreError> { Ok(()) } +fn refreshed_context(old: &IndexingContext) -> Arc { + Arc::new(IndexingContext { + revision: REVISION.fetch_add(1, Ordering::Relaxed), + installation_revision: old.installation_revision, + owner_revision: old.owner_revision, + leases: Arc::clone(&old.leases), + root: old.root.clone(), + policy: old.policy.clone(), + fallback_policy: old.fallback_policy.clone(), + published: AtomicBool::new(old.published.load(Ordering::Acquire)), + decisions: Mutex::default(), + retired: AtomicBool::new(false), + git_failed: AtomicBool::new(false), + git_resolved: AtomicBool::new(false), + }) +} + /// Resolve native Git decisions before a live provider receives a new generation. /// This reuses the inventory walker (no file text reads) and prunes excluded trees. pub(crate) fn prepare_provider_exclusions( @@ -714,6 +800,116 @@ mod tests { use serde_json::json; use std::fs; + #[test] + fn owned_refresh_rechecks_git_without_replacing_any_release_token() { + let workspace = Workspace::new(); + workspace.git(&["init", "--quiet"]); + let install = |owner| { + configure( + serde_json::from_value(json!({ + "root":workspace.0,"ownerId":owner,"manualExcludedDirectories":[], + "includedDirectories":[],"gitIgnoreEnabled":true + })) + .unwrap(), + ) + .unwrap() + .revision + }; + let first = install("first"); + let second = install("second"); + assert!(workspace + .files() + .contains(&"ignored/deep/Excluded.java".into())); + let stale = context(&workspace.0).unwrap(); + fs::write(workspace.0.join(".gitignore"), "ignored/\n").unwrap(); + let refreshed = refresh_indexing(RefreshIndexingRequest { + root: workspace.0.to_string_lossy().into_owned(), + owner_id: "first".into(), + revision: first, + }) + .unwrap(); + assert_eq!(refreshed.revision, first); + assert!(stale.check().is_err()); + assert!(!workspace + .files() + .contains(&"ignored/deep/Excluded.java".into())); + fs::write(workspace.0.join(".gitignore"), "").unwrap(); + refresh_indexing(RefreshIndexingRequest { + root: workspace.0.to_string_lossy().into_owned(), + owner_id: "second".into(), + revision: second, + }) + .unwrap(); + assert!(workspace + .files() + .contains(&"ignored/deep/Excluded.java".into())); + for (owner, revision) in [("first", first), ("second", second)] { + assert!(release(ReleaseIndexingRequest { + root: workspace.0.to_string_lossy().into_owned(), + owner_id: Some(owner.into()), + revision + }) + .unwrap()); + } + let revision = install("reopened"); + let current = context(&workspace.0).unwrap(); + let error = refresh_indexing(RefreshIndexingRequest { + root: workspace.0.to_string_lossy().into_owned(), + owner_id: "first".into(), + revision: first, + }) + .err() + .expect("closed owner must fail"); + assert!(matches!(error.code, ErrorCode::Cancelled)); + assert!(Arc::ptr_eq(¤t, &context(&workspace.0).unwrap())); + assert!(release(ReleaseIndexingRequest { + root: workspace.0.to_string_lossy().into_owned(), + owner_id: Some("reopened".into()), + revision + }) + .unwrap()); + } + + #[test] + fn directory_action_fixture_preserves_real_git_search_eligibility() { + let fixture: serde_json::Value = serde_json::from_str(include_str!( + "../../../../shared/fixtures/workspace/directory-actions-v1.json" + )) + .unwrap(); + let workspace = Workspace::new(); + workspace.git(&["init", "--quiet"]); + fs::create_dir_all(workspace.0.join("archive")).unwrap(); + fs::write(workspace.0.join("archive/Needle.java"), "class Needle {}").unwrap(); + fs::write(workspace.0.join(".gitignore"), "archive/\n").unwrap(); + for case in fixture["cases"].as_array().unwrap() { + for step in case["steps"].as_array().unwrap() { + let excluded = step["role"] == "excluded"; + let included = step["included"].as_bool().unwrap(); + workspace.configure( + if excluded { &["archive"] } else { &[] }, + if included { &["archive"] } else { &[] }, + true, + ); + let found = files::search_everywhere( + serde_json::from_value(json!({ + "root":workspace.0,"query":"Needle","includeGeneratedFileNames":true + })) + .unwrap(), + ) + .unwrap(); + assert_eq!( + found + .matches + .iter() + .any(|item| item.path == "archive/Needle.java"), + included && !excluded, + "{}", + case["id"] + ); + } + } + } + #[test] fn scoped_everywhere_search_filters_each_source_before_limits_and_pagination() { let workspace = Workspace::new(); diff --git a/rust/lithe-core/src/protocol/command.rs b/rust/lithe-core/src/protocol/command.rs index 89ee46385d..4580a6681d 100644 --- a/rust/lithe-core/src/protocol/command.rs +++ b/rust/lithe-core/src/protocol/command.rs @@ -190,6 +190,8 @@ pub enum CoreCommand { WorkspaceSnapshot, /// Configure workspace indexing independently of tree visibility. WorkspaceConfigureIndexing, + /// Refreshes external indexing facts while retaining the owner's lease. + WorkspaceRefreshIndexing, /// Releases an indexing generation when its project closes. WorkspaceReleaseIndexing, /// Lists the visible children of project directories (`workspace.listDirectories`). @@ -634,6 +636,7 @@ impl CoreCommand { "workspace.snapshot" => Some(Self::WorkspaceSnapshot), "workspace.releaseIndexing" => Some(Self::WorkspaceReleaseIndexing), "workspace.configureIndexing" => Some(Self::WorkspaceConfigureIndexing), + "workspace.refreshIndexing" => Some(Self::WorkspaceRefreshIndexing), "workspace.filterChanges" => Some(Self::WorkspaceFilterChanges), "workspace.listDirectories" => Some(Self::WorkspaceListDirectories), "workspace.repositories" => Some(Self::WorkspaceRepositories), diff --git a/rust/lithe-core/src/runtime/dispatcher.rs b/rust/lithe-core/src/runtime/dispatcher.rs index d42dfeaeb8..13169d075a 100644 --- a/rust/lithe-core/src/runtime/dispatcher.rs +++ b/rust/lithe-core/src/runtime/dispatcher.rs @@ -95,7 +95,7 @@ fn execute(request: &str) -> CoreResponse { None, CoreError::new(ErrorCode::InvalidRequest, "Invalid JSON request") .with_details(error.to_string()), - ) + ); } }; let id = parsed.id.clone(); @@ -580,6 +580,23 @@ fn execute(request: &str) -> CoreResponse { Err(error) => CoreResponse::failure(id, error), } } + CoreCommand::WorkspaceRefreshIndexing => { + match serde_json::from_value::( + parsed.payload, + ) + .map_err(|error| { + CoreError::new(ErrorCode::InvalidRequest, "Invalid indexing refresh") + .with_details(error.to_string()) + }) + .and_then(project::indexing::refresh_indexing) + { + Ok(data) => CoreResponse::success( + id, + serde_json::to_value(data).expect("indexing status should encode"), + ), + Err(error) => CoreResponse::failure(id, error), + } + } CoreCommand::WorkspaceSnapshot => { match serde_json::from_value::(parsed.payload) .map_err(|error| { diff --git a/shared/contracts/rust-core-api.md b/shared/contracts/rust-core-api.md index 357cd39bd4..ee33303bcb 100644 --- a/shared/contracts/rust-core-api.md +++ b/shared/contracts/rust-core-api.md @@ -976,6 +976,7 @@ package manager owns the download and Lithe does not infer bytes from logs. | `editor.lineEdit` | Apply a deterministic line-level text transform and return the replacement plus selection to restore | | `editor.lineCommentToken` | Resolve the line comment token for a file extension or language id | | `workspace.releaseIndexing` | Retire a policy and clear index/cache data at project close; accepts `root`, optional `ownerId`, and that owner's last observed `revision`, returns `released`; an old close must not retire a new generation | +| `workspace.refreshIndexing` | Refresh external Git decisions for a live `root`, `ownerId`, `revision` lease without changing preferences or release tokens; returns lazy `IndexingStatus` | | `workspace.configureIndexing` | Install a process-local, canonical-root indexing policy before workspace consumers run; returns a monotonic revision, effective directory reasons and Git failure state; see `shared/fixtures/workspace/indexing-policy-v1.json` | | `network.proxyPolicy` | Normalize the stored proxy settings into the policy a network stack must apply (mode, server, credentials, exclusions) | | `workspace.snapshot` | Enumerate visible workspace nodes and relative file paths; `nestedWorktrees` lists linked worktrees checked out inside their own repository, which are left out of the tree, files, and search index; the built-in hidden names are skipped without being read, and include `node_modules`, Python virtual environments (`.venv`, `venv`), `__pycache__` and `*.pyc` files; `includeTree: false` returns only `files` and a childless `root`; `files` (and the tree, when included) keep the lowercase traversal order that bounded consumers such as Windows Quick Open rely on, not the natural display order of `workspace.listDirectories` | @@ -4574,7 +4575,31 @@ with workspace membership, never with tool-window or tree mounting. Omitting `ownerId` retains the legacy revision-guarded lease. A native window host must reclaim its leases on destruction, including installations that finish after destruction. -`revision` is the requesting owner's release token. Explicit policy replacement or refresh +`workspace.refreshIndexing` requires `root`, `ownerId` and its published `revision`. +It validates the live lease, retires the scan generation and clears Git decisions and +search caches without installing settings, acquiring a lease or replacing any owner's +release token. Closed or superseded leases return `cancelled`. Its `IndexingStatus` +retains the supplied release token; directory reasons remain lazy, just as for configure. +Without a running language service it does not scan directories or prewarm content. +Live providers reuse the existing directory-only preparation and withdraw excluded +working copies and diagnostics. Hosts resynchronize still-open buffers after success. + +Windows maintains one invalidation queue per native canonical root. Events advance an +epoch before fan-out to WebViews; waiting queries consume the same queue and reject +results if its epoch changes. Concurrent refresh requests share the completed root status +but retain their own envelope and lease token. Lock waits have a 30-second deadline; +refreshes consume at most three epochs, leaving newer events dirty on failure. Root +membership and watcher registrations belong to runtime lifetimes, including background +workspaces. Preferences and refresh completion use distinct events to avoid write loops. +The native host injects the window identity for Git/file watcher ownership, shares paths +and releases only the last holder; window destruction also revokes late registrations. + +The directory-action sequence contract is `shared/fixtures/workspace/directory-actions-v1.json`. +Role changes retain include exceptions, explicit exclusion deletes only its own exception, +and canceling Git exclusion preserves the current role. Only canceling a manual exclusion +restores the remembered role. Manual ancestor exclusion cannot be overridden. + +`revision` is the requesting owner's release token. Explicit policy replacement or legacy `configureIndexing` refresh replaces only that owner's token; other owners retain their valid release tokens; internal Git watcher refreshes retain it while advancing a separate Core-only scan generation used by index and language-service caches. Changing settings or `refresh: true` retires the old generation and discards its diff --git a/shared/fixtures/workspace/directory-actions-v1.json b/shared/fixtures/workspace/directory-actions-v1.json new file mode 100644 index 0000000000..8786338a19 --- /dev/null +++ b/shared/fixtures/workspace/directory-actions-v1.json @@ -0,0 +1,275 @@ +{ + "schemaVersion": 1, + "cases": [ + { + "id": "cancel-then-plain", + "steps": [ + { + "action": { + "kind": "cancelExclusion" + }, + "role": "plain", + "included": true + }, + { + "action": { + "kind": "setRole", + "role": "plain" + }, + "role": "plain", + "included": true + } + ] + }, + { + "id": "plain-then-cancel", + "steps": [ + { + "action": { + "kind": "setRole", + "role": "plain" + }, + "role": "plain", + "included": false + }, + { + "action": { + "kind": "cancelExclusion" + }, + "role": "plain", + "included": true + }, + { + "action": { + "kind": "exclude" + }, + "role": "excluded", + "included": false + }, + { + "action": { + "kind": "cancelExclusion" + }, + "role": "plain", + "included": true + } + ] + }, + { + "id": "cancel-then-sources", + "steps": [ + { + "action": { + "kind": "cancelExclusion" + }, + "role": "plain", + "included": true + }, + { + "action": { + "kind": "setRole", + "role": "sources" + }, + "role": "sources", + "included": true + } + ] + }, + { + "id": "sources-then-cancel", + "steps": [ + { + "action": { + "kind": "setRole", + "role": "sources" + }, + "role": "sources", + "included": false + }, + { + "action": { + "kind": "cancelExclusion" + }, + "role": "sources", + "included": true + }, + { + "action": { + "kind": "exclude" + }, + "role": "excluded", + "included": false + }, + { + "action": { + "kind": "cancelExclusion" + }, + "role": "sources", + "included": true + } + ] + }, + { + "id": "cancel-then-resources", + "steps": [ + { + "action": { + "kind": "cancelExclusion" + }, + "role": "plain", + "included": true + }, + { + "action": { + "kind": "setRole", + "role": "resources" + }, + "role": "resources", + "included": true + } + ] + }, + { + "id": "resources-then-cancel", + "steps": [ + { + "action": { + "kind": "setRole", + "role": "resources" + }, + "role": "resources", + "included": false + }, + { + "action": { + "kind": "cancelExclusion" + }, + "role": "resources", + "included": true + }, + { + "action": { + "kind": "exclude" + }, + "role": "excluded", + "included": false + }, + { + "action": { + "kind": "cancelExclusion" + }, + "role": "resources", + "included": true + } + ] + }, + { + "id": "cancel-then-module", + "steps": [ + { + "action": { + "kind": "cancelExclusion" + }, + "role": "plain", + "included": true + }, + { + "action": { + "kind": "setRole", + "role": "module" + }, + "role": "module", + "included": true + } + ] + }, + { + "id": "module-then-cancel", + "steps": [ + { + "action": { + "kind": "setRole", + "role": "module" + }, + "role": "module", + "included": false + }, + { + "action": { + "kind": "cancelExclusion" + }, + "role": "module", + "included": true + }, + { + "action": { + "kind": "exclude" + }, + "role": "excluded", + "included": false + }, + { + "action": { + "kind": "cancelExclusion" + }, + "role": "module", + "included": true + } + ] + }, + { + "id": "cancel-then-package", + "steps": [ + { + "action": { + "kind": "cancelExclusion" + }, + "role": "plain", + "included": true + }, + { + "action": { + "kind": "setRole", + "role": "package" + }, + "role": "package", + "included": true + } + ] + }, + { + "id": "package-then-cancel", + "steps": [ + { + "action": { + "kind": "setRole", + "role": "package" + }, + "role": "package", + "included": false + }, + { + "action": { + "kind": "cancelExclusion" + }, + "role": "package", + "included": true + }, + { + "action": { + "kind": "exclude" + }, + "role": "excluded", + "included": false + }, + { + "action": { + "kind": "cancelExclusion" + }, + "role": "package", + "included": true + } + ] + } + ] +} diff --git a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json index 30d7e0b426..9d363104e6 100644 --- a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json +++ b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json @@ -4,10 +4,10 @@ "group": "工作区生命周期", "capability": "目录索引排除与 Git 自动排除", "owner": "Workspace", - "verification": "较早本地验收阶段未执行 Windows/Frontend 测试;用户随后授权 Ready 触发完整自动 CI,原生界面验证仍单独记录。整合 preview a1ed8f4c 后,补修源码921c888c通过完整Core1484项、本机Swift6.4.2/Xcode27.2受影响182条(含完整Git观察28条)、Rust↔Swift桥接及Core边界检查;编译与测试按现有CI分离,未放宽计时预算。完整开发App原生验收确认排除目录与后代仍可浏览并显示排除图标,冷JDT仅导入visible且实际返回PrintStream补全,外部stage/commit自动更新且JDT和补全保持;用户操作取消排除后由代理核验搜索、落盘、重启持久化及A/B项目查询与关闭隔离。损坏配置随App语言中英即时切换且原值保留,修正后显式重试成功;真实权限失败分别显示中英文错误,权限恢复后观察到项目重载,代理未点击该流程的Retry。1419包文件/9符号链接及签名不变;QA/JDT/辅助进程清理,用户Dev保留,开发偏好精确恢复,新增缓存归档。4e7b8441的插件512条及合成库存10202/201剪枝结果保留原版本,不能当作UI或LSP后台性能基准。较早源码的普通角色、linked-worktree和子模块原生证据见Note。macOS在上述能力范围完成本机运行验证,固定Xcode26.6完整CI与本机结果分别核对;Windows新回归仅书写和静态复审,原生仍pending。Java显式构建模块仍可能扫描,Go/Rust配置送达不等于后台零扫描。 后续补修内容搜索首次请求、加载更多及索引状态的错误呈现:保存类型化错误,按当前语言使用共享词条,不拼接内部错误码;本机Bun1.3.13的19条逐项计时及TypeScript检查通过,损坏偏好保留、语言切换不重搜及加载更多保留结果有回归。真实页面有结果时显示紧凑错误和重试,失败暂停自动翻页;新增回归接入Windows CI隔离分组;该补修的固定工具链及Windows CI按对应提交的PR报告单独记录,Windows原生界面保持pending。 批量Run夹具增加首扫完成与快照UUID同步,本机Swift6.4.2完整Run入口21条通过,固定工具链结果以对应PR提交报告为准。 继而统一全部10处Run/Debug/单项/批量/服务/重启首次库存发布:在主actor空闲边界释放库存,重查排队刷新状态并核验准确快照UUID,保留刻意门控的调用方刷新任务;本机完整Run入口21条在三个独立进程中通过。 目录标记读取由树与索引配置共用版本、结构、角色和相对路径校验,真实内容搜索API回归用于核验非法JSON、空结构、null、错误marks类型及越界路径均显示共享中英错误,切语言不重搜、不调用Core安装空策略、不覆盖原始存储。", + "verification": "本轮整合基线4e47d784后的目录动作、租约刷新及监听所有权补修随本记录提交到PR1597,准确提交身份见PR说明;本地源码哈希与验证报告保存在.artifacts/pr1597-final-verification。Core完整门禁、桥接、Swift聚焦33条和静态门禁通过。macOS独立QA已验证Git忽略→取消排除→源码角色、真实搜索与落盘例外;自动化窗口连接故障使第二方向菜单和重启界面验收未完成。用户要求本机不进行Windows测试,最新LSP所有权和在途编辑补修仅静态检查/审查,新增回归未运行;此前Bun79、project Rust41、宿主5条组件结果不覆盖后续源码,也不代替Windows A/B切换、多仓库、共享根和LSP恢复原生验收。两端本轮验证保持pending,历史记录按各自源码阅读。 较早本地验收阶段未执行 Windows/Frontend 测试;用户随后授权 Ready 触发完整自动 CI,原生界面验证仍单独记录。整合 preview a1ed8f4c 后,补修源码921c888c通过完整Core1484项、本机Swift6.4.2/Xcode27.2受影响182条(含完整Git观察28条)、Rust↔Swift桥接及Core边界检查;编译与测试按现有CI分离,未放宽计时预算。完整开发App原生验收确认排除目录与后代仍可浏览并显示排除图标,冷JDT仅导入visible且实际返回PrintStream补全,外部stage/commit自动更新且JDT和补全保持;用户操作取消排除后由代理核验搜索、落盘、重启持久化及A/B项目查询与关闭隔离。损坏配置随App语言中英即时切换且原值保留,修正后显式重试成功;真实权限失败分别显示中英文错误,权限恢复后观察到项目重载,代理未点击该流程的Retry。1419包文件/9符号链接及签名不变;QA/JDT/辅助进程清理,用户Dev保留,开发偏好精确恢复,新增缓存归档。4e7b8441的插件512条及合成库存10202/201剪枝结果保留原版本,不能当作UI或LSP后台性能基准。较早源码的普通角色、linked-worktree和子模块原生证据见Note。macOS在上述能力范围完成本机运行验证,固定Xcode26.6完整CI与本机结果分别核对;Windows新回归仅书写和静态复审,原生仍pending。Java显式构建模块仍可能扫描,Go/Rust配置送达不等于后台零扫描。 后续补修内容搜索首次请求、加载更多及索引状态的错误呈现:保存类型化错误,按当前语言使用共享词条,不拼接内部错误码;本机Bun1.3.13的19条逐项计时及TypeScript检查通过,损坏偏好保留、语言切换不重搜及加载更多保留结果有回归。真实页面有结果时显示紧凑错误和重试,失败暂停自动翻页;新增回归接入Windows CI隔离分组;该补修的固定工具链及Windows CI按对应提交的PR报告单独记录,Windows原生界面保持pending。 批量Run夹具增加首扫完成与快照UUID同步,本机Swift6.4.2完整Run入口21条通过,固定工具链结果以对应PR提交报告为准。 继而统一全部10处Run/Debug/单项/批量/服务/重启首次库存发布:在主actor空闲边界释放库存,重查排队刷新状态并核验准确快照UUID,保留刻意门控的调用方刷新任务;本机完整Run入口21条在三个独立进程中通过。 目录标记读取由树与索引配置共用版本、结构、角色和相对路径校验,真实内容搜索API回归用于核验非法JSON、空结构、null、错误marks类型及越界路径均显示共享中英错误,切语言不重搜、不调用Core安装空策略、不覆盖原始存储。", "macos": { "implementationStatus": "partial", - "verificationStatus": "verified", + "verificationStatus": "pending", "evidence": [ "macos/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift", "macos/Sources/Lithe/Views/App/WorkspaceIndexingSettingsView.swift", @@ -22,7 +22,8 @@ "macos/Tests/LitheTests/LazyProjectTreeInventoryTests.swift", "macos/Tests/LitheTests/WorkspaceSessionCoordinatorTests.swift", "macos/Tests/LitheTests/GitStatusObservationTests.swift", - "macos/Tests/LitheTests/RunEntryPointTests.swift" + "macos/Tests/LitheTests/RunEntryPointTests.swift", + "shared/fixtures/workspace/directory-actions-v1.json" ] }, "windows": { @@ -49,7 +50,12 @@ "windows/tauri/src/features/file-system/services/file-watcher-listener.ts", "windows/tauri/src/features/file-system/services/file-watcher-listener.test.ts", "windows/tauri/src/features/file-explorer/stores/directory-marks-storage.ts", - "windows/tauri/src/features/global-search/hooks/use-content-search.integration.test.tsx" + "windows/tauri/src/features/global-search/hooks/use-content-search.integration.test.tsx", + "shared/fixtures/workspace/directory-actions-v1.json", + "windows/tauri/crates/project/src/indexing_refresh.rs", + "windows/tauri/crates/project/src/git_watcher.rs", + "windows/tauri/src/features/git/runtime/git-metadata-watch-host.tsx", + "windows/tauri/src/features/editor/lsp/mounted-lsp-documents.ts" ] } } diff --git a/windows/tauri/crates/project/src/git_watcher.rs b/windows/tauri/crates/project/src/git_watcher.rs index 6b24a89b23..4279ae648f 100644 --- a/windows/tauri/crates/project/src/git_watcher.rs +++ b/windows/tauri/crates/project/src/git_watcher.rs @@ -12,6 +12,8 @@ pub struct GitWatchContext { pub repository_root: PathBuf, pub git_directory: PathBuf, pub git_common_directory: PathBuf, + #[serde(default)] + pub rule_directories: Vec, } #[derive(Clone, serde::Serialize)] @@ -38,6 +40,7 @@ struct Registration { struct WatchState { watcher: Option>, paths: BTreeMap, + closed_windows: BTreeSet, } pub struct GitMetadataWatcher { @@ -54,13 +57,20 @@ impl GitMetadataWatcher { state: Mutex::new(WatchState { watcher: None, paths: BTreeMap::new(), + closed_windows: BTreeSet::new(), }), } } /// Reserve ownership before Core discovery so a late result cannot restore an old watch. pub fn begin(&self, owner: &str, lease: &str) -> Result<()> { - let mut state = self.state.lock().unwrap(); + let state = self.state.lock().unwrap(); + if state + .closed_windows + .contains(owner.split('\0').next().unwrap_or(owner)) + { + anyhow::bail!("Watch window closed"); + } let mut registrations = self.registrations.lock().unwrap(); let context = registrations.remove(owner).and_then(|entry| entry.context); registrations.insert( @@ -71,7 +81,7 @@ impl GitMetadataWatcher { }, ); drop(registrations); - self.reconcile(&mut state) + Ok(()) } pub fn install(&self, owner: &str, lease: &str, context: GitWatchContext) -> Result<()> { @@ -103,6 +113,17 @@ impl GitMetadataWatcher { self.reconcile(&mut state) } + /// All repository registrations owned by a destroyed WebView are revoked together. + pub fn remove_window(&self, window: &str) -> Result<()> { + let mut state = self.state.lock().unwrap(); + state.closed_windows.insert(window.to_owned()); + self.registrations + .lock() + .unwrap() + .retain(|owner, _| owner.split('\0').next() != Some(window)); + self.reconcile(&mut state) + } + fn reconcile(&self, state: &mut WatchState) -> Result<()> { let mut desired = BTreeMap::::new(); for context in self @@ -115,6 +136,9 @@ impl GitMetadataWatcher { desired .entry(context.repository_root.clone()) .or_insert(false); + for directory in &context.rule_directories { + desired.entry(directory.clone()).or_insert(false); + } desired.insert(context.git_directory.clone(), true); desired.insert(context.git_common_directory.clone(), true); } @@ -236,6 +260,14 @@ fn is_index_write(context: &GitWatchContext, path: &Path) -> bool { } fn is_relevant_metadata_change(context: &GitWatchContext, path: &Path) -> bool { + if path == context.repository_root.join(".gitignore") + || context + .rule_directories + .iter() + .any(|directory| path == directory.join(".gitignore")) + { + return true; + } if let Ok(relative) = path.strip_prefix(&context.git_directory) { let first = relative .components() @@ -306,6 +338,9 @@ mod tests { std::fs::create_dir_all(&repository_root).unwrap(); std::fs::create_dir_all(&git_directory).unwrap(); std::fs::create_dir_all(git_common_directory.join("refs/heads")).unwrap(); + let repository_root = std::fs::canonicalize(repository_root).unwrap(); + let git_directory = std::fs::canonicalize(git_directory).unwrap(); + let git_common_directory = std::fs::canonicalize(git_common_directory).unwrap(); std::fs::write( repository_root.join(".git"), format!("gitdir: {}\n", git_directory.display()), @@ -322,6 +357,7 @@ mod tests { "fixture-window", "fixture-lease", GitWatchContext { + rule_directories: Vec::new(), repository_root: repository_root.clone(), git_directory, git_common_directory, @@ -341,6 +377,76 @@ mod tests { .unwrap(); } + #[test] + fn window_keeps_multiple_repositories_and_shared_holders_until_final_release() { + use std::sync::mpsc; + struct Fixture(PathBuf); + impl Drop for Fixture { + fn drop(&mut self) { + let _ = std::fs::remove_dir_all(&self.0); + } + } + struct Emitter(mpsc::Sender>); + impl GitMetadataEmitter for Emitter { + fn emit_git_metadata_change(&self, event: &GitMetadataChange) { + let _ = self.0.send(event.repository_roots.clone()); + } + } + let fixture = Fixture( + std::env::temp_dir().join(format!("lithe-multi-repo-watch-{}", std::process::id())), + ); + let context = |name: &str| { + let root = fixture.0.join(name); + std::fs::create_dir_all(root.join(".git/info")).unwrap(); + let root = std::fs::canonicalize(root).unwrap(); + std::fs::write(root.join(".git/info/exclude"), "before").unwrap(); + GitWatchContext { + git_directory: root.join(".git"), + git_common_directory: root.join(".git"), + repository_root: root, + rule_directories: Vec::new(), + } + }; + let first = context("one"); + let second = context("two"); + let (sender, receiver) = mpsc::channel(); + let watcher = GitMetadataWatcher::new(Arc::new(Emitter(sender))); + for (owner, context) in [ + ("window\0a\01", &first), + ("window\0a\02", &second), + ("other\0b\03", &first), + ] { + watcher.begin(owner, "lease").unwrap(); + watcher.install(owner, "lease", context.clone()).unwrap(); + } + assert_eq!(watcher.registrations.lock().unwrap().len(), 3); + std::fs::write(second.git_directory.join("info/exclude"), "after").unwrap(); + assert!( + receiver + .recv_timeout(Duration::from_secs(5)) + .unwrap() + .contains(&second.repository_root) + ); + watcher.remove_window("window").unwrap(); + assert_eq!(watcher.registrations.lock().unwrap().len(), 1); + std::fs::write(first.git_directory.join("info/exclude"), "after").unwrap(); + let deadline = std::time::Instant::now() + Duration::from_secs(5); + loop { + let roots = receiver + .recv_timeout(deadline.saturating_duration_since(std::time::Instant::now())) + .unwrap(); + if roots.contains(&first.repository_root) { + break; + } + } + assert!(watcher.begin("window\0late\04", "late").is_err()); + watcher.install("window\0a\02", "lease", second).unwrap(); + watcher.remove_window("other").unwrap(); + let state = watcher.state.lock().unwrap(); + assert!(state.paths.is_empty()); + assert!(state.watcher.is_none()); + } + #[test] fn native_linked_worktree_watch_receives_external_commit_metadata() { assert_native_linked_worktree_notification("refs/heads/main"); @@ -354,6 +460,7 @@ mod tests { #[test] fn shared_refs_and_worktree_registration_changes_refresh_all_related_worktrees() { let context = GitWatchContext { + rule_directories: Vec::new(), repository_root: PathBuf::from("workspace/linked"), git_directory: PathBuf::from("workspace/main/.git/worktrees/linked"), git_common_directory: PathBuf::from("workspace/main/.git"), @@ -382,6 +489,7 @@ mod tests { fn only_the_worktree_index_counts_as_an_index_write() { // Index rewrites refresh staging only; blame and history wait for refs. let linked = GitWatchContext { + rule_directories: Vec::new(), repository_root: PathBuf::from("workspace/linked"), git_directory: PathBuf::from("workspace/main/.git/worktrees/linked"), git_common_directory: PathBuf::from("workspace/main/.git"), @@ -411,6 +519,7 @@ mod tests { // Snapshot diffs create and delete these directories while a diff opens; // reporting them made the open working-tree diff refresh and close itself. let context = GitWatchContext { + rule_directories: Vec::new(), repository_root: PathBuf::from("workspace/repo"), git_directory: PathBuf::from("workspace/repo/.git"), git_common_directory: PathBuf::from("workspace/repo/.git"), diff --git a/windows/tauri/crates/project/src/indexing_refresh.rs b/windows/tauri/crates/project/src/indexing_refresh.rs new file mode 100644 index 0000000000..0b8b42bd69 --- /dev/null +++ b/windows/tauri/crates/project/src/indexing_refresh.rs @@ -0,0 +1,236 @@ +//! Bounded, root-owned invalidation epochs shared by every native window. + +use std::sync::{ + Condvar, Mutex, + atomic::{AtomicU64, Ordering}, +}; + +#[derive(Default)] +pub struct IndexingRefresh { + requested: AtomicU64, + applied: AtomicU64, + notified: AtomicU64, + last_status: Mutex>, + running: Mutex, + available: Condvar, +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn concurrent_holders_share_each_epoch_and_publish_once() { + use std::{ + sync::{Arc, atomic::AtomicUsize, mpsc}, + time::Duration, + }; + let state = Arc::new(IndexingRefresh::default()); + let calls = Arc::new(AtomicUsize::new(0)); + state.invalidate(); + let (started, start) = mpsc::channel(); + let (release, gate) = mpsc::channel(); + let (finished, done) = mpsc::channel(); + let first = Arc::clone(&state); + let count = Arc::clone(&calls); + let worker = std::thread::spawn(move || { + let result = first.ensure_fresh(|| { + if count.fetch_add(1, Ordering::SeqCst) == 0 { + started.send(()).unwrap(); + gate.recv_timeout(Duration::from_secs(5)).map_err(|_| ())?; + } + Ok::<_, ()>(String::new()) + }); + let _ = finished.send(result); + }); + start.recv_timeout(Duration::from_secs(5)).unwrap(); + state.invalidate(); + release.send(()).unwrap(); + // The main caller waits for the same root; neither holder repeats an acknowledged epoch. + state + .ensure_fresh(|| { + calls.fetch_add(1, Ordering::SeqCst); + Ok::<_, ()>(String::new()) + }) + .unwrap(); + done.recv_timeout(Duration::from_secs(5)).unwrap().unwrap(); + worker.join().unwrap(); + assert_eq!(calls.load(Ordering::SeqCst), 2); + assert!(state.take_completed()); + assert!(!state.take_completed()); + } + + #[test] + fn batches_share_work_and_events_during_refresh_get_another_pass() { + let state = IndexingRefresh::default(); + state.invalidate(); + state.invalidate(); + let mut calls = 0; + state + .ensure_fresh(|| { + calls += 1; + if calls == 1 { + state.invalidate(); + } + Ok::<_, ()>(String::new()) + }) + .unwrap(); + state + .ensure_fresh(|| { + calls += 1; + Ok::<_, ()>(String::new()) + }) + .unwrap(); + assert_eq!(calls, 2); + assert!(state.is_clean()); + } + + #[test] + fn failed_and_continuously_superseded_refreshes_remain_dirty() { + let state = IndexingRefresh::default(); + state.invalidate(); + assert!(matches!( + state.ensure_fresh(|| Err::("failure")), + Err(RefreshError::Failed("failure")) + )); + assert!(!state.is_clean()); + let mut calls = 0; + assert!(matches!( + state.ensure_fresh(|| { + calls += 1; + state.invalidate(); + Ok::<_, ()>(String::new()) + }), + Err(RefreshError::Superseded) + )); + assert_eq!(calls, 3); + assert!(!state.is_clean()); + assert_eq!( + state.refresh_now(|| Ok::<_, ()>("status".into())).unwrap(), + "status" + ); + assert!(state.is_clean()); + } +} + +#[derive(Debug)] +pub enum RefreshError { + Failed(E), + Superseded, + TimedOut, +} + +struct RefreshGuard<'a>(&'a IndexingRefresh); +impl Drop for RefreshGuard<'_> { + fn drop(&mut self) { + *self + .0 + .running + .lock() + .unwrap_or_else(|error| error.into_inner()) = false; + self.0.available.notify_all(); + } +} + +impl IndexingRefresh { + fn acquire(&self) -> Result, RefreshError> { + let deadline = std::time::Instant::now() + std::time::Duration::from_secs(30); + let mut running = self + .running + .lock() + .unwrap_or_else(|error| error.into_inner()); + while *running { + let remaining = deadline.saturating_duration_since(std::time::Instant::now()); + if remaining.is_zero() { + return Err(RefreshError::TimedOut); + } + let (next, timeout) = self + .available + .wait_timeout(running, remaining) + .unwrap_or_else(|error| error.into_inner()); + running = next; + if timeout.timed_out() && *running { + return Err(RefreshError::TimedOut); + } + } + *running = true; + Ok(RefreshGuard(self)) + } + + pub fn discard_status(&self) { + *self.last_status.lock().unwrap_or_else(|e| e.into_inner()) = None; + } + + pub fn invalidate(&self) { + self.requested.fetch_add(1, Ordering::AcqRel); + } + + pub fn epoch(&self) -> u64 { + self.requested.load(Ordering::Acquire) + } + + pub fn is_clean(&self) -> bool { + self.epoch() == self.applied.load(Ordering::Acquire) + } + + /// Every clean epoch is broadcast once, including work consumed by a waiting query. + pub fn take_completed(&self) -> bool { + let epoch = self.applied.load(Ordering::Acquire); + if epoch != self.epoch() { + return false; + } + self.notified.fetch_max(epoch, Ordering::AcqRel) < epoch + } + + /// Explicit activation/refresh requests return the real Core status to their own owner. + pub fn refresh_now( + &self, + refresh: impl FnOnce() -> Result, + ) -> Result> { + self.invalidate(); + let _running = self.acquire()?; + let epoch = self.epoch(); + if self.is_clean() { + if let Some(status) = self + .last_status + .lock() + .unwrap_or_else(|e| e.into_inner()) + .clone() + { + return Ok(status); + } + } + let result = refresh().map_err(RefreshError::Failed)?; + *self.last_status.lock().unwrap_or_else(|e| e.into_inner()) = Some(result.clone()); + self.applied.store(epoch, Ordering::Release); + if self.is_clean() { + Ok(result) + } else { + Err(RefreshError::Superseded) + } + } + + /// One shared worker consumes each observed epoch; a newer event is never acknowledged early. + pub fn ensure_fresh( + &self, + mut refresh: impl FnMut() -> Result, + ) -> Result> { + let _running = self.acquire()?; + let mut refreshed = false; + for _ in 0..3 { + let epoch = self.epoch(); + if epoch == self.applied.load(Ordering::Acquire) { + return Ok(refreshed); + } + let status = refresh().map_err(RefreshError::Failed)?; + *self.last_status.lock().unwrap_or_else(|e| e.into_inner()) = Some(status); + refreshed = true; + self.applied.store(epoch, Ordering::Release); + } + if self.is_clean() { + Ok(refreshed) + } else { + Err(RefreshError::Superseded) + } + } +} diff --git a/windows/tauri/crates/project/src/lib.rs b/windows/tauri/crates/project/src/lib.rs index 3f886c3722..7569e6fadb 100644 --- a/windows/tauri/crates/project/src/lib.rs +++ b/windows/tauri/crates/project/src/lib.rs @@ -2,6 +2,7 @@ pub mod document_file; pub mod document_watcher; use anyhow::{Context, Result, bail}; pub mod git_watcher; +pub mod indexing_refresh; use notify::{ Event, EventKind, RecommendedWatcher, RecursiveMode, event::{ModifyKind, RenameMode}, @@ -10,7 +11,7 @@ use notify_debouncer_full::{ DebounceEventResult, DebouncedEvent, Debouncer, RecommendedCache, new_debouncer, }; use std::{ - collections::HashSet, + collections::{HashMap, HashSet}, path::PathBuf, sync::{Arc, Mutex}, time::Duration, @@ -35,6 +36,9 @@ pub enum FileChangeType { pub trait FileChangeEmitter: Send + Sync { fn emit_file_change(&self, event: &FileChangeEvent); + fn emit_file_changes(&self, events: &[FileChangeEvent]) { + for event in events { self.emit_file_change(event); } + } } pub struct FileWatcher { @@ -42,6 +46,13 @@ pub struct FileWatcher { debouncer: Arc>>>, watched_paths: Arc>>, watched_directories: Arc>>, + owners: Mutex, +} + +#[derive(Default)] +struct FileWatchOwners { + registrations: HashMap, + closed_windows: HashSet, } impl FileWatcher { @@ -51,6 +62,69 @@ impl FileWatcher { debouncer: Arc::new(Mutex::new(None)), watched_paths: Arc::new(Mutex::new(HashSet::new())), watched_directories: Arc::new(Mutex::new(HashSet::new())), + owners: Mutex::new(FileWatchOwners::default()), + } + } + + /// Registration identity is window/runtime/watch; native paths are shared by all holders. + pub fn watch_owned(&self, owner: String, path: String, project_root: bool) -> Result<()> { + let mut owners = self.owners.lock().unwrap(); + if owners + .closed_windows + .contains(owner.split('\0').next().unwrap_or(&owner)) + { + bail!("Watch window closed"); + } + let canonical = std::fs::canonicalize(&path)?; + if let Some(previous) = owners.registrations.get(&owner) { + if *previous != canonical { + bail!("Watch registration cannot change its path"); + } + return Ok(()); + } + self.watch_path_with_mode(canonical.to_string_lossy().into_owned(), true, project_root)?; + owners.registrations.insert(owner, canonical); + Ok(()) + } + + pub fn unwatch_owned(&self, owner: &str) -> Result<()> { + let mut owners = self.owners.lock().unwrap(); + self.release_owned(&mut owners, owner) + } + + fn release_owned(&self, owners: &mut FileWatchOwners, owner: &str) -> Result<()> { + let Some(path) = owners.registrations.get(owner).cloned() else { + return Ok(()); + }; + if !owners + .registrations + .iter() + .any(|(key, other)| key != owner && *other == path) + { + self.stop_watching(path.to_string_lossy().into_owned())?; + } + owners.registrations.remove(owner); + Ok(()) + } + + pub fn remove_window(&self, window: &str) -> Result<()> { + let mut owners = self.owners.lock().unwrap(); + owners.closed_windows.insert(window.to_owned()); + let keys: Vec<_> = owners + .registrations + .keys() + .filter(|owner| owner.split('\0').next() == Some(window)) + .cloned() + .collect(); + let mut failure = None; + for key in keys { + if let Err(error) = self.release_owned(&mut owners, &key) { + failure = Some(error); + } + } + match failure { + Some(error) => Err(error), + None => Ok(()), } } @@ -154,19 +228,19 @@ impl FileWatcher { Self::emit_rescans(emitter, watched_directories); return; } - for (path, event_type) in changes { - emitter.emit_file_change(&FileChangeEvent { - path: path.to_string_lossy().to_string(), - event_type, - }); - } - } + let events = changes.into_iter().map(|(path, event_type)| FileChangeEvent { + path: path.to_string_lossy().to_string(), event_type, + }).collect::>(); + emitter.emit_file_changes(&events); + } fn is_relevant_change( path: &PathBuf, watched_paths: &HashSet, watched_dirs: &HashSet, ) -> bool { + if path.file_name().is_some_and(|name| name == ".gitignore") + && watched_dirs.iter().any(|root| path.starts_with(root)) { return true; } if watched_paths.contains(path) { return true; } @@ -174,8 +248,7 @@ impl FileWatcher { .iter() .filter(|root| path.starts_with(root)) .max_by_key(|root| root.components().count()); - root - .and_then(|root| path.strip_prefix(root).ok()) + root.and_then(|root| path.strip_prefix(root).ok()) .is_some_and(|relative| { lithe_core::is_workspace_event_relevant(&relative.to_string_lossy()) }) @@ -294,8 +367,7 @@ impl FileWatcher { } fn setup_directory_watching(&self, path_buf: &PathBuf) -> Result<()> { - self - .watched_directories + self.watched_directories .lock() .unwrap() .insert(path_buf.clone()); @@ -320,7 +392,11 @@ impl FileWatcher { // transient adapter failure remains retryable. watched_paths.remove(&path_buf); self.watched_directories.lock().unwrap().remove(&path_buf); - + let retired = if watched_paths.is_empty() { debouncer_guard.take() } else { None }; + drop(debouncer_guard); + drop(watched_paths); + // A native callback may still need the path mutex while its worker exits. + drop(retired); Ok(()) } } @@ -355,7 +431,7 @@ mod tests { std::process::id() )); fs::create_dir_all(&path).expect("test directory should be created"); - Self(path) + Self(fs::canonicalize(path).unwrap()) } } @@ -367,6 +443,7 @@ mod tests { fn receive_reload(receiver: &Receiver, path: &PathBuf) -> FileChangeEvent { let deadline = Instant::now() + Duration::from_secs(5); + let mut observed = Vec::new(); loop { let remaining = deadline.saturating_duration_since(Instant::now()); assert!( @@ -376,13 +453,14 @@ mod tests { match receiver.recv_timeout(remaining) { Ok(event) if event.path == path.to_string_lossy() - && matches!(event.event_type, FileChangeType::Reloaded) => + && (event.event_type == FileChangeType::Reloaded + || (cfg!(target_os = "macos") && event.event_type == FileChangeType::Opened)) => { return event; } - Ok(_) => continue, + Ok(event) => { observed.push(event); continue; }, Err(RecvTimeoutError::Timeout) => { - panic!("timed out waiting for a POM reload event") + panic!("timed out waiting for a POM reload event; observed {observed:?}") } Err(RecvTimeoutError::Disconnected) => { panic!("file watcher event channel disconnected") @@ -405,7 +483,9 @@ mod tests { path.display() ); match receiver.recv_timeout(remaining) { - Ok(event) if event.path == path.to_string_lossy() && event.event_type == event_type => { + Ok(event) + if event.path == path.to_string_lossy() && event.event_type == event_type => + { return event; } Ok(_) => continue, @@ -419,6 +499,49 @@ mod tests { } } + + #[test] + fn shared_native_path_survives_one_runtime_and_closes_with_its_last_owner() { + let directory = TestDirectory::new(); + let root = std::fs::canonicalize(&directory.0).unwrap(); + let file = root.join("pom.xml"); + fs::write(&file, "before").unwrap(); + let (sender, receiver) = mpsc::channel(); + let watcher = FileWatcher::new(Arc::new(ChannelEmitter(sender))); + let a = "window\0first\0root"; + let b = "window\0second\0root"; + watcher.watch_owned(a.into(), root.to_string_lossy().into_owned(), true).unwrap(); + watcher.watch_owned(b.into(), root.join(".").to_string_lossy().into_owned(), true).unwrap(); + assert_eq!(watcher.watched_paths.lock().unwrap().len(), 1); + watcher.unwatch_owned(a).unwrap(); + fs::write(&file, "after").unwrap(); + receive_reload(&receiver, &file); + watcher.remove_window("window").unwrap(); + assert!(watcher.watched_paths.lock().unwrap().is_empty()); + assert!(watcher.owners.lock().unwrap().registrations.is_empty()); + assert!(watcher.debouncer.lock().unwrap().is_none()); + assert!(watcher.watch_owned("window\0late\0root".into(), root.to_string_lossy().into_owned(), true).is_err()); + watcher.watch_owned("new-window\0reopened\0root".into(), root.to_string_lossy().into_owned(), true).unwrap(); + watcher.remove_window("new-window").unwrap(); + } + + #[test] + fn hidden_rule_events_survive_mixed_native_batches() { + let directory = TestDirectory::new(); + let (sender, receiver) = mpsc::channel(); + let emitter = ChannelEmitter(sender); + let paths = Arc::new(Mutex::new(HashSet::from([directory.0.clone()]))); + let rules = directory.0.join("target/.gitignore"); + let source = directory.0.join("Keep.rs"); + let events = [rules.clone(), source.clone()].into_iter().map(|path| { + DebouncedEvent::new(Event::new(EventKind::Modify(ModifyKind::Any)).add_path(path), Instant::now()) + }).collect(); + let directories = Arc::new(Mutex::new(HashSet::from([directory.0.clone()]))); + FileWatcher::handle_events(events, &emitter, &paths, &directories); + let received: HashSet<_> = receiver.try_iter().map(|event| PathBuf::from(event.path)).collect(); + assert_eq!(received, HashSet::from([rules, source])); + } + #[test] fn exact_nested_pom_watch_emits_reload_without_registration_event() { let directory = TestDirectory::new(); @@ -437,7 +560,10 @@ mod tests { fs::write(&pom_path, "2") .expect("updated POM should be written"); let event = receive_reload(&receiver, &pom_path); - assert!(matches!(event.event_type, FileChangeType::Reloaded)); + // FSEvents can coalesce the fixture's creation and its first rewrite. Windows + // still requires Reloaded; both native events carry the same changed file. + assert!(event.event_type == FileChangeType::Reloaded + || (cfg!(target_os = "macos") && event.event_type == FileChangeType::Opened)); } #[test] diff --git a/windows/tauri/src-tauri/src/core.rs b/windows/tauri/src-tauri/src/core.rs index 82298342fe..7d22937a11 100644 --- a/windows/tauri/src-tauri/src/core.rs +++ b/windows/tauri/src-tauri/src/core.rs @@ -1,10 +1,14 @@ +use lithe_project::indexing_refresh::IndexingRefresh; use std::collections::{HashMap, HashSet}; -use std::sync::{Mutex, OnceLock}; +use std::sync::{Arc, Mutex, OnceLock}; +use tauri::{Emitter, Manager}; #[derive(Default)] struct WindowIndexingOwners { closed: HashSet, leases: HashMap>, + refreshes: HashMap>, + installing: HashMap, } fn indexing_owners() -> &'static Mutex { @@ -16,13 +20,137 @@ fn cancelled_indexing(id: serde_json::Value) -> String { serde_json::json!({"id":id,"ok":false,"error":{"code":"cancelled","message":"Workspace window closed"}}).to_string() } +fn canonical_indexing_root(root: &str) -> String { + let mut existing = std::path::PathBuf::from(root); + let mut missing = Vec::new(); + loop { + if let Ok(mut path) = std::fs::canonicalize(&existing) { + for part in missing.iter().rev() { + path.push(part); + } + return path.to_string_lossy().into_owned(); + } + let Some(name) = existing.file_name().map(|name| name.to_owned()) else { + return root.to_owned(); + }; + missing.push(name); + if !existing.pop() { + return root.to_owned(); + } + } +} + +fn root_refresh(root: &str) -> Option> { + indexing_owners() + .lock() + .unwrap_or_else(|error| error.into_inner()) + .refreshes + .get(root) + .cloned() +} + +fn prune_refreshes(owners: &mut WindowIndexingOwners) { + let live: HashSet<_> = owners + .leases + .values() + .flat_map(|leases| leases.keys().map(|(root, _)| root.clone())) + .collect(); + owners + .refreshes + .retain(|root, _| live.contains(root) || owners.installing.contains_key(root)); +} + +fn freshen_root( + root: &str, + state: &IndexingRefresh, + execute: &impl Fn(&str) -> String, +) -> Result { + state.ensure_fresh(|| { + let lease = indexing_owners().lock().unwrap_or_else(|error| error.into_inner()) + .leases.values().find_map(|leases| leases.iter() + .find(|((path, _), _)| path == root) + .map(|((_, owner), revision)| (owner.clone(), *revision))); + let Some((owner, revision)) = lease else { return Err(()); }; + let request = serde_json::json!({"command":"workspace.refreshIndexing", "timeoutMilliseconds":30000, + "payload":{"root":root,"ownerId":owner,"revision":revision}}); + let response = execute(&request.to_string()); + let value: serde_json::Value = serde_json::from_str(&response).map_err(|_| ())?; + if value["ok"] == true { Ok(response) } else { Err(()) } + }).map_err(|_| ()) +} + +/// Native events invalidate once before fan-out; WebViews never duplicate the native batch. +pub fn invalidate_indexing_paths(app: &tauri::AppHandle, paths: &[std::path::PathBuf], git: bool) { + let paths: Vec<_> = paths + .iter() + .map(|path| std::path::PathBuf::from(canonical_indexing_root(&path.to_string_lossy()))) + .collect(); + let entries: Vec<_> = indexing_owners() + .lock() + .unwrap_or_else(|error| error.into_inner()) + .refreshes + .iter() + .filter(|(root, _)| { + paths.iter().any(|path| { + let root = std::path::Path::new(root); + path.starts_with(root) || (git && root.starts_with(path)) + }) + }) + .map(|(root, state)| { + state.invalidate(); + (root.clone(), Arc::clone(state)) + }) + .collect(); + for (root, state) in entries { + let app = app.clone(); + tauri::async_runtime::spawn_blocking(move || { + if freshen_root(&root, &state, &lithe_core::execute_json).is_ok() + && state.take_completed() + { + let _ = app.emit("workspace-indexing-refreshed", &root); + } + }); + } +} + fn execute_for_window(owner: &str, request: &str, execute: impl Fn(&str) -> String) -> String { let Ok(mut value) = serde_json::from_str::(request) else { return execute(request); }; let configuring = value["command"] == "workspace.configureIndexing"; let releasing = value["command"] == "workspace.releaseIndexing"; - if !configuring && !releasing { + let refreshing = value["command"] == "workspace.refreshIndexing"; + if !configuring && !releasing && !refreshing { + // Only read-only index consumers can discard a superseded response. A completed + // write (for example runConfig.saveEditorChanges) must retain its success result. + let indexing_query = matches!( + value["command"].as_str(), + Some( + "workspace.snapshot" + | "workspace.search" + | "workspace.searchEverywhere" + | "workspace.searchIndex.warm" + | "workspace.replacePreview" + ) + ); + if !indexing_query { + return execute(request); + } + let state = value["payload"]["root"] + .as_str() + .map(canonical_indexing_root) + .and_then(|root| root_refresh(&root).map(|state| (root, state))); + if let Some((root, state)) = state { + if freshen_root(&root, &state, &execute).is_err() { + return cancelled_indexing(value["id"].clone()); + } + let epoch = state.epoch(); + let response = execute(request); + if state.epoch() != epoch || !state.is_clean() { + return cancelled_indexing(value["id"].clone()); + } + return response; + } return execute(request); } let (Some(runtime), Some(root)) = ( @@ -33,7 +161,8 @@ fn execute_for_window(owner: &str, request: &str, execute: impl Fn(&str) -> Stri }; // The native label is trusted; a WebView cannot acquire another window's lease. let runtime = format!("{owner}/{runtime}"); - let root = root.to_owned(); + let root = canonical_indexing_root(root); + value["payload"]["root"] = serde_json::json!(root); value["payload"]["ownerId"] = serde_json::json!(runtime); { let mut owners = indexing_owners() @@ -43,6 +172,59 @@ fn execute_for_window(owner: &str, request: &str, execute: impl Fn(&str) -> Stri return cancelled_indexing(value["id"].clone()); } owners.leases.entry(owner.to_owned()).or_default(); + if refreshing + && owners + .leases + .get(owner) + .and_then(|leases| leases.get(&(root.clone(), runtime.clone()))) + .copied() + != value["payload"]["revision"].as_u64() + { + return cancelled_indexing(value["id"].clone()); + } + } + let installation = configuring.then(|| PendingInstallation::new(&root)); + let state = root_refresh(&root); + let epoch = state.as_ref().map(|state| state.epoch()); + if let Some(state) = &state { + if refreshing { + return match state.refresh_now(|| { + let response = execute(&value.to_string()); + if serde_json::from_str::(&response) + .ok() + .is_some_and(|response| response["ok"] == true) + { + Ok(response) + } else { + Err(response) + } + }) { + Ok(response) => { + let owners = indexing_owners().lock().unwrap_or_else(|e| e.into_inner()); + if owners.closed.contains(owner) + || owners + .leases + .get(owner) + .and_then(|leases| leases.get(&(root.clone(), runtime.clone()))) + .copied() + != value["payload"]["revision"].as_u64() + { + return cancelled_indexing(value["id"].clone()); + } + // A concurrent holder may have performed the shared refresh. Status is + // root-wide; the response envelope and release token belong to this caller. + let mut result: serde_json::Value = serde_json::from_str(&response).unwrap(); + result["id"] = value["id"].clone(); + result["data"]["revision"] = value["payload"]["revision"].clone(); + result.to_string() + } + Err(lithe_project::indexing_refresh::RefreshError::Failed(response)) => response, + Err(_) => cancelled_indexing(value["id"].clone()), + }; + } + if !releasing && !configuring && freshen_root(&root, &state, &execute).is_err() { + return cancelled_indexing(value["id"].clone()); + } } let response = execute(&value.to_string()); let Ok(result) = serde_json::from_str::(&response) else { @@ -68,10 +250,17 @@ fn execute_for_window(owner: &str, request: &str, execute: impl Fn(&str) -> Stri let leases = owners.leases.entry(owner.to_owned()).or_default(); let key = (root.clone(), runtime.clone()); if configuring { + if let Some(state) = &state { + state.discard_status(); + } leases.insert(key, revision); } else if leases.get(&key) == Some(&revision) { leases.remove(&key); } + if configuring { + owners.refreshes.entry(root.clone()).or_default(); + } + prune_refreshes(&mut owners); } closed }; @@ -81,9 +270,69 @@ fn execute_for_window(owner: &str, request: &str, execute: impl Fn(&str) -> Stri execute(&serde_json::json!({"command":"workspace.releaseIndexing","payload":{"root":root,"ownerId":runtime,"revision":revision}}).to_string()); return cancelled_indexing(value["id"].clone()); } + if configuring { + let state = state.expect("configuration reserves its root"); + let mut response = response; + let mut observed = epoch.unwrap(); + for _ in 0..3 { + if state.epoch() == observed && state.is_clean() { + return response; + } + if freshen_root(&root, &state, &execute).is_err() { + break; + } + observed = state.epoch(); + // Read the requested directory reasons again, using the same published lease. + value["payload"]["refresh"] = serde_json::json!(false); + response = execute(&value.to_string()); + if !serde_json::from_str::(&response) + .ok() + .is_some_and(|result| { + result["ok"] == true && result["data"]["revision"] == revision + }) + { + break; + } + } + // No token is returned on failure: reclaim this installation ourselves. + execute(&serde_json::json!({"command":"workspace.releaseIndexing","payload":{"root":root,"ownerId":runtime,"revision":revision}}).to_string()); + let mut owners = indexing_owners().lock().unwrap_or_else(|e| e.into_inner()); + if let Some(leases) = owners.leases.get_mut(owner) { + let key = (root.clone(), runtime); + if leases.get(&key) == Some(&revision) { + leases.remove(&key); + } + } + drop(owners); + drop(installation); + return cancelled_indexing(value["id"].clone()); + } response } +/// A configuration in flight also owns its invalidation record, before it has a Core token. +struct PendingInstallation(String); +impl PendingInstallation { + fn new(root: &str) -> Self { + let mut owners = indexing_owners().lock().unwrap_or_else(|e| e.into_inner()); + *owners.installing.entry(root.to_owned()).or_default() += 1; + owners.refreshes.entry(root.to_owned()).or_default(); + Self(root.to_owned()) + } +} +impl Drop for PendingInstallation { + fn drop(&mut self) { + let mut owners = indexing_owners().lock().unwrap_or_else(|e| e.into_inner()); + if let Some(count) = owners.installing.get_mut(&self.0) { + *count -= 1; + if *count == 0 { + owners.installing.remove(&self.0); + } + } + prune_refreshes(&mut owners); + } +} + /// Native destruction is the fallback when a WebView cannot run workspace teardown. pub fn close_window_indexing(owner: &str) { let leases = { @@ -91,7 +340,9 @@ pub fn close_window_indexing(owner: &str) { .lock() .unwrap_or_else(|error| error.into_inner()); owners.closed.insert(owner.to_owned()); - owners.leases.remove(owner).unwrap_or_default() + let leases = owners.leases.remove(owner).unwrap_or_default(); + prune_refreshes(&mut owners); + leases }; tauri::async_runtime::spawn_blocking(move || { for ((root, owner_id), revision) in leases { @@ -108,8 +359,34 @@ pub fn close_window_indexing(owner: &str) { #[tauri::command] pub async fn core_execute(window: tauri::WebviewWindow, request: String) -> String { let owner = window.label().to_owned(); + let app = window.app_handle().clone(); tauri::async_runtime::spawn_blocking(move || { - execute_for_window(&owner, &request, lithe_core::execute_json) + let parsed = serde_json::from_str::(&request).ok(); + let previous = parsed.as_ref().and_then(|value| { + let root = canonical_indexing_root(value["payload"]["root"].as_str()?); + let runtime = format!("{owner}/{}", value["payload"]["ownerId"].as_str()?); + indexing_owners() + .lock() + .unwrap_or_else(|e| e.into_inner()) + .leases + .get(&owner)? + .get(&(root, runtime)) + .copied() + }); + let response = execute_for_window(&owner, &request, lithe_core::execute_json); + if let (Ok(request), Ok(result)) = ( + serde_json::from_str::(&request), + serde_json::from_str::(&response), + ) { + if result["ok"] == true + && (request["command"] == "workspace.refreshIndexing" + || (request["command"] == "workspace.configureIndexing" + && result["data"]["revision"].as_u64() != previous)) + { + let _ = app.emit("workspace-indexing-refreshed", &request["payload"]["root"]); + } + } + response }) .await .unwrap_or_else(|error| { @@ -215,4 +492,72 @@ mod indexing_tests { ); owners.leases.remove(owner); } + + #[test] + fn events_during_first_configuration_refresh_before_returning_without_new_tokens() { + let owner = "first-configuration-event"; + let root = "C:/first-configuration-event"; + let calls = RefCell::new(Vec::new()); + let response = execute_for_window(owner, &json!({"id":"configure", "command":"workspace.configureIndexing", "payload":{"root":root,"ownerId":"runtime"}}).to_string(), |request| { + let request: Value = serde_json::from_str(request).unwrap(); + let command = request["command"].as_str().unwrap().to_owned(); + calls.borrow_mut().push(command.clone()); + if calls.borrow().len() == 1 { root_refresh(root).unwrap().invalidate(); } + json!({"ok":true,"data":{"revision":7,"excludedDirectories":{"archive":"git"},"gitIgnoreFailed":false}}).to_string() + }); + assert_eq!( + serde_json::from_str::(&response).unwrap()["data"]["revision"], + 7 + ); + assert_eq!( + *calls.borrow(), + [ + "workspace.configureIndexing", + "workspace.refreshIndexing", + "workspace.configureIndexing" + ] + ); + execute_for_window(owner, &json!({"command":"workspace.releaseIndexing","payload":{"root":root,"ownerId":"runtime","revision":7}}).to_string(), |_| json!({"ok":true,"data":{"released":true}}).to_string()); + assert!(root_refresh(root).is_none()); + } + + #[test] + fn query_cannot_publish_a_result_superseded_by_an_event() { + let owner = "query-event"; + let root = "C:/query-event"; + execute_for_window(owner, &json!({"command":"workspace.configureIndexing","payload":{"root":root,"ownerId":"runtime"}}).to_string(), |_| json!({"ok":true,"data":{"revision":4}}).to_string()); + let result = execute_for_window( + owner, + &json!({"id":"query","command":"workspace.snapshot","payload":{"root":root}}) + .to_string(), + |_| { + root_refresh(root).unwrap().invalidate(); + json!({"ok":true,"data":{"files":["stale"]}}).to_string() + }, + ); + assert_eq!( + serde_json::from_str::(&result).unwrap()["error"]["code"], + "cancelled" + ); + execute_for_window(owner, &json!({"command":"workspace.releaseIndexing","payload":{"root":root,"ownerId":"runtime","revision":4}}).to_string(), |_| json!({"ok":true,"data":{"released":true}}).to_string()); + } + + #[test] + fn completed_write_keeps_success_when_a_watcher_invalidates_its_root() { + let owner = "write-event"; + let root = "C:/write-event"; + execute_for_window(owner, &json!({"command":"workspace.configureIndexing","payload":{"root":root,"ownerId":"runtime"}}).to_string(), |_| json!({"ok":true,"data":{"revision":5}}).to_string()); + let expected = json!({"id":"write","ok":true,"data":{"saved":true}}).to_string(); + let response = execute_for_window( + owner, + &json!({"id":"write","command":"runConfig.saveEditorChanges","payload":{"root":root}}) + .to_string(), + |_| { + root_refresh(root).unwrap().invalidate(); + expected.clone() + }, + ); + assert_eq!(response, expected); + execute_for_window(owner, &json!({"command":"workspace.releaseIndexing","payload":{"root":root,"ownerId":"runtime","revision":5}}).to_string(), |_| json!({"ok":true,"data":{"released":true}}).to_string()); + } } diff --git a/windows/tauri/src-tauri/src/file_events.rs b/windows/tauri/src-tauri/src/file_events.rs index dbac6d216a..c78eeda3f0 100644 --- a/windows/tauri/src-tauri/src/file_events.rs +++ b/windows/tauri/src-tauri/src/file_events.rs @@ -14,12 +14,33 @@ impl TauriFileChangeEmitter { impl FileChangeEmitter for TauriFileChangeEmitter { fn emit_file_change(&self, event: &FileChangeEvent) { - let _ = self.app_handle.emit("file-changed", event); + self.emit_file_changes(std::slice::from_ref(event)); + } + + fn emit_file_changes(&self, events: &[FileChangeEvent]) { + let paths = events + .iter() + .filter(|event| { + matches!( + event.event_type, + lithe_project::FileChangeType::Rescan | lithe_project::FileChangeType::Deleted + ) || std::path::Path::new(&event.path) + .file_name() + .is_some_and(|name| name == ".gitignore" || name == ".git") + }) + .map(|event| std::path::PathBuf::from(&event.path)) + .collect::>(); + // Retire once for the entire native batch, before any WebView observes it. + crate::core::invalidate_indexing_paths(&self.app_handle, &paths, true); + for event in events { + let _ = self.app_handle.emit("file-changed", event); + } } } impl GitMetadataEmitter for TauriFileChangeEmitter { fn emit_git_metadata_change(&self, event: &GitMetadataChange) { + crate::core::invalidate_indexing_paths(&self.app_handle, &event.repository_roots, true); if let Err(error) = self.app_handle.emit("git-metadata-changed", event) { eprintln!("Could not publish Git metadata change: {error}"); } diff --git a/windows/tauri/src-tauri/src/main.rs b/windows/tauri/src-tauri/src/main.rs index 7eb8eb7eb3..24cc1579bb 100644 --- a/windows/tauri/src-tauri/src/main.rs +++ b/windows/tauri/src-tauri/src/main.rs @@ -36,9 +36,9 @@ mod window_background; mod window_title; use file_events::TauriFileChangeEmitter; +use lithe_project::FileWatcher; use lithe_project::document_watcher::DocumentWatcher; use lithe_project::git_watcher::GitMetadataWatcher; -use lithe_project::FileWatcher; use lithe_terminal::TerminalManager; use std::sync::Arc; use tauri::Manager; @@ -179,9 +179,22 @@ fn main() { } } if let Some(watcher) = window.try_state::>() { - if let Err(error) = watcher.remove(window.label(), None) { - eprintln!("Could not release Git metadata watches: {error}"); - } + let watcher = Arc::clone(&watcher); + let owner = window.label().to_owned(); + tauri::async_runtime::spawn_blocking(move || { + if let Err(error) = watcher.remove_window(&owner) { + eprintln!("Could not release Git metadata watches: {error}"); + } + }); + } + if let Some(watcher) = window.try_state::>() { + let watcher = Arc::clone(&watcher); + let owner = window.label().to_owned(); + tauri::async_runtime::spawn_blocking(move || { + if let Err(error) = watcher.remove_window(&owner) { + eprintln!("Could not release file watches: {error}"); + } + }); } } }) diff --git a/windows/tauri/src-tauri/src/watcher.rs b/windows/tauri/src-tauri/src/watcher.rs index 9507616251..77285f1a03 100644 --- a/windows/tauri/src-tauri/src/watcher.rs +++ b/windows/tauri/src-tauri/src/watcher.rs @@ -1,84 +1,135 @@ -use lithe_project::git_watcher::{GitMetadataWatcher, GitWatchContext}; use lithe_project::FileWatcher; -use serde_json::{json, Value}; +use lithe_project::git_watcher::{GitMetadataWatcher, GitWatchContext}; +use serde_json::{Value, json}; use std::sync::Arc; use tauri::State; +fn registration(window: &str, runtime: &str, watch: &str) -> Result { + if runtime.is_empty() || watch.is_empty() || runtime.contains('\0') || watch.contains('\0') { + return Err("Invalid watch identity".into()); + } + Ok(format!("{window}\0{runtime}\0{watch}")) +} + #[tauri::command] pub async fn watch_git_repository( repo_path: String, + runtime_id: String, watch_id: String, window: tauri::WebviewWindow, watcher: State<'_, Arc>, ) -> Result<(), String> { - let owner = window.label().to_string(); + let owner = registration(window.label(), &runtime_id, &watch_id)?; + let watcher = Arc::clone(&watcher); + // Reserve before yielding, so unwatch can revoke an in-flight discovery. watcher .begin(&owner, &watch_id) .map_err(|error| error.to_string())?; - let request = json!({ "id": watch_id, "command": "git.watchContext", "timeoutMilliseconds": 30_000, "payload": { "root": repo_path } }).to_string(); - let response = tauri::async_runtime::spawn_blocking(move || lithe_core::execute_json(&request)) - .await - .map_err(|error| error.to_string())?; - let response: Value = serde_json::from_str(&response).map_err(|error| error.to_string())?; - if response.get("ok").and_then(Value::as_bool) != Some(true) { - return Err(response["error"]["message"] - .as_str() - .unwrap_or("Could not resolve Git metadata") - .to_string()); - } - if !response["data"].is_null() { - let context: GitWatchContext = - serde_json::from_value(response["data"].clone()).map_err(|error| error.to_string())?; - watcher - .install(&owner, &watch_id, context) - .map_err(|error| error.to_string())?; - } else { - watcher - .remove(&owner, Some(&watch_id)) - .map_err(|error| error.to_string())?; - } - Ok(()) + crate::blocking::run_blocking(move || { + let result = (|| { + let request = json!({ "id": watch_id, "command": "git.watchContext", + "timeoutMilliseconds": 30_000, "payload": { "root": repo_path } }); + let response: Value = + serde_json::from_str(&lithe_core::execute_json(&request.to_string())) + .map_err(|error| error.to_string())?; + if response["ok"] != true { + return Err(response["error"].to_string()); + } + if response["data"].is_null() { + watcher + .remove(&owner, Some(&watch_id)) + .map_err(|error| error.to_string()) + } else { + let mut context: GitWatchContext = serde_json::from_value(response["data"].clone()) + .map_err(|error| error.to_string())?; + // Git rules in ancestors of an opened repository subdirectory still apply. + if let Ok(mut directory) = std::fs::canonicalize(&repo_path) { + while directory.starts_with(&context.repository_root) { + context.rule_directories.push(directory.clone()); + if !directory.pop() { + break; + } + } + } + watcher + .install(&owner, &watch_id, context) + .map_err(|error| error.to_string()) + } + })(); + if result.is_err() { + let _ = watcher.remove(&owner, Some(&watch_id)); + } + result + }) + .await } #[tauri::command] -pub fn unwatch_git_repository( +pub async fn unwatch_git_repository( + runtime_id: String, watch_id: String, window: tauri::WebviewWindow, watcher: State<'_, Arc>, ) -> Result<(), String> { - watcher - .remove(window.label(), Some(&watch_id)) - .map_err(|error| error.to_string()) + let owner = registration(window.label(), &runtime_id, &watch_id)?; + let watcher = Arc::clone(&watcher); + crate::blocking::run_blocking(move || { + watcher + .remove(&owner, Some(&watch_id)) + .map_err(|error| error.to_string()) + }) + .await } #[tauri::command] pub async fn start_watching( path: String, + runtime_id: String, + watch_id: String, + window: tauri::WebviewWindow, file_watcher: State<'_, Arc>, ) -> Result<(), String> { - file_watcher - .watch_path(path) - .await - .map_err(|error| error.to_string()) + let owner = registration(window.label(), &runtime_id, &watch_id)?; + let watcher = Arc::clone(&file_watcher); + crate::blocking::run_blocking(move || { + watcher + .watch_owned(owner, path, false) + .map_err(|error| error.to_string()) + }) + .await } #[tauri::command] -pub fn stop_watching( - path: String, +pub async fn stop_watching( + runtime_id: String, + watch_id: String, + window: tauri::WebviewWindow, file_watcher: State<'_, Arc>, ) -> Result<(), String> { - file_watcher - .stop_watching(path) - .map_err(|error| error.to_string()) + let owner = registration(window.label(), &runtime_id, &watch_id)?; + let watcher = Arc::clone(&file_watcher); + crate::blocking::run_blocking(move || { + watcher + .unwatch_owned(&owner) + .map_err(|error| error.to_string()) + }) + .await } #[tauri::command] pub async fn set_project_root( path: String, + runtime_id: String, + watch_id: String, + window: tauri::WebviewWindow, file_watcher: State<'_, Arc>, ) -> Result<(), String> { - file_watcher - .watch_project_root(path) - .await - .map_err(|error| error.to_string()) + let owner = registration(window.label(), &runtime_id, &watch_id)?; + let watcher = Arc::clone(&file_watcher); + crate::blocking::run_blocking(move || { + watcher + .watch_owned(owner, path, true) + .map_err(|error| error.to_string()) + }) + .await } diff --git a/windows/tauri/src/features/editor/hooks/use-lsp-integration-indexing.test.tsx b/windows/tauri/src/features/editor/hooks/use-lsp-integration-indexing.test.tsx index d25cb2520c..e52ceb9bbc 100644 --- a/windows/tauri/src/features/editor/hooks/use-lsp-integration-indexing.test.tsx +++ b/windows/tauri/src/features/editor/hooks/use-lsp-integration-indexing.test.tsx @@ -10,6 +10,7 @@ import { useFileSystemStore } from "@/features/file-system/stores/file-system.st import { workspaceRuntimeRegistry } from "@/features/workspace/runtime/workspace-runtime-registry"; import * as adapter from "@/platform/lsp-core-adapter"; import { installHappyDom } from "@/test-utils/happy-dom"; +import { flushLspDocumentChanges, queueLspDocumentChanges, takeLspDocumentChanges } from "@/features/editor/lsp/pending-document-changes"; import { useLspIntegration } from "./use-lsp-integration"; test("adding and removing a nested root reevaluates an open document's LSP policy", async () => { @@ -113,3 +114,61 @@ test("adding and removing a nested root reevaluates an open document's LSP polic } } }); + + +test.each([false, true])("native refresh restores mounted ownership through opening edits, synchronization failure=%s", async (failFirstSync) => { + const restoreDom = installHappyDom(); + const environment = globalThis as typeof globalThis & {IS_REACT_ACT_ENVIRONMENT?: boolean}; + const previousAct = environment.IS_REACT_ACT_ENVIRONMENT; + const previousWorkspace = workspaceRuntimeRegistry.getActiveWorkspaceId(); + const workspaceId = "native-indexing-owner"; const filePath = "C:/native/src/Main.java"; + workspaceRuntimeRegistry.activateWorkspace({id: workspaceId, name: workspaceId}, "ready"); + useFileSystemStore.getStore(workspaceId).setState({rootFolderPath: "C:/native", workspaceFolders: []}); + const buffers = useBufferStore.getStore(workspaceId); + const buffer = createPaneContent("native-source", {type: "editor", name: "Main.java", path: filePath, content: "before"}); + if (buffer.type !== "editor") throw new Error("Expected source editor fixture"); + buffers.setState({buffers: [buffer]}); + const scheduled = new Set<() => void>(); + const defer = spyOn(deferred, "deferUntilAfterNextPaint").mockImplementation((work) => { scheduled.add(work); return () => { scheduled.delete(work); }; }); + const configure = spyOn(indexing, "configureWorkspaceIndexing").mockResolvedValue({revision: 1, excludedDirectories: {src: "git"}, gitIgnoreFailed: false}); + const snapshot = spyOn(adapter, "getLspSessionSnapshot").mockReturnValue(null); + let didBeginOpening = false; + let finish!: () => void; const opening = new Promise((resolve) => { finish = resolve; }); + const synchronized: string[] = []; + const client = Object.create(LspClient.prototype) as LspClient; + Object.assign(client, {fileAttachmentIds: new Map(), fileStartTasks: new Map(), + startFileAttachment: async () => ({kind: "attached", attachmentId: "native-owner"}), + notifyDocumentOpen: async () => { didBeginOpening = true; await opening; }, + notifyDocumentClose: async () => {}, stopForFile: async () => {}, + synchronizeDocument: async (_path: string, content: string) => { + synchronized.push(content); + if (failFirstSync && synchronized.length === 1) throw new Error("temporary sync failure"); + }, + }); + const instance = spyOn(LspClient, "getInstance").mockReturnValue(client); + const host = document.createElement("div"); const renderer = createRoot(host); + function Probe() { useLspIntegration({filePath}); return null; } + const flush = () => act(async () => { const work = [...scheduled]; scheduled.clear(); for (const start of work) start(); }); + try { + environment.IS_REACT_ACT_ENVIRONMENT = true; + await act(async () => renderer.render()); await flush(); + expect(synchronized).toEqual([]); + configure.mockResolvedValue({revision: 1, excludedDirectories: {}, gitIgnoreFailed: false}); + await act(async () => window.dispatchEvent(new window.CustomEvent(indexing.indexingRefreshedEvent, {detail: "C:/native"}))); + await flush(); expect(didBeginOpening).toBe(true); + buffers.setState({buffers: [{...buffer, content: "edited-during-open"}]}); + finish(); await act(async () => { await opening; }); + expect(synchronized).toContain("edited-during-open"); + buffers.setState({buffers: [{...buffer, content: "edited-after-open"}]}); + queueLspDocumentChanges(filePath, [{rangeOffset: 0, rangeLength: "edited-during-open".length, text: "edited-after-open"}]); + await flushLspDocumentChanges(filePath); + expect(synchronized[synchronized.length - 1]).toBe("edited-after-open"); + } finally { + finish(); buffers.setState({buffers: []}); await act(async () => renderer.unmount()); + scheduled.clear(); takeLspDocumentChanges(filePath); + defer.mockRestore(); configure.mockRestore(); snapshot.mockRestore(); instance.mockRestore(); + workspaceRuntimeRegistry.removeWorkspace(workspaceId); + workspaceRuntimeRegistry.activateWorkspace({id: previousWorkspace, name: "restored"}); + environment.IS_REACT_ACT_ENVIRONMENT = previousAct; restoreDom(); + } +}, 2000); diff --git a/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts b/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts index d0749ba19e..e5097f1dd6 100644 --- a/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts +++ b/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts @@ -1,4 +1,6 @@ import { getNativeWorkspaceRootPaths } from "@/features/file-search/utils/file-search-paths"; +import { registerMountedLspDocument } from "@/features/editor/lsp/mounted-lsp-documents"; +import { workspaceRuntimeRegistry } from "@/features/workspace/runtime/workspace-runtime-registry"; import { useIndexingVersion } from "@/features/file-explorer/stores/workspace-indexing"; import { useEffect, useMemo, useRef } from "react"; import { useExtensionStore } from "@/extensions/registry/extension-store"; @@ -52,8 +54,9 @@ interface LspDocumentOwner { const DOCUMENT_CHANGE_DEBOUNCE_MS = 75; -function documentTextForPath(filePath: string): string { - return getSourceEditorBufferByPath(useBufferStore.getState().buffers, filePath)?.content ?? ""; +function documentTextForPath(filePath: string, workspaceId: string): string { + if (!workspaceRuntimeRegistry.hasWorkspace(workspaceId)) return ""; + return getSourceEditorBufferByPath(useBufferStore.getStore(workspaceId).getState().buffers, filePath)?.content ?? ""; } function isTerminalOwnerState(state: LspDocumentOwnerState): boolean { @@ -91,6 +94,12 @@ export const useLspIntegration = ({ const lastSyncedRevisionRef = useRef(contentRevision); const documentOwnersRef = useRef>(new Map()); + const runtime = workspaceRuntimeRegistry.getWorkspace(workspaceId); + useEffect(() => { + if (!enabled || !filePath || !isLspSupported || !runtime) return; + return registerMountedLspDocument(runtime, filePath); + }, [enabled, filePath, isLspSupported, runtime]); + useEffect(() => { if (!enabled || !filePath || !isLspSupported) return; @@ -125,8 +134,8 @@ export const useLspIntegration = ({ documentOwnersRef.current.set(filePath, owner); const cleanupDocument = () => { - const isStillOpen = Boolean( - getSourceEditorBufferByPath(useBufferStore.getState().buffers, filePath), + const isStillOpen = workspaceRuntimeRegistry.getWorkspace(workspaceId) === runtime && Boolean( + getSourceEditorBufferByPath(useBufferStore.getStore(workspaceId).getState().buffers, filePath), ); if (isStillOpen && indexingKeyRef.current === indexingKey) return; @@ -188,7 +197,7 @@ export const useLspIntegration = ({ } owner.state = { phase: "attached", attachmentId }; - const text = documentTextForPath(filePath); + const text = documentTextForPath(filePath, workspaceId); await lspClient.notifyDocumentOpen(filePath, text, attachmentId); if (documentOwnersRef.current.get(filePath) !== owner || owner.state.phase !== "attached") { await lspClient.notifyDocumentClose(filePath, attachmentId); @@ -196,6 +205,15 @@ export const useLspIntegration = ({ return; } owner.state = { phase: "open", attachmentId }; + const latestText = documentTextForPath(filePath, workspaceId); + if (latestText !== text) { + try { + await lspClient.synchronizeDocument(filePath, latestText); + } catch (error) { + // didOpen succeeded: retain its owner so later edits can retry and cleanup can close it. + logger.error("LspIntegration", `LSP document change failed for ${filePath}`, error); + } + } logger.debug("LspIntegration", `LSP started and document opened for ${filePath}`); } catch (error) { if (owner.state.phase !== "stopping" && owner.state.phase !== "stopped") { @@ -215,7 +233,7 @@ export const useLspIntegration = ({ cancelInitialization(); cleanupDocument(); }; - }, [enabled, filePath, isLspSupported, lspClient, rootFolderPath, workspaceId, indexingKey]); + }, [enabled, filePath, isLspSupported, lspClient, rootFolderPath, workspaceId, indexingKey, runtime]); useEffect(() => { if (!enabled || !filePath || !isLspSupported) return; @@ -232,11 +250,11 @@ export const useLspIntegration = ({ if (preferIncremental && contentChanges.length > 0) { await lspClient.synchronizeDocument( filePath, - documentTextForPath(filePath), + documentTextForPath(filePath, workspaceId), contentChanges, ); } else { - await lspClient.synchronizeDocument(filePath, documentTextForPath(filePath)); + await lspClient.synchronizeDocument(filePath, documentTextForPath(filePath, workspaceId)); } if (owner.state.phase === "open") { lastSyncedRevisionRef.current = contentRevision; diff --git a/windows/tauri/src/features/editor/lsp/lsp-client-indexing.test.ts b/windows/tauri/src/features/editor/lsp/lsp-client-indexing.test.ts index 70e38dbdab..4892db6675 100644 --- a/windows/tauri/src/features/editor/lsp/lsp-client-indexing.test.ts +++ b/windows/tauri/src/features/editor/lsp/lsp-client-indexing.test.ts @@ -3,6 +3,9 @@ import * as indexing from "@/features/file-explorer/stores/workspace-indexing"; import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; import { workspaceRuntimeRegistry } from "@/features/workspace/runtime/workspace-runtime-registry"; import * as adapter from "@/platform/lsp-core-adapter"; +import { createPaneContent } from "@/features/editor/stores/buffer-content-factory"; +import { useBufferStore } from "@/features/editor/stores/buffer.store"; +import { registerMountedLspDocument } from "./mounted-lsp-documents"; import { LspClient } from "./lsp-client"; test.each([ @@ -70,3 +73,107 @@ test.each([ workspaceRuntimeRegistry.removeWorkspace(workspaceId); } }); + + +test.each([false, true])("background buffers restore LSP even when initial exclusion prevented startup: %s", async (serverRunning) => { + const id = "background-lsp-indexing"; + const runtime = workspaceRuntimeRegistry.ensureWorkspace({id, name: id}, "ready"); + const files = useFileSystemStore.getStore(id); + files.setState({rootFolderPath: "C:/background", workspaceFolders: []}); + const buffers = useBufferStore.getStore(id); + const file = "C:/background/src/Main.java"; + buffers.setState({buffers: [createPaneContent("source", {type: "editor", path: file, name: "Main.java", content: "class Main {}"})]}); + const events: string[] = []; + const attachments = new Map([[file.toLowerCase(), "existing"]]); + const client = Object.create(LspClient.prototype) as LspClient; + Object.assign(client, {indexingRefreshTasks: new Map(), indexingRefreshVersions: new Map(), + documentOpenTasks: new Map(), documentChangeTasks: new Map(), fileAttachmentIds: attachments, + isWorkspaceActive: () => serverRunning, + startForFile: async () => { events.push("attach"); return {kind: "attached", attachmentId: "existing"}; }, + notifyDocumentClose: async () => { events.push("close"); }, + notifyDocumentOpen: async () => { events.push("open"); }, + stopForFile: async () => { events.push("stop"); }, + }); + const configure = spyOn(indexing, "configureWorkspaceIndexing").mockResolvedValue({revision: 1, excludedDirectories: {src: "git"}, gitIgnoreFailed: false}); + try { + const unmount = registerMountedLspDocument(runtime, file); + try { await client.refreshIndexingDocuments("C:/background"); expect(events).toEqual([]); } + finally { unmount(); } + await client.refreshIndexingDocuments("C:/background"); + expect(events).toEqual(["close"]); + configure.mockResolvedValue({revision: 1, excludedDirectories: {}, gitIgnoreFailed: false}); + await client.refreshIndexingDocuments("C:/background"); + expect(events).toEqual(["close", "close", "attach", "open"]); + configure.mockImplementation(async () => { + buffers.setState({buffers: []}); + return {revision: 1, excludedDirectories: {}, gitIgnoreFailed: false}; + }); + await client.refreshIndexingDocuments("C:/background"); + expect(events).toEqual(["close", "close", "attach", "open"]); + expect(attachments.get(file.toLowerCase())).toBe("existing"); + } finally { + configure.mockRestore(); await runtime.disposeIndexing?.(); workspaceRuntimeRegistry.removeWorkspace(id); + } +}); + +test("unsupported buffers and a failed provider do not block later background documents", async () => { + const id = "background-provider-isolation"; + const runtime = workspaceRuntimeRegistry.ensureWorkspace({id, name: id}, "ready"); + useFileSystemStore.getStore(id).setState({rootFolderPath: "C:/background", workspaceFolders: []}); + const buffers = useBufferStore.getStore(id); + buffers.setState({buffers: ["README.txt", "Broken.java", "Main.java"].map((name) => + createPaneContent(name, {type: "editor", path: `C:/background/${name}`, name, content: name}), + )}); + const opened: string[] = []; + const client = Object.create(LspClient.prototype) as LspClient; + Object.assign(client, { + indexingRefreshTasks: new Map(), indexingRefreshVersions: new Map(), + documentOpenTasks: new Map(), documentChangeTasks: new Map(), fileAttachmentIds: new Map(), + startForFile: async (path: string) => { + if (path.endsWith("Broken.java")) throw new Error("provider unavailable"); + return {kind: "attached", attachmentId: "ready"}; + }, + notifyDocumentOpen: async (path: string) => { opened.push(path); }, + stopForFile: async () => {}, + }); + const configure = spyOn(indexing, "configureWorkspaceIndexing").mockResolvedValue({revision: 1, excludedDirectories: {}, gitIgnoreFailed: false}); + try { + await client.refreshIndexingDocuments("C:/background"); + expect(configure).toHaveBeenCalledTimes(2); + expect(opened).toEqual(["C:/background/Main.java"]); + } finally { + configure.mockRestore(); await runtime.disposeIndexing?.(); workspaceRuntimeRegistry.removeWorkspace(id); + } +}, 1000); + +test("reopening waits for close and a second opener synchronizes its newer text", async () => { + const file = "C:/work/Main.java"; + const key = file.toLowerCase(); + const client = Object.create(LspClient.prototype) as LspClient; + const documents = new Map([[key, {phase: "open", attachmentId: "owner", content: "old", version: 1}]]); + Object.assign(client, {documents, fileAttachmentIds: new Map([[key, "owner"]]), + documentOpenTasks: new Map(), documentCloseTasks: new Map(), documentChangeTasks: new Map()}); + let finishClose!: () => void; + const closing = new Promise((resolve) => { finishClose = resolve; }); + let finishOpen!: () => void; + const opening = new Promise((resolve) => { finishOpen = resolve; }); + const events: string[] = []; + const invoke = spyOn(adapter, "invokeLsp").mockImplementation(async (command, args) => { + events.push(`${command}:${args?.content ?? ""}`); + if (command === "lsp_document_close") await closing; + if (command === "lsp_document_open") await opening; + return undefined as never; + }); + const close = client.notifyDocumentClose(file, "owner"); + const first = client.notifyDocumentOpen(file, "before", "owner"); + const second = client.notifyDocumentOpen(file, "newer", "owner"); + try { + expect(events).toEqual(["lsp_document_close:"]); + finishClose(); await close; + finishOpen(); await Promise.all([first, second]); + expect(events).toEqual(["lsp_document_close:", "lsp_document_open:before", "lsp_document_change:newer"]); + expect(documents.get(key)?.content).toBe("newer"); + } finally { + finishClose(); finishOpen(); await Promise.allSettled([close, first, second]); invoke.mockRestore(); + } +}, 1000); diff --git a/windows/tauri/src/features/editor/lsp/lsp-client.ts b/windows/tauri/src/features/editor/lsp/lsp-client.ts index 5fd4032ff3..48b5c5387b 100644 --- a/windows/tauri/src/features/editor/lsp/lsp-client.ts +++ b/windows/tauri/src/features/editor/lsp/lsp-client.ts @@ -1,3 +1,4 @@ +import { hasMountedLspDocument } from "./mounted-lsp-documents"; import { canUseNativeFileSearch } from "@/features/file-search/utils/file-search-paths"; import { configureWorkspaceIndexing } from "@/features/file-explorer/stores/workspace-indexing"; import { getNativeWorkspaceRootPaths } from "@/features/file-search/utils/file-search-paths"; @@ -45,10 +46,11 @@ import { flushLspDocumentChanges } from "./pending-document-changes"; import type { EditorTextChange } from "../types/editor.types"; import { replayEditorTextChanges } from "../utils/editor-text-change"; import { logger } from "../utils/logger"; -import { getRelativePath, joinPath, normalizePath, pathStartsWithRoot } from "@/utils/path-helpers"; +import { getPathIdentity, getRelativePath, joinPath, normalizePath, pathStartsWithRoot } from "@/utils/path-helpers"; import { getLanguageDisplayName } from "../utils/language-id"; import { isBuiltInLspPath, + isEditorLspSupported, JAVA_LANGUAGE_ID, languageIdForEditorFile, } from "./built-in-language-support"; @@ -251,8 +253,11 @@ export class LspClient { private fileStartTasks = new Map(); private workspaceStartTasks = new Map(); private documentOpenTasks = new Map(); + private documentCloseTasks = new Map>(); private documentChangeTasks = new Map>(); private documents = new Map(); + private indexingRefreshTasks = new Map>(); + private indexingRefreshVersions = new Map(); /** * Unopened workspace files that currently carry diagnostics, keyed by * tracked-file key so lookups match the rest of the client, with the exact @@ -265,6 +270,9 @@ export class LspClient { this.setupDiagnosticsListener(); this.setupCrashListener(); this.setupLanguageLifecycleListener(); + void listen("workspace-indexing-refreshed", ({payload}) => { + void this.refreshIndexingDocuments(payload).catch((error) => logger.error("LSPClient", "Could not refresh indexed documents:", error)); + }).catch((error) => logger.error("LSPClient", "Could not observe indexing refreshes:", error)); } /** @@ -891,6 +899,69 @@ export class LspClient { }); } + /** Reconcile existing sessions even when their source editors are not mounted. */ + async refreshIndexingDocuments(root: string): Promise { + const identity = getPathIdentity(root); + const version = {}; + this.indexingRefreshVersions.set(identity, version); + const task = (this.indexingRefreshTasks.get(identity) ?? Promise.resolve()).catch(() => {}).then(async () => { + for (const runtime of workspaceRuntimeRegistry.getWorkspaces()) { + const workspaceId = runtime.descriptor.id; + if (!runtime.stores.has("editor-buffer") || !runtime.stores.has("file-system")) continue; + const files = useFileSystemStore.getStore(workspaceId); + const buffers = useBufferStore.getStore(workspaceId); + const scopeRoot = files.getState().rootFolderPath; + // An initially excluded buffer may be the only source file, so no server exists yet. + if (!scopeRoot) continue; + for (const buffer of buffers.getState().buffers.filter(shouldStartLsp)) { + if (!isEditorLspSupported(buffer.path)) continue; + try { + const current = () => this.indexingRefreshVersions.get(identity) === version + && workspaceRuntimeRegistry.getWorkspace(workspaceId) === runtime + && !hasMountedLspDocument(runtime, buffer.path) + && files.getState().rootFolderPath === scopeRoot + && buffers.getState().buffers.some((item) => item.id === buffer.id && shouldStartLsp(item) && item.path === buffer.path) + && getPathIdentity(closestWorkspaceRoot(buffer.path, + getNativeWorkspaceRootPaths(files.getState().rootFolderPath, files.getState().workspaceFolders)) ?? "") === identity; + if (!current()) continue; + const key = trackedFileKey(buffer.path); + const attachment = this.fileAttachmentIds.get(key); + await this.documentOpenTasks.get(key)?.task; + await this.documentChangeTasks.get(key); + if (!current() || this.fileAttachmentIds.get(key) !== attachment) continue; + const relative = getRelativePath(buffer.path, root); + const parent = relative.includes("/") ? relative.slice(0, relative.lastIndexOf("/")) : "."; + const policy = await configureWorkspaceIndexing(root, [parent], false, workspaceId); + if (!current() || this.fileAttachmentIds.get(key) !== attachment) continue; + // Core may have withdrawn this copy in an intermediate generation. Reconcile + // the copy, retaining its attachment and running server instead of restarting it. + if (attachment) await this.notifyDocumentClose(buffer.path, attachment); + if (!current() || this.fileAttachmentIds.get(key) !== attachment) continue; + if (Object.keys(policy.excludedDirectories).some((directory) => directory === "." || pathStartsWithRoot(buffer.path, joinPath(root, directory)))) continue; + const outcome = await this.startForFile(buffer.path, {workspaceId, root: scopeRoot}); + if (outcome.kind !== "attached") continue; + if (!current()) { if (!attachment) await this.stopForFile(buffer.path, outcome.attachmentId); continue; } + const latest = buffers.getState().buffers.find((item) => item.id === buffer.id); + if (latest && shouldStartLsp(latest)) { + await this.notifyDocumentOpen(buffer.path, latest.content, outcome.attachmentId); + const afterOpen = buffers.getState().buffers.find((item) => item.id === buffer.id); + if (current() && afterOpen && shouldStartLsp(afterOpen) && afterOpen.content !== latest.content) + await this.synchronizeDocument(buffer.path, afterOpen.content); + } + } catch (error) { + // One unavailable provider must not prevent other open buffers from recovering. + logger.error("LSPClient", `Could not reconcile indexed document ${buffer.path}:`, error); + } + } + } + }); + this.indexingRefreshTasks.set(identity, task); + try { await task; } finally { + if (this.indexingRefreshTasks.get(identity) === task) this.indexingRefreshTasks.delete(identity); + if (this.indexingRefreshVersions.get(identity) === version) this.indexingRefreshVersions.delete(identity); + } + } + async startForFile( filePath: string, scope: WorkspaceLaunchScope, @@ -1939,6 +2010,7 @@ export class LspClient { attachmentId?: string, ): Promise { const attachmentKey = trackedFileKey(filePath); + await this.documentCloseTasks?.get(attachmentKey); const currentAttachmentId = this.fileAttachmentIds.get(attachmentKey); if (attachmentId && currentAttachmentId !== attachmentId) return; const ownerAttachmentId = attachmentId ?? currentAttachmentId; @@ -1946,10 +2018,15 @@ export class LspClient { const openDocument = this.documents.get(attachmentKey); if (openDocument?.phase === "open" && openDocument.attachmentId === ownerAttachmentId) { + if (openDocument.content !== content) await this.synchronizeDocument(filePath, content); return; } const pendingOpen = this.documentOpenTasks.get(attachmentKey); - if (pendingOpen?.attachmentId === ownerAttachmentId) return pendingOpen.task; + if (pendingOpen?.attachmentId === ownerAttachmentId) { + await pendingOpen.task; + await this.synchronizeDocument(filePath, content); + return; + } const task: Promise = (async () => { try { @@ -2093,22 +2170,24 @@ export class LspClient { const attachmentKey = trackedFileKey(filePath); const document = this.documents.get(attachmentKey); const attachmentId = requestedAttachmentId ?? document?.attachmentId; - if (!attachmentId || document?.phase !== "open" || document.attachmentId !== attachmentId) { - return; - } + if (!attachmentId || document?.attachmentId !== attachmentId) return; + if (document.phase === "closing") return this.documentCloseTasks?.get(attachmentKey); this.documents.set(attachmentKey, { ...document, phase: "closing" }); useDiagnosticsStore.getState().actions.clearDiagnosticsForOwner(filePath, "lsp"); useLspStore.getState().actions.markDocumentStateChanged(); - - try { - await invoke("lsp_document_close", { filePath, attachmentId }); - } catch (error) { - logger.error("LSPClient", "LSP document close error:", error); - throw error; - } finally { - const current = this.documents.get(attachmentKey); - if (current?.attachmentId === attachmentId) this.documents.delete(attachmentKey); + const task = (async () => { + try { await invoke("lsp_document_close", { filePath, attachmentId }); } + catch (error) { logger.error("LSPClient", "LSP document close error:", error); throw error; } + finally { + const current = this.documents.get(attachmentKey); + if (current?.attachmentId === attachmentId) this.documents.delete(attachmentKey); + } + })(); + this.documentCloseTasks ??= new Map(); + this.documentCloseTasks.set(attachmentKey, task); + try { await task; } finally { + if (this.documentCloseTasks.get(attachmentKey) === task) this.documentCloseTasks.delete(attachmentKey); } } diff --git a/windows/tauri/src/features/editor/lsp/mounted-lsp-documents.ts b/windows/tauri/src/features/editor/lsp/mounted-lsp-documents.ts new file mode 100644 index 0000000000..edd31619e5 --- /dev/null +++ b/windows/tauri/src/features/editor/lsp/mounted-lsp-documents.ts @@ -0,0 +1,23 @@ +import type { WorkspaceRuntime } from "@/features/workspace/types/workspace-runtime.types"; +import { getPathIdentity } from "@/utils/path-helpers"; + +// Editor hooks own mounted copies. Runtime reconciliation owns only dormant buffers. +const owners = new WeakMap>(); + +export function registerMountedLspDocument(runtime: WorkspaceRuntime, path: string): () => void { + const documents = owners.get(runtime) ?? new Map(); + owners.set(runtime, documents); + const key = getPathIdentity(path); + documents.set(key, (documents.get(key) ?? 0) + 1); + let active = true; + return () => { + if (!active) return; + active = false; + const remaining = (documents.get(key) ?? 1) - 1; + if (remaining) documents.set(key, remaining); else documents.delete(key); + }; +} + +export function hasMountedLspDocument(runtime: WorkspaceRuntime, path: string): boolean { + return (owners.get(runtime)?.get(getPathIdentity(path)) ?? 0) > 0; +} diff --git a/windows/tauri/src/features/file-explorer/components/file-explorer-tree.tsx b/windows/tauri/src/features/file-explorer/components/file-explorer-tree.tsx index 0625c6bae6..8d73957b17 100644 --- a/windows/tauri/src/features/file-explorer/components/file-explorer-tree.tsx +++ b/windows/tauri/src/features/file-explorer/components/file-explorer-tree.tsx @@ -1,3 +1,4 @@ +import { workspaceRuntimeRegistry } from "@/features/workspace/runtime/workspace-runtime-registry"; import { useWorkspaceId } from "@/features/workspace/stores/create-workspace-scoped-store"; import { canUseNativeFileSearch } from "@/features/file-search/utils/file-search-paths"; import { @@ -1076,7 +1077,10 @@ function FileExplorerTreeComponent({ onCreateNewFileInDirectory, onCreateNewFolderInDirectory, onGenerateImage, - onRefreshDirectory, + onRefreshDirectory: (path, options) => { + workspaceRuntimeRegistry.getWorkspace(workspaceId)?.invalidateIndexing?.(); + onRefreshDirectory?.(path, options); + }, onRenamePath, onRevealInFinder, onUploadFile, diff --git a/windows/tauri/src/features/file-explorer/hooks/use-file-explorer-context-menu.tsx b/windows/tauri/src/features/file-explorer/hooks/use-file-explorer-context-menu.tsx index 8f2087dfbe..71d9c682df 100644 --- a/windows/tauri/src/features/file-explorer/hooks/use-file-explorer-context-menu.tsx +++ b/windows/tauri/src/features/file-explorer/hooks/use-file-explorer-context-menu.tsx @@ -1,4 +1,5 @@ -import { DIRECTORY_MARKS, type DirectoryMark } from "../stores/directory-marks"; +import { DIRECTORY_MARKS, type DirectoryAction, type DirectoryMark } from "../stores/directory-marks"; +import { IndexingSettingsError } from "../stores/indexing-settings-error"; import { canOpenProjectLocalHistory, openLocalHistoryForPath, @@ -93,7 +94,7 @@ interface UseFileExplorerContextMenuOptions { isIndexExcluded?: (path: string) => boolean; markForPath?: (path: string) => DirectoryMark | undefined; canExcludeDirectory?: (path: string) => boolean; - markDirectory?: (path: string, mark: DirectoryMark, cancelExclusion?: boolean) => void; + markDirectory?: (path: string, action: DirectoryAction) => void; onFileSelect: (path: string, isDir: boolean) => void | string | Promise; onCreateNewFileInDirectory?: ( directoryPath: string, @@ -875,9 +876,12 @@ export function useFileExplorerContextMenu({ ), onClick: () => { try { - markDirectory(contextMenu.path, mark, mark === "plain" && excluded); + markDirectory(contextMenu.path, excluded ? { kind: "cancelExclusion" } + : mark === "excluded" ? { kind: "exclude" } : { kind: "setRole", role: mark }); } catch (error) { - toast.error(t("project.markFailed"), { description: String(error) }); + toast.error(t("project.markFailed"), { + description: t(error instanceof IndexingSettingsError ? `indexing.${error.code}` : "indexing.writeFailed"), + }); } }, })), diff --git a/windows/tauri/src/features/file-explorer/stores/directory-marks-storage.ts b/windows/tauri/src/features/file-explorer/stores/directory-marks-storage.ts index 3a012250c6..161becc1b6 100644 --- a/windows/tauri/src/features/file-explorer/stores/directory-marks-storage.ts +++ b/windows/tauri/src/features/file-explorer/stores/directory-marks-storage.ts @@ -5,6 +5,10 @@ export const DIRECTORY_MARKS = [ "plain", "sources", "resources", "excluded", "module", "package", ] as const; export type DirectoryMark = (typeof DIRECTORY_MARKS)[number]; +export type DirectoryAction = + | { kind: "setRole"; role: Exclude } + | { kind: "exclude" } + | { kind: "cancelExclusion" }; export type DirectoryMarks = Record; export const directoryMarksStorageKey = (root: string) => diff --git a/windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts b/windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts index 536df68bf8..3b262295ed 100644 --- a/windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts +++ b/windows/tauri/src/features/file-explorer/stores/directory-marks.test.ts @@ -1,8 +1,11 @@ +import { toast } from "sonner"; +import fixture from "../../../../../../shared/fixtures/workspace/directory-actions-v1.json"; +import type { DirectoryAction } from "./directory-marks"; import { act, createElement } from "react"; import { createRoot } from "react-dom/client"; import { LocaleProvider } from "@/i18n/locale-provider"; import { useFileExplorerContextMenu } from "../hooks/use-file-explorer-context-menu"; -import { afterEach, beforeEach, expect, test } from "bun:test"; +import { afterEach, beforeEach, expect, spyOn, test } from "bun:test"; import { installHappyDom } from "@/test-utils/happy-dom"; import { IndexingSettingsError, indexingSettingsStorageKey, readIndexingSettings, writeIndexingSettings } from "./workspace-indexing"; import { directoryMarkRoot, markWorkspaceDirectory, migrateWorkspaceDirectoryMarks, migrateDirectoryMarks, readDirectoryMarks } from "./directory-marks"; @@ -15,16 +18,16 @@ beforeEach(() => { afterEach(() => restore()); test("cancelling exclusion follows Windows path identity after a case-only rename", () => { - markWorkspaceDirectory(["C:/workspace"], "C:/workspace/src", "sources"); - markWorkspaceDirectory(["C:/workspace"], "C:/workspace/src", "excluded"); - markWorkspaceDirectory(["C:/workspace"], "C:/workspace/SRC", "plain", true); + markWorkspaceDirectory(["C:/workspace"], "C:/workspace/src", { kind: "setRole", role: "sources" }); + markWorkspaceDirectory(["C:/workspace"], "C:/workspace/src", { kind: "exclude" }); + markWorkspaceDirectory(["C:/workspace"], "C:/workspace/SRC", { kind: "cancelExclusion" }); expect(readDirectoryMarks("C:/workspace")).toEqual({ SRC: "sources" }); expect(readIndexingSettings("C:/workspace").previousRoles).toEqual({}); expect(readIndexingSettings("C:/workspace").includedDirectories).toEqual(["SRC"]); - markWorkspaceDirectory(["C:/workspace"], "C:/workspace/src", "excluded"); + markWorkspaceDirectory(["C:/workspace"], "C:/workspace/src", { kind: "exclude" }); expect(readDirectoryMarks("C:/workspace")).toEqual({ src: "excluded" }); expect(readIndexingSettings("C:/workspace").includedDirectories).toEqual([]); - markWorkspaceDirectory(["C:/workspace"], "C:/workspace/SRC/child", "plain", true); + markWorkspaceDirectory(["C:/workspace"], "C:/workspace/SRC/child", { kind: "cancelExclusion" }); expect(readIndexingSettings("C:/workspace").includedDirectories).toEqual([]); }); @@ -166,44 +169,44 @@ test("indexing preferences do not overwrite marks for a similarly named workspac test("added and nested roots own exclusion marks and Git include exceptions", () => { const roots = ["C:/main", "D:/added", "D:/added/nested"]; writeIndexingSettings("C:/main", {gitIgnoreEnabled: false, includedDirectories: ["keep"], previousRoles: {}}); - markWorkspaceDirectory(roots, "d:\\ADDED\\build", "sources"); - markWorkspaceDirectory(roots, "d:\\ADDED\\build", "excluded"); + markWorkspaceDirectory(roots, "d:\\ADDED\\build", { kind: "setRole", role: "sources" }); + markWorkspaceDirectory(roots, "d:\\ADDED\\build", { kind: "exclude" }); expect(readDirectoryMarks("D:/added")).toEqual({build: "excluded"}); expect(readIndexingSettings("D:/added").previousRoles).toEqual({build: "sources"}); - markWorkspaceDirectory(roots, "D:/added/build", "plain", true); + markWorkspaceDirectory(roots, "D:/added/build", { kind: "cancelExclusion" }); expect(readDirectoryMarks("D:/added")).toEqual({build: "sources"}); expect(readIndexingSettings("D:/added").includedDirectories).toEqual(["build"]); - markWorkspaceDirectory(roots, "D:/added/nested/vendor", "plain", true); + markWorkspaceDirectory(roots, "D:/added/nested/vendor", { kind: "cancelExclusion" }); expect(directoryMarkRoot("D:/ADDED/nested/vendor", roots)).toBe("D:/added/nested"); expect(readIndexingSettings("D:/added/nested").includedDirectories).toEqual(["vendor"]); expect(readIndexingSettings("C:/main")).toEqual({gitIgnoreEnabled: false, includedDirectories: ["keep"], previousRoles: {}}); expect(readDirectoryMarks("C:/main")).toEqual({}); - expect(() => markWorkspaceDirectory(roots, "E:/outside", "excluded")).toThrow(); + expect(() => markWorkspaceDirectory(roots, "E:/outside", { kind: "exclude" })).toThrow(); }); test("normal-folder role changes do not create Git include exceptions", () => { const roots = ["C:/normal"]; - markWorkspaceDirectory(roots, "C:/normal/src", "sources"); - markWorkspaceDirectory(roots, "C:/normal/src", "plain"); - markWorkspaceDirectory(roots, "C:/normal/ordinary", "plain"); + markWorkspaceDirectory(roots, "C:/normal/src", { kind: "setRole", role: "sources" }); + markWorkspaceDirectory(roots, "C:/normal/src", { kind: "setRole", role: "plain" }); + markWorkspaceDirectory(roots, "C:/normal/ordinary", { kind: "setRole", role: "plain" }); expect(readIndexingSettings(roots[0]).includedDirectories).toEqual([]); - markWorkspaceDirectory(roots, "C:/normal/src", "excluded"); - markWorkspaceDirectory(roots, "C:/normal/src", "plain", true); + markWorkspaceDirectory(roots, "C:/normal/src", { kind: "exclude" }); + markWorkspaceDirectory(roots, "C:/normal/src", { kind: "cancelExclusion" }); expect(readIndexingSettings(roots[0]).includedDirectories).toEqual(["src"]); }); test.each(["D:/added", "C:/main/nested"])("added-root marks and include exceptions follow rename and deletion: %s", (root) => { const roots = ["C:/main", root]; - markWorkspaceDirectory(roots, `${root}/src`, "sources"); - markWorkspaceDirectory(roots, `${root}/src`, "excluded"); - markWorkspaceDirectory(roots, `${root}/src/examples`, "plain", true); + markWorkspaceDirectory(roots, `${root}/src`, { kind: "setRole", role: "sources" }); + markWorkspaceDirectory(roots, `${root}/src`, { kind: "exclude" }); + markWorkspaceDirectory(roots, `${root}/src/examples`, { kind: "cancelExclusion" }); // Include exceptions cannot override a manually excluded ancestor. expect(readIndexingSettings(root).includedDirectories).toEqual([]); migrateWorkspaceDirectoryMarks(roots, `${root}/src`, `${root}/code`); expect(readDirectoryMarks(root)).toEqual({code: "excluded"}); expect(readIndexingSettings(root).previousRoles).toEqual({code: "sources"}); - markWorkspaceDirectory(roots, `${root}/code`, "plain", true); + markWorkspaceDirectory(roots, `${root}/code`, { kind: "cancelExclusion" }); expect(readDirectoryMarks(root)).toEqual({code: "sources"}); expect(readIndexingSettings(root).includedDirectories).toEqual(["code"]); migrateWorkspaceDirectoryMarks(roots, `${root}/code`); @@ -216,9 +219,9 @@ test.each(["D:/added", "C:/main/nested"])("added-root marks and include exceptio test.each(["D:/added", "C:/main/nested"])("moving between workspace roots preserves exclusions and exceptions: %s", (root) => { const roots = ["C:/main", root]; - markWorkspaceDirectory(roots, `${root}/src`, "sources"); - markWorkspaceDirectory(roots, `${root}/src`, "excluded"); - markWorkspaceDirectory(roots, `${root}/examples`, "plain", true); + markWorkspaceDirectory(roots, `${root}/src`, { kind: "setRole", role: "sources" }); + markWorkspaceDirectory(roots, `${root}/src`, { kind: "exclude" }); + markWorkspaceDirectory(roots, `${root}/examples`, { kind: "cancelExclusion" }); migrateWorkspaceDirectoryMarks(roots, `${root}/src`, "C:/main/code"); migrateWorkspaceDirectoryMarks(roots, `${root}/examples`, "C:/main/demos"); expect(readDirectoryMarks(root)).toEqual({}); @@ -226,15 +229,15 @@ test.each(["D:/added", "C:/main/nested"])("moving between workspace roots preser expect(readIndexingSettings("C:/main").previousRoles).toEqual({code: "sources"}); expect(readIndexingSettings("C:/main").includedDirectories).toEqual(["demos"]); expect(readIndexingSettings(root).includedDirectories).toEqual([]); - markWorkspaceDirectory(roots, "C:/main/code", "plain", true); + markWorkspaceDirectory(roots, "C:/main/code", { kind: "cancelExclusion" }); expect(readDirectoryMarks("C:/main")).toEqual({code: "sources"}); }); test("cross-root quota failure rolls back in reverse order without publishing partial state", () => { const roots = ["C:/main", "D:/added"]; - markWorkspaceDirectory(roots, "D:/added/long-directory-name", "sources"); - markWorkspaceDirectory(roots, "D:/added/long-directory-name", "excluded"); + markWorkspaceDirectory(roots, "D:/added/long-directory-name", { kind: "setRole", role: "sources" }); + markWorkspaceDirectory(roots, "D:/added/long-directory-name", { kind: "exclude" }); const keys = roots.flatMap((root) => [ `lithe.workspace-directory-marks.${root.toLowerCase()}`, `lithe.workspace-indexing.${root.toLowerCase()}`, @@ -310,7 +313,7 @@ test.each(["remote://host/project", "wsl://Ubuntu/project"])("unsupported roots const markMenu = element.props.children[0]!.props.items.find((item) => item.id === "mark-directory")!; expect(markMenu.children!.map((item) => item.id)).toEqual(["mark-plain", "mark-sources", "mark-resources", "mark-module", "mark-package"]); markMenu.children!.find((item) => item.id === "mark-plain")!.onClick(); - expect(calls).toEqual([[path, "plain", false]]); + expect(calls).toEqual([[path, { kind: "setRole", role: "plain" }]]); expect(window.localStorage.getItem(marksKey)).toBe(oldMarks); expect(window.localStorage.getItem(indexingSettingsStorageKey(rootPath))).toBeNull(); } finally { @@ -318,3 +321,61 @@ test.each(["remote://host/project", "wsl://Ubuntu/project"])("unsupported roots actGlobal.IS_REACT_ACT_ENVIRONMENT = previousAct; } }); + +for (const scenario of fixture.cases) { + test(`directory action contract: ${scenario.id}`, () => { + const root = "C:/role-contract"; + for (const step of scenario.steps) { + markWorkspaceDirectory([root], `${root}/archive`, step.action as DirectoryAction); + expect(String(readDirectoryMarks(root).archive ?? "plain")).toBe(step.role); + expect(readIndexingSettings(root).includedDirectories).toEqual(step.included ? ["archive"] : []); + } + const before = readIndexingSettings(root); + writeIndexingSettings(root, {...before, gitIgnoreEnabled: false}); + writeIndexingSettings(root, {...readIndexingSettings(root), gitIgnoreEnabled: true}); + expect(readIndexingSettings(root)).toEqual(before); + }); +} + + +test.each([ + ["zh-CN", "项目索引设置格式无效,原始设置已保留。"], + ["en-US", "Project indexing settings are invalid. The saved data has been preserved."], +] as const)("directory menu translates real corrupt settings in %s and permits retry", async (language, message) => { + const environment = globalThis as typeof globalThis & {IS_REACT_ACT_ENVIRONMENT?: boolean}; + const previous = environment.IS_REACT_ACT_ENVIRONMENT; + environment.IS_REACT_ACT_ENVIRONMENT = true; + const renderer = createRoot(document.createElement("div")); + const rootPath = "C:/menu-errors"; + const key = indexingSettingsStorageKey(rootPath); + window.localStorage.setItem(key, "{}"); + const error = spyOn(toast, "error").mockReturnValue(0); + let notifications = 0; + const changed = () => notifications++; + window.addEventListener("lithe:directory-marks-changed", changed); + let menu!: ReturnType; + function Probe() { + menu = useFileExplorerContextMenu({rootFolderPath: rootPath, canExcludeDirectory: () => true, + isIndexExcluded: () => false, markDirectory: (path, action) => markWorkspaceDirectory([rootPath], path, action), + onFileSelect: () => {}, onDeleteRequested: () => {}, onStartInlineEditing: () => {}, onOpenAllFilesInDirectory: async () => {}}); + return null; + } + try { + await act(async () => renderer.render(createElement(LocaleProvider, {language, children: createElement(Probe)}))); + await act(async () => menu.setContextMenu({x: 0, y: 0, path: `${rootPath}/archive`, isDir: true})); + type Item = {id: string; onClick: () => void; children?: Item[]}; + const element = menu.contextMenuElement as import("react").ReactElement<{children: Array>}>; + const mark = element.props.children[0]!.props.items.find((item) => item.id === "mark-directory")!.children!.find((item) => item.id === "mark-sources")!; + mark.onClick(); + expect(error.mock.calls[0]?.[1]?.description).toBe(message); + expect(window.localStorage.getItem(key)).toBe("{}"); expect(notifications).toBe(0); + window.localStorage.removeItem(key); + mark.onClick(); + expect(readDirectoryMarks(rootPath).archive).toBe("sources"); + expect(error).toHaveBeenCalledTimes(1); expect(notifications).toBe(1); + } finally { + await act(async () => renderer.unmount()); error.mockRestore(); + window.removeEventListener("lithe:directory-marks-changed", changed); + environment.IS_REACT_ACT_ENVIRONMENT = previous; + } +}); diff --git a/windows/tauri/src/features/file-explorer/stores/directory-marks.ts b/windows/tauri/src/features/file-explorer/stores/directory-marks.ts index 0d89a59e1e..405c17bdee 100644 --- a/windows/tauri/src/features/file-explorer/stores/directory-marks.ts +++ b/windows/tauri/src/features/file-explorer/stores/directory-marks.ts @@ -7,8 +7,8 @@ import { IndexingSettingsError, type IndexingErrorCode, } from "./workspace-indexing"; -import { directoryMarksStorageKey as key, readDirectoryMarks, type DirectoryMark, type DirectoryMarks as Marks } from "./directory-marks-storage"; -export { DIRECTORY_MARKS, readDirectoryMarks, type DirectoryMark } from "./directory-marks-storage"; +import { directoryMarksStorageKey as key, readDirectoryMarks, type DirectoryAction, type DirectoryMark, type DirectoryMarks as Marks } from "./directory-marks-storage"; +export { DIRECTORY_MARKS, readDirectoryMarks, type DirectoryAction, type DirectoryMark } from "./directory-marks-storage"; import { useCallback, useEffect, useState } from "react"; import { closestWorkspaceRoot } from "@/features/workspace/types/workspace-root"; import { @@ -135,7 +135,7 @@ export function migrateWorkspaceDirectoryMarks(roots: readonly string[], source: } } -export function markWorkspaceDirectory(roots: readonly string[], path: string, mark: DirectoryMark, cancelExclusion = false) { +export function markWorkspaceDirectory(roots: readonly string[], path: string, action: DirectoryAction) { const root = directoryMarkRoot(path, roots); if (!root) throw new Error("Directory is outside the workspace"); const marks = readDirectoryMarks(root); @@ -144,7 +144,9 @@ export function markWorkspaceDirectory(roots: readonly string[], path: string, m const samePath = (path: string) => markPathIdentity(root, path) === relativeIdentity; const markKeys = Object.keys(marks).filter(samePath); const settings = readIndexingSettings(root); - if (cancelExclusion) { + const currentKey = markKeys.find((path) => path === relative) ?? markKeys[0]; + const current = currentKey === undefined ? undefined : marks[currentKey]; + if (action.kind === "cancelExclusion") { if ( Object.entries(marks).some( ([path, value]) => @@ -159,21 +161,25 @@ export function markWorkspaceDirectory(roots: readonly string[], path: string, m const previous = previousKey === undefined ? undefined : settings.previousRoles[previousKey]; for (const path of markKeys) delete marks[path]; for (const path of previousKeys) delete settings.previousRoles[path]; - if (previous) marks[relative] = previous as DirectoryMark; + const restored = current === "excluded" ? previous : current; + if (restored) marks[relative] = restored as DirectoryMark; if (!settings.includedDirectories.some(samePath)) settings.includedDirectories.push(relative); } else { + const mark = action.kind === "exclude" ? "excluded" : action.role; const previousKey = markKeys.find((path) => path === relative) ?? markKeys[0]; const previous = previousKey === undefined ? undefined : marks[previousKey]; if (mark === "excluded" && previous && previous !== "excluded") settings.previousRoles[relative] = previous; for (const path of markKeys) delete marks[path]; marks[relative] = mark; - if (mark !== "plain") settings.includedDirectories = settings.includedDirectories.filter( + if (action.kind === "exclude") settings.includedDirectories = settings.includedDirectories.filter( (path) => !samePath(path), ); } - const oldSettings = window.localStorage.getItem(indexingSettingsStorageKey(root)); + let oldSettings: string | null; + try { oldSettings = window.localStorage.getItem(indexingSettingsStorageKey(root)); } + catch (cause) { throw new IndexingSettingsError("readFailed", cause); } try { // Publish only after both preference writes succeed. window.localStorage.setItem(indexingSettingsStorageKey(root), JSON.stringify(settings)); @@ -182,7 +188,7 @@ export function markWorkspaceDirectory(roots: readonly string[], path: string, m } catch (error) { if (oldSettings === null) window.localStorage.removeItem(indexingSettingsStorageKey(root)); else window.localStorage.setItem(indexingSettingsStorageKey(root), oldSettings); - throw error; + throw new IndexingSettingsError("writeFailed", error); } } @@ -200,8 +206,8 @@ export function useDirectoryMarks(roots: readonly string[]) { refresh(); return subscribeToIndexingChanges(roots, refresh); }, [rootsKey]); - const markDirectory = useCallback((path: string, mark: DirectoryMark, cancelExclusion = false) => { - markWorkspaceDirectory(roots, path, mark, cancelExclusion); + const markDirectory = useCallback((path: string, action: DirectoryAction) => { + markWorkspaceDirectory(roots, path, action); }, [rootsKey]); const markForPath = (path: string): DirectoryMark | undefined => { const root = directoryMarkRoot(path, roots); diff --git a/windows/tauri/src/features/file-explorer/stores/workspace-indexing.test.ts b/windows/tauri/src/features/file-explorer/stores/workspace-indexing.test.ts index aff9e16dac..fc6f95033c 100644 --- a/windows/tauri/src/features/file-explorer/stores/workspace-indexing.test.ts +++ b/windows/tauri/src/features/file-explorer/stores/workspace-indexing.test.ts @@ -189,26 +189,69 @@ test("background project inventory keeps its owner when another workspace become store.setState({rootFolderPath: "C:/inventory-first", workspaceFolders: []}); useFileSystemStore.getStore(second.descriptor.id).setState({rootFolderPath: "D:/inventory-second", workspaceFolders: []}); registry.activateWorkspace(first.descriptor, "ready"); - const owners: string[] = []; + const owners: Array<{root: string; ownerId: string}> = []; const execute = spyOn(core, "executeCore").mockImplementation(async (request: core.CoreRequest) => { if (request.command === "workspace.configureIndexing") { - owners.push((request.payload as {ownerId: string}).ownerId); + owners.push(request.payload as {root: string; ownerId: string}); return coreReply(request.id, {revision: 1, excludedDirectories: {}, gitIgnoreFailed: false}); } if (request.command === "workspace.snapshot") { registry.activateWorkspace(second.descriptor, "ready"); return coreReply(request.id, {files: ["Keep.ts"], incompleteDirectories: []}); } + if (request.command === "workspace.refreshIndexing") return coreReply(request.id, {revision: 1, excludedDirectories: {}, gitIgnoreFailed: false}); return coreReply(request.id, {released: true}); }); try { const files = await store.getState().getAllProjectFiles(); expect(files.map((file) => file.path.replace(/\\/g, "/"))).toEqual(["C:/inventory-first/Keep.ts"]); - expect(owners).toHaveLength(2); - expect(new Set(owners).size).toBe(1); + const firstOwners = owners.filter((item) => item.root === "C:/inventory-first"); + expect(firstOwners.length).toBeGreaterThanOrEqual(2); + expect(new Set(firstOwners.map((item) => item.ownerId)).size).toBe(1); + const secondOwner = owners.find((item) => item.root === "D:/inventory-second"); + if (secondOwner) expect(secondOwner.ownerId).not.toBe(firstOwners[0]!.ownerId); } finally { await first.disposeIndexing?.(); await second.disposeIndexing?.(); registry.removeWorkspace(first.descriptor.id); registry.removeWorkspace(second.descriptor.id); registry.activateWorkspace({id: previous, name: "restored"}); execute.mockRestore(); } }); + + +test("activation installs the query barrier before subscribers and completion does not reconfigure", async () => { + const previous = registry.getActiveWorkspaceId(); + const runtime = registry.ensureWorkspace({id: "activation-barrier", name: "barrier"}, "ready"); + syncWorkspaceIndexingRoots(runtime.descriptor.id, ["C:/activation"]); + let begin!: () => void; const began = new Promise((resolve) => { begin = resolve; }); + let release!: () => void; const gate = new Promise((resolve) => { release = resolve; }); + const calls: string[] = []; + const execute = spyOn(core, "executeCore").mockImplementation(async (request: core.CoreRequest) => { + calls.push(request.command); + if (request.command === "workspace.refreshIndexing") { begin(); await gate; } + return coreReply(request.id, {revision: 7, excludedDirectories: {}, gitIgnoreFailed: false}); + }); + let query: Promise | undefined; + let published = false; + const stop = registry.subscribe(() => { + if (registry.getActiveWorkspaceId() === runtime.descriptor.id) { + query = configureWorkspaceIndexing("C:/activation", [], false, runtime.descriptor.id).then(() => { published = true; }); + } + }); + try { + await configureWorkspaceIndexing("C:/activation", [], false, runtime.descriptor.id); + registry.activateWorkspace(runtime.descriptor, "ready"); + await began; + expect(published).toBe(false); + expect(calls.filter((command) => command === "workspace.refreshIndexing")).toHaveLength(1); + release(); await query; + expect(published).toBe(true); + const count = calls.length; + window.dispatchEvent(new window.CustomEvent("lithe:workspace-indexing-refreshed", {detail: "C:/activation"})); + await Promise.resolve(); await Promise.resolve(); + expect(calls).toHaveLength(count); + } finally { + stop(); release(); await query?.catch(() => {}); + await runtime.disposeIndexing?.(); registry.removeWorkspace(runtime.descriptor.id); + registry.activateWorkspace({id: previous, name: "restored"}); execute.mockRestore(); + } +}, 2000); diff --git a/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts b/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts index 586cc1b987..540fe7c46f 100644 --- a/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts +++ b/windows/tauri/src/features/file-explorer/stores/workspace-indexing.ts @@ -20,6 +20,7 @@ export interface IndexingStatus { gitIgnoreFailed: boolean; } export const indexingEvent = "lithe:workspace-indexing-changed"; +export const indexingRefreshedEvent = "lithe:workspace-indexing-refreshed"; export const indexingSettingsStorageKey = (root: string) => `lithe.workspace-indexing.${getPathIdentity(root).replace(/\/+$/, "")}`; @@ -73,6 +74,7 @@ export function writeIndexingSettings(root: string, settings: IndexingSettings) export function subscribeToIndexingChanges( roots: readonly string[] | (() => readonly string[]) | undefined, changed: () => void, + preferencesOnly = false, ): () => void { if (typeof window === "undefined") return () => {}; let active = true; @@ -98,17 +100,19 @@ export function subscribeToIndexingChanges( } }; window.addEventListener(indexingEvent, local); + if (!preferencesOnly) window.addEventListener(indexingRefreshedEvent, local); window.addEventListener("lithe:directory-marks-changed", local); window.addEventListener("storage", stored); return () => { active = false; window.removeEventListener(indexingEvent, local); + if (!preferencesOnly) window.removeEventListener(indexingRefreshedEvent, local); window.removeEventListener("lithe:directory-marks-changed", local); window.removeEventListener("storage", stored); }; } -type RootLease = { root: string; revision?: number }; +type RootLease = { root: string; revision?: number; requested: number; applied: number }; type IndexingOwner = { id: string; roots: Map; @@ -128,10 +132,18 @@ function ownerFor(workspaceId: string): IndexingOwner { owners.set(runtime, owner); owner.stopPreferences = subscribeToIndexingChanges(() => [...owner.roots.values()].map((lease) => lease.root), () => { for (const { root } of owner.roots.values()) void configureWorkspaceIndexing(root, [], false, workspaceId).catch(console.error); - }); + }, true); + runtime.invalidateIndexing = () => { + if (owner.closed) return; + for (const lease of owner.roots.values()) { + lease.requested++; + void configureWorkspaceIndexing(lease.root, [], false, workspaceId).catch(console.error); + } + }; runtime.disposeIndexing = async () => { if (owner.closed) return; owner.closed = true; + runtime.invalidateIndexing = undefined; owner.stopPreferences(); owner.stopRoots?.(); const leases = [...owner.roots.values()]; @@ -174,7 +186,7 @@ export function syncWorkspaceIndexingRoots(workspaceId: string, roots: readonly } } for (const [identity, root] of wanted) { - if (!owner.roots.has(identity)) owner.roots.set(identity, { root }); + if (!owner.roots.has(identity)) owner.roots.set(identity, { root, requested: 0, applied: 0 }); } } @@ -205,17 +217,20 @@ export async function configureWorkspaceIndexing( const identity = getPathIdentity(root); const lease = owner.roots.get(identity); if (!lease || owner.closed) throw new IndexingSettingsError("configureFailed"); + if (refresh) lease.requested++; return serialized(owner, root, async () => { let supersededRetries = 0; + let passes = 0; while (true) { + if (++passes > 4) throw new IndexingSettingsError("configureFailed"); if (owner.closed || owner.roots.get(identity) !== lease) throw new IndexingSettingsError("configureFailed"); const signature = JSON.stringify([readStoredValue(indexingSettingsStorageKey(root)), readStoredValue(key(root))]); const settings = readIndexingSettings(root); const marks = readDirectoryMarks(root); - const response = await executeCore({ + let response = await executeCore({ id: crypto.randomUUID(), command: "workspace.configureIndexing", payload: { root, ownerId: owner.id, ...settings, - manualExcludedDirectories: Object.entries(marks).filter(([, role]) => role === "excluded").map(([path]) => path), paths, refresh }, + manualExcludedDirectories: Object.entries(marks).filter(([, role]) => role === "excluded").map(([path]) => path), paths, refresh: false }, }); if (!response.ok) { // Another workspace owner can replace the shared scan generation. @@ -229,6 +244,21 @@ export async function configureWorkspaceIndexing( throw new IndexingSettingsError("configureFailed"); } lease.revision = response.data.revision; + if (lease.requested !== lease.applied) { + const requested = lease.requested; + response = await executeCore({ + id: crypto.randomUUID(), command: "workspace.refreshIndexing", timeoutMilliseconds: 30000, + payload: {root, ownerId: owner.id, revision: lease.revision}, + }); + if (!response.ok) { + if (response.error.code === "cancelled" && supersededRetries++ < 2) continue; + throw new IndexingSettingsError("configureFailed", response.error); + } + if (owner.closed || owner.roots.get(identity) !== lease) throw new IndexingSettingsError("configureFailed"); + lease.applied = requested; + // Re-query requested directory reasons against the refreshed generation. + continue; + } if (signature === JSON.stringify([readStoredValue(indexingSettingsStorageKey(root)), readStoredValue(key(root))])) return response.data; } }); diff --git a/windows/tauri/src/features/file-system/services/file-watcher-listener.ts b/windows/tauri/src/features/file-system/services/file-watcher-listener.ts index 886df51583..52322220bb 100644 --- a/windows/tauri/src/features/file-system/services/file-watcher-listener.ts +++ b/windows/tauri/src/features/file-system/services/file-watcher-listener.ts @@ -2,7 +2,7 @@ import { canUseNativeFileSearch } from "@/features/file-search/utils/file-search import { subscribeToGitChanges, isGitChangeRelevant } from "@/features/git/events/git-events"; import { configureWorkspaceIndexing, - indexingEvent, + indexingRefreshedEvent, } from "@/features/file-explorer/stores/workspace-indexing"; import { initializeDocumentWatches, @@ -33,6 +33,8 @@ interface FileChangeEvent { let unlistenFileChanged: UnlistenFn | null = null; let unlistenGitChanged: (() => void) | undefined; +let unlistenIndexingRefreshed: UnlistenFn | undefined; +let removeFocusListener: (() => void) | undefined; const MAX_PENDING_REFRESH_DIRECTORIES = 128; export interface PendingWorkspaceRefresh { @@ -113,6 +115,8 @@ function scheduleWorkspaceRefresh( workspaceRoot: string, directoryPath?: string, ) { + const runtime = workspaceRuntimeRegistry.getWorkspace(workspaceId); + if (!runtime) return; const key = workspaceRefreshKey(workspaceId, workspaceRoot); const pending = pendingWorkspaceRefreshes.get(key) ?? { directories: new Set(), @@ -124,7 +128,7 @@ function scheduleWorkspaceRefresh( scheduleFileWatcherRefresh(workspaceId, `workspace:${workspaceRoot}`, async () => { const refresh = pendingWorkspaceRefreshes.get(key); pendingWorkspaceRefreshes.delete(key); - if (!workspaceRuntimeRegistry.hasWorkspace(workspaceId)) { + if (workspaceRuntimeRegistry.getWorkspace(workspaceId) !== runtime) { return; } @@ -149,112 +153,108 @@ function scheduleWorkspaceRefresh( export async function initializeFileWatcherListener() { await cleanupFileWatcherListener(); await initializeDocumentWatches(); + unlistenIndexingRefreshed = await listen("workspace-indexing-refreshed", ({payload}) => { + window.dispatchEvent(new window.CustomEvent(indexingRefreshedEvent, {detail: payload})); + }); + const focus = () => { + for (const runtime of workspaceRuntimeRegistry.getWorkspaces()) runtime.invalidateIndexing?.(); + }; + window.addEventListener("focus", focus); + removeFocusListener = () => window.removeEventListener("focus", focus); unlistenGitChanged = subscribeToGitChanges((change) => { - if (["save", "auto-save", "external-file-change"].includes(change.source ?? "")) return; - const workspaceId = workspaceRuntimeRegistry.getActiveWorkspaceId(); - const state = useFileSystemStore.getStore(workspaceId).getState(); - const roots = new Set([ - state.rootFolderPath, - ...state.workspaceFolders.map((folder) => folder.path), - ]); - for (const root of roots) { - if (!canUseNativeFileSearch(root) || !isGitChangeRelevant(change, root)) continue; - scheduleFileWatcherRefresh(workspaceId, `indexing:${root}`, async () => { - if (!workspaceRuntimeRegistry.hasWorkspace(workspaceId)) return; - await configureWorkspaceIndexing(root, [], true, workspaceId); - window.dispatchEvent(new CustomEvent(indexingEvent, { detail: root })); - }); + // Native batches have already invalidated the shared root before being broadcast. + if (["save", "auto-save", "external-file-change", "external-git-change"].includes(change.source ?? "")) return; + for (const runtime of workspaceRuntimeRegistry.getWorkspaces()) { + const store = runtime.stores.get("file-system"); + if (!store) continue; + const workspaceId = runtime.descriptor.id; + const state = useFileSystemStore.getStore(workspaceId).getState(); + const roots = new Set([state.rootFolderPath, ...state.workspaceFolders.map((folder) => folder.path)]); + for (const root of roots) { + if (!canUseNativeFileSearch(root) || !isGitChangeRelevant(change, root)) continue; + // Queue synchronously so a query from the same action cannot overtake invalidation. + void configureWorkspaceIndexing(root, [], true, workspaceId).catch(console.error); + } } }); unlistenFileChanged = await listen("file-changed", async (event) => { const { path, event_type } = event.payload; - const workspaceId = workspaceRuntimeRegistry.getActiveWorkspaceId(); - const fileSystemState = useFileSystemStore.getStore(workspaceId).getState(); - const rootFolderPath = fileSystemState.rootFolderPath; - const workspaceRoot = getWorkspaceRootForChange( - path, - rootFolderPath, - fileSystemState.workspaceFolders.map((folder) => folder.path), - ); - if (!rootFolderPath || !workspaceRoot) return; - - const relative = getRelativePath(path, workspaceRoot).replace(/\\/g, "/"); - if ( - event_type === "rescan" || - relative.split("/").some((part) => part === ".gitignore" || part === ".git") - ) { - scheduleFileWatcherRefresh(workspaceId, `indexing:${workspaceRoot}`, async () => { - if (!workspaceRuntimeRegistry.hasWorkspace(workspaceId)) return; - await configureWorkspaceIndexing(workspaceRoot, [], true, workspaceId); - window.dispatchEvent(new CustomEvent(indexingEvent, { detail: workspaceRoot })); - }); - } - if (event_type === "rescan") { - window.dispatchEvent( - new CustomEvent("file-external-change", { - detail: { path: workspaceRoot, event_type }, - }), + const targets = workspaceRuntimeRegistry.getWorkspaces().filter((runtime) => runtime.stores.has("file-system")); + window.dispatchEvent(new window.CustomEvent("file-external-change", {detail: {path, event_type}})); + await Promise.all(targets.map(async (runtime) => { + const workspaceId = runtime.descriptor.id; + const isCurrent = () => workspaceRuntimeRegistry.getWorkspace(workspaceId) === runtime; + const fileSystemState = useFileSystemStore.getStore(workspaceId).getState(); + const rootFolderPath = fileSystemState.rootFolderPath; + const workspaceRoot = getWorkspaceRootForChange( + path, + rootFolderPath, + fileSystemState.workspaceFolders.map((folder) => folder.path), ); - const refreshRequest = getFileTreeRefreshRequest(event_type, workspaceRoot); - if (refreshRequest) scheduleWorkspaceRefresh(workspaceId, workspaceRoot); - return; - } + if (!rootFolderPath || !workspaceRoot) return; - const parentDirectory = await dirname(path); - const mavenPomPath = getMavenPomChangePath(path, workspaceRoot); + if (event_type === "rescan") { + const refreshRequest = getFileTreeRefreshRequest(event_type, workspaceRoot); + if (refreshRequest) scheduleWorkspaceRefresh(workspaceId, workspaceRoot); + return; + } - window.dispatchEvent( - new CustomEvent("file-external-change", { - detail: { path, event_type }, - }), - ); + const parentDirectory = await dirname(path); + if (!isCurrent()) return; + const mavenPomPath = getMavenPomChangePath(path, workspaceRoot); - const parentRelative = - getRelativePath(parentDirectory, workspaceRoot).replace(/\\/g, "/") || "."; - let excluded: boolean | undefined = false; - if (canUseNativeFileSearch(workspaceRoot)) { - try { - const policy = await configureWorkspaceIndexing(workspaceRoot, [parentRelative], false, workspaceId); - excluded = Object.keys(policy.excludedDirectories).some( - (directory) => - directory === "." || - parentRelative === directory || - parentRelative.startsWith(directory + "/"), - ); - } catch (error) { - // Indexing failures must not suppress tree updates or Maven reload state. - // Defer source notifications until the exclusion policy is known. - excluded = undefined; - console.error("Failed to read workspace indexing policy for file change:", error); + const parentRelative = + getRelativePath(parentDirectory, workspaceRoot).replace(/\\/g, "/") || "."; + let excluded: boolean | undefined = false; + if (canUseNativeFileSearch(workspaceRoot)) { + try { + const policy = await configureWorkspaceIndexing(workspaceRoot, [parentRelative], false, workspaceId); + excluded = Object.keys(policy.excludedDirectories).some( + (directory) => + directory === "." || + parentRelative === directory || + parentRelative.startsWith(directory + "/"), + ); + } catch (error) { + // Indexing failures must not suppress tree updates or Maven reload state. + // Defer source notifications until the exclusion policy is known. + excluded = undefined; + console.error("Failed to read workspace indexing policy for file change:", error); + } + } + if (!isCurrent()) return; + const currentState = useFileSystemStore.getStore(workspaceId).getState(); + if (getWorkspaceRootForChange(path, currentState.rootFolderPath, currentState.workspaceFolders.map((folder) => folder.path)) !== workspaceRoot) return; + if (mavenPomPath !== null) { + useMavenStore.getStore(workspaceId).getState().actions.markPomReloadRequired(mavenPomPath); + } else if (excluded === false) { + scheduleJavaWorkspaceChange(workspaceId, workspaceRoot, { + path, + kind: + event_type === "deleted" ? "deleted" : event_type === "opened" ? "created" : "changed", + includeSource: true, + }); } - } - if (mavenPomPath !== null) { - useMavenStore.getStore(workspaceId).getState().actions.markPomReloadRequired(mavenPomPath); - } else if (excluded === false) { - scheduleJavaWorkspaceChange(workspaceId, workspaceRoot, { - path, - kind: - event_type === "deleted" ? "deleted" : event_type === "opened" ? "created" : "changed", - includeSource: true, - }); - } - const refreshRequest = getFileTreeRefreshRequest(event_type, workspaceRoot, parentDirectory); - if (refreshRequest) { - scheduleWorkspaceRefresh( - workspaceId, - workspaceRoot, - refreshRequest.fullRescan ? undefined : refreshRequest.directoryPath, - ); - return; - } + const refreshRequest = getFileTreeRefreshRequest(event_type, workspaceRoot, parentDirectory); + if (refreshRequest) { + scheduleWorkspaceRefresh( + workspaceId, + workspaceRoot, + refreshRequest.fullRescan ? undefined : refreshRequest.directoryPath, + ); + return; + } + })); }); } export async function cleanupFileWatcherListener() { unlistenGitChanged?.(); unlistenGitChanged = undefined; + unlistenIndexingRefreshed?.(); unlistenIndexingRefreshed = undefined; + removeFocusListener?.(); removeFocusListener = undefined; await cleanupDocumentWatches(); cancelFileWatcherRefreshes(); pendingWorkspaceRefreshes.clear(); diff --git a/windows/tauri/src/features/file-system/stores/file-watcher.store.test.ts b/windows/tauri/src/features/file-system/stores/file-watcher.store.test.ts index 956624cbe8..a989fec230 100644 --- a/windows/tauri/src/features/file-system/stores/file-watcher.store.test.ts +++ b/windows/tauri/src/features/file-system/stores/file-watcher.store.test.ts @@ -17,7 +17,7 @@ function deferred(): Deferred { describe("file watcher lifecycle", () => { test("stops every explicit watch when the project root is cleared", async () => { const invokeCommand = mock( - async (_command: string, _arguments: { path: string }): Promise => undefined, + async (_command: string, _arguments: Parameters[1]): Promise => undefined, ); const store = createFileWatcherStore("workspace", invokeCommand as FileWatcherInvoke); await store.getState().actions.setProjectRoot("D:/work"); @@ -28,15 +28,15 @@ describe("file watcher lifecycle", () => { await store.getState().actions.setProjectRoot(""); expect(invokeCommand.mock.calls).toEqual([ - ["stop_watching", { path: "D:/work/pom.xml" }], - ["stop_watching", { path: "D:/work/module/pom.xml" }], - ["stop_watching", { path: "D:/work" }], + ["stop_watching", { path: "D:/work/pom.xml", runtimeId: expect.any(String), watchId: expect.any(String) }], + ["stop_watching", { path: "D:/work/module/pom.xml", runtimeId: expect.any(String), watchId: expect.any(String) }], + ["stop_watching", { path: "D:/work", runtimeId: expect.any(String), watchId: expect.any(String) }], ]); expect(store.getState().watchedPaths.size).toBe(0); }); test("retains an explicit watch when native cleanup fails", async () => { - const invokeCommand = mock(async (command: string, arguments_: { path: string }) => { + const invokeCommand = mock(async (command: string, arguments_: Parameters[1]) => { if (command === "stop_watching" && arguments_.path.endsWith("module/pom.xml")) { throw new Error("native watcher remained active"); } @@ -65,7 +65,7 @@ describe("file watcher lifecycle", () => { test("orders root cleanup after an in-flight explicit watch registration", async () => { const registrationStarted = deferred(); const releaseRegistration = deferred(); - const invokeCommand = mock(async (command: string, _arguments: { path: string }) => { + const invokeCommand = mock(async (command: string, _arguments: Parameters[1]) => { if (command === "start_watching") { registrationStarted.resolve(undefined); await releaseRegistration.promise; @@ -85,9 +85,9 @@ describe("file watcher lifecycle", () => { await cleanup; expect(invokeCommand.mock.calls).toEqual([ - ["start_watching", { path: "D:/work/module/pom.xml" }], - ["stop_watching", { path: "D:/work/module/pom.xml" }], - ["stop_watching", { path: "D:/work" }], + ["start_watching", { path: "D:/work/module/pom.xml", runtimeId: expect.any(String), watchId: expect.any(String) }], + ["stop_watching", { path: "D:/work/module/pom.xml", runtimeId: expect.any(String), watchId: expect.any(String) }], + ["stop_watching", { path: "D:/work", runtimeId: expect.any(String), watchId: expect.any(String) }], ]); expect(store.getState().watchedPaths.size).toBe(0); expect(await store.getState().actions.startWatching("D:/work/pom.xml")).toBe(false); @@ -100,7 +100,7 @@ describe("file watcher lifecycle", () => { test("unwatches the previous project root before registering its replacement", async () => { const invokeCommand = mock( - async (_command: string, _arguments: { path: string }): Promise => undefined, + async (_command: string, _arguments: Parameters[1]): Promise => undefined, ); const store = createFileWatcherStore("workspace", invokeCommand as FileWatcherInvoke); await store.getState().actions.setProjectRoot("D:/first"); @@ -110,9 +110,9 @@ describe("file watcher lifecycle", () => { expect(await store.getState().actions.setProjectRoot("D:/second")).toBe(true); expect(invokeCommand.mock.calls).toEqual([ - ["stop_watching", { path: "D:/first/pom.xml" }], - ["stop_watching", { path: "D:/first" }], - ["set_project_root", { path: "D:/second" }], + ["stop_watching", { path: "D:/first/pom.xml", runtimeId: expect.any(String), watchId: expect.any(String) }], + ["stop_watching", { path: "D:/first", runtimeId: expect.any(String), watchId: expect.any(String) }], + ["set_project_root", { path: "D:/second", runtimeId: expect.any(String), watchId: expect.any(String) }], ]); expect(store.getState().projectRoot).toBe("D:/second"); }); @@ -120,7 +120,7 @@ describe("file watcher lifecycle", () => { test("retains the project root when native root cleanup fails", async () => { let rejectRootCleanup = true; const invokeCommand = mock( - async (command: string, arguments_: { path: string }): Promise => { + async (command: string, arguments_: Parameters[1]): Promise => { if (command === "stop_watching" && arguments_.path === "D:/work" && rejectRootCleanup) { rejectRootCleanup = false; throw new Error("root cleanup failed"); @@ -144,3 +144,26 @@ describe("file watcher lifecycle", () => { } }); }); + + +test("shared paths keep separate runtime registrations and release their own identifiers", async () => { + const native = mock(async (_command: string, _args: Parameters[1]) => undefined); + const first = createFileWatcherStore("first", native); + const second = createFileWatcherStore("second", native); + try { + await first.getState().actions.setProjectRoot("C:/shared"); + await second.getState().actions.setProjectRoot("C:/shared"); + const a = native.mock.calls[0]![1]; + const b = native.mock.calls[1]![1]; + expect(a.runtimeId).not.toBe(b.runtimeId); + expect(a.watchId).not.toBe(b.watchId); + await first.getState().actions.setProjectRoot(""); + expect(native.mock.calls[2]).toEqual(["stop_watching", a]); + expect(second.getState().projectRoot).toBe("C:/shared"); + await second.getState().actions.setProjectRoot(""); + expect(native.mock.calls[3]).toEqual(["stop_watching", b]); + } finally { + await first.getState().actions.setProjectRoot(""); + await second.getState().actions.setProjectRoot(""); + } +}); diff --git a/windows/tauri/src/features/file-system/stores/file-watcher.store.ts b/windows/tauri/src/features/file-system/stores/file-watcher.store.ts index fb561934f9..9877a523c2 100644 --- a/windows/tauri/src/features/file-system/stores/file-watcher.store.ts +++ b/windows/tauri/src/features/file-system/stores/file-watcher.store.ts @@ -1,3 +1,4 @@ +import { getPathIdentity } from "@/utils/path-helpers"; import { invoke } from "@/platform/tauri-core"; import { combine } from "zustand/middleware"; import { createStore } from "zustand/vanilla"; @@ -9,7 +10,7 @@ const initialState = { pendingSaves: new Map(), // path -> timestamp }; -export type FileWatcherInvoke = (command: string, arguments_: { path: string }) => Promise; +export type FileWatcherInvoke = (command: string, arguments_: { path: string; runtimeId: string; watchId: string }) => Promise; export const createFileWatcherStore = ( _workspaceId?: string, @@ -17,6 +18,22 @@ export const createFileWatcherStore = ( ) => createStore( combine(initialState, (set, get) => { + const runtimeId = crypto.randomUUID(); + const registrations = new Map(); + const acquire = async (command: string, path: string) => { + const key = `${command}:${getPathIdentity(path)}`; + if (registrations.has(key)) return; + const watchId = crypto.randomUUID(); + await invokeCommand(command, { path, runtimeId, watchId }); + registrations.set(key, watchId); + }; + const release = async (path: string, projectRoot = false) => { + const key = `${projectRoot ? "set_project_root" : "start_watching"}:${getPathIdentity(path)}`; + const watchId = registrations.get(key); + if (!watchId) return; + await invokeCommand("stop_watching", { path, runtimeId, watchId }); + registrations.delete(key); + }; let watchOperationTask = Promise.resolve(); const enqueueWatchOperation = (operation: () => Promise): Promise => { const task = watchOperationTask.then(operation); @@ -35,7 +52,7 @@ export const createFileWatcherStore = ( } try { - await invokeCommand("start_watching", { path }); + await acquire("start_watching", path); set((state) => ({ watchedPaths: new Set(state.watchedPaths).add(path), })); @@ -53,7 +70,7 @@ export const createFileWatcherStore = ( } try { - await invokeCommand("stop_watching", { path }); + await release(path); set((state) => { const newSet = new Set(state.watchedPaths); newSet.delete(path); @@ -72,7 +89,7 @@ export const createFileWatcherStore = ( const stopProjectRootNow = async (path: string): Promise => { if (!path) return true; try { - await invokeCommand("stop_watching", { path }); + await release(path, true); return true; } catch (error) { console.error("Failed to stop watching project root:", path, error); @@ -113,7 +130,7 @@ export const createFileWatcherStore = ( } try { - await invokeCommand("set_project_root", { path }); + await acquire("set_project_root", path); set({ projectRoot: path }); return true; } catch (error) { diff --git a/windows/tauri/src/features/git/runtime/git-metadata-watch-host.tsx b/windows/tauri/src/features/git/runtime/git-metadata-watch-host.tsx index 2e0f5459d7..a1aa38d781 100644 --- a/windows/tauri/src/features/git/runtime/git-metadata-watch-host.tsx +++ b/windows/tauri/src/features/git/runtime/git-metadata-watch-host.tsx @@ -1,11 +1,10 @@ import { useEffect } from "react"; import { listen } from "@tauri-apps/api/event"; import { invoke } from "@/platform/tauri-core"; -import { useProjectStore } from "@/features/window/stores/project.store"; -import { useActiveWorkspaceId } from "@/features/workspace/stores/create-workspace-scoped-store"; import { emitGitChanged, type GitChange, isGitChangeRelevant } from "../events/git-events"; -import { useRepositoryStore } from "../stores/git-repository.store"; -import { createGitRefreshQueue } from "../services/git-operation-coordinator"; +import { workspaceRuntimeRegistry } from "@/features/workspace/runtime/workspace-runtime-registry"; +import { canUseNativeFileSearch } from "@/features/file-search/utils/file-search-paths"; +import { getPathIdentity } from "@/utils/path-helpers"; interface GitMetadataChange { repositoryRoots: string[]; @@ -33,67 +32,81 @@ export function gitChangeForMetadata( }; } +/** App-mounted controller; registrations follow runtime membership, never the active tab. */ export function GitMetadataWatchHost() { - const workspaceId = useActiveWorkspaceId(); - const activeRepoPath = useRepositoryStore((state) => state.activeRepoPath); - const availableRepoPaths = useRepositoryStore((state) => state.availableRepoPaths); - const projectPath = useProjectStore((state) => state.rootFolderPath); - const pathsKey = JSON.stringify( - availableRepoPaths.length - ? availableRepoPaths - : [activeRepoPath ?? projectPath].filter(Boolean), - ); useEffect(() => { - const repoPaths = JSON.parse(pathsKey) as string[]; - if (!repoPaths.length) return; - let current = true; - const watchIds = new Map(); - const installs = createGitRefreshQueue(); - const release = (watchId: string) => - invoke("unwatch_git_repository", { watchId }).catch((error) => - console.error("Could not release Git metadata watch:", error), - ); - const install = (repoPath: string) => - installs.run(repoPath, async () => { - const previous = watchIds.get(repoPath); - if (previous) await release(previous); - if (!current) return; - const watchId = watchIds.get(repoPath) ?? crypto.randomUUID(); - watchIds.set(repoPath, watchId); - await invoke("watch_git_repository", { repoPath, watchId }).catch((error) => { - if (current) console.error("Could not watch Git metadata:", error); - }); - // An install can finish after unmount's unwatch, so release it again. - if (!current) await release(watchId); - }); - const listener = listen("git-metadata-changed", ({ payload }) => { - if (!current) return; - for (const root of payload.repositoryRoots) { - emitGitChanged(gitChangeForMetadata(root, payload)); + let stopped = false; + let listening = false; + type Entry = { runtimeId: string; repoPath: string; watchId: string; active: boolean; invalidate: () => void }; + const entries = new Map(); + const runtimeIds = new WeakMap(); + const release = (entry: Entry) => invoke("unwatch_git_repository", { + runtimeId: entry.runtimeId, watchId: entry.watchId, + }).catch((error) => console.error("Could not release Git metadata watch:", error)); + const retire = (key: string, entry: Entry) => { + entry.active = false; + entries.delete(key); + void release(entry); + }; + const reconcile = () => { + if (stopped || !listening) return; + const wanted = new Map void}>(); + for (const runtime of workspaceRuntimeRegistry.getWorkspaces()) { + if (runtime.status !== "ready") continue; + let runtimeId = runtimeIds.get(runtime); + if (!runtimeId) { runtimeId = crypto.randomUUID(); runtimeIds.set(runtime, runtimeId); } + const repositories = runtime.stores.get("git-repository")?.getState() as + { availableRepoPaths: string[]; activeRepoPath?: string | null } | undefined; + const files = runtime.stores.get("file-system")?.getState() as + { rootFolderPath?: string; workspaceFolders: {path: string}[] } | undefined; + const paths = new Set([ + ...(repositories?.availableRepoPaths ?? []), repositories?.activeRepoPath, + files?.rootFolderPath ?? runtime.descriptor.path, + ...(files?.workspaceFolders.map((folder) => folder.path) ?? []), + ]); + for (const repoPath of paths) { + if (!canUseNativeFileSearch(repoPath)) continue; + wanted.set(JSON.stringify([runtimeId, getPathIdentity(repoPath)]), {runtimeId, repoPath, invalidate: () => runtime.invalidateIndexing?.()}); + } + } + for (const [key, entry] of entries) if (!wanted.has(key)) retire(key, entry); + for (const [key, target] of wanted) { + if (entries.has(key)) continue; + const entry: Entry = {...target, watchId: crypto.randomUUID(), active: true}; + entries.set(key, entry); + void invoke("watch_git_repository", { + repoPath: entry.repoPath, runtimeId: entry.runtimeId, watchId: entry.watchId, + }).then(() => { if (entry.active) entry.invalidate(); }).catch((error) => { + if (entry.active) { + console.error("Could not watch Git metadata:", error); + retire(key, entry); + } + }).finally(() => { if (!entry.active) void release(entry); }); } - if (payload.metadataLinkChanged && payload.repositoryRoots.length) - for (const repoPath of repoPaths) { - if ( - payload.repositoryRoots.some((root) => - isGitChangeRelevant({ repoPath: root }, repoPath), - ) - ) - void install(repoPath); + }; + const listener = listen("git-metadata-changed", ({payload}) => { + if (stopped) return; + for (const root of payload.repositoryRoots) emitGitChanged(gitChangeForMetadata(root, payload)); + if (payload.metadataLinkChanged) { + for (const [key, entry] of entries) { + if (payload.repositoryRoots.some((root) => isGitChangeRelevant({repoPath: root}, entry.repoPath))) + retire(key, entry); } + reconcile(); + } }); - void listener - .then(() => { - if (current) return Promise.all(repoPaths.map(install)); - }) + window.addEventListener("focus", reconcile); + const unsubscribeRepositories = workspaceRuntimeRegistry.subscribeToStoreKey("git-repository", reconcile); + const unsubscribeRoots = workspaceRuntimeRegistry.subscribeToStoreKey("file-system", reconcile); + void listener.then(() => { listening = true; reconcile(); }) .catch((error) => console.error("Could not receive Git metadata changes:", error)); return () => { - current = false; - installs.clear(); - void listener - .then((unlisten) => unlisten()) - .catch((error) => console.error("Could not release Git metadata listener:", error)); - for (const watchId of watchIds.values()) void release(watchId); + stopped = true; + window.removeEventListener("focus", reconcile); + unsubscribeRepositories(); unsubscribeRoots(); + void listener.then((unlisten) => unlisten()).catch(console.error); + for (const [key, entry] of entries) retire(key, entry); }; - }, [workspaceId, pathsKey]); + }, []); return null; } diff --git a/windows/tauri/src/features/git/runtime/git-status-refresh-host.test.tsx b/windows/tauri/src/features/git/runtime/git-status-refresh-host.test.tsx index 177c42ac97..8baa5960bf 100644 --- a/windows/tauri/src/features/git/runtime/git-status-refresh-host.test.tsx +++ b/windows/tauri/src/features/git/runtime/git-status-refresh-host.test.tsx @@ -184,7 +184,7 @@ test("metadata watches cover every repository, replace links and release all ide ([command]) => command === "watch_git_repository", ); expect(replacementWatches).toHaveLength(4); - expect(new Set(replacementWatches.map(([, args]) => args!.watchId)).size).toBe(2); + expect(new Set(replacementWatches.map(([, args]) => args!.watchId)).size).toBe(4); await act(async () => { root!.unmount(); }); @@ -192,7 +192,8 @@ test("metadata watches cover every repository, replace links and release all ide const releasedIds = nativeInvoke.mock.calls .filter(([command]) => command === "unwatch_git_repository") .map(([, args]) => args!.watchId); - for (const id of ids) expect(releasedIds.filter((released) => released === id)).toHaveLength(2); + for (const id of ids) expect(releasedIds.filter((released) => released === id)).toHaveLength(1); + expect(new Set(releasedIds).size).toBe(4); expect(unlisten).toHaveBeenCalledTimes(1); }, 1000); @@ -222,3 +223,24 @@ test("a native watch that finishes after unmount is released again", async () => await watchGate; } }, 1000); + + +test("background runtime keeps its Git watches through activation and releases only on close", async () => { + const background = workspaceRuntimeRegistry.ensureWorkspace({id: "git-background", name: "background"}, "ready"); + useRepositoryStore.getStore(background.descriptor.id).setState({availableRepoPaths: ["D:/background"], activeRepoPath: "D:/background"}); + const native = mock(async (_command: string, _args?: Record) => undefined); + spies.push(spyOn(tauriCore, "invoke").mockImplementation(native as typeof tauriCore.invoke), spyOn(tauriEvents, "listen").mockResolvedValue(() => {})); + await mount(); + const watches = native.mock.calls.filter(([command]) => command === "watch_git_repository"); + expect(watches).toHaveLength(2); + expect(new Set(watches.map(([, args]) => args!.runtimeId)).size).toBe(2); + await act(async () => workspaceRuntimeRegistry.activateWorkspace(background.descriptor, "ready")); + expect(native.mock.calls.filter(([command]) => command === "unwatch_git_repository")).toHaveLength(0); + await act(async () => { + workspaceRuntimeRegistry.activateWorkspace({id: "workspace:welcome", name: "welcome"}, "ready"); + workspaceRuntimeRegistry.removeWorkspace(background.descriptor.id); + }); + const released = native.mock.calls.filter(([command]) => command === "unwatch_git_repository"); + expect(released).toHaveLength(1); + expect(released[0]![1]!.watchId).toBe(watches.find(([, args]) => args!.repoPath === "D:/background")![1]!.watchId); +}); diff --git a/windows/tauri/src/features/workspace/runtime/workspace-runtime-registry.ts b/windows/tauri/src/features/workspace/runtime/workspace-runtime-registry.ts index 7c45ffa91e..1171b5f6bf 100644 --- a/windows/tauri/src/features/workspace/runtime/workspace-runtime-registry.ts +++ b/windows/tauri/src/features/workspace/runtime/workspace-runtime-registry.ts @@ -56,6 +56,8 @@ export class WorkspaceRuntimeRegistry { return; } + // Install the freshness barrier before activation notifies query consumers. + this.runtimes.get(descriptor.id)?.invalidateIndexing?.(); this.activeWorkspaceId = descriptor.id; this.emitChange(); } @@ -97,6 +99,11 @@ export class WorkspaceRuntimeRegistry { return this.runtimes.get(id); } + /** Snapshot existing lifetimes without instantiating stores for closed projects. */ + getWorkspaces() { + return [...this.runtimes.values()]; + } + getExistingStores(key: string) { return [...this.runtimes.values()] .map((runtime) => runtime.stores.get(key)) diff --git a/windows/tauri/src/features/workspace/types/workspace-runtime.types.ts b/windows/tauri/src/features/workspace/types/workspace-runtime.types.ts index 85e743d185..db7e17cf51 100644 --- a/windows/tauri/src/features/workspace/types/workspace-runtime.types.ts +++ b/windows/tauri/src/features/workspace/types/workspace-runtime.types.ts @@ -16,4 +16,5 @@ export interface WorkspaceRuntime { error?: string; stores: Map>; disposeIndexing?: () => Promise; + invalidateIndexing?: () => void; } From 98213473b4085db76221c8d59563045e60809301 Mon Sep 17 00:00:00 2001 From: xueyeshang1 Date: Sun, 1 Nov 2026 11:10:47 +0800 Subject: [PATCH 16/27] test(windows): use canonical roots in indexing lifecycle fixtures --- ...026-10-28-workspace-indexing-exclusions.md | 15 ++ .../workspace-indexing-exclusions.json | 2 +- windows/tauri/src-tauri/src/core.rs | 160 +++++++++++++++--- 3 files changed, 156 insertions(+), 21 deletions(-) diff --git a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md index a14d50b975..1d19f1b1cd 100644 --- a/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md +++ b/.agents/notes/implemented/architecture/2026-10-28-workspace-indexing-exclusions.md @@ -402,6 +402,21 @@ macOS 使用最新构建的可执行及 Swift 资源,组装独立 QA bundle, `cgWindowNotFound` / `noWindowsAvailable`,第二方向菜单和重启后的界面检查未完成, 这部分不以 fixture 或历史 UI 结果代替。QA 包的来源身份与运行前后清单单独记录。 + +2026-11-01,源码 `18841d18` 的 Windows CI 已通过前端、共享 Core 和真实 JDT, +宿主测试在 `completed_write_keeps_success_when_a_watcher_invalidates_its_root` +失败。原因是测试把请求中的 `C:/…` 直接作为刷新表键;生产边界已将路径转为 +规范化身份,Windows 的规范化路径与该原始字符串不同。相邻租约和刷新测试也 +有同样假设,不能只把首个 `unwrap` 改成忽略缺失状态。 + +宿主测试改用独立真实临时目录,请求刻意携带 `/.` 别名,表内检查使用独立 +`std::fs::canonicalize` 得到的期望身份,保留在途失效、拒绝旧结果和已完成写入 +仍成功的断言。新增别名与规范化路径共用刷新状态、最后一个租约释放才回收的 +回归;夹具在断言失败时也释放表内所有权和临时目录。生产查找仍要求调用者先 +规范化,不在仅查内存的 getter 里重复文件系统操作。没有改变生产逻辑、等待 +预算或 CI 跳过规则;按用户要求不在本机运行 Windows 测试,执行证据由修复 +提交的 Windows CI 提供,不能沿用 `18841d18` 的部分成功结果。 + ## 适用范围 - `rust/lithe-core/src/project/indexing.rs` diff --git a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json index 9d363104e6..837613cfd0 100644 --- a/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json +++ b/shared/platform-feature-matrix/features/workspace-indexing-exclusions.json @@ -4,7 +4,7 @@ "group": "工作区生命周期", "capability": "目录索引排除与 Git 自动排除", "owner": "Workspace", - "verification": "本轮整合基线4e47d784后的目录动作、租约刷新及监听所有权补修随本记录提交到PR1597,准确提交身份见PR说明;本地源码哈希与验证报告保存在.artifacts/pr1597-final-verification。Core完整门禁、桥接、Swift聚焦33条和静态门禁通过。macOS独立QA已验证Git忽略→取消排除→源码角色、真实搜索与落盘例外;自动化窗口连接故障使第二方向菜单和重启界面验收未完成。用户要求本机不进行Windows测试,最新LSP所有权和在途编辑补修仅静态检查/审查,新增回归未运行;此前Bun79、project Rust41、宿主5条组件结果不覆盖后续源码,也不代替Windows A/B切换、多仓库、共享根和LSP恢复原生验收。两端本轮验证保持pending,历史记录按各自源码阅读。 较早本地验收阶段未执行 Windows/Frontend 测试;用户随后授权 Ready 触发完整自动 CI,原生界面验证仍单独记录。整合 preview a1ed8f4c 后,补修源码921c888c通过完整Core1484项、本机Swift6.4.2/Xcode27.2受影响182条(含完整Git观察28条)、Rust↔Swift桥接及Core边界检查;编译与测试按现有CI分离,未放宽计时预算。完整开发App原生验收确认排除目录与后代仍可浏览并显示排除图标,冷JDT仅导入visible且实际返回PrintStream补全,外部stage/commit自动更新且JDT和补全保持;用户操作取消排除后由代理核验搜索、落盘、重启持久化及A/B项目查询与关闭隔离。损坏配置随App语言中英即时切换且原值保留,修正后显式重试成功;真实权限失败分别显示中英文错误,权限恢复后观察到项目重载,代理未点击该流程的Retry。1419包文件/9符号链接及签名不变;QA/JDT/辅助进程清理,用户Dev保留,开发偏好精确恢复,新增缓存归档。4e7b8441的插件512条及合成库存10202/201剪枝结果保留原版本,不能当作UI或LSP后台性能基准。较早源码的普通角色、linked-worktree和子模块原生证据见Note。macOS在上述能力范围完成本机运行验证,固定Xcode26.6完整CI与本机结果分别核对;Windows新回归仅书写和静态复审,原生仍pending。Java显式构建模块仍可能扫描,Go/Rust配置送达不等于后台零扫描。 后续补修内容搜索首次请求、加载更多及索引状态的错误呈现:保存类型化错误,按当前语言使用共享词条,不拼接内部错误码;本机Bun1.3.13的19条逐项计时及TypeScript检查通过,损坏偏好保留、语言切换不重搜及加载更多保留结果有回归。真实页面有结果时显示紧凑错误和重试,失败暂停自动翻页;新增回归接入Windows CI隔离分组;该补修的固定工具链及Windows CI按对应提交的PR报告单独记录,Windows原生界面保持pending。 批量Run夹具增加首扫完成与快照UUID同步,本机Swift6.4.2完整Run入口21条通过,固定工具链结果以对应PR提交报告为准。 继而统一全部10处Run/Debug/单项/批量/服务/重启首次库存发布:在主actor空闲边界释放库存,重查排队刷新状态并核验准确快照UUID,保留刻意门控的调用方刷新任务;本机完整Run入口21条在三个独立进程中通过。 目录标记读取由树与索引配置共用版本、结构、角色和相对路径校验,真实内容搜索API回归用于核验非法JSON、空结构、null、错误marks类型及越界路径均显示共享中英错误,切语言不重搜、不调用Core安装空策略、不覆盖原始存储。", + "verification": "2026-11-01:18841d18的Windows前端、共享Core和真实JDT通过,宿主测试因原始路径与规范化刷新表键混用失败。后续仅修正宿主测试:真实临时目录、请求别名与规范化身份分离、共享刷新状态和最后租约释放回归、失败清理;生产代码及预算不变。静态门禁和只读审查通过,本机Windows测试按用户要求不运行,修复后的Windows CI另按提交核验,原生产品验收仍pending。 本轮整合基线4e47d784后的目录动作、租约刷新及监听所有权补修随本记录提交到PR1597,准确提交身份见PR说明;本地源码哈希与验证报告保存在.artifacts/pr1597-final-verification。Core完整门禁、桥接、Swift聚焦33条和静态门禁通过。macOS独立QA已验证Git忽略→取消排除→源码角色、真实搜索与落盘例外;自动化窗口连接故障使第二方向菜单和重启界面验收未完成。用户要求本机不进行Windows测试,最新LSP所有权和在途编辑补修仅静态检查/审查,新增回归未运行;此前Bun79、project Rust41、宿主5条组件结果不覆盖后续源码,也不代替Windows A/B切换、多仓库、共享根和LSP恢复原生验收。两端本轮验证保持pending,历史记录按各自源码阅读。 较早本地验收阶段未执行 Windows/Frontend 测试;用户随后授权 Ready 触发完整自动 CI,原生界面验证仍单独记录。整合 preview a1ed8f4c 后,补修源码921c888c通过完整Core1484项、本机Swift6.4.2/Xcode27.2受影响182条(含完整Git观察28条)、Rust↔Swift桥接及Core边界检查;编译与测试按现有CI分离,未放宽计时预算。完整开发App原生验收确认排除目录与后代仍可浏览并显示排除图标,冷JDT仅导入visible且实际返回PrintStream补全,外部stage/commit自动更新且JDT和补全保持;用户操作取消排除后由代理核验搜索、落盘、重启持久化及A/B项目查询与关闭隔离。损坏配置随App语言中英即时切换且原值保留,修正后显式重试成功;真实权限失败分别显示中英文错误,权限恢复后观察到项目重载,代理未点击该流程的Retry。1419包文件/9符号链接及签名不变;QA/JDT/辅助进程清理,用户Dev保留,开发偏好精确恢复,新增缓存归档。4e7b8441的插件512条及合成库存10202/201剪枝结果保留原版本,不能当作UI或LSP后台性能基准。较早源码的普通角色、linked-worktree和子模块原生证据见Note。macOS在上述能力范围完成本机运行验证,固定Xcode26.6完整CI与本机结果分别核对;Windows新回归仅书写和静态复审,原生仍pending。Java显式构建模块仍可能扫描,Go/Rust配置送达不等于后台零扫描。 后续补修内容搜索首次请求、加载更多及索引状态的错误呈现:保存类型化错误,按当前语言使用共享词条,不拼接内部错误码;本机Bun1.3.13的19条逐项计时及TypeScript检查通过,损坏偏好保留、语言切换不重搜及加载更多保留结果有回归。真实页面有结果时显示紧凑错误和重试,失败暂停自动翻页;新增回归接入Windows CI隔离分组;该补修的固定工具链及Windows CI按对应提交的PR报告单独记录,Windows原生界面保持pending。 批量Run夹具增加首扫完成与快照UUID同步,本机Swift6.4.2完整Run入口21条通过,固定工具链结果以对应PR提交报告为准。 继而统一全部10处Run/Debug/单项/批量/服务/重启首次库存发布:在主actor空闲边界释放库存,重查排队刷新状态并核验准确快照UUID,保留刻意门控的调用方刷新任务;本机完整Run入口21条在三个独立进程中通过。 目录标记读取由树与索引配置共用版本、结构、角色和相对路径校验,真实内容搜索API回归用于核验非法JSON、空结构、null、错误marks类型及越界路径均显示共享中英错误,切语言不重搜、不调用Core安装空策略、不覆盖原始存储。", "macos": { "implementationStatus": "partial", "verificationStatus": "pending", diff --git a/windows/tauri/src-tauri/src/core.rs b/windows/tauri/src-tauri/src/core.rs index 7d22937a11..b7784f15c9 100644 --- a/windows/tauri/src-tauri/src/core.rs +++ b/windows/tauri/src-tauri/src/core.rs @@ -443,12 +443,65 @@ mod indexing_tests { use super::*; use serde_json::{json, Value}; use std::cell::RefCell; + use std::path::PathBuf; + use std::sync::atomic::{AtomicU64, Ordering}; + + static NEXT_FIXTURE: AtomicU64 = AtomicU64::new(0); + + struct IndexingFixture { + owner: String, + directory: PathBuf, + } + + impl IndexingFixture { + fn new(label: &str) -> Self { + let owner = format!( + "lithe-indexing-{label}-{}-{}", + std::process::id(), + NEXT_FIXTURE.fetch_add(1, Ordering::Relaxed) + ); + let directory = std::env::temp_dir().join(&owner); + std::fs::create_dir(&directory).expect("create indexing fixture directory"); + Self { owner, directory } + } + + fn request_root(&self) -> String { + // A lexical alias forces the test to distinguish a request path from its + // registry identity on every platform, including Windows verbatim paths. + format!("{}/.", self.directory.display()) + } + + fn canonical_root(&self) -> String { + std::fs::canonicalize(&self.directory) + .expect("canonicalize indexing fixture directory") + .to_string_lossy() + .into_owned() + } + } + + impl Drop for IndexingFixture { + fn drop(&mut self) { + { + let mut owners = indexing_owners() + .lock() + .unwrap_or_else(|error| error.into_inner()); + owners.closed.remove(&self.owner); + owners.leases.remove(&self.owner); + prune_refreshes(&mut owners); + } + if let Err(error) = std::fs::remove_dir_all(&self.directory) { + eprintln!("Could not remove indexing fixture directory: {error}"); + } + } + } #[test] fn native_destruction_reclaims_an_installation_that_finishes_after_close() { - let owner = "indexing-close-during-install"; + let fixture = IndexingFixture::new("close-during-install"); + let owner = fixture.owner.as_str(); + let root = fixture.request_root(); let calls = RefCell::new(Vec::::new()); - let response = execute_for_window(owner, &json!({"id":"late", "command":"workspace.configureIndexing", "payload":{"root":"C:/fixture", "ownerId":"workspace-one"}}).to_string(), |request| { + let response = execute_for_window(owner, &json!({"id":"late", "command":"workspace.configureIndexing", "payload":{"root":root, "ownerId":"workspace-one"}}).to_string(), |request| { let value: Value = serde_json::from_str(request).unwrap(); calls.borrow_mut().push(value.clone()); if value["command"] == "workspace.configureIndexing" { @@ -466,16 +519,16 @@ mod indexing_tests { ); assert_eq!(calls[1]["command"], "workspace.releaseIndexing"); assert_eq!(calls[1]["payload"]["revision"], 7); - let mut owners = indexing_owners().lock().unwrap(); - owners.closed.remove(owner); - owners.leases.remove(owner); + assert!(root_refresh(&fixture.canonical_root()).is_none()); } #[test] fn late_release_keeps_the_new_native_cleanup_token() { - let owner = "indexing-late-release"; + let fixture = IndexingFixture::new("late-release"); + let owner = fixture.owner.as_str(); + let root = fixture.request_root(); let request = |command: &str, revision: u64| { - json!({"command":command,"payload":{"root":"C:/fixture","ownerId":"workspace-one","revision":revision}}).to_string() + json!({"command":command,"payload":{"root":root,"ownerId":"workspace-one","revision":revision}}).to_string() }; for revision in [1, 2] { execute_for_window(owner, &request("workspace.configureIndexing", 0), |_| { @@ -485,24 +538,25 @@ mod indexing_tests { execute_for_window(owner, &request("workspace.releaseIndexing", 1), |_| { json!({"ok":true,"data":{"released":false}}).to_string() }); - let mut owners = indexing_owners().lock().unwrap(); + let owners = indexing_owners().lock().unwrap(); assert_eq!( - owners.leases[owner][&("C:/fixture".into(), format!("{owner}/workspace-one"))], + owners.leases[owner][&(fixture.canonical_root(), format!("{owner}/workspace-one"))], 2 ); - owners.leases.remove(owner); } #[test] fn events_during_first_configuration_refresh_before_returning_without_new_tokens() { - let owner = "first-configuration-event"; - let root = "C:/first-configuration-event"; + let fixture = IndexingFixture::new("first-configuration-event"); + let owner = fixture.owner.as_str(); + let root = fixture.request_root(); + let canonical_root = fixture.canonical_root(); let calls = RefCell::new(Vec::new()); let response = execute_for_window(owner, &json!({"id":"configure", "command":"workspace.configureIndexing", "payload":{"root":root,"ownerId":"runtime"}}).to_string(), |request| { let request: Value = serde_json::from_str(request).unwrap(); let command = request["command"].as_str().unwrap().to_owned(); calls.borrow_mut().push(command.clone()); - if calls.borrow().len() == 1 { root_refresh(root).unwrap().invalidate(); } + if calls.borrow().len() == 1 { root_refresh(&canonical_root).expect("canonical root must be registered").invalidate(); } json!({"ok":true,"data":{"revision":7,"excludedDirectories":{"archive":"git"},"gitIgnoreFailed":false}}).to_string() }); assert_eq!( @@ -518,20 +572,24 @@ mod indexing_tests { ] ); execute_for_window(owner, &json!({"command":"workspace.releaseIndexing","payload":{"root":root,"ownerId":"runtime","revision":7}}).to_string(), |_| json!({"ok":true,"data":{"released":true}}).to_string()); - assert!(root_refresh(root).is_none()); + assert!(root_refresh(&canonical_root).is_none()); } #[test] fn query_cannot_publish_a_result_superseded_by_an_event() { - let owner = "query-event"; - let root = "C:/query-event"; + let fixture = IndexingFixture::new("query-event"); + let owner = fixture.owner.as_str(); + let root = fixture.request_root(); + let canonical_root = fixture.canonical_root(); execute_for_window(owner, &json!({"command":"workspace.configureIndexing","payload":{"root":root,"ownerId":"runtime"}}).to_string(), |_| json!({"ok":true,"data":{"revision":4}}).to_string()); let result = execute_for_window( owner, &json!({"id":"query","command":"workspace.snapshot","payload":{"root":root}}) .to_string(), |_| { - root_refresh(root).unwrap().invalidate(); + root_refresh(&canonical_root) + .expect("canonical root must be registered") + .invalidate(); json!({"ok":true,"data":{"files":["stale"]}}).to_string() }, ); @@ -544,8 +602,10 @@ mod indexing_tests { #[test] fn completed_write_keeps_success_when_a_watcher_invalidates_its_root() { - let owner = "write-event"; - let root = "C:/write-event"; + let fixture = IndexingFixture::new("write-event"); + let owner = fixture.owner.as_str(); + let root = fixture.request_root(); + let canonical_root = fixture.canonical_root(); execute_for_window(owner, &json!({"command":"workspace.configureIndexing","payload":{"root":root,"ownerId":"runtime"}}).to_string(), |_| json!({"ok":true,"data":{"revision":5}}).to_string()); let expected = json!({"id":"write","ok":true,"data":{"saved":true}}).to_string(); let response = execute_for_window( @@ -553,11 +613,71 @@ mod indexing_tests { &json!({"id":"write","command":"runConfig.saveEditorChanges","payload":{"root":root}}) .to_string(), |_| { - root_refresh(root).unwrap().invalidate(); + root_refresh(&canonical_root) + .expect("canonical root must be registered") + .invalidate(); expected.clone() }, ); assert_eq!(response, expected); execute_for_window(owner, &json!({"command":"workspace.releaseIndexing","payload":{"root":root,"ownerId":"runtime","revision":5}}).to_string(), |_| json!({"ok":true,"data":{"released":true}}).to_string()); } + + #[test] + fn request_path_aliases_share_refresh_state_until_the_last_lease_is_released() { + let fixture = IndexingFixture::new("path-aliases"); + let owner = fixture.owner.as_str(); + let alias = fixture.request_root(); + let canonical = fixture.canonical_root(); + assert_ne!(alias, canonical); + let configure = |root: &str, runtime: &str, revision: u64| { + execute_for_window( + owner, + &json!({"command":"workspace.configureIndexing", + "payload":{"root":root,"ownerId":runtime}}) + .to_string(), + |request| { + let request: Value = serde_json::from_str(request).unwrap(); + assert_eq!(request["payload"]["root"], canonical); + json!({"ok":true,"data":{"revision":revision}}).to_string() + }, + ) + }; + assert_eq!( + serde_json::from_str::(&configure(&alias, "first", 11)).unwrap()["ok"], + true + ); + let state = root_refresh(&canonical).expect("first holder registers the canonical root"); + assert_eq!( + serde_json::from_str::(&configure(&canonical, "second", 12)).unwrap()["ok"], + true + ); + assert!(Arc::ptr_eq(&state, &root_refresh(&canonical).unwrap())); + assert!( + root_refresh(&alias).is_none(), + "the registry must not create a second lexical-path entry" + ); + + for (root, runtime, revision) in [(&alias, "first", 11), (&canonical, "second", 12)] { + let response = execute_for_window( + owner, + &json!({"command":"workspace.releaseIndexing", + "payload":{"root":root,"ownerId":runtime,"revision":revision}}) + .to_string(), + |request| { + let request: Value = serde_json::from_str(request).unwrap(); + assert_eq!(request["payload"]["root"], canonical); + json!({"ok":true,"data":{"released":true}}).to_string() + }, + ); + assert_eq!( + serde_json::from_str::(&response).unwrap()["data"]["released"], + true + ); + if runtime == "first" { + assert!(Arc::ptr_eq(&state, &root_refresh(&canonical).unwrap())); + } + } + assert!(root_refresh(&canonical).is_none()); + } } From 7eeb4b327c02ec66b423fe5ef776b0814bad4d14 Mon Sep 17 00:00:00 2001 From: xueyeshang1 Date: Sun, 1 Nov 2026 11:47:36 +0800 Subject: [PATCH 17/27] test(windows): identify the owned Run fixture descendant explicitly --- ...-10-14-child-processes-end-with-the-ide.md | 1 + .../features/run-processes-end-with-ide.json | 2 +- windows/tauri/src-tauri/src/run.rs | 47 ++++++++++++++++--- 3 files changed, 42 insertions(+), 8 deletions(-) diff --git a/.agents/notes/implemented/bug-fix/2026-10-14-child-processes-end-with-the-ide.md b/.agents/notes/implemented/bug-fix/2026-10-14-child-processes-end-with-the-ide.md index 3b9f3404f0..3969bb1431 100644 --- a/.agents/notes/implemented/bug-fix/2026-10-14-child-processes-end-with-the-ide.md +++ b/.agents/notes/implemented/bug-fix/2026-10-14-child-processes-end-with-the-ide.md @@ -101,6 +101,7 @@ Windows 原来有五个漏洞,叠在一起导致“关闭 Lithe 后服务还 - `rust/lithe-git-host/tests/process.rs`:`process_tree_terminate_ends_the_root_and_its_descendants` 启动一个会再启动后代的进程,确认 `terminate` 返回时两者都已结束;Windows 上 `dropping_a_process_tree_ends_it_like_a_crashed_host` 只丢弃句柄,确认内核结束整组。 - `windows/tauri/src-tauri/src/run.rs` 测试(仅 Windows):关闭一个窗口只结束它自己的进程树、丢弃会话等同 Lithe 崩溃、原生列表按启动顺序包含全部会话。 - Windows CI 39919376382 在关闭窗口和丢弃会话两例中,根进程已退出,但立即读取的 `sysinfo` 快照仍包含后代 PID。测试改为停止前打开后代的只等待句柄,停止后分别在两秒内等待根进程和后代的退出信号;另一窗口的后代用零等待确认仍在运行。依据 [Windows 进程终止语义](https://learn.microsoft.com/en-us/windows/win32/procthread/terminating-a-process),退出进程的对象可以因尚未关闭的句柄而继续存在,进程退出信号才是结束依据。保留原来的窗口隔离、重复关闭和崩溃清理断言,不改产品停止流程。夹具的首字节就绪信号有两秒期限,失败路径和断言展开时也按所属会话清理进程树、等待退出并释放管道和句柄;不依赖任意睡眠或 PID 重查。 + - Windows CI 41268131032 暴露了另一处夹具身份缺口:Job 已确认清空,但测试从同父 PID 的无序快照中任取第一个进程,无法证明所等句柄属于夹具启动的 `ping.exe`。现在要求父 PID 与进程名同时匹配且候选唯一;没有或有多个匹配时携带候选 PID、名称报错,不跳过断言。`cmd /D` 禁用用户 AutoRun,首字节仍由 ping 提供;确定性回归覆盖快照顺序、名称大小写、缺失及歧义。停止前持有句柄、窗口隔离、崩溃回收与全部等待期限不变;原日志未记录候选身份,不能据此断言误选了哪一个进程。本机不执行 Windows 测试,三个原生生命周期用例及身份选择回归由 Windows CI 验证。 - `rust/lithe-core/src/lsp/interface/process.rs` 测试(仅 Windows):结束批处理启动的语言服务器时,脚本启动的子进程一起结束。 - `shared/fixtures/process-lifecycle/exit-plan-v1.json`、`settle-v1.json`:运行服务在退出、关闭项目、直接停止设置和崩溃恢复下的动作;macOS `ProcessLifecycleFixtureTests` 用 Swift 类型解码同一批 fixture,并覆盖提问顺序、取消和规则失败时仍询问。 - `windows/tauri/src/features/window/services/run-services-exit.test.ts`:询问、取消、停止失败后重试、直接停止、后台任务不询问、Core 不可用时询问。 diff --git a/shared/platform-feature-matrix/features/run-processes-end-with-ide.json b/shared/platform-feature-matrix/features/run-processes-end-with-ide.json index f25185c1fc..45ab2339d3 100644 --- a/shared/platform-feature-matrix/features/run-processes-end-with-ide.json +++ b/shared/platform-feature-matrix/features/run-processes-end-with-ide.json @@ -43,6 +43,6 @@ "verificationStatus": "pending" }, "owner": "Run", - "verification": "运行一个长驻服务(如 Spring Boot)、一个 setsid 脱离的后台进程和一个忽略终止信号的程序,分别通过菜单退出、更新重启和对主进程 kill -9 关闭 IDE,确认除用户选择保留的项目外,带本实例 LITHE_PROCESS_SCOPE 的进程全部退出、端口已释放;主进程和监护进程同时被结束后再次启动,确认残留进程出现在启动清扫确认中。 Windows Run 原生测试在停止前持有后代进程句柄,以两秒退出信号确认根进程和后代结束,以零等待确认另一窗口仍在运行;首字节就绪等待有界,夹具在断言失败时也清理所属进程树。", + "verification": "运行一个长驻服务(如 Spring Boot)、一个 setsid 脱离的后台进程和一个忽略终止信号的程序,分别通过菜单退出、更新重启和对主进程 kill -9 关闭 IDE,确认除用户选择保留的项目外,带本实例 LITHE_PROCESS_SCOPE 的进程全部退出、端口已释放;主进程和监护进程同时被结束后再次启动,确认残留进程出现在启动清扫确认中。 Windows Run 原生测试按父 PID 和 ping.exe 名称唯一识别夹具后代,覆盖快照乱序、大小写、缺失和歧义;停止前持有该后代进程句柄,以两秒退出信号确认根进程和后代结束,以零等待确认另一窗口仍在运行;cmd 禁用 AutoRun,首字节就绪等待有界,夹具在断言失败时也清理所属进程树。", "notes": "macOS 用 LITHE_PROCESS_SCOPE 标记本实例启动的进程,退出时做最终清扫;崩溃由随应用启动的监护进程兜底(Agent 任务和后台服务留到下次启动再确认)。分类规则在 Rust Core(processLifecycle.inventory),Windows 可直接复用。两端在关闭项目或窗口、退出、安装更新前按 Rust Core 的 runServicesOnExit 规则列出运行服务并询问(可设为直接停止)。Windows 的运行会话、调试适配器和语言服务器放在 Job Object 中,停止和 IDE 崩溃时都按整组结束;菜单退出走窗口关闭守卫,更新安装前先停止运行服务。Windows 终端和 Agent 进程树尚未放入 Job Object,也没有监护进程和启动清扫,IDE 崩溃时它们仍可能残留。" } diff --git a/windows/tauri/src-tauri/src/run.rs b/windows/tauri/src-tauri/src/run.rs index 210aeaef78..7cb8d6e5a9 100644 --- a/windows/tauri/src-tauri/src/run.rs +++ b/windows/tauri/src-tauri/src/run.rs @@ -1197,7 +1197,6 @@ pub fn cleanup_legacy_appdata(app: &AppHandle) { } } - fn workspace_relative(root: &Path, path: &Path) -> Option { path.strip_prefix(root) .ok() @@ -3772,7 +3771,7 @@ mod tests { use windows_sys::Win32::System::Threading::{OpenProcess, PROCESS_SYNCHRONIZE}; let mut command = Command::new("cmd"); command - .args(["/C", "ping -n 30 127.0.0.1"]) + .args(["/D", "/C", "ping -n 30 127.0.0.1"]) .stdout(Stdio::piped()); ProcessTree::prepare(&mut command); let mut child = command.spawn().expect("spawn service"); @@ -3818,9 +3817,10 @@ mod tests { reader.join().expect("join ready fixture reader"); fixture.output = Some(stdout); result.expect("service descendant output"); - let descendant = *child_process_ids(fixture.root.id()) - .first() - .expect("service descendant"); + // A parent PID can also match console helpers. Select the + // fixture's ping explicitly, independently of snapshot iteration order. + let descendant = fixture_descendant_pid(&child_processes(fixture.root.id())) + .expect("unique service descendant"); // Capture identity before stopping the job: PID snapshots can still list // an exited process, and a later lookup can race PID reuse. // SAFETY: PROCESS_SYNCHRONIZE grants only waiting; this opens a @@ -3837,17 +3837,50 @@ mod tests { } #[cfg(windows)] - fn child_process_ids(parent: u32) -> Vec { + fn child_processes(parent: u32) -> Vec<(u32, String)> { let mut system = sysinfo::System::new(); system.refresh_processes(sysinfo::ProcessesToUpdate::All, true); system .processes() .values() .filter(|process| process.parent() == Some(sysinfo::Pid::from_u32(parent))) - .map(|process| process.pid().as_u32()) + .map(|process| { + ( + process.pid().as_u32(), + process.name().to_string_lossy().into_owned(), + ) + }) .collect() } + #[cfg(windows)] + fn fixture_descendant_pid(children: &[(u32, String)]) -> Result { + let matches = children + .iter() + .filter(|(_, name)| name.eq_ignore_ascii_case("ping.exe")) + .map(|(pid, _)| *pid) + .collect::>(); + match matches.as_slice() { + [pid] => Ok(*pid), + _ => Err(format!( + "expected one ping.exe child, found {matches:?}; child processes: {children:?}" + )), + } + } + + #[cfg(windows)] + #[test] + fn fixture_descendant_selection_requires_a_unique_ping_process() { + let mut children = vec![(41, "conhost.exe".into()), (42, "PING.EXE".into())]; + assert_eq!(fixture_descendant_pid(&children).unwrap(), 42); + children.reverse(); + assert_eq!(fixture_descendant_pid(&children).unwrap(), 42); + assert!(fixture_descendant_pid(&[]).is_err()); + assert!(fixture_descendant_pid(&[(41, "conhost.exe".into())]).is_err()); + children.push((43, "ping.exe".into())); + assert!(fixture_descendant_pid(&children).is_err()); + } + #[cfg(windows)] #[test] fn window_release_ends_its_process_trees_and_keeps_other_windows() { From ae0c12d2c9cd7627702614b3792b39e2287780fc Mon Sep 17 00:00:00 2001 From: Xiaoyumuxi <23722032@bjtu.edu.cn> Date: Sun, 1 Nov 2026 12:12:57 +0800 Subject: [PATCH 18/27] =?UTF-8?q?feat(macos):=20=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=A0=8F=E5=86=85=E5=AD=98=E5=8F=AA=E6=98=BE=E7=A4=BA=E5=9B=BE?= =?UTF-8?q?=E6=A0=87=EF=BC=8C=E5=B8=A7=E7=8E=87=E5=8E=BB=E6=8E=89=E5=9B=BE?= =?UTF-8?q?=E6=A0=87=E5=B9=B6=E6=94=B6=E7=B4=A7=E9=97=B4=E8=B7=9D=20(#1630?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 内存指示器只保留内存芯片图标,不再常驻显示“总计 / Lithe”数值; 悬停提示仍给出总计、Lithe、LSP、服务内存,点击打开原有的托管内存详情, VoiceOver 读出“托管内存”和当前总计。 - 帧率只显示“60 FPS”文字,去掉速度表图标。 - 新增 18pt 的状态栏紧凑图标按钮样式,只读锁和内存图标改用它, 不再沿用 28pt 工具窗口按钮留出的大块空白。 - 删除不再使用的 "Total %@" 词条并重新生成本地化资源。 - 更新 memory-monitor 功能矩阵的 macOS 证据与验收说明。 --- macos/Resources/en.lproj/Localizable.strings | 2 -- .../zh-Hans.lproj/Localizable.strings | 2 -- macos/Sources/Lithe/Theme/LitheTheme.swift | 14 ++++++++ .../Workbench/WorkbenchStatusViews.swift | 32 +++++++------------ .../Lithe/Views/Workbench/WorkbenchView.swift | 2 +- shared/i18n/locales/en-US.json | 1 - shared/i18n/locales/zh-CN.json | 1 - shared/i18n/messages.json | 16 ---------- .../features/memory-monitor.json | 5 +-- 9 files changed, 30 insertions(+), 45 deletions(-) diff --git a/macos/Resources/en.lproj/Localizable.strings b/macos/Resources/en.lproj/Localizable.strings index d4a91515b2..d77bb0887a 100644 --- a/macos/Resources/en.lproj/Localizable.strings +++ b/macos/Resources/en.lproj/Localizable.strings @@ -4325,7 +4325,6 @@ "Tools" = "Tools"; "Tools sent" = "Tools sent"; "Total" = "Total"; -"Total %@" = "Total %@"; "Total tokens: %@" = "Total tokens: %@"; "Tracking %@" = "Tracking %@"; "Tracking Branch" = "Tracking Branch"; @@ -9053,7 +9052,6 @@ "native.tools" = "Tools"; "native.toolsSent" = "Tools sent"; "native.total" = "Total"; -"native.total.variant2" = "Total %1$@"; "native.totalTokens" = "Total tokens: %1$@"; "native.tracking" = "Tracking %1$@"; "native.trackingBranch" = "Tracking Branch"; diff --git a/macos/Resources/zh-Hans.lproj/Localizable.strings b/macos/Resources/zh-Hans.lproj/Localizable.strings index ca32b7f055..f716ce8e46 100644 --- a/macos/Resources/zh-Hans.lproj/Localizable.strings +++ b/macos/Resources/zh-Hans.lproj/Localizable.strings @@ -4325,7 +4325,6 @@ "Tools" = "工具"; "Tools sent" = "发送的工具"; "Total" = "总计"; -"Total %@" = "总计 %@"; "Total tokens: %@" = "总 token:%@"; "Tracking %@" = "跟踪 %@"; "Tracking Branch" = "跟踪的分支"; @@ -9053,7 +9052,6 @@ "native.tools" = "工具"; "native.toolsSent" = "发送的工具"; "native.total" = "总计"; -"native.total.variant2" = "总计 %1$@"; "native.totalTokens" = "总 token:%1$@"; "native.tracking" = "跟踪 %1$@"; "native.trackingBranch" = "跟踪的分支"; diff --git a/macos/Sources/Lithe/Theme/LitheTheme.swift b/macos/Sources/Lithe/Theme/LitheTheme.swift index b11a7c962a..1203f3dde0 100644 --- a/macos/Sources/Lithe/Theme/LitheTheme.swift +++ b/macos/Sources/Lithe/Theme/LitheTheme.swift @@ -986,6 +986,9 @@ enum LitheTheme { static let toolbarHeight: CGFloat = 40 static let toolWindowHeaderHeight: CGFloat = 41 static let statusBarHeight: CGFloat = 24 + // Status bar icon widgets stay inside the 24pt bar so neighbouring + // items do not inherit the 28pt tool-window hit box as empty gaps. + static let statusBarIconButtonSize: CGFloat = 18 static let cornerRadius: CGFloat = 5 static let popupShadowRadius: CGFloat = 30 static let popupShadowOffsetY: CGFloat = 14 @@ -1050,6 +1053,17 @@ extension View { .lithePointer() } + /// Compact icon button for status bar widgets; inherits the bar's + /// secondary text color instead of the tool-window foreground. + func litheStatusBarIconButton() -> some View { + self + .buttonStyle(LitheIconButtonStyle( + size: LitheTheme.Metrics.statusBarIconButtonSize, + foreground: LitheTheme.secondaryText, + cornerRadius: 4)) + .lithePointer() + } + /// Shows the macOS pointing-hand cursor while an interactive control is /// hovered. The push/pop pair is balanced even when a view disappears. func lithePointer() -> some View { diff --git a/macos/Sources/Lithe/Views/Workbench/WorkbenchStatusViews.swift b/macos/Sources/Lithe/Views/Workbench/WorkbenchStatusViews.swift index 2fa19b88c5..c383256c37 100644 --- a/macos/Sources/Lithe/Views/Workbench/WorkbenchStatusViews.swift +++ b/macos/Sources/Lithe/Views/Workbench/WorkbenchStatusViews.swift @@ -21,6 +21,9 @@ struct EditorCaretPositionLabel: View { } } +/// Icon-only memory indicator: the status bar keeps just the chip so the +/// figures do not crowd the bar; hover shows the totals and a click opens the +/// detailed breakdown. struct MemoryUsageStatusView: View { @EnvironmentObject private var memoryUsageMonitor: MemoryUsageMonitor @State private var isMemoryUsagePopoverPresented = false @@ -29,19 +32,11 @@ struct MemoryUsageStatusView: View { Button { isMemoryUsagePopoverPresented.toggle() } label: { - Label { - HStack(spacing: 4) { - Text("Total \(memoryUsageMonitor.totalText)") - Text("·") - Text("Lithe \(memoryUsageMonitor.litheText)") - } - .monospacedDigit() - } icon: { - Image(systemName: "memorychip") - } + Image(systemName: "memorychip") } - .buttonStyle(.litheNoPress) - .lithePointer() + .litheStatusBarIconButton() + .accessibilityLabel(Text("Managed Memory")) + .accessibilityValue(Text(memoryUsageMonitor.totalText)) .help( Text( "Total managed memory: \(memoryUsageMonitor.totalText)\n" + @@ -134,17 +129,14 @@ struct MemoryUsageStatusView: View { } } +/// Text-only frame rate readout; the "FPS" unit already names the metric. struct FrameRateStatusView: View { @EnvironmentObject private var frameRateMonitor: FrameRateMonitor var body: some View { - Label { - Text(frameRateMonitor.framesPerSecondText) - .monospacedDigit() - } icon: { - Image(systemName: "speedometer") - } - .help("Frames rendered per second") - .accessibilityLabel(Text("\(frameRateMonitor.framesPerSecond) frames per second")) + Text(frameRateMonitor.framesPerSecondText) + .monospacedDigit() + .help("Frames rendered per second") + .accessibilityLabel(Text("\(frameRateMonitor.framesPerSecond) frames per second")) } } diff --git a/macos/Sources/Lithe/Views/Workbench/WorkbenchView.swift b/macos/Sources/Lithe/Views/Workbench/WorkbenchView.swift index 50e44dca5b..8c1777af1a 100644 --- a/macos/Sources/Lithe/Views/Workbench/WorkbenchView.swift +++ b/macos/Sources/Lithe/Views/Workbench/WorkbenchView.swift @@ -1825,7 +1825,7 @@ struct WorkbenchView: View { } label: { Image(systemName: model.activeDocument?.isReadOnly == true ? "lock.fill" : "lock.open") } - .litheIconButton() + .litheStatusBarIconButton() .disabled(model.activeDocument?.isReadOnly == true) .help(LocalizedStringKey( model.activeDocument?.isReadOnly == true ? "Read-only document" : "Save" diff --git a/shared/i18n/locales/en-US.json b/shared/i18n/locales/en-US.json index b26ba6b8af..a79c4e7d9b 100644 --- a/shared/i18n/locales/en-US.json +++ b/shared/i18n/locales/en-US.json @@ -9339,7 +9339,6 @@ "native.terminalActions": "Terminal actions", "native.close": "Close {arg1}", "native.startingModule": "Starting module...", - "native.total.variant2": "Total {arg1}", "native.framesRenderedPerSecond": "Frames rendered per second", "native.lldFramesPerSecond": "{arg1} frames per second", "native.discardAndRetry": "Discard and Retry", diff --git a/shared/i18n/locales/zh-CN.json b/shared/i18n/locales/zh-CN.json index 8ea52e14b0..559628f6a6 100644 --- a/shared/i18n/locales/zh-CN.json +++ b/shared/i18n/locales/zh-CN.json @@ -9339,7 +9339,6 @@ "native.terminalActions": "终端操作", "native.close": "关闭 {arg1}", "native.startingModule": "正在启动模块…", - "native.total.variant2": "总计 {arg1}", "native.framesRenderedPerSecond": "每秒渲染帧数", "native.lldFramesPerSecond": "每秒 {arg1} 帧", "native.discardAndRetry": "放弃并重试", diff --git a/shared/i18n/messages.json b/shared/i18n/messages.json index 3068c8aa8a..4a859896ed 100644 --- a/shared/i18n/messages.json +++ b/shared/i18n/messages.json @@ -88094,22 +88094,6 @@ "arguments": [] } }, - { - "id": "native.total.variant2", - "description": "Native UI: Total %@", - "platforms": [ - "macos" - ], - "macos": { - "key": "Total %@", - "arguments": [ - "arg1" - ] - }, - "parameters": { - "arg1": "string" - } - }, { "id": "native.framesRenderedPerSecond", "description": "Native UI: Frames rendered per second", diff --git a/shared/platform-feature-matrix/features/memory-monitor.json b/shared/platform-feature-matrix/features/memory-monitor.json index d0de491281..aecdf3c588 100644 --- a/shared/platform-feature-matrix/features/memory-monitor.json +++ b/shared/platform-feature-matrix/features/memory-monitor.json @@ -5,7 +5,8 @@ "capability": "应用与语言服务内存监控", "macos": { "evidence": [ - "macos/Sources/Lithe/Services/Monitoring/MemoryUsageMonitor.swift" + "macos/Sources/Lithe/Services/Monitoring/MemoryUsageMonitor.swift", + "macos/Sources/Lithe/Views/Workbench/WorkbenchStatusViews.swift" ], "implementationStatus": "implemented", "verificationStatus": "pending" @@ -19,5 +20,5 @@ "verificationStatus": "pending" }, "owner": "Workbench", - "verification": "打开内存指标并观察应用、语言服务和总内存变化,确认采样失败不会阻塞工作台。" + "verification": "打开内存指标并观察应用、语言服务和总内存变化,确认采样失败不会阻塞工作台。macOS 状态栏只显示内存芯片图标,不再显示总计与 Lithe 数值;悬停提示显示总计、Lithe、LSP 和服务内存,点击图标打开托管内存详情并在关闭后停止详细采样,VoiceOver 读出托管内存及当前总计。同一状态栏中帧率只显示数字和 FPS 单位,不带图标;只读锁和内存图标按钮使用 18pt 紧凑尺寸,相邻项之间不再留出大块空白。Windows 状态栏仍显示总计与 Lithe 数值。" } From 92d98b5b9056c03ad5b8ca483cf9103c96011eda Mon Sep 17 00:00:00 2001 From: Xiaoyumuxi <23722032@bjtu.edu.cn> Date: Sun, 1 Nov 2026 15:03:46 +0800 Subject: [PATCH 19/27] =?UTF-8?q?fix(macos):=20=E8=99=9A=E6=8B=9F=E5=8C=96?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E6=9C=8D=E5=8A=A1=E9=80=80=E5=87=BA=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=B9=B6=E8=A1=A5=E5=85=85=E6=BB=9A=E5=8A=A8=E6=80=A7?= =?UTF-8?q?=E8=83=BD=E8=A7=84=E8=8C=83=20(#1627)=20(#1633)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(macos): virtualize background service exit selection (#1627) * fix(macos): keep background service accessibility selection live --- ...10-21-background-service-exit-selection.md | 18 +- .agents/skills/develop-lithe/SKILL.md | 12 + .../UI/BackgroundResourceSelectionView.swift | 266 ++++++++++++++---- ...BackgroundResourceSelectionViewTests.swift | 110 +++++++- .../features/process-termination-policy.json | 4 +- 5 files changed, 333 insertions(+), 77 deletions(-) diff --git a/.agents/notes/implemented/bug-fix/2026-10-21-background-service-exit-selection.md b/.agents/notes/implemented/bug-fix/2026-10-21-background-service-exit-selection.md index 48df63d689..400d65fa89 100644 --- a/.agents/notes/implemented/bug-fix/2026-10-21-background-service-exit-selection.md +++ b/.agents/notes/implemented/bug-fix/2026-10-21-background-service-exit-selection.md @@ -4,15 +4,23 @@ ## 先说结论 -退出 Lithe 时的后台服务列表不能把完整命令当作单行复选框标题,否则用户无法判断将结束哪个服务。列表现在固定宽度、限制可见高度,并让命令与详情换行;长列表通过滚动查看。全选、全不选和已选数量帮助用户批量操作,确认之前只改变本次弹窗的选择。 +退出 Lithe 时的后台服务列表不能把完整命令当作单行复选框标题,否则用户无法判断将结束哪个服务。列表固定宽度和可见高度,使用原生文本视口只绘制可见文字、只挂载附近的复选框;长命令仍完整换行且可选择复制。全选、全不选和已选数量帮助用户批量操作,确认之前只改变本次弹窗的选择。 ## 问题 Issue #1344 的截图中,Java 的长启动参数被原生复选框裁剪。原来的纵向列表没有高度上限,服务较多时还可能把底部退出按钮挤出屏幕。 +Issue #1627 又报告该列表滚动卡顿。原实现虽然限制了视口高度,却预先创建了全部复选框和多行文本框;每条长命令仍由普通文本框绘制。限制高度不等于虚拟化,也不能只按服务数量估算成本:一条命令就可能跨越多个屏幕。隔离诊断显示长文本会放大绘制开销,但没有复现报告中的持续低帧率,不能据此宣称已找到唯一根因。 + ## 决策 -原生弹窗仍由 `MacProcessExitConfirmationPresenter` 管理,服务列表由同层的 `BackgroundResourceSelectionView`(AppKit 原生视图)呈现。复选框只保存选择,旁边的文本显示完整名称、详情、端口与进程数;文本允许选择和复制,也支持不含空格的长参数换行。列表视口最多 260 点,内容不足时按实际高度收缩。 +原生弹窗仍由 `MacProcessExitConfirmationPresenter` 管理,服务列表由同层的 `BackgroundResourceSelectionView`(AppKit 原生视图)呈现。完整名称、详情、端口与进程数放进一个只读 `NSTextView`(原生文本视口);TextKit(系统文本排版引擎)缓存固定宽度的排版并按视口绘制字形。文本允许选择和复制,也支持不含空格的长参数换行。列表视口最多 260 点,内容不足时按实际高度收缩。 + +排版只在构造这次确认快照时准备,滚动不重建全文、不重算命令高度。复选框位置来自名称首行的排版位置,局部视口观察只挂载可见范围及少量预取范围内的按钮;离屏按钮移除。勾选状态按资源 ID 保存在确认视图中,不从按钮数组反推,因此滚动回收不会丢失选择,全选也包含未挂载项。观察只绑定自己的 clip view(滚动裁剪视口),卸载和销毁时解除,不向业务模型转发滚动像素。 + +键盘在复选框上通过 Tab/Shift-Tab 或上下方向键移动到相邻资源,先滚入视口再聚焦,不能因为按钮尚未挂载就跳过资源。辅助功能查询提供所有资源的轻量复选框元素,读屏操作可滚到离屏资源并勾选,不要求把全部原生按钮挂在界面树里。 + +辅助功能元素按资源 ID 在本次确认内保持身份,勾选值每次读取当前选择集合,不保存创建时的状态副本。单项、全选和全不选只对实际改变且已提供给辅助技术的元素发送值变化通知;滚动不发送选择通知,也不为通知创建离屏控件。否则读屏端持有旧元素时,会把已取消的服务继续读作勾选。 全选和全不选只修改此弹窗内的选择,并更新数量;返回的仍是原来的资源 ID 集合。名称相同的服务不合并。只有已识别服务才显示“记住选择”,且默认不勾选。按选择结束、全部结束、取消,以及启动残留清扫的映射沿用原逻辑,不改进程终止和所有权判断。 @@ -23,10 +31,12 @@ Issue #1344 的截图中,Java 的长启动参数被原生复选框裁剪。原 - 继续保留单行标题,仅增加悬停提示:仍难以比较多条长命令,也不能解决多服务时的整体高度问题。 - 重写整个退出流程或改用另一个模态窗口:本次仅需修复后台服务的多选内容,原生弹窗已有可靠的确认和取消映射,保留它可以缩小回归面。 - 每条命令独占一个弹窗:无法一起检查和批量选择后台服务,反而增加退出步骤。 +- 只把整条服务变成惰性行:服务数量少但单条命令很长时,仍会留下一个跨多屏的普通文本框。原生文本视口同时保留字形缓存、可见绘制和连续选择,无需自研文本绘制器。 +- 仅打开图层缓存或替换滚动条:隔离对照没有证明稳定收益,也没有消除全量控件与长文本重绘的边界问题。 ## 后果 -用户能完整查看和复制命令,并在服务较多时滚动选择。代价是原生适配层需要维护列表测量和选择控件;窗口仍使用系统弹窗外观,不新增产品菜单或主题系统。此视图不创建进程、不读写发行目录,也不产生运行时文件。 +用户能完整查看和复制命令,并在服务较多时滚动选择;控件数量随视口而不是服务总量增长。代价是原生适配层维护文本排版锚点和局部按钮生命周期,首次准备仍需排版完整快照以确定滚动范围;窗口仍使用系统弹窗外观,不新增产品菜单或主题系统。此视图不创建进程、不读写发行目录,也不产生运行时文件。 ## 验证 @@ -37,7 +47,7 @@ Issue #1344 的截图中,Java 的长启动参数被原生复选框裁剪。原 - `./scripts/platform-feature-matrix/verify-platform-feature-matrix.sh` - `./scripts/agent-notes/verify-agent-notes.sh` -回归检查长命令换行、列表高度和滚动到最后一项、按资源身份多选、批量选择、记住选项及深浅外观。组件测试不代替完整产品退出和启动残留清扫的实机验收。 +回归检查长命令与无空格参数换行、原文复制、固定文本容器及排版身份、列表高度、最后一项可达、200 项滚动时按钮数量有界、滚动返回及离屏批量选择、保留同一辅助功能元素在读屏/原生勾选和批量操作后的实时回读及身份、记住选项及深浅外观。组件测试不代替完整产品退出、真实工作区连续滚动和启动残留清扫的实机验收,不用组件耗时推导产品帧率。 ## 适用范围 diff --git a/.agents/skills/develop-lithe/SKILL.md b/.agents/skills/develop-lithe/SKILL.md index 8e6488fefe..fb110a2185 100644 --- a/.agents/skills/develop-lithe/SKILL.md +++ b/.agents/skills/develop-lithe/SKILL.md @@ -232,6 +232,18 @@ macOS 界面改动必须先读 [macOS 共享控件规范](references/macos-ui.md 该参考页维护菜单、输入、图标、标题栏、列表、选择、字体和滚动条的入口及验证要求; 业务视图只提供内容与动作,不得在调用处另造样式或交互配方。 +### 滚动内容默认虚拟化 + +新增或修改滚动列表、树、表格、日志和长文本时,默认使用虚拟化呈现:只挂载或绘制视口及少量预取范围内的内容, +复用现有原生视口、共享列表或框架虚拟化能力。固定且很短的表单、说明等内容可例外;不要为此批量重写无关页面。 + +- 设置最大高度、裁剪或外包一层 `ScrollView` 不等于虚拟化;不要先创建全量行控件或 DOM 再隐藏离屏内容。 + macOS 优先复用原生列表/文本视口或适用的惰性容器,Windows 使用现有虚拟列表;不另造通用滚动引擎。 +- 单行也可能很重:长命令、日志和代码不能仅按记录虚拟化后仍让一个控件反复排版整篇文本。 + 使用缓存排版、可见字形绘制等原生能力;滚动时不重建全文、不重新测量所有行,也不向业务根模型发布逐像素偏移。 +- 选择、勾选和展开状态按稳定身份保存,不依赖当前挂载的控件;保留键盘、无障碍、文本复制和滚动锚点。 + 验证离屏内容不会全量挂载、滚动返回后状态仍在,以及单条超长内容;组件计时不冒充真实产品帧率。 + ### 连续列表随滚动自动加载 Git 历史、反汇编等连续浏览的分页列表必须像 IDEA 一样,在接近视口边缘时预取; diff --git a/macos/Sources/Lithe/Platform/MacOS/UI/BackgroundResourceSelectionView.swift b/macos/Sources/Lithe/Platform/MacOS/UI/BackgroundResourceSelectionView.swift index f09731ee58..d05987eb86 100644 --- a/macos/Sources/Lithe/Platform/MacOS/UI/BackgroundResourceSelectionView.swift +++ b/macos/Sources/Lithe/Platform/MacOS/UI/BackgroundResourceSelectionView.swift @@ -19,51 +19,22 @@ final class BackgroundResourceSelectionView: NSView { checkboxWithTitle: L10n.string("Remember my choice for these kinds of services"), target: nil, action: nil ) - private var checkboxes: [NSButton] = [] - - var selectedIDs: Set { - Set(zip(resources, checkboxes).filter { $0.1.state == .on }.map(\.0.id)) - } + private(set) var selectedIDs: Set + private let document: ResourceListDocument init(resources: [BackgroundResourceCandidate]) { self.resources = resources + selectedIDs = Set(resources.map(\.id)) + document = ResourceListDocument(resources: resources, width: Self.contentWidth - 24) super.init(frame: .zero) - let document = ResourceListDocument(frame: .zero) - let rowWidth = Self.contentWidth - 24 - var y: CGFloat = 8 - for resource in resources { - let checkbox = NSButton(checkboxWithTitle: "", target: self, action: #selector(selectionChanged)) - checkbox.state = .on - checkbox.setAccessibilityLabel(resource.name) - checkbox.frame = NSRect(x: 8, y: y, width: 20, height: 20) - document.addSubview(checkbox) - checkboxes.append(checkbox) - let textWidth = rowWidth - 36 - let title = Self.label(resource.name, width: textWidth, font: LitheTheme.uiNSFont(size: 12.5, weight: .semibold)) - title.frame.origin = NSPoint(x: 36, y: y) - document.addSubview(title) - var height = max(20, title.frame.height) - if !resource.detail.isEmpty && resource.detail != resource.name { - let detail = Self.label(resource.detail, width: textWidth, font: LitheTheme.editorFont(size: 12)) - detail.frame.origin = NSPoint(x: 36, y: y + height + 4) - document.addSubview(detail) - height += 4 + detail.frame.height - } - var metadata = resource.listeningPorts.isEmpty ? [] : [String(format: L10n.string("ports %@"), resource.listeningPorts.map(String.init).joined(separator: ", "))] - if resource.processIDs.count > 1 { - metadata.append(String(format: L10n.string("%lld processes"), resource.processIDs.count)) - } - if !metadata.isEmpty { - let label = Self.label(metadata.joined(separator: " · "), width: textWidth, font: LitheTheme.uiNSFont(size: 11)) - label.textColor = .secondaryLabelColor - label.frame.origin = NSPoint(x: 36, y: y + height + 4) - document.addSubview(label) - height += 4 + label.frame.height - } - y += height + 12 + document.isSelected = { [weak self] in self?.selectedIDs.contains($0) == true } + document.onToggle = { [weak self] id, selected in + guard let self, self.selectedIDs.contains(id) != selected else { return } + if selected { self.selectedIDs.insert(id) } else { self.selectedIDs.remove(id) } + self.selectionChanged(changedIDs: [id]) } - document.frame = NSRect(x: 0, y: 0, width: rowWidth, height: y) - scrollView.frame = NSRect(x: 0, y: 0, width: Self.contentWidth, height: min(y, Self.maximumListHeight)) + scrollView.frame = NSRect(x: 0, y: 0, width: Self.contentWidth, + height: min(document.frame.height, Self.maximumListHeight)) scrollView.scrollerStyle = .overlay scrollView.verticalScroller = LitheScrollViewChrome.CompactScroller() scrollView.hasVerticalScroller = true @@ -103,37 +74,212 @@ final class BackgroundResourceSelectionView: NSView { required init?(coder: NSCoder) { nil } - private static func label(_ text: String, width: CGFloat, font: NSFont) -> NSTextField { - let field = NSTextField(wrappingLabelWithString: text) - field.font = font - field.isSelectable = true - field.lineBreakMode = .byCharWrapping - field.maximumNumberOfLines = 0 - field.preferredMaxLayoutWidth = width - field.frame = NSRect(x: 0, y: 0, width: width, height: 0) - let height = field.cell?.cellSize(forBounds: NSRect(x: 0, y: 0, width: width, height: .greatestFiniteMagnitude)).height ?? 20 - field.frame.size.height = ceil(height) - return field - } - - @objc private func selectionChanged() { + private func selectionChanged(changedIDs: Set = []) { let selected = selectedIDs.count selectionLabel.stringValue = String(format: L10n.string("%lld of %lld services selected"), selected, resources.count) selectAllButton.isEnabled = selected < resources.count deselectAllButton.isEnabled = selected > 0 + document.updateVisibleCheckboxes() + document.notifyAccessibilitySelectionChanged(for: changedIDs) } @objc private func selectAllResources() { - checkboxes.forEach { $0.state = .on } - selectionChanged() + let changedIDs = Set(resources.map(\.id)).subtracting(selectedIDs) + selectedIDs.formUnion(changedIDs) + selectionChanged(changedIDs: changedIDs) } @objc private func deselectAllResources() { - checkboxes.forEach { $0.state = .off } - selectionChanged() + let changedIDs = selectedIDs + selectedIDs.removeAll() + selectionChanged(changedIDs: changedIDs) + } +} + +/// TextKit caches the fixed-width layout and draws only visible glyphs, even +/// when one command spans many screens. Only visible checkbox anchors own views. +@MainActor +private final class ResourceListDocument: NSTextView { + private struct Anchor { + let id: String + let name: String + let y: CGFloat + } + + var isSelected: (String) -> Bool = { _ in false } + var onToggle: (String, Bool) -> Void = { _, _ in } + private var anchors: [Anchor] = [] + private var checkboxes: [Int: ResourceCheckbox] = [:] + private var accessibilityCheckboxes: [String: ResourceCheckboxAccessibilityElement] = [:] + private var scrollObservation: NSObjectProtocol? + + init(resources: [BackgroundResourceCandidate], width: CGFloat) { + let storage = NSTextStorage() + let manager = NSLayoutManager() + let container = NSTextContainer(size: NSSize(width: width - 36, height: .greatestFiniteMagnitude)) + storage.addLayoutManager(manager) + manager.addTextContainer(container) + super.init(frame: NSRect(x: 0, y: 0, width: width, height: 16), textContainer: container) + isEditable = false + isSelectable = true + drawsBackground = false + isHorizontallyResizable = false + isVerticallyResizable = false + textContainerInset = NSSize(width: 36, height: 8) + container.lineFragmentPadding = 0 + container.widthTracksTextView = false + container.heightTracksTextView = false + setAccessibilityLabel(L10n.string("Background Services")) + + let text = NSMutableAttributedString() + var starts: [Int] = [] + for resource in resources { + starts.append(text.length) + var paragraphs: [(String, NSFont, NSColor)] = [ + (resource.name, LitheTheme.uiNSFont(size: 12.5, weight: .semibold), .labelColor) + ] + if !resource.detail.isEmpty && resource.detail != resource.name { + paragraphs.append((resource.detail, LitheTheme.editorFont(size: 12), .labelColor)) + } + var metadata = resource.listeningPorts.isEmpty ? [] : [String(format: L10n.string("ports %@"), resource.listeningPorts.map(String.init).joined(separator: ", "))] + if resource.processIDs.count > 1 { + metadata.append(String(format: L10n.string("%lld processes"), resource.processIDs.count)) + } + if !metadata.isEmpty { + paragraphs.append((metadata.joined(separator: " · "), LitheTheme.uiNSFont(size: 11), .secondaryLabelColor)) + } + for (index, paragraph) in paragraphs.enumerated() { + let style = NSMutableParagraphStyle() + style.lineBreakMode = .byCharWrapping + style.paragraphSpacing = index == paragraphs.count - 1 ? 12 : 4 + text.append(NSAttributedString(string: paragraph.0 + "\n", attributes: [ + .font: paragraph.1, .foregroundColor: paragraph.2, .paragraphStyle: style + ])) + } + } + storage.setAttributedString(text) + // Prepare once before showing the alert; scrolling must not measure + // commands or rebuild text storage to discover row positions. + manager.ensureLayout(for: container) + anchors = zip(resources, starts).map { resource, start in + let glyph = manager.glyphIndexForCharacter(at: start) + let line = manager.lineFragmentRect(forGlyphAt: glyph, effectiveRange: nil) + return Anchor(id: resource.id, name: resource.name, y: line.minY + textContainerInset.height) + } + frame.size.height = max(16, ceil(manager.usedRect(for: container).maxY) + 16) + } + + required init?(coder: NSCoder) { nil } + + deinit { + if let scrollObservation { NotificationCenter.default.removeObserver(scrollObservation) } + } + + override func viewDidMoveToSuperview() { + super.viewDidMoveToSuperview() + if let scrollObservation { NotificationCenter.default.removeObserver(scrollObservation) } + scrollObservation = nil + if let clip = enclosingScrollView?.contentView { + clip.postsBoundsChangedNotifications = true + scrollObservation = NotificationCenter.default.addObserver( + forName: NSView.boundsDidChangeNotification, object: clip, queue: .main + ) { [weak self] _ in MainActor.assumeIsolated { self?.updateVisibleCheckboxes() } } + } + updateVisibleCheckboxes() + } + + override func accessibilityChildren() -> [Any]? { + let children = (super.accessibilityChildren() ?? []).filter { !($0 is ResourceCheckbox) } + return children + anchors.enumerated().map { index, anchor in + if let existing = accessibilityCheckboxes[anchor.id] { return existing } + let element = ResourceCheckboxAccessibilityElement() + element.setAccessibilityParent(self) + element.setAccessibilityRole(.checkBox) + element.setAccessibilityLabel(anchor.name) + element.isSelected = { [weak self] in self?.isSelected(anchor.id) == true } + element.setAccessibilityFrameInParentSpace(NSRect(x: 8, y: anchor.y, width: 20, height: 20)) + element.onPress = { [weak self] in + guard let self else { return } + self.scrollToVisible(NSRect(x: 0, y: self.anchors[index].y, width: 20, height: 20)) + self.onToggle(anchor.id, !self.isSelected(anchor.id)) + } + accessibilityCheckboxes[anchor.id] = element + return element + } + } + + func notifyAccessibilitySelectionChanged(for ids: Set) { + // Notify the same objects already handed to assistive technology; + // scrolling or selection changes must not create offscreen controls. + for id in ids.sorted() { + if let element = accessibilityCheckboxes[id] { + NSAccessibility.post(element: element, notification: .valueChanged) + } + } + } + + private func focusCheckbox(at index: Int) -> Bool { + guard anchors.indices.contains(index), let window else { return false } + scrollToVisible(NSRect(x: 0, y: anchors[index].y, width: 20, height: 20)) + updateVisibleCheckboxes() + guard let checkbox = checkboxes[index] else { return false } + return window.makeFirstResponder(checkbox) + } + + func updateVisibleCheckboxes() { + let viewport = visibleRect.insetBy(dx: 0, dy: -20) + var low = 0, high = anchors.count + while low < high { + let mid = (low + high) / 2 + if anchors[mid].y + 20 < viewport.minY { low = mid + 1 } else { high = mid } + } + let first = low + while low < anchors.count, anchors[low].y <= viewport.maxY { low += 1 } + let visible = first.. Bool)? + + override func keyDown(with event: NSEvent) { + let offset: Int + switch event.keyCode { + case 48: offset = event.modifierFlags.contains(.shift) ? -1 : 1 + case 125: offset = 1 + case 126: offset = -1 + default: super.keyDown(with: event); return + } + if onMove?(offset) != true { super.keyDown(with: event) } } } -private final class ResourceListDocument: NSView { - override var isFlipped: Bool { true } +private final class ResourceCheckboxAccessibilityElement: NSAccessibilityElement { + var isSelected: (() -> Bool)? + var onPress: (() -> Void)? + override func accessibilityValue() -> Any? { isSelected?() == true ? 1 : 0 } + override func accessibilityPerformPress() -> Bool { onPress?(); return onPress != nil } } diff --git a/macos/Tests/LitheTests/BackgroundResourceSelectionViewTests.swift b/macos/Tests/LitheTests/BackgroundResourceSelectionViewTests.swift index eea747cbcf..b52d8d573d 100644 --- a/macos/Tests/LitheTests/BackgroundResourceSelectionViewTests.swift +++ b/macos/Tests/LitheTests/BackgroundResourceSelectionViewTests.swift @@ -1,4 +1,5 @@ import AppKit +import LitheModuleAPI import Testing @testable import Lithe @@ -7,22 +8,35 @@ import Testing struct BackgroundResourceSelectionViewTests { @Test func longCommandsWrapAndManyResourcesScrollWithinTheAlert() throws { let command = "java " + String(repeating: "--add-opens=java.base/java.lang=ALL-UNNAMED ", count: 40) - let resources = (0..<12).map { resource("service-\($0)", name: command, detail: "workspace/service-\($0)") } + let resources = (0..<12).map { resource("service-\($0)", detail: command + String(repeating: "x", count: 200)) } let view = BackgroundResourceSelectionView(resources: resources) view.layoutSubtreeIfNeeded() - let document = try #require(view.scrollView.documentView) - let labels = descendants(document).compactMap { $0 as? NSTextField } - let commandLabel = try #require(labels.first { $0.stringValue == command }) - #expect(commandLabel.maximumNumberOfLines == 0) - #expect(commandLabel.frame.height > 40) - #expect(commandLabel.isSelectable) + let document = try #require(view.scrollView.documentView as? NSTextView) + let manager = try #require(document.layoutManager) + let container = try #require(document.textContainer) + let storage = try #require(document.textStorage) + #expect(document.isSelectable && !document.isEditable) + #expect(document.string.contains(resources[0].detail)) #expect(view.scrollView.frame.height == BackgroundResourceSelectionView.maximumListHeight) #expect(document.frame.height > view.scrollView.contentSize.height) #expect(!view.scrollView.hasHorizontalScroller) - #expect(labels.allSatisfy { document.bounds.contains($0.frame) }) - document.scroll(NSPoint(x: 0, y: document.frame.height)) + let initialSize = container.containerSize + for step in 0...8 { + let y = document.frame.height * CGFloat(step) / 8 + document.scroll(NSPoint(x: 0, y: y)) + #expect(descendants(document).compactMap { $0 as? NSButton }.count < resources.count) + #expect(document.textStorage === storage) + #expect(document.layoutManager === manager) + #expect(container.containerSize == initialSize) + } #expect(view.scrollView.documentVisibleRect.maxY >= document.bounds.maxY - 1) #expect(view.frame.width == BackgroundResourceSelectionView.contentWidth) + let range = (document.string as NSString).range(of: resources[0].detail) + document.setSelectedRange(range) + let pasteboard = NSPasteboard.withUniqueName() + defer { pasteboard.releaseGlobally() } + #expect(document.writeSelection(to: pasteboard, types: document.writablePasteboardTypes)) + #expect(pasteboard.string(forType: .string) == resources[0].detail) } @Test func bulkSelectionAndIndividualCheckboxesKeepResourceIdentity() throws { @@ -33,14 +47,56 @@ struct BackgroundResourceSelectionViewTests { #expect(view.selectedIDs.isEmpty) #expect(view.selectAllButton.isEnabled && !view.deselectAllButton.isEnabled) let document = try #require(view.scrollView.documentView) - let checkbox = try #require(descendants(document).compactMap { $0 as? NSButton }.first) + let checkbox = try #require(descendants(document).compactMap { $0 as? NSButton }.first { $0.tag == 0 }) checkbox.performClick(nil) #expect(view.selectedIDs == ["first"]) - #expect(view.selectionLabel.stringValue == String(format: String(localized: "%lld of %lld services selected"), 1, 2)) + #expect(view.selectionLabel.stringValue == String(format: L10n.string("%lld of %lld services selected"), 1, 2)) view.selectAllButton.performClick(nil) #expect(view.selectedIDs == ["first", "second"]) } + @Test func offscreenCheckboxesAreVirtualizedAndKeepSelectionsByResourceID() throws { + let resources = (0..<200).map { resource("service-\($0)") } + let view = BackgroundResourceSelectionView(resources: resources) + let window = NSWindow(contentRect: NSRect(origin: .zero, size: view.frame.size), + styleMask: [.titled], backing: .buffered, defer: false) + window.isReleasedWhenClosed = false + window.contentView = view + defer { window.contentView = nil; window.close() } + view.layoutSubtreeIfNeeded() + let document = try #require(view.scrollView.documentView) + let first = try #require(descendants(document).compactMap { $0 as? NSButton }.first { $0.tag == 0 }) + first.performClick(nil) + #expect(!view.selectedIDs.contains(resources[0].id)) + document.scroll(NSPoint(x: 0, y: document.frame.height)) + let bottom = descendants(document).compactMap { $0 as? NSButton } + #expect(bottom.count < 20) + #expect(!bottom.contains { $0.tag == 0 }) + let last = try #require(bottom.first { $0.tag == resources.count - 1 }) + last.performClick(nil) + #expect(!view.selectedIDs.contains(resources.last!.id)) + let previous = try #require(NSEvent.keyEvent(with: .keyDown, location: .zero, modifierFlags: [.shift], + timestamp: 0, windowNumber: window.windowNumber, context: nil, characters: "\t", + charactersIgnoringModifiers: "\t", isARepeat: false, keyCode: 48)) + last.keyDown(with: previous) + #expect((window.firstResponder as? NSButton)?.tag == resources.count - 2) + view.deselectAllButton.performClick(nil) + #expect(view.selectedIDs.isEmpty) + view.selectAllButton.performClick(nil) + #expect(view.selectedIDs == Set(resources.map(\.id))) + document.scroll(.zero) + let restored = try #require(descendants(document).compactMap { $0 as? NSButton }.first { $0.tag == 0 }) + #expect(restored.state == .on) + #expect(descendants(document).compactMap { $0 as? NSButton }.count < 20) + let accessible = (document.accessibilityChildren() ?? []).compactMap { $0 as? NSAccessibilityElement } + .filter { $0.accessibilityRole() == .checkBox } + #expect(accessible.count == resources.count) + let lastAccessible = try #require(accessible.last) + #expect(lastAccessible.accessibilityPerformPress()) + #expect(!view.selectedIDs.contains(resources.last!.id)) + #expect(view.scrollView.documentVisibleRect.minY > 0) + } + @Test func rememberChoiceOnlyAppearsForRecognizedServicesAndStartsOff() { let unknown = BackgroundResourceSelectionView(resources: [resource("unknown")]) #expect(unknown.rememberCheckbox.superview == nil) @@ -49,6 +105,38 @@ struct BackgroundResourceSelectionViewTests { #expect(recognized.rememberCheckbox.state == .off) } + @Test func retainedAccessibilityCheckboxReadsLiveIndividualAndBulkSelection() throws { + let view = BackgroundResourceSelectionView(resources: [resource("first"), resource("second")]) + view.layoutSubtreeIfNeeded() + let document = try #require(view.scrollView.documentView) + func elements() -> [NSAccessibilityElement] { + (document.accessibilityChildren() ?? []).compactMap { $0 as? NSAccessibilityElement } + .filter { $0.accessibilityRole() == .checkBox } + } + let original = elements() + let first = try #require(original.first) + let second = try #require(original.last) + #expect(first !== second) + #expect(first.accessibilityValue() as? Int == 1) + #expect(second.accessibilityValue() as? Int == 1) + #expect(first.accessibilityPerformPress()) + #expect(view.selectedIDs == ["second"]) + #expect(first.accessibilityValue() as? Int == 0) + #expect(second.accessibilityValue() as? Int == 1) + let repeated = elements() + #expect(repeated.first === first) + #expect(repeated.last === second) + let checkbox = try #require(descendants(document).compactMap { $0 as? NSButton }.first { $0.tag == 0 }) + checkbox.performClick(nil) + #expect(first.accessibilityValue() as? Int == 1) + view.deselectAllButton.performClick(nil) + #expect(first.accessibilityValue() as? Int == 0) + #expect(second.accessibilityValue() as? Int == 0) + view.selectAllButton.performClick(nil) + #expect(first.accessibilityValue() as? Int == 1) + #expect(second.accessibilityValue() as? Int == 1) + } + @Test func shortAndEmptyListsDoNotReserveTheMaximumHeight() { for resources in [[], [resource("single")]] { let view = BackgroundResourceSelectionView(resources: resources) diff --git a/shared/platform-feature-matrix/features/process-termination-policy.json b/shared/platform-feature-matrix/features/process-termination-policy.json index e790350cee..6bebe16c6c 100644 --- a/shared/platform-feature-matrix/features/process-termination-policy.json +++ b/shared/platform-feature-matrix/features/process-termination-policy.json @@ -2,7 +2,7 @@ "id": "process-termination-policy", "area": "运行与调试", "group": "运行", - "capability": "退出前逐个确认仍在运行程序的终端和 Agent 后台任务(Agent 任务确认窗口用卡片显示状态、工作区和已运行时长,命令里的 JSON 参数自动识别并缩进排版,超出固定高度时滚动,可一键复制原始命令),后台服务在有界滚动列表中逐项选择结束或保留,完整命令与详情换行且可复制,支持全选、全不选和选择数量;只列出本实例启动的进程;设置页“进程终止策略”可调整每类确认,每个选项有 ⓘ 悬停说明", + "capability": "退出前逐个确认仍在运行程序的终端和 Agent 后台任务(Agent 任务确认窗口用卡片显示状态、工作区和已运行时长,命令里的 JSON 参数自动识别并缩进排版,超出固定高度时滚动,可一键复制原始命令),后台服务在有界虚拟化滚动列表中逐项选择结束或保留,原生文本视口缓存长命令排版并只绘制可见文字,复选框仅在视口附近挂载且离屏选择不丢失,完整命令与详情换行且可复制,支持全选、全不选和选择数量;只列出本实例启动的进程;设置页“进程终止策略”可调整每类确认,每个选项有 ⓘ 悬停说明", "macos": { "evidence": [ "macos/Sources/Lithe/Application/Features/ProcessExitCoordinator.swift", @@ -38,6 +38,6 @@ "verificationStatus": "not-applicable" }, "owner": "Run", - "verification": "macOS:在两个终端分别运行 Spring Boot 和空闲 shell,让 Agent 启动一个长时间命令,再在终端里 setsid 启动一个后台服务;退出时应只对忙碌终端逐个确认(可跳到终端或取消),再逐个确认 Agent 任务(带 --settings JSON 的命令应按层级缩进显示,长命令在命令框内上下滚动,复制得到原始命令),最后在列表中勾选后台服务;选择保留的进程退出后仍存活,取消退出时不结束任何进程。在 Lithe 外启动的进程不出现。修改设置页各选项后流程相应跳过确认;悬停 ⓘ 约 0.3 秒出现说明,点击可固定,读屏可读出;中英文文案齐全;设置搜索能找到该页。 后台服务验证长命令及不含空格的参数换行、12个以上服务滚动到最后一项、全选/全不选/单项勾选及已选数量、仅识别服务出现记住选项;深浅主题原生弹窗高度有界,按选择退出、全部结束和取消继续沿用现有语义。", + "verification": "macOS:在两个终端分别运行 Spring Boot 和空闲 shell,让 Agent 启动一个长时间命令,再在终端里 setsid 启动一个后台服务;退出时应只对忙碌终端逐个确认(可跳到终端或取消),再逐个确认 Agent 任务(带 --settings JSON 的命令应按层级缩进显示,长命令在命令框内上下滚动,复制得到原始命令),最后在列表中勾选后台服务;选择保留的进程退出后仍存活,取消退出时不结束任何进程。在 Lithe 外启动的进程不出现。修改设置页各选项后流程相应跳过确认;悬停 ⓘ 约 0.3 秒出现说明,点击可固定,读屏可读出;中英文文案齐全;设置搜索能找到该页。 后台服务验证单条跨多屏长命令及不含空格的参数换行、完整选择复制、200 项滚动到最后一项且挂载按钮数随视口有界,滚动不重建文本存储或改变固定容器宽度,返回后保留按资源 ID 的勾选,全选/全不选包含离屏项并更新数量,读屏保留的同一复选框元素在单项和批量变更后实时回读勾选值且身份稳定,变更发送辅助功能值通知,仅识别服务出现记住选项;深浅主题原生弹窗高度有界,真实工作区连续滚动需另做帧性能验收,按选择退出、全部结束和取消继续沿用现有语义。", "notes": "识别规则(如 Gradle Daemon)和 Docker 容器的资源提供者尚未接入,后台服务目前靠脱离会话识别;Agent 任务弹窗暂无“打开所属会话”按钮。确认规则与结算在 Rust Core,两端共用 fixture。Review 回归覆盖所有项目先提交保留、未保留基础设施清理、终端设置等待预算、已观测后代持续持久化,以及首进程已退出的后台 session;瞬时 double-fork 的准确血缘仍需独立任务启动标记;退出确认后新发现且未批准的 Agent 身份会延期,并保持实例记录供下次启动逐树确认,已批准的兄弟任务和基础设施仍清理。第二轮回归还覆盖关闭单连接隔离、PID 复用、原始应用 session 恢复、旧记录无会话时不自动清理,以及终端 exec 替换和同组子程序。真实 GUI 退出、更新和崩溃、Windows 与锁定 CI 工具链仍待验收,不视为完整验收。" } From a432c2d64e828d26bf651de53a865568b9832cbe Mon Sep 17 00:00:00 2001 From: Xiaoyumuxi <23722032@bjtu.edu.cn> Date: Sun, 1 Nov 2026 16:01:18 +0800 Subject: [PATCH 20/27] =?UTF-8?q?fix(agent):=20=E4=BF=AE=E5=A4=8D=20Codex?= =?UTF-8?q?=20=E4=BC=9A=E8=AF=9D=E5=90=AF=E5=8A=A8=E4=B8=8E=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E6=BC=8F=E6=9F=A5=EF=BC=8C=E6=96=B0=E5=A2=9E=E4=BE=9B?= =?UTF-8?q?=E5=BA=94=E5=95=86=E7=AD=9B=E9=80=89=20(#1632)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(agent): restore Codex history and add provider filtering * fix(agent): honor manual archive collapse under provider filters --- ...026-09-25-shared-acp-agent-conversation.md | 9 +- docs/ci-builds.md | 4 +- macos/Resources/en.lproj/Localizable.strings | 8 + .../zh-Hans.lproj/Localizable.strings | 8 + .../Lithe/Views/Agent/AgentHistoryView.swift | 114 ++++++++++--- .../Application/AgentConnectionModel.swift | 6 +- .../Application/AgentConversationState.swift | 6 +- .../Tests/LitheTests/AgentHistoryTests.swift | 127 +++++++++++++++ .../src/codex-config-relay.cjs | 14 +- rust/lithe-agent-host/src/codex_history.rs | 40 +++-- .../src/codex_history/tests.rs | 151 ++++++++++++++---- rust/lithe-agent-host/src/lib.rs | 5 + rust/lithe-agent-host/src/tests.rs | 4 + scripts/agent/test-codex-config-relay.mjs | 18 ++- .../resources/reuse-worktree-resources.mjs | 2 + .../test-reuse-worktree-resources.mjs | 1 + scripts/resources/worktree-resources.json | 2 +- shared/contracts/application-boundary.md | 8 + shared/contracts/rust-core-api.md | 14 +- .../fixtures/agent/history-activity-v1.json | 36 +++-- shared/i18n/locales/en-US.json | 6 +- shared/i18n/locales/zh-CN.json | 6 +- shared/i18n/messages.json | 48 ++++++ .../features/agent-acp-conversation.json | 13 +- .../agent-archived-conversation-history.json | 10 +- .../features/agent-conversation-history.json | 9 +- .../components/agent-archived-history.tsx | 11 +- .../agent/components/agent-history-list.tsx | 40 +++-- .../agent-history-provider.test.tsx | 122 ++++++++++++++ .../features/agent/components/agent-panel.tsx | 1 + .../agent/services/agent-history-view.ts | 16 ++ .../agent/services/agent-history.test.ts | 26 ++- .../agent/stores/agent-connection.model.ts | 1 + .../agent/stores/agent-parity.test.ts | 10 ++ .../src/features/agent/types/agent.types.ts | 2 + windows/tauri/src/i18n/shared.generated.ts | 8 + 36 files changed, 776 insertions(+), 130 deletions(-) create mode 100644 windows/tauri/src/features/agent/components/agent-history-provider.test.tsx diff --git a/.agents/notes/implemented/architecture/2026-09-25-shared-acp-agent-conversation.md b/.agents/notes/implemented/architecture/2026-09-25-shared-acp-agent-conversation.md index 1c1031927b..6e889b5228 100644 --- a/.agents/notes/implemented/architecture/2026-09-25-shared-acp-agent-conversation.md +++ b/.agents/notes/implemented/architecture/2026-09-25-shared-acp-agent-conversation.md @@ -43,12 +43,15 @@ Agent 对话默认关闭,打开某个项目的 Agent 面板时才启动本机 - **Codex 订阅是 Agent 绑定方式**:供应商管理增加“Codex 订阅”选项,但不往提交信息共用的 HTTP 服务商注册表写一个假供应商。已有配置缺少认证类型时仍解释为 API Key;订阅绑定不保存 provider ID,启动时不读取该服务商的 Key、URL 或默认模型。只在当前子进程中指定官方 `openai` 路由并清除继承的 API 覆盖,会话配置同时清空 `openai_base_url` 并指定官方 `chatgpt_base_url`,防止本机旧地址继续覆盖订阅路由;额度探测也使用同样的覆盖。保留用户的 `CODEX_HOME`、MCP 和 Skills。本机 Codex 拥有账号存储和刷新,Lithe 不读取或复制其订阅凭据。已有账号直接复用;未登录先提示,用户点击才通过 ACP `chat-gpt` 方法打开官方浏览器登录。等待有五分钟期限,取消停止连接并停留在可重试状态,避免 idle 空态自动重连;认证通知与请求响应先后不作为成功依据,必须等上游确认账号。账号退出或邮箱改变时断开旧连接,不静默改计费来源。订阅错误不附加未经脱敏的上游 stderr,因为 Lithe 并不知道其凭据值。 - **额度复用官方查询能力**:核对 [codex-acp v1.13.1](https://github.com/agentclientprotocol/codex-acp/blob/v1.13.1/src/CodexAcpServer.ts) 的扩展方法后,确认它提供连接级认证状态推送,但没有结构化额度接口;`/status` 只有显示文本,token 统计也不是订阅窗口。因此共享 host 短暂启动已检测到的本机 `codex app-server`,用官方 `account/rateLimits/read` 查询,禁止创建线程或发送 prompt。查询前后读取账号并与 ACP 提供的邮箱比较;没有邮箱时不能确认归属,只显示未知。上游 ACP 没有稳定账户 ID,同邮箱切换组织仍是当前身份校验的限制。每连接最多一分钟一次、不并发,查询二十秒超时;连接取消或查询结束清理整个进程树。将来 ACP 暴露结构化额度后用同一连接替换此探测,不长期维护第二套认证或私有 HTTP API。 - **额度显示和资源边界**:参考 PR #870 保留真实窗口时长、未知不当零、失败显示过期的原则,不整合其独立页面和日志扫描。输入框底部工具栏右侧只放一个对标 Claude Desktop 的圆环(issue #1249):灰轨,按已用比例最高的窗口填充并着色,这样任一窗口接近上限都能一眼看到;文字摘要移入悬停详情,避免窄侧栏挤掉模型等基础信息。详情中优先列真实五小时窗口,其他窗口保留原时长,不能把 primary 强制标为五小时。仅鼠标悬停时显示灰底详情,分别展示五小时、七天已用比例、灰轨进度条与重置时间,账号保留在标题下。已用比例默认绿色,严格超过 60% 黄色、超过 90% 红色;未知不当零,过期值灰显。灰底使用既有 HoverTooltip token 与共享 workbenchHoverCard,移开鼠标自动收起;没有新增点击弹层,会话切换卸载摘要并清除旧悬停。面板可见且应用活跃时每分钟刷新,回复结束也请求一次受限刷新;历史页、隐藏面板停止定时请求。短暂失败保留并灰显旧值,断连与身份失败清除旧额度。API Key 模式没有额度查询。快照只在连接内存中存活;未增加下载、缓存文件或可复用工作树资源,CLI 仍使用自身用户目录,安装目录和发行 bundle 只读,不影响代码签名或 Sparkle delta。 +- **Codex 轮次准入与进程路由一致**:Codex 0.166.0 在接收消息前重新读取进程供应商(provider,决定推理请求发送到哪里),固定 codex-acp 2.2.2 只传会话级网关覆盖,因而请求尚未发出就报供应商不一致,并被合成为“内部错误”。既有 relay 通过公开 `-c` 参数仅为当前连接的原生 App Server 指定明确选择的供应商:API Key 用 `custom-gateway`,订阅用 `openai`;网关另带非敏感最小名称与 Responses 协议定义,使首次配置加载有效,真实地址及凭据仍由 ACP 标准输入传入新建、恢复与分叉。命令行不带地址、请求头或密钥,Windows 使用固定无空格的裸字符串配置值,避免 npm `.cmd` 的多层引号;原生托管策略校验不变。正确做法是给本次连接自己的进程路由,不要覆盖用户配置、替换 `CODEX_HOME`、降级 CLI 或按错误文本重发。适配器直接支持完整进程级路由后应移除此兼容。临时 relay 生命周期不变,不新增资源目录,不写发行包,不影响签名或 Sparkle delta。 - **历史以 Agent 为准**:通常通过 `session/list` 列出会话;Codex 原生连接的活跃与归档列表复用已有官方 App Server 读取器,打开旧会话仍用 `session/load`,由 Agent 回放历史。Lithe 不自己保存聊天记录。Agent 进程重启后,旧会话必须先加载才能继续发消息。导出按 [ACP 会话加载契约](https://agentclientprotocol.com/protocol/v1/session-setup) 等待完整回放后返回的 `session/load` 响应;Swift 接收到 `sessionLoaded` 时先刷新缓冲文本,再生成导出快照,不靠固定延迟猜测回放完成。 +- **历史不以当前计费路由过滤**:同一 Codex 账号目录和工作区里的旧会话可能来自官方、ACP 网关、原生自定义或之前的供应商。供应商不是账号隔离边界,活跃和归档都使用官方 `thread/list.modelProviders: []`(全部供应商),继续保留所选账号 `CODEX_HOME`、工作区、来源、归档状态、活动时间、分页与只读限制。例如供应商切换后仍应找到原项目对话,不要改写旧记录的供应商来让筛选命中。分页历史(`paginated`,由 Codex 按游标读取历史项的存储模式)继续走原生接口,旧 `.jsonl` 缺失不代表会话丢失,不新增私有数据库或文件扫描。代价是覆盖更多供应商分页;原有页数、三十秒上限和截断提示保持,不新增缓存、下载或发行目录写入。 +- **供应商筛选由用户显式选择**:历史摘要可选字段 `modelProvider` 只转发上游实际提供的供应商标识,不从当前连接、模型名、API 地址或本地收藏推测。缺失或空白保持未知;普通 ACP 未提供此元数据时继续兼容,不读取私有历史补造。macOS 在原筛选菜单分隔后提供“对话供应商”子菜单,默认“全部供应商”,选择后在原按钮旁显示当前值;Windows 使用相同语义的共享选择器。候选值合并活跃与归档摘要、去重排序,另提供未知项;名称保留上游 ID,不把同名营销名称当成身份,也不硬编码用户供应商。筛选仅作用于本地列表,与标题/ID 搜索、置顶和已移除取交集,归档分组同样生效;切换筛选清除批量选择,操作只取当前可见且可操作的 ID。未知来源的新建草稿不强行归到当前供应商,旧记录后来报告身份时按真实值更新。正确做法是选中 `native-provider` 后只缩小展示、切回全部即可恢复;不要把筛选当成认证切换、重新请求窄列表或改写会话。匹配的归档只默认自动展开,用户第一次收起就必须生效,再次点击可展开;手动选择优先于默认值,搜索或供应商改变时清除该选择。展示和切换动作必须使用同一个实际展开值,不能分别重算不同条件。筛选状态随页面生命周期结束,选中的供应商暂时未出现在分页结果时仍保留菜单项,空命中明确提示调整搜索或筛选而不是“没有历史”。收益是用户可理解并控制可见范围,代价是未提供来源的 Agent 只能筛到未知、候选列表仅代表已加载分页;截断与加载状态继续保留。无新增持久化、资源目录、下载或发行包写入,不影响签名与 Sparkle delta。 - **历史时间表示对话活动**:Codex 打开旧会话会恢复设置,原始 `updatedAt` 可因此变新,即使没有发送消息。共享 Host 读取官方 `thread/list` 的 `recencyAt`(对话活动时间),转成现有历史事件的可空 `updatedAt`;活跃和归档保持同一口径,并按 `recency_at` 分页。请求显式使用 `useStateDbOnly: true`,避免扫描或修复日志元数据,不自行读取、解析或改写 Codex 历史文件。字段缺失、格式错误或负时间保持未知,界面不显示相对时间,未知项按稳定 ID 排在已知项后;不能回退到元数据时间或查看时刻。读取失败走现有错误与重试流程,保留当前列表。2026-10-19 核对本机 Codex 0.160.0 生成的公开 schema:两种时间已分开;固定 codex-acp 1.13.1 与调研的 2.2.2 均仍把原始 `updatedAt` 映射成 ACP 时间,后者还要求更高 CLI,因此单独升级适配器不能解决。共享夹具 `shared/fixtures/agent/history-activity-v1.json` 验证查看/恢复/重命名/收藏不变,真实新轮次才前移;现有历史页和弹框的布局、相对时间样式不改。复用既有有界短进程及其进程树清理,不新增下载、磁盘缓存或跨工作树资源,不写发行包,不影响签名或 Sparkle delta。此修复限 Codex 原生连接,自定义 ACP 与其他 Agent 保留标准列表。 -- **历史列表分批显示并复用近期结果**:Codex 原生活跃历史通过前述官方 App Server 读取器分页,保留 `recency_at`、`useStateDbOnly: true`、provider/source/workspace 过滤与去重;自定义 ACP 和其他 Agent 继续使用标准 `session/list`。两条路径都不能把当前页没有项目匹配当成扫描结束,也不读取私有历史文件绕过上游。共享 Host 在非末页有匹配项时立即发送带原请求 token 的 `sessionsPage`,继续沿上游游标读取;最终仍发送原有完整 `sessions` 快照,因此未消费分页事件的平台保持兼容。macOS 收到分页只合并已确认存在的会话,保留旧列表和正在加载状态;只有最终快照才能移除未列出的旧项。后续页失败保留旧项和已收到的新项并显示错误,重试、断连与取消归档产生的新请求不接受旧 token 的分页。归档与活跃会话仍按原有双列表规则协调,不能用部分活跃页推断某条归档不存在。历史管理页和快捷列表通过 `refreshSessionsIfNeeded()` 复用最近 30 秒内成功完成的结果,空结果也有效;活跃与归档分别计时,只在各自需要刷新时查询。在途请求合并,失败立即允许重试;确认任一会话(包括后台会话)的轮次结束后,立即使活跃列表新鲜度失效,下次打开历史重新读取真实活动时间与排序,归档列表仍按自己的期限复用。轮次结束时尚未完成的历史查询可能读取了旧活动时间,其最终响应不能重新延长新鲜度;仍正常合并结果,待该请求完成后再按需刷新。单纯加载、查看历史和本地标注不使缓存失效,也不能用本地时钟伪造活动时间。手动刷新、连接就绪及取消归档成功后的刷新仍立即查询。正确例子是第一页已返回一条当前项目会话、第二页尚未返回时先显示该条,进入管理页复用这次查询;不要每次视图出现都重扫所有历史,也不要收到第一页就清空旧列表或停止加载。代价是没有本连接新轮次时,自动进入页面最多暂时展示 30 秒前的列表,用户可手动刷新。时间来自可注入的单调时钟,无额外定时任务;快照与刷新时间只属于工作区/Agent 的当前连接内存,重连清除新鲜度,不增加磁盘缓存、下载或跨工作树资源,不写安装包,不影响签名与 Sparkle delta。回归覆盖 `AgentHistoryTests` 的分页、失败、过期与手动刷新,以及 Host 的 `session_history_` 场景与 `active_history_publishes_matching_rows_before_later_pages_without_duplicates`。 +- **历史列表分批显示并复用近期结果**:Codex 原生活跃历史通过前述官方 App Server 读取器分页,保留 `recency_at`、`useStateDbOnly: true`、账号/source/workspace 过滤与去重;自定义 ACP 和其他 Agent 继续使用标准 `session/list`。两条路径都不能把当前页没有项目匹配当成扫描结束,也不读取私有历史文件绕过上游。共享 Host 在非末页有匹配项时立即发送带原请求 token 的 `sessionsPage`,继续沿上游游标读取;最终仍发送原有完整 `sessions` 快照,因此未消费分页事件的平台保持兼容。macOS 收到分页只合并已确认存在的会话,保留旧列表和正在加载状态;只有最终快照才能移除未列出的旧项。后续页失败保留旧项和已收到的新项并显示错误,重试、断连与取消归档产生的新请求不接受旧 token 的分页。归档与活跃会话仍按原有双列表规则协调,不能用部分活跃页推断某条归档不存在。历史管理页和快捷列表通过 `refreshSessionsIfNeeded()` 复用最近 30 秒内成功完成的结果,空结果也有效;活跃与归档分别计时,只在各自需要刷新时查询。在途请求合并,失败立即允许重试;确认任一会话(包括后台会话)的轮次结束后,立即使活跃列表新鲜度失效,下次打开历史重新读取真实活动时间与排序,归档列表仍按自己的期限复用。轮次结束时尚未完成的历史查询可能读取了旧活动时间,其最终响应不能重新延长新鲜度;仍正常合并结果,待该请求完成后再按需刷新。单纯加载、查看历史和本地标注不使缓存失效,也不能用本地时钟伪造活动时间。手动刷新、连接就绪及取消归档成功后的刷新仍立即查询。正确例子是第一页已返回一条当前项目会话、第二页尚未返回时先显示该条,进入管理页复用这次查询;不要每次视图出现都重扫所有历史,也不要收到第一页就清空旧列表或停止加载。代价是没有本连接新轮次时,自动进入页面最多暂时展示 30 秒前的列表,用户可手动刷新。时间来自可注入的单调时钟,无额外定时任务;快照与刷新时间只属于工作区/Agent 的当前连接内存,重连清除新鲜度,不增加磁盘缓存、下载或跨工作树资源,不写安装包,不影响签名与 Sparkle delta。回归覆盖 `AgentHistoryTests` 的分页、失败、过期与手动刷新,以及 Host 的 `session_history_` 场景与 `active_history_publishes_matching_rows_before_later_pages_without_duplicates`。 - **恢复模型必须确认底层生效**:供应商默认模型只用于新会话,不能通过 `ANTHROPIC_MODEL` 固定整个 Claude 适配器进程,也不能在 `session/load` 再传 `options.model` 覆盖历史。固定 Claude ACP 0.81.2 会从最后一个真实回复读取模型并报告给界面,但这不证明 SDK 正在使用同一模型。共享 Host 在 Claude API Key 恢复响应中读取标准 `category: model` 的当前值,再用 `session/set_config_option` 重新确认;即使当前值没变或不在选择器列表里,也必须完成这次确认。成功后使用完整的配置响应发布 `sessionLoaded`,保留上游更新的思考、速度和权限选项;拒绝、确认值不一致或超时走加载失败,不解锁排队消息。加载和确认共用已有六十秒期限,不重新开始计时。正确例子是历史选择 Opus、供应商默认 Sonnet 时仍恢复 Opus;不要靠工具栏显示 Opus 就认为实际请求已经切换,也不要读写 CLI 历史、保存第二份模型状态或修改安装的适配器。无模型选择器的旧适配器与其他 Agent 保持标准加载行为。这个修复只新增内存中的请求顺序,不新增缓存、下载或可复用资源,不写 app bundle、不影响签名与 Sparkle delta。 - **历史页与本地管理**:参考 [CC GUI 历史页](https://github.com/zhukunpenglinyutong/jetbrains-cc-gui/tree/main/webview/src/components/history) 使用面板内返回、搜索、统计和分隔列表。搜索只查询标题和 ID,数量只统计已加载的用户/Agent 消息,不扫描 CLI 文件,也不伪造上游未提供的消息总数。`AgentHistoryFeatureModel` 通过 `AgentHistoryPersisting` 保存收藏、标题覆盖和隐藏标记;macOS adapter 使用既有偏好设置,键为 `lithe.agent-history.v1.`,按标准化工作区与配置 Agent ID 隔离。变更前重新读取,避免另一窗口的旧快照覆盖最近注释;解码或保存失败明确显示,不重置损坏状态。移除仅隐藏本地列表,提供“已移除的会话”筛选与恢复,不宣称删除 Agent 原始会话。单条和批量移除都先弹出确认框,取消不写元数据;确认操作使用弹窗出现时的会话 ID 快照,避免把后续选择变化带入删除。进入历史页保留对话视图和输入草稿,不停止正在进行的轮次。 -- **归档历史走 Agent 自己的官方接口,浏览只读**:固定的 codex-acp 1.13.1 在 `session/list` 中只列未归档线程,也没有取消归档请求;Claude Agent SDK 0.3.280 的会话信息没有归档概念。因此 Host 只为 Codex 连接提供归档历史:`codex_history.rs` 使用与 ACP 连接相同的 Codex CLI(订阅模式取已检测的 CLI,API Key 模式取中继改写前的 `CODEX_PATH`),临时启动 `codex app-server`,调用 `thread/list`(`archived: true`,provider 与 source kinds 与 codex-acp 一致,不发 0.156 不支持的 `cwd` 参数),按 codex-acp 的路径比较规则在本地筛选当前工作区并跟随游标翻页,按 ID 去重;达到 `MAX_SESSION_LIST_PAGES` 时返回 `complete: false`,界面明示只显示最近部分,不把截断当完整。该进程沿用额度探针的隔离方式:移除 API 覆盖变量、不传凭据、不改 `CODEX_HOME`,单次交换有 30 秒上限,结束或取消时终止整个进程树;上游错误文本不回传界面。浏览、刷新和搜索只发列表请求;只有用户在确认框中选择“取消归档并打开”后才发 `thread/unarchive`,成功后再走已有 `session/load`,失败时会话留在归档分组。取消归档成功事件必须先同步把会话移回活跃历史、作废此前活跃与归档列表的请求 token,并重新查询双列表,再恢复等待方;不要等异步等待方恢复后才改数组,否则成功事件紧接着到达的旧列表仍会把会话错误放回归档,断连后也可能重新插入过期记录。Swift 把上游原始归档响应与活跃 `sessions` 分开保存,以请求 token 丢弃过期结果;只有最新上游活跃列表中的 ID 才压制归档展示,不用本地已加载会话判断上游状态,也不破坏性删除归档响应。两种响应先后顺序都要在本轮完成后得到相同结果:例如 A 从活跃变归档时,即使归档先返回、A 的本地标签仍打开,也只在归档历史分组显示,已加载消息仍保留。截断提示放在分组外,不能依赖归档非空、展开或搜索命中;空结果且 `complete: false` 不能显示“没有历史”或“没有匹配”。连接断开、切换工作区或 Agent 时清空归档列表,避免串入旧结果。归档与 Lithe 的“已移除”互不相同:后者只是本地隐藏。已移除的归档行提供独立恢复按钮,只清除本地隐藏标记,保留收藏和自定义标题,不请求加载或取消上游归档;本地注释接口接受活跃或归档列表中的已知 ID,导出仍只接受可加载的活跃会话。`ready` 的 `canListArchivedSessions` 为假时(如 Claude),历史页提示该 Agent 不支持归档会话,不按 Agent 名称写分支。本能力不新增下载、缓存或资源目录,不写发行包,不影响代码签名和 Sparkle delta。 +- **归档历史走 Agent 自己的官方接口,浏览只读**:固定的 codex-acp 1.13.1 在 `session/list` 中只列未归档线程,也没有取消归档请求;Claude Agent SDK 0.3.280 的会话信息没有归档概念。因此 Host 只为 Codex 连接提供归档历史:`codex_history.rs` 使用与 ACP 连接相同的 Codex CLI(订阅模式取已检测的 CLI,API Key 模式取中继改写前的 `CODEX_PATH`),临时启动 `codex app-server`,调用 `thread/list`(`archived: true`,全部 provider、source kinds 与 codex-acp 一致,不发 0.156 不支持的 `cwd` 参数),按 codex-acp 的路径比较规则在本地筛选当前工作区并跟随游标翻页,按 ID 去重;达到 `MAX_SESSION_LIST_PAGES` 时返回 `complete: false`,界面明示只显示最近部分,不把截断当完整。该进程沿用额度探针的隔离方式:移除 API 覆盖变量、不传凭据、不改 `CODEX_HOME`,单次交换有 30 秒上限,结束或取消时终止整个进程树;上游错误文本不回传界面。浏览、刷新和搜索只发列表请求;只有用户在确认框中选择“取消归档并打开”后才发 `thread/unarchive`,成功后再走已有 `session/load`,失败时会话留在归档分组。取消归档成功事件必须先同步把会话移回活跃历史、作废此前活跃与归档列表的请求 token,并重新查询双列表,再恢复等待方;不要等异步等待方恢复后才改数组,否则成功事件紧接着到达的旧列表仍会把会话错误放回归档,断连后也可能重新插入过期记录。Swift 把上游原始归档响应与活跃 `sessions` 分开保存,以请求 token 丢弃过期结果;只有最新上游活跃列表中的 ID 才压制归档展示,不用本地已加载会话判断上游状态,也不破坏性删除归档响应。两种响应先后顺序都要在本轮完成后得到相同结果:例如 A 从活跃变归档时,即使归档先返回、A 的本地标签仍打开,也只在归档历史分组显示,已加载消息仍保留。截断提示放在分组外,不能依赖归档非空、展开或搜索命中;空结果且 `complete: false` 不能显示“没有历史”或“没有匹配”。连接断开、切换工作区或 Agent 时清空归档列表,避免串入旧结果。归档与 Lithe 的“已移除”互不相同:后者只是本地隐藏。已移除的归档行提供独立恢复按钮,只清除本地隐藏标记,保留收藏和自定义标题,不请求加载或取消上游归档;本地注释接口接受活跃或归档列表中的已知 ID,导出仍只接受可加载的活跃会话。`ready` 的 `canListArchivedSessions` 为假时(如 Claude),历史页提示该 Agent 不支持归档会话,不按 Agent 名称写分支。本能力不新增下载、缓存或资源目录,不写发行包,不影响代码签名和 Sparkle delta。 - **导出与资源所有权**:导出为用户选择位置的 Markdown,包含用户、Agent 和工具消息,工具输入/输出/内容一并保留。未打开会话复用现有、有请求期限的 ACP 加载路径,逐个加载,不改变选中标签;加载失败不写部分导出;只有会话成功创建或完整加载后才标记历史快照可复用,消息非空不能证明完整性。失败或断连留下的部分回放必须重载,已完整加载的快照在断连后仍可导出。取消与模块关闭释放等待 continuation(异步结果回调),原加载请求可自然结束。正在回复或加载中的会话不导出。导出 Task 由历史功能模型拥有并在模块停止时取消、等待结束;平台 adapter 拥有保存对话框与原子文件写入,最大 32 MiB。偏好设置与用户导出都不是构建缓存,不新增下载、不跨 worktree 复制;见 `scripts/resources/worktree-resources.json`。它们不写发行 bundle、不影响代码签名和 Sparkle delta。 - **配置菜单间距**:模型和设置选项使用较小的最小行高,权限选项保留标题与最多两行说明需要的空间;行内容较高时允许自然增高,不用固定行高裁剪文字。权限面板按实际内容高度收紧,测量值在最大可视高度处截断并只更新弹出面板的局部状态,避免滚动时反复调整面板大小;长列表继续由原生滚动容器承载,不能把行距变小却保留旧面板高度,或为了紧凑隐藏上游选项。名称和权限语义由既有呈现规则及 ACP 确认流程决定,布局不改写选项 ID 或当前值。 - **上下文用量以上游为准**:发送按钮左侧使用共享 22pt 命中区内的 16pt 圆环,悬停通过工作台浮层显示一行百分比及已用/总容量,如 `41.8% · 125.3K / 300.0K 上下文已使用`,点击展开上下文明细。没有上报或无效容量保持未知,不再显示 0%;只有有效零使用量才是 0%。使用现有 ACP `usage_update.used/size`,每条更新替换前值,压缩允许下降,超过容量时保留上游数字、仅圆环限制一圈;计费累计量不能代替占用,也不根据模型名或文字长度推算。固定的 codex-acp 1.13.1 在 `loadSession` 中回放消息但不重新发出 `usage_update`,所以历史消息存在不等于已有容量数据。Lithe 将实际收到的报告与已确认模型选项 ID/值一并放入已有、按工作区和 Agent 隔离的有界会话统计记录;恢复完成且模型完全匹配时展示已保存的报告,新报告替换来源状态和数字,回放中明确上报的未知值也不能被旧缓存覆盖。模型改变清除报告和持久化快照,权限/思考选项不清除;断连清除实时展示,下一次恢复需重新确认模型。旧历史没有缓存时,固定 Codex 适配器通过下述原生恢复兼容通道获取真实报告;其他适配器没有报告时仍未知。不发隐式提示、不读取 Agent 私有历史文件、不修改已安装适配器。只复用用户偏好存储,不新增资源路径,不写 bundle。 @@ -436,6 +439,8 @@ Windows 连接桥已接入共享 Host,面板 UI 也已落地(活动栏入口 ## 验证 +- 供应商筛选:`./.agents/skills/write-stable-tests/scripts/test-stability-macos.sh -- --filter 'AgentHistoryTests|ContextMenuCoverageTests'` 验证默认全部、未知来源、搜索与标注交集、元数据分页/归档传播,以及深浅主题原生子菜单键盘选择;`node .agents/skills/write-stable-tests/scripts/run-bun-tests-with-timing.mjs -- src/features/agent` 验证 Windows 展示逻辑、归档独有供应商、切换清空批量选择与仅导出可见 ID。共享 `history-activity-v1.json` 同时验证来源与活动时间不互相替代。测试替身不代表 Windows 整机验收。 + - `./.agents/skills/write-stable-tests/scripts/test-stability-macos.sh -- --filter 'EditorTabOrderFeatureModelTests|AgentConversationFeatureModelTests'`:以相同会话标识分别打开 Codex 与 Claude,验证原生视图收到 Agent 切换后自动更新标签,往返选择恢复原 Agent、会话和草稿;控制预创建确认、连续 New Chat、仅附件草稿、断连和重连的顺序,确认空标签复用、失效绑定清理和草稿保留。使用受控传输,不启动真实 CLI;原生窗口与连接在成功和失败路径均释放,视图同步等待最多两秒。 - `./.agents/skills/write-stable-tests/scripts/test-stability-macos.sh -- --filter AgentFileAttachmentTests`:检查菜单目标、Agent/会话草稿隔离、初次会话迟到结果、失败历史加载、运行中添加不发送、非法批次原子拒绝及深浅主题原生输入框保留附件。 diff --git a/docs/ci-builds.md b/docs/ci-builds.md index 8dd0acb090..9003d44a34 100644 --- a/docs/ci-builds.md +++ b/docs/ci-builds.md @@ -693,7 +693,9 @@ Inter 4.1 的 18 个静态 OTF(内部版本 4.001)及许可、JetBrains Mono - Codex 短重连配置及历史上下文 helper:`/lithe-codex-retry-/` 由单次 Agent 连接独占,内容来自当前 Rust Host 内嵌的一方源码,原生 CLI 路径和预算 - 经非敏感环境字段传递,密钥仍只走标准输入。系统临时目录由平台解析;准备、 + 经非敏感环境字段传递,密钥仍只走标准输入。原生 App Server 的供应商准入路由也属于 + 此连接:通过非敏感进程参数与显式认证方式保持一致,不携带真实地址或凭据,不能复制 + 到另一工作树或连接;用户配置和账号目录保持不变。系统临时目录由平台解析;准备、 启动失败、取消或进程树结束后删除。它没有可复用的版本、平台、架构、工具链 stamp,任何复制阶段都不得共享;`excludedResources.codex-retry-relay` 走脚本 的排除路由。订阅连接也复用同一 helper 获取原生历史用量,但不改重试策略;单次连接的回环监听器、随机访问令牌及每次加载票据只存在内存中,随连接关闭,不进入复制阶段。helper 不修改已安装适配器、用户配置、app bundle 或 Windows 安装 diff --git a/macos/Resources/en.lproj/Localizable.strings b/macos/Resources/en.lproj/Localizable.strings index d77bb0887a..f816d183ab 100644 --- a/macos/Resources/en.lproj/Localizable.strings +++ b/macos/Resources/en.lproj/Localizable.strings @@ -311,6 +311,7 @@ "All modules" = "All modules"; "All projects" = "All projects"; "All projects · project can override" = "All projects · project can override"; +"All providers" = "All providers"; "All servers" = "All servers"; "All sessions" = "All sessions"; "All severities" = "All severities"; @@ -932,6 +933,7 @@ "Conversation continued from a summary" = "Conversation continued from a summary"; "Conversation history" = "Conversation history"; "Conversation history is unavailable" = "Conversation history is unavailable"; +"Conversation provider" = "Conversation provider"; "Conversation tabs" = "Conversation tabs"; "Conversation title" = "Conversation title"; "Conversations for this project and Agent appear here." = "Conversations for this project and Agent appear here."; @@ -4334,6 +4336,7 @@ "Try Again" = "Try Again"; "Try a branch name or checkout path." = "Try a branch name or checkout path."; "Try a different search term." = "Try a different search term."; +"Try another search or provider filter." = "Try another search or provider filter."; "Try another title or session ID." = "Try another title or session ID."; "Try another title, author, number, or label." = "Try another title, author, number, or label."; "Turn on MCP to generate a configuration for agents." = "Turn on MCP to generate a configuration for agents."; @@ -4385,6 +4388,7 @@ "Unknown Keychain error" = "Unknown Keychain error"; "Unknown date" = "Unknown date"; "Unknown error" = "Unknown error"; +"Unknown provider" = "Unknown provider"; "Unknown source" = "Unknown source"; "Unlink" = "Unlink"; "Unlinked the pull request" = "Unlinked the pull request"; @@ -4655,6 +4659,10 @@ "Zoom in" = "Zoom in"; "Zoom out" = "Zoom out"; "[Line] [:column]:" = "[Line] [:column]:"; +"agent.history.allProviders" = "All providers"; +"agent.history.provider" = "Conversation provider"; +"agent.history.providerHint" = "Try another search or provider filter."; +"agent.history.unknownProvider" = "Unknown provider"; "agent.settings.enableSubscription" = "Enable"; "agent.stop" = "Stop"; "ai.add" = "Add"; diff --git a/macos/Resources/zh-Hans.lproj/Localizable.strings b/macos/Resources/zh-Hans.lproj/Localizable.strings index f716ce8e46..17464dff41 100644 --- a/macos/Resources/zh-Hans.lproj/Localizable.strings +++ b/macos/Resources/zh-Hans.lproj/Localizable.strings @@ -311,6 +311,7 @@ "All modules" = "全部模块"; "All projects" = "所有项目"; "All projects · project can override" = "所有项目 · 项目可覆盖"; +"All providers" = "全部供应商"; "All servers" = "所有服务器"; "All sessions" = "全部会话"; "All severities" = "全部级别"; @@ -932,6 +933,7 @@ "Conversation continued from a summary" = "对话已从摘要继续"; "Conversation history" = "对话历史"; "Conversation history is unavailable" = "当前无法读取对话历史"; +"Conversation provider" = "对话供应商"; "Conversation tabs" = "会话标签"; "Conversation title" = "会话标题"; "Conversations for this project and Agent appear here." = "此项目和 Agent 的会话会显示在这里。"; @@ -4334,6 +4336,7 @@ "Try Again" = "重试"; "Try a branch name or checkout path." = "请尝试输入分支名称或检出路径。"; "Try a different search term." = "请尝试其他搜索词。"; +"Try another search or provider filter." = "试试其他搜索条件或供应商筛选。"; "Try another title or session ID." = "试试其他标题或会话 ID。"; "Try another title, author, number, or label." = "请尝试其他标题、作者、编号或标签。"; "Turn on MCP to generate a configuration for agents." = "开启 MCP 后会生成供 Agent 使用的配置。"; @@ -4385,6 +4388,7 @@ "Unknown Keychain error" = "未知的钥匙串错误"; "Unknown date" = "时间未知"; "Unknown error" = "未知错误"; +"Unknown provider" = "未知供应商"; "Unknown source" = "未知来源"; "Unlink" = "取消关联"; "Unlinked the pull request" = "已取消关联拉取请求"; @@ -4655,6 +4659,10 @@ "Zoom in" = "放大"; "Zoom out" = "缩小"; "[Line] [:column]:" = "[行] [:列]:"; +"agent.history.allProviders" = "全部供应商"; +"agent.history.provider" = "对话供应商"; +"agent.history.providerHint" = "试试其他搜索条件或供应商筛选。"; +"agent.history.unknownProvider" = "未知供应商"; "agent.settings.enableSubscription" = "启用"; "agent.stop" = "停止"; "ai.add" = "添加"; diff --git a/macos/Sources/Lithe/Views/Agent/AgentHistoryView.swift b/macos/Sources/Lithe/Views/Agent/AgentHistoryView.swift index c0a44c865c..f356726669 100644 --- a/macos/Sources/Lithe/Views/Agent/AgentHistoryView.swift +++ b/macos/Sources/Lithe/Views/Agent/AgentHistoryView.swift @@ -1,6 +1,7 @@ import SwiftUI import LitheAgentConversationModule import LitheCoreContracts +import LitheModuleAPI enum AgentHistoryFilter: String, CaseIterable { case all, favorites, removed @@ -14,6 +15,42 @@ enum AgentHistoryFilter: String, CaseIterable { } } +/// A presentation-only filter; upstream continues to list the complete account/workspace history. +enum AgentHistoryProviderFilter: Hashable { + case all, unknown, provider(String) + + var title: String { + switch self { + case .all: L10n.string("All providers") + case .unknown: L10n.string("Unknown provider") + case .provider(let id): id + } + } + + func matches(_ session: AgentSessionSummary) -> Bool { + switch self { + case .all: true + case .unknown: session.modelProvider == nil + case .provider(let id): session.modelProvider == id + } + } + + static func options(_ sessions: [AgentSessionSummary]) -> [Self] { + let providers = Set(sessions.compactMap(\.modelProvider)).sorted().map(Self.provider) + return [.all] + providers + (sessions.contains { $0.modelProvider == nil } ? [.unknown] : []) + } + + static func menuItems(_ sessions: [AgentSessionSummary], selected: Self, + onSelect: @escaping (Self) -> Void) -> [LitheContextMenuItem] { + var values = options(sessions) + // Partial refreshes must not remove the user's current filter control. + if !values.contains(selected) { values.append(selected) } + return values.map { value in + .action(value.title, localizesTitle: false, checked: value == selected) { onSelect(value) } + } + } +} + /// Browsing groups of the unfiltered history: favorites first, then by last activity. enum AgentHistoryGroup: Hashable { case favorites, today, yesterday, previous7Days, previous30Days, earlier, unknown @@ -74,11 +111,18 @@ enum AgentHistoryListItem: Identifiable, Equatable { enum AgentHistoryPresentation { enum EmptyState { case loading, incomplete, noMatches, noHistory } + /// Automatic expansion is only a default; the user's disclosure choice wins. + static func isArchiveExpanded(explicit: Bool?, isSearching: Bool, + provider: AgentHistoryProviderFilter, hasMatches: Bool) -> Bool { + explicit ?? ((isSearching || provider != .all) && hasMatches) + } + /// A partial upstream scan cannot establish that history or a search is empty. - static func emptyState(isRefreshing: Bool, query: String, isArchivedHistoryComplete: Bool) -> EmptyState { + static func emptyState(isRefreshing: Bool, query: String, isArchivedHistoryComplete: Bool, + hasProviderFilter: Bool = false) -> EmptyState { if isRefreshing { return .loading } if !isArchivedHistoryComplete { return .incomplete } - return query.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty ? .noHistory : .noMatches + return !hasProviderFilter && query.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty ? .noHistory : .noMatches } static func popupTitle(_ session: AgentSessionSummary, metadata: AgentHistoryMetadata?, @@ -116,9 +160,11 @@ enum AgentHistoryPresentation { } static func sessions(_ sessions: [AgentSessionSummary], metadata: [String: AgentHistoryMetadata], - query: String, filter: AgentHistoryFilter) -> [AgentSessionSummary] { + query: String, filter: AgentHistoryFilter, + provider: AgentHistoryProviderFilter = .all) -> [AgentSessionSummary] { let query = query.trimmingCharacters(in: .whitespacesAndNewlines) return sessions.filter { session in + guard provider.matches(session) else { return false } let entry = metadata[session.id] ?? AgentHistoryMetadata() guard entry.isHidden == (filter == .removed), filter != .favorites || entry.isFavorite else { return false } let title = entry.title ?? session.title ?? "" @@ -158,7 +204,8 @@ enum AgentHistoryPresentation { static func managementSessions(_ sessions: [AgentSessionSummary], openSessionIDs: [String], conversations: [String: AgentConversation], archivedSessionIDs: Set = [], metadata: [String: AgentHistoryMetadata], - query: String, filter: AgentHistoryFilter, locale: Locale = .current) -> [AgentSessionSummary] { + query: String, filter: AgentHistoryFilter, locale: Locale = .current, + provider: AgentHistoryProviderFilter = .all) -> [AgentSessionSummary] { // One O(n) pass builds the rows and `sessions` sorts them once: O(n log n). // The final order is by activity date, so pre-sorting here was redundant. let activeSessions = sessions.filter { !archivedSessionIDs.contains($0.id) } @@ -173,7 +220,7 @@ enum AgentHistoryPresentation { row.title = popupTitle(row, metadata: metadata[session.id], conversation: conversations[session.id], locale: locale) return row } - return Self.sessions(rows, metadata: metadata, query: query, filter: filter) + return Self.sessions(rows, metadata: metadata, query: query, filter: filter, provider: provider) } /// Value-type styles: creating an `ISO8601DateFormatter` per call made @@ -243,6 +290,7 @@ final class AgentHistoryRowsCache { let conversationTitles: [String: String] let query: String let filter: AgentHistoryFilter + var provider: AgentHistoryProviderFilter = .all let localeIdentifier: String } @@ -336,6 +384,7 @@ struct AgentHistoryView: View { @State private var historyListActive = false @State private var query = "" @State private var filter = AgentHistoryFilter.all + @State private var providerFilter = AgentHistoryProviderFilter.all @State private var isSelecting = false @State private var selectedIDs: Set = [] @State private var editingID: String? @@ -354,18 +403,23 @@ struct AgentHistoryView: View { let key = AgentHistoryRowsCache.Key( sessions: feature.sessions, openSessionIDs: feature.openSessionIDs, archivedSessionIDs: archivedIDs, metadata: history.metadata, conversationTitles: feature.conversations.mapValues(AgentHistoryPresentation.titleKey), - query: query, filter: filter, localeIdentifier: locale.identifier) + query: query, filter: filter, provider: providerFilter, localeIdentifier: locale.identifier) return rowsCache.rows(for: key) { AgentHistoryPresentation.managementSessions(feature.sessions, openSessionIDs: feature.openSessionIDs, conversations: feature.conversations, archivedSessionIDs: archivedIDs, - metadata: history.metadata, query: query, filter: filter, locale: locale) + metadata: history.metadata, query: query, filter: filter, locale: locale, provider: providerFilter) } } /// Searched and filtered like active rows; local restoration never loads a transcript. private var archived: [AgentSessionSummary] { - AgentHistoryPresentation.sessions(feature.archivedSessions, metadata: history.metadata, query: query, filter: filter) + AgentHistoryPresentation.sessions(feature.archivedSessions, metadata: history.metadata, + query: query, filter: filter, provider: providerFilter) } private var isSearching: Bool { !query.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty } + private var isArchivedExpanded: Bool { + AgentHistoryPresentation.isArchiveExpanded(explicit: archivedExpansion, + isSearching: isSearching, provider: providerFilter, hasMatches: !archived.isEmpty) + } var body: some View { // Sorting and filtering run once per evaluation, not once per use. @@ -384,7 +438,7 @@ struct AgentHistoryView: View { .accessibilityIdentifier("agent-history-back") } divider - toolbar(count: rows.count, visible: rowIDs) + toolbar(count: rows.count + archivedRows.count, visible: rowIDs) divider if let error = history.errorMessage ?? feature.historyError ?? feature.archivedHistoryError { AgentInlineNotice(text: error, status: .error) @@ -419,6 +473,8 @@ struct AgentHistoryView: View { .onAppear { feature.refreshSessionsIfNeeded() } .onChange(of: rowIDs) { selectedIDs.formIntersection($0) } .onChange(of: query) { _ in archivedExpansion = nil } + .onChange(of: ObjectIdentifier(feature)) { _ in resetProviderFilter() } + .onChange(of: feature.accountDirectory) { _ in resetProviderFilter() } .alert("Confirm deletion", isPresented: Binding( get: { pendingRemovalIDs != nil }, set: { if !$0 { pendingRemovalIDs = nil } } @@ -471,9 +527,9 @@ struct AgentHistoryView: View { } if isSelecting { HStack(spacing: 8) { - Button(selected.count == count && count > 0 ? "Deselect all" : "Select all") { - selectedIDs = selected.count == count ? [] : Set(visible) - }.disabled(count == 0) + Button(selected.count == visible.count && !visible.isEmpty ? "Deselect all" : "Select all") { + selectedIDs = selected.count == visible.count ? [] : Set(visible) + }.disabled(visible.isEmpty) Spacer(minLength: 0) LitheMenu { LitheContextMenuItem.action("Export conversations") { history.export(selected) } @@ -543,19 +599,41 @@ struct AgentHistoryView: View { for mode in AgentHistoryFilter.allCases { LitheContextMenuItem.action(mode.menuTitle, checked: mode == filter) { filter = mode } } + LitheContextMenuItem.separator + LitheContextMenuItem.submenu("Conversation provider", items: providerItems) } label: { - LitheSystemIcon(systemImage: filter == .favorites ? "pin.fill" : "line.3.horizontal.decrease", size: LitheTheme.Metrics.toolbarIconSize) + HStack(spacing: LitheTheme.Banner.gap) { + LitheSystemIcon(systemImage: filter == .favorites ? "pin.fill" : "line.3.horizontal.decrease", size: LitheTheme.Metrics.toolbarIconSize) + if providerFilter != .all { + Text(verbatim: providerFilter.title).font(LitheTheme.uiFont(size: 11)).lineLimit(1) + } + } } - .litheToolbarIconButton() + .litheToolbarIconButton(isIconOnly: providerFilter == .all) .help(filter.title) .accessibilityIdentifier("agent-history-filter") }.foregroundStyle(AgentPanelStyle.secondary) } + private var providerItems: [LitheContextMenuItem] { + AgentHistoryProviderFilter.menuItems(feature.sessions + feature.archivedSessions, selected: providerFilter) { option in + providerFilter = option + selectedIDs = [] + archivedExpansion = nil + } + } + + private func resetProviderFilter() { + providerFilter = .all + selectedIDs = [] + archivedExpansion = nil + } + @ViewBuilder private var emptyState: some View { switch AgentHistoryPresentation.emptyState( isRefreshing: feature.isRefreshingSessions || feature.isRefreshingArchivedSessions, - query: query, isArchivedHistoryComplete: feature.isArchivedHistoryComplete + query: query, isArchivedHistoryComplete: feature.isArchivedHistoryComplete, + hasProviderFilter: providerFilter != .all ) { case .incomplete: Spacer(minLength: 0) @@ -563,7 +641,7 @@ struct AgentHistoryView: View { AgentEmptyStateView(systemImage: "clock", title: "Loading history…", message: "", isBusy: true) case .noMatches: AgentEmptyStateView(systemImage: "magnifyingglass", title: "No matching conversations", - message: AgentLocalization.string("Try another title or session ID.", locale: locale)) + message: AgentLocalization.string("Try another search or provider filter.", locale: locale)) case .noHistory: AgentEmptyStateView(systemImage: "clock.arrow.circlepath", title: "No earlier conversations", message: AgentLocalization.string("Conversations for this project and Agent appear here.", locale: locale)) @@ -594,7 +672,7 @@ struct AgentHistoryView: View { } return AgentHistoryList( items: built.items, archived: built.archived, revision: built.revision, - isArchivedExpanded: archivedExpansion ?? (isSearching && !archivedRows.isEmpty), + isArchivedExpanded: isArchivedExpanded, isArchivedBusy: feature.isRefreshingArchivedSessions || feature.unarchivingSessionID != nil, isRemovedFilter: filter == .removed, isSelecting: isSelecting, selectedIDs: selectedIDs, editingID: editingID, editingText: editingTitle, editingTitle: $editingTitle, @@ -653,7 +731,7 @@ struct AgentHistoryView: View { else { pendingRemovalIDs = [id] } }, restoreArchived: { history.setHidden([$0], false) }, - toggleArchived: { archivedExpansion = !(archivedExpansion ?? (isSearching && !archived.isEmpty)) }) + toggleArchived: { archivedExpansion = !isArchivedExpanded }) } private var divider: some View { Rectangle().fill(AgentPanelStyle.border).frame(height: 1) } diff --git a/macos/Sources/LitheAgentConversationModule/Application/AgentConnectionModel.swift b/macos/Sources/LitheAgentConversationModule/Application/AgentConnectionModel.swift index 26a4471e0e..e477e96e34 100644 --- a/macos/Sources/LitheAgentConversationModule/Application/AgentConnectionModel.swift +++ b/macos/Sources/LitheAgentConversationModule/Application/AgentConnectionModel.swift @@ -719,7 +719,8 @@ public final class AgentConnectionModel: ObservableObject { guard isRefreshingArchivedSessions, token == archivedRefreshToken else { return } listedArchivedSessions = (event["sessions"] as? [[String: Any]] ?? []).compactMap { entry in guard let id = entry["sessionId"] as? String else { return nil } - return AgentSessionSummary(id: id, title: entry["title"] as? String, updatedAt: entry["updatedAt"] as? String) + return AgentSessionSummary(id: id, title: entry["title"] as? String, + updatedAt: entry["updatedAt"] as? String, modelProvider: entry["modelProvider"] as? String) } isArchivedHistoryComplete = event["complete"] as? Bool ?? false archivedRefreshToken = nil @@ -952,7 +953,8 @@ public final class AgentConnectionModel: ObservableObject { return AgentSessionSummary( id: id, title: entry["title"] as? String ?? local?.title, - updatedAt: entry["updatedAt"] as? String + updatedAt: entry["updatedAt"] as? String, + modelProvider: entry["modelProvider"] as? String ) } let listedIDs = Set(listed.map(\.id)) diff --git a/macos/Sources/LitheAgentConversationModule/Application/AgentConversationState.swift b/macos/Sources/LitheAgentConversationModule/Application/AgentConversationState.swift index 9424b1a538..2b50a15841 100644 --- a/macos/Sources/LitheAgentConversationModule/Application/AgentConversationState.swift +++ b/macos/Sources/LitheAgentConversationModule/Application/AgentConversationState.swift @@ -5,11 +5,15 @@ public struct AgentSessionSummary: Identifiable, Equatable, Sendable { public let id: String public var title: String? public var updatedAt: String? + /// Opaque provider reported by upstream history; never inferred from the current route. + public var modelProvider: String? - public init(id: String, title: String? = nil, updatedAt: String? = nil) { + public init(id: String, title: String? = nil, updatedAt: String? = nil, modelProvider: String? = nil) { self.id = id self.title = title self.updatedAt = updatedAt + let provider = modelProvider?.trimmingCharacters(in: .whitespacesAndNewlines) + self.modelProvider = provider?.isEmpty == false ? provider : nil } } diff --git a/macos/Tests/LitheTests/AgentHistoryTests.swift b/macos/Tests/LitheTests/AgentHistoryTests.swift index 3f2a39da8d..67eea4f56c 100644 --- a/macos/Tests/LitheTests/AgentHistoryTests.swift +++ b/macos/Tests/LitheTests/AgentHistoryTests.swift @@ -8,6 +8,133 @@ import LitheCoreContracts @MainActor struct AgentHistoryTests { + @Test + func providerFilterCombinesWithSearchMarksAndUnknownMetadata() { + let sessions = [ + AgentSessionSummary(id: "a", title: "Review", modelProvider: "native-provider"), + AgentSessionSummary(id: "b", title: "Review", modelProvider: "previous-provider"), + AgentSessionSummary(id: "removed", title: "Review", modelProvider: "native-provider"), + AgentSessionSummary(id: "unknown", title: "Review"), + AgentSessionSummary(id: "blank", title: "Review", modelProvider: " \n ") + ] + let metadata = ["a": AgentHistoryMetadata(isFavorite: true), + "removed": AgentHistoryMetadata(isHidden: true)] + func ids(_ provider: AgentHistoryProviderFilter, _ filter: AgentHistoryFilter = .all, + _ query: String = "") -> [String] { + AgentHistoryPresentation.sessions(sessions, metadata: metadata, query: query, + filter: filter, provider: provider).map(\.id) + } + #expect(Set(ids(.all)) == ["a", "b", "unknown", "blank"]) + #expect(ids(.provider("native-provider"), .favorites, "Review") == ["a"]) + #expect(ids(.provider("native-provider"), .removed) == ["removed"]) + #expect(ids(.provider("previous-provider"), .all, "b") == ["b"]) + #expect(Set(ids(.unknown)) == ["unknown", "blank"]) + #expect(ids(.provider("missing")).isEmpty) + #expect(AgentHistoryProviderFilter.options(sessions) == [ + .all, .provider("native-provider"), .provider("previous-provider"), .unknown + ]) + #expect(AgentHistoryPresentation.emptyState(isRefreshing: false, query: "", + isArchivedHistoryComplete: true, hasProviderFilter: true) == .noMatches) + #expect(AgentHistoryPresentation.emptyState(isRefreshing: false, query: "", + isArchivedHistoryComplete: false, hasProviderFilter: true) == .incomplete) + } + + @Test + func providerFilterKeepsUnlistedDraftsUnknownAndDoesNotChangeUpstreamRows() { + let sessions = [AgentSessionSummary(id: "saved", title: "Saved", modelProvider: "native-provider")] + let rows = AgentHistoryPresentation.managementSessions(sessions, openSessionIDs: ["saved", "draft"], + conversations: [:], metadata: [:], query: "", filter: .all, + provider: .provider("native-provider")) + #expect(rows.map(\.id) == ["saved"]) + #expect(sessions.first?.modelProvider == "native-provider") + let drafts = AgentHistoryPresentation.managementSessions(sessions, openSessionIDs: ["saved", "draft"], + conversations: [:], metadata: [:], query: "", filter: .all, provider: .unknown) + #expect(drafts.map(\.id) == ["draft"]) + } + + @Test(arguments: [AgentHistoryProviderFilter.provider("native-provider"), .unknown]) + func providerFilteredArchiveCollapsesOnFirstPressAndReopens(provider: AgentHistoryProviderFilter) { + var explicitExpansion: Bool? + func expanded() -> Bool { + AgentHistoryPresentation.isArchiveExpanded(explicit: explicitExpansion, + isSearching: false, provider: provider, hasMatches: true) + } + #expect(expanded(), "Provider matches default to expanded without a search") + explicitExpansion = !expanded() + #expect(!expanded(), "The first toggle collapses the actual displayed state") + explicitExpansion = !expanded() + #expect(expanded(), "The next toggle reopens the archive") + explicitExpansion = false + #expect(!expanded(), "An explicit collapse wins over automatic expansion") + explicitExpansion = nil + #expect(expanded(), "Changing search/provider resets the explicit choice") + #expect(!AgentHistoryPresentation.isArchiveExpanded(explicit: nil, + isSearching: false, provider: .all, hasMatches: true)) + #expect(!AgentHistoryPresentation.isArchiveExpanded(explicit: nil, + isSearching: false, provider: provider, hasMatches: false)) + } + + @Test(arguments: [ColorScheme.light, .dark]) + func providerSubmenuUsesNativeKeyboardSelectionAndRetainsUnavailableSelection(scheme: ColorScheme) async throws { + let sessions = [AgentSessionSummary(id: "a", title: "Known", modelProvider: "native-provider"), + AgentSessionSummary(id: "b", title: "Unknown")] + var selection = AgentHistoryProviderFilter.all + let items = AgentHistoryProviderFilter.menuItems(sessions, selected: .provider("temporarily-absent")) { selection = $0 } + #expect(items.map(\.title).contains("temporarily-absent")) + #expect(items.last?.isChecked == true) + let host = NSHostingView(rootView: Color.clear.environment(\.colorScheme, scheme)) + let window = NSWindow(contentRect: NSRect(x: 0, y: 0, width: 620, height: 400), + styleMask: [.borderless], backing: .buffered, defer: false) + window.isReleasedWhenClosed = false + window.contentView = host + let presenter = LitheContextMenuPresenter() + defer { presenter.dismiss(); window.contentView = nil; window.close() } + host.frame.size = NSSize(width: 620, height: 400) + window.orderFront(nil) + host.layoutSubtreeIfNeeded() + presenter.show(items: [.submenu("Conversation provider", items: items)], + at: NSPoint(x: 200, y: 400), appearance: NSAppearance(named: scheme == .dark ? .darkAqua : .aqua), + locale: Locale(identifier: "en"), parentWindow: window) + let panel = try #require(window.childWindows?.compactMap { $0 as? NSPanel }.first { $0.isVisible }) + func key(_ code: UInt16) throws { + panel.sendEvent(try #require(NSEvent.keyEvent(with: .keyDown, location: .zero, modifierFlags: [], + timestamp: 0, windowNumber: panel.windowNumber, context: nil, characters: "\r", + charactersIgnoringModifiers: "\r", isARepeat: false, keyCode: code))) + panel.contentView?.layoutSubtreeIfNeeded() + } + try key(125) + try key(124) + try key(125) + try key(36) + let clock = ContinuousClock() + let deadline = clock.now.advanced(by: .seconds(1)) + while selection == .all && clock.now < deadline { + await Task.yield() + } + #expect(selection == .provider("native-provider")) + #expect(AgentHistoryPresentation.sessions(sessions, metadata: [:], query: "", filter: .all, + provider: selection).map(\.id) == ["a"]) + } + + @Test + func historyEventsKeepProviderIdentityThroughPagesAndArchives() async throws { + try await HistoryFixture().run(archived: true) { fixture in + fixture.feature.refreshSessions() + let activeToken = try #require(fixture.transport.connection.commands.last { $0["kind"] as? String == "listSessions" }?["token"]) + let archiveToken = try #require(fixture.transport.connection.commands.last { $0["kind"] as? String == "listArchivedSessions" }?["token"]) + let row: [String: Any] = ["sessionId": "source-a", "title": "Known", "modelProvider": "native-provider"] + try fixture.emit(["kind": "sessionsPage", "token": activeToken, "sessions": [row]]) + #expect(fixture.feature.sessions.first { $0.id == "source-a" }?.modelProvider == "native-provider") + try fixture.emit(["kind": "sessions", "token": activeToken, "sessions": [row]]) + try fixture.emit(["kind": "archivedSessions", "token": archiveToken, "complete": true, + "sessions": [["sessionId": "archived-source", "modelProvider": "previous-provider"], + ["sessionId": "unknown-source"]]]) + #expect(fixture.feature.archivedSessions.map(\.modelProvider) == ["previous-provider", nil]) + let options = AgentHistoryProviderFilter.options(fixture.feature.sessions + fixture.feature.archivedSessions) + #expect(options == [.all, .provider("native-provider"), .provider("previous-provider"), .unknown]) + } + } + @Test func viewingAndAnnotatingHistoryPreserveActivityUntilANewTurn() async throws { let root = URL(fileURLWithPath: #filePath) diff --git a/rust/lithe-agent-host/src/codex-config-relay.cjs b/rust/lithe-agent-host/src/codex-config-relay.cjs index 1f30e4444b..499ee2acd0 100755 --- a/rust/lithe-agent-host/src/codex-config-relay.cjs +++ b/rust/lithe-agent-host/src/codex-config-relay.cjs @@ -24,10 +24,20 @@ delete env.LITHE_CODEX_CONTEXT_URL; delete env.LITHE_CODEX_OBSERVATION_BASE; env.CODEX_PATH = executable; const options = { env, stdio: ['pipe', 'pipe', 'inherit'] }; +// Codex 0.166 rechecks the process provider before accepting each turn. ACP's +// per-thread route alone no longer suffices. These process-local, non-secret +// defaults match the explicit authentication mode; ACP still supplies the +// complete gateway definition over stdio for every new/resumed/forked thread. +// Codex's CLI accepts bare string override values. Fixed, space-free values +// also avoid adding a second layer of TOML quoting through Windows npm shims. +const nativeArguments = ['-c', `model_provider=${nativeRecovery ? 'custom-gateway' : 'openai'}`]; +if (nativeRecovery) nativeArguments.push('-c', 'model_providers.custom-gateway.name=ACP-gateway', '-c', 'model_providers.custom-gateway.wire_api=responses'); +nativeArguments.push('app-server'); // Match upstream's Windows launcher support, including npm's codex.cmd. +// Only fixed arguments are appended, never gateway URLs, headers or credentials. const native = process.platform === 'win32' - ? spawn(`"${executable}" app-server`, { ...options, shell: true }) - : spawn(executable, ['app-server'], options); + ? spawn(`"${executable}" ${nativeArguments.join(' ')}`, { ...options, shell: true }) + : spawn(executable, nativeArguments, options); const turns = new Map(); let sequence = 0; const pendingResumes = new Map(); diff --git a/rust/lithe-agent-host/src/codex_history.rs b/rust/lithe-agent-host/src/codex_history.rs index e36dfbdac2..4eaf0d913c 100644 --- a/rust/lithe-agent-host/src/codex_history.rs +++ b/rust/lithe-agent-host/src/codex_history.rs @@ -17,10 +17,6 @@ const PAGE_SIZE: u32 = 50; /// Source kinds codex-acp lists, so archived and active history share a scope. const SOURCE_KINDS: [&str; 5] = ["cli", "vscode", "exec", "appServer", "unknown"]; -/// Provider ids codex-acp records threads under for each authentication mode. -const SUBSCRIPTION_PROVIDER: &str = "openai"; -const GATEWAY_PROVIDER: &str = "custom-gateway"; - /// Threads for the workspace. `complete` is false when the page bound /// stopped the listing, allowing the archived-history UI to disclose truncation. #[derive(Debug, PartialEq, Eq)] @@ -34,7 +30,6 @@ pub(crate) struct ListedSessions { pub(crate) struct CodexHistory { executable: PathBuf, cwd: PathBuf, - model_provider: &'static str, /// Account directory, so archived history belongs to the selected account. codex_home: Option, } @@ -53,7 +48,6 @@ impl CodexHistory { let probe = Self { executable, cwd: cwd.clone(), - model_provider: SUBSCRIPTION_PROVIDER, codex_home, }; probe @@ -98,7 +92,6 @@ impl CodexHistory { let probe = Self { executable, cwd: cwd.clone(), - model_provider: SUBSCRIPTION_PROVIDER, codex_home, }; probe @@ -120,21 +113,17 @@ impl CodexHistory { /// Only Codex connections have archived history; other Agents return None. pub(crate) fn for_launch(launch: &ResolvedLaunch) -> Option { - let (executable, model_provider) = match &launch.subscription_cli { - Some(executable) => (executable.clone(), SUBSCRIPTION_PROVIDER), - None => { - let executable = launch - .env - .iter() - .find(|(name, _)| name == "CODEX_PATH") - .map(|(_, value)| PathBuf::from(value))?; - (executable, GATEWAY_PROVIDER) - } + let executable = match &launch.subscription_cli { + Some(executable) => executable.clone(), + None => launch + .env + .iter() + .find(|(name, _)| name == "CODEX_PATH") + .map(|(_, value)| PathBuf::from(value))?, }; Some(Self { executable, cwd: launch.cwd.clone(), - model_provider, codex_home: launch.codex_home.clone(), }) } @@ -172,12 +161,10 @@ impl CodexHistory { mut on_page: impl FnMut(&[HistoryThread]), ) -> Result { let workspace_path = normalize_path(&self.cwd.to_string_lossy()); - let provider = self.model_provider; self.exchange(|mut input, mut output| async move { list_pages( &mut input, &mut output, - provider, &workspace_path, archived, &mut on_page, @@ -314,6 +301,7 @@ struct HistoryThread { id: String, title: Option, updated_at: Option, + model_provider: Option, } impl HistoryThread { @@ -326,6 +314,7 @@ impl HistoryThread { .as_deref() .and_then(|title| workspace.present_title(title)), updated_at: self.updated_at.clone(), + model_provider: self.model_provider.clone(), } } } @@ -336,7 +325,6 @@ impl HistoryThread { async fn list_pages( input: &mut (impl AsyncWrite + Unpin), output: &mut (impl AsyncBufRead + Unpin), - model_provider: &str, workspace: &str, archived: bool, on_page: &mut impl FnMut(&[HistoryThread]), @@ -358,7 +346,10 @@ async fn list_pages( "cursor": cursor, // Bounded pages keep each reply under the probe's size limit. "limit": PAGE_SIZE, - "modelProviders": [model_provider], + // Billing routes can change without changing this account's + // history. The official API's empty filter includes native, + // gateway and previous providers without guessing their ids. + "modelProviders": [], "sourceKinds": SOURCE_KINDS, }), ) @@ -409,6 +400,11 @@ fn parse_page( // Resume/settings can touch updatedAt without a new conversation turn. // Missing activity is unknown; never substitute metadata time or the local clock. updated_at: thread["recencyAt"].as_i64().and_then(iso8601), + model_provider: thread["modelProvider"] + .as_str() + .map(str::trim) + .filter(|provider| !provider.is_empty()) + .map(str::to_owned), }) }) .collect(); diff --git a/rust/lithe-agent-host/src/codex_history/tests.rs b/rust/lithe-agent-host/src/codex_history/tests.rs index 44ebc9a6d1..c6b81d5ca9 100644 --- a/rust/lithe-agent-host/src/codex_history/tests.rs +++ b/rust/lithe-agent-host/src/codex_history/tests.rs @@ -54,14 +54,15 @@ fn client(client: DuplexStream) -> (WriteHalf, BufReader = [ + "openai", + "custom-gateway", + "native-provider", + "previous-provider", + ] + .into_iter() + .filter(|provider| providers.is_empty() || providers.contains(&json!(provider))) + .map(|provider| { + let mut row = thread(provider, WORKSPACE); + row["modelProvider"] = json!(provider); + row + }) + .chain([thread("foreign", "/fixture/other")]) + .collect(); + writer + .write_all( + format!( + "{}\n", + json!({"id": request["id"], "result": {"data": rows, "nextCursor": null}}) + ) + .as_bytes(), + ) + .await + .unwrap(); + request["params"].clone() + }; + let (result, params) = tokio::time::timeout(Duration::from_secs(5), async { + tokio::join!( + list_pages(&mut writer, &mut reader, WORKSPACE, archived, &mut on_page), + peer + ) + }) + .await + .expect("bounded mixed-provider history listing"); + let (threads, complete) = result.unwrap(); + assert!(complete); + assert_eq!( + threads + .iter() + .map(|thread| thread.model_provider.as_deref()) + .collect::>(), + [ + Some("openai"), + Some("custom-gateway"), + Some("native-provider"), + Some("previous-provider") + ] + ); + assert_eq!( + threads + .iter() + .map(|thread| thread.id.as_str()) + .collect::>(), + [ + "openai", + "custom-gateway", + "native-provider", + "previous-provider" + ] + ); + assert_eq!(params["archived"], archived); + assert_eq!(params["sourceKinds"], json!(SOURCE_KINDS)); + assert_eq!(params["useStateDbOnly"], true); + } +} + #[tokio::test] async fn listing_reports_when_the_page_bound_truncated_it() { let (local, server) = tokio::io::duplex(64 * 1024); @@ -238,14 +338,7 @@ async fn listing_reports_when_the_page_bound_truncated_it() { ); let (result, received) = tokio::time::timeout(Duration::from_secs(5), async { tokio::join!( - list_pages( - &mut writer, - &mut reader, - "custom-gateway", - WORKSPACE, - true, - &mut on_page - ), + list_pages(&mut writer, &mut reader, WORKSPACE, true, &mut on_page), peer ) }) @@ -297,14 +390,7 @@ async fn active_history_publishes_matching_rows_before_later_pages_without_dupli }); let (result, received) = tokio::time::timeout(Duration::from_secs(5), async { tokio::join!( - list_pages( - &mut writer, - &mut reader, - "openai", - WORKSPACE, - false, - &mut on_page - ), + list_pages(&mut writer, &mut reader, WORKSPACE, false, &mut on_page), peer ) }) @@ -380,7 +466,6 @@ async fn active_and_archived_listing_only_read_official_activity_metadata() { let history = CodexHistory { executable: fake_app_server(&directory.0, &reply), cwd: directory.0.clone(), - model_provider: SUBSCRIPTION_PROVIDER, codex_home: None, }; let workspace = workspace_context::WorkspaceContext::new(&directory.0).unwrap(); @@ -437,7 +522,6 @@ async fn unarchive_sends_only_the_selected_thread_to_the_users_cli() { let history = CodexHistory { executable: fake_app_server(&directory.0, "\"result\":{\"thread\":{}}"), cwd: directory.0.clone(), - model_provider: SUBSCRIPTION_PROVIDER, codex_home: None, }; tokio::time::timeout( @@ -470,7 +554,6 @@ async fn upstream_errors_never_reach_the_ui() { "\"error\":{\"message\":\"/Users/secret/.codex failed\"}", ), cwd: directory.0.clone(), - model_provider: GATEWAY_PROVIDER, codex_home: None, }; let error = tokio::time::timeout( diff --git a/rust/lithe-agent-host/src/lib.rs b/rust/lithe-agent-host/src/lib.rs index 52072c6f24..844a986c27 100644 --- a/rust/lithe-agent-host/src/lib.rs +++ b/rust/lithe-agent-host/src/lib.rs @@ -560,6 +560,10 @@ pub struct AgentSessionSummary { /// ISO 8601 history timestamp, if known. Codex uses conversation activity, /// never the metadata update caused by merely resuming a session. pub updated_at: Option, + /// Opaque upstream provider identity, not the currently selected billing route. + /// Missing metadata stays unknown; older consumers can ignore this field. + #[serde(skip_serializing_if = "Option::is_none")] + pub model_provider: Option, } /// Events emitted from the connection worker thread. @@ -2215,6 +2219,7 @@ async fn list_sessions( .title .and_then(|title| workspace.present_title(&title)), updated_at: session.updated_at, + model_provider: None, }) .collect(); // Keep the final aggregate compatible with clients that do not consume pages. diff --git a/rust/lithe-agent-host/src/tests.rs b/rust/lithe-agent-host/src/tests.rs index 0938509493..9050eab915 100644 --- a/rust/lithe-agent-host/src/tests.rs +++ b/rust/lithe-agent-host/src/tests.rs @@ -790,6 +790,7 @@ fn serialized_events_match_the_shared_fixture() { session_id: "session-1".into(), title: Some("Explain this project".into()), updated_at: Some("2026-09-25T10:00:00Z".into()), + model_provider: None, }], }, ), @@ -802,11 +803,13 @@ fn serialized_events_match_the_shared_fixture() { session_id: "session-1".into(), title: Some("Explain this project".into()), updated_at: Some("2026-09-25T10:00:00Z".into()), + model_provider: None, }, AgentSessionSummary { session_id: "session-2".into(), title: None, updated_at: None, + model_provider: None, }, ], }, @@ -819,6 +822,7 @@ fn serialized_events_match_the_shared_fixture() { session_id: "archived-session-1".into(), title: Some("Earlier refactor".into()), updated_at: Some("2026-09-20T08:30:00Z".into()), + model_provider: None, }], complete: true, }, diff --git a/scripts/agent/test-codex-config-relay.mjs b/scripts/agent/test-codex-config-relay.mjs index 72850997e5..b435127e6a 100644 --- a/scripts/agent/test-codex-config-relay.mjs +++ b/scripts/agent/test-codex-config-relay.mjs @@ -124,10 +124,26 @@ test('malformed protocol stops the owned child without exposing payload data', { test('Windows uses the upstream shell launcher for native npm cmd executables', { timeout: 1000 }, t => { const r = relay(t, 'win32'); - assert.equal(r.launches[0][0], '"fixture-codex" app-server'); + assert.equal(r.launches[0][0], '"fixture-codex" -c model_provider=custom-gateway -c model_providers.custom-gateway.name=ACP-gateway -c model_providers.custom-gateway.wire_api=responses app-server'); assert.equal(r.launches[0][1].shell, true); }); +for (const platform of ['darwin', 'win32']) { + for (const nativeRecovery of [true, false]) { + test(`native provider admission matches the explicit ${nativeRecovery ? 'gateway' : 'subscription'} route on ${platform}`, { timeout: 1000 }, t => { + const r = relay(t, platform, null, nativeRecovery); + const args = ['-c', `model_provider=${nativeRecovery ? 'custom-gateway' : 'openai'}`]; + if (nativeRecovery) args.push('-c', 'model_providers.custom-gateway.name=ACP-gateway', '-c', 'model_providers.custom-gateway.wire_api=responses'); + args.push('app-server'); + if (platform === 'win32') { + assert.equal(r.launches[0][0], `"fixture-codex" ${args.join(' ')}`); + } else { + assert.deepEqual(Array.from(r.launches[0][1]), args); + } + }); + } +} + for (const platform of ['darwin', 'win32']) { test(`history replay returns only the armed native snapshot on ${platform}`, { timeout: 2000 }, async t => { const exchanges = []; diff --git a/scripts/resources/reuse-worktree-resources.mjs b/scripts/resources/reuse-worktree-resources.mjs index 90356f2500..4ef5a9d526 100644 --- a/scripts/resources/reuse-worktree-resources.mjs +++ b/scripts/resources/reuse-worktree-resources.mjs @@ -428,6 +428,8 @@ async function main() { // Agent edit-and-paste state is user-owned runtime data, without a copy stage. // editor-theme-assets rebuild palettes and license notices together; no build stamp permits reuse. if (excludedResources.some((resource) => resource.id === identifier)) { + // Per-launch relays also own their provider admission route; they stay + // excluded even when their embedded source matches another worktree. const excluded = excludedResources.find((resource) => resource.id === identifier); throw new Error(`Resource ${identifier} is isolated (${excluded.locations.join(", ")}): ${excluded.identity}; ${excluded.reason}; it cannot be reused across worktrees`); } diff --git a/scripts/resources/test-reuse-worktree-resources.mjs b/scripts/resources/test-reuse-worktree-resources.mjs index 2ecde67ad3..64c4844bcf 100644 --- a/scripts/resources/test-reuse-worktree-resources.mjs +++ b/scripts/resources/test-reuse-worktree-resources.mjs @@ -273,6 +273,7 @@ try { const registry = JSON.parse(await fs.readFile(path.join(scriptDirectory, "worktree-resources.json"), "utf8")); const resource = registry.excludedResources.find(item => item.id === "codex-retry-relay"); assert.match(resource.identity, /context reports.*per-load tickets/); + assert.match(resource.identity, /explicit provider admission route/); const refused = reuse(["--resource", "codex-retry-relay"]); assert.notEqual(refused.status, 0); assert.match(diagnostics(refused), /codex-retry-relay.*lithe-codex-retry.*cannot be reused/); diff --git a/scripts/resources/worktree-resources.json b/scripts/resources/worktree-resources.json index c89deb5c18..701c227a57 100644 --- a/scripts/resources/worktree-resources.json +++ b/scripts/resources/worktree-resources.json @@ -278,7 +278,7 @@ "locations": [ "/lithe-codex-retry-/" ], - "identity": "First-party embedded source from the current host revision and one Agent launch's native executable/retry budget. Platform chooses the system temporary directory; no reusable version, architecture, toolchain or publication identity stamp. The same first-party launcher restores native context reports through a per-launch loopback capability and per-load tickets; those are memory-only process ownership, not reusable resources.", + "identity": "First-party embedded source from the current host revision and one Agent launch's native executable/retry budget and explicit provider admission route. Platform chooses the system temporary directory; no reusable version, architecture, toolchain or publication identity stamp. The same first-party launcher restores native context reports through a per-launch loopback capability and per-load tickets; those are memory-only process ownership, not reusable resources.", "reason": "The Agent process owner creates the helper before spawn and removes it on preparation failure, cancellation, launch failure or after stopping the process tree. It contains no credentials. Never copy or share it at any worktree stage; installed adapters, user CLI/configuration and signed bundles stay read-only. Subscription connections use the same temporary launcher for history context while retaining native retry settings. The loopback listener, capability and captured reports expire with the owning process and must never be copied." }, { diff --git a/shared/contracts/application-boundary.md b/shared/contracts/application-boundary.md index 2dde584a78..f38d7dbbf3 100644 --- a/shared/contracts/application-boundary.md +++ b/shared/contracts/application-boundary.md @@ -74,6 +74,14 @@ unknown. See the Agent history lists can expose matching summaries as pages arrive while the remaining scan stays loading. Partial results prove presence only; final snapshots reconcile removals, and later failures retain visible rows. History surfaces share connection-local recent snapshots and in-flight requests; manual refresh remains immediate. Workspace/Agent isolation, stale-token rejection and upstream history ownership apply to both partial and final results. +History provider filtering defaults to all providers and uses only upstream-reported +`modelProvider` identities. Choices span active and archived records; missing metadata +has an explicit unknown choice. A provider selection composes with title/ID search, +favorites and local removal, including archive results. It is transient presentation +state, not a routing or account setting, and never narrows the upstream history scan +or infers provenance from the active model. Bulk actions remain limited to visible +eligible records. Empty filtered results do not establish that no history exists. + An Agent that advertises steering can accept supplementary user input while its logical turn is active. Input delivery has a separate pending/received/failed outcome and does not replace turn ownership, permissions, timing, or Stop. diff --git a/shared/contracts/rust-core-api.md b/shared/contracts/rust-core-api.md index bf8ede9a3b..6880076a1f 100644 --- a/shared/contracts/rust-core-api.md +++ b/shared/contracts/rust-core-api.md @@ -227,7 +227,8 @@ can correlate concurrent requests. `stopReason` uses ACP wire names such as `end_turn` and `cancelled`. Codex `sessions` and `archivedSessions` use the installed official App Server's -`thread/list` with matching provider, source-kind and workspace scope. The Host +`thread/list` across all providers, within the selected account's Codex home, +source-kind and workspace scope. The Host normalizes its `recencyAt` (conversation activity) into the existing optional ISO 8601 `updatedAt` history field, and sorts upstream pages by `recency_at`. `useStateDbOnly: true` avoids rollout-file scans/read-repair for this read-only @@ -241,6 +242,17 @@ does not fabricate a local timestamp. Other Agents retain standard ACP listing. `shared/fixtures/agent/history-activity-v1.json` covers initial state, metadata-only viewing, and a new conversation turn. The history UI geometry is unchanged. +History summaries may additionally include `modelProvider`, the opaque provider +identity reported by upstream history. Missing, null or blank metadata is unknown; +it is never inferred from the current billing route, model name or local annotation. +Codex forwards `thread/list.modelProvider`; standard ACP Agents without equivalent +metadata omit it. Older consumers can ignore this additive field. Presentation +defaults to all providers and may explicitly filter an exact identity or unknown +metadata, composing with search, favorites, local removal and archived rows. +Provider choices come from active and archived snapshots, not the configured +provider catalog. Filtering is local and read-only: it never changes the current +route, resumes a thread, rewrites history or starts another list request. + Both native Codex App Server listing and standard ACP listing may emit additive `sessionsPage` events for nonterminal pages with matching rows. Each carries the original `listSessions` token and only that page’s summaries. Consumers merge these rows without pruning cached entries or completing the loading state. The existing terminal `sessions` event still carries the full snapshot; consumers that ignore `sessionsPage` remain compatible. A later `requestFailed` retains cached and already received rows. Ignore pages from superseded, completed, or disconnected requests. Empty filtered pages do not end a scan: follow the Agent’s cursor. Platform history surfaces may reuse successful connection-local snapshots (including empty results) for 30 seconds, with independent active/archive freshness; explicit refresh and post-unarchive reconciliation bypass freshness. Failed scans remain retryable and reconnection invalidates freshness. On macOS, a confirmed `turnFinished` invalidates active-list freshness, including for background sessions, without expiring the archive snapshot. A scan still in flight at that boundary may update displayed rows but cannot renew freshness when it completes; the next history open queries again after that scan finishes. Loading or viewing history alone does not invalidate freshness or synthesize activity timestamps. This adds no persisted history or runtime resource directory. `prompt` retains `text` and optionally carries ordered `files` entries with `uri` diff --git a/shared/fixtures/agent/history-activity-v1.json b/shared/fixtures/agent/history-activity-v1.json index 1ab7549bff..06222eec0d 100644 --- a/shared/fixtures/agent/history-activity-v1.json +++ b/shared/fixtures/agent/history-activity-v1.json @@ -8,7 +8,8 @@ "name": "Earlier conversation", "preview": "First prompt", "updatedAt": 1789893000, - "recencyAt": 1789893000 + "recencyAt": 1789893000, + "modelProvider": "native-provider" }, { "id": "session-b", @@ -16,7 +17,8 @@ "name": "Later conversation", "preview": "Second prompt", "updatedAt": 1789896600, - "recencyAt": 1789896600 + "recencyAt": 1789896600, + "modelProvider": "previous-provider" }, { "id": "unknown-activity", @@ -34,12 +36,14 @@ { "sessionId": "session-a", "title": "Earlier conversation", - "updatedAt": "2026-09-20T08:30:00Z" + "updatedAt": "2026-09-20T08:30:00Z", + "modelProvider": "native-provider" }, { "sessionId": "session-b", "title": "Later conversation", - "updatedAt": "2026-09-20T09:30:00Z" + "updatedAt": "2026-09-20T09:30:00Z", + "modelProvider": "previous-provider" }, { "sessionId": "unknown-activity", @@ -58,7 +62,8 @@ "name": "Earlier conversation", "preview": "First prompt", "updatedAt": 1789903800, - "recencyAt": 1789893000 + "recencyAt": 1789893000, + "modelProvider": "native-provider" }, { "id": "session-b", @@ -66,7 +71,8 @@ "name": "Later conversation", "preview": "Second prompt", "updatedAt": 1789896600, - "recencyAt": 1789896600 + "recencyAt": 1789896600, + "modelProvider": "previous-provider" }, { "id": "unknown-activity", @@ -84,12 +90,14 @@ { "sessionId": "session-a", "title": "Earlier conversation", - "updatedAt": "2026-09-20T08:30:00Z" + "updatedAt": "2026-09-20T08:30:00Z", + "modelProvider": "native-provider" }, { "sessionId": "session-b", "title": "Later conversation", - "updatedAt": "2026-09-20T09:30:00Z" + "updatedAt": "2026-09-20T09:30:00Z", + "modelProvider": "previous-provider" }, { "sessionId": "unknown-activity", @@ -108,7 +116,8 @@ "name": "Earlier conversation", "preview": "First prompt", "updatedAt": 1789907400, - "recencyAt": 1789907400 + "recencyAt": 1789907400, + "modelProvider": "native-provider" }, { "id": "session-b", @@ -116,7 +125,8 @@ "name": "Later conversation", "preview": "Second prompt", "updatedAt": 1789896600, - "recencyAt": 1789896600 + "recencyAt": 1789896600, + "modelProvider": "previous-provider" }, { "id": "unknown-activity", @@ -134,12 +144,14 @@ { "sessionId": "session-a", "title": "Earlier conversation", - "updatedAt": "2026-09-20T12:30:00Z" + "updatedAt": "2026-09-20T12:30:00Z", + "modelProvider": "native-provider" }, { "sessionId": "session-b", "title": "Later conversation", - "updatedAt": "2026-09-20T09:30:00Z" + "updatedAt": "2026-09-20T09:30:00Z", + "modelProvider": "previous-provider" }, { "sessionId": "unknown-activity", diff --git a/shared/i18n/locales/en-US.json b/shared/i18n/locales/en-US.json index a79c4e7d9b..3deb27dfdb 100644 --- a/shared/i18n/locales/en-US.json +++ b/shared/i18n/locales/en-US.json @@ -9729,7 +9729,11 @@ "native.gitNotIgnored": "Git: not ignored", "native.onePatternPerLineCaseInsensitivePatternsUseWildcardsASimplifiedFormOfRegularEx35941b6a99": "One pattern per line, case-insensitive. Patterns use wildcards, a simplified form of regular expressions: `*` matches any characters and `?` matches one.\nEnd a pattern with `/`, `/*` or `/**` to hide a folder and everything in it; start with `**/` to match at any depth. A pattern without a trailing slash only hides files: `.lithe` hides a file named .lithe, not the folder.\nExamples:\n`**/dist/` — every dist folder\n`.lithe/**` — the .lithe folder in the project root\n`*.log` — all log files\n`docs/*.md` — Markdown files in docs\nThe list starts with the built-in patterns. Delete one to show those files again; type it back to hide them.", "history.clearFailed": "Could not clear this project's local history. Check storage permissions and try again.", - "native.addClickableActionsBesideDocumentText": "Add clickable actions beside document text" + "native.addClickableActionsBesideDocumentText": "Add clickable actions beside document text", + "agent.history.provider": "Conversation provider", + "agent.history.allProviders": "All providers", + "agent.history.unknownProvider": "Unknown provider", + "agent.history.providerHint": "Try another search or provider filter." }, "overrides": { "windows": { diff --git a/shared/i18n/locales/zh-CN.json b/shared/i18n/locales/zh-CN.json index 559628f6a6..7c5038be86 100644 --- a/shared/i18n/locales/zh-CN.json +++ b/shared/i18n/locales/zh-CN.json @@ -9729,7 +9729,11 @@ "native.gitNotIgnored": "Git:未忽略", "native.onePatternPerLineCaseInsensitivePatternsUseWildcardsASimplifiedFormOfRegularEx35941b6a99": "每行一条规则,不区分大小写。规则使用通配符,是正则表达式的简化写法:`*` 匹配任意字符,`?` 匹配单个字符。\n以 `/`、`/*` 或 `/**` 结尾表示隐藏整个文件夹及其内容,以 `**/` 开头表示匹配任意层级。不带结尾斜杠的规则只隐藏文件:`.lithe` 隐藏名为 .lithe 的文件,而不是文件夹。\n示例:\n`**/dist/` — 任意层级的 dist 文件夹\n`.lithe/**` — 项目根目录下的 .lithe 文件夹\n`*.log` — 所有 .log 文件\n`docs/*.md` — docs 下的 Markdown 文件\n列表开头是内置规则。删掉一行即可重新显示这些文件,再输入回来就会重新隐藏。", "history.clearFailed": "无法清空此项目的本地历史。请检查存储目录权限后重试。", - "native.addClickableActionsBesideDocumentText": "在文档文本旁添加可点击的操作" + "native.addClickableActionsBesideDocumentText": "在文档文本旁添加可点击的操作", + "agent.history.provider": "对话供应商", + "agent.history.allProviders": "全部供应商", + "agent.history.unknownProvider": "未知供应商", + "agent.history.providerHint": "试试其他搜索条件或供应商筛选。" }, "overrides": { "macos": { diff --git a/shared/i18n/messages.json b/shared/i18n/messages.json index 4a859896ed..292d325ae5 100644 --- a/shared/i18n/messages.json +++ b/shared/i18n/messages.json @@ -93146,6 +93146,54 @@ "key": "Add clickable actions beside document text", "arguments": [] } + }, + { + "id": "agent.history.provider", + "description": "Agent conversation history provider filtering", + "platforms": [ + "macos", + "windows" + ], + "macos": { + "key": "Conversation provider", + "arguments": [] + } + }, + { + "id": "agent.history.allProviders", + "description": "Agent conversation history provider filtering", + "platforms": [ + "macos", + "windows" + ], + "macos": { + "key": "All providers", + "arguments": [] + } + }, + { + "id": "agent.history.unknownProvider", + "description": "Agent conversation history provider filtering", + "platforms": [ + "macos", + "windows" + ], + "macos": { + "key": "Unknown provider", + "arguments": [] + } + }, + { + "id": "agent.history.providerHint", + "description": "Agent conversation history provider filtering", + "platforms": [ + "macos", + "windows" + ], + "macos": { + "key": "Try another search or provider filter.", + "arguments": [] + } } ] } diff --git a/shared/platform-feature-matrix/features/agent-acp-conversation.json b/shared/platform-feature-matrix/features/agent-acp-conversation.json index 994f2c5fc8..c2760f4ace 100644 --- a/shared/platform-feature-matrix/features/agent-acp-conversation.json +++ b/shared/platform-feature-matrix/features/agent-acp-conversation.json @@ -2,7 +2,7 @@ "id": "agent-acp-conversation", "area": "AI", "group": "Agent 对话", - "capability": "可选 ACP Agent 对话:API Key 鉴权、项目会话与历史恢复、模型/权限/思考配置与响应期间预选下一轮配置、不依赖凭据的本机默认模型同步、无效默认模型回退官方推荐或可用目录模型、保留官方模型列表与品牌模型图标、CC GUI 风格紧凑的完整模型目录(无搜索框)与权限弹出面板及按配置行定位的独立说明子菜单、工具详情与权限、停止确认和进程清理、按内容显示任务进度、真实子代理与文件修改摘要,并通过共享弹出面板进行文件差异审阅及受保护回撤、同一未关闭会话重连保留审阅基线、拒绝末端链接替换及与原生保存串行的创建回撤、基于实际进度的等待/推理/执行/授权/重连次数/停止状态、Codex/Claude 本机供应商导入来源隔离与旧关联修复、带品牌图标并向上展开的 Agent 切换菜单、Codex API Key 原生恢复与五次共享预算、永久错误快速返回及首次连接二十秒重连上限、已有工作后原生恢复不受 Host 截止或第二份次数预算中断、有效计划更新退出重连并保留轮次计时与状态优先级、正常长任务与授权等待无整轮期限、静默只提醒并允许继续等待或停止、macOS 面板边缘原生滚动条与按可用宽度 80% 居中的阅读列、默认单行并随草稿增长且封顶后内部滚动的输入框、按可见轮次区分长短标记的悬停预览和点击跳转、长会话懒加载下的原生底部跟随与历史浏览位置保持、滚动容器预留权限空间避免消息定位与布局循环、Claude 恢复历史模型时不沿用启动默认值并等待底层模型重新确认、恢复单行会话标题与独立历史管理按钮、按内容出现的紧凑活动摘要、输入框内底部配置及按需展开的上下文与会话详情", + "capability": "可选 ACP Agent 对话:API Key 鉴权、项目会话与历史恢复、模型/权限/思考配置与响应期间预选下一轮配置、不依赖凭据的本机默认模型同步、无效默认模型回退官方推荐或可用目录模型、保留官方模型列表与品牌模型图标、CC GUI 风格紧凑的完整模型目录(无搜索框)与权限弹出面板及按配置行定位的独立说明子菜单、工具详情与权限、停止确认和进程清理、按内容显示任务进度、真实子代理与文件修改摘要,并通过共享弹出面板进行文件差异审阅及受保护回撤、同一未关闭会话重连保留审阅基线、拒绝末端链接替换及与原生保存串行的创建回撤、基于实际进度的等待/推理/执行/授权/重连次数/停止状态、Codex/Claude 本机供应商导入来源隔离与旧关联修复、带品牌图标并向上展开的 Agent 切换菜单、Codex API Key 原生恢复与五次共享预算、永久错误快速返回及首次连接二十秒重连上限、已有工作后原生恢复不受 Host 截止或第二份次数预算中断、有效计划更新退出重连并保留轮次计时与状态优先级、正常长任务与授权等待无整轮期限、静默只提醒并允许继续等待或停止、macOS 面板边缘原生滚动条与按可用宽度 80% 居中的阅读列、默认单行并随草稿增长且封顶后内部滚动的输入框、按可见轮次区分长短标记的悬停预览和点击跳转、长会话懒加载下的原生底部跟随与历史浏览位置保持、滚动容器预留权限空间避免消息定位与布局循环、Claude 恢复历史模型时不沿用启动默认值并等待底层模型重新确认、恢复单行会话标题与独立历史管理按钮、按内容出现的紧凑活动摘要、输入框内底部配置及按需展开的上下文与会话详情;Codex 进程供应商与显式认证路由一致,避免 0.166 轮次准入误报内部错误", "macos": { "evidence": [ "macos/Sources/LitheAgentConversationModule", @@ -43,7 +43,8 @@ "macos/Tests/LitheTests/AgentConversationPresentationTests.swift", "macos/Tests/LitheTests/EditorTabOrderFeatureModelTests.swift", "rust/lithe-agent-host/src/session_restore.rs", - "rust/lithe-agent-host/tests/claude_api_failure.rs" + "rust/lithe-agent-host/tests/claude_api_failure.rs", + "scripts/agent/test-codex-config-relay.mjs" ], "implementationStatus": "implemented", "verificationStatus": "pending" @@ -74,12 +75,14 @@ "windows/tauri/src/features/agent/services/agent-transcript-navigation.ts", "windows/tauri/src/features/agent/services/agent-transcript-navigation.test.ts", "windows/tauri/src/features/agent/components/agent-usage-panel.tsx", - "windows/tauri/src/features/agent/stores/agent-parity.test.ts" + "windows/tauri/src/features/agent/stores/agent-parity.test.ts", + "rust/lithe-agent-host/src/codex-config-relay.cjs", + "scripts/agent/test-codex-config-relay.mjs" ], "implementationStatus": "implemented", "verificationStatus": "pending" }, "owner": "Agent", - "verification": "macOS 原生轮次导航:宽编辑页下滚动条贴消息面板右边缘,消息与输入区按各自可用宽度的 80% 居中,窄面板可收缩;输入框默认两行书写区,附件“+”位于底栏最左侧、Agent图标之前,顶部附件/额度灰栏与占位完全移除;额度保留在底栏靠右,输入、换行和窗口变窄后按实际内容增高,书写区到达 240pt 或会话 60% 的可用高度约束后在框内滚动,能到达草稿末尾,删除文字、移除附件及发送清空后收缩,命令建议浮在上方且不遮挡输入;指针进入右侧轨道显示短标记,视口内轮次显示长标记,权限卡片或通知出现后完全被遮住的轮次改为短标记、关闭后无需滚动即恢复;正文停在中部时在长轨道和浮动命令列表上滚轮只交给对应覆盖层,到列表边界也不由正文拦截器抢走;预览上方用户输入、下方模型正文且无推理或工具日志;离开收起标记和预览;点击首轮能定位真实用户消息,持续输出、工具、权限、窗口缩放不抢回位置,回到底部或发送新消息恢复跟随;搜索与会话切换无旧预览或旧跳转。深浅主题和长列表验证滚轮、可访问标签及调整面板时预览收起。Windows 已有右侧轮次轨道、悬停预览和点击跳转;目标平台验收仍待完成。macOS Markdown 表格:深浅主题和窄宽面板下,长中文、加粗文字及无空格长标识符的表头与正文应换行并按完整内容增高,不以省略号隐藏尾部;短列按内容占宽,宽表保留共享横向滚动条并能滚至最末列。macOS + Codex + API Key:验证发消息前的上游配置选项和确认;无自定义服务商或 API Key 时确认仍显示本机顶层默认模型、保留密钥缺失错误;修改本机默认模型后重连,连续新建空会话确认不再使用旧导入模型;配置不在上游目录中的模型时,确认新会话优先使用目录内的上游推荐值;推荐值缺失、版本过旧或不可选时,按官方目录顺序选择第一个可用模型,确认后保留完整官方列表且不显示临时补入的无效模型;有效配置模型保持不变,拒绝与超时不显示假成功且 Codex 模型菜单显示 OpenAI 标志;验证工具输入/输出/文件/变更、权限拒绝、停止确认及超时重连、历史加载失败保留记录;使用确定性时钟推进静默、持续工具更新超过原十分钟期限,确认只出现静默提醒、轮次保持忙碌且没有自动取消或重发;继续等待只关闭提醒,新进度清除提醒并重新计时;多个授权等待超过五分钟仍可答复,全部完成后重新计时,后台会话不污染当前状态;等待授权期间其他更新、会话与 EOF 不被阻塞;明确停止仍保持忙碌直到确认,不确认时连接与进程树有界停止。Windows Agent 面板已接入共享 Host,连接、会话、工具/权限、取消、计划/思考、上下文用量与基础轮次统计已存在;Windows 已映射共享 Host 的重试/静默活动状态;真实供应商端到端验收仍待完成。临时项目跑通读文件→修改→执行测试→追问,复用文档观察和脏缓冲区保存保护。检查无搜索框的完整模型目录(名称、上游顺序、分组、空目录)、品牌图标/选中状态、无模型说明、权限说明、思考/速度子菜单、确认/失败与会话切换关闭弹出面板;检查项目切换、退出清理,以及 CC GUI 风格空态、搜索、标签、自适应增长输入区和配置菜单在窄宽面板及深浅主题下的布局。Windows 端到端仍待验证;Claude API Key 鉴权与完整工具流程由独立能力行记录。 安装包环境下打开 Agent 面板,确认 Codex/Claude 图标从 Contents/Resources 加载且不依赖构建目录;资源包或图标缺失时显示默认图标而不闪退,读取前后包内文件清单和内容不变。 检查紧凑配置菜单:模型和设置子选项最小行高 26pt、权限模式最小行高 44pt,上下内边距 4pt;面板高度随行高收紧;权限面板按实际内容高度调整并保留 330pt 上限,短列表的双行说明不需要滚动即可完整显示。深浅主题下通过实际 SwiftUI/AppKit 渲染与原生鼠标事件验证双行说明、滚动到模型/权限长列表末项并选择,原始 ID 和选中回调不变;完整目录及选中标记正常。 点击任务、运行中、编辑确认展示当前会话的计划、活跃工具及去重文件;检查打开文件、分段差异、保留全部和逐个/全部回撤。保留后继续修改并回撤只能撤销新增修改;核对后台会话、未保存缓冲区、文件冲突、缺失或截断证据、编码、符号链接越界及批量部分失败不会覆盖用户内容。确认回撤后的编辑器刷新和连接关闭时任务清理,统计缺失不能伪造行数。 同一标签保留 A→B 后断连重连并回放,再执行 B→C 和回撤必须恢复 B;已回撤版本重连不再出现,失败回放保留基线、变更证据重新出现,关闭重开释放确认。创建路径被工作区内末端链接替换时保全链接及目标;最后快照后原生保存必须使回撤冲突;移动期间外部替换后核对实际移出的字节并恢复,原路径被重建时保全两个版本且提示恢复位置,Trash 失败不确认成功。 确认新请求无输出时显示等待响应而不显示推理;Codex 无标题的明确重试元数据切换到重试,新输出或工具事件恢复状态,授权和停止优先,迟到和后台会话事件不污染当前轮次;历史工具不计入当前执行状态。静默推进时钟不能伪造重试,正常轮次无绝对时限,取消确认保持。 响应期间点击审批、模型和思考选项,确认底栏预选值立即更新且当前轮不发送配置请求;连续选择取最后一次,改回已确认值撤销。结束或取消确认后先确认模型、再按最新选项逐项确认,全部完成前不能发送下一条;验证换模型后选项消失、拒绝或发送失败有明确错误并恢复已确认值。切换会话保持各自预选,后台完成只更新对应会话,断连清除预选且迟到确认不恢复。深浅主题下通过原生鼠标打开菜单并选择。Windows 已接入下一轮配置预选及按序确认。 检查速度与思考强度子菜单:主模型面板宽度和位置不变,子面板顶端贴齐触发行、只包住选项且没有顶部整块空白;右侧空间不足时向左展开。深浅主题下验证上游名称原文、简短说明、已确认值勾选、Esc 只关闭子菜单、选择关闭两级菜单并保留原始 ID;长说明按实际宽度换行,长列表仍能选择末项,会话切换与锚点拆除释放全部子窗口。 同一配置 ID 的 choices、currentValue 或说明变化时,已打开的子菜单关闭,模型面板保留;重新打开使用最新选项、说明和勾选。原生窗口回归覆盖无搜索框时直接选择完整目录模型,以及键盘滚动后 mouseMoved 恢复指针选择;其他选项更新不关闭当前子菜单。 检查输入框上方任务/子代理和文件修改摘要按内容出现,空态移除状态区和预留高度;点击每项摘要直接打开原详情,长列表末项、文件打开/保留、差异与回撤确认保持。标题栏仅一行,独立历史按钮进入原管理页,验证搜索、收藏、改名、可恢复移除、导出及返回不丢草稿和连接。发送旁只保留一个会话详情入口,有用量显示圆环,未上报显示信息图标,点击在同一可滚动面板查看上下文、会话及Token统计,顶部不重复显示信息按钮,Agent/审批/模型在框内底部;深浅主题和320/417pt窄面板验证所有入口、关闭弹层及会话切换。 分别仅导入 Codex、先导入 Codex 再导入 Claude、反向导入与重复导入,确认来源、模型和关联保持独立;重载旧共享标识及已刷新标识的串用设置,确认正确绑定与提交供应商选择保留,错误关联恢复未配置,订阅和手动供应商不变。 点击输入区底栏 Agent 图标,确认 Claude/Codex 行显示原品牌图标,菜单底边位于触发按钮上方且不覆盖状态栏,切换及已选勾选保持。 Claude 暂时故障时显示正在重连 2/5 至 5/5,继续累计耗时且保持忙碌;恢复输出、错误、取消和断连清除次数。Codex 明确重试通知也显示正在重连;旧轮次通知和无效次数不能把新轮次或已结束会话变为重连。流式文本合并发布不能因状态清理增加每段刷新。 Codex API Key:本地 Responses 服务验证带 Retry-After:180 的 400/401/402/403/404 快速失败,503/断连最多五次原生调用,普通429无工作时有界补重发且与503共用五次预算,额度及已有工具/输出不整轮重发;明确重连次数和持续计时,尚无工作时20秒上限后保留10秒取消确认;已有回复、推理、计划、工具或授权后取消 Host 恢复上限及重复计数终止,原生有限重试仍有效。虚拟时钟推进恢复超过20秒并注入超过五次通知,确认同一轮完成且没有第二条 prompt;首次恢复警告后五分钟显示等待较久、继续等待/停止,后续警告不推迟提醒,实际进度清除。终止错误保留已完成工具与修改,用户明确继续复用原会话;未确认的停止仍有界清理。新建/历史恢复/分叉均使用预算,保持配置、工具、历史和订阅登录刷新。临时helper在进程树结束及启动失败后删除,安装包、适配器、用户CLI和配置不变;自定义ACP保留原生策略。Windows 重试策略由共享 Host 提供,Windows 已呈现重试状态;真实供应商验收待完成。 macOS:在 turnRetrying 后只发送有效 plan(含空 entries)即可退出重连并清空次数,保留计划、忙碌轮次和累计计时;无法解析的 plan 不能清理重连。已有回复/推理不退回等待,权限和停止继续优先;确认完成前仍拒绝第二条消息。确定性回归注入时钟与事件,Windows 同等界面行为仍待验证。 深浅主题检查标题栏无重复Agent名称,空态与底栏品牌资源尺寸保持,按钮仍有共享22pt命中区。 macOS 长会话:在窄面板积累多轮历史,读文件、修改、执行测试期间反复出现和关闭权限卡片,完成回复与统计后连续调整宽度,界面可响应且底部内容可见;主动上滚阅读历史后新文本、工具和权限更新不得拉走位置,回到底部或发送新消息后继续跟随,搜索期间暂停,会话切换或关闭不执行迟到滚动。保留 macOS 13 最低部署目标,旧系统实际运行仍待复验。 原生视口仅发送frame变化通知时也继续底部跟随;翻转坐标夹具先完成首次定位,再增加文档高度并改变视口frame,禁用bounds通知以验证独立通知路径。用户上滚浏览时仍不强制拉到底部,不观察文档估算高度驱动循环。 Claude:新会话仍使用供应商默认模型;会话选择不同模型并完成真实回复后关闭适配器,重连恢复必须保留历史模型并以相同模型发出实际请求。模型重新确认前不得发布加载完成;拒绝、错误确认和超时保留加载失败,禁止排队消息越过确认。分组列表、目录外当前模型和相同默认值均通过标准 ACP 确认;无选择器旧适配器和其他 Agent 保持原有加载行为。Windows Agent 面板与连接桥已接入共享 Host;真实供应商和目标平台端到端验收仍待完成。 macOS 活动状态区按需显示任务进度与当前步骤、右侧子代理入口和单独文件修改摘要,复用原详情与回撤。只有全部可见文件的上游统计完整且操作完成时显示增删合计,缺失或溢出时只显示文件数;已保留版本不再计入。空态高度与间距归零,审阅进行中或失败仍保留可操作入口。原生回归覆盖深浅主题、窄宽度、当前步骤、清空、旧弹层清理、长列表与文件动作。 Windows:在真实 Tauri 窗口执行 Windows 已接入历史归档、原生子代理、受保护的文件修改审阅、下一轮配置预选、重试与静默状态,以及模型调用与会话统计。运行时验收按相关独立能力记录;真实 Codex/Claude 服务调用仍待验证。 单元测试不替代运行时验收,未执行的真实服务及平台动作保持 pending。 Windows 后台 Agent 打开必须在窗口已销毁时拒绝,覆盖销毁先于排队打开执行及其他窗口不受影响。", - "notes": "2026-10-22:Windows 已接入历史归档、原生子代理、受保护的文件修改审阅、下一轮配置预选、重试与静默状态,以及模型调用与会话统计。运行时验收按相关独立能力记录;真实 Codex/Claude 服务调用仍待验证。 2026-10-25:适配器固定版本升至 codex-acp 2.2.2、claude-agent-acp 0.95.0;附件路径含百分号编码时额外带一行 📎 真实路径,原生斜杠命令不加。" + "verification": "macOS 原生轮次导航:宽编辑页下滚动条贴消息面板右边缘,消息与输入区按各自可用宽度的 80% 居中,窄面板可收缩;输入框默认两行书写区,附件“+”位于底栏最左侧、Agent图标之前,顶部附件/额度灰栏与占位完全移除;额度保留在底栏靠右,输入、换行和窗口变窄后按实际内容增高,书写区到达 240pt 或会话 60% 的可用高度约束后在框内滚动,能到达草稿末尾,删除文字、移除附件及发送清空后收缩,命令建议浮在上方且不遮挡输入;指针进入右侧轨道显示短标记,视口内轮次显示长标记,权限卡片或通知出现后完全被遮住的轮次改为短标记、关闭后无需滚动即恢复;正文停在中部时在长轨道和浮动命令列表上滚轮只交给对应覆盖层,到列表边界也不由正文拦截器抢走;预览上方用户输入、下方模型正文且无推理或工具日志;离开收起标记和预览;点击首轮能定位真实用户消息,持续输出、工具、权限、窗口缩放不抢回位置,回到底部或发送新消息恢复跟随;搜索与会话切换无旧预览或旧跳转。深浅主题和长列表验证滚轮、可访问标签及调整面板时预览收起。Windows 已有右侧轮次轨道、悬停预览和点击跳转;目标平台验收仍待完成。macOS Markdown 表格:深浅主题和窄宽面板下,长中文、加粗文字及无空格长标识符的表头与正文应换行并按完整内容增高,不以省略号隐藏尾部;短列按内容占宽,宽表保留共享横向滚动条并能滚至最末列。macOS + Codex + API Key:验证发消息前的上游配置选项和确认;无自定义服务商或 API Key 时确认仍显示本机顶层默认模型、保留密钥缺失错误;修改本机默认模型后重连,连续新建空会话确认不再使用旧导入模型;配置不在上游目录中的模型时,确认新会话优先使用目录内的上游推荐值;推荐值缺失、版本过旧或不可选时,按官方目录顺序选择第一个可用模型,确认后保留完整官方列表且不显示临时补入的无效模型;有效配置模型保持不变,拒绝与超时不显示假成功且 Codex 模型菜单显示 OpenAI 标志;验证工具输入/输出/文件/变更、权限拒绝、停止确认及超时重连、历史加载失败保留记录;使用确定性时钟推进静默、持续工具更新超过原十分钟期限,确认只出现静默提醒、轮次保持忙碌且没有自动取消或重发;继续等待只关闭提醒,新进度清除提醒并重新计时;多个授权等待超过五分钟仍可答复,全部完成后重新计时,后台会话不污染当前状态;等待授权期间其他更新、会话与 EOF 不被阻塞;明确停止仍保持忙碌直到确认,不确认时连接与进程树有界停止。Windows Agent 面板已接入共享 Host,连接、会话、工具/权限、取消、计划/思考、上下文用量与基础轮次统计已存在;Windows 已映射共享 Host 的重试/静默活动状态;真实供应商端到端验收仍待完成。临时项目跑通读文件→修改→执行测试→追问,复用文档观察和脏缓冲区保存保护。检查无搜索框的完整模型目录(名称、上游顺序、分组、空目录)、品牌图标/选中状态、无模型说明、权限说明、思考/速度子菜单、确认/失败与会话切换关闭弹出面板;检查项目切换、退出清理,以及 CC GUI 风格空态、搜索、标签、自适应增长输入区和配置菜单在窄宽面板及深浅主题下的布局。Windows 端到端仍待验证;Claude API Key 鉴权与完整工具流程由独立能力行记录。 安装包环境下打开 Agent 面板,确认 Codex/Claude 图标从 Contents/Resources 加载且不依赖构建目录;资源包或图标缺失时显示默认图标而不闪退,读取前后包内文件清单和内容不变。 检查紧凑配置菜单:模型和设置子选项最小行高 26pt、权限模式最小行高 44pt,上下内边距 4pt;面板高度随行高收紧;权限面板按实际内容高度调整并保留 330pt 上限,短列表的双行说明不需要滚动即可完整显示。深浅主题下通过实际 SwiftUI/AppKit 渲染与原生鼠标事件验证双行说明、滚动到模型/权限长列表末项并选择,原始 ID 和选中回调不变;完整目录及选中标记正常。 点击任务、运行中、编辑确认展示当前会话的计划、活跃工具及去重文件;检查打开文件、分段差异、保留全部和逐个/全部回撤。保留后继续修改并回撤只能撤销新增修改;核对后台会话、未保存缓冲区、文件冲突、缺失或截断证据、编码、符号链接越界及批量部分失败不会覆盖用户内容。确认回撤后的编辑器刷新和连接关闭时任务清理,统计缺失不能伪造行数。 同一标签保留 A→B 后断连重连并回放,再执行 B→C 和回撤必须恢复 B;已回撤版本重连不再出现,失败回放保留基线、变更证据重新出现,关闭重开释放确认。创建路径被工作区内末端链接替换时保全链接及目标;最后快照后原生保存必须使回撤冲突;移动期间外部替换后核对实际移出的字节并恢复,原路径被重建时保全两个版本且提示恢复位置,Trash 失败不确认成功。 确认新请求无输出时显示等待响应而不显示推理;Codex 无标题的明确重试元数据切换到重试,新输出或工具事件恢复状态,授权和停止优先,迟到和后台会话事件不污染当前轮次;历史工具不计入当前执行状态。静默推进时钟不能伪造重试,正常轮次无绝对时限,取消确认保持。 响应期间点击审批、模型和思考选项,确认底栏预选值立即更新且当前轮不发送配置请求;连续选择取最后一次,改回已确认值撤销。结束或取消确认后先确认模型、再按最新选项逐项确认,全部完成前不能发送下一条;验证换模型后选项消失、拒绝或发送失败有明确错误并恢复已确认值。切换会话保持各自预选,后台完成只更新对应会话,断连清除预选且迟到确认不恢复。深浅主题下通过原生鼠标打开菜单并选择。Windows 已接入下一轮配置预选及按序确认。 检查速度与思考强度子菜单:主模型面板宽度和位置不变,子面板顶端贴齐触发行、只包住选项且没有顶部整块空白;右侧空间不足时向左展开。深浅主题下验证上游名称原文、简短说明、已确认值勾选、Esc 只关闭子菜单、选择关闭两级菜单并保留原始 ID;长说明按实际宽度换行,长列表仍能选择末项,会话切换与锚点拆除释放全部子窗口。 同一配置 ID 的 choices、currentValue 或说明变化时,已打开的子菜单关闭,模型面板保留;重新打开使用最新选项、说明和勾选。原生窗口回归覆盖无搜索框时直接选择完整目录模型,以及键盘滚动后 mouseMoved 恢复指针选择;其他选项更新不关闭当前子菜单。 检查输入框上方任务/子代理和文件修改摘要按内容出现,空态移除状态区和预留高度;点击每项摘要直接打开原详情,长列表末项、文件打开/保留、差异与回撤确认保持。标题栏仅一行,独立历史按钮进入原管理页,验证搜索、收藏、改名、可恢复移除、导出及返回不丢草稿和连接。发送旁只保留一个会话详情入口,有用量显示圆环,未上报显示信息图标,点击在同一可滚动面板查看上下文、会话及Token统计,顶部不重复显示信息按钮,Agent/审批/模型在框内底部;深浅主题和320/417pt窄面板验证所有入口、关闭弹层及会话切换。 分别仅导入 Codex、先导入 Codex 再导入 Claude、反向导入与重复导入,确认来源、模型和关联保持独立;重载旧共享标识及已刷新标识的串用设置,确认正确绑定与提交供应商选择保留,错误关联恢复未配置,订阅和手动供应商不变。 点击输入区底栏 Agent 图标,确认 Claude/Codex 行显示原品牌图标,菜单底边位于触发按钮上方且不覆盖状态栏,切换及已选勾选保持。 Claude 暂时故障时显示正在重连 2/5 至 5/5,继续累计耗时且保持忙碌;恢复输出、错误、取消和断连清除次数。Codex 明确重试通知也显示正在重连;旧轮次通知和无效次数不能把新轮次或已结束会话变为重连。流式文本合并发布不能因状态清理增加每段刷新。 Codex API Key:本地 Responses 服务验证带 Retry-After:180 的 400/401/402/403/404 快速失败,503/断连最多五次原生调用,普通429无工作时有界补重发且与503共用五次预算,额度及已有工具/输出不整轮重发;明确重连次数和持续计时,尚无工作时20秒上限后保留10秒取消确认;已有回复、推理、计划、工具或授权后取消 Host 恢复上限及重复计数终止,原生有限重试仍有效。虚拟时钟推进恢复超过20秒并注入超过五次通知,确认同一轮完成且没有第二条 prompt;首次恢复警告后五分钟显示等待较久、继续等待/停止,后续警告不推迟提醒,实际进度清除。终止错误保留已完成工具与修改,用户明确继续复用原会话;未确认的停止仍有界清理。新建/历史恢复/分叉均使用预算,保持配置、工具、历史和订阅登录刷新。临时helper在进程树结束及启动失败后删除,安装包、适配器、用户CLI和配置不变;自定义ACP保留原生策略。Windows 重试策略由共享 Host 提供,Windows 已呈现重试状态;真实供应商验收待完成。 macOS:在 turnRetrying 后只发送有效 plan(含空 entries)即可退出重连并清空次数,保留计划、忙碌轮次和累计计时;无法解析的 plan 不能清理重连。已有回复/推理不退回等待,权限和停止继续优先;确认完成前仍拒绝第二条消息。确定性回归注入时钟与事件,Windows 同等界面行为仍待验证。 深浅主题检查标题栏无重复Agent名称,空态与底栏品牌资源尺寸保持,按钮仍有共享22pt命中区。 macOS 长会话:在窄面板积累多轮历史,读文件、修改、执行测试期间反复出现和关闭权限卡片,完成回复与统计后连续调整宽度,界面可响应且底部内容可见;主动上滚阅读历史后新文本、工具和权限更新不得拉走位置,回到底部或发送新消息后继续跟随,搜索期间暂停,会话切换或关闭不执行迟到滚动。保留 macOS 13 最低部署目标,旧系统实际运行仍待复验。 原生视口仅发送frame变化通知时也继续底部跟随;翻转坐标夹具先完成首次定位,再增加文档高度并改变视口frame,禁用bounds通知以验证独立通知路径。用户上滚浏览时仍不强制拉到底部,不观察文档估算高度驱动循环。 Claude:新会话仍使用供应商默认模型;会话选择不同模型并完成真实回复后关闭适配器,重连恢复必须保留历史模型并以相同模型发出实际请求。模型重新确认前不得发布加载完成;拒绝、错误确认和超时保留加载失败,禁止排队消息越过确认。分组列表、目录外当前模型和相同默认值均通过标准 ACP 确认;无选择器旧适配器和其他 Agent 保持原有加载行为。Windows Agent 面板与连接桥已接入共享 Host;真实供应商和目标平台端到端验收仍待完成。 macOS 活动状态区按需显示任务进度与当前步骤、右侧子代理入口和单独文件修改摘要,复用原详情与回撤。只有全部可见文件的上游统计完整且操作完成时显示增删合计,缺失或溢出时只显示文件数;已保留版本不再计入。空态高度与间距归零,审阅进行中或失败仍保留可操作入口。原生回归覆盖深浅主题、窄宽度、当前步骤、清空、旧弹层清理、长列表与文件动作。 Windows:在真实 Tauri 窗口执行 Windows 已接入历史归档、原生子代理、受保护的文件修改审阅、下一轮配置预选、重试与静默状态,以及模型调用与会话统计。运行时验收按相关独立能力记录;真实 Codex/Claude 服务调用仍待验证。 单元测试不替代运行时验收,未执行的真实服务及平台动作保持 pending。 Windows 后台 Agent 打开必须在窗口已销毁时拒绝,覆盖销毁先于排队打开执行及其他窗口不受影响。 Codex 0.166 + codex-acp 2.2.2:全局使用另一供应商时网关新会话仍可发送与回复;只有所选模拟服务收到请求,原配置字节不变,恢复历史不调用模型。订阅连接进程使用 openai;Windows 检查 npm cmd 固定参数启动,命令行无地址或凭据,托管策略仍由 Codex 执行。", + "notes": "2026-10-22:Windows 已接入历史归档、原生子代理、受保护的文件修改审阅、下一轮配置预选、重试与静默状态,以及模型调用与会话统计。运行时验收按相关独立能力记录;真实 Codex/Claude 服务调用仍待验证。 2026-10-25:适配器固定版本升至 codex-acp 2.2.2、claude-agent-acp 0.95.0;附件路径含百分号编码时额外带一行 📎 真实路径,原生斜杠命令不加。 2026-11-01:relay 使用非敏感进程配置对齐供应商准入;macOS 真实 CLI/ACP 与本地 Responses 服务验证发送和恢复,Windows 原生验收仍 pending。" } diff --git a/shared/platform-feature-matrix/features/agent-archived-conversation-history.json b/shared/platform-feature-matrix/features/agent-archived-conversation-history.json index f51a69ea00..fcaa991ad7 100644 --- a/shared/platform-feature-matrix/features/agent-archived-conversation-history.json +++ b/shared/platform-feature-matrix/features/agent-archived-conversation-history.json @@ -2,7 +2,7 @@ "id": "agent-archived-conversation-history", "area": "AI", "group": "Agent 对话", - "capability": "当前工作区的 Codex 归档历史:历史页“已归档(N)”分组默认折叠,搜索覆盖归档会话并自动展开命中项,分页不缺不重且空结果/折叠/无搜索命中时仍明示截断;活跃转归档不受响应先后或本地加载影响;已移除归档可独立恢复本地可见性;浏览只读,打开前确认后才通过官方 App Server 取消归档;不支持归档的 Agent(如 Claude)明确提示", + "capability": "当前工作区的 Codex 归档历史:历史页“已归档(N)”分组默认折叠,搜索覆盖归档会话并自动展开命中项,分页不缺不重且空结果/折叠/无搜索命中时仍明示截断;活跃转归档不受响应先后或本地加载影响;已移除归档可独立恢复本地可见性;浏览只读,打开前确认后才通过官方 App Server 取消归档;不支持归档的 Agent(如 Claude)明确提示;Codex 同账号与工作区跨供应商历史可见,不因当前计费路由切换而漏查;主动按上游供应商筛选,默认全部、未知来源独立可选,和搜索/置顶/已移除组合", "macos": { "evidence": [ "rust/lithe-agent-host/src/codex_history.rs", @@ -22,12 +22,14 @@ "windows/tauri/src/features/agent/stores/agent-connection.model.ts", "windows/tauri/src/features/agent/services/agent-transport.ts", "windows/tauri/src/features/agent/components/agent-archived-history.tsx", - "windows/tauri/src/features/agent/stores/agent-parity.test.ts" + "windows/tauri/src/features/agent/stores/agent-parity.test.ts", + "windows/tauri/src/features/agent/components/agent-history-provider.test.tsx", + "windows/tauri/src/features/agent/services/agent-history-view.ts" ], "implementationStatus": "implemented", "verificationStatus": "pending" }, "owner": "Agent", - "verification": "macOS:Codex(订阅与 API Key 两种模式)打开历史页,确认“已归档(N)”默认折叠、只含当前工作区(路径大小写/尾斜杠按 codex-acp 规则)的归档会话且带“已归档”标记,与 Lithe 本地“已移除”互不影响;搜索标题或 ID 能命中归档会话并自动展开,清空搜索后恢复折叠;超过 Host 分页上限时,即使当前工作区结果为空、分组折叠或搜索无命中也显示“仅显示最近的归档会话”,不误报没有历史/没有匹配;让归档和活跃响应分别先返回,已加载与未打开的活跃转归档会话都在本轮刷新后仅出现在归档分组;在“已移除”中恢复归档会话只清除本地隐藏标记,保留标题与收藏,不取消归档或加载;浏览、刷新、搜索不改变 ~/.codex 下的归档状态。点击归档会话先弹出确认,取消不发送任何请求,确认后会话移回活跃历史并打开,失败时保留在归档分组并显示错误。恢复成功先于此前活跃与归档列表响应时,两个旧响应均失效,重新查询双列表;旧响应无论何种先后顺序、紧接成功事件或异步等待返回后到达,都不能把已恢复会话重新放回归档、结束新刷新或覆盖完整性状态。切换工作区、切换 Agent 或断开连接后归档列表清空,不混入旧结果。Claude 连接显示“Claude 不支持归档会话”且不请求归档列表。共享 Host 与 Windows Tauri/React 已接入归档列表、分页/完整性状态、与活跃历史独立的新鲜度缓存和确认后恢复。独立状态机测试覆盖恢复与并发旧响应;本次真实 Tauri 验收使用受控 ACP fixture,真实 Codex 账户执行仍待完成。 Codex 历史时间与排序使用上游 recencyAt:只查看/恢复旧会话、刷新、重命名或收藏后时间和顺序保持;新一轮对话活动出现后更新。活跃与归档一致,缺失活动时间不回退到元数据更新时间或当前时间;读取失败保留已有列表。保留历史页和弹框外观。", - "notes": "2026-10-22:Windows 已接入 Codex 归档分组、历史页显示、恢复命令及并发响应保护。真实 Codex 账户端到端验收仍待完成。" + "verification": "macOS:Codex(订阅与 API Key 两种模式)打开历史页,确认“已归档(N)”默认折叠、只含当前工作区(路径大小写/尾斜杠按 codex-acp 规则)的归档会话且带“已归档”标记,与 Lithe 本地“已移除”互不影响;搜索标题或 ID 能命中归档会话并自动展开,清空搜索后恢复折叠;超过 Host 分页上限时,即使当前工作区结果为空、分组折叠或搜索无命中也显示“仅显示最近的归档会话”,不误报没有历史/没有匹配;让归档和活跃响应分别先返回,已加载与未打开的活跃转归档会话都在本轮刷新后仅出现在归档分组;在“已移除”中恢复归档会话只清除本地隐藏标记,保留标题与收藏,不取消归档或加载;浏览、刷新、搜索不改变 ~/.codex 下的归档状态。点击归档会话先弹出确认,取消不发送任何请求,确认后会话移回活跃历史并打开,失败时保留在归档分组并显示错误。恢复成功先于此前活跃与归档列表响应时,两个旧响应均失效,重新查询双列表;旧响应无论何种先后顺序、紧接成功事件或异步等待返回后到达,都不能把已恢复会话重新放回归档、结束新刷新或覆盖完整性状态。切换工作区、切换 Agent 或断开连接后归档列表清空,不混入旧结果。Claude 连接显示“Claude 不支持归档会话”且不请求归档列表。共享 Host 与 Windows Tauri/React 已接入归档列表、分页/完整性状态、与活跃历史独立的新鲜度缓存和确认后恢复。独立状态机测试覆盖恢复与并发旧响应;本次真实 Tauri 验收使用受控 ACP fixture,真实 Codex 账户执行仍待完成。 Codex 历史时间与排序使用上游 recencyAt:只查看/恢复旧会话、刷新、重命名或收藏后时间和顺序保持;新一轮对话活动出现后更新。活跃与归档一致,缺失活动时间不回退到元数据更新时间或当前时间;读取失败保留已有列表。保留历史页和弹框外观。 Codex 跨供应商回归:同账号与工作区准备官方、ACP 网关、原生自定义及之前供应商的记录,活跃与归档均可列出和搜索;不同账号、工作区及子代理仍隔离。查询全部 provider 并保持 useStateDbOnly,不改写旧记录或按 rollout 文件存在性判断历史丢失。 供应商筛选:默认全部;菜单候选合并活跃和归档的真实 modelProvider,未知/空白来源独立处理,不按当前路由或模型猜。验证精确 ID、未知来源、标题/ID 搜索、置顶/已移除交集、分页到达、归档分组和无命中提示;切换后清除批量选择,批量动作不得影响被筛掉的会话;恢复全部不重新查询或改写历史。窄宽面板、深浅主题、键盘选择和中英文入口验收。 归档折叠回归:无搜索词下选择有归档匹配的供应商或未知来源,首次点击归档标题立即收起,再点立即展开;搜索/供应商变化恢复新范围的自动默认,旧范围手动折叠不能泄漏,普通列表刷新保留用户选择。", + "notes": "2026-10-22:Windows 已接入 Codex 归档分组、历史页显示、恢复命令及并发响应保护。真实 Codex 账户端到端验收仍待完成。 2026-11-01:共享 Host 删除固定供应商历史筛选;混合供应商确定性测试覆盖活跃与归档,真实平台验收保持 pending。 2026-11-01:增加可选 modelProvider 摘要元数据和双平台主动筛选,默认仍查询全部;确定性测试覆盖传播与筛选交集,原生整机验证按实际执行记录。 2026-11-01 review 修复:双平台手动折叠覆盖供应商/搜索的自动展开默认,macOS 展示与切换共用实际值,Windows 随搜索和供应商范围重置显式覆盖。" } diff --git a/shared/platform-feature-matrix/features/agent-conversation-history.json b/shared/platform-feature-matrix/features/agent-conversation-history.json index f6eb37f3dd..a865657f23 100644 --- a/shared/platform-feature-matrix/features/agent-conversation-history.json +++ b/shared/platform-feature-matrix/features/agent-conversation-history.json @@ -2,7 +2,7 @@ "id": "agent-conversation-history", "area": "AI", "group": "Agent 对话", - "capability": "CC GUI 风格历史页:标题与会话 ID 搜索、对话活动时间、复制 ID、刷新与恢复、收藏与本地重命名、单条与批量移除确认及恢复、筛选、多选批量管理及 Markdown 导出;分页首批结果提前显示、近期列表复用与刷新请求合并;macOS 历史页按收藏、今天、昨天、过去 7/30 天、更早分组,行内用 Agent 磁贴与“…”菜单;大历史对话回放期间不逐条发布,对话视图首屏只构建最近 48 项并可展开更早内容", + "capability": "CC GUI 风格历史页:标题与会话 ID 搜索、对话活动时间、复制 ID、刷新与恢复、收藏与本地重命名、单条与批量移除确认及恢复、筛选、多选批量管理及 Markdown 导出;分页首批结果提前显示、近期列表复用与刷新请求合并;macOS 历史页按收藏、今天、昨天、过去 7/30 天、更早分组,行内用 Agent 磁贴与“…”菜单;大历史对话回放期间不逐条发布,对话视图首屏只构建最近 48 项并可展开更早内容;Codex 同账号与工作区跨供应商历史可见,不因当前计费路由切换而漏查;主动按上游供应商筛选,默认全部、未知来源独立可选,和搜索/置顶/已移除组合", "macos": { "evidence": [ "macos/Sources/Lithe/Views/Agent/AgentHistoryView.swift", @@ -35,12 +35,13 @@ "windows/tauri/src/features/agent/services/agent-history.test.ts", "windows/tauri/src/features/agent/components/agent-panel.tsx", "windows/tauri/src/features/agent/stores/agent-connection.model.ts", - "windows/tauri/src/features/agent/stores/agent-parity.test.ts" + "windows/tauri/src/features/agent/stores/agent-parity.test.ts", + "windows/tauri/src/features/agent/components/agent-history-provider.test.tsx" ], "implementationStatus": "implemented", "verificationStatus": "pending" }, "owner": "Agent", - "verification": "macOS:在深浅主题与窄宽面板查看历史页,检查共享搜索框与按钮的焦点、悬停、禁用状态,验证标题/ID 搜索、空结果、返回保留草稿、刷新失败不丢列表、打开历史恢复会话;验证收藏/重命名重启后保留且不同项目/Agent 隔离;筛选和全选只操作可见项,单条与批量移除先确认,取消不修改记录,确认只移除提示时选中的会话,移除后可恢复且不改上游文件;单个与批量 Markdown 导出等待历史回放完成、保持原选中标签,取消/失败不写部分记录;部分回放后失败再导出必须重新加载并等待完成,断连后的未完整回放不可导出,完整快照断连后仍可导出;关闭项目释放导出等待。消息数量只显示已加载的用户与 Agent 消息,未知总数不伪造。点击 New Chat 创建真实新会话,等待创建时不能重复请求,确认后恢复可用;断连或未配置时显示具体原因;输入框加号仍只添加文件。macOS Chat History 进入独立历史管理页,选择会话通过已有连接发送 loadSession;返回保留草稿与连接。新建但未提交的实际会话可见、创建确认后仍显示 New Chat,且不伪造更新时间;本地重命名与上游标题优先保留、隐藏历史不重现;搜索和历史管理入口保持可用。进入会话后顶部历史入口显示当前标题;首条用户消息提供临时标题,本地重命名和上游标题优先;切换及重命名同步刷新顶部与列表,长标题省略且历史点击功能保留。标题栏三个点菜单打开共享弹框;检查 Rename Chat 持久化并更新标题,Delete Chat 取消不改动、确认后从历史隐藏且可恢复,忙碌时禁用,Settings打开现有设置。Show Toolbar 勾选隐藏/恢复输入框操作栏与Agent/模型/统计栏,已开弹框随隐藏关闭;文本可编辑且输入框高度保留,Tasks/Running/Edits不受影响。重开或切Agent保留可见状态,不停止任务。 Windows 面板已实现筛选(全部/收藏/已移除)、标题与会话 ID 搜索、复制会话 ID、收藏、本地重命名、单条与批量移除确认及恢复,标注按项目与 Agent 隔离并存在平台 store(`agent-history.json`),每次保存前先重读再合并以免多窗口互相覆盖;Markdown 导出已实现:先按需重放未打开的会话(导出用的加载不打开标签页),全部加载成功后才写文件,取消保存对话框不写文件,超过 32 MiB 直接报错;独立历史页已接入,消息数量只在会话已加载时显示。点击 New Chat 创建真实新会话,等待创建时不能重复请求,确认后恢复可用;断连或未配置时显示具体原因;输入框加号仍只添加文件。Chat History 点击后直接展开共享会话列表,当前会话置顶;新建但未提交的实际会话可见、创建确认后仍显示 New Chat,且不伪造更新时间;本地重命名与上游标题优先保留、隐藏历史不重现。鼠标和方向键/Enter 选择使用已有 loadSession;Escape 和外部点击关闭,关闭后键盘事件不继续作用于旧弹框。搜索和历史管理入口保持可用。进入会话后顶部历史入口显示当前标题;首条用户消息提供临时标题,本地重命名和上游标题优先;切换及重命名同步刷新顶部与列表,长标题省略且历史点击功能保留。标题栏三个点菜单打开共享弹框;检查 Rename Chat 持久化并更新标题,Delete Chat 取消不改动、确认后从历史隐藏且可恢复,忙碌时禁用,Settings打开现有设置。Show Toolbar 勾选隐藏/恢复输入框操作栏与Agent/模型/统计栏,已开弹框随隐藏关闭;文本可编辑且输入框高度保留,Tasks/Running/Edits不受影响。重开或切Agent保留可见状态,不停止任务。 历史加载:控制第二页尚未返回时确认第一页会话已显示且刷新状态保持;空项目页继续翻页,失败保留旧列表和已返回新项,重试及取消归档后丢弃旧请求分页。30 秒内从快捷历史切到管理页复用成功结果(包括空列表),请求未完成时不重复发送;超过期限重新查询,手动刷新立即查询。活跃与归档各自记录成功时间,归档失败只重试归档,断连/重连清除新鲜度;确认归档与活跃响应先后不同仍保持正确分组。Windows 同样消费共享 Host 的 sessionsPage 事件,非末页提前合并展示;活跃与归档分别维护 30 秒新鲜度,合并在途请求,并在轮次完成、重连与归档恢复时失效。跨过轮次的旧响应不能延长缓存有效期。 Codex 历史时间与排序使用上游 recencyAt:只查看/恢复旧会话、刷新、重命名或收藏后时间和顺序保持;新一轮对话活动出现后更新。活跃与归档一致,缺失活动时间不回退到元数据更新时间或当前时间;读取失败保留已有列表。保留历史页和弹框外观。 Codex 原生 App Server 活跃列表同样先发布匹配的非末页,继续保留 recency_at 排序、useStateDbOnly 只读请求、去重及 workspace/provider/source 隔离;全局外项目页和重复页不产生假空列表或重复行。 双平台轮次结束:先确认 30 秒内命中活跃与归档快照,再完成后台会话的一轮回复,立即重新打开历史,验证只重查活跃列表并采用上游新活动时间与排序;加载/查看旧会话仍命中缓存。分别控制历史响应在轮次结束前、后到达,确认跨过该轮次的在途查询不能延长缓存期限,同时保持请求合并;新查询成功后可以再次复用。 macOS 大历史加载:对 1 200 轮(万级回放事件)的对话执行 loadSession,回放期间不逐条发布,结束后消息顺序、工具合并正确,对话首屏只显示最近 48 项,点“显示更早的 N 项”或导航栏跳到更早回合会扩大窗口并保持位置;加载失败恢复旧副本,断连保留部分回放但不标记完整。历史页分组与“…”菜单(收藏、重命名、导出、复制会话 ID、移出历史/恢复)可用,搜索、筛选、多选、归档分区保持原行为。", - "notes": "2026-10-22:Windows 已提供独立历史页与快捷历史列表、分页首批展示、30 秒活跃/归档独立缓存、请求合并和轮次完成失效。搜索、收藏、重命名、移除/恢复、批量管理和 Markdown 导出沿用现有平台存储与回放流程。Agent 标注按项目和 Agent 隔离,不修改上游会话文件。单元测试覆盖分页、归档恢复及旧响应竞争;完整平台运行验收保持 pending,不能用测试替身证明真实服务。" + "verification": "macOS:在深浅主题与窄宽面板查看历史页,检查共享搜索框与按钮的焦点、悬停、禁用状态,验证标题/ID 搜索、空结果、返回保留草稿、刷新失败不丢列表、打开历史恢复会话;验证收藏/重命名重启后保留且不同项目/Agent 隔离;筛选和全选只操作可见项,单条与批量移除先确认,取消不修改记录,确认只移除提示时选中的会话,移除后可恢复且不改上游文件;单个与批量 Markdown 导出等待历史回放完成、保持原选中标签,取消/失败不写部分记录;部分回放后失败再导出必须重新加载并等待完成,断连后的未完整回放不可导出,完整快照断连后仍可导出;关闭项目释放导出等待。消息数量只显示已加载的用户与 Agent 消息,未知总数不伪造。点击 New Chat 创建真实新会话,等待创建时不能重复请求,确认后恢复可用;断连或未配置时显示具体原因;输入框加号仍只添加文件。macOS Chat History 进入独立历史管理页,选择会话通过已有连接发送 loadSession;返回保留草稿与连接。新建但未提交的实际会话可见、创建确认后仍显示 New Chat,且不伪造更新时间;本地重命名与上游标题优先保留、隐藏历史不重现;搜索和历史管理入口保持可用。进入会话后顶部历史入口显示当前标题;首条用户消息提供临时标题,本地重命名和上游标题优先;切换及重命名同步刷新顶部与列表,长标题省略且历史点击功能保留。标题栏三个点菜单打开共享弹框;检查 Rename Chat 持久化并更新标题,Delete Chat 取消不改动、确认后从历史隐藏且可恢复,忙碌时禁用,Settings打开现有设置。Show Toolbar 勾选隐藏/恢复输入框操作栏与Agent/模型/统计栏,已开弹框随隐藏关闭;文本可编辑且输入框高度保留,Tasks/Running/Edits不受影响。重开或切Agent保留可见状态,不停止任务。 Windows 面板已实现筛选(全部/收藏/已移除)、标题与会话 ID 搜索、复制会话 ID、收藏、本地重命名、单条与批量移除确认及恢复,标注按项目与 Agent 隔离并存在平台 store(`agent-history.json`),每次保存前先重读再合并以免多窗口互相覆盖;Markdown 导出已实现:先按需重放未打开的会话(导出用的加载不打开标签页),全部加载成功后才写文件,取消保存对话框不写文件,超过 32 MiB 直接报错;独立历史页已接入,消息数量只在会话已加载时显示。点击 New Chat 创建真实新会话,等待创建时不能重复请求,确认后恢复可用;断连或未配置时显示具体原因;输入框加号仍只添加文件。Chat History 点击后直接展开共享会话列表,当前会话置顶;新建但未提交的实际会话可见、创建确认后仍显示 New Chat,且不伪造更新时间;本地重命名与上游标题优先保留、隐藏历史不重现。鼠标和方向键/Enter 选择使用已有 loadSession;Escape 和外部点击关闭,关闭后键盘事件不继续作用于旧弹框。搜索和历史管理入口保持可用。进入会话后顶部历史入口显示当前标题;首条用户消息提供临时标题,本地重命名和上游标题优先;切换及重命名同步刷新顶部与列表,长标题省略且历史点击功能保留。标题栏三个点菜单打开共享弹框;检查 Rename Chat 持久化并更新标题,Delete Chat 取消不改动、确认后从历史隐藏且可恢复,忙碌时禁用,Settings打开现有设置。Show Toolbar 勾选隐藏/恢复输入框操作栏与Agent/模型/统计栏,已开弹框随隐藏关闭;文本可编辑且输入框高度保留,Tasks/Running/Edits不受影响。重开或切Agent保留可见状态,不停止任务。 历史加载:控制第二页尚未返回时确认第一页会话已显示且刷新状态保持;空项目页继续翻页,失败保留旧列表和已返回新项,重试及取消归档后丢弃旧请求分页。30 秒内从快捷历史切到管理页复用成功结果(包括空列表),请求未完成时不重复发送;超过期限重新查询,手动刷新立即查询。活跃与归档各自记录成功时间,归档失败只重试归档,断连/重连清除新鲜度;确认归档与活跃响应先后不同仍保持正确分组。Windows 同样消费共享 Host 的 sessionsPage 事件,非末页提前合并展示;活跃与归档分别维护 30 秒新鲜度,合并在途请求,并在轮次完成、重连与归档恢复时失效。跨过轮次的旧响应不能延长缓存有效期。 Codex 历史时间与排序使用上游 recencyAt:只查看/恢复旧会话、刷新、重命名或收藏后时间和顺序保持;新一轮对话活动出现后更新。活跃与归档一致,缺失活动时间不回退到元数据更新时间或当前时间;读取失败保留已有列表。保留历史页和弹框外观。 Codex 原生 App Server 活跃列表同样先发布匹配的非末页,继续保留 recency_at 排序、useStateDbOnly 只读请求、去重及 workspace/account/source 隔离;全局外项目页和重复页不产生假空列表或重复行。 双平台轮次结束:先确认 30 秒内命中活跃与归档快照,再完成后台会话的一轮回复,立即重新打开历史,验证只重查活跃列表并采用上游新活动时间与排序;加载/查看旧会话仍命中缓存。分别控制历史响应在轮次结束前、后到达,确认跨过该轮次的在途查询不能延长缓存期限,同时保持请求合并;新查询成功后可以再次复用。 macOS 大历史加载:对 1 200 轮(万级回放事件)的对话执行 loadSession,回放期间不逐条发布,结束后消息顺序、工具合并正确,对话首屏只显示最近 48 项,点“显示更早的 N 项”或导航栏跳到更早回合会扩大窗口并保持位置;加载失败恢复旧副本,断连保留部分回放但不标记完整。历史页分组与“…”菜单(收藏、重命名、导出、复制会话 ID、移出历史/恢复)可用,搜索、筛选、多选、归档分区保持原行为。 Codex 跨供应商回归:同账号与工作区准备官方、ACP 网关、原生自定义及之前供应商的记录,活跃与归档均可列出和搜索;不同账号、工作区及子代理仍隔离。查询全部 provider 并保持 useStateDbOnly,不改写旧记录或按 rollout 文件存在性判断历史丢失。 供应商筛选:默认全部;菜单候选合并活跃和归档的真实 modelProvider,未知/空白来源独立处理,不按当前路由或模型猜。验证精确 ID、未知来源、标题/ID 搜索、置顶/已移除交集、分页到达、归档分组和无命中提示;切换后清除批量选择,批量动作不得影响被筛掉的会话;恢复全部不重新查询或改写历史。窄宽面板、深浅主题、键盘选择和中英文入口验收。 归档折叠回归:无搜索词下选择有归档匹配的供应商或未知来源,首次点击归档标题立即收起,再点立即展开;搜索/供应商变化恢复新范围的自动默认,旧范围手动折叠不能泄漏,普通列表刷新保留用户选择。", + "notes": "2026-10-22:Windows 已提供独立历史页与快捷历史列表、分页首批展示、30 秒活跃/归档独立缓存、请求合并和轮次完成失效。搜索、收藏、重命名、移除/恢复、批量管理和 Markdown 导出沿用现有平台存储与回放流程。Agent 标注按项目和 Agent 隔离,不修改上游会话文件。单元测试覆盖分页、归档恢复及旧响应竞争;完整平台运行验收保持 pending,不能用测试替身证明真实服务。 2026-11-01:共享 Host 删除固定供应商历史筛选;混合供应商确定性测试覆盖活跃与归档,真实平台验收保持 pending。 2026-11-01:增加可选 modelProvider 摘要元数据和双平台主动筛选,默认仍查询全部;确定性测试覆盖传播与筛选交集,原生整机验证按实际执行记录。 2026-11-01 review 修复:双平台手动折叠覆盖供应商/搜索的自动展开默认,macOS 展示与切换共用实际值,Windows 随搜索和供应商范围重置显式覆盖。" } diff --git a/windows/tauri/src/features/agent/components/agent-archived-history.tsx b/windows/tauri/src/features/agent/components/agent-archived-history.tsx index 0ebf1f5d5c..c5a3c6aa28 100644 --- a/windows/tauri/src/features/agent/components/agent-archived-history.tsx +++ b/windows/tauri/src/features/agent/components/agent-archived-history.tsx @@ -5,7 +5,7 @@ import { showConfirmDialog } from "@/ui/dialog"; import { CaretDownIcon, CaretRightIcon, CopyIcon, StarIcon } from "@/ui/icons"; import { Spinner } from "@/ui/spinner"; import { tryWriteClipboardText } from "@/utils/clipboard"; -import { agentHistoryRows } from "../services/agent-history-view"; +import { agentHistoryRows, type AgentHistoryProviderFilter } from "../services/agent-history-view"; import type { AgentSessionSummary } from "../types/agent.types"; import type { AgentHistoryFilter, AgentHistoryMetadataMap } from "../types/agent-history.types"; @@ -22,19 +22,20 @@ export interface AgentArchiveHistoryProps { } /** The provider archive shares search/annotations, but never the local hidden flag. */ -export function AgentArchivedHistory({ archive, query, filter, metadata, onSelect, onSetHidden, onSetFavorite }: { +export function AgentArchivedHistory({ archive, query, filter, provider = null, metadata, onSelect, onSetHidden, onSetFavorite }: { archive: AgentArchiveHistoryProps; query: string; filter: AgentHistoryFilter; + provider?: AgentHistoryProviderFilter; metadata: AgentHistoryMetadataMap; onSelect: (sessionID: string) => void; onSetHidden: (ids: string[], hidden: boolean) => void; onSetFavorite: (ids: string[], favorite: boolean) => void; }) { const { t } = useTranslation(); - const [expanded, setExpanded] = useState(false); - const rows = agentHistoryRows(archive.sessions, metadata, query, filter); - const isExpanded = expanded || (query.trim().length > 0 && rows.length > 0); + const [expanded, setExpanded] = useState(null); + const rows = agentHistoryRows(archive.sessions, metadata, query, filter, provider); + const isExpanded = expanded ?? ((query.trim().length > 0 || provider !== null) && rows.length > 0); const restore = async (sessionID: string) => { if (filter === "removed") { onSetHidden([sessionID], false); diff --git a/windows/tauri/src/features/agent/components/agent-history-list.tsx b/windows/tauri/src/features/agent/components/agent-history-list.tsx index 656cf3a6d8..81e1d7b6f1 100644 --- a/windows/tauri/src/features/agent/components/agent-history-list.tsx +++ b/windows/tauri/src/features/agent/components/agent-history-list.tsx @@ -18,7 +18,7 @@ import { SearchField } from "@/ui/search"; import { Spinner } from "@/ui/spinner"; import { tryWriteClipboardText } from "@/utils/clipboard"; import { cn } from "@/utils/cn"; -import { agentHistoryRows, historyMessageCount } from "../services/agent-history-view"; +import { agentHistoryRows, historyMessageCount, historyProviderOptions, type AgentHistoryProviderFilter } from "../services/agent-history-view"; import type { AgentConversation, AgentSessionSummary } from "../types/agent.types"; import type { AgentHistoryFilter, AgentHistoryMetadataMap } from "../types/agent-history.types"; import { AgentArchivedHistory, type AgentArchiveHistoryProps } from "./agent-archived-history"; @@ -71,14 +71,18 @@ export function AgentHistoryList({ const { t } = useTranslation(); const [query, setQuery] = useState(""); const [filter, setFilter] = useState("all"); + const [provider, setProvider] = useState(null); const [isSelecting, setIsSelecting] = useState(false); const [selectedIDs, setSelectedIDs] = useState([]); const [copiedID, setCopiedID] = useState(null); const rows = useMemo( - () => agentHistoryRows(sessions, metadata, query, filter), - [sessions, metadata, query, filter], + () => agentHistoryRows(sessions, metadata, query, filter, provider), + [sessions, metadata, query, filter, provider], ); + const archivedRows = agentHistoryRows(archive?.sessions ?? [], metadata, query, filter, provider); + const providers = historyProviderOptions([...sessions, ...(archive?.sessions ?? [])]); + if (provider !== null && !providers.includes(provider)) providers.push(provider); const visibleIDs = useMemo(() => rows.map((row) => row.session.id), [rows]); const selected = visibleIDs.filter((id) => selectedIDs.includes(id)); const allSelected = visibleIDs.length > 0 && selected.length === visibleIDs.length; @@ -122,10 +126,10 @@ export function AgentHistoryList({ setSelectedIDs((current) => current.filter((id) => !sessionIDs.includes(id))); }; - const emptyMessage = isRefreshing + const emptyMessage = isRefreshing || archive?.loading === true ? t("agent.history.loading") - : query.trim().length > 0 - ? `${t("agent.history.noMatch")} ${t("agent.history.noMatchHint")}` + : query.trim().length > 0 || provider !== null + ? `${t("agent.history.noMatch")} ${t("agent.history.providerHint")}` : t("agent.history.empty"); return ( @@ -134,7 +138,7 @@ export function AgentHistoryList({ {isSelecting ? t("agent.history.selectedCount", { count: selected.length }) - : t("agent.history.conversations", { count: sessions.length })} + : t("agent.history.conversations", { count: rows.length + archivedRows.length })}
-
+
+ { + setProvider(event.target.value === "all" ? null : JSON.parse(event.target.value) as string); + setSelectedIDs([]); + }}> + {t("agent.history.allProviders")} + {providers.map((id) => + {id || t("agent.history.unknownProvider")} + )} +
{error === null ? null : ( @@ -254,8 +269,9 @@ export function AgentHistoryList({
) : null} - {rows.length === 0 && (archive === undefined || agentHistoryRows(archive.sessions, metadata, query, filter).length === 0) ? ( -
{emptyMessage}
+ {rows.length === 0 && archivedRows.length === 0 ? ( + archive?.complete === false ? null : +
{emptyMessage}
) : (
{rows.map((row) => { @@ -385,7 +401,7 @@ export function AgentHistoryList({ })}
)} - {archive === undefined ? null : } ); diff --git a/windows/tauri/src/features/agent/components/agent-history-provider.test.tsx b/windows/tauri/src/features/agent/components/agent-history-provider.test.tsx new file mode 100644 index 0000000000..60a0d3ad67 --- /dev/null +++ b/windows/tauri/src/features/agent/components/agent-history-provider.test.tsx @@ -0,0 +1,122 @@ +import { afterEach, beforeEach, expect, test } from "bun:test"; +import { act } from "react"; +import { createRoot, type Root } from "react-dom/client"; +import { LocaleProvider } from "@/i18n/locale-provider"; +import { installHappyDom } from "@/test-utils/happy-dom"; +import { AgentHistoryList } from "./agent-history-list"; + +const actGlobal = globalThis as typeof globalThis & { IS_REACT_ACT_ENVIRONMENT?: boolean }; +let previousActEnvironment: boolean | undefined; +let restoreDom: () => void; +let root: Root; +let container: HTMLDivElement; +let exported: string[][]; + +beforeEach(() => { + restoreDom = installHappyDom(); + previousActEnvironment = actGlobal.IS_REACT_ACT_ENVIRONMENT; + actGlobal.IS_REACT_ACT_ENVIRONMENT = true; + container = document.createElement("div"); + document.body.append(container); + root = createRoot(container); + exported = []; +}); + +afterEach(async () => { + try { await act(async () => root.unmount()); } + finally { + container.remove(); + restoreDom(); + if (previousActEnvironment === undefined) delete actGlobal.IS_REACT_ACT_ENVIRONMENT; + else actGlobal.IS_REACT_ACT_ENVIRONMENT = previousActEnvironment; + } +}); + +function render() { + act(() => root.render( true }} + metadata={{}} conversations={{}} isRefreshing={false} error={null} canRefresh + onRefresh={() => {}} onSelect={() => {}} onRename={async () => true} + onSetFavorite={() => {}} onSetHidden={() => {}} + isExporting={false} onExport={(ids) => exported.push(ids)} canExportSession={() => true} + />)); +} + +function button(text: string): HTMLButtonElement { + const found = [...container.querySelectorAll("button")].find((entry) => entry.textContent === text); + if (!found) throw new Error(`Missing history action: ${text}`); + return found; +} + +function selectProvider(value: string | null) { + const select = container.querySelector('select[aria-label="Conversation provider"]'); + if (!select) throw new Error("Missing provider selector"); + act(() => { + select.value = value === null ? "all" : JSON.stringify(value); + select.dispatchEvent(new Event("change", { bubbles: true })); + }); +} + +test("provider selector includes archive-only and unknown sources, and restores all without routing changes", () => { + render(); + expect(container.textContent).toContain("5 conversations"); + const select = container.querySelector('select[aria-label="Conversation provider"]')!; + expect([...select.options].map((entry) => entry.text)).toEqual([ + "All providers", "archive-only-provider", "native-provider", "previous-provider", "Unknown provider", + ]); + selectProvider("native-provider"); + expect(container.textContent).toContain("1 conversations"); + expect(container.textContent).toContain("Native chat"); + expect(container.textContent).not.toContain("Other chat"); + expect(container.textContent).not.toContain("Unknown chat"); + selectProvider("archive-only-provider"); + expect(container.textContent).toContain("Archived native chat"); + expect(container.textContent).toContain("1 conversations"); + selectProvider(""); + expect(container.textContent).toContain("Unknown chat"); + expect(container.textContent).not.toContain("Native chat"); + selectProvider(null); + expect(container.textContent).toContain("5 conversations"); + expect(container.textContent).toContain("Other chat"); +}); + +for (const [provider, title] of [["archive-only-provider", "Archived native chat"], ["", "Archived unknown chat"]] as const) { + test(`matching provider archives can collapse on the first click and reopen (${provider || "unknown"})`, () => { + render(); + selectProvider(provider); + const header = () => container.querySelector('button[aria-expanded]')!; + expect(header().getAttribute("aria-expanded")).toBe("true"); + expect(container.textContent).toContain(title); + act(() => header().click()); + expect(header().getAttribute("aria-expanded")).toBe("false"); + expect(container.textContent).not.toContain(title); + act(() => header().click()); + expect(header().getAttribute("aria-expanded")).toBe("true"); + expect(container.textContent).toContain(title); + act(() => header().click()); + // New provider/search scopes get a fresh automatic default, not the old override. + selectProvider(provider === "" ? "archive-only-provider" : ""); + expect(header().getAttribute("aria-expanded")).toBe("true"); + }); +} + +test("changing provider clears bulk selection and select-all affects only visible active rows", () => { + render(); + act(() => button("Select").click()); + act(() => button("Select all").click()); + expect(container.textContent).toContain("3 selected"); + selectProvider("native-provider"); + expect(container.textContent).toContain("0 selected"); + act(() => button("Select all").click()); + act(() => button("Export conversations").click()); + expect(exported).toEqual([["a"]]); +}); diff --git a/windows/tauri/src/features/agent/components/agent-panel.tsx b/windows/tauri/src/features/agent/components/agent-panel.tsx index 114c2e6639..05fea005b9 100644 --- a/windows/tauri/src/features/agent/components/agent-panel.tsx +++ b/windows/tauri/src/features/agent/components/agent-panel.tsx @@ -399,6 +399,7 @@ export function AgentPanel({ const historyList = (onSelect: (sessionID: string) => void) => ( <> provider.length > 0).sort(); + return providers.has("") ? [...known, ""] : known; +} + /** * Milliseconds for an Agent timestamp, or `null` when the value is not the * documented ISO-8601 form. A date-only string is rejected rather than guessed, @@ -48,10 +62,12 @@ export function agentHistoryRows( metadata: AgentHistoryMetadataMap, query: string, filter: AgentHistoryFilter, + provider: AgentHistoryProviderFilter = null, ): AgentHistoryRow[] { const needle = query.trim().toLowerCase(); return sessions .flatMap((session) => { + if (provider !== null && historyProvider(session) !== provider) return []; const entry = metadata[session.id] ?? emptyAgentHistoryMetadata; if (entry.isHidden !== (filter === "removed")) return []; if (filter === "favorites" && !entry.isFavorite) return []; diff --git a/windows/tauri/src/features/agent/services/agent-history.test.ts b/windows/tauri/src/features/agent/services/agent-history.test.ts index 54c85390d0..e92b49fa7d 100644 --- a/windows/tauri/src/features/agent/services/agent-history.test.ts +++ b/windows/tauri/src/features/agent/services/agent-history.test.ts @@ -12,7 +12,7 @@ import { parseAgentHistoryMetadata, renameAgentHistoryEntry, } from "./agent-history-annotations"; -import { agentHistoryRows, historyDate, historyMessageCount } from "./agent-history-view"; +import { agentHistoryRows, historyDate, historyMessageCount, historyProviderOptions } from "./agent-history-view"; import { historyMarkdown } from "./agent-history-export"; function session(id: string, title: string | null, updatedAt: string | null): AgentSessionSummary { @@ -92,6 +92,30 @@ describe("History metadata", () => { }); describe("History rows", () => { + test("provider filtering composes with search and annotations without guessing missing sources", () => { + const rows: AgentSessionSummary[] = [ + { ...session("a", "Review", null), modelProvider: "native-provider" }, + { ...session("b", "Review", null), modelProvider: "previous-provider" }, + { ...session("removed", "Review", null), modelProvider: "native-provider" }, + session("unknown", "Review", null), + { ...session("blank", "Review", null), modelProvider: " \n " }, + ]; + const metadata: AgentHistoryMetadataMap = { + a: { title: null, isFavorite: true, isHidden: false }, + removed: { title: null, isFavorite: false, isHidden: true }, + }; + const ids = (provider: string | null, filter: "all" | "favorites" | "removed" = "all", query = "") => + agentHistoryRows(rows, metadata, query, filter, provider).map((row) => row.session.id); + expect(ids(null).sort()).toEqual(["a", "b", "blank", "unknown"]); + expect(ids("native-provider", "favorites", "Review")).toEqual(["a"]); + expect(ids("native-provider", "removed")).toEqual(["removed"]); + expect(ids("previous-provider", "all", "b")).toEqual(["b"]); + expect(ids("").sort()).toEqual(["blank", "unknown"]); + expect(ids("missing")).toEqual([]); + expect(historyProviderOptions(rows)).toEqual(["native-provider", "previous-provider", ""]); + expect(rows[0]?.modelProvider).toBe("native-provider"); + }); + test("sorts newest first and keeps undated sessions last", () => { expect(agentHistoryRows(sessions, {}, "", "all").map((row) => row.session.id)).toEqual([ "session-new", diff --git a/windows/tauri/src/features/agent/stores/agent-connection.model.ts b/windows/tauri/src/features/agent/stores/agent-connection.model.ts index 360c99e7ac..db77d05998 100644 --- a/windows/tauri/src/features/agent/stores/agent-connection.model.ts +++ b/windows/tauri/src/features/agent/stores/agent-connection.model.ts @@ -1277,6 +1277,7 @@ export class AgentConnectionModel { id, title: asString(entry.title) ?? local?.title ?? null, updatedAt: asString(entry.updatedAt), + modelProvider: asString(entry.modelProvider)?.trim() || null, }, ]; }); diff --git a/windows/tauri/src/features/agent/stores/agent-parity.test.ts b/windows/tauri/src/features/agent/stores/agent-parity.test.ts index 83a0cb2f8b..7baca84c60 100644 --- a/windows/tauri/src/features/agent/stores/agent-parity.test.ts +++ b/windows/tauri/src/features/agent/stores/agent-parity.test.ts @@ -40,6 +40,16 @@ describe("Agent parity lifecycle", () => { }); afterEach(async () => { await model.stop(); }); + test("history pages and archives retain provider identity while absent metadata stays unknown", () => { + const row = { sessionId: "source-a", title: "Known", modelProvider: "native-provider" }; + deliver({ kind: "sessionsPage", token: command("listSessions").token, sessions: [row] }); + expect(model.getSnapshot().sessions.find((session) => session.id === "source-a")?.modelProvider).toBe("native-provider"); + deliver({ kind: "sessions", token: command("listSessions").token, sessions: [row] }); + deliver({ kind: "archivedSessions", token: command("listArchivedSessions").token, complete: true, + sessions: [{ sessionId: "old", modelProvider: "previous-provider" }, { sessionId: "unknown" }] }); + expect(model.getSnapshot().archivedSessions.map((session) => session.modelProvider)).toEqual(["previous-provider", null]); + }); + test("successful empty history is reused for 30 seconds and manual refresh bypasses it", () => { deliver({ kind: "sessions", token: command("listSessions").token, sessions: [] }); deliver({ kind: "archivedSessions", token: command("listArchivedSessions").token, sessions: [] }); diff --git a/windows/tauri/src/features/agent/types/agent.types.ts b/windows/tauri/src/features/agent/types/agent.types.ts index cfa13b24f3..0b57446fc5 100644 --- a/windows/tauri/src/features/agent/types/agent.types.ts +++ b/windows/tauri/src/features/agent/types/agent.types.ts @@ -135,6 +135,8 @@ export interface AgentSessionSummary { id: string; title: string | null; updatedAt: string | null; + /** Upstream history identity, not the current provider; absent means unknown. */ + modelProvider?: string | null; } /** Display state of one conversation session. */ diff --git a/windows/tauri/src/i18n/shared.generated.ts b/windows/tauri/src/i18n/shared.generated.ts index 9b53275af8..cbfba04ed2 100644 --- a/windows/tauri/src/i18n/shared.generated.ts +++ b/windows/tauri/src/i18n/shared.generated.ts @@ -130,6 +130,7 @@ export const sharedCatalogs = { "agent.hero.choose": "Choose an Agent to start", "agent.hero.sendTo": "Send a message to {name}", "agent.history.addFavorite": "Add to favorites", + "agent.history.allProviders": "All providers", "agent.history.conversations": "{count} conversations", "agent.history.copied": "Session ID copied", "agent.history.copyId": "Copy session ID", @@ -150,6 +151,8 @@ export const sharedCatalogs = { "agent.history.messages": "{count} messages", "agent.history.noMatch": "No matching conversations", "agent.history.noMatchHint": "Try another title or session ID.", + "agent.history.provider": "Conversation provider", + "agent.history.providerHint": "Try another search or provider filter.", "agent.history.refresh": "Refresh history", "agent.history.remove": "Remove from history", "agent.history.removeConfirm": "Remove {count} conversation(s) from history? You can restore them from Removed conversations. The Agent's original records will be kept.", @@ -166,6 +169,7 @@ export const sharedCatalogs = { "agent.history.thinking": "Thinking", "agent.history.title": "History ({count})", "agent.history.tool": "Tool", + "agent.history.unknownProvider": "Unknown provider", "agent.history.you": "You", "agent.notice.dismiss": "Dismiss notification", "agent.permission.deny": "Deny", @@ -5136,6 +5140,7 @@ export const sharedCatalogs = { "agent.hero.choose": "选择一个 Agent 开始", "agent.hero.sendTo": "向 {name} 发送消息", "agent.history.addFavorite": "加入收藏", + "agent.history.allProviders": "全部供应商", "agent.history.conversations": "{count} 个会话", "agent.history.copied": "已复制会话 ID", "agent.history.copyId": "复制会话 ID", @@ -5156,6 +5161,8 @@ export const sharedCatalogs = { "agent.history.messages": "{count} 条消息", "agent.history.noMatch": "没有匹配的会话", "agent.history.noMatchHint": "试试其他标题或会话 ID。", + "agent.history.provider": "对话供应商", + "agent.history.providerHint": "试试其他搜索条件或供应商筛选。", "agent.history.refresh": "刷新历史", "agent.history.remove": "从历史中移除", "agent.history.removeConfirm": "从历史中移除 {count} 个会话?你可以在“已移除的会话”里恢复它们。Agent 的原始记录会保留。", @@ -5172,6 +5179,7 @@ export const sharedCatalogs = { "agent.history.thinking": "思考", "agent.history.title": "历史({count})", "agent.history.tool": "工具", + "agent.history.unknownProvider": "未知供应商", "agent.history.you": "你", "agent.notice.dismiss": "关闭通知", "agent.permission.deny": "拒绝", From 705ac696effffd9f5bdc5622fcabc232cda07de3 Mon Sep 17 00:00:00 2001 From: Xiaoyumuxi <23722032@bjtu.edu.cn> Date: Sun, 1 Nov 2026 16:09:35 +0800 Subject: [PATCH 21/27] =?UTF-8?q?feat(macos):=20=E5=BD=A9=E8=89=B2=20LSP?= =?UTF-8?q?=20=E7=8A=B6=E6=80=81=E8=8F=9C=E5=8D=95=E4=B8=8E=E6=99=AE?= =?UTF-8?q?=E9=80=9A=E6=97=A5=E5=BF=97=E6=A0=87=E7=AD=BE=E9=A1=B5=20(#1631?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(macos): 增加彩色 LSP 状态菜单与普通日志标签页 * fix(macos): LSP 入口常驻并仅由启用插件注入服务器 * fix(lsp): 等待重启关闭完成并保留局部索引重置状态 --- ...guage-tooling-and-lsp-runtime-ownership.md | 49 ++ .../2026-10-12-editor-tab-split-docking.md | 4 + macos/Resources/en.lproj/Localizable.strings | 34 ++ .../zh-Hans.lproj/Localizable.strings | 34 ++ .../Application/Composition/AppServices.swift | 3 + .../Features/EditorSessionCoordinator.swift | 10 +- .../Features/EditorTabOrderFeatureModel.swift | 2 +- .../LSPControlCenterPresentation.swift | 62 +++ .../Features/LanguageServerLogsModel.swift | 57 +++ .../LanguageToolingFeatureModel.swift | 83 ++++ .../AppModel/AppModel+FeatureState.swift | 1 + .../Models/AppModel/AppModel+JavaIndex.swift | 2 +- .../AppModel+LanguageServerRuntime.swift | 196 +++++++- .../Models/AppModel/AppModel+Media.swift | 2 + .../Models/AppModel/AppModel+Terminal.swift | 1 + .../AppModel/AppModel+WorkbenchClose.swift | 5 + .../Lithe/Models/AppModel/AppModel.swift | 157 +----- .../Lithe/Models/Editor/EditorTabItem.swift | 1 + .../Platform/MacOS/MacServiceContainer.swift | 3 + .../MacOS/Plugins/MacPluginManager.swift | 48 ++ .../Lithe/Views/Editor/EditorAreaView.swift | 35 +- .../Views/Language/LSPControlCenterView.swift | 9 +- .../Language/LanguageServerLogsView.swift | 100 ++++ .../Workbench/LanguageServerStatusView.swift | 112 +++++ .../Lithe/Views/Workbench/WorkbenchView.swift | 2 + .../Language/LanguageToolingContracts.swift | 15 + .../Runtime/LanguageServerSession.swift | 59 ++- .../LanguageToolingSessionManager.swift | 61 ++- .../LanguageServerStatusTests.swift | 453 ++++++++++++++++++ .../MacBuildProviderSessionsTests.swift | 31 +- .../Tests/LitheTests/PluginManagerTests.swift | 52 ++ shared/i18n/locales/en-US.json | 17 + shared/i18n/locales/zh-CN.json | 17 + shared/i18n/messages.json | 187 ++++++++ .../features/lsp-status-logs.json | 34 ++ 35 files changed, 1763 insertions(+), 175 deletions(-) create mode 100644 macos/Sources/Lithe/Application/Features/LanguageServerLogsModel.swift create mode 100644 macos/Sources/Lithe/Views/Language/LanguageServerLogsView.swift create mode 100644 macos/Sources/Lithe/Views/Workbench/LanguageServerStatusView.swift create mode 100644 macos/Tests/LitheTests/LanguageServerStatusTests.swift create mode 100644 shared/platform-feature-matrix/features/lsp-status-logs.json diff --git a/.agents/notes/implemented/architecture/2026-09-13-language-tooling-and-lsp-runtime-ownership.md b/.agents/notes/implemented/architecture/2026-09-13-language-tooling-and-lsp-runtime-ownership.md index cd1531cb8b..90755ec979 100644 --- a/.agents/notes/implemented/architecture/2026-09-13-language-tooling-and-lsp-runtime-ownership.md +++ b/.agents/notes/implemented/architecture/2026-09-13-language-tooling-and-lsp-runtime-ownership.md @@ -36,6 +36,49 @@ ## 决策 +### 状态栏只投影会话,日志面板不接管协议 + +macOS 的 LSP 入口始终保留,即使没有源文件、可选语言模块尚未激活或没有运行会话。 +列表只能来自平台插件管理器中已接受、已注册且当前启用的插件的语言服务器声明; +内置但作为可管理插件注册的语言服务也必须通过同一个模块启用检查,不能默认列出。 +宿主内置语言目录、文件扩展名识别和工具候选不等于服务器注册,不能填充此列表。 +禁用、隔离、安全模式抑制、等待首次重启注册或卸载的插件不贡献行。 + +名称复用现有服务器可执行名字段。插件直接声明 packaged/systemCommand 时取其 +`executableNames`;runtime 启动不能把 `java` 或 `node` 当服务器名,改读该插件 +languageID 对应描述元数据已有的 `languageServerLaunch.executableNames`(例如 jdtls)。 +元数据只补名称,不能绕过已启用插件注册来新增行。没有这个字段时直接显示插件 ID, +不回退语言名、插件展示名或服务器自报名称;不新增清单字段、版本或工具名映射。 +状态与版本继续由现有会话投影,代码诊断不改变服务器状态,不按当前文档类型过滤。 +空列表仍提供日志和设置入口;批量操作只针对已有会话,不因打开菜单启动服务器。 +颜色使用现有主题的成功、强调、警告和错误色,与 LSP 设置页一致。 + +单个或全部服务器的停止与重启只影响当前会话,不改工作区启用偏好。停止同时 +使该提供方已排队的激活请求失效;下一次打开、切换或编辑匹配文档仍可按需启动。 +专属准备任务通过在依赖组装处登记的取消回调结束,通用状态菜单不按语言名称分支。 +重启先发起停止,等待旧进程的终止事件及异步资源释放,再重新同步匹配的打开文档; +没有打开文档时也重启同一个预热提供方,不把“重启”静默变成“停止”。等待期间保留 +`.stopping` 状态和提供方的占位,文档激活不能另起替代进程。停止完成等待有本地期限; +超时返回失败并保留占位,不冒险与旧 JDT 工作区目录锁重叠。等待期间的再次停止、 +工作区替换或停用会撤销重启意图,旧关闭完成不能复活服务器。异步/远程启动在取消后 +才返回时,同样先停止并销毁该迟到会话,再释放包快照。 + +重建 Java 索引只重置 Java 的应用状态,不调用工作区整体重置。其他语言服务的 +运行投影、日志选择及订阅必须保留;不能清空被 `removeDuplicates` 去重的共享投影后, +指望日志或无变化的状态通知重新填回。 + +“查看日志”打开或聚焦普通编辑器标签页中的 LSP 日志,不新增底部工具窗口。 +日志标签复用混合标签顺序、拖动分组、选择和关闭机制;切换服务器仍使用同一标签。它直接观察现有的最多 100 条会话事件 +和服务器输出,按提供方与最低级别筛选;日志更新不经整个 AppModel 广播。 +“清空视图”只记住所选提供方当前可见缓冲条目的身份,不删除持久诊断日志, +也不影响其他提供方。标记随缓冲淘汰,不建立另一个无界日志存储。 + +正确做法是按当前会话事件显示真实内容。不要在 Swift 再实现 JSON-RPC(语言服务器 +使用的请求响应协议)抓包器,或把现有文本日志复制成 Server Trace、RPC Messages +三个假通道。当前 Core 没有提供原始跟踪/消息采集,日志标签的工具栏明确提示不可用; +将来确需采集时,应在 Core 既有协议所有者处设计显式启用、脱敏和预算,再扩展契约。 +本次没有新缓存目录、下载或安装资源写入,运行时只读发行基线不变。 + LSP 子进程、stdio、JSON-RPC 状态机、文档版本、请求 deadline、诊断和 结果归一化统一收归 Rust Core([`rust/lithe-core/src/lsp/`](../../../../rust/lithe-core/src/lsp/)), 平台 adapter 只负责可执行文件与运行环境发现。Swift 只保留 UI 投影和 @@ -295,6 +338,12 @@ capability 为准。 ## 验证 +macOS 状态栏投影、停止/重启的偏好边界、过期激活身份、按服务器过滤与清空由 +`macos/Tests/LitheTests/LanguageServerStatusTests.swift` 覆盖。使用 +`./.agents/skills/write-stable-tests/scripts/test-stability-macos.sh -- --filter LanguageServerStatusTests` +记录逐项计时,并运行 `./scripts/macos/verify/verify-runtime-bundle-immutability.sh`。 +这些组件回归不替代真实多语言服务、明暗主题及编辑器标签交互验收。 + 本次等待策略由 `jdt_progress.rs` 的受控时钟测试和 `engine.rs` 的模拟服务测试 覆盖:45 秒静默仍可就绪、警告去重、变化后再次警告、持续进展也不能越过总期限。 共享示例位于 `shared/fixtures/lsp/jdt-readiness-v1.json`。Windows 的 diff --git a/.agents/notes/implemented/architecture/2026-10-12-editor-tab-split-docking.md b/.agents/notes/implemented/architecture/2026-10-12-editor-tab-split-docking.md index f936eae464..bafa911043 100644 --- a/.agents/notes/implemented/architecture/2026-10-12-editor-tab-split-docking.md +++ b/.agents/notes/implemented/architecture/2026-10-12-editor-tab-split-docking.md @@ -24,6 +24,10 @@ Git 的工作区、工作树、目录、分支、历史提交和 Stash/Shelf 比 关闭或移走最后一个标签后合并空组;新标签进入当前聚焦的组。文件和会话生命周期不交给布局树。 分隔器继续使用 `LitheSplitPaneView`,尺寸变化留在局部视图,只在释放后提交比例。 分组是当前项目会话状态,本次不增加重启恢复编辑分屏或跨窗口传输。 +LSP 日志同样是普通编辑器标签,不登记底部工具窗口。单个工作区只打开一个日志标签, +再次查看另一服务器时复用标签并更新筛选;标签可参与重排和分组。日志不拥有文件缓冲区, +选择它应清除活动文件/媒体/终端投影,关闭后通过混合标签选择恢复原内容,不能关闭未保存文件。 +文件通过功能模型直接打开时,也必须让日志标签让出活动选择;工作区重置移除日志标签。 与数据库 PR #17 集成后,数据库标签继续使用其共享工作区和查询状态,统一保留在同一个编辑分组,只允许组内重排;不能直接开放跨组移动,否则两个分组会显示同一数据库上下文。数据库工具窗口及 Services 工具窗口仍支持停靠分组。 ### Git Diff 也属于普通编辑标签 diff --git a/macos/Resources/en.lproj/Localizable.strings b/macos/Resources/en.lproj/Localizable.strings index f816d183ab..3ff8fbb530 100644 --- a/macos/Resources/en.lproj/Localizable.strings +++ b/macos/Resources/en.lproj/Localizable.strings @@ -691,6 +691,7 @@ "Clear Logs" = "Clear Logs"; "Clear Override" = "Clear Override"; "Clear Project History…" = "Clear Project History…"; +"Clear View" = "Clear View"; "Clear branch filter" = "Clear branch filter"; "Clear build output" = "Clear build output"; "Clear collected logs?" = "Clear collected logs?"; @@ -698,6 +699,7 @@ "Clear date filter" = "Clear date filter"; "Clear debug output" = "Clear debug output"; "Clear log search" = "Clear log search"; +"Clear only the selected server's visible logs. Collected diagnostic logs are kept." = "Clear only the selected server's visible logs. Collected diagnostic logs are kept."; "Clear path filter" = "Clear path filter"; "Clear run output" = "Clear run output"; "Clear search" = "Clear search"; @@ -1801,6 +1803,7 @@ "Increase Font Size" = "Increase Font Size"; "Indentation" = "Indentation"; "Index and working tree" = "Index and working tree"; +"Info" = "Info"; "Information" = "Information"; "Inherit" = "Inherit"; "Inherit project JDK" = "Inherit project JDK"; @@ -1950,10 +1953,13 @@ "Keymap…" = "Keymap…"; "Korean characters" = "Korean characters"; "Kotlin Support" = "Kotlin Support"; +"LSP" = "LSP"; +"LSP Logs" = "LSP Logs"; "Labels" = "Labels"; "Labels and assignees" = "Labels and assignees"; "Language" = "Language"; "Language Server" = "Language Server"; +"Language Server Settings..." = "Language Server Settings..."; "Language Service" = "Language Service"; "Language Services" = "Language Services"; "Language edit targets a file outside the workspace." = "Language edit targets a file outside the workspace."; @@ -2458,6 +2464,7 @@ "No matching commits in the loaded history." = "No matching commits in the loaded history."; "No matching conversations" = "No matching conversations"; "No matching items" = "No matching items"; +"No matching language server logs" = "No matching language server logs"; "No matching logs" = "No matching logs"; "No matching messages" = "No matching messages"; "No matching plugins" = "No matching plugins"; @@ -2488,6 +2495,7 @@ "No pull requests match the selected state." = "No pull requests match the selected state."; "No recent progress has been received. The task is still active." = "No recent progress has been received. The task is still active."; "No recent projects" = "No recent projects"; +"No registered language servers" = "No registered language servers"; "No release is available yet" = "No release is available yet"; "No remembered choices. Check “Remember my choice” in the quit dialog to skip the question for a kind of service next time." = "No remembered choices. Check “Remember my choice” in the quit dialog to skip the question for a kind of service next time."; "No remote" = "No remote"; @@ -2547,6 +2555,7 @@ "Not running" = "Not running"; "Not selected" = "Not selected"; "Not set" = "Not set"; +"Not started" = "Not started"; "Not supported on %@ yet." = "Not supported on %@ yet."; "Not tested" = "Not tested"; "Not used" = "Not used"; @@ -3186,12 +3195,14 @@ "Response" = "Response"; "Responses API" = "Responses API"; "Restart" = "Restart"; +"Restart All Servers" = "Restart All Servers"; "Restart Language Servers" = "Restart Language Servers"; "Restart Lithe" = "Restart Lithe"; "Restart Lithe to finish uninstalling %@, then install the community plugin %@ from the Marketplace." = "Restart Lithe to finish uninstalling %@, then install the community plugin %@ from the Marketplace."; "Restart Lithe to finish uninstalling %@, then install this plugin." = "Restart Lithe to finish uninstalling %@, then install this plugin."; "Restart Lithe to load the updated page." = "Restart Lithe to load the updated page."; "Restart Lithe to use %@." = "Restart Lithe to use %@."; +"Restart Server" = "Restart Server"; "Restart required" = "Restart required"; "Restart run" = "Restart run"; "Restart service" = "Restart service"; @@ -3465,6 +3476,7 @@ "Sensitive files are not sent to an AI provider." = "Sensitive files are not sent to an AI provider."; "Separate arguments with spaces; quote an argument that contains spaces." = "Separate arguments with spaces; quote an argument that contains spaces."; "Server" = "Server"; +"Server Logs" = "Server Logs"; "Server URL" = "Server URL"; "Server address" = "Server address"; "Server default" = "Server default"; @@ -3578,6 +3590,7 @@ "Showing available matches." = "Showing available matches."; "Showing the previous Java entries while the Java language service prepares the project." = "Showing the previous Java entries while the Java language service prepares the project."; "Shown across the entire workbench, including toolbars, project tree, editor, tabs, terminals, and status bar." = "Shown across the entire workbench, including toolbars, project tree, editor, tabs, terminals, and status bar."; +"Shows session events and server output. Server Trace and RPC message capture are not available." = "Shows session events and server output. Server Trace and RPC message capture are not available."; "Side-by-side" = "Side-by-side"; "Side-by-side view" = "Side-by-side view"; "Sign in again" = "Sign in again"; @@ -3708,6 +3721,7 @@ "Starting commit (optional)" = "Starting commit (optional)"; "Starting module..." = "Starting module..."; "Starting the Agent…" = "Starting the Agent…"; +"Starts again when a matching document is opened or edited." = "Starts again when a matching document is opened or edited."; "Starts no programs." = "Starts no programs."; "Starts on demand when a matching file is opened" = "Starts on demand when a matching file is opened"; "Stash" = "Stash"; @@ -3732,6 +3746,7 @@ "Sticky scroll" = "Sticky scroll"; "Stop" = "Stop"; "Stop %@" = "Stop %@"; +"Stop All Servers" = "Stop All Servers"; "Stop Camera" = "Stop Camera"; "Stop Debug" = "Stop Debug"; "Stop Loading" = "Stop Loading"; @@ -3739,6 +3754,7 @@ "Stop Microphone" = "Stop Microphone"; "Stop Recording" = "Stop Recording"; "Stop Run" = "Stop Run"; +"Stop Server" = "Stop Server"; "Stop Tracking Branch" = "Stop Tracking Branch"; "Stop active execution" = "Stop active execution"; "Stop all services" = "Stop all services"; @@ -4019,6 +4035,7 @@ "The interface language changes immediately. English is the default." = "The interface language changes immediately. English is the default."; "The item can be recovered from the macOS Trash." = "The item can be recovered from the macOS Trash."; "The language server could not apply this setting. Restart it to use the new value." = "The language server could not apply this setting. Restart it to use the new value."; +"The language server is still stopping. Try again after it has stopped." = "The language server is still stopping. Try again after it has stopped."; "The language server this build system uses is not available. Open a file of the language and try again." = "The language server this build system uses is not available. Open a file of the language and try again."; "The language service that hosts the debug adapter is unavailable." = "The language service that hosts the debug adapter is unavailable."; "The latest stable release will be downloaded in full and replace this AutoBuild after you confirm installation. Projects and settings are kept, but AutoBuild-only settings may not work in the stable release." = "The latest stable release will be downloaded in full and replace this AutoBuild after you confirm installation. Projects and settings are kept, but AutoBuild-only settings may not work in the stable release."; @@ -5378,6 +5395,7 @@ "native.clearDebugOutput" = "Clear debug output"; "native.clearGitConsole" = "Clear Git console"; "native.clearLogSearch" = "Clear log search"; +"native.clearLogView" = "Clear View"; "native.clearLogs" = "Clear Logs"; "native.clearOverride" = "Clear Override"; "native.clearPathFilter" = "Clear path filter"; @@ -6738,6 +6756,8 @@ "native.languageServerReturnedAnInvalidTextRange" = "Language server returned an invalid text range."; "native.languageServerReturnedOverlappingTextEdits" = "Language server returned overlapping text edits."; "native.languageServerSessionStoppedBeforeTheRequestCompleted" = "Language server session stopped before the request completed."; +"native.languageServerSettingsAction" = "Language Server Settings..."; +"native.languageServerStillStopping" = "The language server is still stopping. Try again after it has stopped."; "native.languageServerToolConfigurationChanged" = "Language server tool configuration changed"; "native.languageServers" = "Language servers"; "native.languageService" = "Language Service"; @@ -6951,6 +6971,7 @@ "native.log.variant2" = "Log"; "native.logDirectory" = "Log directory"; "native.logFilter" = "Log filter"; +"native.logInfoLevel" = "Info"; "native.logLevel" = "Log level"; "native.logLocations" = "Log locations"; "native.logMessage" = "Log message"; @@ -6966,6 +6987,13 @@ "native.low" = "Low"; "native.lowEffortAndASmallOutputLimitAreRecommendedForFastCommitMessageGeneration" = "Low effort and a small output limit are recommended for fast commit-message generation."; "native.lowRecommended" = "Low (recommended)"; +"native.lspAvailableLogChannels" = "Shows session events and server output. Server Trace and RPC message capture are not available."; +"native.lspClearViewHint" = "Clear only the selected server's visible logs. Collected diagnostic logs are kept."; +"native.lspLogsTitle" = "LSP Logs"; +"native.lspNotStarted" = "Not started"; +"native.lspServerLogs" = "Server Logs"; +"native.lspStatusLabel" = "LSP"; +"native.lspStopOnDemandHint" = "Starts again when a matching document is opened or edited."; "native.luaSupport" = "Lua Support"; "native.macosCouldNotPrepareTheUpdateDiskImageDownloadTheReleaseManuallyAndTryAgain" = "macOS could not prepare the update disk image. Download the release manually and try again."; "native.macosCouldNotPrepareTheUpdateDiskImageOpenTheReleasePageAndInstallItManually" = "macOS could not prepare the update disk image. Open the Release page and install it manually."; @@ -7275,6 +7303,7 @@ "native.noMatchingConversations" = "No matching conversations"; "native.noMatchingHooks" = "No matching Hooks."; "native.noMatchingItems" = "No matching items"; +"native.noMatchingLanguageServerLogs" = "No matching language server logs"; "native.noMatchingLogs" = "No matching logs"; "native.noMatchingMcpServers" = "No matching MCP servers"; "native.noMatchingMessages" = "No matching messages"; @@ -7313,6 +7342,7 @@ "native.noPullRequestsMatchTheSelectedState" = "No pull requests match the selected state."; "native.noRecentProgressHasBeenReceivedTheTaskIsStillActive" = "No recent progress has been received. The task is still active."; "native.noRecentProjects" = "No recent projects"; +"native.noRegisteredLanguageServers" = "No registered language servers"; "native.noReleaseIsAvailableYet" = "No release is available yet"; "native.noRememberedChoicesCheckRememberMyChoiceInTheQuitDialogToSkipTheQuestionForAKi279db9aaf7" = "No remembered choices. Check “Remember my choice” in the quit dialog to skip the question for a kind of service next time."; "native.noRemote" = "No remote"; @@ -7998,6 +8028,7 @@ "native.response" = "Response"; "native.responsesAPI" = "Responses API"; "native.restart" = "Restart"; +"native.restartAllServers" = "Restart All Servers"; "native.restartLanguageServers" = "Restart Language Servers"; "native.restartLithe" = "Restart Lithe"; "native.restartLitheToFinishUninstallingThenInstallTheCommunityPluginFromTheMarketplace" = "Restart Lithe to finish uninstalling %1$@, then install the community plugin %2$@ from the Marketplace."; @@ -8006,6 +8037,7 @@ "native.restartLitheToUseArg1" = "Restart Lithe to use %1$@."; "native.restartRequired" = "Restart required"; "native.restartRun" = "Restart run"; +"native.restartServer" = "Restart Server"; "native.restartService" = "Restart service"; "native.restore" = "Restore"; "native.restoreAllDefaults" = "Restore All Defaults"; @@ -8516,6 +8548,7 @@ "native.stepOut" = "Step out"; "native.stepOver" = "Step over"; "native.stopActiveExecution" = "Stop active execution"; +"native.stopAllServers" = "Stop All Servers"; "native.stopAllServices" = "Stop all services"; "native.stopAndClose" = "Stop and Close"; "native.stopAndQuit" = "Stop and Quit"; @@ -8532,6 +8565,7 @@ "native.stopRun" = "Stop Run"; "native.stopRun.variant2" = "Stop run"; "native.stopSelected" = "Stop selected"; +"native.stopServer" = "Stop Server"; "native.stopService" = "Stop service"; "native.stopSessionNamed" = "Stop %1$@"; "native.stopTestRun" = "Stop test run"; diff --git a/macos/Resources/zh-Hans.lproj/Localizable.strings b/macos/Resources/zh-Hans.lproj/Localizable.strings index 17464dff41..f682b3738c 100644 --- a/macos/Resources/zh-Hans.lproj/Localizable.strings +++ b/macos/Resources/zh-Hans.lproj/Localizable.strings @@ -691,6 +691,7 @@ "Clear Logs" = "清空日志"; "Clear Override" = "清除覆盖"; "Clear Project History…" = "清空项目历史…"; +"Clear View" = "清空视图"; "Clear branch filter" = "清除分支筛选"; "Clear build output" = "清除构建输出"; "Clear collected logs?" = "清空已收集的日志?"; @@ -698,6 +699,7 @@ "Clear date filter" = "清除日期筛选"; "Clear debug output" = "清除调试输出"; "Clear log search" = "清除日志搜索"; +"Clear only the selected server's visible logs. Collected diagnostic logs are kept." = "仅清空所选服务器的可见日志,保留已采集的诊断日志。"; "Clear path filter" = "清除路径筛选"; "Clear run output" = "清除运行输出"; "Clear search" = "清除搜索"; @@ -1801,6 +1803,7 @@ "Increase Font Size" = "增大字号"; "Indentation" = "缩进"; "Index and working tree" = "暂存区和工作树"; +"Info" = "信息"; "Information" = "信息"; "Inherit" = "继承"; "Inherit project JDK" = "继承项目 JDK"; @@ -1950,10 +1953,13 @@ "Keymap…" = "快捷键…"; "Korean characters" = "韩文字符"; "Kotlin Support" = "Kotlin 支持"; +"LSP" = "LSP"; +"LSP Logs" = "LSP 日志"; "Labels" = "标签"; "Labels and assignees" = "标签和负责人"; "Language" = "语言"; "Language Server" = "语言服务器"; +"Language Server Settings..." = "语言服务器设置..."; "Language Service" = "语言服务"; "Language Services" = "语言服务"; "Language edit targets a file outside the workspace." = "语言编辑指向工作区之外的文件。"; @@ -2458,6 +2464,7 @@ "No matching commits in the loaded history." = "已加载的历史中没有匹配的提交。"; "No matching conversations" = "没有匹配的会话"; "No matching items" = "没有匹配项"; +"No matching language server logs" = "没有匹配的语言服务器日志"; "No matching logs" = "没有匹配的日志"; "No matching messages" = "没有匹配的消息"; "No matching plugins" = "没有匹配的插件"; @@ -2488,6 +2495,7 @@ "No pull requests match the selected state." = "当前状态下没有拉取请求。"; "No recent progress has been received. The task is still active." = "暂未收到新的进度,任务仍在进行。"; "No recent projects" = "没有最近项目"; +"No registered language servers" = "未注册语言服务器"; "No release is available yet" = "暂时没有可用版本"; "No remembered choices. Check “Remember my choice” in the quit dialog to skip the question for a kind of service next time." = "暂无已记住的选择。在退出对话框中勾选“记住对这类服务的选择”后,下次遇到同类服务就不再询问。"; "No remote" = "无远程仓库"; @@ -2547,6 +2555,7 @@ "Not running" = "未运行"; "Not selected" = "未勾选"; "Not set" = "未设置"; +"Not started" = "未启动"; "Not supported on %@ yet." = "暂不支持 %@ 平台"; "Not tested" = "未测试"; "Not used" = "不使用"; @@ -3186,12 +3195,14 @@ "Response" = "回复"; "Responses API" = "Responses API"; "Restart" = "重新启动"; +"Restart All Servers" = "重启所有服务器"; "Restart Language Servers" = "重启语言服务器"; "Restart Lithe" = "重启 Lithe"; "Restart Lithe to finish uninstalling %@, then install the community plugin %@ from the Marketplace." = "请重启 Lithe 以完成 %@ 的卸载,然后从插件市场安装社区插件 %@。"; "Restart Lithe to finish uninstalling %@, then install this plugin." = "请重启 Lithe 以完成 %@ 的卸载,然后再安装此插件。"; "Restart Lithe to load the updated page." = "重启 Lithe 以加载更新后的页面。"; "Restart Lithe to use %@." = "重启 Lithe 后即可使用 %@。"; +"Restart Server" = "重启服务器"; "Restart required" = "需要重启 Lithe"; "Restart run" = "重新运行"; "Restart service" = "重启服务"; @@ -3465,6 +3476,7 @@ "Sensitive files are not sent to an AI provider." = "敏感文件不会发送给 AI 服务商。"; "Separate arguments with spaces; quote an argument that contains spaces." = "参数之间用空格分隔;包含空格的参数请加引号。"; "Server" = "服务器"; +"Server Logs" = "服务器日志"; "Server URL" = "服务器 URL"; "Server address" = "服务器地址"; "Server default" = "服务器默认"; @@ -3578,6 +3590,7 @@ "Showing available matches." = "仍显示可用的匹配项。"; "Showing the previous Java entries while the Java language service prepares the project." = "Java 语言服务正在准备项目,暂时显示上次的 Java 入口。"; "Shown across the entire workbench, including toolbars, project tree, editor, tabs, terminals, and status bar." = "显示在整个工作台内,包括工具栏、项目文件树、编辑区、标签栏、终端和状态栏。"; +"Shows session events and server output. Server Trace and RPC message capture are not available." = "显示会话事件和服务器输出。暂不支持服务器跟踪和 RPC 消息采集。"; "Side-by-side" = "并排"; "Side-by-side view" = "并排视图"; "Sign in again" = "重新登录"; @@ -3708,6 +3721,7 @@ "Starting commit (optional)" = "起始提交(可选)"; "Starting module..." = "正在启动模块…"; "Starting the Agent…" = "正在启动 Agent…"; +"Starts again when a matching document is opened or edited." = "打开、切换到或编辑匹配的文档时将再次启动。"; "Starts no programs." = "不启动任何程序。"; "Starts on demand when a matching file is opened" = "按需启动,打开对应文件时运行"; "Stash" = "暂存"; @@ -3732,6 +3746,7 @@ "Sticky scroll" = "固定显示作用域标题"; "Stop" = "停止"; "Stop %@" = "停止 %@"; +"Stop All Servers" = "停止所有服务器"; "Stop Camera" = "停止摄像头"; "Stop Debug" = "停止调试"; "Stop Loading" = "停止加载"; @@ -3739,6 +3754,7 @@ "Stop Microphone" = "停止麦克风"; "Stop Recording" = "停止录制"; "Stop Run" = "停止运行"; +"Stop Server" = "停止服务器"; "Stop Tracking Branch" = "停止跟踪分支"; "Stop active execution" = "停止当前执行"; "Stop all services" = "停止所有服务"; @@ -4019,6 +4035,7 @@ "The interface language changes immediately. English is the default." = "界面语言会立即生效。默认语言为英文。"; "The item can be recovered from the macOS Trash." = "可以从 macOS 废纸篓中恢复此项目。"; "The language server could not apply this setting. Restart it to use the new value." = "语言服务器无法应用此设置。请重启它以使用新值。"; +"The language server is still stopping. Try again after it has stopped." = "语言服务器仍在停止。请在停止完成后重试。"; "The language server this build system uses is not available. Open a file of the language and try again." = "此构建系统使用的语言服务器不可用。请打开该语言的文件后重试。"; "The language service that hosts the debug adapter is unavailable." = "承载调试适配器的语言服务不可用。"; "The latest stable release will be downloaded in full and replace this AutoBuild after you confirm installation. Projects and settings are kept, but AutoBuild-only settings may not work in the stable release." = "将全量下载最新正式版,在你确认安装后替换当前 AutoBuild。项目和设置会保留,但 AutoBuild 专有的设置可能无法在正式版中使用。"; @@ -5378,6 +5395,7 @@ "native.clearDebugOutput" = "清除调试输出"; "native.clearGitConsole" = "清空 Git 控制台"; "native.clearLogSearch" = "清除日志搜索"; +"native.clearLogView" = "清空视图"; "native.clearLogs" = "清空日志"; "native.clearOverride" = "清除覆盖"; "native.clearPathFilter" = "清除路径筛选"; @@ -6738,6 +6756,8 @@ "native.languageServerReturnedAnInvalidTextRange" = "语言服务器返回了无效的文本范围。"; "native.languageServerReturnedOverlappingTextEdits" = "语言服务器返回了重叠的文本编辑。"; "native.languageServerSessionStoppedBeforeTheRequestCompleted" = "语言服务器会话在请求完成前已停止。"; +"native.languageServerSettingsAction" = "语言服务器设置..."; +"native.languageServerStillStopping" = "语言服务器仍在停止。请在停止完成后重试。"; "native.languageServerToolConfigurationChanged" = "语言服务器工具配置已更改"; "native.languageServers" = "语言服务器"; "native.languageService" = "语言服务"; @@ -6951,6 +6971,7 @@ "native.log.variant2" = "日志"; "native.logDirectory" = "日志目录"; "native.logFilter" = "日志筛选"; +"native.logInfoLevel" = "信息"; "native.logLevel" = "日志级别"; "native.logLocations" = "日志位置"; "native.logMessage" = "日志消息"; @@ -6966,6 +6987,13 @@ "native.low" = "低"; "native.lowEffortAndASmallOutputLimitAreRecommendedForFastCommitMessageGeneration" = "为了快速生成提交信息,建议使用低推理强度和较小的输出限制。"; "native.lowRecommended" = "低(推荐)"; +"native.lspAvailableLogChannels" = "显示会话事件和服务器输出。暂不支持服务器跟踪和 RPC 消息采集。"; +"native.lspClearViewHint" = "仅清空所选服务器的可见日志,保留已采集的诊断日志。"; +"native.lspLogsTitle" = "LSP 日志"; +"native.lspNotStarted" = "未启动"; +"native.lspServerLogs" = "服务器日志"; +"native.lspStatusLabel" = "LSP"; +"native.lspStopOnDemandHint" = "打开、切换到或编辑匹配的文档时将再次启动。"; "native.luaSupport" = "Lua 支持"; "native.macosCouldNotPrepareTheUpdateDiskImageDownloadTheReleaseManuallyAndTryAgain" = "macOS 无法准备更新磁盘映像,请手动下载版本后重试。"; "native.macosCouldNotPrepareTheUpdateDiskImageOpenTheReleasePageAndInstallItManually" = "macOS 无法准备更新磁盘映像。请打开 Release 页面手动安装。"; @@ -7275,6 +7303,7 @@ "native.noMatchingConversations" = "没有匹配的会话"; "native.noMatchingHooks" = "没有匹配的 Hook。"; "native.noMatchingItems" = "没有匹配项"; +"native.noMatchingLanguageServerLogs" = "没有匹配的语言服务器日志"; "native.noMatchingLogs" = "没有匹配的日志"; "native.noMatchingMcpServers" = "没有匹配的 MCP 服务器"; "native.noMatchingMessages" = "没有匹配的消息"; @@ -7313,6 +7342,7 @@ "native.noPullRequestsMatchTheSelectedState" = "当前状态下没有拉取请求。"; "native.noRecentProgressHasBeenReceivedTheTaskIsStillActive" = "暂未收到新的进度,任务仍在进行。"; "native.noRecentProjects" = "没有最近项目"; +"native.noRegisteredLanguageServers" = "未注册语言服务器"; "native.noReleaseIsAvailableYet" = "暂时没有可用版本"; "native.noRememberedChoicesCheckRememberMyChoiceInTheQuitDialogToSkipTheQuestionForAKi279db9aaf7" = "暂无已记住的选择。在退出对话框中勾选“记住对这类服务的选择”后,下次遇到同类服务就不再询问。"; "native.noRemote" = "无远程仓库"; @@ -7998,6 +8028,7 @@ "native.response" = "回复"; "native.responsesAPI" = "Responses API"; "native.restart" = "重新启动"; +"native.restartAllServers" = "重启所有服务器"; "native.restartLanguageServers" = "重启语言服务器"; "native.restartLithe" = "重启 Lithe"; "native.restartLitheToFinishUninstallingThenInstallTheCommunityPluginFromTheMarketplace" = "请重启 Lithe 以完成 %1$@ 的卸载,然后从插件市场安装社区插件 %2$@。"; @@ -8006,6 +8037,7 @@ "native.restartLitheToUseArg1" = "重启 Lithe 后即可使用 %1$@。"; "native.restartRequired" = "需要重启 Lithe"; "native.restartRun" = "重新运行"; +"native.restartServer" = "重启服务器"; "native.restartService" = "重启服务"; "native.restore" = "恢复"; "native.restoreAllDefaults" = "全部恢复默认"; @@ -8516,6 +8548,7 @@ "native.stepOut" = "单步跳出"; "native.stepOver" = "单步跳过"; "native.stopActiveExecution" = "停止当前执行"; +"native.stopAllServers" = "停止所有服务器"; "native.stopAllServices" = "停止所有服务"; "native.stopAndClose" = "停止并关闭"; "native.stopAndQuit" = "停止并退出"; @@ -8532,6 +8565,7 @@ "native.stopRun" = "停止运行"; "native.stopRun.variant2" = "停止运行"; "native.stopSelected" = "停止所选配置"; +"native.stopServer" = "停止服务器"; "native.stopService" = "停止服务"; "native.stopSessionNamed" = "停止 %1$@"; "native.stopTestRun" = "停止测试运行"; diff --git a/macos/Sources/Lithe/Application/Composition/AppServices.swift b/macos/Sources/Lithe/Application/Composition/AppServices.swift index 239ced2d76..a2835eef3e 100644 --- a/macos/Sources/Lithe/Application/Composition/AppServices.swift +++ b/macos/Sources/Lithe/Application/Composition/AppServices.swift @@ -28,6 +28,9 @@ final class AppServices { /// Installed plugins with their enabled state, for the New Project /// catalog and the plugins that provide a generator's requirements. var projectGeneratorSources: (@MainActor () -> [ProjectGeneratorPluginSource])? + /// Only enabled, registered plugins inject rows. Existing launch metadata + /// can supply names, but never creates rows or triggers executable discovery. + var languageServerRegistrations: (@MainActor (LanguageProviderCatalog) -> [LanguageServerRegistration])? /// Gives build providers that share a language server the language /// sessions; `nil` when the platform starts no build providers. var connectBuildProviderLanguageSessions: ((@escaping @MainActor () -> LanguageToolingSessionManager?) -> Void)? diff --git a/macos/Sources/Lithe/Application/Features/EditorSessionCoordinator.swift b/macos/Sources/Lithe/Application/Features/EditorSessionCoordinator.swift index 3ba6e6ce5b..d835c96c36 100644 --- a/macos/Sources/Lithe/Application/Features/EditorSessionCoordinator.swift +++ b/macos/Sources/Lithe/Application/Features/EditorSessionCoordinator.swift @@ -6,6 +6,7 @@ import Foundation final class EditorSessionCoordinator { private let document: DocumentFeatureModel private let media: MediaDocumentFeatureModel + private let tabOrder: EditorTabOrderFeatureModel private var observations: [AnyCancellable] init( @@ -16,11 +17,15 @@ final class EditorSessionCoordinator { ) { self.document = document self.media = media + self.tabOrder = tabOrder observations = [ - document.$activeDocumentID.dropFirst().sink { [weak media, weak terminalPlacement] id in - guard id != nil else { return } + document.$activeDocumentID.dropFirst().sink { [weak media, weak terminalPlacement, weak tabOrder] id in + guard let id else { return } terminalPlacement?.activateDocument() media?.deactivate() + // File opens can select directly on DocumentFeatureModel rather + // than through AppModel. A utility tab must not mask that open. + if tabOrder?.focusedItem == .languageLogs { tabOrder?.focus(.document(id)) } }, document.$openDocuments.map { $0.map(\.id) }.removeDuplicates() .sink { [weak tabOrder] ids in @@ -34,6 +39,7 @@ final class EditorSessionCoordinator { } func resetContent() { + tabOrder.remove(.languageLogs) document.reset() media.reset() } diff --git a/macos/Sources/Lithe/Application/Features/EditorTabOrderFeatureModel.swift b/macos/Sources/Lithe/Application/Features/EditorTabOrderFeatureModel.swift index bb52448012..8b6e9b2e9e 100644 --- a/macos/Sources/Lithe/Application/Features/EditorTabOrderFeatureModel.swift +++ b/macos/Sources/Lithe/Application/Features/EditorTabOrderFeatureModel.swift @@ -256,7 +256,7 @@ final class EditorTabOrderFeatureModel: ObservableObject { reorderedExistingIDs.indices.contains(existingIndex) else { continue } next.append(.document(reorderedExistingIDs[existingIndex])) existingIndex += 1 - case .terminal, .media, .repositoryDiff, .agentConversation: + case .terminal, .media, .repositoryDiff, .agentConversation, .languageLogs: next.append(item) } } diff --git a/macos/Sources/Lithe/Application/Features/LSPControlCenterPresentation.swift b/macos/Sources/Lithe/Application/Features/LSPControlCenterPresentation.swift index 9155f417bd..80d84f91e1 100644 --- a/macos/Sources/Lithe/Application/Features/LSPControlCenterPresentation.swift +++ b/macos/Sources/Lithe/Application/Features/LSPControlCenterPresentation.swift @@ -10,6 +10,35 @@ enum LSPServerStatus: Equatable, Sendable { case error } +/// A projection of session state, never a second lifecycle owner. +struct LSPStatusBarServer: Identifiable, Equatable, Sendable { + let id: String + let displayName: String + let status: LSPServerStatus + let version: String? + + var canStop: Bool { status != .stopped && status != .disabled } +} + +/// An enabled plugin's server declaration. The language ID only routes existing +/// session controls; it never supplies the server's visible name. +struct LanguageServerRegistration: Equatable, Sendable { + let id: String + let pluginID: String + let executableNames: [String] + + init(id: String, pluginID: String, executableNames: [String] = []) { + self.id = id + self.pluginID = pluginID + self.executableNames = executableNames + } +} + +struct LanguageServerRuntimeSnapshot: Equatable { + var states: [String: LanguageServerSessionState] = [:] + var infos: [String: LanguageServerInfo] = [:] +} + enum LSPCapabilityPresentationState: Equatable, Sendable { case unknown case unsupported @@ -67,6 +96,39 @@ enum LSPControlCenterPresenter { return version } + static func statusBarServers( + registrations: [LanguageServerRegistration], + states: [String: LanguageServerSessionState], + infos: [String: LanguageServerInfo], + disabledProviderIDs: Set + ) -> [LSPStatusBarServer] { + registrations.map { registration in + let status = serverStatus( + isDisabled: disabledProviderIDs.contains(registration.id), + sessionState: states[registration.id] + ) + let executableName = registration.executableNames.lazy + .map { $0.trimmingCharacters(in: .whitespacesAndNewlines) } + .first { !$0.isEmpty } + return LSPStatusBarServer( + id: registration.id, + displayName: executableName ?? registration.pluginID, + status: status, + version: status == .active ? reportedServerVersion(infos[registration.id]) : nil + ) + }.sorted { + let order = $0.displayName.localizedStandardCompare($1.displayName) + return order == .orderedSame ? $0.id < $1.id : order == .orderedAscending + } + } + + /// A failed server must remain discoverable even when another is healthy. + static func aggregateStatus(_ servers: [LSPStatusBarServer]) -> LSPServerStatus { + [.error, .starting, .initializing, .stopping, .active, .stopped, .disabled].first { status in + servers.contains { $0.status == status } + } ?? .stopped + } + static func integrationState( isAvailable: Bool, isActive: Bool = false diff --git a/macos/Sources/Lithe/Application/Features/LanguageServerLogsModel.swift b/macos/Sources/Lithe/Application/Features/LanguageServerLogsModel.swift new file mode 100644 index 0000000000..dc134e2ae6 --- /dev/null +++ b/macos/Sources/Lithe/Application/Features/LanguageServerLogsModel.swift @@ -0,0 +1,57 @@ +import Combine +import Foundation +import LitheCoreContracts +import LitheLanguageIntelligenceModule + +/// Observes the session's bounded log buffer without relaying every log through AppModel. +@MainActor +final class LanguageServerLogsModel: ObservableObject { + enum MinimumLevel: CaseIterable { + case info, warning, error + + func includes(_ level: LanguageServerLogLevel) -> Bool { + switch self { + case .info: true + case .warning: level != .info + case .error: level == .error + } + } + } + + @Published var providerID = "" + @Published var minimumLevel: MinimumLevel = .info + @Published private(set) var entries: [LanguageServerLogEntry] = [] + @Published private var clearedIDs: Set = [] + private var observation: AnyCancellable? + + var visibleEntries: [LanguageServerLogEntry] { + entries.reversed().filter { + $0.providerID == providerID && minimumLevel.includes($0.level) && !clearedIDs.contains($0.id) + } + } + + func bind(_ sessions: LanguageToolingSessionManager) { + observation = sessions.$languageServerLogs.sink { [weak self] entries in + self?.replace(entries) + } + } + + func replace(_ entries: [LanguageServerLogEntry]) { + // The session retains at most 100 entries. Clearing is a presentation + // watermark, not deletion of persistent diagnostics or another server's logs. + let retainedIDs = Set(entries.map(\.id)) + clearedIDs.formIntersection(retainedIDs) + self.entries = entries + } + + func clear() { + clearedIDs.formUnion(entries.filter { $0.providerID == providerID }.map(\.id)) + } + + func reset() { + providerID = "" + minimumLevel = .info + entries = [] + clearedIDs = [] + } +} diff --git a/macos/Sources/Lithe/Application/Features/LanguageToolingFeatureModel.swift b/macos/Sources/Lithe/Application/Features/LanguageToolingFeatureModel.swift index caa9569bff..6be07e5df2 100644 --- a/macos/Sources/Lithe/Application/Features/LanguageToolingFeatureModel.swift +++ b/macos/Sources/Lithe/Application/Features/LanguageToolingFeatureModel.swift @@ -13,8 +13,11 @@ final class LanguageToolingFeatureModel: ObservableObject { @Published private(set) var catalogSnapshot: LanguageProviderCatalogSnapshot @Published private(set) var disabledProviderIDs: Set = [] @Published private(set) var projectPreparation: ProjectPreparationSnapshot? + @Published private(set) var serverRuntimeSnapshot = LanguageServerRuntimeSnapshot() let projectUsage = LSPProjectUsageModel() + let logs = LanguageServerLogsModel() private var preparationObservation: AnyCancellable? + private var statusObservation: AnyCancellable? private(set) var startupFailures: [String: String] = [:] private let catalogSource: any LanguageProviderCatalogSource @@ -24,6 +27,31 @@ final class LanguageToolingFeatureModel: ObservableObject { private var documentsProvider: (@MainActor () -> [EditorDocument])? private var activateDocument: (@MainActor (EditorDocument) -> Bool)? private var notify: (@MainActor (String) -> Void)? + private var preparationCancellations: [String: @MainActor () -> Void] = [:] + private var activationEpoch = UUID() + private var activationGenerations: [String: UUID] = [:] + private var restartTasks: [String: Task] = [:] + + deinit { restartTasks.values.forEach { $0.cancel() } } + + struct ActivationToken: Equatable { + let epoch: UUID + let generation: UUID? + } + + func activationToken(providerID: String) -> ActivationToken { + ActivationToken(epoch: activationEpoch, generation: activationGenerations[providerID]) + } + + func registerPreparationCancellation(providerID: String, cancel: @escaping @MainActor () -> Void) { + preparationCancellations[providerID] = cancel + } + + private func prepareToStop(providerID: String) { + restartTasks.removeValue(forKey: providerID)?.cancel() + activationGenerations[providerID] = UUID() + preparationCancellations[providerID]?() + } init( catalogSource: any LanguageProviderCatalogSource, @@ -55,16 +83,33 @@ final class LanguageToolingFeatureModel: ObservableObject { } func bindProjectPreparation(_ sessions: LanguageToolingSessionManager) { + logs.bind(sessions) + statusObservation = Publishers.CombineLatest(sessions.$languageServerStates, sessions.$languageServerInfos) + .map { LanguageServerRuntimeSnapshot(states: $0, infos: $1) } + .removeDuplicates().sink { [weak self] in self?.serverRuntimeSnapshot = $0 } preparationObservation = sessions.$projectPreparation.removeDuplicates().sink { [weak self] snapshot in self?.projectPreparation = snapshot } } func resetWorkspaceState() { + restartTasks.values.forEach { $0.cancel() } + restartTasks.removeAll() + activationEpoch = UUID() + activationGenerations.removeAll() + logs.reset() + serverRuntimeSnapshot = LanguageServerRuntimeSnapshot() projectPreparation = nil startupFailures.removeAll() } + /// Index rebuild is local to one provider. Keep other sessions' projection, + /// log selection and observations intact instead of clearing deduplicated data. + func resetProviderState(providerID: String) { + prepareToStop(providerID: providerID) + startupFailures[providerID] = nil + } + func projectUsageRequest(workspaceURL: URL?, snapshotID: UUID?) -> LSPProjectUsageRequest { let providers = catalog.descriptors .filter { $0.capabilities.contains(.languageServer) && $0.languageServerLaunch != nil } @@ -127,6 +172,7 @@ final class LanguageToolingFeatureModel: ObservableObject { if enabled { synchronizeOpenDocuments(providerID: providerID) } else { + prepareToStop(providerID: providerID) sessionsProvider()?.recordLanguageServerLog( providerID: providerID, level: .warning, @@ -138,6 +184,7 @@ final class LanguageToolingFeatureModel: ObservableObject { } func toolConfigurationDidChange(providerID: String) { + prepareToStop(providerID: providerID) startupFailures[providerID] = nil sessionsProvider()?.stopLanguageServer(providerID: providerID) sessionsProvider()?.recordLanguageServerLog( @@ -148,6 +195,42 @@ final class LanguageToolingFeatureModel: ObservableObject { ) } + /// Session-only controls leave the workspace's persistent enablement alone. + func stop(providerID: String) { + prepareToStop(providerID: providerID) + sessionsProvider()?.stopLanguageServer(providerID: providerID) + } + + func restart(providerID: String) { + guard !isDisabled(providerID), let workspaceURL, + let descriptor = catalog.descriptors.first(where: { + $0.id == providerID && $0.capabilities.contains(.languageServer) + }), let sessions = sessionsProvider() else { return } + prepareToStop(providerID: providerID) + startupFailures[providerID] = nil + let token = activationToken(providerID: providerID) + restartTasks[providerID] = Task { @MainActor [weak self] in + guard !Task.isCancelled, self?.activationToken(providerID: providerID) == token else { return } + let ended = await sessions.stopLanguageServerAndWait(providerID: providerID) + guard let self, !Task.isCancelled, + self.activationToken(providerID: providerID) == token, + self.workspaceURL == workspaceURL, !self.isDisabled(providerID), + self.sessionsProvider() === sessions else { return } + defer { self.restartTasks[providerID] = nil } + guard ended else { + self.notify?(L10n.string("The language server is still stopping. Try again after it has stopped.")) + return + } + let documents = (self.documentsProvider?() ?? []).filter { self.catalog.provider(for: $0.url)?.id == providerID } + if documents.isEmpty { + do { try sessions.startLanguageServer(providerID: providerID, rootURL: workspaceURL) } + catch { self.markActivationFailed(providerID: providerID, descriptor: descriptor, error: error) } + } else { + for document in documents { _ = self.activateDocument?(document) } + } + } + } + func markActivationSucceeded(providerID: String) { startupFailures[providerID] = nil } diff --git a/macos/Sources/Lithe/Models/AppModel/AppModel+FeatureState.swift b/macos/Sources/Lithe/Models/AppModel/AppModel+FeatureState.swift index d84a8a64e8..0804f28fb3 100644 --- a/macos/Sources/Lithe/Models/AppModel/AppModel+FeatureState.swift +++ b/macos/Sources/Lithe/Models/AppModel/AppModel+FeatureState.swift @@ -151,6 +151,7 @@ extension AppModel { func selectEditorTab(_ item: EditorTabItem) { editorTabOrderFeature.focus(item) switch item { + case .languageLogs: selectLanguageServerLogsTab() case .agentConversation(let tab): showAgentChatsInEditor(tab: tab) case .repositoryDiff(let id): selectRepositoryDiffTab(id) diff --git a/macos/Sources/Lithe/Models/AppModel/AppModel+JavaIndex.swift b/macos/Sources/Lithe/Models/AppModel/AppModel+JavaIndex.swift index d88cd247f4..cb65f10081 100644 --- a/macos/Sources/Lithe/Models/AppModel/AppModel+JavaIndex.swift +++ b/macos/Sources/Lithe/Models/AppModel/AppModel+JavaIndex.swift @@ -18,7 +18,7 @@ extension AppModel { let sessions = try await languageSessionsForWorkspaceMaintenance(for: identity) try sessions.rebuildWorkspaceState(providerID: "java", rootURL: identity.url) cancelJavaLanguageServerPreparation() - languageIntelligenceModuleCoordinator.resetWorkspaceState(languageToolingFeature) + languageToolingFeature.resetProviderState(providerID: "java") showNotification( settings.language.localizedString("native.inline.javaIndexClearedReopenAJavaFileToRebuild") ) diff --git a/macos/Sources/Lithe/Models/AppModel/AppModel+LanguageServerRuntime.swift b/macos/Sources/Lithe/Models/AppModel/AppModel+LanguageServerRuntime.swift index e73638c5c4..d41b75f627 100644 --- a/macos/Sources/Lithe/Models/AppModel/AppModel+LanguageServerRuntime.swift +++ b/macos/Sources/Lithe/Models/AppModel/AppModel+LanguageServerRuntime.swift @@ -24,10 +24,6 @@ extension AppModel { } func setLanguageServerEnabled(_ enabled: Bool, providerID: String) { - if providerID == "java", !enabled { - javaLanguageServerPreparationCoordinator.cancelMavenConfigurationSynchronization() - cancelJavaLanguageServerPreparation() - } languageToolingFeature.setEnabled(enabled, providerID: providerID) if !enabled { runFeatureIfActive?.unregisterDependencySource(languageID: providerID) @@ -44,6 +40,198 @@ extension AppModel { setLanguageServerEnabled(false, providerID: providerID) } + var statusBarLanguageServers: [LSPStatusBarServer] { + let snapshot = languageToolingFeature.serverRuntimeSnapshot + return LSPControlCenterPresenter.statusBarServers( + registrations: services.languageServerRegistrations?(languageProviderCatalog) ?? [], + states: snapshot.states, infos: snapshot.infos, + disabledProviderIDs: languageToolingFeature.disabledProviderIDs + ) + } + + func showLanguageServerLogs(providerID: String) { + languageToolingFeature.logs.providerID = providerID + if !editorTabOrderFeature.contains(.languageLogs) { editorTabOrderFeature.moveToEnd(.languageLogs) } + selectLanguageServerLogsTab() + } + + func selectLanguageServerLogsTab() { + guard editorTabOrderFeature.contains(.languageLogs) else { return } + terminalPlacementFeature.activateDocument() + mediaFeature.deactivate() + editorTabOrderFeature.repositoryDiffSelected = false + activeDocumentID = nil + editorNavigationTarget = nil + editorTabOrderFeature.focus(.languageLogs) + } + + func closeLanguageServerLogsTab() { + let order = editorTabOrderFeature + let wasFocused = order.focusedItem == .languageLogs + order.remove(.languageLogs) + if wasFocused, let fallback = order.focusedItem ?? order.items.last { selectEditorTab(fallback) } + } + + @discardableResult + func activateCurrentDocumentLanguageServerIfAvailable() -> Bool { + guard let activeDocument else { return false } + return activateLanguageServerIfAvailable(for: activeDocument) + } + + @discardableResult + func activateLanguageServerIfAvailable(for document: EditorDocument) -> Bool { + guard let identity = currentWorkspaceIdentity, + let descriptor = languageProviderCatalog.provider(for: document.url) else { return false } + let workspaceURL = identity.url + let activationToken = languageToolingFeature.activationToken(providerID: descriptor.id) + guard !languageToolingFeature.isDisabled(descriptor.id) else { + languageToolingSessionsIfActive?.recordLanguageServerLog( + providerID: descriptor.id, + level: .info, + message: L10n.string("Language server activation skipped"), + detail: L10n.string("Disabled in this workspace") + ) + return false + } + if isModuleRuntimeShuttingDown { + Task { @MainActor [weak self, weak document] in + guard let self else { return } + await self.awaitModuleRuntimeShutdown() + guard let document, !Task.isCancelled, self.isCurrentWorkspace(identity), + self.languageToolingFeature.activationToken(providerID: descriptor.id) == activationToken, + self.openDocuments.contains(where: { $0 === document }) else { return } + _ = self.activateLanguageServerIfAvailable(for: document) + } + return false + } + if descriptor.id == "java" { + switch prepareJavaLanguageServerRuntimeIfNeeded(for: document) { + case .ready: break + case .preparing: return false + } + } + if let ownership = services.pluginCatalog.languageSupport(for: document.url), + let moduleID = ownership.declaration.languageServerModuleID { + let support = ownership.declaration + // Static plugin metadata may exist before a native plugin is loaded. + // Only a registered and enabled module may enter LSP activation. + guard let snapshot = try? services.moduleRuntime.snapshot(for: moduleID), + snapshot.state != .disabled else { + return false + } + let capabilityID = ModuleCapabilityID.languageServerExtension(support.id) + if services.moduleRuntime.capability(capabilityID) == nil { + Task { [weak self, weak document] in + guard let self, let document else { return } + do { + await self.awaitModuleRuntimeShutdown() + guard !Task.isCancelled, self.isCurrentWorkspace(identity), + self.languageToolingFeature.activationToken(providerID: descriptor.id) == activationToken, + self.openDocuments.contains(where: { $0 === document }) else { return } + _ = try await self.services.moduleRuntime.activateCapability(capabilityID) + guard self.isCurrentWorkspace(identity), !Task.isCancelled, + self.languageToolingFeature.activationToken(providerID: descriptor.id) == activationToken, + self.openDocuments.contains(where: { $0 === document }) else { return } + _ = self.activateLanguageServerIfAvailable(for: document) + } catch { + // Only an activation that is still wanted may report a failure. + guard self.isCurrentWorkspace(identity), + self.languageToolingFeature.activationToken(providerID: descriptor.id) == activationToken, + self.openDocuments.contains(where: { $0 === document }) else { return } + self.languageToolingFeature.markActivationFailed( + providerID: descriptor.id, + descriptor: descriptor, + error: error + ) + } + } + return false + } + if let provider = services.moduleRuntime.capability(capabilityID) + as? any LanguageServerExtensionProviding, + provider.lifecycle.isRetired { + // The module is being stopped; its capability is still + // published until the stop completes. + return false + } + if let provider = services.moduleRuntime.capability(capabilityID) + as? any LanguageServerExtensionProviding, + let sessions = languageToolingSessionsIfActive, + !sessions.registerLanguageServerExtension(provider, support: support) { + languageToolingFeature.markActivationFailed( + providerID: descriptor.id, + descriptor: descriptor, + error: LanguageExtensionRegistrationError.invalidLanguageServerProvider( + support.displayName + ) + ) + return false + } + // A plugin enabled after launch registers its server after the + // startup probe ran, so probe it now instead of reporting the + // executable as missing before any check happened. + if let sessions = languageToolingSessionsIfActive, + let tools = languageServerToolsIfActive, + let registered = sessions.languageServerExtensionDescriptor(languageID: support.id), + tools.needsCandidateValidation(for: registered) { + Task { [weak self, weak document] in + await tools.refreshCandidates(for: registered) + guard let self, let document, self.isCurrentWorkspace(identity), !Task.isCancelled, + self.languageToolingFeature.activationToken(providerID: descriptor.id) == activationToken, + self.openDocuments.contains(where: { $0 === document }) else { return } + _ = self.activateLanguageServerIfAvailable(for: document) + } + return false + } + registerLanguageDependencySourceIfAvailable(support: support) + } + if let snapshot = try? services.moduleRuntime.snapshot(for: .languageIntelligence), + snapshot.state != .active, + snapshot.state != .idle { + Task { [weak self] in + guard let self else { return } + do { + _ = try await self.languageIntelligenceModuleCoordinator.activate() + guard self.isCurrentWorkspace(identity), !Task.isCancelled, + self.languageToolingFeature.activationToken(providerID: descriptor.id) == activationToken, + self.openDocuments.contains(where: { $0 === document }) else { return } + _ = self.activateLanguageServerIfAvailable(for: document) + } catch { + guard self.isCurrentWorkspace(identity), + self.languageToolingFeature.activationToken(providerID: descriptor.id) == activationToken, + self.openDocuments.contains(where: { $0 === document }) else { return } + self.languageToolingFeature.markActivationFailed( + providerID: descriptor.id, + descriptor: descriptor, + error: error + ) + } + } + return false + } + do { + guard let languageToolingSessions = languageToolingSessionsIfActive else { return false } + try languageToolingSessions.synchronizeLanguageServer( + for: document.url, + text: document.text, + rootURL: workspaceURL, + changes: document.takePendingLanguageServerChanges() + ) + languageToolingFeature.markActivationSucceeded(providerID: descriptor.id) + if let moduleID = services.pluginCatalog.languageSupport(for: document.url)? + .declaration.languageServerModuleID { + // A successful sync is the plugin LSP's latest activity. The + // idle policy can stop it after the user leaves the document + // untouched, while subsequent edits refresh this timestamp. + try? services.moduleRuntime.markIdle(moduleID) + } + return languageToolingSessions.activeLanguageServerIDs.contains(descriptor.id) + } catch { + languageToolingFeature.markActivationFailed(providerID: descriptor.id, descriptor: descriptor, error: error) + return false + } + } + func prepareJavaLanguageServerRuntimeIfNeeded( for document: EditorDocument ) -> JavaLanguageServerActivationReadiness { diff --git a/macos/Sources/Lithe/Models/AppModel/AppModel+Media.swift b/macos/Sources/Lithe/Models/AppModel/AppModel+Media.swift index 8cfc83b6b1..9b61feb31d 100644 --- a/macos/Sources/Lithe/Models/AppModel/AppModel+Media.swift +++ b/macos/Sources/Lithe/Models/AppModel/AppModel+Media.swift @@ -54,6 +54,7 @@ extension AppModel { activateWhenReady: activateWhenReady ) editorTabOrderFeature.moveToEnd(.media(media.id)) + if activateWhenReady { editorTabOrderFeature.focus(.media(media.id)) } } func selectMediaDocument(_ media: MediaDocument) { @@ -87,6 +88,7 @@ extension AppModel { guard wasActive else { return } switch fallbackItem { + case .languageLogs: selectLanguageServerLogsTab() case .agentConversation(let tab): showAgentChatsInEditor(tab: tab) case .repositoryDiff(let id): selectRepositoryDiffTab(id) diff --git a/macos/Sources/Lithe/Models/AppModel/AppModel+Terminal.swift b/macos/Sources/Lithe/Models/AppModel/AppModel+Terminal.swift index 6235423301..e3618035fc 100644 --- a/macos/Sources/Lithe/Models/AppModel/AppModel+Terminal.swift +++ b/macos/Sources/Lithe/Models/AppModel/AppModel+Terminal.swift @@ -279,6 +279,7 @@ extension AppModel { editorTabOrderFeature.repositoryDiffSelected = false terminalPlacementFeature.moveToEditor(sessionID) editorTabOrderFeature.moveToEnd(.terminal(sessionID)) + editorTabOrderFeature.focus(.terminal(sessionID)) terminalPlacementFeature.reorderEditorSessions( orderedIDs: editorTabOrderFeature.terminalIDs ) diff --git a/macos/Sources/Lithe/Models/AppModel/AppModel+WorkbenchClose.swift b/macos/Sources/Lithe/Models/AppModel/AppModel+WorkbenchClose.swift index 6f7f3337ca..fc301449ce 100644 --- a/macos/Sources/Lithe/Models/AppModel/AppModel+WorkbenchClose.swift +++ b/macos/Sources/Lithe/Models/AppModel/AppModel+WorkbenchClose.swift @@ -16,6 +16,10 @@ extension AppModel { closeLanguageNavigationResults() return true } + if editorTabOrderFeature.focusedItem == .languageLogs { + closeLanguageServerLogsTab() + return true + } if let tab = focusedAgentEditorTab { closeAgentEditorTab(tab) return true @@ -38,6 +42,7 @@ extension AppModel { } guard let item = editorTabItems.last else { return false } switch item { + case .languageLogs: closeLanguageServerLogsTab() case .agentConversation(let tab): closeAgentEditorTab(tab) case .repositoryDiff(let id): closeRepositoryDiffTab(id) diff --git a/macos/Sources/Lithe/Models/AppModel/AppModel.swift b/macos/Sources/Lithe/Models/AppModel/AppModel.swift index 3c342d6ef9..a35e667164 100644 --- a/macos/Sources/Lithe/Models/AppModel/AppModel.swift +++ b/macos/Sources/Lithe/Models/AppModel/AppModel.swift @@ -160,6 +160,7 @@ final class AppModel: ObservableObject, Identifiable, UnsavedDocumentHandling { private var documentLanguageCoordinator: DocumentLanguageCoordinator? private var sidebarRefreshTask: Task? private var moduleSessionCoordinator: ModuleSessionCoordinator? + var isModuleRuntimeShuttingDown: Bool { moduleSessionCoordinator?.isShuttingDown == true } private(set) var isProjectSessionClosed = false private var featureObservationBinder: AppModelObservationBinder? private var fileVisibilityRulesObserverID: UUID? @@ -549,6 +550,10 @@ final class AppModel: ObservableObject, Identifiable, UnsavedDocumentHandling { languageToolingFeature.configureSessions { [weak self] in self?.languageToolingSessionsIfActive } + languageToolingFeature.registerPreparationCancellation(providerID: "java") { [weak self] in + self?.javaLanguageServerPreparationCoordinator.cancelMavenConfigurationSynchronization() + self?.cancelJavaLanguageServerPreparation() + } services.connectBuildProviderLanguageSessions? { [weak self] in self?.languageToolingSessionsIfActive } @@ -1377,158 +1382,6 @@ final class AppModel: ObservableObject, Identifiable, UnsavedDocumentHandling { documentFeature.documentDidChange(document) } - @discardableResult - func activateCurrentDocumentLanguageServerIfAvailable() -> Bool { - guard let activeDocument else { return false } - return activateLanguageServerIfAvailable(for: activeDocument) - } - - @discardableResult - func activateLanguageServerIfAvailable(for document: EditorDocument) -> Bool { - guard let identity = currentWorkspaceIdentity, - let descriptor = languageProviderCatalog.provider(for: document.url) else { return false } - let workspaceURL = identity.url - guard !languageToolingFeature.isDisabled(descriptor.id) else { - languageToolingSessionsIfActive?.recordLanguageServerLog( - providerID: descriptor.id, - level: .info, - message: L10n.string("Language server activation skipped"), - detail: L10n.string("Disabled in this workspace") - ) - return false - } - if moduleSessionCoordinator?.isShuttingDown == true { - Task { @MainActor [weak self, weak document] in - guard let self else { return } - await self.awaitModuleRuntimeShutdown() - guard let document, !Task.isCancelled, self.isCurrentWorkspace(identity), - self.openDocuments.contains(where: { $0 === document }) else { return } - _ = self.activateLanguageServerIfAvailable(for: document) - } - return false - } - if descriptor.id == "java" { - switch prepareJavaLanguageServerRuntimeIfNeeded(for: document) { - case .ready: break - case .preparing: return false - } - } - if let ownership = services.pluginCatalog.languageSupport(for: document.url), - let moduleID = ownership.declaration.languageServerModuleID { - let support = ownership.declaration - // Static plugin metadata may exist before a native plugin is loaded. - // Only a registered and enabled module may enter LSP activation. - guard let snapshot = try? services.moduleRuntime.snapshot(for: moduleID), - snapshot.state != .disabled else { - return false - } - let capabilityID = ModuleCapabilityID.languageServerExtension(support.id) - if services.moduleRuntime.capability(capabilityID) == nil { - Task { [weak self, weak document] in - guard let self, let document else { return } - do { - await self.awaitModuleRuntimeShutdown() - guard !Task.isCancelled, self.isCurrentWorkspace(identity), - self.openDocuments.contains(where: { $0 === document }) else { return } - _ = try await self.services.moduleRuntime.activateCapability(capabilityID) - guard self.isCurrentWorkspace(identity), !Task.isCancelled, - self.openDocuments.contains(where: { $0 === document }) else { return } - _ = self.activateLanguageServerIfAvailable(for: document) - } catch { - // Only an activation that is still wanted may report a failure. - guard self.isCurrentWorkspace(identity), - self.openDocuments.contains(where: { $0 === document }) else { return } - self.languageToolingFeature.markActivationFailed( - providerID: descriptor.id, - descriptor: descriptor, - error: error - ) - } - } - return false - } - if let provider = services.moduleRuntime.capability(capabilityID) - as? any LanguageServerExtensionProviding, - provider.lifecycle.isRetired { - // The module is being stopped; its capability is still - // published until the stop completes. - return false - } - if let provider = services.moduleRuntime.capability(capabilityID) - as? any LanguageServerExtensionProviding, - let sessions = languageToolingSessionsIfActive, - !sessions.registerLanguageServerExtension(provider, support: support) { - languageToolingFeature.markActivationFailed( - providerID: descriptor.id, - descriptor: descriptor, - error: LanguageExtensionRegistrationError.invalidLanguageServerProvider( - support.displayName - ) - ) - return false - } - // A plugin enabled after launch registers its server after the - // startup probe ran, so probe it now instead of reporting the - // executable as missing before any check happened. - if let sessions = languageToolingSessionsIfActive, - let tools = languageServerToolsIfActive, - let registered = sessions.languageServerExtensionDescriptor(languageID: support.id), - tools.needsCandidateValidation(for: registered) { - Task { [weak self, weak document] in - await tools.refreshCandidates(for: registered) - guard let self, let document, self.isCurrentWorkspace(identity), !Task.isCancelled, - self.openDocuments.contains(where: { $0 === document }) else { return } - _ = self.activateLanguageServerIfAvailable(for: document) - } - return false - } - registerLanguageDependencySourceIfAvailable(support: support) - } - if let snapshot = try? services.moduleRuntime.snapshot(for: .languageIntelligence), - snapshot.state != .active, - snapshot.state != .idle { - Task { [weak self] in - guard let self else { return } - do { - _ = try await self.languageIntelligenceModuleCoordinator.activate() - guard self.isCurrentWorkspace(identity), !Task.isCancelled, - self.openDocuments.contains(where: { $0 === document }) else { return } - _ = self.activateLanguageServerIfAvailable(for: document) - } catch { - guard self.isCurrentWorkspace(identity), - self.openDocuments.contains(where: { $0 === document }) else { return } - self.languageToolingFeature.markActivationFailed( - providerID: descriptor.id, - descriptor: descriptor, - error: error - ) - } - } - return false - } - do { - guard let languageToolingSessions = languageToolingSessionsIfActive else { return false } - try languageToolingSessions.synchronizeLanguageServer( - for: document.url, - text: document.text, - rootURL: workspaceURL, - changes: document.takePendingLanguageServerChanges() - ) - languageToolingFeature.markActivationSucceeded(providerID: descriptor.id) - if let moduleID = services.pluginCatalog.languageSupport(for: document.url)? - .declaration.languageServerModuleID { - // A successful sync is the plugin LSP's latest activity. The - // idle policy can stop it after the user leaves the document - // untouched, while subsequent edits refresh this timestamp. - try? services.moduleRuntime.markIdle(moduleID) - } - return languageToolingSessions.activeLanguageServerIDs.contains(descriptor.id) - } catch { - languageToolingFeature.markActivationFailed(providerID: descriptor.id, descriptor: descriptor, error: error) - return false - } - } - func commitStagedChanges() async { await commitWorkflow.commit() } diff --git a/macos/Sources/Lithe/Models/Editor/EditorTabItem.swift b/macos/Sources/Lithe/Models/Editor/EditorTabItem.swift index e5ed6e9976..2f10c54099 100644 --- a/macos/Sources/Lithe/Models/Editor/EditorTabItem.swift +++ b/macos/Sources/Lithe/Models/Editor/EditorTabItem.swift @@ -6,6 +6,7 @@ enum EditorTabItem: Hashable, Identifiable { case terminal(UUID) case media(UUID) case repositoryDiff(UUID) + case languageLogs /// One Agent conversation tab. The UUID names the tab, not the session: a new /// tab exists before the Agent has created its session. case agentConversation(UUID) diff --git a/macos/Sources/Lithe/Platform/MacOS/MacServiceContainer.swift b/macos/Sources/Lithe/Platform/MacOS/MacServiceContainer.swift index a5baa3f16c..ddb1d500b2 100644 --- a/macos/Sources/Lithe/Platform/MacOS/MacServiceContainer.swift +++ b/macos/Sources/Lithe/Platform/MacOS/MacServiceContainer.swift @@ -1270,6 +1270,9 @@ final class MacServiceContainer { ) } } + services.languageServerRegistrations = { [pluginManager] catalog in + pluginManager.languageServerRegistrations(catalog: catalog) + } moduleLifecycleCoordinator.start() Task { do { diff --git a/macos/Sources/Lithe/Platform/MacOS/Plugins/MacPluginManager.swift b/macos/Sources/Lithe/Platform/MacOS/Plugins/MacPluginManager.swift index 5bd674d117..e26e4a18be 100644 --- a/macos/Sources/Lithe/Platform/MacOS/Plugins/MacPluginManager.swift +++ b/macos/Sources/Lithe/Platform/MacOS/Plugins/MacPluginManager.swift @@ -134,6 +134,54 @@ final class MacPluginManager: PluginManaging { return (builtIn + native).sorted { $0.manifest.displayName < $1.manifest.displayName } } + func languageServerRegistrations(catalog: LanguageProviderCatalog) -> [LanguageServerRegistration] { + let packaged = installedPlugins.values + .filter { registeredPluginIDs.contains($0.manifest.id) && $0.installation.status == .installed } + .sorted { $0.manifest.id < $1.manifest.id } + .flatMap { package -> [LanguageServerRegistration] in + package.descriptor.languageServers.compactMap { server in + guard isLanguageServerModuleEnabled(.languageServerExtension(server.languageID)) else { return nil } + return Self.languageServerRegistration(server, pluginID: package.manifest.id.rawValue, catalog: catalog) + } + } + let builtIn = managedBuiltInPlugins.flatMap { plugin in + (plugin.languageSupports ?? []).compactMap { support -> LanguageServerRegistration? in + guard let moduleID = support.languageServerModuleID, + isLanguageServerModuleEnabled(moduleID) else { return nil } + return LanguageServerRegistration( + id: support.id, pluginID: plugin.id.rawValue, + executableNames: catalog.descriptors.first { $0.id == support.id }? + .languageServerLaunch?.executableNames ?? [] + ) + } + } + return packaged + builtIn + } + + private func isLanguageServerModuleEnabled(_ id: ModuleID) -> Bool { + guard let snapshot = try? moduleRuntime.snapshot(for: id) else { return false } + return snapshot.state != .disabled && !snapshot.isQuarantined && !snapshot.isSuppressedBySafeMode + } + + static func languageServerRegistration( + _ server: DeclarativeLanguageServer, + pluginID: String, + catalog: LanguageProviderCatalog + ) -> LanguageServerRegistration { + let executableNames: [String] + switch server.launch { + case .packaged, .systemCommand: + executableNames = server.executableNames + case .runtime: + // A runtime such as java/node is not the server's name. Reuse the + // descriptive launch metadata already associated with this language; + // it supplies a name only after the enabled plugin supplies the row. + executableNames = catalog.descriptors.first { $0.id == server.languageID }? + .languageServerLaunch?.executableNames ?? [] + } + return LanguageServerRegistration(id: server.languageID, pluginID: pluginID, executableNames: executableNames) + } + func setEnabled(_ enabled: Bool, for pluginID: PluginID) async throws { guard let manifest = manifest(for: pluginID) else { throw PluginManagerError.unknownPlugin(pluginID) diff --git a/macos/Sources/Lithe/Views/Editor/EditorAreaView.swift b/macos/Sources/Lithe/Views/Editor/EditorAreaView.swift index 2eef418500..bee37358fd 100644 --- a/macos/Sources/Lithe/Views/Editor/EditorAreaView.swift +++ b/macos/Sources/Lithe/Views/Editor/EditorAreaView.swift @@ -178,6 +178,7 @@ struct EditorAreaView: View { private var activeItem: EditorTabItem? { + if model.editorTabOrderFeature.focusedItem == .languageLogs { return .languageLogs } if let tab = model.focusedAgentEditorTab { return .agentConversation(tab) } if let id = model.selectedRepositoryDiffID { return .repositoryDiff(id) } return model.activeEditorTerminalSession.map { .terminal($0.id) } @@ -209,6 +210,10 @@ struct EditorAreaView: View { } private var paneDiffSelected: Bool { paneDiffID != nil } private func focusRepositoryDiffPaneIfNeeded() { + if groupID != nil, paneItem == .languageLogs, model.editorTabOrderFeature.focusedItem != .languageLogs { + model.selectLanguageServerLogsTab() + return + } guard groupID != nil, let id = paneDiffID, model.selectedRepositoryDiffID != id else { return } model.selectRepositoryDiffTab(id) } @@ -341,6 +346,8 @@ struct EditorAreaView: View { ForEach(displayedTabItems) { item in Group { switch item { + case .languageLogs: + languageServerLogsTab case .agentConversation(let tab): agentConversationTab(tab) case .repositoryDiff(let id): @@ -412,6 +419,28 @@ struct EditorAreaView: View { .zIndex(tabDragState.draggedItem == item ? 1 : 0) } + private var languageServerLogsTab: some View { + let item = EditorTabItem.languageLogs + let selected = paneItem == item + return HStack(spacing: 0) { + Text("LSP Logs") + .font(LitheTheme.uiFont(size: 13)) + .padding(.leading, 8).frame(height: 28).contentShape(Rectangle()) + .onTapGesture { model.selectEditorTab(item) } + .accessibilityAddTraits(.isButton) + .accessibilityAction { model.selectEditorTab(item) } + LitheToolWindowTabCloseButton { model.closeLanguageServerLogsTab() } + .opacity(selected || hoveredTabItem == item ? 1 : 0) + .allowsHitTesting(selected || hoveredTabItem == item) + } + .foregroundStyle(selected ? LitheTheme.primaryText : LitheTheme.secondaryText) + .modifier(LitheToolWindowTabStyle(isSelected: selected, isActive: editorGroupIsActive)) + .padding(.horizontal, 4).padding(.vertical, 4) + .onHover { updateHoveredTab(item, isHovering: $0) } + .background { editorTabFrameReader(for: item) } + .zIndex(tabDragState.draggedItem == item ? 1 : 0) + } + private func repositoryDiffTab(_ id: UUID) -> some View { let item = EditorTabItem.repositoryDiff(id) let selected = paneDiffID == id @@ -759,6 +788,7 @@ struct EditorAreaView: View { private func closeEditorTab(_ item: EditorTabItem) { switch item { + case .languageLogs: model.closeLanguageServerLogsTab() case .agentConversation(let tab): model.closeAgentEditorTab(tab) case .repositoryDiff(let id): model.closeRepositoryDiffTab(id) @@ -802,6 +832,7 @@ struct EditorAreaView: View { @ViewBuilder private func tabDragLabel(_ item: EditorTabItem) -> some View { switch item { + case .languageLogs: Text("LSP Logs") case .agentConversation(let tab): AgentEditorTabTitle(model: model, tab: tab) case .document(let id): if let document = model.openDocuments.first(where: { $0.id == id }) { @@ -1135,7 +1166,9 @@ struct EditorAreaView: View { .allowsHitTesting(paneDiffID == id) .accessibilityHidden(paneDiffID != id) } - if case .agentConversation(let tab) = paneItem { + if paneItem == .languageLogs { + LanguageServerLogsView(feature: model.languageToolingFeature.logs) + } else if case .agentConversation(let tab) = paneItem { if tab == model.focusedAgentEditorTab { AgentConversationView(model: model, isEditor: true) } else { diff --git a/macos/Sources/Lithe/Views/Language/LSPControlCenterView.swift b/macos/Sources/Lithe/Views/Language/LSPControlCenterView.swift index 2f53c9343c..90196bd43b 100644 --- a/macos/Sources/Lithe/Views/Language/LSPControlCenterView.swift +++ b/macos/Sources/Lithe/Views/Language/LSPControlCenterView.swift @@ -107,7 +107,7 @@ struct LSPControlCenterContent: View { return VStack(alignment: .leading, spacing: 12) { HStack(spacing: 10) { Circle() - .fill(statusColor(status)) + .fill(status.indicatorColor) .frame(width: 8, height: 8) VStack(alignment: .leading, spacing: 3) { Text(descriptor.displayName) @@ -307,8 +307,11 @@ struct LSPControlCenterContent: View { } } - private func statusColor(_ status: LSPServerStatus) -> Color { - switch status { +} + +extension LSPServerStatus { + var indicatorColor: Color { + switch self { case .starting, .initializing: LitheTheme.accent case .active: LitheTheme.success case .stopping: LitheTheme.warning diff --git a/macos/Sources/Lithe/Views/Language/LanguageServerLogsView.swift b/macos/Sources/Lithe/Views/Language/LanguageServerLogsView.swift new file mode 100644 index 0000000000..84b2206a6c --- /dev/null +++ b/macos/Sources/Lithe/Views/Language/LanguageServerLogsView.swift @@ -0,0 +1,100 @@ +import LitheModuleAPI +import SwiftUI + +struct LanguageServerLogsView: View { + @EnvironmentObject private var model: AppModel + @ObservedObject var feature: LanguageServerLogsModel + + private var providerIDs: [String] { + Set(feature.entries.map(\.providerID) + model.statusBarLanguageServers.map(\.id) + + (feature.providerID.isEmpty ? [] : [feature.providerID])).sorted() + } + + var body: some View { + VStack(spacing: 0) { + ViewThatFits(in: .horizontal) { + HStack(spacing: 8) { + serverPicker + logChannel + levelPicker + Spacer(minLength: 0) + clearButton + } + VStack(alignment: .leading, spacing: 6) { + HStack(spacing: 8) { serverPicker; Spacer(minLength: 0); clearButton } + HStack(spacing: 8) { logChannel; Spacer(minLength: 0); levelPicker } + } + } + .font(LitheTheme.uiFont(size: 12)) + .padding(.horizontal, 12) + .padding(.vertical, 6) + OutputTextView( + output: logOutput, + searchRoots: [], + fileExists: { _ in false }, + emptyMessage: L10n.string("No matching language server logs"), + fontSize: 12, + onOpenLocation: { _, _, _ in } + ) + // Replacing a filtered buffer is a new viewport, not an append to + // another server's output. Native selection/scroll stays view-local. + .id(feature.providerID + ":" + String(describing: feature.minimumLevel)) + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading) + } + .background(LitheTheme.editor) + .onAppear { selectInitialProvider() } + .onChange(of: providerIDs) { _ in selectInitialProvider() } + } + + private var serverPicker: some View { + LitheSettingsSelect(selection: $feature.providerID, options: providerIDs, width: 180, + accessibilityLabel: "Language Server", title: providerName, localizesTitles: false) + } + + private var levelPicker: some View { + LitheSettingsSelect(selection: $feature.minimumLevel, + options: LanguageServerLogsModel.MinimumLevel.allCases, width: 120, + accessibilityLabel: "Minimum level", title: levelTitle) + } + + private var logChannel: some View { + HStack(spacing: 4) { + Text("Server Logs").foregroundStyle(LitheTheme.accent) + LitheInfoTip("Shows session events and server output. Server Trace and RPC message capture are not available.") + } + } + + private var clearButton: some View { + Button("Clear View") { feature.clear() } + .buttonStyle(.litheNoPress) + .help("Clear only the selected server's visible logs. Collected diagnostic logs are kept.") + } + + private func selectInitialProvider() { + if feature.providerID.isEmpty, let first = providerIDs.first { feature.providerID = first } + } + + private func providerName(_ id: String) -> String { + model.statusBarLanguageServers.first { $0.id == id }?.displayName ?? id + } + + private func levelTitle(_ level: LanguageServerLogsModel.MinimumLevel) -> String { + switch level { + case .info: "Info" + case .warning: "Warning" + case .error: "Error" + } + } + + private var logOutput: String { + feature.visibleEntries.map { entry in + let timestamp = entry.timestamp.formatted(date: .omitted, time: .standard) + // These are structured log identifiers. The shared console colors + // their prefixes; upstream messages and details remain unchanged. + let level = entry.level == .warning ? "WARN" : entry.level.rawValue.uppercased() + let detail = entry.detail.map { "\n" + $0 } ?? "" + return "[\(level)] \(timestamp) \(entry.message)\(detail)\n" + } + .joined() + } +} diff --git a/macos/Sources/Lithe/Views/Workbench/LanguageServerStatusView.swift b/macos/Sources/Lithe/Views/Workbench/LanguageServerStatusView.swift new file mode 100644 index 0000000000..b6f734e7e9 --- /dev/null +++ b/macos/Sources/Lithe/Views/Workbench/LanguageServerStatusView.swift @@ -0,0 +1,112 @@ +import LitheModuleAPI +import SwiftUI + +struct LanguageServerStatusView: View { + @EnvironmentObject private var model: AppModel + + var body: some View { + let servers = model.statusBarLanguageServers + let status = LSPControlCenterPresenter.aggregateStatus(servers) + let startedCount = servers.filter(\.canStop).count + LitheMenu(opensUpward: true) { + LanguageServerStatusMenu.items( + servers: servers, + viewLogs: model.showLanguageServerLogs, + restart: model.languageToolingFeature.restart, + stop: model.languageToolingFeature.stop, + settings: { model.showSettings(category: .lsp) } + ) + } label: { + HStack(spacing: 5) { + Circle().fill(status.indicatorColor).frame(width: 7, height: 7) + Text("LSP") + if status == .stopped || status == .disabled { + Text(status.localizedTitle) + } else if startedCount > 1 { + Text("\(startedCount)").monospacedDigit() + } + } + .accessibilityElement(children: .ignore) + .accessibilityLabel(Text("Language Services")) + .accessibilityValue(Text(servers.isEmpty ? status.localizedTitle + : servers.map { "\($0.displayName): \($0.status.localizedTitle)" }.joined(separator: ", "))) + } + .buttonStyle(.litheNoPress) + .fixedSize() + .help("Language Services") + } +} + +@MainActor +enum LanguageServerStatusMenu { + private static var restartIcon: AnyView { + AnyView(LitheIDEAIcon(resourcePath: "debugger/rerun.svg", size: 16, preservesOriginalColors: true)) + } + + private static var stopIcon: AnyView { + AnyView(LitheIDEAIcon(resourcePath: "expui/run/stop.svg", size: 16, preservesOriginalColors: true)) + } + + static func items( + servers: [LSPStatusBarServer], + viewLogs: @escaping (String) -> Void, + restart: @escaping (String) -> Void, + stop: @escaping (String) -> Void, + settings: @escaping () -> Void + ) -> [LitheContextMenuItem] { + let startedServers = servers.filter(\.canStop) + return [.heading("Language Services")] + + (servers.isEmpty ? [.heading("No registered language servers")] : []) + + servers.map { serverItem($0, viewLogs: viewLogs, restart: restart, stop: stop) } + + [ + .separator, + .action(L10n.string(key: "native.inline.viewLogs"), localizesTitle: false) { viewLogs(servers.first?.id ?? "") }, + .action("Restart All Servers", icon: restartIcon, isEnabled: !startedServers.isEmpty) { + for server in startedServers { restart(server.id) } + }, + .action("Stop All Servers", icon: stopIcon, isEnabled: !startedServers.isEmpty) { + for server in startedServers { stop(server.id) } + }, + .separator, + .action("Language Server Settings...", icon: AnyView( + LitheIDEAIcon(resourcePath: "expui/general/settings.svg", size: 16, preservesOriginalColors: true) + ), action: settings) + ] + } + + private static func serverItem( + _ server: LSPStatusBarServer, + viewLogs: @escaping (String) -> Void, + restart: @escaping (String) -> Void, + stop: @escaping (String) -> Void + ) -> LitheContextMenuItem { + var item = LitheContextMenuItem.submenu(server.displayName, icon: AnyView( + Circle().fill(server.status.indicatorColor).frame(width: 8, height: 8) + )) { + LitheContextMenuItem.action(L10n.string(key: "native.inline.viewLogs"), localizesTitle: false) { viewLogs(server.id) } + LitheContextMenuItem.action("Restart Server", icon: restartIcon, + isEnabled: server.canStop) { restart(server.id) } + LitheContextMenuItem.action("Stop Server", description: L10n.string("Starts again when a matching document is opened or edited."), + icon: stopIcon, isEnabled: server.canStop) { + stop(server.id) + } + } + item.localizesTitle = false + item.description = [server.status.localizedTitle, server.version].compactMap { $0 }.joined(separator: " · ") + return item + } +} + +extension LSPServerStatus { + var localizedTitle: String { + switch self { + case .starting: L10n.string("Starting") + case .initializing: L10n.string("Initializing project index") + case .active: L10n.string("Running") + case .stopping: L10n.string("Stopping") + case .stopped: L10n.string("Not started") + case .disabled: L10n.string("Off") + case .error: L10n.string(key: "native.inline.failedToStartCheckTheLanguageServerConfiguration") + } + } +} diff --git a/macos/Sources/Lithe/Views/Workbench/WorkbenchView.swift b/macos/Sources/Lithe/Views/Workbench/WorkbenchView.swift index 8c1777af1a..3a92f74f31 100644 --- a/macos/Sources/Lithe/Views/Workbench/WorkbenchView.swift +++ b/macos/Sources/Lithe/Views/Workbench/WorkbenchView.swift @@ -1831,6 +1831,7 @@ struct WorkbenchView: View { model.activeDocument?.isReadOnly == true ? "Read-only document" : "Save" )) ProjectPreparationStatusView(compact: true) + LanguageServerStatusView() MemoryUsageStatusView() FrameRateStatusView() gitStatus @@ -1841,6 +1842,7 @@ struct WorkbenchView: View { HStack(spacing: 10) { EditorCaretPositionLabel(chrome: model.editorChrome) { model.showGoToLine() } ProjectPreparationStatusView(compact: true) + LanguageServerStatusView() MemoryUsageStatusView() FrameRateStatusView() gitStatus diff --git a/macos/Sources/LitheCoreContracts/Language/LanguageToolingContracts.swift b/macos/Sources/LitheCoreContracts/Language/LanguageToolingContracts.swift index 2f2ed7a7cb..fd8adc159f 100644 --- a/macos/Sources/LitheCoreContracts/Language/LanguageToolingContracts.swift +++ b/macos/Sources/LitheCoreContracts/Language/LanguageToolingContracts.swift @@ -1022,6 +1022,21 @@ package protocol LanguageServerSession: AnyObject { func updateWorkspaceConfigurationAsync(_ configuration: ToolingJSONValue) async -> WorkspaceConfigurationUpdateResult func stop() + /// Stops the session and confirms process/resource release within a local + /// deadline. A false result must not be followed by a replacement launch. + func stopAndWait() async -> Bool +} + +package extension LanguageServerSession { + func stopAndWait() async -> Bool { + stop() + let deadline = ContinuousClock.now.advanced(by: .seconds(5)) + while isRunning, ContinuousClock.now < deadline { + do { try await Task.sleep(for: .milliseconds(10)) } + catch { return false } + } + return !isRunning + } } /// Completion metadata is list-scoped, including when the list is empty. diff --git a/macos/Sources/LitheLanguageIntelligenceModule/Runtime/LanguageServerSession.swift b/macos/Sources/LitheLanguageIntelligenceModule/Runtime/LanguageServerSession.swift index ed38c27299..2d8db78c25 100644 --- a/macos/Sources/LitheLanguageIntelligenceModule/Runtime/LanguageServerSession.swift +++ b/macos/Sources/LitheLanguageIntelligenceModule/Runtime/LanguageServerSession.swift @@ -74,6 +74,8 @@ package final class LanguageServerRuntimeSession: LanguageServerSession { private var functionProgress: [String: @MainActor @Sendable (PluginFunctionProgress) -> Void] = [:] private var documentVersions: [URL: Int] = [:] private var pollTask: Task? + private var releaseTask: Task? + private var startsInFlight = 0 private var state: LanguageServerSessionState = .stopped private var processID: Int32? /// Requests being written off the main actor. Core writes a request to @@ -210,7 +212,9 @@ package final class LanguageServerRuntimeSession: LanguageServerSession { if let prepareProcess, !startingPreparedProcess { let generation = UUID() startupGeneration = generation + startsInFlight += 1 preparationTask = Task { @MainActor [weak self] in + defer { self?.startsInFlight -= 1 } do { let prepared = try await prepareProcess(normalizedRoot) guard let self, self.startupGeneration == generation, !Task.isCancelled else { @@ -338,14 +342,32 @@ package final class LanguageServerRuntimeSession: LanguageServerSession { startupGeneration = generation let resources = releaseResources releaseResources = nil + startsInFlight += 1 Task.detached(priority: .userInitiated) { [weak self] in let started = launch() // The completion claims the result only while its generation // is active; a closed/replaced owner destroys the late session. if await self?.completeBackgroundStart(started, generation: generation, resources: resources) != true { - if case .success(let payload) = started { core.destroyLanguageServer(sessionID: payload.sessionID) } + if case .success(let payload) = started { + // A cancelled remote launch can finish after stop(). + // Keep its ownership until Core confirms termination. + core.stopLanguageServer(sessionID: payload.sessionID) + let deadline = ContinuousClock.now.advanced(by: .seconds(max(5, shutdownTimeout * 2 + 2))) + var ended = false + while !ended, ContinuousClock.now < deadline { + ended = core.pollLanguageServerEvents(sessionID: payload.sessionID).contains { + $0.type == "stateChanged" && ($0.state == "stopped" || $0.state == "failed") + } + if !ended { try? await Task.sleep(for: .milliseconds(10)) } + } + // Fail closed: retaining the in-flight marker prevents + // reuse of a workspace whose old process is still alive. + guard ended else { return } + core.destroyLanguageServer(sessionID: payload.sessionID) + } await resources?() } + await self?.finishBackgroundStart() } return } @@ -357,6 +379,8 @@ package final class LanguageServerRuntimeSession: LanguageServerSession { } } + private func finishBackgroundStart() { startsInFlight -= 1 } + private func completeBackgroundStart( _ result: Result, generation: UUID, @@ -1176,6 +1200,10 @@ package final class LanguageServerRuntimeSession: LanguageServerSession { } package func stop() { + beginStop(inBackground: false) + } + + private func beginStop(inBackground: Bool) { let wasStarting = startupGeneration != nil preparationTask?.cancel() preparationTask = nil @@ -1205,7 +1233,7 @@ package final class LanguageServerRuntimeSession: LanguageServerSession { watchdog.arm(after: stuckSendGrace) { [weak self] in self?.endStuckSend() } stopWatchdog = watchdog } - } else if usesBackgroundStart { + } else if usesBackgroundStart || inBackground { let core = core Task.detached(priority: .userInitiated) { core.stopLanguageServer(sessionID: sessionID) } } else { @@ -1214,6 +1242,19 @@ package final class LanguageServerRuntimeSession: LanguageServerSession { if isRunning { transition(to: .stopping) } } + package func stopAndWait() async -> Bool { + // Core may wait for an outbound lock/write; the caller's deadline must + // remain responsive on the main actor even when that stop send blocks. + beginStop(inBackground: true) + let deadline = ContinuousClock.now.advanced(by: .seconds(max(5, shutdownTimeout * 2 + 2))) + while sessionID != nil || startsInFlight > 0 || releaseTask != nil { + guard ContinuousClock.now < deadline else { return false } + do { try await Task.sleep(for: .milliseconds(10)) } + catch { return false } + } + return true + } + package func retryMavenProfiles() { guard let sessionID, isRunning else { return } if case .failure(let failure) = core.retryMavenProfiles(sessionID: sessionID) { @@ -1504,15 +1545,21 @@ package final class LanguageServerRuntimeSession: LanguageServerSession { if let sessionID { if usesBackgroundStart || releaseResources != nil { let core = core - Task.detached(priority: .userInitiated) { - core.destroyLanguageServer(sessionID: sessionID) - await releaseResources?() + releaseTask = Task { @MainActor [self] in + await Task.detached(priority: .userInitiated) { + core.destroyLanguageServer(sessionID: sessionID) + await releaseResources?() + }.value + releaseTask = nil } } else { core.destroyLanguageServer(sessionID: sessionID) } } else if let releaseResources { - Task.detached { await releaseResources() } + releaseTask = Task { @MainActor [self] in + await releaseResources() + releaseTask = nil + } } sessionID = nil documentVersions = [:] diff --git a/macos/Sources/LitheLanguageIntelligenceModule/Services/LanguageToolingSessionManager.swift b/macos/Sources/LitheLanguageIntelligenceModule/Services/LanguageToolingSessionManager.swift index d0c11102fe..9318896420 100644 --- a/macos/Sources/LitheLanguageIntelligenceModule/Services/LanguageToolingSessionManager.swift +++ b/macos/Sources/LitheLanguageIntelligenceModule/Services/LanguageToolingSessionManager.swift @@ -70,6 +70,9 @@ package final class LanguageToolingSessionManager: ObservableObject, private var extensionLifecycles: [String: WeakLanguageServerExtensionLifecycle] = [:] private let runtimeFactory: (any LanguageProviderRuntimeFactory)? private var languageServers: [String: any LanguageServerSession] = [:] + /// Explicit restarts retain the old process's slot through shutdown and + /// resource release. A timed-out close must not admit an overlapping start. + private var stoppingServers: [String: (id: UUID, session: any LanguageServerSession, task: Task)] = [:] private var languageServerRoots: [String: URL] = [:] private static let maximumStartupAttempts = 3 private var languageServerStartupAttempts: [String: (root: URL, count: Int)] = [:] @@ -1088,6 +1091,11 @@ package final class LanguageToolingSessionManager: ObservableObject, } package func stopLanguageServer(providerID: String) { + guard stoppingServers[providerID] == nil else { return } + removeLanguageServer(providerID: providerID, stopSession: true) + } + + private func removeLanguageServer(providerID: String, stopSession: Bool) { languageServerStartupAttempts[providerID] = nil if providerID == "java" { projectPreparation = nil } if providerID == "java" { @@ -1116,22 +1124,24 @@ package final class LanguageToolingSessionManager: ObservableObject, clearDiagnostics(providerID: providerID) if providerID == "java" { mavenProfileProjectResults.removeAll() } languageServerSessionIdentities[providerID] = nil - languageServers.removeValue(forKey: providerID)?.stop() + let removed = languageServers.removeValue(forKey: providerID) + if stopSession { removed?.stop() } languageServerRoots[providerID] = nil languageServerMavenContexts[providerID] = nil languageServerWorkspaceFingerprints[providerID] = nil languageServerFeatures[providerID] = nil languageServerInfos[providerID] = nil languageServerFeatureProviders[providerID] = nil - languageServerStates[providerID] = .stopped + let state: LanguageServerSessionState = stopSession ? .stopped : .stopping + languageServerStates[providerID] = state resumeLanguageServerReadyWaiters( providerID: providerID, - state: .stopped, + state: state, rootURL: nil ) onLanguageServerStateChange?( providerID, - .stopped, + state, operationID ) languageServerOperationIDs[providerID] = nil @@ -1155,6 +1165,44 @@ package final class LanguageToolingSessionManager: ObservableObject, languageServerOperationIDs = [:] } + /// The ordinary stop API initiates shutdown. Restart callers additionally + /// wait for the old process and its package/workspace resources to release. + package func stopLanguageServerAndWait(providerID: String) async -> Bool { + let retiring: any LanguageServerSession + if let stopping = stoppingServers[providerID] { + if await stopping.task.value { return true } + guard !Task.isCancelled else { return false } + // A previous wait can time out before the process finally exits. + // An explicit retry waits on that same process, never starts over. + retiring = stopping.session + } else { + guard let session = languageServers[providerID] else { + stopLanguageServer(providerID: providerID) + return true + } + retiring = session + } + let id = UUID() + let task = Task { @MainActor [weak self] in + let ended = await retiring.stopAndWait() + guard let self, self.stoppingServers[providerID]?.id == id else { return ended } + if ended { self.stoppingServers[providerID] = nil } + // Full workspace teardown may already have cleared the projection. + if self.languageServerStates[providerID] == .stopping { + let state: LanguageServerSessionState = ended ? .stopped : .failed(.init( + code: "shutdownTimeout", stage: "shutdown", + message: L10n.string("The language server is still stopping. Try again after it has stopped.") + )) + self.languageServerStates[providerID] = state + self.onLanguageServerStateChange?(providerID, state, nil) + } + return ended + } + stoppingServers[providerID] = (id, retiring, task) + removeLanguageServer(providerID: providerID, stopSession: false) + return await task.value + } + /// Stops one provider and removes only its current workspace-state directory. package func rebuildWorkspaceState(providerID: String, rootURL: URL) throws { guard let descriptor = catalog.descriptors.first(where: { $0.id == providerID }) else { @@ -1580,6 +1628,11 @@ package final class LanguageToolingSessionManager: ObservableObject, rootURL: URL, operationID requestedOperationID: UUID? ) throws -> any LanguageServerSession { + guard stoppingServers[descriptor.id] == nil else { + throw LanguageToolingSessionError.toolingUnavailable( + L10n.string("The language server is still stopping. Try again after it has stopped.") + ) + } // All entry points, including Maven reload, testing, and debugging, must // recheck the current workspace preference before creating or reusing a session. guard isLanguageServerEnabled(descriptor.id, rootURL) else { diff --git a/macos/Tests/LitheTests/LanguageServerStatusTests.swift b/macos/Tests/LitheTests/LanguageServerStatusTests.swift new file mode 100644 index 0000000000..6f05112150 --- /dev/null +++ b/macos/Tests/LitheTests/LanguageServerStatusTests.swift @@ -0,0 +1,453 @@ +import Combine +import AppKit +import Foundation +import LitheCoreContracts +import LitheLanguageIntelligenceModule +import LitheModuleAPI +import Testing +import SwiftUI +@testable import Lithe + +@Suite("Language server status and logs") +@MainActor +struct LanguageServerStatusTests { + @Test func statusListIncludesDormantAndDisabledRegisteredProvidersAndKeepsFailures() { + let registrations = [registration("z", "Same"), registration("a", "Same"), registration("b", "Alpha"), + registration("d", "Disabled"), registration("s", "Stopped"), registration("n", "Never started")] + let servers = LSPControlCenterPresenter.statusBarServers( + registrations: registrations, + states: ["z": .ready, "a": .initializing, "b": .failed(.init(exitCode: 1, message: "failure")), + "d": .ready, "s": .stopped], + infos: ["z": .init(name: "Same", version: " 1.2 "), "a": .init(name: "Same", version: "stale")], + disabledProviderIDs: ["d"] + ) + #expect(servers.map(\.id) == ["b", "d", "n", "a", "z", "s"]) + #expect(servers.map(\.version) == [nil, nil, nil, nil, "1.2", nil]) + #expect(servers.first { $0.id == "d" }?.status == .disabled) + #expect(servers.first { $0.id == "n" }?.status == .stopped) + #expect(LSPControlCenterPresenter.aggregateStatus(servers) == .error) + #expect(LSPControlCenterPresenter.aggregateStatus([]) == .stopped) + #expect(LSPControlCenterPresenter.aggregateStatus(Array(servers.dropFirst())) == .initializing) + } + + @Test func statusProjectionPublishesOnlyWhenSessionChromeChanges() throws { + let harness = Harness() + defer { harness.sessions.stopAllLanguageServers() } + harness.feature.bindProjectPreparation(harness.sessions) + var changes = 0 + let observation = harness.feature.$serverRuntimeSnapshot.dropFirst().sink { _ in changes += 1 } + defer { observation.cancel() } + try harness.sessions.startLanguageServer(providerID: "example", rootURL: harness.workspace) + #expect(harness.feature.serverRuntimeSnapshot.states["example"] == .ready) + let beforeLog = changes + harness.sessions.recordLanguageServerLog(providerID: "example", level: .info, message: "server output") + #expect(changes == beforeLog) + harness.feature.stop(providerID: "example") + #expect(harness.feature.serverRuntimeSnapshot.states["example"] == .stopped) + } + + @Test func serverNamesUseExistingExecutableMetadataAndOtherwiseThePluginID() { + let registrations = [registration("java", "jdtls"), registration("c", "clangd"), + LanguageServerRegistration(id: "legacy", pluginID: "org.example.legacy", executableNames: ["", " "])] + let rows = LSPControlCenterPresenter.statusBarServers(registrations: registrations, + states: ["java": .ready, "c": .ready, "unregistered": .ready], + infos: ["java": .init(name: "Eclipse JDT Language Server", version: "1"), + "c": .init(name: "Apple clangd", version: "21")], disabledProviderIDs: []) + #expect(Set(rows.map(\.displayName)) == ["jdtls", "clangd", "org.example.legacy"]) + #expect(rows.allSatisfy { $0.id != "unregistered" }) + #expect(LSPControlCenterPresenter.statusBarServers(registrations: [], + states: ["java": .ready], infos: [:], disabledProviderIDs: []).isEmpty) + } + + @Test func idleMenuKeepsLogsAndSettingsAvailableWithoutAnySessions() throws { + var viewed = false, configured = false + let menu = LanguageServerStatusMenu.items(servers: [], viewLogs: { _ in viewed = true }, + restart: { _ in Issue.record("An idle menu must not restart a server") }, + stop: { _ in Issue.record("An idle menu must not stop a server") }, + settings: { configured = true }) + let logs = try #require(menu.first { $0.title == L10n.string(key: "native.inline.viewLogs") }) + #expect(logs.isEnabled) + logs.action() + let settings = try #require(menu.first { $0.title == "Language Server Settings..." }) + #expect(settings.isEnabled) + settings.action() + #expect(viewed && configured) + #expect(menu.first { $0.title == "Restart All Servers" }?.isEnabled == false) + #expect(menu.first { $0.title == "Stop All Servers" }?.isEnabled == false) + } + + @Test func restartStopsBeforeReopeningOnlyMatchingDocumentsAndPreservesPreferences() async throws { + let harness = Harness() + defer { harness.sessions.stopAllLanguageServers() } + let matching = EditorDocument(url: harness.workspace.appendingPathComponent("a.example"), text: "", modificationDate: nil) + let other = EditorDocument(url: harness.workspace.appendingPathComponent("README.txt"), text: "", modificationDate: nil) + var activated: [URL] = [] + let reopened = TestGate() + harness.feature.configure(documentsProvider: { [other, matching] }, activateDocument: { document in + #expect(harness.session.stopCount == 1) + activated.append(document.url) + reopened.open() + return true + }, notify: { _ in }) + try harness.sessions.startLanguageServer(providerID: "example", rootURL: harness.workspace) + let preferences = harness.store.values + let token = harness.feature.activationToken(providerID: "example") + harness.feature.restart(providerID: "example") + try #require(await reopened.waitUntilOpen()) + #expect(activated == [matching.url]) + #expect(harness.feature.activationToken(providerID: "example") != token) + #expect(harness.store.values.keys.sorted() == preferences.keys.sorted()) + #expect(!harness.feature.isDisabled("example")) + } + + @Test func restartWithoutDocumentsRestartsTheSameProviderAndDisabledRestartDoesNothing() async throws { + let harness = Harness() + defer { harness.sessions.stopAllLanguageServers() } + try harness.sessions.startLanguageServer(providerID: "example", rootURL: harness.workspace) + let restarted = TestGate() + harness.session.onStart = { restarted.open() } + harness.feature.restart(providerID: "example") + try #require(await restarted.waitUntilOpen()) + #expect(harness.session.startCount == 2) + #expect(harness.session.stopCount == 1) + harness.feature.setEnabled(false, providerID: "example") + harness.feature.restart(providerID: "example") + #expect(harness.session.startCount == 2) + #expect(harness.feature.isDisabled("example")) + } + + @Test func restartWaitsForDelayedShutdownAndKeepsStoppingUntilTheSlotIsReleased() async throws { + let harness = Harness() + let released = TestGate(), restarted = TestGate() + harness.session.releaseStop = released + defer { released.open(); harness.feature.stop(providerID: "example") } + try harness.sessions.startLanguageServer(providerID: "example", rootURL: harness.workspace) + harness.feature.bindProjectPreparation(harness.sessions) + harness.session.onStart = { restarted.open() } + harness.feature.restart(providerID: "example") + try #require(await harness.session.stopRequested.waitUntilOpen()) + #expect(harness.session.startCount == 1) + #expect(harness.feature.serverRuntimeSnapshot.states["example"] == .stopping) + #expect(throws: (any Error).self) { + try harness.sessions.startLanguageServer(providerID: "example", rootURL: harness.workspace) + } + released.open() + try #require(await restarted.waitUntilOpen()) + #expect(harness.session.startCount == 2) + } + + @Test func stoppingWhileRestartWaitsCannotResurrectTheServer() async throws { + let harness = Harness() + let released = TestGate() + harness.session.releaseStop = released + defer { released.open(); harness.sessions.stopAllLanguageServers() } + try harness.sessions.startLanguageServer(providerID: "example", rootURL: harness.workspace) + harness.feature.restart(providerID: "example") + try #require(await harness.session.stopRequested.waitUntilOpen()) + harness.feature.stop(providerID: "example") + released.open() + #expect(await harness.sessions.stopLanguageServerAndWait(providerID: "example")) + #expect(harness.session.startCount == 1) + } + + @Test func aFailedShutdownKeepsItsSlotUntilAnExplicitRetryConfirmsRelease() async throws { + let harness = Harness() + defer { harness.sessions.stopAllLanguageServers() } + try harness.sessions.startLanguageServer(providerID: "example", rootURL: harness.workspace) + harness.session.stopCompletes = false + #expect(await harness.sessions.stopLanguageServerAndWait(providerID: "example") == false) + #expect(throws: (any Error).self) { + try harness.sessions.startLanguageServer(providerID: "example", rootURL: harness.workspace) + } + harness.session.stopCompletes = true + #expect(await harness.sessions.stopLanguageServerAndWait(providerID: "example")) + try harness.sessions.startLanguageServer(providerID: "example", rootURL: harness.workspace) + #expect(harness.session.startCount == 2) + } + + @Test func providerResetPreservesOtherLiveServersAndLogSelection() throws { + let harness = Harness(includesJava: true) + defer { harness.sessions.stopAllLanguageServers() } + harness.feature.bindProjectPreparation(harness.sessions) + try harness.sessions.startLanguageServer(providerID: "example", rootURL: harness.workspace) + try harness.sessions.startLanguageServer(providerID: "java", rootURL: harness.workspace) + harness.feature.logs.providerID = "example" + harness.sessions.recordLanguageServerLog(providerID: "example", level: .info, message: "retained output") + let before = harness.feature.serverRuntimeSnapshot + let logs = harness.feature.logs.entries + try harness.sessions.rebuildWorkspaceState(providerID: "java", rootURL: harness.workspace) + harness.feature.resetProviderState(providerID: "java") + #expect(harness.feature.serverRuntimeSnapshot.states["example"] == .ready) + #expect(harness.feature.serverRuntimeSnapshot.states["java"] == .stopped) + #expect(harness.feature.logs.providerID == "example") + #expect(harness.feature.logs.entries.filter { $0.providerID == "example" } + == logs.filter { $0.providerID == "example" }) + harness.sessions.recordLanguageServerLog(providerID: "example", level: .info, message: "later output") + #expect(harness.feature.serverRuntimeSnapshot.states["example"] == before.states["example"]) + } + + @Test func stopInvalidatesPendingActivationAndCallsRegisteredPreparationOwner() { + let harness = Harness() + var cancelled = 0 + harness.feature.registerPreparationCancellation(providerID: "example") { cancelled += 1 } + let old = harness.feature.activationToken(providerID: "example") + let other = harness.feature.activationToken(providerID: "other") + harness.feature.stop(providerID: "example") + #expect(cancelled == 1) + #expect(harness.feature.activationToken(providerID: "example") != old) + #expect(harness.feature.activationToken(providerID: "other") == other) + harness.feature.resetWorkspaceState() + #expect(harness.feature.activationToken(providerID: "other") != other) + } + + @Test func logFiltersAndClearArePerProviderAndNewEntriesRemainVisible() { + let logs = LanguageServerLogsModel() + let first = LanguageServerLogEntry(providerID: "a", level: .info, message: "one") + let second = LanguageServerLogEntry(providerID: "b", level: .warning, message: "two") + let third = LanguageServerLogEntry(providerID: "a", level: .error, message: "three") + logs.replace([third, second, first]) + logs.providerID = "a" + #expect(logs.visibleEntries.map(\.id) == [first.id, third.id]) + logs.minimumLevel = .warning + #expect(logs.visibleEntries.map(\.id) == [third.id]) + logs.clear() + logs.minimumLevel = .info + #expect(logs.visibleEntries.isEmpty) + logs.providerID = "b" + #expect(logs.visibleEntries.map(\.id) == [second.id]) + let newer = LanguageServerLogEntry(providerID: "a", level: .warning, message: "new") + logs.replace([newer, third, second, first]) + logs.providerID = "a" + #expect(logs.visibleEntries.map(\.id) == [newer.id]) + logs.reset() + #expect(logs.entries.isEmpty) + #expect(logs.providerID.isEmpty) + } + + @Test func logsTabReusesSelectionAndClosesBackToTheUnsavedDocument() async throws { + let store = StatusTestStore() + let settings = AppSettings(store: store) + let container = MacServiceContainer(store: store, settings: settings, moduleLaunchMode: .safeMode) + defer { container.moduleLifecycleCoordinator.stop() } + let model = AppModel(settings: settings, services: container.services) + try await WorkbenchTestScope.withCleanup({ await model.shutdownProjectSession() }) { _ in + model.documentFeature.openVirtualDocument(URL(string: "lithe-test://lsp/source.txt")!, text: "unsaved", displayPath: nil) + let document = try #require(model.activeDocument) + let file = EditorTabItem.document(document.id) + model.showLanguageServerLogs(providerID: "a") + #expect(model.editorTabItems == [file, .languageLogs]) + #expect(model.editorTabOrderFeature.focusedItem == .languageLogs) + #expect(model.activeDocument == nil) + model.showLanguageServerLogs(providerID: "b") + #expect(model.editorTabItems == [file, .languageLogs]) + #expect(model.languageToolingFeature.logs.providerID == "b") + model.selectEditorTab(file) + #expect(model.activeDocument === document) + model.selectEditorTab(.languageLogs) + model.documentFeature.openVirtualDocument(URL(string: "lithe-test://lsp/another.txt")!, text: "second", displayPath: nil) + #expect(model.editorTabOrderFeature.focusedItem != .languageLogs) + model.selectEditorTab(.languageLogs) + #expect(model.requestCloseActiveWorkbenchItem()) + #expect(!model.editorTabItems.contains(.languageLogs)) + #expect(model.activeDocument != nil) + #expect(document.text == "unsaved") + model.showLanguageServerLogs(providerID: "a") + model.openMediaFile(URL(fileURLWithPath: "/example/image.png"), kind: .image) + let media = try #require(model.activeMediaDocument) + #expect(model.editorTabOrderFeature.focusedItem == .media(media.id)) + model.closeMediaDocument(media) + model.showLanguageServerLogs(providerID: "a") + model.featureGraph.editorSession.resetContent() + #expect(!model.editorTabItems.contains(.languageLogs)) + } + } + + @Test func logsTabUsesSharedReorderingAndSplitGroupLifecycle() throws { + let order = EditorTabOrderFeatureModel() + let file = EditorTabItem.document(UUID()) + order.moveToEnd(file) + order.moveToEnd(.languageLogs) + order.focus(.languageLogs) + let group = try #require(order.groupLayout.groups.first) + #expect(order.drop(.languageLogs, into: group, side: .right)) + #expect(order.groupLayout.groups.count == 2) + order.reconcileDocuments(orderedIDs: [order.documentIDs[0]]) + #expect(order.contains(.languageLogs)) + order.remove(.languageLogs) + #expect(order.groupLayout.groups.count == 1) + #expect(order.items == [file]) + } + + @Test func menuActionsTargetTheirServerAndBulkActionsUseTheSnapshot() throws { + let servers = ["a", "b"].map { LSPStatusBarServer(id: $0, displayName: $0, status: .active, version: "1") } + var viewed: [String] = [], restarted: [String] = [], stopped: [String] = [] + var openedSettings = false + let items = LanguageServerStatusMenu.items(servers: servers, + viewLogs: { viewed.append($0) }, restart: { restarted.append($0) }, stop: { stopped.append($0) }, + settings: { openedSettings = true }) + let server = try #require(items.first { $0.title == "b" }) + #expect(!server.localizesTitle) + #expect(server.icon != nil) + guard case .submenu(let actions) = server.kind else { + Issue.record("Server row must expose a standard submenu") + return + } + actions.forEach { $0.action() } + #expect(viewed == ["b"]) + #expect(restarted == ["b"]) + #expect(stopped == ["b"]) + try #require(items.first { $0.title == "Restart All Servers" }).action() + try #require(items.first { $0.title == "Stop All Servers" }).action() + try #require(items.first { $0.title == "Language Server Settings..." }).action() + #expect(restarted == ["b", "a", "b"]) + #expect(stopped == ["b", "a", "b"]) + #expect(openedSettings) + } + + @Test(arguments: [ColorScheme.light, .dark], [CGFloat(360), 900]) + func logPanelRendersInNarrowAndWideDocks(scheme: ColorScheme, width: CGFloat) async throws { + let settings = AppSettings(store: StatusTestStore()) + let container = MacServiceContainer(store: StatusTestStore(), settings: settings, moduleLaunchMode: .safeMode) + defer { container.moduleLifecycleCoordinator.stop() } + let model = AppModel(settings: settings, services: container.services) + try await WorkbenchTestScope.withCleanup({ await model.shutdownProjectSession() }) { _ in + let logs = model.languageToolingFeature.logs + logs.providerID = "example" + logs.replace([ + LanguageServerLogEntry(timestamp: Date(timeIntervalSince1970: 100), providerID: "example", level: .error, + message: "Server exited", detail: "Example failure detail"), + LanguageServerLogEntry(timestamp: Date(timeIntervalSince1970: 99), providerID: "example", level: .warning, + message: "Server warning"), + LanguageServerLogEntry(timestamp: Date(timeIntervalSince1970: 98), providerID: "example", level: .info, + message: "Server ready") + ]) + let host = NSHostingView(rootView: LanguageServerLogsView(feature: logs) + .environmentObject(model).environmentObject(settings).environment(\.colorScheme, scheme)) + let window = NSWindow(contentRect: NSRect(x: 0, y: 0, width: width, height: 320), + styleMask: [.borderless], backing: .buffered, defer: false) + window.isReleasedWhenClosed = false + window.contentView = host + defer { window.contentView = nil; window.close() } + host.layoutSubtreeIfNeeded() + #expect(host.frame.width == width) + func textView(in view: NSView) -> NSTextView? { + if let text = view as? NSTextView { return text } + return view.subviews.lazy.compactMap { textView(in: $0) }.first + } + let nativeText = try #require(textView(in: host)) + #expect(nativeText.string.contains("Server ready")) + #expect(nativeText.enclosingScrollView?.frame.width == width) + #expect(nativeText.isEditable == false) + #expect(nativeText.isSelectable) + let bitmap = try #require(host.bitmapImageRepForCachingDisplay(in: host.bounds)) + host.cacheDisplay(in: host.bounds, to: bitmap) + #expect(bitmap.pixelsWide > 0 && bitmap.pixelsHigh > 0) + if let directory = ProcessInfo.processInfo.environment["LITHE_LSP_SNAPSHOT_DIR"] { + let output = URL(fileURLWithPath: directory) + try FileManager.default.createDirectory(at: output, withIntermediateDirectories: true) + let data = try #require(bitmap.representation(using: .png, properties: [:])) + try data.write(to: output.appendingPathComponent("logs-\(scheme)-\(Int(width)).png")) + } + } + } + + private func registration(_ id: String, _ name: String) -> LanguageServerRegistration { + LanguageServerRegistration(id: id, pluginID: "org.example.tools", executableNames: [name]) + } +} + +@MainActor +private final class Harness { + let workspace = URL(fileURLWithPath: "/example/workspace") + let session = StatusTestSession() + let store = StatusTestStore() + let sessions: LanguageToolingSessionManager + let feature: LanguageToolingFeatureModel + + init(includesJava: Bool = false) { + let descriptor = LanguageProviderDescriptor(id: "example", displayName: "Example", fileExtensions: ["example"], + capabilities: .languageServer, activationPolicy: .onDemand) + let java = LanguageProviderDescriptor(id: "java", displayName: "Java", fileExtensions: ["java"], + capabilities: .languageServer, activationPolicy: .onDemand) + let source = StatusTestCatalog(catalog: LanguageProviderCatalog(descriptors: includesJava ? [descriptor, java] : [descriptor])) + var runtimes: [any LanguageProviderRuntime] = [StatusTestRuntime(descriptor: descriptor, session: session)] + if includesJava { runtimes.append(StatusTestRuntime(descriptor: java, session: StatusTestSession())) } + let sessions = LanguageToolingSessionManager(catalog: source.catalog, + runtimes: runtimes, workspaceStateResetter: { _, _, _ in }) + self.sessions = sessions + feature = LanguageToolingFeatureModel(catalogSource: source, catalogSnapshot: source.load(workspaceURL: nil), + preferences: MacWorkspaceLanguageServerPreferencesStore(store: store), sessionsProvider: { sessions }) + feature.reloadCatalog(for: workspace) + } +} + +private struct StatusTestCatalog: LanguageProviderCatalogSource { + let catalog: LanguageProviderCatalog + func load(workspaceURL: URL?) -> LanguageProviderCatalogSnapshot { + .init(catalog: catalog, schemaVersion: nil, origin: .builtin, issues: []) + } +} + +private final class StatusTestStore: KeyValueStore { + private(set) var values: [String: Any] = [:] + func data(forKey key: String) -> Data? { values[key] as? Data } + func object(forKey key: String) -> Any? { values[key] } + func string(forKey key: String) -> String? { values[key] as? String } + func stringArray(forKey key: String) -> [String]? { values[key] as? [String] } + func set(_ value: Any?, forKey key: String) { values[key] = value } +} + +@MainActor +private final class StatusTestRuntime: LanguageProviderRuntime { + let descriptor: LanguageProviderDescriptor + let session: StatusTestSession + let supportsLanguageServerSession = true + init(descriptor: LanguageProviderDescriptor, session: StatusTestSession) { + self.descriptor = descriptor + self.session = session + } + func makeLanguageServerSession() -> (any LanguageServerSession)? { session } +} + +@MainActor +private final class StatusTestSession: LanguageServerSession { + var isRunning = false + var javaTestRunnerURL: URL? { nil } + var onDiagnostics: ((URL, [LanguageServerDiagnostic]) -> Void)? + var onStateChange: ((LanguageServerSessionState) -> Void)? + var startCount = 0 + var stopCount = 0 + var releaseStop: TestGate? + var stopCompletes = true + let stopRequested = TestGate() + var onStart: (() -> Void)? + func start(rootURL: URL, workspaceFingerprint: String?) throws { + isRunning = true + startCount += 1 + onStateChange?(.ready) + onStart?() + } + func stop() { isRunning = false; stopCount += 1 } + func stopAndWait() async -> Bool { + stopRequested.open() + guard stopCompletes else { return false } + if let releaseStop { + guard await releaseStop.waitUntilOpen() else { return false } + } + stop() + return true + } + func synchronize(fileURL: URL, text: String, languageID: String) throws {} + func closeDocument(_ fileURL: URL) {} + func completions(fileURL: URL, position: LanguageServerPosition, completion: @escaping (Result<[LanguageServerCompletionItem], Error>) -> Void) throws { completion(.success([])) } + func hover(fileURL: URL, position: LanguageServerPosition, completion: @escaping (Result) -> Void) throws { completion(.success(nil)) } + func navigate(method: String, fileURL: URL, position: LanguageServerPosition, completion: @escaping (Result<[LanguageServerLocation], Error>) -> Void) throws { completion(.success([])) } + func rename(fileURL: URL, position: LanguageServerPosition, newName: String, completion: @escaping (Result) -> Void) throws { completion(.success(.init())) } + func format(fileURL: URL, completion: @escaping (Result<[LanguageServerTextEdit], Error>) -> Void) throws { completion(.success([])) } + func codeActions(fileURL: URL, range: LanguageServerRange, diagnostics: [LanguageServerDiagnostic], completion: @escaping (Result<[LanguageServerCodeAction], Error>) -> Void) throws { completion(.success([])) } + func resolveCompletion(_ item: LanguageServerCompletionItem, fileURL: URL, completion: @escaping (Result) -> Void) throws { completion(.success(item)) } + func resolveCodeAction(_ action: LanguageServerCodeAction, fileURL: URL, completion: @escaping (Result) -> Void) throws { completion(.success(action)) } + func execute(_ command: LanguageServerCommand, fileURL: URL, completion: @escaping (Result) -> Void) throws { completion(.success(())) } + func resolveVirtualDocument(uri: String, completion: @escaping (Result) -> Void) throws { completion(.success("")) } + func javaEntrypoints(completion: @escaping (Result) -> Void) throws { throw CancellationError() } +} diff --git a/macos/Tests/LitheTests/MacBuildProviderSessionsTests.swift b/macos/Tests/LitheTests/MacBuildProviderSessionsTests.swift index 40e21a6d97..d4b4329572 100644 --- a/macos/Tests/LitheTests/MacBuildProviderSessionsTests.swift +++ b/macos/Tests/LitheTests/MacBuildProviderSessionsTests.swift @@ -9,6 +9,33 @@ import Testing /// process a request reuses, and when the host stops or restarts it. @MainActor struct MacBuildProviderSessionsTests { + @Test func stopAndWaitIncludesTerminalEventAndAsynchronousResourceRelease() async throws { + let core = ScriptedProviderCore(readyAfterStop: true) + let session = LanguageServerRuntimeSession(providerID: "fixture", + executableURL: URL(fileURLWithPath: "/tools/server"), arguments: [], environment: [:], core: core) + let releasing = TestGate(), release = TestGate(), finished = TestGate() + session.releaseResources = { + releasing.open() + #expect(await release.waitUntilOpen(), "Resource release was not permitted") + } + try session.start(rootURL: URL(fileURLWithPath: "/workspace"), workspaceFingerprint: nil) + let closing = Task { @MainActor in + let result = await session.stopAndWait() + finished.open() + return result + } + defer { core.finishStopping(); release.open(); closing.cancel() } + try #require(await core.stopRequested.waitUntilOpen()) + #expect(!finished.isOpen) + core.finishStopping() + try #require(await releasing.waitUntilOpen()) + #expect(core.destroyed.isOpen) + #expect(!finished.isOpen, "Termination alone does not release package/workspace resources") + release.open() + try #require(await finished.waitUntilOpen()) + #expect(await closing.value) + } + @Test(arguments: [false, true]) func documentSavesReachCoreAndPropagateTransportFailure(fails: Bool) async throws { let core = ScriptedProviderCore() @@ -241,7 +268,7 @@ struct MacBuildProviderSessionsTests { #expect(await core.destroyed.waitUntilOpen()) #expect(await resourcesReleased.waitUntilOpen()) #expect(states == [.startingProcess, .stopped]) - #expect(core.stopCalls.isEmpty) + #expect(core.stopCalls == ["provider-1"]) } @Test @@ -839,6 +866,7 @@ private final class ScriptedProviderCore: LanguageServerRuntimeCore, @unchecked let functionCancelled = TestGate() let commandStarted = TestGate() let destroyed = TestGate() + let stopRequested = TestGate() let releaseStartup = TestGate() let synchronized = TestGate() /// Opened when a `workspace.stuck` send is blocked; it stays blocked, as @@ -1068,6 +1096,7 @@ private final class ScriptedProviderCore: LanguageServerRuntimeCore, @unchecked let state = readyAfterStop ? "ready" : "stopped" events[sessionID, default: []].append(LanguageServerRuntimeEvent(type: "stateChanged", state: state)) } + stopRequested.open() } func finishStopping() { diff --git a/macos/Tests/LitheTests/PluginManagerTests.swift b/macos/Tests/LitheTests/PluginManagerTests.swift index 6ffec84919..3ddbc4dbde 100644 --- a/macos/Tests/LitheTests/PluginManagerTests.swift +++ b/macos/Tests/LitheTests/PluginManagerTests.swift @@ -7,6 +7,51 @@ import Testing @MainActor struct PluginManagerTests { + @Test func bundledServersAreInjectedOnlyAfterTheirPluginIsEnabled() async throws { + let root = temporaryRoot() + defer { try? FileManager.default.removeItem(at: root) } + let configuration = MacModuleConfigurationStore(store: PluginManagerKeyValueStore()) + let runtime = ModuleRuntime(configurationStore: configuration, recoveryStore: configuration) + let plugin = try #require(BundledLanguagePluginCatalog.manifests.first { + $0.languageSupports?.first?.id == "clangd" + }) + let declaration = try #require(plugin.modules.first) + try runtime.register(ModuleFactory(manifest: declaration.manifest) { + PluginManagerTestModule(manifest: declaration.manifest, recorder: PluginManagerModuleRecorder()) + }) + let manager = MacPluginManager(packageStore: makeStore(root: root), moduleRuntime: runtime, + configurationStore: configuration, settings: InMemoryPluginSettings(), launchMode: .normal, + startup: MacPluginStartupResult(installedPlugins: [], registeredPlugins: [], issues: []), + managedBuiltInPlugins: [plugin]) + let catalog = RustLanguageProviderCatalogSource(core: RustCoreBridge()).load().catalog + #expect(manager.languageServerRegistrations(catalog: catalog).isEmpty) + try await manager.setEnabled(true, for: plugin.id) + #expect(manager.languageServerRegistrations(catalog: catalog).map(\.executableNames) == [["clangd"]]) + try await manager.setEnabled(false, for: plugin.id) + #expect(manager.languageServerRegistrations(catalog: catalog).isEmpty) + } + + @Test func serverRegistrationUsesDeclaredCommandsOrExistingServerMetadataWithoutInventingNames() throws { + let java = try DeclarativePluginTestSupport.officialDescriptor("JavaSupport") + let server = try #require(java.languageServers.first) + let catalog = RustLanguageProviderCatalogSource(core: RustCoreBridge()).load().catalog + let entry = MacPluginManager.languageServerRegistration(server, pluginID: java.id.rawValue, catalog: catalog) + #expect(entry.executableNames == ["jdtls"]) + #expect(entry.pluginID == java.id.rawValue) + let unnamed = MacPluginManager.languageServerRegistration(server, pluginID: java.id.rawValue, + catalog: LanguageProviderCatalog(descriptors: [])) + #expect(unnamed.executableNames.isEmpty) + let row = try #require(LSPControlCenterPresenter.statusBarServers(registrations: [unnamed], + states: [:], infos: [:], disabledProviderIDs: []).first) + #expect(row.displayName == java.id.rawValue) + + let installed = try installedPlugin() + let direct = try #require(installed.descriptor.languageServers.first) + let directEntry = MacPluginManager.languageServerRegistration(direct, + pluginID: installed.manifest.id.rawValue, catalog: catalog) + #expect(directEntry.executableNames == ["fixture-language-server"]) + } + @Test func bundledLanguageCatalogOnlyCreatesPluginsForImplementedProcessFeatures() throws { let expectedIDs: Set = [ @@ -106,6 +151,7 @@ struct PluginManagerTests { ) #expect(manager.snapshots.isEmpty) + #expect(manager.languageServerRegistrations(catalog: .compatibilityFallback).isEmpty) } @Test @@ -135,6 +181,7 @@ struct PluginManagerTests { let snapshot = try #require(manager.snapshots.first { $0.id == installed.manifest.id }) #expect(snapshot.isEnabled) #expect(snapshot.requiresRestart) + #expect(manager.languageServerRegistrations(catalog: .compatibilityFallback).isEmpty) } /// A declarative plugin registered at launch has no code mapped in the @@ -174,6 +221,9 @@ struct PluginManagerTests { invalidateWebPages: { invalidated.append($0) }, enableWebPages: { webPagesEnabled.append($0) } ) + #expect(manager.languageServerRegistrations(catalog: .compatibilityFallback) == [LanguageServerRegistration( + id: "fixture", pluginID: installed.manifest.id.rawValue, executableNames: ["fixture-language-server"] + )]) try await manager.setEnabled(false, for: installed.manifest.id) @@ -183,6 +233,7 @@ struct PluginManagerTests { let disabled = try #require(manager.snapshots.first { $0.id == installed.manifest.id }) #expect(!disabled.isEnabled) #expect(!disabled.requiresRestart) + #expect(manager.languageServerRegistrations(catalog: .compatibilityFallback).isEmpty) try await manager.setEnabled(true, for: installed.manifest.id) let enabled = try #require(manager.snapshots.first { $0.id == installed.manifest.id }) @@ -190,6 +241,7 @@ struct PluginManagerTests { #expect(!enabled.requiresRestart) #expect(invalidated == [installed.manifest.id]) #expect(webPagesEnabled == [installed.manifest.id]) + #expect(manager.languageServerRegistrations(catalog: .compatibilityFallback).map(\.id) == ["fixture"]) } @Test diff --git a/shared/i18n/locales/en-US.json b/shared/i18n/locales/en-US.json index 3deb27dfdb..0d439efe2a 100644 --- a/shared/i18n/locales/en-US.json +++ b/shared/i18n/locales/en-US.json @@ -9730,6 +9730,23 @@ "native.onePatternPerLineCaseInsensitivePatternsUseWildcardsASimplifiedFormOfRegularEx35941b6a99": "One pattern per line, case-insensitive. Patterns use wildcards, a simplified form of regular expressions: `*` matches any characters and `?` matches one.\nEnd a pattern with `/`, `/*` or `/**` to hide a folder and everything in it; start with `**/` to match at any depth. A pattern without a trailing slash only hides files: `.lithe` hides a file named .lithe, not the folder.\nExamples:\n`**/dist/` — every dist folder\n`.lithe/**` — the .lithe folder in the project root\n`*.log` — all log files\n`docs/*.md` — Markdown files in docs\nThe list starts with the built-in patterns. Delete one to show those files again; type it back to hide them.", "history.clearFailed": "Could not clear this project's local history. Check storage permissions and try again.", "native.addClickableActionsBesideDocumentText": "Add clickable actions beside document text", + "native.lspStatusLabel": "LSP", + "native.restartServer": "Restart Server", + "native.stopServer": "Stop Server", + "native.restartAllServers": "Restart All Servers", + "native.stopAllServers": "Stop All Servers", + "native.languageServerSettingsAction": "Language Server Settings...", + "native.lspStopOnDemandHint": "Starts again when a matching document is opened or edited.", + "native.lspLogsTitle": "LSP Logs", + "native.lspServerLogs": "Server Logs", + "native.lspAvailableLogChannels": "Shows session events and server output. Server Trace and RPC message capture are not available.", + "native.clearLogView": "Clear View", + "native.lspClearViewHint": "Clear only the selected server's visible logs. Collected diagnostic logs are kept.", + "native.noMatchingLanguageServerLogs": "No matching language server logs", + "native.logInfoLevel": "Info", + "native.lspNotStarted": "Not started", + "native.noRegisteredLanguageServers": "No registered language servers", + "native.languageServerStillStopping": "The language server is still stopping. Try again after it has stopped.", "agent.history.provider": "Conversation provider", "agent.history.allProviders": "All providers", "agent.history.unknownProvider": "Unknown provider", diff --git a/shared/i18n/locales/zh-CN.json b/shared/i18n/locales/zh-CN.json index 7c5038be86..eb8487faff 100644 --- a/shared/i18n/locales/zh-CN.json +++ b/shared/i18n/locales/zh-CN.json @@ -9730,6 +9730,23 @@ "native.onePatternPerLineCaseInsensitivePatternsUseWildcardsASimplifiedFormOfRegularEx35941b6a99": "每行一条规则,不区分大小写。规则使用通配符,是正则表达式的简化写法:`*` 匹配任意字符,`?` 匹配单个字符。\n以 `/`、`/*` 或 `/**` 结尾表示隐藏整个文件夹及其内容,以 `**/` 开头表示匹配任意层级。不带结尾斜杠的规则只隐藏文件:`.lithe` 隐藏名为 .lithe 的文件,而不是文件夹。\n示例:\n`**/dist/` — 任意层级的 dist 文件夹\n`.lithe/**` — 项目根目录下的 .lithe 文件夹\n`*.log` — 所有 .log 文件\n`docs/*.md` — docs 下的 Markdown 文件\n列表开头是内置规则。删掉一行即可重新显示这些文件,再输入回来就会重新隐藏。", "history.clearFailed": "无法清空此项目的本地历史。请检查存储目录权限后重试。", "native.addClickableActionsBesideDocumentText": "在文档文本旁添加可点击的操作", + "native.lspStatusLabel": "LSP", + "native.restartServer": "重启服务器", + "native.stopServer": "停止服务器", + "native.restartAllServers": "重启所有服务器", + "native.stopAllServers": "停止所有服务器", + "native.languageServerSettingsAction": "语言服务器设置...", + "native.lspStopOnDemandHint": "打开、切换到或编辑匹配的文档时将再次启动。", + "native.lspLogsTitle": "LSP 日志", + "native.lspServerLogs": "服务器日志", + "native.lspAvailableLogChannels": "显示会话事件和服务器输出。暂不支持服务器跟踪和 RPC 消息采集。", + "native.clearLogView": "清空视图", + "native.lspClearViewHint": "仅清空所选服务器的可见日志,保留已采集的诊断日志。", + "native.noMatchingLanguageServerLogs": "没有匹配的语言服务器日志", + "native.logInfoLevel": "信息", + "native.lspNotStarted": "未启动", + "native.noRegisteredLanguageServers": "未注册语言服务器", + "native.languageServerStillStopping": "语言服务器仍在停止。请在停止完成后重试。", "agent.history.provider": "对话供应商", "agent.history.allProviders": "全部供应商", "agent.history.unknownProvider": "未知供应商", diff --git a/shared/i18n/messages.json b/shared/i18n/messages.json index 292d325ae5..24c26b2827 100644 --- a/shared/i18n/messages.json +++ b/shared/i18n/messages.json @@ -93147,6 +93147,193 @@ "arguments": [] } }, + { + "id": "native.lspStatusLabel", + "description": "Native LSP status and log viewer", + "platforms": [ + "macos" + ], + "macos": { + "key": "LSP", + "arguments": [] + } + }, + { + "id": "native.restartServer", + "description": "Native LSP status and log viewer", + "platforms": [ + "macos" + ], + "macos": { + "key": "Restart Server", + "arguments": [] + } + }, + { + "id": "native.stopServer", + "description": "Native LSP status and log viewer", + "platforms": [ + "macos" + ], + "macos": { + "key": "Stop Server", + "arguments": [] + } + }, + { + "id": "native.restartAllServers", + "description": "Native LSP status and log viewer", + "platforms": [ + "macos" + ], + "macos": { + "key": "Restart All Servers", + "arguments": [] + } + }, + { + "id": "native.stopAllServers", + "description": "Native LSP status and log viewer", + "platforms": [ + "macos" + ], + "macos": { + "key": "Stop All Servers", + "arguments": [] + } + }, + { + "id": "native.languageServerSettingsAction", + "description": "Native LSP status and log viewer", + "platforms": [ + "macos" + ], + "macos": { + "key": "Language Server Settings...", + "arguments": [] + } + }, + { + "id": "native.lspStopOnDemandHint", + "description": "Native LSP status and log viewer", + "platforms": [ + "macos" + ], + "macos": { + "key": "Starts again when a matching document is opened or edited.", + "arguments": [] + } + }, + { + "id": "native.lspLogsTitle", + "description": "Native LSP status and log viewer", + "platforms": [ + "macos" + ], + "macos": { + "key": "LSP Logs", + "arguments": [] + } + }, + { + "id": "native.lspServerLogs", + "description": "Native LSP status and log viewer", + "platforms": [ + "macos" + ], + "macos": { + "key": "Server Logs", + "arguments": [] + } + }, + { + "id": "native.lspAvailableLogChannels", + "description": "Native LSP status and log viewer", + "platforms": [ + "macos" + ], + "macos": { + "key": "Shows session events and server output. Server Trace and RPC message capture are not available.", + "arguments": [] + } + }, + { + "id": "native.clearLogView", + "description": "Native LSP status and log viewer", + "platforms": [ + "macos" + ], + "macos": { + "key": "Clear View", + "arguments": [] + } + }, + { + "id": "native.lspClearViewHint", + "description": "Native LSP status and log viewer", + "platforms": [ + "macos" + ], + "macos": { + "key": "Clear only the selected server's visible logs. Collected diagnostic logs are kept.", + "arguments": [] + } + }, + { + "id": "native.noMatchingLanguageServerLogs", + "description": "Native LSP status and log viewer", + "platforms": [ + "macos" + ], + "macos": { + "key": "No matching language server logs", + "arguments": [] + } + }, + { + "id": "native.logInfoLevel", + "description": "Native LSP status and log viewer", + "platforms": [ + "macos" + ], + "macos": { + "key": "Info", + "arguments": [] + } + }, + { + "id": "native.lspNotStarted", + "description": "LSP entry remains available before any server has started", + "platforms": [ + "macos" + ], + "macos": { + "key": "Not started", + "arguments": [] + } + }, + { + "id": "native.noRegisteredLanguageServers", + "description": "LSP entry remains available before any server has started", + "platforms": [ + "macos" + ], + "macos": { + "key": "No registered language servers", + "arguments": [] + } + }, + { + "id": "native.languageServerStillStopping", + "description": "Restart refuses to overlap an old language-server process that has not released its resources", + "platforms": [ + "macos" + ], + "macos": { + "key": "The language server is still stopping. Try again after it has stopped.", + "arguments": [] + } + }, { "id": "agent.history.provider", "description": "Agent conversation history provider filtering", diff --git a/shared/platform-feature-matrix/features/lsp-status-logs.json b/shared/platform-feature-matrix/features/lsp-status-logs.json new file mode 100644 index 0000000000..acffac829b --- /dev/null +++ b/shared/platform-feature-matrix/features/lsp-status-logs.json @@ -0,0 +1,34 @@ +{ + "id": "lsp-status-logs", + "area": "编辑器", + "group": "语言服务", + "capability": "LSP 状态栏控制与按服务器查看日志", + "macos": { + "evidence": [ + "macos/Sources/Lithe/Views/Workbench/LanguageServerStatusView.swift", + "macos/Sources/Lithe/Views/Language/LanguageServerLogsView.swift", + "macos/Sources/Lithe/Application/Features/LanguageServerLogsModel.swift", + "macos/Sources/Lithe/Application/Features/LanguageToolingFeatureModel.swift", + "macos/Sources/Lithe/Application/Features/LSPControlCenterPresentation.swift", + "macos/Sources/Lithe/Models/AppModel/AppModel+LanguageServerRuntime.swift", + "macos/Tests/LitheTests/LanguageServerStatusTests.swift", + ".agents/notes/implemented/architecture/2026-09-13-language-tooling-and-lsp-runtime-ownership.md", + "macos/Sources/Lithe/Platform/MacOS/Plugins/MacPluginManager.swift", + "macos/Tests/LitheTests/PluginManagerTests.swift", + "macos/Sources/LitheLanguageIntelligenceModule/Runtime/LanguageServerSession.swift", + "macos/Sources/LitheLanguageIntelligenceModule/Services/LanguageToolingSessionManager.swift", + "macos/Tests/LitheTests/MacBuildProviderSessionsTests.swift" + ], + "implementationStatus": "implemented", + "verificationStatus": "pending" + }, + "windows": { + "evidence": [ + "windows/tauri/src/features/editor/lsp" + ], + "implementationStatus": "missing", + "verificationStatus": "not-applicable" + }, + "owner": "Language Tooling", + "verification": "在 macOS 打开至少两种已安装语言插件的源文件,检查右下角 LSP 状态及数量、绿色运行、蓝色启动、黄色停止和红色故障。入口在没有打开源文件、没有活跃会话和语言模块未激活时仍显示。菜单仅由当前启用且已注册的插件的 LSP 声明注入(内置可管理插件也需显式启用);没有插件时列表为空,宿主内置语言目录不得出现。启用 Java 等插件后才显示对应服务器;名称取插件已声明的服务器 executableNames;runtime 启动取关联描述元数据现有的 languageServerLaunch.executableNames,不显示 java/node 运行时名。无该字段则直接显示插件 ID,不回退语言名、插件展示名或服务器自报名称;元数据不得单独贡献服务器行。不新增插件字段和版本。禁用、隔离、安全模式抑制或未注册插件不贡献行。显示真实运行、未启动、停止和工作区停用状态,不以当前文件类型过滤运行服务;空列表仍能查看日志和打开设置,重启/停止全部只处理已有会话。代码诊断错误不改变运行状态;菜单按名称及 ID 稳定排序。分别重启和停止单个及全部服务器,确认不写工作区启用偏好、停止阻止旧异步激活重新启动、下一次显式文档打开或编辑仍按需启动;无打开文档的预热服务器也能重启。查看日志打开普通编辑器中的 LSP 日志标签并选择对应服务器;重复查看复用同一标签,不创建底部工具窗口。关闭日志标签返回原文件且不丢失未保存内容,支持共享标签排序与分组。验证服务器切换、最低级别筛选、保留原文、复制、清空当前服务器视图、新日志继续出现和其他服务器不受影响。检查服务器停止后日志标签仍可见,在中英语言、明暗主题、窄窗口及标签拖动分组后正常显示。Trace 与 RPC 原始消息暂不采集,信息提示明确说明;不得把同一日志伪装成多个通道。真实产品流程结束后关闭本次实例,比较 app bundle 文件清单不变。Windows 暂无该状态项与专用日志视图,不宣称两端一致。 PR #1631 review:延迟旧服务 shutdown 与异步资源释放,确认重启期间保持 stopping、旧资源释放前不启动替代会话,等待超时不重启;等待时再次停止或换工作区不能复活服务。Java 与另一服务同时运行时重建 Java 索引,确认另一服务状态和所选日志保持,后续同状态日志不需要触发投影重建。" +} From 5e31898f6f7e837ceeb84ba48d9b32b6c262b73d Mon Sep 17 00:00:00 2001 From: Xiaoyumuxi <23722032@bjtu.edu.cn> Date: Sun, 1 Nov 2026 18:25:56 +0800 Subject: [PATCH 22/27] fix(markdown): preserve inline HTML image layout and alignment (#1623) (#1635) --- .../2026-11-01-markdown-html-inline-images.md | 62 +++++++++ .../Resources/MarkdownPreview/preview.css | 6 +- .../LitheTests/MarkdownPreviewHTMLTests.swift | 121 ++++++++++++++++++ rust/lithe-core/src/project/markdown.rs | 31 +++++ shared/fixtures/editor/markdown-html-v1.json | 3 + .../features/markdown-rendering.json | 12 +- 6 files changed, 229 insertions(+), 6 deletions(-) create mode 100644 .agents/notes/implemented/bug-fix/2026-11-01-markdown-html-inline-images.md create mode 100644 macos/Tests/LitheTests/MarkdownPreviewHTMLTests.swift create mode 100644 shared/fixtures/editor/markdown-html-v1.json diff --git a/.agents/notes/implemented/bug-fix/2026-11-01-markdown-html-inline-images.md b/.agents/notes/implemented/bug-fix/2026-11-01-markdown-html-inline-images.md new file mode 100644 index 0000000000..c44d9a652d --- /dev/null +++ b/.agents/notes/implemented/bug-fix/2026-11-01-markdown-html-inline-images.md @@ -0,0 +1,62 @@ +# Agent 笔记:Markdown 内嵌 HTML 的图片行内排版与安全对齐 + +状态:已实现 + +## 先说结论 + +README 同一段中的多个徽章应当在宽度足够时同行显示,而不是每张图片独占一行。 +macOS Markdown 预览让图片保留行内排版,空间不足时由浏览器自然折行;共享过滤器保留 +容器、段落和标题的 `align` 对齐属性。这不是开放完整网页执行能力,脚本、事件处理器、 +危险链接和任意行内样式仍然被删除。 + +## 问题 + +Issue #1623 中 README 徽章纵向堆叠、标题丢失居中,看起来像是 `

` 被插入了换行。 +实际是预览样式把所有图片都设为块级元素(每个元素另起一行),同时安全过滤删除了 +`div`、`p` 和标题上的 `align`。Markdown 解析器并没有为每个徽章插入 `
`。 + +## 决策 + +- 图片使用行内块(`inline-block`,可在同一文本行内排放的图片盒子),去掉全局图片外边距, + 服从父容器对齐。段落间距仍由 `p` 提供,视频保留原来的块级布局。 +- 共享 Rust 渲染继续复用 Comrak(Markdown 解析器)和 Ammonia(HTML 安全过滤器)。 + 仅为 `div`、`p`、`h1` 至 `h6` 保留 `align`,不增加任意 CSS 样式权限。 +- 正确例子:`

` 由浏览器计算同行、 + 居中和窄预览折行。不要用全局 `img { display: block }`、强制不换行或删除 `

` 修补。 +- 新共享 fixture 描述安全 HTML 和恶意属性混合输入;原生测试经过真实 Rust bridge、 + 打包预览模板、资源处理器和 WebKit 浏览器引擎,检查几何位置而不模拟布局结果。 + +## 考虑过的备选方案 + +- 只对徽章或 README 域名特判:会漏掉其他图片地址和普通内嵌 HTML,不采用。 +- 给段落套不换行或弹性布局:会破坏正文行内图片和显式换行,窄分栏也可能横向溢出,不采用。 +- 放开所有 `style`:能覆盖更多网页布局,但也允许文档覆盖预览界面;本次只需安全对齐属性,不采用。 +- 重写解析器或扩大到 Windows 方言迁移:不是本缺陷的根因。本次不改变 Windows 的简化解析器, + 不宣称两端 Markdown、公式或图表能力已完全一致。 + +## 后果 + +常见 README 的徽章行和 HTML 对齐恢复,普通行内图片不再拆段;单独图片默认不再被全局强制居中, +作者需要时可以使用安全对齐容器。GitHub 专有媒体转换、任意 CSS、可执行嵌入不属于这次支持范围。 + +渲染结果和网页状态仅在内存及非持久 WebKit 存储中使用,资源处理器仍只读用户工作区。 +不新增运行时下载、缓存目录或跨工作树共享资源,不写 app bundle,不改变代码签名和 Sparkle 增量更新基线。 + +## 验证 + +- `cargo test --manifest-path rust/Cargo.toml -p lithe-core project::markdown::tests`: + 直接测试生产解析与过滤,保留对齐和尺寸,同时剥离脚本、事件、样式和危险 URL。 +- `./.agents/skills/write-stable-tests/scripts/test-stability-macos.sh -- --filter MarkdownPreviewHTMLTests`: + 深浅主题实际测量徽章同行、居中、窄视口折行,检查段落、显式换行、相对资源和图片放大。 +- `./scripts/macos/verify/verify-runtime-bundle-immutability.sh`。 +- `./scripts/platform-feature-matrix/verify-platform-feature-matrix.sh`。 + +原生组件回归不替代完整应用手动验收,Windows 运行时未在本次验证。 + +## 适用范围 + +- `rust/lithe-core/src/project/markdown.rs` +- `macos/Sources/Lithe/Resources/MarkdownPreview/preview.css` +- `macos/Tests/LitheTests/MarkdownPreviewHTMLTests.swift` +- `shared/fixtures/editor/markdown-html-v1.json` +- `shared/platform-feature-matrix/features/markdown-rendering.json` diff --git a/macos/Sources/Lithe/Resources/MarkdownPreview/preview.css b/macos/Sources/Lithe/Resources/MarkdownPreview/preview.css index fd52e20ba8..3c60dd962a 100644 --- a/macos/Sources/Lithe/Resources/MarkdownPreview/preview.css +++ b/macos/Sources/Lithe/Resources/MarkdownPreview/preview.css @@ -247,8 +247,10 @@ details { margin: 1em 0; padding: 0.75em 0.9em; border: 1px solid var(--border); summary { cursor: pointer; font-weight: 600; } details > :last-child { margin-bottom: 0; } -img, video { display: block; max-width: 100%; height: auto; margin: 1.25em auto; border-radius: 4px; } -img { cursor: zoom-in; } +/* Images participate in their paragraph's inline flow: README badges should + wrap only when space runs out, and inherit their container's alignment. */ +img { display: inline-block; max-width: 100%; height: auto; margin: 0; border-radius: 4px; vertical-align: middle; cursor: zoom-in; } +video { display: block; max-width: 100%; height: auto; margin: 1.25em auto; border-radius: 4px; } audio { width: min(100%, 520px); } .diagram-shell { diff --git a/macos/Tests/LitheTests/MarkdownPreviewHTMLTests.swift b/macos/Tests/LitheTests/MarkdownPreviewHTMLTests.swift new file mode 100644 index 0000000000..95eca8a13a --- /dev/null +++ b/macos/Tests/LitheTests/MarkdownPreviewHTMLTests.swift @@ -0,0 +1,121 @@ +import AppKit +import Foundation +import Testing +import WebKit +@testable import Lithe + +@MainActor +struct MarkdownPreviewHTMLTests { + @Test(arguments: ["light", "dark"]) + func htmlBadgesUseInlineFlowAndPreserveAlignment(appearance: String) async throws { + let root = URL(fileURLWithPath: #filePath) + .deletingLastPathComponent().deletingLastPathComponent() + .deletingLastPathComponent().deletingLastPathComponent() + let fixture = try JSONDecoder().decode( + Fixture.self, + from: Data(contentsOf: root.appendingPathComponent("shared/fixtures/editor/markdown-html-v1.json")) + ) + let html = try RustCoreBridge().markdownRender(fixture.source).get().html + let workspace = try HTMLPreviewFixture(files: [ + "badge.svg": "" + ]) + let coordinator = MarkdownPreviewWebView.Coordinator(scrollPosition: nil) + let documentURL = workspace.url("README.md") + coordinator.assetHandler.update(documentURL: documentURL, workspaceURL: workspace.workspace) + let configuration = WKWebViewConfiguration() + configuration.websiteDataStore = .nonPersistent() + configuration.setURLSchemeHandler(coordinator.assetHandler, forURLScheme: MarkdownPreviewAssetResolver.scheme) + let webView = WKWebView(frame: .zero, configuration: configuration) + webView.navigationDelegate = coordinator + webView.uiDelegate = WebMediaCaptureDenier.shared + let window = NSWindow( + contentRect: NSRect(x: 0, y: 0, width: 900, height: 700), + styleMask: [.titled], backing: .buffered, defer: false + ) + window.isReleasedWhenClosed = false + window.contentView = webView + window.orderFront(nil) + defer { + webView.stopLoading() + webView.navigationDelegate = nil + webView.uiDelegate = nil + window.contentView = nil + window.close() + } + + coordinator.loadTemplate(in: webView) + let loaded = await waitForChanges(webViewChanges(webView), timeout: .seconds(5)) { + !webView.isLoading && webView.title == "Markdown Preview" + } + try #require(loaded, "The production Markdown preview template did not load") + + let payload = MarkdownPreviewWebView.Payload( + html: html, documentURL: documentURL, workspaceURL: workspace.workspace, appearance: appearance + ) + let finished = TestGate() + var result: Result? + webView.callAsyncJavaScript( + """ + await window.LithePreview.update(payload); + const content = document.getElementById('content'); + const badges = document.getElementById('badges'); + const images = Array.from(badges.querySelectorAll('img')); + const rects = images.map(image => image.getBoundingClientRect()); + const paragraph = badges.getBoundingClientRect(); + const image = images[2]; + image.click(); + const zoomOpened = !document.getElementById('image-viewer').hidden; + document.getElementById('image-close').click(); + const inline = content.querySelector('p[data-sourcepos] img'); + return { + sameRow: rects.every(rect => Math.abs(rect.top - rects[0].top) < 1), + centered: Math.abs((rects[0].left + rects[2].right) / 2 - (paragraph.left + paragraph.right) / 2) < 1, + headerAlignment: getComputedStyle(document.getElementById('aligned-heading')).textAlign, + paragraphAlignment: getComputedStyle(document.getElementById('aligned-paragraph')).textAlign, + inlineDisplay: getComputedStyle(inline).display, + noImageMargin: getComputedStyle(image).margin === '0px', + explicitBreaks: document.getElementById('explicit-break').querySelectorAll('br').length, + scopedAsset: image.getAttribute('src').startsWith('lithe-resource://document?'), + zoomOpened, + zoomClosed: document.getElementById('image-viewer').hidden + }; + """, + arguments: ["payload": payload.javaScriptValue], in: nil, in: .page + ) { + result = $0 + finished.open() + } + try #require(await finished.waitUntilOpen(timeout: .seconds(5)), "Markdown layout evaluation timed out") + let completed = try #require(result) + let values = try #require(try completed.get() as? [String: Any]) + for key in ["sameRow", "centered", "noImageMargin", "scopedAsset", "zoomOpened", "zoomClosed"] { + #expect(values[key] as? Bool == true, "Expected \(key): \(values)") + } + #expect(values["headerAlignment"] as? String == "right") + #expect(["left", "-webkit-left"].contains(values["paragraphAlignment"] as? String ?? "")) + #expect(values["inlineDisplay"] as? String == "inline-block") + #expect(values["explicitBreaks"] as? Int == 1) + + // Resize the actual WebKit viewport: wrapping must remain native, not + // a forced no-wrap badge row that overflows narrow split previews. + window.setContentSize(NSSize(width: 240, height: 700)) + let measured = TestGate() + var wraps = false + webView.evaluateJavaScript(""" + (() => { + const images = document.querySelectorAll('#badges img'); + return images[2].getBoundingClientRect().top > images[0].getBoundingClientRect().top && + document.documentElement.scrollWidth <= window.innerWidth; + })() + """) { value, _ in + wraps = value as? Bool == true + measured.open() + } + try #require(await measured.waitUntilOpen(timeout: .seconds(5)), "Narrow layout evaluation timed out") + #expect(wraps) + } + + private struct Fixture: Decodable { + let source: String + } +} diff --git a/rust/lithe-core/src/project/markdown.rs b/rust/lithe-core/src/project/markdown.rs index 8748a55d7b..80f7c97a53 100644 --- a/rust/lithe-core/src/project/markdown.rs +++ b/rust/lithe-core/src/project/markdown.rs @@ -81,6 +81,12 @@ pub fn render(request: MarkdownRenderRequest) -> MarkdownRenderResponse { ) .add_tag_attributes("source", &["src", "type", "media"]); + // README headers commonly align a whole badge row or heading. Keep the + // presentational attribute without allowing arbitrary inline styles. + for tag in ["div", "p", "h1", "h2", "h3", "h4", "h5", "h6"] { + sanitizer.add_tag_attributes(tag, &["align"]); + } + MarkdownRenderResponse { html: sanitizer.clean(&rendered).to_string(), } @@ -163,4 +169,29 @@ mod tests { assert!(output.contains("

More")); assert!(output.contains("Safe")); } + + #[test] + fn preserves_html_alignment_and_inline_badges_without_allowing_styles() { + let fixture: serde_json::Value = serde_json::from_str(include_str!( + "../../../../shared/fixtures/editor/markdown-html-v1.json" + )) + .expect("Markdown HTML fixture should decode"); + let output = html(fixture["source"].as_str().expect("fixture source")); + + assert!(output.contains("
").next().expect("HTML header"); + assert_eq!(header.matches("\n

HTML header

\n

\n \"First\"\n \"Second\"\n \"Third\"\n

\n

Left aligned

\n

Before
After

\n
\n\nOrdinary paragraph with ![inline image](badge.svg).\n\n\n\nUnsafe link\n" +} diff --git a/shared/platform-feature-matrix/features/markdown-rendering.json b/shared/platform-feature-matrix/features/markdown-rendering.json index 4d72a4d74b..e5ba633536 100644 --- a/shared/platform-feature-matrix/features/markdown-rendering.json +++ b/shared/platform-feature-matrix/features/markdown-rendering.json @@ -2,11 +2,15 @@ "id": "markdown-rendering", "area": "编辑器", "group": "Markdown", - "capability": "Markdown 预览与富文本渲染", + "capability": "Markdown 预览与富文本渲染;macOS 内嵌 HTML 的徽章图片保持行内排版,并保留容器、段落与标题的安全对齐属性", "macos": { "evidence": [ "macos/Sources/Lithe/Views/Editor/MarkdownPreviewView.swift", - "macos/Sources/Lithe/Core/Ports/MarkdownRendering.swift" + "macos/Sources/Lithe/Core/Ports/MarkdownRendering.swift", + "rust/lithe-core/src/project/markdown.rs", + "macos/Sources/Lithe/Resources/MarkdownPreview/preview.css", + "macos/Tests/LitheTests/MarkdownPreviewHTMLTests.swift", + "shared/fixtures/editor/markdown-html-v1.json" ], "implementationStatus": "implemented", "verificationStatus": "pending" @@ -20,6 +24,6 @@ "verificationStatus": "pending" }, "owner": "Editor", - "verification": "使用代码高亮、表格、Mermaid、链接和相对路径 fixture 对比渲染结果。打开含上千个代码块的大型 Markdown 预览,渲染不卡住,编辑时预览不会先闪成未高亮的代码;代码里的 `$&`、`$1` 按原文显示。", - "notes": "Windows 预览中屏幕外的段落、标题、列表和代码块使用 content-visibility: auto 跳过排版(表格除外,避免溢出被裁切);8.6 万行文档打开预览的最长主线程任务由约 10 秒降到约 1.3 秒,滚动最长任务由约 3.8 秒降到约 0.23 秒。" + "verification": "使用代码高亮、表格、Mermaid、链接和相对路径 fixture 对比渲染结果。打开含上千个代码块的大型 Markdown 预览,渲染不卡住,编辑时预览不会先闪成未高亮的代码;代码里的 `$&`、`$1` 按原文显示。macOS 使用 markdown-html-v1.json 及仓库 README 验证:宽预览中同一段内多个徽章同行居中,窄分栏按可用宽度自然折行;div/p/h1 的 align 生效,显式 br 和普通段落保留,正文行内图片不拆行,相对图片与点击放大仍可用。深浅主题均检查,脚本、事件处理器、危险 URL 和任意 style 仍被剥离。", + "notes": "Windows 预览中屏幕外的段落、标题、列表和代码块使用 content-visibility: auto 跳过排版(表格除外,避免溢出被裁切);8.6 万行文档打开预览的最长主线程任务由约 10 秒降到约 1.3 秒,滚动最长任务由约 3.8 秒降到约 0.23 秒。2026-11-01 #1623:macOS 图片不再全局 display:block,Core 保留 div/p/h1-h6 的 align,但不开放 style;新增共享输入和真实 WKWebView 回归。Windows 仍使用独立的简化解析器,未在本次修改或验证其 HTML 行为,整体运行验收状态保持 pending。" } From 8a589994b1643e8350caccba8ac9ba8a927f9637 Mon Sep 17 00:00:00 2001 From: Xiaoyumuxi <23722032@bjtu.edu.cn> Date: Sun, 1 Nov 2026 19:26:01 +0800 Subject: [PATCH 23/27] feat(markdown): render PlantUML diagrams offline on macOS (#1637) --- .../2026-11-01-macos-offline-plantuml.md | 72 + docs/ci-builds.md | 9 + macos/Resources/en.lproj/Localizable.strings | 2 + .../zh-Hans.lproj/Localizable.strings | 2 + .../MacOS/MarkdownPlantUMLRenderer.swift | 149 + .../MacOS/MarkdownPreviewWebView.swift | 51 +- .../MarkdownPreview/THIRD_PARTY_NOTICES.md | 7 +- .../MarkdownPreview/plantuml-renderer.js | 23 + .../Resources/MarkdownPreview/plantuml.html | 9 + .../Resources/MarkdownPreview/preview.css | 1 + .../Resources/MarkdownPreview/preview.js | 54 +- .../MarkdownPreview/vendor/plantuml/LICENSE | 73 + .../vendor/plantuml/plantuml.js | 8979 +++++++++++++++++ .../LitheTests/LitheCoreLogicTests.swift | 7 +- .../LitheTests/MarkdownPlantUMLTests.swift | 116 + .../LitheTests/WebMediaCaptureTests.swift | 1 + .../resources/reuse-worktree-resources.mjs | 2 + .../test-reuse-worktree-resources.mjs | 14 + scripts/resources/worktree-resources.json | 12 + shared/i18n/locales/en-US.json | 3 +- shared/i18n/locales/zh-CN.json | 3 +- shared/i18n/messages.json | 11 + .../features/markdown-rendering.json | 10 +- 23 files changed, 9587 insertions(+), 23 deletions(-) create mode 100644 .agents/notes/implemented/feature/2026-11-01-macos-offline-plantuml.md create mode 100644 macos/Sources/Lithe/Platform/MacOS/MarkdownPlantUMLRenderer.swift create mode 100644 macos/Sources/Lithe/Resources/MarkdownPreview/plantuml-renderer.js create mode 100644 macos/Sources/Lithe/Resources/MarkdownPreview/plantuml.html create mode 100644 macos/Sources/Lithe/Resources/MarkdownPreview/vendor/plantuml/LICENSE create mode 100644 macos/Sources/Lithe/Resources/MarkdownPreview/vendor/plantuml/plantuml.js create mode 100644 macos/Tests/LitheTests/MarkdownPlantUMLTests.swift diff --git a/.agents/notes/implemented/feature/2026-11-01-macos-offline-plantuml.md b/.agents/notes/implemented/feature/2026-11-01-macos-offline-plantuml.md new file mode 100644 index 0000000000..72431de917 --- /dev/null +++ b/.agents/notes/implemented/feature/2026-11-01-macos-offline-plantuml.md @@ -0,0 +1,72 @@ +# Agent 笔记:macOS Markdown 的离线 PlantUML 预览 + +状态:已实现 + +## 先说结论 + +macOS Markdown 的 `plantuml` 代码块使用官方 JavaScript 引擎离线渲染,不发送文档到服务器, +也不要求用户安装 Java 或 Graphviz。渲染使用独立、非持久的 WebKit 页面,完成后只把 +被动 SVG 图片交给正文,不能把图中的 SVG 脚本或链接变成宿主页面能力。 +基础时序图和类图在范围内;跨文件 include、可选标准库及主题没有开放。 + +## 问题 + +Issue #706 提出图表支持,原实现只保留 `language-plantuml` 类名,并没有执行渲染。 +因此“代码块存在”不代表用户能看到图。官方现在提供 MIT 许可的 `@plantuml/core` 1.2026.9, +内置的 Smetana 是用来计算类图节点位置的布局引擎,可直接复用,不需要新写 UML 解析器。 + +## 决策 + +- 引擎来自固定 npm 归档,先验证 SHA-512,保存未修改的脚本、MIT 许可和上游声明, + 来源 revision 和提取文件 SHA-256 放在 `THIRD_PARTY_NOTICES.md`。旧版许可不同,不得替换为旧版。 +- 只在遇到 PlantUML 时创建渲染 WebView,固定协议只提供模板、引擎和入口三个文件。 + 不授予用户文件读取接口,网页内容安全策略(CSP,限制网页可加载哪些资源)禁止网络、 + iframe 和外部图片;上游 include/标准库加载钩子显式拒绝,不能把路径转交工作区资源解析器。 +- 一次只处理一个图,源码最多 256KiB,SVG 最多 4MiB,尺寸最多 4096px, + 主线程拥有八秒期限。完成、失败、取消、替代请求和关闭预览都撤销期限、停止加载、断开委托, + 放弃该非持久 WebView。迟到回调按请求 UUID 丢弃,正文同时按 render version 丢弃旧文档结果。 +- SVG 通过 `data:image/svg+xml;base64,...` 作为 `img` 显示,不赋给 `innerHTML`。 + 正确做法是让浏览器按图片加载 SVG;不要因为来源是成熟上游,就把用户可影响的 SVG 当成宿主 HTML。 + 图片保留原有点击放大;无法渲染时保留源码,并用共享 i18n 的本地化提示说明失败。 +- `WKProcessPool` 在新 WebKit 已不提供进程隔离,因此不使用它,也不声称独立 WebView 等于独立 OS 进程。 + 原生期限可以释放宿主的请求和 WebView,不能据此承诺终止共享 WebKit 进程中的任意死循环。 + +## 考虑过的备选方案 + +- 在线 PlantUML 服务器:会外发用户文档,断网不能用,不采用。 +- Java 子进程或另带 Graphviz/WASM:增加体积、工具链和生命周期成本。官方内置 Smetana 已能处理 + 本次验证的时序图和类图,所以不打包 Viz.js、Graphviz、主题、emoji 或额外标准库。 +- 在预览正文直接加载引擎或使用隐藏 iframe:引擎需要 DOM,普通 Worker 不适用; + iframe 与正文可能共用线程,且页面内定时器会受繁忙 JavaScript 阻塞,不把它当作有界执行保证。 +- 按 PlantUML 指令名自行过滤源码:变量、预处理器和语法仍归成熟上游,安全边界放在资源白名单、 + 无文件加载能力、CSP、预算和被动图片输出,不再写一套语法检查器。 + +## 后果 + +常见 PlantUML 图可以离线显示,正文不新增网络能力,现有 Mermaid、数学和普通图片流程保持。 +代价是每个图建立独立渲染上下文,串行处理限制内存但大量图会依次完成;复杂或被上游不支持的图仍可能失败。 +跨文件 include 失败保留原文,不静默读取磁盘;无效语法也可能由上游生成诊断图片,保持上游原始诊断。 + +模板、引擎和许可是 Git 输入,构建时复制后签名。运行时只有源码、回调和图片的内存状态, +不下载、不生成缓存、不写 bundle,不改变代码签名或 Sparkle 增量基线。 +资源复用清单显式拒绝跨工作树复制这些生成 bundle 或运行态;Windows 产品不在本次范围内。 + +## 验证 + +- `./.agents/skills/write-stable-tests/scripts/test-stability-macos.sh -- --filter MarkdownPlantUMLTests`: + 真实 WebKit 在深浅主题渲染时序图、类图,逐文件比较运行前后的打包资源 SHA-256; + 验证取消、超大输入拒绝、正文被动图片、include 拒绝时源码/本地化回退、旧结果隔离。 +- `node --test scripts/macos/test/test-markdown-preview.mjs`:既有目录与刷新状态回归。 +- `node --test scripts/resources/test-reuse-worktree-resources.mjs`:资源隔离与固定身份。 +- `./scripts/macos/verify/verify-runtime-bundle-immutability.sh`。 +- `node scripts/i18n/generate-i18n.mjs --check`。 + +组件运行验证不代替完整应用视觉验收;不以本地新编译器通过冒充 CI 固定工具链通过。 + +## 适用范围 + +- `macos/Sources/Lithe/Platform/MacOS/MarkdownPlantUMLRenderer.swift` +- `macos/Sources/Lithe/Platform/MacOS/MarkdownPreviewWebView.swift` +- `macos/Sources/Lithe/Resources/MarkdownPreview/` +- `macos/Tests/LitheTests/MarkdownPlantUMLTests.swift` +- `scripts/resources/worktree-resources.json` diff --git a/docs/ci-builds.md b/docs/ci-builds.md index 9003d44a34..8ccddbf0bb 100644 --- a/docs/ci-builds.md +++ b/docs/ci-builds.md @@ -604,6 +604,15 @@ Inter 4.1 的 18 个静态 OTF(内部版本 4.001)及许可、JetBrains Mono 以下目录不应直接复制或跨工作树共享: +- macOS Markdown PlantUML:Git 中的 `MarkdownPreview/vendor/plantuml/`、 + `plantuml.html` 与 `plantuml-renderer.js` 随当前 checkout 打包,来源为固定的 + MIT `@plantuml/core` 1.2026.9,归档 SHA-512、引擎 SHA-256 和上游 revision 见 + `THIRD_PARTY_NOTICES.md`。使用内置 Smetana,不另下载 Java、Graphviz 或 WASM。 + 输入与平台架构、工具链无关;生成 bundle 没有跨 worktree identity stamp。 + 运行时一项请求拥有一个非持久 WebView,源码、回调和 SVG 图片只在内存存活, + 完成、取消、八秒超时或关闭预览后释放;不下载、不写发行目录、不改签名及 Sparkle 基线。 + `excludedResources.markdown-plantuml-assets` 走资源脚本通用拒绝路由,所有复制阶段都禁止 + 复用其他工作树的 bundle 或运行态。 - AutoBuild 应用发布校验 staging: `/lithe-autobuild-/{baselines,verification}/`。 源码 SHA、应用 release/tag/asset、当前 build/ISO 时间与本次发布共同决定输入; diff --git a/macos/Resources/en.lproj/Localizable.strings b/macos/Resources/en.lproj/Localizable.strings index 3ff8fbb530..6b08dd12bd 100644 --- a/macos/Resources/en.lproj/Localizable.strings +++ b/macos/Resources/en.lproj/Localizable.strings @@ -2764,6 +2764,7 @@ "Plan before making changes" = "Plan before making changes"; "Planned Git command — waiting to start" = "Planned Git command — waiting to start"; "Planned command" = "Planned command"; +"PlantUML could not render this diagram. Showing its source instead." = "PlantUML could not render this diagram. Showing its source instead."; "Platforms" = "Platforms"; "Plugin" = "Plugin"; "Plugin %@ %@ is a retired native package and is no longer loaded. Reinstall it from Plugin Management to update." = "Plugin %@ %@ is a retired native package and is no longer loaded. Reinstall it from Plugin Management to update."; @@ -4839,6 +4840,7 @@ "macOS could not prepare the update disk image. Open the Release page and install it manually." = "macOS could not prepare the update disk image. Open the Release page and install it manually."; "main Java" = "main Java"; "main resources" = "main resources"; +"markdown.plantumlRenderFailed" = "PlantUML could not render this diagram. Showing its source instead."; "matches" = "matches"; "maven.title" = "Maven"; "menu.copy" = "Copy"; diff --git a/macos/Resources/zh-Hans.lproj/Localizable.strings b/macos/Resources/zh-Hans.lproj/Localizable.strings index f682b3738c..5f7ffbc62d 100644 --- a/macos/Resources/zh-Hans.lproj/Localizable.strings +++ b/macos/Resources/zh-Hans.lproj/Localizable.strings @@ -2764,6 +2764,7 @@ "Plan before making changes" = "先制定计划,再进行修改。"; "Planned Git command — waiting to start" = "Git 命令计划 — 等待启动"; "Planned command" = "计划执行的命令"; +"PlantUML could not render this diagram. Showing its source instead." = "PlantUML 无法渲染此图表,已显示源码。"; "Platforms" = "支持平台"; "Plugin" = "插件"; "Plugin %@ %@ is a retired native package and is no longer loaded. Reinstall it from Plugin Management to update." = "插件 %@ %@ 是已淘汰的原生插件包,不再加载。请在插件管理中重新安装以更新。"; @@ -4839,6 +4840,7 @@ "macOS could not prepare the update disk image. Open the Release page and install it manually." = "macOS 无法准备更新磁盘映像。请打开 Release 页面手动安装。"; "main Java" = "主代码"; "main resources" = "主资源"; +"markdown.plantumlRenderFailed" = "PlantUML 无法渲染此图表,已显示源码。"; "matches" = "个匹配项"; "maven.title" = "Maven"; "menu.copy" = "复制"; diff --git a/macos/Sources/Lithe/Platform/MacOS/MarkdownPlantUMLRenderer.swift b/macos/Sources/Lithe/Platform/MacOS/MarkdownPlantUMLRenderer.swift new file mode 100644 index 0000000000..5c3906033f --- /dev/null +++ b/macos/Sources/Lithe/Platform/MacOS/MarkdownPlantUMLRenderer.swift @@ -0,0 +1,149 @@ +import Foundation +import WebKit + +/// Runs the offline upstream engine outside the document preview's WebView. +/// Note: .agents/notes/implemented/feature/2026-11-01-macos-offline-plantuml.md +@MainActor +final class MarkdownPlantUMLRenderer: NSObject, WKNavigationDelegate { + static let messageName = "markdownPlantUML" + static let maximumSourceBytes = 256 * 1024 + static let maximumSVGBytes = 4 * 1024 * 1024 + static let timeout: TimeInterval = 8 + + private struct Request { + let id: UUID + let source: String + let dark: Bool + let webView: WKWebView + let deadline: DispatchWorkItem + let reply: (Any?, String?) -> Void + } + + private var request: Request? + + func render(source: String, dark: Bool, reply: @escaping (Any?, String?) -> Void) { + cancel() + guard source.utf8.count <= Self.maximumSourceBytes else { + reply(nil, "diagramSourceTooLarge") + return + } + let configuration = WKWebViewConfiguration() + configuration.websiteDataStore = .nonPersistent() + // The nonpersistent renderer has its own JavaScript context and no + // document bridge. Its native deadline owns disposal. + configuration.setURLSchemeHandler(MarkdownPlantUMLResources(), forURLScheme: MarkdownPlantUMLResources.scheme) + let webView = WKWebView(frame: CGRect(x: 0, y: 0, width: 800, height: 600), configuration: configuration) + webView.navigationDelegate = self + webView.uiDelegate = WebMediaCaptureDenier.shared + let id = UUID() + let deadline = DispatchWorkItem { [weak self] in self?.finish(id, error: "diagramTimedOut") } + request = Request(id: id, source: source, dark: dark, webView: webView, deadline: deadline, reply: reply) + DispatchQueue.main.asyncAfter(deadline: .now() + Self.timeout, execute: deadline) + webView.load(URLRequest(url: MarkdownPlantUMLResources.pageURL)) + } + + func cancel() { + guard let request else { return } + finish(request.id, error: "diagramCancelled") + } + + func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { + guard let request, request.webView === webView else { return } + let id = request.id + webView.callAsyncJavaScript( + "return window.LithePlantUML.render(source, dark)", + arguments: ["source": request.source, "dark": request.dark], in: nil, in: .page + ) { [weak self] result in + guard let self, self.request?.id == id else { return } + guard case let .success(value) = result, + let svg = value as? String, + svg.utf8.count <= Self.maximumSVGBytes, + svg.contains(" Void + ) { + decisionHandler(navigationAction.request.url == MarkdownPlantUMLResources.pageURL ? .allow : .cancel) + } + + private func failed(_ webView: WKWebView) { + guard let request, request.webView === webView else { return } + finish(request.id, error: "diagramRenderFailed") + } + + private func finish(_ id: UUID, image: String? = nil, error: String? = nil) { + guard let current = request, current.id == id else { return } + request = nil + current.deadline.cancel() + current.webView.stopLoading() + current.webView.navigationDelegate = nil + current.webView.uiDelegate = nil + current.reply(image, error) + } +} + +/// Exposes only fixed, bundled renderer inputs; no user paths or URL queries. +private final class MarkdownPlantUMLResources: NSObject, WKURLSchemeHandler, @unchecked Sendable { + static let scheme = "lithe-plantuml" + static let pageURL = URL(string: "lithe-plantuml://renderer/plantuml.html")! + private static let files = [ + "/plantuml.html": "text/html", + "/plantuml-renderer.js": "text/javascript", + "/vendor/plantuml/plantuml.js": "text/javascript" + ] + private let tasks = LocalFileSchemeTasks() + private let queue = DispatchQueue(label: "lithe.markdown.plantuml.resources", qos: .userInitiated) + + func webView(_ webView: WKWebView, start task: any WKURLSchemeTask) { + let id = tasks.register(task) + let url = task.request.url + let directory = MarkdownPreviewResources.directoryURL + queue.async { [self] in + do { + guard let url, url.scheme == Self.scheme, url.host == "renderer", + url.query == nil, url.fragment == nil, + let mime = Self.files[url.path], let directory else { + throw URLError(.noPermissionsToReadFile) + } + let data = try Data(contentsOf: directory.appendingPathComponent(String(url.path.dropFirst()))) + let response = URLResponse(url: url, mimeType: mime, expectedContentLength: data.count, textEncodingName: "utf-8") + DispatchQueue.main.async { [self] in + guard tasks.claim(id) else { return } + task.didReceive(response) + task.didReceive(data) + task.didFinish() + } + } catch { + DispatchQueue.main.async { [self] in + guard tasks.claim(id) else { return } + task.didFailWithError(error) + } + } + } + } + + func webView(_ webView: WKWebView, stop task: any WKURLSchemeTask) { + tasks.stop(task) + } +} diff --git a/macos/Sources/Lithe/Platform/MacOS/MarkdownPreviewWebView.swift b/macos/Sources/Lithe/Platform/MacOS/MarkdownPreviewWebView.swift index 7333a1e2af..daa5bfc505 100644 --- a/macos/Sources/Lithe/Platform/MacOS/MarkdownPreviewWebView.swift +++ b/macos/Sources/Lithe/Platform/MacOS/MarkdownPreviewWebView.swift @@ -172,7 +172,8 @@ struct MarkdownPreviewWebView: NSViewRepresentable { "html": html, "documentURL": documentURL.absoluteString, "workspaceURL": workspaceURL?.absoluteString ?? "", - "appearance": appearance + "appearance": appearance, + "plantumlFailure": L10n.string("PlantUML could not render this diagram. Showing its source instead.") ] } } @@ -199,6 +200,7 @@ struct MarkdownPreviewWebView: NSViewRepresentable { let pagePreferences = WKWebpagePreferences() pagePreferences.allowsContentJavaScript = true configuration.defaultWebpagePreferences = pagePreferences + context.coordinator.installPlantUMLBridge(in: configuration) let webView = WKWebView(frame: .zero, configuration: configuration) webView.navigationDelegate = context.coordinator @@ -220,10 +222,20 @@ struct MarkdownPreviewWebView: NSViewRepresentable { context.coordinator.updateScrollPosition(in: webView) } + static func dismantleNSView(_ webView: WKWebView, coordinator: Coordinator) { + coordinator.plantuml.cancel() + webView.stopLoading() + webView.configuration.userContentController.removeScriptMessageHandler(forName: Coordinator.scrollMessageName) + webView.configuration.userContentController.removeScriptMessageHandler(forName: MarkdownPlantUMLRenderer.messageName) + webView.navigationDelegate = nil + webView.uiDelegate = nil + } + final class Coordinator: NSObject, WKNavigationDelegate, WKScriptMessageHandler { static let scrollMessageName = "markdownScrollSync" let assetHandler = MarkdownPreviewAssetSchemeHandler() + let plantuml = MarkdownPlantUMLRenderer() var scrollPosition: Binding? private var isReady = false private var pendingPayload: Payload? @@ -235,6 +247,12 @@ struct MarkdownPreviewWebView: NSViewRepresentable { self.scrollPosition = scrollPosition } + func installPlantUMLBridge(in configuration: WKWebViewConfiguration) { + configuration.userContentController.addScriptMessageHandler( + MarkdownPlantUMLMessages(self), contentWorld: .page, name: MarkdownPlantUMLRenderer.messageName + ) + } + func loadTemplate(in webView: WKWebView) { guard let templateURL = MarkdownPreviewResources.templateURL, let directoryURL = MarkdownPreviewResources.directoryURL else { @@ -349,3 +367,34 @@ struct MarkdownPreviewWebView: NSViewRepresentable { } } } + +/// WebKit retains its message handlers; do not let that retain the renderer. +private final class MarkdownPlantUMLMessages: NSObject, WKScriptMessageHandlerWithReply { + weak var coordinator: MarkdownPreviewWebView.Coordinator? + + init(_ coordinator: MarkdownPreviewWebView.Coordinator) { + self.coordinator = coordinator + } + + func userContentController( + _ controller: WKUserContentController, didReceive message: WKScriptMessage, + replyHandler: @escaping (Any?, String?) -> Void + ) { + guard let coordinator, message.frameInfo.isMainFrame, + message.frameInfo.request.url == MarkdownPreviewResources.templateURL, + let body = message.body as? [String: Any] else { + replyHandler(nil, "diagramRequestRejected") + return + } + if body["cancel"] as? Bool == true { + coordinator.plantuml.cancel() + replyHandler(true, nil) + return + } + guard let source = body["source"] as? String, let dark = body["dark"] as? Bool else { + replyHandler(nil, "diagramRequestRejected") + return + } + coordinator.plantuml.render(source: source, dark: dark, reply: replyHandler) + } +} diff --git a/macos/Sources/Lithe/Resources/MarkdownPreview/THIRD_PARTY_NOTICES.md b/macos/Sources/Lithe/Resources/MarkdownPreview/THIRD_PARTY_NOTICES.md index d1574baa83..c117280d3c 100644 --- a/macos/Sources/Lithe/Resources/MarkdownPreview/THIRD_PARTY_NOTICES.md +++ b/macos/Sources/Lithe/Resources/MarkdownPreview/THIRD_PARTY_NOTICES.md @@ -8,5 +8,10 @@ All preview dependencies are bundled with Lithe and loaded from the application - D3 6.7.0 — ISC — `vendor/d3-LICENSE` - markmap-lib 0.14.1 — MIT — `vendor/markmap-lib-LICENSE` - markmap-view 0.14.0 — MIT — `vendor/markmap-view-LICENSE` +- PlantUML JavaScript engine `@plantuml/core` 1.2026.9 — MIT — `vendor/plantuml/LICENSE` -The Highlight.js browser bundle is the distribution already vendored by MiaoYan; its version banner and upstream license are preserved. The remaining files come from the matching npm distributions. PlantUML and its encoder are intentionally not included. +The Highlight.js browser bundle is the distribution already vendored by MiaoYan; its version banner and upstream license are preserved. The remaining files come from the matching npm distributions. + +PlantUML uses the official JavaScript build's built-in Smetana layout engine. Graphviz/Viz.js, the URL encoder, optional standard libraries, themes, emoji and external include loaders are not bundled. Rendering is local in a nonpersistent, restricted WebView; the result is displayed as an SVG image, never injected into the document DOM. + +`vendor/plantuml/plantuml.js` comes unchanged from `https://registry.npmjs.org/@plantuml/core/-/core-1.2026.9.tgz` (`package/plantuml.js`, upstream Git revision `18d0aae311a4f1eb3723bb4b0ad939185e22f166`). npm archive integrity: `sha512-Qy46og9hEb+wOFtjUfniWkl/BDwHpDuebQX5rF+35s9PS2G4cKZf1iWw4E/ELLQ0pTkESPDoQTbKWcc3ZyVcVA==`. Script SHA-256: `21c049ce47d087eff61ae0836f9c62a2b0c0d2528a5f16c2247057544228fae7`. The npm release's MIT license and upstream notices are preserved in `vendor/plantuml/LICENSE` (line endings normalized to LF only). Versions before 1.2026.6 use different licensing and must not be substituted. These are Git-tracked build inputs, not runtime downloads or writable bundle state. diff --git a/macos/Sources/Lithe/Resources/MarkdownPreview/plantuml-renderer.js b/macos/Sources/Lithe/Resources/MarkdownPreview/plantuml-renderer.js new file mode 100644 index 0000000000..bd6be17906 --- /dev/null +++ b/macos/Sources/Lithe/Resources/MarkdownPreview/plantuml-renderer.js @@ -0,0 +1,23 @@ +// The engine owns PlantUML syntax. This host grants no file/include/stdlib +// capabilities; the isolated page's CSP also denies network and frames. +let deniedResource = false; +globalThis.PLANTUML_FILE_LOADER = (_path, _from, _ok, fail) => { + deniedResource = true; + fail('External files are unavailable'); +}; +globalThis.PLANTUML_STDLIB_LOADER = (_path, _ok, fail) => { + deniedResource = true; + fail('Optional libraries are unavailable'); +}; + +window.LithePlantUML = Object.freeze({ + async render(source, dark) { + const { renderToString } = await import('./vendor/plantuml/plantuml.js'); + return new Promise((resolve, reject) => { + renderToString(source.split(/\r\n|\r|\n/), svg => { + if (deniedResource) reject('diagramResourceDenied'); + else resolve(svg); + }, reject, { dark, maxSvgSize: 4096 }); + }); + } +}); diff --git a/macos/Sources/Lithe/Resources/MarkdownPreview/plantuml.html b/macos/Sources/Lithe/Resources/MarkdownPreview/plantuml.html new file mode 100644 index 0000000000..82bc82d303 --- /dev/null +++ b/macos/Sources/Lithe/Resources/MarkdownPreview/plantuml.html @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/macos/Sources/Lithe/Resources/MarkdownPreview/preview.css b/macos/Sources/Lithe/Resources/MarkdownPreview/preview.css index 3c60dd962a..f2744e3c83 100644 --- a/macos/Sources/Lithe/Resources/MarkdownPreview/preview.css +++ b/macos/Sources/Lithe/Resources/MarkdownPreview/preview.css @@ -266,6 +266,7 @@ audio { width: min(100%, 520px); } } .diagram-shell svg { display: block; max-width: 100%; height: auto; margin: 0 auto; } +.plantuml-shell img { margin: 0 auto; } .diagram-shell.markmap-shell { height: clamp(340px, 55vh, 560px); padding: 0; } .diagram-shell.markmap-shell svg { width: 100%; height: 100%; max-width: none; } .diagram-error { margin: 0 0 0.75em; color: var(--alert-caution); font-size: 0.84em; } diff --git a/macos/Sources/Lithe/Resources/MarkdownPreview/preview.js b/macos/Sources/Lithe/Resources/MarkdownPreview/preview.js index 2f788e2b99..612a5ab89d 100644 --- a/macos/Sources/Lithe/Resources/MarkdownPreview/preview.js +++ b/macos/Sources/Lithe/Resources/MarkdownPreview/preview.js @@ -63,7 +63,7 @@ function highlightCode() { if (!window.hljs) return; content.querySelectorAll('pre code').forEach(code => { - if (code.matches('.language-mermaid, .language-markmap, [data-math-style]')) return; + if (code.matches('.language-mermaid, .language-markmap, .language-plantuml, [data-math-style]')) return; const languageClass = Array.from(code.classList).find(name => name.startsWith('language-')); const language = languageClass?.slice('language-'.length); if (language && !window.hljs.getLanguage(language)) { @@ -116,6 +116,36 @@ return source.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>'); } + async function renderPlantUML(version, failureMessage) { + const bridge = window.webkit?.messageHandlers?.markdownPlantUML; + const diagrams = Array.from(content.querySelectorAll('pre > code.language-plantuml')); + // One native renderer at a time bounds memory, even in diagram-heavy files. + for (const code of diagrams) { + if (version !== renderVersion) return; + const pre = code.parentElement; + try { + if (!bridge) throw new Error('diagramRendererUnavailable'); + const imageURL = await bridge.postMessage({ source: code.textContent || '', dark: document.documentElement.dataset.theme === 'dark' }); + if (version !== renderVersion) return; + const shell = document.createElement('div'); + shell.className = 'diagram-shell plantuml-shell'; + const image = document.createElement('img'); + image.src = imageURL; + image.alt = code.textContent || ''; + shell.append(image); + pre.replaceWith(shell); + setupImage(image); + } catch (_) { + if (version !== renderVersion) return; + pre.classList.add('diagram-source-fallback'); + const message = document.createElement('div'); + message.className = 'diagram-error'; + message.textContent = failureMessage; + pre.before(message); + } + } + } + function renderMarkmaps() { markmaps.forEach(instance => instance.destroy?.()); markmaps = []; @@ -205,15 +235,13 @@ fullImage.alt = ''; } - function setupImages() { - content.querySelectorAll('img').forEach(image => { - image.loading = 'lazy'; - image.addEventListener('click', () => { - if (!image.currentSrc && !image.src) return; - fullImage.src = image.currentSrc || image.src; - fullImage.alt = image.alt || ''; - viewer.hidden = false; - }); + function setupImage(image) { + image.loading = 'lazy'; + image.addEventListener('click', () => { + if (!image.currentSrc && !image.src) return; + fullImage.src = image.currentSrc || image.src; + fullImage.alt = image.alt || ''; + viewer.hidden = false; }); } @@ -248,6 +276,8 @@ async function update(payload) { const version = ++renderVersion; + await window.webkit?.messageHandlers?.markdownPlantUML?.postMessage({ cancel: true }); + if (version !== renderVersion) return false; const initialScrollCommandVersion = scrollCommandVersion; const scrollRatio = currentScrollRatio(); if (tocDocumentURL !== payload?.documentURL) { @@ -261,8 +291,8 @@ highlightCode(); renderMarkmaps(); buildTOC(); - setupImages(); - await renderMermaid(version); + content.querySelectorAll('img').forEach(setupImage); + await Promise.all([renderMermaid(version), renderPlantUML(version, payload?.plantumlFailure)]); if (version !== renderVersion) return false; if (initialScrollCommandVersion === scrollCommandVersion) { requestAnimationFrame(() => restoreScrollRatio(scrollRatio)); diff --git a/macos/Sources/Lithe/Resources/MarkdownPreview/vendor/plantuml/LICENSE b/macos/Sources/Lithe/Resources/MarkdownPreview/vendor/plantuml/LICENSE new file mode 100644 index 0000000000..017ea1be98 --- /dev/null +++ b/macos/Sources/Lithe/Resources/MarkdownPreview/vendor/plantuml/LICENSE @@ -0,0 +1,73 @@ +/* +======================================================================= + * | + * | PlantUML : a free UML diagram generator + * | + * +======================================================================= + * + * (C) Copyright 2009-2024, Arnaud Roques + * + * Project Info: https://plantuml.com + * + * If you like this project or if you find it useful, you can support us at: + * + * https://plantuml.com/patreon (only 1$ per month!) + * https://plantuml.com/liberapay (only 1€ per month!) + * https://plantuml.com/paypal + * + * + * PlantUML is free software; you can redistribute it and/or modify it + * under the terms of the MIT License. + * + * See http://opensource.org/licenses/MIT + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * PlantUML can occasionally display sponsored or advertising messages. Those + * messages are usually generated on welcome or error images and never on + * functional diagrams. + * See https://plantuml.com/professional if you want to remove them + * + * Images (whatever their format : PNG, SVG, EPS...) generated by running PlantUML + * are owned by the author of their corresponding sources code (that is, their + * textual description in PlantUML language). Those images are not covered by + * this MIT license. + * + * The generated images can then be used without any reference to the MIT license. + * It is not even necessary to stipulate that they have been generated with PlantUML, + * although this will be appreciated by the PlantUML team. + * + * There is an exception : if the textual description in PlantUML language is also covered + * by any license, then the generated images are logically covered + * by the very same license. + * + * This is the IGY distribution (Install GraphViz by Yourself). + * You have to install GraphViz and to setup the GRAPHVIZ_DOT environment variable + * (see https://plantuml.com/graphviz-dot ) + * + * Icons provided by OpenIconic : https://useiconic.com/open + * Archimate sprites provided by Archi : http://www.archimatetool.com + * Stdlib AWS provided by https://github.com/milo-minderbinder/AWS-PlantUML + * Stdlib Icons provided https://github.com/tupadr3/plantuml-icon-font-sprites + * ASCIIMathML (c) Peter Jipsen http://www.chapman.edu/~jipsen + * ASCIIMathML (c) David Lippman http://www.pierce.ctc.edu/dlippman + * CafeUndZopfli ported by Eugene Klyuchnikov https://github.com/eustas/CafeUndZopfli + * Brotli (c) by the Brotli Authors https://github.com/google/brotli + * Themes (c) by Brett Schwarz https://github.com/bschwarz/puml-themes + * Twemoji (c) by Twitter at https://twemoji.twitter.com/ + * + */ \ No newline at end of file diff --git a/macos/Sources/Lithe/Resources/MarkdownPreview/vendor/plantuml/plantuml.js b/macos/Sources/Lithe/Resources/MarkdownPreview/vendor/plantuml/plantuml.js new file mode 100644 index 0000000000..57cb9ac831 --- /dev/null +++ b/macos/Sources/Lithe/Resources/MarkdownPreview/vendor/plantuml/plantuml.js @@ -0,0 +1,8979 @@ +"use strict"; +let C0V=2463534242,B$8=()=>{let x=C0V;x^=x<<13;x^=x>>>17;x^=x<<5;C0V=x;return x;},G=f=>function(){return f(this);},M=f=>function(p1){return f(this,p1);},W=f=>function(p1,p2){return f(this,p1,p2);},BF=f=>function(p1,p2,p3){return f(this,p1,p2,p3);},Bu=f=>function(p1,p2,p3,p4){return f(this,p1,p2,p3,p4);},Z=target=>target.$clinit=()=>{},Fkt=obj=>{let cls=obj.constructor;let arrayDegree=0;while(cls[Gf]&&cls[Gf].item){++arrayDegree;cls=cls[Gf].item;}let clsName="";if(cls[Gf].primitiveKind!==0){clsName=cls[Gf].name;} +else {clsName=cls[Gf]?cls[Gf].name||"a/"+cls.name:"@"+cls.name;}while(arrayDegree-->0){clsName+="[]";}return clsName;},N=superclass=>{if(superclass===0){return function(){};}if(superclass===void 0){superclass=AJB();}return function(){superclass.call(this);};},Gf=Symbol("teavm_meta"),Bo=cls=>{if(cls[Gf].classObject===null){cls[Gf].classObject=Ehs(cls);}return cls[Gf].classObject;},AJB=()=>F,Dto=()=>{{return R4();}},Cs8=t=>{{return Bqu(t);}},X3=f=>function(){return f.apply(null,[this].concat(Array.prototype.slice.call(arguments)));},BVp +=source=>{return Object.assign({name:null,binaryName:null,parent:null,superinterfaces:[],modifiers:0,primitiveKind:0,itemType:null,arrayType:null,enclosingClass:null,declaringClass:null,simpleName:null,clinit:()=>{},constructor:null,enumConstants:()=>null,resolvedEnumConstants:null,reflection:null,classObject:null,assignableCache:null,valueToObject:o=>o,objectToValue:o=>o},source||{});},ABN=(name,binaryName,kind,config)=>{let cls=()=>{};let meta=BVp({name:name,binaryName:binaryName,modifiers:1|1<<4,primitiveKind: +kind});cls[Gf]=meta;if(typeof config==='function'){config(meta);}return cls;},CHJ=ABN("boolean","Z",1,meta=>{{meta.valueToObject=o=>Tr(o);}{meta.objectToValue=o=>Wp(o);}}),BEs=ABN("byte","B",2,meta=>{}),CBs=ABN("short","S",3,meta=>{}),B$O=ABN("char","C",4,meta=>{{meta.valueToObject=o=>AE5(o);}}),AGK=ABN("int","I",5,meta=>{{meta.valueToObject=o=>CL(o);}{meta.objectToValue=o=>FJ(o);}}),Ddp=ABN("long","J",6,meta=>{{meta.valueToObject=o=>TT(o);}{meta.objectToValue=o=>Cs1(o);}}),DoI=ABN("float","F",7,meta=>{}),AUQ +=ABN("double","D",8,meta=>{{meta.valueToObject=o=>DL(o);}{meta.objectToValue=o=>Oj(o);}}),D0n=ABN("void","V",9,meta=>{meta.valueToObject=()=>null;}),BvL=new ArrayBuffer(16),EyL=new Float32Array(BvL),BoE=new Float64Array(BvL),A0f=new Int32Array(BvL),CO3=new BigInt64Array(BvL),EJT=n=>{BoE[0]=n;return CO3[0];},Baa=n=>{CO3[0]=n;return BoE[0];},Dye=n=>{EyL[0]=n;return A0f[0];},ELS=(a,b)=>{if(a!==a){return b!==b;}BoE[0]=a;BoE[1]=b;return A0f[0]===A0f[2]&&A0f[1]===A0f[3];},C5=(a,b)=>a===b?0:aa=== +b?0:a>b?1: -1,Ev=Math.imul||function(a,b){let ah=a>>>16&0xFFFF;let al=a&0xFFFF;let bh=b>>>16&0xFFFF;let bl=b&0xFFFF;return al*bl+(ah*bl+al*bh<<16>>>0)|0;},UW=(a,b)=>(a>>>0)/(b>>>0)>>>0,ESA=(a,b)=>(a>>>0)%(b>>>0)>>>0,AB_=(a,b)=>{a>>>=0;b>>>=0;return ab?1:0;},BH=BigInt(0),O=(lo,hi)=>BigInt.asIntN(64,BigInt.asUintN(64,BigInt(lo))|BigInt.asUintN(64,BigInt(hi)<BigInt.asIntN(64,BigInt(val|0)),Pc=val=>BigInt.asIntN(64,BigInt(val>=0?Math.floor(val):Math.ceil(val))),Id=val=>Number(val),Sm +=val=>Number(BigInt.asIntN(64,val>>BigInt(32)))|0,Cp=val=>Number(BigInt.asIntN(32,val))|0,DS=(a,b)=>a===b; +let D4=(a,b)=>a!==b,G5=(a,b)=>a>b,FE=(a,b)=>a>=b,GR=(a,b)=>aa<=b,BU=(a,b)=>BigInt.asIntN(64,a+b),LF=a=>BigInt.asIntN(64, -a),CE=(a,b)=>BigInt.asIntN(64,a -b),OT=(a,b)=>ab?1:0,E_A=(a,b)=>{a=BigInt.asUintN(64,a);b=BigInt.asUintN(64,b);return ab?1:0;},CT=(a,b)=>BigInt.asIntN(64,a*b),CY=(a,b)=>BigInt.asIntN(64,a/b),DRL=(a,b)=>BigInt.asIntN(64,BigInt.asUintN(64,a)/BigInt.asUintN(64,b)),Fl=(a,b)=>BigInt.asIntN(64,a%b),E5b=(a,b)=>BigInt.asIntN(64,BigInt.asUintN(64,a)%BigInt.asUintN(64, +b)),CN=(a,b)=>BigInt.asIntN(64,a&b),Gu=(a,b)=>BigInt.asIntN(64,a|b),SW=(a,b)=>BigInt.asIntN(64,a^b),EU=(a,b)=>BigInt.asIntN(64,a<BigInt.asIntN(64,a>>BigInt(b&63)),GD=(a,b)=>BigInt.asIntN(64,BigInt.asUintN(64,a)>>BigInt(b&63)),K=(cls,sz)=>{let data=new Array(sz);data.fill(null);return new (Ib(cls))(data);},BB=(cls,data)=>new (Ib(cls))(data),Fam=(cls,sz)=>new (Ib(cls))(new Array(sz)),Vu=sz=>new B94(new BigInt64Array(sz)),Br$=data=>{let buffer=new BigInt64Array(data.length);buffer.set(data);return new B94(buffer);},Fd +=sz=>new B32(new Uint16Array(sz)),AA$=data=>{let buffer=new Uint16Array(data.length);buffer.set(data);return new B32(buffer);},BD=sz=>new CuR(new Int8Array(sz)),IU=data=>{let buffer=new Int8Array(data.length);buffer.set(data);return new CuR(buffer);},AMU=sz=>new CcS(new Int16Array(sz)),BeN=data=>{let buffer=new Int16Array(data.length);buffer.set(data);return new CcS(buffer);},Ca=sz=>new C$1(new Int32Array(sz)),Ey=data=>{let buffer=new Int32Array(data.length);buffer.set(data);return new C$1(buffer);},BBl=sz=> +new DT5(new Int8Array(sz)),Ctj=sz=>new DkC(new Float32Array(sz)),CW5=data=>{let buffer=new Float32Array(data.length);buffer.set(data);return new DkC(buffer);},Hr=sz=>new COm(new Float64Array(sz)),Gh=data=>{let buffer=new Float64Array(data.length);buffer.set(data);return new COm(buffer);},Ib=cls=>{let result=cls[Gf].arrayType;if(result===null){function JavaArray(data){(AJB()).call(this);this.data=data;}JavaArray.prototype=Object.create((AJB()).prototype);JavaArray.prototype.type=cls;JavaArray.prototype.constructor +=JavaArray;JavaArray.prototype.toString=function(){let str="[";for(let i=0;i0){str+=", ";}str+=this.data[i].toString();}str+="]";return str;};JavaArray.prototype.b2=function(){let dataCopy;if('slice' in this.data){dataCopy=this.data.slice();}else {dataCopy=new this.data.constructor(this.data.length);for(let i=0;i{let first=0;for(let i=dimensions.length -1;i>=0;i=i -1|0){if(dimensions[i]===0){first=i;break;}}if(first>0){for(let i=0;i{let arrays=new Array(BU6(dimensions,0));if(arrays.length===0){return BMZ(AGK,dimensions);}let firstDim=dimensions[0]|0;for(let i=0;i{let arrays=new Array(BU6(dimensions,0));if(arrays.length===0){return BMZ(AUQ,dimensions);}let firstDim=dimensions[0]|0;for(let i=0;i{let val=dimensions[start ++1]|0;for(let i=start+2;i{let limit=arrays.length;for(let i=start+1|0;i{FfL();BKG=new Array(strings.length);for(let i=0;iBKG[index],BF4=(array,offset,count)=>{let result="";let limit=offset+count;if(count<=16){for(let i=offset;iBF4(array,0,array.length),FjC=(string,begin,dst,dstBegin, +count)=>{for(let i=0;i{let array=new Uint16Array(string.length);for(let i=0;istr===null?null:AT0(str),Cq=str=>str===null?null:str.bGI,FfL=()=>Pu(),C6Q; +{C6Q=str=>str;}let CLv=cls=>{let meta=cls[Gf];if(meta.resolvedEnumConstants===null){let result=meta.enumConstants();meta.resolvedEnumConstants=result!==null?result:[];}return meta.resolvedEnumConstants;},F0=(obj,cls)=>obj instanceof AJB()&&!!obj.constructor[Gf]&&A$F(obj.constructor,cls),A$F=(from,to)=>{if(to===AJB()){return from[Gf].primitiveKind===0;}if(from===to){return true;}let map=from[Gf].assignableCache;if(map===null){map=new Map();from[Gf].assignableCache=map;}let cachedResult=map.get(to);if(typeof cachedResult +!=='undefined'){return cachedResult;}if(to[Gf].itemType!==null){let result=from[Gf].itemType!==null&&A$F(from[Gf].itemType,to[Gf].itemType);map.set(to,result);return result;}let parent=from[Gf].parent;if(parent!==null&&parent!==from){if(A$F(parent,to)){map.set(to,true);return true;}}let superinterfaces=from[Gf].superinterfaces;for(let i=0;i{throw CWb(ex);},Bov=Symbol("javaException"),CWb +=ex=>{if(!ex.$jsException){Dod(ex);}return ex.$jsException;},Dod=ex=>{let javaCause=ESL(ex);let jsCause=javaCause!==null?javaCause.$jsException:void 0;let cause=typeof jsCause==="object"?{cause:jsCause}:void 0;let err=new AFo("Java exception thrown",cause);if(typeof Error.captureStackTrace==="function"){Error.captureStackTrace(err);}err[Bov]=ex;ex.$jsException=err;Cng(err,ex);},Cng=(err,ex)=>{if(typeof E6A==="function"&&err.stack){let stack=E6A(err.stack);let javaStack=K(ElI(),stack.length);let elem;let noStack +=false;for(let i=0;i{let ex=err[Bov];if(!ex){ex=Evt(Fe("(JavaScript) "+err.toString()));err[Bov] +=ex;ex.$jsException=err;Cng(err,ex);}return ex;},Evt=message=>D1W(message),Eu9=t=>CfF(t),ESL=t=>B79(t),ElI=()=>B9j,EfA=(className,methodName,fileName,lineNumber)=>{{return null;}},EhP=(e,stack)=>{},E4H=outputFunction=>{let buffer="";return msg=>{let index=0;while(true){let next=msg.indexOf('\n',index);if(next<0){break;}outputFunction(buffer+msg.substring(index,next));buffer="";index=next+1;}buffer+=msg.substring(index);};},EhV=typeof $rt_putStderrCustom==="function"?$rt_putStderrCustom:typeof console==="object" +?E4H(msg=>console.error(msg)):()=>{},CVD=null,FhJ=data=>{let i=0;let packages=new Array(data.length);for(let j=0;j=0?packages[prefixIndex]:"";packages[j]=prefix+data[i++]+".";}CVD=packages;},Fc9=[],Em=data=>{let packages=CVD;let i=0;while(i=0){m.name=packages[packageIndex] ++m.name;}}m.binaryName="L"+m.name+";";let superclass=data[i++];m.parent=superclass!==0?superclass:null;m.superinterfaces=data[i++];if(m.parent){cls.prototype=Object.create(m.parent.prototype);}else {cls.prototype={};}cls.prototype.constructor=cls;m.modifiers=data[i++];m.primitiveKind=0;if((m.modifiers&1<<9)!==0){m.parent=null;}let innerClassInfo=data[i++];if(innerClassInfo!==0){let enclosingClass=innerClassInfo[0];m.enclosingClass=enclosingClass!==0?enclosingClass:null;let declaringClass=innerClassInfo[1];m.declaringClass +=declaringClass!==0?declaringClass:null;let simpleName=innerClassInfo[2];m.simpleName=simpleName!==0?simpleName:null;}let clinit=data[i++];m.clinit=clinit!==0?()=>{m.clinit=()=>{};clinit();}:()=>{};let virtualMethods=data[i++];if(virtualMethods!==0){for(let j=0;j{let i=0;while(i{let thread=A9l();return thread!=null&&thread.isSuspending();},FmD=()=>{let thread=A9l();return thread!=null&&thread.isResuming();},DSy=()=>{let nativeThread=A9l();if(nativeThread===null){throw new Error("Suspension point reached from non-threading context "+"(perhaps, from native JS method). See https://teavm.org/docs/runtime/coroutines.html "+"('Interaction with JavaScript' section)");}return nativeThread;},Fvm=null,A9l=()=>Fvm,Fhk=()=>{throw new Error("Invalid recorded state");}; +function F(){this.bLF=null;this.$id$=0;} +let Jl=b=>{let c,d;if(R4()!==null){if(b.bLF===null)BYZ(b);c=b.bLF;d=c.bNV;if(d===null)c.bNV=R4();else if(d!==R4()){c=new BP;Bp(c,E(0));J(c);}b=b.bLF;b.bOa=b.bOa+1|0;return;}},G2=b=>{let c,d;if(R4()!==null){if(!A6F(b)&&b.bLF.bNV===R4()){c=b.bLF;d=c.bOa-1|0;c.bOa=d;if(!d)c.bNV=null;A6F(b);return;}b=new BYk;X(b);J(b);}},Fyw=b=>{let c,d,$p,$z;$p=0;if(FmD()){let $T=A9l();$p=$T.l();d=$T.l();c=$T.l();b=$T.l();}_:while(true){switch($p){case 0:c=1;if(b.bLF===null)BYZ(b);d=b.bLF;if(d.bNV===null)d.bNV=R4();if(b.bLF.bNV +!==R4()){$p=1;continue _;}b=b.bLF;b.bOa=b.bOa+c|0;return;case 1:FhQ(b,c);if(DN6()){break _;}return;default:Fhk();}}A9l().s(b,c,d,$p);},BYZ=b=>{let c;c=new Cvt;c.bNV=R4();b.bLF=c;},DQp=(b,c,d)=>{let e,f,g;e=R4();f=b.bLF;if(f!==null){if(f.bNV!==null){if(f.bYF===null)f.bYF=U1();f=f.bYF;g=new CdE;g.cRf=e;g.cRg=b;g.cRd=c;g.cRe=d;CCu(f,g);return;}f.bNV=e;Bqu(e);b=b.bLF;b.bOa=b.bOa+c|0;b=null;Bs$(d,b);return;}BYZ(b);Bqu(e);b=b.bLF;b.bOa=b.bOa+c|0;b=null;Bs$(d,b);},Fyd=b=>{let c,d;if(!A6F(b)&&b.bLF.bNV===R4()){c=b.bLF;d +=c.bOa-1|0;c.bOa=d;if(d<=0){c.bNV=null;c=c.bYF;if(!(c!==null&&!RL(c)))A6F(b);else{c=new Ch1;c.cNf=b;D$W(c,0);}}return;}b=new BYk;X(b);J(b);},A6F=a=>{let b,c;b=a.bLF;if(b!==null){a:{if(b.bNV===null){c=b.bYF;if(!(c!==null&&!RL(c))){b=b.ddo;if(b===null)break a;if(b.j())break a;}}return 0;}a.bLF=null;return 1;}return 1;},B0e=a=>{return;},Fy4=()=>{let a=new F();B0e(a);return a;},Dg=a=>{return Bo(Fl0(a));},Fl0=b=>{return b.constructor;},EgA=a=>{return AI$(a);},BUK=(a,b)=>{return a!==b?0:1;},JH=a=>{let b,c;b=Boa(AI$(a));c +=new S;T(c);H(H(c,E(1)),b);return Q(c);},AI$=a=>{let b;b=a;if(!b.$id$)b.$id$=B$8();return a.$id$;},Cx3=a=>{let b,c,d;b=(Dg(a)).bKC;if(!F0(a,Iu)&&b[Gf].itemType===null){b=new BqV;X(b);J(b);}c=Etz(a);b=c;d=B$8();b.$id$=d;return c;},FhQ=(b,c)=>{let thread=DSy();let javaThread=Dto();if(thread.isResuming()){thread.status=0;let result=thread.attribute;if(result instanceof Error){throw result;}return result;}let callback=function(){};callback.i=val=>{thread.attribute=val;Cs8(javaThread);thread.resume();};callback.gh +=e=>{thread.attribute=CWb(e);Cs8(javaThread);thread.resume();};callback=D5X(callback);thread.suspend(()=>{try {DQp(b,c,callback);;}catch($e){callback.gh($e);}});return null;},ET=N(0),F1=N(0),KH=N(0); +function Bi(){F.call(this);this.ckD=0;} +let EIE=null,BQd=null,Edb=null,Pu=()=>{Pu=Z(Bi);Fej();},DZb=a=>{Pu();a.bGI="";},CRO=()=>{let a=new Bi();DZb(a);return a;},A0i=(a,b)=>{Pu();a.bGI=BF4(b.data,0,b.data.length);},Ue=a=>{let b=new Bi();A0i(b,a);return b;},DyG=(a,b)=>{a.bGI=b;},AT0=a=>{let b=new Bi();DyG(b,a);return b;},DsY=(a,b,c,d)=>{Pu();CsB(c,d,b.data.length);a.bGI=BF4(b.data,c,d);},QV=(a,b,c)=>{let d=new Bi();DsY(d,a,b,c);return d;},BNS=b=>{let c;Pu();c=CRO();c.bGI=CDW(b.data);return c;},Bn=(a,b)=>{let c;if(b>=0&&b{let c,d;a:{b:{Fr();c=a;if(b<(c.bGI.length-1|0)&&Pl(Bn(c,b))){d=b+1|0;if(Sh(Bn(c,d)))break b;}b=Bn(c,b);break a;}b=ADq(Bn(c,b),Bn(c,d));}return b;},GB=a=>{return a.bGI.length;},CQ=a=>{return a.bGI.length?0:1;},ANC=(a,b,c,d,e)=>{let f,g;if(b>=0&&b<=c&&c<=a.bGI.length&&e>=0){f=d.data;c=c-b|0;if((e+c|0)<=f.length){FjC(a.bGI,b,d.data,e,c);return;}}g=new EN;X(g);J(g);},J6=(a,b)=>{let c,d,e;if(a!==b){c=DO(a.bGI.length,b.bGI.length);d=0;while(true){if(d>=c)return a.bGI.length-b.bGI.length +|0;e=a.bGI.charCodeAt(d)-b.bGI.charCodeAt(d)|0;if(e)break;d=d+1|0;}return e;}return 0;},Rl=(a,b,c)=>{let d,e,f;if((c+b.bGI.length|0)<=a.bGI.length){d=0;while(d{if(a!==b)return Rl(a,b,0);return 1;},CxS=(a,b,c,d,e,f)=>{let g,h,i,j,k;if(c>=0&&e>=0&&(c+f|0)<=a.bGI.length&&(e+f|0)<=d.bGI.length){g=0;while(g{let f,g,h,i;if(b>=0&&d>=0&&(b+e|0)<=a.bGI.length&&(d+e|0)<=c.bGI.length){f=0;while(f{let c,d,e,f;if(a!==b){if(b.bGI.length<=a.bGI.length){c=0;d=a.bGI.length-b.bGI.length|0;while(d{let d, +e,f,g;d=DT(0,c);if(b>=65536){e=BmJ(b);f=Bem(b);while(true){if(d>=(a.bGI.length-1|0))return (-1);if(a.bGI.charCodeAt(d)==e&&a.bGI.charCodeAt((d+1|0))==f)break;d=d+1|0;}return d;}g=b&65535;while(true){if(d>=a.bGI.length)return (-1);if(a.bGI.charCodeAt(d)==g)break;d=d+1|0;}return d;},Eq=(a,b)=>{return In(a,b,0);},ADv=(a,b,c)=>{let d,e,f,g;d=DO(c,a.bGI.length-1|0);if(b>=65536){e=BmJ(b);f=Bem(b);while(true){if(d<1)return (-1);if(a.bGI.charCodeAt(d)==f){c=d-1|0;if(a.bGI.charCodeAt(c)==e)break;}d=d+(-1)|0;}return c;}g +=b&65535;while(true){if(d<0)return (-1);if(a.bGI.charCodeAt(d)==g)break;d=d+(-1)|0;}return d;},Qg=(a,b)=>{return ADv(a,b,a.bGI.length-1|0);},Sy=(a,b,c)=>{let d,e,f;d=DT(0,c);e=a.bGI.length-b.bGI.length|0;a:while(true){if(d>e)return (-1);f=0;while(true){if(f>=b.bGI.length)break a;if(a.bGI.charCodeAt((d+f|0))!=b.bGI.charCodeAt(f))break;f=f+1|0;}d=d+1|0;}return d;},IZ=(a,b)=>{return Sy(a,b,0);},Caw=(a,b,c)=>{let d,e;d=DO(c,a.bGI.length-b.bGI.length|0);a:while(true){if(d<0)return (-1);e=0;while(true){if(e>=b.bGI.length)break a;if +(a.bGI.charCodeAt((d+e|0))!=b.bGI.charCodeAt(e))break;e=e+1|0;}d=d+(-1)|0;}return d;},AID=(a,b)=>{return Caw(a,b,a.bGI.length);},B_=(a,b,c)=>{let d,e,f;d=a.bGI.length;e=C5(b,c);if(e){if(!b&&c==d)return a;if(b>=0&&e<=0&&c<=d)return AT0(a.bGI.substring(b,c));f=new AG0;X(f);J(f);}return BQd;},CC=(a,b)=>{return B_(a,b,a.bGI.length);},E6U=(a,b,c)=>{return B_(a,b,c);},KG=(a,b,c)=>{let d,e,f,g,h;if(b!=c){d=0;while(d{let c,d,e;c=a.bGI.length;b=b;d=c-b.bGI.length|0;c=0;while(c<=d){e=0;while(true){if(e>=b.bGI.length)return 1;if(a.bGI.charCodeAt((c+e|0))!=Bn(b,e))break;e=e+1|0;}c=c+1|0;}return 0;},Jt=(a,b,c)=>{let d,e,f,g,h;if(b!==c){b=b;if(!CQ(b)){if(b.bGI.length==1){d=c;if(d.bGI.length==1)return KG(a,Bn(b,0),Bn(d,0));}d=new S;T(d);e=a.bGI.length-b.bGI.length|0;f=0;while(f<= +e){g=0;a:{b:{while(true){if(g>=b.bGI.length)break b;if(a.bGI.charCodeAt((f+g|0))!=Bn(b,g))break;g=g+1|0;}Bb(d,a.bGI.charCodeAt(f));break a;}H(d,c);f=f+(b.bGI.length-1|0)|0;}f=f+1|0;}H(d,CC(a,f));return Q(d);}d=new S;T(d);h=0;while(h{let b,c;b=0;c=a.bGI.length-1|0;a:{b:{while(b<=c){if(a.bGI.charCodeAt(b)>32)break b;b=b+1|0;}break a;}}while(b<=c&&a.bGI.charCodeAt(c)<=32){c=c+(-1)|0;}return B_(a,b,c+1|0);},D06=a=>{return a;},Q5 +=a=>{let b,c,d,e;b=Fd(a.bGI.length);c=b.data;d=0;e=c.length;while(d{Pu();return b===null?E(2):b.p();},ER6=b=>{Pu();return Ue(b);},QO=b=>{let c,d;Pu();c=new Bi;d=Fd(1);d.data[0]=b;A0i(c,d);return c;},AEV=b=>{let c;Pu();c=new S;T(c);BE(c,b);return Q(c);},Bj=(a,b)=>{let c;if(a!==b){if(b instanceof Bi){c=b;return a.bGI!==c.bGI?0:1;}return 0;}return 1;},BG=(a,b)=>{let c;if(a!==b){if(b!==null){if(a.bGI.length==b.bGI.length){c=0;while(c{let c,d,e,f,$$je;c=B3q(Du9(a.bGI));a:{try{d=Ebc(b);U0();c=EOT(Ffe(EBz(d,WH),WH),c);break a;}catch($$e){$$je=P($$e);if($$je instanceof AMA){c=$$je;}else{throw $$e;}}d=new C4;ABa(d,E(3),c);J(d);}e=c.cn$===null?0:1;if(e&&!c.bHS&&c.bLv==c.V())return B2N(c);f=BD(IL(c));Clb(c,f,0,f.data.length);return f;},FP=a=>{let b;a:{if(!a.ckD){b=0;while(true){if(b>=a.bGI.length)break a;a.ckD=(31*a.ckD|0)+a.bGI.charCodeAt(b)|0;b=b ++1|0;}}}return a.ckD;},FS=a=>{let b;b=a.bGI.toLowerCase();if(b!==a.bGI)a=AT0(b);return a;}; +let CXG=(a,b)=>{let c;c=a.bGI.toLocaleLowerCase((DpC(b)).bGI);if(c!==a.bGI)a=AT0(c);return a;},Vq=a=>{let b;b=a.bGI.toUpperCase();if(b!==a.bGI)a=AT0(b);return a;},Qc=(a,b)=>{let c;c=a;return Kr(D3(Dp(b),c));},IW=(a,b)=>{return A0k(Dp(b),a);},Ih=(a,b,c)=>{return UQ(D3(Dp(b),a),c);},AXR=(a,b,c)=>{let d;b=D3(Dp(b),a);BRb(b);if(!GW(b))b=b.bPH.p();else{d=new Sj;T(d);AMW(b,d,c);b=Q(ALx(b,d));}return b;},Jv=(b,c)=>{Pu();return CUg(Cnm(Cbh(ACH()),b,c));},Dq_=(b,c,d)=>{Pu();return CUg(Cnm(Cbh(b),c,d));},EsU=(b,c)=>{let d, +e,f,g,h,i,j,k,l,m;Pu();c=c.data;d=c.length;if(d){e=0;f=0;while(f{return J6(a,b);},Fej=()=>{EIE=Fd(0);BQd=CRO();Edb=new CUh;},Lp=N(); +function AAa(){Lp.call(this);this.bHl=0;} +let Fho=null,BgA=null,OX=()=>{OX=Z(AAa);EpN();},D2h=(a,b)=>{OX();a.bHl=b;},C7a=a=>{let b=new AAa();D2h(b,a);return b;},C0O=(b,c)=>{OX();if(!(c>=2&&c<=36))c=10;return (CZa(Erq(20),b,c)).p();},Boa=b=>{OX();return Boo(b,4);},W7=b=>{OX();return C0O(b,10);},Y5=(b,c)=>{OX();if(b===null){b=new Ex;Bp(b,E(4));J(b);}return DGZ(b,0,b.bGI.length,c);},DGZ=(b,c,d,e)=>{let f,g,h,i,j,k,l,m,n;OX();if(c!=d){if(e>=2&&e<=36){a:{b:{c:{f=0;b=b;switch(Bn(b,c)){case 43:break c;case 45:break b;default:}g=c;break a;}g=c+1|0;break a;}f +=1;g=c+1|0;}h=0;i=1+(2147483647/e|0)|0;if(g!=d){while(g=48&&k<=57?k-48|0:k>=97&&k<=122?(k-97|0)+10|0:!(k>=65&&k<=90)?(-1):(k-65|0)+10|0;if(k<0){l=new Ex;b=BY(B_(b,c,d));m=new S;T(m);H(H(m,E(5)),b);Bp(l,Q(m));J(l);}if(k>=e){l=new Ex;b=BY(B_(b,c,d));m=new S;T(m);n=H(m,E(6));BE(n,e);H(H(n,E(7)),b);Bp(l,Q(m));J(l);}if(h>i){b=new Ex;Bp(b,E(8));J(b);}h=Ev(e,h)+k|0;if(h<0){if(j==d&&h==(-2147483648)&&f)return (-2147483648);l=new Ex;b=BY(B_(b,c,d));m=new S;T(m);H(H(m,E(9)),b);Bp(l,Q(m));J(l);}g +=j;}if(f)h= -h|0;return h;}b=new Ex;X(b);J(b);}b=new Ex;l=new S;T(l);BE(H(l,E(10)),e);Bp(b,Q(l));J(b);}b=new Ex;Bp(b,E(11));J(b);},CZ=b=>{OX();return Y5(b,10);},CL=b=>{let c,d;OX();if(b>=(-128)&&b<=127){a:{if(BgA===null){BgA=K(AAa,256);c=0;while(true){d=BgA.data;if(c>=d.length)break a;d[c]=C7a(c-128|0);c=c+1|0;}}}return BgA.data[b+128|0];}return C7a(b);},FJ=a=>{return a.bHl;},DO$=a=>{return V(a.bHl);},DZc=a=>{return a.bHl;},EIO=a=>{return W7(a.bHl);},Fg5=a=>{let b;b=a.bHl;OX();return b;},DXr=(a,b)=>{if(a!== +b)return !(b instanceof AAa&&b.bHl==a.bHl)?0:1;return 1;},T1=(b,c)=>{OX();return C5(b,c);},AOe=b=>{let c,d;OX();if(b){c=0;d=b>>>16|0;if(d)c=16;else d=b;b=d>>>8|0;if(!b)b=d;else c=c|8;d=b>>>4|0;if(!d)d=b;else c=c|4;b=d>>>2|0;if(!b)b=d;else c=c|2;if(b>>>1|0)c=c|1;return (32-c|0)-1|0;}return 32;},AMl=b=>{let c,d;OX();if(b){c=0;d=b<<16;if(d)c=16;else d=b;b=d<<8;if(!b)b=d;else c=c|8;d=b<<4;if(!d)d=b;else c=c|4;b=d<<2;if(!b)b=d;else c=c|2;if(b<<1)c=c|1;return (32-c|0)-1|0;}return 32;},C1Z=(b,c)=>{let d;OX();d=c&31;return b +<>>(32-d|0)|0);},Foj=(a,b)=>{return T1(a.bHl,b.bHl);},EpN=()=>{Fho=Bo(AGK);}; +function ANF(){let a=this;F.call(a);a.bHW=null;a.bG4=0;} +let T=a=>{JP(a,16);},Fzn=()=>{let a=new ANF();T(a);return a;},JP=(a,b)=>{a.bHW=Fd(b);},Erq=a=>{let b=new ANF();JP(b,a);return b;},L=(a,b)=>{return a.bw(a.bG4,b);},BAG=(a,b,c)=>{let d,e,f,g;if(b>=0&&b<=a.bG4){if(c===null)c=E(2);else if(CQ(c))return a;a.bx(a.bG4+c.bGI.length|0);d=a.bG4-1|0;while(d>=b){a.bHW.data[d+c.bGI.length|0]=a.bHW.data[d];d=d+(-1)|0;}a.bG4=a.bG4+c.bGI.length|0;e=0;while(e{return CZa(a, +b,10);},CZa=(a,b,c)=>{return Fnv(a,a.bG4,b,c);},Fnv=(a,b,c,d)=>{let e,f,g,h,i,j,k;e=1;if(c<0){e=0;c= -c|0;}a:{if(AB_(c,d)<0){if(e)Mp(a,b,b+1|0);else{Mp(a,b,b+2|0);f=a.bHW.data;g=b+1|0;f[b]=45;b=g;}a.bHW.data[b]=AG2(c,d);}else{h=1;i=1;j=UW((-1),d);b:{c:{while(true){k=Ev(h,d);if(AB_(k,c)>0)break c;i=i+1|0;if(AB_(k,j)>0)break;h=k;}break b;}k=h;}if(!e)i=i+1|0;Mp(a,b,b+i|0);if(e)e=b;else{f=a.bHW.data;e=b+1|0;f[b]=45;}while(true){if(!k)break a;f=a.bHW.data;b=e+1|0;f[e]=AG2(UW(c,k),d);c=ESA(c,k);k=UW(k,d);e=b;}}}return a;},Emw +=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q;d=QE(c,0.0);if(d){if(!(isNaN(c)?1:0)){if(!E1u(c)){A6E();e=DlA;Fp2(c,e);d=e.cF3;f=e.cra;g=e.cQT;h=1;i=1;if(g)i=2;j=9;k=Fdv(d);if(k>0)j=j-k|0;l=0;m=0;if(f<7&&f>=(-3)){if(f>=0){h=f+1|0;j=DT(j,h+1|0);f=0;}else{h=0;l=( -f|0)-1|0;m=1;i=i+1|0;f=0;}}if(f){i=i+2|0;if(!(f>(-10)&&f<10))i=i+1|0;if(f<0)i=i+1|0;}if(f&&j==h)j=j+1|0;Mp(a,b,b+(i+(j+l|0)|0)|0);if(!g)g=b;else{n=a.bHW.data;g=b+1|0;n[b]=45;}o=100000000;if(m){n=a.bHW.data;b=g+1|0;n[g]=48;g=b+1|0;n[b]=46;while(true){b=l+ +(-1)|0;if(l<=0)break;p=g+1|0;n[g]=48;l=b;g=p;}}q=0;while(q=0)b=p;else{f= -f|0;b=p+1|0;n[p]=45;}if(f<10)d=b;else{d=b+1|0;n[b]=(48+(f/10|0)|0)&65535;}n[d]=(48+(f%10|0)|0)&65535;}return a;}if(d>0){Mp(a,b,b+8|0);d=b;}else{Mp(a,b,b+9|0);n=a.bHW.data;d=b+1|0;n[b]=45;}n=a.bHW.data;b=d+1|0;n[d]=73;d=b+1|0;n[b]=110;b=d+1|0;n[d]=102;d=b+1|0;n[b] +=105;b=d+1|0;n[d]=110;d=b+1|0;n[b]=105;b=d+1|0;n[d]=116;n[b]=121;return a;}Mp(a,b,b+3|0);n=a.bHW.data;d=b+1|0;n[b]=78;b=d+1|0;n[d]=97;n[b]=78;return a;}if(1.0/c!==Infinity){Mp(a,b,b+4|0);n=a.bHW.data;d=b+1|0;n[b]=45;b=d+1|0;n[d]=48;d=b+1|0;n[b]=46;n[d]=48;return a;}Mp(a,b,b+3|0);n=a.bHW.data;d=b+1|0;n[b]=48;b=d+1|0;n[d]=46;n[b]=48;return a;},DML=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q;d=QE(c,0.0);if(d){if(!(isNaN(c)?1:0)){if(!AWW(c)){A6E();e=CvR;BDa(c,e);f=e.b3X;g=e.b7J;h=e.ceU;i=1;j=1;if(h)j=2;k=18;l=Fbi(f);if +(l>0)k=k-l|0;m=0;n=0;if(g<7&&g>=(-3)){if(g>=0){i=g+1|0;k=DT(k,i+1|0);g=0;}else{i=0;m=( -g|0)-1|0;n=1;j=j+1|0;g=0;}}if(g){j=j+2|0;if(!(g>(-10)&&g<10))j=j+1|0;if(!(g>(-100)&&g<100))j=j+1|0;if(g<0)j=j+1|0;}if(g&&k==i)k=k+1|0;Mp(a,b,b+(j+(k+m|0)|0)|0);if(!h)h=b;else{o=a.bHW.data;h=b+1|0;o[b]=45;}p=O(1569325056, 23283064);if(n){o=a.bHW.data;b=h+1|0;o[h]=48;h=b+1|0;o[b]=46;while(true){b=m+(-1)|0;if(m<=0)break;d=h+1|0;o[h]=48;m=b;h=d;}}q=0;while(q=0)i=d;else{g= -g|0;i=d+1|0;o[d]=45;}if(g>=100){b=i+1|0;o[i]=(48+(g/100|0)|0)&65535;g=g%100|0;d=b+1|0;o[b]=(48+(g/10|0)|0)&65535;}else if(g<10)d=i;else{d=i+1|0;o[i]=(48+(g/10|0)|0)&65535;}o[d]=(48+(g%10|0)|0)&65535;}return a;}if(d>0){Mp(a,b,b+8|0);d=b;}else{Mp(a,b,b+9|0);o=a.bHW.data;d=b+1|0;o[b]=45;}o=a.bHW.data;b=d+1|0;o[d]=73;d=b+1|0;o[b]=110;b=d+1|0;o[d]=102;d=b+1|0;o[b]=105;b= +d+1|0;o[d]=110;d=b+1|0;o[b]=105;b=d+1|0;o[d]=116;o[b]=121;return a;}Mp(a,b,b+3|0);o=a.bHW.data;d=b+1|0;o[b]=78;b=d+1|0;o[d]=97;o[b]=78;return a;}if(1.0/c!==Infinity){Mp(a,b,b+4|0);o=a.bHW.data;d=b+1|0;o[b]=45;b=d+1|0;o[d]=48;d=b+1|0;o[b]=46;o[d]=48;return a;}Mp(a,b,b+3|0);o=a.bHW.data;d=b+1|0;o[b]=48;b=d+1|0;o[d]=46;o[b]=48;return a;},Fdv=b=>{let c,d,e;if(b%1000000000|0){c=0;d=1;if(!(b%100000000|0)){c=8;d=100000000;}e=d*10000|0;if(b%e|0)e=d;else c=c|4;d=e*100|0;if(b%d|0)d=e;else c=c|2;if(!(b%(d*10|0)|0))c=c +|1;return c;}return 9;},Fbi=b=>{let c,d,e,f,g;c=V(1);d=0;e=16;A6E();f=CDU.data;g=f.length-1|0;while(g>=0){if(DS(Fl(b,CT(c,f[g])),BH)){d=d|e;c=CT(c,f[g]);}e=e>>>1|0;g=g+(-1)|0;}return d;},Bb=(a,b)=>{return a.bH(a.bG4,b);},B81=(a,b,c)=>{Mp(a,b,b+1|0);a.bHW.data[b]=c;return a;},BGd=(a,b)=>{let c,d;c=a.bHW.data.length;if(c=1073741823?2147483647:DT(b,DT(c*2|0,5));a.bHW=B$w(a.bHW,d);return;}},Q=a=>{return QV(a.bHW,0,a.bG4);},Vx=(a,b)=>{let c;if(b>=0&&b{return a.bK(a.bG4,b,c,d);},BIh=(a,b,c,d,e)=>{let f,g;if(d<=e&&e<=c.bL()&&d>=0){Mp(a,b,(b+e|0)-d|0);while(d{return a.bM(b,0,b.bL());},UP=(a,b,c,d)=>{return a.bN(a.bG4,b,c,d);},CEi=(a,b,c,d,e)=>{let f,g,h,i;Mp(a,b,b+e|0);f=e+d|0;while(d{return a.bO(b,0,b.data.length);},Mp=(a,b,c)=>{let d,e,f,g;d=a.bG4;e=d-b|0;a.bx((d+c|0)-b|0);f= +e-1|0;while(f>=0){g=a.bHW.data;g[c+f|0]=g[b+f|0];f=f+(-1)|0;}a.bG4=a.bG4+(c-b|0)|0;},AUZ=N(0),S=N(ANF),ErW=a=>{T(a);},CR=()=>{let a=new S();ErW(a);return a;},A_K=(a,b)=>{let c,d;b=b;a.bHW=Fd(b.bGI.length);c=0;while(true){d=a.bHW.data;if(c>=d.length)break;d[c]=Bn(b,c);c=c+1|0;}a.bG4=b.bGI.length;},Lk=a=>{let b=new S();A_K(b,a);return b;},H=(a,b)=>{let c,d;c=a.bG4;d=a;b=b===null?E(2):b.p();BAG(d,c,b);return a;},FN=(a,b)=>{L(a,b);return a;},ZY=(a,b)=>{BE(a,b);return a;},QN=(a,b)=>{let c,d,e,f,g,h,i,j;c=a.bG4;d +=a;e=1;if(GR(b,BH)){e=0;b=LF(b);}a:{if(Tx(b,V(10))<0){if(e)Mp(d,c,c+1|0);else{Mp(d,c,c+2|0);f=d.bHW.data;g=c+1|0;f[c]=45;c=g;}d.bHW.data[c]=AG2(Cp(b),10);}else{g=1;h=V(1);i=OB(V(-1),V(10));b:{c:{while(true){j=CT(h,V(10));if(Tx(j,b)>0)break c;g=g+1|0;if(Tx(j,i)>0)break;h=j;}break b;}j=h;}if(!e)g=g+1|0;Mp(d,c,c+g|0);if(e)g=c;else{f=d.bHW.data;g=c+1|0;f[c]=45;}while(true){if(DS(j,BH))break a;f=d.bHW.data;c=g+1|0;f[g]=AG2(Cp((OB(b,j))),10);b=Fia(b,j);j=OB(j,V(10));g=c;}}}return a;},FzC=(a,b)=>{let c;c=a.bG4;Emw(a, +c,b);return a;},D6=(a,b)=>{let c;c=a.bG4;DML(a,c,b);return a;},Et=(a,b)=>{Bb(a,b);return a;},XU=(a,b)=>{let c,d,e;c=a.bG4;d=a;e=!b?E(12):E(13);BAG(d,c,e);return a;},EIC=(a,b,c)=>{let d,e,f,g,h,i;if(b>=0){d=C5(b,c);if(d<=0){e=a.bG4;if(b<=e){if(d){if(c>e)c=e;f=e-c|0;a.bG4=e-(c-b|0)|0;e=0;while(e{let c,d,e,f;if(b>=0){c=a.bG4;if(b{let d;if(b>a.bG4){d=new EN;X(d);J(d);}a.bHW.data[b]=c;},CMK=(a,b,c)=>{let d;if(b<=c&&b>=0&&c<=a.bG4)return QV(a.bHW,b,c-b|0);d=new EN;X(d);J(d);},B62=(a,b)=>{a.bG4=b;},DpS=(a,b,c)=>{return CMK(a,b,c);},Ekl=(a,b,c,d,e)=>{CEi(a,b,c,d,e);return a;},Dw3=(a,b,c,d)=>{UP(a,b,c,d);return a;},DS0=(a,b,c,d,e)=>{BIh(a,b,c,d,e);return a;},Ew3=(a,b,c,d)=>{Y7(a,b,c,d);return a;},FuO=(a,b)=>{return Vx(a,b);}; +let AMP=a=>{return a.bG4;},CH=a=>{return Q(a);},EA7=(a,b)=>{BGd(a,b);},Elb=(a,b,c)=>{B81(a,b,c);return a;},FgB=(a,b,c)=>{BAG(a,b,c);return a;}; +function Gt(){let a=this;F.call(a);a.bRf=null;a.cbg=null;a.b_u=0;a.cl9=0;a.b5H=null;a.c2w=null;} +let X=a=>{a.b5H=K(Gt,0);Bmg(a);a.b_u=1;a.cl9=1;},FzY=()=>{let a=new Gt();X(a);return a;},Bp=(a,b)=>{a.b5H=K(Gt,0);Bmg(a);a.b_u=1;a.cl9=1;a.bRf=b;},Fzx=a=>{let b=new Gt();Bp(b,a);return b;},ABa=(a,b,c)=>{a.b5H=K(Gt,0);Bmg(a);a.b_u=1;a.cl9=1;a.bRf=b;a.cbg=c;},Fzr=(a,b)=>{let c=new Gt();ABa(c,a,b);return c;},YV=(a,b)=>{a.b5H=K(Gt,0);Bmg(a);a.b_u=1;a.cl9=1;a.bRf=b===null?null:AC1(b);a.cbg=b;},FyN=a=>{let b=new Gt();YV(b,a);return b;},FyL=a=>{return a;},Bmg=a=>{Dod(a);},CfF=a=>{return a.bRf;},Fyp=a=>{return a.bW();},B79 +=a=>{let b;b=a.cbg;if(b===a)b=null;return b;},AC1=a=>{let b,c,d,e;b=a.bW();c=BN(Dg(a));if(b===null)d=E(14);else{d=new S;T(d);H(H(d,E(7)),b);d=Q(d);}e=new S;T(e);H(H(e,c),d);return Q(e);},AEM=a=>{Cic(a,Fm());},Cic=(a,b)=>{let c,d,e,f,g,h,i;c=BN(Dg(a));d=b;AOm(d,c);e=a.bW();if(e!==null){c=new S;T(c);H(H(c,E(7)),e);AOm(d,Q(c));}a:{c=b;AOm(c,E(15));f=a.c2w;if(f!==null){f=f.data;g=f.length;h=0;while(true){if(h>=g)break a;i=f[h];AOm(d,E(16));Ct3(c,i);h=h+1|0;}}}c=a.cbg;if(c!==null&&c!==a){AOm(d,E(17));Cic(a.cbg,b);}},Coa +=a=>{let b;b=a.c2w;return b===null?K(B9j,0):b.b2();},ANe=(a,b)=>{let c,d;if(a.b_u){c=a.b5H;c=MK(c,c.data.length+1|0);d=c.data;a.b5H=c;d[d.length-1|0]=b;return;}},Dt=N(Gt),DeP=a=>{X(a);},FxQ=()=>{let a=new Dt();DeP(a);return a;},Dil=(a,b)=>{Bp(a,b);},Fyu=a=>{let b=new Dt();Dil(b,a);return b;},DR=N(Dt),Erk=(a,b)=>{Bp(a,b);},D1W=a=>{let b=new DR();Erk(b,a);return b;},A6L=N(),EHB=N(A6L),Ci1=(a,b)=>{switch(a.primitiveKind){default:return K(a,b);}},DF7=N(A6L),CEn=N(0),CSX=N(0),CDS=N(0); +function AXF(){let a=this;F.call(a);a.cnG=0;a.bKC=null;a.cW5=null;a.c4f=null;a.cUy=null;} +let Ehs=b=>{let c;c=new AXF;c.bKC=b;return c;},ST=a=>{let b,c;b=AI$(a);c=new S;T(c);BE(H(c,E(18)),b);return Q(c);},AK4=(a,b)=>{let c;a:{b:{if(b!==null){b=Dg(b);if(A$F(b.bKC,a.bKC))break b;}c=0;break a;}c=1;}return c;},BN=a=>{let b,c,d,e,f;b=a.cnG;if(!(b&1)){a.cnG=b|1;c=a.bKC[Gf].name;d=c===null?null:Fe(c);if(d===null){e=a.bKC[Gf].itemType;if(e!==null){f=BN(Bo(e));if(f!==null){if(e[Gf].itemType!==null){c=new S;T(c);Bb(c,91);H(c,f);d=Q(c);}else{c=new S;T(c);Bb(H(H(c,E(19)),f),59);d=Q(c);}}}}a.cW5=d;}return a.cW5;},AUI +=a=>{let b,c,d,e;b=a.cnG;if(!(b&2)){a.cnG=b|2;c=a.bKC[Gf].simpleName;d=c===null?null:Fe(c);if(d===null){if(a.bKC[Gf].itemType!==null){c=AUI(Bo(a.bKC[Gf].itemType));d=new S;T(d);H(H(d,c),E(20));d=Q(d);}else{c=a.bKC[Gf].enclosingClass;if((c===null?null:Bo(c))!==null)d=E(14);else{d=BN(a);e=Qg(d,36);if(e==(-1)){b=Qg(d,46);if(b!=(-1))d=CC(d,b+1|0);}else{d=CC(d,e+1|0);if(Bn(d,0)>=48&&Bn(d,0)<=57)d=E(14);}}}}a.c4f=d;}return a.c4f;},Bwd=a=>{return !a.bKC[Gf].primitiveKind?0:1;},BaA=a=>{let b;b=a.bKC[Gf].itemType;return b +===null?null:Bo(b);},AZk=a=>{return a.bKC[Gf].parent===null?null:Bo(a.bKC[Gf].parent);},CG9=a=>{let b,c,d;if(!(a.bKC[Gf].modifiers&65536)?0:1){b=a.cUy;if(b===null){a.bKC[Gf].clinit();c=CLv(a.bKC).length;b=Ci1(a.bKC,c);d=0;while(d{A2j();return Cgv;},BqS=(a,b)=>{let c,d,e;if(!BO(b,E(21))){c=a;while(c.bKC[Gf].itemType===null?0:1){c=BaA(c);}d=BN(c);e=Qg(d,46);if(e>=0){c=KG(B_(d,0,e+1|0),46,47);d=new S;T(d);H(H(d,c),b);b=Q(d);}return B_6(C27(a), +b);}return B_6(C27(a),CC(b,1));},C4t=N(),BFB=null,AKl=()=>{AKl=Z(C4t);EuQ();},C3O=b=>{let c;AKl();c=EYc(b);if(c<0)c=8192;return c;},C1R=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,$$je;AKl();if(!c){AAi();e=BIj;}else{AAi();e=CSJ;}BAa();f=CpX;Ot(Bo(ACa),E(22));g=Eok(b,E(23));h=AKY();i=Drd();TU();j=Vb;k=null;Ot(Bo(ACa),E(24));l=Evl(h,i,j,k,Be(g,0));Ot(Bo(ACa),E(25));ESZ(l,g);Ot(Bo(ACa),E(26));i=l.c7g;EQ3(i);h=l.cL9;j=!l.cKZ?Ebl(f,i,h):Fty(i,ECh(l),h);if(!C9H()){m=new CAU;AJb();h=BuH;f=null;n=null;g=new CHI;g.dbb +=1.2;g.c7$=4.0;i=null;k=null;AAi();l=A2_;m.cT5=0;m.c_1=n;m.c79=k;m.cw5=h;m.deB=1;m.c_G=0;m.c8n=f;m.cT5=0;m.c8j=B$(g);m.c82=1.0;m.c71=i;m.deW=l;m.c97=(-1);if(j instanceof Pn){h=j.bVi;g=j;i=g.cn(0,m);k=i.co();if(k===null&&j instanceof H3){k=j;m=B1(k.bGM);B8();l=B0(m,CG(ZH,N$(k.bM8)));B9();k=(BJ(l,CK)).cu(k.bGM.bGN);if(k===null)k=Qj();if(k===null)k=null;else{l=AJN(k,BIj);if(!(!Bj(E(27),l)&&!Bj(E(28),l)))k=null;}}if(k!==null)l=CCT(AJN(k,e));else{l=CCT(null);if(!c){Go();k=K8;}else{Go();k=Hu;}}m=BFB;AQa();n=new Bsr;C0$(n, +m);n.cqq=BQz;n.cVq=1;m=n;f=m;f.cfv=e;f.cnn=B$(k);m.cdR=l;m.clm=Bji(1);if(j instanceof H3){k=g;i=Diy(i,k,k.bGM,g.cB(),j.ce7);}i.cC(!g.cD()?n:BUr(n));f=i.cF(BFB);if(d>0){o=f.bGE;p=d;if(!(!(o>p)&&!(f.bGF>p))){g=new DR;c=o|0;q=f.bGF|0;h=new S;T(h);i=H(h,E(29));BE(i,c);Bb(i,120);BE(i,q);i=H(i,E(30));BE(i,d);H(i,E(31));Bp(g,Q(h));J(g);}}if(h===null)p=1.0;else{r=f.bGE;p=f.bGF;p=EbK(h,r,p);}El8(l,f.bGE,f.bGF,p);g=EsU(E(15),b);if(g!==null){B5i();a:{b:{try{h=DCQ(Ex7(),g);break a;}catch($$e){$$je=P($$e);if($$je instanceof Dd) +{break b;}else{throw $$e;}}}h=E(32);}EMA(l.cDj,"plantuml-src",Cq(h));}return l;}g=new DR;Bp(g,E(33));J(g);}return null;},B4N=(b,c)=>{let d,$$je;AKl();if(b!==null){a:{b:{try{b.call(Cq(c));break a;}catch($$e){$$je=P($$e);if($$je instanceof Gt){d=$$je;break b;}else{throw $$e;}}}b=BY(d);c=new S;T(c);H(H(c,E(34)),b);console.error(Cq(Q(c)));}return;}},EuQ=()=>{BFB=BMd();},De6=b=>{return b&&b.dark===true;},EYc=b=>{return b&&typeof b.maxSvgSize==='number'?b.maxSvgSize: -1;},DYO=b=>{while(b.firstChild)b.removeChild(b.firstChild);},C +=(b,c,d)=>{let e,f,g;AKl();e=CVT(b);b=Fe(c);c=new BK8;f=De6(d)?1:0;g=C3O(d);c.c2W=e;c.ct3=b;c.cP_=f;c.cMw=g;Dmj(c);},D=(b,c,d,e)=>{let f,g,h;AKl();f=CVT(b);b=Ceo(c,"call");c=Ceo(d,"call");d=new CxW;g=De6(e)?1:0;h=C3O(e);d.cZz=f;d.c1C=b;d.cF9=c;d.c6x=g;d.c0A=h;Dmj(d);},DLC=N(),Etz=b=>{let copy=new b.constructor();for(let field in b){if(b.hasOwnProperty(field)){copy[field]=b[field];}}return copy;},EeA=b=>{let c,d,e;a:{b:{b=b.cNf;if(!A6F(b)){c=b.bLF;if(c.bNV===null)break b;}break a;}b=c.bYF;if(b!==null&&!RL(b)) +{d=Fp(c.bYF);c.bYF=null;b=d;c=b.cRf;d=b.cRg;e=b.cRd;b=b.cRe;Bqu(c);d=d.bLF;d.bNV=c;d.bOa=d.bOa+e|0;c=null;Bs$(b,c);}}},D$W=(b,c)=>{setTimeout(()=>{EeA(b);},c);},EN2=N(),AQW=b=>{let c,d,e,f;if(b!==null){c=Hr(b.length);d=c.data;e=0;f=d.length;while(e{let c,d,e,f;if(b!==null){c=K(Bi,b.length);d=c.data;e=0;f=d.length;while(e{if(b===null||b===undefined){return null;}let name='jso$functor$' ++c;let result=b[name];if(typeof result!=='function'){let fn=function(){return b[c].apply(b,arguments);};result=()=>fn;b[name]=result;}return result();},Ceo=(b,c)=>{if(typeof b!=='function')return b;let result={};result[c]=b;return result;},DEQ=N(),Boo=(b,c)=>{let d,e,f,g,h,i,j,k;if(b){d=1<=0){k=j+1|0;h[j]=AG2((b>>>i|0)&e,d);i=i-c|0;j=k;}return Ue(g);}return E(35);},OW=N(0),B_b=(a,b)=>{let c;c=new Dm7;c.c_r=a;c.c_s=b;return c;},BWe +=b=>{let c;c=new CgG;c.dc$=b;return c;},CUh=N(); +function AVo(){F.call(this);this.bUT=0;} +let DtK=null,BPf=null,BXE=null,BCJ=null,BZF=null,B7T=null,Bub=null,Bua=null,Buc=null,Bud=null,Fr=()=>{Fr=Z(AVo);Ed2();},E7h=(a,b)=>{Fr();a.bUT=b;},Dhv=a=>{let b=new AVo();E7h(b,a);return b;},AE5=b=>{let c,d;Fr();c=B7T.data;if(b{return BE4(a.bUT);},DWM=(a,b)=>{if(a!==b)return !(b instanceof AVo&&b.bUT==a.bUT)?0:1;return 1;},Fu6=a=>{let b;b=a.bUT;Fr();return b;},BE4=b=>{let c,d;Fr();c=new Bi;d=Fd(1);d.data[0]=b;A0i(c,d);return c;},Cx6 +=b=>{Fr();return !(b>=0&&b<=1114111)?0:1;},BNu=b=>{Fr();return !(b>=65536&&b<=1114111)?0:1;},Pl=b=>{Fr();return (b&64512)!=55296?0:1;},Sh=b=>{Fr();return (b&64512)!=56320?0:1;},BJK=b=>{Fr();return !(!Pl(b)&&!Sh(b))?1:0;},Bys=(b,c)=>{Fr();return !(Pl(b)&&Sh(c))?0:1;},ADq=(b,c)=>{Fr();return ((b&1023)<<10|c&1023)+65536|0;},BmJ=b=>{Fr();return (55296|(b-65536|0)>>10&1023)&65535;},Bem=b=>{Fr();return (56320|b&1023)&65535;},LG=b=>{Fr();return A3j(b)&65535;},A3j=b=>{Fr();if(BCJ===null){if(Bub===null)Bub=FrV();BCJ +=B9J(CbZ((Bub.value!==null?Fe(Bub.value):null)));}return CaV(BCJ,b);},ABU=b=>{Fr();return AY0(b)&65535;},AY0=b=>{Fr();if(BXE===null){if(Bua===null)Bua=DU4();BXE=B9J(CbZ((Bua.value!==null?Fe(Bua.value):null)));}return CaV(BXE,b);},CaV=(b,c)=>{let d,e,f,g,h,i;Fr();d=b.cO9.data;if(c>=d.length){d=b.c3j.data;e=0;f=d.length;g=(f/2|0)-1|0;a:{b:{c:{while(true){h=(e+g|0)/2|0;i=C5(d[h*2|0],c);if(!i)break;if(i<=0){e=h+1|0;if(e>g)break b;}else{h=h-1|0;if(h=0){h=h*2|0;if(h{let d,e,f,g,h,i,j,k,l,m;Fr();if(!(c>=2&&c<=36))b=(-1);else{if(BPf===null){if(Buc===null)Buc=Ejb();d=(Buc.value!==null?Fe(Buc.value):null);e=Bxr(Q5(d));f=RB(e);g=Ca(f*2|0);h=g.data;i=0;j=0;k=0;l=0;while(l=i){k=(i+j|0)/2|0;l=k*2|0;f=C5(b,g[l]);if(f>0)i=k+1|0;else{if(f>=0)break b;j=k-1|0;}}b=(-1);break a;}b=g[l+1|0];}if(b>=c)b=(-1);}return b;},AG2 +=(b,c)=>{Fr();if(c>=2&&c<=36&&b>=0&&b{Fr();return Csq(b);},Csq=b=>{Fr();return Q7(b)!=9?0:1;},Wr=b=>{let c,d;Fr();if(Cx6(b)){if(b>=65536)return AA$([BmJ(b),Bem(b)]);c=Fd(1);c.data[0]=b&65535;return c;}d=new Bt;X(d);J(d);},CwI=b=>{Fr();a:{b:{if(!(b>=0&&b<=31)){if(b<127)break b;if(b>159)break b;}b=1;break a;}b=0;}return b;},Bpl=b=>{Fr();return Q7(b);},Q7=b=>{let c,d,e,f,g;Fr();c=!(b>0&&b<=65535)?0:1;if(c&&BJK(b&65535))return 19;if(BZF===null) +{if(Bud===null)Bud=EJ6();BZF=EKr((Bud.value!==null?Fe(Bud.value):null));}d=BZF.data;e=0;c=d.length-1|0;while(e<=c){f=(e+c|0)/2|0;g=d[f];if(b>=g.cLJ)e=f+1|0;else{c=g.cZ$;if(b>=c)return g.c0c.data[b-c|0];c=f-1|0;}}return 0;},Df4=b=>{Fr();return Dh_(b);},Dh_=b=>{Fr();return Q7(b)!=1?0:1;},AV2=b=>{Fr();return Dgz(b);},Dgz=b=>{Fr();switch(Q7(b)){case 1:case 2:case 3:case 4:case 5:break;default:return 0;}return 1;},AOq=b=>{Fr();return B$D(b);},B$D=b=>{Fr();a:{switch(Q7(b)){case 1:case 2:case 3:case 4:case 5:case 9:break;case 6:case 7:case 8:break a;default:break a;}return 1;}return 0;},Cuw +=b=>{Fr();return CCW(b);},CCW=b=>{Fr();a:{switch(Q7(b)){case 1:case 2:case 3:case 4:case 5:case 6:case 8:case 9:case 10:case 23:case 26:break;case 7:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 24:case 25:break a;default:break a;}return 1;}return A02(b);},CRT=b=>{Fr();a:{switch(Q7(b)){case 1:case 2:case 3:case 4:case 5:case 10:break;case 6:case 7:case 8:case 9:break a;default:break a;}return 1;}return 0;},A02=b=>{Fr();a:{if(!(b>=0&&b<=8)&&!(b>=14&&b<=27)) +{if(b<127)break a;if(b>159)break a;}return 1;}return Q7(b)!=16?0:1;}; +let BGM=b=>{Fr();switch(Q7(b)){case 12:case 13:case 14:break;default:return 0;}return 1;},Z0=b=>{Fr();return DbD(b);},DbD=b=>{Fr();switch(b){case 9:case 10:case 11:case 12:case 13:case 28:case 29:case 30:case 31:break;case 160:case 8199:case 8239:return 0;default:return BGM(b);}return 1;},Fg7=(a,b)=>{let c,d;b=b;c=a.bUT;d=b.bUT;Fr();return c-d|0;},Ed2=()=>{DtK=Bo(B$O);B7T=K(AVo,128);},FrV=()=>{return {"value":"NY H#F#U 4%F#O #F#/ d%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #a1# #%# #%# #%# %%# #%# #%# #%# #%# #%# #%# #%# %%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #<+#%# #%# #%# \'.3#%# #%# #{1#%# #w1%%# %J\'#k1#o1#%# #w1#!3# #23#*3#%# \'23#:3# #>3#%# #%# #%# #N3#%# #N3# %%# #N3#%# #J3%%# #%# #R3#%# \'%# /)#%# #)#%# #)#%# #%# #%# #%# #%# #%# #%# #%# #%# %%# #%# #%# #%# #%# #%# #%# #%# #%# %)#%# #%# #8)#L%#%# #%# #%# #" ++"%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #a+# #%# #%# #%# #%# #%# #%# #%# #%# #%# /B45#%# #,/#645# %%# #P1#!\'#*\'#%# #%# #%# #%# #%# <-%# #%# \'%# 1&++ %_## #Z#)k%%g%% #F#W hA# 1%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# +]%# %%# #?#%# %a+\'N\'AF#b &#%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# 3%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #^#%# #%# #%# #%# #%# #%# #%# %%# #%# #%# #%# #%# #%# #%# #%" ++"# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# %*%p kB#oq-&# _?gejg#A1 a$#%# -mo%&# {-%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# 3,4/# #%# #%" ++"# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# 3C1 1C1 1C1 1C1 1C1 3C/ 1C1 QC1 1C1 1C1 1C%8\'%G# 7i\')G# 7C%D)\' 7C%u)%?# 7X+%P+%G# L-q*/# \'Pw/#8m/# -6## |bA G%# kC.#U !r*%&# &#%# #,05#qX\'#H.5# %%# #%# #%# #e25#D05#q25#m25# #%# %%# 1865%%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# " ++"#%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# 1%# #%# )%# (a=%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# G%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# y%%# #%# #%# #%# #%# #%# #%# \'%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #%# 5%# #%# #4Fd#%# #%# #%# #%# #%# )%# #<{p# %%# #%# \'%# #%# #%# #%# #%# #%# #%# #%# #%# #%# #P}p#}}p#m}p#D}p#P}p# #@yp#D{p#Lyp#Br#%# #%# #%" ++"# #%# #%# #%# #%# #%# #,%#L}p#LJd#%# #%# #$$r#%# #%# #%# #%# #%# #%# #%# #%# #P6r#}!rI )%# :GL#) i,5F#U TUg#r {%g#r >\'c#p Lnk%F# .\'F#S HB#F#b o@5F#b F#2#W 4Z;%# /%# #%# %%# \'%# M%# #%# #%# #%# \'%# #%# #%# #%# #%# #%# #%# u.#N#f "};},DU4=()=>{return {"value":"L[ ,%H#U :#>b# vH#O #H#/:+# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #,5# #\'# #\'# #\'# %\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# %\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# %\'# #\'# #\'#(;#N1# %\'# #\'# %\'# \'\'# +\'# %6)# \'\'#*/#N6r# %_+# %\'# #\'# #\'# %\'# )\'# %\'# \'\'# #\'# %\'# \'\'# #J%# +\'#+# #\'#+# #\'#+# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'#L\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# %\'#+# #\'# \'\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'#" ++" #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# \'\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# 1\'# %665% #\'# )\'# #\'# #\'# #\'# #\'#o25#c25#k25#03#}1# #y1% #m1# #q1#{}p# \'y1#k}p# #$3#!$r#:{p#N}p# #,3#43#N}p#*05#B}p# %43# #B05#<3# %@3# #{!r# ){!r#F.5# %P3# #J}p#P3# \'B{p#P3#$\'#L3%,\'# +T3# 5Jyp#>yp# Z\'_\'# x\'# #\'# \'\'\' #_+\' !#a##]#\' #H#CD##H#3m%#i%% #e%#P%# \'(%#D%#C# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'#i\'#P\'#=#(+# #4)# %\'# %\'# .#H#bP\'A #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# 3\'# #\'# #\'# #\'# #\'# #\'# " ++"#\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# %\'# #\'# #\'# #\'# #\'# #\'# #\'#`# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'% &#,%n mB#ko%x %ko%\' RAC1 >$#yu+#uu+#Pu+#Hu+%Lu+#0u+#io+#>@d# #\'- (+2Fd# \'oX\'# AJJd# N%\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #" ++"\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# +X%# +\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'# #\'#A1 1A1 1A1 1A1 1A1 3A# #A# #A# #A% /A1 16\'%g\')B)%V+%s)%N+)A1 1A1 1A1 1A% #E# 5B#H#b o@5H#b <#4#P# eV;\'# /\'# #\'# %\'# \'\'# M\'# #\'# #\'# #\'# \'\'# #\'# #\'# #\'# #\'# #\'# #\'# Z0#P#f "};},Ejb=()=>{return {"value":"6G*% %%%%%%%%%%%%%%%%%%A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%=,#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%_H#T#%%%%%%%%%%%%%%%%%%s+G%%%%%%%%%%%%%%%%%%_1G%%%%%%%%%%%%%%%%%%{CG%%%%%%%%%%%%%%%%%%2+G%%%%%%%%%%%%%%%%%%2+G%%%%%%%%%%%%%%%%%%2+G%%%%%%%%%%%%%%%%%%2+G%%%%%%%%%%%%%%%%%%2+G%%%%%%%%%%%%%%%%%%2+G%%%%%%%%%%%%%%%%%%2+G%%%%%%%%%%%%%%%%%%2+G%%%%%%%%%%%%%%%%%%2+G%%%%%%%%%%%%%%%%%%6)G%%%%%%%%%%%%%%%%%%2+G%%%%%%%%%%%%%%%%%%*\'G%%%%%%%%%%%%%%%%%%.9G%%%%%%%%%%%%%%%%%%*\'G%%%%%%%%%%%%%%%%%%!i#G" ++"%%%%%%%%%%%%%%%%%%c#G%%%%%%%%%%%%%%%%%%*;G%%%%%%%%%%%%%%%%%%Z+G%%%%%%%%%%%%%%%%%%:/G%%%%%%%%%%%%%%%%%%=G%%%%%%%%%%%%%%%%%%{/G%%%%%%%%%%%%%%%%%%k\'G%%%%%%%%%%%%%%%%%%s+G%%%%%%%%%%%%%%%%%%=G%%%%%%%%%%%%%%%%%%R@dG%%%%%%%%%%%%%%%%%%R[G%%%%%%%%%%%%%%%%%%c#G%%%%%%%%%%%%%%%%%%_1G%%%%%%%%%%%%%%%%%%!#G%%%%%%%%%%%%%%%%%%k\'G%%%%%%%%%%%%%%%%%%cCG%%%%%%%%%%%%%%%%%%o*IG%%%%%%%%%%%%%%%%%%A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%=,#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%c:#T#%%%%%%%%%%%%%%%%%%w&%G%%%%%" ++"%%%%%%%%%%%%%=G%%%%%%%%%%%%%%%%%%_fG%%%%%%%%%%%%%%%%%%Z+G%%%%%%%%%%%%%%%%%%_%G%%%%%%%%%%%%%%%%%%>-G%%%%%%%%%%%%%%%%%%.9G%%%%%%%%%%%%%%%%%%w=G%%%%%%%%%%%%%%%%%%2+G%%%%%%%%%%%%%%%%%%>AG%%%%%%%%%%%%%%%%%%N)G%%%%%%%%%%%%%%%%%%=G%%%%%%%%%%%%%%%%%%%G%%%%%%%%%%%%%%%%%%B\'G%%%%%%%%%%%%%%%%%%FEG%%%%%%%%%%%%%%%%%%N)G%%%%%%%%%%%%%%%%%%oYG%%%%%%%%%%%%%%%%%%k\'G%%%%%%%%%%%%%%%%%%g5G%%%%%%%%%%%%%%%%%%*\'G%%%%%%%%%%%%%%%%%%F%G%%%%%%%%%%%%%%%%%%Z?G%%%%%%%%%%%%%%%%%%ow?G%%%%%%%%%%%%%%%%%%s4%G%%%%%%%%%%%%%%%%%%k\'G%%%%%%%%%%%%%%" ++"%%%%s+G%%%%%%%%%%%%%%%%%%:OG%%%%%%%%%%%%%%%%%%c#G%%%%%%%%%%%%%%%%%%N&OG%%%%%%%%%%%%%%%%%%VZ%G%%%%%%%%%%%%%%%%%%%G%%%%%%%%%%%%%%%%%%%G%%%%%%%%%%%%%%%%%%%G%%%%%%%%%%%%%%%%%%%G%%%%%%%%%%%%%%%%%%!8%G%%%%%%%%%%%%%%%%%%FEG%%%%%%%%%%%%%%%%%%sKG%%%%%%%%%%%%%%%%%%k5G%%%%%%%%%%%%%%%%%%.lG%%%%%%%%%%%%%%%%%%wN)G%%%%%%%%%%%%%%%%%%"};},EJ6=()=>{return {"value":"PA-Y$;Y$679:95Y#J+Y#Z$Y#B;697<8:1=<=:L#<#Y#<,&?L$9B8:B(C9:C)!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!C#!#!#!#!#!#!#!#!C#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#B##!#!C$B##!#B##B$C#B%#B##B$C$B##B##!#!#B##!C#!#B##B$#!#B#C#&!C$F%!$#!$#!$#!#!#!#!#!#!#!#!C#!#!#!#!#!#!#!#!#!C#!$#!#B$#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!C(B##B#C#!#B%#!#!#!#!CgF#C;E3]%E-]/E&](%<%]2b\'Q! !#!#%?6_#?6>Y)./Q&-Y*>?Y%X#Y$:67Y,:98Y+-Q& Q+,%A#L\'Z$67%L+Z$67E2[FA,G." ++"H%\'H$G-A0^#!^%!^##B$C#B$#=!^#:B&^\'!=!=!=B%=#B%#F%#^#C#B#Z&!C%=:^##=L1KD!#K%,^#A%Z&^&Z#^%:^#:^#:^(:^@Z#^#:=:^@b:-% ^)6767^5Z#^(67b=2! :^?Z:^IZ\'^jA7^,A6L^^pL7b=X# :^*:^WZ)b=P! :b=Y$ 67676767676767L?^MZ&67Z@6767676767Z1b= % b:$# 6767676767676767676767Za6767ZA67b:#% ^QZ6^#Z\'^HA#b=+# BQCQ!#B$C#!#!#!#B%#!C#!C\'E#B$#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!C#^\'!#!#G$!#A&Y%,Y#CG #A&#A#FYA(%9A/\'F8A*F( F( F( F( F( F( F( F( GAY#>?>?Y$>?9>?Y*5Y#59>?Y#>?67676767Y&%Y" ++"+U#Y%596Y.^#Y$676767675A#Y#67A=^; b=:! A-b=7$ A;^1-Y$=%&+6767676767^#6767676756W#=K*G%I#5E&^#K$%&9^# b&7! A#G#]#E#&5b&;! 9E$&A&FL b&?! ^#L%^+FA^GA*=F1^@ L+^?L)=L0^AL+^HL0b= & b& H!^bb& %b&6)!%b&X2 A$^XA*FIE\'Y#b&-% %Y$F1J+F#A5!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#&\'H$9G+9%!#!#!#!#!#!#!#!#!#!#!#!#!#!#E#G#FhK+G#Y\'A)]8E*]#!#!#!#!#!#!#!C$!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#%C)!#!#B##!#!#!#!#%]#!#!#&!#!C$!#!#!#!#!#!#!#!#!#!#B&#B&#!#!#!#!#!#!#!#B%#!#B##!#!#!#!#!#!#!#B#A%!A/E%!#&" ++"E##F(\'F$\'F%\'F8I#G#)^%\'A$L\'^#;=A\'FUY%A)I#FSI1G#A)Y#J+A\'G3F\'Y$&9F#\'J+F=G)Y#F8G,I#A,9F>A$G$)FP\'I#G%I#G#I$Y. %J+A%Y#F&\'%F*J+F& FJG\'I#G#I#G#A*F$\'F)\')A#J+A#Y%F1%F\'^$&)\')FS\'&G$F#G#F&G#&\'&A9F#%Y#F,)G#I#Y#&E#)\'A+F\'A#F\'A#F\'A*F( F( CLA$FRA0\'LA#G$A%\'L*A(Y*A(F>L#9F>L$AAF)=F=G#A%L&Y(A*FWA$Y(F7A#L)F4A&L)F3A(Y%A-L(b 1! FkAXBTA.CTA(L\'FEG%A)J+A\'J+F%%&B7A$G&5%C7A)Z#b 1$ L@ FK G#5A#F#A1F$%F# ]#G&9^)F7 G1F>L+&A)F7G,L%Y&A7F3G%Y%AGF6L(A5F8A*)\')FVG0Y(A%L5J+\'F#G#&" ++"A*G$)FNI$G%I#G#Y#1Y%\'A+1A#F:A(J+A\'G$FEG&)G) J+Y%&I#&A)FD\'Y#&A*G#)FQI$G*I#F%Y%G%9)\'J+&9&Y$ L5A,F3 F:I$G$I#\')G#Y\'\'F#\'A`F( & F% F0 F+9A\'FP\'I$G)A&J+A\'G#I# F)A#F#A#F7 F( F# F& G#&I#\'I%A#I#A#I$A#&A\')A&F&I#A#G(A$G&A,F+ &A#& FG &I$G\' )A#) I% I#\')\'&\'&Y# Y#A)G#A>FVI$G)I#G$)\'F%Y&J+Y# 9\'F$A?FQI$G\')\'I%G#)G#F#9&A)J+b G# FPI$G%A#I%G#)G#Y8F%G#ACFQI$G)I#\')G#Y$&A,J+A\'Y.A4FL\')\'I#G\')\'&9A\'J+A\'J5A=FY!E% E( E# b&J% A*&A>F$A#&A/F&" ++"A(b&-\' b %E b&L! A&F.A$F*A(F+A#=G#9Q%b =_ b=Q$ J+^$A$b=U\' A\'^8 ^$A)Z$^1Z/A#GOA#G8A*b=U! A^b=W$ A+^HG#^^I#G$^$I\'Q)G)^#G(^?G%b=5# G$=A+I$^)G#^#)^AI#A`L5A-L5A-b=8! A*L:b (# B;C;B;C( C3B;C;! B#A#!A#B#A#B% B)C% # C( C,B;C;B# B%A#B) B( C;B# B% B& !A$B( C;B;C;B;C;B;C;B;C;B;C;B;C> B::C::C\'B::C::C\'B::C::C\'B::C::C\'B::C::C\'!#A#JSb= ) GX^%GS^)\'^/\'^#Y&A0G& G0b 1! Z>b D0 C+&CV!C(!#!C#!C$!C7!#!#!#!C$!#!#!#!#!#!#!#F#A/C(AWETG( G2A#G( G# G&A&E`AB\'b Q! FNA$G(E(A#J+A%&=b & F?\'A2FMG%J+A&;b 1( F<%G%J+b 7$ F?G#&J+A%9b $ F@ F$\'" ++"F#\'F(G#F&\'A)&%b A$ F( F% F# F0 b&&$ A#L*G(AJBCCCG(%A%J+A%Y#b 2- L]=L$;L%AnLN=L0b #$ F% F< F# &A#& F+ F% & &A\'&A%& & & F$ F# &A#& & & & & F# &A#F% F( F% F% & F+ F2A&F$ F& F2AUZ#b /% ^MA%b=E! A-^0A#^0 ^0 ^FA+L.b=C# AX^>A.^MA%^*A(^#A/^\'b ;# b=]$ ]&b=;, A#^2A$^.A$b==$ A%^-A%^=A%^YA)^+A\'^IA)^?A#^-A%^#A/Z*AHb=9& A)^/A#^.A$^i =A$^3 ^.A$^-A&b=4# b==! J+=b &1 b& %b& %b&A<#AAb&@%! b&/;!A#b&RU!A0b&O* b CG b&?) b C8 b&,.!A&b&K%#b %b %b \'O!b& R#b %b %b %b %b %b %b %b %b %b %b %b %b %b " ++"%b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b !0 1A?b1A! b # b\'Q$ b %b %b %b 1Y$b3 %b3 %b3 %b3`a$A#b3 %b3 %b3 %b3`a$"};},BGF=N(0),Cs4=(a,b)=>{return 0;},Cb2=(a,b,c)=>{return ZM(b)/4.5;},B23=N(),CxQ=null,DiF=null,AZ_=()=>{AZ_=Z(B23);Dwc();},EtZ=a=>{AZ_();},BMd=()=>{let a=new B23();EtZ(a);return a;},CvD=(a,b,c)=>{let d,e,f;if(c!==null&&!CQ(c)){d=Cho(b,c);AZ_();e=CxQ;f=new Ckt;f.c9E=a;f.cO$=b;f.cO_=c;return AN$(e, +d,f);}return Cl(0.0,0.0);},Fde=(a,b,c)=>{let d,e,f;if(c!==null&&!CQ(c)){d=Cho(b,c);AZ_();e=DiF;f=new CMV;f.c9X=a;f.cPM=b;f.cPL=c;return (AN$(e,d,f)).bG6;}return 0.0;},FxC=(a,b)=>{if(!BG(E(36),b)){if(BG(E(37),b))return 1;return 0;}return 1;},Dwc=()=>{let b;b=new C9G;AOK(b,16,0.75,1);CxQ=b;b=new C9F;AOK(b,16,0.75,1);DiF=b;},Fut=N(),Li=(b,c)=>{if(b!==c)return b!==null?b.cx(c):c!==null?0:1;return 1;},Oz=b=>{return b!==null?b.dp():0;},B$=b=>{return Gp(b,E(14));},Gp=(b,c)=>{if(b===null){b=new F2;Bp(b,c);J(b);}return b;},CsB +=(b,c,d)=>{let e;if(b>=0&&c>=0&&c<=(d-b|0))return b;e=new EN;X(e);J(e);}; +function BAA(){F.call(this);this.bPj=null;} +let ECl=(a,b)=>{a.bPj=b;},A9P=a=>{let b=new BAA();ECl(b,a);return b;},BKw=b=>{let c,d,e,f,g,h,i,j,k,l,m;if(b!==null){c=Fe(typeof b);d=!(!Bj(c,E(38))&&!Bj(c,E(39)))?1:0;a:{ARy();e=Cdl;if(e!==null){if(!d){if(!Bj(c,E(40))){if(Bj(c,E(41))){f=BrZ;g=CQT;h=f.get(b);i=(typeof h=='undefined'?1:0)?void 0:h.deref();if(typeof i=='undefined'?1:0){j=A9P(b);k=j;f.set(b,new WeakRef(k));g.register(k,b);return j;}return i;}if(!Bj(c,E(42)))break a;else{h=Dk4;i=h===null?void 0:h.deref();if(typeof i=='undefined'?1:0){j=A9P(b);Dk4 +=new WeakRef(j);return j;}return i;}}l=Bn$;m=Dc4;h=l.get(b);i=(typeof h=='undefined'?1:0)?void 0:h.deref();if(typeof i=='undefined'?1:0){j=A9P(b);k=j;l.set(b,new WeakRef(k));m.register(k,b);return j;}return i;}h=e.get(b);i=(typeof h=='undefined'?1:0)?void 0:h.deref();if(typeof i=='undefined'?1:0){j=A9P(b);e.set(b,new WeakRef(j));return j;}return i;}}return A9P(b);}return null;},UU=b=>{if(b!==null)return !(b instanceof BAA)?b:b.bPj;return null;},BW5=b=>{if(b!==null)return !(b instanceof AJB())?b:UU(b);return null;},EtO +=a=>{let b,c,d,e,f;b=Fe(typeof a.bPj);if(!Bj(b,E(38))&&!Bj(b,E(43))&&!Bj(b,E(39))){if(!Bj(b,E(41))){if(!Bj(b,E(44))){if(Bj(b,E(40))){c=a.bPj;d=0;e=0;while(e{if(b!==a){if(b!==null){if(b instanceof BAA)return a.bPj!==b.bPj?0:1;return 0;}return 0;}return 1;},Faq +=a=>{return (typeof a.bPj=='undefined'?1:0)?E(42):Fe(a.bPj.toString());},Re=N(0),D_m=N(); +function A3v(){F.call(this);this.cfM=0;} +let EZ4=(a,b)=>{return 0;}; +function BK8(){let a=this;A3v.call(a);a.c2W=null;a.ct3=null;a.cP_=0;a.cMw=0;a.cjn=null;a.cDd=null;} +let FmG=(a,b)=>{return b instanceof BK8;},DBs=a=>{let b,$$je;ALT();Bu2=QR();Dit(E(46));a.cjn=null;a.cDd=null;a:{b:{try{a.cjn=C1R(a.c2W,a.cP_,a.cMw);break a;}catch($$e){$$je=P($$e);if($$je instanceof Gt){b=$$je;break b;}else{throw $$e;}}}a.cDd=b;}},FoG=a=>{let b;b=(Bx_()).getElementById(Cq(a.ct3));if(b!==null){if(a.cjn!==null){DYO(b);b.appendChild(a.cjn.bRS);}else b.textContent=Cq(BY(a.cDd));}ALT();if(globalThis.PLANTUML_DEBUG===true?1:0)EhR(Cq(Dsy(D4(Bu2,BH)?B9S():E(14))));},Eys=(a,b)=>{let c;c=(Bx_()).getElementById(Cq(a.ct3));if +(c!==null)c.textContent=Cq(b);},CMu=N(),AR_=null,AUl=0,Boz=0,B7j=0,AP9=()=>{AP9=Z(CMu);E2A();},Dmj=b=>{let c,d,e;AP9();c=0;d=0;while(true){e=AR_;if(d>=e.bGJ)break;if(c)break;if(b.dB(Be(e,d))){GJ(AR_,d,b);c=1;}d=d+1|0;}if(!c)U(e,b);if(!B7j&&!AUl&&!Boz){B7j=1;DM3(ZN(UU(new B6z),"invoke"));}},Dnk=()=>{let b,c,d,e,$$je;AP9();if(!AUl&&!Boz){AUl=1;a:{b:{try{while(!HH(AR_)){b=Be(AR_,0);if(!b.cfM)EnV();DN9();c:{d:{try{b.dH();break c;}catch($$e){$$je=P($$e);if($$je instanceof Gt){c=$$je;break d;}else{throw $$e;}}}d= +BY(c);c=CR();H(H(c,E(47)),d);console.error(Cq(CH(c)));}e=C9H();if(e&&b.cfM<20)break b;d=!e?null:FsC();CTW(1);EJ(AR_,0);e:{f:{try{if(d===null)b.dL();else{c=CR();H(H(c,E(48)),d);b.dM(CH(c));}break e;}catch($$e){$$je=P($$e);if($$je instanceof Gt){c=$$je;break f;}else{throw $$e;}}}b=BY(c);d=CR();H(H(d,E(47)),b);console.error(Cq(CH(d)));}}}catch($$e){$$je=P($$e);b=$$je;break a;}AUl=0;return;}try{CTW(0);b.cfM=b.cfM+1|0;Boz=1;Env(UU(DIc()));}catch($$e){$$je=P($$e);b=$$je;break a;}AUl=0;return;}AUl=0;J(b);}},E2A=()=> +{AR_=Bk();},DM3=b=>{setTimeout(function(){b();},0);}; +function CxW(){let a=this;A3v.call(a);a.cZz=null;a.c1C=null;a.cF9=null;a.c6x=0;a.c0A=0;a.cyb=null;a.cwD=null;} +let Fqq=a=>{let b,c,$$je;a.cyb=null;a.cwD=null;a:{b:{try{b=C1R(a.cZz,a.c6x,a.c0A);if(b!==null)a.cyb=Fe((new XMLSerializer()).serializeToString(D9_(b)));break a;}catch($$e){$$je=P($$e);if($$je instanceof Gt){c=$$je;break b;}else{throw $$e;}}}a.cwD=c;}},Fcn=a=>{let b;b=a.cyb;if(b!==null)B4N(a.c1C,b);else B4N(a.cF9,BY(a.cwD));},ECk=(a,b)=>{B4N(a.cF9,b);},EN=N(DR),Xt=N(DR),AIP=N(0),DjW=(a,b,c)=>{let d;d=a;if(NB(d,b))c=DG(d,b);return c;},A6S=(a,b,c)=>{let d,e;d=a;e=DG(d,b);if(e===null)e=C9(d,b,c);return e;},AN$= +(a,b,c)=>{let d,e;B$(c);d=a.dR(b);if(d===null){e=c.dT(b);if(e!==null)a.dU(b,e);return e;}return d;}; +function OQ(){let a=this;F.call(a);a.bQd=null;a.bQs=null;} +let AQI=a=>{return a.dV()?0:1;},Dy5=(a,b,c)=>{b=new BV;X(b);J(b);},BvE=(a,b)=>{let c,d;c=(b.dW()).dX();while(c.dY()){d=c.dZ();a.dU(d.d0(),d.d1());}},BEO=a=>{let b;if(a.bQd===null){b=new Csn;b.cpX=a;a.bQd=b;}return a.bQd;},Eey=(a,b)=>{let c,d,e,$$je;if(a!==b){if(F0(b,AIP)){c=b;if(a.dV()==c.dV()){a:{try{d=(a.dW()).dX();}catch($$e){$$je=P($$e);if($$je instanceof Xt){break a;}else if($$je instanceof F2){break a;}else{throw $$e;}}b:{c:{try{while(d.dY()){e=d.dZ();if(!c.dQ(e.d0()))break b;if(!Li(e.d1(),c.dR(e.d0())))break c;}} +catch($$e){$$je=P($$e);if($$je instanceof Xt){break a;}else if($$je instanceof F2){break a;}else{throw $$e;}}return 1;}try{}catch($$e){$$je=P($$e);if($$je instanceof Xt){break a;}else if($$je instanceof F2){break a;}else{throw $$e;}}return 0;}try{}catch($$e){$$je=P($$e);if($$je instanceof Xt){break a;}else if($$je instanceof F2){break a;}else{throw $$e;}}return 0;}return 0;}return 0;}return 0;}return 1;},Ed3=a=>{let b,c;b=0;c=(a.dW()).dX();while(c.dY()){b=b+(c.dZ()).dp()|0;}return b;},B7I=a=>{let b,c,d;b=new S;T(b);Bb(b, +123);c=(a.dW()).dX();if(c.dY()){d=c.dZ();H(b,d.d0()!==a?d.d0():E(49));Bb(b,61);H(b,d.d1()!==a?d.d1():E(49));}while(c.dY()){L(b,E(50));d=c.dZ();H(b,d.d0()!==a?d.d0():E(49));Bb(b,61);H(b,d.d1()!==a?d.d1():E(49));}Bb(b,125);return Q(b);},Iu=N(0); +function AGk(){let a=this;OQ.call(a);a.bHv=0;a.bJV=null;a.bMd=0;a.c7N=0.0;a.b7X=0;} +let EQk=(a,b)=>{return K(A1q,b);},BiY=a=>{BJ9(a,16);},Dy=()=>{let a=new AGk();BiY(a);return a;},BJ9=(a,b)=>{BJL(a,b,0.75);},D0T=a=>{let b=new AGk();BJ9(b,a);return b;},BNB=b=>{let c;if(b<1073741824){if(b){c=b-1|0;b=c|c>>1;b=b|b>>2;b=b|b>>4;b=b|b>>8;return (b|b>>16)+1|0;}return 16;}return 1073741824;},BJL=(a,b,c)=>{let d;if(b>=0&&c>0.0){b=BNB(b);a.bHv=0;a.bJV=a.d5(b);a.c7N=c;De0(a);return;}d=new Bt;X(d);J(d);},FzX=(a,b)=>{let c=new AGk();BJL(c,a,b);return c;},EBH=(a,b)=>{BJ9(a,BNB(b.bHv));C4W(a,b);},BLJ=a=>{let b +=new AGk();EBH(b,a);return b;},BzN=a=>{if(a.bHv>0){a.bHv=0;BFs(a.bJV,null);a.bMd=a.bMd+1|0;}},De0=a=>{a.b7X=a.bJV.data.length*a.c7N|0;},NB=(a,b)=>{return CxO(a,b)===null?0:1;},Ty=a=>{let b;b=new CU1;b.cEc=a;return b;},DG=(a,b)=>{let c;c=CxO(a,b);if(c!==null)return c.bHe;return null;},CxO=(a,b)=>{let c,d;if(b===null)c=BpV(a);else{d=b.dp();c=Bv4(a,b,d&(a.bJV.data.length-1|0),d);}return c;},Bv4=(a,b,c,d)=>{let e;e=a.bJV.data[c];while(e!==null&&!(e.b50==d&&CjW(b,e.bHt))){e=e.bKN;}return e;},BpV=a=>{let b;b=a.bJV.data[0];while +(b!==null&&b.bHt!==null){b=b.bKN;}return b;},ATn=a=>{return a.bHv?0:1;},AUM=a=>{let b;if(a.bQd===null){b=new B_N;b.ci9=a;a.bQd=b;}return a.bQd;},AWb=(a,b,c)=>{return C9(a,b,c);},C9=(a,b,c)=>{let d,e,f,g;if(b===null){d=BpV(a);if(d===null){a.bMd=a.bMd+1|0;d=DeQ(a,null,0,0);e=a.bHv+1|0;a.bHv=e;if(e>a.b7X)BZS(a);}}else{e=b.dp();f=e&(a.bJV.data.length-1|0);d=Bv4(a,b,f,e);if(d===null){a.bMd=a.bMd+1|0;d=DeQ(a,b,f,e);e=a.bHv+1|0;a.bHv=e;if(e>a.b7X)BZS(a);}}g=d.bHe;d.bHe=c;return g;},DeQ=(a,b,c,d)=>{let e,f;e=DFs(b, +d);f=a.bJV.data;e.bKN=f[c];f[c]=e;return e;},AFQ=(a,b)=>{if(!b.j())a.d7(b);},C4W=(a,b)=>{let c,d,e;c=a.bHv+b.dV()|0;if(c>a.b7X)B6F(a,c);d=(b.dW()).dX();while(d.dY()){e=d.dZ();C9(a,e.d0(),e.d1());}},B6F=(a,b)=>{let c,d,e,f,g,h,i;c=BNB(!b?1:b<<1);d=a.d5(c);e=0;c=c-1|0;while(true){f=a.bJV.data;if(e>=f.length)break;g=f[e];f[e]=null;while(g!==null){f=d.data;h=g.b50&c;i=g.bKN;g.bKN=f[h];f[h]=g;g=i;}e=e+1|0;}a.bJV=d;De0(a);},BZS=a=>{B6F(a,a.bJV.data.length);},A7k=(a,b)=>{let c;c=C9j(a,b);if(c!==null)return c.bHe;return null;},C9j +=(a,b)=>{let c,d,e,f,g,h;a:{c=0;d=null;if(b===null){e=a.bJV.data[0];b:{while(e!==null){if(e.bHt===null)break b;f=e.bKN;d=e;e=f;}break a;}}else{g=b.dp();h=a.bJV.data;c=g&(h.length-1|0);e=h[c];while(e!==null&&!(e.b50==g&&CjW(b,e.bHt))){f=e.bKN;d=e;e=f;}}}if(e!==null){if(d!==null)d.bKN=e.bKN;else a.bJV.data[c]=e.bKN;a.bMd=a.bMd+1|0;a.bHv=a.bHv-1|0;return e;}return null;},CkW=a=>{return a.bHv;},Bf8=a=>{let b;if(a.bQs===null){b=new B_O;b.cs0=a;a.bQs=b;}return a.bQs;},CjW=(b,c)=>{return !(b!==c&&!b.cx(c))?1:0;},BJt +=N(0); +function PR(){let a=this;AGk.call(a);a.b4h=0;a.bNn=null;a.bPE=null;} +let DSb=a=>{BiY(a);a.b4h=0;a.bNn=null;},E9=()=>{let a=new PR();DSb(a);return a;},AOK=(a,b,c,d)=>{BJL(a,b,c);a.b4h=d;a.bNn=null;a.bPE=null;},FzD=(a,b,c)=>{let d=new PR();AOK(d,a,b,c);return d;},EMf=(a,b)=>{BiY(a);a.b4h=0;a.bNn=null;a.bPE=null;AFQ(a,b);},Cxh=a=>{let b=new PR();EMf(b,a);return b;},Fc4=(a,b)=>{let c,d,e;c=a.bHv+b.dV()|0;if(c>a.b7X)B6F(a,c);d=(b.dW()).dX();while(d.dY()){e=d.dZ();C8a(a,e.d0(),e.d1(),0,a.b4h);}},E4p=(a,b)=>{return K(BJw,b);},Fke=(a,b,c)=>{let d,e;if(b===null)d=BpV(a);else{e=b.dp();d +=Bv4(a,b,(e&2147483647)%a.bJV.data.length|0,e);}if(d!==null){if(a.b4h)Dhh(a,d,0);return d.bHe;}return c;},FW=(a,b)=>{return Fke(a,b,null);},Es=(a,b,c)=>{let d,e,f;d=a;e=d.bHv;f=C8a(a,b,c,0,a.b4h);if(d.bHv!=e&&a.ek(a.bNn))Dq5(a,a.bNn);return f;},C8a=(a,b,c,d,e)=>{let f,g,h,i,j,k;if(!a.bHv){a.bNn=null;a.bPE=null;}f=Oz(b);g=f&2147483647;h=g%a.bJV.data.length|0;i=b===null?BpV(a):Bv4(a,b,h,f);if(i===null){a.bMd=a.bMd+1|0;e=a.bHv+1|0;a.bHv=e;if(e>a.b7X){BZS(a);h=g%a.bJV.data.length|0;}j=new BJw;DeE(j,b,f);j.bPm=null;j.bOm +=null;k=a.bJV.data;j.bKN=k[h];k[h]=j;if(!d){b=a.bPE;if(b===null)a.bNn=j;else b.bPm=j;j.bOm=b;a.bPE=j;}else{b=a.bNn;if(b===null)a.bPE=j;else b.bOm=j;j.bPm=b;a.bNn=j;}i=j;}else if(e)Dhh(a,i,d);j=i.bHe;i.bHe=c;return j;},Dhh=(a,b,c)=>{let d,e;a:{if(!c){d=b.bPm;if(d!==null){e=b.bOm;if(e===null)a.bNn=d;else e.bPm=d;d.bOm=e;d=a.bPE;if(d!==null)d.bPm=b;b.bOm=d;b.bPm=null;a.bPE=b;break a;}return;}e=b.bOm;if(e!==null){d=b.bPm;if(d===null)a.bPE=e;else d.bOm=e;e.bPm=d;d=a.bNn;if(d!==null)d.bOm=b;b.bPm=d;b.bOm=null;a.bNn +=b;}else return;}},G8=a=>{let b;b=new Clo;b.cYK=a;b.c5W=0;return b;},Z$=a=>{let b;if(a.bQd===null){b=new C0P;b.cp$=a;b.cYS=0;a.bQd=b;}return a.bQd;},ED1=a=>{return Gc(a);},Gc=a=>{let b;if(a.bQs===null){b=new ClS;b.crp=a;b.c6T=0;a.bQs=b;}return a.bQs;},CAz=(a,b)=>{let c;c=C9j(a,b);if(c!==null){CxX(a,c);return c.bHe;}return null;},Dq5=(a,b)=>{let c,d,e,f,g;c=b.b50;d=a.bJV.data;e=c&(d.length-1|0);f=d[e];if(f===b)d[e]=b.bKN;else{while(true){g=f.bKN;if(g===b)break;f=g;}f.bKN=b.bKN;}a.bMd=a.bMd+1|0;a.bHv=a.bHv-1| +0;CxX(a,b);},CxX=(a,b)=>{let c,d;c=b.bOm;d=b.bPm;if(c!==null){c.bPm=d;if(d===null)a.bPE=c;else d.bOm=c;}else{a.bNn=d;if(d===null)a.bPE=null;else d.bOm=null;}},DBI=(a,b)=>{return 0;},APR=a=>{BzN(a);a.bNn=null;a.bPE=null;},C9G=N(PR),E_p=(a,b)=>{return a.bHv<=16384?0:1;},C9F=N(PR),DLu=(a,b)=>{return a.bHv<=16384?0:1;},Pj=N(0),EM=(a,b)=>{let c,d;c=a.dX();while(c.dY()){d=c.dZ();DbA(b,d);}},A4w=N(0),D88=a=>{let b;b=new Cwa;b.czc=a;return b;},BEi=a=>{let b;b=new CI8;b.cuX=D88(a);return b;},QP=N(),EIs=a=>{return;},HH +=a=>{return a.dV()?0:1;},Nw=(a,b)=>{let c;c=a.dX();while(c.dY()){if(Li(c.dZ(),b))return 1;}return 0;},WW=(a,b)=>{let c,d,e,f;c=b.data;d=a.dV();e=c.length;if(e{let c;c=b.dX();while(c.dY()){if(a.et(c.dZ()))continue;else return 0;}return 1;},Ea=(a,b)=>{let c,d;c=0;d=b.dX();while(d.dY()){if(!a.g(d.dZ()))continue;c=1;}return c;},B7M=a=>{let b,c,d;b=new S;T(b);Bb(b,91);c=a.dX();if +(c.dY()){d=c.dZ();if(d===a)d=E(51);H(b,d);}while(c.dY()){d=c.dZ();L(b,E(50));if(d===a)d=E(51);H(b,d);}Bb(b,93);return Q(b);},AST=N(0),BrA=N(0); +function Tq(){QP.call(this);this.bHh=0;} +let Fb6=(a,b)=>{a.eu(a.dV(),b);return 1;},Br=a=>{let b;b=new Di1;b.cdW=a;b.cvs=a.bHh;b.cjA=a.dV();b.b7k=(-1);return b;},EEs=(a,b,c)=>{let d,e;if(b>=0&&b<=a.dV()){if(!HH(c)){d=Br(c);while(Bq(d)){e=b+1|0;a.eu(b,Bm(d));b=e;}return 1;}return 0;}c=new EN;X(c);J(c);},E8e=(a,b,c)=>{c=new BV;X(c);J(c);},EYj=(a,b,c)=>{c=new BV;X(c);J(c);},Fsa=(a,b)=>{let c;c=new BV;X(c);J(c);},Rv=(a,b)=>{let c,d;c=a.dV();d=0;while(true){if(d>=c)return (-1);if(Li(b,a.cf(d)))break;d=d+1|0;}return d;},CTM=a=>{a.ev(0,a.dV());},Elv=a=>{return a.ew(0);},Epl +=(a,b)=>{let c,d,e;c=new Die;d=a.bHh;e=a.dV();c.b8V=a;c.bS_=b;c.b0E=(-1);c.cyX=d;c.b89=e;return c;},LV=(a,b,c)=>{let d;if(b<=c){if(b>=0&&c<=a.dV()){if(F0(a,XH)){d=new CKQ;CM9(d,a,b,c);return d;}return Eis(a,b,c);}d=new EN;X(d);J(d);}d=new Bt;X(d);J(d);},FrL=(a,b,c)=>{let d,e,f;d=a.ew(b);e=c-b|0;f=0;while(f{let b,c,d;b=1;c=a.dX();while(c.dY()){d=c.dZ();b=(31*b|0)+Oz(d)|0;}return b;},NI=(a,b)=>{let c,d;if(F0(b,BrA)){c=b;if(a.dV()==c.dV()){d=0;while(d{BBy(a,10);},Bk=()=>{let a=new Tp();E7v(a);return a;},BBy=(a,b)=>{let c;if(b<0){c=new Bt;X(c);J(c);}a.bLn=K(F,b);},ANg=a=>{let b=new Tp();BBy(b,a);return b;},Zs=(a,b)=>{let c,d,e,f;BBy(a,b.dV());c=b.dX();d=0;while(true){e=a.bLn.data;f=e.length;if(d>=f)break;e[d]=c.dZ();d=d+1|0;}a.bGJ=f;},E2=a=>{let b=new Tp();Zs(b,a);return b;},BW7=(a,b)=>{let c,d;c=a.bLn.data.length;if(c=1073741823?2147483647:DT(b,DT(c*2|0,5));a.bLn=MK(a.bLn,d);}},Be=(a,b)=>{B06(a,b);return a.bLn.data[b];},Hn=a=>{return a.bGJ;},GJ +=(a,b,c)=>{let d,e;B06(a,b);d=a.bLn.data;e=d[b];d[b]=c;return e;},U=(a,b)=>{let c,d;BW7(a,a.bGJ+1|0);c=a.bLn.data;d=a.bGJ;a.bGJ=d+1|0;c[d]=b;a.bHh=a.bHh+1|0;return 1;},Ik=(a,b,c)=>{let d,e,f;CQu(a,b);BW7(a,a.bGJ+1|0);d=a.bGJ;e=d;while(e>b){f=a.bLn.data;f[e]=f[e-1|0];e=e+(-1)|0;}a.bLn.data[b]=c;a.bGJ=d+1|0;a.bHh=a.bHh+1|0;},EJ=(a,b)=>{let c,d,e,f;B06(a,b);c=a.bLn.data;d=c[b];e=a.bGJ-1|0;a.bGJ=e;while(b{let c;c=Rv(a,b);if(c>=0){EJ(a,c);return 1;}return 0;},TD +=a=>{BKN(a.bLn,0,a.bGJ,null);a.bGJ=0;a.bHh=a.bHh+1|0;},DLS=(a,b,c)=>{let d,e,f,g,h;CQu(a,b);if(!HH(c)){d=a.bGJ;e=c;BW7(a,d+e.bGJ|0);f=e.bGJ;d=a.bGJ;g=d-1|0;while(g>=b){h=a.bLn.data;h[g+f|0]=h[g];g=g+(-1)|0;}a.bGJ=d+f|0;e=Br(c);d=0;while(d{let d,e,f,g,h,i;d=C5(b,c);if(d<=0){if(b>=0){e=a.bGJ;if(c<=e){if(d){f=c;while(c{let c;if(b>=0&&b{let c;if(b>=0&&b<=a.bGJ)return;c=new EN;X(c);J(c);},Dkz=(a,b)=>{let c;c=0;while(c{let b,c,d,e;b=a.bGJ;if(b){c=b-1|0;d=new S;JP(d,b*16|0);Bb(d,91);b=0;while(b{let b,c;b=1;c +=0;while(c{b;AP9();B7j=0;Dnk();},Bt=N(DR),CPL=a=>{X(a);},Ms=()=>{let a=new Bt();CPL(a);return a;},CNM=(a,b)=>{Bp(a,b);},FxZ=a=>{let b=new Bt();CNM(b,a);return b;},Vk=N(0); +function AE_(){let a=this;F.call(a);a.bHt=null;a.bHe=null;} +let Blg=(a,b,c)=>{a.bHt=b;a.bHe=c;},FzK=(a,b)=>{let c=new AE_();Blg(c,a,b);return c;},EOk=(a,b)=>{let c;if(a!==b){if(F0(b,Vk)){c=b;return !(Li(a.bHt,c.d0())&&Li(a.bHe,c.d1()))?0:1;}return 0;}return 1;},BcU=a=>{return a.bHt;},BeJ=a=>{return a.bHe;},Ebf=a=>{return Oz(a.bHt)^Oz(a.bHe);},E5U=a=>{let b,c,d;b=BY(a.bHt);c=BY(a.bHe);d=new S;T(d);b=H(d,b);Bb(b,61);H(b,c);return Q(d);}; +function A1q(){let a=this;AE_.call(a);a.b50=0;a.bKN=null;} +let DeE=(a,b,c)=>{Blg(a,b,null);a.b50=c;},DFs=(a,b)=>{let c=new A1q();DeE(c,a,b);return c;}; +function BJw(){let a=this;A1q.call(a);a.bPm=null;a.bOm=null;} +let C6J=N(),BpN=null,AA5=null,By8=null,BU3=0,NU=()=>{NU=Z(C6J);E7w();},EnV=()=>{NU();BpN=Dy();APR(AA5);delete globalThis.__plantumlVizError;},DN9=()=>{NU();APR(AA5);By8=Bk();BU3=1;},CTW=b=>{let c,d;NU();a:{c=By8;By8=null;BU3=0;if(b){d=Br(c);while(true){if(!Bq(d))break a;C8K(Cq(Bm(d)));}}}},C9H=()=>{NU();return ATn(AA5)?0:1;},FsC=()=>{let b,c,d;NU();b=new S;T(b);c=(Gc(AA5)).dX();while(c.dY()){d=c.dZ();if(b.bG4>0)L(b,E(50));H(b,d);}return Q(b);},B_7=()=>{NU();BKe(FcE(E(52),E(52),E(53),null,null));},BKe=b=>{let c, +d,e;NU();c=BpN;d=b.b52;c=DG(c,d);if(c===null&&BU3){d=AA5;e=b.b52;if(!NB(d,e)){d=AA5;e=b.b52;Es(d,e,b);}}return c;},Env=b=>{let c,d,e,f,g,h,i,j,k,l,$$je;NU();c=BpN;d=E2(Gc(AA5));APR(AA5);e=new CwH;f=d.bGJ;e.cE$=c;e.con=f;e.c4d=b;c=Br(d);while(Bq(c)){g=Bm(c);h=g.b52;a:{b:{try{if(Bj(E(54),g.cpe)){b=g.b70;i=EnO(e,h);g=Fe0(e,h);DSn(Cq(b),ZN(UU(i),"invoke"),ZN(UU(g),"invoke"));}else if(!Bj(E(55),g.cpe))EgS(ZN(UU(ENx(e,h)),"invoke"));else{b=g.b70;i=g.czo;j=g.cK3;k=EzA(e,h);l=EEx(e,h);if(!(FrN(Cq(b),Cq(i),Cq(j),ZN(UU(k), +"invoke"),ZN(UU(l),"invoke"))?1:0))AFd(e,h,EUw());}break a;}catch($$e){$$je=P($$e);if($$je instanceof Gt){b=$$je;break b;}else{throw $$e;}}}AFd(e,h,BcV(BY(b)));}}b=new B0V;b.cDC=e;b.cSr=d;e.cjq=Ezj(ZN(UU(b),"invoke"),60000);e.c4E=1;C8T(e);},E7w=()=>{BpN=Dy();AA5=E9();},C8K=b=>{if(typeof console!=='undefined'&&console.warn)console.warn(b);},Ezj=(b,c)=>{return setTimeout(function(){b();},c);},DMK=b=>{(Promise.resolve()).then(function(){b();});},BW3=N(),Ftz=a=>{return;},DIc=()=>{let a=new BW3();Ftz(a);return a;},ED7 +=b=>{b;AP9();Boz=0;Dnk();},D4U=N(),EWv=b=>{let c,d;if(!!globalThis.__plantumlVizInstance?1:0){c=D4L(Cq(b),"dot");d=Fe(Dgo(c,"error"));if(d!==null){b=new DR;Bp(b,d);J(b);}return Fe(Dgo(c,"svg"));}c=Fe(CPK("Viz is not loaded: this diagram type needs the Graphviz layout engine (viz-global.js). Load viz-global.js before rendering."));if(c===null){B_7();b=new DR;Bp(b,E(56));J(b);}b=new DR;Bp(b,c);J(b);},Ewn=()=>{var V=globalThis.PLANTUML_VIZ||(typeof Viz!=='undefined'?Viz:null);var missing=!V||typeof V.instance!== +'function';if(missing&&!globalThis.__plantumlSmetanaFallbackNoted){globalThis.__plantumlSmetanaFallbackNoted=true;console.info('PlantUML: viz-global.js is not loaded, falling back to the Smetana layout engine');}return missing;},CPK=b=>{var V=globalThis.PLANTUML_VIZ||(typeof Viz!=='undefined'?Viz:null);if(!V||typeof V.instance!=='function')return b;var e=globalThis.__plantumlVizError;return typeof e==='string'?e:null;},EgS=b=>{var V=globalThis.PLANTUML_VIZ||(typeof Viz!=='undefined'?Viz:null);var g=globalThis;if +(g.__plantumlVizInstance||typeof g.__plantumlVizError==='string'||!V||typeof V.instance!=='function'){b();return;}if(g.__plantumlVizWaiting){g.__plantumlVizWaiting.push(b);return;}g.__plantumlVizWaiting=[b];var flush=function(){var list=g.__plantumlVizWaiting;g.__plantumlVizWaiting=null;for(var i=0;i{try {return {svg:globalThis.__plantumlVizInstance.renderString(b,{format:'svg',engine:c})};}catch(e){return {error:String(e)};}},Dgo=(b,c)=>{var v=b[c];return typeof v==='string'?v:null;}; +function Bq0(){let a=this;F.call(a);a.cpe=null;a.b52=null;a.b70=null;a.czo=null;a.cK3=null;} +let BDr=(a,b,c,d,e,f)=>{a.cpe=b;a.b52=c;a.b70=d;a.czo=e;a.cK3=f;},FcE=(a,b,c,d,e)=>{let f=new Bq0();BDr(f,a,b,c,d,e);return f;},DEo=a=>{let b,c,d;if(Bj(E(55),a.cpe)){b=a.b70;c=a.czo;if(c===null)c=E(14);else{d=new S;T(d);Bb(H(H(d,E(57)),c),41);c=Q(d);}d=new S;T(d);H(H(d,b),c);return Q(d);}return a.b70;}; +function CwH(){let a=this;F.call(a);a.cE$=null;a.c4d=null;a.con=0;a.c4E=0;a.cBm=0;a.cjq=null;} +let AFd=(a,b,c)=>{if(!a.cBm&&!NB(a.cE$,b)){C9(a.cE$,b,c);a.con=a.con-1|0;C8T(a);return;}},C8T=a=>{let b;if(!a.cBm&&a.c4E&&a.con<=0){a.cBm=1;b=a.cjq;if(b!==null)clearTimeout(b);a.cjq=null;DMK(ZN(a.c4d,"invoke"));return;}}; +function B0V(){let a=this;F.call(a);a.cDC=null;a.cSr=null;} +let Duz=b=>{let c,d,e,f,g;b=b;b.cDC.cjq=null;c=Br(b.cSr);while(Bq(c)){d=Bm(c);e=b.cDC;f=d.b52;d=d.b70;g=new S;T(g);H(H(g,E(58)),d);AFd(e,f,BcV(Q(g)));}}; +function BEY(){let a=this;F.call(a);a.cOz=null;a.cOA=null;} +let DT3=(a,b,c)=>{a.cOz=b;a.cOA=c;},EnO=(a,b)=>{let c=new BEY();DT3(c,a,b);return c;},Fpf=b=>{let c;b=b;c=b.cOz;b=b.cOA;NU();AFd(c,b,B3T(null,null));}; +function BEV(){let a=this;F.call(a);a.cKx=null;a.cKw=null;} +let FjF=(a,b,c)=>{a.cKx=b;a.cKw=c;},ENx=(a,b)=>{let c=new BEV();FjF(c,a,b);return c;},EpH=b=>{let c;b=b;c=b.cKx;b=b.cKw;NU();AFd(c,b,B3T(null,null));},DcV=N(0); +function BEX(){let a=this;F.call(a);a.cXB=null;a.cXA=null;} +let ErH=(a,b,c)=>{a.cXB=b;a.cXA=c;},EzA=(a,b)=>{let c=new BEX();ErH(c,a,b);return c;},EIk=(b,c,d)=>{let e;c=Fe(c);d=Fe(d);b=b;e=b.cXB;b=b.cXA;NU();AFd(e,b,B3T(c,d));}; +function BWs(){let a=this;F.call(a);a.cNr=null;a.cVy=null;a.cJD=null;a.cLH=0;} +let Do5=(a,b,c,d,e)=>{a.cNr=b;a.cVy=c;a.cJD=d;a.cLH=e;},DcJ=(a,b,c,d)=>{let e=new BWs();Do5(e,a,b,c,d);return e;},B3T=(b,c)=>{return DcJ(b,c,null,0);},BcV=b=>{let c,d,e;c=new BWs;d=null;e=null;if(b===null)b=E(14);Do5(c,d,e,b,0);return c;},EUw=()=>{return DcJ(null,null,null,1);},BHA=N(0); +function BEZ(){let a=this;F.call(a);a.cXR=null;a.cXQ=null;} +let DzD=(a,b,c)=>{a.cXR=b;a.cXQ=c;},Fe0=(a,b)=>{let c=new BEZ();DzD(c,a,b);return c;},DO7=(b,c)=>{let d;c=Fe(c);b=b;d=b.cXR;b=b.cXQ;NU();AFd(d,b,BcV(c));},Eb9=N(),BFt=b=>{let c;NU();c=By8;if(c===null)C8K(Cq(b));else U(c,b);},Brr=b=>{let c,d;if(!(Fd2(Cq(b))?1:0)){NU();c=new Bq0;d=new S;T(d);H(H(d,E(59)),b);BDr(c,E(54),Q(d),b,null,null);c=BKe(c);if(c!==null){c=c.cJD;if(c!==null){b=new DR;Bp(b,c);J(b);}}return 0;}return 1;},DSn=(b,c,d)=>{var w=typeof globalThis!=='undefined'?globalThis:typeof self!=='undefined' +?self:window;w.__pl_script_state=w.__pl_script_state||Object.create(null);var st=w.__pl_script_state[b];if(st&&st.state==='loaded'){c();return;}if(st&&st.state==='loading'){st.ok.push(c);st.err.push(d);return;}st=w.__pl_script_state[b]={state:'loading',ok:[c],err:[d]};var ok=function(){st.state='loaded';var list=st.ok;st.ok=[];st.err=[];for(var i=0;i{var g=typeof globalThis!=='undefined'?globalThis:typeof self!=='undefined'?self:this;var ns=g.PLANTUML_STDLIB&&g.PLANTUML_STDLIB[b];return ns +&&ns[c]||null;},C_m=b=>{var g=typeof globalThis!=='undefined'?globalThis:typeof self!=='undefined'?self:this;var t=g&&g.PLANTUML_THEMES;return t&&t[b]?t[b]:null;},E_z=()=>{var g=typeof globalThis!=='undefined'?globalThis:typeof self!=='undefined'?self:this;return !!(g&&g.PLANTUML_THEMES);},EHI=(b,c)=>{var g=typeof globalThis!=='undefined'?globalThis:typeof self!=='undefined'?self:this;var ns=g.PLANTUML_STDLIB_JSON&&g.PLANTUML_STDLIB_JSON[b];return ns&&ns[c]||null;},EiQ=b=>{var g=typeof globalThis!=='undefined' +?globalThis:typeof self!=='undefined'?self:this;return g.PLANTUML_STDLIB_INFO&&g.PLANTUML_STDLIB_INFO[b]||null;},D8P=b=>{return b?(Object.keys(b)).join(','):'';},D$G=(b,c)=>{return b&&b[c]!=null?String(b[c]):null;},EgZ=b=>{return b==null?null:JSON.stringify(b);},Fd2=b=>{var g=typeof globalThis!=='undefined'?globalThis:typeof self!=='undefined'?self:this;var st=g.__pl_script_state&&g.__pl_script_state[b];return !!(st&&st.state==='loaded');}; +function BEU(){let a=this;F.call(a);a.cU0=null;a.cU1=null;} +let E_Z=(a,b,c)=>{a.cU0=b;a.cU1=c;},EEx=(a,b)=>{let c=new BEU();E_Z(c,a,b);return c;},Fxk=(b,c)=>{let d;c=Fe(c);b=b;d=b.cU0;b=b.cU1;NU();AFd(d,b,BcV(c));},D_K=N(),E_d=()=>{var g=typeof globalThis!=='undefined'?globalThis:typeof self!=='undefined'?self:this;return typeof g.PLANTUML_FILE_LOADER==='function';},FrN=(b,c,d,e,f)=>{var g=typeof globalThis!=='undefined'?globalThis:typeof self!=='undefined'?self:this;var settled=false;var reasonOf=function(e){try {return e&&e.message!==undefined?String(e.message):e=== +undefined||e===null?'':String(e);}catch(x){return '';}};var fail=function(reason){if(settled)return;settled=true;f(reasonOf(reason)||'PLANTUML_FILE_LOADER failed for '+b);};var ok=function(id,text){if(settled)return;if(typeof id!=='string'||id===''||typeof text!=='string'){fail('PLANTUML_FILE_LOADER must pass a non-empty string id and a string text for '+b);return;}settled=true;e(id,text);};var result;try {result=g.PLANTUML_FILE_LOADER(b,c,ok,fail,{kind:d});}catch(e){fail(e);return true;}if(result!==null&&(typeof result +==='object'||typeof result==='function')){try {(Promise.resolve(result)).then(null,fail);}catch(e){fail(e);}}if(result===false&&settled===false){settled=true;return false;}return true;},Fnh=N(),H0=b=>{return Math.sin(b);},G4=b=>{return Math.cos(b);},Erv=b=>{return Math.acos(b);},Dfb=b=>{return b*3.141592653589793/180.0;},AP3=b=>{return Math.log(b);},Gs=b=>{return Math.sqrt(b);},Tt=b=>{return Math.ceil(b);},AAC=b=>{return Math.floor(b);},VT=(b,c)=>{return ElB(b,c);},ElB=(b,c)=>{return Math.pow(b,c);},Nz=(b,c)=> +{return Math.atan2(b,c);},BqY=b=>{return b+EFr(b)*0.5|0;},AGn=b=>{return Pc(b+A$W(b)*0.5);},AEY=(b,c)=>{return BIp(b,V(c));},BIp=(b,c)=>{let d;d=CY(b,c);if(GR(SW(b,c),BH)&&D4(CT(d,c),b))d=CE(d,V(1));return d;},ATY=(b,c)=>{let d;d=b%c|0;if((b^c)<0&&d)d=d+c|0;return d;},AJk=(b,c)=>{return Cp((Cl$(b,V(c))));},Cl$=(b,c)=>{let d;d=Fl(b,c);if(GR(SW(b,c),BH)&&D4(d,BH))d=BU(d,c);return d;},QD=(b,c)=>{let d,e;d=BU(b,c);if(GR(SW(b,d),BH)&&FE(SW(b,c),BH)){e=new KZ;X(e);J(e);}return d;},S3=(b,c)=>{return ASX(b,V(c));},ASX +=(b,c)=>{let d,e;if(D4(c,V(1))){if(D4(b,V(1))){if(D4(b,BH)&&D4(c,BH)){d=CT(b,c);if(!(DS(b,O(0, 2147483648))&&DS(c,V(-1)))&&!(DS(c,O(0, 2147483648))&&DS(b,V(-1)))&&DS(CY(d,c),b))return d;e=new KZ;X(e);J(e);}return BH;}return c;}return b;},DH8=()=>{return Math.random();},DO=(b,c)=>{if(b{if(b>c)c=b;return c;},Ew$=(b,c)=>{return Math.min(b,c);},Eh=(b,c)=>{return Ew$(b,c);},EAU=(b,c)=>{return Math.max(b,c);},BC=(b,c)=>{return EAU(b,c);},EFU=(b,c)=>{return Math.min(b,c);},Ba7=(b,c)=>{return EFU(b, +c);},EI7=(b,c)=>{return Math.max(b,c);},A99=(b,c)=>{return EI7(b,c);},Kj=b=>{if(b<0)b= -b|0;return b;},AOc=b=>{if(GR(b,BH))b=LF(b);return b;},DyP=b=>{return Math.abs(b);},EL=b=>{return DyP(b);},EAK=b=>{return Math.sign(b);},A$W=b=>{return EAK(b);},EFr=b=>{return Math.sign(b);},DKP=N(),B$w=(b,c)=>{let d,e,f,g;b=b.data;d=Fd(c);e=d.data;f=DO(c,b.length);g=0;while(g{let d,e,f,g;b=b.data;d=BD(c);e=d.data;f=DO(c,b.length);g=0;while(g{let d,e,f,g;b=b.data;d=Ca(c);e=d.data;f=DO(c,b.length);g=0;while(g{let d,e,f,g;d=b.data;e=CUW(BaA(Dg(b)),c);f=DO(c,d.length);g=0;while(g{let f,g,h;if(c<=d){while(c{AOk(b,0,b.data.length,c);},Ce2=(b,c)=>{let d,e,f,g;b=b.data;d=0;e=b.length;if(d<=e){while(d{let f,g;if(c<=d){while(c{BKN(b,0,b.data.length, +c);},Bcu=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;d=b.data.length;if(d){if(c===null)c=AM7();e=K(F,d);f=1;g=b;while(f=j)break;k=DO(j,h+f|0);l=h+(2*f|0)|0;m=DO(j,l);n=h;j=k;a:{b:{while(h!=k){if(j==m)break b;o=i[h];p=i[j];if(c.fc(o,p)>0){q=e.data;r=n+1|0;q[n]=p;j=j+1|0;}else{q=e.data;r=n+1|0;q[n]=o;h=h+1|0;}n=r;}while(true){if(j>=m)break a;q=e.data;h=n+1|0;r=j+1|0;q[n]=i[j];n=h;j=r;}}while(true){if(h>=k)break a;q=e.data;j=n+1|0;r=h+1|0;q[n]=i[h];n=j;h=r;}}h=l;}f=f* +2|0;i=g;g=e;e=i;}c:{if(g!==b){n=0;while(true){b=g.data;if(n>=b.length)break c;e.data[n]=b[n];n=n+1|0;}}}return;}},C4O=(b,c)=>{let d,e,f,g,h;b=b.data;d=0;e=b.length;if(d<=e){f=e-1|0;a:{b:{while(true){if(d>f)break b;e=(d+f|0)/2|0;g=b[e];if(g==c)break;if(c>=g)d=e+1|0;else f=e-1|0;}break a;}e=( -d|0)-1|0;}return e;}h=new Bt;X(h);J(h);},Bv9=(b,c)=>{let d,e,f,g,h;b=b.data;d=0;e=b.length;if(d<=e){f=e-1|0;a:{b:{while(true){if(d>f)break b;e=(d+f|0)/2|0;g=OT(b[e],c);if(!g)break;if(g<=0)d=e+1|0;else f=e-1|0;}break a;}e +=( -d|0)-1|0;}return e;}h=new Bt;X(h);J(h);},C3k=(b,c)=>{let d,e,f;if(b!==c){if(b!==null&&c!==null){b=b.data;c=c.data;d=b.length;if(d==c.length){e=0;a:{b:{while(true){if(e>=d)break b;f=e+0|0;if(D4(b[f],c[f]))break;e=e+1|0;}break a;}e=(-1);}return e>=0?0:1;}}return 0;}return 1;},YT=(b,c)=>{let d,e,f;if(b!==c){if(b!==null&&c!==null){b=b.data;c=c.data;d=b.length;if(d==c.length){e=0;a:{b:{while(true){if(e>=d)break b;f=e+0|0;if(!Li(b[f],c[f]))break;e=e+1|0;}break a;}e=(-1);}return e>=0?0:1;}}return 0;}return 1;},CY9 +=b=>{let c,d,e;if(b!==null){c=1;d=0;while(true){e=b.data;if(d>=e.length)break;c=(31*c|0)+Bjt(e[d])|0;d=d+1|0;}return c;}return 0;},ME=b=>{let c,d,e;if(b!==null){c=1;d=0;while(true){e=b.data;if(d>=e.length)break;c=(31*c|0)+Oz(e[d])|0;d=d+1|0;}return c;}return 0;},Bv=b=>{let c;B$(b);c=new B$c;c.cjE=b;return c;},CX$=N(0),Dnq=N(0),DnN=N(0),Fus=N(),Bx_=()=>{return window.document;},Cei=N(),Bu2=BH,ALT=()=>{ALT=Z(Cei);EyX();},Ot=(b,c)=>{let d;ALT();b=AUI(b);d=new S;T(d);Bb(d,91);H(H(H(d,b),E(60)),c);Dit(Q(d));},Dit +=b=>{ALT();if(globalThis.PLANTUML_DEBUG===true?1:0)console.log(Cq(Dsy(b)));},Dsy=b=>{let c,d,e;ALT();c=CE(QR(),Bu2);d=K(F,2);e=d.data;e[0]=TT(c);e[1]=b;return Jv(E(61),d);},EyX=()=>{Bu2=QR();},EhR=b=>{console.log(b);var el=document.getElementById('status');if(el){el.textContent=b;}},Ie=N(0); +function Di1(){let a=this;F.call(a);a.ccS=0;a.cvs=0;a.cjA=0;a.b7k=0;a.cdW=null;} +let Bq=a=>{return a.ccS>=a.cjA?0:1;},Bm=a=>{let b,c;C_t(a);b=a.ccS;a.b7k=b;c=a.cdW;a.ccS=b+1|0;return c.cf(b);},AQe=a=>{let b,c,d;if(a.b7k>=0){C_t(a);a.cdW.dK(a.b7k);a.cvs=a.cdW.bHh;b=a.b7k;c=a.ccS;if(b{let b;if(a.cvs!=a.cdW.bHh){b=new Nr;X(b);J(b);}},ET1=N(),C5F=b=>{let c;c=(Dg(b)).bKC;if(c[Gf].itemType===null){b=new Bt;X(b);J(b);}return CID(b);},CUW=(b,c)=>{if(b!==null){if(b!==Bo(D0n)){if(c<0){b=new DsZ;X(b);J(b);}return Ci1(b.bKC, +c);}b=new Bt;X(b);J(b);}b=new F2;X(b);J(b);},EG1=N(),B9S=()=>{let b;b=new S;T(b);Bb(H(H(H(H(b,E(62)),E(63)),E(64)),E(65)),93);return Q(b);}; +function CRJ(){let a=this;F.call(a);a.bRS=null;a.c81=null;a.cDj=null;a.c8m=null;a.b2a=null;a.cek=null;a.cG2=null;a.coD=0.0;a.b_D=null;a.bTc=null;a.b08=null;a.bYv=null;} +let EHV=(a,b)=>{let c,d;a.b2a=Bk();a.cek=E(66);a.cG2=E(66);a.coD=1.0;a.b_D=null;a.bTc=null;a.b08=Bk();a.bYv=null;a.c8m=Bx_();c=document.createElementNS('http://www.w3.org/2000/svg',"svg");a.bRS=c;c.setAttribute("xmlns","http://www.w3.org/2000/svg");a.bRS.setAttribute("version","1.1");c=document.createElementNS('http://www.w3.org/2000/svg',"defs");a.c81=c;a.bRS.appendChild(c);if(b!==null&&!Bj(b,E(27))&&!Bj(b,E(66))&&!Bj(b,E(28))){c=document.createElementNS('http://www.w3.org/2000/svg',"rect");a.bTc=c;c.setAttribute("x", +"0");a.bTc.setAttribute("y","0");a.bTc.setAttribute("width","0");a.bTc.setAttribute("height","0");a.bTc.setAttribute("fill",Cq(b));a.bTc.setAttribute("stroke","none");a.bRS.appendChild(a.bTc);d=a.bRS;c=new S;T(c);Bb(H(H(c,E(67)),b),59);d.setAttribute("style",Cq(Q(c)));}d=document.createElementNS('http://www.w3.org/2000/svg',"g");a.cDj=d;a.bRS.appendChild(d);b=a.b2a;d=BKw(a.cDj);U(b,d);},CCT=a=>{let b=new CRJ();EHV(b,a);return b;},Rz=a=>{let b;b=a.b2a;return UU(Be(b,b.bGJ-1|0));},Cxu=a=>{return !(a.bYv!==null +&&Rz(a)===a.bYv)?0:1;},BAh=a=>{let b,c;if(a.b08.bGJ){if(Cxu(a)){b=a.bYv;a.bYv=null;c=a.b2a;EJ(c,c.bGJ-1|0);if(b.firstChild!=null?1:0)(Rz(a)).appendChild(b);return;}c=new BP;Bp(c,E(68));J(c);}},Bfc=a=>{let b,c,d,e,f,g;if(a.b08.bGJ){a.bYv=document.createElementNS('http://www.w3.org/2000/svg',"a");b=Be(a.b08,0);c=a.bYv;d=b.cTP;if(d===null)e=b.b94;else{BqD();e=D3(B9O,d);f=new Sj;T(f);while(GW(e)){g=Y5(El(e,1),16)&65535;d=new S;T(d);Bb(d,g);AMW(e,f,Q(d));}ALx(e,f);e=Ih(Q(f),E(69),E(15));}c.setAttribute("target", +Cq(b.cN_));c.setAttribute("href",Cq(b.b94));c.setAttributeNS('http://www.w3.org/1999/xlink','xlink:'+"href",Cq(b.b94));c.setAttributeNS('http://www.w3.org/1999/xlink','xlink:'+"type","simple");c.setAttributeNS('http://www.w3.org/1999/xlink','xlink:'+"actuate","onRequest");c.setAttributeNS('http://www.w3.org/1999/xlink','xlink:'+"show","new");c.setAttribute("title",Cq(e));c.setAttributeNS('http://www.w3.org/1999/xlink','xlink:'+"title",Cq(e));b=a.b2a;c=BKw(a.bYv);U(b,c);return;}},D9_=a=>{return a.bRS;},El8=(a, +b,c,d)=>{let e,f,g,h,i,j;e=Tt(b)|0;f=Tt(c)|0;g=a.bRS;h=new S;T(h);i=H(h,E(70));BE(i,e);Bb(i,32);BE(i,f);g.setAttribute("viewBox",Cq(Q(h)));a.bRS.setAttribute("width",Cq(Gr(a,e*d)));a.bRS.setAttribute("height",Cq(Gr(a,f*d)));j=a.bTc;if(j!==null){j.setAttribute("width",Cq(AEV(e)));a.bTc.setAttribute("height",Cq(AEV(f)));}},A8l=(a,b)=>{if(b===null)b=E(71);a.cek=b;},BXH=(a,b)=>{if(b===null)b=E(71);a.cG2=b;},AXM=(a,b,c)=>{a.coD=b;a.b_D=c;},CO7=(a,b,c,d,e)=>{let f,g,h;f=document.createElementNS('http://www.w3.org/2000/svg', +"line");g=Gr(a,b);f.setAttribute("x1",Cq(g));g=Gr(a,c);f.setAttribute("y1",Cq(g));g=Gr(a,d);f.setAttribute("x2",Cq(g));h=Gr(a,e);f.setAttribute("y2",Cq(h));Ca2(a,f);(Rz(a)).appendChild(f);},C7B=(a,b)=>{let c;c=document.createElementNS('http://www.w3.org/2000/svg',"path");c.setAttribute("d",Cq(b));A1R(a,c);(Rz(a)).appendChild(c);},FtW=(a,b,c,d,e,f,g,h,i,j,k)=>{let l,m,n,o,p;if(j!==null){l=(AQW(BJg(Cq(b),Cq(e),f,Cq(g===null?E(72):g)))).data;m=l[0];n=l[1];o=document.createElementNS('http://www.w3.org/2000/svg', +"rect");o.setAttribute("x",Cq(Gr(a,c)));o.setAttribute("y",Cq(Gr(a,d-n+2.0)));o.setAttribute("width",Cq(Gr(a,m)));o.setAttribute("height",Cq(Gr(a,n)));o.setAttribute("fill",Cq(j));o.setAttribute("stroke","none");(Rz(a)).appendChild(o);}p=document.createElementNS('http://www.w3.org/2000/svg',"text");p.setAttribute("x",Cq(Gr(a,c)));p.setAttribute("y",Cq(Gr(a,d)));p.setAttribute("font-size",Cq(AEV(f)));p.setAttribute("fill",Cq(a.cek));p.setAttribute("xml:space","preserve");p.setAttribute("style","white-space: pre");if +(g!==null)p.setAttribute("font-weight",Cq(g));if(h!==null)p.setAttribute("font-style",Cq(h));if(i!==null)p.setAttribute("text-decoration",Cq(i));if(e!==null)p.setAttribute("font-family",Cq(e));if(k==90){g=Gr(a,c);h=Gr(a,d);i=new S;T(i);g=H(H(i,E(73)),g);Bb(g,32);Bb(H(g,h),41);p.setAttribute("transform",Cq(Q(i)));}else if(k==270){g=Gr(a,c);h=Gr(a,d);i=new S;T(i);g=H(H(i,E(74)),g);Bb(g,32);Bb(H(g,h),41);p.setAttribute("transform",Cq(Q(i)));}b=Cq(b);p.textContent=b;(Rz(a)).appendChild(p);},A1R=(a,b)=>{let c;c= +a.cek;b.setAttribute("fill",Cq(c));Ca2(a,b);},Ca2=(a,b)=>{let c,d,e,f;b.setAttribute("stroke",Cq(a.cG2));b.setAttribute("stroke-width",Cq(Gr(a,a.coD)));c=a.b_D;if(c!==null){c=c.data;if(c.length>=2){d=Gr(a,c[0]);e=Gr(a,a.b_D.data[1]);f=new S;T(f);d=H(f,d);Bb(d,44);H(d,e);b.setAttribute("stroke-dasharray",Cq(Q(f)));}}},Gr=(a,b)=>{return BL8(b,2);},EMA=(b,c,d)=>{b.appendChild(b.ownerDocument.createProcessingInstruction(c,d));},BJg=(b,c,d,e)=>{if(!window._measureCtx){window._measureCanvas=document.createElement('canvas');window._measureCtx +=window._measureCanvas.getContext('2d');}var ctx=window._measureCtx;ctx.font=e+' '+d+'px '+c;var metrics=ctx.measureText(b);var width=metrics.width;var height=metrics.actualBoundingBoxAscent+metrics.actualBoundingBoxDescent;if(!height)height=d*1.2;return [width,height];},D6D=(b,c,d)=>{var svg=document.createElementNS('http://www.w3.org/2000/svg','svg');svg.style.position='absolute';svg.style.visibility='hidden';document.body.appendChild(svg);var textEl=document.createElementNS('http://www.w3.org/2000/svg','text');textEl.setAttribute('font-family', +c);textEl.setAttribute('font-size',d);textEl.textContent=b;svg.appendChild(textEl);var bbox=textEl.getBBox();var result=[bbox.width,bbox.height,bbox.x,bbox.y];document.body.removeChild(svg);return result;},CUx=(b,c,d,e)=>{var canvas=document.createElement('canvas');var ctx=canvas.getContext('2d');ctx.font=e+' '+d+'px '+c;var m=ctx.measureText(b);return [m.width,m.actualBoundingBoxAscent||d*0.8,m.actualBoundingBoxDescent||d*0.2,m.fontBoundingBoxAscent||d*0.8,m.fontBoundingBoxDescent||d*0.2];},Ep8=(b,c)=>{var parser +=new DOMParser();var doc=parser.parseFromString(c,'image/svg+xml');var svgElem=doc.documentElement;if(svgElem&&svgElem.tagName.toLowerCase()==='svg'){var imported=document.importNode(svgElem,true);b.appendChild(imported);}},EEv=N(),B0X=null,B3S=null,Fm=()=>{let b,c,d;if(B0X===null){b=new Cy0;c=null;d=null;BBF(b,c);c=new S;T(c);b.c9n=c;b.daJ=Fd(32);b.c8A=0;b.c$O=d;B0X=b;}return B0X;},Cdi=(b,c,d,e,f)=>{let g,h,i,j,k,l,m;if(b!==null&&d!==null){if(c>=0&&e>=0&&f>=0&&(c+f|0)<=C5F(b)&&(e+f|0)<=C5F(d)){a:{b:{if(b!== +d){g=BaA(Dg(b));h=BaA(Dg(d));if(g!==null&&h!==null){if(g===h)break b;if(!Bwd(g)&&!Bwd(h)){i=b;j=0;k=c;while(j{if(c>=0&&e>=0&&f>=0&&(c+f|0)<=CaS(b)&&(e+f|0)<=CaS(d)){Bgs(b,c,d,e,f);return;}b=new EN;X(b);J(b);},CaS=b=>{return CID(b);},Bgs +=(b,c,d,e,f)=>{if(f!==0){if(typeof b.data.buffer!=='undefined'){d.data.set(b.data.subarray(c,c+f),e);}else if(b!==d||e{return Pc((new Date()).getTime());},A2k=b=>{let c,d,e;if(B3S===null){c=new BMR;B2M(c);d=c;AEo(d,E(76),E(77));AEo(d,E(78),E(79));BcN();AEo(d,E(80),E(21));BcN();AEo(d,E(81),E(82));AEo(d,E(83),E(15));AEo(d,E(84),E(85));AEo(d,E(86),E(77));AEo(d,E(87),E(21));e +=new BMR;B2M(e);e.cSi=c;B3S=e;}return DdE(B3S,b);},Qb=N(),A2_=null,BIj=null,CSJ=null,EO5=null,FwO=null,CQD=null,Em8=null,AAi=()=>{AAi=Z(Qb);EGg();},AN7=a=>{AAi();},EGg=()=>{let b;b=new CQo;AN7(b);A2_=b;b=new CQn;AN7(b);BIj=b;b=new CQq;AN7(b);CSJ=b;b=new CQp;AN7(b);EO5=b;b=new CQl;AN7(b);FwO=b;b=new CQk;AN7(b);CQD=b;b=new CQm;AN7(b);Em8=b;}; +function ACa(){let a=this;F.call(a);a.bK0=null;a.b4b=null;} +let CpX=null,BAa=()=>{BAa=Z(ACa);D16();},En0=a=>{let b,c;BAa();b=Bk();a.bK0=b;c=new Cp$;F8();P8(c,Ua);U(b,c);b=a.bK0;c=new CN5;P8(c,Wa);U(b,c);b=a.bK0;c=new CEX;P8(c,Ry);U(b,c);b=a.bK0;c=new COo;P8(c,AHH);U(b,c);b=a.bK0;c=new Dj1;P8(c,RA);U(b,c);b=a.bK0;c=new CmG;P8(c,Ry);U(b,c);b=a.bK0;c=new CHa;A9N(c,Ua);U(b,c);b=a.bK0;c=new Cn5;P8(c,ANM);U(b,c);b=a.bK0;c=new CVq;P8(c,AHv);U(b,c);b=a.bK0;c=new Ccs;P8(c,ALi);U(b,c);b=a.bK0;c=new C48;P8(c,AKn);U(b,c);b=a.bK0;c=new Deh;P8(c,AJa);U(b,c);b=a.bK0;c=new Czw;A9N(c, +AYa);U(b,c);b=a.bK0;c=new Ce8;P8(c,AIK);U(b,c);b=a.bK0;c=new CZw;P8(c,ALo);U(b,c);b=a.bK0;c=new CWs;P8(c,AKW);U(b,c);b=a.bK0;c=new CR0;A9N(c,AAX);U(b,c);b=a.bK0;c=new Cg4;A9N(c,AL3);U(b,c);b=a.bK0;c=new Cvo;P8(c,AMO);U(b,c);b=a.bK0;c=new Cym;P8(c,AMd);U(b,c);},Edn=()=>{let a=new ACa();En0(a);return a;},Ebl=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;d=Cpr(b,0);if(By6(d)<10)a.b4b=null;d.c80=0;e=0;while(true){f=d.bND;if(e>=f.bGJ)break;f=Be(f,e);g=f.bGP;h=CiN;i=0;j=null;while(true){a:{if(g===null)k=(-1);else +{l=g.bGI.length;m=h.cqv.bGI.length;k=i<0?0:i;if(m>(l-k|0))k=(-1);else{n=l-m|0;o=m-1|0;b:{while(true){if(k>n)break b;l=o;while(l>=0&&Bn(h.cqv,l)==Bn(g,k+l|0)){l=l+(-1)|0;}if(l<0)break;l=Bn(g,(k+m|0)-1|0);k=k+(l>=256?h.c57:h.cLp.data[l])|0;}break a;}k=(-1);}}}if(k==(-1))break;o=k+E(88).bGI.length|0;if(j===null){j=new S;T(j);}p=o;while(p=65&&n<=90)&&!(n>=97&&n<=122)&&!(n>=48&&n<=57)&&n!=43&&n!=47&&n!=61)?1:0))break;p=p+1|0;}q=B_(g,o,p);r=DfL(q);C9(d.cvf,r,q);Y7(j,g,i,k);L(j, +E(89));L(j,r);i=p;}if(j===null)h=g;else{Y7(j,g,i,g.bGI.length);h=Q(j);}if(h!==g){s=d.bND;g=XT(h,f.bIM,f.bO3);GJ(s,e,g);}e=e+1|0;}f=(Be(f,0)).bGP;f=!BO(f,E(90))?null:BcZ(Jt(f,E(90),E(91)));h=f!==null?f:BcZ((Be(d.bND,0)).bGP);if(DCP(h,b,c,d)===null){g=Bk();b=a.b4b;if(b!==null){s=b.bU3;if(OS(h,s)){q=a.b4b.fK(null,d,null,c);if(!CFS(a,q)){b=q;U(g,b);}else{if(f!==null)return CO2(d,c,a.b4b.fN(null,d,null,c));return q;}}}t=Br(a.bK0);while(Bq(t)){j=Bm(t);s=j.bU3;if(!OS(h,s))continue;if(j===a.b4b)continue;s=BY(Dg(j));q +=new S;T(q);H(H(q,E(92)),s);Ot(Bo(ACa),CH(q));q=j.fK(null,d,null,c);if(CFS(a,q)){Ot(Bo(ACa),E(93));a.b4b=j;if(f!==null)return CO2(d,c,j.fN(null,d,null,c));return q;}b=q;U(g,b);}if(!g.bGJ)return Cbd(d,c);return DC0(g);}return null;},CFS=(a,b)=>{if(b!==null&&!(b instanceof ZB)&&!(b instanceof BJD))return 1;return 0;},D16=()=>{CpX=Edn();}; +function CAU(){let a=this;F.call(a);a.cw5=null;a.deB=0;a.c_G=0;a.c8n=null;a.c_1=null;a.c8j=null;a.c82=0.0;a.c71=null;a.c79=null;a.deW=null;a.c97=0;a.cT5=0;} +let Bdb=(a,b,c)=>{b=a.cw5;AJb();return b!==A6h?BMd():Ck3(b);}; +function Bx(){let a=this;F.call(a);a.bHx=null;a.bGO=0;} +let Ct=(a,b,c)=>{a.bHx=b;a.bGO=c;},Fgi=a=>{return a.bHx;},CVX=a=>{return a.bGO;},HT=a=>{return a.bHx;},BbM=(a,b)=>{return a!==b?0:1;},E$B=a=>{return AI$(a);},YA=a=>{let b;b=Dg(a);if(!BUK(AZk(b),Bo(Bx)))b=AZk(b);return b;},BBv=(a,b)=>{let c,d,e;if(YA(b)!==YA(a)){c=new Bt;d=BY(YA(a));b=BY(YA(b));e=new S;T(e);H(H(H(H(e,E(94)),d),E(95)),b);Bp(c,Q(e));J(c);}return T1(a.bGO,b.bGO);},Ss=(b,c)=>{let d,e,f,g,h;d=CG9(b);d=d===null?null:d.b2();if(d!==null){d=d.data;e=d.length;f=0;while(true){if(f>=e){g=new Bt;b=BY(b);c +=BY(c);h=new S;T(h);H(H(H(H(H(h,E(96)),b),E(97)),c),E(98));Bp(g,Q(h));J(g);}g=d[f];if(Bj(g.bHx,c))break;f=f+1|0;}return g;}b=new Bt;Bp(b,E(99));J(b);},EAN=(a,b)=>{return BBv(a,b);}; +function A2a(){let a=this;Bx.call(a);a.deN=null;a.cYN=null;} +let BTR=null,B0N=null,BXU=null,BY2=null,BYU=null,BSB=null,B8p=null,BLX=null,BDu=null,BYQ=null,BOf=null,BZx=null,B4z=null,BFF=null,BKJ=null,BLr=null,BX$=null,BRl=null,BHH=null,BT5=null,BBQ=null,BVJ=null,BWp=null,B5C=null,BYX=null,BBE=null,B0j=null,A6h=null,BuH=null,Cma=null,DDh=null,FkZ=null,Fzw=10000,Fo0=null,D3F=null,Evc=null,C_G=null,AJb=()=>{AJb=Z(A2a);E14();},EPD=(a,b,c,d,e)=>{AJb();Ct(a,b,c);a.deN=e;a.cYN=d;},I0=(a,b,c,d)=>{let e=new A2a();EPD(e,a,b,c,d);return e;},EbV=()=>{let b,c;AJb();b=K(A2a,29);c= +b.data;c[0]=BTR;c[1]=B0N;c[2]=BXU;c[3]=BY2;c[4]=BYU;c[5]=BSB;c[6]=B8p;c[7]=BLX;c[8]=BDu;c[9]=BYQ;c[10]=BOf;c[11]=BZx;c[12]=B4z;c[13]=BFF;c[14]=BKJ;c[15]=BLr;c[16]=BX$;c[17]=BRl;c[18]=BHH;c[19]=BT5;c[20]=BBQ;c[21]=BVJ;c[22]=BWp;c[23]=B5C;c[24]=BYX;c[25]=BBE;c[26]=B0j;c[27]=A6h;c[28]=BuH;return b;},E14=()=>{let b,c,d,e,f,g;BTR=I0(E(101),0,E(102),E(103));B0N=I0(E(104),1,E(105),E(103));BXU=I0(E(106),2,E(107),E(108));BY2=I0(E(109),3,E(110),E(111));BYU=I0(E(112),4,E(113),E(114));BSB=I0(E(115),5,E(116),E(114));B8p +=I0(E(117),6,E(118),E(114));BLX=I0(E(119),7,E(120),E(114));BDu=I0(E(121),8,E(122),E(114));BYQ=I0(E(123),9,E(124),E(125));BOf=I0(E(126),10,E(127),E(128));BZx=I0(E(129),11,E(130),E(131));B4z=I0(E(132),12,E(133),E(134));BFF=I0(E(135),13,E(136),E(134));BKJ=I0(E(137),14,E(138),E(139));BLr=I0(E(140),15,E(102),E(141));BX$=I0(E(142),16,E(143),E(141));BRl=I0(E(144),17,E(102),E(141));BHH=I0(E(145),18,E(146),E(147));BT5=I0(E(148),19,E(149),E(150));BBQ=I0(E(151),20,E(152),E(108));BVJ=I0(E(153),21,E(154),E(108));BWp=I0(E(155), +22,E(2),E(108));B5C=I0(E(156),23,E(157),E(108));BYX=I0(E(158),24,E(159),E(150));BBE=I0(E(160),25,E(161),E(150));B0j=I0(E(162),26,E(163),E(164));A6h=I0(E(165),27,E(166),E(167));BuH=I0(E(37),28,E(166),E(167));C_G=EbV();Cma=Dy();b=(C_G.b2()).data;c=b.length;d=0;while(d{return a.b4w;},FyG=a=>{return AKY();},CHF=a=>{let b;b=a.bU8;if(b!==null)return Bv7(b,E(15));return E(14);},FzM=(a,b)=>{a.cBO=b;},FzL=(a,b)=>{a.cr1=b;},DJA=a=>{return null;},EAb=a=>{return;},DUS=a=>{return 0;},E9e=(a,b,c,d)=>{let e,$$je;e=new C1w;e.cLC=B$(b);try{b=DIL(e,a,c,d);}catch($$e){$$je=P($$e);if($$je instanceof J1){return APx();}else{throw $$e;}}return b;},Fya=(a,b,c)=>{return b.f1(c);},Er$=a=>{Jx();return Fv(JB);},EgF=(a,b)=>{return;},Fcy=a=>{return a.bUc.cqj;},Pn=N(BN4),AIR=(a,b,c)=>{a.cBO +=1;a.cr1=1;a.bU8=B$(b);a.bUc=c;a.b4w=b.cvf;},CLG=a=>{let b,c;b=a.bUc.bWf;VO();c=BdJ;if(BG(E(13),FW(b.coV,c)))return 1;return 0;},C9v=N(0),CHV=N(0); +function H3(){let a=this;Pn.call(a);a.ce7=null;a.b$0=null;a.b_q=null;a.caO=null;a.b9d=null;a.coy=null;a.bM8=null;a.bGM=null;a.bY6=null;a.caP=0;a.cxV=0;} +let DBo=null,Ddb=0,Fwh=0,Bc9=()=>{Bc9=Z(H3);FmM();},RU=(a,b,c,d,e)=>{let f;Bc9();AIR(a,b,e);B3();f=CO;Fa();a.ce7=AXy(f,NH);a.b$0=AXy(CO,Pe);a.b_q=AXy(CO,Pe);a.caO=AXy(CO,null);a.b9d=AXy(CO,null);a.coy=AXy(null,null);a.bY6=null;a.bM8=c;b=Cqe(a.b4w,b.cs2,c,ACU(),e.bWf);a.bGM=b;if(d!==null){b=b.b3K;c=d.cHA;AFQ(b,c);}},Dz8=a=>{if(AUP(a.bGM,E(168)))return 1;return CLG(a);},D2d=(a,b)=>{a.bY6=b;},Vt=a=>{return B1(a.bGM);},Fzl=a=>{return a.bM8;},HB=a=>{return a.bGM;},FyV=a=>{return a.caP;},FpT=(a,b)=>{a.caP=b;},B1l +=(a,b,c)=>{let d,e,f,g,h,i,$$je;d=a.bGM;b=F9(b);e=(B$Y(d,b)).dX();while(e.dY()){f=e.dZ();g=d.b3K;h=ES(c);C9(g,f,h);BxE(d);g=Fvv(f);CeT(g,c,B1(d));AI9(d,Cnd(g));}a:{if(BG(E(169),b)&&BG(E(170),c)){i=CyR(CxJ(),E(171));e=A0A(i);b=B1(d);b:{try{c:{try{AI9(d,AL6(Bxc(e,null),b));break a;}catch($$e){$$je=P($$e);if($$je instanceof Ld){b=$$je;break c;}else{throw $$e;}}}}catch($$e){$$je=P($$e);if($$je instanceof Dd){b=$$je;break b;}else{throw $$e;}}GP(b);break a;}GP(b);}}},DXN=(a,b,c)=>{C9(a.bGM.cCS,b,c);},D23=(a,b)=>{let c, +d,e,$$je;c=new S;T(c);H(H(c,b),E(172));d=Q(c);a:{try{c=Bgi(d);break a;}catch($$e){$$je=P($$e);if($$je instanceof LI){}else if($$je instanceof Ld){d=$$je;d=d.bRf;c=new S;T(c);H(H(H(H(c,E(173)),b),E(7)),d);return B5(Q(c));}else{throw $$e;}}c=new S;T(c);H(H(c,E(174)),b);return B5(Q(c));}e=Cr4(c);if(e.dV()>0){c=BY(e);e=new S;T(e);H(H(H(H(e,E(175)),b),E(176)),c);return B5(Q(e));}a.bGM.ckt=d;return By();},BBn=(a,b)=>{if(!AA7(b)&&!ATq(b.bQv)){a.ce7=b;return;}},Fyl=a=>{return a.b$0;},Fye=a=>{return a.caO;},Fx8=a=>{return a.b9d;},DgC +=(a,b,c,d)=>{a.b9d=Dj9(Day(Dp9(a.b9d,c),d),b);},CEx=(a,b,c,d)=>{a.caO=Dj9(Day(Dp9(a.caO,c),d),b);},Fzj=a=>{return a.b_q;},D5W=(a,b)=>{a.b_q=b;},FyD=a=>{return a.coy;},Fz0=(a,b)=>{a.cxV=b;},Due=a=>{Bc9();if(Ddb)return 1;return a.cxV;},Cf=a=>{return a.bGM.bH$;},Nk=(a,b)=>{BQb(Cf(a),b);},CU_=a=>{let b,c,d,e;b=a.bUc.cqj;c=(Cf(a)).cqw;d=AAh();e=d;Ea(e,b);Ea(e,c);return d;},E8n=(a,b)=>{return;},Fey=a=>{return DcU(a.bGM.b3K);},FmM=()=>{DBo=Dp(E(177));Ddb=0;Fwh=0;},Yf=N(0),Np=N(),Cc=a=>{let b;b=new COh;b.cT8=a;return b;},El4 +=(a,b)=>{let c,d;b=new BV;c=BY(Dg(a));d=new S;T(d);H(d,c);Bp(b,Q(d));J(b);},AJN=(a,b)=>{let c,d;if(!a.gv()){c=a.gw(b);if(!c.bSl)b=E(27);else{b=new S;JP(b,9);Bb(b,35);Btn(b,c.bJX);Btn(b,c.bJz);Btn(b,c.bJT);d=c.bSl;if(d!=255)Btn(b,d);b=Q(b);}return b;}return E(27);},DV1=(a,b)=>{return a;},DNJ=(a,b)=>{return a;},D3q=a=>{return a;},E_X=a=>{return a;},EEf=a=>{return 1;},EG5=a=>{let b,c;b=AUI(Dg(a));c=new S;T(c);Bb(c,63);H(c,b);return Q(c);},DJk=(a,b)=>{return a;},EcF=(a,b)=>{b=new BV;X(b);J(b);},DAi=a=>{let b;b= +new BV;X(b);J(b);},Ecw=a=>{return 0;},DfC=N(),Hu=null,K8=null; +let EBk=null,Dyj=null,AU8=null,D4J=null,ASV=null,Ev7=null,Dw8=null,BbH=null,YS=null,BoR=null,C22=null,C6N=null,CfM=null,CEl=null,CrW=null,CSQ=null,CT$=null,CBu=null,FtD=null,Cfm=null,ChS=null,DLt=null,Efi=null,ERj=null,DEb=null,DWz=null,EGO=null,DLM=null,FiD=null,DPP=null,DLT=null,BiE=null,Go=()=>{Go=Z(DfC);EVX();},Qj=()=>{Go();return BiE;},E4=()=>{Go();return BiE;},AET=b=>{let c;Go();c=(b.gy()).gz();if(c===null)return Cc(E4());return Cc(c);},Bwe=(b,c,d)=>{let e,f,g,h,i,j,k;Go();if(d){e=C5(d,100);if(e){if(b instanceof AL9 +&&c instanceof AL9){b=b;c=c;AFe();f=C$7(b.bJI);b=C$7(c.bJI);g=f.coU;h=b.coU;if(e>0)d=100;g=g.data;h=h.data;i=d/100.0;i=i*i*i;j=B7y(i,g[0],h[0]);k=B7y(i,g[1],h[1]);return AHx(C8$(CW5([j,k,B7y(i,g[2],h[2])]),1.0));}return b;}return c;}return b;},BJv=(b,c,d)=>{let e;Go();e=new APg;if(b instanceof APg)b=b.b5r;if(c instanceof APg)c=c.cxr;e.b5r=B$(b);e.cxr=B$(c);e.c84=d;return e;},Xv=b=>{Go();return AHx(b);},EVX=()=>{let b;b=KI();Hu=Eu(b,E(66));K8=Eu(b,E(28));EBk=Eu(b,E(178));Dyj=Eu(b,E(179));AU8=Eu(b,E(180));D4J +=Eu(b,E(181));ASV=Eu(b,E(182));Ev7=Eu(b,E(183));Dw8=Eu(b,E(184));BbH=Eu(b,E(185));YS=Eu(b,E(186));BoR=Eu(b,E(187));C22=Eu(b,E(188));C6N=Eu(b,E(189));CfM=Eu(b,E(190));CEl=Eu(b,E(191));CrW=Eu(b,E(192));CSQ=Eu(b,E(193));CT$=Eu(b,E(194));CBu=Eu(b,E(195));FtD=Eu(b,E(196));Cfm=Eu(b,E(197));ChS=Eu(b,E(198));DLt=Eu(b,E(199));Efi=Eu(b,E(200));ERj=Eu(b,E(201));DEb=Eu(b,E(202));DWz=Eu(b,E(203));EGO=Eu(b,E(204));DLM=Eu(b,E(205));FiD=Eu(b,E(206));DPP=Eu(b,E(207));DLT=Eu(b,E(208));BiE=AHx(AUg(0,0,0,0));},APS=N(0); +function AWC(){let a=this;F.call(a);a.cbh=null;a.cmE=null;a.caG=0;a.b6z=null;a.b4x=null;a.cnb=0;a.ce1=null;a.bSM=null;a.cfv=null;a.b75=null;a.cnn=null;} +let Fht=a=>{return a.cnn;},Fix=(a,b)=>{let c,d,e,f;a:{B$(b);c=a;d=new Bsr;AQa();C0$(d,c.ce1);e=d;f=e;f.cnn=B$(c.cnn);f.cnb=c.cnb;f.cfv=c.cfv;f.bSM=c.bSM;f.b75=c.b75;f.cbh=c.cbh;f.cmE=c.cmE;f.caG=c.caG;f.b4x=c.b4x;f.b6z=c.b6z;e.cdR=c.cdR;e.clm=c.clm;e.cqq=c.cqq;e.cVq=1;if(b instanceof FG){d.bSM=DJ(b,d.bSM);break a;}if(b instanceof AMy){b=b;d.b75=b;d.b75=CxM(b,CEA(a),CVh(a));break a;}if(b instanceof AG3){d.cbh=b;break a;}if(b instanceof AQJ){d.cmE=b;break a;}if(b instanceof AMZ){AJo();d.caG=b!==ATI?0:1;break a;}if +(F0(b,AER)){d.b6z=b.cT8;break a;}if(b instanceof Np){d.b4x=b;break a;}if(!(b instanceof VH))break a;d.b6z=a.b4x;}return d;},B7N=a=>{let b;if(a.cnb){b=a.b75;if(b!==null)return B4I(b.b1l-1.0,b.bYc-1.0,b.b0D+2.0,b.b2e+2.0);}return a.b75;},BXu=a=>{let b;b=new CUH;b.b4j=a;return b;},Foi=a=>{return a.ce1;},CEA=a=>{return a.bSM.bHj;},CVh=a=>{return a.bSM.bHu;},DfQ=a=>{return a.cfv;},EYv=a=>{return;}; +function Bsz(){let a=this;AWC.call(a);a.cdR=null;a.clm=null;a.cqq=null;a.cVq=0;} +let CfB=null,Blf=()=>{Blf=Z(Bsz);Eej();},C0$=(a,b)=>{Blf();a.cbh=GT();BuD();a.cmE=BqR;a.caG=0;a.b6z=E4();a.b4x=E4();a.cnb=0;a.bSM=LR();a.ce1=b;},EYw=a=>{return 1;},EvV=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=b instanceof Bmz;if(!c){d=b instanceof ASR;if(!d){e=b instanceof ACL;if(!e){if(!(CoE(a,E(209))&&b instanceof Qf))a:{f=a.bSM;g=f.bHj;h=f.bHu;if(b instanceof Ym){f=b;i=a.ce1;j=Gk(f.bVn);k=f.bPs;f=CvD(i,j,k);h=h-(f.bGF-1.5);Ks(a,g,h);Ks(a,g,h+f.bGF);Ks(a,g+f.bGE,h);Ks(a,g+f.bGE,h+f.bGF);break a;}if(b instanceof SA) +{f=b;Ks(a,g,h);Ks(a,g+f.bT3,h+f.bQB);break a;}if(b instanceof ACp){f=b;Ks(a,g,h);l=g+f.bMH-1.0;g=f.bG1*2.0;Ks(a,l+g,h+f.bLB-1.0+g);break a;}if(b instanceof AAf){f=b;if(f.bMy.bGJ){Ks(a,g+BH$(f)-10.0,h+B1I(f));Ks(a,g+BB7(f)+10.0,h+BTv(f));}break a;}if(b instanceof ADr){f=b;Ks(a,g+A$N(f),h+A4i(f));Ks(a,g+A6e(f),h+A5q(f));break a;}if(b instanceof ZC){f=b;Ks(a,g-1.0,h-1.0);g=g+f.bKb-1.0;l=f.bG1*2.0;Ks(a,g+l,h+f.bKg-1.0+l);break a;}if(b instanceof AHP){f=CkT(b);Ks(a,g+f.bJ0,h+f.bLa);Ks(a,g+f.bNf,h+f.bN2);break a;}if +(b instanceof NR){Eyy(a,g,h,b);break a;}if(b instanceof AMv){DQt(a,g,h,b);break a;}if(b instanceof Bow){EaC(a,g,h,b);break a;}if(e)break a;if(d){EY4(a,g,h,b);break a;}if(F0(b,C1)){b.cC(a);break a;}if(b instanceof APT)break a;if(b instanceof BbA)break a;if(c)break a;if(b instanceof VH)break a;if(b instanceof AUq){Ks(a,g,h);break a;}f=new BV;Bp(f,BN(Dg(b)));J(f);}m=a.cqq;f=m===null?null:m.data[(b.g3()).bGO];if(f!==null){if(DEu(BXu(a))&&EYw(a))return;f.g6(b,CEA(a),CVh(a),DfQ(a),BXu(a),a.cdR);return;}f=new BV;b +=ST(Dg(b));j=BY(Dg(a));k=new S;T(k);H(Et(H(k,b),32),j);Bcm(f,CH(k));J(f);}return;}return;}b.cCE.cC(a);},Ks=(a,b,c)=>{if(!(B7N(a)!==null&&!US(B7N(a),b,c)))AM9(a.clm,b,c);},EY4=(a,b,c,d)=>{Ks(a,b,c);Ks(a,b+d.cdP,c+d.b91);},Eyy=(a,b,c,d)=>{Ks(a,b,c);Ks(a,b+AV6(d)-1.0,c+AVm(d)-1.0);},DQt=(a,b,c,d)=>{Ks(a,b,c);Ks(a,b+BnQ(d)-1.0,c+Bt$(d)-1.0);},EaC=(a,b,c,d)=>{Ks(a,b,c);Ks(a,b+d.hb()-1.0,c+d.hc()-1.0);},Eej=()=>{CfB=new CLR;},CvU=N(0),Bsr=N(Bsz),BQz=null,AQa=()=>{AQa=Z(Bsr);Eu_();},VM=(b,c)=>{let d,e;AQa();d=BQz;Nx();e +=DG(DhL,b);if(e===null){c=new Bt;b=BY(b);e=new S;T(e);H(H(e,E(210)),b);Bp(c,Q(e));J(c);}d.data[e.bGO]=c;},BvT=a=>{return a.cdR;},DXt=(a,b)=>{let c,d,e,f,g,h;c=BvT(a);d=b.ciX;BAh(c);e=document.createElementNS('http://www.w3.org/2000/svg',"g");b=CJ2(e);d=(d.dW()).dX();while(d.dY()){a:{b:{c:{d:{e:{f:{f=d.dZ();g=f.d0();h=f.d1();B52();switch(DpM.data[g.bGO]){case 1:break b;case 2:break;case 3:break f;case 4:case 5:break e;case 6:case 7:break d;case 8:case 9:case 10:case 11:case 12:case 13:break c;default:break a;}break a;}Bq$(b, +E(211),h);break a;}Bq$(b,E(212),h);break a;}Bq$(b,E(213),h);break a;}f=DoG(g);Bq$(b,f,h);break a;}Hb();f=DoG(ANo);g=CJ2(document.createElementNS('http://www.w3.org/2000/svg',Cq(f)));f=g.ccG;h=Cq(h);f.textContent=h;f=b.ccG;g=g.ccG;f.appendChild(g);}}(Rz(c)).appendChild(e);b=c.b2a;d=BKw(e);U(b,d);Bfc(c);},EPr=a=>{let b,c,d;b=BvT(a);BAh(b);c=b.b2a;d=c.bGJ;if(d>1)EJ(c,d-1|0);Bfc(b);},Fm9=(a,b)=>{let c,d,e,f,g;a:{c=BvT(a);d=b.cBZ;e=b.csv;BAh(c);f=c.b08;g=new B29;BqD();if(d!==null){AF1();if(!(!(!BG(E(13),Cuy(E(214))) +&&BO(Ih(FS(d),E(215),E(14)),E(216)))?0:1)){g.b94=d;break a;}}g.b94=E(14);}g.cTP=e;g.cN_=E(217);Ik(f,0,g);Bfc(c);},EOb=a=>{let b,c;b=BvT(a);if(b.b08.bGJ&&Cxu(b)){BAh(b);EJ(b.b08,0);Bfc(b);return;}c=new BP;Bp(c,E(218));J(c);},CoE=(a,b)=>{if(!BG(b,E(36))){if(!BG(b,E(37)))return 0;return 1;}return 1;},Eu_=()=>{AQa();Nx();BQz=K(Tf,CIc);VM(Bo(ZC),new C8o);VM(Bo(SA),new Csm);VM(Bo(AAf),new CS6);VM(Bo(ACp),new CzB);VM(Bo(Ym),new CtU);VM(Bo(ADr),new CRP);VM(Bo(NR),new ClJ);VM(Bo(AMv),new C7o);VM(Bo(AHP),new CFg);VM(Bo(APT), +new CPc);Blf();VM(Bo(AUq),CfB);},BFK=N(),B8g=null,A3o=()=>{A3o=Z(BFK);DV9();},Diy=(b,c,d,e,f)=>{let g,h,i,j,k;A3o();g=BY(e);h=new S;T(h);H(H(h,E(219)),g);Ot(Bo(BFK),Q(h));if(e!==null&&!A6V(e)){i=new CNu;i.cnP=e;e=new Dpv;e.cfV=i;e.cks=b;b=e;}j=c;h=j.coy.bQv;if(FQ(h))c=b;else{g=d;e=B1(g);B8();e=B0(e,CYX);i=XK(d,e);B3();i=C_(h,i,CO,d);g=AB8(e,g.bGN);h=My(e);k=new CrT;c=Of(e);k.bXH=i;k.csq=b;k.cMA=c;k.ch6=g;c=new Dpw;c.cwE=k;c.ckY=h;c.cum=b;c.c24=i;c.cLS=g;c.c1U=e;}h=j.b_q;if(!AA7(h)){b=KV(h.bXp);Hb();Db(b,IO, +E(220));c=C6A(b,c,BKB(h.bQv,d),h.bXz,h.b4E);}if(!AA7(f)){g=d;e=B1(g);B8();i=B0(e,BMt);h=f.bQv;g=g.bGN;Jo();b=Bqv(i,h,g,d,E(221),JJ);i=KV(f.bXp);Hb();Db(i,IO,E(222));B3();c=C4M(i,c,b,CO);}h=j.b$0;if(!AA7(h)){i=d;e=B1(i);B8();f=B0(e,CJQ);g=h.bQv;i=i.bGN;Jo();b=Bqv(f,g,i,d,E(223),JJ);e=KV(h.bXp);Hb();Db(e,IO,E(224));B3();c=CBa(e,c,b,CO);}g=j.caO;i=j.b9d;if(!(AA7(i)&&AA7(g))){h=KV(g.bXp);Hb();Db(h,IO,E(225));j=null;if(!AA7(g)){b=B1(d);B8();b=B0(b,BRW);Fs();j=CYt(g,Nu(d,AJd,null),d,b);}k=KV(i.bXp);Db(k,IO,E(226));f +=null;if(!AA7(i)){b=B1(d);B8();b=B0(b,BLt);Fs();f=CYt(i,Nu(d,AOD,null),d,b);}c=BJX(c,h,j,g.bXz,k,f,i.bXz);}return c;},DV9=()=>{B8g=U9(BkS(10));}; +function NE(){F.call(this);this.bHP=null;} +let Ex1=a=>{let b,c,d;b=JH(a);c=a.bHP.p();d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},Eon=(a,b)=>{return a.bHP.gQ(b);},Zx=(a,b)=>{a.bHP=b;},Im=a=>{return a.bHP.hE();},DDJ=a=>{return a.bHP.gy();},E1A=a=>{return a.bHP.g7();},DxW=(a,b)=>{a.bHP.hF(b);},EK9=a=>{a.bHP.hG();},BxS=(a,b)=>{a.bHP.hH(b);},Bf4=a=>{a.bHP.hI();},Fy$=a=>{return a.bHP;},BLb=a=>{a.bHP.hJ();},Flg=a=>{return a.bHP.hK();}; +function C9p(){NE.call(this);this.b1Q=null;} +let EHz=(a,b)=>{Zx(a,b);a.b1Q=DiC(V(424242));},BUr=a=>{let b=new C9p();EHz(b,a);return b;},E0j=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;if(b instanceof SA){b=b;c=a.b1Q;d=b.bT3;e=b.bQB;b=AYh(0.0,0.0,2.0,c);Vz(b,d,e);c=B1U(b);a.bHP.hP(c);}else if(b instanceof ZC){b=b;c=a.b1Q;f=b.bKb;d=b.bKg;g=Eh(b.bUL/2.0,f/2.0);h=Eh(b.bUM/2.0,d/2.0);if(g===0.0&&h===0.0){i=AYh(0.0,0.0,1.5,c);Vz(i,f,0.0);Vz(i,f,d);Vz(i,0.0,d);Vz(i,0.0,0.0);}else{i=AYh(g,0.0,1.5,c);j=f-g;Vz(i,j,0.0);BuR(i,(-1.5707963267948966),0.0,j,h,g,h);e=d-h;Vz(i, +f,e);BuR(i,0.0,1.5707963267948966,j,e,g,h);Vz(i,g,d);BuR(i,1.5707963267948966,3.141592653589793,g,e,g,h);Vz(i,0.0,h);BuR(i,3.141592653589793,4.71238898038469,g,h,g,h);}c=C6T(i);c.bG1=b.bG1;a.bHP.hP(c);}else if(b instanceof AAf){b=b;c=a.b1Q;k=b.bMy;if(!k.bGJ)c=Fj();else{c=BMv(Be(k,0),1.5,c);l=1;while(l{let c;c=DN5(b,a.b1Q);a.bHP.hP(c.czM);},EIP=(a,b)=>{return BUr(a.bHP.h2(b));},F2 +=N(DR),DsZ=N(DR); +function AVa(){Lp.call(this);this.bMQ=BH;} +let FjT=null,V6=()=>{V6=Z(AVa);EQt();},TT=b=>{let c;V6();c=new AVa;c.bMQ=b;return c;},EHp=(b,c,d,e)=>{let f,g,h,i,j,k,l,m,n;V6();if(e>=2&&e<=36){if(c!=d){a:{b:{c:{f=0;b=b;switch(Bn(b,c)){case 43:break c;case 45:break b;default:}g=c;break a;}g=c+1|0;break a;}f=1;g=c+1|0;}h=BH;i=V(e);j=BU(V(1),CY(O(4294967295, 2147483647),i));if(g!=d){while(g=48&&g<=57?g-48|0:g>=97&&g<=122?(g-97|0)+10|0:!(g>=65&&g<=90)?(-1):(g-65|0)+10|0;if(g<0){l=new Ex;b=BY(B_(b,c,d));m=new S;T(m);H(H(m,E(5)),b);Bp(l, +Q(m));J(l);}if(g>=e){l=new Ex;b=BY(B_(b,c,d));m=new S;T(m);n=H(m,E(6));BE(n,e);H(H(n,E(7)),b);Bp(l,Q(m));J(l);}if(G5(h,j)){b=new Ex;Bp(b,E(227));J(b);}h=BU(CT(i,h),V(g));if(GR(h,BH)){if(k==d&&DS(h,O(0, 2147483648))&&f)return O(0, 2147483648);l=new Ex;b=BY(B_(b,c,d));m=new S;T(m);H(H(m,E(228)),b);Bp(l,Q(m));J(l);}g=k;}if(f)h=LF(h);return h;}b=new Ex;X(b);J(b);}b=new Ex;Bp(b,E(11));J(b);}b=new Ex;l=new S;T(l);BE(H(l,E(10)),e);Bp(b,Q(l));J(b);},B8N=b=>{V6();if(b===null){b=new Ex;Bp(b,E(4));J(b);}return EHp(b,0, +b.bGI.length,10);},EtM=a=>{return Cp(a.bMQ);},Cs1=a=>{return a.bMQ;},D9x=a=>{return Id(a.bMQ);},BU0=b=>{let c;V6();c=new S;T(c);return Q(QN(c,b));},EHv=a=>{return BU0(a.bMQ);},DYB=a=>{return Bjt(a.bMQ);},Bjt=b=>{V6();return Cp(b)^Sm(b);},D8E=(a,b)=>{if(a!==b)return !(b instanceof AVa&&DS(b.bMQ,a.bMQ))?0:1;return 1;},BAK=(b,c)=>{V6();return OT(b,c);},Cny=(a,b)=>{return BAK(a.bMQ,b.bMQ);},BMn=b=>{let c,d;V6();if(D4(b,BH)){c=0;d=GD(b,32);if(D4(d,BH))c=32;else d=b;b=GD(d,16);if(DS(b,BH))b=d;else c=c|16;d=GD(b,8);if +(DS(d,BH))d=b;else c=c|8;b=GD(d,4);if(DS(b,BH))b=d;else c=c|4;d=GD(b,2);if(DS(d,BH))d=b;else c=c|2;if(D4(GD(d,1),BH))c=c|1;return (64-c|0)-1|0;}return 64;},OB=(b,c)=>{return DRL(b,c);},Fia=(b,c)=>{return E5b(b,c);},Tx=(b,c)=>{return E_A(b,c);},FqN=(a,b)=>{return Cny(a,b);},EQt=()=>{FjT=Bo(Ddp);}; +function CHI(){let a=this;F.call(a);a.dbb=0.0;a.c7$=0.0;} +let Ht=N(0),N3=N(0),Bs=a=>{Nx();return Byx;},C1=N(0),BS=(a,b,c)=>{let d,e;c=new BV;b=BY(b);d=ST(Dg(a));e=new S;T(e);b=H(H(e,E(229)),b);Bb(b,32);H(b,d);Bp(c,Q(e));J(c);},BK=a=>{return new AZQ;},B6=a=>{return null;},CZ5=N(0),Coe=(a,b)=>{let c,d,e;if(b>0){OX();c=((b&((-2147483648)>>>AOe(b)|0))<<1)-1|0;d=a;while(true){e=B4v(d,32)&c;if(e{CQ3(a,Pc(DH8()*2.81474976710656E14-1.0));},Che=()=>{let a=new B3u();Ec8(a);return a;},CQ3=(a,b)=>{a.cD8=CN(SW(b,O(3740067437, 5)),O(4294967295, 65535));},DiC=a=>{let b=new B3u();CQ3(b,a);return b;},B4v=(a,b)=>{let c;c=CN(BU(CT(a.cD8,O(3740067437, 5)),V(11)),O(4294967295, 65535));a.cD8=c;return Cp(GS(c,48-b|0));},Bad=a=>{return Id(BU(EU(V(B4v(a,26)),27),V(B4v(a,27))))*1.1102230246251565E-16;}; +function LU(){let a=this;F.call(a);a.bGE=0.0;a.bGF=0.0;} +let MO=(a,b,c)=>{let d;if(!(b<0.0)){if(!(c<0.0)){if(!(isNaN(b)?1:0)&&!(isNaN(c)?1:0)){a.bGE=b;a.bGF=c;return;}d=new Bt;X(d);J(d);}d=new Bt;X(d);J(d);}d=new Bt;X(d);J(d);},Cl=(a,b)=>{let c=new LU();MO(c,a,b);return c;},EQn=a=>{let b,c,d,e;b=a.bGE;c=a.bGF;d=new S;T(d);Bb(d,91);e=D6(d,b);Bb(e,44);Bb(D6(e,c),93);return Q(d);},Pz=a=>{return a.bGF;},N4=a=>{return a.bGE;},Fzz=(a,b)=>{return FO(a,b,b);},FO=(a,b,c)=>{if(c===0.0&&b===0.0)return a;return Cl(a.bGE+b,a.bGF+c);},JM=(a,b)=>{return Cl(BC(a.bGE,b.bGE),a.bGF ++b.bGF);},CYO=(a,b,c)=>{return Cl(ADF(a.bGE,b.bGE,c.bGE),a.bGF+b.bGF+c.bGF);},AZV=(a,b)=>{let c;c=BC(a.bGF,b.bGF);return Cl(a.bGE+b.bGE,c);},W$=(a,b,c)=>{let d,e;d=a.bGF;e=a.bGE;if(e>b&&d>c)return a;if(!(d{let c;c=new S;T(c);a.ceQ=c;a.cZD=b;},Cbh=a=>{let b=new CLP();EGr(b,a);return b;},CCm=a=>{let b;if(a.ceQ===null){b=new Dh2;X(b);J(b);}},CUg=a=>{CCm(a);return Q(a.ceQ);},Cnm=(a,b,c)=>{let d,$$je;d=a.cZD;CCm(a);a:{b:{try{if(c===null)c=K(F,1);EgU(D4w(a,a.ceQ,d,b,c));break a;}catch($$e){$$je=P($$e);if($$je instanceof Dd){b=$$je;break b;}else{throw $$e;}}}a.c_8=b;}return a;},CQo=N(Qb),EYD=(a,b)=>{return b.bJI;},CQn=N(Qb),Eg5=(a,b)=>{return b.bJI;},CQq=N(Qb),EBu=(a,b)=>{let c;c=b.clp;if(c===null)c= +b;return c.bJI;},CQp=N(Qb),CQl=N(Qb),CQk=N(Qb),EJE=(a,b)=>{return A$c(b.bJI);},CQm=N(Qb),Doz=N(PR),E2d=(a,b)=>{return a.bHv<=10000?0:1;},DoC=N(PR),Fb$=(a,b)=>{return a.bHv<=10000?0:1;},C1c=N(),BZG=null,ZH=null,CJQ=null,BLt=null,BRW=null,CYX=null,BMt=null,DK=null,Q3=null,AUo=null,B6w=null,Bhx=null,A3J=null,AHM=null,DIY=null,Cko=null,Cjr=null,DfR=null,CoF=null,CWD=null,CXL=null,A23=null,BLc=null,CJi=null,AFI=null,CyK=null,ABV=null,CJX=null,CEY=null; +let Cw8=null,BUU=null,C1j=null,CSH=null,CPr=null,BEe=null,ClH=null,Dpy=null,CeQ=null,Diz=null,CqK=null,CXp=null,C2g=null,C01=null,DmJ=null,Di2=null,CNy=null,Cxv=null,BoC=null,CeD=null,BSW=null,DdA=null,Cez=null,C_B=null,C2T=null,Ek7=null,DyN=null,BPv=null,BBw=null,CXI=null,EZz=null,DRw=null,XQ=null,CUL=null,C9I=null,Cx9=null,CXo=null,B2r=null,CYA=null,B4x=null,Cqk=null,E0Q=null,B86=null,AIS=null,CZp=null,CSt=null,Czj=null,Dai=null,Djs=null,C6d=null; +let CNG=null,Bzd=null,CDr=null,Cfa=null,BPZ=null,CGN=null,By2=null,Bmt=null,C9n=null,CI0=null,CUG=null,B9u=null,CNs=null,CvC=null,CLo=null,Dij=null,B5d=null,DdS=null,Dfz=null,Dbr=null,Jc=null,Csf=null,C2s=null,BlP=null,DaI=null,Dcv=null,Dep=null,CAH=null,Cfh=null,DhG=null,Dqh=null,C2Z=null,CbQ=null,CVC=null,B7G=null,CSk=null,CKk=null,BI7=null,CB6=null,CHP=null,BKd=null,CBf=null,CuT=null,DgE=null,Dib=null,C6U=null,Dbf=null,Cre=null,CoT=null,Dr6=null; +let C0e=null,Ci5=null,Cuq=null,C6x=null,CqN=null,Cyp=null,Cnr=null,CbP=null,Dhf=null,DpV=null,DoD=null,Cc0=null,BBi=null,Dg4=null,Czu=null,CBG=null,Z5=null,BBI=null,Cld=null,DlL=null,B_W=null,CaZ=null,Der=null,DmL=null,CZK=null,C4v=null,CF7=null,CWJ=null,AJz=null,B8V=null,Diq=null,DhN=null,CMp=null,C0Z=null,Cf2=null,DaU=null,B8=()=>{B8=Z(C1c);Et9();},Et9=()=>{let b,c,d;b=K(Cn,1);c=b.data;CV();c[0]=VB;d=BLK(b);BZG=d;d=CG(d,ACD);ZH=d;CJQ=CG(d,A4u);BLt=CG(ZH,A0r);BRW=CG(ZH,ND);CYX=CG(ZH,Bea);BMt=CG(ZH,OO);d=CG(BZG, +K_);DK=d;d=CG(d,ALv);Q3=d;AUo=CG(d,Yy);B6w=CG(Q3,A5r);Bhx=EH(Q3,Yy,K1);A3J=EH(Q3,Yy,AEC);AHM=CG(Q3,K1);DIY=CG(Q3,Pm);Cko=EH(Q3,Pm,AXu);Cjr=EH(Q3,Pm,ON);DfR=EH(Q3,Pm,ASu);CoF=EH(Q3,Pm,A5d);CWD=CG(Q3,BcE);CXL=CG(Q3,PU);A23=CG(Q3,O8);BLc=CG(Q3,AEH);CJi=NC(DK,AIJ,AIt,OO);AFI=CG(DK,K1);CyK=EH(DK,K1,Bc$);ABV=CG(DK,AUB);CJX=EH(DK,AUB,Bl6);CEY=CG(ABV,Bug);Cw8=CG(ABV,Bta);BUU=CG(ABV,Bv6);C1j=CG(ABV,BAf);CSH=CG(ABV,Zi);CPr=CG(ABV,BxB);BEe=CG(ABV,Bxy);ClH=EH(DK,V8,A1T);Dpy=NC(DK,V8,A1T,OO);CeQ=EH(DK,V8,Pm);Diz=NC(DK,V8, +Pm,OO);CqK=EH(DK,V8,A2R);CXp=NC(DK,V8,A2R,OO);C2g=EH(DK,V8,A2N);C01=NC(DK,V8,A2N,OO);DmJ=CG(DK,Pm);Di2=EH(DK,Pm,AXu);CNy=EH(DK,Pm,ASu);Cxv=EH(DK,AAR,K1);BoC=EH(DK,AAR,KU);CeD=NC(DK,AAR,KU,Btu);BSW=NC(DK,AAR,KU,ND);DdA=NC(DK,AAR,KU,BAC);Cez=CG(DK,AAN);C_B=EH(DK,AFg,AAN);C2T=EH(DK,AFg,BbG);Ek7=EH(DK,AFg,AGJ);DyN=NC(DK,AFg,AGJ,AIt);BPv=EH(DK,AF0,OO);BBw=CG(DK,AEC);CXI=CG(DK,Uk);EZz=CG(DK,A1j);DRw=EH(DK,A1j,O8);d=CG(DK,AQu);XQ=d;CUL=CG(d,K1);C9I=CG(XQ,BhR);Cx9=CG(XQ,O8);CXo=CG(XQ,X0);B2r=CG(XQ,A39);CYA=EH(XQ,A39, +Bei);B4x=CG(XQ,Wv);Cqk=CG(XQ,Bqj);E0Q=CG(DK,Bv2);B86=CG(DK,PU);d=CG(DK,A0H);AIS=d;CZp=CG(d,K1);CSt=CG(AIS,L0);Czj=EH(AIS,L0,ADu);Dai=EH(AIS,L0,ALR);Djs=NC(AIS,L0,ALR,ADu);C6d=EH(AIS,L0,AK_);CNG=NC(AIS,L0,AK_,ADu);Bzd=CG(DK,L0);CDr=EH(DK,ND,L0);Cfa=NC(DK,ND,L0,AVg);BPZ=EH(DK,L0,AVg);CGN=EH(DK,L0,X0);By2=CG(DK,O8);Bmt=CG(DK,AUE);C9n=EH(DK,AUE,PU);CI0=EH(DK,Yn,A7v);CUG=NC(DK,Yn,A7v,ND);B9u=EH(DK,Yn,ATS);CNs=NC(DK,Yn,ATS,ND);CvC=EH(DK,Yn,XC);CLo=NC(DK,Yn,XC,ND);Dij=EH(DK,Wk,PU);B5d=EH(DK,Wk,OO);d=CG(DK,A3p);DdS +=d;Dfz=CG(d,AIz);Dbr=CG(DK,Byu);d=CG(DK,A6z);Jc=d;Csf=CG(d,A2h);C2s=CG(Jc,AIJ);BlP=CG(Jc,K1);DaI=CG(Jc,ASw);Dcv=CG(Jc,ANB);Dep=CG(Jc,AQy);CAH=CG(Jc,AVc);Cfh=CG(Jc,ASD);DhG=CG(Jc,AXp);Dqh=CG(Jc,PU);C2Z=CG(Jc,AKe);CbQ=EH(Jc,PU,ND);CVC=CG(Jc,AJ$);B7G=EH(Jc,AJ$,ATg);CSk=EH(Jc,AJ$,BsH);CKk=CG(Jc,Bkv);BI7=CG(Jc,O8);CB6=EH(Jc,O8,Bba);CHP=EH(Jc,O8,A7c);BKd=CG(Jc,AIB);CBf=CG(Jc,AWV);CuT=EH(Jc,AWV,ND);DgE=CG(Jc,AUn);Dib=CG(Jc,AEf);C6U=CG(Jc,AOh);Dbf=EH(Jc,AEf,ND);Cre=CG(Jc,X0);CoT=EH(DK,ON,AUS);Dr6=EH(DK,ON,AP5);C0e= +EH(DK,ON,AQO);Ci5=EH(DK,ON,ASg);Cuq=EH(DK,ON,Bi9);C6x=EH(DK,ON,APP);CqN=EH(DK,ON,Bk3);Cyp=EH(DK,ON,AXT);Cnr=EH(DK,ON,Bp9);CbP=EH(DK,ON,BnZ);Dhf=EH(DK,ON,AW2);DpV=EH(DK,ON,BfX);DoD=EH(DK,ON,BvD);Cc0=CG(DK,UH);BBi=EH(DK,AC9,UH);Dg4=NC(DK,AC9,UH,PU);Czu=NC(DK,AC9,UH,AAt);CBG=CG(DK,Nh);d=CG(DK,A9y);Z5=d;BBI=CG(d,K1);Cld=CG(Z5,Bpi);DlL=CG(Z5,AVg);B_W=CG(Z5,O8);CaZ=CG(Z5,BfQ);Der=CG(Z5,Wv);DmL=EH(DK,PG,Bj9);CZK=EH(DK,PG,Wk);C4v=EH(DK,PG,ASf);CF7=EH(DK,PG,AQ6);CWJ=EH(DK,PG,AQz);d=CG(DK,A_r);AJz=d;B8V=CG(d,K1);Diq= +CG(AJz,L0);DhN=EH(AJz,L0,ADu);CMp=EH(AJz,L0,ALR);C0Z=NC(AJz,L0,ALR,ADu);Cf2=EH(AJz,L0,AK_);DaU=NC(AJz,L0,AK_,ADu);},AJe=N(Bx),Ua=null,RA=null,Wa=null,AWv=null,Ry=null,AHH=null,ByX=null,AIK=null,BhV=null,Bsf=null,BiM=null; +let Brw=null,BSY=null,ANM=null,Bc2=null,AYa=null,BbY=null,Bkx=null,Bdx=null,AHv=null,A8g=null,AJa=null,ALi=null,AKn=null,Byc=null,AAX=null,Bo8=null,Bpr=null,AL3=null,A6Q=null,AMO=null,AMd=null,BjT=null,BmE=null,ALo=null,AKW=null,A_u=null,BAO=null,LK=null,AZL=null,EyO=null,F8=()=>{F8=Z(AJe);Fgq();},Eqq=(a,b,c)=>{F8();Ct(a,b,c);},GI=(a,b)=>{let c=new AJe();Eqq(c,a,b);return c;},BcZ=b=>{let c,d,e,f;F8();c=0;while(c=5&&IF(E(230),b,e)) +{f=e+5|0;if(f>=b.bL())return AZL;return Foz(b,f);}return AZL;}c=c+1|0;}return AZL;},Foz=(b,c)=>{F8();switch(LG(b.u(c))){case 98:if(!IF(E(231),b,c)){if(IF(E(232),b,c))return Fv(Bpr);return Fv(LK);}return Fv(Bsf);case 99:if(!IF(E(233),b,c)){if(!IF(E(234),b,c)){if(!IF(E(235),b,c)){if(!IF(E(236),b,c)){if(IF(E(237),b,c))return Fv(BAO);return Fv(LK);}return Fv(BmE);}return Fv(A8g);}return Fv(AYa);}return Fv(ALo);case 100:if(!IF(E(238),b,c)){if(IF(E(239),b,c))return Fv(Bdx);return Fv(LK);}return Fv(Brw);case 101:if +(IF(E(240),b,c))return Fv(AMO);return Fv(LK);case 102:if(!IF(E(241),b,c)){if(IF(E(242),b,c))return Fv(BjT);return Fv(LK);}return Fv(Bc2);case 103:if(!IF(E(243),b,c)){if(IF(E(244),b,c))return Fv(Bo8);return Fv(LK);}return Fv(AHv);case 104:if(IF(E(245),b,c))return Fv(A6Q);return Fv(LK);case 105:case 107:case 111:case 113:case 116:case 118:case 120:break;case 106:if(IF(E(246),b,c))return Fv(AAX);return Fv(LK);case 108:if(IF(E(247),b,c))return Fv(Bkx);return Fv(LK);case 109:if(!IF(E(248),b,c)){if(IF(E(249),b,c))return Fv(ALi);return Fv(LK);}return Fv(BbY);case 110:if +(IF(E(250),b,c))return Fv(AJa);return Fv(LK);case 112:if(!IF(E(251),b,c)){if(IF(E(252),b,c))return Fv(AKW);return Fv(LK);}return Fv(AHv);case 114:if(IF(E(253),b,c))return Fv(AMd);return Fv(LK);case 115:if(!IF(E(254),b,c)){if(IF(E(255),b,c))return Fv(A_u);return Fv(LK);}return Fv(ANM);case 117:if(IF(E(256),b,c))return De9(Ua,BB(AJe,[RA,Wa,AWv,Ry,AHH,ByX,AIK,BhV,A_u]));return Fv(LK);case 119:if(!IF(E(257),b,c)){if(IF(E(258),b,c))return Fv(AKn);return Fv(LK);}return Fv(Byc);case 121:if(IF(E(259),b,c))return Fv(AL3);return Fv(LK);default:}return Fv(LK);},IF +=(b,c,d)=>{let e,f,g;F8();e=b.bGI.length;if((d+e|0)<=c.bL()){f=0;while(f=65&&g<=90)g=(g+32|0)&65535;if(g!=Bn(b,f))return 0;f=f+1|0;}return 1;}return 0;},N$=a=>{F8();if(a!==Ua){if(a!==RA){if(a!==Wa){if(a!==AWv){if(a!==Ry){if(a!==AHH){if(a!==ALi){if(a!==AKn){if(a!==AHv){if(a!==ANM){if(a!==AL3){if(a!==A6Q){if(a!==AAX){if(a!==AIK){if(a!==AJa){if(a!==AMO){if(a!==AMd){if(a!==A8g){if(a!==ALo){if(a===AKW){CV();return A3p;}CV();return ALv;}CV();return AUB;}CV();return AQu;}CV();return BtS;}CV();return Uk;}CV();return AUE;}CV();return A9y;}CV();return AW3;}CV();return AOo;}CV();return AOo;}CV();return Bve;}CV();return AQu;}CV();return A_r;}CV();return A0H;}CV();return AFg;}CV();return ALv;}CV();return Yn;}CV();return AAR;}CV();return AC9;}CV();return A6z;},Fdb +=()=>{let b,c;F8();b=K(AJe,39);c=b.data;c[0]=Ua;c[1]=RA;c[2]=Wa;c[3]=AWv;c[4]=Ry;c[5]=AHH;c[6]=ByX;c[7]=AIK;c[8]=BhV;c[9]=Bsf;c[10]=BiM;c[11]=Brw;c[12]=BSY;c[13]=ANM;c[14]=Bc2;c[15]=AYa;c[16]=BbY;c[17]=Bkx;c[18]=Bdx;c[19]=AHv;c[20]=A8g;c[21]=AJa;c[22]=ALi;c[23]=AKn;c[24]=Byc;c[25]=AAX;c[26]=Bo8;c[27]=Bpr;c[28]=AL3;c[29]=A6Q;c[30]=AMO;c[31]=AMd;c[32]=BjT;c[33]=BmE;c[34]=ALo;c[35]=AKW;c[36]=A_u;c[37]=BAO;c[38]=LK;return b;},Fgq=()=>{Ua=GI(E(260),0);RA=GI(E(261),1);Wa=GI(E(262),2);AWv=GI(E(263),3);Ry=GI(E(264), +4);AHH=GI(E(265),5);ByX=GI(E(266),6);AIK=GI(E(267),7);BhV=GI(E(268),8);Bsf=GI(E(269),9);BiM=GI(E(270),10);Brw=GI(E(271),11);BSY=GI(E(272),12);ANM=GI(E(273),13);Bc2=GI(E(274),14);AYa=GI(E(275),15);BbY=GI(E(276),16);Bkx=GI(E(140),17);Bdx=GI(E(277),18);AHv=GI(E(278),19);A8g=GI(E(279),20);AJa=GI(E(280),21);ALi=GI(E(281),22);AKn=GI(E(282),23);Byc=GI(E(283),24);AAX=GI(E(284),25);Bo8=GI(E(285),26);Bpr=GI(E(286),27);AL3=GI(E(287),28);A6Q=GI(E(288),29);AMO=GI(E(289),30);AMd=GI(E(290),31);BjT=GI(E(291),32);BmE=GI(E(292), +33);ALo=GI(E(293),34);AKW=GI(E(294),35);A_u=GI(E(295),36);BAO=GI(E(296),37);LK=GI(E(297),38);EyO=Fdb();AZL=PZ(Bo(AJe));}; +function ADV(){let a=this;F.call(a);a.bLh=null;a.bKx=null;} +let AOY=(a,b,c)=>{a.bLh=b;a.bKx=c;},AVJ=(a,b)=>{let c=new ADV();AOY(c,a,b);return c;},BLK=b=>{let c,d,e,f;b=b.data;Btj();c=DmS;d=b.length;e=0;while(e{return BLK(K(Cn,0));},AIV=(a,b)=>{let c,d,e,f,g,h,i;c=new ADV;d=a.bLh;ASL();if(b!==null){e=new Vl;f=null;g=new S;JP(g,b.bGI.length);h=0;while(h{let c;if(b!==null&&(BPh(b)).dV()){F_();c=T0(b,A6A);if(c.dV()){b=c.dX();while(b.dY()){a=AIV(a,b.dZ());}return a;}return a;}return a;},AHZ=(a,b)=>{let c,d;if(b!==null&&(BPh(b)).dV()){F_();c=T0(b,A6A);if(c.dV()){b=a.bLh;CV();d=AVJ(ATd(b,Yj(Nh)),a.bKx);b=c.dX();while(b.dY()){d=AIV(d,b.dZ());}return d;}return a;}return a;},AWo=(a,b)=>{if(!A6V(b.ckd)){b=b.ckd.dX();while(b.dY()){a=AIV(a,b.dZ());}return a;}return a;},Q1=(a,b)=>{return AVJ(a.bLh,BU2(b,a.bKx.bOH));},Bva=a=>{return AVJ(a.bLh,BU2(a.bKx.bQ4,1));},CG +=(a,b)=>{return AVJ(ATd(a.bLh,Yj(b)),a.bKx);},EH=(a,b,c)=>{let d,e;d=new ADV;e=a.bLh;b=Yj(b);c=Yj(c);AOY(d,BTk(e,Bf0(b,c)>=0?BB(Vl,[c,b]):BB(Vl,[b,c])),a.bKx);return d;},NC=(a,b,c,d)=>{let e,f,g,h,i,j,k;e=new ADV;f=a.bLh;b=Yj(b);c=Yj(c);d=Yj(d);g=K(Vl,3);h=g.data;h[0]=b;h[1]=c;h[2]=d;Bcu(g,AM7());i=1;j=1;while(true){k=h.length;if(j>=k)break;if(Bf0(h[i-1|0],h[j])){k=i+1|0;h[i]=h[j];i=k;}j=j+1|0;}if(i!=k)g=MK(g,i);AOY(e,BTk(f,g),a.bKx);return e;},AIf=(a,b)=>{let c,d,e;b=b.data;c=a.bLh;d=b.length;e=0;while(e{let c,d,e,f;c=a.bLh;d=b.bLh;if(d!==null&&!ClD(d))c=ClD(c)?d:BTk(c,d.bLI);e=DT(a.bKx.bQ4,b.bKx.bQ4);f=!(!a.bKx.bOH&&!b.bKx.bOH)?1:0;return AVJ(c,BU2(e,f));},B5Q=(a,b)=>{let c,d,e;if(b instanceof ADV){c=b;b=a.bLh;d=c.bLh;e=!(d instanceof AYz)?0:YT(b.bLI,d.bLI);a:{b:{if(e){b=a.bKx;c=c.bKx;if(!(c instanceof Bka))e=0;else{c=c;e=!(b.bQ4==c.bQ4&&b.bOH==c.bOH)?0:1;}if(e)break b;}e=0;break a;}e=1;}return e;}return 0;},DG8=a=>{let b,c;b=ME(a.bLh.bLI)*31|0;c +=a.bKx;return b+((c.bQ4*2|0)+(!c.bOH?0:1)|0)|0;},DU9=a=>{let b,c,d;b=BY(a.bLh);c=BY(a.bKx);d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},RY=N(Bx),AGY=null,Vc=null,Lv=null,Ov=null,V0=null,BgI=null,CK=null,Jm=null,H1=null,ACK=null,AVV=null,BnM=null,A5D=null,A2r=null,Cz=null,ABJ=null,Bvs=null,Bjg=null,A0L=null,Pt=null,BFm=null,BJ8=null,Xs=null,BsX=null,BRx=null,A3Y=null,BjI=null,A5N=null,ASQ=null,B2I=null,Crr=null; +let B9=()=>{B9=Z(RY);DMQ();},D$2=(a,b,c)=>{B9();Ct(a,b,c);},Ip=(a,b)=>{let c=new RY();D$2(c,a,b);return c;},DMQ=()=>{let b,c,d;AGY=Ip(E(299),0);Vc=Ip(E(300),1);Lv=Ip(E(301),2);Ov=Ip(E(302),3);V0=Ip(E(303),4);BgI=Ip(E(304),5);CK=Ip(E(305),6);Jm=Ip(E(306),7);H1=Ip(E(307),8);ACK=Ip(E(308),9);AVV=Ip(E(309),10);BnM=Ip(E(310),11);A5D=Ip(E(311),12);A2r=Ip(E(312),13);Cz=Ip(E(313),14);ABJ=Ip(E(314),15);Bvs=Ip(E(315),16);Bjg=Ip(E(316),17);A0L=Ip(E(317),18);Pt=Ip(E(318),19);BFm=Ip(E(319),20);BJ8=Ip(E(320),21);Xs=Ip(E(321), +22);BsX=Ip(E(322),23);BRx=Ip(E(323),24);A3Y=Ip(E(324),25);BjI=Ip(E(325),26);A5N=Ip(E(326),27);ASQ=Ip(E(327),28);b=Ip(E(328),29);B2I=b;c=K(RY,30);d=c.data;d[0]=AGY;d[1]=Vc;d[2]=Lv;d[3]=Ov;d[4]=V0;d[5]=BgI;d[6]=CK;d[7]=Jm;d[8]=H1;d[9]=ACK;d[10]=AVV;d[11]=BnM;d[12]=A5D;d[13]=A2r;d[14]=Cz;d[15]=ABJ;d[16]=Bvs;d[17]=Bjg;d[18]=A0L;d[19]=Pt;d[20]=BFm;d[21]=BJ8;d[22]=Xs;d[23]=BsX;d[24]=BRx;d[25]=A3Y;d[26]=BjI;d[27]=A5N;d[28]=ASQ;d[29]=b;Crr=c;}; +function BuT(){let a=this;F.call(a);a.bJX=0;a.bJz=0;a.bJT=0;a.bSl=0;} +let E_Y=null,EGY=null,EY2=null,EtC=null,BVr=null,AG1=()=>{AG1=Z(BuT);D4A();},E9h=(a,b,c,d)=>{AG1();CKc(a,b,c,d,255);},Oe=(a,b,c)=>{let d=new BuT();E9h(d,a,b,c);return d;},CKc=(a,b,c,d,e)=>{AG1();a.bJX=b&255;a.bJz=c&255;a.bJT=d&255;a.bSl=e&255;},AUg=(a,b,c,d)=>{let e=new BuT();CKc(e,a,b,c,d);return e;},Cv=b=>{AG1();return AUg(b>>16&255,b>>8&255,b&255,255);},Bod=a=>{return (a.bSl&255)<<24|(a.bJX&255)<<16|(a.bJz&255)<<8|a.bJT&255;},Btn=(b,c)=>{AG1();Bb(b,BVr.data[c>>4&15]);Bb(b,BVr.data[c&15]);},R8=b=>{let c;AG1();c +=K(F,1);c.data[0]=CL(b&16777215);return Jv(E(329),c);},D4A=()=>{E_Y=Oe(0,0,0);EGY=Oe(255,255,255);EY2=Oe(255,0,0);EtC=Oe(0,0,255);BVr=Q5(E(330));},DYf=N(),CwX=N(),BCu=null,Cdl=null,Bn$=null,BrZ=null,Dk4=null,Dc4=null,CQT=null,CT8=0,ARy=()=>{ARy=Z(CwX);D0y();},D0y=()=>{let b;BCu=new WeakMap();Cdl=!(typeof WeakRef!=='undefined'?1:0)?null:new WeakMap();Bn$=!(typeof WeakRef!=='undefined'?1:0)?null:new Map();BrZ=!(typeof WeakRef!=='undefined'?1:0)?null:new Map();if(Bn$===null)b=null;else{b=new BBC;b=new FinalizationRegistry(ZN(UU(b), +"accept"));}Dc4=b;if(BrZ===null)b=null;else{b=new BBB;b=new FinalizationRegistry(ZN(UU(b),"accept"));}CQT=b;},DW8=N(),B7P=N(),C6l=null,ALd=()=>{ALd=Z(B7P);DL3();},KI=()=>{ALd();return C6l;},Eu=(a,b)=>{let c;c=A09(a,b);if(c===null){Go();return K8;}return c;},DV=(a,b)=>{let c;c=A09(a,b);if(c===null){b=new J1;Bp(b,E(331));J(b);}return c;},A09=(a,b)=>{let c,d,e,f,g,h,i,j;if(BO(b,E(332)))b=CC(b,1);if(!BG(b,E(333))&&!BG(b,E(334))){if(!BG(b,E(335))){if(!BG(b,E(333))){c=ASr(a,b);if(c===null){if(BO(b,E(336))){d=(IW(CC(b, +1),E(82))).data;e=d.length;f=C5(e,2);if(!(f&&e!=3)){g=ASr(a,d[0]);h=ASr(a,d[1]);if(!f&&g!==null&&h!==null)return C$z(Xv(g),Xv(h),null);i=ASr(a,d[2]);if(i!==null)return C$z(Xv(g),Xv(h),Xv(i));}}f=0;while(f{let c,d,e,f,g,h,i,j,k;if(BO(b,E(332)))b=CC(b,1);a:{c=b.bGI.length;if +(c==1){d=ASU(Bn(b,0));if(d<0)break a;e=d<<4|d;return Cv(e<<16|e<<8|e);}if(c==3){f=ASU(Bn(b,0));g=ASU(Bn(b,1));h=ASU(Bn(b,2));if(f>=0&&g>=0&&h>=0)return Oe(f<<4|f,g<<4|g,h<<4|h);}else{if(c==6){ALd();f=ALt(b,0);g=ALt(b,2);h=ALt(b,4);i=(f|g|h)<0?(-1):f<<16|g<<8|h;if(i<0)break a;return Cv((-16777216)|i);}if(c==8){f=ALt(b,0);g=ALt(b,2);h=ALt(b,4);j=ALt(b,6);if(f>=0&&g>=0&&h>=0&&j>=0)return AUg(f,g,h,j);}}}A9I();k=B6c;f=0;b=b;j=b.bGI.length;b:{c:{while(f{ALd();if(b>=48&&b<=57)return b-48|0;if(b>=97&&b<=102)return (b-97|0)+10|0;if(b>=65&&b<=70)return (b-65|0)+10|0;return (-1);},ALt=(b,c)=>{let d,e;ALd();b=b;d=ASU(Bn(b,c));e=ASU(Bn(b,c+1|0));return (d|e)<0?(-1):d<<4|e;},DL3=()=>{let b;b=new B7P;ALd();C6l=b;}; +function AL9(){let a=this;Np.call(a);a.bJI=null;a.clp=null;a.cly=null;} +let BSD=0,AFe=()=>{AFe=Z(AL9);FwW();},DOs=a=>{let b,c,d,e,f,g,h,i;b=a.clp===null?0:1;c=new S;T(c);if(b)L(c,E(337));d=a.bJI;b=d.bJX;e=d.bJz;f=d.bJT;g=d.bSl;h=new S;T(h);d=H(h,E(338));BE(d,b);i=H(d,E(339));BE(i,e);d=H(i,E(340));BE(d,f);d=H(d,E(341));BE(d,g);Bb(d,93);L(c,Q(h));L(c,E(342));BE(c,a.bJI.bSl);if(BrI(a))L(c,E(343));d=a.cly;AVh();if(d!==A0V){L(c,E(344));H(c,a.cly);}return Q(c);},B2V=a=>{let b,c,d,e,f;if(!BrI(a)){b=a.bJI;c=b.bJX;d=b.bJz;e=b.bJT;f=b.bSl;if(f!=255)return Jv(E(345),BB(F,[CL(f),CL(c),CL(d), +CL(e)]));return Jv(E(346),BB(F,[CL(c),CL(d),CL(e)]));}return E(333);},DDB=(a,b)=>{let c,d;if(b instanceof AL9){c=a.bJI;b=b.bJI;if(c===b)d=1;else if(!(b!==null&&Dg(c)===Dg(b)))d=0;else{b=b;d=!(c.bJX==b.bJX&&c.bJz==b.bJz&&c.bJT==b.bJT&&c.bSl==b.bSl)?0:1;}return d;}return 0;},Eja=a=>{return Bod(a.bJI);},DzH=(a,b)=>{return a;},Dxa=(a,b)=>{return a;},EpX=a=>{let b,c,d,e,f,g,h,i,j;b=a.bJI;c=b.bJX;d=b.bJz;e=b.bJT;f=Hr(3);g=f.data;g[0]=c/256.0;g[1]=d/256.0;g[2]=e/256.0;f=(CtL(f)).data;h=f[0];i=f[1];j=(f[2]+50.0)%100.0;f +=(CqL(Gh([h,i,j+0.25*(50.0-j)]))).data;return AHx(Oe(ARC(f[0]),ARC(f[1]),ARC(f[2])));},D6_=a=>{let b,c;Bxb();b=BqF;c=a.bJI;if(b===b)b=Oe(c.bJX,c.bJz,c.bJT);else if(b===BqP)b=Oe(c.bJX,c.bJT,c.bJz);else if(b===BuS)b=Oe(c.bJz,c.bJX,c.bJT);else if(b===Bt8)b=Oe(c.bJz,c.bJT,c.bJX);else if(b===Bv0)b=Oe(c.bJT,c.bJX,c.bJz);else if(b===B2s)b=Oe(c.bJT,c.bJz,c.bJX);else{b=new BP;X(b);J(b);}return AHx(Oe(255-b.bJX|0,255-b.bJz|0,255-b.bJT|0));},DwV=a=>{return DrG(a.bJI)>=128?0:1;},BrI=a=>{return a.bJI.bSl?0:1;},AHx=b=>{let c, +d;AFe();c=new AL9;d=null;AVh();C2C(c,b,d,A0V);return c;},C2C=(a,b,c,d)=>{AFe();a.bJI=b;a.clp=c;a.cly=d;},C3d=(a,b,c)=>{let d=new AL9();C2C(d,a,b,c);return d;},DyW=(a,b)=>{if(BrI(a))return a.bJI;return b.iW(a);},B7y=(b,c,d)=>{AFe();return c+(d-c)*b;},FqP=a=>{let b;b=(255-(A$c(a.bJI)).bJz|0)<=127?0:255;return AHx(Oe(b,b,b));},AFv=(a,b)=>{return C3d(a.bJI,b,a.cly);},FwW=()=>{BSD=0;},C$p=N(0); +function Xm(){F.call(this);this.bG1=0.0;} +let FzB=(a,b)=>{a.bG1=b;},BpC=N(0),A2u=N(0); +function ZC(){let a=this;Xm.call(a);a.bKb=0.0;a.bKg=0.0;a.bUL=0.0;a.bUM=0.0;a.b4S=null;a.b77=null;a.bZE=0;a.bZD=0;} +let Dhp=(a,b,c)=>{return AOr(a.bKb,a.bKg,a.bUL,a.bUM,b,a.bZE,a.bZD,c);},Ge=(a,b)=>{if(b===0.0&&a.bUL===0.0&&a.bUM===0.0)return a;return AOr(a.bKb,a.bKg,b,b,a.b4S,a.bZE,a.bZD,a.b77);},Cav=(a,b)=>{let c;if(!a.bZE&&!a.bZD){if(b!==0.0){c=EE();Ec(c,b,0.0);B2(c,a.bKb-b,0.0);B2(c,a.bKb,b);B2(c,a.bKb,a.bKg-b);B2(c,a.bKb-b,a.bKg);B2(c,b,a.bKg);B2(c,0.0,a.bKg-b);B2(c,0.0,b);B2(c,b,0.0);return c;}return a;}c=new BP;X(c);J(c);},Ba_=a=>{return AOr(a.bKb,a.bKg,a.bUL,a.bUM,a.b4S,1,a.bZD,a.b77);},Buv=a=>{return AOr(a.bKb,a.bKg, +a.bUL,a.bUM,a.b4S,a.bZE,1,a.b77);},C2=(b,c)=>{return AOr(b,c,0.0,0.0,null,0,0,null);},M6=b=>{return C2(b.bGE,b.bGF);},BBY=(a,b)=>{let c,d;if(b!==0.0){c=EE();d=b/2.0;Ec(c,d,0.0);B2(c,a.bKb-d,0.0);Mk(c,d,d,0.0,0.0,1.0,a.bKb,d);B2(c,a.bKb,a.bKg);B2(c,0.0,a.bKg);B2(c,0.0,d);Mk(c,d,d,0.0,0.0,1.0,d,0.0);return c;}return a;},Fdo=(a,b,c,d,e,f,g,h,i)=>{a.b4S=null;a.b77=null;if(c!==0.0){if(b===0.0){f=new Bt;i=new S;T(i);D6(H(i,E(347)),b);Bp(f,Q(i));J(f);}a.bZE=g;a.bZD=h;a.bKb=b;a.bKg=c;a.bUL=d;a.bUM=e;return;}f=new Bt;i +=new S;T(i);D6(H(i,E(348)),c);Bp(f,Q(i));J(f);},AOr=(a,b,c,d,e,f,g,h)=>{let i=new ZC();Fdo(i,a,b,c,d,e,f,g,h);return i;},Emh=(a,b,c)=>{let d,e;ML();if(c===Nb){d=NX(2.0,a.bKg);e=b;AW7(e,d);d=BdZ(e,BM(a.bKb-2.0));e=NX(2.0,a.bKg);AW7(d,e);}if(c===AKg){c=NX(a.bKb,2.0);d=b;AW7(d,c);b=BdZ(d,BW(a.bKg-2.0));c=NX(a.bKb,2.0);AW7(b,c);}},DPm=(a,b)=>{ML();if(b!==Nb){if(b!==AKg){b=new Bt;X(b);J(b);}return a.bZD;}return a.bZE;},EFN=a=>{Nx();return Bvn;},Tf=N(0),C8o=N(),Bqd=(b,c,d)=>{let e;e=Cwp(d);if(e!==null)A8l(b,AJN(e, +c));else A8l(b,E(71));},AVL=(b,c,d)=>{let e;e=Bs1(d);if(e!==null)BXH(b,AJN(e,c));else BXH(b,E(71));},Eq4=(a,b,c,d,e,f,g)=>{let h,i,j,k,l,m,n,o;a:{b=b;g=g;h=b.bUL;i=b.bUM;j=b.bKb;k=b.bKg;Bqd(g,e,f);AVL(g,e,f);e=f;AXM(g,(S9(e)).bJw,AS4(S9(e)));b=APE(e);if(b!==null){l=b.b1l;m=l+b.b0D;n=b.bYc+b.b2e;o=BC(c,l);l=BC(d,b.bYc);j=Eh(c+j,m)-o;k=Eh(d+k,n)-l;if(!(!(j<=0.0)&&!(k<=0.0)))break a;c=o;d=l;}h=h/2.0;m=i/2.0;f=document.createElementNS('http://www.w3.org/2000/svg',"rect");f.setAttribute("x",Cq(Gr(g,c)));f.setAttribute("y", +Cq(Gr(g,d)));f.setAttribute("width",Cq(Gr(g,j)));f.setAttribute("height",Cq(Gr(g,k)));if(h>0.0)f.setAttribute("rx",Cq(Gr(g,h)));if(m>0.0)f.setAttribute("ry",Cq(Gr(g,m)));A1R(g,f);(Rz(g)).appendChild(f);}}; +function SA(){let a=this;Xm.call(a);a.bT3=0.0;a.bQB=0.0;} +let BDe=(b,c)=>{return EB(c.bGK-b.bGK,c.bGL-b.bGL);},A$K=(a,b,c)=>{a.bT3=b;a.bQB=c;},EB=(a,b)=>{let c=new SA();A$K(c,a,b);return c;},BtI=(a,b)=>{let c,d;if(b!==0.0){c=U8(b);d=H4(BA(a.bT3,a.bQB),c);return EB(d.bGK,d.bGL);}return a;},DE=b=>{return EB(b,0.0);},Fg=b=>{return EB(0.0,b);},Dnv=a=>{let b,c;b=a.bT3;b=b*b;c=a.bQB;return Gs(b+c*c);},DWZ=a=>{Nx();return Bnt;},Csm=N(),CNq=(b,c)=>{let d;d=b.b1l;return BC(d,Eh(c,d+b.b0D));},Bw8=(b,c)=>{let d;d=b.bYc;return BC(d,Eh(c,d+b.b2e));},E$b=(a,b,c,d,e,f,g)=>{let h, +i,j,k;a:{b=b;g=g;h=c+b.bT3;i=d+b.bQB;b=f;j=APE(b);if(j!==null){if(!US(j,c,d)&&!US(j,h,i)){if(c!==h)break a;d=Bw8(j,d);i=Bw8(j,i);if(d===i)break a;}else if(!(US(j,c,d)&&US(j,h,i))){k=QE(c,h);if(k&&d!==i)break a;if(d===i){c=CNq(j,c);h=CNq(j,h);}else if(!k){d=Bw8(j,d);i=Bw8(j,i);}}}AVL(g,e,f);AXM(g,(S9(b)).bJw,AS4(S9(b)));CO7(g,c,d,h,i);}}; +function AAf(){let a=this;Xm.call(a);a.bMy=null;a.ddC=null;a.b1E=null;a.cwb=null;} +let Eg6=a=>{B6G(a,null);},Fj=()=>{let a=new AAf();Eg6(a);return a;},FrI=(a,b)=>{let c,d;B6G(a,null);Ea(a.bMy,b);c=Br(a.bMy);while(Bq(c)){d=Bm(c);B$G(a,d.bGK,d.bGL);}},Bqo=a=>{let b=new AAf();FrI(b,a);return b;},B6G=(a,b)=>{a.bMy=Bk();a.b1E=ALg(0);a.ddC=b;},Yd=a=>{let b=new AAf();B6G(b,a);return b;},BV_=(a,b)=>{return Be(a.bMy,b);},BQ=(a,b,c)=>{let d,e;d=a.bMy;e=BA(b,c);U(d,e);B$G(a,b,c);},ADG=(a,b)=>{BQ(a,b.bGK,b.bGL);},B$G=(a,b,c)=>{a.b1E=V7(a.b1E,b,c);},Xz=(a,b,c)=>{let d,e,f;d=Fj();e=Br(a.bMy);while(Bq(e)) +{f=Bm(e);BQ(d,f.bGK+b,f.bGL+c);}return d;},ADm=(a,b)=>{let c,d,e;if(b!==0.0){c=U8(b);d=0;while(true){e=a.bMy;if(d>=e.bGJ)break;GJ(e,d,H4(Be(e,d),c));d=d+1|0;}return;}},BH$=a=>{return a.b1E.bJ0;},B1I=a=>{return a.b1E.bLa;},BB7=a=>{return a.b1E.bNf;},BTv=a=>{return a.b1E.bN2;},E1P=a=>{Nx();return Bts;},CS6=N(),Er0=(a,b,c,d,e,f,g)=>{let h,i,j,k,l;b=b;g=g;h=b.bMy;i=Hr(h.bGJ*2|0).data;j=0;b=Br(h);while(Bq(b)){h=Bm(b);k=j+1|0;i[j]=c+h.bGK;j=k+1|0;i[k]=d+h.bGL;}a:{b:{b=f;h=APE(b);if(h!==null){j=0;l=i.length;while(true) +{if(j>=l)break b;if(!US(h,i[j],i[j+1|0]))break;j=j+2|0;}break a;}}Bqd(g,e,f);AVL(g,e,f);AXM(g,(S9(b)).bJw,AS4(S9(b)));e=document.createElementNS('http://www.w3.org/2000/svg',"polygon");h=new S;T(h);j=0;l=i.length;while(j0)L(h,E(344));L(h,Gr(g,i[j]));L(h,E(349));L(h,Gr(g,i[j+1|0]));j=j+2|0;}f=Q(h);e.setAttribute("points",Cq(f));A1R(g,e);(Rz(g)).appendChild(e);}}; +function ACp(){let a=this;Xm.call(a);a.bMH=0.0;a.bLB=0.0;a.c2L=0.0;a.cM$=0.0;} +let Fz=(b,c)=>{return ALP(b,c,0.0,0.0);},EPm=(a,b,c,d,e)=>{a.bMH=b;a.bLB=c;a.c2L=d;a.cM$=e;},ALP=(a,b,c,d)=>{let e=new ACp();EPm(e,a,b,c,d);return e;},Dk3=(a,b)=>{b=b/a.bLB*2.0-1.0;return (1.0-Gs(1.0-b*b))*a.bMH/2.0;},Cwk=(a,b)=>{b=b/a.bLB*2.0-1.0;return (1.0+Gs(1.0-b*b))*a.bMH/2.0;},CX9=(a,b)=>{let c,d;c=a.bMH/2.0;c=c+c*G4(b);d=a.bLB/2.0;return BA(c,d+d*H0(b));},D7P=a=>{Nx();return Bsl;},CzB=N(),DSz=(a,b,c,d,e,f,g)=>{let h,i,j,k,l;a:{b=b;g=g;h=b.bMH;i=b.bLB;j=f;b=APE(j);if(b!==null){if(!US(b,c,d))break a;if +(!US(b,c+h,d+i))break a;}Bqd(g,e,f);AVL(g,e,f);AXM(g,(S9(j)).bJw,AS4(S9(j)));k=h/2.0;l=c+k;c=i/2.0;d=d+c;if(EL(k-c)<0.01){f=document.createElementNS('http://www.w3.org/2000/svg',"circle");f.setAttribute("cx",Cq(Gr(g,l)));f.setAttribute("cy",Cq(Gr(g,d)));f.setAttribute("r",Cq(Gr(g,k)));A1R(g,f);(Rz(g)).appendChild(f);}else{f=document.createElementNS('http://www.w3.org/2000/svg',"ellipse");f.setAttribute("cx",Cq(Gr(g,l)));f.setAttribute("cy",Cq(Gr(g,d)));f.setAttribute("rx",Cq(Gr(g,k)));f.setAttribute("ry",Cq(Gr(g, +c)));A1R(g,f);(Rz(g)).appendChild(f);}}}; +function Ym(){let a=this;F.call(a);a.bPs=null;a.bVn=null;a.c0P=0;} +let CR5=0,BgU=()=>{BgU=Z(Ym);EIo();},D5J=(a,b,c,d)=>{BgU();if(Df()&&!CR5&&Eq(b,9)!=(-1)){b=new C4;X(b);J(b);}a.bPs=KG(KG(b,57600,8629),57603,9166);a.bVn=c;a.c0P=d;},DrP=(a,b,c)=>{let d=new Ym();D5J(d,a,b,c);return d;},N1=(b,c)=>{BgU();return DrP(b,c,0);},DA4=a=>{return a.bPs;},AIj=(a,b)=>{return b.jm(Gk(a.bVn),a.bPs);},AGp=(a,b)=>{return b.gS(Gk(a.bVn),a.bPs);},EcN=a=>{Nx();return BcS;},EIo=()=>{CR5=0;},CtU=N(),EPW=(a,b,c,d,e,f,g)=>{let h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;h=APE(f);if(h!==null&&!US(h,c,d))return;i +=b.bVn;if(!i.bI2.gv()){j=Gk(i);A8l(g,AJN(i.bI2,e));k=Bvp(j,null,null);l=j.bPf;m=null;Lx();if(!(!AJ0(i,OK)&&!BAI(j.bOg)))m=E(350);n=null;if(!(!AJ0(i,Os)&&!C0r(j.bOg)))n=E(351);o=new Cgt;o.cEH=Bk();o.chq=Bk();p=new S;T(p);if(AJ0(i,Qn)&&i.bNj.bJw>0.0){f=i.bMY;if(f===null)L(p,E(352));else Ca0(o,f,ZM(j)/14.0);}if(AJ0(i,SN)){f=i.bMY;if(f===null)L(p,E(353));else Ca0(o,f, -ZM(j)/4.0);}if(AJ0(i,RH))L(p,E(354));q=p.bG4<=0?null:Dk(Q(p));r=null;if(AJ0(i,Wz)){s=i.bMY;if(s!==null&&!(s instanceof APg))r=R8(Bod(s.gw(e)));}FtW(g, +b.bPs,c,d,k,l,m,n,q,r,b.c0P);t=(AQW(BJg(Cq(b.bPs),Cq(k),l,"normal"))).data[0];u=0;v=c+t;while(true){b=o.cEH;if(u>=b.bGJ)break;BXH(g,AJN(Be(b,u),e));g.coD=ZM(j)/28.0;g.b_D=null;CO7(g,c,d+(Be(o.chq,u)).bG6,v,d+(Be(o.chq,u)).bG6);u=u+1|0;}return;}},ETa=(a,b,c,d,e,f,g)=>{EPW(a,b,c,d,e,f,g);}; +function ADr(){let a=this;Xm.call(a);a.cja=null;a.cgL=null;a.bXc=null;a.bU6=null;a.cVh=0;a.c_Q=0;} +let Fw9=(a,b,c)=>{a.bXc=Bk();a.bU6=ALg(0);a.cja=b;a.cgL=c;},A$4=(a,b)=>{let c=new ADr();Fw9(c,a,b);return c;},EE=()=>{return A$4(null,null);},SI=(a,b,c)=>{BnS(a,A7b(b,c));},BnS=(a,b)=>{let c,d,e,f;a:{U(a.bXc,b);c=b.bLy;d=b.bO7;NQ();if(d===AA1){e=c.data;a.bU6=V7(a.bU6,e[5],e[6]);}else{f=0;while(true){e=c.data;if(f>=e.length)break a;a.bU6=V7(a.bU6,e[f],e[f+1|0]);f=f+2|0;}}}},A6x=(a,b,c)=>{let d,e;if(b===0.0&&c===0.0)return a;d=A$4(a.cja,a.cgL);e=Br(a.bXc);while(Bq(e)){BnS(d,EiK(Bm(e),b,c));}return d;},AMc=(a, +b)=>{Ec(a,b.bGK,b.bGL);},Wx=(a,b)=>{B2(a,b.bGK,b.bGL);},Ec=(a,b,c)=>{let d,e,f,g;d=a.bXc;e=d.bGJ;f=!e?null:(Be(d,e-1|0)).bLy;if(f!==null){f=f.data;if(f[0]===b&&f[1]===c)return;}g=Gh([b,c]);NQ();SI(a,g,Xw);},B2=(a,b,c)=>{let d;d=Gh([b,c]);NQ();SI(a,d,VJ);},AXb=(a,b,c,d)=>{HY(a,b.bGK,b.bGL,c.bGK,c.bGL,d.bGK,d.bGL);},HY=(a,b,c,d,e,f,g)=>{let h;h=Gh([b,c,d,e,f,g]);NQ();SI(a,h,ABD);},Mk=(a,b,c,d,e,f,g,h)=>{let i;i=Gh([b,c,d,e,f,g,h]);NQ();SI(a,i,AA1);},HX=(a,b,c,d,e)=>{let f,g;f=Hr(7);g=f.data;g[0]=c;g[1]=c;g[2] +=0.0;g[3]=d;g[4]=e;g[5]=b.bGK;g[6]=b.bGL;NQ();SI(a,f,AA1);},A6e=a=>{return a.bU6.bNf;},A5q=a=>{return a.bU6.bN2;},A$N=a=>{return a.bU6.bJ0;},A4i=a=>{return a.bU6.bLa;},Br2=a=>{return Br(a.bXc);},CTg=a=>{a.cVh=1;},EN0=(a,b,c)=>{return;},E3U=(a,b)=>{ML();if(b!==Nb){if(b!==AKg){b=new Bt;X(b);J(b);}return a.c_Q;}return a.cVh;},Eo9=a=>{Nx();return Bf$;},CRP=N(),Fim=(a,b,c,d,e,f,g)=>{let h,i,j,k,l;h=f;i=APE(h);if(i!==null&&!(!(US(i,c+A$N(b),d+A4i(b))&&US(i,c+A6e(b),d+A5q(b)))?0:1))return;Bqd(g,e,f);AVL(g,e,f);AXM(g, +(S9(h)).bJw,AS4(S9(h)));j=new S;T(j);e=Br2(b);while(Bq(e)){k=Bm(e);h=k.bO7;l=k.bLy;NQ();if(h===Xw){l=l.data;L(j,E(355));L(j,Ni(a,l[0]+c));L(j,E(349));L(j,Ni(a,l[1]+d));L(j,E(344));}else if(h===VJ){l=l.data;L(j,E(356));L(j,Ni(a,l[0]+c));L(j,E(349));L(j,Ni(a,l[1]+d));L(j,E(344));}else if(h===Bp1){l=l.data;L(j,E(357));L(j,Ni(a,l[0]+c));L(j,E(349));L(j,Ni(a,l[1]+d));L(j,E(344));L(j,Ni(a,l[2]+c));L(j,E(349));L(j,Ni(a,l[3]+d));L(j,E(344));}else if(h===ABD){l=l.data;L(j,E(358));L(j,Ni(a,l[0]+c));L(j,E(349));L(j,Ni(a, +l[1]+d));L(j,E(344));L(j,Ni(a,l[2]+c));L(j,E(349));L(j,Ni(a,l[3]+d));L(j,E(344));L(j,Ni(a,l[4]+c));L(j,E(349));L(j,Ni(a,l[5]+d));L(j,E(344));}else if(h===AA1){l=l.data;L(j,E(359));L(j,Ni(a,l[0]));L(j,E(349));L(j,Ni(a,l[1]));L(j,E(344));L(j,Ni(a,l[2]));L(j,E(344));L(j,l[3]!==0.0?E(360):E(35));L(j,E(344));L(j,l[4]!==0.0?E(360):E(35));L(j,E(344));L(j,Ni(a,l[5]+c));L(j,E(349));L(j,Ni(a,l[6]+d));L(j,E(344));}else if(h===Bir)L(j,E(361));}C7B(g,Dk(Q(j)));},Ni=(a,b)=>{return BL8(b,2);},DxL=(a,b,c,d,e,f,g)=>{Fim(a,b, +c,d,e,f,g);}; +function NR(){let a=this;F.call(a);a.b3E=null;a.cr9=null;a.c2B=null;} +let ABW=(a,b)=>{Daq(a,b,null,null);},DKX=a=>{let b=new NR();ABW(b,a);return b;},Daq=(a,b,c,d)=>{a.b3E=b;a.cr9=d;a.c2B=c;},CW9=(a,b,c)=>{let d=new NR();Daq(d,a,b,c);return d;},A9h=(a,b)=>{return CW9(Cq6(a.b3E,b),a.c2B,a.cr9);},AV6=a=>{return (BW2(a.b3E)).bNs-1|0;},AVm=a=>{return (BW2(a.b3E)).bOO-1|0;},Ffh=(a,b)=>{b.hP(a);},Eko=(a,b)=>{return Cl(AV6(a),AVm(a));},EY6=a=>{Nx();return Bxd;},ClJ=N(),EDT=(a,b,c,d,e,f,g)=>{let h,i,j,k,l,m,n,o,p,q,r,s;b=b;e=g;h=BW2(Cq6(b.b3E,1.0));i=h.bNs;j=h.bOO;b=h.cgu;if(b===null) +{b=(Bx_()).createElement("canvas");b.width=h.bNs;b.height=h.bOO;f=b.getContext("2d");g=f.createImageData(h.bNs,h.bOO);k=g.data;l=0;m=0;while(true){n=h.b0e.data;if(m>=n.length)break;o=n[m];p=(o>>>24|0)&255;q=(o>>>16|0)&255;r=(o>>>8|0)&255;s=o&255;o=l+1|0;k[l]=q;l=o+1|0;k[o]=r;o=l+1|0;k[l]=s;l=o+1|0;k[o]=p;m=m+1|0;}f.putImageData(g,0.0,0.0);b=Fe(b.toDataURL('image/png'));}k=document.createElementNS('http://www.w3.org/2000/svg',"image");g=Gr(e,c);k.setAttribute("x",Cq(g));g=Gr(e,d);k.setAttribute("y",Cq(g));g= +AEV(i);k.setAttribute("width",Cq(g));g=AEV(j);k.setAttribute("height",Cq(g));k.setAttribute("href",Cq(b));k.setAttributeNS('http://www.w3.org/1999/xlink','xlink:href',Cq(b));(Rz(e)).appendChild(k);}; +function AMv(){let a=this;F.call(a);a.cdX=null;a.cpH=0.0;a.chs=0;a.chd=0;} +let C7u=null,Cfy=null,CCX=null,A4F=()=>{A4F=Z(AMv);D_u();},D7B=(a,b,c)=>{A4F();a.chs=(-1);a.chd=(-1);a.cdX=B$(b);a.cpH=c;},Dj$=(a,b)=>{let c=new AMv();D7B(c,a,b);return c;},BAu=(a,b)=>{let c,d,e;a:{A4F();c=D3(CCX,a.cdX);if(GW(c)){if(!Bj(E(362),b)){if(!Bj(E(363),b))break a;return Tt(DM(El(c,4)))|0;}return Tt(DM(El(c,3)))|0;}}c=new S;T(c);H(H(H(c,E(364)),b),E(365));d=D3(Dp(Q(c)),a.cdX);if(!GW(d)){c=new BP;e=new S;T(e);H(H(e,E(366)),b);Bp(c,Q(e));J(c);}return CZ(El(d,1));},Bt$=a=>{if(a.chd==(-1))a.chd=BAu(a,E(363));return a.chd +*a.cpH;},BnQ=a=>{if(a.chs==(-1))a.chs=BAu(a,E(362));return a.chs*a.cpH;},EkQ=a=>{Nx();return BpF;},D_u=()=>{C7u=Dp(E(367));Cfy=Dp(E(368));CCX=Dp(E(369));},C7o=N(),D8A=(a,b,c,d,e,f,g)=>{let h,i,j,k,l,m;b=b;e=g;h=b.cpH;i=b.cdX;if(BO(i,E(370)))i=CC(i,IZ(i,E(371)));if(BO(i,E(371))){f=CC(i,IZ(i,E(372))+1|0);g=new S;T(g);H(H(g,E(373)),f);i=Q(g);}A4F();f=D3(Cfy,b.cdX);f=!GW(f)?null:El(f,1);if(f!==null){g=D3(C7u,f);g=!GW(g)?null:El(g,1);if(g!==null){j=BAu(b,E(362));k=BAu(b,E(363));l=new S;T(l);f=H(H(H(H(H(l,E(374)), +g),E(375)),f),E(376));BE(f,j);f=H(f,E(377));BE(f,k);H(f,E(378));i=AXR(i,E(379),Q(l));}}if(BO(i,E(373))){if(h!==1.0){b=KG(KG(i,10,32),13,32);if(!CB(b,E(380))&&!CB(b,E(379)))i=AXR(AXR(i,E(381),E(382)),E(383),E(384));b=Gr(e,h);g=new S;T(g);l=H(H(g,E(385)),b);Bb(l,44);H(H(l,b),E(386));i=AXR(i,E(387),Q(g));}m=document.createElementNS('http://www.w3.org/2000/svg',"g");b=Gr(e,c);g=Gr(e,d);l=new S;T(l);b=H(H(l,E(388)),b);Bb(b,44);Bb(H(b,g),41);m.setAttribute("transform",Cq(Q(l)));Ep8(m,Cq(i));(Rz(e)).appendChild(m);return;}b +=new Bt;X(b);J(b);},ARf=N(0); +function AHP(){let a=this;F.call(a);a.bHI=null;a.c7h=null;a.cVd=null;} +let AJE=0,AXQ=()=>{AXQ=Z(AHP);EOv();},BuC=a=>{let b,c,d,e,f;b=ARD();c=Br(a.bHI);while(Bq(c)){d=Bm(c);e=b.bHI;f=Sn(d.bLq,d.bLp,d.bOF,d.bOC,d.bOE,d.bOD,d.bMb,d.bMa);U(e,f);}return b;},Byk=b=>{let c,d;AXQ();c=ARD();d=c.bHI;b=B$(b);Ea(d,b);return c;},DJz=a=>{AXQ();a.bHI=Bk();},ARD=()=>{let a=new AHP();DJz(a);return a;},B3d=(a,b,c,d,e)=>{let f,g;f=E2(a.bHI);g=Sn(b.bGK,b.bGL,c.bGK,c.bGL,d.bGK,d.bGL,e.bGK,e.bGL);U(f,g);return Byk(f);},ID=a=>{return P3(Be(a.bHI,0));},A75=a=>{let b,c;b=G$();c=Br(a.bHI);while(Bq(c)){BYq(Bm(c), +b);}return b;},BYq=(b,c)=>{let d,e,f,g;AXQ();d=BAQ(b);e=BjW(b);if(!(BC(BeR(b.bLq,b.bLp,b.bMb,b.bMa,b.bOF,b.bOC),BeR(b.bLq,b.bLp,b.bMb,b.bMa,b.bOE,b.bOD))>0.5)&&!(Jy(d,e)>4.0)){b=c;EQ(b,d);EQ(b,e);}else{f=Zp();g=Zp();A7K(b,f,g);BYq(f,c);BYq(g,c);}},DzQ=a=>{let b,c,d,e,f,g,h,i,j,k;b=null;c=0.0;d=Br(a.bHI);while(Bq(d)){e=Bm(d);f=Zp();g=Zp();A7K(e,f,g);h=P3(f);i=Mc(f);j=P3(g);k=Mc(g);if(!(b!==null&&!(AHS(a,h){let c,d;c=ID(a);d=Jz(a);return C3h(b,c)+C3h(b,d);},A2W=(a,b)=>{BMY(a,b.bHj,b.bHu);},A4A=(a,b)=>{let c,d;c=b.bHj;d=b.bHu;b=a.bHI;b=Be(b,b.bGJ-1|0);b.bMb=b.bMb+c;b=a.bHI;b=Be(b,b.bGJ-1|0);b.bMa=b.bMa+d;b=a.bHI;b=Be(b,b.bGJ-1|0);b.bOE=b.bOE+c;b=a.bHI;b=Be(b,b.bGJ-1|0);b.bOD=b.bOD+d;},BMY=(a,b,c)=>{let d,e,f,g;if(a.bHI.bGJ>1){d=Gs(b*b+c*c);e=Be(a.bHI,0);f=e.bMb-e.bLq;g=e.bMa-e.bLp;if(d>=Gs(f*f+g*g)){b=b-((Be(a.bHI, +1)).bLq-(Be(a.bHI,0)).bLq);c=c-((Be(a.bHI,1)).bLp-(Be(a.bHI,0)).bLp);EJ(a.bHI,0);}}e=Be(a.bHI,0);e.bLq=e.bLq+b;e=Be(a.bHI,0);e.bLp=e.bLp+c;e=Be(a.bHI,0);e.bOF=e.bOF+b;e=Be(a.bHI,0);e.bOC=e.bOC+c;},Jz=a=>{let b;b=a.bHI;return Mc(Be(b,b.bGJ-1|0));},CkT=a=>{let b,c,d;b=ALg(0);c=Br(a.bHI);while(Bq(c)){d=Bm(c);b=V7(V7(V7(V7(b,d.bLq,d.bLp),d.bMb,d.bMa),d.bOF,d.bOC),d.bOE,d.bOD);}return b;},AWU=a=>{let b,c,d,e,f;b=a.bHI;b=Be(b,b.bGJ-1|0);c=b.bMb;d=c-b.bOE;e=b.bMa;f=e-b.bOD;if(d===0.0&&f===0.0){d=c-b.bLq;f=e-b.bLp;}b +=ADU(c,e,c+d,e+f);return Nz(b.bSo-b.bM_,b.bSp-b.bQN);},AL5=a=>{let b,c,d,e,f;b=Be(a.bHI,0);c=b.bOF;d=b.bLq;c=c-d;e=b.bOC;f=b.bLp;e=e-f;if(c===0.0&&e===0.0){c=b.bMb-d;e=b.bMa-f;}b=ADU(d,f,d+c,f+e);return Nz(b.bSo-b.bM_,b.bSp-b.bQN);},CKu=a=>{let b,c,d,e,f;b=E2(a.bHI);BzY(b);c=Bk();d=Br(b);while(Bq(d)){e=Bm(d);AXQ();f=Sn(e.bMb,e.bMa,e.bOE,e.bOD,e.bOF,e.bOC,e.bLq,e.bLp);U(c,f);}return Byk(c);},COz=(a,b,c)=>{let d,e,f,g;d=0;while(true){e=a.bHI;if(d>=e.bGJ)break;e=Be(e,d);f=a.bHI;g=Sn(e.bLq+b,e.bLp+c,e.bOF+b,e.bOC ++c,e.bOE+b,e.bOD+c,e.bMb+b,e.bMa+c);GJ(f,d,g);d=d+1|0;}},BP8=a=>{return a.bHI;},DhS=(a,b,c)=>{let d,e,f,g,h,i,j,k;if(b===null&&c===null)return a;a:{if(c===null)d=a;else if(!Sl(c,ID(a)))d=a;else{d=ARD();e=0;b:{while(true){f=e+1|0;g=a.bHI;if(f>=g.bGJ)break b;if(!Sl(c,Mc(Be(g,e))))break b;if(!Sl(c,P3(Be(a.bHI,e))))break;e=f;}b=new BP;X(b);J(b);}if(Sl(c,Mc(Be(a.bHI,e))))d=a;else{if(Df()&&!AJE&&!Sl(c,P3(Be(a.bHI,e)))){b=new C4;X(b);J(b);}if(Df()&&!AJE&&Sl(c,Mc(Be(a.bHI,e)))){b=new C4;X(b);J(b);}h=Be(a.bHI,e);i=0;while +(true){if(i>=8){while(true){g=a.bHI;if(f>=g.bGJ)break;c=d.bHI;g=Be(g,f);U(c,g);f=f+1|0;}break a;}j=Zp();k=Zp();A7K(h,j,k);if(Df()&&!AJE&&!AN2(Mc(j),P3(k)))break;if(Sl(c,Mc(j)))j=k;else Ik(d.bHI,0,k);i=i+1|0;h=j;}b=new C4;X(b);J(b);}}}c:{if(b!==null){g=ARD();if(Sl(b,Jz(a))){j=Br(d.bHI);while(true){if(!Bq(j))break c;h=Bm(j);if(Sl(b,Mc(h))){if(!Sl(b,P3(h))){if(Df()&&!AJE&&Sl(b,P3(h))){b=new C4;X(b);J(b);}if(Df()&&!AJE&&!Sl(b,Mc(h))){b=new C4;X(b);J(b);}i=0;while(i<8){j=Zp();k=Zp();A7K(h,j,k);if(Df()&&!AJE&&!AN2(Mc(j), +P3(k))){b=new C4;X(b);J(b);}if(Sl(b,Mc(j)))k=j;else U(g.bHI,j);i=i+1|0;h=k;}return g;}return d;}U(g.bHI,h);}}}}return d;},Ejk=(a,b,c)=>{a.c7h=b;a.cVd=c;},D8H=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p;if(!(b<=0.0)){c=a.bHI;if(c.bGJ>=2){d=Br(c);a:{b:{while(Bq(d)){c=Bm(d);e=EL(c.bMb-c.bLq);f=EL(c.bMa-c.bLp);if(e>0.1&&f>0.1)break b;}g=1;break a;}g=0;}if(g){c:{c=Bk();d=a.bHI;if(d.bGJ>0){d=P3(Be(d,0));h=c;U(h,d);i=Br(a.bHI);while(true){if(!Bq(i))break c;U(h,Mc(Bm(i)));}}}d=c;if(d.bGJ>=3){h=Bk();j=1;while(j<(d.bGJ-1 +|0)){i=Be(d,j-1|0);k=Be(d,j);g=j+1|0;l=Be(d,g);f=k.bGK;e=f-i.bGK;m=k.bGL;n=m-i.bGL;f=l.bGK-f;o=l.bGL-m;m=Gs(e*e+n*n);p=Gs(f*f+o*o);if(!(m<0.01)&&!(p<0.01)&&EL(e/m*f/p+n/m*o/p)<0.1){i=CL(j);U(h,i);}j=g;}if(!HH(h)){i=EJd(a,EGa(a,c,h,b),c,h);TD(a.bHI);Ea(a.bHI,i);return;}return;}return;}return;}}},EGa=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;e=Bk();f=b;b=Be(f,0);g=e;U(g,b);h=1;while(true){i=f.bGJ-1|0;if(h>=i)break;b=CL(h);if(!Nw(c,b))U(g,Be(f,h));else{j=Be(f,h-1|0);k=Be(f,h);l=Be(f,h+1|0);m=k.bGK;n=m- +j.bGK;o=k.bGL;p=o-j.bGL;q=l.bGK-m;r=l.bGL-o;s=Gs(n*n+p*p);o=Gs(q*q+r*r);m=n/s;p=p/s;q=q/o;r=r/o;t=Eh(d,s/2.0);u=Eh(d,o/2.0);U(g,BA(k.bGK-m*t,k.bGL-p*t));U(g,k);U(g,BA(k.bGK+q*u,k.bGL+r*u));}h=h+1|0;}U(g,Be(f,i));return e;},EJd=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba;e=Bk();f=0;g=b;while(f<(g.bGJ-1|0)){a:{b:{h=Be(g,f);i=f+1|0;j=Be(g,i);k=f+2|0;if(k{Nx();return Bpm;},EOv=()=>{AJE=0;},CFg=N(),AGI=(a,b)=>{return BL8(b,4);},Ehu=(a,b,c,d,e,f,g)=>{let h,i,j,k;h=b;g=g;i=f;if(!(Bs1(i)).gv()){AVL(g,e,f);A8l(g,E(71));AXM(g,(S9(i)).bJw,AS4(S9(i)));b=new S;T(b);e=A$4(h.c7h,h.cVd);j +=1;i=Br(h.bHI);while(Bq(i)){f=Bm(i);if(j){k=Gh([f.bLq,f.bLp]);NQ();SI(e,k,Xw);j=0;}k=Gh([f.bOF,f.bOC,f.bOE,f.bOD,f.bMb,f.bMa]);NQ();SI(e,k,ABD);}f=Br2(e);while(Bq(f)){e=Bm(f);h=e.bO7;k=e.bLy;NQ();if(h===Xw){k=k.data;L(b,E(355));L(b,AGI(a,k[0]+c));L(b,E(349));L(b,AGI(a,k[1]+d));L(b,E(344));}else if(h===ABD){k=k.data;L(b,E(358));L(b,AGI(a,k[0]+c));L(b,E(349));L(b,AGI(a,k[1]+d));L(b,E(344));L(b,AGI(a,k[2]+c));L(b,E(349));L(b,AGI(a,k[3]+d));L(b,E(344));L(b,AGI(a,k[4]+c));L(b,E(349));L(b,AGI(a,k[5]+d));L(b,E(344));}}C7B(g, +Dk(Q(b)));}}; +function APT(){let a=this;F.call(a);a.cMl=0;a.c68=null;} +let EqB=(a,b,c)=>{a.cMl=b;a.c68=c;},BF5=(a,b)=>{let c=new APT();EqB(c,a,b);return c;},DUX=a=>{Nx();return BmK;},CPc=N(),E$V=(a,b,c,d,e,f,g)=>{let h,i,j,k;b=b;g=g;h=b.cMl;i=b.c68;b=Bs1(f);QO(h);A8l(g,AJN(b,e));j=i.bPf;f=document.createElementNS('http://www.w3.org/2000/svg',"text");k=Gr(g,c);f.setAttribute("x",Cq(k));i=Gr(g,d);f.setAttribute("y",Cq(i));f.setAttribute("font-family","monospace");e=AEV(j);f.setAttribute("font-size",Cq(e));e=g.cek;f.setAttribute("fill",Cq(e));f.setAttribute("text-anchor","middle");f.setAttribute("dominant-baseline", +"central");b=Cq(QO(h));f.textContent=b;(Rz(g)).appendChild(f);},AUq=N(),E4a=a=>{Nx();return BzK;}; +function CmC(){let a=this;F.call(a);a.bHb=null;a.bRW=0;a.cwc=null;a.c16=0;a.b0z=0;a.bZP=0;a.bKq=0;a.cw_=null;a.b2_=null;} +let D3=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=new CnH;c.bWE=(-1);c.b_8=(-1);c.c$m=a;c.cJk=a.cw_;c.bPH=b;c.bWE=0;d=b.bL();c.b_8=d;e=new DpX;f=c.bWE;g=a.b0z;h=a.bZP+1|0;i=a.bKq+1|0;j=a.b2_;e.b6V=(-1);g=g+1|0;e.cFP=g;e.bUu=Ca(g*2|0);e.c$f=j;k=Ca(i);e.cl1=k;Wm(k,(-1));if(h>0)e.cEa=Ca(h);Wm(e.bUu,(-1));Bn4(e,b,f,d);c.bKw=e;e.b1t=1;return c;},A0k=(a,b)=>{let c,d,e,f,g,h;c=Bk();d=D3(a,b);e=0;f=0;b=b;if(!b.bGI.length){g=K(Bi,1);g.data[0]=E(14);}else{while(GW(d)){e=e+1|0;U(c,B_(b,f,BWt(d)));f=BX7(d);}U(c,B_(b,f,b.bGI.length));h +=e+1|0;while(true){h=h+(-1)|0;if(h<0)break;if((Be(c,h)).bGI.length)break;EJ(c,h);}if(h<0)h=0;g=K(Bi,h);g=WW(c,g);}return g;},Bze=a=>{return a.bHb.bLk;},Cly=(b,c)=>{let d,e,f,g;if(b!==null){if(c&&(c|255)!=255){b=new Bt;Bp(b,E(14));J(b);}A0w();ATZ=1;d=new CmC;d.cwc=K(R6,10);d.b0z=(-1);d.bZP=(-1);d.bKq=(-1);e=new Cek;e.bW8=1;e.bLk=b;if((c&16)>0)b=A1d(b);e.bI4=Fd(b.bGI.length+2|0);Di(Q5(b),0,e.bI4,0,b.bGI.length);f=e.bI4.data;g=f.length;f[g-1|0]=0;f[g-2|0]=0;e.c6m=g;e.b3N=c;AQ$(e);AQ$(e);d.bHb=e;d.bRW=c;d.cw_=CXF(d, +(-1),c,null);if(Wq(d.bHb)){if(d.c16)d.cw_.kj();b=d.b2_;if(b===null)d.b2_=A1A();else d.b2_=DqD(b);return d;}b=new AQT;d=d.bHb;ByI(b,E(14),d.bLk,d.bO8);J(b);}b=new F2;Bp(b,E(389));J(b);},CXF=(a,b,c,d)=>{let e,f,g,h,i,j;e=Bk();f=a.bRW;g=0;if(c!=f)a.bRW=c;a:{b:{c:{d:{e:{switch(b){case -1073741784:break e;case -536870872:case -268435416:break;case -134217688:case -67108824:break d;case -33554392:break c;default:break b;}h=new Dsj;AU0(h,(-1));break a;}h=new CxL;c=a.bKq+1|0;a.bKq=c;AU0(h,c);break a;}h=new Cap;c=a.bKq ++1|0;a.bKq=c;AU0(h,c);break a;}h=new CTp;c=a.bKq+1|0;a.bKq=c;AU0(h,c);break a;}c=a.b0z+1|0;a.b0z=c;if(d===null){h=new APt;AU0(h,0);g=1;}else{h=DUw(c);if(b==(-2130706392)){if(a.b2_===null)a.b2_=E9();a.b2_.dU(a.bHb.cUF,CL(a.b0z));}}i=a.b0z;if(i>(-1)&&i<10)a.cwc.data[i]=h;}while(true){if(!(AKI(a.bHb)&&a.bHb.bHf==(-536870788))){if(a.bHb.bJp==(-536870788)){j=ALn(h);Fn(a.bHb);}else{j=DjZ(a,h);d=a.bHb;if(d.bJp==(-536870788))Fn(d);}}else{d=CMz(Mm(a,2),Mm(a,64));while(!Wq(a.bHb)&&AKI(a.bHb)){j=a.bHb;i=j.bHf;if(i&&i!= +(-536870788)&&i!=(-536870871))break;Pp(d,Fn(j));j=a.bHb;if(j.bJp!=(-536870788))continue;Fn(j);}j=B22(a,d);j.kv(h);}if(j!==null)U(e,j);if(Wq(a.bHb))break;if(a.bHb.bJp==(-536870871))break;}if(a.bHb.cBr==(-536870788))U(e,ALn(h));if(a.bRW!=f&&!g){a.bRW=f;d=a.bHb;d.b3N=f;d.bHf=d.bJp;d.bYK=d.bXf;i=d.bO8;d.bHK=i+1|0;d.cce=i;AQ$(d);}switch(b){case -1073741784:break;case -536870872:d=new Dig;ANQ(d,e,h);return d;case -268435416:d=new CLY;ANQ(d,e,h);return d;case -134217688:d=new Dl3;ANQ(d,e,h);return d;case -67108824:d +=new CT7;ANQ(d,e,h);return d;case -33554392:d=new YY;ANQ(d,e,h);return d;default:switch(e.bGJ){case 0:break;case 1:return EVc(Be(e,0),h);default:return EAV(e,h);}return ALn(h);}d=new BBb;ANQ(d,e,h);return d;},DUC=a=>{let b,c,d,e,f,g,h;b=Ca(4);c=(-1);d=(-1);if(!Wq(a.bHb)&&AKI(a.bHb)){e=b.data;c=Fn(a.bHb);e[0]=c;d=c-4352|0;}if(d>=0&&d<19){e=Fd(3);b=e.data;b[0]=c&65535;f=a.bHb;g=f.bJp;h=g-4449|0;if(h>=0&&h<21){b[1]=g&65535;Fn(f);f=a.bHb;g=f.bJp;c=g-4519|0;if(c>=0&&c<28){b[2]=g&65535;Fn(f);return CMl(e,3);}return CMl(e, +2);}if(Mm(a,2)){if(!Mm(a,64))return CkJ(b[0]);return CK2(b[0]);}return B14(b[0]);}e=b.data;c=1;while(c<4&&!Wq(a.bHb)&&AKI(a.bHb)){h=c+1|0;e[c]=Fn(a.bHb);c=h;}if(c==1){h=e[0];if(!(Fi9.kz(h)==Epp?0:1))return ChT(a,e[0]);}if(Mm(a,2)){if(!Mm(a,64)){f=new DoK;BBW(f,b,c);return f;}f=new Dhc;BBW(f,b,c);return f;}return FxE(b,c);},DjZ=(a,b)=>{let c,d,e,f,g,h,i;a:{if(!(AKI(a.bHb)&&!BB1(a.bHb)&&Bgf(a.bHb.bHf))){c=a.bHb;if(c.bJp!=(-536870871)){d=BWu(a,b,CM0(a,b));break a;}if(!(b instanceof APt)){d=ALn(b);break a;}J(J_(E(14), +c.bLk,c.bO8));}if(Mm(a,128)){d=DUC(a);if(!Wq(a.bHb)){c=a.bHb;e=c.bJp;if(!(e==(-536870871)&&!(b instanceof APt))&&e!=(-536870788)&&!AKI(c))d=BWu(a,b,d);}}else if(!(!Ckn(a.bHb)&&!Cqm(a.bHb)))d=BWu(a,b,CM0(a,b));else{c=new Sj;T(c);while(!Wq(a.bHb)&&AKI(a.bHb)&&!Ckn(a.bHb)&&!Cqm(a.bHb)){if(!(!BB1(a.bHb)&&!a.bHb.bHf)&&!(!BB1(a.bHb)&&Bgf(a.bHb.bHf))){f=a.bHb.bHf;if(f!=(-536870871)&&(f&(-2147418113))!=(-2147483608)&&f!=(-536870788)&&f!=(-536870876))break;}e=Fn(a.bHb);if(!BNu(e))Bb(c,e&65535);else AXl(c,Wr(e));}if(!Mm(a, +2)){d=new C3m;YK(d);d.bMP=Q(c);e=c.bG4;d.bKY=e;d.cy9=C4X(e);d.crZ=C4X(d.bKY);g=0;while(g<(d.bKY-1|0)){CR9(d.cy9,Bn(d.bMP,g),(d.bKY-g|0)-1|0);CR9(d.crZ,Bn(d.bMP,(d.bKY-g|0)-1|0),(d.bKY-g|0)-1|0);g=g+1|0;}}else d=Mm(a,64)?E1i(c):DYj(c);}}b:{c:{if(!Wq(a.bHb)){e=a.bHb.bJp;if(!(e==(-536870871)&&!(b instanceof APt))&&e!=(-536870788))break c;}if(d!==null){d.kv(b);break b;}return null;}h=DjZ(a,b);if(d instanceof TE&&!(d instanceof AJ2)&&!(d instanceof TL)&&!(d instanceof ANp)){i=d;c=i;if(!h.kN(c.bIw)){d=new CBL;c=c.bIw;i +=i;AFh(d,c,i.bGX,i.caw);d.bIw.kv(d);}}if((h.kP()&65535)!=43)d.kv(h);else d.kv(h.bIw);}if((d.kP()&65535)==43)return d.bIw;return d;},BWu=(a,b,c)=>{let d,e,f,g,h;d=a.bHb;e=d.bJp;if(c!==null&&!(c instanceof KA)){switch(e){case -2147483606:Fn(d);d=new CDw;V_(d,c,b,e);AOP();c.kv(Ba4);return d;case -2147483605:Fn(d);d=new C0_;V_(d,c,b,(-2147483606));AOP();c.kv(Ba4);return d;case -2147483585:Fn(d);d=new CvA;V_(d,c,b,(-536870849));AOP();c.kv(Ba4);return d;case -2147483525:f=new C9V;d=AUL(d);g=a.bZP+1|0;a.bZP=g;Be2(f, +d,c,b,(-536870849),g);AOP();c.kv(Ba4);return f;case -1073741782:case -1073741781:Fn(d);d=new Cxy;V_(d,c,b,e);c.kv(d);return d;case -1073741761:Fn(d);d=new Dlm;V_(d,c,b,(-536870849));c.kv(b);return d;case -1073741701:f=new De4;d=AUL(d);e=a.bZP+1|0;a.bZP=e;Be2(f,d,c,b,(-536870849),e);c.kv(f);return f;case -536870870:case -536870869:Fn(d);if(c.kP()!=(-2147483602)){d=new TL;V_(d,c,b,e);}else if(Mm(a,32)){d=new Ccx;V_(d,c,b,e);}else{d=new CZX;f=BXP(a.bRW);V_(d,c,b,e);d.cBq=f;}c.kv(d);return d;case -536870849:Fn(d);d +=new ATo;V_(d,c,b,(-536870849));c.kv(b);return d;case -536870789:f=new AJm;d=AUL(d);e=a.bZP+1|0;a.bZP=e;Be2(f,d,c,b,(-536870849),e);c.kv(f);return f;default:}return c;}h=null;if(c!==null)h=c;switch(e){case -2147483606:case -2147483605:Fn(d);d=new CsU;AFh(d,h,b,e);h.bGX=d;return d;case -2147483585:Fn(d);c=new Dge;AFh(c,h,b,(-2147483585));return c;case -2147483525:c=new C0p;BDo(c,AUL(d),h,b,(-2147483525));return c;case -1073741782:case -1073741781:Fn(d);d=new Dlf;AFh(d,h,b,e);h.bGX=d;return d;case -1073741761:Fn(d);c +=new C5j;AFh(c,h,b,(-1073741761));return c;case -1073741701:c=new CR6;BDo(c,AUL(d),h,b,(-1073741701));return c;case -536870870:case -536870869:Fn(d);d=DDO(h,b,e);h.bGX=d;return d;case -536870849:Fn(d);c=new ANp;AFh(c,h,b,(-536870849));return c;case -536870789:return DNe(AUL(d),h,b,(-536870789));default:}return c;},CM0=(a,b)=>{let c,d,e,f,g,h,i,j;c=null;d=b instanceof APt;while(true){a:{e=a.bHb;f=e.bJp;if((f&(-2147418113))==(-2147483608)){Fn(e);g=(f&16711680)>>16;f=f&(-16711681);if(f==(-16777176))a.bRW=g;else +{if(f!=(-1073741784))g=a.bRW;c=CXF(a,f,g,b);e=a.bHb;if(e.bJp!=(-536870871))J(J_(E(14),e.bLk,e.bO8));Fn(e);}}else{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{switch(f){case -2147483599:case -2147483598:case -2147483597:case -2147483596:case -2147483595:case -2147483594:case -2147483593:case -2147483592:case -2147483591:break c;case -2147483583:break;case -2147483582:break m;case -2147483577:break l;case -2147483558:break i;case -2147483550:break k;case -2147483526:break j;case -536870876:break e;case -536870866:break h;case -536870821:break d;case -536870818:break g;case 0:break f;default:break b;}Fn(e);c +=new BUg;Kg(c);break a;}Fn(e);c=C6_(0);break a;}Fn(e);c=new CZS;Kg(c);break a;}Fn(e);c=C6_(1);break a;}Fn(e);c=new C7s;Kg(c);break a;}Fn(e);c=new BNx;h=a.bKq+1|0;a.bKq=h;CLX(c,h);break a;}Fn(e);if(Mm(a,32)){c=EaZ();break a;}c=D94(BXP(a.bRW));break a;}Fn(e);a.bKq=a.bKq+1|0;if(!Mm(a,8)){c=new BUg;Kg(c);break a;}c=new CEy;e=BXP(a.bRW);Kg(c);c.cUT=e;break a;}i=e.bXf;if(i!==null)c=B22(a,i);else{if(Wq(e)){c=ALn(b);break a;}c=B14(f&65535);}Fn(a.bHb);break a;}Fn(e);a.bKq=a.bKq+1|0;if(Mm(a,8)){if(Mm(a,1)){c=E8q(a.bKq);break a;}c +=E2K(a.bKq);break a;}if(Mm(a,1)){c=DA7(a.bKq);break a;}c=DFh(a.bKq);break a;}Fn(e);j=0;c=a.bHb;if(c.bJp==(-536870818)){j=1;Fn(c);}c=B22(a,A4v(a,j));c.kv(b);e=a.bHb;if(e.bJp!=(-536870819))J(J_(E(14),e.bLk,e.bO8));CkL(e,1);Fn(a.bHb);break a;}h=(f&2147483647)-48|0;if(a.b0z=0&&!A3B(e)){c=ChT(a,f);Fn(a.bHb);}else if(f==(-536870788))c=ALn(b);else{if(f!=(-536870871)) +{b=new AQT;c=!A3B(a.bHb)?BE4(f&65535):a.bHb.bXf.p();e=a.bHb;ByI(b,c,e.bLk,e.bO8);J(b);}if(d){b=new AQT;e=a.bHb;ByI(b,E(14),e.bLk,e.bO8);J(b);}c=ALn(b);}}}if(f!=(-16777176))break;}return c;},A4v=(a,b)=>{let c,d,e,f,g,h,i,j,$$je;c=CMz(Mm(a,2),Mm(a,64));AHD(c,b);d=(-1);e=0;f=0;g=1;a:{b:{c:{d:while(true){if(Wq(a.bHb))break a;h=a.bHb;b=h.bJp;f=!(b==(-536870819)&&!g)?1:0;if(!f)break b;e:{f:{g:{h:{i:{j:{k:{switch(b){case -536870874:break h;case -536870867:break f;case -536870821:break g;case -536870819:break k;case -536870818:break j;case 0:break i;default:}if +(d>=0)Pp(c,d);d=Fn(a.bHb);break e;}if(d>=0)Pp(c,d);d=93;Fn(a.bHb);break e;}if(d>=0)Pp(c,d);d=94;Fn(a.bHb);break e;}if(d>=0)Pp(c,d);h=a.bHb.bXf;if(h===null)d=0;else{DX2(c,h);d=(-1);}Fn(a.bHb);break e;}if(d>=0)Pp(c,d);d=Fn(a.bHb);h=a.bHb;if(h.bJp!=(-536870874)){d=38;break e;}if(h.bHf==(-536870821)){Fn(h);e=1;d=(-1);break e;}Fn(h);if(g){c=A4v(a,0);break e;}if(a.bHb.bJp==(-536870819))break e;CB8(c,A4v(a,0));break e;}if(d>=0){Pp(c,d);d=(-1);}Fn(a.bHb);i=0;h=a.bHb;if(h.bJp==(-536870818)){Fn(h);i=1;}if(!e)DI0(c,A4v(a, +i));else CB8(c,A4v(a,i));e=0;Fn(a.bHb);break e;}l:{if(!g){b=h.bHf;if(b!=(-536870819)&&b!=(-536870821)&&d>=0)break l;}if(d>=0)Pp(c,d);d=45;Fn(a.bHb);break e;}Fn(h);h=a.bHb;j=h.bJp;if(A3B(h))break d;if(j<0){i=a.bHb.bHf;if(i!=(-536870819)&&i!=(-536870821)&&d>=0)break d;}m:{try{if(Bgf(j))break m;j=j&65535;break m;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break c;}else{throw $$e;}}}try{J5(c,d,j);}catch($$e){$$je=P($$e);if($$je instanceof Dt){break c;}else{throw $$e;}}Fn(a.bHb);d=(-1);}g=0;}J(J_(E(14),Bze(a), +a.bHb.bO8));}J(J_(E(14),Bze(a),a.bHb.bO8));}}if(f)J(J_(E(14),Bze(a),a.bHb.bO8-1|0));if(d>=0)Pp(c,d);return c;},ChT=(a,b)=>{let c,d,e;c=BNu(b);if(Mm(a,2)){a:{if(!(b>=97&&b<=122)){if(b<65)break a;if(b>90)break a;}return CkJ(b&65535);}if(Mm(a,64)&&b>128){if(!c){if(!BKS(b)){if(BDy(b))return CIg(b&65535);return CK2(b&65535);}return Ceb(b&65535);}d=new CiU;YK(d);d.bKY=2;d.crK=A3j(AY0(b));return d;}}if(c){d=new AAv;YK(d);d.bKY=2;d.b6i=b;e=(Wr(b)).data;d.b$U=e[0];d.b$m=e[1];return d;}if(!BKS(b)){if(BDy(b))return CIg(b +&65535);return B14(b&65535);}return Ceb(b&65535);},B22=(a,b)=>{let c,d,e;if(Elz(b)){c=E3F(b);d=new COk;Kg(d);d.cBs=c;d.cTB=c.bJl;if(b.bIA){if(b.la()){c=new BLh;e=new BFN;B7L(e,Bft(b));Dhl(c,e,d);return c;}return B3W(DmA(Bft(b)),d);}if(!b.la())return B3W(CBJ(Bft(b)),d);return B3W(CbV(Bft(b)),d);}if(b.bIA){if(b.la()){c=new BFN;B7L(c,b);return c;}return DmA(b);}if(!b.la())return CBJ(b);return CbV(b);},Dp=b=>{return Cly(b,0);},A1d=b=>{let c,d,e,f;c=new S;T(c);L(c,E(390));d=0;while(true){e=Sy(b,E(391),d);if(e<0)break;f +=e+2|0;L(c,B_(b,d,f));L(c,E(392));d=f;}L(c,CC(b,d));L(c,E(391));return Q(c);},A_1=b=>{if(b>=97&&b<=122)b=(b-32|0)&65535;else if(b>=65&&b<=90)b=(b+32|0)&65535;return b;},Mm=(a,b)=>{return (a.bRW&b)!=b?0:1;},E1e=N(),AI6=(b,c,d)=>{let e,f,$$je;Bue();e=Dr9;Jl(e);a:{b:{try{f=AN$(e,b,Fdr());G2(e);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}G2(e);J(b);}if(c===null)c=EO();return BEw(f,c,d);},Cgm=b=>{return AI6(E(393),EO(),b);},We=b=>{return AI6(E(394),EO(),b);},BkS=b=>{return AI6(E(395),EO(),b);},Tc=b=>{return We(12);}; +function A7Y(){let a=this;F.call(a);a.bMU=null;a.bN5=null;a.bWM=null;a.bT0=null;a.bI2=null;a.bMY=null;a.bOK=null;a.bTm=null;a.bNj=null;a.bPQ=null;a.bOi=0;} +let Bdz=(b,c,d,e,f)=>{let g,h,i,j,k,l;g=new A7Y;h=BAI(b.bOg);i=C0r(b.bOg);if(h&&i){Lx();j=CuA(Os,OK);}else if(h){Lx();j=Fv(OK);}else if(!i)j=PZ(Bo(AIL));else{Lx();j=Fv(Os);}k=null;AHr();l=AX6;A15();Buu(g,j,b,c,b,c,k,l,B1i(),d,e,f);return g;},U9=b=>{let c,d;Go();c=Hu;d=K8;return Bdz(b,AFv(c,d),ASV,GT(),8);},Buu=(a,b,c,d,e,f,g,h,i,j,k,l)=>{a.bMU=b;a.bN5=e;a.bWM=c;a.bI2=f;a.bT0=d;a.bMY=g;a.bOK=h;a.bTm=i;a.bPQ=j;a.bNj=k;a.bOi=l;},AMa=(a,b,c,d,e,f,g,h,i,j,k)=>{let l=new A7Y();Buu(l,a,b,c,d,e,f,g,h,i,j,k);return l;},Gk +=a=>{let b,c,d,e,f;b=a.bN5;c=P2(a.bMU);while(OD(c)){d=Pr(c);Lx();if(d===WU)b=AHY(b,EO());else if(d===Os){e=b.bOg;ABZ();d=AUA;b=AHY(b,e.b2$===d?e:AWg(d,e.bZf));}else if(d===OK)b=AHY(b,B$h(b.bOg,700));}d=a.bOK;AHr();if(d!==AX6){f=b.bPf-3|0;if(f<2)f=2;b=DkR(b,f);}return b;},DO3=a=>{return ((((((CFO(a.bN5)+B9M(a.bMU)|0)+a.bI2.dp()|0)+CoQ(a,a.bMY)|0)+a.bPQ.dp()|0)+CoQ(a,a.bNj)|0)+AI$(a.bOK)|0)+a.bOi|0;},CoQ=(a,b)=>{if(b===null)return 43;return b.dp();},Coi=(a,b,c)=>{if(b===null&&c===null)return 1;if(b!==null&&c!== +null)return b.cx(c);return 0;},Cvm=(a,b)=>{let c,d,e;a:{b:{c=b;if(ClQ(a.bN5,c.bN5)){b=a.bMU;d=c.bMU;if(CBb(b,d)&&a.bI2.cx(c.bI2)&&Coi(a,a.bMY,c.bMY)&&a.bPQ.cx(c.bPQ)&&Coi(a,a.bNj,c.bNj)&&BbM(a.bOK,c.bOK)&&a.bOi==c.bOi)break b;}e=0;break a;}e=1;}return e;},Nu=(b,c,d)=>{let e,f;e=CDC(b,c,d);f=K(I1,1);f.data[0]=c;return Bdz(e,b.lt(d,f),b.lu(),b.lv(),b.lw());},XK=(b,c)=>{return BIE(b,c,null);},BIE=(b,c,d)=>{let e,f,g;B9();e=(BJ(c,AVV)).cu(b.ly());f=b.lv();if(d===null)g=null;else{CM();g=DQ(d,YD);}if(g===null)g=(BJ(c, +Lv)).cu(b.ly());return Bdz(A9u(c),g,e,f,b.lw());},DKn=a=>{let b,c,d;b=B7M(a.bMU);c=BY(a.bI2);d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},UR=(b,c,d,e)=>{return Bdz(b,c,d,e,8);},B51=(a,b,c)=>{let d;if(b!==null){d=AMa(a.bMU,b,a.bT0,b,a.bI2,a.bMY,a.bOK,a.bTm,a.bPQ,a.bNj,a.bOi);if(c!==null)d=ARo(d,c);return d;}Lx();return AGm(a,Os);},C2y=a=>{let b,c,d,e,f,g;b=new A7Y;c=a.bMU;d=a.bWM;e=a.bT0;f=a.bN5;g=a.bPQ;Buu(b,c,d,e,f,g,a.bMY,a.bOK,a.bTm,g,a.bNj,a.bOi);return b;},ARo=(a,b)=>{return AMa(a.bMU,a.bWM,a.bT0, +a.bN5,b,a.bMY,a.bOK,a.bTm,a.bPQ,a.bNj,a.bOi);},Csc=(a,b)=>{return AMa(a.bMU,a.bWM,a.bT0,a.bN5,a.bI2,b,a.bOK,a.bTm,a.bPQ,a.bNj,a.bOi);},BE7=(a,b)=>{return AMa(a.bMU,a.bWM,a.bT0,DkR(a.bN5,b),a.bI2,a.bMY,a.bOK,a.bTm,a.bPQ,a.bNj,a.bOi);},AQ1=(a,b)=>{return BE7(a,a.bN5.bPf+b);},B8T=(a,b)=>{let c;c=a.bN5;c=AI6(b,c.bOg,c.bPf);return AMa(a.bMU,a.bWM,a.bT0,c,a.bI2,a.bMY,a.bOK,a.bTm,a.bPQ,a.bNj,a.bOi);},AGm=(a,b)=>{let c,d;c=a.bMU;d=CXa(c.bMW,c.bLe.b2());Lx();if(b===WU)Wm(d.bLe,0);OJ(d,b);return AMa(d,a.bWM,a.bT0,a.bN5, +a.bI2,a.bMY,a.bOK,a.bTm,a.bPQ,a.bNj,a.bOi);},A69=a=>{Lx();return AGm(a,Os);},AGT=a=>{Lx();return AGm(a,OK);},B8s=a=>{Lx();return AGm(a,Qn);},CUN=(a,b)=>{let c;c=(b.gy()).co();if(c.gv())c=b.hK();return ARo(a,a.bI2.lF(c));},AJ0=(a,b)=>{return OS(a.bMU,b);},B5j=a=>{let b;b=a.bOK;AHr();return b===ARJ?(-6):b!==A2I?0:3;},BPj=a=>{return ZM(a.bN5);}; +function CNu(){F.call(this);this.cnP=null;} +let BSv=(a,b)=>{let c,d,e,f,g,h;c=0.0;d=0.0;e=Ro(a.cnP);while(e.dY()){f=Br((e.dZ()).b57);while(Bq(f)){g=Bm(f);A3o();h=AGp(N1(g,B8g),b);c=BC(c,h.bGE);d=d+h.bGF;}d=d+10.0;}if(!A6V(a.cnP))d=d-10.0;return Cl(c+20.0,d+10.0);}; +function Dpv(){let a=this;F.call(a);a.cfV=null;a.cks=null;} +let DLg=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=b.hE();d=(CX0(a,c)).bGE;e=a.cfV;f=b.hE();g=BSv(e,f);d=BC(g.bGE,d);h=KI();i=(Eu(h,E(396))).lm(Eu(h,E(397)));h=(Eu(h,E(398))).lm(Eu(h,E(399)));j=Ge(C2(d-10.0,g.bGF-5.0),5.0);((((b.h2(Cc(i))).h2(h)).h2(Dw(3.0))).h2(Bh(3.0,3.0))).hP(j);Go();h=(b.h2(Hu)).h2(Bh(10.0,2.0));i=Ro(e.cnP);while(i.dY()){e=Br((i.dZ()).b57);while(Bq(e)){j=Bm(e);A3o();j=N1(j,B8g);h=h.h2(BW((AGp(j,f)).bGF));h.hP(j);}h=h.h2(BW(10.0));}k=(BSv(a.cfV,c)).bGF;a.cks.cC(b.h2(BW(k)));},CX0=(a,b)=>{let c,d;c= +BSv(a.cfV,b);d=a.cks.cF(b);return Cl(BC(c.bGE,d.bGE),c.bGF+d.bGF);},EXy=a=>{return a.cks.co();}; +function BDJ(){let a=this;F.call(a);a.bQv=null;a.bXz=null;a.b4E=null;a.bXp=null;} +let CKn=(a,b,c,d,e)=>{a.bXp=b;a.bQv=c;a.bXz=d;a.b4E=e;},AZc=(a,b,c,d)=>{let e=new BDJ();CKn(e,a,b,c,d);return e;},Dp9=(a,b)=>{return AZc(a.bXp,b,a.bXz,a.b4E);},Day=(a,b)=>{return AZc(a.bXp,a.bQv,b,a.b4E);},Dj9=(a,b)=>{return AZc(b,a.bQv,a.bXz,a.b4E);},BYy=(b,c,d)=>{return AZc(null,b,c,d);},AMI=(b,c,d,e)=>{return AZc(b,c,d,e);},AXy=(b,c)=>{let d,e;d=new BDJ;e=null;HW();CKn(d,e,Lu,b,c);return d;},AA7=a=>{return FQ(a.bQv);},CYt=(a,b,c,d)=>{let e,f;e=a.bQv;if(!FQ(e)&&I6(e)){if(d!==null){f=c.bGN;b=null;Jo();return Bqv(d, +e,f,c,b,JJ);}return C_(e,b,a.bXz,c);}return null;},AJM=N(0); +function ABj(){let a=this;F.call(a);a.bIc=null;a.bSH=null;a.bNJ=0;a.bMn=null;a.bMJ=0;} +let Lu=null,CqA=null,Db3=null,BVC=null,Dmx=null,HW=()=>{HW=Z(ABj);Fk2();},DHH=a=>{if(!a.bNJ)return A2c(a.bIc);return 42;},EDc=(a,b)=>{let c;c=a.bIc;b=b.bIc;return NI(c,b);},DnA=(a,b)=>{let c;if(!FQ(a)){c=a.bIc;b=b.bIc;return NI(c,b);}return FQ(b);},BFO=a=>{let b,c,d,e;b=AEj(a.bMJ,a,a.bMn);c=0;while(c{let b,c;a:{b:{b=a.bIc;if(b!==null&&!HH(b)){b=a.bIc;if(b.bGJ!=1)break b;HW();if(!Kr(D3(CqA,Be(b, +0))))break b;}c=1;break a;}c=0;}return c;},Yu=()=>{let b,c;HW();b=new ABj;c=null;Ed();Bgo(b,1,c,0,FR);return b;},PB=b=>{HW();return Ls(Bv(b));},Ls=b=>{let c,d;HW();c=new ABj;d=null;Ed();Blu(c,1,b,d,0,FR);return c;},ACN=b=>{HW();return B4(ACU(),b.bHL);},CES=(b,c)=>{HW();return B4(b,c);},B4=(b,c)=>{let d,e,f,g,h,i,j,k,l;HW();if(c!==null){d=Bk();e=new S;T(e);f=null;g=0;h=0;while(h{let d,e,f,g,h;HW();IY();if(WV(b,Bjr)){BQb(b,Db3);d=new JK;e=K(Bi,2);f=e.data;g=c.cMU;h=new S;T(h);H(H(H(h,E(408)),g),E(409));f[0]=Q(h);c=c.cMQ;g=new S;T(g);H(H(H(g,E(410)),c),E(411));f[1]=Q(g);J2(d,e);BQb(b,d);}},El5=(a,b,c,d)=>{HW();Bgo(a,b,c.bSH,c.bNJ, +d);d=a.bIc;c=c.bIc;Ea(d,c);},AEj=(a,b,c)=>{let d=new ABj();El5(d,a,b,c);return d;},Bgo=(a,b,c,d,e)=>{HW();a.bMJ=b;a.bMn=e;a.bNJ=d;a.bIc=d?null:Bk();if(d)c=null;a.bSH=c;},C0X=(a,b,c,d)=>{let e=new ABj();Bgo(e,a,b,c,d);return e;},Blu=(a,b,c,d,e,f)=>{HW();Bgo(a,b,d,e,f);if(!e)Ea(a.bIc,c);},AVM=(a,b,c,d,e)=>{let f=new ABj();Blu(f,a,b,c,d,e);return f;},AOa=(a,b)=>{if(a.bNJ){b=new Bt;X(b);J(b);}return AEj(a.bMJ,a,b);},YE=a=>{if(!a.bNJ)return AFN(a.bIc);return E(155);},BZg=(a,b)=>{let c,d;c=AEj(a.bMJ,a,a.bMn);d=c.bIc;b +=b.bIc;Ea(d,b);return c;},Dmt=(a,b)=>{let c;c=AEj(a.bMJ,a,a.bMn);Ik(c.bIc,0,b);return c;},Us=(a,b)=>{let c;c=AEj(a.bMJ,a,a.bMn);U(c.bIc,b);return c;},I6=a=>{if(!a.bNJ)return a.bIc.bGJ;return 0;},Ne=(a,b)=>{return Be(a.bIc,b);},Xo=a=>{return a.bIc.lT();},A$o=(a,b,c)=>{return AVM(a.bMJ,LV(a.bIc,b,c),a.bSH,a.bNJ,a.bMn);},CWh=a=>{let b;b=a.bIc;if(b===null)return Gi();return b;},Doa=a=>{if(I6(a))return (Ne(a,0)).p();return E(14);},FQ=b=>{HW();return !(b!==null&&!b.bNJ)?1:0;},C_=(a,b,c,d)=>{Ed();return Vy(a,b,c,d, +FR);},Vy=(a,b,c,d,e)=>{Jo();return Py(a,b,c,d,JJ,e,null,null);},WB=(a,b,c,d,e,f)=>{return Py(a,b,c,d,f,e,null,null);},BJN=(a,b,c,d,e)=>{return Py(a,b,c,d,e,a.bMn,null,null);},Py=(a,b,c,d,e,f,g,h)=>{return C$Z(a,b,c,d,e,f,g,h,0.0,0.0);},C$Z=(a,b,c,d,e,f,g,h,i,j)=>{let k,l;B$(e);k=a.bSH;if(k===null)k=c;a:{l=B51(b,g,h);if(I6(a)>0){if(!(Ne(a,0) instanceof ASc)){if(!(Ne(a,I6(a)-1|0) instanceof ASc)){if(!(Ne(a,0) instanceof BWZ))break a;else{f=A$o(a,0,1);Ed();c=KN(ByH(f,b,k,d,e,FR,l,i,j),0.0,4.0,0.0,0.0);b=ByH(A$o(a, +1,I6(a)),b,k,d,e,FR,l,i,j);Fa();return Vi(c,b,Hg);}}return CW6(a,b,k,d,I6(a)-1|0,g,h,e,f,i,j);}return CW6(a,b,k,d,0,g,h,e,f,i,j);}}return ByH(a,b,k,d,e,f,l,i,j);},CW6=(a,b,c,d,e,f,g,h,i,j,k)=>{let l,m,n,o;l=Ne(a,e);m=!(!l.bIJ.cgH?0:1)?ATW(l,d):CHe(BLI(l),l.cJ5,l.cTG,Bby(l),null,b.bI2);n=B51(b,f,g);o=ByH(a,b,c,d,h,i,n,j,k);if(m!==null){b=new Ck$;b.cgc=m;b.cvn=o;return b;}return o;},ByH=(a,b,c,d,e,f,g,h,i)=>{let j,k,l;j=S0(d.l_(b,c,f,g),a);k=d.hr();l=Cya(j,e,k,h,i);return A85(l,l,Dw(1.5));},CRV=a=>{return Chn(a.bIc);},Chn +=b=>{let c,d;HW();if(b.dV()>1){c=Br(b);while(Bq(c)){d=(Bm(c)).p();if(BO(d,E(412)))return 1;if(BO(d,E(413)))return 1;if(Dr(d,E(414)))return 1;if(Dr(d,E(415)))return 1;}return 0;}return 0;},Fk2=()=>{let b,c,d,e;b=new ABj;c=null;d=null;Ed();Blu(b,1,c,d,1,FR);Lu=b;CqA=Dp(E(416));b=new JK;e=K(Bi,1);e.data[0]=E(417);J2(b,e);Db3=b;BVC=Dm(E(418));Dmx=Dp(E(419));},A7D=N(Bx),CF=null,CO=null; +let Ft=null,CUr=null,B3=()=>{B3=Z(A7D);ED6();},FjB=(a,b,c)=>{B3();Ct(a,b,c);},BL2=(a,b)=>{let c=new A7D();FjB(c,a,b);return c;},APp=b=>{B3();if(!BG(CF.bHx,b)){if(!BG(CO.bHx,b)){if(BG(Ft.bHx,b))return Ft;return null;}return CO;}return CF;},BuK=(b,c)=>{let d;B3();B$(c);if(b!==null){d=APp(J3(b));if(d===null)return c;return d;}return c;},Czi=a=>{return FS(B_(HT(a),0,1));},A5$=(a,b,c,d,e,f)=>{let g,h;B3();if(a===CF)c.cC(b.h2(Bh(d,e)));else if(a===Ft){g=c.cF(b.hE());c.cC(b.h2(Bh(f-g.bGE-d,e)));}else if(a===CO){h= +c.cF(b.hE());c.cC(b.h2(Bh((f-h.bGE)/2.0,e)));}},BXI=(a,b,c)=>{B3();if(a!==Ft){if(a===CO)return (c-b)/2.0;return 0.0;}return c-b;},ED6=()=>{let b,c,d;CF=BL2(E(420),0);CO=BL2(E(421),1);b=BL2(E(422),2);Ft=b;c=K(A7D,3);d=c.data;d[0]=CF;d[1]=CO;d[2]=b;CUr=c;}; +function Er(){let a=this;F.call(a);a.cgU=null;a.cxF=null;} +let De=(a,b)=>{let c;c=Dg(b);if(!(a.cgU!==null&&a.cxF===c)){a.cgU=a.mh(b);a.cxF=c;}return a.cgU;},BGX=a=>{a.cgU=null;a.cxF=null;}; +function CrT(){let a=this;Er.call(a);a.bXH=null;a.csq=null;a.cMA=null;a.ch6=null;} +let Cal=(a,b)=>{let c;c=a.bXH.cF(b);return Dbo(a.cMA,c.bGF+10.0);},DJV=(a,b)=>{let c,d,e,f,g,h,i;c=new LU;d=a.bXH.cF(b);e=Cal(a,b);f=ACo(a.csq,b,0);g=!(f.bJ0>=0.0)?BXn(f):f.bNf;h=e.bIv+BC(g+12.0,d.bGE+10.0)+e.bKJ;e=a.bXH.cF(b);d=Cal(a,b);b=ACo(a.csq,b,0);i=!(b.bLa>=0.0)?CJY(b):b.bN2;MO(c,h,d.bIl+e.bGF+i+d.bJU);return c;}; +function Dpw(){let a=this;F.call(a);a.cwE=null;a.ckY=null;a.cum=null;a.c24=null;a.cLS=null;a.c1U=null;} +let EMr=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p;c=b.hE();d=a.c24.cF(c);d=Dbo(Of(a.c1U),d.bGF+10.0);c=ACo(a.cum,c,0);e=c.bJ0;f=!(e<0.0)?0.0: -e;g=c.bLa;h=Bh(f,!(g<0.0)?0.0: -g);c=a.cwE;i=b.h2(ATU(a.ckY));c=c;j=i.hE();k=De(c,j);l=Ef(c.ch6,i);m=c.bXH.cF(j);g=k.bGE;k=Buv(Ba_(Ge(C2(g,k.bGF),c.ch6.bIR)));k.bG1=c.ch6.bHm;l.hP(k);f=m.bGE;n=QE(f,0.0);if(n){o=f+10.0;p=10;}else{o=g/3.0;p=7;}e=!n?12.0:m.bGF+3.0;i=EE();CTg(i);Ec(i,o,0.0);f=p;B2(i,o,e-f);B2(i,o-f,e);B2(i,0.0,e);(l.h2(Cc(E4()))).hP(i);if(g-(c.bXH.cF(j)).bGE +<25.0)c.bXH.cC(l.h2(Bh(3.0,1.0)));else (l.h2(Bh(3.0,1.0))).hP(CFm(c.bXH));a.cum.cC(b.h2(DJ(ATU(a.ckY),DJ(ATU(d),h))));},Fwu=(a,b)=>{let c,d;c=De(a.cwE,b);b=new LU;d=a.ckY;MO(b,d.bIv+c.bGE+d.bKJ,d.bIl+c.bGF+d.bJU);return b;},EtS=a=>{return a.cLS.bKT;}; +function BiP(){F.call(this);this.ciX=null;} +let CFc=null,ATR=()=>{ATR=Z(BiP);Fbc();},Ezs=(a,b)=>{let c,d,e;ATR();c=Nq(Bo(AOM));a.ciX=c;if(b!==null){Hb();d=A4C;e=b.bT9;b=new S;T(b);BE(b,e);b=Q(b);Po(c,d,b);}},KV=a=>{let b=new BiP();Ezs(b,a);return b;},EfM=a=>{ATR();a.ciX=Nq(Bo(AOM));},BgD=()=>{let a=new BiP();EfM(a);return a;},Db=(a,b,c)=>{c=CQ6(c);Po(a.ciX,b,c);},AU$=(b,c)=>{let d;ATR();c=CQ6(c);d=BgD();Db(d,b,c);return d;},CQ6=b=>{ATR();return UQ(D3(CFc,b),E(423));},Fbc=()=>{CFc=Dp(E(424));},AOM=N(Bx),KF=null,IO=null,ANo=null,OZ=null,L8=null,A1r=null,A1s +=null,ALN=null,AUv=null,AUb=null,AV8=null,A7r=null,A7q=null,KD=null,A4C=null,Bao=null,AYM=null,Dp4=null,Hb=()=>{Hb=Z(AOM);DFJ();},Fr0=(a,b,c)=>{Hb();Ct(a,b,c);},O5=(a,b)=>{let c=new AOM();Fr0(c,a,b);return c;},DoG=a=>{return KG(FS(a.bHx),95,45);},DFJ=()=>{let b,c,d;KF=O5(E(425),0);IO=O5(E(262),1);ANo=O5(E(426),2);OZ=O5(E(427),3);L8=O5(E(428),4);A1r=O5(E(429),5);A1s=O5(E(430),6);ALN=O5(E(431),7);AUv=O5(E(432),8);AUb=O5(E(433),9);AV8=O5(E(434),10);A7r=O5(E(435),11);A7q=O5(E(436),12);KD=O5(E(437),13);A4C=O5(E(438), +14);Bao=O5(E(439),15);b=O5(E(440),16);AYM=b;c=K(AOM,17);d=c.data;d[0]=KF;d[1]=IO;d[2]=ANo;d[3]=OZ;d[4]=L8;d[5]=A1r;d[6]=A1s;d[7]=ALN;d[8]=AUv;d[9]=AUb;d[10]=AV8;d[11]=A7r;d[12]=A7q;d[13]=KD;d[14]=A4C;d[15]=Bao;d[16]=b;Dp4=c;},DGK=N(),BKB=(b,c)=>{let d,e,f,g;d=c;e=B1(d);B8();f=ZH;CV();g=B0(e,CG(CG(f,Zi),N$(d.bPb)));return Bqv(g,b,d.bGN,c,E(441),GM(g));}; +function CQt(){let a=this;F.call(a);a.cbp=null;a.cwA=null;a.cOU=null;a.cc_=null;a.cwB=null;a.cOS=null;a.cda=null;a.c_D=0.0;a.c_C=0.0;} +let C4M=(b,c,d,e)=>{return BJX(c,b,d,e,null,null,null);},CBa=(b,c,d,e)=>{return BJX(c,null,null,null,b,d,e);},C6A=(b,c,d,e,f)=>{Fa();if(f===NH)return C4M(b,c,d,e);return CBa(b,c,d,e);},Fwm=(a,b,c,d,e,f,g,h)=>{a.cbp=B$(b);a.cwA=c;a.cOU=e;a.cc_=d;a.cwB=f;a.cOS=h;a.cda=g;},BJX=(a,b,c,d,e,f,g)=>{let h=new CQt();Fwm(h,a,b,c,d,e,f,g);return h;},EVb=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=b.hE();d=a.cbp.cF(c);e=Bo4(a,a.cc_,c);f=Bo4(a,a.cda,c);g=CYi(a,c);h=e.bGF;i=h+d.bGF;j=(g.bGE-d.bGE)/2.0;if(a.cc_!==null){k=B_4(a,e,g, +a.cOU);c=a.cwA;if(c!==null)b.hH(c);a.cc_.cC(b.h2(BM(k)));if(a.cwA!==null)b.hI();}a.cbp.cC(b.h2(Bh(j,h)));a.c_D=j;a.c_C=h;if(a.cda!==null){l=B_4(a,f,g,a.cOS);c=a.cwB;if(c!==null)b.hH(c);a.cda.cC(b.h2(Bh(l,i)));if(a.cwB!==null)b.hI();}},Bo4=(a,b,c)=>{if(b===null)return Cl(0.0,0.0);return b.cF(c);},B_4=(a,b,c,d)=>{B3();if(d!==CO){if(d!==CF){if(d===Ft)return c.bGE-b.bGE;b=new BP;X(b);J(b);}return 0.0;}return (c.bGE-b.bGE)/2.0;},E2G=a=>{return a.cbp.co();},CYi=(a,b)=>{return JM(a.cbp.cF(b),JM(Bo4(a,a.cc_,b),Bo4(a, +a.cda,b)));}; +function Bzy(){F.call(this);this.cjH=null;} +let JJ=null,CjT=null,Jo=()=>{Jo=Z(Bzy);E$E();},CAj=(a,b)=>{Jo();a.cjH=b;},Bkn=a=>{let b=new Bzy();CAj(b,a);return b;},Bco=a=>{let b;b=a.cjH;if(b!==null){Jo();if(Kr(D3(CjT,b)))return DM(a.cjH);}return 0.0;},E$E=()=>{JJ=Bkn(null);CjT=Dp(E(442));}; +function I1(){let a=this;Bx.call(a);a.cWm=0;a.cBh=null;a.cRz=null;a.cZc=null;} +let Bd4=null,Bnk=null,BLs=null,ASd=null,KB=null,B35=null,B7F=null,AWZ=null,A0G=null,BTJ=null,BOL=null,Bv3=null,BYc=null,BWz=null,Bz7=null,BnF=null,BdP=null,Btr=null,BT4=null,BCz=null,BZ5=null,BPs=null,B1m=null,BTF=null,B1C=null,BlG=null,B8_=null,BGs=null,BHh=null,BvG=null,BL_=null,BZc=null,B9h=null,BOH=null,BKv=null,BnT=null,BN7=null,B8D=null,BUZ=null,BGR=null,BK$=null,BNM=null,B3e=null,BFf=null,BOy=null,BLz=null,BU9=null,A8L=null,BXV=null,BNc=null; +let BAg=null,BE$=null,B3a=null,AOD=null,AJd=null,BQ8=null,BYW=null,BZR=null,BNk=null,B7g=null,BSU=null,BZ1=null,B59=null,BID=null,BM3=null,BC$=null,BLA=null,BNU=null,BYM=null,BUv=null,B1G=null,BQQ=null,BEm=null,B15=null,BL$=null,B6y=null,BVa=null,BKx=null,BEy=null,BHK=null,A7a=null,A47=null,BEC=null,B7S=null,Bsj=null,Bdp=null,BM2=null,Bca=null,DFf=null,Fs=()=>{Fs=Z(I1);D_W();},CUJ=(a,b,c,d,e,f,g)=>{Fs();Ct(a,b,c);a.cWm=d;a.cBh=e;a.cRz=f;a.cZc=g;},BMJ=(a,b,c,d,e,f)=>{let g=new I1();CUJ(g,a,b,c,d,e,f);return g;},ED_ +=(a,b,c,d,e)=>{Fs();CUJ(a,b,c,d,e,E(443),E(394));},DH=(a,b,c,d)=>{let e=new I1();ED_(e,a,b,c,d);return e;},BjO=(a,b)=>{Fs();if(a!==AOD){if(a!==AJd){if(a!==BAg){if(a!==A0G){if(a!==BvG&&a!==BnT){B8();return CG(Cez,b);}B8();return C_B;}B8();return BoC;}B8();return BMt;}B8();return BRW;}B8();return BLt;},EHb=()=>{let b,c;Fs();b=K(I1,88);c=b.data;c[0]=Bd4;c[1]=Bnk;c[2]=BLs;c[3]=ASd;c[4]=KB;c[5]=B35;c[6]=B7F;c[7]=AWZ;c[8]=A0G;c[9]=BTJ;c[10]=BOL;c[11]=Bv3;c[12]=BYc;c[13]=BWz;c[14]=Bz7;c[15]=BnF;c[16]=BdP;c[17]=Btr;c[18] +=BT4;c[19]=BCz;c[20]=BZ5;c[21]=BPs;c[22]=B1m;c[23]=BTF;c[24]=B1C;c[25]=BlG;c[26]=B8_;c[27]=BGs;c[28]=BHh;c[29]=BvG;c[30]=BL_;c[31]=BZc;c[32]=B9h;c[33]=BOH;c[34]=BKv;c[35]=BnT;c[36]=BN7;c[37]=B8D;c[38]=BUZ;c[39]=BGR;c[40]=BK$;c[41]=BNM;c[42]=B3e;c[43]=BFf;c[44]=BOy;c[45]=BLz;c[46]=BU9;c[47]=A8L;c[48]=BXV;c[49]=BNc;c[50]=BAg;c[51]=BE$;c[52]=B3a;c[53]=AOD;c[54]=AJd;c[55]=BQ8;c[56]=BYW;c[57]=BZR;c[58]=BNk;c[59]=B7g;c[60]=BSU;c[61]=BZ1;c[62]=B59;c[63]=BID;c[64]=BM3;c[65]=BC$;c[66]=BLA;c[67]=BNU;c[68]=BYM;c[69]=BUv;c[70] +=B1G;c[71]=BQQ;c[72]=BEm;c[73]=B15;c[74]=BL$;c[75]=B6y;c[76]=BVa;c[77]=BKx;c[78]=BEy;c[79]=BHK;c[80]=A7a;c[81]=A47;c[82]=BEC;c[83]=B7S;c[84]=Bsj;c[85]=Bdp;c[86]=BM2;c[87]=Bca;return b;},D_W=()=>{Bd4=DH(E(267),0,12,EO());Bnk=DH(E(264),1,12,EO());BLs=DH(E(444),2,11,EO());ASd=DH(E(445),3,13,EO());KB=BMJ(E(446),4,17,SC(),E(443),E(395));B35=DH(E(447),5,10,EO());B7F=DH(E(263),6,12,EO());AWZ=DH(E(448),7,12,Hw());A0G=DH(E(449),8,10,EO());BTJ=DH(E(262),9,12,EO());BOL=DH(E(450),10,12,Hw());Bv3=DH(E(451),11,14,EO());BYc +=DH(E(452),12,14,EO());BWz=DH(E(453),13,14,Hw());Bz7=DH(E(454),14,14,Hw());BnF=DH(E(455),15,13,EO());BdP=DH(E(456),16,14,EO());Btr=DH(E(457),17,14,Hw());BT4=DH(E(458),18,14,EO());BCz=DH(E(459),19,14,EO());BZ5=DH(E(460),20,14,EO());BPs=DH(E(461),21,14,EO());B1m=DH(E(462),22,14,EO());BTF=DH(E(463),23,14,EO());B1C=DH(E(464),24,14,EO());BlG=DH(E(465),25,14,EO());B8_=DH(E(466),26,14,EO());BGs=DH(E(467),27,14,EO());BHh=DH(E(468),28,14,EO());BvG=DH(E(469),29,14,EO());BL_=DH(E(470),30,14,EO());BZc=DH(E(471),31,14,EO());B9h +=DH(E(472),32,14,EO());BOH=DH(E(473),33,14,EO());BKv=DH(E(474),34,14,EO());BnT=DH(E(475),35,14,EO());BN7=DH(E(476),36,14,EO());B8D=DH(E(477),37,14,EO());BUZ=DH(E(478),38,14,EO());BGR=DH(E(479),39,13,SC());BK$=DH(E(480),40,13,SC());BNM=DH(E(481),41,13,EO());B3e=DH(E(482),42,11,EO());BFf=DH(E(483),43,11,SC());BOy=DH(E(484),44,13,SC());BLz=DH(E(485),45,14,EO());BU9=DH(E(486),46,14,Hw());A8L=DH(E(261),47,14,EO());BXV=DH(E(487),48,12,EO());BNc=DH(E(488),49,14,EO());BAg=DH(E(426),50,18,EO());BE$=DH(E(489),51,14,EO());B3a +=DH(E(490),52,18,EO());AOD=BMJ(E(491),53,10,EO(),E(492),E(394));AJd=BMJ(E(493),54,10,EO(),E(492),E(394));BQ8=DH(E(494),55,14,EO());BYW=DH(E(495),56,14,Hw());BZR=DH(E(496),57,14,Hw());BNk=DH(E(497),58,14,Hw());B7g=DH(E(498),59,14,Hw());BSU=DH(E(499),60,14,Hw());BZ1=DH(E(500),61,14,Hw());B59=DH(E(501),62,14,Hw());BID=DH(E(502),63,14,Hw());BM3=DH(E(503),64,14,Hw());BC$=DH(E(504),65,14,Hw());BLA=DH(E(505),66,14,Hw());BNU=DH(E(506),67,14,Hw());BYM=DH(E(507),68,14,Hw());BUv=DH(E(508),69,14,Hw());B1G=DH(E(509),70, +14,Hw());BQQ=DH(E(510),71,14,Hw());BEm=DH(E(511),72,14,Hw());B15=DH(E(512),73,14,Hw());BL$=DH(E(513),74,14,Hw());B6y=DH(E(514),75,14,Hw());BVa=DH(E(515),76,14,Hw());BKx=DH(E(516),77,14,Hw());BEy=DH(E(517),78,14,Hw());BHK=DH(E(518),79,14,EO());A7a=DH(E(519),80,12,EO());A47=DH(E(520),81,12,Hw());BEC=DH(E(521),82,12,EO());B7S=DH(E(522),83,12,Hw());Bsj=DH(E(523),84,12,EO());Bdp=DH(E(524),85,12,Hw());BM2=DH(E(525),86,12,EO());Bca=DH(E(526),87,12,Hw());DFf=EHb();}; +function AOX(){let a=this;F.call(a);a.bK3=null;a.bIP=null;a.b2U=null;} +let CVx=null,EiZ=null,ElP=null,FfX=null,EoS=null,BnN=null,E71=null,EHO=null,DJu=null,FpM=null,DSg=null,Fu4=null,ESK=null,E5D=null,Fae=null,D9V=null,E62=null,EL5=null,E6c=null,DuW=null,E2y=null,AVF=null,EWY=null,RX=()=>{RX=Z(AOX);D4I();},DP9=(a,b,c)=>{RX();B7X(a,b,c,E(14));},L2=(a,b)=>{let c=new AOX();DP9(c,a,b);return c;},B7X=(a,b,c,d)=>{RX();if(b!==null&&c!==null&&d!==null){if(CQ(b)&&CQ(c)){a.bIP=E(14);a.bK3=E(14);a.b2U=d;return;}a.bIP=b;a.bK3=c;a.b2U=d;return;}b=new F2;X(b);J(b);},EEE=(a,b,c)=>{let d=new AOX();B7X(d, +a,b,c);return d;},EPB=(a,b)=>{let c;if(b!==a){if(b instanceof AOX){c=b;return !(Bj(a.bIP,c.bIP)&&Bj(a.bK3,c.bK3)&&Bj(a.b2U,c.b2U))?0:1;}return 0;}return 1;},ACH=()=>{RX();return CVx;},Fe9=a=>{return (FP(a.bK3)+FP(a.bIP)|0)+FP(a.b2U)|0;},DpC=a=>{let b;b=new S;T(b);L(b,!CQ(a.bIP)?a.bIP:E(527));if(!CQ(a.bK3)){Bb(b,45);L(b,a.bK3);}if(!CQ(a.b2U)&&b.bG4>0){Bb(b,45);L(b,a.b2U);}return Ue(Q5(Q(b)));},D4I=()=>{let b,c;EiZ=L2(E(528),E(529));ElP=L2(E(530),E(529));FfX=L2(E(531),E(532));EoS=L2(E(531),E(14));BnN=L2(E(528), +E(14));E71=L2(E(530),E(533));EHO=L2(E(530),E(14));DJu=L2(E(534),E(14));FpM=L2(E(534),E(535));DSg=L2(E(536),E(14));Fu4=L2(E(536),E(537));ESK=L2(E(538),E(539));E5D=L2(E(538),E(14));Fae=L2(E(540),E(541));D9V=L2(E(540),E(14));E62=L2(E(531),E(532));EL5=L2(E(531),E(532));E6c=L2(E(531),E(542));DuW=L2(E(531),E(542));E2y=L2(E(528),E(543));AVF=L2(E(528),E(544));EWY=L2(E(14),E(14));if(Bgu===null)Bgu=DCw();b=(Bgu.value!==null?Fe(Bgu.value):null);c=Eq(b,95);CVx=EEE(B_(b,0,c),CC(b,c+1|0),E(14));},CYQ=N(0),Bl3=(a,b,c,d,e)=> +{b=new BV;c=BY(Dg(a));d=new S;T(d);H(H(d,E(545)),c);Bp(b,Q(d));J(b);}; +function WX(){F.call(this);this.bU3=null;} +let A9N=(a,b)=>{a.bU3=b;},AWF=(a,b,c,d,e)=>{let f;f=new ACj;Yw();AGr(f,AKj,E(546),0,c,a.bU3);return AZ0(b,f,null,d,e);},Fy7=a=>{return a.bU3;}; +function HU(){let a=this;WX.call(a);a.b6l=null;a.cm3=null;a.cBz=null;a.cLw=null;a.cFW=null;a.cCr=0;} +let P8=(a,b)=>{A9N(a,b);a.b6l=Bk();a.cBz=G$();a.cLw=AOG();a.cFW=Bk();},EmZ=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m;f=Bk();g=a.mG(b,c,d,e);h=ZI(c);if(AJX((Mv(h)).bGP)){d=P2(g.mJ());while(OD(d)){i=Pr(d);a:{b:{while(true){b=h;if(!X2(b))break;if(ANN((Bvf(b)).bGP))break b;b=DaT(a,h);if(b===null)j=null;else if(!b.b$Z.mN(i))j=null;else{k=b.b$Z.f1(b.ccD);if(!(k!==null&&!CQ(k)))j=null;else{j=new Caz;b=b.ccD;if(b===null){j.cfe=Gi();j.ciB=null;}else{e=Bk();l=b.bIW.dX();while(l.dY()){m=(l.dZ()).bGP;U(e,m);}j.cfe=e;j.ciB=I5(b);}j.ccp +=k;}}if(j!==null)U(f,j);}break a;}h=ZI(c);Mv(h);}}return f;}b=new BV;X(b);J(b);},DaT=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,$$je;c=b;d=Bvf(c);b=Bk();U(b,d);e=Ns(b);if(!a.cCr){b=a.b6l;Jl(b);a:{b:{c:{try{if(a.cCr)break c;a.mQ(b);a.cm3=ANg(Hn(a.b6l));f=Br(a.b6l);}catch($$e){$$je=P($$e);d=$$je;break b;}g=f;while(true){try{if(!Bq(g))break;f=Bm(g);h=D3_(f);U(a.cm3,h);if(h!==null)Ea(a.cBz,h);else U(a.cFW,f);continue;}catch($$e){$$je=P($$e);d=$$je;break b;}}try{Kh(E9S(a));a.cCr=1;break c;}catch($$e){$$je=P($$e);d=$$je;break b;}}try +{G2(b);break a;}catch($$e){$$je=P($$e);d=$$je;break b;}}G2(b);J(d);}}if(d.b6Q===null){i=0;while(i=d.bGP.bGI.length)break d;if(!BRd(Bn(d.bGP,i)))break d;j=Bn(d.bGP,i);if(Df()&&!C80&&!BRd(j))break;Bb(b,(j|32)&65535);i=i+1|0;}b=new C4;X(b);J(b);}d.b6Q=Q(b);}}f=d.b6Q;if(!PT(a.cBz,f))b=a.cFW;else{b=a.cLw;d=new CC$;d.cRr=a;b=B4e(b,f,d);}d=Br(b);while +(Bq(d)){f=Bm(d);e:{f:{try{k=f.mW(e);break e;}catch($$e){$$je=P($$e);if($$je instanceof Dt){b=$$je;break f;}else{throw $$e;}}}h=Dg(f);b=BY(b);k=new S;T(k);H(H(k,E(547)),b);Ot(h,Q(k));F5();k=KS;}F5();if(k===PY){Mv(c);return C3q(f,e);}if(k!==Oo)continue;l=C3y(c.b0a,c.bWs,E2(c.b6s));g=BWr();j=0;k=l;g:{h:{i:{j:{while(true){if(!X2(k))break j;k:{b=Mv(k);g=DnS(g,b);if(AFV(b.bGP)!==null){m=1;l:{while(true){if(!X2(k))break l;b=Mv(k);g=DnS(g,b);if(AFV(b.bGP)!==null)m=m+1|0;else if(Bj((C8(b)).bGP,E(548))){m=m+(-1)|0;if +(!m)break;}}break k;}}}b=f.mW(g);if(b===KS)break h;if(b===PY)break;j=j+1|0;if(f instanceof BV9&&j>f.c0h)break i;}break g;}g=null;break g;}g=null;break g;}g=null;}if(g!==null){c.bWs=k.bWs;c.b0a=k.b0a;c.b6s=k.b6s;return C3q(f,g);}}return null;},DCe=(a,b,c,d,e)=>{let f,g,h,i,j,k;Ot(Dg(a),E(549));f=ZI(c);g=f;h=Mv(g);if(AJX(h.bGP)){a:{if(Cbl(c)){if(X2(g))Mv(g);b=AWF(a,c,h,Y2(g),e);}else{b=a.mG(b,c,d,e);i=P2(b.mJ());b:{c:while(true){if(!OD(i)){if(b===null)b=null;else{d=b.m5();if(d!==null){f=f;b=Mv(f);f=Y2(f);h=new ACj;Yw();AGr(h, +A0K,d,0,b,a.bU3);b=AZ0(c,h,null,f,e);}else if(By6(c)==2){d=f;b=AWF(a,c,Mv(d),Y2(d),e);}else{b.m6();if(b.m7())b=null;}}break a;}h=Pr(i);b.m8(h);d:{e:{while(true){d=f;if(!X2(d))break;if(ANN((Bvf(d)).bGP))break e;g=DaT(a,f);if(g===null){b=new ACj;Yw();AGr(b,AKj,E(550),0,Bvf(d),a.bU3);Mv(d);b=AZ0(c,b,null,Y2(d),e);}else if(g.b$Z.mN(h)){j=b.m9(g.b$Z,g.ccD,h);if(OI(j))d=b;else{b=DB(g.ccD);g=new ACj;Yw();k=A0K;if(OI(j))break b;AGr(g,k,j.coj,j.c1z,b,a.bU3);d=CkI(c,Y2(d),g,e,j.cVi);}b=j.cqz;if(b===null)b=d;}if(b instanceof ZB)break c;}break d;}f +=ZI(c);Mv(f);}}break a;}b=new BP;X(b);J(b);}}return b;}b=new BV;X(b);J(b);},Cp$=N(HU),Efy=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;TQ(b);c=new Bhm;Bdj();d=BN(Bo(Bhm));e=K(Bg,5);f=e.data;f[0]=BL();f[1]=Ba(1,E(551),E(552));f[2]=Bw();f[3]=Bc(E(553));f[4]=BR();Cb(c,BT(d,e));b=b;U(b,c);c=new Byp;Bfb();d=BN(Bo(Byp));g=K(Bg,8);h=g.data;h[0]=BL();h[1]=Ba(1,E(554),E(555));h[2]=Bw();h[3]=Ba(1,E(556),E(557));h[4]=Bd();h[5]=Ba(1,E(558),E(559));i=new C0;j=new Ch;e=K(Bg,2);f=e.data;f[0]=Bw();f[1]=Ba(1,E(560),E(561));Cj(j,e);C3(i, +j);h[6]=i;h[7]=BR();Cb(c,BT(d,g));U(b,c);c=new Bvb;BjH();d=BN(Bo(Bvb));e=K(Bg,4);f=e.data;f[0]=BL();f[1]=Ba(0,E(554),E(562));f[2]=Bd();f[3]=BR();Cb(c,BT(d,e));U(b,c);c=new Bg4;A5u();Cb(c,E09());U(b,c);c=new BA7;A6o();Cb(c,EIz());U(b,c);c=new BA6;A6n();Cb(c,EQF());U(b,c);U(b,ERS());U(b,E59());U(b,D6v());U(b,Fg_());U(b,ETX());c=Fet();U(b,FaI(c));k=EwB();U(b,D$H(k));l=D3A();U(b,FeC(l));U(b,Eus());U(b,EhN());U(b,D77());U(b,DBu());U(b,EuX());d=FuE();U(b,EnB(d));U(b,Ete(c,0));U(b,EUX(k,0));U(b,EO1(d,0));U(b,DLH(l, +0));U(b,E8Z());U(b,Fi6());U(b,E5h());U(b,E9A());U(b,Fan());U(b,FnJ());U(b,E6Q());U(b,EQE());U(b,D81());U(b,Evr());U(b,DSe());U(b,DFd());U(b,EzG());U(b,EWU());U(b,EMX());U(b,EnQ());U(b,EMn());},EOO=(a,b,c,d,e)=>{b=new Bne;B8B();F8();RU(b,c,Ua,d,e);b.bUP=Bk();b.bJZ=Bk();b.c0v=Bk();b.b7d=Dy();b.cXa=Uu();b.cIp=A6U(1);b.cvw=0;b.crS=0;c=new C1E;BEj();c.b5d=K(F,10);c.bZr=0;c.c3A=0;b.b4d=c;b.b4a=null;b.cbN=Bk();c=new CVL;c.b8m=0;c.cfU=E(14);b.bU9=c;b.cpR=1;b.ccC=PZ(Bo(AP6));b.cIw=Bk();return b;},CN5=N(HU),D4p=(a,b)=> +{let c,d,e,f,g,h,i,j;c=AXU();d=b;U(d,c);U(d,BvM());U(d,CDD(a));A6i(b);c=new B7a;e=BN(Bo(B7a));f=K(Bg,7);g=f.data;g[0]=BL();g[1]=Ba(1,E(563),E(564));g[2]=Bw();g[3]=Bc(E(82));g[4]=Bw();g[5]=Ba(1,E(565),E(566));g[6]=BR();Cb(c,BT(e,f));U(d,c);Db8(b);U(d,BTN());U(d,B31());c=new Bml;Zb();h=D1M();HE();e=Kl;HA();Iy(c,h,e,G0,Csd);U(d,c);c=new BoA;AXs();i=BN(Bo(BoA));f=K(Bg,11);g=f.data;g[0]=BL();g[1]=Ba(0,E(554),E(38));g[2]=Bw();g[3]=BTr();g[4]=D2(E(567));E3();g[5]=Fy;g[6]=Bd();g[7]=Kp();g[8]=Bd();g[9]=Bc(E(568));g[10] +=BR();Iy(c,BT(i,f),Kl,G0,CwC);U(d,c);U(d,B1k());U(d,BVi());U(d,BDS());c=new Bvw;AO9();Cb(c,EUM());U(d,c);c=new Bkj;AZI();Cb(c,DtT());U(d,c);U(d,Eb5());U(d,E6K());U(d,Eh5());U(d,Fn5());U(d,CT5());U(d,EaQ());U(d,CXB());U(d,Dn9());c=new AT2;AHA();C4A(c,AT3);U(d,c);U(d,DK0(A51));U3();h=BfW;U(d,BJo(h));U(d,DHg());U(d,EIc());U(d,D29());U(d,ECz());c=new AZO;F8();CQ0(c,Wa);U(d,c);U(d,Fgx(Wa));c=DAQ();U(d,COx(c,1));U(d,COx(c,0));e=new WO;j=EY$();Jx();Bc3(e,E(569),j,JB);U(d,BQj(e));U(d,B7K());U(d,ARk(e,1));U(d,ARk(e, +0));U(d,BeC(h,0));i=Cas(JB);U(d,BjJ(i));U(d,Bcw(i,0));U(d,DSw());U(d,DBa());AAb();U(d,B5U);U(d,B5V);Bnh(b);Bky(b);},DOw=(a,b,c,d,e)=>{let f;b=new B0x;F8();f=Wa;BBS();BnR(b,c,f,d,e);b.chG=Bk();Bf6(b,E(423));b.cDv=0;return b;},CEX=N(HU),FnA=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=new BNq;BaX();d=K(C7,4);e=d.data;e[0]=Ce(E(570));e[1]=QT();e[2]=Ce(E(571));e[3]=X1();V4(c,DP(d));f=b;U(f,c);TQ(b);b=new BRI;A3D();d=K(C7,4);e=d.data;e[0]=DZ(E(572),Ce(E(573)));e[1]=EW();e[2]=Ce(E(574));e[3]=X1();V4(b,DP(d));U(f,b);b=new B5n;AXn();d +=K(C7,9);e=d.data;e[0]=Ce(E(575));e[1]=EW();e[2]=Ce(E(576));e[3]=QT();g=new Oy;h=K(C7,2);i=h.data;i[0]=(Cwh()).cPj;i[1]=AWQ(Ce(E(577)));QL(g,h);e[4]=g;e[5]=AWQ(DZ(E(578),Ce(E(579))));e[6]=QT();e[7]=AWQ(Ce(E(580)));e[8]=X1();V4(b,DP(d));U(f,b);b=new B8Q;A0N();d=K(C7,2);j=d.data;c=new Oy;e=K(C7,2);k=e.data;h=K(C7,3);i=h.data;i[0]=Ce(E(581));i[1]=QT();i[2]=Ce(E(575));k[0]=DP(h);k[1]=Ce(E(582));QL(c,e);j[0]=c;j[1]=X1();V4(b,DP(d));U(f,b);b=new Bjx;A_O();c=EB5();HE();l=Kl;HA();Iy(b,c,l,G0,CIQ);U(f,b);c=new ALE;AM5();b +=new DrT;l=BN(Bo(ALE));g=new S;T(g);H(H(g,l),E(583));l=Q(g);e=K(Bg,11);d=e.data;d[0]=BL();d[1]=Bc(E(584));d[2]=Bw();d[3]=Ba(1,E(585),E(586));d[4]=Bd();d[5]=Kp();d[6]=Bd();d[7]=Bc(E(82));d[8]=Bd();d[9]=Ba(1,E(455),E(566));d[10]=BR();l=BT(l,e);b.cJL=c;Cb(b,l);U(f,b);U(f,DGy(c,0));l=new AB0;Jx();BTC(l,JB);U(f,BjJ(l));U(f,Bcw(l,0));b=new Dg8;V4(b,Erp());U(f,b);b=new B2w;AWy();V4(b,DOC());U(f,b);U(f,D9n());U(f,DB8());U(f,EMb());},EJl=(a,b,c,d,e)=>{b=new CfY;F8();BnR(b,c,Ry,d,e);Bf6(b,null);return b;},COo=N(HU),Eel +=(a,b)=>{let c,d,e,f,g,h,i;c=AXU();d=b;U(d,c);U(d,BvM());U(d,CDD(a));TQ(b);b=new BOg;Cb(b,EnE());U(d,b);U(d,BTN());U(d,B31());U(d,CXB());U(d,Dn9());U(d,CT5());U3();e=BfW;U(d,BeC(e,0));c=new AB0;Jx();BTC(c,JB);U(d,BjJ(c));U(d,Bcw(c,0));f=new WO;g=new DD;h=K(Bg,7);i=h.data;i[0]=Bc(E(587));i[1]=Bc(E(588));i[2]=Bc(E(589));i[3]=Bc(E(590));i[4]=Bc(E(591));i[5]=Bc(E(592));i[6]=Bc(E(593));Sf(g,E(594),h);Bc3(f,E(595),g,JB);U(d,BQj(f));U(d,BJo(e));U(d,B7K());b=new BqA;AFL();Cb(b,EE0());U(d,b);AAb();U(d,B5U);U(d,B5V);U(d, +ARk(f,1));U(d,ARk(f,0));U(d,BeC(e,0));U(d,B1k());U(d,BVi());U(d,BDS());b=new BmI;AS_();Cb(b,E0c());U(d,b);b=new Bxl;AWh();e=BN(Bo(Bxl));h=K(Bg,14);i=h.data;i[0]=BL();i[1]=Bc(E(596));i[2]=Bw();i[3]=(B_Q()).bH3;i[4]=Bw();i[5]=Ba(1,E(594),E(597));i[6]=ABy(E(578));E3();i[7]=Fy;i[8]=Bd();i[9]=Kp();i[10]=Bd();i[11]=Bc(E(598));i[12]=Ba(1,E(599),E(566));i[13]=BR();f=BT(e,h);HE();c=Kl;HA();Iy(b,f,c,G0,DkT);U(d,b);b=new BpK;AUh();Cb(b,Fv9());U(d,b);b=new Bk2;A7P();Cb(b,Fju());U(d,b);},Fhw=(a,b,c,d,e)=>{b=new BZ9;F8();BnR(b, +c,AHH,d,e);return b;},Dj1=N(HU),EGu=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=AXU();d=b;U(d,c);U(d,BvM());U(d,B31());c=new BoK;ARu();Cb(c,D1V());U(d,c);c=new B1T;Cb(c,Fhb());U(d,c);c=new BJO;Cb(c,ERP());U(d,c);c=new Byo;AUw();Cb(c,EY0());U(d,c);c=new Bc4;AQC();Cb(c,E26());U(d,c);c=new BAb;Bzk();e=BN(Bo(BAb));f=K(Bg,3);g=f.data;g[0]=BL();g[1]=LZ(1,E(600));g[2]=BR();Cb(c,BT(e,f));U(d,c);c=new BCk;h=BN(Bo(BCk));f=K(Bg,7);g=f.data;g[0]=BL();i=new DD;j=K(Bg,2);k=j.data;k[0]=Ba(1,E(601),E(597));k[1]=Ba(1,E(602),E(603));Eb(i, +j);g[1]=i;g[2]=Bd();g[3]=Bc(E(82));g[4]=Bd();g[5]=Ba(1,E(604),E(566));g[6]=BR();Cb(c,BT(h,f));U(d,c);c=new Bn0;Bjv();l=BN(Bo(Bn0));f=K(Bg,3);g=f.data;g[0]=BL();g[1]=Ba(1,E(554),E(605));g[2]=BR();Cb(c,BT(l,f));U(d,c);h=new WO;c=new DD;f=K(Bg,2);g=f.data;g[0]=Bc(E(587));g[1]=Bc(E(593));Sf(c,E(594),f);Jx();Bc3(h,E(606),c,ABo);U(d,ARk(h,1));U(d,ARk(h,0));U(d,BQj(h));c=Cas(WY);U(d,BjJ(c));U(d,Bcw(c,0));U(d,B7K());U3();m=BfW;U(d,BJo(m));U(d,BeC(m,0));U(d,B1k());U(d,BVi());U(d,BDS());TQ(b);U(d,BTN());},E5$=(a,b,c, +d,e)=>{b=new BJW;Bou();F8();BnR(b,c,RA,d,e);b.cru=0;Bf6(b,E(423));return b;},CmG=N(HU),D4B=(a,b)=>{let c,d,e,f,g,h;c=AXU();d=b;U(d,c);TQ(b);b=new Bnr;Bnu();e=BN(Bo(Bnr));f=K(Bg,7);g=f.data;g[0]=BL();g[1]=Bc(E(607));g[2]=Ba(1,E(608),E(609));g[3]=Ba(1,E(610),E(611));g[4]=Bc(E(607));g[5]=Ba(1,E(470),E(612));g[6]=BR();Cb(b,BT(e,f));U(d,b);b=new Bif;A2p();Cb(b,EqO());U(d,b);b=new BxU;AXg();Cb(b,FlU());U(d,b);b=new BdC;BdB();h=BN(Bo(BdC));f=K(Bg,3);g=f.data;g[0]=BL();g[1]=Bc(E(613));g[2]=BR();Cb(b,BT(h,f));U(d,b);b +=new BvI;A$J();Cb(b,DLG());U(d,b);b=new BvK;AZ4();Cb(b,EtH());U(d,b);b=new BvS;ATL();c=E3i();HE();h=Kl;HA();Iy(b,c,h,G0,CjY);U(d,b);b=new Brn;A$i();Cb(b,DxI());U(d,b);b=new BtF;A86();Cb(b,DO2());U(d,b);U(d,EGm());U(d,Cuv());U(d,B8K(Cuv(),50));U(d,En7());U(d,E1r());U(d,DpY());U(d,C9s());U(d,B8K(C9s(),50));U(d,ERK());U(d,E5V());U(d,EuJ());U(d,EzT());U(d,EyR());U(d,E1v());U(d,Em2());U(d,EMQ());U(d,DYh());U(d,DXS());U(d,D4g());U(d,Fg4());U(d,EDZ());U(d,Fna());U(d,Dvu());U(d,DPV());U(d,DxT());U(d,Ft1());U(d,E6L());U(d, +EPF());U(d,DZv());U(d,EUQ());U(d,EFe());U(d,Fa7());U(d,FhN());U(d,DQS());U(d,FfE());U(d,Fa3());U(d,Fbt());U(d,Far());U(d,B8K(DpY(),50));},DAH=(a,b,c,d,e)=>{let f;b=new Crp;F8();RU(b,c,Ry,d,e);c=new B8M;f=b.bGM;d=Cf(b);BLG();c.b9C=Bk();c.clg=Bk();c.b3b=Bk();c.bJW=null;e=BmX();c.cGs=e;c.cxA=e;c.cim=FF();c.bPw=f;c.cgz=d;b.bJg=c;b.cvX=0;return b;},B8q=N(WX),D6I=(a,b,c,d,e)=>{b=new BV;c=BY(Dg(a));d=new S;T(d);H(H(d,E(545)),c);Bp(b,Q(d));J(b);},Exk=(a,b,c,d,e)=>{let f,g,h,i,j,k,$$je;b=B$U(c);if(By6(b)==3){f=ZI(b);if +(!Cbl(b)){d=f;g=Mv(d);if(AJX(g.bGP)){if(X2(d)){h=Mv(d);if(!ANN(h.bGP)){i=h.bGP;a:{b:{c:{try{if(Qc(i,E(614))){j=DVz(b,e);break a;}if(Qc(i,E(615))){j=E6D(b,e);break a;}break b;}catch($$e){$$je=P($$e);if($$je instanceof Dt){c=$$je;break c;}else{throw $$e;}}}c=BY(c);i=new S;T(i);H(H(i,E(616)),c);AJZ(Q(i));}j=null;}if(j===null){k=new ACj;Yw();AGr(k,AKj,E(550),0,h,a.bU3);return AZ0(b,k,null,Y2(d),e);}return j;}return AWF(a,b,h,Y2(d),e);}return AWF(a,b,g,Y2(d),e);}b=new BV;X(b);J(b);}d=f;return AWF(a,b,Mv(d),Y2(d), +e);}return null;},CHa=N(B8q),Cn5=N(HU),DZW=(a,b)=>{let c,d,e,f;Bky(b);A6i(b);Bnh(b);c=new B3G;d=BN(Bo(B3G));e=K(Bg,3);f=e.data;f[0]=BL();f[1]=Ba(1,E(617),E(566));f[2]=BR();Oi(c,0,BT(d,e));U(b,c);},E$i=(a,b,c,d,e)=>{let f,g;b=new Cu0;d=Bk();F8();RU(b,c,ANM,null,e);f=new CEW;c=c.cs2;g=e.bWf;f.crl=Dy();f.cxC=Dy();f.dbt=c;f.c_K=g;b.b1Z=f;b.clk=d;return b;},CVq=N(HU),DtJ=(a,b)=>{let c,d,e,f,g,h;Bnh(b);Bky(b);A6i(b);c=new Uv;Bq8();XL(c,Crl);d=b;U(d,c);b=new Uv;Byv();XL(b,CGs);U(d,b);c=new Uv;A94();XL(c,CUT);U(d,c);b +=new Uv;BoQ();XL(b,CAt);U(d,b);b=new Uv;Buz();XL(b,CvJ);U(d,b);b=new Uv;BAB();XL(b,Cvy);U(d,b);b=new Uv;Bkr();XL(b,DiX);U(d,b);b=new Uv;Bdt();XL(b,CYY);U(d,b);b=new Uv;Bi3();XL(b,Dp_);U(d,b);b=new BNw;e=BN(Bo(BNw));f=K(Bg,11);g=f.data;g[0]=BL();g[1]=Ba(1,E(618),E(597));g[2]=Bd();g[3]=LZ(1,E(619));g[4]=Ba(1,E(620),E(621));g[5]=LZ(1,E(622));g[6]=Bc(E(623));g[7]=Bd();g[8]=Ba(1,E(624),E(597));g[9]=Bd();g[10]=BR();Cb(b,BT(e,f));U(d,b);b=new Bwv;Bli();h=BN(Bo(Bwv));f=K(Bg,15);g=f.data;g[0]=BL();g[1]=Bc(E(598));g[2] +=Ba(1,E(625),E(626));g[3]=Bc(E(627));g[4]=Bd();g[5]=LZ(1,E(619));g[6]=Ba(1,E(620),E(621));g[7]=LZ(1,E(622));g[8]=Bc(E(623));g[9]=Bd();g[10]=Bc(E(598));g[11]=Ba(1,E(628),E(626));g[12]=Bc(E(627));g[13]=Bd();g[14]=BR();Cb(b,BT(h,f));U(d,b);b=new Bwr;Bbc();Cb(b,Eof());U(d,b);b=new BvZ;A4k();Cb(b,DX_());U(d,b);b=new Bcf;A$k();Cb(b,EDh());U(d,b);b=new Bnv;BaO();Cb(b,ELj());U(d,b);b=new BeK;A_m();Cb(b,E$5());U(d,b);b=new Beb;A$P();Cb(b,EhQ());U(d,b);b=new BtL;A8B();Cb(b,Fxn());U(d,b);b=new BC0;ANd();V4(b,DF$());U(d, +b);U(d,DzR());U(d,DEH());U(d,E0$());U(d,DY_());U(d,E5c());U(d,DVZ());U(d,FoP());U(d,Eo5());},EHY=(a,b,c,d,e)=>{let f,g,h;b=new BVo;Btt();F8();RU(b,c,AHv,null,e);c=new DcB;c.cGS=Bk();c.cmS=E9();c.cnd=E9();b.bNU=c;c=new CsY;c.bKj=AKE();b.bPI=c;c=new CsD;Xg();c.bS6=AAr;c.ct9=1.0;b.b$H=c;c=new Dj5;RX();c.cg_=BnN;e=new BS5;AEg();Dcz(e,ASi,4);c.cqm=e;b.b71=c;c=new Dcs;c.bNx=BtD();c.coT=Dy();c.cJr=Dy();c.cl3=Dy();c.cz7=Dy();c.cCl=G$();c.cR0=Dy();d=new C$9;f=K(B1w,0).data;d.b9r=Bk();g=f.length;h=0;while(h{let c,d,e,f,g,h,i;TQ(b);c=BvM();d=b;U(d,c);b=new Bd7;A$L();e=BN(Bo(Bd7));f=K(Bg,7);g=f.data;g[0]=BL();g[1]=Ba(1,E(554),E(629));g[2]=DI(Ba(1,E(630),E(631)));g[3]=Ba(1,E(632),E(633));g[4]=Bc(E(82));g[5]=Ba(1,E(565),E(566));g[6]=BR();h=BT(e,f);HE();c=Kl;HA();Iy(b,h,c,G0,CfH);U(d, +b);b=new Bm_;A_I();i=BN(Bo(Bm_));f=K(Bg,7);g=f.data;g[0]=BL();g[1]=Ba(1,E(554),E(634));g[2]=DI(Ba(1,E(630),E(631)));g[3]=Ba(1,E(632),E(633));g[4]=Bd();g[5]=Ba(1,E(470),E(566));g[6]=BR();Oi(b,0,BT(i,f));U(d,b);b=new Bx$;BiC();e=BN(Bo(Bx$));f=K(Bg,5);g=f.data;g[0]=BL();g[1]=Ba(1,E(554),E(635));g[2]=Bd();g[3]=Ba(1,E(470),E(566));g[4]=BR();Cb(b,BT(e,f));U(d,b);b=new Br5;Bj5();e=BN(Bo(Br5));f=K(Bg,7);g=f.data;g[0]=BL();g[1]=Ba(1,E(554),E(636));g[2]=DI(Ba(1,E(630),E(631)));g[3]=Ba(1,E(632),E(633));g[4]=Bd();g[5]= +Ba(1,E(470),E(566));g[6]=BR();Oi(b,0,BT(e,f));U(d,b);b=new BRH;e=BN(Bo(BRH));f=K(Bg,9);g=f.data;g[0]=BL();g[1]=Bc(E(637));g[2]=Bc(E(638));g[3]=Ba(1,E(572),E(639));g[4]=Bc(E(638));g[5]=Bc(E(637));g[6]=LZ(1,E(640));g[7]=Bc(E(637));g[8]=BR();Cb(b,BT(e,f));U(d,b);},Dui=(a,b,c,d,e)=>{let f;b=new DgI;F8();RU(b,c,ALi,null,e);c=Bk();b.b8q=c;b.cn_=1;f=b.bGM;d=f;Pf();d.bNy=AFF;d=BM$(f);U(c,d);return b;},C48=N(HU),Edt=(a,b)=>{let c,d,e,f,g,h;TQ(b);c=DhI(1);d=b;U(d,c);U(d,DhI(0));b=new BqC;AOZ();c=DM1();HE();e=Kl;HA();Iy(b, +c,e,G0,C_F);U(d,b);U(d,CEq(1));U(d,CEq(0));b=new Bp7;AOR();Iy(b,D18(),Kl,G0,CGp);U(d,b);b=new B3P;f=BN(Bo(B3P));g=K(Bg,11);h=g.data;h[0]=BL();h[1]=Ba(1,E(618),E(641));h[2]=Bd();h[3]=Ba(0,E(642),E(643));h[4]=Bd();h[5]=Ba(1,E(624),E(641));h[6]=Bd();h[7]=(CYr()).bH3;h[8]=D2(E(578));h[9]=Ba(1,E(644),E(645));h[10]=BR();Cb(b,BT(f,g));U(d,b);},Fpt=(a,b,c,d,e)=>{b=new B02;A64();F8();RU(b,c,AKn,null,e);b.b$G=E9();b.cre=Bk();return b;},Deh=N(HU),DV0=(a,b)=>{let c,d,e,f,g;TQ(b);c=new Bwi;Bcb();d=BN(Bo(Bwi));e=K(Bg,5);f +=e.data;f[0]=BL();f[1]=Ba(1,E(554),E(646));f[2]=Bd();f[3]=Bc(E(647));f[4]=BR();Cb(c,BT(d,e));b=b;U(b,c);c=new Br0;BkJ();g=BN(Bo(Br0));e=K(Bg,5);f=e.data;f[0]=BL();f[1]=Bd();f[2]=Bc(E(648));f[3]=Bc(E(649));f[4]=BR();Cb(c,BT(g,e));U(b,c);c=new BPd;g=BN(Bo(BPd));e=K(Bg,7);f=e.data;f[0]=BL();f[1]=Bd();f[2]=Ba(1,E(563),E(650));f[3]=Bd();f[4]=Ba(2,E(277),E(651));f[5]=Bc(E(652));f[6]=BR();Cb(c,BT(g,e));U(b,c);c=new Bfz;A4o();g=BN(Bo(Bfz));e=K(Bg,8);f=e.data;f[0]=BL();f[1]=Bd();f[2]=Bc(E(653));f[3]=Bd();f[4]=Ba(1,E(563), +E(654));f[5]=Bd();f[6]=Bc(E(568));f[7]=BR();Cb(c,BT(g,e));U(b,c);c=new Bnf;BaJ();g=BN(Bo(Bnf));e=K(Bg,8);f=e.data;f[0]=BL();f[1]=Bd();f[2]=Bc(E(655));f[3]=Bd();f[4]=Ba(1,E(563),E(656));f[5]=Bd();f[6]=Bc(E(568));f[7]=BR();Cb(c,BT(g,e));U(b,c);c=new BFh;d=BN(Bo(BFh));e=K(Bg,10);f=e.data;f[0]=BL();f[1]=Bd();f[2]=Ba(1,E(657),E(641));f[3]=Bd();f[4]=Bc(E(658));f[5]=Bd();f[6]=Ba(1,E(659),E(641));f[7]=Bd();f[8]=Bc(E(652));f[9]=BR();Cb(c,BT(d,e));U(b,c);c=new BxA;AYv();Cb(c,EFz());U(b,c);c=new Bxn;BuG();g=BN(Bo(Bxn));e +=K(Bg,5);f=e.data;f[0]=BL();f[1]=Bd();f[2]=Bc(E(613));f[3]=Bd();f[4]=BR();Cb(c,BT(g,e));U(b,c);U(b,AXU());},FtM=(a,b,c,d,e)=>{b=new B1j;Btx();F8();RU(b,c,AJa,null,e);b.bQG=E9();b.bLb=Bk();b.b1H=Bk();b.bTU=Bk();c=new CaO;c.coE=Bk();c.bZU=Bk();b.bUl=c;b.dcp=5.0;return b;},BZu=N(WX),DGn=(a,b,c,d,e)=>{b=new BV;c=BY(Dg(a));d=new S;T(d);H(H(d,E(545)),c);Bp(b,Q(d));J(b);},EUs=(a,b,c,d,e)=>{let f,g,h,i;b=B$U(c);c=ZI(b);Mv(c);f=new CrD;AIR(f,b,e);f.cHx=Bk();g=1;while(X2(c)){h=Mv(c);if(g&&h!==null&&((C8(h)).bGP.bGI.length +?0:1))continue;g=0;if(ANN(h.bGP)){if(By6(b)==2&&!BO((Be(b.bND,0)).bGP,E(660)))return AWF(a,b,h,Y2(c),e);return f;}i=h.bGP;f=f;U(f.cHx,i);}return f;},Czw=N(BZu),Ce8=N(HU),EsO=(a,b)=>{let c,d,e,f,g,h,i,j,k;TQ(b);c=AXU();d=b;U(d,c);b=new BA$;A$1();e=BN(Bo(BA$));f=K(Bg,10);g=f.data;g[0]=BL();h=new C0;c=new Ch;i=K(Bg,2);j=i.data;j[0]=Ba(1,E(661),E(662));j[1]=Bw();Cj(c,i);C3(h,c);g[1]=h;g[2]=Ba(1,E(554),E(663));g[3]=Bw();c=new C0;k=new Ch;i=K(Bg,4);j=i.data;j[0]=Ba(1,E(664),E(603));j[1]=D2(E(578));j[2]=Bc(E(665));j[3] +=Bw();Cj(k,i);C3(c,k);g[4]=c;g[5]=Ba(1,E(594),E(666));g[6]=D2(E(667));g[7]=Bd();c=new DD;i=K(Bg,1);i.data[0]=(C13()).bH3;Eb(c,i);g[8]=c;g[9]=BR();Cb(b,BT(e,f));U(d,b);b=new Bk4;Bbk();Cb(b,E0z());U(d,b);b=new Bx3;A3O();Cb(b,DXX());U(d,b);b=new BuP;Bhk();e=BN(Bo(BuP));i=K(Bg,8);j=i.data;j[0]=BL();h=new C0;c=new Ch;f=K(Bg,2);g=f.data;g[0]=Ba(1,E(661),E(662));g[1]=Bw();Cj(c,f);C3(h,c);j[1]=h;j[2]=Bc(E(668));j[3]=Bw();c=new C0;k=new Ch;f=K(Bg,4);g=f.data;g[0]=Ba(1,E(664),E(603));g[1]=D2(E(578));g[2]=Bc(E(665));g[3] +=Bw();Cj(k,f);C3(c,k);j[4]=c;j[5]=Ba(1,E(594),E(666));j[6]=D2(E(667));j[7]=BR();Cb(b,BT(e,i));U(d,b);b=new B2y;Cb(b,Eng());U(d,b);b=new BDn;Cb(b,DQ8());U(d,b);b=new B7W;Cb(b,DVE());U(d,b);b=new BZw;Cb(b,EPZ());U(d,b);b=new Bg7;A8e();Cb(b,Ern());U(d,b);b=new BA0;A1D();Cb(b,EQ4());U(d,b);b=new BHC;Cb(b,DvW());U(d,b);b=new Bpo;A4a();Cb(b,Dt5());U(d,b);U(d,Edx());b=new BMD;Cb(b,EpV());U(d,b);U(d,DSh());U(d,FiT());U(d,DHR());U(d,DZo());U(d,FfM());U(d,DCW());U(d,FfC());},E3j=(a,b,c,d,e)=>{b=new Ctb;F8();RU(b,c,AIK, +null,e);b.deK=5.0;b.cn1=Dy();b.bPo=E9();b.cuY=Dy();b.cFO=Bk();b.cml=Bk();c=new C9x;e=b.bGM;c.bPh=UJ();c.bRQ=V(50);NV();c.ceP=Yk;c.b1u=V(-1);c.bY4=e;b.bLJ=c;ANY();b.cB9=A5Q;b.bV8=0;return b;},CZw=N(HU),EF7=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=new Bnn;A6t();Oi(c,0,FjG());d=b;U(d,c);c=new Bgn;ARw();Oi(c,0,Fal());U(d,c);c=new Bq3;Bvd();e=BN(Bo(Bq3));f=K(Bg,14);g=f.data;g[0]=BL();g[1]=Bd();g[2]=Bc(E(669));g[3]=Bd();g[4]=DI(Ba(1,E(567),E(670)));g[5]=Bd();g[6]=DI(Ba(1,E(563),E(671)));g[7]=Bd();g[8]=Ba(1,E(565),E(672));g[9] +=Bd();g[10]=DI(Ba(1,E(608),E(673)));h=new C0;i=new Ch;j=K(Bg,2);k=j.data;k[0]=Bw();k[1]=Ba(1,E(674),E(675));Cj(i,j);C3(h,i);g[11]=h;g[12]=Bd();g[13]=BR();Oi(c,0,BT(e,f));U(d,c);c=new Ber;A6$();Oi(c,0,E21());U(d,c);c=new BhB;Bam();Oi(c,0,EHx());U(d,c);c=new BiA;A4Q();Oi(c,0,Fl$());U(d,c);c=new BlE;Bfa();e=BN(Bo(BlE));f=K(Bg,7);g=f.data;g[0]=BL();g[1]=Bd();g[2]=Bc(E(220));g[3]=Bw();g[4]=Ba(1,E(585),E(639));g[5]=Bd();g[6]=BR();Oi(c,0,BT(e,f));U(d,c);c=new Bfx;BwF();e=BN(Bo(Bfx));f=K(Bg,7);g=f.data;g[0]=BL();g[1] +=Bd();g[2]=Bc(E(676));g[3]=Bw();g[4]=Ba(1,E(677),E(678));g[5]=Bd();g[6]=BR();Oi(c,0,BT(e,f));U(d,c);c=new Bm0;Bwx();h=BN(Bo(Bm0));f=K(Bg,7);g=f.data;g[0]=BL();g[1]=Bd();g[2]=Bc(E(679));g[3]=Bw();g[4]=Ba(1,E(680),E(681));g[5]=Bd();g[6]=BR();Oi(c,0,BT(h,f));U(d,c);c=new BvY;A$0();Oi(c,0,DMM());U(d,c);TQ(b);}; +let FtK=(a,b,c,d,e)=>{b=new CAm;F8();RU(b,c,ALo,null,e);b.cd1=Bk();VP();b.cpr=A_F;b.bRN=B4l();b.ch4=Bk();b.bQW=Bk();b.bTP=B4l();SH();b.cj0=AVn;VR();c=Zf;b.cj2=c;b.ckv=c;AIq();b.ciJ=A8T;RE();b.chF=BaM;b.cna=Bk();return b;},CWs=N(HU),EAZ=(a,b)=>{let c,d,e,f,g;TQ(b);c=new Bsk;BsV();d=BN(Bo(Bsk));e=K(Bg,5);f=e.data;f[0]=BL();f[1]=Ba(1,E(554),E(682));f[2]=Bd();f[3]=Bc(E(647));f[4]=BR();Cb(c,BT(d,e));b=b;U(b,c);c=new BbR;BA8();g=BN(Bo(BbR));e=K(Bg,8);f=e.data;f[0]=BL();f[1]=Bc(E(683));f[2]=Bd();f[3]=Bc(E(684));f[4] +=Bd();f[5]=Ba(1,E(685),E(686));f[6]=Bd();f[7]=BR();Cb(c,BT(g,e));U(b,c);c=new Bzr;BwK();g=BN(Bo(Bzr));e=K(Bg,8);f=e.data;f[0]=BL();f[1]=Bc(E(687));f[2]=Bd();f[3]=Bc(E(684));f[4]=Bd();f[5]=Ba(1,E(688),E(686));f[6]=Bd();f[7]=BR();Cb(c,BT(g,e));U(b,c);c=new BeV;BeX();g=BN(Bo(BeV));e=K(Bg,8);f=e.data;f[0]=BL();f[1]=Bc(E(689));f[2]=Bd();f[3]=Bc(E(684));f[4]=Bd();f[5]=Ba(1,E(690),E(691));f[6]=Bd();f[7]=BR();Cb(c,BT(g,e));U(b,c);c=new Boh;Bil();d=BN(Bo(Boh));e=K(Bg,8);f=e.data;f[0]=BL();f[1]=Bc(E(692));f[2]=Bd();f[3] +=Bc(E(684));f[4]=Bd();f[5]=Ba(1,E(693),E(694));f[6]=Bd();f[7]=BR();Cb(c,BT(d,e));U(b,c);c=new Bu8;BAx();d=BN(Bo(Bu8));e=K(Bg,8);f=e.data;f[0]=BL();f[1]=Bc(E(695));f[2]=Bd();f[3]=Bc(E(684));f[4]=Bd();f[5]=Ba(1,E(696),E(697));f[6]=Bd();f[7]=BR();Cb(c,BT(d,e));U(b,c);c=new BoV;ZR();Cb(c,Fic());U(b,c);c=new Bt6;A5M();Cb(c,DRB());U(b,c);},EeI=(a,b,c,d,e)=>{b=new B0g;AN_();F8();RU(b,c,AKW,null,e);b.bPB=16;b.b2S=24.0;b.cj1=32.0;b.cGX=8;b.cAm=1;b.cxi=0;AF7();b.b4L=AVj;b.ceD=Bk();b.ccN=Bk();b.cpz=Bk();return b;},CR0 +=N(WX),Fp_=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,$$je;f=Bk();g=null;a:{b:{try{h=CR();i=new Bnm;g=i;B25(i,ZI(c));j=Dov(i);Bm(j);c:while(true){g=i;k=Bm(j);if(!Bq(j))break;d:{g=i;if(!BO(k,E(332))){g=i;FN(h,k);Et(h,10);}else{g=i;if(BUH(k))break d;}g=i;continue c;}g=i;b=Cj_(k);U(f,b);}g=i;g=i;l=AQS(CH(h));}catch($$e){$$je=P($$e);if($$je instanceof AO3){break b;}else{throw $$e;}}break a;}l=null;i=g;}m=new Bd5;F8();B43(m,c,AAX,l,f,i,e);if(i!==null){e:{f:{try{B03(i,HB(m));break e;}catch($$e){$$je=P($$e);if($$je instanceof Ld) +{n=$$je;break f;}else{throw $$e;}}}GP(n);}i=i.clU;if(i!==null){b=B4(Cf(m),i);B3();c=CO;Fa();BBn(m,BYy(b,c,Hg));}}return m;},Cg4=N(WX),D3B=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,$$je;f=Bk();g=null;h=null;a:{b:{try{d=g;i=Bk();j=new Bnm;h=j;B25(j,ZI(c));k=Dov(j);Bm(k);while(true){h=j;d=g;l=Bm(k);if(!Bq(k))break;h=j;d=g;if(!BUH(l)){h=j;d=g;U(i,l);continue;}h=j;d=g;b=Cj_(l);U(f,b);}h=j;d=g;h=j;d=g;g=EIa(FjL(ET_(),i));d=g;break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){k=$$je;break b;}else{throw $$e;}}}GP(k);j= +h;g=d;}m=new Bd5;F8();B43(m,c,AL3,g,f,j,e);if(j!==null){c:{d:{try{B03(j,HB(m));break c;}catch($$e){$$je=P($$e);if($$je instanceof Ld){k=$$je;break d;}else{throw $$e;}}}GP(k);}j=j.clU;if(j!==null){b=B4(Cf(m),j);B3();c=CO;Fa();BBn(m,BYy(b,c,Hg));}}return m;},Cvo=N(HU),E92=(a,b)=>{let c,d,e,f,g,h;TQ(b);c=new BZT;A2V();V4(c,ADP(E(698)));b=b;U(b,c);c=new BbJ;A9e();d=BT(BN(Bo(BbJ)),BB(Bg,[BL(),Bd(),Bc(E(699)),Bc(E(649)),BR()]));HE();e=Q6;HA();Iy(c,d,e,G0,Cyo);U(b,c);c=new BcO;A3x();f=BN(Bo(BcO));g=BB(Bg,[BL(),Bd(), +Bc(E(700)),Bc(E(649)),BR()]);Iy(c,BT(f,g),Q6,G0,CWM);U(b,c);c=new BHw;Oi(c,1,EX8());U(b,c);c=new BTE;Bwk();d=new W6;g=BB(C7,[Ce(E(701)),Ce(E(702)),QT(),Ce(E(684)),Ce(E(703))]);Za(d,E(560),DP(g));e=Q6;f=G0;h=CZ1;BRS();if(Df()&&!DfJ&&h===null){b=new C4;X(b);J(b);}c.cnC=e;c.cTl=d;c.cKq=f;c.cRG=h;U(b,c);},EhG=(a,b,c,d,e)=>{b=new CqW;F8();RU(b,c,AMO,null,e);b.b_Z=Bk();return b;},Cym=N(HU),Ds_=(a,b)=>{let c,d,e,f;TQ(b);c=new BTD;d=BN(Bo(BTD));e=K(Bg,4);f=e.data;f[0]=BL();f[1]=Bd();f[2]=Ba(1,E(560),E(566));f[3]=BR();Oi(c, +1,BT(d,e));U(b,c);},DR1=(a,b,c,d,e)=>{let $$je;b=new DdD;F8();RU(b,c,AMd,null,e);b.bIZ=U1();d=DVV(ZI(c));e=b.bGM;a:{b:{try{B03(d,e);break a;}catch($$e){$$je=P($$e);if($$je instanceof Ld){c=$$je;break b;}else{throw $$e;}}}AEM(c);}e=e;c=B0(B1(e),Byg());b.b56=c;b.bXN=D0(c,e.bGN);b.b8R=e.bGN;c=b.b56;B9();b.cQ$=(BJ(c,Cz)).cu(e.bGN);return b;},Cn=N(Bx),Bcy=null,A2h=null,Yy=null,A5r=null,ALv=null,AIJ=null,A_5=null,ByG=null,A4m=null,K1=null,A$O=null,BoM=null,A2i=null,ASw=null,ANB=null,ADu=null,AIt=null,A4u=null,AX4 +=null,Bc$=null,Pm=null,AAR=null,KU=null,AVA=null,A2y=null,Bat=null,BEN=null,AQy=null,AAN=null,AF0=null,BxL=null,A1T=null,V8=null,A2R=null,A2N=null; +let Bjl=null,BkK=null,AFg=null,Bpi=null,AVc=null,ASD=null,Vr=null,ATg=null,AJp=null,BsH=null,AEC=null,ACD=null,Uk=null,K_=null,AXp=null,AXu=null,ASu=null,A5d=null,A77=null,A1j=null,A65=null,A0r=null,AYw=null,AQu=null,Btu=null,BcE=null,PU=null,AKe=null,ND=null,Bab=null,AVg=null,Bba=null,A9d=null,A7v=null,AW3=null,Bv2=null,Bfv=null,ALR=null,Zi=null,AJ$=null,Bea=null,ATS=null,BhR=null,A0H=null,Y3=null,AAt=null,A5b=null,Bkv=null,L0=null,O8=null; +let AUE=null,A3p=null,Yn=null,XC=null,Wk=null,AIB=null,AWV=null,A2b=null,Byu=null,BtG=null,BAC=null,AUn=null,AIz=null,AEf=null,AOh=null,BtS=null,BbG=null,A7c=null,VB=null,AK_=null,Bve=null,X0=null,A6z=null,A7S=null,A4r=null,AC9=null,UH=null,BGG=null,Nh=null,A57=null,AEH=null,A39=null,BfQ=null,Wv=null,A9y=null,OO=null,Bqj=null,Bei=null,AGJ=null,Bkh=null,BaC=null,PG=null,ASf=null,AQ6=null,AQz=null,Bj9=null,ON=null,AP5=null,AXT=null,APP=null; +let BnZ=null,BvD=null,Bi9=null,Bk3=null,AQO=null,AUS=null,Bp9=null,BfX=null,ASg=null,AW2=null,A_r=null,AOo=null,AUB=null,Bv6=null,BxB=null,Bug=null,Bxy=null,Bta=null,BjK=null,BAy=null,BAf=null,Bl6=null,BK7=null,CtV=null,CV=()=>{CV=Z(Cn);DYm();},CeG=()=>{CV();return CtV.b2();},DC2=(a,b,c)=>{CV();Ct(a,b,c);},Cu=(a,b)=>{let c=new Cn();DC2(c,a,b);return c;},E0T=()=>{let b,c;CV();b=K(Cn,157);c=b.data;c[0]=Bcy;c[1]=A2h;c[2]=Yy;c[3]=A5r;c[4]=ALv;c[5]=AIJ;c[6]=A_5;c[7]=ByG;c[8]=A4m;c[9]=K1;c[10]=A$O;c[11]=BoM;c[12] +=A2i;c[13]=ASw;c[14]=ANB;c[15]=ADu;c[16]=AIt;c[17]=A4u;c[18]=AX4;c[19]=Bc$;c[20]=Pm;c[21]=AAR;c[22]=KU;c[23]=AVA;c[24]=A2y;c[25]=Bat;c[26]=BEN;c[27]=AQy;c[28]=AAN;c[29]=AF0;c[30]=BxL;c[31]=A1T;c[32]=V8;c[33]=A2R;c[34]=A2N;c[35]=Bjl;c[36]=BkK;c[37]=AFg;c[38]=Bpi;c[39]=AVc;c[40]=ASD;c[41]=Vr;c[42]=ATg;c[43]=AJp;c[44]=BsH;c[45]=AEC;c[46]=ACD;c[47]=Uk;c[48]=K_;c[49]=AXp;c[50]=AXu;c[51]=ASu;c[52]=A5d;c[53]=A77;c[54]=A1j;c[55]=A65;c[56]=A0r;c[57]=AYw;c[58]=AQu;c[59]=Btu;c[60]=BcE;c[61]=PU;c[62]=AKe;c[63]=ND;c[64] +=Bab;c[65]=AVg;c[66]=Bba;c[67]=A9d;c[68]=A7v;c[69]=AW3;c[70]=Bv2;c[71]=Bfv;c[72]=ALR;c[73]=Zi;c[74]=AJ$;c[75]=Bea;c[76]=ATS;c[77]=BhR;c[78]=A0H;c[79]=Y3;c[80]=AAt;c[81]=A5b;c[82]=Bkv;c[83]=L0;c[84]=O8;c[85]=AUE;c[86]=A3p;c[87]=Yn;c[88]=XC;c[89]=Wk;c[90]=AIB;c[91]=AWV;c[92]=A2b;c[93]=Byu;c[94]=BtG;c[95]=BAC;c[96]=AUn;c[97]=AIz;c[98]=AEf;c[99]=AOh;c[100]=BtS;c[101]=BbG;c[102]=A7c;c[103]=VB;c[104]=AK_;c[105]=Bve;c[106]=X0;c[107]=A6z;c[108]=A7S;c[109]=A4r;c[110]=AC9;c[111]=UH;c[112]=BGG;c[113]=Nh;c[114]=A57;c[115] +=AEH;c[116]=A39;c[117]=BfQ;c[118]=Wv;c[119]=A9y;c[120]=OO;c[121]=Bqj;c[122]=Bei;c[123]=AGJ;c[124]=Bkh;c[125]=BaC;c[126]=PG;c[127]=ASf;c[128]=AQ6;c[129]=AQz;c[130]=Bj9;c[131]=ON;c[132]=AP5;c[133]=AXT;c[134]=APP;c[135]=BnZ;c[136]=BvD;c[137]=Bi9;c[138]=Bk3;c[139]=AQO;c[140]=AUS;c[141]=Bp9;c[142]=BfX;c[143]=ASg;c[144]=AW2;c[145]=A_r;c[146]=AOo;c[147]=AUB;c[148]=Bv6;c[149]=BxB;c[150]=Bug;c[151]=Bxy;c[152]=Bta;c[153]=BjK;c[154]=BAy;c[155]=BAf;c[156]=Bl6;return b;},DYm=()=>{let b,c,d,e,f;Bcy=Cu(E(704),0);A2h=Cu(E(705), +1);Yy=Cu(E(706),2);A5r=Cu(E(707),3);ALv=Cu(E(708),4);AIJ=Cu(E(709),5);A_5=Cu(E(710),6);ByG=Cu(E(711),7);A4m=Cu(E(596),8);K1=Cu(E(712),9);A$O=Cu(E(713),10);BoM=Cu(E(668),11);A2i=Cu(E(714),12);ASw=Cu(E(715),13);ANB=Cu(E(716),14);ADu=Cu(E(717),15);AIt=Cu(E(718),16);A4u=Cu(E(224),17);AX4=Cu(E(719),18);Bc$=Cu(E(720),19);Pm=Cu(E(721),20);AAR=Cu(E(722),21);KU=Cu(E(723),22);AVA=Cu(E(724),23);A2y=Cu(E(725),24);Bat=Cu(E(726),25);BEN=Cu(E(727),26);AQy=Cu(E(728),27);AAN=Cu(E(729),28);AF0=Cu(E(730),29);BxL=Cu(E(731),30);A1T +=Cu(E(732),31);V8=Cu(E(733),32);A2R=Cu(E(734),33);A2N=Cu(E(735),34);Bjl=Cu(E(736),35);BkK=Cu(E(737),36);AFg=Cu(E(738),37);Bpi=Cu(E(739),38);AVc=Cu(E(740),39);ASD=Cu(E(741),40);Vr=Cu(E(742),41);ATg=Cu(E(743),42);AJp=Cu(E(744),43);BsH=Cu(E(745),44);AEC=Cu(E(746),45);ACD=Cu(E(747),46);Uk=Cu(E(240),47);K_=Cu(E(748),48);AXp=Cu(E(749),49);AXu=Cu(E(581),50);ASu=Cu(E(230),51);A5d=Cu(E(750),52);A77=Cu(E(55),53);A1j=Cu(E(751),54);A65=Cu(E(752),55);A0r=Cu(E(226),56);AYw=Cu(E(753),57);AQu=Cu(E(754),58);Btu=Cu(E(755),59);BcE +=Cu(E(756),60);PU=Cu(E(653),61);AKe=Cu(E(757),62);ND=Cu(E(225),63);Bab=Cu(E(758),64);AVg=Cu(E(759),65);Bba=Cu(E(760),66);A9d=Cu(E(761),67);A7v=Cu(E(246),68);AW3=Cu(E(762),69);Bv2=Cu(E(763),70);Bfv=Cu(E(764),71);ALR=Cu(E(765),72);Zi=Cu(E(220),73);AJ$=Cu(E(766),74);Bea=Cu(E(767),75);ATS=Cu(E(768),76);BhR=Cu(E(769),77);A0H=Cu(E(770),78);Y3=Cu(E(771),79);AAt=Cu(E(772),80);A5b=Cu(E(655),81);Bkv=Cu(E(773),82);L0=Cu(E(774),83);O8=Cu(E(584),84);AUE=Cu(E(775),85);A3p=Cu(E(776),86);Yn=Cu(E(777),87);XC=Cu(E(38),88);Wk +=Cu(E(778),89);AIB=Cu(E(779),90);AWV=Cu(E(575),91);A2b=Cu(E(780),92);Byu=Cu(E(781),93);BtG=Cu(E(782),94);BAC=Cu(E(783),95);AUn=Cu(E(784),96);AIz=Cu(E(785),97);AEf=Cu(E(786),98);AOh=Cu(E(787),99);BtS=Cu(E(253),100);BbG=Cu(E(788),101);A7c=Cu(E(789),102);VB=Cu(E(790),103);AK_=Cu(E(791),104);Bve=Cu(E(792),105);X0=Cu(E(793),106);A6z=Cu(E(794),107);A7S=Cu(E(795),108);A4r=Cu(E(796),109);AC9=Cu(E(797),110);UH=Cu(E(606),111);BGG=Cu(E(798),112);Nh=Cu(E(298),113);A57=Cu(E(799),114);AEH=Cu(E(800),115);A39=Cu(E(801),116);BfQ +=Cu(E(802),117);Wv=Cu(E(803),118);A9y=Cu(E(804),119);OO=Cu(E(222),120);Bqj=Cu(E(805),121);Bei=Cu(E(806),122);AGJ=Cu(E(807),123);Bkh=Cu(E(808),124);BaC=Cu(E(809),125);PG=Cu(E(810),126);ASf=Cu(E(811),127);AQ6=Cu(E(812),128);AQz=Cu(E(813),129);Bj9=Cu(E(814),130);ON=Cu(E(815),131);AP5=Cu(E(816),132);AXT=Cu(E(817),133);APP=Cu(E(818),134);BnZ=Cu(E(819),135);BvD=Cu(E(820),136);Bi9=Cu(E(821),137);Bk3=Cu(E(822),138);AQO=Cu(E(823),139);AUS=Cu(E(824),140);Bp9=Cu(E(825),141);BfX=Cu(E(826),142);ASg=Cu(E(827),143);AW2=Cu(E(828), +144);A_r=Cu(E(829),145);AOo=Cu(E(830),146);AUB=Cu(E(831),147);Bv6=Cu(E(669),148);BxB=Cu(E(832),149);Bug=Cu(E(833),150);Bxy=Cu(E(834),151);Bta=Cu(E(835),152);BjK=Cu(E(836),153);BAy=Cu(E(837),154);BAf=Cu(E(838),155);Bl6=Cu(E(839),156);CtV=E0T();BK7=Dy();b=(CeG()).data;c=b.length;d=0;while(d{ASL=Z(Vl);Eyw();},Cah=(a,b,c)=>{ASL();a.bWg=b;a.bXk=c;},Eot=(a,b)=>{let c=new Vl();Cah(c,a,b);return c;},Yj=b=>{let c;ASL();if(b===null){c=new Bt;Bp(c,E(841));J(c);}return B_5.data[b.bGO];},C8F=a=>{return a.bWg===null?0:1;},Bf0=(a,b)=>{let c,d;c=a.bWg;if(c!==null){d=b.bWg;if(d!==null)return BBv(c,d);}if(c===null){if(b.bWg===null)return J6(a.bXk,b.bXk);return 1;}return (-1);},EoZ=(a,b)=>{let c;if(a!==b){if(b instanceof Vl){c=b;b=a.bWg;if(b!==null)return b!==c.bWg?0:1;return Bj(a.bXk,c.bXk);}return 0;}return 1;},Fi2 +=a=>{let b;b=a.bWg;return b===null?FP(a.bXk):b.bGO;},EEM=a=>{let b,c;b=a.bWg;if(b!==null)b=HT(b);else{b=a.bXk;c=new S;T(c);Bb(c,46);H(c,b);b=Q(c);}return b;},Ehe=(a,b)=>{return Bf0(a,b);},Eyw=()=>{let b,c,d,e,f;ASL();b=(CeG()).data;c=b.length;d=K(Vl,c);e=d.data;f=0;while(f{Btj=Z(AYz);Ea9();},CF2=(a,b)=>{Btj();a.bLI=b;},CTE=a=>{let b=new AYz();CF2(b,a);return b;},ATd=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=a.bLI.data;d=0;e=c.length;f=AM7();if(f===null)f=AM7();if(d<=e){g=e-1|0;a:{b:{while(true){if(d>g)break b;e=(d+g|0)/2|0;h=c[e];i=Cj2(f,b,h);if(!i)break;if(i>=0)d=e+1|0;else g=e-1|0;}break a;}e=( -d|0)-1|0;}if(e<0){e=( -e|0)-1|0;c=a.bLI;j=K(Vl,c.data.length+1|0);k=j.data;Di(c,0,j,0,e);k[e]=b;c=a.bLI;Di(c,e,j,e+1|0,c.data.length-e|0);return CTE(j);}return a;}b +=new Bt;X(b);J(b);},BTk=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=b.data;d=a.bLI.data.length;e=c.length;f=K(Vl,d+e|0);g=f.data;h=0;i=0;j=0;while(true){b=a.bLI.data;d=b.length;if(h>=d)break;if(i>=e)break;d=Bf0(b[h],c[i]);if(d<0){k=j+1|0;b=a.bLI.data;d=h+1|0;g[j]=b[h];}else if(d>0){k=j+1|0;l=i+1|0;g[j]=c[i];d=h;i=l;}else{k=j+1|0;b=a.bLI.data;d=h+1|0;g[j]=b[h];i=i+1|0;}j=k;h=d;}while(h{return a.bLI.data.length;},ClD=a=>{return a.bLI.data.length?0:1;},ChM=(a,b)=>{return a.bLI.data[b];},Egx=a=>{let b,c,d,e;b=a.bLI;if(b===null)c=E(2);else{c=new S;T(c);L(c,E(842));d=0;while(true){e=b.data;if(d>=e.length)break;if(d>0)L(c,E(50));H(c,e[d]);d=d+1|0;}L(c,E(843));c=Q(c);}return c;},Ea9=()=>{let b;b=K(Vl,0);FlD=b;DmS=CTE(b);},B1V=N(0); +function C2p(){let a=this;F.call(a);a.bTZ=null;a.b8n=0;a.cBd=null;} +let E45=a=>{A_Y();a.bTZ=Ca4;a.cBd=AOG();},B0p=()=>{let a=new C2p();E45(a);return a;},ESt=a=>{let b;b=B0p();b.bTZ=a.bTZ;b.b8n=a.b8n;return b;},CQG=a=>{let b;b=a.b8n+1|0;a.b8n=b;return b;},B0=(a,b)=>{let c,d,e,f,g,h;c=a.bTZ;d=a.cBd;e=b.bLh.bLI.data;f=e.length;if(!(!(f>0&&!C8F(e[f-1|0]))?0:1))d=c.c08;g=d;d=CD_(g,b);if(d===null){d=null;c=Br(Djb(c,b));while(Bq(c)){h=Bm(c);if(d!==null){Pb();h=Ux(d,h,Qv);}d=h;}if(d!==null)CQc(g,b,d);}return d;},BrT=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n;d=null;e=Br(Djb(a.bTZ,b));while +(Bq(e)){f=Bm(e);g=f.bNc.bKx.bOH;if(!g)h=f;else{if(!g){b=new BV;X(b);J(b);}i=Nq(Bo(RY));h=Zd(Yl(f.bPX));while(Z3(h)){b=YO(h);j=VX(b);b=Wt(b);k=new AXS;b=b.bNq;l=new BSx;m=b.bOo;n=b.bVL;b=b.bR0;C_0(l,m,n,Bdn(b.b4R,1,c,b.b0u,b.bYy));Bsw(k,l);ABb(i,j,k);}h=AII(f.bNc,i);}if(d!==null){Pb();h=Ux(d,h,Qv);}d=h;}return d;}; +function Ob(){let a=this;F.call(a);a.bPX=null;a.bNc=null;} +let CH1=(a,b,c)=>{a.bPX=c;a.bNc=b;},AII=(a,b)=>{let c=new Ob();CH1(c,a,b);return c;},D0G=a=>{let b,c,d;b=BY(a.bNc);c=BY(a.bPX);d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},BJ=(a,b)=>{let c;c=M7(a.bPX,b);if(c===null){BzL();return Dgu;}return c;},G1=a=>{let b,c;b=a.bPX;B9();c=AGY;if(M7(b,c)!==null)return (BJ(a,AGY)).ow(1.5);return 0.0;},Ux=(a,b,c)=>{let d,e,f,g,h,i,j,k,l;if(b!==null){d=BXY(a.bPX);e=Zd(Yl(b.bPX));while(true){if(!Z3(e))return AII(CwW(a.bNc,b.bNc),d);f=YO(e);g=a.bPX;f=f;h=VX(f);h=M7(g,h);if +(h!==null&&((h.oz()).b0u<=0?0:1)){Pb();if(c===Bfh)continue;}g=VX(f);f=Wt(f);if(h!==null){if(!(h instanceof AXS)){if(!(h instanceof BMC))break;if(BRO(h.oz(),Cwv(f)))f=h;}else{a:{i=new AXS;j=f.bNq;k=h.bNq;if(k!==null){b:{l=j.bVL;if(!(l===null&&k.bVL===null)){f=j.bOo;if(f!==null)break b;if(k.bOo!==null)break b;}if(BRO(j.bR0,k.bR0))break a;j=k;break a;}if(l===null&&k.bOo===null)j=ATQ(f,k.bVL,j.bR0);else if(k.bVL===null&&f===null)j=ATQ(k.bOo,l,k.bR0);else if(!BRO(j.bR0,k.bR0))j=k;}}Bsw(i,j);f=i;}}ABb(d,g,f);}b=new BV;X(b);J(b);}return a;},C82 +=(a,b,c,d)=>{let e,f,g,h,i;if(b!==null){e=Nq(Bo(RY));f=Zd(Yl(b.bPX));while(Z3(f)){g=YO(f);if(c===null)h=null;else{h=c.bPX;i=VX(g);h=M7(h,i);}if(!(h!==null&&Bj(h.oB(),(Wt(g)).oB()))){h=g;ABb(e,VX(h),Wt(h));}}if(!AQI(e))return Ux(a,AII(b.bNc,e),d);return a;}return a;},Wu=(a,b,c)=>{let d,e,f;if(c!==null){d=BXY(a.bPX);e=M7(d,b);f=new BMC;e=e.oz();f.cGd=c;f.cVR=e;ABb(d,b,f);return AII(a.bNc,d);}return a;},Djg=(a,b,c)=>{let d,e;d=BXY(a.bPX);e=Bdn(1,0,0,0,0);ABb(d,b,B1x(ATQ(B$(c),null,e)));return AII(a.bNc,d);},ZT +=(a,b)=>{let c,d,e;if(b!==null){CM();c=DQ(b,C6);if(c!==null){B9();a=Wu(a,CK,c);}d=DQ(b,E1);if(d!==null){B9();a=Wu(a,Cz,d);}e=DQ(b,YD);if(e!==null){B9();a=Wu(a,Lv,e);}}return a;},A9u=a=>{let b,c,d,e;B9();b=(BJ(a,Vc)).oB();c=(BJ(a,Ov)).oD();if(c==(-1))c=14;d=(BJ(a,V0)).oE();e=(BJ(a,BgI)).oE();if(Cbj(e)!=400)d=B$h(d,Cbj(e));return AI6(b,d,c);},D0=(a,b)=>{return Yz(a,b,null);},Yz=(a,b,c)=>{let d,e;d=A9u(a);if(c===null)e=null;else{CM();e=DQ(c,YD);}if(e===null){B9();e=(BJ(a,Lv)).cu(b);}B9();return UR(d,e,(BJ(a,AVV)).cu(b), +Cqt(a,A5D,BnM));},CFz=(a,b,c)=>{let d,e,f,g,h;if(c===null)d=null;else{CM();d=DQ(c,C6);}if(d===null){B9();d=(BJ(a,CK)).cu(b);}if(c===null)e=null;else{CM();e=DQ(c,E1);}if(e===null){B9();e=(BJ(a,Cz)).cu(b);}f=G1(a);B9();g=(BJ(a,Jm)).oK();h=(BJ(a,ACK)).oK();return Bnc(Brj(AGc(AAA(d,e),Fi(a)),f),g,h);},AB8=(a,b)=>{return CFz(a,b,null);},Fi=a=>{B9();return Cqt(a,H1,ABJ);},Cqt=(a,b,c)=>{let d,e,f,g,$$je;d=(BJ(a,b)).oK();e=(BJ(a,c)).oB();if(e.bGI.length){try{f=M0(e,E(844));g=DM(Dk(H5(f)));b=J$(g,!JO(f)?g:DM(Dk(H5(f))), +d);}catch($$e){$$je=P($$e);if($$je instanceof Dt){return Dw(d);}else{throw $$e;}}return b;}return Dw(d);},Y1=(a,b)=>{let c;c=ACd(b);if(c===null)return Fi(a);return c;},GM=a=>{B9();return Bkn((BJ(a,A0L)).oB());},Of=a=>{B9();return Dn7((BJ(a,Bvs)).oB());},My=a=>{B9();return Dn7((BJ(a,Bjg)).oB());},IR=a=>{B9();return (BJ(a,Xs)).oV();},Bqv=(a,b,c,d,e,f)=>{let g,h,i,j,k,l,m,n,o,p,q;g=IR(a);h=D0(a,c);Ed();i=Py(b,h,g,d,f,FR,null,null);B9();j=(BJ(a,CK)).cu(c);k=(BJ(a,Cz)).cu(c);l=Fi(a);m=(BJ(a,Jm)).oX();n=My(a);o=Of(a);p +=m;GO();q=new C4D;q.cJs=o.bIl;q.ctS=o.bKJ;q.cTj=o.bJU;q.ch_=o.bIv;q.cXc=p;q.cn0=i;q.c5_=0;q.csF=l;q.cY0=k;q.co1=j;q.c1m=e;return CA$(q,n);},AH6=(a,b,c)=>{let d;B9();d=(BJ(a,Cz)).cu(c);return (d!==null?b.h2(d):b.h2(E4())).h2(Fi(a));},A3u=N(Bx),A0V=null,BB3=null,DZT=null,AVh=()=>{AVh=Z(A3u);E0X();},Ebk=(a,b,c)=>{AVh();Ct(a,b,c);},CcK=(a,b)=>{let c=new A3u();Ebk(c,a,b);return c;},E0X=()=>{let b,c,d;A0V=CcK(E(845),0);b=CcK(E(846),1);BB3=b;c=K(A3u,2);d=c.data;d[0]=A0V;d[1]=b;DZT=c;}; +function A4K(){Bx.call(this);this.cKz=null;} +let Byx=null,Bvn=null,Bnt=null,Bts=null,Bsl=null,BcS=null,Bf$=null,Bpm=null,Bxd=null,BpF=null,B6A=null,BzK=null,BmK=null,BX2=null,CIc=0,DhL=null,CZR=null,Nx=()=>{Nx=Z(A4K);DvY();},Ddu=()=>{Nx();return CZR.b2();},Dtf=(a,b,c,d)=>{Nx();Ct(a,b,c);a.cKz=d;},Rs=(a,b,c)=>{let d=new A4K();Dtf(d,a,b,c);return d;},DvY=()=>{let b,c,d,e,f,g,h;Byx=Rs(E(297),0,null);Bvn=Rs(E(469),1,Bo(ZC));Bnt=Rs(E(560),2,Bo(SA));Bts=Rs(E(847),3,Bo(AAf));Bsl=Rs(E(848),4,Bo(ACp));BcS=Rs(E(849),5,Bo(Ym));Bf$=Rs(E(850),6,Bo(ADr));Bpm=Rs(E(851), +7,Bo(AHP));Bxd=Rs(E(852),8,Bo(NR));BpF=Rs(E(853),9,Bo(AMv));B6A=Rs(E(854),10,Bo(Bow));BzK=Rs(E(855),11,Bo(AUq));BmK=Rs(E(856),12,Bo(APT));b=Rs(E(857),13,Bo(Qf));BX2=b;c=K(A4K,14);d=c.data;d[0]=Byx;d[1]=Bvn;d[2]=Bnt;d[3]=Bts;d[4]=Bsl;d[5]=BcS;d[6]=Bf$;d[7]=Bpm;d[8]=Bxd;d[9]=BpF;d[10]=B6A;d[11]=BzK;d[12]=BmK;d[13]=b;CZR=c;CIc=(Ddu()).data.length;b=Dy();c=(Ddu()).data;e=c.length;f=0;while(f{AAw=Z(Baz);D0x();},Dns=(a,b,c)=>{AAw();a.b2$=B$(b);a.bZf=B$(c);},AWg=(a,b)=>{let c=new Baz();Dns(c,a,b);return c;},EO=()=>{AAw();return BK4;},SC=()=>{AAw();return B6n;},Hw=()=>{AAw();return CtI;},BS3=(b,c)=>{AAw();return AWg(b,ART(c));},Cbj=a=>{return a.bZf.bV$;},C0r=a=>{let b;b=a.b2$;ABZ();return b!==AUA?0:1;},BAI=a=>{return a.bZf.bV$<700?0:1;},B$h=(a,b)=>{let c;c=ART(b);if(!Dk_(a.bZf,c))return AWg(a.b2$,c);return a;},EMv=a=>{let b,c;b=K(F,2);c=b.data;c[0]=a.b2$;c[1] +=CL(a.bZf.bV$);return ME(b);},E3g=(a,b)=>{let c;if(a!==b){if(b instanceof Baz){c=b;return !(a.b2$===c.b2$&&a.bZf.bV$==c.bZf.bV$)?0:1;}return 0;}return 1;},D0x=()=>{let b;b=new Baz;ABZ();Dns(b,AEw,ART(400));BK4=b;B6n=AWg(AEw,ART(700));CtI=AWg(AUA,ART(400));B$Q=AWg(AUA,ART(700));}; +function AG3(){let a=this;F.call(a);a.bWe=0.0;a.bU$=0.0;a.bJw=0.0;} +let DMY=a=>{return (BxK(a.bWe)+BxK(a.bU$)|0)+BxK(a.bJw)|0;},Elw=(a,b)=>{let c;c=b;return !(a.bWe===c.bWe&&a.bU$===c.bU$&&a.bJw===c.bJw)?0:1;},Fk4=a=>{let b,c,d,e,f;b=a.bWe;c=a.bU$;d=a.bJw;e=new S;T(e);f=D6(e,b);Bb(f,45);f=D6(f,c);Bb(f,45);D6(f,d);return Q(e);},ELD=(a,b,c,d)=>{a.bWe=b;a.bU$=c;a.bJw=d;},J$=(a,b,c)=>{let d=new AG3();ELD(d,a,b,c);return d;},Dw=b=>{return J$(0.0,0.0,b);},GT=()=>{return J$(0.0,0.0,1.0);},Bjj=a=>{return J$(0.0,0.0,a.bJw);},AS4=a=>{let b;b=a.bWe;if(b!==0.0)return Gh([b,a.bU$]);return null;}; +function AVP(){let a=this;OQ.call(a);a.bNO=null;a.bPV=null;a.bO9=null;a.bOM=0;a.cAe=null;} +let DWH=(a,b)=>{Dcl(a,b);},Nq=a=>{let b=new AVP();DWH(b,a);return b;},EKj=(a,b)=>{let c,d,e,f,g,h;if(b instanceof AVP)CfQ(a,b);else if(!AQI(b)){c=b;d=Zd(Yl(c));while(Z3(d)){e=YO(d);f=VX(e);if(a.bNO===null)Dcl(a,YA(f));g=Dg(f);if(g!==a.bNO&&AZk(g)!==a.bNO){b=new Xt;X(b);J(b);}h=f.bGO;a.bO9.data[h]=1;a.bPV.data[h]=Wt(e);}a.bOM=c.bOM;}else{b=new Bt;X(b);J(b);}},BXY=a=>{let b=new AVP();EKj(b,a);return b;},Dcl=(a,b)=>{let c,d;a.bNO=b;c=K(F,(A9B(b)).data.length);d=c.data;a.bPV=c;a.bO9=BBl(d.length);},CfQ=(a,b)=>{let c, +d,e,f,g,h;a.bNO=b.bNO;c=b.bPV;a.bPV=MK(c,c.data.length);d=b.bO9.data;e=d.length;c=BBl(e);f=c.data;g=DO(e,e);h=0;while(h{return a.bOM;},BXr=(a,b)=>{let c;if(AK4(a.bNO,b)){c=b.bGO;return a.bO9.data[c];}return 0;},M7=(a,b)=>{let c;if(AK4(a.bNO,b)){c=b.bGO;return a.bPV.data[c];}return null;},ABb=(a,b,c)=>{let d,e,f,g,h;d=Dg(b);if(d!==a.bNO&&AZk(d)!==a.bNO){b=new Xt;X(b);J(b);}e=b.bGO;f=a.bPV.data;g=f[e];h=a.bO9.data;if(!h[e]){h[e]=1;a.bOM=a.bOM+1|0;}f[e]=c;return g;},AYo +=(a,b)=>{let c,d,e,f,g;if(!(b instanceof AVP))BvE(a,b);else{c=b;if(!AQI(c)){b=a.bNO;d=c.bNO;if(b!==d){b=new Xt;c=BY(d);d=BY(a.bNO);e=new S;T(e);H(H(H(e,c),E(858)),d);Bp(b,Q(e));J(b);}}f=0;while(true){g=a.bPV.data;if(f>=g.length)break;if(c.bO9.data[f]){g[f]=c.bPV.data[f];g=a.bO9.data;if(!g[f]){g[f]=1;a.bOM=a.bOM+1|0;}}f=f+1|0;}}},Yl=a=>{let b;if(a.cAe===null){b=new CC2;b.bVB=a;a.cAe=b;}return a.cAe;},C$A=a=>{let b;if(a.bQs===null){b=new CC3;b.cI4=a;a.bQs=b;}return a.bQs;},Po=(a,b,c)=>{return ABb(a,b,c);},A68 +=N(Bx),NH=null,Hg=null,Pe=null,E1Q=null,Fa=()=>{Fa=Z(A68);E2W();},EdC=(a,b,c)=>{Fa();Ct(a,b,c);},BPq=(a,b)=>{let c=new A68();EdC(c,a,b);return c;},E2W=()=>{let b,c,d;NH=BPq(E(859),0);Hg=BPq(E(421),1);b=BPq(E(860),2);Pe=b;c=K(A68,3);d=c.data;d[0]=NH;d[1]=Hg;d[2]=b;E1Q=c;},Ctt=N(),Doo=null,BwC=()=>{BwC=Z(Ctt);E6q();},CDC=(b,c,d)=>{let e;BwC();e=K(I1,1);e.data[0]=c;return b.o6(d,0,e);},AFs=(b,c,d)=>{BwC();return B4j(Doo,b,c,d);},E6q=()=>{Doo=Uu();}; +function CYz(){let a=this;F.call(a);a.cTc=null;a.b1$=null;a.cob=null;a.bJ7=null;a.bX4=null;a.bI0=0;a.cBI=0;a.cPm=0;a.bPY=0;a.cRP=0;a.bQ3=0;a.bPA=0;a.bKM=0;} +let EVa=(a,b,c,d,e,f)=>{a.cTc=b;a.b1$=c;a.cob=d;a.bJ7=e;a.bX4=f;},D4w=(a,b,c,d,e)=>{let f=new CYz();EVa(f,a,b,c,d,e);return f;},EgU=a=>{let b,c,d,e,f;a:while(true){b=In(a.bJ7,37,a.bI0);if(b<0){c=a.b1$;d=CC(a.bJ7,a.bI0);T3(c,d);return;}c=a.b1$;d=B_(a.bJ7,a.bI0,b);T3(c,d);b=b+1|0;a.bI0=b;a.cBI=b;e=DRR(a);if(a.bKM&256)a.bPY=DT(0,a.cRP);if(a.bPY==(-1)){f=a.cPm;a.cPm=f+1|0;a.bPY=f;}b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{o:{p:{q:{a.cRP=a.bPY;switch(e){case 37:break c;case 66:break;case 67:break q;case 68:break p;case 72:break o;case 79:break g;case 83:break n;case 88:break f;case 98:break m;case 99:break l;case 100:break k;case 102:break j;case 104:break i;case 111:break e;case 115:break h;case 120:break d;default:break a;}CEF(a, +e,1);break b;}CHD(a,e,1);break b;}CEV(a,e,1);break b;}Ddf(a,e,1);break b;}CGv(a,e,1);break b;}CEF(a,e,0);break b;}CHD(a,e,0);break b;}CEV(a,e,0);break b;}D_5(a,e,0);break b;}Ddf(a,e,0);break b;}CGv(a,e,0);break b;}BmO(a,e,3,1);break b;}BmO(a,e,4,1);break b;}BmO(a,e,3,0);break b;}BmO(a,e,4,0);break b;}T3(a.b1$,E(861));}}J(Dm8(QO(e)));},D_5=(a,b,c)=>{let d,e,f,g,h;A6m(a,b,507);d=a.bKM;if(d&8&&d&16)J(BwS(E(862)));if(d&32&&d&1)J(BwS(E(863)));if(d&1&&a.bQ3<0)J(C98(B_(a.bJ7,a.cBI,a.bI0)));if(a.bPA==(-1))a.bPA=6;e +=a.bX4.data[a.bPY];if(e instanceof ASF)f=!(e.bG6<0.0)?0:1;else if(e instanceof BRP)f=!(e.pg()<0.0)?0:1;else if(e instanceof QI)f=e.ph()>=0?0:1;else J(Bwo(b,e!==null?Dg(e):null));g=new A6_;AXv();C6o(g,Djy((ACH()).bIP,(ACH()).bK3));g.bJm=Dp5(Bkd(a.cob));d=a.bQ3;if(d!=(-1)){b=a.bPA;if(b>0)d=d-(b+1|0)|0;if(f)d=!(a.bKM&128)?d+(-1)|0:d+(-2)|0;else if(a.bKM&24)d=d+(-1)|0;if(a.bKM&64)d=d-(d/(g.bVv+1|0)|0)|0;h=g;CMb(h,d);if(a.bKM&32)Dlt(h,d);}b=a.bPA;h=g;B7d(h,b);BL9(h,a.bPA);b=a.bKM;h.bTV=!(b&64)?0:1;if(b&128){g.bTN +=BCX(g,E(864));g.cmv=BCX(g,E(865));}b=a.bKM;if(b&8)CZn(g,E(866));else if(b&16)CZn(g,E(344));h=Bjp(g,e);a.bPA=(-1);AFf(a,c,h);},CEF=(a,b,c)=>{let d;B37(a,b);d=a.bX4.data[a.bPY];AFf(a,c,DkO(d instanceof A28?d.pu():d===null?0:1));},Ddf=(a,b,c)=>{let d;B37(a,b);d=a.bX4.data[a.bPY];AFf(a,c,d===null?E(2):Boa(d.dp()));},CGv=(a,b,c)=>{let d,e;B37(a,b);d=a.bX4.data[a.bPY];if(!F0(d,Cct))AFf(a,c,BY(d));else{e=a.bKM&7;if(c)e=e|2;d.pv(a.cTc,e,a.bQ3,a.bPA);}},CHD=(a,b,c)=>{let d,e,f,g;A6m(a,b,259);d=a.bX4.data[a.bPY];e=a.bPA;if +(e<0){if(d instanceof AVo)e=d.pw();else if(d instanceof AJy)e=d.px()&65535;else if(d instanceof A8c)e=d.py()&65535;else if(d instanceof AAa){e=d.bHl;if(!Cx6(e)){d=new Cmm;f=new S;T(f);g=H(f,E(867));BE(g,e);H(g,E(868));Bp(d,Q(f));d.c$$=e;J(d);}}else{if(d!==null)J(Bwo(b,Dg(d)));AFf(a,c,E(2));return;}AFf(a,c,Ue(Wr(e)));return;}J(Cmr(e));},CEV=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p;A6m(a,b,507);CVu(a);d=a.bX4.data[a.bPY];if(d instanceof AVa){e=d.bMQ;f=BU0(AOc(e));g=FE(e,BH)?0:1;}else{if(!(d instanceof AAa)&&!(d instanceof AJy) +&&!(d instanceof A8c))J(Bwo(b,d===null?null:Dg(d)));h=d.pB();f=W7(Kj(h));g=h>=0?0:1;}i=0;j=new S;T(j);if(g){if(!(a.bKM&128)){Bb(j,45);i=1;}else{Bb(j,40);i=2;}}else{b=a.bKM;if(b&8){Bb(j,43);i=1;}else if(b&16){Bb(j,32);i=1;}}k=new S;T(k);if(!(a.bKM&64))L(k,f);else{l=(Bkd(a.cob)).bV1;d=a.cob;m=(Cyk(Djy(d.bIP,d.bK3),Bkd(d))).bVv;n=f.bGI.length%m|0;if(!n)n=m;o=0;while(n=a.bQ3)break a;Bb(j,AG2(0,10));n +=n+1|0;}}}T3(j,k);if(g&&a.bKM&128)Bb(j,41);AFf(a,c,Q(j));},BmO=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o;A6m(a,b,423);CVu(a);e=a.bX4.data[a.bPY];if(e instanceof AVa){f=e.bMQ;if(DS(f,BH))g=E(35);else{b=1<=0){m=l+1|0;k[l]=AG2(Cp(GD(f,i))&h,b);i=i-c|0;l=m;}g=Ue(j);}}else if(e instanceof AAa)g=Boo(e.bHl,c);else if(e instanceof A8c)g=Boo(e.py()&65535,c);else if(e instanceof AJy)g=Boo(e.px()&255,c);else J(Bwo(b,e===null?null:Dg(e)));n +=new S;T(n);if(a.bKM&4){o=c!=4?E(35):E(869);e=new S;T(e);H(H(e,o),g);g=Q(e);}a:{if(a.bKM&32){h=g.bGI.length;while(true){if(h>=a.bQ3)break a;Bb(n,AG2(0,10));h=h+1|0;}}}L(n,g);AFf(a,d,Q(n));},CVu=a=>{let b,c;b=a.bKM;if(b&8&&b&16)J(BwS(E(862)));if(b&32&&b&1)J(BwS(E(863)));c=a.bPA;if(c<0){if(b&1&&a.bQ3<0)J(C98(B_(a.bJ7,a.cBI,a.bI0)));return;}J(Cmr(c));},AFf=(a,b,c)=>{let d;d=a.bPA;if(d>0&&d{A6m(a, +b,263);},A6m=(a,b,c)=>{let d,e,f,g;d=a.bKM;if((d|c)!=c){e=new DoS;f=QO(Bn(E(870),AMl(d&(c^(-1)))));g=new S;T(g);Bb(H(H(H(g,E(871)),f),E(872)),b);Bp(e,Q(g));e.daL=f;e.c_S=b;J(e);}},C7R=(a,b)=>{let c,d,e;if(a.bQ3>b.bGI.length){c=a.bQ3-b.bGI.length|0;d=new S;JP(d,c);e=0;while(e{let b,c,d,e,f,g;a.bKM=0;a.bPY=(-1);a.bQ3=(-1);a.bPA=(-1);b=Bn(a.bJ7,a.bI0);if(b!=48&&Bx6(b)){c=B8w(a);if(!(a.bI0=a.bJ7.bGI.length)break a;c:{d:{e:{f:{g:{h:{i:{j:{b=Bn(a.bJ7,a.bI0);switch(b){case 32:break;case 33:case 34:case 36:case 37:case 38:case 39:case 41:case 42:case 46:case 47:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:break b;case 35:break j;case 40:break i;case 43:break h;case 44:break g;case 45:break f;case 48:break e;case 60:break d;default:break b;}c=16;break c;}c=4;break c;}c=128;break c;}c=8;break c;}c=64;break c;}c=1;break c;}c=32;break c;}c +=256;}d=a.bKM;if(d&c)break;a.bKM=d|c;a.bI0=a.bI0+1|0;}e=new CNZ;f=QO(b);g=new S;T(g);H(H(g,E(873)),f);Bp(e,Q(g));e.c_h=f;J(e);}}if(a.bQ3<0&&a.bI0=a.bJ7.bGI.length){e=new BKP;f=a.bJ7;DsR(e,QO(Bn(f,f.bGI.length-1|0)));J(e);}e=a.bJ7;c=a.bI0;a.bI0=c+1|0;return Bn(e,c);},B8w=a=>{let b,c,d,e;b +=0;while(a.bI0{return !(b>=48&&b<=57)?0:1;},Dd=N(Dt),DyA=(a,b)=>{Bp(a,b);},EMB=a=>{let b=new Dd();DyA(b,a);return b;},BP=N(DR),EpK=a=>{X(a);},AFM=()=>{let a=new BP();EpK(a);return a;},BZA=(a,b)=>{Bp(a,b);},BTQ=a=>{let b=new BP();BZA(b,a);return b;},Dh2=N(BP),BqV=N(Dt),AYn=N(0),If=N(QP),Dd$=(a,b)=>{let c,d,e;c=0;d=a.dV();b=b;if(d>=Ba3(b)){e=P2(b);while(OD(e)){if(!a.pK(Pr(e)))continue;c=1;}}else +{e=a.dX();while(e.dY()){if(OS(b,e.dZ())){c=1;e.ey();}}}return c;},BG_=(a,b)=>{let c,d;if(a!==b){if(F0(b,AYn)){c=b;if(a.dV()==c.dV()){d=c.dX();while(d.dY()){if(a.et(d.dZ()))continue;else return 0;}return 1;}return 0;}return 0;}return 1;},B9M=a=>{let b,c,d;b=0;c=a.dX();while(c.dY()){d=c.dZ();if(d!==null)b=b+d.dp()|0;}return b;},BJ0=N(If),PZ=b=>{let c,d,e;c=new ANj;c.bMW=b;d=A9B(b);if(d!==null){e=d.data.length;c.bLe=Ca(!e?0:((e-1|0)/32|0)+1|0);return c;}b=new Xt;X(b);J(b);},AQ8=b=>{let c,d,e,f;c=A9B(b);if(c!== +null){d=c.data.length;e=Ca(!d?0:((d-1|0)/32|0)+1|0);Wm(e,(-1));if(d>0){c=e.data;f=c.length-1|0;c[f]=c[f]&((-1)>>>(32-(d%32|0)|0)|0);}return CXa(b,e);}b=new Xt;X(b);J(b);},Fv=b=>{let c;c=PZ(YA(b));Uj(c,b);return c;},CuA=(b,c)=>{let d;d=PZ(YA(b));Uj(d,b);Uj(d,c);return d;},Dsr=(b,c,d)=>{let e;e=PZ(YA(b));Uj(e,b);Uj(e,c);Uj(e,d);return e;},B$X=(b,c,d,e)=>{let f;f=PZ(YA(b));Uj(f,b);Uj(f,c);Uj(f,d);Uj(f,e);return f;},De9=(b,c)=>{let d,e,f;c=c.data;d=PZ(YA(b));Uj(d,b);e=c.length;f=0;while(f{let c,d,e;c=b.bGO;b=a;d=c/32|0;e=b.bLe.data;e[d]=e[d]|1<<(c%32|0);},EyD=N(),BTb=N(0),BBC=N(),EDL=(b,c)=>{b;ARy();Bn$.delete(c);},BBB=N(),Fue=(b,c)=>{b;ARy();BrZ.delete(c);},CLR=N(),EMe=(a,b,c,d,e,f,g)=>{return;}; +let AQJ=N(Bx),BqR=null,BKZ=null,B4F=null,C6j=null,EAT=null,BuD=()=>{BuD=Z(AQJ);DZq();},EOp=(a,b,c)=>{BuD();Ct(a,b,c);},Bcx=(a,b)=>{let c=new AQJ();EOp(c,a,b);return c;},DZq=()=>{let b,c,d;BqR=Bcx(E(664),0);BKZ=Bcx(E(874),1);B4F=Bcx(E(875),2);b=Bcx(E(876),3);C6j=b;c=K(AQJ,4);d=c.data;d[0]=BqR;d[1]=BKZ;d[2]=B4F;d[3]=b;EAT=c;}; +function FG(){let a=this;F.call(a);a.bHj=0.0;a.bHu=0.0;} +let DEg=a=>{let b,c,d;b=a.bHj;c=a.bHu;d=new S;T(d);D6(H(D6(H(d,E(877)),b),E(878)),c);return Q(d);},LR=()=>{return Bh(0.0,0.0);},Hs=(a,b,c)=>{a.bHj=b;a.bHu=c;},Bh=(a,b)=>{let c=new FG();Hs(c,a,b);return c;},BM=b=>{return Bh(b,0.0);},BW=b=>{return Bh(0.0,b);},I3=b=>{return Bh(b.bGK,b.bGL);},CLD=a=>{return a.bHj;},B6Q=a=>{return a.bHu;},Cs=(a,b)=>{if(b!==null)return BA(b.bGK+a.bHj,b.bGL+a.bHu);return null;},DJ=(a,b)=>{return Bh(a.bHj+b.bHj,a.bHu+b.bHu);},BQX=a=>{return Bh( -a.bHj, -a.bHu);},A_W=(a,b)=>{return AOd(b.bMI ++a.bHj,b.bM$+a.bHu,b.bTE,b.bTA);},DfA=(a,b)=>{return Bh(a.bHj*b,a.bHu*b);},Bc5=(a,b)=>{let c;c=U8(b);return I3(H4(BA(a.bHj,a.bHu),c));}; +function Io(){let a=this;F.call(a);a.bGX=null;a.bM4=0;a.cy4=null;a.caw=0;} +let ATZ=0,A0w=()=>{A0w=Z(Io);EJS();},Kg=a=>{let b;A0w();b=ATZ;ATZ=b+1|0;a.cy4=W7(b);},CIW=(a,b)=>{let c;A0w();c=ATZ;ATZ=c+1|0;a.cy4=W7(c);a.bGX=b;},A$f=(a,b,c,d)=>{let e;e=d.bHR;while(true){if(b>e)return (-1);if(a.pN(b,c,d)>=0)break;b=b+1|0;}return b;},A6Z=(a,b,c,d,e)=>{while(true){if(c=0)break;c=c+(-1)|0;}return c;},FzS=(a,b)=>{a.caw=b;},Fjn=a=>{return a.caw;},D7h=a=>{let b,c,d;b=a.cy4;c=a.bX();d=new S;T(d);Bb(d,60);b=H(d,b);Bb(b,58);Bb(H(b,c),62);return Q(d);},D$f=a=>{return D7h(a);},Fze +=a=>{return a.bGX;},EH1=(a,b)=>{a.bGX=b;},DVX=(a,b)=>{return 1;},E0k=a=>{return null;},Boj=a=>{let b;a.bM4=1;b=a.bGX;if(b!==null){if(!b.bM4){b=b.pP();if(b!==null){a.bGX.bM4=1;a.bGX=b;}a.bGX.kj();}else if(b instanceof AQk&&b.bVC.cH2)a.bGX=b.bGX;}},EJS=()=>{ATZ=1;}; +function Bty(){let a=this;F.call(a);a.dcn=null;a.b2w=null;} +let Dr9=null,Bue=()=>{Bue=Z(Bty);DVR();},EcZ=(a,b)=>{let c;if(a!==b){if(b instanceof Bty){c=b;return Li(a.b2w,c.b2w);}return 0;}return 1;},DZ1=a=>{let b;b=K(F,1);b.data[0]=a.b2w;return ME(b);},DxX=a=>{let b,c;b=a.b2w;c=new S;T(c);Bb(H(H(c,E(879)),b),93);return Q(c);},DVR=()=>{let b;b=new Cga;AOK(b,16,0.75,1);Le();Dr9=b;}; +function BOl(){let a=this;F.call(a);a.cqi=null;a.bOg=null;a.bPf=0;} +let E5S=(a,b,c,d)=>{a.cqi=b;if(c===null)c=EO();a.bOg=c;a.bPf=d;},BEw=(a,b,c)=>{let d=new BOl();E5S(d,a,b,c);return d;},DkR=(a,b)=>{return BEw(a.cqi,a.bOg,b|0);},AHY=(a,b)=>{if(b!==null)return BEw(a.cqi,b,a.bPf);return a;},ZM=a=>{return a.bPf;},Bvp=(a,b,c)=>{return Bzp(a);},Bzp=a=>{let b,c,d;a:{b:{c:{d:{b=a.cqi;c=b.b2w;d=(-1);switch(FP(c)){case -227670902:break d;case 79774045:break c;case 552423649:break b;default:}break a;}if(!Bj(c,E(394)))break a;d=1;break a;}if(!Bj(c,E(393)))break a;d=0;break a;}if(Bj(c, +E(395)))d=2;}e:{f:{g:{h:{switch(d){case 0:break;case 1:break h;case 2:break g;default:break f;}b=E(880);break e;}b=E(881);break e;}b=E(882);break e;}b=KG(b.b2w,34,39);}return b;},CFO=a=>{let b,c;b=K(F,3);c=b.data;c[0]=Bzp(a);c[1]=a.bOg;c[2]=CL(a.bPf);return ME(b);},ClQ=(a,b)=>{let c;if(a!==b){if(b instanceof BOl){c=b;return !(Li(Bzp(a),Bzp(c))&&Li(a.bOg,c.bOg)&&a.bPf==c.bPf)?0:1;}return 0;}return 1;},A_q=N(Bx),AX6=null,ARJ=null,A2I=null,DNE=null,AHr=()=>{AHr=Z(A_q);FuA();},Ew0=(a,b,c)=>{AHr();Ct(a,b,c);},B4Y +=(a,b)=>{let c=new A_q();Ew0(c,a,b);return c;},FuA=()=>{let b,c,d;AX6=B4Y(E(883),0);ARJ=B4Y(E(884),1);b=B4Y(E(885),2);A2I=b;c=K(A_q,3);d=c.data;d[0]=AX6;d[1]=ARJ;d[2]=b;DNE=c;}; +function BWL(){F.call(this);this.b7D=null;} +let Drz=null,A15=()=>{A15=Z(BWL);DKZ();},Fhy=a=>{A15();a.b7D=AAk();},B1i=()=>{let a=new BWL();Fhy(a);return a;},DKZ=()=>{Drz=Dm(E(886));},AG0=N(EN),A6I=N(Bx),FR=null,J0=null,AJr=null,BkL=null,E0C=null,Ed=()=>{Ed=Z(A6I);FqT();},D4C=(a,b,c)=>{Ed();Ct(a,b,c);},Bm5=(a,b)=>{let c=new A6I();D4C(c,a,b);return c;},FqT=()=>{let b,c,d;FR=Bm5(E(664),0);J0=Bm5(E(887),1);AJr=Bm5(E(888),2);b=Bm5(E(889),3);BkL=b;c=K(A6I,4);d=c.data;d[0]=FR;d[1]=J0;d[2]=AJr;d[3]=b;E0C=c;}; +function JK(){F.call(this);this.b57=null;} +let J2=(a,b)=>{a.b57=Bv(b);},FzR=a=>{let b=new JK();J2(b,a);return b;},EOY=(a,b)=>{let c;if(a!==b){c=b;return Li(a.b57,c.b57);}return 1;},FcZ=a=>{let b;b=K(F,1);b.data[0]=a.b57;return ME(b);}; +function BUc(){let a=this;F.call(a);a.b$n=null;a.czN=null;a.cJN=null;} +let Bbq=null,DgR=null,CjM=null,A$6=()=>{A$6=Z(BUc);DNP();},DH0=(a,b)=>{let c;A$6();a.cJN=new BC3;a.b$n=b;b=new B1E;c=new Ck8;c.cPF=a;CKT(b,c);a.czN=b;},CAu=a=>{let b=new BUc();DH0(b,a);return b;},DX=(a,b,c)=>{let d,e,$$je;d=A_U(a.czN);A10();AEZ();e=Bze(d);try{d=D3(d,b);if(c>0)Cz0(d,c,b.bL());b=EGS(d,e);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},Dm=b=>{A$6();if(b!==null&&b.bGI.length)return CAu(b);return CjM;},COl=b=>{let c,d,e;A$6();c=D3(DgR,b);d=new Sj;JP(d,b.bGI.length);while(GW(c)){b=Bbq;e=BhZ(c);AMW(c, +d,DG(b,e));}ALx(c,d);return Cly(Q(d),2);},DNP=()=>{let b,c;b=Dy();Bbq=b;c=AH8(E(890));C9(b,E(891),c);b=Bbq;c=AH8(E(892));C9(b,E(893),c);b=Bbq;c=AH8(E(894));C9(b,E(895),c);b=Bbq;c=AH8(E(896));C9(b,E(897),c);DgR=Dp(E(898));CjM=CAu(E(14));},AH5=N(Bx),YD=null,E1=null,C6=null,AKr=null,A2s=null,Dt$=null,CM=()=>{CM=Z(AH5);D1O();},Fu8=(a,b,c)=>{CM();Ct(a,b,c);},A5R=(a,b)=>{let c=new AH5();Fu8(c,a,b);return c;},D1O=()=>{let b,c,d;YD=A5R(E(849),0);E1=A5R(E(560),1);C6=A5R(E(558),2);AKr=A5R(E(493),3);b=A5R(E(445),4);A2s +=b;c=K(AH5,5);d=c.data;d[0]=YD;d[1]=E1;d[2]=C6;d[3]=AKr;d[4]=b;Dt$=c;},Eu5=N(),BXf=null,BXg=null,BXj=null,BXk=null,BXh=null,BXi=null,BXl=null,BXm=null,Bgu=null,BHF=null,BHE=null,BHG=null,BHz=null,BHy=null,A_2=(b,c)=>{let d;if(!CQ(c)){d=new S;T(d);b=H(d,b);Bb(b,45);H(b,c);b=Q(d);}return b;},BTi=(b,c)=>{let d;if(CQ(c)){if(BXf===null)BXf=E56();c=BXf;if(c.hasOwnProperty(Cq(b)))b=(c[Cq(b)].value!==null?Fe(c[Cq(b)].value):null);d=Qg(b,95);c=d<=0?E(14):CC(b,d+1|0);}return c;},ATu=(b,c,d)=>{let e,f,g,h,i,j;e=A_2(c, +d);f=b.hasOwnProperty(Cq(e))?b[Cq(e)]:b.hasOwnProperty(Cq(c))?b[Cq(c)]:b.root;g=K(Bi,f.length);h=g.data;i=0;j=h.length;while(i{if(BXm===null)BXm=D5F();return BXm;},Djy=(b,c)=>{let d;if(BHG===null)BHG=ET$();d=BHG;c=A_2(b,c);return ((d.hasOwnProperty(Cq(c))?d[Cq(c)]:d.hasOwnProperty(Cq(b))?d[Cq(b)]:d.root).value!==null?Fe((d.hasOwnProperty(Cq(c))?d[Cq(c)]:d.hasOwnProperty(Cq(b))?d[Cq(b)]:d.root).value):null);},E56=()=>{return {"ksh": +{"value":"ksh-Latn-DE"},"ksj":{"value":"ksj-Latn-ZZ"},"tdu":{"value":"tdu-Latn-MY"},"cch":{"value":"cch-Latn-NG"},"und-Khar":{"value":"pra-Khar-PK"},"gkn":{"value":"gkn-Latn-ZZ"},"ksr":{"value":"ksr-Latn-ZZ"},"und-Mani":{"value":"xmn-Mani-CN"},"gkp":{"value":"gkp-Latn-ZZ"},"xmf":{"value":"xmf-Geor-GE"},"ccp":{"value":"ccp-Cakm-BD"},"ted":{"value":"ted-Latn-ZZ"},"und-Mand":{"value":"myz-Mand-IR"},"ktb":{"value":"ktb-Ethi-ZZ"},"xmn":{"value":"xmn-Mani-CN"},"sd-Sind":{"value":"sd-Sind-IN"},"xmr":{"value":"xmr-Merc-SD"} +,"tem":{"value":"tem-Latn-SL"},"und-Mroo":{"value":"mro-Mroo-BD"},"teo":{"value":"teo-Latn-UG"},"tet":{"value":"tet-Latn-TL"},"ktm":{"value":"ktm-Latn-ZZ"},"glk":{"value":"glk-Arab-IR"},"kto":{"value":"kto-Latn-ZZ"},"ktr":{"value":"ktr-Latn-MY"},"und-Soyo":{"value":"cmg-Soyo-MN"},"xna":{"value":"xna-Narb-SA"},"tfi":{"value":"tfi-Latn-ZZ"},"kub":{"value":"kub-Latn-ZZ"},"kue":{"value":"kue-Latn-ZZ"},"kud":{"value":"kud-Latn-ZZ"},"xnr":{"value":"xnr-Deva-IN"},"ceb":{"value":"ceb-Latn-PH"},"kuj":{"value":"kuj-Latn-ZZ"} +,"kum":{"value":"kum-Cyrl-RU"},"kun":{"value":"kun-Latn-ZZ"},"gmm":{"value":"gmm-Latn-ZZ"},"kup":{"value":"kup-Latn-ZZ"},"kus":{"value":"kus-Latn-ZZ"},"gmv":{"value":"gmv-Ethi-ZZ"},"tgc":{"value":"tgc-Latn-ZZ"},"xog":{"value":"xog-Latn-UG"},"und-Arab-YT":{"value":"swb-Arab-YT"},"und-Latn-ET":{"value":"en-Latn-ET"},"xon":{"value":"xon-Latn-ZZ"},"ha-CM":{"value":"ha-Arab-CM"},"gnd":{"value":"gnd-Latn-ZZ"},"kvg":{"value":"kvg-Latn-ZZ"},"tgo":{"value":"tgo-Latn-ZZ"},"cfa":{"value":"cfa-Latn-ZZ"},"gng":{"value": +"gng-Latn-ZZ"},"tgu":{"value":"tgu-Latn-ZZ"},"und-Latn-GE":{"value":"ku-Latn-GE"},"kvr":{"value":"kvr-Latn-ID"},"kvx":{"value":"kvx-Arab-PK"},"und-Gujr":{"value":"gu-Gujr-IN"},"thl":{"value":"thl-Deva-NP"},"xpr":{"value":"xpr-Prti-IR"},"thq":{"value":"thq-Deva-NP"},"god":{"value":"god-Latn-ZZ"},"gof":{"value":"gof-Ethi-ZZ"},"kwj":{"value":"kwj-Latn-ZZ"},"ky-Arab":{"value":"ky-Arab-CN"},"thr":{"value":"thr-Deva-NP"},"goi":{"value":"goi-Latn-ZZ"},"cgg":{"value":"cgg-Latn-UG"},"kwo":{"value":"kwo-Latn-ZZ"},"gom": +{"value":"gom-Deva-IN"},"kwq":{"value":"kwq-Latn-ZZ"},"gon":{"value":"gon-Telu-IN"},"gos":{"value":"gos-Latn-NL"},"gor":{"value":"gor-Latn-ID"},"und-Latn-CY":{"value":"tr-Latn-CY"},"got":{"value":"got-Goth-UA"},"tif":{"value":"tif-Latn-ZZ"},"tig":{"value":"tig-Ethi-ER"},"kxa":{"value":"kxa-Latn-ZZ"},"kxc":{"value":"kxc-Ethi-ZZ"},"pag":{"value":"pag-Latn-PH"},"tik":{"value":"tik-Latn-ZZ"},"kxe":{"value":"kxe-Latn-ZZ"},"tim":{"value":"tim-Latn-ZZ"},"pal":{"value":"pal-Phli-IR"},"tio":{"value":"tio-Latn-ZZ"},"pam": +{"value":"pam-Latn-PH"},"und-Marc":{"value":"bo-Marc-CN"},"pap":{"value":"pap-Latn-AW"},"und-Latn-CN":{"value":"za-Latn-CN"},"tiv":{"value":"tiv-Latn-NG"},"kxm":{"value":"kxm-Thai-TH"},"kxp":{"value":"kxp-Arab-PK"},"pau":{"value":"pau-Latn-PW"},"chk":{"value":"chk-Latn-FM"},"chm":{"value":"chm-Cyrl-RU"},"xrb":{"value":"xrb-Latn-ZZ"},"chp":{"value":"chp-Latn-CA"},"cho":{"value":"cho-Latn-US"},"kxw":{"value":"kxw-Latn-ZZ"},"und-Latn-DZ":{"value":"fr-Latn-DZ"},"chr":{"value":"chr-Cher-US"},"kxz":{"value":"kxz-Latn-ZZ"} +,"und-Batk":{"value":"bbc-Batk-ID"},"und-Bass":{"value":"bsq-Bass-LR"},"kye":{"value":"kye-Latn-ZZ"},"pbi":{"value":"pbi-Latn-ZZ"},"und-Deva-MU":{"value":"bho-Deva-MU"},"cic":{"value":"cic-Latn-US"},"und-Sgnw":{"value":"ase-Sgnw-US"},"xsa":{"value":"xsa-Sarb-YE"},"kyx":{"value":"kyx-Latn-ZZ"},"xsi":{"value":"xsi-Latn-ZZ"},"pcd":{"value":"pcd-Latn-FR"},"und-Latn-AM":{"value":"ku-Latn-AM"},"xsm":{"value":"xsm-Latn-ZZ"},"tkl":{"value":"tkl-Latn-TK"},"und-Thai-CN":{"value":"lcp-Thai-CN"},"grb":{"value":"grb-Latn-ZZ"} +,"xsr":{"value":"xsr-Deva-NP"},"und-Latn-AF":{"value":"tk-Latn-AF"},"grc":{"value":"grc-Cprt-CY"},"kzj":{"value":"kzj-Latn-MY"},"tkr":{"value":"tkr-Latn-AZ"},"cja":{"value":"cja-Arab-KH"},"pcm":{"value":"pcm-Latn-NG"},"tkt":{"value":"tkt-Deva-NP"},"und-Olck":{"value":"sat-Olck-IN"},"kzr":{"value":"kzr-Latn-ZZ"},"kzt":{"value":"kzt-Latn-MY"},"cjm":{"value":"cjm-Cham-VN"},"grt":{"value":"grt-Beng-IN"},"und-Arab-TJ":{"value":"fa-Arab-TJ"},"und-Arab-TG":{"value":"apd-Arab-TG"},"und-Arab-TH":{"value":"mfa-Arab-TH"} +,"und-Deva-PK":{"value":"btv-Deva-PK"},"grw":{"value":"grw-Latn-ZZ"},"cjv":{"value":"cjv-Latn-ZZ"},"pdc":{"value":"pdc-Latn-US"},"tlf":{"value":"tlf-Latn-ZZ"},"und-Arab-TR":{"value":"az-Arab-TR"},"ckb":{"value":"ckb-Arab-IQ"},"tly":{"value":"tly-Latn-AZ"},"pdt":{"value":"pdt-Latn-CA"},"tlx":{"value":"tlx-Latn-ZZ"},"ckl":{"value":"ckl-Latn-ZZ"},"cko":{"value":"cko-Latn-ZZ"},"gsw":{"value":"gsw-Latn-CH"},"ped":{"value":"ped-Latn-ZZ"},"tmh":{"value":"tmh-Latn-NE"},"cky":{"value":"cky-Latn-ZZ"},"kk-Arab":{"value" +:"kk-Arab-CN"},"und-Runr":{"value":"non-Runr-SE"},"cla":{"value":"cla-Latn-ZZ"},"peo":{"value":"peo-Xpeo-IR"},"tmy":{"value":"tmy-Latn-ZZ"},"pex":{"value":"pex-Latn-ZZ"},"ky-TR":{"value":"ky-Latn-TR"},"tnh":{"value":"tnh-Latn-ZZ"},"guc":{"value":"guc-Latn-CO"},"gub":{"value":"gub-Latn-BR"},"gud":{"value":"gud-Latn-ZZ"},"pfl":{"value":"pfl-Latn-DE"},"cme":{"value":"cme-Latn-ZZ"},"cmg":{"value":"cmg-Soyo-MN"},"gur":{"value":"gur-Latn-GH"},"xwe":{"value":"xwe-Latn-ZZ"},"guw":{"value":"guw-Latn-ZZ"},"tof":{"value" +:"tof-Latn-ZZ"},"gux":{"value":"gux-Latn-ZZ"},"guz":{"value":"guz-Latn-KE"},"tog":{"value":"tog-Latn-MW"},"gvf":{"value":"gvf-Latn-ZZ"},"toq":{"value":"toq-Latn-ZZ"},"gvr":{"value":"gvr-Deva-NP"},"und-Guru":{"value":"pa-Guru-IN"},"gvs":{"value":"gvs-Latn-ZZ"},"tpi":{"value":"tpi-Latn-PG"},"tpm":{"value":"tpm-Latn-ZZ"},"und-Tfng":{"value":"zgh-Tfng-MA"},"gwc":{"value":"gwc-Arab-ZZ"},"und-Arab-PK":{"value":"ur-Arab-PK"},"phl":{"value":"phl-Arab-ZZ"},"und-Aghb":{"value":"lez-Aghb-RU"},"phn":{"value":"phn-Phnx-LB"} +,"gwi":{"value":"gwi-Latn-CA"},"tpz":{"value":"tpz-Latn-ZZ"},"cop":{"value":"cop-Copt-EG"},"gwt":{"value":"gwt-Arab-ZZ"},"lab":{"value":"lab-Lina-GR"},"lad":{"value":"lad-Hebr-IL"},"lah":{"value":"lah-Arab-PK"},"pil":{"value":"pil-Latn-ZZ"},"lag":{"value":"lag-Latn-TZ"},"tqo":{"value":"tqo-Latn-ZZ"},"laj":{"value":"laj-Latn-UG"},"pip":{"value":"pip-Latn-ZZ"},"und-Khmr":{"value":"km-Khmr-KH"},"las":{"value":"las-Latn-ZZ"},"sd-Deva":{"value":"sd-Deva-IN"},"und-Khoj":{"value":"sd-Khoj-IN"},"cps":{"value":"cps-Latn-PH"} +,"kk-AF":{"value":"kk-Arab-AF"},"und-Arab-MU":{"value":"ur-Arab-MU"},"lbe":{"value":"lbe-Cyrl-RU"},"und-Arab-NG":{"value":"ha-Arab-NG"},"gyi":{"value":"gyi-Latn-ZZ"},"tru":{"value":"tru-Latn-TR"},"trw":{"value":"trw-Arab-ZZ"},"trv":{"value":"trv-Latn-TW"},"lbu":{"value":"lbu-Latn-ZZ"},"lbw":{"value":"lbw-Latn-ID"},"tsd":{"value":"tsd-Grek-GR"},"tsf":{"value":"tsf-Deva-NP"},"pka":{"value":"pka-Brah-IN"},"tsg":{"value":"tsg-Latn-PH"},"tsj":{"value":"tsj-Tibt-BT"},"und-Deva-FJ":{"value":"hif-Deva-FJ"},"pko":{"value" +:"pko-Latn-KE"},"lcm":{"value":"lcm-Latn-ZZ"},"crh":{"value":"crh-Cyrl-UA"},"lcp":{"value":"lcp-Thai-CN"},"tsw":{"value":"tsw-Latn-ZZ"},"crj":{"value":"crj-Cans-CA"},"crl":{"value":"crl-Cans-CA"},"und-Arab-MN":{"value":"kk-Arab-MN"},"crk":{"value":"crk-Cans-CA"},"crm":{"value":"crm-Cans-CA"},"und-Arab-MM":{"value":"rhg-Arab-MM"},"pla":{"value":"pla-Latn-ZZ"},"tte":{"value":"tte-Latn-ZZ"},"crs":{"value":"crs-Latn-SC"},"ttd":{"value":"ttd-Latn-ZZ"},"ldb":{"value":"ldb-Latn-ZZ"},"ttj":{"value":"ttj-Latn-UG"},"kk-CN": +{"value":"kk-Arab-CN"},"und-Yiii":{"value":"ii-Yiii-CN"},"tts":{"value":"tts-Thai-TH"},"csb":{"value":"csb-Latn-PL"},"ttr":{"value":"ttr-Latn-ZZ"},"ttt":{"value":"ttt-Latn-AZ"},"csw":{"value":"csw-Cans-CA"},"tuh":{"value":"tuh-Latn-ZZ"},"led":{"value":"led-Latn-ZZ"},"tul":{"value":"tul-Latn-ZZ"},"lee":{"value":"lee-Latn-ZZ"},"tum":{"value":"tum-Latn-MW"},"und-Arab-KH":{"value":"cja-Arab-KH"},"tuq":{"value":"tuq-Latn-ZZ"},"ctd":{"value":"ctd-Pauc-MM"},"lem":{"value":"lem-Latn-ZZ"},"lep":{"value":"lep-Lepc-IN"} +,"pms":{"value":"pms-Latn-IT"},"leq":{"value":"leq-Latn-ZZ"},"und-Pauc":{"value":"ctd-Pauc-MM"},"und-Sogo":{"value":"sog-Sogo-UZ"},"leu":{"value":"leu-Latn-ZZ"},"lez":{"value":"lez-Cyrl-RU"},"tvd":{"value":"tvd-Latn-ZZ"},"mn-CN":{"value":"mn-Mong-CN"},"sr-TR":{"value":"sr-Latn-TR"},"png":{"value":"png-Latn-ZZ"},"tvl":{"value":"tvl-Latn-TV"},"und-Brah":{"value":"pka-Brah-IN"},"und-Brai":{"value":"fr-Brai-FR"},"pnn":{"value":"pnn-Latn-ZZ"},"tvu":{"value":"tvu-Latn-ZZ"},"pnt":{"value":"pnt-Grek-GR"},"uz-CN":{"value" +:"uz-Cyrl-CN"},"ha-SD":{"value":"ha-Arab-SD"},"twh":{"value":"twh-Latn-ZZ"},"und-Takr":{"value":"doi-Takr-IN"},"lgg":{"value":"lgg-Latn-ZZ"},"pon":{"value":"pon-Latn-FM"},"twq":{"value":"twq-Latn-NE"},"und-Arab-ID":{"value":"ms-Arab-ID"},"und-Arab-IN":{"value":"ur-Arab-IN"},"ppa":{"value":"ppa-Deva-IN"},"txg":{"value":"txg-Tang-CN"},"yam":{"value":"yam-Latn-ZZ"},"und-Talu":{"value":"khb-Talu-CN"},"yao":{"value":"yao-Latn-MZ"},"yap":{"value":"yap-Latn-FM"},"yas":{"value":"yas-Latn-ZZ"},"yat":{"value":"yat-Latn-ZZ"} +,"ppo":{"value":"ppo-Latn-ZZ"},"yav":{"value":"yav-Latn-CM"},"yay":{"value":"yay-Latn-ZZ"},"yaz":{"value":"yaz-Latn-ZZ"},"und-Tale":{"value":"tdd-Tale-CN"},"ybb":{"value":"ybb-Latn-CM"},"yba":{"value":"yba-Latn-ZZ"},"tya":{"value":"tya-Latn-ZZ"},"lia":{"value":"lia-Latn-ZZ"},"lid":{"value":"lid-Latn-ZZ"},"und-Latn-TW":{"value":"trv-Latn-TW"},"lif":{"value":"lif-Deva-NP"},"lih":{"value":"lih-Latn-ZZ"},"lig":{"value":"lig-Latn-ZZ"},"lij":{"value":"lij-Latn-IT"},"hag":{"value":"hag-Latn-ZZ"},"und-Latn-TN":{"value" +:"fr-Latn-TN"},"tyv":{"value":"tyv-Cyrl-RU"},"yby":{"value":"yby-Latn-ZZ"},"und-Arab-GB":{"value":"ks-Arab-GB"},"hak":{"value":"hak-Hans-CN"},"und-Taml":{"value":"ta-Taml-IN"},"ham":{"value":"ham-Latn-ZZ"},"lis":{"value":"lis-Lisu-CN"},"und-Latn-SY":{"value":"fr-Latn-SY"},"ky-Latn":{"value":"ky-Latn-TR"},"pra":{"value":"pra-Khar-PK"},"haw":{"value":"haw-Latn-US"},"haz":{"value":"haz-Arab-AF"},"ku-LB":{"value":"ku-Arab-LB"},"prd":{"value":"prd-Arab-IR"},"prg":{"value":"prg-Latn-001"},"tzm":{"value":"tzm-Latn-MA"} +,"hbb":{"value":"hbb-Latn-ZZ"},"und-Latn-UA":{"value":"pl-Latn-UA"},"ljp":{"value":"ljp-Latn-ID"},"und-Tang":{"value":"txg-Tang-CN"},"yue-Hans":{"value":"yue-Hans-CN"},"und-Latn-RU":{"value":"krl-Latn-RU"},"lki":{"value":"lki-Arab-IR"},"pss":{"value":"pss-Latn-ZZ"},"lkt":{"value":"lkt-Latn-US"},"sr-RO":{"value":"sr-Latn-RO"},"und-Arab-CN":{"value":"ug-Arab-CN"},"lle":{"value":"lle-Latn-ZZ"},"und-Cyrl":{"value":"ru-Cyrl-RU"},"uz-AF":{"value":"uz-Arab-AF"},"yer":{"value":"yer-Latn-ZZ"},"und-Beng":{"value":"bn-Beng-BD"} +,"ptp":{"value":"ptp-Latn-ZZ"},"lln":{"value":"lln-Latn-ZZ"},"sr-RU":{"value":"sr-Latn-RU"},"hdy":{"value":"hdy-Ethi-ZZ"},"unr-NP":{"value":"unr-Deva-NP"},"und-Mend":{"value":"men-Mend-SL"},"lmn":{"value":"lmn-Telu-IN"},"lmp":{"value":"lmp-Latn-ZZ"},"lmo":{"value":"lmo-Latn-IT"},"puu":{"value":"puu-Latn-GA"},"und-Arab-CC":{"value":"ms-Arab-CC"},"pal-Phlp":{"value":"pal-Phlp-CN"},"ygr":{"value":"ygr-Latn-ZZ"},"ygw":{"value":"ygw-Latn-ZZ"},"lns":{"value":"lns-Latn-ZZ"},"ky-CN":{"value":"ky-Arab-CN"},"lnu":{"value" +:"lnu-Latn-ZZ"},"pwa":{"value":"pwa-Latn-ZZ"},"und-Chrs":{"value":"xco-Chrs-UZ"},"und-Mahj":{"value":"hi-Mahj-IN"},"rif-NL":{"value":"rif-Latn-NL"},"loj":{"value":"loj-Latn-ZZ"},"lol":{"value":"lol-Latn-CD"},"lok":{"value":"lok-Latn-ZZ"},"lor":{"value":"lor-Latn-ZZ"},"und-Sora":{"value":"srb-Sora-IN"},"los":{"value":"los-Latn-ZZ"},"loz":{"value":"loz-Latn-ZM"},"und-202":{"value":"en-Latn-NG"},"und-Latn-MR":{"value":"fr-Latn-MR"},"ku-Yezi":{"value":"ku-Yezi-GE"},"hhy":{"value":"hhy-Latn-ZZ"},"hia":{"value":"hia-Latn-ZZ"} +,"hif":{"value":"hif-Latn-FJ"},"dad":{"value":"dad-Latn-ZZ"},"hih":{"value":"hih-Latn-ZZ"},"hig":{"value":"hig-Latn-ZZ"},"daf":{"value":"daf-Latn-ZZ"},"ubu":{"value":"ubu-Latn-ZZ"},"dah":{"value":"dah-Latn-ZZ"},"hil":{"value":"hil-Latn-PH"},"dag":{"value":"dag-Latn-ZZ"},"und-Mero":{"value":"xmr-Mero-SD"},"dak":{"value":"dak-Latn-US"},"und-Merc":{"value":"xmr-Merc-SD"},"dar":{"value":"dar-Cyrl-RU"},"dav":{"value":"dav-Latn-KE"},"lrc":{"value":"lrc-Arab-IR"},"yko":{"value":"yko-Latn-ZZ"},"und-Latn-MK":{"value" +:"sq-Latn-MK"},"und-Latn-MM":{"value":"kac-Latn-MM"},"dbd":{"value":"dbd-Latn-ZZ"},"und-Latn-MO":{"value":"pt-Latn-MO"},"und-Latn-MA":{"value":"fr-Latn-MA"},"und-Bali":{"value":"ban-Bali-ID"},"und-Tavt":{"value":"blt-Tavt-VN"},"dbq":{"value":"dbq-Latn-ZZ"},"yle":{"value":"yle-Latn-ZZ"},"ylg":{"value":"ylg-Latn-ZZ"},"und-Maka":{"value":"mak-Maka-ID"},"yll":{"value":"yll-Latn-ZZ"},"udm":{"value":"udm-Cyrl-RU"},"dcc":{"value":"dcc-Arab-IN"},"yml":{"value":"yml-Latn-ZZ"},"hla":{"value":"hla-Latn-ZZ"},"und-Latn-IR": +{"value":"tk-Latn-IR"},"ltg":{"value":"ltg-Latn-LV"},"und-Latn-KM":{"value":"fr-Latn-KM"},"ddn":{"value":"ddn-Latn-ZZ"},"hlu":{"value":"hlu-Hluw-TR"},"lua":{"value":"lua-Latn-CD"},"und-Bamu":{"value":"bax-Bamu-CM"},"hmd":{"value":"hmd-Plrd-CN"},"ded":{"value":"ded-Latn-ZZ"},"luo":{"value":"luo-Latn-KE"},"und-142":{"value":"zh-Hans-CN"},"und-143":{"value":"uz-Latn-UZ"},"den":{"value":"den-Latn-CA"},"und-Gran":{"value":"sa-Gran-IN"},"hmt":{"value":"hmt-Latn-ZZ"},"uga":{"value":"uga-Ugar-SY"},"luz":{"value":"luz-Arab-IR"} +,"luy":{"value":"luy-Latn-KE"},"und-145":{"value":"ar-Arab-SA"},"und-Cakm":{"value":"ccp-Cakm-BD"},"und-Dupl":{"value":"fr-Dupl-FR"},"yon":{"value":"yon-Latn-ZZ"},"ug-MN":{"value":"ug-Cyrl-MN"},"hne":{"value":"hne-Deva-IN"},"hnd":{"value":"hnd-Arab-PK"},"hnj":{"value":"hnj-Hmng-LA"},"hno":{"value":"hno-Arab-PK"},"hnn":{"value":"hnn-Latn-PH"},"ug-KZ":{"value":"ug-Cyrl-KZ"},"und-154":{"value":"en-Latn-GB"},"und-155":{"value":"de-Latn-DE"},"und-150":{"value":"ru-Cyrl-RU"},"und-151":{"value":"ru-Cyrl-RU"},"und-Sylo": +{"value":"syl-Sylo-BD"},"hoc":{"value":"hoc-Deva-IN"},"dga":{"value":"dga-Latn-ZZ"},"lwl":{"value":"lwl-Thai-TH"},"und-Ital":{"value":"ett-Ital-IT"},"hoj":{"value":"hoj-Deva-IN"},"dgh":{"value":"dgh-Latn-ZZ"},"dgi":{"value":"dgi-Latn-ZZ"},"dgl":{"value":"dgl-Arab-ZZ"},"hot":{"value":"hot-Latn-ZZ"},"dgr":{"value":"dgr-Latn-CA"},"dgz":{"value":"dgz-Latn-ZZ"},"yrb":{"value":"yrb-Latn-ZZ"},"yre":{"value":"yre-Latn-ZZ"},"und-Lyci":{"value":"xlc-Lyci-TR"},"und-Cans":{"value":"cr-Cans-CA"},"und-Hluw":{"value":"hlu-Hluw-TR"} +,"und-Nand":{"value":"sa-Nand-IN"},"yrl":{"value":"yrl-Latn-BR"},"dia":{"value":"dia-Latn-ZZ"},"und-Grek":{"value":"el-Grek-GR"},"und-Mong":{"value":"mn-Mong-CN"},"und-Lydi":{"value":"xld-Lydi-TR"},"yss":{"value":"yss-Latn-ZZ"},"und-Newa":{"value":"new-Newa-NP"},"lzh":{"value":"lzh-Hans-CN"},"dje":{"value":"dje-Latn-NE"},"lzz":{"value":"lzz-Latn-TR"},"uli":{"value":"uli-Latn-FM"},"hsb":{"value":"hsb-Latn-DE"},"und-Xsux":{"value":"akk-Xsux-IQ"},"hsn":{"value":"hsn-Hans-CN"},"und-Cari":{"value":"xcr-Cari-TR"} +,"und-Syrc":{"value":"syr-Syrc-IQ"},"yua":{"value":"yua-Latn-MX"},"yue":{"value":"yue-Hant-HK"},"umb":{"value":"umb-Latn-AO"},"yuj":{"value":"yuj-Latn-ZZ"},"yut":{"value":"yut-Latn-ZZ"},"yuw":{"value":"yuw-Latn-ZZ"},"und-Bopo":{"value":"zh-Bopo-TW"},"und-Yezi":{"value":"ku-Yezi-GE"},"und":{"value":"en-Latn-US"},"und-Egyp":{"value":"egy-Egyp-EG"},"und-Tglg":{"value":"fil-Tglg-PH"},"unr":{"value":"unr-Beng-IN"},"hui":{"value":"hui-Latn-ZZ"},"und-Elba":{"value":"sq-Elba-AL"},"unx":{"value":"unx-Beng-IN"},"und-Narb": +{"value":"xna-Narb-SA"},"pa-PK":{"value":"pa-Arab-PK"},"und-Hebr-CA":{"value":"yi-Hebr-CA"},"uok":{"value":"uok-Latn-ZZ"},"und-Geor":{"value":"ka-Geor-GE"},"und-Shrd":{"value":"sa-Shrd-IN"},"dnj":{"value":"dnj-Latn-CI"},"und-Diak":{"value":"dv-Diak-MV"},"dob":{"value":"dob-Latn-ZZ"},"und-Mymr-TH":{"value":"mnw-Mymr-TH"},"doi":{"value":"doi-Arab-IN"},"dop":{"value":"dop-Latn-ZZ"},"und-Sund":{"value":"su-Sund-ID"},"dow":{"value":"dow-Latn-ZZ"},"sr-ME":{"value":"sr-Latn-ME"},"und-Hung":{"value":"hu-Hung-HU"},"mad": +{"value":"mad-Latn-ID"},"mag":{"value":"mag-Deva-IN"},"maf":{"value":"maf-Latn-CM"},"mai":{"value":"mai-Deva-IN"},"mak":{"value":"mak-Latn-ID"},"man":{"value":"man-Latn-GM"},"mas":{"value":"mas-Latn-KE"},"maw":{"value":"maw-Latn-ZZ"},"maz":{"value":"maz-Latn-MX"},"uri":{"value":"uri-Latn-ZZ"},"mbh":{"value":"mbh-Latn-ZZ"},"urt":{"value":"urt-Latn-ZZ"},"mbo":{"value":"mbo-Latn-ZZ"},"urw":{"value":"urw-Latn-ZZ"},"mbq":{"value":"mbq-Latn-ZZ"},"mbu":{"value":"mbu-Latn-ZZ"},"und-Hebr-GB":{"value":"yi-Hebr-GB"},"usa": +{"value":"usa-Latn-ZZ"},"mbw":{"value":"mbw-Latn-ZZ"},"mci":{"value":"mci-Latn-ZZ"},"dri":{"value":"dri-Latn-ZZ"},"mcq":{"value":"mcq-Latn-ZZ"},"drh":{"value":"drh-Mong-CN"},"mcp":{"value":"mcp-Latn-ZZ"},"mcr":{"value":"mcr-Latn-ZZ"},"mcu":{"value":"mcu-Latn-ZZ"},"drs":{"value":"drs-Ethi-ZZ"},"mda":{"value":"mda-Latn-ZZ"},"mdf":{"value":"mdf-Cyrl-RU"},"mde":{"value":"mde-Arab-ZZ"},"mdh":{"value":"mdh-Latn-PH"},"dsb":{"value":"dsb-Latn-DE"},"mdj":{"value":"mdj-Latn-ZZ"},"utr":{"value":"utr-Latn-ZZ"},"mdr":{"value" +:"mdr-Latn-ID"},"mdx":{"value":"mdx-Ethi-ZZ"},"mee":{"value":"mee-Latn-ZZ"},"med":{"value":"med-Latn-ZZ"},"mek":{"value":"mek-Latn-ZZ"},"men":{"value":"men-Latn-SL"},"az-RU":{"value":"az-Cyrl-RU"},"mis-Medf":{"value":"mis-Medf-NG"},"mer":{"value":"mer-Latn-KE"},"dtm":{"value":"dtm-Latn-ML"},"meu":{"value":"meu-Latn-ZZ"},"met":{"value":"met-Latn-ZZ"},"dtp":{"value":"dtp-Latn-MY"},"dts":{"value":"dts-Latn-ZZ"},"uvh":{"value":"uvh-Latn-ZZ"},"dty":{"value":"dty-Deva-NP"},"mfa":{"value":"mfa-Arab-TH"},"uvl":{"value" +:"uvl-Latn-ZZ"},"mfe":{"value":"mfe-Latn-MU"},"dua":{"value":"dua-Latn-CM"},"dud":{"value":"dud-Latn-ZZ"},"duc":{"value":"duc-Latn-ZZ"},"mfn":{"value":"mfn-Latn-ZZ"},"dug":{"value":"dug-Latn-ZZ"},"mfo":{"value":"mfo-Latn-ZZ"},"mfq":{"value":"mfq-Latn-ZZ"},"und-Phag":{"value":"lzh-Phag-CN"},"dva":{"value":"dva-Latn-ZZ"},"mgh":{"value":"mgh-Latn-MZ"},"mgl":{"value":"mgl-Latn-ZZ"},"mgo":{"value":"mgo-Latn-CM"},"mgp":{"value":"mgp-Deva-NP"},"mgy":{"value":"mgy-Latn-TZ"},"zag":{"value":"zag-Latn-SD"},"mhi":{"value" +:"mhi-Latn-ZZ"},"mhl":{"value":"mhl-Latn-ZZ"},"dww":{"value":"dww-Latn-ZZ"},"mif":{"value":"mif-Latn-ZZ"},"und-Mymr-IN":{"value":"kht-Mymr-IN"},"min":{"value":"min-Latn-ID"},"mis":{"value":"mis-Hatr-IQ"},"ian":{"value":"ian-Latn-ZZ"},"miw":{"value":"miw-Latn-ZZ"},"iar":{"value":"iar-Latn-ZZ"},"uz-Arab":{"value":"uz-Arab-AF"},"ibb":{"value":"ibb-Latn-NG"},"iba":{"value":"iba-Latn-MY"},"dyo":{"value":"dyo-Latn-SN"},"dyu":{"value":"dyu-Latn-BF"},"iby":{"value":"iby-Latn-ZZ"},"zdj":{"value":"zdj-Arab-KM"},"ica": +{"value":"ica-Latn-ZZ"},"mki":{"value":"mki-Arab-ZZ"},"und-Wcho":{"value":"nnp-Wcho-IN"},"ich":{"value":"ich-Latn-ZZ"},"mkl":{"value":"mkl-Latn-ZZ"},"dzg":{"value":"dzg-Latn-ZZ"},"mkp":{"value":"mkp-Latn-ZZ"},"zea":{"value":"zea-Latn-NL"},"mkw":{"value":"mkw-Latn-ZZ"},"mle":{"value":"mle-Latn-ZZ"},"idd":{"value":"idd-Latn-ZZ"},"idi":{"value":"idi-Latn-ZZ"},"lif-Limb":{"value":"lif-Limb-IN"},"mlp":{"value":"mlp-Latn-ZZ"},"mls":{"value":"mls-Latn-SD"},"idu":{"value":"idu-Latn-ZZ"},"quc":{"value":"quc-Latn-GT"} +,"qug":{"value":"qug-Latn-EC"},"und-Jamo":{"value":"ko-Jamo-KR"},"mmo":{"value":"mmo-Latn-ZZ"},"mmu":{"value":"mmu-Latn-ZZ"},"mmx":{"value":"mmx-Latn-ZZ"},"zgh":{"value":"zgh-Tfng-MA"},"mna":{"value":"mna-Latn-ZZ"},"mnf":{"value":"mnf-Latn-ZZ"},"ife":{"value":"ife-Latn-TG"},"mni":{"value":"mni-Beng-IN"},"mnw":{"value":"mnw-Mymr-MM"},"moa":{"value":"moa-Latn-ZZ"},"moe":{"value":"moe-Latn-CA"},"igb":{"value":"igb-Latn-ZZ"},"ige":{"value":"ige-Latn-ZZ"},"moh":{"value":"moh-Latn-CA"},"und-Hebr-SE":{"value":"yi-Hebr-SE"} +,"zhx":{"value":"zhx-Nshu-CN"},"mos":{"value":"mos-Latn-BF"},"und-Shaw":{"value":"en-Shaw-GB"},"zia":{"value":"zia-Latn-ZZ"},"mox":{"value":"mox-Latn-ZZ"},"vag":{"value":"vag-Latn-ZZ"},"vai":{"value":"vai-Vaii-LR"},"van":{"value":"van-Latn-ZZ"},"mpp":{"value":"mpp-Latn-ZZ"},"mpt":{"value":"mpt-Latn-ZZ"},"mps":{"value":"mps-Latn-ZZ"},"mpx":{"value":"mpx-Latn-ZZ"},"und-Hebr-US":{"value":"yi-Hebr-US"},"hi-Latn":{"value":"hi-Latn-IN"},"mql":{"value":"mql-Latn-ZZ"},"und-Hebr-UA":{"value":"yi-Hebr-UA"},"mrd":{"value" +:"mrd-Deva-NP"},"zkt":{"value":"zkt-Kits-CN"},"mrj":{"value":"mrj-Cyrl-RU"},"ijj":{"value":"ijj-Latn-ZZ"},"mro":{"value":"mro-Mroo-BD"},"und-Modi":{"value":"mr-Modi-IN"},"ebu":{"value":"ebu-Latn-KE"},"zlm":{"value":"zlm-Latn-TG"},"arc-Palm":{"value":"arc-Palm-SY"},"ikk":{"value":"ikk-Latn-ZZ"},"ikt":{"value":"ikt-Latn-CA"},"ikw":{"value":"ikw-Latn-ZZ"},"vec":{"value":"vec-Latn-IT"},"ikx":{"value":"ikx-Latn-ZZ"},"zmi":{"value":"zmi-Latn-MY"},"mtc":{"value":"mtc-Latn-ZZ"},"mtf":{"value":"mtf-Latn-ZZ"},"vep":{"value" +:"vep-Latn-RU"},"zh-Bopo":{"value":"zh-Bopo-TW"},"mti":{"value":"mti-Latn-ZZ"},"und-Ethi":{"value":"am-Ethi-ET"},"mtr":{"value":"mtr-Deva-IN"},"und-Thai-LA":{"value":"kdt-Thai-LA"},"ilo":{"value":"ilo-Latn-PH"},"zne":{"value":"zne-Latn-ZZ"},"mua":{"value":"mua-Latn-CM"},"und-Thai-KH":{"value":"kdt-Thai-KH"},"imo":{"value":"imo-Latn-ZZ"},"mus":{"value":"mus-Latn-US"},"mur":{"value":"mur-Latn-ZZ"},"mva":{"value":"mva-Latn-ZZ"},"inh":{"value":"inh-Cyrl-RU"},"mvn":{"value":"mvn-Latn-ZZ"},"efi":{"value":"efi-Latn-NG"} +,"mvy":{"value":"mvy-Arab-PK"},"und-Java":{"value":"jv-Java-ID"},"mwk":{"value":"mwk-Latn-ML"},"mwr":{"value":"mwr-Deva-IN"},"und-021":{"value":"en-Latn-US"},"egl":{"value":"egl-Latn-IT"},"mww":{"value":"mww-Hmnp-US"},"mwv":{"value":"mwv-Latn-ID"},"iou":{"value":"iou-Latn-ZZ"},"und-029":{"value":"es-Latn-CU"},"vic":{"value":"vic-Latn-SX"},"egy":{"value":"egy-Egyp-EG"},"und-Ugar":{"value":"uga-Ugar-SY"},"mxc":{"value":"mxc-Latn-ZW"},"raj":{"value":"raj-Deva-IN"},"rai":{"value":"rai-Latn-ZZ"},"rao":{"value":"rao-Latn-ZZ"} +,"viv":{"value":"viv-Latn-ZZ"},"mxm":{"value":"mxm-Latn-ZZ"},"und-034":{"value":"hi-Deva-IN"},"und-030":{"value":"zh-Hans-CN"},"und-039":{"value":"it-Latn-IT"},"und-035":{"value":"id-Latn-ID"},"ug-Cyrl":{"value":"ug-Cyrl-KZ"},"myk":{"value":"myk-Latn-ZZ"},"mym":{"value":"mym-Ethi-ZZ"},"aai":{"value":"aai-Latn-ZZ"},"aak":{"value":"aak-Latn-ZZ"},"myw":{"value":"myw-Latn-ZZ"},"myv":{"value":"myv-Cyrl-RU"},"myx":{"value":"myx-Latn-UG"},"myz":{"value":"myz-Mand-IR"},"und-Sinh":{"value":"si-Sinh-LK"},"und-Sind":{"value" +:"sd-Sind-IN"},"aau":{"value":"aau-Latn-ZZ"},"rcf":{"value":"rcf-Latn-RE"},"und-Orkh":{"value":"otk-Orkh-MN"},"mzk":{"value":"mzk-Latn-ZZ"},"mzn":{"value":"mzn-Arab-IR"},"iri":{"value":"iri-Latn-ZZ"},"mzm":{"value":"mzm-Latn-ZZ"},"mzp":{"value":"mzp-Latn-ZZ"},"und-053":{"value":"en-Latn-AU"},"abi":{"value":"abi-Latn-ZZ"},"und-054":{"value":"en-Latn-PG"},"mzw":{"value":"mzw-Latn-ZZ"},"mzz":{"value":"mzz-Latn-ZZ"},"abr":{"value":"abr-Latn-GH"},"abq":{"value":"abq-Cyrl-ZZ"},"abt":{"value":"abt-Latn-ZZ"},"und-057": +{"value":"en-Latn-GU"},"aby":{"value":"aby-Latn-ZZ"},"eka":{"value":"eka-Latn-ZZ"},"vls":{"value":"vls-Latn-BE"},"ace":{"value":"ace-Latn-ID"},"acd":{"value":"acd-Latn-ZZ"},"ach":{"value":"ach-Latn-UG"},"vmf":{"value":"vmf-Latn-DE"},"eky":{"value":"eky-Kali-MM"},"rej":{"value":"rej-Latn-ID"},"rel":{"value":"rel-Latn-ZZ"},"ada":{"value":"ada-Latn-GH"},"res":{"value":"res-Latn-ZZ"},"vmw":{"value":"vmw-Latn-MZ"},"ade":{"value":"ade-Latn-ZZ"},"adj":{"value":"adj-Latn-ZZ"},"und-Hira":{"value":"ja-Hira-JP"},"adp": +{"value":"adp-Tibt-BT"},"adz":{"value":"adz-Latn-ZZ"},"ady":{"value":"ady-Cyrl-RU"},"ema":{"value":"ema-Latn-ZZ"},"und-Deva":{"value":"hi-Deva-IN"},"aeb":{"value":"aeb-Arab-TN"},"emi":{"value":"emi-Latn-ZZ"},"und-009":{"value":"en-Latn-AU"},"aey":{"value":"aey-Latn-ZZ"},"und-002":{"value":"en-Latn-NG"},"und-003":{"value":"en-Latn-US"},"und-005":{"value":"pt-Latn-BR"},"rgn":{"value":"rgn-Latn-IT"},"vot":{"value":"vot-Latn-RU"},"enn":{"value":"enn-Latn-ZZ"},"enq":{"value":"enq-Latn-ZZ"},"und-011":{"value":"en-Latn-NG"} +,"rhg":{"value":"rhg-Arab-MM"},"und-017":{"value":"sw-Latn-CD"},"und-018":{"value":"en-Latn-ZA"},"und-019":{"value":"en-Latn-US"},"und-013":{"value":"es-Latn-MX"},"und-014":{"value":"sw-Latn-TZ"},"und-015":{"value":"ar-Arab-EG"},"agc":{"value":"agc-Latn-ZZ"},"und-Zanb":{"value":"cmg-Zanb-MN"},"iwm":{"value":"iwm-Latn-ZZ"},"agd":{"value":"agd-Latn-ZZ"},"agg":{"value":"agg-Latn-ZZ"},"iws":{"value":"iws-Latn-ZZ"},"agm":{"value":"agm-Latn-ZZ"},"ago":{"value":"ago-Latn-ZZ"},"agq":{"value":"agq-Latn-CM"},"ria":{"value" +:"ria-Latn-IN"},"rif":{"value":"rif-Tfng-MA"},"nac":{"value":"nac-Latn-ZZ"},"naf":{"value":"naf-Latn-ZZ"},"nak":{"value":"nak-Latn-ZZ"},"nan":{"value":"nan-Hans-CN"},"aha":{"value":"aha-Latn-ZZ"},"nap":{"value":"nap-Latn-IT"},"naq":{"value":"naq-Latn-NA"},"zza":{"value":"zza-Latn-TR"},"nas":{"value":"nas-Latn-ZZ"},"ahl":{"value":"ahl-Latn-ZZ"},"en-Shaw":{"value":"en-Shaw-GB"},"und-Copt":{"value":"cop-Copt-EG"},"aho":{"value":"aho-Ahom-IN"},"vro":{"value":"vro-Latn-EE"},"rjs":{"value":"rjs-Deva-NP"},"nca":{"value" +:"nca-Latn-ZZ"},"ncf":{"value":"ncf-Latn-ZZ"},"nce":{"value":"nce-Latn-ZZ"},"nch":{"value":"nch-Latn-MX"},"izh":{"value":"izh-Latn-RU"},"izi":{"value":"izi-Latn-ZZ"},"rkt":{"value":"rkt-Beng-BD"},"nco":{"value":"nco-Latn-ZZ"},"eri":{"value":"eri-Latn-ZZ"},"ajg":{"value":"ajg-Latn-ZZ"},"ncu":{"value":"ncu-Latn-ZZ"},"ndc":{"value":"ndc-Latn-MZ"},"esg":{"value":"esg-Gonm-IN"},"nds":{"value":"nds-Latn-DE"},"akk":{"value":"akk-Xsux-IQ"},"esu":{"value":"esu-Latn-US"},"neb":{"value":"neb-Latn-ZZ"},"rmf":{"value":"rmf-Latn-FI"} +,"und-061":{"value":"sm-Latn-WS"},"und-Limb":{"value":"lif-Limb-IN"},"vun":{"value":"vun-Latn-TZ"},"ff-Adlm":{"value":"ff-Adlm-GN"},"vut":{"value":"vut-Latn-ZZ"},"rmo":{"value":"rmo-Latn-CH"},"ala":{"value":"ala-Latn-ZZ"},"rmt":{"value":"rmt-Arab-IR"},"rmu":{"value":"rmu-Latn-SE"},"ali":{"value":"ali-Latn-ZZ"},"nex":{"value":"nex-Latn-ZZ"},"new":{"value":"new-Deva-NP"},"aln":{"value":"aln-Latn-XK"},"etr":{"value":"etr-Latn-ZZ"},"und-Rohg":{"value":"rhg-Rohg-MM"},"ett":{"value":"ett-Ital-IT"},"rna":{"value": +"rna-Latn-ZZ"},"etu":{"value":"etu-Latn-ZZ"},"alt":{"value":"alt-Cyrl-RU"},"etx":{"value":"etx-Latn-ZZ"},"rng":{"value":"rng-Latn-MZ"},"und-Linb":{"value":"grc-Linb-GR"},"und-Lina":{"value":"lab-Lina-GR"},"und-Jpan":{"value":"ja-Jpan-JP"},"man-GN":{"value":"man-Nkoo-GN"},"nfr":{"value":"nfr-Latn-ZZ"},"amm":{"value":"amm-Latn-ZZ"},"und-Arab":{"value":"ar-Arab-EG"},"amo":{"value":"amo-Latn-NG"},"amn":{"value":"amn-Latn-ZZ"},"rob":{"value":"rob-Latn-ID"},"amp":{"value":"amp-Latn-ZZ"},"ngb":{"value":"ngb-Latn-ZZ"} +,"rof":{"value":"rof-Latn-TZ"},"nga":{"value":"nga-Latn-ZZ"},"ngl":{"value":"ngl-Latn-MZ"},"roo":{"value":"roo-Latn-ZZ"},"anc":{"value":"anc-Latn-ZZ"},"ank":{"value":"ank-Latn-ZZ"},"ann":{"value":"ann-Latn-ZZ"},"und-Bhks":{"value":"sa-Bhks-IN"},"nhb":{"value":"nhb-Latn-ZZ"},"nhe":{"value":"nhe-Latn-MX"},"any":{"value":"any-Latn-ZZ"},"und-Orya":{"value":"or-Orya-IN"},"ewo":{"value":"ewo-Latn-CM"},"nhw":{"value":"nhw-Latn-MX"},"aoj":{"value":"aoj-Latn-ZZ"},"aom":{"value":"aom-Latn-ZZ"},"zh-Hanb":{"value":"zh-Hanb-TW"} +,"und-Kits":{"value":"zkt-Kits-CN"},"jab":{"value":"jab-Latn-ZZ"},"nif":{"value":"nif-Latn-ZZ"},"aoz":{"value":"aoz-Latn-ID"},"nij":{"value":"nij-Latn-ID"},"nii":{"value":"nii-Latn-ZZ"},"zh-PH":{"value":"zh-Hant-PH"},"nin":{"value":"nin-Latn-ZZ"},"zh-Hant":{"value":"zh-Hant-TW"},"zh-PF":{"value":"zh-Hant-PF"},"und-Ahom":{"value":"aho-Ahom-IN"},"apd":{"value":"apd-Arab-TG"},"apc":{"value":"apc-Arab-ZZ"},"ape":{"value":"ape-Latn-ZZ"},"jam":{"value":"jam-Latn-JM"},"zh-PA":{"value":"zh-Hant-PA"},"niu":{"value": +"niu-Latn-NU"},"niz":{"value":"niz-Latn-ZZ"},"niy":{"value":"niy-Latn-ZZ"},"ext":{"value":"ext-Latn-ES"},"apr":{"value":"apr-Latn-ZZ"},"aps":{"value":"aps-Latn-ZZ"},"apz":{"value":"apz-Latn-ZZ"},"rro":{"value":"rro-Latn-ZZ"},"njo":{"value":"njo-Latn-IN"},"jbo":{"value":"jbo-Latn-001"},"jbu":{"value":"jbu-Latn-ZZ"},"zh-MO":{"value":"zh-Hant-MO"},"nkg":{"value":"nkg-Latn-ZZ"},"zh-MY":{"value":"zh-Hant-MY"},"arc":{"value":"arc-Armi-IR"},"nko":{"value":"nko-Latn-ZZ"},"arh":{"value":"arh-Latn-ZZ"},"pa-Arab":{"value" +:"pa-Arab-PK"},"und-Mtei":{"value":"mni-Mtei-IN"},"arn":{"value":"arn-Latn-CL"},"aro":{"value":"aro-Latn-BO"},"und-Cyrl-RO":{"value":"bg-Cyrl-RO"},"arq":{"value":"arq-Arab-DZ"},"ars":{"value":"ars-Arab-SA"},"arz":{"value":"arz-Arab-EG"},"ary":{"value":"ary-Arab-MA"},"rtm":{"value":"rtm-Latn-FJ"},"asa":{"value":"asa-Latn-TZ"},"und-Grek-TR":{"value":"bgx-Grek-TR"},"ase":{"value":"ase-Sgnw-US"},"asg":{"value":"asg-Latn-ZZ"},"aso":{"value":"aso-Latn-ZZ"},"ast":{"value":"ast-Latn-ES"},"rue":{"value":"rue-Cyrl-UA"} +,"rug":{"value":"rug-Latn-SB"},"nmg":{"value":"nmg-Latn-CM"},"ata":{"value":"ata-Latn-ZZ"},"jen":{"value":"jen-Latn-ZZ"},"atg":{"value":"atg-Latn-ZZ"},"atj":{"value":"atj-Latn-CA"},"nmz":{"value":"nmz-Latn-ZZ"},"unr-Deva":{"value":"unr-Deva-NP"},"nnf":{"value":"nnf-Latn-ZZ"},"nnh":{"value":"nnh-Latn-CM"},"nnk":{"value":"nnk-Latn-ZZ"},"nnm":{"value":"nnm-Latn-ZZ"},"nnp":{"value":"nnp-Wcho-IN"},"az-IR":{"value":"az-Arab-IR"},"und-Adlm":{"value":"ff-Adlm-GN"},"az-IQ":{"value":"az-Arab-IQ"},"und-Nbat":{"value": +"arc-Nbat-JO"},"sd-Khoj":{"value":"sd-Khoj-IN"},"nod":{"value":"nod-Lana-TH"},"auy":{"value":"auy-Latn-ZZ"},"noe":{"value":"noe-Deva-IN"},"rwk":{"value":"rwk-Latn-TZ"},"und-Cyrl-MD":{"value":"uk-Cyrl-MD"},"rwo":{"value":"rwo-Latn-ZZ"},"non":{"value":"non-Runr-SE"},"nop":{"value":"nop-Latn-ZZ"},"jgk":{"value":"jgk-Latn-ZZ"},"jgo":{"value":"jgo-Latn-CM"},"und-Vaii":{"value":"vai-Vaii-LR"},"nou":{"value":"nou-Latn-ZZ"},"avl":{"value":"avl-Arab-ZZ"},"avn":{"value":"avn-Latn-ZZ"},"wae":{"value":"wae-Latn-CH"},"avt": +{"value":"avt-Latn-ZZ"},"avu":{"value":"avu-Latn-ZZ"},"waj":{"value":"waj-Latn-ZZ"},"wal":{"value":"wal-Ethi-ET"},"wan":{"value":"wan-Latn-ZZ"},"zh-HK":{"value":"zh-Hant-HK"},"war":{"value":"war-Latn-PH"},"awa":{"value":"awa-Deva-IN"},"und-Plrd":{"value":"hmd-Plrd-CN"},"awb":{"value":"awb-Latn-ZZ"},"awo":{"value":"awo-Latn-ZZ"},"und-Knda":{"value":"kn-Knda-IN"},"zh-ID":{"value":"zh-Hant-ID"},"jib":{"value":"jib-Latn-ZZ"},"awx":{"value":"awx-Latn-ZZ"},"wbp":{"value":"wbp-Latn-AU"},"und-Sidd":{"value":"sa-Sidd-IN"} +,"fab":{"value":"fab-Latn-ZZ"},"wbr":{"value":"wbr-Deva-IN"},"faa":{"value":"faa-Latn-ZZ"},"wbq":{"value":"wbq-Telu-IN"},"und-Kali":{"value":"eky-Kali-MM"},"fag":{"value":"fag-Latn-ZZ"},"nqo":{"value":"nqo-Nkoo-GN"},"fai":{"value":"fai-Latn-ZZ"},"ryu":{"value":"ryu-Kana-JP"},"fan":{"value":"fan-Latn-GQ"},"wci":{"value":"wci-Latn-ZZ"},"nrb":{"value":"nrb-Latn-ZZ"},"und-Phlp":{"value":"pal-Phlp-CN"},"ayb":{"value":"ayb-Latn-ZZ"},"und-Phli":{"value":"pal-Phli-IR"},"cu-Glag":{"value":"cu-Glag-BG"},"und-Cyrl-XK": +{"value":"sr-Cyrl-XK"},"az-Arab":{"value":"az-Arab-IR"},"ks-Deva":{"value":"ks-Deva-IN"},"und-Thai":{"value":"th-Thai-TH"},"nsk":{"value":"nsk-Cans-CA"},"nsn":{"value":"nsn-Latn-ZZ"},"nso":{"value":"nso-Latn-ZA"},"und-Thaa":{"value":"dv-Thaa-MV"},"und-Nshu":{"value":"zhx-Nshu-CN"},"nss":{"value":"nss-Latn-ZZ"},"zh-VN":{"value":"zh-Hant-VN"},"und-Hmnp":{"value":"mww-Hmnp-US"},"und-Kana":{"value":"ja-Kana-JP"},"und-Hmng":{"value":"hnj-Hmng-LA"},"wer":{"value":"wer-Latn-ZZ"},"zh-TW":{"value":"zh-Hant-TW"},"ntm": +{"value":"ntm-Latn-ZZ"},"ntr":{"value":"ntr-Latn-ZZ"},"zh-US":{"value":"zh-Hant-US"},"und-Xpeo":{"value":"peo-Xpeo-IR"},"jmc":{"value":"jmc-Latn-TZ"},"nui":{"value":"nui-Latn-ZZ"},"jml":{"value":"jml-Deva-NP"},"nup":{"value":"nup-Latn-ZZ"},"und-Cyrl-SK":{"value":"uk-Cyrl-SK"},"nus":{"value":"nus-Latn-SS"},"nuv":{"value":"nuv-Latn-ZZ"},"nux":{"value":"nux-Latn-ZZ"},"zh-TH":{"value":"zh-Hant-TH"},"wgi":{"value":"wgi-Latn-ZZ"},"und-Phnx":{"value":"phn-Phnx-LB"},"und-Cyrl-TR":{"value":"kbd-Cyrl-TR"},"ffi":{"value" +:"ffi-Latn-ZZ"},"und-Elym":{"value":"arc-Elym-IR"},"ffm":{"value":"ffm-Latn-ML"},"und-Rjng":{"value":"rej-Rjng-ID"},"whg":{"value":"whg-Latn-ZZ"},"nwb":{"value":"nwb-Latn-ZZ"},"zh-SR":{"value":"zh-Hant-SR"},"wib":{"value":"wib-Latn-ZZ"},"und-Hebr":{"value":"he-Hebr-IL"},"saf":{"value":"saf-Latn-GH"},"sah":{"value":"sah-Cyrl-RU"},"saq":{"value":"saq-Latn-KE"},"wiu":{"value":"wiu-Latn-ZZ"},"sas":{"value":"sas-Latn-ID"},"wiv":{"value":"wiv-Latn-ZZ"},"nxq":{"value":"nxq-Latn-CN"},"sat":{"value":"sat-Olck-IN"},"nxr": +{"value":"nxr-Latn-ZZ"},"sav":{"value":"sav-Latn-SN"},"saz":{"value":"saz-Saur-IN"},"wja":{"value":"wja-Latn-ZZ"},"sba":{"value":"sba-Latn-ZZ"},"sbe":{"value":"sbe-Latn-ZZ"},"wji":{"value":"wji-Latn-ZZ"},"mn-Mong":{"value":"mn-Mong-CN"},"und-419":{"value":"es-Latn-419"},"fia":{"value":"fia-Arab-SD"},"sbp":{"value":"sbp-Latn-TZ"},"und-NO":{"value":"nb-Latn-NO"},"nyn":{"value":"nyn-Latn-UG"},"nym":{"value":"nym-Latn-TZ"},"und-NL":{"value":"nl-Latn-NL"},"und-NP":{"value":"ne-Deva-NP"},"fil":{"value":"fil-Latn-PH"} +,"bal":{"value":"bal-Arab-PK"},"ban":{"value":"ban-Latn-ID"},"bap":{"value":"bap-Deva-NP"},"fit":{"value":"fit-Latn-SE"},"bar":{"value":"bar-Latn-AT"},"bas":{"value":"bas-Latn-CM"},"bav":{"value":"bav-Latn-ZZ"},"bax":{"value":"bax-Bamu-CM"},"jra":{"value":"jra-Latn-ZZ"},"sck":{"value":"sck-Deva-IN"},"nzi":{"value":"nzi-Latn-GH"},"scl":{"value":"scl-Arab-ZZ"},"sco":{"value":"sco-Latn-GB"},"scn":{"value":"scn-Latn-IT"},"aa":{"value":"aa-Latn-ET"},"bba":{"value":"bba-Latn-ZZ"},"und-MN":{"value":"mn-Cyrl-MN"},"ab": +{"value":"ab-Cyrl-GE"},"und-MM":{"value":"my-Mymr-MM"},"und-Osma":{"value":"so-Osma-SO"},"bbc":{"value":"bbc-Latn-ID"},"scs":{"value":"scs-Latn-CA"},"und-ML":{"value":"bm-Latn-ML"},"bbb":{"value":"bbb-Latn-ZZ"},"und-MK":{"value":"mk-Cyrl-MK"},"ae":{"value":"ae-Avst-IR"},"und-MR":{"value":"ar-Arab-MR"},"af":{"value":"af-Latn-ZA"},"bbd":{"value":"bbd-Latn-ZZ"},"und-MQ":{"value":"fr-Latn-MQ"},"und-Wara":{"value":"hoc-Wara-IN"},"und-MO":{"value":"zh-Hant-MO"},"und-MV":{"value":"dv-Thaa-MV"},"und-MU":{"value":"mfe-Latn-MU"} +,"ak":{"value":"ak-Latn-GH"},"und-MT":{"value":"mt-Latn-MT"},"bbj":{"value":"bbj-Latn-CM"},"am":{"value":"am-Ethi-ET"},"und-MZ":{"value":"pt-Latn-MZ"},"an":{"value":"an-Latn-ES"},"und-MY":{"value":"ms-Latn-MY"},"und-MX":{"value":"es-Latn-MX"},"ar":{"value":"ar-Arab-EG"},"bbp":{"value":"bbp-Latn-ZZ"},"as":{"value":"as-Beng-IN"},"bbr":{"value":"bbr-Latn-ZZ"},"sdc":{"value":"sdc-Latn-IT"},"und-NC":{"value":"fr-Latn-NC"},"av":{"value":"av-Cyrl-RU"},"sdh":{"value":"sdh-Arab-IR"},"und-NA":{"value":"af-Latn-NA"},"ay": +{"value":"ay-Latn-BO"},"az":{"value":"az-Latn-AZ"},"und-NE":{"value":"ha-Latn-NE"},"und-NI":{"value":"es-Latn-NI"},"ba":{"value":"ba-Cyrl-RU"},"wls":{"value":"wls-Latn-WF"},"und-Kore":{"value":"ko-Kore-KR"},"und-LK":{"value":"si-Sinh-LK"},"be":{"value":"be-Cyrl-BY"},"bcf":{"value":"bcf-Latn-ZZ"},"bg":{"value":"bg-Cyrl-BG"},"bch":{"value":"bch-Latn-ZZ"},"bi":{"value":"bi-Latn-VU"},"und-LU":{"value":"fr-Latn-LU"},"bci":{"value":"bci-Latn-CI"},"und-LT":{"value":"lt-Latn-LT"},"und-LS":{"value":"st-Latn-LS"},"bm": +{"value":"bm-Latn-ML"},"bcn":{"value":"bcn-Latn-ZZ"},"bn":{"value":"bn-Beng-BD"},"und-LY":{"value":"ar-Arab-LY"},"bcm":{"value":"bcm-Latn-ZZ"},"bo":{"value":"bo-Tibt-CN"},"bco":{"value":"bco-Latn-ZZ"},"und-LV":{"value":"lv-Latn-LV"},"br":{"value":"br-Latn-FR"},"bcq":{"value":"bcq-Ethi-ZZ"},"bs":{"value":"bs-Latn-BA"},"bcu":{"value":"bcu-Latn-ZZ"},"sef":{"value":"sef-Latn-CI"},"und-MA":{"value":"ar-Arab-MA"},"sei":{"value":"sei-Latn-MX"},"seh":{"value":"seh-Latn-MZ"},"und-MF":{"value":"fr-Latn-MF"},"wmo":{"value" +:"wmo-Latn-ZZ"},"und-ME":{"value":"sr-Latn-ME"},"und-MD":{"value":"ro-Latn-MD"},"und-MC":{"value":"fr-Latn-MC"},"ca":{"value":"ca-Latn-ES"},"und-MG":{"value":"mg-Latn-MG"},"ses":{"value":"ses-Latn-ML"},"ce":{"value":"ce-Cyrl-RU"},"und-Cyrl-BA":{"value":"sr-Cyrl-BA"},"bdd":{"value":"bdd-Latn-ZZ"},"und-KP":{"value":"ko-Kore-KP"},"ch":{"value":"ch-Latn-GU"},"und-KM":{"value":"ar-Arab-KM"},"und-KR":{"value":"ko-Kore-KR"},"co":{"value":"co-Latn-FR"},"flr":{"value":"flr-Latn-ZZ"},"und-KW":{"value":"ar-Arab-KW"},"wnc": +{"value":"wnc-Latn-ZZ"},"und-Dogr":{"value":"doi-Dogr-IN"},"cr":{"value":"cr-Cans-CA"},"cs":{"value":"cs-Latn-CZ"},"cu":{"value":"cu-Cyrl-RU"},"und-KZ":{"value":"ru-Cyrl-KZ"},"cv":{"value":"cv-Cyrl-RU"},"wni":{"value":"wni-Arab-KM"},"und-LA":{"value":"lo-Laoo-LA"},"cy":{"value":"cy-Latn-GB"},"und-LB":{"value":"ar-Arab-LB"},"und-LI":{"value":"de-Latn-LI"},"da":{"value":"da-Latn-DK"},"und-Cyrl-AL":{"value":"mk-Cyrl-AL"},"wnu":{"value":"wnu-Latn-ZZ"},"de":{"value":"de-Latn-DE"},"bef":{"value":"bef-Latn-ZZ"},"beh": +{"value":"beh-Latn-ZZ"},"und-JO":{"value":"ar-Arab-JO"},"bej":{"value":"bej-Arab-SD"},"fmp":{"value":"fmp-Latn-ZZ"},"jut":{"value":"jut-Latn-DK"},"bem":{"value":"bem-Latn-ZM"},"und-JP":{"value":"ja-Jpan-JP"},"wob":{"value":"wob-Latn-ZZ"},"sga":{"value":"sga-Ogam-IE"},"bet":{"value":"bet-Latn-ZZ"},"dv":{"value":"dv-Thaa-MV"},"bex":{"value":"bex-Latn-ZZ"},"bew":{"value":"bew-Latn-ID"},"bez":{"value":"bez-Latn-TZ"},"dz":{"value":"dz-Tibt-BT"},"ms-ID":{"value":"ms-Latn-ID"},"wos":{"value":"wos-Latn-ZZ"},"und-KH": +{"value":"km-Khmr-KH"},"und-KG":{"value":"ky-Cyrl-KG"},"sgs":{"value":"sgs-Latn-LT"},"und-KE":{"value":"sw-Latn-KE"},"ee":{"value":"ee-Latn-GH"},"bfd":{"value":"bfd-Latn-CM"},"sgw":{"value":"sgw-Ethi-ZZ"},"und-IN":{"value":"hi-Deva-IN"},"und-IL":{"value":"he-Hebr-IL"},"el":{"value":"el-Grek-GR"},"sgz":{"value":"sgz-Latn-ZZ"},"und-IR":{"value":"fa-Arab-IR"},"en":{"value":"en-Latn-US"},"und-IQ":{"value":"ar-Arab-IQ"},"und-Perm":{"value":"kv-Perm-RU"},"eo":{"value":"eo-Latn-001"},"bfq":{"value":"bfq-Taml-IN"}, +"es":{"value":"es-Latn-ES"},"und-IT":{"value":"it-Latn-IT"},"et":{"value":"et-Latn-EE"},"und-IS":{"value":"is-Latn-IS"},"eu":{"value":"eu-Latn-ES"},"bft":{"value":"bft-Arab-PK"},"bfy":{"value":"bfy-Deva-IN"},"shi":{"value":"shi-Tfng-MA"},"shk":{"value":"shk-Latn-ZZ"},"shn":{"value":"shn-Mymr-MM"},"fod":{"value":"fod-Latn-ZZ"},"fa":{"value":"fa-Arab-IR"},"bgc":{"value":"bgc-Deva-IN"},"ff":{"value":"ff-Latn-SN"},"shu":{"value":"shu-Arab-ZZ"},"fi":{"value":"fi-Latn-FI"},"fj":{"value":"fj-Latn-FJ"},"fon":{"value" +:"fon-Latn-BJ"},"und-HM":{"value":"und-Latn-HM"},"und-HK":{"value":"zh-Hant-HK"},"bgn":{"value":"bgn-Arab-PK"},"for":{"value":"for-Latn-ZZ"},"fo":{"value":"fo-Latn-FO"},"und-HN":{"value":"es-Latn-HN"},"fr":{"value":"fr-Latn-FR"},"und-HU":{"value":"hu-Latn-HU"},"und-HT":{"value":"ht-Latn-HT"},"ku-Arab":{"value":"ku-Arab-IQ"},"sid":{"value":"sid-Latn-ET"},"und-HR":{"value":"hr-Latn-HR"},"sig":{"value":"sig-Latn-ZZ"},"bgx":{"value":"bgx-Grek-TR"},"fy":{"value":"fy-Latn-NL"},"sim":{"value":"sim-Latn-ZZ"},"sil": +{"value":"sil-Latn-ZZ"},"fpe":{"value":"fpe-Latn-ZZ"},"ga":{"value":"ga-Latn-IE"},"bhb":{"value":"bhb-Deva-IN"},"gd":{"value":"gd-Latn-GB"},"und-ID":{"value":"id-Latn-ID"},"und-IC":{"value":"es-Latn-IC"},"bhg":{"value":"bhg-Latn-ZZ"},"und-GH":{"value":"ak-Latn-GH"},"bhi":{"value":"bhi-Deva-IN"},"und-GF":{"value":"fr-Latn-GF"},"und-GE":{"value":"ka-Geor-GE"},"und-GL":{"value":"kl-Latn-GL"},"gl":{"value":"gl-Latn-ES"},"bhl":{"value":"bhl-Latn-ZZ"},"gn":{"value":"gn-Latn-PY"},"bho":{"value":"bho-Deva-IN"},"und-GP": +{"value":"fr-Latn-GP"},"und-GN":{"value":"fr-Latn-GN"},"und-GT":{"value":"es-Latn-GT"},"und-GS":{"value":"und-Latn-GS"},"gu":{"value":"gu-Gujr-IN"},"und-GR":{"value":"el-Grek-GR"},"gv":{"value":"gv-Latn-IM"},"und-GQ":{"value":"es-Latn-GQ"},"und-Palm":{"value":"arc-Palm-SY"},"und-GW":{"value":"pt-Latn-GW"},"bhy":{"value":"bhy-Latn-ZZ"},"ha":{"value":"ha-Latn-NG"},"wrs":{"value":"wrs-Latn-ZZ"},"bib":{"value":"bib-Latn-ZZ"},"sjr":{"value":"sjr-Latn-ZZ"},"he":{"value":"he-Hebr-IL"},"big":{"value":"big-Latn-ZZ"} +,"hi":{"value":"hi-Deva-IN"},"und-Cyrl-GE":{"value":"ab-Cyrl-GE"},"bik":{"value":"bik-Latn-PH"},"bin":{"value":"bin-Latn-NG"},"und-Cham":{"value":"cjm-Cham-VN"},"und-FI":{"value":"fi-Latn-FI"},"bim":{"value":"bim-Latn-ZZ"},"ho":{"value":"ho-Latn-PG"},"tg-PK":{"value":"tg-Arab-PK"},"und-FO":{"value":"fo-Latn-FO"},"bio":{"value":"bio-Latn-ZZ"},"fqs":{"value":"fqs-Latn-ZZ"},"hr":{"value":"hr-Latn-HR"},"skc":{"value":"skc-Latn-ZZ"},"wsg":{"value":"wsg-Gong-IN"},"biq":{"value":"biq-Latn-ZZ"},"ht":{"value":"ht-Latn-HT"} +,"hu":{"value":"hu-Latn-HU"},"und-FR":{"value":"fr-Latn-FR"},"wsk":{"value":"wsk-Latn-ZZ"},"hy":{"value":"hy-Armn-AM"},"hz":{"value":"hz-Latn-NA"},"frc":{"value":"frc-Latn-US"},"ia":{"value":"ia-Latn-001"},"sks":{"value":"sks-Latn-ZZ"},"id":{"value":"id-Latn-ID"},"skr":{"value":"skr-Arab-PK"},"ig":{"value":"ig-Latn-NG"},"und-GA":{"value":"fr-Latn-GA"},"bji":{"value":"bji-Ethi-ZZ"},"ii":{"value":"ii-Yiii-CN"},"bjh":{"value":"bjh-Latn-ZZ"},"und-EE":{"value":"et-Latn-EE"},"ik":{"value":"ik-Latn-US"},"bjj":{"value" +:"bjj-Deva-IN"},"und-EC":{"value":"es-Latn-EC"},"und-Cprt":{"value":"grc-Cprt-CY"},"frp":{"value":"frp-Latn-FR"},"in":{"value":"in-Latn-ID"},"bjo":{"value":"bjo-Latn-ZZ"},"frs":{"value":"frs-Latn-DE"},"io":{"value":"io-Latn-001"},"und-EH":{"value":"ar-Arab-EH"},"bjn":{"value":"bjn-Latn-ID"},"frr":{"value":"frr-Latn-DE"},"und-EG":{"value":"ar-Arab-EG"},"is":{"value":"is-Latn-IS"},"sld":{"value":"sld-Latn-ZZ"},"bjr":{"value":"bjr-Latn-ZZ"},"it":{"value":"it-Latn-IT"},"iu":{"value":"iu-Cans-CA"},"und-ER":{"value" +:"ti-Ethi-ER"},"bjt":{"value":"bjt-Latn-SN"},"iw":{"value":"iw-Hebr-IL"},"und-Tirh":{"value":"mai-Tirh-IN"},"sli":{"value":"sli-Latn-PL"},"und-EU":{"value":"en-Latn-GB"},"wtm":{"value":"wtm-Deva-IN"},"sll":{"value":"sll-Latn-ZZ"},"und-ET":{"value":"am-Ethi-ET"},"bjz":{"value":"bjz-Latn-ZZ"},"und-ES":{"value":"es-Latn-ES"},"und-EZ":{"value":"de-Latn-EZ"},"ja":{"value":"ja-Jpan-JP"},"zh-GF":{"value":"zh-Hant-GF"},"bkc":{"value":"bkc-Latn-ZZ"},"zh-GB":{"value":"zh-Hant-GB"},"und-Cyrl-GR":{"value":"mk-Cyrl-GR"} +,"ji":{"value":"ji-Hebr-UA"},"und-DE":{"value":"de-Latn-DE"},"sly":{"value":"sly-Latn-ID"},"bkm":{"value":"bkm-Latn-CM"},"sma":{"value":"sma-Latn-SE"},"bkq":{"value":"bkq-Latn-ZZ"},"und-DK":{"value":"da-Latn-DK"},"und-DJ":{"value":"aa-Latn-DJ"},"bkv":{"value":"bkv-Latn-ZZ"},"jv":{"value":"jv-Latn-ID"},"bku":{"value":"bku-Latn-PH"},"jw":{"value":"jw-Latn-ID"},"und-DO":{"value":"es-Latn-DO"},"smj":{"value":"smj-Latn-SE"},"smn":{"value":"smn-Latn-FI"},"ka":{"value":"ka-Geor-GE"},"smq":{"value":"smq-Latn-ZZ"},"wuu": +{"value":"wuu-Hans-CN"},"smp":{"value":"smp-Samr-IL"},"sms":{"value":"sms-Latn-FI"},"wuv":{"value":"wuv-Latn-ZZ"},"und-DZ":{"value":"ar-Arab-DZ"},"kg":{"value":"kg-Latn-CD"},"und-EA":{"value":"es-Latn-EA"},"ki":{"value":"ki-Latn-KE"},"kj":{"value":"kj-Latn-NA"},"kk":{"value":"kk-Cyrl-KZ"},"man-Nkoo":{"value":"man-Nkoo-GN"},"und-CD":{"value":"sw-Latn-CD"},"kl":{"value":"kl-Latn-GL"},"und-Telu":{"value":"te-Telu-IN"},"km":{"value":"km-Khmr-KH"},"kn":{"value":"kn-Knda-IN"},"ko":{"value":"ko-Kore-KR"},"und-CH": +{"value":"de-Latn-CH"},"und-CG":{"value":"fr-Latn-CG"},"und-CF":{"value":"fr-Latn-CF"},"kr":{"value":"kr-Latn-ZZ"},"ks":{"value":"ks-Arab-IN"},"und-CL":{"value":"es-Latn-CL"},"snc":{"value":"snc-Latn-ZZ"},"ku":{"value":"ku-Latn-TR"},"blt":{"value":"blt-Tavt-VN"},"kv":{"value":"kv-Cyrl-RU"},"und-CI":{"value":"fr-Latn-CI"},"kw":{"value":"kw-Latn-GB"},"und-CP":{"value":"und-Latn-CP"},"und-CO":{"value":"es-Latn-CO"},"ky":{"value":"ky-Cyrl-KG"},"und-CN":{"value":"zh-Hans-CN"},"und-CM":{"value":"fr-Latn-CM"},"snk": +{"value":"snk-Latn-ML"},"fub":{"value":"fub-Arab-CM"},"und-CR":{"value":"es-Latn-CR"},"fud":{"value":"fud-Latn-WF"},"snp":{"value":"snp-Latn-ZZ"},"la":{"value":"la-Latn-VA"},"und-CW":{"value":"pap-Latn-CW"},"fuf":{"value":"fuf-Latn-GN"},"lb":{"value":"lb-Latn-LU"},"und-CV":{"value":"pt-Latn-CV"},"fue":{"value":"fue-Latn-ZZ"},"und-CU":{"value":"es-Latn-CU"},"fuh":{"value":"fuh-Latn-ZZ"},"und-CZ":{"value":"cs-Latn-CZ"},"lg":{"value":"lg-Latn-UG"},"und-CY":{"value":"el-Grek-CY"},"bmh":{"value":"bmh-Latn-ZZ"},"snx": +{"value":"snx-Latn-ZZ"},"li":{"value":"li-Latn-NL"},"sny":{"value":"sny-Latn-ZZ"},"wwa":{"value":"wwa-Latn-ZZ"},"bmk":{"value":"bmk-Latn-ZZ"},"und-Cher":{"value":"chr-Cher-US"},"fur":{"value":"fur-Latn-IT"},"ln":{"value":"ln-Latn-CD"},"und-BA":{"value":"bs-Latn-BA"},"fuq":{"value":"fuq-Latn-NE"},"lo":{"value":"lo-Laoo-LA"},"und-BG":{"value":"bg-Cyrl-BG"},"und-BF":{"value":"fr-Latn-BF"},"fuv":{"value":"fuv-Latn-NG"},"und-BE":{"value":"nl-Latn-BE"},"bmq":{"value":"bmq-Latn-ML"},"und-BD":{"value":"bn-Beng-BD"} +,"lt":{"value":"lt-Latn-LT"},"lu":{"value":"lu-Latn-CD"},"und-BJ":{"value":"fr-Latn-BJ"},"lv":{"value":"lv-Latn-LV"},"ogc":{"value":"ogc-Latn-ZZ"},"sog":{"value":"sog-Sogd-UZ"},"und-BI":{"value":"rn-Latn-BI"},"bmu":{"value":"bmu-Latn-ZZ"},"fuy":{"value":"fuy-Latn-ZZ"},"und-BH":{"value":"ar-Arab-BH"},"und-BO":{"value":"es-Latn-BO"},"und-BN":{"value":"ms-Latn-BN"},"sok":{"value":"sok-Latn-ZZ"},"und-BL":{"value":"fr-Latn-BL"},"und-BR":{"value":"pt-Latn-BR"},"und-BQ":{"value":"pap-Latn-BQ"},"soq":{"value":"soq-Latn-ZZ"} +,"und-BV":{"value":"und-Latn-BV"},"und-BT":{"value":"dz-Tibt-BT"},"sou":{"value":"sou-Thai-TH"},"bng":{"value":"bng-Latn-ZZ"},"mg":{"value":"mg-Latn-MG"},"und-BY":{"value":"be-Cyrl-BY"},"und-Glag":{"value":"cu-Glag-BG"},"mh":{"value":"mh-Latn-MH"},"mi":{"value":"mi-Latn-NZ"},"soy":{"value":"soy-Latn-ZZ"},"mk":{"value":"mk-Cyrl-MK"},"ml":{"value":"ml-Mlym-IN"},"bnm":{"value":"bnm-Latn-ZZ"},"mn":{"value":"mn-Cyrl-MN"},"mo":{"value":"mo-Latn-RO"},"und-Prti":{"value":"xpr-Prti-IR"},"fvr":{"value":"fvr-Latn-SD"} +,"und-AF":{"value":"fa-Arab-AF"},"bnp":{"value":"bnp-Latn-ZZ"},"mr":{"value":"mr-Deva-IN"},"und-AE":{"value":"ar-Arab-AE"},"ms":{"value":"ms-Latn-MY"},"spd":{"value":"spd-Latn-ZZ"},"und-AD":{"value":"ca-Latn-AD"},"mt":{"value":"mt-Latn-MT"},"my":{"value":"my-Mymr-MM"},"zh-BN":{"value":"zh-Hant-BN"},"und-AM":{"value":"hy-Armn-AM"},"spl":{"value":"spl-Latn-ZZ"},"und-AL":{"value":"sq-Latn-AL"},"und-AR":{"value":"es-Latn-AR"},"und-AQ":{"value":"und-Latn-AQ"},"na":{"value":"na-Latn-NR"},"und-AO":{"value":"pt-Latn-AO"} +,"nb":{"value":"nb-Latn-NO"},"nd":{"value":"nd-Latn-ZW"},"und-AT":{"value":"de-Latn-AT"},"ne":{"value":"ne-Deva-NP"},"sps":{"value":"sps-Latn-ZZ"},"und-AS":{"value":"sm-Latn-AS"},"und-AZ":{"value":"az-Latn-AZ"},"ng":{"value":"ng-Latn-NA"},"und-AX":{"value":"sv-Latn-AX"},"und-AW":{"value":"nl-Latn-AW"},"boj":{"value":"boj-Latn-ZZ"},"nl":{"value":"nl-Latn-NL"},"bon":{"value":"bon-Latn-ZZ"},"nn":{"value":"nn-Latn-NO"},"bom":{"value":"bom-Latn-ZZ"},"no":{"value":"no-Latn-NO"},"nr":{"value":"nr-Latn-ZA"},"arc-Nbat": +{"value":"arc-Nbat-JO"},"und-Medf":{"value":"mis-Medf-NG"},"nv":{"value":"nv-Latn-US"},"kaa":{"value":"kaa-Cyrl-UZ"},"ny":{"value":"ny-Latn-MW"},"kac":{"value":"kac-Latn-MM"},"kab":{"value":"kab-Latn-DZ"},"kad":{"value":"kad-Latn-ZZ"},"kai":{"value":"kai-Latn-ZZ"},"oc":{"value":"oc-Latn-FR"},"zh-AU":{"value":"zh-Hant-AU"},"kaj":{"value":"kaj-Latn-NG"},"kam":{"value":"kam-Latn-KE"},"und-Tagb":{"value":"tbw-Tagb-PH"},"kao":{"value":"kao-Latn-ML"},"und-Ogam":{"value":"sga-Ogam-IE"},"om":{"value":"om-Latn-ET"}, +"srb":{"value":"srb-Sora-IN"},"or":{"value":"or-Orya-IN"},"tg-Arab":{"value":"tg-Arab-PK"},"os":{"value":"os-Cyrl-GE"},"und-Sogd":{"value":"sog-Sogd-UZ"},"bpy":{"value":"bpy-Beng-IN"},"kbd":{"value":"kbd-Cyrl-RU"},"srn":{"value":"srn-Latn-SR"},"pa":{"value":"pa-Guru-IN"},"srr":{"value":"srr-Latn-SN"},"bqc":{"value":"bqc-Latn-ZZ"},"und-Kthi":{"value":"bho-Kthi-IN"},"kbm":{"value":"kbm-Latn-ZZ"},"kbp":{"value":"kbp-Latn-ZZ"},"srx":{"value":"srx-Deva-IN"},"bqi":{"value":"bqi-Arab-IR"},"kbq":{"value":"kbq-Latn-ZZ"} +,"pl":{"value":"pl-Latn-PL"},"bqp":{"value":"bqp-Latn-ZZ"},"kbx":{"value":"kbx-Latn-ZZ"},"kby":{"value":"kby-Arab-NE"},"ps":{"value":"ps-Arab-AF"},"pt":{"value":"pt-Latn-BR"},"ssd":{"value":"ssd-Latn-ZZ"},"und-Nkoo":{"value":"man-Nkoo-GN"},"bqv":{"value":"bqv-Latn-CI"},"ssg":{"value":"ssg-Latn-ZZ"},"und-Mymr":{"value":"my-Mymr-MM"},"kcg":{"value":"kcg-Latn-NG"},"bra":{"value":"bra-Deva-IN"},"kck":{"value":"kck-Latn-ZW"},"kcl":{"value":"kcl-Latn-ZZ"},"okr":{"value":"okr-Latn-ZZ"},"ssy":{"value":"ssy-Latn-ER"} +,"brh":{"value":"brh-Arab-PK"},"okv":{"value":"okv-Latn-ZZ"},"kct":{"value":"kct-Latn-ZZ"},"und-Hani":{"value":"zh-Hani-CN"},"und-Bugi":{"value":"bug-Bugi-ID"},"und-Hang":{"value":"ko-Hang-KR"},"qu":{"value":"qu-Latn-PE"},"brx":{"value":"brx-Deva-IN"},"und-Samr":{"value":"smp-Samr-IL"},"brz":{"value":"brz-Latn-ZZ"},"stk":{"value":"stk-Latn-ZZ"},"und-Hano":{"value":"hnn-Hano-PH"},"kde":{"value":"kde-Latn-TZ"},"kdh":{"value":"kdh-Arab-TG"},"stq":{"value":"stq-Latn-DE"},"kdl":{"value":"kdl-Latn-ZZ"},"bsj":{"value" +:"bsj-Latn-ZZ"},"und-Hanb":{"value":"zh-Hanb-TW"},"kdt":{"value":"kdt-Thai-TH"},"rm":{"value":"rm-Latn-CH"},"rn":{"value":"rn-Latn-BI"},"ro":{"value":"ro-Latn-RO"},"sua":{"value":"sua-Latn-ZZ"},"und-Deva-BT":{"value":"ne-Deva-BT"},"bsq":{"value":"bsq-Bass-LR"},"bst":{"value":"bst-Ethi-ZZ"},"sue":{"value":"sue-Latn-ZZ"},"bss":{"value":"bss-Latn-CM"},"ru":{"value":"ru-Cyrl-RU"},"und-Buhd":{"value":"bku-Buhd-PH"},"rw":{"value":"rw-Latn-RW"},"kea":{"value":"kea-Latn-CV"},"suk":{"value":"suk-Latn-TZ"},"grc-Linb": +{"value":"grc-Linb-GR"},"sa":{"value":"sa-Deva-IN"},"sc":{"value":"sc-Latn-IT"},"sus":{"value":"sus-Latn-GN"},"sd":{"value":"sd-Arab-PK"},"sur":{"value":"sur-Latn-ZZ"},"se":{"value":"se-Latn-NO"},"sg":{"value":"sg-Latn-CF"},"ken":{"value":"ken-Latn-CM"},"si":{"value":"si-Sinh-LK"},"und-Hant":{"value":"zh-Hant-TW"},"und-Hans":{"value":"zh-Hans-CN"},"sk":{"value":"sk-Latn-SK"},"sl":{"value":"sl-Latn-SI"},"sm":{"value":"sm-Latn-WS"},"sn":{"value":"sn-Latn-ZW"},"bto":{"value":"bto-Latn-PH"},"so":{"value":"so-Latn-SO"} +,"sq":{"value":"sq-Latn-AL"},"sr":{"value":"sr-Cyrl-RS"},"ss":{"value":"ss-Latn-ZA"},"kez":{"value":"kez-Latn-ZZ"},"st":{"value":"st-Latn-ZA"},"su":{"value":"su-Latn-ID"},"btt":{"value":"btt-Latn-ZZ"},"sv":{"value":"sv-Latn-SE"},"sw":{"value":"sw-Latn-TZ"},"btv":{"value":"btv-Deva-PK"},"ong":{"value":"ong-Latn-ZZ"},"ta":{"value":"ta-Taml-IN"},"onn":{"value":"onn-Latn-ZZ"},"bua":{"value":"bua-Cyrl-RU"},"bud":{"value":"bud-Latn-ZZ"},"buc":{"value":"buc-Latn-YT"},"te":{"value":"te-Telu-IN"},"tg":{"value":"tg-Cyrl-TJ"} +,"th":{"value":"th-Thai-TH"},"und-Gong":{"value":"wsg-Gong-IN"},"bug":{"value":"bug-Latn-ID"},"kfo":{"value":"kfo-Latn-CI"},"ons":{"value":"ons-Latn-ZZ"},"ti":{"value":"ti-Ethi-ET"},"kfr":{"value":"kfr-Deva-IN"},"tk":{"value":"tk-Latn-TM"},"tl":{"value":"tl-Latn-PH"},"und-Lisu":{"value":"lis-Lisu-CN"},"buk":{"value":"buk-Latn-ZZ"},"tn":{"value":"tn-Latn-ZA"},"bum":{"value":"bum-Latn-CM"},"to":{"value":"to-Latn-TO"},"buo":{"value":"buo-Latn-ZZ"},"swc":{"value":"swc-Latn-CD"},"tr":{"value":"tr-Latn-TR"},"und-Gonm": +{"value":"esg-Gonm-IN"},"kfy":{"value":"kfy-Deva-IN"},"swb":{"value":"swb-Arab-YT"},"ts":{"value":"ts-Latn-ZA"},"tt":{"value":"tt-Cyrl-RU"},"bus":{"value":"bus-Latn-ZZ"},"swg":{"value":"swg-Latn-DE"},"buu":{"value":"buu-Latn-ZZ"},"ty":{"value":"ty-Latn-PF"},"kge":{"value":"kge-Latn-ID"},"kgf":{"value":"kgf-Latn-ZZ"},"swp":{"value":"swp-Latn-ZZ"},"bvb":{"value":"bvb-Latn-GQ"},"ug":{"value":"ug-Arab-CN"},"swv":{"value":"swv-Deva-IN"},"kgp":{"value":"kgp-Latn-BR"},"uk":{"value":"uk-Cyrl-UA"},"ur":{"value":"ur-Arab-PK"} +,"kk-IR":{"value":"kk-Arab-IR"},"khb":{"value":"khb-Talu-CN"},"kha":{"value":"kha-Latn-IN"},"uz":{"value":"uz-Latn-UZ"},"sxn":{"value":"sxn-Latn-ID"},"xav":{"value":"xav-Latn-BR"},"opm":{"value":"opm-Latn-ZZ"},"bwd":{"value":"bwd-Latn-ZZ"},"und-Mlym":{"value":"ml-Mlym-IN"},"ve":{"value":"ve-Latn-ZA"},"khn":{"value":"khn-Deva-IN"},"sxw":{"value":"sxw-Latn-ZZ"},"vi":{"value":"vi-Latn-VN"},"khq":{"value":"khq-Latn-ML"},"kht":{"value":"kht-Mymr-IN"},"khs":{"value":"khs-Latn-ZZ"},"vo":{"value":"vo-Latn-001"},"khw": +{"value":"khw-Arab-PK"},"bwr":{"value":"bwr-Latn-ZZ"},"khz":{"value":"khz-Latn-ZZ"},"und-ZW":{"value":"sn-Latn-ZW"},"xbi":{"value":"xbi-Latn-ZZ"},"gaa":{"value":"gaa-Latn-GH"},"syl":{"value":"syl-Beng-BD"},"wa":{"value":"wa-Latn-BE"},"gag":{"value":"gag-Latn-MD"},"gaf":{"value":"gaf-Latn-ZZ"},"kij":{"value":"kij-Latn-ZZ"},"syr":{"value":"syr-Syrc-IQ"},"und-YE":{"value":"ar-Arab-YE"},"gah":{"value":"gah-Latn-ZZ"},"gaj":{"value":"gaj-Latn-ZZ"},"gam":{"value":"gam-Latn-ZZ"},"bxh":{"value":"bxh-Latn-ZZ"},"gan": +{"value":"gan-Hans-CN"},"kiu":{"value":"kiu-Latn-TR"},"kiw":{"value":"kiw-Latn-ZZ"},"wo":{"value":"wo-Latn-SN"},"gaw":{"value":"gaw-Latn-ZZ"},"und-Sarb":{"value":"xsa-Sarb-YE"},"gay":{"value":"gay-Latn-ID"},"und-YT":{"value":"fr-Latn-YT"},"kjd":{"value":"kjd-Latn-ZZ"},"szl":{"value":"szl-Latn-PL"},"xco":{"value":"xco-Chrs-UZ"},"xcr":{"value":"xcr-Cari-TR"},"gba":{"value":"gba-Latn-ZZ"},"und-Mult":{"value":"skr-Mult-PK"},"kjg":{"value":"kjg-Laoo-LA"},"gbf":{"value":"gbf-Latn-ZZ"},"oro":{"value":"oro-Latn-ZZ"} +,"und-Hatr":{"value":"mis-Hatr-IQ"},"bye":{"value":"bye-Latn-ZZ"},"xh":{"value":"xh-Latn-ZA"},"gbm":{"value":"gbm-Deva-IN"},"oru":{"value":"oru-Arab-ZZ"},"kjs":{"value":"kjs-Latn-ZZ"},"byn":{"value":"byn-Ethi-ER"},"und-XK":{"value":"sq-Latn-XK"},"yue-CN":{"value":"yue-Hans-CN"},"und-Lepc":{"value":"lep-Lepc-IN"},"byr":{"value":"byr-Latn-ZZ"},"kjy":{"value":"kjy-Latn-ZZ"},"osa":{"value":"osa-Osge-US"},"bys":{"value":"bys-Latn-ZZ"},"byv":{"value":"byv-Latn-CM"},"gbz":{"value":"gbz-Arab-IR"},"gby":{"value":"gby-Latn-ZZ"} +,"byx":{"value":"byx-Latn-ZZ"},"kkc":{"value":"kkc-Latn-ZZ"},"und-VU":{"value":"bi-Latn-VU"},"bza":{"value":"bza-Latn-ZZ"},"und-Goth":{"value":"got-Goth-UA"},"kkj":{"value":"kkj-Latn-CM"},"bze":{"value":"bze-Latn-ML"},"und-Avst":{"value":"ae-Avst-IR"},"bzf":{"value":"bzf-Latn-ZZ"},"yi":{"value":"yi-Hebr-001"},"bzh":{"value":"bzh-Latn-ZZ"},"und-WF":{"value":"fr-Latn-WF"},"yo":{"value":"yo-Latn-NG"},"gcr":{"value":"gcr-Latn-GF"},"ota":{"value":"ota-Arab-ZZ"},"und-WS":{"value":"sm-Latn-WS"},"bzw":{"value":"bzw-Latn-ZZ"} +,"und-UZ":{"value":"uz-Latn-UZ"},"und-UY":{"value":"es-Latn-UY"},"otk":{"value":"otk-Orkh-MN"},"xes":{"value":"xes-Latn-ZZ"},"za":{"value":"za-Latn-CN"},"gde":{"value":"gde-Latn-ZZ"},"kln":{"value":"kln-Latn-KE"},"und-VA":{"value":"it-Latn-VA"},"zh":{"value":"zh-Hans-CN"},"gdn":{"value":"gdn-Latn-ZZ"},"klq":{"value":"klq-Latn-ZZ"},"und-Saur":{"value":"saz-Saur-IN"},"klt":{"value":"klt-Latn-ZZ"},"und-VE":{"value":"es-Latn-VE"},"gdr":{"value":"gdr-Latn-ZZ"},"klx":{"value":"klx-Latn-ZZ"},"und-VN":{"value":"vi-Latn-VN"} +,"kk-MN":{"value":"kk-Arab-MN"},"zu":{"value":"zu-Latn-ZA"},"und-Armn":{"value":"hy-Armn-AM"},"kmb":{"value":"kmb-Latn-AO"},"und-TR":{"value":"tr-Latn-TR"},"geb":{"value":"geb-Latn-ZZ"},"und-TW":{"value":"zh-Hant-TW"},"kmh":{"value":"kmh-Latn-ZZ"},"und-TV":{"value":"tvl-Latn-TV"},"und-TZ":{"value":"sw-Latn-TZ"},"kmo":{"value":"kmo-Latn-ZZ"},"gej":{"value":"gej-Latn-ZZ"},"und-UA":{"value":"uk-Cyrl-UA"},"gel":{"value":"gel-Latn-ZZ"},"kms":{"value":"kms-Latn-ZZ"},"kmu":{"value":"kmu-Latn-ZZ"},"kmw":{"value":"kmw-Latn-ZZ"} +,"und-Tibt":{"value":"bo-Tibt-CN"},"und-UG":{"value":"sw-Latn-UG"},"und-Armi":{"value":"arc-Armi-IR"},"gez":{"value":"gez-Ethi-ET"},"und-ST":{"value":"pt-Latn-ST"},"knf":{"value":"knf-Latn-GW"},"und-SR":{"value":"nl-Latn-SR"},"und-SV":{"value":"es-Latn-SV"},"und-SY":{"value":"ar-Arab-SY"},"knp":{"value":"knp-Latn-ZZ"},"gfk":{"value":"gfk-Latn-ZZ"},"und-TD":{"value":"fr-Latn-TD"},"und-TH":{"value":"th-Thai-TH"},"und-TG":{"value":"fr-Latn-TG"},"und-TF":{"value":"fr-Latn-TF"},"und-TM":{"value":"tk-Latn-TM"},"und-TL": +{"value":"pt-Latn-TL"},"und-TK":{"value":"tkl-Latn-TK"},"und-TJ":{"value":"tg-Cyrl-TJ"},"und-TO":{"value":"to-Latn-TO"},"und-TN":{"value":"ar-Arab-TN"},"und-RS":{"value":"sr-Cyrl-RS"},"koi":{"value":"koi-Cyrl-RU"},"und-RW":{"value":"rw-Latn-RW"},"kok":{"value":"kok-Deva-IN"},"und-RU":{"value":"ru-Cyrl-RU"},"kol":{"value":"kol-Latn-ZZ"},"kos":{"value":"kos-Latn-FM"},"ggn":{"value":"ggn-Deva-NP"},"und-SD":{"value":"ar-Arab-SD"},"und-SC":{"value":"fr-Latn-SC"},"und-SA":{"value":"ar-Arab-SA"},"koz":{"value":"koz-Latn-ZZ"} +,"und-SE":{"value":"sv-Latn-SE"},"und-SK":{"value":"sk-Latn-SK"},"und-SJ":{"value":"nb-Latn-SJ"},"und-SI":{"value":"sl-Latn-SI"},"taj":{"value":"taj-Deva-NP"},"und-SO":{"value":"so-Latn-SO"},"tal":{"value":"tal-Latn-ZZ"},"und-SN":{"value":"fr-Latn-SN"},"und-Osge":{"value":"osa-Osge-US"},"und-SM":{"value":"it-Latn-SM"},"kpf":{"value":"kpf-Latn-ZZ"},"tan":{"value":"tan-Latn-ZZ"},"kpe":{"value":"kpe-Latn-LR"},"und-QO":{"value":"en-Latn-DG"},"taq":{"value":"taq-Latn-ZZ"},"kpo":{"value":"kpo-Latn-ZZ"},"kpr":{"value" +:"kpr-Latn-ZZ"},"kpx":{"value":"kpx-Latn-ZZ"},"ghs":{"value":"ghs-Latn-ZZ"},"und-Lana":{"value":"nod-Lana-TH"},"tbc":{"value":"tbc-Latn-ZZ"},"und-RE":{"value":"fr-Latn-RE"},"tbd":{"value":"tbd-Latn-ZZ"},"tbg":{"value":"tbg-Latn-ZZ"},"tbf":{"value":"tbf-Latn-ZZ"},"und-RO":{"value":"ro-Latn-RO"},"kqb":{"value":"kqb-Latn-ZZ"},"tbo":{"value":"tbo-Latn-ZZ"},"kqf":{"value":"kqf-Latn-ZZ"},"und-PT":{"value":"pt-Latn-PT"},"und-PS":{"value":"ar-Arab-PS"},"cad":{"value":"cad-Latn-US"},"und-PR":{"value":"es-Latn-PR"},"tbw": +{"value":"tbw-Latn-PH"},"und-PY":{"value":"gn-Latn-PY"},"gim":{"value":"gim-Latn-ZZ"},"und-PW":{"value":"pau-Latn-PW"},"gil":{"value":"gil-Latn-KI"},"kqs":{"value":"kqs-Latn-ZZ"},"tbz":{"value":"tbz-Latn-ZZ"},"und-Laoo":{"value":"lo-Laoo-LA"},"can":{"value":"can-Latn-ZZ"},"und-QA":{"value":"ar-Arab-QA"},"kqy":{"value":"kqy-Ethi-ZZ"},"ms-CC":{"value":"ms-Arab-CC"},"tci":{"value":"tci-Latn-ZZ"},"krc":{"value":"krc-Cyrl-RU"},"krj":{"value":"krj-Latn-PH"},"kri":{"value":"kri-Latn-SL"},"ozm":{"value":"ozm-Latn-ZZ"} +,"und-OM":{"value":"ar-Arab-OM"},"krl":{"value":"krl-Latn-RU"},"gjk":{"value":"gjk-Arab-PK"},"cbj":{"value":"cbj-Latn-ZZ"},"gjn":{"value":"gjn-Latn-ZZ"},"tcy":{"value":"tcy-Knda-IN"},"xla":{"value":"xla-Latn-ZZ"},"krs":{"value":"krs-Latn-ZZ"},"xlc":{"value":"xlc-Lyci-TR"},"kru":{"value":"kru-Deva-IN"},"und-PA":{"value":"es-Latn-PA"},"xld":{"value":"xld-Lydi-TR"},"gju":{"value":"gju-Arab-PK"},"und-PE":{"value":"es-Latn-PE"},"tdd":{"value":"tdd-Tale-CN"},"tdg":{"value":"tdg-Deva-NP"},"tdh":{"value":"tdh-Deva-NP"} +,"und-PH":{"value":"fil-Latn-PH"},"und-PG":{"value":"tpi-Latn-PG"},"ksb":{"value":"ksb-Latn-TZ"},"und-PF":{"value":"fr-Latn-PF"},"und-PM":{"value":"fr-Latn-PM"},"ksd":{"value":"ksd-Latn-ZZ"},"und-PL":{"value":"pl-Latn-PL"},"und-PK":{"value":"ur-Arab-PK"},"ksf":{"value":"ksf-Latn-CM"}};},EMZ=()=>{return {"en":[{"value":"BC"},{"value":"AD"}],"root":[{"value":"BCE"},{"value":"CE"}]};},EX_=()=>{return {"en":[{"value":"AM"},{"value":"PM"}],"root":[{"value":"AM"},{"value":"PM"}]};},EXp=()=>{return {"en":[{"value" +:"January"},{"value":"February"},{"value":"March"},{"value":"April"},{"value":"May"},{"value":"June"},{"value":"July"},{"value":"August"},{"value":"September"},{"value":"October"},{"value":"November"},{"value":"December"}],"root":[{"value":"M01"},{"value":"M02"},{"value":"M03"},{"value":"M04"},{"value":"M05"},{"value":"M06"},{"value":"M07"},{"value":"M08"},{"value":"M09"},{"value":"M10"},{"value":"M11"},{"value":"M12"}]};},DBO=()=>{return {"en":[{"value":"Jan"},{"value":"Feb"},{"value":"Mar"},{"value":"Apr"} +,{"value":"May"},{"value":"Jun"},{"value":"Jul"},{"value":"Aug"},{"value":"Sep"},{"value":"Oct"},{"value":"Nov"},{"value":"Dec"}],"root":[{"value":"M01"},{"value":"M02"},{"value":"M03"},{"value":"M04"},{"value":"M05"},{"value":"M06"},{"value":"M07"},{"value":"M08"},{"value":"M09"},{"value":"M10"},{"value":"M11"},{"value":"M12"}]};},DT6=()=>{return {"en":[{"value":"Sunday"},{"value":"Monday"},{"value":"Tuesday"},{"value":"Wednesday"},{"value":"Thursday"},{"value":"Friday"},{"value":"Saturday"}],"root":[{"value" +:"Sun"},{"value":"Mon"},{"value":"Tue"},{"value":"Wed"},{"value":"Thu"},{"value":"Fri"},{"value":"Sat"}]};},DDk=()=>{return {"en":[{"value":"Sun"},{"value":"Mon"},{"value":"Tue"},{"value":"Wed"},{"value":"Thu"},{"value":"Fri"},{"value":"Sat"}],"root":[{"value":"Sun"},{"value":"Mon"},{"value":"Tue"},{"value":"Wed"},{"value":"Thu"},{"value":"Fri"},{"value":"Sat"}]};},D5F=()=>{return {"en":{"timeZones":{"Asia":{"Gaza":{"value":"Gaza"},"Makassar":{"value":"Makassar"},"Ulaanbaatar":{"value":"Ulaanbaatar"},"Vladivostok": +{"value":"Vladivostok"},"Tashkent":{"value":"Tashkent"},"Beirut":{"value":"Beirut"},"Qyzylorda":{"value":"Qyzylorda"},"Hong_Kong":{"value":"Hong Kong"},"Phnom_Penh":{"value":"Phnom Penh"},"Kabul":{"value":"Kabul"},"Riyadh":{"value":"Riyadh"},"Ashgabat":{"value":"Ashgabat"},"Chita":{"value":"Chita"},"Aqtau":{"value":"Aqtau"},"Tokyo":{"value":"Tokyo"},"Baku":{"value":"Baku"},"Aqtobe":{"value":"Aqtobe"},"Novosibirsk":{"value":"Novosibirsk"},"Kamchatka":{"value":"Kamchatka"},"Nicosia":{"value":"Nicosia"},"Pontianak": +{"value":"Pontianak"},"Qostanay":{"value":"Kostanay"},"Barnaul":{"value":"Barnaul"},"Jerusalem":{"value":"Jerusalem"},"Kuala_Lumpur":{"value":"Kuala Lumpur"},"Novokuznetsk":{"value":"Novokuznetsk"},"Bahrain":{"value":"Bahrain"},"Kuching":{"value":"Kuching"},"Bangkok":{"value":"Bangkok"},"Srednekolymsk":{"value":"Srednekolymsk"},"Karachi":{"value":"Karachi"},"Aden":{"value":"Aden"},"Irkutsk":{"value":"Irkutsk"},"Hovd":{"value":"Hovd"},"Katmandu":{"value":"Kathmandu"},"Baghdad":{"value":"Baghdad"},"Samarkand": +{"value":"Samarkand"},"Thimphu":{"value":"Thimphu"},"Dhaka":{"value":"Dhaka"},"Yerevan":{"value":"Yerevan"},"Muscat":{"value":"Muscat"},"Saigon":{"value":"Ho Chi Minh City"},"Dili":{"value":"Dili"},"Singapore":{"value":"Singapore"},"Rangoon":{"value":"Yangon"},"Damascus":{"value":"Damascus"},"Taipei":{"value":"Taipei"},"Amman":{"value":"Amman"},"Choibalsan":{"value":"Choibalsan"},"Macau":{"value":"Macao"},"Jayapura":{"value":"Jayapura"},"Manila":{"value":"Manila"},"Oral":{"value":"Oral"},"Dubai":{"value":"Dubai"} +,"Yakutsk":{"value":"Yakutsk"},"Seoul":{"value":"Seoul"},"Hebron":{"value":"Hebron"},"Qatar":{"value":"Qatar"},"Bishkek":{"value":"Bishkek"},"Tomsk":{"value":"Tomsk"},"Colombo":{"value":"Colombo"},"Khandyga":{"value":"Khandyga"},"Yekaterinburg":{"value":"Yekaterinburg"},"Dushanbe":{"value":"Dushanbe"},"Famagusta":{"value":"Famagusta"},"Kuwait":{"value":"Kuwait"},"Magadan":{"value":"Magadan"},"Pyongyang":{"value":"Pyongyang"},"Tehran":{"value":"Tehran"},"Sakhalin":{"value":"Sakhalin"},"Calcutta":{"value":"Kolkata"} +,"Urumqi":{"value":"Urumqi"},"Shanghai":{"value":"Shanghai"},"Atyrau":{"value":"Atyrau"},"Almaty":{"value":"Almaty"},"Tbilisi":{"value":"Tbilisi"},"Anadyr":{"value":"Anadyr"},"Brunei":{"value":"Brunei"},"Krasnoyarsk":{"value":"Krasnoyarsk"},"Vientiane":{"value":"Vientiane"},"Omsk":{"value":"Omsk"},"Jakarta":{"value":"Jakarta"},"Ust-Nera":{"value":"Ust-Nera"}},"Pacific":{"Easter":{"value":"Easter"},"Fiji":{"value":"Fiji"},"Port_Moresby":{"value":"Port Moresby"},"Kiritimati":{"value":"Kiritimati"},"Kosrae":{"value" +:"Kosrae"},"Kwajalein":{"value":"Kwajalein"},"Auckland":{"value":"Auckland"},"Efate":{"value":"Efate"},"Johnston":{"value":"Johnston"},"Niue":{"value":"Niue"},"Majuro":{"value":"Majuro"},"Truk":{"value":"Chuuk"},"Ponape":{"value":"Pohnpei"},"Guadalcanal":{"value":"Guadalcanal"},"Guam":{"value":"Guam"},"Chatham":{"value":"Chatham"},"Midway":{"value":"Midway"},"Tahiti":{"value":"Tahiti"},"Pago_Pago":{"value":"Pago Pago"},"Galapagos":{"value":"Galapagos"},"Funafuti":{"value":"Funafuti"},"Marquesas":{"value":"Marquesas"} +,"Rarotonga":{"value":"Rarotonga"},"Tarawa":{"value":"Tarawa"},"Saipan":{"value":"Saipan"},"Gambier":{"value":"Gambier"},"Tongatapu":{"value":"Tongatapu"},"Wallis":{"value":"Wallis"},"Fakaofo":{"value":"Fakaofo"},"Wake":{"value":"Wake"},"Enderbury":{"value":"Enderbury"},"Pitcairn":{"value":"Pitcairn"},"Apia":{"value":"Apia"},"Noumea":{"value":"Noumea"},"Palau":{"value":"Palau"},"Nauru":{"value":"Nauru"},"Bougainville":{"value":"Bougainville"},"Norfolk":{"value":"Norfolk"}},"Etc":{"Unknown":{"value":"Unknown City"} +},"Europe":{"Belgrade":{"value":"Belgrade"},"Saratov":{"value":"Saratov"},"Gibraltar":{"value":"Gibraltar"},"Bucharest":{"value":"Bucharest"},"Dublin":{"value":"Dublin"},"Zaporozhye":{"value":"Zaporozhye"},"Kiev":{"value":"Kiev"},"Zurich":{"value":"Zurich"},"Copenhagen":{"value":"Copenhagen"},"Rome":{"value":"Rome"},"Zagreb":{"value":"Zagreb"},"Monaco":{"value":"Monaco"},"Luxembourg":{"value":"Luxembourg"},"Jersey":{"value":"Jersey"},"Istanbul":{"value":"Istanbul"},"Ulyanovsk":{"value":"Ulyanovsk"},"Samara": +{"value":"Samara"},"Sarajevo":{"value":"Sarajevo"},"Chisinau":{"value":"Chisinau"},"Vatican":{"value":"Vatican"},"Brussels":{"value":"Brussels"},"Oslo":{"value":"Oslo"},"Warsaw":{"value":"Warsaw"},"Berlin":{"value":"Berlin"},"Lisbon":{"value":"Lisbon"},"Athens":{"value":"Athens"},"Podgorica":{"value":"Podgorica"},"San_Marino":{"value":"San Marino"},"Simferopol":{"value":"Simferopol"},"Bratislava":{"value":"Bratislava"},"Stockholm":{"value":"Stockholm"},"Prague":{"value":"Prague"},"Uzhgorod":{"value":"Uzhhorod"} +,"Astrakhan":{"value":"Astrakhan"},"Budapest":{"value":"Budapest"},"Madrid":{"value":"Madrid"},"Vaduz":{"value":"Vaduz"},"London":{"value":"London"},"Vilnius":{"value":"Vilnius"},"Isle_of_Man":{"value":"Isle of Man"},"Sofia":{"value":"Sofia"},"Kirov":{"value":"Kirov"},"Tallinn":{"value":"Tallinn"},"Moscow":{"value":"Moscow"},"Malta":{"value":"Malta"},"Busingen":{"value":"Busingen"},"Amsterdam":{"value":"Amsterdam"},"Andorra":{"value":"Andorra"},"Riga":{"value":"Riga"},"Vienna":{"value":"Vienna"},"Helsinki": +{"value":"Helsinki"},"Minsk":{"value":"Minsk"},"Kaliningrad":{"value":"Kaliningrad"},"Ljubljana":{"value":"Ljubljana"},"Mariehamn":{"value":"Mariehamn"},"Skopje":{"value":"Skopje"},"Tirane":{"value":"Tirane"},"Guernsey":{"value":"Guernsey"},"Volgograd":{"value":"Volgograd"},"Paris":{"value":"Paris"}},"America":{"Belem":{"value":"Belem"},"Guayaquil":{"value":"Guayaquil"},"Costa_Rica":{"value":"Costa Rica"},"Hermosillo":{"value":"Hermosillo"},"Punta_Arenas":{"value":"Punta Arenas"},"Iqaluit":{"value":"Iqaluit"} +,"Godthab":{"value":"Nuuk"},"Jujuy":{"value":"Jujuy"},"El_Salvador":{"value":"El Salvador"},"Monterrey":{"value":"Monterrey"},"Bahia":{"value":"Bahia"},"Sao_Paulo":{"value":"Sao Paulo"},"Grenada":{"value":"Grenada"},"Grand_Turk":{"value":"Grand Turk"},"Montserrat":{"value":"Montserrat"},"Guadeloupe":{"value":"Guadeloupe"},"Panama":{"value":"Panama"},"Guatemala":{"value":"Guatemala"},"Guyana":{"value":"Guyana"},"Swift_Current":{"value":"Swift Current"},"Puerto_Rico":{"value":"Puerto Rico"},"Moncton":{"value" +:"Moncton"},"Danmarkshavn":{"value":"Danmarkshavn"},"Nome":{"value":"Nome"},"Porto_Velho":{"value":"Porto Velho"},"Cuiaba":{"value":"Cuiaba"},"Pangnirtung":{"value":"Pangnirtung"},"Kralendijk":{"value":"Kralendijk"},"Belize":{"value":"Belize"},"Anguilla":{"value":"Anguilla"},"Santiago":{"value":"Santiago"},"Boise":{"value":"Boise"},"Creston":{"value":"Creston"},"Miquelon":{"value":"Miquelon"},"Jamaica":{"value":"Jamaica"},"Buenos_Aires":{"value":"Buenos Aires"},"Rankin_Inlet":{"value":"Rankin Inlet"},"Toronto": +{"value":"Toronto"},"Eirunepe":{"value":"Eirunepe"},"Dawson":{"value":"Dawson"},"Nassau":{"value":"Nassau"},"Vancouver":{"value":"Vancouver"},"Noronha":{"value":"Noronha"},"Regina":{"value":"Regina"},"St_Vincent":{"value":"St. Vincent"},"Scoresbysund":{"value":"Ittoqqortoormiit"},"Louisville":{"value":"Louisville"},"Aruba":{"value":"Aruba"},"Thule":{"value":"Thule"},"Rio_Branco":{"value":"Rio Branco"},"Los_Angeles":{"value":"Los Angeles"},"St_Thomas":{"value":"St. Thomas"},"Cordoba":{"value":"Cordoba"},"Cancun": +{"value":"Cancun"},"Coral_Harbour":{"value":"Atikokan"},"Maceio":{"value":"Maceio"},"Sitka":{"value":"Sitka"},"Denver":{"value":"Denver"},"Cayman":{"value":"Cayman"},"Nipigon":{"value":"Nipigon"},"Thunder_Bay":{"value":"Thunder Bay"},"Havana":{"value":"Havana"},"Campo_Grande":{"value":"Campo Grande"},"Cambridge_Bay":{"value":"Cambridge Bay"},"Fortaleza":{"value":"Fortaleza"},"Managua":{"value":"Managua"},"Menominee":{"value":"Menominee"},"Halifax":{"value":"Halifax"},"Ojinaga":{"value":"Ojinaga"},"Glace_Bay": +{"value":"Glace Bay"},"Lower_Princes":{"value":"Lower Prince’s Quarter"},"Mendoza":{"value":"Mendoza"},"Yakutat":{"value":"Yakutat"},"Detroit":{"value":"Detroit"},"Merida":{"value":"Merida"},"Bahia_Banderas":{"value":"Bahia Banderas"},"Matamoros":{"value":"Matamoros"},"St_Barthelemy":{"value":"St. Barthélemy"},"Boa_Vista":{"value":"Boa Vista"},"Metlakatla":{"value":"Metlakatla"},"Tortola":{"value":"Tortola"},"Inuvik":{"value":"Inuvik"},"Port_of_Spain":{"value":"Port of Spain"},"New_York":{"value":"New York"} +,"Paramaribo":{"value":"Paramaribo"},"Manaus":{"value":"Manaus"},"Resolute":{"value":"Resolute"},"Curacao":{"value":"Curaçao"},"Bogota":{"value":"Bogota"},"Adak":{"value":"Adak"},"Caracas":{"value":"Caracas"},"Mazatlan":{"value":"Mazatlan"},"St_Kitts":{"value":"St. Kitts"},"Mexico_City":{"value":"Mexico City"},"Edmonton":{"value":"Edmonton"},"Araguaina":{"value":"Araguaina"},"Santo_Domingo":{"value":"Santo Domingo"},"Indianapolis":{"value":"Indianapolis"},"Whitehorse":{"value":"Whitehorse"},"Yellowknife":{"value" +:"Yellowknife"},"Asuncion":{"value":"Asunción"},"Santarem":{"value":"Santarem"},"Antigua":{"value":"Antigua"},"Winnipeg":{"value":"Winnipeg"},"Recife":{"value":"Recife"},"Lima":{"value":"Lima"},"Martinique":{"value":"Martinique"},"Phoenix":{"value":"Phoenix"},"Goose_Bay":{"value":"Goose Bay"},"St_Johns":{"value":"St. John’s"},"Montevideo":{"value":"Montevideo"},"St_Lucia":{"value":"St. Lucia"},"Chicago":{"value":"Chicago"},"Chihuahua":{"value":"Chihuahua"},"La_Paz":{"value":"La Paz"},"Blanc-Sablon":{"value" +:"Blanc-Sablon"},"Catamarca":{"value":"Catamarca"},"Tijuana":{"value":"Tijuana"},"Barbados":{"value":"Barbados"},"Anchorage":{"value":"Anchorage"},"Port-au-Prince":{"value":"Port-au-Prince"},"Rainy_River":{"value":"Rainy River"},"Cayenne":{"value":"Cayenne"},"Tegucigalpa":{"value":"Tegucigalpa"},"Juneau":{"value":"Juneau"},"Marigot":{"value":"Marigot"},"Dawson_Creek":{"value":"Dawson Creek"},"Dominica":{"value":"Dominica"},"Fort_Nelson":{"value":"Fort Nelson"}},"Africa":{"Tunis":{"value":"Tunis"},"Maputo":{"value" +:"Maputo"},"Casablanca":{"value":"Casablanca"},"Johannesburg":{"value":"Johannesburg"},"Addis_Ababa":{"value":"Addis Ababa"},"Lagos":{"value":"Lagos"},"Accra":{"value":"Accra"},"Nairobi":{"value":"Nairobi"},"Brazzaville":{"value":"Brazzaville"},"Lubumbashi":{"value":"Lubumbashi"},"Banjul":{"value":"Banjul"},"Porto-Novo":{"value":"Porto-Novo"},"Lusaka":{"value":"Lusaka"},"Kigali":{"value":"Kigali"},"Ouagadougou":{"value":"Ouagadougou"},"Freetown":{"value":"Freetown"},"Ndjamena":{"value":"Ndjamena"},"Conakry": +{"value":"Conakry"},"Niamey":{"value":"Niamey"},"Maseru":{"value":"Maseru"},"El_Aaiun":{"value":"El Aaiun"},"Sao_Tome":{"value":"São Tomé"},"Ceuta":{"value":"Ceuta"},"Khartoum":{"value":"Khartoum"},"Algiers":{"value":"Algiers"},"Bangui":{"value":"Bangui"},"Bujumbura":{"value":"Bujumbura"},"Gaborone":{"value":"Gaborone"},"Juba":{"value":"Juba"},"Dar_es_Salaam":{"value":"Dar es Salaam"},"Windhoek":{"value":"Windhoek"},"Harare":{"value":"Harare"},"Tripoli":{"value":"Tripoli"},"Libreville":{"value":"Libreville"} +,"Malabo":{"value":"Malabo"},"Abidjan":{"value":"Abidjan"},"Luanda":{"value":"Luanda"},"Lome":{"value":"Lome"},"Nouakchott":{"value":"Nouakchott"},"Bissau":{"value":"Bissau"},"Kinshasa":{"value":"Kinshasa"},"Asmera":{"value":"Asmara"},"Mogadishu":{"value":"Mogadishu"},"Djibouti":{"value":"Djibouti"},"Douala":{"value":"Douala"},"Kampala":{"value":"Kampala"},"Dakar":{"value":"Dakar"},"Cairo":{"value":"Cairo"},"Blantyre":{"value":"Blantyre"},"Monrovia":{"value":"Monrovia"},"Mbabane":{"value":"Mbabane"},"Bamako": +{"value":"Bamako"}},"Indian":{"Reunion":{"value":"Réunion"},"Maldives":{"value":"Maldives"},"Christmas":{"value":"Christmas"},"Antananarivo":{"value":"Antananarivo"},"Chagos":{"value":"Chagos"},"Mahe":{"value":"Mahe"},"Mayotte":{"value":"Mayotte"},"Kerguelen":{"value":"Kerguelen"},"Mauritius":{"value":"Mauritius"},"Cocos":{"value":"Cocos"},"Comoro":{"value":"Comoro"}},"Antarctica":{"Macquarie":{"value":"Macquarie"},"Palmer":{"value":"Palmer"},"Casey":{"value":"Casey"},"Troll":{"value":"Troll"},"Vostok":{"value" +:"Vostok"},"DumontDUrville":{"value":"Dumont d’Urville"},"Syowa":{"value":"Syowa"},"Mawson":{"value":"Mawson"},"McMurdo":{"value":"McMurdo"},"Davis":{"value":"Davis"},"Rothera":{"value":"Rothera"}},"Australia":{"Broken_Hill":{"value":"Broken Hill"},"Darwin":{"value":"Darwin"},"Brisbane":{"value":"Brisbane"},"Currie":{"value":"Currie"},"Lord_Howe":{"value":"Lord Howe"},"Lindeman":{"value":"Lindeman"},"Adelaide":{"value":"Adelaide"},"Perth":{"value":"Perth"},"Eucla":{"value":"Eucla"},"Melbourne":{"value":"Melbourne"} +,"Sydney":{"value":"Sydney"},"Hobart":{"value":"Hobart"}},"Arctic":{"Longyearbyen":{"value":"Longyearbyen"}},"Atlantic":{"St_Helena":{"value":"St. Helena"},"Reykjavik":{"value":"Reykjavik"},"Stanley":{"value":"Stanley"},"Madeira":{"value":"Madeira"},"Canary":{"value":"Canary"},"Faeroe":{"value":"Faroe"},"Bermuda":{"value":"Bermuda"},"Azores":{"value":"Azores"},"South_Georgia":{"value":"South Georgia"},"Cape_Verde":{"value":"Cape Verde"}}}},"root":{"timeZones":{"Asia":{"Gaza":{"value":"Gaza"},"Makassar":{"value" +:"Makassar"},"Ulaanbaatar":{"value":"Ulaanbaatar"},"Vladivostok":{"value":"Vladivostok"},"Tashkent":{"value":"Tashkent"},"Beirut":{"value":"Beirut"},"Qyzylorda":{"value":"Qyzylorda"},"Hong_Kong":{"value":"Hong Kong"},"Phnom_Penh":{"value":"Phnom Penh"},"Kabul":{"value":"Kabul"},"Riyadh":{"value":"Riyadh"},"Ashgabat":{"value":"Ashgabat"},"Chita":{"value":"Chita"},"Aqtau":{"value":"Aqtau"},"Tokyo":{"value":"Tokyo"},"Baku":{"value":"Baku"},"Aqtobe":{"value":"Aqtobe"},"Novosibirsk":{"value":"Novosibirsk"},"Kamchatka": +{"value":"Kamchatka"},"Nicosia":{"value":"Nicosia"},"Pontianak":{"value":"Pontianak"},"Qostanay":{"value":"Qostanay"},"Barnaul":{"value":"Barnaul"},"Jerusalem":{"value":"Jerusalem"},"Kuala_Lumpur":{"value":"Kuala Lumpur"},"Novokuznetsk":{"value":"Novokuznetsk"},"Bahrain":{"value":"Bahrain"},"Kuching":{"value":"Kuching"},"Bangkok":{"value":"Bangkok"},"Srednekolymsk":{"value":"Srednekolymsk"},"Karachi":{"value":"Karachi"},"Aden":{"value":"Aden"},"Irkutsk":{"value":"Irkutsk"},"Hovd":{"value":"Hovd"},"Katmandu": +{"value":"Kathmandu"},"Baghdad":{"value":"Baghdad"},"Samarkand":{"value":"Samarkand"},"Thimphu":{"value":"Thimphu"},"Dhaka":{"value":"Dhaka"},"Yerevan":{"value":"Yerevan"},"Muscat":{"value":"Muscat"},"Saigon":{"value":"Ho Chi Minh"},"Dili":{"value":"Dili"},"Singapore":{"value":"Singapore"},"Rangoon":{"value":"Yangon"},"Damascus":{"value":"Damascus"},"Taipei":{"value":"Taipei"},"Amman":{"value":"Amman"},"Choibalsan":{"value":"Choibalsan"},"Macau":{"value":"Macao"},"Jayapura":{"value":"Jayapura"},"Manila":{"value" +:"Manila"},"Oral":{"value":"Oral"},"Dubai":{"value":"Dubai"},"Yakutsk":{"value":"Yakutsk"},"Seoul":{"value":"Seoul"},"Hebron":{"value":"Hebron"},"Qatar":{"value":"Qatar"},"Bishkek":{"value":"Bishkek"},"Tomsk":{"value":"Tomsk"},"Colombo":{"value":"Colombo"},"Khandyga":{"value":"Khandyga"},"Yekaterinburg":{"value":"Yekaterinburg"},"Dushanbe":{"value":"Dushanbe"},"Famagusta":{"value":"Famagusta"},"Kuwait":{"value":"Kuwait"},"Magadan":{"value":"Magadan"},"Pyongyang":{"value":"Pyongyang"},"Tehran":{"value":"Tehran"} +,"Sakhalin":{"value":"Sakhalin"},"Calcutta":{"value":"Kolkata"},"Urumqi":{"value":"Urumqi"},"Shanghai":{"value":"Shanghai"},"Atyrau":{"value":"Atyrau"},"Almaty":{"value":"Almaty"},"Tbilisi":{"value":"Tbilisi"},"Anadyr":{"value":"Anadyr"},"Brunei":{"value":"Brunei"},"Krasnoyarsk":{"value":"Krasnoyarsk"},"Vientiane":{"value":"Vientiane"},"Omsk":{"value":"Omsk"},"Jakarta":{"value":"Jakarta"},"Ust-Nera":{"value":"Ust-Nera"}},"Pacific":{"Easter":{"value":"Easter"},"Fiji":{"value":"Fiji"},"Port_Moresby":{"value": +"Port Moresby"},"Kiritimati":{"value":"Kiritimati"},"Kosrae":{"value":"Kosrae"},"Kwajalein":{"value":"Kwajalein"},"Auckland":{"value":"Auckland"},"Efate":{"value":"Efate"},"Johnston":{"value":"Johnston"},"Niue":{"value":"Niue"},"Majuro":{"value":"Majuro"},"Truk":{"value":"Chuuk"},"Ponape":{"value":"Pohnpei"},"Guadalcanal":{"value":"Guadalcanal"},"Guam":{"value":"Guam"},"Chatham":{"value":"Chatham"},"Midway":{"value":"Midway"},"Tahiti":{"value":"Tahiti"},"Pago_Pago":{"value":"Pago Pago"},"Galapagos":{"value" +:"Galapagos"},"Funafuti":{"value":"Funafuti"},"Marquesas":{"value":"Marquesas"},"Rarotonga":{"value":"Rarotonga"},"Tarawa":{"value":"Tarawa"},"Saipan":{"value":"Saipan"},"Gambier":{"value":"Gambier"},"Tongatapu":{"value":"Tongatapu"},"Wallis":{"value":"Wallis"},"Fakaofo":{"value":"Fakaofo"},"Wake":{"value":"Wake"},"Enderbury":{"value":"Enderbury"},"Pitcairn":{"value":"Pitcairn"},"Apia":{"value":"Apia"},"Noumea":{"value":"Noumea"},"Palau":{"value":"Palau"},"Nauru":{"value":"Nauru"},"Bougainville":{"value":"Bougainville"} +,"Norfolk":{"value":"Norfolk"}},"Etc":{"Unknown":{"value":"Unknown"}},"Europe":{"Belgrade":{"value":"Belgrade"},"Saratov":{"value":"Saratov"},"Gibraltar":{"value":"Gibraltar"},"Bucharest":{"value":"Bucharest"},"Dublin":{"value":"Dublin"},"Zaporozhye":{"value":"Zaporozhye"},"Kiev":{"value":"Kiev"},"Zurich":{"value":"Zurich"},"Copenhagen":{"value":"Copenhagen"},"Rome":{"value":"Rome"},"Zagreb":{"value":"Zagreb"},"Monaco":{"value":"Monaco"},"Luxembourg":{"value":"Luxembourg"},"Jersey":{"value":"Jersey"},"Istanbul": +{"value":"Istanbul"},"Ulyanovsk":{"value":"Ulyanovsk"},"Samara":{"value":"Samara"},"Sarajevo":{"value":"Sarajevo"},"Chisinau":{"value":"Chisinau"},"Vatican":{"value":"Vatican"},"Brussels":{"value":"Brussels"},"Oslo":{"value":"Oslo"},"Warsaw":{"value":"Warsaw"},"Berlin":{"value":"Berlin"},"Lisbon":{"value":"Lisbon"},"Athens":{"value":"Athens"},"Podgorica":{"value":"Podgorica"},"San_Marino":{"value":"San Marino"},"Simferopol":{"value":"Simferopol"},"Bratislava":{"value":"Bratislava"},"Stockholm":{"value":"Stockholm"} +,"Prague":{"value":"Prague"},"Uzhgorod":{"value":"Uzhgorod"},"Astrakhan":{"value":"Astrakhan"},"Budapest":{"value":"Budapest"},"Madrid":{"value":"Madrid"},"Vaduz":{"value":"Vaduz"},"London":{"value":"London"},"Vilnius":{"value":"Vilnius"},"Isle_of_Man":{"value":"Isle of Man"},"Sofia":{"value":"Sofia"},"Kirov":{"value":"Kirov"},"Tallinn":{"value":"Tallinn"},"Moscow":{"value":"Moscow"},"Malta":{"value":"Malta"},"Busingen":{"value":"Busingen"},"Amsterdam":{"value":"Amsterdam"},"Andorra":{"value":"Andorra"},"Riga": +{"value":"Riga"},"Vienna":{"value":"Vienna"},"Helsinki":{"value":"Helsinki"},"Minsk":{"value":"Minsk"},"Kaliningrad":{"value":"Kaliningrad"},"Ljubljana":{"value":"Ljubljana"},"Mariehamn":{"value":"Mariehamn"},"Skopje":{"value":"Skopje"},"Tirane":{"value":"Tirane"},"Guernsey":{"value":"Guernsey"},"Volgograd":{"value":"Volgograd"},"Paris":{"value":"Paris"}},"America":{"Belem":{"value":"Belem"},"Guayaquil":{"value":"Guayaquil"},"Costa_Rica":{"value":"Costa Rica"},"Hermosillo":{"value":"Hermosillo"},"Punta_Arenas": +{"value":"Punta Arenas"},"Iqaluit":{"value":"Iqaluit"},"Godthab":{"value":"Nuuk"},"Jujuy":{"value":"Jujuy"},"El_Salvador":{"value":"El Salvador"},"Monterrey":{"value":"Monterrey"},"Bahia":{"value":"Bahia"},"Sao_Paulo":{"value":"Sao Paulo"},"Grenada":{"value":"Grenada"},"Grand_Turk":{"value":"Grand Turk"},"Montserrat":{"value":"Montserrat"},"Guadeloupe":{"value":"Guadeloupe"},"Panama":{"value":"Panama"},"Guatemala":{"value":"Guatemala"},"Guyana":{"value":"Guyana"},"Swift_Current":{"value":"Swift Current"},"Puerto_Rico": +{"value":"Puerto Rico"},"Moncton":{"value":"Moncton"},"Danmarkshavn":{"value":"Danmarkshavn"},"Nome":{"value":"Nome"},"Porto_Velho":{"value":"Porto Velho"},"Cuiaba":{"value":"Cuiaba"},"Pangnirtung":{"value":"Pangnirtung"},"Kralendijk":{"value":"Kralendijk"},"Belize":{"value":"Belize"},"Anguilla":{"value":"Anguilla"},"Santiago":{"value":"Santiago"},"Boise":{"value":"Boise"},"Creston":{"value":"Creston"},"Miquelon":{"value":"Miquelon"},"Jamaica":{"value":"Jamaica"},"Buenos_Aires":{"value":"Buenos Aires"},"Rankin_Inlet": +{"value":"Rankin Inlet"},"Toronto":{"value":"Toronto"},"Eirunepe":{"value":"Eirunepe"},"Dawson":{"value":"Dawson"},"Nassau":{"value":"Nassau"},"Vancouver":{"value":"Vancouver"},"Noronha":{"value":"Noronha"},"Regina":{"value":"Regina"},"St_Vincent":{"value":"St. Vincent"},"Scoresbysund":{"value":"Ittoqqortoormiit"},"Louisville":{"value":"Louisville"},"Aruba":{"value":"Aruba"},"Thule":{"value":"Thule"},"Rio_Branco":{"value":"Rio Branco"},"Los_Angeles":{"value":"Los Angeles"},"St_Thomas":{"value":"St. Thomas"} +,"Cordoba":{"value":"Cordoba"},"Cancun":{"value":"Cancun"},"Coral_Harbour":{"value":"Atikokan"},"Maceio":{"value":"Maceio"},"Sitka":{"value":"Sitka"},"Denver":{"value":"Denver"},"Cayman":{"value":"Cayman"},"Nipigon":{"value":"Nipigon"},"Thunder_Bay":{"value":"Thunder Bay"},"Havana":{"value":"Havana"},"Campo_Grande":{"value":"Campo Grande"},"Cambridge_Bay":{"value":"Cambridge Bay"},"Fortaleza":{"value":"Fortaleza"},"Managua":{"value":"Managua"},"Menominee":{"value":"Menominee"},"Halifax":{"value":"Halifax"}, +"Ojinaga":{"value":"Ojinaga"},"Glace_Bay":{"value":"Glace Bay"},"Lower_Princes":{"value":"Lower Prince’s Quarter"},"Mendoza":{"value":"Mendoza"},"Yakutat":{"value":"Yakutat"},"Detroit":{"value":"Detroit"},"Merida":{"value":"Merida"},"Bahia_Banderas":{"value":"Bahia Banderas"},"Matamoros":{"value":"Matamoros"},"St_Barthelemy":{"value":"St. Barthelemy"},"Boa_Vista":{"value":"Boa Vista"},"Metlakatla":{"value":"Metlakatla"},"Tortola":{"value":"Tortola"},"Inuvik":{"value":"Inuvik"},"Port_of_Spain":{"value":"Port of Spain"} +,"New_York":{"value":"New York"},"Paramaribo":{"value":"Paramaribo"},"Manaus":{"value":"Manaus"},"Resolute":{"value":"Resolute"},"Curacao":{"value":"Curacao"},"Bogota":{"value":"Bogota"},"Adak":{"value":"Adak"},"Caracas":{"value":"Caracas"},"Mazatlan":{"value":"Mazatlan"},"St_Kitts":{"value":"St. Kitts"},"Mexico_City":{"value":"Mexico City"},"Edmonton":{"value":"Edmonton"},"Araguaina":{"value":"Araguaina"},"Santo_Domingo":{"value":"Santo Domingo"},"Indianapolis":{"value":"Indianapolis"},"Whitehorse":{"value" +:"Whitehorse"},"Yellowknife":{"value":"Yellowknife"},"Asuncion":{"value":"Asuncion"},"Santarem":{"value":"Santarem"},"Antigua":{"value":"Antigua"},"Winnipeg":{"value":"Winnipeg"},"Recife":{"value":"Recife"},"Lima":{"value":"Lima"},"Martinique":{"value":"Martinique"},"Phoenix":{"value":"Phoenix"},"Goose_Bay":{"value":"Goose Bay"},"St_Johns":{"value":"St. John’s"},"Montevideo":{"value":"Montevideo"},"St_Lucia":{"value":"St. Lucia"},"Chicago":{"value":"Chicago"},"Chihuahua":{"value":"Chihuahua"},"La_Paz":{"value" +:"La Paz"},"Blanc-Sablon":{"value":"Blanc-Sablon"},"Catamarca":{"value":"Catamarca"},"Tijuana":{"value":"Tijuana"},"Barbados":{"value":"Barbados"},"Anchorage":{"value":"Anchorage"},"Port-au-Prince":{"value":"Port-au-Prince"},"Rainy_River":{"value":"Rainy River"},"Cayenne":{"value":"Cayenne"},"Tegucigalpa":{"value":"Tegucigalpa"},"Juneau":{"value":"Juneau"},"Marigot":{"value":"Marigot"},"Dawson_Creek":{"value":"Dawson Creek"},"Dominica":{"value":"Dominica"},"Fort_Nelson":{"value":"Fort Nelson"}},"Africa":{"Tunis": +{"value":"Tunis"},"Maputo":{"value":"Maputo"},"Casablanca":{"value":"Casablanca"},"Johannesburg":{"value":"Johannesburg"},"Addis_Ababa":{"value":"Addis Ababa"},"Lagos":{"value":"Lagos"},"Accra":{"value":"Accra"},"Nairobi":{"value":"Nairobi"},"Brazzaville":{"value":"Brazzaville"},"Lubumbashi":{"value":"Lubumbashi"},"Banjul":{"value":"Banjul"},"Porto-Novo":{"value":"Porto-Novo"},"Lusaka":{"value":"Lusaka"},"Kigali":{"value":"Kigali"},"Ouagadougou":{"value":"Ouagadougou"},"Freetown":{"value":"Freetown"},"Ndjamena": +{"value":"Ndjamena"},"Conakry":{"value":"Conakry"},"Niamey":{"value":"Niamey"},"Maseru":{"value":"Maseru"},"El_Aaiun":{"value":"El Aaiun"},"Sao_Tome":{"value":"Sao Tome"},"Ceuta":{"value":"Ceuta"},"Khartoum":{"value":"Khartoum"},"Algiers":{"value":"Algiers"},"Bangui":{"value":"Bangui"},"Bujumbura":{"value":"Bujumbura"},"Gaborone":{"value":"Gaborone"},"Juba":{"value":"Juba"},"Dar_es_Salaam":{"value":"Dar es Salaam"},"Windhoek":{"value":"Windhoek"},"Harare":{"value":"Harare"},"Tripoli":{"value":"Tripoli"},"Libreville": +{"value":"Libreville"},"Malabo":{"value":"Malabo"},"Abidjan":{"value":"Abidjan"},"Luanda":{"value":"Luanda"},"Lome":{"value":"Lome"},"Nouakchott":{"value":"Nouakchott"},"Bissau":{"value":"Bissau"},"Kinshasa":{"value":"Kinshasa"},"Asmera":{"value":"Asmara"},"Mogadishu":{"value":"Mogadishu"},"Djibouti":{"value":"Djibouti"},"Douala":{"value":"Douala"},"Kampala":{"value":"Kampala"},"Dakar":{"value":"Dakar"},"Cairo":{"value":"Cairo"},"Blantyre":{"value":"Blantyre"},"Monrovia":{"value":"Monrovia"},"Mbabane":{"value" +:"Mbabane"},"Bamako":{"value":"Bamako"}},"Indian":{"Reunion":{"value":"Reunion"},"Maldives":{"value":"Maldives"},"Christmas":{"value":"Christmas"},"Antananarivo":{"value":"Antananarivo"},"Chagos":{"value":"Chagos"},"Mahe":{"value":"Mahe"},"Mayotte":{"value":"Mayotte"},"Kerguelen":{"value":"Kerguelen"},"Mauritius":{"value":"Mauritius"},"Cocos":{"value":"Cocos"},"Comoro":{"value":"Comoro"}},"Antarctica":{"Macquarie":{"value":"Macquarie"},"Palmer":{"value":"Palmer"},"Casey":{"value":"Casey"},"Troll":{"value":"Troll"} +,"Vostok":{"value":"Vostok"},"DumontDUrville":{"value":"Dumont d’Urville"},"Syowa":{"value":"Syowa"},"Mawson":{"value":"Mawson"},"McMurdo":{"value":"McMurdo"},"Davis":{"value":"Davis"},"Rothera":{"value":"Rothera"}},"Australia":{"Broken_Hill":{"value":"Broken Hill"},"Darwin":{"value":"Darwin"},"Brisbane":{"value":"Brisbane"},"Currie":{"value":"Currie"},"Lord_Howe":{"value":"Lord Howe"},"Lindeman":{"value":"Lindeman"},"Adelaide":{"value":"Adelaide"},"Perth":{"value":"Perth"},"Eucla":{"value":"Eucla"},"Melbourne": +{"value":"Melbourne"},"Sydney":{"value":"Sydney"},"Hobart":{"value":"Hobart"}},"Arctic":{"Longyearbyen":{"value":"Longyearbyen"}},"Atlantic":{"St_Helena":{"value":"St. Helena"},"Reykjavik":{"value":"Reykjavik"},"Stanley":{"value":"Stanley"},"Madeira":{"value":"Madeira"},"Canary":{"value":"Canary"},"Faeroe":{"value":"Faroe"},"Bermuda":{"value":"Bermuda"},"Azores":{"value":"Azores"},"South_Georgia":{"value":"South Georgia"},"Cape_Verde":{"value":"Cape Verde"}}}}};},DCw=()=>{return {"value":"en_GB"};}; +let Fq4=()=>{return {"DE":{"value":4},"PT":{"value":4},"DK":{"value":4},"LT":{"value":4},"LU":{"value":4},"HU":{"value":4},"MC":{"value":4},"UM":{"value":1},"IE":{"value":4},"US":{"value":1},"EE":{"value":4},"AD":{"value":4},"IM":{"value":4},"MQ":{"value":4},"IS":{"value":4},"IT":{"value":4},"VA":{"value":4},"AN":{"value":4},"ES":{"value":4},"001":{"value":1},"AT":{"value":4},"RE":{"value":4},"VI":{"value":1},"AX":{"value":4},"JE":{"value":4},"NL":{"value":4},"NO":{"value":4},"BE":{"value":4},"FI":{"value": +4},"RU":{"value":4},"FJ":{"value":4},"BG":{"value":4},"FO":{"value":4},"FR":{"value":4},"SE":{"value":4},"SJ":{"value":4},"SK":{"value":4},"SM":{"value":4},"GB":{"value":4},"GF":{"value":4},"GG":{"value":4},"GI":{"value":4},"CH":{"value":4},"GP":{"value":4},"GR":{"value":4},"GU":{"value":1},"CZ":{"value":4},"PL":{"value":4},"LI":{"value":4}};},EJ_=()=>{return {"PR":{"value":1},"HK":{"value":1},"PT":{"value":1},"HN":{"value":1},"PY":{"value":1},"HR":{"value":2},"YE":{"value":1},"HU":{"value":2},"QA":{"value" +:7},"ID":{"value":1},"IE":{"value":2},"AD":{"value":2},"IL":{"value":1},"AE":{"value":7},"AF":{"value":7},"IN":{"value":1},"AG":{"value":1},"ZA":{"value":1},"AI":{"value":2},"IQ":{"value":7},"IR":{"value":7},"IS":{"value":2},"AL":{"value":2},"IT":{"value":2},"AM":{"value":2},"AN":{"value":2},"001":{"value":2},"AR":{"value":2},"AS":{"value":1},"AT":{"value":2},"RE":{"value":2},"AU":{"value":1},"AX":{"value":2},"AZ":{"value":2},"RO":{"value":2},"ZW":{"value":1},"BA":{"value":2},"RS":{"value":2},"BD":{"value": +1},"BE":{"value":2},"JM":{"value":1},"RU":{"value":2},"BG":{"value":2},"JO":{"value":7},"BH":{"value":7},"JP":{"value":1},"BM":{"value":2},"BN":{"value":2},"SA":{"value":1},"BR":{"value":1},"BS":{"value":1},"SD":{"value":7},"BT":{"value":1},"SE":{"value":2},"SG":{"value":1},"BW":{"value":1},"SI":{"value":2},"BY":{"value":2},"BZ":{"value":1},"SK":{"value":2},"KE":{"value":1},"SM":{"value":2},"KG":{"value":2},"KH":{"value":1},"CA":{"value":1},"SV":{"value":1},"CH":{"value":2},"SY":{"value":7},"KR":{"value":1} +,"CL":{"value":2},"CM":{"value":2},"CN":{"value":1},"CO":{"value":1},"KW":{"value":7},"CR":{"value":2},"KZ":{"value":2},"TH":{"value":1},"LA":{"value":1},"CY":{"value":2},"LB":{"value":2},"TJ":{"value":2},"CZ":{"value":2},"TM":{"value":2},"LI":{"value":2},"TR":{"value":2},"LK":{"value":2},"TT":{"value":1},"DE":{"value":2},"TW":{"value":1},"DJ":{"value":7},"DK":{"value":2},"LT":{"value":2},"DM":{"value":1},"LU":{"value":2},"LV":{"value":2},"DO":{"value":1},"UA":{"value":2},"LY":{"value":7},"DZ":{"value":7},"MC": +{"value":2},"MD":{"value":2},"ME":{"value":2},"UM":{"value":1},"MH":{"value":1},"EC":{"value":2},"MK":{"value":2},"US":{"value":1},"EE":{"value":2},"MM":{"value":1},"MN":{"value":2},"EG":{"value":7},"MO":{"value":1},"MQ":{"value":2},"UY":{"value":2},"UZ":{"value":2},"MT":{"value":1},"MV":{"value":6},"MX":{"value":1},"VA":{"value":2},"MY":{"value":2},"MZ":{"value":1},"ES":{"value":2},"ET":{"value":1},"VE":{"value":1},"GB-alt-variant":{"value":1},"VI":{"value":1},"VN":{"value":2},"NI":{"value":1},"NL":{"value" +:2},"NO":{"value":2},"NP":{"value":1},"FI":{"value":2},"FJ":{"value":2},"FO":{"value":2},"FR":{"value":2},"NZ":{"value":2},"GB":{"value":2},"WS":{"value":1},"GE":{"value":2},"OM":{"value":7},"GF":{"value":2},"GP":{"value":2},"GR":{"value":2},"GT":{"value":1},"GU":{"value":1},"PA":{"value":1},"XK":{"value":2},"PE":{"value":1},"PH":{"value":1},"PK":{"value":1},"PL":{"value":2}};},ET$=()=>{return {"en":{"value":"#,##0.###"},"root":{"value":"#,##0.###"}};},E5E=()=>{return {"en":{"groupingSeparator":44,"decimalSeparator" +:46,"listSeparator":59,"perMille":8240,"percent":37,"naN":"NaN","infinity":"∞","minusSign":45,"exponentSeparator":"E"},"root":{"groupingSeparator":44,"decimalSeparator":46,"listSeparator":59,"perMille":8240,"percent":37,"naN":"NaN","infinity":"∞","minusSign":45,"exponentSeparator":"E"}};},ECU=()=>{return {"en":{"UGS":{"name":"Ugandan Shilling (1966–1987)","symbol":"UGS"},"FJD":{"name":"Fijian Dollar","symbol":"FJD"},"MXN":{"name":"Mexican Peso","symbol":"MX$"},"STD":{"name":"São Tomé & Príncipe Dobra (1977–2017)", +"symbol":"STD"},"BRR":{"name":"Brazilian Cruzeiro (1993–1994)","symbol":"BRR"},"LVL":{"name":"Latvian Lats","symbol":"LVL"},"SCR":{"name":"Seychellois Rupee","symbol":"SCR"},"CDF":{"name":"Congolese Franc","symbol":"CDF"},"MXP":{"name":"Mexican Silver Peso (1861–1992)","symbol":"MXP"},"ZAL":{"name":"South African Rand (financial)","symbol":"ZAL"},"BBD":{"name":"Barbadian Dollar","symbol":"BBD"},"HNL":{"name":"Honduran Lempira","symbol":"HNL"},"UGX":{"name":"Ugandan Shilling","symbol":"UGX"},"LVR":{"name":"Latvian Ruble", +"symbol":"LVR"},"MXV":{"name":"Mexican Investment Unit","symbol":"MXV"},"ZAR":{"name":"South African Rand","symbol":"ZAR"},"BRZ":{"name":"Brazilian Cruzeiro (1942–1967)","symbol":"BRZ"},"STN":{"name":"São Tomé & Príncipe Dobra","symbol":"STN"},"CUC":{"name":"Cuban Convertible Peso","symbol":"CUC"},"BSD":{"name":"Bahamian Dollar","symbol":"BSD"},"SDD":{"name":"Sudanese Dinar (1992–2007)","symbol":"SDD"},"SDG":{"name":"Sudanese Pound","symbol":"SDG"},"ZRN":{"name":"Zairean New Zaire (1993–1998)","symbol":"ZRN"} +,"IQD":{"name":"Iraqi Dinar","symbol":"IQD"},"SDP":{"name":"Sudanese Pound (1957–1998)","symbol":"SDP"},"CUP":{"name":"Cuban Peso","symbol":"CUP"},"GMD":{"name":"Gambian Dalasi","symbol":"GMD"},"TWD":{"name":"New Taiwan Dollar","symbol":"NT$"},"RSD":{"name":"Serbian Dinar","symbol":"RSD"},"ZRZ":{"name":"Zairean Zaire (1971–1993)","symbol":"ZRZ"},"UYI":{"name":"Uruguayan Peso (Indexed Units)","symbol":"UYI"},"MYR":{"name":"Malaysian Ringgit","symbol":"MYR"},"FKP":{"name":"Falkland Islands Pound","symbol":"FKP"} +,"UYP":{"name":"Uruguayan Peso (1975–1993)","symbol":"UYP"},"XOF":{"name":"West African CFA Franc","symbol":"CFA"},"ARA":{"name":"Argentine Austral","symbol":"ARA"},"UYU":{"name":"Uruguayan Peso","symbol":"UYU"},"SUR":{"name":"Soviet Rouble","symbol":"SUR"},"UYW":{"name":"Uruguayan Nominal Wage Index Unit","symbol":"UYW"},"CVE":{"name":"Cape Verdean Escudo","symbol":"CVE"},"OMR":{"name":"Omani Rial","symbol":"OMR"},"KES":{"name":"Kenyan Shilling","symbol":"KES"},"SEK":{"name":"Swedish Krona","symbol":"SEK"} +,"MZE":{"name":"Mozambican Escudo","symbol":"MZE"},"ARL":{"name":"Argentine Peso Ley (1970–1983)","symbol":"ARL"},"ARM":{"name":"Argentine Peso (1881–1970)","symbol":"ARM"},"BTN":{"name":"Bhutanese Ngultrum","symbol":"BTN"},"GNF":{"name":"Guinean Franc","symbol":"GNF"},"ARP":{"name":"Argentine Peso (1983–1985)","symbol":"ARP"},"MZN":{"name":"Mozambican Metical","symbol":"MZN"},"MZM":{"name":"Mozambican Metical (1980–2006)","symbol":"MZM"},"SVC":{"name":"Salvadoran Colón","symbol":"SVC"},"ARS":{"name":"Argentine Peso", +"symbol":"ARS"},"QAR":{"name":"Qatari Rial","symbol":"QAR"},"IRR":{"name":"Iranian Rial","symbol":"IRR"},"NLG":{"name":"Dutch Guilder","symbol":"NLG"},"GNS":{"name":"Guinean Syli","symbol":"GNS"},"XPD":{"name":"Palladium","symbol":"XPD"},"THB":{"name":"Thai Baht","symbol":"THB"},"UZS":{"name":"Uzbekistani Som","symbol":"UZS"},"XPF":{"name":"CFP Franc","symbol":"CFPF"},"BDT":{"name":"Bangladeshi Taka","symbol":"BDT"},"LYD":{"name":"Libyan Dinar","symbol":"LYD"},"BUK":{"name":"Burmese Kyat","symbol":"BUK"},"KWD": +{"name":"Kuwaiti Dinar","symbol":"KWD"},"XPT":{"name":"Platinum","symbol":"XPT"},"RUB":{"name":"Russian Ruble","symbol":"RUB"},"ISK":{"name":"Icelandic Króna","symbol":"ISK"},"BEC":{"name":"Belgian Franc (convertible)","symbol":"BEC"},"ISJ":{"name":"Icelandic Króna (1918–1981)","symbol":"ISJ"},"BEF":{"name":"Belgian Franc","symbol":"BEF"},"MKD":{"name":"Macedonian Denar","symbol":"MKD"},"BEL":{"name":"Belgian Franc (financial)","symbol":"BEL"},"RUR":{"name":"Russian Ruble (1991–1998)","symbol":"RUR"},"DZD": +{"name":"Algerian Dinar","symbol":"DZD"},"PAB":{"name":"Panamanian Balboa","symbol":"PAB"},"MKN":{"name":"Macedonian Denar (1992–1993)","symbol":"MKN"},"SGD":{"name":"Singapore Dollar","symbol":"SGD"},"KGS":{"name":"Kyrgystani Som","symbol":"KGS"},"HRD":{"name":"Croatian Dinar","symbol":"HRD"},"XAF":{"name":"Central African CFA Franc","symbol":"FCFA"},"XAG":{"name":"Silver","symbol":"XAG"},"ATS":{"name":"Austrian Schilling","symbol":"ATS"},"CHF":{"name":"Swiss Franc","symbol":"CHF"},"HRK":{"name":"Croatian Kuna", +"symbol":"HRK"},"ITL":{"name":"Italian Lira","symbol":"ITL"},"CHE":{"name":"WIR Euro","symbol":"CHE"},"DJF":{"name":"Djiboutian Franc","symbol":"DJF"},"MLF":{"name":"Malian Franc","symbol":"MLF"},"XRE":{"name":"RINET Funds","symbol":"XRE"},"TZS":{"name":"Tanzanian Shilling","symbol":"TZS"},"ADP":{"name":"Andorran Peseta","symbol":"ADP"},"VND":{"name":"Vietnamese Dong","symbol":"₫"},"XAU":{"name":"Gold","symbol":"XAU"},"AUD":{"name":"Australian Dollar","symbol":"A$"},"CHW":{"name":"WIR Franc","symbol":"CHW"} +,"KHR":{"name":"Cambodian Riel","symbol":"KHR"},"IDR":{"name":"Indonesian Rupiah","symbol":"IDR"},"XBA":{"name":"European Composite Unit","symbol":"XBA"},"KYD":{"name":"Cayman Islands Dollar","symbol":"KYD"},"VNN":{"name":"Vietnamese Dong (1978–1985)","symbol":"VNN"},"XBC":{"name":"European Unit of Account (XBC)","symbol":"XBC"},"YDD":{"name":"Yemeni Dinar","symbol":"YDD"},"XBB":{"name":"European Monetary Unit","symbol":"XBB"},"BWP":{"name":"Botswanan Pula","symbol":"BWP"},"GQE":{"name":"Equatorial Guinean Ekwele", +"symbol":"GQE"},"SHP":{"name":"St. Helena Pound","symbol":"SHP"},"CYP":{"name":"Cypriot Pound","symbol":"CYP"},"XBD":{"name":"European Unit of Account (XBD)","symbol":"XBD"},"TJS":{"name":"Tajikistani Somoni","symbol":"TJS"},"TJR":{"name":"Tajikistani Ruble","symbol":"TJR"},"AED":{"name":"United Arab Emirates Dirham","symbol":"AED"},"RWF":{"name":"Rwandan Franc","symbol":"RWF"},"DKK":{"name":"Danish Krone","symbol":"DKK"},"BGL":{"name":"Bulgarian Hard Lev","symbol":"BGL"},"ZWD":{"name":"Zimbabwean Dollar (1980–2008)", +"symbol":"ZWD"},"BGN":{"name":"Bulgarian Lev","symbol":"BGN"},"BGM":{"name":"Bulgarian Socialist Lev","symbol":"BGM"},"YUD":{"name":"Yugoslavian Hard Dinar (1966–1990)","symbol":"YUD"},"MMK":{"name":"Myanmar Kyat","symbol":"MMK"},"BGO":{"name":"Bulgarian Lev (1879–1952)","symbol":"BGO"},"NOK":{"name":"Norwegian Krone","symbol":"NOK"},"SYP":{"name":"Syrian Pound","symbol":"SYP"},"ZWL":{"name":"Zimbabwean Dollar (2009)","symbol":"ZWL"},"YUM":{"name":"Yugoslavian New Dinar (1994–2002)","symbol":"YUM"},"LKR":{"name" +:"Sri Lankan Rupee","symbol":"LKR"},"YUN":{"name":"Yugoslavian Convertible Dinar (1990–1992)","symbol":"YUN"},"ZWR":{"name":"Zimbabwean Dollar (2008)","symbol":"ZWR"},"CZK":{"name":"Czech Koruna","symbol":"CZK"},"IEP":{"name":"Irish Pound","symbol":"IEP"},"YUR":{"name":"Yugoslavian Reformed Dinar (1992–1993)","symbol":"YUR"},"GRD":{"name":"Greek Drachma","symbol":"GRD"},"XCD":{"name":"East Caribbean Dollar","symbol":"EC$"},"HTG":{"name":"Haitian Gourde","symbol":"HTG"},"XSU":{"name":"Sucre","symbol":"XSU"}, +"AFA":{"name":"Afghan Afghani (1927–2002)","symbol":"AFA"},"BHD":{"name":"Bahraini Dinar","symbol":"BHD"},"SIT":{"name":"Slovenian Tolar","symbol":"SIT"},"PTE":{"name":"Portuguese Escudo","symbol":"PTE"},"KZT":{"name":"Kazakhstani Tenge","symbol":"KZT"},"SZL":{"name":"Swazi Lilangeni","symbol":"SZL"},"YER":{"name":"Yemeni Rial","symbol":"YER"},"AFN":{"name":"Afghan Afghani","symbol":"AFN"},"BYB":{"name":"Belarusian Ruble (1994–1999)","symbol":"BYB"},"RHD":{"name":"Rhodesian Dollar","symbol":"RHD"},"AWG":{"name" +:"Aruban Florin","symbol":"AWG"},"NPR":{"name":"Nepalese Rupee","symbol":"NPR"},"MNT":{"name":"Mongolian Tugrik","symbol":"MNT"},"GBP":{"name":"British Pound","symbol":"£"},"BYN":{"name":"Belarusian Ruble","symbol":"BYN"},"XTS":{"name":"Testing Currency Code","symbol":"XTS"},"HUF":{"name":"Hungarian Forint","symbol":"HUF"},"BYR":{"name":"Belarusian Ruble (2000–2016)","symbol":"BYR"},"BIF":{"name":"Burundian Franc","symbol":"BIF"},"XUA":{"name":"ADB Unit of Account","symbol":"XUA"},"XDR":{"name":"Special Drawing Rights", +"symbol":"XDR"},"BZD":{"name":"Belize Dollar","symbol":"BZD"},"MOP":{"name":"Macanese Pataca","symbol":"MOP"},"NAD":{"name":"Namibian Dollar","symbol":"NAD"},"SKK":{"name":"Slovak Koruna","symbol":"SKK"},"PEI":{"name":"Peruvian Inti","symbol":"PEI"},"TMM":{"name":"Turkmenistani Manat (1993–2009)","symbol":"TMM"},"PEN":{"name":"Peruvian Sol","symbol":"PEN"},"WST":{"name":"Samoan Tala","symbol":"WST"},"TMT":{"name":"Turkmenistani Manat","symbol":"TMT"},"FRF":{"name":"French Franc","symbol":"FRF"},"CLF":{"name" +:"Chilean Unit of Account (UF)","symbol":"CLF"},"CLE":{"name":"Chilean Escudo","symbol":"CLE"},"PES":{"name":"Peruvian Sol (1863–1965)","symbol":"PES"},"GTQ":{"name":"Guatemalan Quetzal","symbol":"GTQ"},"CLP":{"name":"Chilean Peso","symbol":"CLP"},"XEU":{"name":"European Currency Unit","symbol":"XEU"},"TND":{"name":"Tunisian Dinar","symbol":"TND"},"SLL":{"name":"Sierra Leonean Leone","symbol":"SLL"},"XFO":{"name":"French Gold Franc","symbol":"XFO"},"DOP":{"name":"Dominican Peso","symbol":"DOP"},"KMF":{"name" +:"Comorian Franc","symbol":"KMF"},"XFU":{"name":"French UIC-Franc","symbol":"XFU"},"GEK":{"name":"Georgian Kupon Larit","symbol":"GEK"},"GEL":{"name":"Georgian Lari","symbol":"GEL"},"MAD":{"name":"Moroccan Dirham","symbol":"MAD"},"MAF":{"name":"Moroccan Franc","symbol":"MAF"},"AZM":{"name":"Azerbaijani Manat (1993–2006)","symbol":"AZM"},"TOP":{"name":"Tongan Paʻanga","symbol":"TOP"},"AZN":{"name":"Azerbaijani Manat","symbol":"AZN"},"PGK":{"name":"Papua New Guinean Kina","symbol":"PGK"},"CNH":{"name":"Chinese Yuan (offshore)", +"symbol":"CNH"},"UAH":{"name":"Ukrainian Hryvnia","symbol":"UAH"},"UAK":{"name":"Ukrainian Karbovanets","symbol":"UAK"},"ERN":{"name":"Eritrean Nakfa","symbol":"ERN"},"TPE":{"name":"Timorese Escudo","symbol":"TPE"},"MRO":{"name":"Mauritanian Ouguiya (1973–2017)","symbol":"MRO"},"CNX":{"name":"Chinese People’s Bank Dollar","symbol":"CNX"},"CNY":{"name":"Chinese Yuan","symbol":"CN¥"},"MRU":{"name":"Mauritanian Ouguiya","symbol":"MRU"},"ESA":{"name":"Spanish Peseta (A account)","symbol":"ESA"},"GWE":{"name":"Portuguese Guinea Escudo", +"symbol":"GWE"},"ESB":{"name":"Spanish Peseta (convertible account)","symbol":"ESB"},"BMD":{"name":"Bermudan Dollar","symbol":"BMD"},"PHP":{"name":"Philippine Piso","symbol":"PHP"},"XXX":{"name":"Unknown Currency","symbol":"¤"},"PYG":{"name":"Paraguayan Guarani","symbol":"PYG"},"JMD":{"name":"Jamaican Dollar","symbol":"JMD"},"GWP":{"name":"Guinea-Bissau Peso","symbol":"GWP"},"ESP":{"name":"Spanish Peseta","symbol":"ESP"},"COP":{"name":"Colombian Peso","symbol":"COP"},"USD":{"name":"US Dollar","symbol":"$"}, +"COU":{"name":"Colombian Real Value Unit","symbol":"COU"},"MCF":{"name":"Monegasque Franc","symbol":"MCF"},"USN":{"name":"US Dollar (Next day)","symbol":"USN"},"ETB":{"name":"Ethiopian Birr","symbol":"ETB"},"VEB":{"name":"Venezuelan Bolívar (1871–2008)","symbol":"VEB"},"ECS":{"name":"Ecuadorian Sucre","symbol":"ECS"},"USS":{"name":"US Dollar (Same day)","symbol":"USS"},"SOS":{"name":"Somali Shilling","symbol":"SOS"},"VEF":{"name":"Venezuelan Bolívar (2008–2018)","symbol":"VEF"},"VUV":{"name":"Vanuatu Vatu", +"symbol":"VUV"},"LAK":{"name":"Laotian Kip","symbol":"LAK"},"BND":{"name":"Brunei Dollar","symbol":"BND"},"ECV":{"name":"Ecuadorian Unit of Constant Value","symbol":"ECV"},"ZMK":{"name":"Zambian Kwacha (1968–2012)","symbol":"ZMK"},"LRD":{"name":"Liberian Dollar","symbol":"LRD"},"ALK":{"name":"Albanian Lek (1946–1965)","symbol":"ALK"},"ALL":{"name":"Albanian Lek","symbol":"ALL"},"GHC":{"name":"Ghanaian Cedi (1979–2007)","symbol":"GHC"},"MTL":{"name":"Maltese Lira","symbol":"MTL"},"VES":{"name":"Venezuelan Bolívar", +"symbol":"VES"},"ZMW":{"name":"Zambian Kwacha","symbol":"ZMW"},"MTP":{"name":"Maltese Pound","symbol":"MTP"},"ILP":{"name":"Israeli Pound","symbol":"ILP"},"MDC":{"name":"Moldovan Cupon","symbol":"MDC"},"ILR":{"name":"Israeli Shekel (1980–1985)","symbol":"ILR"},"TRL":{"name":"Turkish Lira (1922–2005)","symbol":"TRL"},"ILS":{"name":"Israeli New Shekel","symbol":"₪"},"GHS":{"name":"Ghanaian Cedi","symbol":"GHS"},"GYD":{"name":"Guyanaese Dollar","symbol":"GYD"},"KPW":{"name":"North Korean Won","symbol":"KPW"},"BOB": +{"name":"Bolivian Boliviano","symbol":"BOB"},"MDL":{"name":"Moldovan Leu","symbol":"MDL"},"AMD":{"name":"Armenian Dram","symbol":"AMD"},"TRY":{"name":"Turkish Lira","symbol":"TRY"},"LBP":{"name":"Lebanese Pound","symbol":"LBP"},"BOL":{"name":"Bolivian Boliviano (1863–1963)","symbol":"BOL"},"JOD":{"name":"Jordanian Dinar","symbol":"JOD"},"HKD":{"name":"Hong Kong Dollar","symbol":"HK$"},"BOP":{"name":"Bolivian Peso","symbol":"BOP"},"EUR":{"name":"Euro","symbol":"€"},"LSL":{"name":"Lesotho Loti","symbol":"LSL"} +,"CAD":{"name":"Canadian Dollar","symbol":"CA$"},"BOV":{"name":"Bolivian Mvdol","symbol":"BOV"},"EEK":{"name":"Estonian Kroon","symbol":"EEK"},"MUR":{"name":"Mauritian Rupee","symbol":"MUR"},"ROL":{"name":"Romanian Leu (1952–2006)","symbol":"ROL"},"GIP":{"name":"Gibraltar Pound","symbol":"GIP"},"RON":{"name":"Romanian Leu","symbol":"RON"},"NGN":{"name":"Nigerian Naira","symbol":"NGN"},"CRC":{"name":"Costa Rican Colón","symbol":"CRC"},"PKR":{"name":"Pakistani Rupee","symbol":"PKR"},"ANG":{"name":"Netherlands Antillean Guilder", +"symbol":"ANG"},"KRH":{"name":"South Korean Hwan (1953–1962)","symbol":"KRH"},"SRD":{"name":"Surinamese Dollar","symbol":"SRD"},"LTL":{"name":"Lithuanian Litas","symbol":"LTL"},"SAR":{"name":"Saudi Riyal","symbol":"SAR"},"TTD":{"name":"Trinidad & Tobago Dollar","symbol":"TTD"},"MVP":{"name":"Maldivian Rupee (1947–1981)","symbol":"MVP"},"MVR":{"name":"Maldivian Rufiyaa","symbol":"MVR"},"KRO":{"name":"South Korean Won (1945–1953)","symbol":"KRO"},"SRG":{"name":"Surinamese Guilder","symbol":"SRG"},"DDM":{"name" +:"East German Mark","symbol":"DDM"},"INR":{"name":"Indian Rupee","symbol":"₹"},"LTT":{"name":"Lithuanian Talonas","symbol":"LTT"},"KRW":{"name":"South Korean Won","symbol":"₩"},"JPY":{"name":"Japanese Yen","symbol":"¥"},"AOA":{"name":"Angolan Kwanza","symbol":"AOA"},"PLN":{"name":"Polish Zloty","symbol":"PLN"},"SBD":{"name":"Solomon Islands Dollar","symbol":"SBD"},"CSD":{"name":"Serbian Dinar (2002–2006)","symbol":"CSD"},"CSK":{"name":"Czechoslovak Hard Koruna","symbol":"CSK"},"LUC":{"name":"Luxembourgian Convertible Franc", +"symbol":"LUC"},"LUF":{"name":"Luxembourgian Franc","symbol":"LUF"},"AOK":{"name":"Angolan Kwanza (1977–1991)","symbol":"AOK"},"PLZ":{"name":"Polish Zloty (1950–1995)","symbol":"PLZ"},"AON":{"name":"Angolan New Kwanza (1990–2000)","symbol":"AON"},"MWK":{"name":"Malawian Kwacha","symbol":"MWK"},"LUL":{"name":"Luxembourg Financial Franc","symbol":"LUL"},"AOR":{"name":"Angolan Readjusted Kwanza (1995–1999)","symbol":"AOR"},"BAD":{"name":"Bosnia-Herzegovina Dinar (1992–1994)","symbol":"BAD"},"MGA":{"name":"Malagasy Ariary", +"symbol":"MGA"},"NIC":{"name":"Nicaraguan Córdoba (1988–1991)","symbol":"NIC"},"FIM":{"name":"Finnish Markka","symbol":"FIM"},"DEM":{"name":"German Mark","symbol":"DEM"},"MGF":{"name":"Malagasy Franc","symbol":"MGF"},"BAM":{"name":"Bosnia-Herzegovina Convertible Mark","symbol":"BAM"},"BAN":{"name":"Bosnia-Herzegovina New Dinar (1994–1997)","symbol":"BAN"},"EGP":{"name":"Egyptian Pound","symbol":"EGP"},"SSP":{"name":"South Sudanese Pound","symbol":"SSP"},"BRC":{"name":"Brazilian Cruzado (1986–1989)","symbol" +:"BRC"},"BRB":{"name":"Brazilian New Cruzeiro (1967–1986)","symbol":"BRB"},"BRE":{"name":"Brazilian Cruzeiro (1990–1993)","symbol":"BRE"},"NIO":{"name":"Nicaraguan Córdoba","symbol":"NIO"},"NZD":{"name":"New Zealand Dollar","symbol":"NZ$"},"BRL":{"name":"Brazilian Real","symbol":"R$"},"BRN":{"name":"Brazilian New Cruzado (1989–1990)","symbol":"BRN"}},"root":{"UGS":{"name":"UGS","symbol":"UGS"},"FJD":{"name":"FJD","symbol":"FJD"},"MXN":{"name":"MXN","symbol":"MX$"},"STD":{"name":"STD","symbol":"STD"},"BRR":{"name" +:"BRR","symbol":"BRR"},"LVL":{"name":"LVL","symbol":"LVL"},"SCR":{"name":"SCR","symbol":"SCR"},"CDF":{"name":"CDF","symbol":"CDF"},"MXP":{"name":"MXP","symbol":"MXP"},"ZAL":{"name":"ZAL","symbol":"ZAL"},"BBD":{"name":"BBD","symbol":"BBD"},"HNL":{"name":"HNL","symbol":"HNL"},"UGX":{"name":"UGX","symbol":"UGX"},"LVR":{"name":"LVR","symbol":"LVR"},"MXV":{"name":"MXV","symbol":"MXV"},"ZAR":{"name":"ZAR","symbol":"ZAR"},"BRZ":{"name":"BRZ","symbol":"BRZ"},"STN":{"name":"STN","symbol":"STN"},"CUC":{"name":"CUC","symbol" +:"CUC"},"BSD":{"name":"BSD","symbol":"BSD"},"SDD":{"name":"SDD","symbol":"SDD"},"SDG":{"name":"SDG","symbol":"SDG"},"ZRN":{"name":"ZRN","symbol":"ZRN"},"IQD":{"name":"IQD","symbol":"IQD"},"SDP":{"name":"SDP","symbol":"SDP"},"CUP":{"name":"CUP","symbol":"CUP"},"GMD":{"name":"GMD","symbol":"GMD"},"TWD":{"name":"TWD","symbol":"NT$"},"RSD":{"name":"RSD","symbol":"RSD"},"ZRZ":{"name":"ZRZ","symbol":"ZRZ"},"UYI":{"name":"UYI","symbol":"UYI"},"MYR":{"name":"MYR","symbol":"MYR"},"FKP":{"name":"FKP","symbol":"FKP"}, +"UYP":{"name":"UYP","symbol":"UYP"},"XOF":{"name":"XOF","symbol":"CFA"},"ARA":{"name":"ARA","symbol":"ARA"},"UYU":{"name":"UYU","symbol":"UYU"},"SUR":{"name":"SUR","symbol":"SUR"},"UYW":{"name":"UYW","symbol":"UYW"},"CVE":{"name":"CVE","symbol":"CVE"},"OMR":{"name":"OMR","symbol":"OMR"},"KES":{"name":"KES","symbol":"KES"},"SEK":{"name":"SEK","symbol":"SEK"},"MZE":{"name":"MZE","symbol":"MZE"},"ARL":{"name":"ARL","symbol":"ARL"},"ARM":{"name":"ARM","symbol":"ARM"},"BTN":{"name":"BTN","symbol":"BTN"},"GNF":{"name" +:"GNF","symbol":"GNF"},"ARP":{"name":"ARP","symbol":"ARP"},"MZN":{"name":"MZN","symbol":"MZN"},"MZM":{"name":"MZM","symbol":"MZM"},"SVC":{"name":"SVC","symbol":"SVC"},"ARS":{"name":"ARS","symbol":"ARS"},"QAR":{"name":"QAR","symbol":"QAR"},"IRR":{"name":"IRR","symbol":"IRR"},"NLG":{"name":"NLG","symbol":"NLG"},"GNS":{"name":"GNS","symbol":"GNS"},"XPD":{"name":"XPD","symbol":"XPD"},"THB":{"name":"THB","symbol":"THB"},"UZS":{"name":"UZS","symbol":"UZS"},"XPF":{"name":"XPF","symbol":"CFPF"},"BDT":{"name":"BDT", +"symbol":"BDT"},"LYD":{"name":"LYD","symbol":"LYD"},"BUK":{"name":"BUK","symbol":"BUK"},"KWD":{"name":"KWD","symbol":"KWD"},"XPT":{"name":"XPT","symbol":"XPT"},"RUB":{"name":"RUB","symbol":"RUB"},"ISK":{"name":"ISK","symbol":"ISK"},"BEC":{"name":"BEC","symbol":"BEC"},"ISJ":{"name":"ISJ","symbol":"ISJ"},"BEF":{"name":"BEF","symbol":"BEF"},"MKD":{"name":"MKD","symbol":"MKD"},"BEL":{"name":"BEL","symbol":"BEL"},"RUR":{"name":"RUR","symbol":"RUR"},"DZD":{"name":"DZD","symbol":"DZD"},"PAB":{"name":"PAB","symbol" +:"PAB"},"MKN":{"name":"MKN","symbol":"MKN"},"SGD":{"name":"SGD","symbol":"SGD"},"KGS":{"name":"KGS","symbol":"KGS"},"HRD":{"name":"HRD","symbol":"HRD"},"XAF":{"name":"XAF","symbol":"FCFA"},"XAG":{"name":"XAG","symbol":"XAG"},"ATS":{"name":"ATS","symbol":"ATS"},"CHF":{"name":"CHF","symbol":"CHF"},"HRK":{"name":"HRK","symbol":"HRK"},"ITL":{"name":"ITL","symbol":"ITL"},"CHE":{"name":"CHE","symbol":"CHE"},"DJF":{"name":"DJF","symbol":"DJF"},"MLF":{"name":"MLF","symbol":"MLF"},"XRE":{"name":"XRE","symbol":"XRE"} +,"TZS":{"name":"TZS","symbol":"TZS"},"ADP":{"name":"ADP","symbol":"ADP"},"VND":{"name":"VND","symbol":"₫"},"XAU":{"name":"XAU","symbol":"XAU"},"AUD":{"name":"AUD","symbol":"A$"},"CHW":{"name":"CHW","symbol":"CHW"},"KHR":{"name":"KHR","symbol":"KHR"},"IDR":{"name":"IDR","symbol":"IDR"},"XBA":{"name":"XBA","symbol":"XBA"},"KYD":{"name":"KYD","symbol":"KYD"},"VNN":{"name":"VNN","symbol":"VNN"},"XBC":{"name":"XBC","symbol":"XBC"},"YDD":{"name":"YDD","symbol":"YDD"},"XBB":{"name":"XBB","symbol":"XBB"},"BWP":{"name" +:"BWP","symbol":"BWP"},"GQE":{"name":"GQE","symbol":"GQE"},"SHP":{"name":"SHP","symbol":"SHP"},"CYP":{"name":"CYP","symbol":"CYP"},"XBD":{"name":"XBD","symbol":"XBD"},"TJS":{"name":"TJS","symbol":"TJS"},"TJR":{"name":"TJR","symbol":"TJR"},"AED":{"name":"AED","symbol":"AED"},"RWF":{"name":"RWF","symbol":"RWF"},"DKK":{"name":"DKK","symbol":"DKK"},"BGL":{"name":"BGL","symbol":"BGL"},"ZWD":{"name":"ZWD","symbol":"ZWD"},"BGN":{"name":"BGN","symbol":"BGN"},"BGM":{"name":"BGM","symbol":"BGM"},"YUD":{"name":"YUD","symbol" +:"YUD"},"MMK":{"name":"MMK","symbol":"MMK"},"BGO":{"name":"BGO","symbol":"BGO"},"NOK":{"name":"NOK","symbol":"NOK"},"SYP":{"name":"SYP","symbol":"SYP"},"ZWL":{"name":"ZWL","symbol":"ZWL"},"YUM":{"name":"YUM","symbol":"YUM"},"LKR":{"name":"LKR","symbol":"LKR"},"YUN":{"name":"YUN","symbol":"YUN"},"ZWR":{"name":"ZWR","symbol":"ZWR"},"CZK":{"name":"CZK","symbol":"CZK"},"IEP":{"name":"IEP","symbol":"IEP"},"YUR":{"name":"YUR","symbol":"YUR"},"GRD":{"name":"GRD","symbol":"GRD"},"XCD":{"name":"XCD","symbol":"EC$"}, +"HTG":{"name":"HTG","symbol":"HTG"},"XSU":{"name":"XSU","symbol":"XSU"},"AFA":{"name":"AFA","symbol":"AFA"},"BHD":{"name":"BHD","symbol":"BHD"},"SIT":{"name":"SIT","symbol":"SIT"},"PTE":{"name":"PTE","symbol":"PTE"},"KZT":{"name":"KZT","symbol":"KZT"},"SZL":{"name":"SZL","symbol":"SZL"},"YER":{"name":"YER","symbol":"YER"},"AFN":{"name":"AFN","symbol":"AFN"},"BYB":{"name":"BYB","symbol":"BYB"},"RHD":{"name":"RHD","symbol":"RHD"},"AWG":{"name":"AWG","symbol":"AWG"},"NPR":{"name":"NPR","symbol":"NPR"},"MNT":{"name" +:"MNT","symbol":"MNT"},"GBP":{"name":"GBP","symbol":"£"},"BYN":{"name":"BYN","symbol":"BYN"},"XTS":{"name":"XTS","symbol":"XTS"},"HUF":{"name":"HUF","symbol":"HUF"},"BYR":{"name":"BYR","symbol":"BYR"},"BIF":{"name":"BIF","symbol":"BIF"},"XUA":{"name":"XUA","symbol":"XUA"},"XDR":{"name":"XDR","symbol":"XDR"},"BZD":{"name":"BZD","symbol":"BZD"},"MOP":{"name":"MOP","symbol":"MOP"},"NAD":{"name":"NAD","symbol":"NAD"},"SKK":{"name":"SKK","symbol":"SKK"},"PEI":{"name":"PEI","symbol":"PEI"},"TMM":{"name":"TMM","symbol" +:"TMM"},"PEN":{"name":"PEN","symbol":"PEN"},"WST":{"name":"WST","symbol":"WST"},"TMT":{"name":"TMT","symbol":"TMT"},"FRF":{"name":"FRF","symbol":"FRF"},"CLF":{"name":"CLF","symbol":"CLF"},"CLE":{"name":"CLE","symbol":"CLE"},"PES":{"name":"PES","symbol":"PES"},"GTQ":{"name":"GTQ","symbol":"GTQ"},"CLP":{"name":"CLP","symbol":"CLP"},"XEU":{"name":"XEU","symbol":"XEU"},"TND":{"name":"TND","symbol":"TND"},"SLL":{"name":"SLL","symbol":"SLL"},"XFO":{"name":"XFO","symbol":"XFO"},"DOP":{"name":"DOP","symbol":"DOP"}, +"KMF":{"name":"KMF","symbol":"KMF"},"XFU":{"name":"XFU","symbol":"XFU"},"GEK":{"name":"GEK","symbol":"GEK"},"GEL":{"name":"GEL","symbol":"GEL"},"MAD":{"name":"MAD","symbol":"MAD"},"MAF":{"name":"MAF","symbol":"MAF"},"AZM":{"name":"AZM","symbol":"AZM"},"TOP":{"name":"TOP","symbol":"TOP"},"AZN":{"name":"AZN","symbol":"AZN"},"PGK":{"name":"PGK","symbol":"PGK"},"CNH":{"name":"CNH","symbol":"CNH"},"UAH":{"name":"UAH","symbol":"UAH"},"UAK":{"name":"UAK","symbol":"UAK"},"ERN":{"name":"ERN","symbol":"ERN"},"TPE":{"name" +:"TPE","symbol":"TPE"},"MRO":{"name":"MRO","symbol":"MRO"},"CNX":{"name":"CNX","symbol":"CNX"},"CNY":{"name":"CNY","symbol":"CN¥"},"MRU":{"name":"MRU","symbol":"MRU"},"ESA":{"name":"ESA","symbol":"ESA"},"GWE":{"name":"GWE","symbol":"GWE"},"ESB":{"name":"ESB","symbol":"ESB"},"BMD":{"name":"BMD","symbol":"BMD"},"PHP":{"name":"PHP","symbol":"PHP"},"XXX":{"name":"XXX","symbol":"¤"},"PYG":{"name":"PYG","symbol":"PYG"},"JMD":{"name":"JMD","symbol":"JMD"},"GWP":{"name":"GWP","symbol":"GWP"},"ESP":{"name":"ESP","symbol" +:"ESP"},"COP":{"name":"COP","symbol":"COP"},"USD":{"name":"USD","symbol":"US$"},"COU":{"name":"COU","symbol":"COU"},"MCF":{"name":"MCF","symbol":"MCF"},"USN":{"name":"USN","symbol":"USN"},"ETB":{"name":"ETB","symbol":"ETB"},"VEB":{"name":"VEB","symbol":"VEB"},"ECS":{"name":"ECS","symbol":"ECS"},"USS":{"name":"USS","symbol":"USS"},"SOS":{"name":"SOS","symbol":"SOS"},"VEF":{"name":"VEF","symbol":"VEF"},"VUV":{"name":"VUV","symbol":"VUV"},"LAK":{"name":"LAK","symbol":"LAK"},"BND":{"name":"BND","symbol":"BND"}, +"ECV":{"name":"ECV","symbol":"ECV"},"ZMK":{"name":"ZMK","symbol":"ZMK"},"LRD":{"name":"LRD","symbol":"LRD"},"ALK":{"name":"ALK","symbol":"ALK"},"ALL":{"name":"ALL","symbol":"ALL"},"GHC":{"name":"GHC","symbol":"GHC"},"MTL":{"name":"MTL","symbol":"MTL"},"VES":{"name":"VES","symbol":"VES"},"ZMW":{"name":"ZMW","symbol":"ZMW"},"MTP":{"name":"MTP","symbol":"MTP"},"ILP":{"name":"ILP","symbol":"ILP"},"MDC":{"name":"MDC","symbol":"MDC"},"ILR":{"name":"ILR","symbol":"ILR"},"TRL":{"name":"TRL","symbol":"TRL"},"ILS":{"name" +:"ILS","symbol":"₪"},"GHS":{"name":"GHS","symbol":"GHS"},"GYD":{"name":"GYD","symbol":"GYD"},"KPW":{"name":"KPW","symbol":"KPW"},"BOB":{"name":"BOB","symbol":"BOB"},"MDL":{"name":"MDL","symbol":"MDL"},"AMD":{"name":"AMD","symbol":"AMD"},"TRY":{"name":"TRY","symbol":"TRY"},"LBP":{"name":"LBP","symbol":"LBP"},"BOL":{"name":"BOL","symbol":"BOL"},"JOD":{"name":"JOD","symbol":"JOD"},"HKD":{"name":"HKD","symbol":"HK$"},"BOP":{"name":"BOP","symbol":"BOP"},"EUR":{"name":"EUR","symbol":"€"},"LSL":{"name":"LSL","symbol" +:"LSL"},"CAD":{"name":"CAD","symbol":"CA$"},"BOV":{"name":"BOV","symbol":"BOV"},"EEK":{"name":"EEK","symbol":"EEK"},"MUR":{"name":"MUR","symbol":"MUR"},"ROL":{"name":"ROL","symbol":"ROL"},"GIP":{"name":"GIP","symbol":"GIP"},"RON":{"name":"RON","symbol":"RON"},"NGN":{"name":"NGN","symbol":"NGN"},"CRC":{"name":"CRC","symbol":"CRC"},"PKR":{"name":"PKR","symbol":"PKR"},"ANG":{"name":"ANG","symbol":"ANG"},"KRH":{"name":"KRH","symbol":"KRH"},"SRD":{"name":"SRD","symbol":"SRD"},"LTL":{"name":"LTL","symbol":"LTL"}, +"SAR":{"name":"SAR","symbol":"SAR"},"TTD":{"name":"TTD","symbol":"TTD"},"MVP":{"name":"MVP","symbol":"MVP"},"MVR":{"name":"MVR","symbol":"MVR"},"KRO":{"name":"KRO","symbol":"KRO"},"SRG":{"name":"SRG","symbol":"SRG"},"DDM":{"name":"DDM","symbol":"DDM"},"INR":{"name":"INR","symbol":"₹"},"LTT":{"name":"LTT","symbol":"LTT"},"KRW":{"name":"KRW","symbol":"₩"},"JPY":{"name":"JPY","symbol":"JP¥"},"AOA":{"name":"AOA","symbol":"AOA"},"PLN":{"name":"PLN","symbol":"PLN"},"SBD":{"name":"SBD","symbol":"SBD"},"CSD":{"name" +:"CSD","symbol":"CSD"},"CSK":{"name":"CSK","symbol":"CSK"},"LUC":{"name":"LUC","symbol":"LUC"},"LUF":{"name":"LUF","symbol":"LUF"},"AOK":{"name":"AOK","symbol":"AOK"},"PLZ":{"name":"PLZ","symbol":"PLZ"},"AON":{"name":"AON","symbol":"AON"},"MWK":{"name":"MWK","symbol":"MWK"},"LUL":{"name":"LUL","symbol":"LUL"},"AOR":{"name":"AOR","symbol":"AOR"},"BAD":{"name":"BAD","symbol":"BAD"},"MGA":{"name":"MGA","symbol":"MGA"},"NIC":{"name":"NIC","symbol":"NIC"},"FIM":{"name":"FIM","symbol":"FIM"},"DEM":{"name":"DEM","symbol" +:"DEM"},"MGF":{"name":"MGF","symbol":"MGF"},"BAM":{"name":"BAM","symbol":"BAM"},"BAN":{"name":"BAN","symbol":"BAN"},"EGP":{"name":"EGP","symbol":"EGP"},"SSP":{"name":"SSP","symbol":"SSP"},"BRC":{"name":"BRC","symbol":"BRC"},"BRB":{"name":"BRB","symbol":"BRB"},"BRE":{"name":"BRE","symbol":"BRE"},"NIO":{"name":"NIO","symbol":"NIO"},"NZD":{"name":"NZD","symbol":"NZ$"},"BRL":{"name":"BRL","symbol":"R$"},"BRN":{"name":"BRN","symbol":"BRN"}}};},EgL=N(),CTa=b=>{let result=[];for(let key in b){result.push(key);}return result;},C9z +=b=>{let c,d,e,f;c=b.length;d=K(Bi,c);e=d.data;f=0;while(f{BAT(a,Dy());},G$=()=>{let a=new AIb();Dgb(a);return a;},Cih=(a,b)=>{let c;BAT(a,D0T(b.dV()<6?11:b.dV()*2|0));c=b.dX();while(c.dY()){EQ(a,c.dZ());}},ABx=a=>{let b=new AIb();Cih(b,a);return b;},BAT=(a,b)=>{a.bW3=b;},Fy0=a=>{let b=new AIb();BAT(b,a);return b;},EQ=(a,b)=>{return a.bW3.dU(b,a)!==null?0:1;},B26=a=>{a.bW3.ep();},PT=(a,b)=>{return NB(a.bW3,b);},A6V=a=>{return ATn(a.bW3);},Ro=a=>{return (a.bW3.p3()).dX();},Fvw=(a,b)=>{return a.bW3.p4(b)===null?0:1;},AFU=a=>{return a.bW3.bHv;},C2S=N(0); +function CHf(){let a=this;OQ.call(a);a.b8G=0;a.bTz=null;a.cgK=0;a.c3r=0.0;a.cPo=0;} +let DBy=a=>{let b;b=CZt(16);a.b8G=0;a.bTz=K(BAF,b);a.c3r=0.75;CcR(a);},AOG=()=>{let a=new CHf();DBy(a);return a;},CZt=b=>{let c;if(b<1073741824){if(b){c=b-1|0;b=c|c>>1;b=b|b>>2;b=b|b>>4;b=b|b>>8;return (b|b>>16)+1|0;}return 16;}return 1073741824;},Djf=a=>{if(a.b8G>0){a.b8G=0;BFs(a.bTz,null);a.cgK=a.cgK+1|0;}},CcR=a=>{a.cPo=a.bTz.data.length*a.c3r|0;},CD_=(a,b)=>{let c;c=Bkl(a,b,Oz(b));if(c!==null)return c.bUe;return null;},B4e=(a,b,c)=>{let d,e,f;B$(c);d=Oz(b);e=Bkl(a,b,d);if(e===null){f=c.dT(b);c=Bkl(a,b,d);if +(c===null){(Cch(a,b,Cz2(a,d),d)).bUe=f;return f;}return c.bUe;}return e.bUe;},Bkl=(a,b,c)=>{let d,e,f,g,h,i,j;if(b!==null){a:while(true){d=a.bTz;e=d.data;f=c&(e.length-1|0);b:while(true){g=e[f];if(g===null)return null;h=g;c:{while(true){if(h===null)break c;if(!h.cTa&&h.cvZ==c){i=h.b2X;j=!(b!==i&&!b.cx(i))?1:0;if(d!==a.bTz)break b;if(j)break;}h=h.b9e;}if(!h.cTa)break a;continue b;}if(g===e[f])return null;}}return h;}b=a.bTz.data[0];while(b!==null&&b.b2X!==null){b=b.b9e;}return b;},CQc=(a,b,c)=>{let d,e,f;d=Oz(b);e +=Bkl(a,b,d);f=Cz2(a,d);if(e===null)e=Cch(a,b,f,d);b=e.bUe;e.bUe=c;return b;},Cch=(a,b,c,d)=>{let e,f,g,h,i,j,k;e=new BAF;f=null;e.b2X=b;e.bUe=f;e.cvZ=d;g=a.bTz.data;e.b9e=g[c];g[c]=e;a.cgK=a.cgK+1|0;c=a.b8G+1|0;a.b8G=c;if(c>a.cPo){c=g.length;c=CZt(!c?1:c<<1);h=K(BAF,c);g=h.data;d=0;i=c-1|0;while(true){j=a.bTz.data;if(d>=j.length)break;k=j[d];j[d]=null;while(k!==null){c=k.cvZ&i;b=k.b9e;k.b9e=g[c];g[c]=k;k=b;}d=d+1|0;}a.bTz=h;CcR(a);}return e;},Fvi=a=>{return a.b8G;},Cz2=(a,b)=>{return (b&2147483647)%a.bTz.data.length +|0;}; +function Bka(){let a=this;F.call(a);a.bQ4=0;a.bOH=0;} +let B5G=null,Cni=null,AVe=()=>{AVe=Z(Bka);ELO();},Eht=(a,b,c)=>{AVe();a.bQ4=b;a.bOH=c;},B4m=(a,b)=>{let c=new Bka();Eht(c,a,b);return c;},BU2=(b,c)=>{let d,e;AVe();if(b!=(-1)){if(b>=0&&b<64)return B4m(b,c);d=new Bt;e=new S;T(e);BE(H(e,E(899)),b);Bp(d,Q(e));J(d);}return !c?B5G:Cni;},BtA=a=>{return a.bQ4==(-1)?0:1;},EDF=a=>{let b,c,d,e;if(BtA(a)){b=a.bQ4;c=!a.bOH?E(14):E(900);d=new S;T(d);e=H(d,E(901));BE(e,b);Bb(e,41);H(e,c);return Q(d);}return !a.bOH?E(14):E(900);},ELO=()=>{B5G=B4m((-1),0);Cni=B4m((-1),1);}; +function ANj(){let a=this;BJ0.call(a);a.bMW=null;a.bLe=null;} +let DBY=(a,b,c)=>{a.bMW=b;a.bLe=c;},CXa=(a,b)=>{let c=new ANj();DBY(c,a,b);return c;},A9B=b=>{return CG9(b);},P2=a=>{let b;b=new B_K;b.b4u=a;b.bRX=Cu6(b);b.cjk=(-1);return b;},Ba3=a=>{let b,c,d,e,f;b=0;c=a.bLe.data;d=c.length;e=0;while(e>>1|0)+(f&1431655765)|0;f=((f&(-858993460))>>>2|0)+(f&858993459)|0;f=((f&1886417008)>>>4|0)+(f&117901063)|0;f=((f&251662080)>>>8|0)+(f&983055)|0;b=b+(((f&2031616)>>>16|0)+(f&31)|0)|0;e=e+1|0;}return b;},CBb=(a,b)=>{let c,d,e,f,g,h;if(b!== +a){if(b instanceof ANj){c=b;if(a.bMW===c.bMW){a:{d=a.bLe;e=c.bLe;if(d===e)f=1;else{b:{if(d!==null&&e!==null){d=d.data;e=e.data;f=d.length;if(f==e.length)break b;}f=0;break a;}g=0;c:{d:{while(true){if(g>=f)break d;h=g+0|0;if(d[h]!=e[h])break;g=g+1|0;}break c;}g=(-1);}f=g>=0?0:1;}}return f;}return !(!Ba3(a)&&!Ba3(c))?0:1;}return BG_(a,b);}return 1;},OS=(a,b)=>{let c,d,e;if(AK4(a.bMW,b)){c=b.bGO;d=c/32|0;e=1<<(c%32|0);return !(a.bLe.data[d]&e)?0:1;}return 0;},C07=(a,b)=>{let c,d,e,f;if(AK4(a.bMW,b)){c=b.bGO;d= +c/32|0;e=1<<(c%32|0);f=a.bLe.data;if(f[d]&e){f[d]=f[d]&(e^(-1));return 1;}return 0;}return 0;},Efz=(a,b)=>{let c,d,e;if(b instanceof ANj){c=b;if(a.bMW===c.bMW){d=0;while(true){e=a.bLe.data;if(d>=e.length)break;if((e[d]|c.bLe.data[d])!=e[d])return 0;d=d+1|0;}return 1;}}return BQo(a,b);},CLl=(a,b)=>{let c,d,e,f,g,h;if(b instanceof ANj){c=b;if(a.bMW===c.bMW){d=0;e=0;while(true){f=a.bLe.data;if(e>=f.length)break;g=f[e];h=c.bLe.data;if((g|h[e])!=f[e]){d=1;f[e]=f[e]|h[e];}e=e+1|0;}return d;}}return Ea(a,b);},OJ=(a, +b)=>{let c,d,e,f,g;b=b;c=Dg(b);if(c!==a.bMW&&AZk(c)!==a.bMW){b=new Xt;X(b);J(b);}d=b.bGO;e=d/32|0;f=1<<(d%32|0);g=a.bLe.data;if(g[e]&f)f=0;else{g[e]=g[e]|f;f=1;}return f;},BkN=N(DR),Bow=N(),M1=N(0),IT=N(Er),EMs=a=>{let b;b=K(AFj,1);b.data[0]=BAm(a);return Bv(b);}; +function Qf(){let a=this;IT.call(a);a.bM9=null;a.bNd=null;a.cpu=null;a.cIm=null;a.cqa=null;a.cXo=0;} +let ATF=(a,b,c,d,e,f,g)=>{let h;a.cpu=e;a.cIm=f;h=B0L(b);if(g)h=Exo(h);a.cXo=g;a.bNd=h;a.bM9=c;a.cqa=d;},Dy2=(a,b,c,d,e,f)=>{let g=new Qf();ATF(g,a,b,c,d,e,f);return g;},Exo=b=>{let c,d,e,f,g,h,i,j,k,l,m,n,$$je;c=b.bGI.length;d=null;e=0;while(e=c){j=h;k=g;}else if(Bn(b,i)!=35){j=h;k=g;}else{k=i+1|0;i=k;c:{while(true){l=C5(i,c);if(l>=0)break c;m=Bn(b,i);if(m<48)break c;if(m>57)break;i=i+1|0;}}if(i<=k){j=h;k=g;}else if(l>=0){j=h;k=g;}else if(Bn(b,i)!=59){j= +h;k=g;}else{d:{try{l=CZ(B_(b,k,i));j=new Bi;h=j;A0i(j,Wr(l));k=(i+1|0)-e|0;g=k;break b;}catch($$e){$$je=P($$e);if($$je instanceof Ex){break d;}else{throw $$e;}}}j=h;k=g;}}}else if(f!=60){if(f!=126){if(f!=92){j=h;k=g;break a;}k=e+1|0;if(k>=c){j=h;k=g;break a;}if(Bn(b,k)==116){j=E(401);k=2;break a;}j=h;k=g;break a;}if((e+7|0)>c){j=h;k=g;break a;}if(Bn(b,e+1|0)!=64){j=h;k=g;break a;}if(Bn(b,e+2|0)!=115){j=h;k=g;break a;}if(Bn(b,e+3|0)!=116){j=h;k=g;break a;}if(Bn(b,e+4|0)!=97){j=h;k=g;break a;}if(Bn(b,e+5|0)!= +114){j=h;k=g;break a;}if(Bn(b,e+6|0)==116){j=E(91);k=7;break a;}j=h;k=g;}else if((e+6|0)>=c){j=h;k=g;}else if(Bn(b,e+1|0)!=85){j=h;k=g;}else if(Bn(b,e+2|0)!=43){j=h;k=g;}else{n=e+3|0;l=n;while(true){m=C5(l,c);if(m>=0)break;if((l-n|0)>=5)break;e:{f:{k=Bn(b,l);if(!(k>=48&&k<=57)&&!(k>=97&&k<=102)){if(k<65)break f;if(k>70)break f;}k=1;break e;}k=0;}if(!k)break;l=l+1|0;}if((l-n|0)<4){j=h;k=g;}else if(m>=0){j=h;k=g;}else if(Bn(b,l)!=62){j=h;k=g;}else{k=Y5(B_(b,n,l),16);j=Ue(Wr(k));k=(l+1|0)-e|0;}}}if(j===null){if +(d!==null)Bb(d,f);e=e+1|0;}else{if(d===null){d=new S;JP(d,c);Y7(d,b,0,e);}L(d,j);e=e+k|0;}}if(d!==null)b=Q(d);return b;},EcO=(a,b)=>{let c,d,e,f,g;c=b.gS(Gk(a.bM9),a.bNd);d=new ClX;d.c8X=c;Bmo(d);d=new ClV;d.dbe=a;d.dbd=c;Bmo(d);e=c.bGF;if(e<10.0)e=10.0;if(!(!(IZ(a.bNd,E(401))==(-1)&&Eq(a.bNd,57617)==(-1))&&!b.gQ(E(902))))f=c.bGE;else{d=AVX(a.bNd,E(903),1);g=Ccz(a,b);f=0.0;while(JO(d)){c=H5(d);f=!(!Bj(c,E(401))&&!Bj(c,E(904)))?f+g-f%g:f+(b.gS(Gk(a.bM9),c)).bGE;}}return Cl(f+a.cpu.qg(b)+a.cIm.qg(b),e);},B6I= +(a,b)=>{let c,d;c=b.gS(Gk(a.bM9),a.bNd);d=b.jm(Gk(a.bM9),a.bNd);return c.bGF-d;},EEu=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=a.cqa;if(c!==null)b.hF(c);if(b.gQ(E(209)))b.hP(a);else{d=CUN(a.bM9,b);c=a.cpu;AGo();if(c!==ASy)b=b.h2(BM(c.qg(b.hE())));e=AVX(a.bNd,E(903),1);c=(b.hE()).gS(Gk(a.bM9),a.bNd);f=(b.hE()).jm(Gk(a.bM9),a.bNd);g=c.bGF-f;h=0.0;if(JO(e)){i=Ccz(a,b.hE());while(JO(e)){j=H5(e);if(!(!Bj(j,E(401))&&!Bj(j,E(904))))h=h+i-h%i;else{k=(b.hE()).gS(Gk(a.bM9),j);l=N1(j,d);(b.h2(Bh(h,g))).hP(l);h=h+k.bGE;}}}}if(a.cqa +!==null)b.hG();},Ccz=(a,b)=>{let c,d,e;c=Gk(a.bM9);d=a.bM9.bOi;e=(b.gS(c,!(d>=1&&d<7)?E(905):B_(E(905),0,d))).bGE;if(e===0.0)return ZM(Gk(a.bM9))*4.0;return e;},Fcx=a=>{let b,c,d,e,f;b=Bk();c=new S;T(c);d=0;while(d0)CD3(a,b,Q(c));return b;},CD3=(a,b,c)=>{let d,e;d=BAm(Dy2(c,a.bM9,a.cqa,a.cpu,a.cIm,a.cXo));e=d.bNp;P_();if(!(e!==ZU&&e!==AOj)){c=BUx();U(b, +c);}b=b;U(b,d);d=d.bNp;if(!(d!==ZU&&d!==AOj))U(b,BUx());},DtS=(a,b)=>{return B5j(a.bM9);},Ee8=a=>{let b,c,d;b=a.bNd;c=BY(a.bM9);d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},EKK=a=>{Nx();return BX2;}; +function R6(){let a=this;Io.call(a);a.cH2=0;a.bS2=0;} +let Ba4=null,AOP=()=>{AOP=Z(R6);EPd();},AU0=(a,b)=>{AOP();Kg(a);a.bS2=b;},DUw=a=>{let b=new R6();AU0(b,a);return b;},E3M=(a,b,c,d)=>{let e,f;e=Bkp(d,a.bS2);BGe(d,a.bS2,b);f=a.bGX.pN(b,c,d);if(f<0)BGe(d,a.bS2,e);return f;},FyR=a=>{return a.bS2;},D3$=a=>{return E(906);},EvD=(a,b)=>{return 0;},EPd=()=>{let b;b=new CFj;Kg(b);Ba4=b;}; +function Cek(){let a=this;F.call(a);a.bI4=null;a.b3N=0;a.bW8=0;a.c4i=0;a.cBr=0;a.bJp=0;a.bHf=0;a.cUF=null;a.c6m=0;a.bXf=null;a.bYK=null;a.bHK=0;a.ceC=0;a.bO8=0;a.cce=0;a.bLk=null;} +let DNw=null,Fi9=null,Epp=0,CkL=(a,b)=>{if(b>0&&b<3)a.bW8=b;if(b==1){a.bHf=a.bJp;a.bYK=a.bXf;a.bHK=a.cce;a.cce=a.bO8;AQ$(a);}},A3B=a=>{return a.bXf===null?0:1;},BB1=a=>{return a.bYK===null?0:1;},Fn=a=>{AQ$(a);return a.cBr;},AUL=a=>{let b;b=a.bXf;AQ$(a);return b;},AQ$=a=>{let b,c,d,e,f,g,h,i,$$je;a.cBr=a.bJp;a.bJp=a.bHf;a.bXf=a.bYK;a.bO8=a.cce;a.cce=a.bHK;a:{while(true){b=0;c=a.bHK>=a.bI4.data.length?0:BEr(a);a.bHf=c;a.bYK=null;if(a.bW8==4){if(c!=92)return;c=a.bHK;d=a.bI4.data;c=c>=d.length?0:d[Je(a)];a.bHf= +c;switch(c){case 69:break;default:a.bHf=92;a.bHK=a.ceC;return;}a.bW8=a.c4i;a.bHf=a.bHK>(a.bI4.data.length-2|0)?0:BEr(a);}b:{c=a.bHf;if(c==92){c=a.bHK>=(a.bI4.data.length-2|0)?(-1):BEr(a);c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{o:{p:{q:{r:{s:{t:{u:{v:{a.bHf=c;switch(c){case -1:J(J_(E(14),AHh(a),a.bHK));case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 118:break;case 48:break v;case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:break f;case 65:break u;case 66:break t;case 67:case 69:case 70:case 72:case 73:case 74:case 75:case 76:case 77:case 78:case 79:case 82:case 84:case 85:case 86:case 88:case 89:case 103:case 104:case 105:case 106:case 107:case 108:case 109:case 111:case 113:case 121:J(J_(E(14), +AHh(a),a.bHK));case 68:case 83:case 87:case 100:case 115:case 119:break e;case 71:break s;case 80:case 112:break c;case 81:break g;case 90:break r;case 97:break q;case 98:break p;case 99:break d;case 101:break o;case 102:break n;case 110:break m;case 114:break l;case 116:break k;case 117:break i;case 120:break h;case 122:break j;default:}break b;}a.bHf=DCI(a);break b;}a.bHf=(-2147483583);break b;}a.bHf=(-2147483582);break b;}a.bHf=(-2147483577);break b;}a.bHf=(-2147483558);break b;}a.bHf=7;break b;}a.bHf=(-2147483550);break b;}a.bHf +=27;break b;}a.bHf=12;break b;}a.bHf=10;break b;}a.bHf=13;break b;}a.bHf=9;break b;}a.bHf=(-2147483526);break b;}a.bHf=CGz(a,4);break b;}a.bHf=CGz(a,2);break b;}a.c4i=a.bW8;a.bW8=4;b=1;break b;}if(a.bW8!=1)break b;a.bHf=(-2147483648)|c;break b;}a.bYK=CSS(QV(a.bI4,a.ceC,1),0);a.bHf=0;break b;}c=a.bHK;d=a.bI4.data;if(c>=(d.length-2|0))J(J_(E(14),AHh(a),a.bHK));a.bHf=d[Je(a)]&31;break b;}e=ETY(a);f=0;if(a.bHf==80)f=1;try{a.bYK=CSS(e,f);}catch($$e){$$je=P($$e);if($$je instanceof BOe){J(J_(E(14),AHh(a),a.bHK));} +else{throw $$e;}}a.bHf=0;}else{g=a.bW8;if(g==1){w:{x:{y:{z:{ba:{bb:{bc:{bd:{be:{bf:{switch(c){case 36:break bf;case 40:break w;case 41:break be;case 42:case 43:case 63:break x;case 46:break bd;case 91:break z;case 93:break y;case 94:break bc;case 123:break bb;case 124:break ba;default:}break b;}a.bHf=(-536870876);break b;}a.bHf=(-536870871);break b;}a.bHf=(-536870866);break b;}a.bHf=(-536870818);break b;}a.bYK=DGH(a,c);break b;}a.bHf=(-536870788);break b;}a.bHf=(-536870821);CkL(a,2);break b;}if(g!=2)break b;a.bHf +=(-536870819);break b;}g=a.bHK;d=a.bI4.data;h=g>=d.length?42:d[g];bg:{bh:{switch(h){case 43:break bh;case 63:break bg;default:}a.bHf=c|(-536870912);break b;}a.bHf=c|(-2147483648);Je(a);break b;}a.bHf=c|(-1073741824);Je(a);break b;}if(a.bI4.data[a.bHK]!=63)a.bHf=(-2147483608);else{Je(a);c=a.bI4.data[a.bHK];g=0;i=null;while(true){bi:{if(!g){bj:{bk:{bl:{bm:{switch(c){case 33:break;case 60:break bk;case 61:break bm;case 62:break bl;default:break bj;}a.bHf=(-268435416);Je(a);break bi;}a.bHf=(-536870872);Je(a);break bi;}a.bHf +=(-33554392);Je(a);break bi;}Je(a);c=a.bI4.data[a.bHK];g=1;break bi;}h=DXD(a);a.bHf=h;if(h<256){a.b3N=h;h=h<<16;a.bHf=h;a.bHf=(-1073741784)|h;}else{h=h&255;a.bHf=h;a.b3N=h;h=h<<16;a.bHf=h;a.bHf=(-16777176)|h;}}else{bn:{bo:{bp:{switch(c){case 33:break;case 61:break bp;case 62:break bo;default:break bn;}g=0;a.bHf=(-67108824);Je(a);break bi;}g=0;a.bHf=(-134217688);Je(a);break bi;}if(i===null)J(J_(E(14),AHh(a),a.bHK));a.cUF=CH(i);Je(a);i=null;g=0;a.bHf=(-2130706392);break bi;}bq:{if(!(c>=65&&c<=90)){if(c<97)break bq;if +(c>122)break bq;}if(i===null)i=CR();Et(i,c);Je(a);c=a.bI4.data[a.bHK];break bi;}if(c<48)break a;if(c>57)break a;if(i===null)J(J_(E(907),AHh(a),a.bHK));Et(i,c);Je(a);c=a.bI4.data[a.bHK];}}if(!g)break;}}}else if(g==2){br:{bs:{bt:{bu:{bv:{switch(c){case 38:break bv;case 45:break bu;case 91:break bt;case 93:break bs;case 94:break br;default:}break b;}a.bHf=(-536870874);break b;}a.bHf=(-536870867);break b;}a.bHf=(-536870821);break b;}a.bHf=(-536870819);break b;}a.bHf=(-536870818);}}}if(b)continue;else break;}return;}J(J_(E(14), +AHh(a),a.bHK));},ETY=a=>{let b,c,d,e,f,g;a:{b=new S;JP(b,10);c=a.bHK;d=a.bI4;e=d.data;if(c<(e.length-2|0)){if(e[c]==123){Je(a);c=0;b:{c:{while(true){f=a.bHK;d=a.bI4.data;if(f>=(d.length-2|0))break;c=d[Je(a)];if(c==125)break c;Bb(b,c);}break b;}}if(c==125)break a;J(J_(E(14),a.bLk,a.bHK));}b=QV(d,Je(a),1);g=new S;T(g);H(H(g,E(908)),b);return Q(g);}}if(b.bG4){g=Q(b);if(g.bGI.length!=1){d:{e:{if(g.bGI.length>3){if(BO(g,E(908)))break e;if(BO(g,E(909)))break e;}break d;}g=CC(g,2);}return g;}b=new S;T(b);H(H(b,E(908)), +g);return Q(b);}J(J_(E(14),a.bLk,a.bHK));},DGH=(a,b)=>{let c,d,e,f,g,$$je;c=new S;JP(c,4);d=(-1);e=2147483647;a:{b:{while(true){f=a.bHK;g=a.bI4.data;if(f>=g.length)break a;b=g[Je(a)];if(b==125)break b;if(!(b==44&&d<0)){Bb(c,b&65535);continue;}try{d=Y5(CH(c),10);EIC(c,0,AMP(c));continue;}catch($$e){$$je=P($$e);if($$je instanceof Ex){break;}else{throw $$e;}}}J(J_(E(14),a.bLk,a.bHK));}}if(b==125){c:{if(c.bG4<=0){if(d>=0)break c;J(J_(E(14),a.bLk,a.bHK));}d:{e:{try{e=Y5(CH(c),10);if(d>=0)break d;d=e;break d;}catch +($$e){$$je=P($$e);if($$je instanceof Ex){break e;}else{throw $$e;}}}J(J_(E(14),a.bLk,a.bHK));}}if((d|e|(e-d|0))>=0){b=a.bHK;g=a.bI4.data;f=b>=g.length?42:g[b];f:{g:{h:{switch(f){case 43:break h;case 63:break g;default:}a.bHf=(-536870789);break f;}a.bHf=(-2147483525);Je(a);break f;}a.bHf=(-1073741701);Je(a);}c=new Cjg;c.bZO=d;c.bZN=e;return c;}J(J_(E(14),a.bLk,a.bHK));}J(J_(E(14),a.bLk,a.bHK));},AHh=a=>{return a.bLk;},Wq=a=>{return !(!a.bJp&&!a.bHf&&a.bHK==a.c6m&&!A3B(a))?0:1;},Bgf=b=>{return b<0?0:1;},AKI=a=> +{return !(!Wq(a)&&!A3B(a)&&Bgf(a.bJp))?0:1;},Ckn=a=>{let b;b=a.bJp;return !(b<=56319&&b>=55296)?0:1;},Cqm=a=>{let b;b=a.bJp;return !(b<=57343&&b>=56320)?0:1;},BDy=b=>{return !(b<=56319&&b>=55296)?0:1;},BKS=b=>{return !(b<=57343&&b>=56320)?0:1;},CGz=(a,b)=>{let c,d,e,f,$$je;c=new S;JP(c,b);d=a.bI4.data.length-2|0;e=0;while(true){f=C5(e,b);if(f>=0)break;if(a.bHK>=d)break;Bb(c,a.bI4.data[Je(a)]);e=e+1|0;}a:{if(!f){try{b=Y5(CH(c),16);}catch($$e){$$je=P($$e);if($$je instanceof Ex){break a;}else{throw $$e;}}return b;}}J(J_(E(14), +a.bLk,a.bHK));},DCI=a=>{let b,c,d,e,f,g;b=3;c=1;d=a.bI4.data;e=d.length-2|0;f=AM$(d[a.bHK],8);switch(f){case -1:break;default:if(f>3)b=2;Je(a);a:{while(true){if(c>=b)break a;g=a.bHK;if(g>=e)break a;g=AM$(a.bI4.data[g],8);if(g<0)break;f=(f*8|0)+g|0;Je(a);c=c+1|0;}}return f;}J(J_(E(14),a.bLk,a.bHK));},DXD=a=>{let b,c,d,e;b=1;c=a.b3N;a:while(true){d=a.bHK;e=a.bI4.data;if(d>=e.length)J(J_(E(14),a.bLk,d));b:{c:{d:{e:{f:{g:{h:{i:{switch(e[d]){case 41:Je(a);return c|256;case 45:break i;case 58:break a;case 100:break h;case 105:break g;case 109:break f;case 115:break e;case 117:break d;case 120:break c;default:}break b;}if +(!b)J(J_(E(14),a.bLk,d));b=0;break b;}c=b?c|1:(c^1)&c;break b;}c=b?c|2:(c^2)&c;break b;}c=b?c|8:(c^8)&c;break b;}c=b?c|32:(c^32)&c;break b;}c=b?c|64:(c^64)&c;break b;}c=b?c|4:(c^4)&c;}Je(a);}Je(a);return c;},Je=a=>{let b,c,d,e,f;b=a.bHK;a.ceC=b;if(!(a.b3N&4))a.bHK=b+1|0;else{c=a.bI4.data.length-2|0;a.bHK=b+1|0;a:while(true){d=a.bHK;if(d=c)break;e=a.bI4.data;if(e[d]!=35)break;a.bHK=d+1|0;while(true){f=a.bHK;if(f>=c)continue a;b=e[f];if(!(b!=10&&b!= +13&&b!=133&&(b|1)!=8233)?1:0)continue a;a.bHK=f+1|0;}}}return a.ceC;},C7b=b=>{return DNw.qz(b);},BEr=a=>{let b,c,d,e;b=a.bI4.data[Je(a)];if(Pl(b)){c=a.ceC+1|0;d=a.bI4.data;if(c{return a.bO8;}; +function AQT(){let a=this;Bt.call(a);a.cMi=null;a.cxa=null;a.ch3=0;} +let ByI=(a,b,c,d)=>{X(a);a.ch3=(-1);a.cMi=b;a.cxa=c;a.ch3=d;},J_=(a,b,c)=>{let d=new AQT();ByI(d,a,b,c);return d;},ErQ=a=>{let b,c,d,e,f,g,h;b=E(14);c=a.ch3;if(c>=1){d=Fd(c);Ce2(d,32);b=Ue(d);}e=a.cMi;f=a.cxa;if(!(f!==null&&f.bGI.length))b=E(14);else{g=a.ch3;f=a.cxa;h=new S;T(h);BE(h,g);H(H(H(H(h,E(50)),f),E(50)),b);b=Q(h);}f=new S;T(f);H(H(f,e),b);return Q(f);},A0d=N(Bx),AEw=null,AUA=null,E2a=null,ABZ=()=>{ABZ=Z(A0d);Es3();},Ekc=(a,b,c)=>{ABZ();Ct(a,b,c);},CPT=(a,b)=>{let c=new A0d();Ekc(c,a,b);return c;},Es3 +=()=>{let b,c,d;AEw=CPT(E(883),0);b=CPT(E(910),1);AUA=b;c=K(A0d,2);d=c.data;d[0]=AEw;d[1]=b;E2a=c;}; +function BpY(){F.call(this);this.bV$=0;} +let CL9=null,CDF=null,CPJ=null,CIz=null,C8Q=null,Dmi=null,CFQ=null,CAM=null,Dqi=null,ByJ=()=>{ByJ=Z(BpY);En1();},DzX=(a,b)=>{ByJ();a.bV$=b;},XE=a=>{let b=new BpY();DzX(b,a);return b;},ART=b=>{let c;ByJ();c=b<100?100:b>900?900:((b+50|0)/100|0)*100|0;switch(c){case 100:break;case 200:return CDF;case 300:return CPJ;case 400:return CIz;case 500:return C8Q;case 600:return Dmi;case 700:return CFQ;case 800:return CAM;case 900:return Dqi;default:return XE(c);}return CL9;},EC5=a=>{return a.bV$;},Dk_=(a,b)=>{if(a!==b) +{if(b instanceof BpY)return a.bV$!=b.bV$?0:1;return 0;}return 1;},En1=()=>{CL9=XE(100);CDF=XE(200);CPJ=XE(300);CIz=XE(400);C8Q=XE(500);Dmi=XE(600);CFQ=XE(700);CAM=XE(800);Dqi=XE(900);},MX=N(0),DkQ=N(),EPH=a=>{return;},Fdr=()=>{let a=new DkQ();EPH(a);return a;},DtG=(a,b)=>{let c;b=b;c=new Bty;Bue();c.dcn=Bk();c.b2w=b;return c;},AIL=N(Bx),WU=null,Os=null,OK=null,Qn=null,SN=null,RH=null,Wz=null,EgC=null,Lx=()=>{Lx=Z(AIL);D4u();},Fvt=(a,b,c)=>{Lx();Ct(a,b,c);},AOs=(a,b)=>{let c=new AIL();Fvt(c,a,b);return c;},DMp +=(a,b)=>{let c,d;switch(a.bGO){case 0:return Bv(BB(Bi,[E(911),E(912)]));case 1:if(!b)return Bv(BB(Bi,[E(913),E(914)]));c=K(Bi,1);c.data[0]=E(648);return Bv(c);case 2:if(!b)return Bv(BB(Bi,[E(915),E(916)]));c=K(Bi,1);c.data[0]=E(917);return Bv(c);case 3:if(!b)return Bv(BB(Bi,[E(918),E(919)]));c=K(Bi,1);c.data[0]=E(920);return Bv(c);case 4:if(!b)return Bv(BB(Bi,[E(921),E(922),E(923),E(924)]));c=K(Bi,1);c.data[0]=E(658);return Bv(c);case 5:if(b){c=K(Bi,1);c.data[0]=E(925);return Bv(c);}c=K(Bi,1);c.data[0]=E(926);return Bv(c);case 6:return Bv(BB(Bi, +[E(915),E(916)]));default:}d=new BP;X(d);J(d);},Drc=a=>{Lx();if(a!==WU){if(a!==Os){if(a!==OK){if(a!==Qn){if(a!==RH){if(a!==Wz){if(a===SN)return E(927);return null;}return E(928);}return E(929);}return E(930);}return E(931);}return E(932);}return E(933);},Dem=a=>{Lx();if(a!==Qn){if(a!==RH){if(a!==Wz){if(a===SN)return 1;return 0;}return 1;}return 1;}return 1;},CUy=a=>{let b;Lx();if(a!==Os){if(a!==OK){if(a!==Qn){if(a!==RH){if(a!==SN){b=new BV;X(b);J(b);}return E(658);}return E(925);}return E(920);}return E(917);}return E(648);},D4u +=()=>{let b,c,d;WU=AOs(E(934),0);Os=AOs(E(910),1);OK=AOs(E(935),2);Qn=AOs(E(936),3);SN=AOs(E(937),4);RH=AOs(E(938),5);b=AOs(E(630),6);Wz=b;c=K(AIL,7);d=c.data;d[0]=WU;d[1]=Os;d[2]=OK;d[3]=Qn;d[4]=SN;d[5]=RH;d[6]=b;EgC=c;}; +function BfO(){let a=this;F.call(a);a.bM2=null;a.bNi=null;a.cc3=null;} +let FpA=a=>{let b,c,d;b=B7I(a.bM2);c=BY(a.bNi);d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},Qd=()=>{return Djt();},Dly=a=>{return AQI(a.bM2);},BkD=a=>{let b,c,d;b=Djt();c=b.bM2;d=a.bM2;AYo(c,d);b.bNi=a.bNi;return b;},BoG=(a,b)=>{let c,d,e;if(b!==null){c=BkD(a);d=c.bM2;e=b.bM2;AYo(d,e);b=b.bNi;if(b!==null)c.bNi=b;return c;}return a;},D$n=a=>{a.bM2=Nq(Bo(AH5));a.bNi=null;a.cc3=null;},Djt=()=>{let a=new BfO();D$n(a);return a;},DmI=(a,b,c,d)=>{let e,f,g,h,i,j,k;a.bM2=Nq(Bo(AH5));a.bNi=null;a.cc3=null;e=Ih(F9(b), +E(332),E(14));f=M0(e,E(939));while(JO(f)){g=H5(f);h=Eq(g,58);if(h!=(-1)){i=B_(g,0,h);j=CC(g,h+1|0);if(BG(i,E(940)))a.cc3=Tr(BG(j,E(13)));else{CM();h=Eq(i,46);if(h!=(-1))i=B_(i,0,h);g=Ss(Bo(AH5),Vq(i));k=A09(c,j);Po(a.bM2,g,k);}}else if(!CB(g,E(423))){b=a.bM2;g=DV(c,g);Po(b,d,g);}}if(CB(e,E(941)))a.bNi=BEg();else if(CB(e,E(942)))a.bNi=BNv();else if(CB(e,E(943)))a.bNi=BHa();},BnJ=(a,b,c)=>{let d=new BfO();DmI(d,a,b,c);return d;},DQ=(a,b)=>{let c;c=a.bM2;b=B$(b);return M7(c,b);},CWR=(a,b,c)=>{let d;d=DQ(a,b);if +(d===null)return DQ(a,c);return d;},ACd=a=>{let b;b=a.bNi;if(b===null)return null;return ACn(b);},Lg=(a,b,c)=>{let d;if(c!==null){d=BkD(a);Po(d.bM2,b,c);return d;}return a;},AHL=(a,b)=>{return D9E(b,a);},AKc=(a,b)=>{let c;c=BkD(a);c.bNi=Da5(J3(B$(b)));return c;},CNp=(b,c)=>{if(c!==null){c=c.bNi;if(c!==null){c=ACn(c);return Jw(b,c);}return b;}return b;},AQL=(a,b,c,d)=>{let e,f,g,h,i,j,k,l;B$(b);d=(B$(d)).data;e=d.length;f=0;while(f{let d,e;B9();d=BJ(b,CK);if(d!==null){CM();a=Lg(a,C6,d.cu(c));}e=BJ(b,Cz);if +(e!==null){CM();a=Lg(Lg(a,E1,e.cu(c)),A2s,e.cu(c));}b=BJ(b,Lv);if(b!==null){CM();a=Lg(a,YD,b.cu(c));}return a;},UD=(a,b,c,d)=>{let e,f;B9();if(c===CK){e=a.bM2;CM();f=C6;e=M7(e,f);if(e!==null)return e;}if(c===Cz){e=a.bM2;CM();f=E1;e=M7(e,f);if(e!==null)return e;}return (BJ(b,c)).cu(d);}; +function BER(){F.call(this);this.c9H=5.0;} +let DPS=a=>{a.c9H=5.0;},Uu=()=>{let a=new BER();DPS(a);return a;},AK6=(a,b,c)=>{let d,e;d=null;e=K(Kc,1);e.data[0]=c;return B4j(a,b,d,e);},B4j=(a,b,c,d)=>{let e,f,g;d=d.data;e=d.length;f=0;while(true){if(f>=e)return d[0].c7p;g=b.qS(d[f],c,0);if(g!==null)break;f=f+1|0;}return g;},AUJ=a=>{let b,c,d;if(Dg(a)!==Bo(BER)){b=new BP;c=BY(Dg(a));d=new S;T(d);H(d,c);Bp(b,Q(d));J(b);}},AFY=(a,b,c,d,e,f)=>{AUJ(a);return BBr(a,b,c,d,e,f,null);},BBr=(a,b,c,d,e,f,g)=>{let h,i,j,k;AUJ(a);HK();if(g!==TX){MY();h=d.qV(AEb,null, +0,null);i=h;}else{MY();g=AEb;j=null;B3();i=d.qV(g,j,0,CF);if(i!==d.qV(AEb,null,0,CO))h=CO;else{g=i;h=i;i=g;}}FX();if(c!==RQ){if(c!==AFq){if(c===AFX){b=b.data;j=new Cpt;h=b[0];PM(j,h,h,GM(h),OE(4.0,4.0,4.0,4.0),d,e,0);j.cHK=BLk(j,f);j.cTT=ANi(j);return j;}d=new BV;Bp(d,HT(c));J(d);}b=b.data;j=new CQf;h=b[0];PM(j,h,h,GM(h),OE(4.0,12.0,4.0,12.0),d,e,0);j.c7_=10;j.cGt=BLk(j,f);return j;}b=b.data;k=new CJT;j=b[0];g=GM(j);B3();PM(k,j,j,g,i!==CO?OE(5.0,15.0,5.0,6.0):OE(5.0,15.0,5.0,15.0),d,e,1);k.cnl=5.0;k.cEQ=5.0;k.cQS +=h;k.ciG=BLk(k,f);k.cFT=ANi(k);return k;},CHX=(a,b,c,d,e,f)=>{let g,h,i;AUJ(a);d=Du(CGM(b),b.bRB);d=ZT(B0(b.cwI,d),b.cgY);b=B0(b.cwI,AHZ(CGM(b),b.bRB));if(d!==null){Pb();b=Ux(d,b,Qv);}g=K(Ob,2).data;g[0]=d;g[1]=b;h=Of(g[0]);i=My(g[0]);FX();if(c!==AVN){if(c!==ASW){if(c!==AYj){if(c!==A7V){if(c!==Bae){if(c!==AX$){if(c!==A5A){if(c!==A74){if(c!==A6J){if(c!==A46){if(c!==AYR){if(c!==A5f){if(c!==A6N){if(c!==A0y){if(c!==A$C){if(c===A2g)return Cbn(g[0],g[1],f,0,e);b=new BV;X(b);J(b);}return Cbn(g[0],g[1],f,1,e);}return CSA(g[0], +g[1],f,0,e);}return CSA(g[0],g[1],f,1,e);}return DjI(g[0],g[1],f,0,e);}return DjI(g[0],g[1],f,1,e);}return CAk(g[0],g[1],f,0,e);}return CAk(g[0],g[1],f,1,e);}return Ce9(g[0],g[1],f,0,e);}return Ce9(g[0],g[1],f,1,e);}return Dfn(Vj(e),g[0],g[1],f,0,e);}return Dfn(Vj(e),g[0],g[1],f,1,e);}return Bcq(g[0],g[1],f,e,By9(a,g[0]),1,h,i);}return Bcq(g[0],g[1],f,e,By9(a,g[0]),1,h,i);}return Bcq(g[0],g[1],f,e,By9(a,g[0]),0,h,i);}return Bcq(g[0],g[1],f,e,By9(a,g[0]),0,h,i);},SK=(a,b,c,d,e,f)=>{let g;AUJ(a);FX();g=AO1;if +(c!==g&&c!==A4n&&c!==WG&&b===null){d=new BV;Bp(d,HT(c));J(d);}if(!(c!==BuZ?0:1)){if(c!==AW4){if(c!==RQ){if(c!==AFq){if(c!==AFX){if(c!==BuQ){if(c!==A$d){if(c!==Blh){if(c!==A7Z){if(c!==A4n){if(c!==AA_){if(c!==AQr){if(c!==ATD){if(c!==ATK){if(c!==g){if(c!==AMX){if(c!==WG){if(c!==AQB){if(c===ALB){b=b.data;c=new Cpi;d=b[0];Jo();PM(c,d,d,JJ,OE(4.0,4.0,4.0,4.0),e,f,0);c.cyk=BZz(c);c.cC6=AL0(c);c.cug=AGS(c);c.cC0=ANi(c);c.ctX=G1(c.bPC);c.cST=(Ne(f,0)).bL()?0:1;return c;}if(c!==AZs){if(c===AHu){b=b.data;c=new C9t;d=b[0];Jo();PM(c, +d,d,JJ,OE(1.0,3.0,1.0,3.0),e,f,0);c.cKn=ANi(c);c.cLi=Zv(c);return c;}c=new BV;X(c);J(c);}b=b.data;return Dxj(b[0],b[1],f,e);}c=new BV;X(c);J(c);}b=b.data;c=new C$b;AQN(c,b[0],e);c.ddD=9;c.c2T=AL0(c);return c;}b=b.data;c=new Cxi;d=b[0];Jo();PM(c,d,d,JJ,OE(4.0,0.0,4.0,0.0),e,f,0);return c;}b=b.data;c=new Col;AQN(c,b[0],e);c.c11=AL0(c);return c;}b=b.data;return BuI(b[0],0,0,f,e);}b=b.data;return BuI(b[0],0,1,f,e);}b=b.data;return BuI(b[0],1,0,f,e);}b=b.data;return BuI(b[0],1,1,f,e);}c=new CHH;c.cD6=7.0;return c;}b +=b.data;return CxE(1,b[0],Ne(f,0),e);}b=b.data;return CxE(0,b[0],Ne(f,0),e);}b=b.data;return CTj(1,b[0],b[1],f,e);}b=b.data;return CTj(0,b[0],b[1],f,e);}c=new BV;X(c);J(c);}c=new BV;X(c);J(c);}c=new BV;X(c);J(c);}b=b.data;c=new CJU;AQN(c,b[0],e);c.cSu=AL0(c);c.cY8=AGS(c);c.c$B=0;if(f===null){HW();f=Lu;}c.cS5=f;return c;}return AZE(a,null,d,e,f);},By9=(a,b)=>{B9();return (BJ(b,Pt)).oK();},AZE=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m;b=b.data;AUJ(a);f=GM(b[0]);if(!(Bco(f)>0.0))f=d.rg();g=BJh(c);QG();if(g!==A3$){h=BJh(c);B8();i +=BlP;g=B0(d.cp(),i);B9();j=(BJ(g,Xs)).oB();k=IR(g);if(BG(E(946),j)){l=c.bLo;if(h!==Xc){if(!l){B3();k=CF;}else{B3();k=Ft;}}else if(!l){B3();k=Ft;}else{B3();k=CF;}}else if(BG(E(574),j)){if(h===W2){B3();k=CF;}else if(h===Xc){B3();k=Ft;}else if(h===ADW){B3();k=CO;}}else if(BG(E(947),j)){if(h===W2){B3();k=Ft;}else if(h===Xc){B3();k=CF;}else if(h===ADW){B3();k=CO;}}g=new Dlw;j=b[0];l=d.ri()?0:1;m=d.rj();CyW(g,j,e,c,d,f);g.c5S=k;g.cz$=l;g.c0k=m;e=c.bKc.bJ9;GQ();j=Th;g.bX0=!(e!==j&&e!==L7)?c.bMD:0;e=c.bKu.bJ9;if(!(e +!==j&&e!==L7))l=c.bMD;else{d=MG;l=!(e!==d&&e!==d)?c.bMD:0;}g.bRH=l;return g;}g=new CQY;j=b[0];l=d.ri()?0:1;CyW(g,j,e,c,d,f);g.dcy=45.0;g.c8W=42.0;g.cQR=l;return g;},B04=N(),CAJ=null,Byw=()=>{Byw=Z(B04);DAv();},Cj2=(a,b,c)=>{return b.rl(c);},AM7=()=>{Byw();return CAJ;},DAv=()=>{let b;b=new B04;Byw();CAJ=b;},CxL=N(R6),EdJ=(a,b,c,d)=>{let e;e=a.bS2;I8(d,e,b-W5(d,e)|0);return a.bGX.pN(b,c,d);},Fkh=a=>{return E(948);},Fs5=(a,b)=>{return 0;},Dsj=N(R6),DMf=(a,b,c,d)=>{return b;},DPJ=a=>{return E(949);},Cap=N(R6),E4w +=(a,b,c,d)=>{if(W5(d,a.bS2)!=b)b=(-1);return b;},FuP=a=>{return E(950);}; +function CTp(){R6.call(this);this.cNu=0;} +let EdW=(a,b,c,d)=>{let e;e=a.bS2;I8(d,e,b-W5(d,e)|0);a.cNu=b;return b;},D$X=a=>{return E(951);},EVj=(a,b)=>{return 0;},APt=N(R6),EIg=(a,b,c,d)=>{if(d.ceq!=1&&b!=d.bHR)return (-1);d.cfh=1;BGe(d,0,b);return b;},ENr=a=>{return E(952);}; +function KA(){Io.call(this);this.bKY=0;} +let YK=a=>{Kg(a);a.bKY=1;},DXF=(a,b,c,d)=>{let e;if((b+a.ro()|0)<=d.bHR){e=a.rp(b,c);if(e>=0)return a.bGX.pN(b+e|0,c,d);return (-1);}d.bSz=1;return (-1);},EX0=a=>{return a.bKY;},EAg=(a,b)=>{return 1;},CBw=N(KA),ElX=(a,b)=>{CIW(a,b);a.bKY=1;a.caw=1;a.bKY=0;},ALn=a=>{let b=new CBw();ElX(b,a);return b;},EXj=(a,b,c)=>{return 0;},DNN=(a,b,c,d)=>{let e,f,g;e=d.bHR;f=d.bPn;while(true){g=C5(b,e);if(g>0)return (-1);if(g<0&&Sh(c.u(b))&&b>f&&Pl(c.u(b-1|0))){b=b+1|0;continue;}if(a.bGX.pN(b,c,d)>=0)break;b=b+1|0;}return b;},DL5 +=(a,b,c,d,e)=>{let f,g;f=e.bHR;g=e.bPn;while(true){if(cg&&Pl(d.u(c-1|0))){c=c+(-1)|0;continue;}if(a.bGX.pN(c,d,e)>=0)break;c=c+(-1)|0;}return c;},E8l=a=>{return E(953);},ELI=(a,b)=>{return 0;}; +function JI(){let a=this;Io.call(a);a.bKZ=null;a.bVC=null;a.bIT=0;} +let ANQ=(a,b,c)=>{Kg(a);a.bKZ=b;a.bVC=c;a.bIT=c.bS2;},EAV=(a,b)=>{let c=new JI();ANQ(c,a,b);return c;},Ey2=(a,b,c,d)=>{let e,f,g,h;if(a.bKZ!==null){e=AQD(d,a.bIT);Z9(d,a.bIT,b);f=a.bKZ.bGJ;g=0;while(true){if(g>=f){Z9(d,a.bIT,e);return (-1);}h=(Be(a.bKZ,g)).pN(b,c,d);if(h>=0)break;g=g+1|0;}return h;}return (-1);},FaP=(a,b)=>{a.bVC.bGX=b;},Dz1=a=>{return E(954);},FoS=(a,b)=>{let c,d;a:{c=a.bKZ;if(c!==null){d=Br(c);while(true){if(!Bq(d))break a;if(!(Bm(d)).kN(b))continue;else return 1;}}}return 0;},EFg=(a,b)=> +{return !(Bkp(b,a.bIT)>=0&&AQD(b,a.bIT)==Bkp(b,a.bIT))?1:0;},Dv3=a=>{let b,c,d,e;a.bM4=1;b=a.bVC;if(b!==null&&!b.bM4)Boj(b);a:{b=a.bKZ;if(b!==null){c=b.bGJ;d=0;while(true){if(d>=c)break a;b=Be(a.bKZ,d);e=b.pP();if(e===null)e=b;else{b.bM4=1;EJ(a.bKZ,d);Ik(a.bKZ,d,e);}if(!e.bM4)e.kj();d=d+1|0;}}}if(a.bGX!==null)Boj(a);},BBb=N(JI),D8u=(a,b,c,d)=>{let e,f,g,h;e=W5(d,a.bIT);I8(d,a.bIT,b);f=a.bKZ.bGJ;g=0;while(true){if(g>=f){I8(d,a.bIT,e);return (-1);}h=(Be(a.bKZ,g)).pN(b,c,d);if(h>=0)break;g=g+1|0;}return h;},DA8 +=a=>{return E(955);},FsI=(a,b)=>{return !W5(b,a.bIT)?0:1;},YY=N(BBb),FkE=(a,b,c,d)=>{let e,f,g;e=W5(d,a.bIT);I8(d,a.bIT,b);f=a.bKZ.bGJ;g=0;while(g=0)return a.bGX.pN(a.bVC.cNu,c,d);g=g+1|0;}I8(d,a.bIT,e);return (-1);},DTN=(a,b)=>{a.bGX=b;},Dt6=a=>{return E(955);},Dig=N(YY),D8C=(a,b,c,d)=>{let e,f;e=a.bKZ.bGJ;f=0;while(f=0)return a.bGX.pN(b,c,d);f=f+1|0;}return (-1);},DGA=(a,b)=>{return 0;},ErT=a=>{return E(956);},CLY=N(YY),Dvd=(a,b,c,d)=>{let e,f;e +=a.bKZ.bGJ;f=0;while(true){if(f>=e)return a.bGX.pN(b,c,d);if((Be(a.bKZ,f)).pN(b,c,d)>=0)break;f=f+1|0;}return (-1);},DVq=(a,b)=>{return 0;},DyD=a=>{return E(957);},Dl3=N(YY),E48=(a,b,c,d)=>{let e,f,g,h;e=a.bKZ.bGJ;f=d.cic?0:d.bPn;a:{g=a.bGX.pN(b,c,d);if(g>=0){I8(d,a.bIT,b);h=0;while(true){if(h>=e)break a;if((Be(a.bKZ,h)).rs(f,b,c,d)>=0){I8(d,a.bIT,(-1));return g;}h=h+1|0;}}}return (-1);},FxH=(a,b)=>{return 0;},Faj=a=>{return E(958);},CT7=N(YY),Ec4=(a,b,c,d)=>{let e,f;e=a.bKZ.bGJ;I8(d,a.bIT,b);f=0;while(true) +{if(f>=e)return a.bGX.pN(b,c,d);if((Be(a.bKZ,f)).rs(0,b,c,d)>=0)break;f=f+1|0;}return (-1);},Eo3=(a,b)=>{return 0;},EvZ=a=>{return E(959);}; +function AQk(){JI.call(this);this.bQO=null;} +let B_S=(a,b,c)=>{Kg(a);a.bQO=b;a.bVC=c;a.bIT=c.bS2;},EVc=(a,b)=>{let c=new AQk();B_S(c,a,b);return c;},DZa=(a,b,c,d)=>{let e,f;e=AQD(d,a.bIT);Z9(d,a.bIT,b);f=a.bQO.pN(b,c,d);if(f<0){Z9(d,a.bIT,e);return (-1);}return f;},D6t=(a,b,c,d)=>{let e;e=a.bQO.rt(b,c,d);if(e>=0)Z9(d,a.bIT,e);return e;},Fs9=(a,b,c,d,e)=>{let f;f=a.bQO.rs(b,c,d,e);if(f>=0)Z9(e,a.bIT,f);return f;},FoD=(a,b)=>{return a.bQO.kN(b);},Frm=a=>{let b;b=new B9Z;B_S(b,a.bQO,a.bVC);a.bGX=b;return b;},FfB=a=>{let b;a.bM4=1;b=a.bVC;if(b!==null&&!b.bM4)Boj(b);b +=a.bQO;if(b!==null&&!b.bM4){b=b.pP();if(b!==null){a.bQO.bM4=1;a.bQO=b;}a.bQO.kj();}},C7O=N(),CB4=null,CEs=null,Cs5=null,Clr=null,Dpg=null,DW9=null,Le=()=>{Le=Z(C7O);DRr();},C3z=()=>{Le();return Clr;},Gi=()=>{Le();return Cs5;},SY=()=>{Le();return CB4;},A1A=()=>{Le();return CEs;},IN=b=>{let c;Le();c=new CXu;c.c1e=b;return c;},HL=b=>{let c;Le();c=new Cv0;c.cwg=b;return c;},ARQ=(b,c)=>{let d,e,f,g,h;Le();if(c===null)c=AM7();d=b;e=K(F,d.bGJ);f=e.data;WW(b,e);Bcu(e,c);g=0;h=f.length;while(g{Le();ARQ(b,AM7());},BzY=b=>{let c;Le();if(F0(b,XH))CQi(b,0,b.dV());else{c=E2(b);CQi(c,0,c.bGJ);b.ep();b.gt(c);}},CbY=b=>{let c,d;Le();c=Che();if(F0(b,XH))B_1(b,c);else{d=E2(b);B_1(d,c);TD(b);Ea(b,d);}},B_1=(b,c)=>{let d,e,f;Le();b=b;d=b.bGJ-1|0;while(d>0){e=Coe(c,d+1|0);f=Be(b,d);GJ(b,d,Be(b,e));GJ(b,e,f);d=d+(-1)|0;}},CQi=(b,c,d)=>{let e,f,g;Le();e=(c+d|0)/2|0;f=d-1|0;while(c{let c;Le();B$(b);c=new C_f;c.cl6=b;return c;},BMx= +b=>{let c;Le();if(b.bVQ?0:1){c=new B__;c.cvy=b;return c;}b=new Bt;X(b);J(b);},DRr=()=>{CB4=new CA3;CEs=new CA1;Cs5=new CA2;Clr=new CAZ;Dpg=new CA0;DW9=new Cfr;},Cga=N(PR),EqT=(a,b)=>{return a.bHv<=200?0:1;},Cem=N(0); +function BIe(){let a=this;F.call(a);a.dcB=BH;a.c9z=BH;a.c86=null;a.cKC=null;a.c8f=null;a.ddY=0;a.daj=null;} +let Cx4=null,A9X=null,B2Q=0,FgQ=0,E8S=null,A4c=()=>{A4c=Z(BIe);DuZ();},Bqu=b=>{A4c();if(A9X!==b)A9X=b;A9X.c9z=QR();},R4=()=>{A4c();return A9X;},DuZ=()=>{let b,c,d;b=new BIe;A4c();c=null;b.c86=new F;b.ddY=1;b.c8f=E(960);b.daj=c;d=B2Q;B2Q=d+1|0;b.dcB=V(d);Cx4=b;A9X=b;B2Q=1;FgQ=1;E8S=new CxZ;}; +function Cvt(){let a=this;F.call(a);a.bYF=null;a.ddo=null;a.bNV=null;a.bOa=0;} +let BYk=N(DR),Dho=N(0),CtF=N(0); +function A_7(){let a=this;OQ.call(a);a.bL6=null;a.bRY=null;a.c38=null;a.bVU=0;a.ctE=null;} +let BZk=b=>{let c,d;if(b===null)b=null;else{b=b;c=b.bIu;d=b.bI1;b=new Csk;c=B$(c);d=B$(d);b.cke=c;b.cA5=d;}return b;},Dva=a=>{ByD(a,null);},AAk=()=>{let a=new A_7();Dva(a);return a;},ByD=(a,b)=>{a.c38=b;if(b===null)b=AM7();a.bRY=b;},Ese=a=>{let b=new A_7();ByD(b,a);return b;},EE1=(a,b)=>{let c,d;ByD(a,null);b=b;c=K(Vk,b.bHv);c=WW(Ty(b),c);d=c.data;b=new C2q;b.c2v=a;Bcu(c,b);a.bL6=BCP(a,c,0,d.length-1|0);},BZv=a=>{let b=new A_7();EE1(b,a);return b;},BCP=(a,b,c,d)=>{let e,f,g,h,i;if(c<=d){e=b.data;f=(c+d|0)/2 +|0;g=e[f];h=C$$(g.d0());i=g.d1();B5r(h,i);h.bKk=BCP(a,b,c,f-1|0);h.bK5=BCP(a,b,f+1|0,d);ACT(h);return h;}return null;},Cmc=(a,b)=>{let c;c=Bnl(a,b);return c===null?null:c.bI1;},Qm=(a,b,c)=>{let d;a.bL6=BRG(a,a.bL6,b);b=Bnl(a,b);d=B5r(b,c);B5r(b,c);a.bVU=a.bVU+1|0;return d;},B95=a=>{return a.bL6!==null?0:1;},CLb=(a,b)=>{return Bnl(a,b)===null?0:1;},Bnl=(a,b)=>{let c,d;c=a.bL6;a.bRY.fc(b,b);while(true){if(c===null)return null;d=a.bRY.fc(b,c.bIu);if(!d)break;c=d>=0?c.bK5:c.bKk;}return c;},DsM=(a,b,c)=>{let d,e, +f,g,h;d=K(AVK,BJ6(a));e=d.data;f=0;g=a.bL6;a:{b:{while(g!==null){h=a.bRY.fc(b,g.bIu);if(c)h= -h|0;if(!h)break b;if(h>=0)g=A8k(g,c);else{h=f+1|0;e[f]=g;g=AJw(g,c);f=h;}}c=f;break a;}c=f+1|0;e[f]=g;}return MK(d,c);},Dbe=(a,b,c)=>{let d,e,f,g;d=a.bL6;e=null;while(d!==null){f=a.bRY.fc(b,d.bIu);if(c)f= -f|0;if(f>=0)g=A8k(d,c);else{g=AJw(d,c);e=d;}d=g;}return e;},B1F=(a,b,c)=>{let d,e,f,g,h;d=K(AVK,BJ6(a));e=d.data;f=0;g=a.bL6;while(g!==null){h=a.bRY.fc(b,g.bIu);if(c)h= -h|0;if(h>=0)g=A8k(g,c);else{h=f+1|0;e[f]=g;g +=AJw(g,c);f=h;}}return MK(d,f);},C66=(a,b)=>{let c,d,e,f,g;c=K(AVK,BJ6(a));d=c.data;e=0;f=a.bL6;while(f!==null){g=e+1|0;d[e]=f;f=AJw(f,b);e=g;}return MK(c,e);},BRG=(a,b,c)=>{let d;if(b!==null){d=a.bRY.fc(c,b.bIu);if(d){if(d>=0)b.bK5=BRG(a,b.bK5,c);else b.bKk=BRG(a,b.bKk,c);ACT(b);return B5W(b);}return b;}return C$$(c);},Bv1=(a,b,c)=>{let d,e,f,g,h,i,j;if(b!==null){d=a.bRY.fc(c,b.bIu);if(d<0)b.bKk=Bv1(a,b.bKk,c);else if(d>0)b.bK5=Bv1(a,b.bK5,c);else{e=b.bK5;if(e!==null){f=b.bKk;g=K(AVK,e.bWu).data;h=0;while(true) +{b=e.bKk;if(b===null)break;i=h+1|0;g[h]=e;h=i;e=b;}b=e.bK5;while(h>0){h=h+(-1)|0;j=g[h];j.bKk=b;ACT(j);b=B5W(j);}e.bK5=b;e.bKk=f;ACT(e);b=e;}else return b.bKk;}ACT(b);return B5W(b);}return null;},UA=a=>{let b,c,d;if(a.ctE===null){b=new CRf;c=null;d=null;b.c$K=(-1);b.bWi=a;b.cns=c;b.cx0=1;b.cu5=0;b.ckg=d;b.cAP=1;b.cGq=0;b.c6s=0;a.ctE=b;}return a.ctE;},C_h=(a,b)=>{let c;c=Dbe(a,b,0);return c===null?null:c.bIu;},BSl=(a,b)=>{let c,d,e;c=a.bL6;d=null;while(c!==null){e=AJw(c,b);d=c;c=e;}return d;},APY=a=>{let b;b +=a.bL6;return b===null?0:b.bZg;},BJ6=a=>{let b;b=a.bL6;return b===null?0:b.bWu;}; +function B$c(){Tq.call(this);this.cjE=null;} +let UF=(a,b)=>{return a.cjE.data[b];},DDr=(a,b,c)=>{let d,e;d=a.cjE.data;e=d[b];d[b]=c;return e;},Bkb=a=>{return a.cjE.data.length;},BNl=N(0); +function CnH(){let a=this;F.call(a);a.c$m=null;a.cJk=null;a.bPH=null;a.bKw=null;a.bWE=0;a.b_8=0;a.cb8=0;a.ckP=null;a.cFU=null;a.bY9=null;} +let AMW=(a,b,c)=>{a.cFU=EnF(a,c);T3(b,a.bPH.rL(a.cb8,BWt(a)));L(b,a.cFU);a.cb8=BX7(a);return a;},EnF=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,$$je;c=a.ckP;if(c!==null&&Bj(c,b)){if(a.bY9!==null){d=new S;T(d);e=0;while(true){b=a.bY9;if(e>=b.bGJ)break;H(d,Be(b,e));e=e+1|0;}return Q(d);}return a.cFU;}a.ckP=b;f=Q5(b);c=new S;T(c);a.bY9=null;g=0;h=0;i=0;a:{b:while(true){j=f.data;e=j.length;if(g>=e){b=a.bY9;if(b!==null){k=c.bG4;if(h!=k)U(b,DpS(c,h,k));}return Q(c);}if(j[g]==92&&!i){i=1;g=g+1|0;}c:{if(i){if(g>=e)break b;Bb(c, +j[g]);i=0;}else if(j[g]!=36)Bb(c,j[g]);else{if(a.bY9===null)a.bY9=Bk();d:{try{b=new Bi;g=g+1|0;DsY(b,f,g,1);k=CZ(b);if(h==AMP(c))break d;U(a.bY9,DpS(c,h,AMP(c)));h=AMP(c);break d;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break a;}else{throw $$e;}}}try{U(a.bY9,EBK(a,k));l=El(a,k);h=h+GB(l)|0;FN(c,l);break c;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break a;}else{throw $$e;}}}}g=g+1|0;}b=new EN;X(b);J(b);}b=new Bt;Bp(b,E(14));J(b);},CMn=(a,b)=>{let c;if(b===null){c=new F2;Bp(c,E(14));J(c);}a.bPH=b;return BRb(a);},BRb +=a=>{let b;a.bWE=0;b=a.bPH.bL();a.b_8=b;Bn4(a.bKw,a.bPH,a.bWE,b);a.cb8=0;a.ckP=null;a.bKw.b6V=(-1);return a;},Cz0=(a,b,c)=>{let d,e;if(b<=c&&b>=0&&c>=0&&b<=a.bPH.bL()&&c<=a.bPH.bL()){a.bWE=b;a.b_8=c;Bn4(a.bKw,null,b,c);a.cb8=0;a.ckP=null;return a;}d=new EN;e=new S;T(e);BE(e,b);BE(H(e,E(50)),c);Bp(d,Q(e));J(d);},ALx=(a,b)=>{let c;c=a.bPH;T3(b,c.rL(a.cb8,c.bL()));return b;},UQ=(a,b)=>{let c;c=new Sj;T(c);BRb(a);while(GW(a)){AMW(a,c,b);}return Q(ALx(a,c));},El=(a,b)=>{let c;c=a.bKw;return BiL(c,b)<0?null:(c.cln.rL(BiL(c, +b),BUy(c,b))).p();},BhZ=a=>{return El(a,0);},Ctl=(a,b)=>{let c,d;c=a.bPH.bL();if(b>=0&&b<=c){C_E(a.bKw);d=a.bKw;d.ceq=1;CLt(d,b);b=a.cJk.rt(b,a.bPH,a.bKw);if(b==(-1))a.bKw.bSz=1;if(b>=0){d=a.bKw;if(d.cfh){Dc7(d);return 1;}}a.bKw.bVx=(-1);return 0;}d=new EN;Bp(d,AEV(b));J(d);},GW=a=>{let b,c,d;b=a.bPH.bL();c=a.bKw;if(!c.cic)b=a.b_8;if(c.bVx>=0&&c.ceq==1){c.bVx=BFE(c);if(BFE(a.bKw)==BiL(a.bKw,0)){c=a.bKw;c.bVx=c.bVx+1|0;}d=a.bKw.bVx;return !(d<=b&&Ctl(a,d))?0:1;}return Ctl(a,a.bWE);},Kr=a=>{return CEt(a,a.bWE, +2);},AH8=b=>{let c,d,e,f;if(Eq(b,92)<0&&Eq(b,36)<0)return b;c=new S;JP(c,b.bGI.length*2|0);d=b.bGI.length;e=0;while(e{let d,e;C_E(a.bKw);d=a.bKw;d.ceq=c;CLt(d,b);d=a.cJk;e=a.bKw;if(d.pN(b,a.bPH,e)<0)b=0;else{Dc7(e);b=1;}return b;},BWt=a=>{return BiL(a.bKw,0);},Daw=a=>{return a.bKw.cFP-1|0;},BX7=a=>{return BUy(a.bKw,0);}; +function BC3(){let a=this;F.call(a);a.b2I=null;a.b8t=0;} +function B1E(){let a=this;F.call(a);a.c1p=null;a.cW3=null;a.cyr=0;} +let CKT=(a,b)=>{a.cyr=0;a.c1p=b;},HO=a=>{let b=new B1E();CKT(b,a);return b;},A_U=a=>{Jl(a);try{if(!a.cyr){a.cW3=a.c1p.pS();a.cyr=1;}return a.cW3;}finally{G2(a);}},Eo=N(0); +function Ck8(){F.call(this);this.cPF=null;} +let ENy=a=>{return COl(a.cPF.b$n);},A7y=N(); +function DU(){let a=this;A7y.call(a);a.bJl=0;a.bMR=0;a.bIz=null;a.cnq=null;a.cqS=null;a.bIA=0;} +let Dw$=null,ATA=()=>{ATA=Z(DU);Dwy();},GF=a=>{let b;ATA();b=new BRD;b.bIe=Ca(64);a.bIz=b;},DLh=a=>{return null;},EL6=a=>{return a.bIz;},Elz=a=>{let b,c,d,e,f;if(!a.bMR)b=Bbt(a.bIz,0)>=2048?0:1;else{a:{c=a.bIz;b=0;d=c.bJ4;if(b>>0|0;if(f)b=AMl(f)+b|0;else{b=(d+31|0)/32|0;f=1;b:{while(f=2048?0:1;}return b;},Fzo=a=>{return a.bIA;},EXQ=a=>{return a;},E3F=a=>{let b,c;if(a.cqS===null){b=a.rW();c=new CWq;c.dcw +=a;c.cNJ=b;GF(c);a.cqS=c;AHD(c,a.bMR);}return a.cqS;},Bft=a=>{let b,c;if(a.cnq===null){b=a.rW();c=new CWo;c.c8C=a;c.cPO=b;c.c4n=a;GF(c);a.cnq=c;AHD(c,a.bJl);a.cnq.bIA=a.bIA;}return a.cnq;},DXa=a=>{return 0;},AHD=(a,b)=>{let c;c=a.bJl;if(c^b){a.bJl=c?0:1;a.bMR=a.bMR?0:1;}if(!a.bIA)a.bIA=1;return a;},Fy6=a=>{return a.bJl;},BG9=(b,c)=>{ATA();return b.rX(c);},Bm7=(b,c)=>{let d,e;ATA();if(b.rY()!==null&&c.rY()!==null){b=b.rY();c=c.rY();d=DO(b.bIe.data.length,c.bIe.data.length);e=0;a:{b:{while(e{let d,e,f;ATA();d=0;while(true){Bkw();e=Cpo.data;if(d>=e.length){f=new BOe;Bp(f,E(14));f.ddK=E(14);f.dcx=b;J(f);}e=e[d].data;if(Bj(b,e[0]))break;d=d+1|0;}return EWz(e[1],c);},Dwy=()=>{let b;b=new BV3;Bkw();Dw$=b;}; +function BOe(){let a=this;DR.call(a);a.ddK=null;a.dcx=null;} +function BCc(){let a=this;DU.call(a);a.cuz=0;a.cJ7=0;a.b8B=0;a.cBG=0;a.bUH=0;a.b3o=0;a.bIs=null;a.bKK=null;} +let Fgp=a=>{GF(a);a.bIs=DsX();},TW=()=>{let a=new BCc();Fgp(a);return a;},D1I=(a,b,c)=>{GF(a);a.bIs=DsX();a.cuz=b;a.cJ7=c;},CMz=(a,b)=>{let c=new BCc();D1I(c,a,b);return c;},Pp=(a,b)=>{a:{if(a.cuz){b:{if(!(b>=97&&b<=122)){if(b<65)break b;if(b>90)break b;}if(a.bUH){BR7(a.bIs,A_1(b&65535));break a;}BEa(a.bIs,A_1(b&65535));break a;}if(a.cJ7&&b>128){a.b8B=1;b=A3j(AY0(b));}}}if(!(!BDy(b)&&!BKS(b))){if(a.cBG)BR7(a.bIz,b-55296|0);else BEa(a.bIz,b-55296|0);}if(a.bUH)BR7(a.bIs,b);else BEa(a.bIs,b);if(!a.bIA&&BNu(b))a.bIA +=1;return a;},DX2=(a,b)=>{let c,d,e;if(!a.bIA&&b.bIA)a.bIA=1;if(a.cBG){if(!b.bMR)APO(a.bIz,b.rW());else U4(a.bIz,b.rW());}else if(!b.bMR)AXL(a.bIz,b.rW());else{AQo(a.bIz,b.rW());U4(a.bIz,b.rW());a.bMR=a.bMR?0:1;a.cBG=1;}if(!a.b3o&&b.rY()!==null){if(a.bUH){if(!b.bJl)APO(a.bIs,b.rY());else U4(a.bIs,b.rY());}else if(!b.bJl)AXL(a.bIs,b.rY());else{AQo(a.bIs,b.rY());U4(a.bIs,b.rY());a.bJl=a.bJl?0:1;a.bUH=1;}}else{c=a.bJl;d=a.bKK;if(d!==null){if(!c){e=new CFv;e.dd9=a;e.cV4=c;e.cML=d;e.cMH=b;GF(e);a.bKK=e;}else{e=new CFw;e.dag +=a;e.c3i=c;e.cOR=d;e.cOw=b;GF(e);a.bKK=e;}}else{if(c&&!a.bUH&&BJJ(a.bIs)){d=new CFs;d.dcj=a;d.c51=b;GF(d);a.bKK=d;}else if(!c){d=new CFq;d.cIq=a;d.cDe=c;d.cZS=b;GF(d);a.bKK=d;}else{d=new CFr;d.cxk=a;d.cqJ=c;d.cYz=b;GF(d);a.bKK=d;}a.b3o=1;}}return a;},J5=(a,b,c)=>{let d,e,f,g,h;if(b<=c){a:{b:{if(!a.cuz){if(c<55296)break b;if(b>57343)break b;}c=c+1|0;while(true){if(b>=c)break a;Pp(a,b);b=b+1|0;}}if(!a.bUH)Bjh(a.bIs,b,c+1|0);else{d=a.bIs;c=c+1|0;if(b>=0&&b<=c){e=d.bJ4;if(b{let c,d,e;if(!a.bIA&&b.bIA)a.bIA=1;c=b;if(c.b8B)a.b8B=1;d=a.bMR;if(!(d^b.bMR)){if(!d)AXL(a.bIz,c.bIz);else U4(a.bIz,c.bIz);}else if(d)APO(a.bIz,c.bIz);else{AQo(a.bIz,c.bIz);U4(a.bIz,c.bIz);a.bMR=1;}if(!a.b3o&&Sa(c)!==null){d=a.bJl;if(!(d^b.bJl)){if(!d)AXL(a.bIs, +Sa(c));else U4(a.bIs,Sa(c));}else if(d)APO(a.bIs,Sa(c));else{AQo(a.bIs,Sa(c));U4(a.bIs,Sa(c));a.bJl=1;}}else{d=a.bJl;e=a.bKK;if(e!==null){if(!d){c=new B_f;c.dat=a;c.cMp=d;c.cPZ=e;c.cMW=b;GF(c);a.bKK=c;}else{c=new B_H;c.dcT=a;c.cVZ=d;c.cJ4=e;c.cJ_=b;GF(c);a.bKK=c;}}else{if(!a.bUH&&BJJ(a.bIs)){if(!d){e=new CFt;e.c99=a;e.cRs=b;GF(e);a.bKK=e;}else{e=new CFu;e.db1=a;e.c7m=b;GF(e);a.bKK=e;}}else if(!d){e=new CFx;e.cSD=a;e.cXN=b;e.c0l=d;GF(e);a.bKK=e;}else{e=new CFy;e.cLY=a;e.cR_=b;e.cVg=d;GF(e);a.bKK=e;}a.b3o=1;}}},CB8 +=(a,b)=>{let c,d,e;if(!a.bIA&&b.bIA)a.bIA=1;c=b;if(c.b8B)a.b8B=1;d=a.bMR;if(!(d^b.bMR)){if(!d)U4(a.bIz,c.bIz);else AXL(a.bIz,c.bIz);}else if(!d)APO(a.bIz,c.bIz);else{AQo(a.bIz,c.bIz);U4(a.bIz,c.bIz);a.bMR=0;}if(!a.b3o&&Sa(c)!==null){d=a.bJl;if(!(d^b.bJl)){if(!d)U4(a.bIs,Sa(c));else AXL(a.bIs,Sa(c));}else if(!d)APO(a.bIs,Sa(c));else{AQo(a.bIs,Sa(c));U4(a.bIs,Sa(c));a.bJl=0;}}else{d=a.bJl;e=a.bKK;if(e!==null){if(!d){c=new B_i;c.dd8=a;c.cPy=d;c.cZp=e;c.cRS=b;GF(c);a.bKK=c;}else{c=new B_j;c.db3=a;c.cVo=d;c.cZb= +e;c.c0X=b;GF(c);a.bKK=c;}}else{if(!a.bUH&&BJJ(a.bIs)){if(!d){e=new B_d;e.c8d=a;e.cUj=b;GF(e);a.bKK=e;}else{e=new B_e;e.deX=a;e.c2I=b;GF(e);a.bKK=e;}}else if(!d){e=new B_k;e.c1M=a;e.c7w=b;e.cX1=d;GF(e);a.bKK=e;}else{e=new B_c;e.c3w=a;e.c0Q=b;e.cOZ=d;GF(e);a.bKK=e;}a.b3o=1;}}},SM=(a,b)=>{let c;c=a.bKK;if(c===null)return a.bJl^YH(a.bIs,b);return a.bJl^c.rX(b);},Sa=a=>{if(a.b3o)return null;return a.bIs;},EPc=a=>{return a.bIz;},Fd7=a=>{let b,c;if(a.bKK===null){b=Sa(a);c=new B_h;c.c$8=a;c.cgp=b;GF(c);return AHD(c, +a.bJl);}return a;},Emv=a=>{let b,c,d;b=new S;T(b);c=Bbt(a.bIs,0);while(c>=0){AXl(b,Wr(c));Bb(b,124);c=Bbt(a.bIs,c+1|0);}d=b.bG4;if(d>0)BkF(b,d-1|0);return Q(b);},Dx3=a=>{return a.b8B;}; +function ADk(){Io.call(this);this.bIw=null;} +let V_=(a,b,c,d)=>{CIW(a,c);a.bIw=b;a.caw=d;},Fzv=a=>{return a.bIw;},D$t=(a,b)=>{return !(!a.bIw.kN(b)&&!a.bGX.kN(b))?1:0;},Fu9=(a,b)=>{return 1;},DBA=a=>{let b;a.bM4=1;b=a.bGX;if(b!==null&&!b.bM4){b=b.pP();if(b!==null){a.bGX.bM4=1;a.bGX=b;}a.bGX.kj();}b=a.bIw;if(b!==null){if(!b.bM4){b=b.pP();if(b!==null){a.bIw.bM4=1;a.bIw=b;}a.bIw.kj();}else if(b instanceof AQk&&b.bVC.cH2)a.bIw=b.bGX;}}; +function TE(){ADk.call(this);this.bI_=null;} +let AFh=(a,b,c,d)=>{V_(a,b,c,d);a.bI_=b;},DDO=(a,b,c)=>{let d=new TE();AFh(d,a,b,c);return d;},Ec7=(a,b,c,d)=>{let e,f;e=0;a:{b:{while((b+a.bI_.ro()|0)<=d.bHR){f=a.bI_.rp(b,c);if(f<=0)break b;b=b+f|0;e=e+1|0;}break a;}}while(true){if(e<0)return (-1);f=a.bGX.pN(b,c,d);if(f>=0)break;b=b-a.bI_.ro()|0;e=e+(-1)|0;}return f;},DLY=a=>{return E(961);}; +function AJ2(){TE.call(this);this.cdz=null;} +let BDo=(a,b,c,d,e)=>{AFh(a,c,d,e);a.cdz=b;},DNe=(a,b,c,d)=>{let e=new AJ2();BDo(e,a,b,c,d);return e;},EeC=(a,b,c,d)=>{let e,f,g,h,i;e=a.cdz;f=e.bZO;g=e.bZN;h=0;while(true){if(h>=f){a:{b:{c:{while(hd.bHR)break b;i=a.bI_.rp(b,c);if(i<1)break c;b=b+i|0;h=h+1|0;}break a;}break a;}}while(true){if(h=0)break;b=b-a.bI_.ro()|0;h=h+(-1)|0;}return i;}if((b+a.bI_.ro()|0)>d.bHR){d.bSz=1;return (-1);}i=a.bI_.rp(b,c);if(i<1)break;b=b+i|0;h=h+1|0;}return (-1);},EM1 +=a=>{return BZq(a.cdz);},TL=N(ADk),ELu=(a,b,c,d)=>{let e;if(a.bIw.sb(d)){e=a.bIw.pN(b,c,d);if(e<0)return a.bGX.pN(b,c,d);return e;}return a.bGX.pN(b,c,d);},DPj=a=>{return E(962);},ANp=N(TE),Elj=(a,b,c,d)=>{let e;e=a.bIw.pN(b,c,d);if(e<0)e=a.bGX.pN(b,c,d);return e;},EKx=(a,b)=>{a.bGX=b;a.bIw.kv(b);},CBL=N(TE),E01=(a,b,c,d)=>{while((b+a.bI_.ro()|0)<=d.bHR&&a.bI_.rp(b,c)>0){b=b+a.bI_.ro()|0;}return a.bGX.pN(b,c,d);},DB9=(a,b,c,d)=>{let e,f,g;e=a.bGX.rt(b,c,d);if(e>=0){f=e-a.bI_.ro()|0;while(f>=b&&a.bI_.rp(f,c) +>0){g=f-a.bI_.ro()|0;e=f;f=g;}return e;}return (-1);}; +function C_f(){let a=this;OQ.call(a);a.cvh=null;a.cl6=null;} +let E9Q=a=>{let b,c;if(a.cvh===null){b=a.cl6.dW();Le();c=new C_e;c.cUz=b;a.cvh=c;}return a.cvh;},EuG=a=>{return a.cl6.dV();},DoL=(a,b)=>{return a.cl6.dR(b);},BiG=N(0); +function Ch1(){F.call(this);this.cNf=null;} +let BV3=N(),BSr=null,BDc=null,Cpo=null,Bkw=()=>{Bkw=Z(BV3);Dw_();},Dw_=()=>{let b,c,d,e;BSr=D_w();BDc=Ekm();b=K(Ib(F),194);c=b.data;d=K(F,2);e=d.data;e[0]=E(963);e[1]=EbS();c[0]=d;d=K(F,2);e=d.data;e[0]=E(964);e[1]=DtC();c[1]=d;d=K(F,2);e=d.data;e[0]=E(965);e[1]=DU5();c[2]=d;d=K(F,2);e=d.data;e[0]=E(966);e[1]=DWb();c[3]=d;d=K(F,2);e=d.data;e[0]=E(967);e[1]=BDc;c[4]=d;d=K(F,2);e=d.data;e[0]=E(968);e[1]=Fpd();c[5]=d;d=K(F,2);e=d.data;e[0]=E(969);e[1]=Dz0();c[6]=d;d=K(F,2);e=d.data;e[0]=E(970);e[1]=EeE();c[7]= +d;d=K(F,2);e=d.data;e[0]=E(971);e[1]=Fh5();c[8]=d;d=K(F,2);e=d.data;e[0]=E(972);e[1]=Evq();c[9]=d;d=K(F,2);e=d.data;e[0]=E(973);e[1]=D2O();c[10]=d;d=K(F,2);e=d.data;e[0]=E(974);e[1]=EMD();c[11]=d;d=K(F,2);e=d.data;e[0]=E(975);e[1]=D9f();c[12]=d;d=K(F,2);e=d.data;e[0]=E(976);e[1]=DYI();c[13]=d;d=K(F,2);e=d.data;e[0]=E(977);e[1]=EYE();c[14]=d;d=K(F,2);e=d.data;e[0]=E(978);e[1]=DxB();c[15]=d;d=K(F,2);e=d.data;e[0]=E(979);e[1]=ES$();c[16]=d;d=K(F,2);e=d.data;e[0]=E(980);e[1]=EOX();c[17]=d;d=K(F,2);e=d.data;e[0] +=E(981);e[1]=Fpa();c[18]=d;d=K(F,2);e=d.data;e[0]=E(982);e[1]=E4x();c[19]=d;d=K(F,2);e=d.data;e[0]=E(983);e[1]=EZQ();c[20]=d;d=K(F,2);e=d.data;e[0]=E(984);e[1]=ENV();c[21]=d;d=K(F,2);e=d.data;e[0]=E(985);e[1]=E_q();c[22]=d;d=K(F,2);e=d.data;e[0]=E(986);e[1]=EXD();c[23]=d;d=K(F,2);e=d.data;e[0]=E(987);e[1]=DUQ();c[24]=d;d=K(F,2);e=d.data;e[0]=E(988);e[1]=FeR();c[25]=d;d=K(F,2);e=d.data;e[0]=E(989);e[1]=D0Q();c[26]=d;d=K(F,2);e=d.data;e[0]=E(990);e[1]=Fsx();c[27]=d;d=K(F,2);e=d.data;e[0]=E(991);e[1]=BSr;c[28] +=d;d=K(F,2);e=d.data;e[0]=E(992);e[1]=D7Z();c[29]=d;d=K(F,2);e=d.data;e[0]=E(993);e[1]=FiB();c[30]=d;d=K(F,2);e=d.data;e[0]=E(994);e[1]=BSr;c[31]=d;d=K(F,2);e=d.data;e[0]=E(995);e[1]=Ds4();c[32]=d;d=K(F,2);e=d.data;e[0]=E(996);e[1]=BDc;c[33]=d;d=K(F,2);e=d.data;e[0]=E(997);e[1]=E7R();c[34]=d;d=K(F,2);e=d.data;e[0]=E(998);e[1]=CX(0,127);c[35]=d;d=K(F,2);e=d.data;e[0]=E(999);e[1]=CX(128,255);c[36]=d;d=K(F,2);e=d.data;e[0]=E(1000);e[1]=CX(256,383);c[37]=d;d=K(F,2);e=d.data;e[0]=E(1001);e[1]=CX(384,591);c[38]=d;d +=K(F,2);e=d.data;e[0]=E(1002);e[1]=CX(592,687);c[39]=d;d=K(F,2);e=d.data;e[0]=E(1003);e[1]=CX(688,767);c[40]=d;d=K(F,2);e=d.data;e[0]=E(1004);e[1]=CX(768,879);c[41]=d;d=K(F,2);e=d.data;e[0]=E(1005);e[1]=CX(880,1023);c[42]=d;d=K(F,2);e=d.data;e[0]=E(1006);e[1]=CX(1024,1279);c[43]=d;d=K(F,2);e=d.data;e[0]=E(1007);e[1]=CX(1280,1327);c[44]=d;d=K(F,2);e=d.data;e[0]=E(1008);e[1]=CX(1328,1423);c[45]=d;d=K(F,2);e=d.data;e[0]=E(1009);e[1]=CX(1424,1535);c[46]=d;d=K(F,2);e=d.data;e[0]=E(1010);e[1]=CX(1536,1791);c[47]= +d;d=K(F,2);e=d.data;e[0]=E(1011);e[1]=CX(1792,1871);c[48]=d;d=K(F,2);e=d.data;e[0]=E(1012);e[1]=CX(1872,1919);c[49]=d;d=K(F,2);e=d.data;e[0]=E(1013);e[1]=CX(1920,1983);c[50]=d;d=K(F,2);e=d.data;e[0]=E(1014);e[1]=CX(2304,2431);c[51]=d;d=K(F,2);e=d.data;e[0]=E(1015);e[1]=CX(2432,2559);c[52]=d;d=K(F,2);e=d.data;e[0]=E(1016);e[1]=CX(2560,2687);c[53]=d;d=K(F,2);e=d.data;e[0]=E(1017);e[1]=CX(2688,2815);c[54]=d;d=K(F,2);e=d.data;e[0]=E(1018);e[1]=CX(2816,2943);c[55]=d;d=K(F,2);e=d.data;e[0]=E(1019);e[1]=CX(2944,3071);c[56] +=d;d=K(F,2);e=d.data;e[0]=E(1020);e[1]=CX(3072,3199);c[57]=d;d=K(F,2);e=d.data;e[0]=E(1021);e[1]=CX(3200,3327);c[58]=d;d=K(F,2);e=d.data;e[0]=E(1022);e[1]=CX(3328,3455);c[59]=d;d=K(F,2);e=d.data;e[0]=E(1023);e[1]=CX(3456,3583);c[60]=d;d=K(F,2);e=d.data;e[0]=E(1024);e[1]=CX(3584,3711);c[61]=d;d=K(F,2);e=d.data;e[0]=E(1025);e[1]=CX(3712,3839);c[62]=d;d=K(F,2);e=d.data;e[0]=E(1026);e[1]=CX(3840,4095);c[63]=d;d=K(F,2);e=d.data;e[0]=E(1027);e[1]=CX(4096,4255);c[64]=d;d=K(F,2);e=d.data;e[0]=E(1028);e[1]=CX(4256,4351);c[65] +=d;d=K(F,2);e=d.data;e[0]=E(1029);e[1]=CX(4352,4607);c[66]=d;d=K(F,2);e=d.data;e[0]=E(1030);e[1]=CX(4608,4991);c[67]=d;d=K(F,2);e=d.data;e[0]=E(1031);e[1]=CX(4992,5023);c[68]=d;d=K(F,2);e=d.data;e[0]=E(1032);e[1]=CX(5024,5119);c[69]=d;d=K(F,2);e=d.data;e[0]=E(1033);e[1]=CX(5120,5759);c[70]=d;d=K(F,2);e=d.data;e[0]=E(1034);e[1]=CX(5760,5791);c[71]=d;d=K(F,2);e=d.data;e[0]=E(1035);e[1]=CX(5792,5887);c[72]=d;d=K(F,2);e=d.data;e[0]=E(1036);e[1]=CX(5888,5919);c[73]=d;d=K(F,2);e=d.data;e[0]=E(1037);e[1]=CX(5920,5951);c[74] +=d;d=K(F,2);e=d.data;e[0]=E(1038);e[1]=CX(5952,5983);c[75]=d;d=K(F,2);e=d.data;e[0]=E(1039);e[1]=CX(5984,6015);c[76]=d;d=K(F,2);e=d.data;e[0]=E(1040);e[1]=CX(6016,6143);c[77]=d;d=K(F,2);e=d.data;e[0]=E(1041);e[1]=CX(6144,6319);c[78]=d;d=K(F,2);e=d.data;e[0]=E(1042);e[1]=CX(6400,6479);c[79]=d;d=K(F,2);e=d.data;e[0]=E(1043);e[1]=CX(6480,6527);c[80]=d;d=K(F,2);e=d.data;e[0]=E(1044);e[1]=CX(6528,6623);c[81]=d;d=K(F,2);e=d.data;e[0]=E(1045);e[1]=CX(6624,6655);c[82]=d;d=K(F,2);e=d.data;e[0]=E(1046);e[1]=CX(6656,6687);c[83] +=d;d=K(F,2);e=d.data;e[0]=E(1047);e[1]=CX(7424,7551);c[84]=d;d=K(F,2);e=d.data;e[0]=E(1048);e[1]=CX(7552,7615);c[85]=d;d=K(F,2);e=d.data;e[0]=E(1049);e[1]=CX(7616,7679);c[86]=d;d=K(F,2);e=d.data;e[0]=E(1050);e[1]=CX(7680,7935);c[87]=d;d=K(F,2);e=d.data;e[0]=E(1051);e[1]=CX(7936,8191);c[88]=d;d=K(F,2);e=d.data;e[0]=E(1052);e[1]=CX(8192,8303);c[89]=d;d=K(F,2);e=d.data;e[0]=E(1053);e[1]=CX(8304,8351);c[90]=d;d=K(F,2);e=d.data;e[0]=E(1054);e[1]=CX(8352,8399);c[91]=d;d=K(F,2);e=d.data;e[0]=E(1055);e[1]=CX(8400,8447);c[92] +=d;d=K(F,2);e=d.data;e[0]=E(1056);e[1]=CX(8448,8527);c[93]=d;d=K(F,2);e=d.data;e[0]=E(1057);e[1]=CX(8528,8591);c[94]=d;d=K(F,2);e=d.data;e[0]=E(1058);e[1]=CX(8592,8703);c[95]=d;d=K(F,2);e=d.data;e[0]=E(1059);e[1]=CX(8704,8959);c[96]=d;d=K(F,2);e=d.data;e[0]=E(1060);e[1]=CX(8960,9215);c[97]=d;d=K(F,2);e=d.data;e[0]=E(1061);e[1]=CX(9216,9279);c[98]=d;d=K(F,2);e=d.data;e[0]=E(1062);e[1]=CX(9280,9311);c[99]=d;d=K(F,2);e=d.data;e[0]=E(1063);e[1]=CX(9312,9471);c[100]=d;d=K(F,2);e=d.data;e[0]=E(1064);e[1]=CX(9472, +9599);c[101]=d;d=K(F,2);e=d.data;e[0]=E(1065);e[1]=CX(9600,9631);c[102]=d;d=K(F,2);e=d.data;e[0]=E(1066);e[1]=CX(9632,9727);c[103]=d;d=K(F,2);e=d.data;e[0]=E(1067);e[1]=CX(9728,9983);c[104]=d;d=K(F,2);e=d.data;e[0]=E(1068);e[1]=CX(9984,10175);c[105]=d;d=K(F,2);e=d.data;e[0]=E(1069);e[1]=CX(10176,10223);c[106]=d;d=K(F,2);e=d.data;e[0]=E(1070);e[1]=CX(10224,10239);c[107]=d;d=K(F,2);e=d.data;e[0]=E(1071);e[1]=CX(10240,10495);c[108]=d;d=K(F,2);e=d.data;e[0]=E(1072);e[1]=CX(10496,10623);c[109]=d;d=K(F,2);e=d.data;e[0] +=E(1073);e[1]=CX(10624,10751);c[110]=d;d=K(F,2);e=d.data;e[0]=E(1074);e[1]=CX(10752,11007);c[111]=d;d=K(F,2);e=d.data;e[0]=E(1075);e[1]=CX(11008,11263);c[112]=d;d=K(F,2);e=d.data;e[0]=E(1076);e[1]=CX(11264,11359);c[113]=d;d=K(F,2);e=d.data;e[0]=E(1077);e[1]=CX(11392,11519);c[114]=d;d=K(F,2);e=d.data;e[0]=E(1078);e[1]=CX(11520,11567);c[115]=d;d=K(F,2);e=d.data;e[0]=E(1079);e[1]=CX(11568,11647);c[116]=d;d=K(F,2);e=d.data;e[0]=E(1080);e[1]=CX(11648,11743);c[117]=d;d=K(F,2);e=d.data;e[0]=E(1081);e[1]=CX(11776,11903);c[118] +=d;d=K(F,2);e=d.data;e[0]=E(1082);e[1]=CX(11904,12031);c[119]=d;d=K(F,2);e=d.data;e[0]=E(1083);e[1]=CX(12032,12255);c[120]=d;d=K(F,2);e=d.data;e[0]=E(1084);e[1]=CX(12272,12287);c[121]=d;d=K(F,2);e=d.data;e[0]=E(1085);e[1]=CX(12288,12351);c[122]=d;d=K(F,2);e=d.data;e[0]=E(1086);e[1]=CX(12352,12447);c[123]=d;d=K(F,2);e=d.data;e[0]=E(1087);e[1]=CX(12448,12543);c[124]=d;d=K(F,2);e=d.data;e[0]=E(1088);e[1]=CX(12544,12591);c[125]=d;d=K(F,2);e=d.data;e[0]=E(1089);e[1]=CX(12592,12687);c[126]=d;d=K(F,2);e=d.data;e[0] +=E(1090);e[1]=CX(12688,12703);c[127]=d;d=K(F,2);e=d.data;e[0]=E(1091);e[1]=CX(12704,12735);c[128]=d;d=K(F,2);e=d.data;e[0]=E(1092);e[1]=CX(12736,12783);c[129]=d;d=K(F,2);e=d.data;e[0]=E(1093);e[1]=CX(12784,12799);c[130]=d;d=K(F,2);e=d.data;e[0]=E(1094);e[1]=CX(12800,13055);c[131]=d;d=K(F,2);e=d.data;e[0]=E(1095);e[1]=CX(13056,13311);c[132]=d;d=K(F,2);e=d.data;e[0]=E(1096);e[1]=CX(13312,19893);c[133]=d;d=K(F,2);e=d.data;e[0]=E(1097);e[1]=CX(19904,19967);c[134]=d;d=K(F,2);e=d.data;e[0]=E(1098);e[1]=CX(19968,40959);c[135] +=d;d=K(F,2);e=d.data;e[0]=E(1099);e[1]=CX(40960,42127);c[136]=d;d=K(F,2);e=d.data;e[0]=E(1100);e[1]=CX(42128,42191);c[137]=d;d=K(F,2);e=d.data;e[0]=E(1101);e[1]=CX(42752,42783);c[138]=d;d=K(F,2);e=d.data;e[0]=E(1102);e[1]=CX(43008,43055);c[139]=d;d=K(F,2);e=d.data;e[0]=E(1103);e[1]=CX(44032,55203);c[140]=d;d=K(F,2);e=d.data;e[0]=E(1104);e[1]=CX(55296,56191);c[141]=d;d=K(F,2);e=d.data;e[0]=E(1105);e[1]=CX(56192,56319);c[142]=d;d=K(F,2);e=d.data;e[0]=E(1106);e[1]=CX(56320,57343);c[143]=d;d=K(F,2);e=d.data;e[0] +=E(1107);e[1]=CX(57344,63743);c[144]=d;d=K(F,2);e=d.data;e[0]=E(1108);e[1]=CX(63744,64255);c[145]=d;d=K(F,2);e=d.data;e[0]=E(1109);e[1]=CX(64256,64335);c[146]=d;d=K(F,2);e=d.data;e[0]=E(1110);e[1]=CX(64336,65023);c[147]=d;d=K(F,2);e=d.data;e[0]=E(1111);e[1]=CX(65024,65039);c[148]=d;d=K(F,2);e=d.data;e[0]=E(1112);e[1]=CX(65040,65055);c[149]=d;d=K(F,2);e=d.data;e[0]=E(1113);e[1]=CX(65056,65071);c[150]=d;d=K(F,2);e=d.data;e[0]=E(1114);e[1]=CX(65072,65103);c[151]=d;d=K(F,2);e=d.data;e[0]=E(1115);e[1]=CX(65104,65135);c[152] +=d;d=K(F,2);e=d.data;e[0]=E(1116);e[1]=CX(65136,65279);c[153]=d;d=K(F,2);e=d.data;e[0]=E(1117);e[1]=CX(65280,65519);c[154]=d;d=K(F,2);e=d.data;e[0]=E(1118);e[1]=CX(0,1114111);c[155]=d;d=K(F,2);e=d.data;e[0]=E(1119);e[1]=EeT();c[156]=d;d=K(F,2);e=d.data;e[0]=E(1120);e[1]=IX(0,1);c[157]=d;d=K(F,2);e=d.data;e[0]=E(1121);e[1]=AXI(62,1);c[158]=d;d=K(F,2);e=d.data;e[0]=E(1122);e[1]=IX(1,1);c[159]=d;d=K(F,2);e=d.data;e[0]=E(1123);e[1]=IX(2,1);c[160]=d;d=K(F,2);e=d.data;e[0]=E(1124);e[1]=IX(3,0);c[161]=d;d=K(F,2);e +=d.data;e[0]=E(1125);e[1]=IX(4,0);c[162]=d;d=K(F,2);e=d.data;e[0]=E(1126);e[1]=IX(5,1);c[163]=d;d=K(F,2);e=d.data;e[0]=E(1127);e[1]=AXI(448,1);c[164]=d;d=K(F,2);e=d.data;e[0]=E(1128);e[1]=IX(6,1);c[165]=d;d=K(F,2);e=d.data;e[0]=E(1129);e[1]=IX(7,0);c[166]=d;d=K(F,2);e=d.data;e[0]=E(1130);e[1]=IX(8,1);c[167]=d;d=K(F,2);e=d.data;e[0]=E(1131);e[1]=AXI(3584,1);c[168]=d;d=K(F,2);e=d.data;e[0]=E(1132);e[1]=IX(9,1);c[169]=d;d=K(F,2);e=d.data;e[0]=E(1133);e[1]=IX(10,1);c[170]=d;d=K(F,2);e=d.data;e[0]=E(1134);e[1]=IX(11, +1);c[171]=d;d=K(F,2);e=d.data;e[0]=E(1135);e[1]=AXI(28672,0);c[172]=d;d=K(F,2);e=d.data;e[0]=E(1136);e[1]=IX(12,0);c[173]=d;d=K(F,2);e=d.data;e[0]=E(1137);e[1]=IX(13,0);c[174]=d;d=K(F,2);e=d.data;e[0]=E(1138);e[1]=IX(14,0);c[175]=d;d=K(F,2);e=d.data;e[0]=E(1139);e[1]=DPq(983040,1,1);c[176]=d;d=K(F,2);e=d.data;e[0]=E(1140);e[1]=IX(15,0);c[177]=d;d=K(F,2);e=d.data;e[0]=E(1141);e[1]=IX(16,1);c[178]=d;d=K(F,2);e=d.data;e[0]=E(1142);e[1]=IX(18,1);c[179]=d;d=K(F,2);e=d.data;e[0]=E(1143);e[1]=DAN(19,0,1);c[180]=d;d +=K(F,2);e=d.data;e[0]=E(1144);e[1]=AXI(1643118592,1);c[181]=d;d=K(F,2);e=d.data;e[0]=E(1145);e[1]=IX(20,0);c[182]=d;d=K(F,2);e=d.data;e[0]=E(1146);e[1]=IX(21,0);c[183]=d;d=K(F,2);e=d.data;e[0]=E(1147);e[1]=IX(22,0);c[184]=d;d=K(F,2);e=d.data;e[0]=E(1148);e[1]=IX(23,0);c[185]=d;d=K(F,2);e=d.data;e[0]=E(1149);e[1]=IX(24,1);c[186]=d;d=K(F,2);e=d.data;e[0]=E(1150);e[1]=AXI(2113929216,1);c[187]=d;d=K(F,2);e=d.data;e[0]=E(1151);e[1]=IX(25,1);c[188]=d;d=K(F,2);e=d.data;e[0]=E(1152);e[1]=IX(26,0);c[189]=d;d=K(F,2);e +=d.data;e[0]=E(1153);e[1]=IX(27,0);c[190]=d;d=K(F,2);e=d.data;e[0]=E(1154);e[1]=IX(28,1);c[191]=d;d=K(F,2);e=d.data;e[0]=E(1155);e[1]=IX(29,0);c[192]=d;d=K(F,2);e=d.data;e[0]=E(1156);e[1]=IX(30,0);c[193]=d;Cpo=b;}; +function EI(){let a=this;F.call(a);a.csi=null;a.cF0=null;} +let EWz=(a,b)=>{if(!b&&a.csi===null)a.csi=a.sd();else if(b&&a.cF0===null)a.cF0=AHD(a.sd(),1);if(!b)return a.csi;return a.cF0;},Ex=N(Bt),Eek=a=>{X(a);},BR3=()=>{let a=new Ex();Eek(a);return a;}; +function Cjg(){let a=this;A7y.call(a);a.bZO=0;a.bZN=0;} +let BZq=a=>{let b,c,d,e;b=a.bZO;c=a.bZN;d=c!=2147483647?W7(c):E(14);e=new S;T(e);Bb(e,123);BE(e,b);Bb(e,44);Bb(H(e,d),125);return Q(e);},CFj=N(Io),E9G=(a,b,c,d)=>{return b;},Fra=a=>{return E(1157);},EVe=(a,b)=>{return 0;}; +function BRD(){let a=this;F.call(a);a.bIe=null;a.bJ4=0;} +let DLI=a=>{a.bIe=Ca(2);},DsX=()=>{let a=new BRD();DLI(a);return a;},BEa=(a,b)=>{let c,d,e;if(b>=0){c=b/32|0;if(b>=a.bJ4){BAr(a,c+1|0);a.bJ4=b+1|0;}d=a.bIe.data;d[c]=d[c]|1<<(b%32|0);return;}e=new EN;X(e);J(e);},Bjh=(a,b,c)=>{let d,e,f,g,h;if(b>=0){d=C5(b,c);if(d<=0){if(d){d=b/32|0;e=c/32|0;if(c>a.bJ4){BAr(a,e+1|0);a.bJ4=c;}if(d==e){f=a.bIe.data;f[d]=f[d]|BvX(a,b)&BgP(a,c);}else{f=a.bIe.data;f[d]=f[d]|BvX(a,b);g=d+1|0;while(g{return (-1)<<(b%32|0);},BgP=(a,b)=>{b=b%32|0;return !b?0:(-1)>>>(32-b|0)|0;},BR7=(a,b)=>{let c,d,e;if(b>=0){c=b/32|0;d=a.bIe.data;if(c{let c,d,e;if(b>=0){c=b/32|0;d=a.bIe.data;return !(c{let c,d,e,f,g;if(b>=0){c=a.bJ4;if(b>>(b%32|0)|0;if(!f){c=(c+31|0)/32|0;f=d+1|0;while(f{let c;c=a.bIe.data.length;if(c{let b,c,d;b=(a.bJ4+31|0)/32|0;a.bJ4=b*32|0;c=b-1|0;a:{while(true){if(c<0)break a;d=AOe(a.bIe.data[c]);if(d<32)break;c=c+(-1)|0;a.bJ4=a.bJ4-32|0;}a.bJ4=a.bJ4-d|0;}},U4=(a,b)=>{let c,d,e,f;c=DO(a.bIe.data.length,b.bIe.data.length);d=0;while(d=f.length)break;f[c]=0;c=c+1|0;}a.bJ4=DO(a.bJ4,b.bJ4);A_l(a);},APO=(a,b)=>{let c,d,e;c=DO(a.bIe.data.length,b.bIe.data.length);d=0;while(d{let c,d,e;c=DT(a.bJ4,b.bJ4);a.bJ4=c;BAr(a,(c+31|0)/32|0);c=DO(a.bIe.data.length,b.bIe.data.length);d=0;while(d{let c,d,e;c=DT(a.bJ4,b.bJ4);a.bJ4=c;BAr(a,(c+31|0)/32|0);c=DO(a.bIe.data.length,b.bIe.data.length);d +=0;while(d{return a.bJ4?0:1;}; +function COk(){let a=this;JI.call(a);a.cBs=null;a.cTB=0;} +let EVo=a=>{let b,c,d;b=!a.cTB?E(344):E(1158);c=a.cBs.p();d=new S;T(d);H(H(H(d,E(1159)),b),c);return Q(d);}; +function BLh(){let a=this;JI.call(a);a.ciC=null;a.cjS=null;} +let Dhl=(a,b,c)=>{Kg(a);a.ciC=b;a.cjS=c;},B3W=(a,b)=>{let c=new BLh();Dhl(c,a,b);return c;},DZ_=(a,b,c,d)=>{let e,f,g,h,i;e=a.ciC.pN(b,c,d);if(e<0)a:{f=a.cjS;g=d.bPn;e=d.bHR;h=b+1|0;e=C5(h,e);if(e>0){d.bSz=1;e=(-1);}else{i=c.u(b);if(!f.cBs.rX(i))e=(-1);else{if(Pl(i)){if(e<0&&Sh(c.u(h))){e=(-1);break a;}}else if(Sh(i)&&b>g&&Pl(c.u(b-1|0))){e=(-1);break a;}e=f.bGX.pN(h,c,d);}}}if(e<0)return (-1);return e;},Fq5=(a,b)=>{a.bGX=b;a.cjS.bGX=b;a.ciC.kv(b);},FrS=a=>{let b,c,d;b=BY(a.ciC);c=BY(a.cjS);d=new S;T(d);H(H(H(H(d, +E(1160)),b),E(1161)),c);return Q(d);},E4F=(a,b)=>{return 1;},D0E=(a,b)=>{return 1;}; +function WZ(){let a=this;JI.call(a);a.bQl=null;a.crR=0;} +let B7L=(a,b)=>{Kg(a);a.bQl=b.sg();a.crR=b.bJl;},DmA=a=>{let b=new WZ();B7L(b,a);return b;},Fk_=(a,b,c,d)=>{let e,f,g,h;e=d.bHR;if(b0)return h;}if(f{let b,c,d;b=!a.crR?E(344):E(1158);c=a.bQl.p();d=new S;T(d);H(H(H(d,E(1159)),b),c);return Q(d);},Dyf=(a,b)=>{return a.bQl.rX(b);},DuE=(a,b)=>{if(!(b instanceof AAv)){if(!(b instanceof ACu)){if(!(b instanceof WZ)){if +(b instanceof ACg)return Bm7(a.bQl,b.bYY);return 1;}return Bm7(a.bQl,b.bQl);}return BG9(a.bQl,b.bP3);}return BG9(a.bQl,b.b6i);},FxW=a=>{return a.bQl;},EXM=(a,b)=>{a.bGX=b;},E61=(a,b)=>{return 1;},BFN=N(WZ),D4T=(a,b)=>{return a.bQl.rX(A3j(AY0(b)));},EJv=a=>{let b,c,d;b=!a.crR?E(344):E(1158);c=a.bQl.p();d=new S;T(d);H(H(H(d,E(1162)),b),c);return Q(d);}; +function CPY(){let a=this;KA.call(a);a.ct$=null;a.c2X=0;} +let D71=(a,b)=>{YK(a);a.ct$=b.sg();a.c2X=b.bJl;},CbV=a=>{let b=new CPY();D71(b,a);return b;},ESb=(a,b,c)=>{return !a.ct$.rX(LG(ABU(c.u(b))))?(-1):1;},EM6=a=>{let b,c,d;b=!a.c2X?E(344):E(1158);c=a.ct$.p();d=new S;T(d);H(H(H(d,E(1162)),b),c);return Q(d);}; +function ACg(){let a=this;KA.call(a);a.bYY=null;a.cL2=0;} +let EEW=(a,b)=>{YK(a);a.bYY=b.sg();a.cL2=b.bJl;},CBJ=a=>{let b=new ACg();EEW(b,a);return b;},BFz=(a,b,c)=>{return !a.bYY.rX(c.u(b))?(-1):1;},EAW=a=>{let b,c,d;b=!a.cL2?E(344):E(1158);c=a.bYY.p();d=new S;T(d);H(H(H(d,E(1159)),b),c);return Q(d);},DDa=(a,b)=>{if(!(b instanceof ACu)){if(!(b instanceof ACg)){if(b instanceof WZ)return Bm7(a.bYY,b.bQl);if(b instanceof AAv)return 0;return 1;}return Bm7(a.bYY,b.bYY);}return BG9(a.bYY,b.bP3);}; +function BGy(){let a=this;JI.call(a);a.cdM=null;a.cu3=null;a.cfB=0;} +let Fhu=(a,b,c)=>{Kg(a);a.cdM=b;a.cfB=c;},CMl=(a,b)=>{let c=new BGy();Fhu(c,a,b);return c;},E$N=(a,b)=>{a.bGX=b;},B2v=a=>{if(a.cu3===null)a.cu3=Ue(a.cdM);return a.cu3;},Fcg=a=>{let b,c;b=B2v(a);c=new S;T(c);H(H(c,E(1163)),b);return Q(c);},DYH=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p;e=d.bHR;f=Ca(3);g=(-1);h=(-1);if(b=0&&k<11172))l=null;else{m=4352+(k/588|0)|0;b=4449+((k%588|0)/28|0)|0;n=k%28|0;l=!n?Ey([m,b]):Ey([m,b,4519+n|0]);}if(l===null){f=f.data;f[0]=j;n=j-4352|0;if +(n>=0&&n<19){if(i=0&&g<21){n=i+1|0;f[1]=j;if(n=0&&h<28){a:{b:{b=n+1|0;f[2]=j;if(a.cfB==3){n=f[0];o=a.cdM.data;if(n==o[0]&&f[1]==o[1]&&f[2]==o[2])break b;}b=(-1);break a;}b=a.bGX.pN(b,c,d);}return b;}c:{d:{if(a.cfB==2){b=f[0];o=a.cdM.data;if(b==o[0]&&f[1]==o[1])break d;}b=(-1);break c;}b=a.bGX.pN(n,c,d);}return b;}return (-1);}return (-1);}o=l.data;k=0;b=o.length;p=a.cfB;if(b==p){while(true){if(k>=p)return a.bGX.pN(i,c,d);if(o[k]!=a.cdM.data[k])break;k +=k+1|0;}return (-1);}return (-1);}return (-1);},EM$=(a,b)=>{return !(b instanceof BGy&&!Bj(B2v(b),B2v(a)))?1:0;},EHP=(a,b)=>{return 1;}; +function ACu(){KA.call(this);this.bP3=0;} +let Fbu=(a,b)=>{YK(a);a.bP3=b;},B14=a=>{let b=new ACu();Fbu(b,a);return b;},ERO=a=>{return 1;},Ezh=(a,b,c)=>{return a.bP3!=c.u(b)?(-1):1;},D2H=(a,b,c,d)=>{let e,f,g,h;if(c instanceof Bi){e=c;f=d.bHR;while(true){if(b>=f)return (-1);g=In(e,a.bP3,b);if(g<0)return (-1);h=a.bGX;b=g+1|0;if(h.pN(b,c,d)>=0)break;}return g;}return A$f(a,b,c,d);},EAB=(a,b,c,d,e)=>{let f,g;if(d instanceof Bi){f=d;a:{while(true){if(c=0)break;c=g+(-1)|0;}return g;}return (-1);}return A6Z(a, +b,c,d,e);},Eai=a=>{let b,c;b=a.bP3;c=new S;T(c);Bb(c,b);return Q(c);},EHC=(a,b)=>{if(!(b instanceof ACu)){if(b instanceof ACg)return BFz(b,0,BE4(a.bP3))<=0?0:1;if(!(b instanceof WZ)){if(b instanceof AAv)return 0;return 1;}return b.rX(a.bP3);}return b.bP3!=a.bP3?0:1;}; +function CCl(){KA.call(this);this.cDa=0;} +let DRJ=(a,b)=>{YK(a);a.cDa=LG(ABU(b));},CK2=a=>{let b=new CCl();DRJ(b,a);return b;},FgT=(a,b,c)=>{return a.cDa!=LG(ABU(c.u(b)))?(-1):1;},DSs=a=>{let b,c;b=a.cDa;c=new S;T(c);Bb(H(c,E(1164)),b);return Q(c);}; +function C9l(){let a=this;KA.call(a);a.csW=0;a.cZo=0;} +let Fca=(a,b)=>{YK(a);a.csW=b;a.cZo=A_1(b);},CkJ=a=>{let b=new C9l();Fca(b,a);return b;},DY5=(a,b,c)=>{return !(a.csW!=c.u(b)&&a.cZo!=c.u(b))?1:(-1);},E8s=a=>{let b,c;b=a.csW;c=new S;T(c);Bb(H(c,E(1165)),b);return Q(c);}; +function AL2(){let a=this;JI.call(a);a.ceh=0;a.cBe=null;a.cvS=null;a.cAH=0;} +let BBW=(a,b,c)=>{Kg(a);a.ceh=1;a.cvS=b;a.cAH=c;},FxE=(a,b)=>{let c=new AL2();BBW(c,a,b);return c;},DXd=(a,b)=>{a.bGX=b;},EDU=(a,b,c,d)=>{let e,f,g,h,i,j,k,l;e=Ca(4);f=d.bHR;if(b=f)break b;g=BUl(a,h,c,f);b=k;}break a;}b=k;}}if(b==a.cAH){i=e.data;g=0;while(true){if(g>=b)return a.bGX.pN(h,c,d);if(i[g]!=a.cvS.data[g])break;g=g+1|0;}return (-1);}return (-1);}return (-1);},BE0=a=>{let b,c;if(a.cBe===null){b=new S;T(b);c=0;while(c{let b,c;b=BE0(a);c=new S;T(c);H(H(c,E(1166)),b);return Q(c);},BUl=(a,b,c,d)=>{let e,f,g;a.ceh=1;if(b>=(d-1|0))e=c.u(b);else{d=b+1|0;e=c.u(b);f=c.u(d);if(Bys(e,f)) +{g=Fd(2).data;g[0]=e;g[1]=f;d=g.length;if(0{return !(b instanceof AL2&&!Bj(BE0(b),BE0(a)))?1:0;},EV8=(a,b)=>{return 1;},Dhc=N(AL2),DoK=N(AL2),CDw=N(TL),DMj=(a,b,c,d)=>{let e;while(true){e=a.bIw.pN(b,c,d);if(e<=0)break;b=e;}return a.bGX.pN(b,c,d);},C0_=N(TL),Fp4=(a,b,c,d)=>{let e;e=a.bIw.pN(b,c,d);if(e>=0){if(e>b){while(true){b=a.bIw.pN(e,c,d);if(b<=e)break;e=b;}b=e;}return a.bGX.pN(b,c, +d);}return (-1);},ATo=N(TL),EpO=(a,b,c,d)=>{let e;if(a.bIw.sb(d)){e=a.bIw.pN(b,c,d);if(e<0)return a.bGX.pN(b,c,d);return e;}return a.bGX.pN(b,c,d);},Erc=(a,b)=>{a.bGX=b;a.bIw.kv(b);},CvA=N(ATo),E9n=(a,b,c,d)=>{let e;e=a.bIw.pN(b,c,d);if(e<=0)e=b;return a.bGX.pN(e,c,d);},EmI=(a,b)=>{a.bGX=b;}; +function AJm(){let a=this;TL.call(a);a.b2V=null;a.bRJ=0;} +let Be2=(a,b,c,d,e,f)=>{V_(a,c,d,e);a.b2V=b;a.bRJ=f;},FyP=(a,b,c,d,e)=>{let f=new AJm();Be2(f,a,b,c,d,e);return f;},DXZ=(a,b,c,d)=>{let e,f;e=Cja(d,a.bRJ);if(a.bIw.sb(d)){if(e{return BZq(a.b2V);},C9V=N(AJm),Dzq=(a,b,c,d)=>{let e,f,g;e=0;f=a.b2V.bZN;a:{while(true){g=a.bIw.pN(b, +c,d);if(g<=b)break a;if(e>=f)break;e=e+1|0;b=g;}}if(g<0&&e{let e;if(a.bIw.sb(d)){e=a.bGX.pN(b,c,d);if(e<0)return a.bIw.pN(b,c,d);return e;}return a.bGX.pN(b,c,d);},Dlm=N(ATo),D05=(a,b,c,d)=>{let e;if(a.bIw.sb(d)){e=a.bGX.pN(b,c,d);if(e<0)e=a.bIw.pN(b,c,d);return e;}return a.bGX.pN(b,c,d);},De4=N(AJm),DJ4=(a,b,c,d)=>{let e,f,g;e=Cja(d,a.bRJ);if(a.bIw.sb(d)){f=a.b2V;if(e{let e;e=d.bHR;if(e<=b)return a.bGX.pN(b,c,d);return a.bGX.rs(b,e,c,d);},D_A=(a,b,c,d)=>{let e;e=d.bHR;if(a.bGX.rs(b,e,c,d)<0)return (-1);return b;},Fr1=a=>{return E(1167);}; +function CZX(){ADk.call(this);this.cBq=null;} +let EEk=(a,b,c,d)=>{let e,f;e=d.bHR;f=DpI(a,b,e,c);if(f>=0)e=f;if(e<=b)return a.bGX.pN(b,c,d);return a.bGX.rs(b,e,c,d);},E2h=(a,b,c,d)=>{let e,f,g,h;e=d.bHR;f=a.bGX.rt(b,c,d);if(f>=0){g=DpI(a,f,e,c);if(g>=0)e=g;g=DT(f,a.bGX.rs(f,e,c,d));if(g<=0)h=g?(-1):0;else{h=g-1|0;a:{b:{while(true){if(h=b)b=h>=g?h:h+1|0;return b;}return (-1);},DpI=(a,b,c,d)=>{while(true){if(b>=c)return (-1);if(a.cBq.sr(d.u(b)))break;b=b+1|0;}return b;},DUz=a=>{return E(1168);},Bau +=N(),Cm$=null,C_r=null,BXP=b=>{let c;if(b&1){c=Cm$;if(c===null){c=new C6g;Cm$=c;return c;}return c;}c=C_r;if(c===null){c=new C6h;C_r=c;return c;}return c;},CsU=N(TE),Duo=(a,b,c,d)=>{let e;a:{while(true){if((b+a.bI_.ro()|0)>d.bHR)break a;e=a.bI_.rp(b,c);if(e<1)break;b=b+e|0;}}return a.bGX.pN(b,c,d);},Dge=N(ANp),ECB=(a,b,c,d)=>{let e;if((b+a.bI_.ro()|0)<=d.bHR){e=a.bI_.rp(b,c);if(e>=1)b=b+e|0;}return a.bGX.pN(b,c,d);},C0p=N(AJ2),Ftc=(a,b,c,d)=>{let e,f,g,h,i;e=a.cdz;f=e.bZO;g=e.bZN;h=0;while(true){if(h>=f){a: +{b:{while(true){if(h>=g)break a;if((b+a.bI_.ro()|0)>d.bHR)break b;i=a.bI_.rp(b,c);if(i<1)break;b=b+i|0;h=h+1|0;}break a;}}return a.bGX.pN(b,c,d);}if((b+a.bI_.ro()|0)>d.bHR){d.bSz=1;return (-1);}i=a.bI_.rp(b,c);if(i<1)break;b=b+i|0;h=h+1|0;}return (-1);},Dlf=N(TE),ED$=(a,b,c,d)=>{let e;while(true){e=a.bGX.pN(b,c,d);if(e>=0)break;if((b+a.bI_.ro()|0)<=d.bHR){e=a.bI_.rp(b,c);b=b+e|0;}if(e<1)return (-1);}return e;},C5j=N(ANp),Dux=(a,b,c,d)=>{let e;e=a.bGX.pN(b,c,d);if(e<0)return a.bIw.pN(b,c,d);return e;},CR6=N(AJ2),DUP +=(a,b,c,d)=>{let e,f,g,h,i,j;e=a.cdz;f=e.bZO;g=e.bZN;h=0;while(true){if(h>=f){a:{while(true){i=a.bGX.pN(b,c,d);if(i>=0)break;if((b+a.bI_.ro()|0)<=d.bHR){i=a.bI_.rp(b,c);b=b+i|0;h=h+1|0;}if(i<1)break a;if(h>g)break a;}return i;}return (-1);}if((b+a.bI_.ro()|0)>d.bHR){d.bSz=1;return (-1);}j=a.bI_.rp(b,c);if(j<1)break;b=b+j|0;h=h+1|0;}return (-1);},BUg=N(Io),FoI=(a,b,c,d)=>{if(b&&!(d.b1t&&b==d.bPn))return (-1);return a.bGX.pN(b,c,d);},ERt=(a,b)=>{return 0;},ECC=a=>{return E(1169);}; +function CvN(){Io.call(this);this.cSX=0;} +let DzW=(a,b)=>{Kg(a);a.cSX=b;},C6_=a=>{let b=new CvN();DzW(b,a);return b;},DLc=(a,b,c,d)=>{let e,f,g;e=b{return 0;},Fxz=a=>{return E(1170);},CHr=(a,b,c,d,e)=>{let f;if(!AOq(b)&&b!=95){a:{if(Bpl(b)==6)while(true){c=c+(-1)|0;if(c{if(b==d.b6V)return a.bGX.pN(b, +c,d);return (-1);},DIj=(a,b)=>{return 0;},EeN=a=>{return E(1171);}; +function BNx(){Io.call(this);this.b6A=0;} +let CLX=(a,b)=>{Kg(a);a.b6A=b;},DFh=a=>{let b=new BNx();CLX(b,a);return b;},DTw=(a,b,c,d)=>{let e,f,g;e=!d.b1t?c.bL():d.bHR;if(b{let c;c=!W5(b,a.b6A)?0:1;I8(b,a.b6A,(-1));return c;},DQZ=a=>{return E(1172);},C7s=N(Io),EUR=(a,b,c, +d)=>{if(b>=(d.cic?c.bL():d.bHR)){d.bSz=1;d.c_3=1;return a.bGX.pN(b,c,d);}return (-1);},EcG=(a,b)=>{return 0;},DyL=a=>{return E(1173);}; +function CEy(){Io.call(this);this.cUT=null;} +let ENG=(a,b,c,d)=>{a:{if(b!=d.bHR){if(!b)break a;if(d.b1t&&b==d.bPn)break a;if(a.cUT.sv(c.u(b-1|0),c.u(b)))break a;}return (-1);}return a.bGX.pN(b,c,d);},EyM=(a,b)=>{return 0;},Fiq=a=>{return E(1174);},CgZ=N(JI),Em3=a=>{Kg(a);},EaZ=()=>{let a=new CgZ();Em3(a);return a;},EJC=(a,b,c,d)=>{let e,f,g,h;e=d.bHR;f=b+1|0;if(f<=e){g=c.u(b);if(Pl(g)){h=b+2|0;if(h<=e&&Bys(g,c.u(f)))return a.bGX.pN(h,c,d);}return a.bGX.pN(f,c,d);}d.bSz=1;return (-1);},DwU=a=>{return E(1175);},Efq=(a,b)=>{a.bGX=b;},EUu=a=>{return (-2147483602);},EM_ +=(a,b)=>{return 1;}; +function B_x(){JI.call(this);this.cGl=null;} +let EwC=(a,b)=>{Kg(a);a.cGl=b;},D94=a=>{let b=new B_x();EwC(b,a);return b;},FqR=(a,b,c,d)=>{let e,f,g,h;e=d.bHR;f=b+1|0;if(f<=e){g=c.u(b);if(Pl(g)){b=b+2|0;if(b<=e){h=c.u(f);if(Bys(g,h))return a.cGl.sr(ADq(g,h))?(-1):a.bGX.pN(b,c,d);}}return a.cGl.sr(g)?(-1):a.bGX.pN(f,c,d);}d.bSz=1;return (-1);},DMi=a=>{return E(423);},EWQ=(a,b)=>{a.bGX=b;},DYk=a=>{return (-2147483602);},Eb6=(a,b)=>{return 1;}; +function C6$(){Io.call(this);this.b$v=0;} +let FlZ=(a,b)=>{Kg(a);a.b$v=b;},DA7=a=>{let b=new C6$();FlZ(b,a);return b;},EAR=(a,b,c,d)=>{let e;e=!d.b1t?c.bL():d.bHR;if(b{let c;c=!W5(b,a.b$v)?0:1;I8(b,a.b$v,(-1));return c;},EBB=a=>{return E(1172);}; +function Cn6(){Io.call(this);this.b_m=0;} +let FmK=(a,b)=>{Kg(a);a.b_m=b;},E8q=a=>{let b=new Cn6();FmK(b,a);return b;},D8n=(a,b,c,d)=>{if((!d.b1t?c.bL()-b|0:d.bHR-b|0)>0){if(c.u(b)==10){I8(d,a.b_m,1);return a.bGX.pN(b+1|0,c,d);}return (-1);}I8(d,a.b_m,0);return a.bGX.pN(b,c,d);},DN2=(a,b)=>{let c;c=!W5(b,a.b_m)?0:1;I8(b,a.b_m,(-1));return c;},DZw=a=>{return E(1176);}; +function CDX(){Io.call(this);this.b0I=0;} +let EsY=(a,b)=>{Kg(a);a.b0I=b;},E2K=a=>{let b=new CDX();EsY(b,a);return b;},EjE=(a,b,c,d)=>{let e,f,g;e=!d.b1t?c.bL()-b|0:d.bHR-b|0;if(e){if(e<2){f=c.u(b);g=97;}else{f=c.u(b);g=c.u(b+1|0);}switch(f){case 10:case 133:case 8232:case 8233:I8(d,a.b0I,0);return a.bGX.pN(b,c,d);case 13:if(g==10){I8(d,a.b0I,0);return a.bGX.pN(b,c,d);}I8(d,a.b0I,0);return a.bGX.pN(b,c,d);default:}return (-1);}I8(d,a.b0I,0);return a.bGX.pN(b,c,d);},Dwg=(a,b)=>{let c;c=!W5(b,a.b0I)?0:1;I8(b,a.b0I,(-1));return c;},DyC=a=>{return E(1177);}; +function AXH(){let a=this;JI.call(a);a.cWp=0;a.b6X=0;} +let B1Q=(a,b,c)=>{Kg(a);a.cWp=b;a.b6X=c;},Esm=(a,b)=>{let c=new AXH();B1Q(c,a,b);return c;},DZV=(a,b,c,d)=>{let e,f,g,h;e=AYr(a,d);if(e!==null&&(b+e.bGI.length|0)<=d.bHR){f=0;while(true){if(f>=e.bGI.length){I8(d,a.b6X,e.bGI.length);return a.bGX.pN(b+e.bGI.length|0,c,d);}g=Bn(e,f);h=b+f|0;if(g!=c.u(h)&&A_1(Bn(e,f))!=c.u(h))break;f=f+1|0;}return (-1);}return (-1);},Eor=(a,b)=>{a.bGX=b;},AYr=(a,b)=>{let c,d;c=a.cWp;d=AQD(b,c);c=Bkp(b,c);return !((c|d|(c-d|0))>=0&&c<=b.cln.bL())?null:(b.cln.rL(d,c)).p();},FhR=a=> +{let b,c;b=a.bIT;c=new S;T(c);BE(H(c,E(1178)),b);return Q(c);},EFH=(a,b)=>{let c;c=!W5(b,a.b6X)?0:1;I8(b,a.b6X,(-1));return c;},Dq3=N(AXH),Fvb=(a,b,c)=>{B1Q(a,b,c);},Ed$=(a,b)=>{let c=new Dq3();Fvb(c,a,b);return c;},EwH=(a,b,c,d)=>{let e,f;e=AYr(a,d);if(e!==null&&(b+e.bGI.length|0)<=d.bHR){f=!Rl(c.p(),e,b)?(-1):e.bGI.length;if(f>=0){I8(d,a.b6X,f);return a.bGX.pN(b+f|0,c,d);}return (-1);}return (-1);},DGz=(a,b,c,d)=>{let e,f,g;e=AYr(a,d);f=d.bPn;if(e!==null&&(b+e.bGI.length|0)<=f){g=c.p();while(true){if(b>f)return (-1);b +=Sy(g,e,b);if(b<0)return (-1);if(a.bGX.pN(b+e.bGI.length|0,c,d)>=0)break;b=b+1|0;}return b;}return (-1);},DZy=(a,b,c,d,e)=>{let f,g,h;f=AYr(a,e);if(f!==null){g=d.p();a:{while(true){if(c=0)break;c=h+(-1)|0;}return h;}return (-1);}return (-1);},ElZ=(a,b)=>{return 1;},Eq$=a=>{let b,c;b=a.bIT;c=new S;T(c);BE(H(c,E(1179)),b);return Q(c);}; +function Cmx(){AXH.call(this);this.c76=0;} +let Eyz=(a,b,c)=>{B1Q(a,b,c);},Dza=(a,b)=>{let c=new Cmx();Eyz(c,a,b);return c;},EBM=(a,b,c,d)=>{let e,f;e=AYr(a,d);if(e!==null&&(b+e.bGI.length|0)<=d.bHR){f=0;while(true){if(f>=e.bGI.length){I8(d,a.b6X,e.bGI.length);return a.bGX.pN(b+e.bGI.length|0,c,d);}if(LG(ABU(Bn(e,f)))!=LG(ABU(c.u(b+f|0))))break;f=f+1|0;}return (-1);}return (-1);},Efn=a=>{let b,c;b=a.c76;c=new S;T(c);BE(H(c,E(1180)),b);return Q(c);},Sj=N(ANF),Dx6=(a,b,c,d,e)=>{CEi(a,b,c,d,e);return a;},Efe=(a,b,c,d)=>{UP(a,b,c,d);return a;},DOp=(a,b,c, +d,e)=>{BIh(a,b,c,d,e);return a;},DT9=(a,b,c,d)=>{Y7(a,b,c,d);return a;},Fjj=a=>{return Q(a);},EfK=(a,b)=>{BGd(a,b);},Fua=(a,b,c)=>{B81(a,b,c);return a;},Edi=(a,b,c)=>{BAG(a,b,c);return a;}; +function C3m(){let a=this;KA.call(a);a.bMP=null;a.cy9=null;a.crZ=null;} +let D15=(a,b,c)=>{return !BC1(a,c,b)?(-1):a.bKY;},Ee2=(a,b,c,d)=>{let e,f,g;e=d.bHR;while(true){if(b>e)return (-1);f=Bn(a.bMP,a.bKY-1|0);a:{b:{while(true){g=a.bKY;if(b>(e-g|0))break b;g=c.u((b+g|0)-1|0);if(g==f&&BC1(a,c,b))break;b=b+CnV(a.cy9,g)|0;}break a;}b=(-1);}if(b<0)return (-1);if(a.bGX.pN(b+a.bKY|0,c,d)>=0)break;b=b+1|0;}return b;},Fl2=(a,b,c,d,e)=>{let f,g;while(true){if(c=0)break;c=c+(-1)|0;}return c;},DCZ=a=>{let b,c;b=a.bMP;c=new S;T(c);H(H(c,E(1181)),b);return Q(c);},Dy6=(a,b)=>{let c;if(!(b instanceof ACu)){if(!(b instanceof ACg)){if(b instanceof WZ){a:{b:{b=b;if(!b.rX(Bn(a.bMP,0))){if(a.bMP.bGI.length<=1)break b;if(!b.rX(ADq(Bn(a.bMP,0),Bn(a.bMP,1))))break b;}c=1;break a;}c=0;}return c;}if(b instanceof AAv)return !(a.bMP.bGI.length>1&&b.b6i==ADq(Bn(a.bMP,0),Bn(a.bMP,1)))?0:1;return 1;}return BFz(b, +0,B_(a.bMP,0,1))<=0?0:1;}return b.bP3!=Bn(a.bMP,0)?0:1;},BC1=(a,b,c)=>{let d;d=0;while(d{let c,d;YK(a);c=new S;T(c);d=0;while(d{let b=new B9B();EYp(b,a);return b;},EBW=(a,b,c)=>{let d;d=0;while(true){if(d>=a.cee.bGI.length)return a.cee.bGI.length;if(Bn(a.cee,d)!=LG(ABU(c.u(b+d|0))))break;d=d+1|0;}return (-1);},Dzb=a=>{let b,c;b=a.cee;c=new S;T(c);H(H(c,E(1182)),b);return Q(c);}; +function B$a(){KA.call(this);this.b7i=null;} +let EQC=(a,b)=>{YK(a);a.b7i=Q(b);a.bKY=b.bG4;},DYj=a=>{let b=new B$a();EQC(b,a);return b;},Epm=(a,b,c)=>{let d,e,f;d=0;while(true){if(d>=a.b7i.bGI.length)return a.b7i.bGI.length;e=Bn(a.b7i,d);f=b+d|0;if(e!=c.u(f)&&A_1(Bn(a.b7i,d))!=c.u(f))break;d=d+1|0;}return (-1);},DVK=a=>{let b,c;b=a.b7i;c=new S;T(c);H(H(c,E(1183)),b);return Q(c);},A0O=N(If),CA3=N(A0O),Ews=a=>{return 0;},DE$=a=>{return C3z();},FvM=(a,b)=>{return 0;},EhL=(a,b)=>{return b.j();},BIN=N(OQ),ElG=(a,b,c)=>{b=new BV;X(b);J(b);},CA1=N(BIN),Fc$=a=> +{return SY();},ERh=a=>{return 0;},EW4=(a,b)=>{return null;},Fmc=(a,b)=>{return 0;},A11=N(Tq),EOn=a=>{let b;b=new BV;X(b);J(b);},ECr=(a,b)=>{let c;c=new BV;X(c);J(c);},Fmi=(a,b,c)=>{let d;d=new BV;X(d);J(d);},CA2=N(A11),ECA=(a,b)=>{let c;c=new EN;X(c);J(c);},D5Y=a=>{return 0;},Exx=a=>{return C3z();},EnK=(a,b)=>{let c;if(b){c=new EN;X(c);J(c);}Le();return Dpg;},E3m=a=>{return 1;},CAZ=N(),EtT=a=>{return 0;},Enw=a=>{let b;b=new Kx;X(b);J(b);},A_$=N(0),CA0=N(),DWs=a=>{return 0;},E4E=a=>{let b;b=new Kx;X(b);J(b);},Fn4 +=a=>{let b;b=new BP;X(b);J(b);},ErU=a=>{let b;b=new Kx;X(b);J(b);},Fm6=a=>{return 0;},Fxl=a=>{return (-1);},Cfr=N(),COH=N(0),CxZ=N(); +function CiU(){KA.call(this);this.crK=0;} +let D$z=(a,b,c)=>{let d,e;d=b+1|0;e=c.u(b);d=c.u(d);return a.crK!=A3j(AY0(ADq(e,d)))?(-1):2;},E1o=a=>{let b,c;b=Ue(Wr(a.crK));c=new S;T(c);H(H(c,E(1164)),b);return Q(c);}; +function BmS(){JI.call(this);this.b0g=0;} +let E4R=(a,b)=>{Kg(a);a.b0g=b;},Ceb=a=>{let b=new BmS();E4R(b,a);return b;},EU$=(a,b)=>{a.bGX=b;},DMb=(a,b,c,d)=>{let e,f;e=b+1|0;if(e<=d.bHR){f=c.u(b);if(b>d.bPn&&Pl(c.u(b-1|0)))return (-1);if(a.b0g==f)return a.bGX.pN(e,c,d);return (-1);}d.bSz=1;return (-1);},D34=(a,b,c,d)=>{let e,f,g,h,i;if(c instanceof Bi){e=c;f=d.bPn;g=d.bHR;while(true){if(b>=g)return (-1);h=In(e,a.b0g,b);if(h<0)return (-1);if(h>f&&Pl(Bn(e,h-1|0))){b=h+1|0;continue;}i=a.bGX;b=h+1|0;if(i.pN(b,c,d)>=0)break;}return h;}return A$f(a,b,c,d);},EOu +=(a,b,c,d,e)=>{let f,g;if(d instanceof Bi){f=e.bPn;g=d;a:{while(true){if(cf&&Pl(Bn(g,c-1|0))){c=c+(-2)|0;continue;}if(a.bGX.pN(c+1|0,d,e)>=0)break;c=c+(-1)|0;}return c;}return (-1);}return A6Z(a,b,c,d,e);},EHk=a=>{let b,c;b=a.b0g;c=new S;T(c);Bb(c,b);return Q(c);},Et0=(a,b)=>{if(!(b instanceof ACu)){if(!(b instanceof ACg)){if(!(b instanceof WZ)){if(!(b instanceof AAv)){if(!(b instanceof Bm8)){if(b instanceof BmS)return b.b0g!=a.b0g?0:1;return 1;}return 0;}return 0;}return 0;}return 0;}return 0;},FdI +=(a,b)=>{return 1;}; +function Bm8(){JI.call(this);this.b02=0;} +let EDM=(a,b)=>{Kg(a);a.b02=b;},CIg=a=>{let b=new Bm8();EDM(b,a);return b;},Fjy=(a,b)=>{a.bGX=b;},DYX=(a,b,c,d)=>{let e,f,g,h;e=d.bHR;f=b+1|0;g=C5(f,e);if(g<=0){h=c.u(b);if(g<0&&Sh(c.u(f)))return (-1);if(a.b02==h)return a.bGX.pN(f,c,d);return (-1);}d.bSz=1;return (-1);},FrD=(a,b,c,d)=>{let e,f,g;if(c instanceof Bi){e=c;f=d.bHR;while(true){if(b>=f)return (-1);g=In(e,a.b02,b);if(g<0)return (-1);b=g+1|0;if(b=0)break;}return g;}return A$f(a,b,c,d);},D$w=(a,b, +c,d,e)=>{let f,g,h;if(d instanceof Bi){f=d;g=e.bHR;a:{while(true){if(c=0)break;c=c+(-1)|0;}return c;}return (-1);}return A6Z(a,b,c,d,e);},FwJ=a=>{let b,c;b=a.b02;c=new S;T(c);Bb(c,b);return Q(c);},D17=(a,b)=>{if(!(b instanceof ACu)){if(!(b instanceof ACg)){if(!(b instanceof WZ)){if(!(b instanceof AAv)){if(!(b instanceof BmS)){if(b instanceof Bm8)return b.b02!=a.b02?0:1;return 1;}return 0;}return 0;}return 0;}return 0;}return 0;},DTe +=(a,b)=>{return 1;}; +function AAv(){let a=this;KA.call(a);a.b$U=0;a.b$m=0;a.b6i=0;} +let DUa=(a,b,c)=>{let d,e;d=b+1|0;e=c.u(b);d=c.u(d);return !(a.b$U==e&&a.b$m==d)?(-1):2;},Emx=(a,b,c,d)=>{let e,f,g;if(c instanceof Bi){e=c;f=d.bHR;while(b=f)continue;g=Bn(e,b);if(a.b$m==g&&a.bGX.pN(b+1|0,c,d)>=0)return b+(-1)|0;b=b+1|0;}return (-1);}return A$f(a,b,c,d);},DvG=(a,b,c,d,e)=>{let f;if(d instanceof Bi){f=d;a:{while(true){if(c=0)break;c=c ++(-1)|0;}return c;}return (-1);}return A6Z(a,b,c,d,e);},EZs=a=>{let b,c,d;b=a.b$U;c=a.b$m;d=new S;T(d);Bb(d,b);Bb(d,c);return Q(d);},Fsz=(a,b)=>{if(!(b instanceof AAv)){if(!(b instanceof WZ)){if(!(b instanceof ACu)){if(b instanceof ACg)return 0;return 1;}return 0;}return b.rX(a.b6i);}return b.b6i!=a.b6i?0:1;},C6g=N(Bau),Ewh=(a,b)=>{return b!=10?0:1;},Fb0=(a,b,c)=>{return b!=10?0:1;},C6h=N(Bau),EXv=(a,b)=>{return !(b!=10&&b!=13&&b!=133&&(b|1)!=8233)?1:0;},DHn=(a,b,c)=>{a:{b:{if(b!=10&&b!=133&&(b|1)!=8233){if +(b!=13)break b;if(c==10)break b;}b=1;break a;}b=0;}return b;}; +function CAn(){let a=this;F.call(a);a.cC1=null;a.cFt=null;a.cbX=0;a.cY3=0;} +let DzU=(a,b)=>{let c,d;while(true){c=a.cbX;if(b{let b=new CAn();DzU(b,a);return b;},CR9=(a,b,c)=>{let d,e,f,g;d=0;e=a.cbX;f=b&e;while(true){g=a.cC1.data;if(!g[f])break;if(g[f]==b)break;d=(d+1|0)&e;f=(f+d|0)&e;}g[f]=b;a.cFt.data[f]=c;},CnV=(a,b)=>{let c,d,e,f;c=a.cbX;d=b&c;e=0;while(true){f=a.cC1.data[d];if(!f)break;if(f==b)return a.cFt.data[d];e=(e+1|0)&c;d=(d+e|0)&c;}return a.cY3;},Bz9=N(EI),E8L=a=>{return;},D_w=()=>{let a +=new Bz9();E8L(a);return a;},CH6=a=>{return Pp(J5(TW(),9,13),32);},Bl2=N(EI),DF5=a=>{return;},Ekm=()=>{let a=new Bl2();DF5(a);return a;},C4c=a=>{return J5(TW(),48,57);},CUV=N(EI),E7Y=a=>{return;},EbS=()=>{let a=new CUV();E7Y(a);return a;},EWW=a=>{return J5(TW(),97,122);},CAY=N(EI),EAn=a=>{return;},DtC=()=>{let a=new CAY();EAn(a);return a;},D_Q=a=>{return J5(TW(),65,90);},CfU=N(EI),D0w=a=>{return;},DU5=()=>{let a=new CfU();D0w(a);return a;},E6I=a=>{return J5(TW(),0,127);},BgC=N(EI),EwK=a=>{return;},DWb=()=>{let a +=new BgC();EwK(a);return a;},B_E=a=>{return J5(J5(TW(),97,122),65,90);},BdK=N(BgC),D4H=a=>{return;},Fpd=()=>{let a=new BdK();D4H(a);return a;},CRl=a=>{return J5(B_E(a),48,57);},CXY=N(EI),ETK=a=>{return;},Dz0=()=>{let a=new CXY();ETK(a);return a;},DOS=a=>{return J5(J5(J5(TW(),33,64),91,96),123,126);},Bia=N(BdK),FbC=a=>{return;},EeE=()=>{let a=new Bia();FbC(a);return a;},Dh9=a=>{return J5(J5(J5(CRl(a),33,64),91,96),123,126);},Cm1=N(Bia),D_s=a=>{return;},Fh5=()=>{let a=new Cm1();D_s(a);return a;},D65=a=>{return Pp(Dh9(a), +32);},Cc5=N(EI),Epn=a=>{return;},Evq=()=>{let a=new Cc5();Epn(a);return a;},EgB=a=>{return Pp(Pp(TW(),32),9);},C_R=N(EI),EZY=a=>{return;}; +let D2O=()=>{let a=new C_R();EZY(a);return a;},D6W=a=>{return Pp(J5(TW(),0,31),127);},Dj6=N(EI),D0S=a=>{return;},EMD=()=>{let a=new Dj6();D0S(a);return a;},DHr=a=>{return J5(J5(J5(TW(),48,57),97,102),65,70);},Dqj=N(EI),DKE=a=>{return;},D9f=()=>{let a=new Dqj();DKE(a);return a;},DR5=a=>{let b;b=new DnP;b.c_H=a;GF(b);b.bIA=1;return b;},CX7=N(EI),FbX=a=>{return;},DYI=()=>{let a=new CX7();FbX(a);return a;},DIW=a=>{let b;b=new CiZ;b.c9B=a;GF(b);b.bIA=1;return b;},CKV=N(EI),E37=a=>{return;},EYE=()=>{let a=new CKV();E37(a);return a;},DzC +=a=>{let b;b=new CcO;b.dei=a;GF(b);return b;},CeN=N(EI),D6X=a=>{return;},DxB=()=>{let a=new CeN();D6X(a);return a;},DEC=a=>{let b;b=new CcN;b.daK=a;GF(b);return b;},CV_=N(EI),EwF=a=>{return;},ES$=()=>{let a=new CV_();EwF(a);return a;},EOe=a=>{let b;b=new DgB;b.c8I=a;GF(b);Bjh(b.bIz,0,2048);b.bIA=1;return b;},CPd=N(EI),DvJ=a=>{return;},EOX=()=>{let a=new CPd();DvJ(a);return a;},D2k=a=>{let b;b=new DjT;b.c9M=a;GF(b);b.bIA=1;return b;},CYE=N(EI),DBc=a=>{return;},Fpa=()=>{let a=new CYE();DBc(a);return a;},Fwc=a=> +{let b;b=new C$H;b.ddL=a;GF(b);b.bIA=1;return b;},Cqa=N(EI),DBZ=a=>{return;},E4x=()=>{let a=new Cqa();DBZ(a);return a;},EKI=a=>{let b;b=new C2v;b.da4=a;GF(b);return b;},CVm=N(EI),EQ0=a=>{return;},EZQ=()=>{let a=new CVm();EQ0(a);return a;},D5D=a=>{let b;b=new CYj;b.c7W=a;GF(b);b.bIA=1;return b;},CGZ=N(EI),Eua=a=>{return;},ENV=()=>{let a=new CGZ();Eua(a);return a;},E6w=a=>{let b;b=new Dii;b.ddp=a;GF(b);b.bIA=1;return b;},Cde=N(EI),D1i=a=>{return;},E_q=()=>{let a=new Cde();D1i(a);return a;},Fma=a=>{let b;b=new CPe;b.dby +=a;GF(b);b.bIA=1;return b;}; +let Dhg=N(EI),DAB=a=>{return;},EXD=()=>{let a=new Dhg();DAB(a);return a;},DQi=a=>{let b;b=new C0U;b.deO=a;GF(b);b.bIA=1;return b;},C6f=N(EI),EmE=a=>{return;},DUQ=()=>{let a=new C6f();EmE(a);return a;},Fef=a=>{let b;b=new Dkk;b.daT=a;GF(b);return b;},Cb1=N(EI),E4Z=a=>{return;},FeR=()=>{let a=new Cb1();E4Z(a);return a;},DDS=a=>{let b;b=new CoL;b.deC=a;GF(b);return b;},CaT=N(EI),EWA=a=>{return;},D0Q=()=>{let a=new CaT();EWA(a);return a;},EDa=a=>{let b;b=new CJb;b.dap=a;GF(b);b.bIA=1;return b;},DhY=N(EI),FmY=a=> +{return;},Fsx=()=>{let a=new DhY();FmY(a);return a;},DUq=a=>{let b;b=new B9T;b.de1=a;GF(b);b.bIA=1;return b;},Bis=N(EI),E6z=a=>{return;},D7Z=()=>{let a=new Bis();E6z(a);return a;},Cc7=a=>{return Pp(J5(J5(J5(TW(),97,122),65,90),48,57),95);},CL2=N(Bis),Ejj=a=>{return;},FiB=()=>{let a=new CL2();Ejj(a);return a;},D7n=a=>{let b;b=AHD(Cc7(a),1);b.bIA=1;return b;},C3n=N(Bz9),FeQ=a=>{return;},Ds4=()=>{let a=new C3n();FeQ(a);return a;},EeY=a=>{let b;b=AHD(CH6(a),1);b.bIA=1;return b;},Dan=N(Bl2),Fob=a=>{return;},E7R= +()=>{let a=new Dan();Fob(a);return a;},Eza=a=>{let b;b=AHD(C4c(a),1);b.bIA=1;return b;}; +function C0Q(){let a=this;EI.call(a);a.cXw=0;a.cO1=0;} +let EZ1=(a,b,c)=>{a.cXw=b;a.cO1=c;},CX=(a,b)=>{let c=new C0Q();EZ1(c,a,b);return c;},D55=a=>{return J5(TW(),a.cXw,a.cO1);},CGH=N(EI),Eby=a=>{return;},EeT=()=>{let a=new CGH();Eby(a);return a;},Ea0=a=>{return J5(J5(TW(),65279,65279),65520,65533);}; +function B6W(){let a=this;EI.call(a);a.cJf=0;a.cC$=0;a.cOc=0;} +let D1C=(a,b,c)=>{a.cC$=c;a.cJf=b;},IX=(a,b)=>{let c=new B6W();D1C(c,a,b);return c;},DHi=(a,b,c,d)=>{a.cOc=d;a.cC$=c;a.cJf=b;},DAN=(a,b,c)=>{let d=new B6W();DHi(d,a,b,c);return d;},Flz=a=>{let b;b=Ebv(a.cJf);if(a.cOc)Bjh(b.bIz,0,2048);b.bIA=a.cC$;return b;}; +function BPN(){let a=this;EI.call(a);a.csz=0;a.cAU=0;a.c10=0;} +let Exv=(a,b,c)=>{a.cAU=c;a.csz=b;},AXI=(a,b)=>{let c=new BPN();Exv(c,a,b);return c;},DIP=(a,b,c,d)=>{a.c10=d;a.cAU=c;a.csz=b;},DPq=(a,b,c)=>{let d=new BPN();DIP(d,a,b,c);return d;},Ds9=a=>{let b;b=new CIF;Dd_(b,a.csz);if(a.c10)Bjh(b.bIz,0,2048);b.bIA=a.cAU;return b;},Eul=N(),BLD=N(0); +function CmB(){F.call(this);this.cFh=null;} +let D5X=b=>{let c;c=new CmB;c.cFh=b;return c;},Bs$=(a,b)=>{a.cFh.i(b);},EJt=(a,b)=>{a.cFh.gh(b);}; +function CdE(){let a=this;F.call(a);a.cRf=null;a.cRg=null;a.cRd=0;a.cRe=null;} +let B9C=N(0),B0H=N(0); +function B7O(){let a=this;QP.call(a);a.bXl=0;a.bLY=null;a.bSg=0;a.bUs=0;} +let DBl=a=>{a.bLY=K(F,9);},U1=()=>{let a=new B7O();DBl(a);return a;},EY=(a,b)=>{let c;B$(b);C7$(a,A87(a)+1|0);c=CXH(a.bSg,a.bLY.data.length);a.bSg=c;a.bLY.data[c]=b;a.bXl=a.bXl+1|0;},BJR=(a,b)=>{let c,d;B$(b);C7$(a,A87(a)+1|0);c=a.bLY.data;d=a.bUs;c[d]=b;a.bUs=BZM(d,c.length);a.bXl=a.bXl+1|0;},Fp=a=>{let b;b=DmF(a);if(b===null){b=new Kx;X(b);J(b);}return b;},DmF=a=>{let b,c,d;b=a.bSg;if(b!=a.bUs){c=a.bLY.data;d=c[b];c[b]=null;a.bSg=BZM(b,c.length);a.bXl=a.bXl+1|0;return d;}return null;},JX=a=>{return RL(a)? +null:a.bLY.data[a.bSg];},CCu=(a,b)=>{BJR(a,b);return 1;},A87=a=>{let b,c;b=a.bUs;c=a.bSg;return b>=c?b-c|0:(a.bLY.data.length-c|0)+b|0;},RL=a=>{return a.bSg!=a.bUs?0:1;},BZM=(b,c)=>{b=b+1|0;if(b==c)b=0;return b;},CXH=(b,c)=>{let d;d=b+(-1)|0;if(d==(-1))d=c-1|0;return d;},CzD=a=>{let b;b=new Dk5;b.c0S=a;b.c3y=a.bXl;b.cDy=a.bSg;b.c6H=(-1);b.cpS=A87(a);return b;},C7$=(a,b)=>{let c,d,e,f,g,h;c=a.bLY.data.length;if(b>=c){c=DT(c*2|0,((b*3|0)/2|0)+1|0);if(c<1)c=2147483647;d=K(F,c);e=0;f=a.bSg;c=a.bUs;if(f<=c){g=d.data;while +(f=h.length)break;b=e+1|0;g[e]=h[f];f=f+1|0;e=b;}f=0;while(f{let c,d,e,f,g,h,i;c=Bxr(Q5(b));d=RB(c);e=Ca(d*2|0);f=e.data;g=0;h=0;while(h{let c,d,e,f,g,h,i,j,k,l;c=Ca(65536);d=c.data;e=0;f=0;g=0;a:{while(true){h=b.data;if(g>=h.length)break a;i=h[g];j=h[g+1|0];k=d.length;if +(i{if(b<=92){if(b>34)return ((b-32|0)-1|0)<<24>>24;return (b-32|0)<<24>>24;}return ((b-32|0)-2|0)<<24>>24;},EKr=b=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;c=K(Be_,16384);d=c.data;e=BD(16384);f=e.data;g=0;h=0;i=0;j=0;a:while(true){if(j>=b.bGI.length){if(g<=0)k=h;else{k=h+1|0;d[h]=Cba(i,i+g|0,AQU(e,g));}return MK(c,k);}l=BmD(Bn(b,j));if(l==64){j=j+1|0;l=BmD(Bn(b,j));m=0;k=1;n=0;while(n<3){j=j+1|0;m=m|Ev(k,BmD(Bn(b, +j)));k=k*64|0;n=n+1|0;}}else if(l<32)m=1;else{l=(l-32|0)<<24>>24;j=j+1|0;m=BmD(Bn(b,j));}if(!l&&m>=128){if(g>0){k=h+1|0;d[h]=Cba(i,i+g|0,AQU(e,g));h=k;}i=i+(g+m|0)|0;g=0;}else while(m>0){k=f.length;if(g!=k){n=h;o=i;i=g;}else{n=h+1|0;p=new Be_;o=i+g|0;CBv(p,i,o,AQU(e,g));d[h]=p;i=0;}q=DO(m,k-i|0);g=i+q|0;if(i>g)break a;while(i{a.cZ$=b;a.cLJ=c;a.c0c=d;},Cba=(a,b,c)=>{let d=new Be_();CBv(d,a,b,c);return d;}; +function CAG(){let a=this;F.call(a);a.cgh=null;a.bY2=0;} +let EgO=(a,b)=>{a.cgh=b;},Bxr=a=>{let b=new CAG();EgO(b,a);return b;},EiT=N(),RB=b=>{let c,d,e,f,g;c=0;d=1;while(true){e=b.cgh.data;f=b.bY2;b.bY2=f+1|0;g=CoR(e[f]);f=(g%2|0)!=1?0:1;c=c+Ev(d,g/2|0)|0;d=d*46|0;if(!f)break;}return c;},AJ1=b=>{let c,d;c=RB(b);d=c/2|0;if(c%2|0)d= -d|0;return d;},CoR=b=>{if(b>=34){if(b<92)return (b-32|0)-1|0;return (b-32|0)-2|0;}return b-32|0;},CiC=N(),CPB=null,AZu=()=>{AZu=Z(CiC);Esq();},Eok=(b,c)=>{let d,e,f,g,h,i,j,k,l,m;AZu();b=b.data;d=BBk(c,null);e=Bk();f=Bk();g=b.length;h= +0;i=d;while(h=c.bGJ)break b;if(BO(BgN(Be(c,g)),E(91)))break;g=g+1|0;}break a;}g=(-1);}i=Bk();if(g==(-1)){l=E(256);h=0;while(h{AZu();return CQ(BgN(b));},BgN=b=>{AZu();return (C8(b)).bGP;},Esq=()=>{CPB=Dp(E(1186));}; +function CD1(){let a=this;F.call(a);a.cwC=null;a.cD5=null;a.cAN=0;} +let AKY=()=>{return BGm(null,Bk(),1);},Ftk=(a,b)=>{let c,d,e,f,g,h;c=FS(B_(b,1,b.bGI.length-1|0));d=Eq(c,47);if(d!=(-1)){e=CC(c,d+1|0);f=Cea(a,B_(c,0,d));if(f!==null){g=DBg(Cq(f),Cq(e));if(g!==null){h=Fe(g.join('\n'));b=new ANc;TU();A2x(b,A1z(h,Vb));return b;}return null;}return null;}return null;},Faw=(a,b)=>{return !(b instanceof B0W)?null:b.cC5;},Cfu=a=>{return BGm(a.cwC,a.cD5,0);},Cea=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;if(Ce7(a,b)){c=EiQ(Cq(b));d=Dy();if(c===null){e=Dg(a);f=new S;T(f);H(H(f,E(1187)),b);Ot(e, +Q(f));}else{g=(IW(Fe(D8P(c)),E(349))).data;h=g.length;i=0;while(i{let c,d,e,$$je;try{c=CR();H(H(c,b),E(1192));d=Brr(CH(c));}catch($$e){$$je=P($$e);if($$je instanceof DR){c=$$je;c=c.bW();e=new S;T(e);H(H(H(H(e,E(1193)),b),E(1194)),c);BFt(Q(e));return 0;} +else{throw $$e;}}return d;},DQ_=(a,b,c,d)=>{a.cwC=b;a.cD5=c;a.cAN=d;},BGm=(a,b,c)=>{let d=new CD1();DQ_(d,a,b,c);return d;},CJL=(a,b)=>{return BGm(b,a.cD5,a.cAN);},EMF=(a,b)=>{return B4R(a,b,E(1195));},B4R=(a,b,c)=>{let d,e,f,g;a:{if(a.cAN&&!BO(b,E(1196))&&!BO(b,E(1197))){if(!BO(b,E(1198)))break a;if(!Dr(b,E(372)))break a;}return null;}d=a.cwC;if(!(E_d()?1:0))b=null;else if(d!==null&&!(d instanceof B8E))b=null;else{d=d===null?null:d.cVs;NU();e=new Bq0;f=new S;T(f);g=H(H(f,E(1199)),b);Bb(g,10);g=H(g,d);Bb(g, +10);H(g,c);BDr(e,E(55),Q(f),b,d,c);c=BKe(e);if(!(c!==null&&!c.cLH))b=null;else{e=c.cJD;if(e===null){b=new B0W;d=c.cNr;c=c.cVy;b.cC5=d;b.cuR=c;}else{c=new S;T(c);H(H(H(H(c,E(1200)),b),E(7)),e);BFt(Q(c));b=null;}}}return b;},BNJ=N(0); +function CRB(){let a=this;F.call(a);a.cBU=null;a.cK$=null;} +let Drd=()=>{let b,c,d;b=new CRB;b.cBU=Dka();b.cK$=E9();c=b.cBU;d=new S;T(d);H(d,E(63));d=Q(d);Es(c.cdG,E(1201),d);return b;},D$i=(a,b,c)=>{let d,e,f,g,h;d=G3(G8(a.cK$));e=d;while(Gl(e)){f=GZ(d);g=f.bHt;h=f.bHe;ZS();f=AH$;Bkt(b,g,h,f,c);}},C7t=N(),Vb=null,FdZ=null,EFb=null,DDi=null,D92=null,D$l=null,TU=()=>{TU=Z(C7t);E_H();},E_H=()=>{let b;AYC();Vb=B9d;b=new CSN;Bsb(b,E(1202),K(Bi,0));FdZ=b;b=new CaE;Bsb(b,E(1203),K(Bi,0));EFb=b;DDi=BLP(E(1204),1,0);D92=BLP(E(1205),0,0);D$l=BLP(E(1206),0,1);}; +function BpH(){let a=this;F.call(a);a.b5n=null;a.czQ=null;a.cKZ=0;a.c7g=null;a.cL9=null;} +let DOA=(a,b,c,d,e,f)=>{let g,h,i,j,$$je;g=new CyJ;CSP(g);g.b9b=Dy();g.caF=new ACe;a.czQ=g;h=new AT9;g=c.cBU;i=Dka();j=i.cdG;g=g.cdG;AFQ(j,g);A3L();h.bRT=Bk();h.bPG=Bk();j=new BOa;BhI();CJN(j,C6B);h.bSL=j;h.czO=Dy();h.cC9=G$();h.cC4=G$();h.b4G=FaZ();h.cel=null;h.chm=A9R();h.c3U=B$(i);h.bKD=b;h.c9s=e;h.cCo=B$(d);a.b5n=h;a:{b:{try{D$i(c,a.czQ,f);break a;}catch($$e){$$je=P($$e);if($$je instanceof Ij){g=$$je;break b;}else{throw $$e;}}}GP(g);}},Evl=(a,b,c,d,e)=>{let f=new BpH();DOA(f,a,b,c,d,e);return f;},ESZ=(a, +b)=>{let c,d,e,f,$$je;a:{b:{try{Ot(Bo(BpH),E(1207));A5U(a.b5n,a.czQ,b,null,0);Ot(Bo(BpH),E(1208));break a;}catch($$e){$$je=P($$e);if($$je instanceof Ij){c=$$je;break b;}else{throw $$e;}}}d=a.b5n.bRT;b=C20(c.cOu,c.cft);U(d,b);b=a.b5n.bPG;e=c.cft;c=b;f=c.bGJ-1|0;GJ(c,f,C20(Be(c,f),e));a.cKZ=1;}b=a.b5n;a.c7g=b.bRT;a.cL9=b.b4G;return b.cC9;},ECh=a=>{return a.b5n.bPG;}; +function X9(){let a=this;F.call(a);a.bGP=null;a.bIM=null;a.bO3=null;a.b9z=null;a.b8i=BH;a.cIJ=null;a.b6Q=null;} +let Ec1=null,CfD=BH,C80=0,AW$=()=>{AW$=Z(X9);DuJ();},BRq=(a,b,c)=>{AW$();A1Q(a,b,c,null);},Ia=(a,b)=>{let c=new X9();BRq(c,a,b);return c;},A1Q=(a,b,c,d)=>{AW$();a.b8i=V(-1);a.b6Q=null;a.bGP=B$(b);a.bIM=c;a.bO3=d;},XT=(a,b,c)=>{let d=new X9();A1Q(d,a,b,c);return d;},BI$=a=>{let b,c;if(a.bGP.bGI.length){b=a.bGP;c=new S;T(c);H(H(c,E(1209)),b);return Q(c);}return E(1210);},BME=(a,b)=>{let c,d,e;c=new X9;d=a.bGP;e=new S;T(e);H(H(e,d),b);A1Q(c,Q(e),a.bIM,a.bO3);return c;},C20=(a,b)=>{return XT(a.bGP,a.bIM,b);},AYG +=(a,b,c)=>{return XT(B_(a.bGP,b,c),a.bIM,a.bO3);},C8=a=>{let b,c;if(a.bGP.bGI.length){if(a.b9z===null){b=ES(a.bGP);if(b===a.bGP)a.b9z=a;else{c=XT(b,a.bIM,a.bO3);a.b9z=c;c.b8i=a.b8i;c.b9z=c;}}return a.b9z;}return a;},CHp=a=>{let b,c,d,e;b=a.bGP;c=Dk(KG(b,9,32));if(BO(c,E(1211))){d=IZ(b,E(1212));if(d!=(-1)){c=new X9;e=a.bGP;A1Q(c,BLl(a,B_(e,d+2|0,e.bGI.length)),a.bIM,a.bO3);return c;}}if(Dr(c,E(1212))){d=AID(b,E(1211));if(d!=(-1))return XT(BLl(a,B_(a.bGP,0,d)),a.bIM,a.bO3);}if(CB(c,E(1213))&&CB(c,E(1214)))return XT(BLl(a, +a.bGP),a.bIM,a.bO3);return a;},BLl=(a,b)=>{if(CB(b,E(1213))&&CB(b,E(1214)))return Ih(b,E(1215),E(14));return b;},ZA=a=>{return a.bGP;},BlJ=a=>{return a.bIM;},Dp3=a=>{if(DS(a.b8i,V(-1)))a.b8i=DiQ(a.bGP);return a.b8i;},Ki=a=>{if(a.cIJ===null)a.cIJ=Fa1(a);return a.cIJ;},W0=a=>{return a.bGP.bGI.length;},AAS=(a,b)=>{return Bn(a.bGP,b);},BRd=b=>{AW$();a:{b:{if(!(b>=97&&b<=122)){if(b<65)break b;if(b>90)break b;}b=1;break a;}b=0;}return b;},DuJ=()=>{C80=0;Ec1=Dp(E(1216));CfD=DiQ(E(1217));},E0G=N(),EQ3=b=>{Ej2(b);},Ej2 +=b=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;c=0;d=b;while(c0)Bb(j,o);else if(o!=57603)Bb(j,o);else{q=XT(Q(j),g,h);if(!l){GJ(d,c,q);l=1;}else{Ik(d,(c+1|0)+m|0,q);m=m+1|0;}j.bG4=0;}n=n+1|0;}r=XT(Q(j),g,h);if(!l)GJ(d,c,r);else{Ik(d,(c+1|0)+m|0,r);m=m+1|0;}c=c+m|0;}c +=c+1|0;}}; +function ZB(){let a=this;Pn.call(a);a.bXQ=null;a.b3R=null;} +let EpQ=0,BWH=()=>{BWH=Z(ZB);EUv();},Dss=(a,b,c)=>{BWH();AIR(a,b,c);},BIG=a=>{let b;b=a.bXQ;return b.cf(b.dV()-1|0);},ELv=a=>{let b,c,d,e,f,g;a:{b=Bk();c=b;U(c,E(344));d=a.bXQ.dV();if(d<=40){e=a.bXQ.dX();while(true){if(!e.dY())break a;BZ8(a,b,e.dZ());}}f=A6v(LV(a.bXQ,0,5));while(A5t(f)){BZ8(a,b,A18(f));}U(c,E(1218));g=(d-5|0)-20|0;e=new S;T(e);f=H(e,E(1219));BE(f,g);H(f,E(1220));U(c,Q(e));U(c,E(1218));e=a.bXQ;g=d-20|0;f=A6v(LV(e,g,d));while(A5t(f)){BZ8(a,b,A18(f));}}return b;},BZ8=(a,b,c)=>{let d;d=c.bGP;if +(d.bGI.length>120){c=B_(d,0,120);d=new S;T(d);H(H(d,c),E(1221));d=Q(d);}U(b,d);},ECT=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o;a:{Go();c=AGT(BZP(Hu));d=AGT(BZP(BoR));e=AGT(BZP(AU8));f=A69(AGT(BNI(BoR)));g=ELv(a);h=new AOz;i=(BIG(a)).bIM;j=Bk();if(i!==null){Cx5(a,j,i);while(true){i=i.cGk;if(i===null)break a;Cx5(a,j,i);}}}ASj(h,j,c);h=A8w(KN(h,1.0,1.0,1.0,4.0),BoR);k=new AOz;j=g;l=j.bGJ-1|0;i=g;ASj(k,LV(i,0,l),d);g=new AOz;l=j.bGJ;i=LV(i,l-1|0,l);c=AU8;Lx();ASj(g,i,Csc(AGm(d,RH),c));m=new AOz;n=K(Bi,1);c=a.b3R;d= +c.cRy;if(d===null)c=c.b2f;else{j=c.b2f;F8();c=d===AHH?E(729):FS(d.bHx);d=new S;T(d);Bb(H(H(H(d,j),E(1222)),c),41);c=Q(d);}o=n.data;d=new S;T(d);Bb(d,32);H(d,c);o[0]=Q(d);ASj(m,Bv(n),e);c=new AOz;d=Bg6();Bb2();if(!BCa){MH(d,B9S());Dfp(d,E(14));}ASj(c,BdO(d),f);c=KN(c,0.0,2.0,0.0,8.0);B3();return A8w(Js(FT(c,FT(FT(FT(h,k,CF),g,CF),m,CF),CF),5.0,5.0),Hu);},Cx5=(a,b,c)=>{let d,e,f;c=c;d=c.cdC;if(d!==null){e=c.bT9+1|0;c=new S;T(c);f=H(H(H(c,E(1223)),d),E(1224));BE(f,e);H(f,E(1225));c=Q(c);U(b,c);}},CWx=a=>{return (a.bXQ.dV() +*10|0)+a.b3R.cK1|0;},EUv=()=>{EpQ=0;},CoB=N(ZB),ERT=(a,b,c,d)=>{let e,f;e=BcZ((Be(b,0)).bGP);f=Ua;Dss(a,Cpr(b,OS(e,f)),d);a.bXQ=c;c=new ACj;Yw();AGr(c,AKj,(BIG(a)).bO3,0,BIG(a),null);a.b3R=c;},Fty=(a,b,c)=>{let d=new CoB();ERT(d,a,b,c);return d;}; +function BXG(){let a=this;F.call(a);a.bIl=0.0;a.bKJ=0.0;a.bJU=0.0;a.bIv=0.0;} +let CjI=null,B$_=null,B$s=null,ALp=()=>{ALp=Z(BXG);Fsd();},CQL=b=>{ALp();return AHj(b,b,b,b);},ACx=()=>{ALp();return CjI;},Dn7=b=>{let c,d,e,f,$$je;ALp();if(Kr(D3(B$s,b))){c=A0k(B$_,Dk(b));a:{b:{c:{d:{e:{try{c=c.data;switch(c.length){case 1:break e;case 2:break d;case 3:break c;case 4:break b;default:}b=ACx();}catch($$e){$$je=P($$e);if($$je instanceof Ex){break a;}else{throw $$e;}}return b;}try{d=CZ(c[0]);b=AHj(d,d,d,d);}catch($$e){$$je=P($$e);if($$je instanceof Ex){break a;}else{throw $$e;}}return b;}try{e +=CZ(c[0]);f=CZ(c[1]);b=AHj(e,f,e,f);}catch($$e){$$je=P($$e);if($$je instanceof Ex){break a;}else{throw $$e;}}return b;}try{e=CZ(c[0]);f=CZ(c[1]);b=AHj(e,f,CZ(c[2]),f);}catch($$e){$$je=P($$e);if($$je instanceof Ex){break a;}else{throw $$e;}}return b;}try{b=AHj(CZ(c[0]),CZ(c[1]),CZ(c[2]),CZ(c[3]));}catch($$e){$$je=P($$e);if($$je instanceof Ex){break a;}else{throw $$e;}}return b;}return ACx();}return ACx();},OE=(b,c,d,e)=>{ALp();return AHj(b,c,d,e);},EqH=(a,b,c,d,e)=>{ALp();a.bIl=b;a.bKJ=c;a.bJU=d;a.bIv=e;},AHj +=(a,b,c,d)=>{let e=new BXG();EqH(e,a,b,c,d);return e;},Dbo=(a,b)=>{return AHj(a.bIl+b,a.bKJ,a.bJU,a.bIv);},ATU=a=>{return Bh(a.bIv,a.bIl);},BUq=(a,b)=>{return Cl(a.bIv+b.bGE+a.bKJ,a.bIl+b.bGF+a.bJU);},CYc=a=>{return !(a.bIv===0.0&&a.bKJ===0.0&&a.bIl===0.0&&a.bJU===0.0)?0:1;},Fsd=()=>{CjI=AHj(0.0,0.0,0.0,0.0);B$_=Dp(E(1226));B$s=Dp(E(1227));},BV=N(DR),E$T=a=>{X(a);},Gw=()=>{let a=new BV();E$T(a);return a;},Bcm=(a,b)=>{Bp(a,b);},ZF=a=>{let b=new BV();Bcm(b,a);return b;}; +function ClS(){let a=this;QP.call(a);a.crp=null;a.c6T=0;} +let EOR=a=>{return a.crp.bHv;},FvF=a=>{let b;b=new Cut;Bpy(b,a.crp,a.c6T);return b;},CTS=N(),E1l=0,B5i=()=>{B5i=Z(CTS);EvN();},EvN=()=>{E1l=0;}; +function Cph(){let a=this;F.call(a);a.b7t=0.0;a.b2E=0.0;a.b7L=0.0;a.b2R=0.0;} +let Bji=b=>{if(b)return Dky(0.0,0.0,0.0,0.0);return Dky(1.7976931348623157E308,1.7976931348623157E308,(-1.7976931348623157E308),(-1.7976931348623157E308));},FvI=(a,b,c,d,e)=>{let f;if(!(isNaN(b)?1:0)){if(!(isNaN(d)?1:0)){if(!(isNaN(c)?1:0)){if(isNaN(e)?1:0){f=new Bt;X(f);J(f);}a.b7L=b;a.b2R=c;a.b7t=d;a.b2E=e;return;}f=new Bt;X(f);J(f);}f=new Bt;X(f);J(f);}f=new Bt;X(f);J(f);},Dky=(a,b,c,d)=>{let e=new Cph();FvI(e,a,b,c,d);return e;},AM9=(a,b,c)=>{let d;if(!(isNaN(b)?1:0)){if(!(isNaN(c)?1:0)){a.b7t=BC(b,a.b7t);a.b2E +=BC(c,a.b2E);a.b7L=Eh(b,a.b7L);a.b2R=Eh(c,a.b2R);return;}d=new Bt;X(d);J(d);}d=new Bt;X(d);J(d);},Bxi=(a,b)=>{AM9(a,b.bGK,b.bGL);}; +function B2K(){let a=this;F.call(a);a.b2X=null;a.bUe=null;} +let Em_=(a,b)=>{let c;if(a!==b){if(F0(b,Vk)){c=b;return Li(a.b2X,c.d0());}return 0;}return 1;},Dtn=a=>{return a.b2X;},EmK=a=>{return a.bUe;},DwO=a=>{return Oz(a.b2X)^Oz(a.bUe);},DA2=a=>{let b,c,d;b=BY(a.b2X);c=BY(a.bUe);d=new S;T(d);b=H(d,b);Bb(b,61);H(b,c);return Q(d);}; +function BAF(){let a=this;B2K.call(a);a.cvZ=0;a.b9e=null;a.cTa=0;} +function CWq(){let a=this;DU.call(a);a.cNJ=null;a.dcw=null;} +let DxO=(a,b)=>{let c;c=b-55296|0;return !(c>=0&&c<2048)?0:a.bMR^YH(a.cNJ,c);}; +function CWo(){let a=this;DU.call(a);a.cPO=null;a.c4n=null;a.c8C=null;} +let DJp=(a,b)=>{let c,d;c=b-55296|0;d=!(c>=0&&c<2048)?0:a.bMR^YH(a.cPO,c);return !(a.c4n.rX(b)&&!d)?0:1;}; +function B_h(){let a=this;DU.call(a);a.cgp=null;a.c$8=null;} +let D5Q=(a,b)=>{return a.bJl^YH(a.cgp,b);},EP7=a=>{let b,c,d;b=new S;T(b);c=Bbt(a.cgp,0);while(c>=0){AXl(b,Wr(c));Bb(b,124);c=Bbt(a.cgp,c+1|0);}d=b.bG4;if(d>0)BkF(b,d-1|0);return Q(b);}; +function CFs(){let a=this;DU.call(a);a.c51=null;a.dcj=null;} +let EWw=(a,b)=>{return a.c51.rX(b);}; +function CFq(){let a=this;DU.call(a);a.cDe=0;a.cZS=null;a.cIq=null;} +let DE6=(a,b)=>{return !(!(a.cDe^YH(a.cIq.bIs,b))&&!(a.cDe^a.cIq.bUH^a.cZS.rX(b)))?1:0;}; +function CFr(){let a=this;DU.call(a);a.cqJ=0;a.cYz=null;a.cxk=null;} +let Ele=(a,b)=>{return !(!(a.cqJ^YH(a.cxk.bIs,b))&&!(a.cqJ^a.cxk.bUH^a.cYz.rX(b)))?0:1;}; +function CFv(){let a=this;DU.call(a);a.cV4=0;a.cML=null;a.cMH=null;a.dd9=null;} +let Eg1=(a,b)=>{return a.cV4^(!(!a.cML.rX(b)&&!a.cMH.rX(b))?1:0);}; +function CFw(){let a=this;DU.call(a);a.c3i=0;a.cOR=null;a.cOw=null;a.dag=null;} +let Ds1=(a,b)=>{return a.c3i^(!(!a.cOR.rX(b)&&!a.cOw.rX(b))?1:0)?0:1;}; +function CFt(){let a=this;DU.call(a);a.cRs=null;a.c99=null;} +let E7Z=(a,b)=>{return SM(a.cRs,b);}; +function CFu(){let a=this;DU.call(a);a.c7m=null;a.db1=null;} +let E$L=(a,b)=>{return SM(a.c7m,b)?0:1;}; +function CFx(){let a=this;DU.call(a);a.cXN=null;a.c0l=0;a.cSD=null;} +let EH5=(a,b)=>{return !(!SM(a.cXN,b)&&!(a.c0l^YH(a.cSD.bIs,b)))?1:0;}; +function CFy(){let a=this;DU.call(a);a.cR_=null;a.cVg=0;a.cLY=null;} +let Egl=(a,b)=>{return !(!SM(a.cR_,b)&&!(a.cVg^YH(a.cLY.bIs,b)))?0:1;}; +function B_f(){let a=this;DU.call(a);a.cMp=0;a.cPZ=null;a.cMW=null;a.dat=null;} +let E1S=(a,b)=>{return !(!(a.cMp^a.cPZ.rX(b))&&!SM(a.cMW,b))?1:0;}; +function B_H(){let a=this;DU.call(a);a.cVZ=0;a.cJ4=null;a.cJ_=null;a.dcT=null;} +let Ey6=(a,b)=>{return !(!(a.cVZ^a.cJ4.rX(b))&&!SM(a.cJ_,b))?0:1;}; +function B_d(){let a=this;DU.call(a);a.cUj=null;a.c8d=null;} +let E5x=(a,b)=>{return SM(a.cUj,b);}; +function B_e(){let a=this;DU.call(a);a.c2I=null;a.deX=null;} +let Eia=(a,b)=>{return SM(a.c2I,b)?0:1;}; +function B_k(){let a=this;DU.call(a);a.c7w=null;a.cX1=0;a.c1M=null;} +let DzY=(a,b)=>{return !(SM(a.c7w,b)&&a.cX1^YH(a.c1M.bIs,b))?0:1;}; +function B_c(){let a=this;DU.call(a);a.c0Q=null;a.cOZ=0;a.c3w=null;} +let DVD=(a,b)=>{return !(SM(a.c0Q,b)&&a.cOZ^YH(a.c3w.bIs,b))?1:0;}; +function B_i(){let a=this;DU.call(a);a.cPy=0;a.cZp=null;a.cRS=null;a.dd8=null;} +let DLl=(a,b)=>{return !(a.cPy^a.cZp.rX(b)&&SM(a.cRS,b))?0:1;}; +function B_j(){let a=this;DU.call(a);a.cVo=0;a.cZb=null;a.c0X=null;a.db3=null;} +let DDH=(a,b)=>{return !(a.cVo^a.cZb.rX(b)&&SM(a.c0X,b))?1:0;},Nr=N(DR),CSq=N(0); +function B34(){let a=this;F.call(a);a.cdC=null;a.bT9=0;a.cGk=null;} +let Dv4=a=>{let b,c,d;b=a.cdC;c=a.bT9;d=new S;T(d);BE(H(H(d,b),E(1228)),c);return Q(d);},EAm=(a,b,c)=>{C74(a,b,c,(-1));},BBk=(a,b)=>{let c=new B34();EAm(c,a,b);return c;},C74=(a,b,c,d)=>{a.cGk=c;a.cdC=B$(b);a.bT9=d;},DAE=(a,b,c)=>{let d=new B34();C74(d,a,b,c);return d;},BnY=a=>{return DAE(a.cdC,a.cGk,a.bT9+1|0);},Bqt=a=>{return BO(a.cdC,E(1198));},Dvn=(a,b)=>{b=b;return Bqt(a)&&!Bqt(b)?(-1):!Bqt(a)&&Bqt(b)?1:a.bT9-b.bT9|0;}; +function A36(){let a=this;F.call(a);a.b9n=null;a.ckT=null;a.cfA=null;} +let CSP=a=>{a.b9n=new A3E;a.ckT=new A3E;a.cfA=new A3E;},BKI=(a,b)=>{BUi(a.b9n,b);},FwS=(a,b)=>{BUi(a.ckT,b);},Ei8=(a,b)=>{BUi(a.cfA,b);},C4p=a=>{return B7i(a.b9n);},EgX=a=>{return B7i(a.ckT);},EOt=a=>{return B7i(a.cfA);},DFR=a=>{return BBK(a.b9n);},Drv=a=>{return BBK(a.ckT);},C5A=a=>{return BBK(a.cfA);},EyU=(a,b,c)=>{c=C$4(a.b9n);while(B2T(c)){if(!(A2v(c)).b_T)return 0;}return 1;},BHe=N(0); +function CyJ(){let a=this;A36.call(a);a.b9b=null;a.caF=null;} +let Bvh=(a,b)=>{return DG(a.b9b,b);},Fgz=(a,b)=>{let c;c=new B_D;c.dew=b;Kh(c);Dex(a);Kh(new B_F);},Dex=a=>{let b,c,d,e;b=new Cxw;b.c_I=a;Kh(b);c=Ta(UA(BZv(a.b9b)));while(SD(c)){b=Tj(c);d=b.bIu;e=b.bI1;b=new Cxt;b.dd2=d;b.dd3=e;Kh(b);}},Bkt=(a,b,c,d,e)=>{let f;f=new B9p;f.c8D=b;Kh(f);ZS();if(d!==AT4){C9(a.b9b,b,c);AVk(a.caF,b);return;}J(EC(E(1229),e));},CaM=(a,b)=>{A7k(a.b9b,b);BM0(a.caF,b);},EYW=a=>{return a.caF;},E$6=(a,b)=>{return Cb6(a,b);}; +function AT9(){let a=this;F.call(a);a.bRT=null;a.bPG=null;a.bSL=null;a.c3U=null;a.cCo=null;a.czO=null;a.c9s=null;a.cC9=null;a.cC4=null;a.b4G=null;a.bKD=null;a.cel=null;a.chm=null;} +let CWN=null,CYR=null,BIH=0,A3L=()=>{A3L=Z(AT9);EUn();},ByA=(a,b)=>{return FW(a.c3U.cdG,b);},C$J=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o;d=DbE(c);e=new B3R;c=a.bPG;A_h();WQ(e,d);e.cwV=c;f=new BQV;c=a.bPG;Bu1();WQ(f,e);f.cWX=c;g=new C0c;WQ(g,f);h=new Djm;c=a.czO;WQ(h,g);h.cSv=a;h.c3H=b;h.c1S=c;i=new C6v;c=a.bSL;d=a.bPG;WQ(i,h);i.cP1=a;i.ccH=c;i.czg=d;i.cU7=b;j=new Dll;c=a.bSL;d=a.bPG;WQ(j,i);j.cLA=a;j.b_f=c;j.csQ=d;j.c2e=b;k=new CM5;c=a.bPG;WQ(k,j);k.b5v=a;k.bQ6=b;k.cAQ=c;l=new Cnf;c=a.bSL;d=a.bPG;WQ(l,k);l.cF7 +=a;l.cHq=c;l.cur=d;l.cIe=b;m=new CvM;c=a.bPG;WQ(m,l);m.cE9=a;m.b6S=b;m.cwf=c;n=new CZl;c=a.bPG;WQ(n,m);n.cJ$=a;n.b7q=b;n.ctv=c;o=new Clc;c=a.bPG;WQ(o,n);o.cK8=a;o.c34=b;o.c5r=c;return o;},A5U=(a,b,c,d,e)=>{let f,g,h,i;f=c.bGJ;g=new S;T(g);h=H(g,E(1230));BE(h,f);H(h,E(1231));Ot(Bo(AT9),Q(g));g=C$J(a,b,c);i=g;while(true){c=CtG(i);if(c===null)break;h=Cqp(a,b,c,d,e);if(h!==null){c=BY(h);d=new S;T(d);H(H(d,E(1232)),c);Ot(Bo(AT9),Q(d));return h;}Mz(g);}Ot(Bo(AT9),E(1233));return null;},Elf=(a,b,c,d)=>{let e,f;e=C$J(a, +b,c);f=e;while(true){c=CtG(f);if(c===null)break;Cqp(a,b,c,d,0);Mz(e);}},Cqp=(a,b,c,d,e)=>{let f,$$je;try{U(a.bPG,c);b=E2M(a,b,c,d,e);}catch($$e){$$je=P($$e);if($$je instanceof Dt){f=$$je;if(!(f instanceof Ij)){GP(f);J(EC(E(1234),c));}J(f);}else{throw $$e;}}return b;},E2M=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,$$je;f=Ki(c);Ii();if(f!==A3t){if(f!==A8v){if(f!==A8z){if(f!==AZm){if(f!==A3b){if(f!==A5v){if(f!==A5O){if(f!==A8S){if(f!==A7F){NK();g=Y_;if(d!==g&&f===AIk){EbG(a,b,c);return null;}if(d===g&&f===AO6){if(e){g=Ety(c);EKS(g, +a,b);return DOM(g);}return null;}if(d===g&&f===AIk){D4m(a,b,c);return null;}if(f!==A6O){if(d===null&&f===AKT){B5(E(1235));return null;}if(f!==A$t){A3L();if(!Kr(D3(CYR,ZA(c)))){b=new Ij;d=BY(d);g=BY(f);h=CR();H(Et(H(H(h,E(1236)),d),32),g);JV(b,CH(h),c);J(b);}return null;}Erz(a,b,c);return null;}Fp9(a,b,c);return null;}FiC(FkL(c),a,b);return null;}c=C8(c);d=new Ca_;Kk(d,c);FcV(d,a,b);return null;}c=C8(c);d=new ChB;Kk(d,c);EQ1(d,a,b);return null;}c=C8(c);d=new COD;Kk(d,c);Eg(d);Hi(d,E(1237));Eg(d);b.tO(Ud(d));return null;}J(EC(E(1238), +c));}return null;}EzS(a,b,c);return null;}d=new Cox;g=C8(c);h=a.bKD;Kk(d,g);d.cAc=h;D_N(d,a,b);g=Fml(d);if(g!==null){h=a.bKD;a.bKD=d.cAc;if(!CzC(d.cpq))a.bKD=Cfu(a.bKD);a:{b:{try{d=Bk();while(true){f=EaL(g);if(f===null)break;U(d,f);}A5U(a,b,d,null,0);}catch($$e){$$je=P($$e);if($$je instanceof Dd){b=$$je;break b;}else{b=$$je;break a;}}a.chm=CLI(g);a.bKD=h;c:{d:{try{CS2(g);break c;}catch($$e){$$je=P($$e);if($$je instanceof Dd){b=$$je;break d;}else{throw $$e;}}}GP(b);}return null;}try{GP(b);d=new Ij;b=BY(b);f= +CR();H(H(f,E(1239)),b);JV(d,CH(f),c);J(d);}catch($$e){$$je=P($$e);b=$$je;break a;}}a.chm=CLI(g);a.bKD=h;e:{f:{try{CS2(g);break e;}catch($$e){$$je=P($$e);if($$je instanceof Dd){c=$$je;break f;}else{throw $$e;}}}GP(c);}J(b);}b=new Ij;h=d.b5e;d=new S;T(d);H(H(d,E(1240)),h);JV(b,Q(d),c);J(b);}d=null;g:{try{i=d;g=Fqo(C8(c));Fn6(g,a,b);g=E2I(g);e=Eq(g,33);h=null;if(e!=(-1)){i=d;f=B_(g,0,e);j=CC(g,e+1|0);h:{i:{try{i=d;k=d;f=B4R(a.bKD,f,E(1241));if(f===null)break h;i=d;k=d;d=a.bKD;k=d;i=d;f=f;a.bKD=CJL(d,CIV(f));f= +CkG(f,a.cCo);if(f!==null){j:{try{i=d;k=d;l=BFu(B3p(f,g,BlJ(c)));h=EnS(B$M(D_Z(),l),j,a,b);break j;}catch($$e){$$je=P($$e);b=$$je;}i=d;k=d;BYY(f);J(b);}i=d;k=d;BYY(f);break h;}i=d;k=d;b=new Ij;h=CR();H(H(h,E(1242)),g);h=CH(h);i=d;k=d;JV(b,h,c);J(b);}catch($$e){$$je=P($$e);if($$je instanceof Dd){b=$$je;break i;}else{throw $$e;}}}i=k;GP(b);b=new Ij;d=CR();H(H(d,E(1242)),g);d=CH(d);i=k;JV(b,d,c);J(b);}i=d;}i=d;if(h===null){i=d;h=DG(a.czO,g);}}catch($$e){$$je=P($$e);b=$$je;break g;}k:{try{i=d;if(h===null)break k;i +=d;Elf(a,b,Co0(h),null);}catch($$e){$$je=P($$e);b=$$je;break g;}l:{try{if(d===null)break l;}catch($$e){$$je=P($$e);b=$$je;break g;}a.bKD=d;}return null;}try{i=d;b=new Ij;h=CR();H(H(h,E(1242)),g);g=CH(h);i=d;JV(b,g,c);J(b);}catch($$e){$$je=P($$e);b=$$je;break g;}}if(i!==null)a.bKD=i;J(b);},EbG=(a,b,c)=>{let d,e,f,g,h,i;a:{d=CtJ(a,b,c);if(d!==null){b=a.cel;if(b!==null){e=d.data;c=new X9;f=e[0].bGP;g=new S;T(g);H(H(g,b),f);BRq(c,Q(g),e[0].bIM);e[0]=c;a.cel=null;}d=d.data;h=d.length;i=0;while(true){if(i>=h)break a;g +=d[i];U(a.bRT,g);i=i+1|0;}}}},D4m=(a,b,c)=>{CtJ(a,b,c);},Fp9=(a,b,c)=>{let d,e;d=new CMA;Kk(d,C8(c));Eg(d);Hi(d,E(1243));Eg(d);e=Zt(d);Eg(d);c=EV(Tn(a,b,Ia(Ud(d),ADN(d))));ZS();b.sY(e,c,AH$,d.bHM);},CtJ=(a,b,c)=>{let d,e,f,g,h,i;d=Tn(a,b,c);if(d!==null){e=(A0k(CWN,d)).data;f=e.length;g=K(X9,f);h=g.data;i=0;while(i{let d,e,f,g,h,i,j,k,l,m,n;d=new S;T(d);e=new Dg9;e.cmA=b;e.cWW=a;e.chi=c;f=0;while(f0&&Bqh(Bn(h, +f-1|0))&&!Dlu(h,f))?0:1;if(i&&Bn(h,f)!=37&&Bn(h,f)!=36)j=null;else{k=Ddk(a.bSL,h,f);j=!k.bGI.length?null:B_(k,0,k.bGI.length-1|0);}if(j===null){if(Deg(e,c.bGP,f)===null)Bb(d,g);else{l=c.bGP;h=Deg(e,l,f);if(Dr(CH(d),E(1244)))B62(d,AMP(d)-2|0);k=e.cmA.uf(h);g=f+(GB(h)-1|0)|0;if(!W_(k))FN(d,D$(k));else if((ALH(k)).ui())FN(d,(ALH(k)).oB());else if((ALH(k)).uj())FN(d,(ALH(k)).p());else g=Exf(e,!(ALH(k)).ul()?ALH(k):ALH(k),l,g+1|0,d)-1|0;f=g+2|0;if(f>=GB(l))f=g;else if(Bn(l,g+1|0)!=35)f=g;else if(Bn(l,f)!=35)f=g;}} +else{k=CC(c.bGP,f);l=new CZc;m=Ia(k,c.bIM);k=(BDQ(a.bSL,j)).dX();a:{b:{while(k.dY()){h=(k.dZ()).un();NK();if(!(h!==AGy&&h!==AHQ)?1:0)break b;}i=0;break a;}i=1;}k=(BDQ(a.bSL,j)).dX();c:{d:{while(k.dY()){if((k.dZ()).uo())break d;}g=0;break c;}g=1;}Kk(l,m);l.cdQ=Bk();l.cnc=Dy();l.c4V=i;l.cvP=g;FwR(l,a,b);h=CNY(j,(B3U(l)).dV(),(B6m(l)).p3());m=BC2(a.bSL,h);if(m===null){k=new Ij;b=new S;T(b);H(H(b,E(1245)),j);JV(k,Q(b),c);J(k);}k=m.un();NK();if(k===X4){a.cel=Q(d);CaN(a,c,b,m,l);g=f+l.bIq|0;n=CC(c.bGP,g);if(n.bGI.length +>0){b=a.bRT;b=Be(b,b.bGJ-1|0);c=a.bRT;GJ(c,c.bGJ-1|0,BME(b,n));}return null;}if(m.un()===AHQ){a.cel=B_(c.bGP,0,f);CaN(a,c,b,m,l);return null;}if(Df()){A3L();if(!BIH&&m.un()!==Y_&&m.un()!==AGy){b=new C4;X(b);J(b);}}L(d,D$(m.uv(a,b,c,B3U(l),B6m(l))));f=f+(l.bIq-1|0)|0;}f=f+1|0;}return Q(d);},CaN=(a,b,c,d,e)=>{d.uw(a,c,b,B3U(e),B6m(e));},Erz=(a,b,c)=>{let d;d=new Ckc;Kk(d,C8(c));Eg(d);Hi(d,E(1246));Eg(d);b=Tn(a,b,Ia(Ud(d),ADN(d)));c=new CXh;c.cRi=b;ENH(c);},EzS=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,$$je;d +=new DsJ;Kk(d,C8(c));Beo();d.cgm=BuV;Eg(d);Hi(d,E(1247));e=JZ(d);if(e==117)Hi(d,E(1248));else if(e==95){Hi(d,E(840));if(JZ(d)!=109){Hi(d,E(1249));d.cgm=A9W;}else{Hi(d,E(1250));d.cgm=BsJ;}}Eg(d);f=Tn(a,b,Ia(Ud(d),ADN(d)));d.c9m=f;g=d.cgm;h=Qg(f,33);i=null;if(h!=(-1)){i=CC(f,h+1|0);f=B_(f,0,h);}j=null;k=null;a:{b:{c:{try{d=j;l=j;if(BO(f,E(1198))){d=j;l=j;if(Dr(f,E(372))){d=j;l=j;B_(f,1,GB(f)-1|0);k=a.bKD;d=j;l=j;m=Ftk(k,f);if(m!==null){d=j;l=j;a.bKD=Cfu(a.bKD);j=BAw(A4B(m),f);l=j;d=j;}l=j;d=j;d=j;l=j;break c;}}d: +{d=j;l=j;if(!BO(f,E(1196))){d=j;l=j;if(!BO(f,E(1197)))break d;}d=j;l=j;break c;}d=j;l=j;if(BO(f,E(842))){d=j;l=j;if(Dr(f,E(843))){d=j;l=j;J(EMB(E(1251)));}}d=j;l=j;n=EMF(a.bKD,f);if(n===null)break c;d=j;l=j;if(!(n instanceof AGw)){d=j;l=j;o=null;}else{d=j;l=j;o=(n.uD()).uE();}d=j;l=j;if(o!==null){d=j;l=j;p=o.uF();}else{d=j;l=j;p=Faw(a.bKD,n);}d=j;l=j;if(p===null){d=j;l=j;q=null;}else{d=j;l=j;q=Bv(BB(Bi,[p,i]));}e:{f:{d=j;l=j;if(q!==null){d=j;l=j;if(PT(a.cC4,q))break f;}d=j;l=j;e=0;break e;}d=j;l=j;e=1;}}catch +($$e){$$je=P($$e);if($$je instanceof Dd){r=$$je;break b;}else{b=$$je;break a;}}g:{try{d=j;l=j;if(g!==BuV)break g;d=j;l=j;if(!e)break g;}catch($$e){$$je=P($$e);if($$je instanceof Dd){r=$$je;break b;}else{b=$$je;break a;}}return;}h:{try{d=j;l=j;if(g!==A9W)break h;d=j;l=j;if(!e)break h;d=j;l=j;J(EC(E(1252),c));}catch($$e){$$je=P($$e);if($$je instanceof Dd){r=$$je;break b;}else{b=$$je;break a;}}}i:{try{d=j;l=j;if(o===null)break i;d=j;l=j;EQ(a.cC9,o);break i;}catch($$e){$$je=P($$e);if($$je instanceof Dd){r=$$je;break b;} +else{b=$$je;break a;}}}j:{try{try{d=j;l=j;g=DOh(n,E(1253),i);j=g;l=g;d=g;break j;}catch($$e){$$je=P($$e);if($$je instanceof Ex){}else if($$je instanceof AQT){}else{throw $$e;}}l=j;d=j;g=new Ij;b=CR();H(Et(H(H(b,E(1242)),f),33),i);b=CH(b);d=j;l=j;JV(g,b,c);J(g);}catch($$e){$$je=P($$e);if($$je instanceof Dd){r=$$je;break b;}else{b=$$je;break a;}}}try{d=g;l=g;d=g;l=g;if(g instanceof Bdc){d=g;l=g;if(!Fpy(g)){d=g;l=g;n=new Ij;b=CR();H(Et(H(H(b,E(1242)),f),33),i);b=CH(b);d=g;l=g;JV(n,b,c);J(n);}}d=g;l=g;if(g!==null)j +=g;else{d=g;l=g;o=a.cCo;s=CkG(n,o);if(s!==null){d=g;l=g;j=B3p(s,f,BlJ(c));l=j;d=j;}else{d=g;l=g;J(EC(E(1254),c));}}l=j;d=j;k=a.bKD;a.bKD=CJL(k,CIV(n));if(Df()){d=j;l=j;if(!BIH){d=j;l=j;if(j===null){d=j;l=j;J(Jk());}}}d=j;l=j;if(q===null)break c;d=j;l=j;EQ(a.cC4,q);break c;}catch($$e){$$je=P($$e);if($$je instanceof Dd){r=$$je;break b;}else{b=$$je;break a;}}}k:{try{l=j;d=j;if(j!==null)break k;}catch($$e){$$je=P($$e);if($$je instanceof Dd){r=$$je;break b;}else{b=$$je;break a;}}d=new Ij;b=new S;T(b);H(H(b,E(1242)), +f);JV(d,Q(b),c);J(d);}l:{try{d=j;l=j;o=j;f=Bk();n=new BNn;o=n;l=n;d=n;C_K(n,j);}catch($$e){$$je=P($$e);b=$$je;break l;}g=n;while(true){try{d=n;l=n;o=n;t=CWI(g);if(t===null)break;d=n;l=n;o=n;U(f,t);continue;}catch($$e){$$je=P($$e);b=$$je;break l;}}try{try{d=n;l=n;o=n;A5U(a,b,f,null,0);}catch($$e){$$je=P($$e);b=$$je;break l;}m:{try{d=n;l=n;if(k===null)break m;}catch($$e){$$je=P($$e);b=$$je;break l;}d=n;l=n;a.bKD=k;}}catch($$e){$$je=P($$e);if($$je instanceof Dd){r=$$je;break b;}else{b=$$je;break a;}}n:{o:{try{B75(g);break n;} +catch($$e){$$je=P($$e);if($$je instanceof Dd){l=$$je;break o;}else{throw $$e;}}}GP(l);}return;}try{l=o;d=o;d=o;l=o;if(k!==null){d=o;l=o;a.bKD=k;}d=o;l=o;J(b);}catch($$e){$$je=P($$e);if($$je instanceof Dd){r=$$je;break b;}else{b=$$je;break a;}}}try{d=l;GP(r);b=new Ij;p=BY(r);g=CR();H(H(g,E(1242)),p);p=CH(g);d=l;JV(b,p,c);J(b);}catch($$e){$$je=P($$e);b=$$je;break a;}}p:{if(d!==null){q:{try{d.tW();break p;}catch($$e){$$je=P($$e);if($$je instanceof Dd){l=$$je;break q;}else{throw $$e;}}}GP(l);}}J(b);},BXx=(a,b)=> +{return CQh(a.bSL,b);},BXp=(a,b)=>{return BC2(a.bSL,b);},EUn=()=>{BIH=0;CWN=Dp(E(15));CYR=Dp(E(1255));}; +function Ij(){let a=this;Dt.call(a);a.cft=null;a.cOu=null;} +let JV=(a,b,c)=>{X(a);a.cft=B$(b);a.cOu=B$(c);},EC=(a,b)=>{let c=new Ij();JV(c,a,b);return c;},Dzo=a=>{return a.cft;},C6M=N(),D_S=null,BCa=0,Bb2=()=>{Bb2=Z(C6M);DUK();},GP=b=>{Bb2();if(BCa)return;},DUK=()=>{D_S=null;}; +function BYr(){let a=this;F.call(a);a.bND=null;a.c06=null;a.cs2=null;a.cvf=null;a.c80=0;} +let Cf6=null,DK1=null,DIT=null,CiN=null,AR3=()=>{AR3=Z(BYr);DDR();},B$U=a=>{let b,c,d,e,f,g;b=a.bND.bGJ;c=1;while(c{AR3();a.cs2=AKY();a.cvf=Dy();a.bND=b;a.c06=c;},CB7=(a,b)=>{let c +=new BYr();ERR(c,a,b);return c;},Cpr=(b,c)=>{let d,e,f,g,h;AR3();d=Bk();e=CB7(Bk(),d);if(!c)Ea(e.bND,b);else{d=new S;T(d);f=Br(b);while(Bq(f)){b=Bm(f);g=b.bGP;if(B8h(g))Y7(d,g,0,g.bGI.length-1|0);else{L(d,g);g=e.bND;h=Ia(Q(d),b.bIM);U(g,h);d.bG4=0;}}}return e;},ZI=a=>{return C3y(a.bND,0,Bk());},Bv7=(a,b)=>{let c,d;c=new S;T(c);d=Br(a.bND);while(Bq(d)){L(c,(Bm(d)).bGP);L(c,b);}return Q(c);},By6=a=>{return a.bND.bGJ;},Cbl=a=>{let b,c;b=Br(a.bND);while(Bq(b)){c=(Bm(b)).bGP;if(AJX(c))continue;if(ANN(c))continue;AR3();if +(Kr(D3(Cf6,c)))continue;if((ES(c)).bGI.length)return 0;}return 1;},DDR=()=>{let b,c,d,e,f,g,h;Cf6=Dp(E(1259));DK1=Dm(E(1260));DIT=Dp(E(1261));b=new Do8;if(!CQ(E(88))){b.cqv=E(88);c=Ca(256);d=c.data;e=E(88).bGI.length-1|0;f=0;while(f<256){d[f]=E(88).bGI.length;f=f+1|0;}g=0;while(g=256){b=new Bt;h=new S;T(h);H(H(h,E(1262)),E(88));Bp(b,Q(h));J(b);}d[f]=e-g|0;g=g+1|0;}b.cLp=c;b.c57=E(88).bGI.length;CiN=b;return;}b=new Bt;Bp(b,E(1263));J(b);}; +function ACj(){let a=this;F.call(a);a.b2f=null;a.b$7=null;a.cKM=null;a.cK1=0;a.cRy=null;} +let AGr=(a,b,c,d,e,f)=>{a.cK1=d;a.b2f=B$(c);a.b$7=B$(b);a.cKM=e;a.cRy=f;},FyB=(a,b,c,d,e)=>{let f=new ACj();AGr(f,a,b,c,d,e);return f;},D0R=(a,b)=>{let c;c=b;return !(a.b$7===c.b$7&&Br_(a)==Br_(c)&&Bj(a.b2f,c.b2f))?0:1;},EBj=a=>{return (FP(a.b2f)+AI$(a.b$7)|0)+Br_(a)|0;},D1R=a=>{let b,c,d,e;b=HT(a.b$7);c=Br_(a);d=a.b2f;e=new S;T(e);b=H(e,b);Bb(b,32);BE(b,c);Bb(b,32);H(b,d);return Q(e);},Br_=a=>{let b;b=a.cKM;if(b!==null)return b.bIM.bT9;return 0;},AZA=N(Bx),AKj=null,A0K=null,EFn=null,Yw=()=>{Yw=Z(AZA);D9S();},Fi5 +=(a,b,c)=>{Yw();Ct(a,b,c);},CPv=(a,b)=>{let c=new AZA();Fi5(c,a,b);return c;},D9S=()=>{let b,c,d;AKj=CPv(E(1264),0);b=CPv(E(1265),1);A0K=b;c=K(AZA,2);d=c.data;d[0]=AKj;d[1]=b;EFn=c;},DbT=N(),HD=null,GO=()=>{GO=Z(DbT);D_V();},Js=(b,c,d)=>{GO();if(c===0.0&&d===0.0)return b;return Dr2(b,d,c,d,c);},CA$=(b,c)=>{let d;GO();d=new BK5;d.b8S=b;d.b6N=c.bIl;d.cwU=c.bKJ;d.ctt=c.bJU;d.caI=c.bIv;return d;},KN=(b,c,d,e,f)=>{GO();return Dr2(b,e,d,f,c);},CSW=(b,c,d)=>{let e;GO();e=new CJP;e.b11=b;e.c4C=c;e.cXn=d;return e;},E6 +=(b,c)=>{let d;GO();d=new Chz;d.cVk=b;d.cQ2=c;return d;},BC_=(b,c,d)=>{GO();return Cuz(d,b.cF(c));},D1u=(b,c,d)=>{GO();return Cuz(d,b);},Vi=(b,c,d)=>{let e,f;GO();e=HD;if(b!==e){if(c!==e){e=new CiL;f=Bk();e.cew=f;U(f,b);U(e.cew,c);e.cZn=d;return e;}return b;}return c;},FT=(b,c,d)=>{let e,f;GO();e=HD;if(b!==e){if(c!==e){e=new BSy;f=Bk();e.bZI=f;U(f,b);U(e.bZI,c);e.cHY=d;return e;}return b;}return c;},ACo=(b,c,d)=>{let e;GO();e=BAN(c,d);b.cC(e);return Bej(e);},AHB=(b,c)=>{let d;GO();if(b!==null&&b!==HD){d=b.cF(c);return !(d.bGF +===0.0&&d.bGE===0.0)?0:1;}return 1;},A8w=(b,c)=>{let d;GO();d=new ChA;d.cnF=b;d.c7P=c;return d;},D_V=()=>{HD=E6(0.0,0.0);}; +function CRy(){let a=this;F.call(a);a.bNf=0.0;a.bN2=0.0;a.bJ0=0.0;a.bLa=0.0;} +let ALg=b=>{if(b)return ALO(0.0,0.0,0.0,0.0);return ALO(1.7976931348623157E308,1.7976931348623157E308,(-1.7976931348623157E308),(-1.7976931348623157E308));},Ei$=(a,b,c,d,e)=>{let f;a.bJ0=b;a.bLa=c;a.bNf=d;a.bN2=e;if(!(isNaN(b)?1:0)){if(!(isNaN(d)?1:0)){if(!(isNaN(c)?1:0)){if(isNaN(e)?1:0){f=new Bt;X(f);J(f);}return;}f=new Bt;X(f);J(f);}f=new Bt;X(f);J(f);}f=new Bt;X(f);J(f);},ALO=(a,b,c,d)=>{let e=new CRy();Ei$(e,a,b,c,d);return e;},V7=(a,b,c)=>{return ALO(Eh(b,a.bJ0),Eh(c,a.bLa),BC(b,a.bNf),BC(c,a.bN2));},Ecy +=(a,b)=>{return ALO(Eh(b.bJ0,a.bJ0),Eh(b.bLa,a.bLa),BC(b.bNf,a.bNf),BC(b.bN2,a.bN2));},CJY=a=>{return a.bN2-a.bLa;},BXn=a=>{return a.bNf-a.bJ0;},AQY=a=>{return Cl(a.bNf-a.bJ0,a.bN2-a.bLa);}; +function ASF(){Lp.call(this);this.bG6=0.0;} +let DIC=null,XY=()=>{XY=Z(ASF);DL7();},Oj=a=>{return a.bG6;},EoC=a=>{return a.bG6|0;},FlV=a=>{return Pc(a.bG6);},DL=b=>{let c;XY();c=new ASF;c.bG6=b;return c;},DM=b=>{let c,d,e,f,g,h,i,j,k,l,m,n;XY();if(!CQ(b)){c=0;d=b.bGI.length;while(true){if(Bn(b,c)>32){while(true){e=d-1|0;if(Bn(b,e)>32)break;d=d+(-1)|0;}f=Bn(b,e)!=102&&Bn(b,e)!=70&&Bn(b,e)!=100&&Bn(b,e)!=68?d:d+(-1)|0;g=0;if(Bn(b,c)==45){c=c+1|0;g=1;}else if(Bn(b,c)==43)c=c+1|0;if(c!=f){a:{h=Bn(b,c);i=BH;j=(-1);k=0;l=O(2808348672, 232830643);if(h!=46){k +=1;if(h>=48&&h<=57){b:{c:{while(c57)break e;if(G5(l,BH)){i=BU(i,CT(l,V(e-48|0)));l=OB(l,V(10));}j=j+1|0;c=c+1|0;}break a;}break a;}}else{if(h==73&&(d-c|0)==8&&CxS(b,0,c,E(1266),0,8))return !g?Infinity:(-Infinity);if(h==78&&(d-c|0)==3&&CxS(b,0,c,E(1267),0,3))return NaN;b=new Ex;X(b);J(b);}}}if(c=f)break f;d=Bn(b,c);e=C5(d,48);if(e<0)break f;if(d>57)break;if(DS(i,BH)&&!e)j +=j+(-1)|0;else if(G5(l,BH)){i=BU(i,CT(l,V(d-48|0)));l=OB(l,V(10));}c=c+1|0;k=1;}}if(!k){b=new Ex;CPL(b);J(b);}}g:{if(c=f)break h;h=Bn(b,d);if(h<48)break h;if(h>57)break;n=(10*n|0)+(h-48|0)|0;c=1;d=d+1|0;}}if(c){if(m)n= -n|0;j=j+n|0;break g;}J(BR3());}J(BR3());}}return DVQ(i,j,g);}b=new Ex;X(b);J(b);}c=c+1|0;if(c==d)break;}b=new Ex;X(b);J(b);}b=new Ex;X(b);J(b);},DKc +=a=>{let b,c;b=a.bG6;XY();c=new S;T(c);return Q(D6(c,b));},C87=(a,b)=>{let c,d,e;if(a!==b){a:{b:{if(b instanceof ASF){c=a.bG6;d=b.bG6;XY();if(ELS(c,d))break b;}e=0;break a;}e=1;}return e;}return 1;},A7J=a=>{return BxK(a.bG6);},BxK=b=>{let c;XY();c=BlS(b);return Sm(c)^Cp(c);},BFr=(b,c)=>{let d,e,f;XY();d=(!(b>c)?0:1)-(!(c>b)?0:1)|0;if(!d){e=1.0/b;f=1.0/c;d=(((!(e>f)?0:1)-(!(f>e)?0:1)|0)+(c!==c?0:1)|0)-(b!==b?0:1)|0;}return d;},AWW=b=>{XY();return !(!(isFinite(b)?1:0)&&!(isNaN(b)?1:0))?0:1;},BlS=b=>{XY();if(isNaN(b) +?1:0)return O(0, 2146959360);return EJT(b);},ER2=(a,b)=>{return BFr(a.bG6,b.bG6);},DL7=()=>{DIC=Bo(AUQ);},C1o=N(Np),D6q=(a,b)=>{return b.uV();}; +function BTc(){let a=this;Np.call(a);a.cG$=null;a.cqA=null;a.cKV=null;} +let E8j=(a,b,c,d)=>{a.cG$=b;a.cqA=c;a.cKV=d;},C$z=(a,b,c)=>{let d=new BTc();E8j(d,a,b,c);return d;},Chp=(a,b)=>{let c;if(b.gv()){b=a.cKV;if(b===null){b=a.cG$;c=a.cqA;return AFv(b,c);}return b;}if(b.uW())return a.cqA;return a.cG$;},DbU=N(),C7r=null,Dm3=null,BKU=null,KO=()=>{KO=Z(DbU);Dz9();},J3=b=>{let c;KO();RX();c=BnN;c=b.bGI.toLocaleUpperCase((DpC(c)).bGI);if(c!==b.bGI)b=AT0(c);return b;},F9=b=>{KO();RX();return CXG(b,BnN);},Ye=(b,c)=>{KO();if(b!==null){if(b.bGI.length>=2){if(CB(c,E(1268))&&b.bGI.length>1 +&&Db2(Bn(b,0))&&Db2(Bn(b,b.bGI.length-1|0)))return B_(b,1,b.bGI.length-1|0);if(CB(c,E(864))&&BO(b,E(864))&&Dr(b,E(865)))return B_(b,1,b.bGI.length-1|0);if(CB(c,E(842))&&BO(b,E(842))&&Dr(b,E(843)))return B_(b,1,b.bGI.length-1|0);if(CB(c,E(82))&&BO(b,E(82))&&Dr(b,E(82)))return B_(b,1,b.bGI.length-1|0);return b;}return b;}return null;},Dl=b=>{KO();if(b!==null)return Ye(b,E(1269));return b;},Db2=b=>{KO();return !(b!=34&&b!=8220&&b!=8221&&b!=171&&b!=187)?1:0;},ACl=(b,c)=>{let d,e,f,g,$$je;KO();d=DX(b,c,0);if(EZ(d)) +{e=Bk();f=1;while(true){AEZ();try{g=Daw(d.bZB);}catch($$e){$$je=P($$e);b=$$je;J(b);}if(f>g)break;b=CU(d,f);U(e,b);f=f+1|0;}return e;}return null;},TC=b=>{KO();return Bs0(b)?0:1;},Bs0=b=>{let c,d,e;KO();if(b!==null){c=b.bL();if(c){d=0;while(d{let c;KO();c=new S;T(c);Bb(c,b);return Bn(F9(Q(c)),0);},BFC=b=>{let c;KO();c=Bpz(b);b=Ih(KG(b,61,45),E(1270),E(14));DC();if(!(c!==FL&&c!==Gy))b=Ih(b,E(1271),E(1272));if +(b.bGI.length==2&&!(c!==HG&&c!==G_))b=AXR(b,E(1272),E(658));return b;},Bpz=b=>{let c;KO();if(!Dr(b,E(372))){if(BO(b,E(1198))){if(b.bGI.length==2){DC();return FL;}DC();return HG;}c=new Bt;Bp(c,b);J(c);}return AXV(B_(b,0,b.bGI.length-1|0));},AXV=b=>{let c;KO();if(Eq(b,60)==(-1)&&Eq(b,62)==(-1)){b=FS(b);if(!CB(b,E(1273))){if(!CB(b,E(1274))){if(!CB(b,E(1275))){if(!CB(b,E(1276))){if(!CB(b,E(1277))){if(!CB(b,E(1278))){if(!CB(b,E(1279))){if(!CB(b,E(996))){if(b.bGI.length==1){DC();return Gy;}DC();return G_;}DC();return G_;}DC();return HG;}DC();return Gy;}DC();return FL;}DC();return G_;}DC();return HG;}DC();return Gy;}DC();return FL;}c +=new Bt;Bp(c,b);J(c);},BgG=b=>{let c,d;KO();b=ES(b);c=Bk();d=DX(C7r,b,0);while(EZ(d)){b=Dl(CU(d,0));U(c,b);}return c;},B8h=b=>{KO();return !(Dr(b,E(1280))&&!Dr(b,E(1281)))?0:1;},COV=b=>{let c,d,e;KO();if(IZ(b,E(1282))>=0){c=D3(Dm3,b);d=new Sj;T(d);while(GW(c)){e=Y5(El(c,1),16);AMW(c,d,AH8(Ue(Wr(e))));}ALx(c,d);return Q(d);}return b;},BL8=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o;KO();if(b!==0.0){a:{if(c>=0&&c=i)){j=e*Id(EU(V(1),c+1|0));if(j!==AAC(j))break a;if(h!==0.5)break a;return Cxc((g|0)+1|0,c,d);}return Cxc((g|0)+(!(h<0.5)?1:0)|0,c,d);}}}RX();k=AVF;l=new S;T(l);m=H(l,E(1283));BE(m,c);Bb(m,102);m=Q(l);n=K(F,1);n.data[0]=DL(b);k=Dq_(k,m,n);c=Eq(k,46);if(c>=0){d=k.bGI.length-1|0;while(true){o=C5(d,c);if(o<=0)break;if(Bn(k,d)!=48)break;d=d+(-1)|0;}if(!o)d=d+(-1)|0;k=B_(k,0,d+1|0);}if(Bj(k,E(1284)))k=E(35);return k;}return E(35);},Cxc=(b,c,d)=>{let e,f,g,h,i;KO();if(b){while +(c>0&&!(b%10|0)){b=b/10|0;c=c+(-1)|0;}e=Fd(20);f=e.data;g=f.length;h=0;i=g;while(h0){i=i+(-1)|0;f[i]=46;}if(!b){i=i+(-1)|0;f[i]=48;}else while(b>0){i=i+(-1)|0;f[i]=(48+(b%10|0)|0)&65535;b=b/10|0;}if(d){i=i+(-1)|0;f[i]=45;}return QV(e,i,g-i|0);}return E(35);},AJj=b=>{KO();return !(b>32&&b!=160)?1:0;},ES=b=>{let c,d,e,f;KO();c=b.bGI.length;if(c){d=0;e=c-1|0;f=e;while(true){c=C5(d,f);if(c>0)break;if(AJj(Bn(b,d))){d=d+1|0;continue;}if(!AJj(Bn(b,f)))break;f +=f+(-1)|0;}if(!d&&f==e)return b;if(c<=0)return B_(b,d,f+1|0);return E(14);}return E(14);},A0W=b=>{let c,d,e,f;KO();c=b.bL();if(c){d=0;e=c-1|0;f=e;while(true){c=C5(d,f);if(c>0)break;if(AJj(b.u(d))){d=d+1|0;continue;}if(!AJj(b.u(f)))break;f=f+(-1)|0;}if(c<=0){if(!d&&f==e)return b;return b.rL(d,f+1|0);}return E(14);}return E(14);},Dz9=()=>{C7r=Dm(E(564));Dm3=Dp(E(1285));BKU=Gh([1.0,10.0,100.0,1000.0,10000.0,100000.0,1000000.0,1.0E7,1.0E8,1.0E9,1.0E10,1.0E11,1.0E12,1.0E13,1.0E14,1.0E15]);},Ew5=N(),Ex7=()=>{let b;b +=new DeT;b.deq=A_a(A1L(),new AQ4,new CII);b.c5$=A_a(A1L(),new AQ4,CuF());b.c9J=A_a(new Dj_,new AQ4,new Cvs);b.c88=A_a(A1L(),new AQ4,new Dfd);b.c$V=A_a(A1L(),new AQ4,new C$K);return b;},OH=N(Bt); +function BKP(){OH.call(this);this.dah=null;} +let DsR=(a,b)=>{let c;c=new S;T(c);H(H(c,E(1286)),b);Bp(a,Q(c));a.dah=b;},Dm8=a=>{let b=new BKP();DsR(b,a);return b;}; +function DpX(){let a=this;F.call(a);a.bUu=null;a.cl1=null;a.cEa=null;a.cln=null;a.cFP=0;a.cfh=0;a.bPn=0;a.bHR=0;a.bVx=0;a.cic=0;a.b1t=0;a.bSz=0;a.c_3=0;a.b6V=0;a.ceq=0;a.c$f=null;} +let I8=(a,b,c)=>{a.cl1.data[b]=c;},W5=(a,b)=>{return a.cl1.data[b];},BFE=a=>{return BUy(a,0);},BUy=(a,b)=>{C3t(a,b);return a.bUu.data[(b*2|0)+1|0];},Z9=(a,b,c)=>{a.bUu.data[b*2|0]=c;},BGe=(a,b,c)=>{a.bUu.data[(b*2|0)+1|0]=c;},AQD=(a,b)=>{return a.bUu.data[b*2|0];},Bkp=(a,b)=>{return a.bUu.data[(b*2|0)+1|0];},BiL=(a,b)=>{C3t(a,b);return a.bUu.data[b*2|0];},Dc7=a=>{let b,c;b=a.bUu.data;if(b[0]==(-1)){c=a.bVx;b[0]=c;b[1]=c;}a.b6V=BFE(a);},Cja=(a,b)=>{return a.cEa.data[b];},AGD=(a,b,c)=>{a.cEa.data[b]=c;},C3t=(a, +b)=>{let c;if(a.cfh){if(b>=0&&b{a.cfh=0;a.ceq=2;Wm(a.bUu,(-1));Wm(a.cl1,(-1));if(b!==null)a.cln=b;if(c>=0){a.bPn=c;a.bHR=d;}a.bVx=a.bPn;},C_E=a=>{Bn4(a,null,(-1),(-1));},CLt=(a,b)=>{let c;a.bVx=b;c=a.b6V;if(c>=0)b=c;a.b6V=b;}; +function CxF(){F.call(this);this.cdG=null;} +let Eyv=a=>{a.cdG=E9();},Dka=()=>{let a=new CxF();Eyv(a);return a;}; +function ACG(){let a=this;F.call(a);a.dbP=null;a.db6=null;} +let Bsb=(a,b,c)=>{let d,e,f;d=c.data;Dfo(b);e=d.length;f=0;while(f{let c,d;if(!CQ(b)){if(C6e(Bn(b,0))){c=1;while(c{a:{b:{if(!(b>=48&&b<=57)&&!(b>=97&&b<=122)){if(b<65)break b;if(b>90)break b;}b=1;break a;}b=0;}return b;},BFo=N(ACG),B9d=null,AYC=()=>{AYC=Z(BFo);DxG();},CVz=a=>{let b, +c;b=new DdT;b.b1o=E(1287);U0();c=AOW;b.b$e=c;b.cxH=c;b.dec=a;b.c4L=0.3333333432674408;b.c8q=0.5;b.cNU=BD(512);b.cPi=Fd(512);return b;},Ebc=a=>{let b,c,d,e,f;b=new C_M;c=BD(1);d=c.data;d[0]=63;U0();e=AOW;b.csk=e;b.cGf=e;f=d.length;if(f&&!(f{let b;b=new BFo;AYC();Bsb(b,E(1289),K(Bi,0));B9d=b;},CSN=N(ACG),CaE=N(ACG); +function CcY(){let a=this;ACG.call(a);a.dcr=0;a.c$9=0;} +let E33=(a,b,c,d)=>{Bsb(a,b,K(Bi,0));a.dcr=c;a.c$9=d;},BLP=(a,b,c)=>{let d=new CcY();E33(d,a,b,c);return d;},BCT=N(0); +function ACe(){let a=this;F.call(a);a.b6L=null;a.bXY=null;a.b1h=0;a.ci0=null;a.cnA=0;a.b$z=0;} +let AVk=(a,b)=>{let c,d,e,f,g,h,i,j,k;if(Eq(b,0)==(-1)){c=0;while(c=8){f=K(ACe,128);g=f.data;a.ci0=f;h=0;i=0;while(true){j=a.b1h;if(i>=j)break;f=a.b6L.data;if(f[i]<128)g[f[i]]=a.bXY.data[i];else{f[h]=f[i];f=a.bXY.data;f[h]=f[i];h=h+1|0;}i=i+1|0;}i=h;while(i{let c,d;if(!CQ(b)){c=0;while(true){if(c>=b.bGI.length){d=a.b$z;a.b$z=0;return d;}a=B0M(a,Bn(b,c));if(a===null)break;c=c+1|0;}return 0;}b=new BV;X(b);J(b);},A6c=(a,b,c)=>{let d,e,f;d=b.bGI.length;e=c;a:{while(true){if(e>=d)break a;f=B0M(a,Bn(b,e));if(f===null)break a;if(!f.cnA&&!f.b$z)break;e=e ++1|0;a=f;}}return !a.b$z?E(14):B_(b,c,e);},B0M=(a,b)=>{let c,d;c=a.ci0;if(c!==null&&b<128)return c.data[b];d=0;while(d{a.b1O=Dy();a.cof=Dy();a.b9T=G$();a.ckw=new ACe;a.b1i=b;},D6w=a=>{let b=new BOa();CJN(b,a);return b;},Bb_=(a,b)=>{let c,d;c=DG(a.b1O,b);if(c===null){d=a.b1i;if(d!==null)return Bb_(d,b);}return c;},BC2=(a,b)=>{let c,d,e,f;c=Bb_(a,b);if(c===null){d=(Bf8(a.b1O)).dX();a:{b:{while(true){if(!d.dY())break b;c=d.dZ();if(Cp6(c,b))break;}break a;}c=a.b1i;if(c===null)c=null;else{e=(Bf8(c.b1O)).dX();c:{while(true){if(!e.dY())break c;c=e.dZ();d=a.b1O;f=c.vg();if(!NB(d,f)&&Cp6(c,b))break;}break a;}c=null;}}return c;}return c;},Cp6 +=(b,c)=>{return !(Bj((b.vg()).bSB,c.bSB)&&b.vh(c.b5p,c.cnM))?0:1;},Ddk=(a,b,c)=>{let d;d=A6c(a.ckw,b,c);if(a.b1i!==null&&d.bGI.length<=0)return Ddk(a.b1i,b,c);return d;},D1=(a,b)=>{let c,d,e;c=b.un();NK();d=AHQ;if(c===d){c=b;if(c.bWw===d){e=c.b4i;if(e.bGJ==1){c.bWw=AGy;c.cjP=(Be(e,0)).bGP;}}else{b=new BV;X(b);J(b);}}d=a.b1O;c=b.vg();C9(d,c,b);d=a.ckw;e=(b.vg()).bSB;c=new S;T(c);Bb(H(c,e),40);c=Q(c);AVk(d,c);Ddr(a,b);},Ddr=(a,b)=>{let c;c=(b.vg()).bSB;(AN$(a.cof,c,new CxB)).dU(b.vg(),b);},CQh=(a,b)=>{let c,d;a: +{b:{if(!NB(a.cof,b)){c=a.b1i;if(c===null)break b;if(!CQh(c,b))break b;}d=1;break a;}d=0;}return d;},BDQ=(a,b)=>{let c,d,e,f;c=DG(a.cof,b);d=a.b1i;d=d!==null?BDQ(d,b):Gi();if(c!==null){e=E2(c.ve());b=d.dX();while(b.dY()){f=b.dZ();if(!c.dQ(f.vg()))U(e,f);}return e;}return d;},Coh=a=>{D1(a,a.bN_);a.bN_=null;},Cnv=N(),C6B=null,BhI=()=>{BhI=Z(Cnv);EAl();},EHL=()=>{let b,c;BhI();b=D6w(null);c=new B36;Bwl();D1(b,c);c=new BOo;BsU();D1(b,c);c=new BLH;Bxx();D1(b,c);c=new B84;Bro();D1(b,c);c=new BXZ;BtQ();D1(b,c);c=new BIr;BwO();D1(b, +c);c=new BZ$;BwH();D1(b,c);c=new B2d;Bxg();D1(b,c);c=new BXN;A32();D1(b,c);c=new BSh;BhQ();D1(b,c);c=new B7_;Bw5();D1(b,c);c=new BNO;BrQ();D1(b,c);c=new BKA;BAo();D1(b,c);c=new B6_;Bd3();D1(b,c);c=new B54;Blb();D1(b,c);c=new BRX;BpE();D1(b,c);c=new BDV;Bgh();D1(b,c);c=new BHj;Bgt();D1(b,c);c=new BD3;ByL();D1(b,c);c=new BWK;Bcd();D1(b,c);c=new BX6;Bel();D1(b,c);c=new BJa;Bpw();D1(b,c);c=new BKa;Bj4();D1(b,c);c=new B12;Bie();D1(b,c);c=new B7u;BbX();D1(b,c);c=new BSd;BoN();DQ6(c);D1(b,c);D1(b,DVw());D1(b,DZz());D1(b, +DNh());D1(b,ETG());D1(b,DVi());D1(b,EQq());D1(b,Ers());D1(b,EK4());D1(b,E5d());D1(b,EW$());D1(b,Fgj());D1(b,DES());D1(b,Edl());D1(b,Eyn());D1(b,DZ4());D1(b,E0d());D1(b,D3o());D1(b,EYH());D1(b,EbB());D1(b,DW1());D1(b,DYb());D1(b,Fj0());D1(b,EQ$());D1(b,Ff9());D1(b,D5S());D1(b,Ew6());D1(b,E_x());D1(b,DU$());D1(b,EIy());D1(b,D7a());D1(b,Ef$());D1(b,Fw5());D1(b,ENt());D1(b,FdW());D1(b,Ez$());D1(b,EDx());D1(b,EzM());D1(b,ERo());D1(b,ErG());D1(b,DFb());D1(b,Ebt());D1(b,DFn());D1(b,DSl());D1(b,DxN());D1(b,Fbh());D1(b, +DI8());return b;},EAl=()=>{C6B=EHL();}; +function BXO(){let a=this;F.call(a);a.bWf=null;a.cqj=null;} +let C0j=a=>{let b;b=new Ca6;b.coV=E9();a.bWf=b;a.cqj=AAh();},FaZ=()=>{let a=new BXO();C0j(a);return a;},D2C=a=>{return a.bWf;},C$L=(a,b)=>{if(b!==null)EQ(a.cqj,b);},T5=N(),EGC=null,D0s=null,Ehh=null,BLR=()=>{BLR=Z(T5);EO6();},A7e=a=>{BLR();},FfY=a=>{return 0;},Etu=a=>{return 0;},ERD=a=>{return 0;},D7f=a=>{return 0;},DwL=a=>{return 0;},EjC=a=>{return 0;},EAQ=a=>{return 0;},DJi=a=>{return 0;},Fir=a=>{let b,c,d;b=new BV;c=a.p();d=new S;T(d);H(H(d,E(1290)),c);Bp(b,Q(d));J(b);},EPu=a=>{let b,c,d;b=new BV;c=a.p();d +=new S;T(d);H(H(d,E(1291)),c);Bp(b,Q(d));J(b);},FnI=a=>{let b,c,d;b=new BV;c=a.p();d=new S;T(d);H(H(d,E(1292)),c);Bp(b,Q(d));J(b);},D8b=(a,b,c)=>{let d;if(b!==null){if(c!==null){d=new CT3;CJ_(d);d.bN7=0;d.ceW=b;d.bS1=Fd(128);b=new BHq;BkT();b.bMO=d;a.vl(b);Bui(d);return;}b=new F2;Bp(b,E(1293));J(b);}b=new F2;Bp(b,E(1294));J(b);},E6V=a=>{Bp0();return D_I(a,CQz);},D_I=(a,b)=>{let c,d,$$je;c=new CbM;CJ_(c);d=new Sj;JP(d,16);c.cg6=d;c.cTg=d;try{D8b(a,c,b);}catch($$e){$$je=P($$e);if($$je instanceof Dd){d=$$je;b= +new DR;YV(b,d);J(b);}else{throw $$e;}}return Q(c.cg6);},EEB=a=>{return a;},EO6=()=>{EGC=AQg(E(13));D0s=AQg(E(12));Ehh=AQg(E(2));}; +function Su(){let a=this;T5.call(a);a.bL3=null;a.bQP=null;a.ca6=null;} +let FlG=a=>{let b,c,d;b=A9R();c=0;while(true){d=a.bL3;if(c>=d.bGJ)break;APl(b,Be(d,c),(Be(a.bQP,c)).vr());c=c+1|0;}return b;},ESN=a=>{let b;A7e(a);a.bL3=Bk();a.bQP=Bk();b=new CvV;b.b67=BD(32);a.ca6=b;},A9R=()=>{let a=new Su();ESN(a);return a;},CH3=(a,b,c)=>{APl(a,b,A8r(c));return a;},APl=(a,b,c)=>{if(b!==null){if(c!==null){C4H(a.ca6,b,a.bL3.bGJ);U(a.bL3,b);U(a.bQP,c);return a;}b=new F2;Bp(b,E(1295));J(b);}b=new F2;Bp(b,E(1296));J(b);},BQE=(a,b,c)=>{let d;if(b!==null){if(c!==null){d=BGj(a,b);if(d!=(-1))GJ(a.bQP, +d,c);else{C4H(a.ca6,b,a.bL3.bGJ);U(a.bL3,b);U(a.bQP,c);}return a;}b=new F2;Bp(b,E(1295));J(b);}b=new F2;Bp(b,E(1296));J(b);},Cad=(a,b)=>{let c,d,e,f,g;if(b!==null){c=ABK(b);while(ABF(c)){d=ABA(c);e=d.bZv;f=d.bXF;if(f instanceof Su){g=BMj(a,e);if(g instanceof Su)f=Cad(g,f);}BQE(a,e,f);}return a;}b=new F2;Bp(b,E(1297));J(b);},BMj=(a,b)=>{let c,d;if(b!==null){c=BGj(a,b);return c==(-1)?null:Be(a.bQP,c);}d=new F2;Bp(d,E(1296));J(d);},CsO=a=>{return a.bL3.bGJ;},B6b=a=>{return a.bL3;},ABK=a=>{let b,c,d;b=Br(a.bL3);c +=Br(a.bQP);d=new ChC;d.daN=a;d.cBH=b;d.cSZ=c;return d;},Eeo=(a,b)=>{let c,d,e;a:{Ww(b.bMO,123);c=Br(a.bL3);d=Br(a.bQP);e=c;if(Bq(e)){C4m(b,Bm(e));CzG(b);d=d;(Bm(d)).vl(b);while(true){if(!Bq(e))break a;Ww(b.bMO,44);C4m(b,Bm(e));CzG(b);(Bm(d)).vl(b);}}}Ww(b.bMO,125);},EQB=a=>{return 1;},DVH=a=>{return a;},FlH=a=>{return (31*(31+A2c(a.bL3)|0)|0)+A2c(a.bQP)|0;},Ebj=(a,b)=>{let c,d,e;if(a!==b){if(b!==null){if(Dg(a)===Dg(b)){a:{b:{c=b;b=a.bL3;d=c.bL3;if(NI(b,d)){b=a.bQP;c=c.bQP;if(NI(b,c))break b;}e=0;break a;}e= +1;}return e;}return 0;}return 0;}return 1;},BGj=(a,b)=>{let c,d,e,f;c=a.ca6;d=CNP(c,b);e=(c.b67.data[d]&255)-1|0;if(e!=(-1)&&Bj(b,Be(a.bL3,e)))return e;f=a.bL3;d=f.bGJ-1|0;a:{b:{while(true){if(d<0)break b;if(Li(b,Be(f,d)))break;d=d+(-1)|0;}break a;}d=(-1);}return d;}; +function ADt(){let a=this;F.call(a);a.bOR=null;a.bOr=null;} +let A_C=(a,b,c)=>{a.bOR=b;a.bOr=c;},Fp6=(a,b)=>{return;},Eth=(a,b)=>{return;},D70=a=>{return;},E9v=a=>{return;},EeS=a=>{Go();return Hu;},D4s=a=>{return new Cbu;},Ffg=a=>{return a.bOR;},D1j=a=>{return;},E3b=(a,b)=>{return 0;}; +function CKM(){let a=this;ADt.call(a);a.ckk=null;a.col=null;} +let Dp7=(a,b)=>{let c,d;c=!(b instanceof FG)?a.bOr:DJ(a.bOr,b);d=Cj3(a.bOR,c,a.ckk);if(BcI(b,BB(AXF,[Bo(AVS),Bo(AER),Bo(AMy),Bo(Np),Bo(AMZ),Bo(AG3),Bo(FG),Bo(VH)]))){d.col=!(b instanceof AMy)?a.col:C5o(b,d.bOr);return d;}c=new BV;Bp(c,ST(Dg(b)));J(c);},BAN=(b,c)=>{let d;d=Cj3(b,LR(),Bji(c));d.col=null;return d;},Ewy=(a,b)=>{return a.bOR.gQ(b);},DAk=(a,b,c,d)=>{A_C(a,b,c);a.ckk=d;},Cj3=(a,b,c)=>{let d=new CKM();DAk(d,a,b,c);return d;},Ero=(a,b)=>{let c,d,e,f,g;a:{c=a.bOr;d=c.bHj;e=c.bHu;if(b instanceof Ym){b +=b;b=a.bOR.gS(Gk(b.bVn),b.bPs);f=e-(b.bGF-1.5);Kb(a,d,f);Kb(a,d,f+b.bGF);Kb(a,d+b.bGE,f);Kb(a,d+b.bGE,f+b.bGF);break a;}if(b instanceof SA){b=b;Kb(a,d,e);Kb(a,d+b.bT3,e+b.bQB);break a;}if(b instanceof ACp){b=b;Kb(a,d,e);g=d+b.bMH-1.0;f=b.bG1*2.0;Kb(a,g+f,e+b.bLB-1.0+f);break a;}if(b instanceof AAf){b=b;if(b.bMy.bGJ){Kb(a,d+BH$(b)-10.0,e+B1I(b));Kb(a,d+BB7(b)+10.0,e+BTv(b));}break a;}if(b instanceof ADr){b=b;Kb(a,d+A$N(b),e+A4i(b));Kb(a,d+A6e(b),e+A5q(b));break a;}if(b instanceof ZC){b=b;Kb(a,d-1.0,e-1.0);f= +d+b.bKb-1.0;g=b.bG1*2.0;Kb(a,f+g,e+b.bKg-1.0+g);break a;}if(b instanceof AHP){b=CkT(b);Kb(a,d+b.bJ0,e+b.bLa);Kb(a,d+b.bNf,e+b.bN2);break a;}if(b instanceof NR){b=b;Kb(a,d,e);Kb(a,d+AV6(b)-1.0,e+AVm(b)-1.0);break a;}if(b instanceof AMv){b=b;Kb(a,d,e);Kb(a,d+BnQ(b)-1.0,e+Bt$(b)-1.0);break a;}if(b instanceof Bow){b=b;Kb(a,d,e);Kb(a,d+b.hb()-1.0,e+b.hc()-1.0);break a;}if(b instanceof ACL)break a;if(b instanceof ASR){b=b;Kb(a,d,e);Kb(a,d+b.cdP,e+b.b91);break a;}if(F0(b,C1)){b.cC(a);break a;}if(b instanceof APT)break a;if +(b instanceof BbA)break a;if(b instanceof Bmz)break a;if(b instanceof VH)break a;if(!(b instanceof AUq)){c=new BV;Bp(c,BN(Dg(b)));J(c);}Kb(a,d,e);}},Kb=(a,b,c)=>{let d;d=a.col;if(!(d!==null&&!US(d,b,c)))AM9(a.ckk,b,c);},DYE=a=>{AAi();return A2_;},Bej=a=>{let b,c;b=a.ckk;c=b.b7L;if(!(c!==1.7976931348623157E308?0:1))return ALO(c,b.b2R,b.b7t,b.b2E);return ALg(1);}; +function Bg8(){let a=this;F.call(a);a.cH8=null;a.cWh=null;} +let B6c=null,Dql=null,A9I=()=>{A9I=Z(Bg8);EnD();},DSD=a=>{A9I();a.cH8=K(Bg8,26);},DiM=()=>{let a=new Bg8();DSD(a);return a;},Cww=(a,b,c)=>{let d,e;d=(b|32)-97|0;if(d>=0&&d<26){e=a.cH8.data[d];if(e===null&&c){e=DiM();a.cH8.data[d]=e;}return e;}return null;},Cx=(b,c)=>{let d,e,f;A9I();KM(Dql,b);d=B6c;e=0;b=b;f=b.bGI.length;a:{b:{while(true){if(e>=f)break b;d=Cww(d,Bn(b,e),1);if(d===null)break;e=e+1|0;}break a;}d.cWh=c;}},EnD=()=>{B6c=DiM();Dql=UJ();Cx(E(1298),Cv(15792383));Cx(E(1299),Cv(16444375));Cx(E(1300), +Cv(65535));Cx(E(1301),Cv(8388564));Cx(E(1302),Cv(15794175));Cx(E(1303),Cv(16119260));Cx(E(1304),Cv(16770244));Cx(E(1305),Cv(0));Cx(E(1306),Cv(16772045));Cx(E(1307),Cv(255));Cx(E(1308),Cv(9055202));Cx(E(1309),Cv(10824234));Cx(E(1310),Cv(14596231));Cx(E(1311),Cv(6266528));Cx(E(1312),Cv(8388352));Cx(E(1313),Cv(13789470));Cx(E(1314),Cv(16744272));Cx(E(1315),Cv(6591981));Cx(E(1316),Cv(16775388));Cx(E(1317),Cv(14423100));Cx(E(1318),Cv(65535));Cx(E(1319),Cv(139));Cx(E(1320),Cv(35723));Cx(E(1321),Cv(12092939));Cx(E(1322), +Cv(11119017));Cx(E(1323),Cv(11119017));Cx(E(1324),Cv(25600));Cx(E(1325),Cv(12433259));Cx(E(1326),Cv(9109643));Cx(E(1327),Cv(5597999));Cx(E(1328),Cv(16747520));Cx(E(1329),Cv(10040012));Cx(E(1330),Cv(9109504));Cx(E(1331),Cv(15308410));Cx(E(1332),Cv(9419919));Cx(E(1333),Cv(4734347));Cx(E(1334),Cv(3100495));Cx(E(1335),Cv(3100495));Cx(E(1336),Cv(52945));Cx(E(1337),Cv(9699539));Cx(E(1338),Cv(16716947));Cx(E(1339),Cv(49151));Cx(E(1340),Cv(6908265));Cx(E(1341),Cv(6908265));Cx(E(1342),Cv(2003199));Cx(E(1343),Cv(11674146));Cx(E(1344), +Cv(16775920));Cx(E(1345),Cv(2263842));Cx(E(1346),Cv(16711935));Cx(E(1347),Cv(14474460));Cx(E(1348),Cv(16316671));Cx(E(1349),Cv(16766720));Cx(E(1350),Cv(14329120));Cx(E(1351),Cv(8421504));Cx(E(1352),Cv(8421504));Cx(E(1353),Cv(32768));Cx(E(1354),Cv(11403055));Cx(E(1355),Cv(15794160));Cx(E(1356),Cv(16738740));Cx(E(1357),Cv(13458524));Cx(E(1358),Cv(4915330));Cx(E(1359),Cv(16777200));Cx(E(1360),Cv(15787660));Cx(E(1361),Cv(15132410));Cx(E(1362),Cv(16773365));Cx(E(1363),Cv(8190976));Cx(E(1364),Cv(16775885));Cx(E(1365), +Cv(11393254));Cx(E(1366),Cv(15761536));Cx(E(1367),Cv(14745599));Cx(E(1368),Cv(16448210));Cx(E(1369),Cv(13882323));Cx(E(1370),Cv(13882323));Cx(E(1371),Cv(9498256));Cx(E(1372),Cv(16758465));Cx(E(1373),Cv(16752762));Cx(E(1374),Cv(2142890));Cx(E(1375),Cv(8900346));Cx(E(1376),Cv(7833753));Cx(E(1377),Cv(7833753));Cx(E(1378),Cv(11584734));Cx(E(1379),Cv(16777184));Cx(E(1380),Cv(65280));Cx(E(1381),Cv(3329330));Cx(E(1382),Cv(16445670));Cx(E(1383),Cv(16711935));Cx(E(1384),Cv(8388608));Cx(E(1385),Cv(6737322));Cx(E(1386), +Cv(205));Cx(E(1387),Cv(12211667));Cx(E(1388),Cv(9662680));Cx(E(1389),Cv(3978097));Cx(E(1390),Cv(8087790));Cx(E(1391),Cv(64154));Cx(E(1392),Cv(4772300));Cx(E(1393),Cv(13047173));Cx(E(1394),Cv(1644912));Cx(E(1395),Cv(16121850));Cx(E(1396),Cv(16770273));Cx(E(1397),Cv(16770229));Cx(E(1398),Cv(16768685));Cx(E(1399),Cv(128));Cx(E(1400),Cv(16643558));Cx(E(1401),Cv(8421376));Cx(E(1402),Cv(7048739));Cx(E(1403),Cv(16753920));Cx(E(1404),Cv(16729344));Cx(E(1405),Cv(14315734));Cx(E(1406),Cv(15657130));Cx(E(1407),Cv(10025880));Cx(E(1408), +Cv(11529966));Cx(E(1409),Cv(14184595));Cx(E(1410),Cv(16773077));Cx(E(1411),Cv(16767673));Cx(E(1412),Cv(13468991));Cx(E(1413),Cv(16761035));Cx(E(1414),Cv(14524637));Cx(E(1415),Cv(11591910));Cx(E(1416),Cv(8388736));Cx(E(1417),Cv(16711680));Cx(E(1418),Cv(12357519));Cx(E(1419),Cv(4286945));Cx(E(1420),Cv(9127187));Cx(E(1421),Cv(16416882));Cx(E(1422),Cv(16032864));Cx(E(1423),Cv(3050327));Cx(E(1424),Cv(16774638));Cx(E(1425),Cv(10506797));Cx(E(1426),Cv(12632256));Cx(E(1427),Cv(8900331));Cx(E(1428),Cv(6970061));Cx(E(1429), +Cv(7372944));Cx(E(1430),Cv(7372944));Cx(E(1431),Cv(16775930));Cx(E(1432),Cv(65407));Cx(E(1433),Cv(4620980));Cx(E(1434),Cv(13808780));Cx(E(1435),Cv(32896));Cx(E(1436),Cv(14204888));Cx(E(1437),Cv(16737095));Cx(E(1438),Cv(4251856));Cx(E(1439),Cv(15631086));Cx(E(1440),Cv(16113331));Cx(E(1441),Cv(16777215));Cx(E(1442),Cv(16119285));Cx(E(1443),Cv(16776960));Cx(E(1444),Cv(10145074));Cx(E(1445),Cv(16777164));Cx(E(1446),Cv(12775679));Cx(E(1447),Cv(13421823));Cx(E(1448),Cv(16312256));Cx(E(1449),Cv(13238217));Cx(E(1450), +Cv(9961367));Cx(E(1451),Cv(16769248));}; +function APg(){let a=this;Np.call(a);a.b5r=null;a.cxr=null;a.c84=0;} +let Er_=(a,b)=>{return a.b5r.gw(b);},EUW=a=>{return a.b5r.uV();},BFR=N(0); +function DeT(){let a=this;F.call(a);a.deq=null;a.c5$=null;a.c9J=null;a.c88=null;a.c$V=null;} +let DCQ=(a,b)=>{let c,d,e,f,g,h,i,j,k,$$je;c=a.c5$;d=c.cX2;e=BFu(BAw(BId(b),E(1452)));b=new S;T(b);f=new S;T(f);g=0;h=e;a:{b:{while(true){e=A71(h);if(e===null)break b;CwL(d,f,e);if(BO(e.bGP,E(1184))){g=1;continue;}if(BO(e.bGP,E(1453)))break;if(!g)continue;CwL(d,b,e);}b=Q(b);break a;}if(g)b=Q(b);else b=ES(Dqd(Dqd(CFL(ES(CFL(Q(f),1)),0),E(1453)),E(1184)));}c:{d=c.cRX;A8t();if(d!==BMS){TU();i=A1z(b,Vb);}else{AQ3();d=BaB();g=0;while(true){if(g>=b.bGI.length){i=AWH(d);if(Df()&&!BRy){d=DNs(i,0,i.data.length);e=new S;T(e);while +(true){g=ChJ(d);if(g==(-1))break;Bb(e,g&65535);}if(!Dr(b,Q(e))){b=new C4;X(b);J(b);}}break c;}j=Bn(b,g);i=EE7(j);if(Df()&&!BRy){d:{e:{f:{try{if(j!=ChJ(A0A(i)))break e;k=1;break d;}catch($$e){$$je=P($$e);if($$je instanceof Dd){e=$$je;break f;}else{throw $$e;}}}GP(e);}k=0;}if(!k)break;}Doi(d,i);g=g+1|0;}b=new C4;X(b);J(b);}}i=c.cWu.vO(i);return c.cYb.vP(i);}; +function CNZ(){OH.call(this);this.c_h=null;} +function A28(){F.call(this);this.bOP=0;} +let AES=null,BDK=null,Dx7=null,Rr=()=>{Rr=Z(A28);EMP();},EES=(a,b)=>{Rr();a.bOP=b;},CUI=a=>{let b=new A28();EES(b,a);return b;},BKh=(b,c)=>{Rr();return b==c?0:!b?(-1):1;},BGW=b=>{Rr();return !(b!==null&&Bj(FS(b),E(13)))?0:1;},Wp=a=>{return a.bOP;},Tr=b=>{Rr();return !b?BDK:AES;},DkO=b=>{Rr();return !b?E(12):E(13);},EDq=a=>{return DkO(a.bOP);},DTr=a=>{let b;b=a.bOP;Rr();return !b?1237:1231;},D7A=(a,b)=>{if(a!==b)return !(b instanceof A28&&b.bOP==a.bOP)?0:1;return 1;},DMS=(a,b)=>{b=b;return BKh(a.bOP,b.bOP);},EMP +=()=>{AES=CUI(1);BDK=CUI(0);Dx7=Bo(CHJ);}; +function ChU(){OH.call(this);this.dc_=0;} +let Eer=(a,b)=>{let c;c=new S;T(c);BE(H(c,E(1454)),b);Bp(a,Q(c));a.dc_=b;},Cmr=a=>{let b=new ChU();Eer(b,a);return b;}; +function AJy(){Lp.call(this);this.c$T=0;} +let ExS=null,ECO=null,BWn=()=>{BWn=Z(AJy);Emo();},Emo=()=>{let b,c,d,e,f;ExS=Bo(BEs);BWn();b=K(AJy,256);c=b.data;d=0;e=c.length;while(d>24;c[d]=f;d=d+1|0;}ECO=b;},A8c=N(Lp),FxO=null,Dlg=()=>{Dlg=Z(A8c);D82();},D82=()=>{FxO=Bo(CBs);}; +function Cmm(){OH.call(this);this.c$$=0;} +function COj(){let a=this;OH.call(a);a.c$a=0;a.dbZ=null;} +let EHD=(a,b,c)=>{let d,e;d=BY(c);e=new S;T(e);d=H(H(H(e,E(1455)),d),E(1456));Bb(d,b);H(d,E(1457));Bp(a,Q(e));a.c$a=b;a.dbZ=c;},Bwo=(a,b)=>{let c=new COj();EHD(c,a,b);return c;}; +function BSH(){let a=this;F.call(a);a.cKf=null;a.cPa=0;a.bV1=0;a.bTp=0;a.cSd=0;a.cQI=0;a.c9Q=0;a.c__=0;a.cTK=null;a.cVz=null;a.cfx=0;a.c8t=0;a.cDk=null;} +let C7T=(a,b)=>{let c,d,e;a.cKf=b;c=b.bIP;d=b.bK3;if(BHz===null)BHz=E5E();e=BHz;b=A_2(c,d);e=e.hasOwnProperty(Cq(b))?e[Cq(b)]:e.hasOwnProperty(Cq(c))?e[Cq(c)]:e.root;a.cPa=48;a.bV1=e.groupingSeparator&65535;a.bTp=e.decimalSeparator&65535;a.cSd=e.perMille&65535;a.cQI=e.percent&65535;a.c9Q=35;a.c__=59;a.cTK=(e.naN!==null?Fe(e.naN):null);a.cVz=(e.infinity!==null?Fe(e.infinity):null);a.cfx=e.minusSign&65535;a.c8t=e.decimalSeparator&65535;a.cDk=(e.exponentSeparator!==null?Fe(e.exponentSeparator):null);},Bkd=a=>{let b +=new BSH();C7T(b,a);return b;},Dp5=a=>{let b,c,d,$$je;try{b=Cx3(a);}catch($$e){$$je=P($$e);if($$je instanceof BqV){d=$$je;c=new C4;ABa(c,E(1458),d);J(c);}else{throw $$e;}}return b;},A6k=N(),Bjp=(a,b)=>{let c;c=new Sj;T(c);return Q(a.vS(b,c,CDd(0)));}; +function BFT(){let a=this;A6k.call(a);a.bTV=0;a.b72=0;a.bUq=0;a.bOf=0;a.bRe=0;a.crg=null;a.cTt=null;} +let B7d=(a,b)=>{if(b<0)b=0;a.bOf=b;if(b{if(b<0)b=0;a.b72=b;if(b{if(b<0)b=0;a.bRe=b;if(a.bOf{if(b<0)b=0;a.bUq=b;if(a.b72{AXv=Z(A6_);DKB();},C6o=(a,b)=>{AXv();C57(a,b,Bkd(ACH()));},CGy=a=>{let b=new A6_();C6o(b,a);return b;},C57=(a,b,c)=>{let d,e,f,g,h,i,j,k,l;AXv();a.bTV=1;a.b72=40;a.bUq=1;a.bOf=3;A43();a.crg=Bal;d=ACH();if(d!==null){e=BTi(d.bIP,d.bK3);if(B8z===null)B8z=DH9();a:{d=B8z;if(!d.hasOwnProperty(Cq(e)))d=null;else{f=(d[Cq(e)].value!==null?Fe(d[Cq(e)].value):null);if(f!==null){if(Bp5===null){Bp5=Dy();if(B8x===null)B8x=Dzl();g=B8x;h=0;while(h{let c=new A6_();C57(c,a,b);return c;},AGd=(a,b,c)=>{let d,e;b=b.data;d=b.length;e=0;while(e{let c;c=K(Rj,1);c.data[0]=AN5(b);return c;},CZn=(a,b)=>{a.bWx=BCX(a,b);},EXG=(a,b,c,d)=>{let e,f,g,h;if(!(b instanceof QI)) +{if(!(b instanceof Or)){if(b instanceof Lp){b=b;e=b.v0();f=b.v1();if(e!==Id(f))c=CtX(a,e,c,d);else{b=a;if(b.b8k<=0){g=AOc(f);Din(b,g,AHf(b,g),GR(f,BH)?0:1,c);}else{g=AOc(f);C2O(b,g,AHf(b,g),GR(f,BH)?0:1,c);}}return c;}b=new Bt;X(b);J(b);}b=b;h=new QI;MN();CjE(h,b,0);return CAi(a,h,c,d);}return CAi(a,b,c,d);},CAi=(a,b,c,d)=>{if(a.b8k<=0)Dc$(a,b,c);else CBo(a,b,c);return c;},CtX=(a,b,c,d)=>{let e,f,g;if(isNaN(b)?1:0){L(AGd(a,a.bWx,c),a.bJm.cTK);ARU(a,1,c);}else if(!AWW(b)){BDq();e=Cou;BDa(b,e);if(a.b8k<=0)Din(a, +e.b3X,e.b7J,e.ceU?0:1,c);else C2O(a,e.b3X,e.b7J,e.ceU?0:1,c);}else{f=QE(b,0.0);g=f<=0?a.bTN:a.bWx;L(AGd(a,g,c),a.bJm.cVz);ARU(a,f<=0?0:1,c);}return c;},C2O=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;f=AHf(a,b);g=f+1|0;h=a.bXw;if(h!=1){i=BvH(a,h);j=A_V.data[i];h=a.bXw;if(j==h)c=c+i|0;else{k=V(h);if(GR(b,CY(O(4294967295, 2147483647),k))){b=CT(b,k);f=AHf(a,b);g=f+1|0;}else{CBo(a,AMp(L3(b),f-c|0),e);return;}}}l=a;m=l.bUq;n=m+l.bOf|0;o=(l.b72-m|0)+1|0;if(o<=1){h=m-1|0;i=c-h|0;m=f-h|0;}else{p=c-Ev(c/ +o|0,o)|0;i=c-p|0;m=f-p|0;}if(n<0)b=BH;else if(ng){i=i+1|0;m=m+1|0;g=q;}}AGd(a,!d?a.bTN:a.bWx,e);r=DT(m,0);s=g-1|0;while(s>=r){t=AWY.data[s];Bb(e,Yc(a,Cp(CY(b,t))));b=Fl(b,t);s=s+(-1)|0;}s=r-1|0;while(s>=m){Bb(e,48);s=s+(-1)|0;}a:{u=n-(g-m|0)|0;v=u-(l.bOf-l.bRe|0)|0;if(v<=0){if(DS(b,BH))break a;if(u<=0)break a;}Bb(e,a.bJm.bTp);w=DT(0,m-u|0);x=0;m=m-1|0;b:{c:{while(m>=w){t=AWY.data[m];Bb(e,Yc(a,Cp(CY(b,t))));b=Fl(b,t);x=x+1|0;if(DS(b,BH))break c;m=m+(-1)|0;}break b;}}while +(true){c=x+1|0;if(x>=v)break a;Bb(e,48);x=c;}}L(e,a.bJm.cDk);if(i<0){i= -i|0;Bb(e,a.bJm.cfx);}m=DT(a.b8k,BvH(a,i)+1|0)-1|0;while(m>=0){u=A_V.data[m];Bb(e,Yc(a,i/u|0));i=i%u|0;m=m+(-1)|0;}ARU(a,d,e);},Din=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;f=AHf(a,b)+1|0;g=c+1|0;c=a.bXw;if(c!=1){h=BvH(a,c);i=A_V.data[h];c=a.bXw;if(i==c)g=g+h|0;else{j=V(c);if(GR(b,CY(O(4294967295, 2147483647),j))){b=CT(b,j);f=AHf(a,b)+1|0;}else{Dc$(a,AMp(L3(b),f-g|0),e);return;}}}k=a;l=g+k.bOf|0;if(l<0)b=BH;else if(lf){g=g+1|0;f=m;}}AGd(a,!d?a.bTN:a.bWx,e);n=DT(0,g);o=DT(n,k.bUq)-1|0;p=k.bUq-1|0;while(p>=n){Bb(e,48);if(k.bTV){c=a.bVv;if(c>0&&!(o%c|0)&&o>0)Bb(e,a.bJm.bV1);}o=o+(-1)|0;p=p+(-1)|0;}q=DO(f,n);r=f-1|0;s=0;while(s0&&!(o%p|0)&&o>0)Bb(e,a.bJm.bV1);}o=o+(-1)|0;s=s+1|0;r=c;}n=n-q|0;p=0;while(p0&&!(o%c|0)&&o>0)Bb(e,a.bJm.bV1);}o=o+(-1)|0;p=p+1|0;}a:{if(DS(b, +BH)){if(k.bRe){Bb(e,a.bJm.bTp);p=0;while(p=g)break b;if(DS(b,BH))break;s=s+1|0;u=AWY.data[r];Bb(e,Yc(a,Kj(Cp(CY(b,u)))));b=Fl(b,u);r=r+(-1)|0;p=p+1|0;}}while(true){if(s>=k.bRe)break a;Bb(e,48);s=s+1|0;}}}ARU(a,d,e);},CBo=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;d=a.bXw;if(d!=1)b=Bjw(b,AUR(V(d)));MN();e=CiT(b,A44)<0?0: +1;f=BWO(b);g=f-1|0;h=g-b.bHQ|0;i=Kt(b);b=a;d=b.bUq;j=d+b.bOf|0;k=(b.b72-d|0)+1|0;if(k<=1){k=d-1|0;h=h-k|0;l=g-k|0;}else{l=h-Ev(h/k|0,k)|0;h=h-l|0;l=g-l|0;}if(j<0){JG();i=La;}else if(j=m){o=(AJR(i,n)).data;Bb(c,Yc(a,Kj(A8Y(o[0]))));i=o[1];n=K9(n,ADf);g=g+(-1)|0;}g=m-1|0;while(g>=l){Bb(c,48);g=g+(-1)|0;}a:{f=j-(f-l|0)|0;d=f-(b.bOf-b.bRe|0)|0;if(d<=0){if(VW(i,La))break a;if(f<=0)break a;}Bb(c,a.bJm.bTp);p=DT(0,l-f|0);q=0;g=l-1|0;b: +{c:{while(g>=p){o=(AJR(i,n)).data;Bb(c,Yc(a,Kj(A8Y(o[0]))));i=o[1];q=q+1|0;if(VW(i,La))break c;n=K9(n,ADf);g=g+(-1)|0;}break b;}}while(true){k=q+1|0;if(q>=d)break a;Bb(c,48);q=k;}}L(c,a.bJm.cDk);if(h<0){h= -h|0;Bb(c,a.bJm.cfx);}g=DT(a.b8k,BvH(a,h)+1|0)-1|0;while(g>=0){r=A_V.data[g];Bb(c,Yc(a,h/r|0));h=h%r|0;g=g+(-1)|0;}ARU(a,e,c);},ARU=(a,b,c)=>{let d;if(b){d=a.coi;if(d!==null)AGd(a,d,c);}else{d=a.cmv;if(d===null){d=a.coi;if(d===null)d=K(Rj,0);}AGd(a,d,c);}},Dc$=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;d +=a.bXw;if(d!=1)b=Bjw(b,AUR(V(d)));e=Kt(b);JG();d=AS5(e,La)<0?0:1;f=BWO(b);g=BWO(b)-b.bHQ|0;h=a;i=g+h.bOf|0;if(i<0)e=La;else if(i=j){Bb(c,48);if(h.bTV){m=a.bVv;if(m>0&&!(k%m|0)&&k>0)Bb(c,a.bJm.bV1);}k=k+(-1)|0;l=l+(-1)|0;}n=DO(f,j);o=B2H(a,AC5,f-1|0);l=0;while(l0&&!(k%m|0)&&k>0)Bb(c,a.bJm.bV1);}k=k+(-1)|0;f=f+(-1)|0;o=K9(o,ADf);l=l+1|0;}j=j-n| +0;l=0;while(l0&&!(k%m|0)&&k>0)Bb(c,a.bJm.bV1);}k=k+(-1)|0;l=l+1|0;}a:{if(VW(e,La)){if(h.bRe){Bb(c,a.bJm.bTp);l=0;while(l=r)break b;if(VW(e,La))break;l=l+1|0;p=(AJR(e,o)).data;Bb(c,Yc(a,Kj(A8Y(p[0]))));e=p[1];o=K9(o,ADf);q=q+1|0;}}while(true){if(l>=h.bRe)break a;Bb(c,48);l=l+1|0;}}}ARU(a, +d,c);},CRF=(a,b,c,d,e)=>{let f,g,h,i;a:{b:{c:{d:{e:{f:{g:{h:{AXv();f=AWY.data[c-d|0];Blv();switch(B7C.data[a.crg.bGO]){case 1:break f;case 2:break e;case 3:break g;case 4:break h;case 5:break d;case 6:g=Fl(b,f);h=CY(f,V(2));if(DS(g,h)){b=CT(CY(b,f),f);break a;}b=CT(CY(BU(b,h),f),f);break a;case 7:break c;case 8:break b;default:}break a;}b=CT(CY(b,f),f);break a;}b=BU(CT(CY(b,f),f),f);break a;}b=CT(CY(b,f),f);if(!e)break a;b=BU(b,f);break a;}b=CT(CY(b,f),f);if(e)break a;b=BU(b,f);break a;}if(DS(Fl(b,f),BH))break a;i +=new KZ;Bp(i,E(1463));J(i);}h=Fl(b,f);g=CY(f,V(2));if(D4(h,g)){b=CT(CY(BU(b,g),f),f);break a;}b=BU(CT(CY(b,f),f),f);break a;}h=Fl(b,f);g=CY(f,V(2));if(D4(h,g))b=CT(CY(BU(b,g),f),f);else{b=CT(CY(b,f),f);if(D4(Fl(CY(b,f),V(2)),BH))b=BU(b,f);}}return b;},Ct5=(a,b,c,d)=>{let e,f;JG();e=B2H(a,AC5,c-d|0);f=AS5(b,La)<0?BTI(e):e;a:{b:{c:{d:{e:{f:{g:{h:{Blv();switch(B7C.data[a.crg.bGO]){case 1:break f;case 2:break e;case 3:break g;case 4:break h;case 5:break d;case 6:if(VW(A7E(b,e),K9(f,L3(V(2))))){b=IP(K9(b,e),e);break a;}b +=IP(K9(RO(b,K9(f,L3(V(2)))),e),e);break a;case 7:break c;case 8:break b;default:}break a;}b=IP(K9(b,e),e);break a;}b=RO(IP(K9(b,e),e),f);break a;}b=IP(K9(b,e),e);if(AS5(b,La)<0)break a;b=RO(b,e);break a;}b=IP(K9(b,e),e);if(AS5(b,La)>0)break a;b=A8n(b,e);break a;}if(!VW(A7E(b,e),La))break a;b=new KZ;Bp(b,E(1463));J(b);}if(VW(A7E(b,e),K9(f,L3(V(2))))){b=RO(IP(K9(b,e),e),f);break a;}b=IP(K9(RO(b,K9(f,L3(V(2)))),e),e);break a;}if(!VW(A7E(b,e),K9(f,L3(V(2)))))b=IP(K9(RO(b,K9(f,L3(V(2)))),e),e);else{b=IP(K9(b,e), +e);if(!VW(A7E(K9(b,e),L3(V(2))),La))b=RO(b,f);}}return b;},AHf=(a,b)=>{let c;if(D4(b,O(0, 2147483648))){c=0;if(FE(b,O(1874919424, 2328306))){c=16;b=CY(b,O(1874919424, 2328306));}if(FE(b,V(100000000))){c=c+8|0;b=CY(b,V(100000000));}if(FE(b,V(10000))){c=c+4|0;b=CY(b,V(10000));}if(FE(b,V(100))){c=c+2|0;b=CY(b,V(100));}if(FE(b,V(10)))c=c+1|0;return c;}return 18;},BvH=(a,b)=>{let c;c=0;if(b>=100000000){c=8;b=b/100000000|0;}if(b>=10000){c=c+4|0;b=b/10000|0;}if(b>=100){c=c+2|0;b=b/100|0;}if(b>=10)c=c+1|0;return c;},B2H +=(a,b,c)=>{let d;JG();d=ADf;while(c){if(c&1)b=IP(b,d);d=IP(d,d);c=c>>>1|0;}return b;},Yc=(a,b)=>{return (a.bJm.cPa+b|0)&65535;},DKB=()=>{AWY=Br$([V(1),V(10),V(100),V(1000),V(10000),V(100000),V(1000000),V(10000000),V(100000000),V(1000000000),O(1410065408, 2),O(1215752192, 23),O(3567587328, 232),O(1316134912, 2328),O(276447232, 23283),O(2764472320, 232830),O(1874919424, 2328306),O(1569325056, 23283064),O(2808348672, 232830643)]);A_V=Ey([1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000]);},Cct= +N(0),BRP=N(Lp),D3M=null,Bo5=()=>{Bo5=Z(BRP);DDu();},E1u=b=>{Bo5();return !(!(isFinite(b)?1:0)&&!(isNaN(b)?1:0))?0:1;},DDu=()=>{D3M=Bo(DoI);}; +function QI(){let a=this;Lp.call(a);a.caT=null;a.bKA=0;a.bK$=BH;a.bHQ=0;a.b1q=0;} +let A44=null,DA9=null,FnY=null,E_B=null,EdX=null,A9F=null,BTx=null,BXD=null,Bzs=null,BIv=null,BAz=null,ALs=null,MN=()=>{MN=Z(QI);EUY();},DeK=(a,b,c)=>{MN();a.bK$=b;a.bHQ=c;a.bKA=AXz(b);},CRo=(a,b)=>{let c=new QI();DeK(c,a,b);return c;},Cty=(a,b,c)=>{MN();a.bK$=V(b);a.bHQ=c;if(b<0)b=b^(-1);a.bKA=32-AOe(b)|0;},AIp=(a,b)=>{let c=new QI();Cty(c,a,b);return c;},CBI=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p;MN();e=c+(d-1|0)|0;if(b!==null){f=b.data;if(e=0&&d>0&&e>=0){g=new S;JP(g,d);if(c>e)d=c;else if(f[c] +!=43)d=c;else{c=c+1|0;d=c;}h=0;i=0;while(true){j=C5(d,e);if(j>0)break;if(f[d]==46)break;if(f[d]==101)break;if(f[d]==69)break;if(!i){if(f[d]!=48)i=1;else h=h+1|0;}d=d+1|0;}k=d-c|0;UP(g,b,c,k);l=0+k|0;if(!(j<=0&&f[d]==46))a.bHQ=0;else{m=d+1|0;d=m;while(d<=e&&f[d]!=101&&f[d]!=69){if(!i){if(f[d]!=48)i=1;else h=h+1|0;}d=d+1|0;}c=d-m|0;a.bHQ=c;l=l+c|0;UP(g,b,m,c);}if(d<=e&&!(f[d]!=101&&f[d]!=69)){i=d+1|0;if(i>e)k=i;else if(f[i]!=43)k=i;else{k=i+1|0;if(k>e)k=i;else if(f[k]==45)k=i;}c=(e+1|0)-k|0;Pu();n=QV(b,k,c);o +=CE(V(a.bHQ),V(CZ(n)));c=Cp(o);a.bHQ=c;if(D4(o,V(c))){g=new Ex;Bp(g,E(1464));J(g);}}a:{if(l<19){o=B8N(Q(g));a.bK$=o;a.bKA=AXz(o);}else{n=new Or;p=Q(g);JG();n.bXV=(-2);if(p!==null){if(p.bGI.length){Euf(n,p,10);BGT(a,n);break a;}g=new Ex;Bp(g,E(1465));J(g);}g=new F2;X(g);J(g);}}a.b1q=g.bG4-h|0;if(Vx(g,0)==45)a.b1q=a.b1q-1|0;return;}g=new Ex;X(g);J(g);}g=new F2;X(g);J(g);},Fyv=(a,b,c)=>{let d=new QI();CBI(d,a,b,c);return d;},Ff_=(a,b)=>{MN();CBI(a,Q5(b),0,b.bGI.length);},BfE=a=>{let b=new QI();Ff_(b,a);return b;},EVt +=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;MN();if(!AWW(b)&&!(isNaN(b)?1:0)){c=BlS(b);d=1075-Cp(CN(GS(c,52),V(2047)))|0;a.bHQ=d;e=d!=1075?Gu(CN(c,O(4294967295, 1048575)),O(0, 1048576)):EU(CN(c,O(4294967295, 1048575)),1);d=OT(e,BH);if(!d){a.bHQ=0;a.b1q=1;}f=a.bHQ;if(f>0){V6();if(!d)d=64;else{g=0;h=EU(e,32);if(D4(h,BH))g=32;else h=e;i=EU(h,16);if(DS(i,BH))i=h;else g=g|16;h=EU(i,8);if(DS(h,BH))h=i;else g=g|8;i=EU(h,4);if(DS(i,BH))i=h;else g=g|4;h=EU(i,2);if(DS(h,BH))h=i;else g=g|2;if(D4(EU(h,1),BH))g=g|1;d=(64-g|0)-1|0;}f +=DO(f,d);e=GD(e,f);a.bHQ=a.bHQ-f|0;}if(D4(GS(c,63),BH))e=LF(e);d=AXz(e);f=a.bHQ;if(f<0){d=d?d-f|0:0;a.bKA=d;if(d<64)a.bK$=EU(e, -f|0);else a.caT=T4(L3(e), -a.bHQ|0);a.bHQ=0;}else if(f<=0){a.bK$=e;a.bKA=d;}else{j=BTx.data;if(f{let b=new QI();EVt(b,a);return b;},CjE +=(a,b,c)=>{MN();if(b===null){b=new F2;X(b);J(b);}a.bHQ=c;BGT(a,b);},AMp=(a,b)=>{let c=new QI();CjE(c,a,b);return c;},ANL=(b,c)=>{let d;MN();if(c){if(DS(b,BH)&&c>=0){d=BAz.data;if(c{MN();if(FE(b,BH)&&GR(b,V(11)))return BIv.data[Cp(b)];return CRo(b,0);},BBD=(a,b)=>{let c;a:{c=a.bHQ-b.bHQ|0;if(!ABG(a)){if(!ABG(b))break a;if(c<0)break a;return a;}if(c>0){if(!ABG(b))break a;return a;}return b;}if(!c){if((DT(a.bKA,b.bKA)+1|0)>=64)return AMp(RO(Kt(a),Kt(b)), +a.bHQ);return ANL(BU(a.bK$,b.bK$),a.bHQ);}if(c<=0)return Ca3(b,a, -c|0);return Ca3(a,b,c);},Ca3=(b,c,d)=>{MN();if(d{let c;c=BU(V(a.bHQ),V(b.bHQ));if(!ABG(a)&&!ABG(b)){if((a.bKA+b.bKA|0)>=64)return AMp(IP(Kt(a),Kt(b)),Bck(c));return ANL(CT(a.bK$,b.bK$),Bck(c));}return DfW(c);},AKC=a=>{let b;if(a.bKA<64){b=a.bK$;V6();return Cp(Gu(GS(b,63),GD(LF(b), +63)));}return (Kt(a)).bHG;},ABG=a=>{return !(!a.bKA&&D4(a.bK$,V(-1)))?0:1;},BWO=a=>{let b,c,d,e,f,g,h,i,j;b=a.b1q;if(b<=0){c=a.bKA;d=1.0;if(c>=1024){b=1.0+(c-1|0)*0.3010299956639812|0;if((K9(Kt(a),XO(V(b)))).bHG)b=b+1|0;}else{if(c>=64)a:{b:{e=Kt(a);AP_();c=e.bHZ;b=C5(c,2);if(b>=0){if(b)break b;if(e.bHc.data[1]<=0)break b;}d=Id(AEm(e));break a;}if(c>32)d=e.bHG<=0?(-Infinity):Infinity;else{b=A4g(BVz(e));f=V(b-1|0);g=b-54|0;h=CN(AEm(A$$(BVz(e),g)),O(4294967295, 2097151));if(DS(f,V(1023))){if(DS(h,O(4294967295, 2097151))) +{d=e.bHG<=0?(-Infinity):Infinity;break a;}if(DS(h,O(4294967294, 2097151))){d=e.bHG<=0?(-1.7976931348623157E308):1.7976931348623157E308;break a;}}c:{if(!(DS(CN(h,V(1)),V(1))&&DS(CN(h,V(2)),V(2)))){i=e.bHc;b=g>>5;c=g&31;g=0;while(true){j=C5(g,b);if(j>=0)break;if(i.data[g])break;g=g+1|0;}if(!(!(!j&&!(i.data[g]<<(32-c|0)))?1:0))break c;}h=BU(h,V(2));}h=GS(h,1);d=Baa(Gu(Gu(e.bHG>=0?BH:O(0, 2147483648),CN(EU(BU(V(1023),f),52),O(0, 2146435072))),h));}}else if(c>=1)d=Id(a.bK$);d=EL(d);AEh();e=CtB;BDa(d,e);b=e.b7J;if +(b<0&&G5(e.b3X,O(1569325056, 23283064)))b=b+1|0;b=1+b|0;}a.b1q=b;return b;}return b;},CiT=(a,b)=>{let c,d,e,f,g,h,i;c=AKC(a);d=C5(c,AKC(b));if(!d){d=a.bHQ;e=b.bHQ;if(d==e&&a.bKA<64&&b.bKA<64){c=OT(a.bK$,b.bK$);return c<0?(-1):c<=0?0:1;}f=CE(V(d),V(e));g=V(Bi_(a)-Bi_(b)|0);if(IH(g,BU(f,V(1)))){if(FE(g,CE(f,V(1)))){h=Kt(a);i=Kt(b);c=OT(f,BH);if(c<0)h=IP(h,XO(LF(f)));else if(c>0)i=IP(i,XO(f));return AS5(h,i);}return -c|0;}return c;}if(d<0)return (-1);return 1;},CRe=a=>{let b,c,d,e;if(a.bHQ&&!ABG(a)){b=a.bHQ;if +(b>=0){if(b<=Bi_(a)&&a.bHQ<=CRk(Kt(a))){c=(AJR(Kt(a),XO(V(a.bHQ)))).data;if(c[1].bHG){d=new KZ;Bp(d,E(1467));J(d);}return c[0];}e=new KZ;Bp(e,E(1467));J(e);}return IP(Kt(a),XO(LF(V(a.bHQ))));}return Kt(a);},A62=a=>{let b;b=a.bHQ;return !(b>(-64)&&b<=Bi_(a))?BH:AEm(!(a.bHQ&&!ABG(a))?Kt(a):a.bHQ>=0?K9(Kt(a),XO(V(a.bHQ))):IP(Kt(a),XO(LF(V(a.bHQ)))));},Lq=a=>{let b,c,d,e,f,g,h,i,j,k,l,m,n;b=AKC(a);c=1076;d=CE(V(a.bKA),Pc(a.bHQ/0.3010299956639812));if(FE(d,V(-1074))&&b){if(IH(d,V(1025))){e=BVz(Kt(a));f=a.bHQ;if(f +<=0)e=IP(e,XO(V( -f|0)));else{g=XO(V(f));f=100-Cp(d)|0;if(f>0){e=T4(e,f);c=c-f|0;}h=(AJR(e,g)).data;e=h[1];if(!e.bHG)i=e;else{f=e.bHZ;j=f+1|0;k=Ca(j);B$C(k,e.bHc,f);i=M_(e.bHG,j,k);Q9(i);}j=AS5(i,g);e=RO(T4(h[0],2),L3(V((Ev(j,j+3|0)/2|0)+1|0)));c=c+(-2)|0;}l=CRk(e);m=A4g(e)-54|0;if(m<=0){n=EU(AEm(e), -m|0);d=D4(CN(n,V(3)),V(3))?n:BU(n,V(2));}else{n=AEm(A$$(e,m));d=!(DS(CN(n,V(1)),V(1))&&l=(-53)){a:{n=GS(n,1);d=CN(n,GD(V(-1),63+c|0));n=GS(n, -c|0);if(D4(CN(n,V(3)),V(3))){if(D4(CN(n,V(1)),V(1)))break a;if(DS(d,BH))break a;if(l>=m)break a;}n=BU(n,V(1));}c=0;d=GS(n,1);}else return b*0.0;}return Baa(Gu(Gu(CN(V(b),O(0, 2147483648)),EU(V(c),52)),CN(d,O(4294967295, 1048575))));}return b*Infinity;}return b*Infinity;}return b*0.0;},Bi_=a=>{let b;b=a.b1q;if(b<=0)b=((a.bKA-1|0)*0.3010299956639812|0)+1|0;return b;},Bck=b=>{let c;MN();if(FE(b,V(-2147483648))){if(G5(b,V(2147483647))) +{c=new KZ;Bp(c,E(1468));J(c);}return Cp(b);}c=new KZ;Bp(c,E(1469));J(c);},DfW=b=>{let c;MN();c=Cp(b);if(D4(b,V(c))){if(FE(b,BH))return AIp(0,2147483647);return AIp(0,(-2147483648));}return ANL(BH,c);},Kt=a=>{if(a.caT===null)a.caT=L3(a.bK$);return a.caT;},BGT=(a,b)=>{let c;a.caT=b;c=A4g(b);a.bKA=c;if(c<64)a.bK$=AEm(b);},AXz=b=>{MN();if(GR(b,BH))b=SW(b,V(-1));return 64-BMn(b)|0;},EUY=()=>{let b,c,d,e,f;A44=AIp(0,0);DA9=AIp(1,0);FnY=AIp(10,0);b=Vu(19);c=b.data;c[0]=V(1);c[1]=V(10);c[2]=V(100);c[3]=V(1000);c[4] +=V(10000);c[5]=V(100000);c[6]=V(1000000);c[7]=V(10000000);c[8]=V(100000000);c[9]=V(1000000000);c[10]=O(1410065408, 2);c[11]=O(1215752192, 23);c[12]=O(3567587328, 232);c[13]=O(1316134912, 2328);c[14]=O(276447232, 23283);c[15]=O(2764472320, 232830);c[16]=O(1874919424, 2328306);c[17]=O(1569325056, 23283064);c[18]=O(2808348672, 232830643);A9F=b;b=Vu(28);d=b.data;d[0]=V(1);d[1]=V(5);d[2]=V(25);d[3]=V(125);d[4]=V(625);d[5]=V(3125);d[6]=V(15625);d[7]=V(78125);d[8]=V(390625);d[9]=V(1953125);d[10]=V(9765625);d[11]=V(48828125);d[12] +=V(244140625);d[13]=V(1220703125);d[14]=O(1808548329, 1);d[15]=O(452807053, 7);d[16]=O(2264035265, 35);d[17]=O(2730241733, 177);d[18]=O(766306777, 888);d[19]=O(3831533885, 4440);d[20]=O(1977800241, 22204);d[21]=O(1299066613, 111022);d[22]=O(2200365769, 555111);d[23]=O(2411894253, 2775557);d[24]=O(3469536673, 13877787);d[25]=O(167814181, 69388939);d[26]=O(839070905, 346944695);d[27]=O(4195354525, 1734723475);BTx=b;BXD=Ca(d.length);Bzs=Ca(c.length);BIv=K(QI,11);BAz=K(QI,11);ALs=Fd(100);e=0;while(e=b.length)break;b[e]=48;e=e+1|0;}f=0;while(true){b=BXD.data;if(f>=b.length)break;b[f]=AXz(BTx.data[f]);f=f+1|0;}f=0;while(true){b=Bzs.data;if(f>=b.length)break;b[f]=AXz(A9F.data[f]);f=f+1|0;}Rh();EdX=AXD;E_B=ABu;},CgE=N(),BqK=null,BbD=BH,BEt=BH,ANZ=()=>{ANZ=Z(CgE);Fnt();},DhA=b=>{let c;ANZ();c=BqK.data;if(b>=c.length){if(b==160)return BbD;return BH;}return c[b];}; +let DiQ=b=>{let c,d;ANZ();c=BH;d=0;while(d{let c,d,e,f;ANZ();c=BH;d=0;while(d=b.bGI.length)e=d;else if(Bn(b,e)!=43)e=d;}}d=e+1|0;}return c;},Fnt=()=>{let b,c,d,e;BqK=Vu(127);BbD +=V(1);BEt=V(2);b=V(4);c=0;while(c=65&&d<=90)e[(d+32|0)&65535]=b;else if(!(d!=46&&d!=61&&d!=45&&d!=126))e[d]=Gu(e[d],BEt);b=EU(b,1);c=c+1|0;}e=BqK.data;b=BbD;e[32]=b;e[9]=b;e[13]=b;e[10]=b;e[12]=b;},B4K=N(Tq),EGj=(a,b)=>{let c;if(b<0){c=new EN;X(c);J(c);}return A2v(AQE(a,b));},D1F=(a,b,c)=>{let d,e;if(b>=0){d=AQE(a,b);e=A2v(d);if(d.bW0===null){c=new BP;X(c);J(c);}Bj_(d);d.bW0.bZk=c;d.bW0=null;return e;}c=new EN;X(c);J(c);},D9z=(a,b,c)=>{if(b<0){c=new EN;X(c);J(c);}Cw3(AQE(a, +b),c);},DJw=(a,b)=>{let c,d;if(b>=0){c=AQE(a,b);d=A2v(c);CXm(c);return d;}c=new EN;X(c);J(c);},Ey9=(a,b,c)=>{let d,e,f;if(b>=0){d=AQE(a,b);e=0;f=Br(c);while(Bq(f)){c=Bm(f);Cw3(d,c);e=1;}return e;}c=new EN;X(c);J(c);},C$4=a=>{return Cew(a);}; +function A3E(){let a=this;B4K.call(a);a.bWo=null;a.bUj=null;a.bO$=0;} +let FsA=a=>{return a.bO$;},Er9=a=>{a.bWo=null;a.bUj=null;a.bO$=0;a.bHh=a.bHh+1|0;},Cew=a=>{return B5X(a,a.bWo,null,0);},AQE=(a,b)=>{let c,d,e,f;if(b>=0){c=a.bO$;if(b>(c/2|0)){if(b<=c){d=a.bUj;e=b;while(e{let c;c=new BdD;c.bZk=b;b=a.bUj;c.bRv=b;if(b===null)a.bWo=c;else b.bPS=c;a.bUj=c;a.bHh=a.bHh+1|0;a.bO$=a.bO$+1|0;},BBK +=a=>{let b,c;b=a.bUj;if(b!==null){c=b.bRv;a.bUj=c;if(c!==null)c.bPS=null;else a.bWo=null;a.bO$=a.bO$-1|0;a.bHh=a.bHh+1|0;return b.bZk;}return null;},B7i=a=>{let b;b=a.bUj;return b===null?null:b.bZk;}; +function Ca6(){F.call(this);this.coV=null;} +let CCH=(a,b,c)=>{Es(a.coV,b,c);},Bs6=(a,b)=>{return FW(a.coV,b);},ARd=N(0),DaM=N(AIb),D76=a=>{BAT(a,E9());},AAh=()=>{let a=new DaM();D76(a);return a;}; +function CvV(){F.call(this);this.b67=null;} +let C4H=(a,b,c)=>{let d;d=CNP(a,b);if(c>=255)a.b67.data[d]=0;else a.b67.data[d]=(c+1|0)<<24>>24;},CNP=(a,b)=>{return FP(b)&(a.b67.data.length-1|0);}; +function Do8(){let a=this;F.call(a);a.cqv=null;a.cLp=null;a.c57=0;} +let B5K=N(0),B49=N(),ALz=null,BAk=null,Bja=0,AF$=()=>{AF$=Z(B49);EUa();},ENk=a=>{AF$();},A1L=()=>{let a=new B49();ENk(a);return a;},FlL=(a,b)=>{let c,d,e,f,g,h,i,j;if(b!==null){b=b.data;c=new S;d=b.length;JP(c,((d*4|0)+2|0)/3|0);e=0;while(e=d?0:b[g]&255;g=e+2|0;g=g>=d?0:b[g]&255;i=f>>2;j=(f&3)<<4|h>>4;f=(h&15)<<2|g>>6;g=g&63;AF$();Bb(c,ALz.data[i&63]);Bb(c,ALz.data[j&63]);Bb(c,ALz.data[f&63]);Bb(c,ALz.data[g&63]);e=e+3|0;}return Q(c);}return E(14);},Fh1=(a,b)=>{let c,d,e;c=b%4|0;if +(c)b=b+(4-c|0)|0;if(Df()){AF$();if(!Bja&&(b%4|0)){d=new C4;e=new S;T(e);BE(H(e,E(1471)),b);AT_(d,Q(e));J(d);}}return ((b*3|0)+3|0)/4|0;},Bhg=(a,b,c)=>{if(c>=b.bGI.length)return 48;return Bn(b,c);},Cyb=b=>{AF$();return BAk.data[b];},E7q=(a,b,c,d,e,f,g)=>{let h,i,j,k,l;h=b.data;AF$();b=BAk.data;i=b[d];j=b[e];k=b[f];l=b[g];h[c]=(i<<2|j>>4)<<24>>24;h[c+1|0]=((j&15)<<4|k>>2)<<24>>24;h[c+2|0]=((k&3)<<6|l)<<24>>24;},EUa=()=>{let b,c,d,e;Bja=0;ALz=Fd(64);BAk=BD(128);b=0;a:{while(true){c=C5(b,64);if(c>=0)break;d=ALz;AF$();if +(Df()&&!Bja){if(b<0)break a;if(c>=0)break a;}if(b<10)c=(48+b|0)&65535;else{c=(b-10|0)<<24>>24;if(c<26)c=(65+c|0)&65535;else{c=(c-26|0)<<24>>24;if(c<26)c=(97+c|0)&65535;else{c=(c-26|0)<<24>>24;if(!c)c=45;else if(c==1)c=95;else{if(Df()&&!Bja){e=new C4;X(e);J(e);}c=63;}}}}d.data[b]=c;BAk.data[ALz.data[b]]=b;b=(b+1|0)<<24>>24;}return;}e=new C4;X(e);J(e);},CdB=N(0),AQ4=N(),CwL=(a,b,c)=>{if(b.bG4>0)Bb(b,10);L(b,c.bGP);},Dqd=(b,c)=>{let d,e,f,g;d=IZ(b,c);if(d!=(-1)){e=b.bGI.length;f=new S;JP(f,e);g=0;while(d!=(-1)) +{Y7(f,b,g,d);g=d+c.bGI.length|0;while(g{return !(b!=32&&b!=9&&b!=10&&b!=11&&b!=12&&b!=13&&b!=160)?1:0;},CFL=(b,c)=>{let d,e,f;d=b.bGI.length;e=0;while(ee){f=Bn(b,d-1|0);if(!(f!=133&& +f!=8232&&f!=8233)?1:0)d=d+(-1)|0;}while(d>e&&Bj1(Bn(b,d-1|0))){d=d+(-1)|0;}f:{f=d-E(1453).bGI.length|0;if(f>=e&&Rl(b,E(1453),f)){g:{while(f>e){if(!Bj1(Bn(b,f-1|0)))break g;f=f+(-1)|0;}d=f;break f;}d=f;}}return B_(b,e,d);},AJF=N(0),CII=N(),DSo=(a,b)=>{let c,d,e,f,$$je;c=BaB();d=Cs$(2,0);d.cfW=9;e=new CEv;BBF(e,c);e.bTM=d;e.b6j=BD(512);try{Doi(e,b);Etp(e);Fr$(c);b=AWH(c);}catch($$e){$$je=P($$e);if($$je instanceof Dd){f=$$je;c=new BP;Bp(c,AC1(f));J(c);}else{throw $$e;}}return b;}; +function CKr(){let a=this;F.call(a);a.cWu=null;a.cYb=null;a.cX2=null;a.cRX=null;} +let A_a=(b,c,d)=>{let e,f;e=new CKr;A8t();f=BiN;e.cWu=d;e.cYb=b;e.cX2=c;e.cRX=f;return e;},BHu=N(),Dc8=0,Bee=()=>{Bee=Z(BHu);EMy();},E4s=a=>{Bee();},CuF=()=>{let a=new BHu();E4s(a);return a;},DDW=(a,b)=>{let c,d,e,f,g,h,i,j,k;Bee();if(Dc8){c=b.data.length;if(!c)b=null;else{d=c*2|0;if(d<100)d=100;e=new Cg7;e.cmW=DCi(d);f=new Dav;A55();g=A_v;A72();h=A8m;f.cKu=g;f.c1s=h;f.ctY=30;h=Fss(e,f,b);i=h.b3C;b=BD(i);Di(h.b1w,0,b,0,i);}return b;}i=b.data.length;if(i){j=i*2|0;if(j<1000)j=1000;h=Cs$(9,1);BKE(h,b,0,i);DcT(h);k +=BD(j);d=BC5(h,k);if(h.clx){b=BD(d);Di(k,0,b,0,d);return b;}return null;}return null;},EYo=(a,b)=>{let c,d,e,f,$$je;c=b.data.length;d=BD(c+256|0);Di(b,0,d,0,c);e=new CV0;e.ctq=B$(A0A(d));e.cdJ=0;e.b3r=0;try{e=DVl(Fk1(e));}catch($$e){$$je=P($$e);if($$je instanceof Dt){f=$$je;e=new BWo;YV(e,f);J(e);}else{throw $$e;}}return e;},EMy=()=>{Dc8=0;},Dj_=N(),FtC=(a,b)=>{let c,d,e,f;if(b!==null){b=b.data;c=new S;d=b.length;JP(c,d*2|0);e=0;while(e{return b;},Dfd=N(),D49=(a,b)=>{let c;c=new BV;X(c);J(c);},C$K=N(),D6K=(a,b)=>{let c;c=new BV;X(c);J(c);}; +function DoS(){let a=this;OH.call(a);a.daL=null;a.c_S=0;} +function Cu4(){OH.call(this);this.c8J=null;} +let FpW=(a,b)=>{let c;c=new S;T(c);H(H(c,E(1472)),b);Bp(a,Q(c));a.c8J=b;},BwS=a=>{let b=new Cu4();FpW(b,a);return b;}; +function Cci(){OH.call(this);this.c$e=null;} +let DIs=(a,b)=>{let c;c=new S;T(c);H(H(c,E(1473)),b);Bp(a,Q(c));a.c$e=b;},C98=a=>{let b=new Cci();DIs(b,a);return b;}; +function Ctk(){F.call(this);this.c$E=0;} +let EPn=(a,b)=>{a.c$E=b;},CDd=a=>{let b=new Ctk();EPn(b,a);return b;}; +function Chz(){let a=this;F.call(a);a.cVk=0.0;a.cQ2=0.0;} +let EDE=(a,b)=>{return;},BsZ=(a,b)=>{return Cl(a.cVk,a.cQ2);},DX0=(a,b,c)=>{return null;},C0A=N(0),CBh=N(0); +function AUp(){If.call(this);this.bNW=null;} +let A_E=null,AQx=()=>{AQx=Z(AUp);Eyj();},Exe=a=>{AQx();a.bNW=AAk();},UJ=()=>{let a=new AUp();Exe(a);return a;},Dcw=(a,b)=>{return CLb(a.bNW,b);},A$A=a=>{return B95(a.bNW);},APh=a=>{return APY(a.bNW);},NA=a=>{return (BEO(a.bNW)).dX();},KM=(a,b)=>{let c;c=a.bNW;AQx();return Qm(c,b,A_E)!==null?0:1;},Cku=a=>{let b;b=BSl(a.bNW,0);if(b===null){b=new Kx;X(b);J(b);}return b.bIu;},DdP=a=>{let b;b=BSl(a.bNW,1);if(b===null){b=new Kx;X(b);J(b);}return b.bIu;},Eyj=()=>{A_E=new F;},A0P=N(Bx),BiN=null,BMS=null,EkA=null,A8t +=()=>{A8t=Z(A0P);EmL();},EJX=(a,b,c)=>{A8t();Ct(a,b,c);},Diu=(a,b)=>{let c=new A0P();EJX(c,a,b);return c;},EmL=()=>{let b,c,d;BiN=Diu(E(1474),0);b=Diu(E(1475),1);BMS=b;c=K(A0P,2);d=c.data;d[0]=BiN;d[1]=b;EkA=c;}; +function C4B(){let a=this;F.call(a);a.cZI=0;a.deQ=0;a.cPx=null;} +let Exd=(a,b,c)=>{a.cPx=b;a.deQ=c;a.cZI=c;},EBK=(a,b)=>{let c=new C4B();Exd(c,a,b);return c;},E$t=a=>{return El(a.cPx,a.cZI);},Rj=N(0); +function BWQ(){F.call(this);this.b$w=null;} +let Fcf=(a,b)=>{a.b$w=b;},AN5=a=>{let b=new BWQ();Fcf(b,a);return b;},DJa=(a,b,c)=>{L(c,a.b$w);},ENI=(a,b)=>{let c;if(a!==b){if(b instanceof BWQ){c=b;return Bj(a.b$w,c.b$w);}return 0;}return 1;},Euu=a=>{return FP(a.b$w);}; +function CAR(){Bt.call(this);this.dax=null;} +let FdK=(a,b)=>{X(a);a.dax=b;},BG5=a=>{let b=new CAR();FdK(b,a);return b;},Bd2=N(0),CI=N(),DQ6=a=>{return;},DVc=a=>{NK();return Y_;},Egh=(a,b,c,d,e,f)=>{b=new BV;X(b);J(b);},D1T=a=>{return 0;},B36=N(CI),CCg=null,Bwl=()=>{Bwl=Z(B36);Dtb();},D6b=a=>{Bwl();return CCg;},D9o=(a,b,c)=>{return b?0:1;},Fou=(a,b,c,d,e,f)=>{return GX(0);},Dtb=()=>{CCg=DY(E(1476),0);},BOo=N(CI),CyU=null,BsU=()=>{BsU=Z(BOo);Fon();},ERE=a=>{BsU();return CyU;},Em6=(a,b,c)=>{return b?0:1;},Ea$=(a,b,c,d,e,f)=>{return GX(1);},Fon=()=>{CyU=DY(E(1477), +0);},BLH=N(CI),Cd2=null,Bxx=()=>{Bxx=Z(BLH);Eje();},E_F=a=>{Bxx();return Cd2;},DFm=(a,b,c)=>{return b?0:1;},FaT=(a,b,c,d,e,f)=>{return EV(E(1478));},Eje=()=>{Cd2=DY(E(1479),0);},B84=N(CI),Da0=null,Bro=()=>{Bro=Z(B84);DD8();},Fil=a=>{Bro();return Da0;},EBc=(a,b,c)=>{return b!=1?0:1;},EOJ=(a,b,c,d,e,f)=>{let g,h;a:{b:{c:{d:{e:{g=FS(D$(e.cf(0)));h=(-1);switch(FP(g)){case 48:break e;case 49:break d;case 3569038:break c;case 97196323:break b;default:}break a;}if(!Bj(g,E(35)))break a;h=3;break a;}if(!Bj(g,E(360)))break a;h +=1;break a;}if(!Bj(g,E(13)))break a;h=0;break a;}if(Bj(g,E(12)))h=2;}switch(h){case 0:case 1:break;case 2:case 3:return GX(0);default:b=new Ij;c=new S;T(c);H(H(H(c,E(1480)),g),E(1481));JV(b,Q(c),d);J(b);}return GX(1);},DD8=()=>{Da0=DY(E(1482),1);},BXZ=N(CI),CeB=null,BtQ=()=>{BtQ=Z(BXZ);DuC();},Ebn=a=>{BtQ();return CeB;},EIn=(a,b,c)=>{return b?0:1;},Efp=(a,b,c,d,e,f)=>{return EV(E(1483));},DuC=()=>{CeB=DY(E(1484),0);},BIr=N(CI),Ddv=null,BwO=()=>{BwO=Z(BIr);Fcz();},D12=a=>{BwO();return Ddv;},FgE=(a,b,c)=>{return b +<=0?0:1;},Fi1=(a,b,c,d,e,f)=>{let g,h,i,j;g=D$(e.cf(0));h=e.dV();i=LV(e,1,h);j=BXp(b,DY(g,Bdl(i)));if(j===null){c=new Ij;e=new S;T(e);H(H(e,E(1485)),g);JV(c,Q(e),d);J(c);}return j.uv(b,c,d,i,f);},Fcz=()=>{Ddv=DY(E(1486),1);}; +let BZ$=N(CI),C6K=null,BwH=()=>{BwH=Z(BZ$);Dvi();},EXr=a=>{BwH();return C6K;},DVt=(a,b,c)=>{return b!=1?0:1;},EYI=(a,b,c,d,e,f)=>{let $$je;try{b=EV(ER6(Wr(CMs(e.cf(0)))));}catch($$e){$$je=P($$e);if($$je instanceof Gt){return EV(E(1487));}else{throw $$e;}}return b;},Dvi=()=>{C6K=DY(E(1488),1);},B2d=N(CI),B9P=null,Bxg=()=>{Bxg=Z(B2d);DVa();},DN0=a=>{Bxg();return B9P;},DWd=(a,b,c)=>{return b!=2?0:1;},D0$=(a,b,c,d,e,f)=>{let g,h,$$je;g=D$(e.cf(0));h=(e.cf(1)).bHY;try{b=EV(((DV(KI(),g)).w4(h)).oB());}catch($$e){$$je +=P($$e);if($$je instanceof J1){J(EC(E(1489),d));}else{throw $$e;}}return b;},DVa=()=>{B9P=DY(E(1490),2);},BXN=N(CI),Cta=null,CV1=null,A32=()=>{A32=Z(BXN);Fpz();},Fj7=a=>{A32();return Cta;},EO7=(a,b,c)=>{return !(b&&b!=1&&b!=2&&b!=3)?1:0;},EZv=(a,b,c,d,e,f)=>{let g,h,i,j,k,$$je;if(e.dV()){g=D$(e.cf(0));h=e.dV()<2?QR():CT(V(1000),V((e.cf(1)).bHY));if(e.dV()!=3)i=BCn();else{j=D$(e.cf(2));A32();if(PT(CV1,j))i=B8C(j);else{b=new Ij;c=new S;T(c);H(H(c,E(1491)),j);JV(b,Q(c),d);J(b);}}try{k=Fpm(g);ElJ(k,i);b=EV(Bjp(k, +TT(h)));}catch($$e){$$je=P($$e);if($$je instanceof Dt){J(EC(E(1492),d));}else{throw $$e;}}return b;}Bxa();return EV(Fe((new Date(Id(QR()))).toString()));},Fpz=()=>{let b;Cta=DY(E(1493),3);b=new AIb;AKu();Cih(b,Bv(CNF()));CV1=b;},BSh=N(CI),C$t=null,BhQ=()=>{BhQ=Z(BSh);DDL();},Ewt=a=>{BhQ();return C$t;},Eui=(a,b,c)=>{return b!=1?0:1;},Eo7=(a,b,c,d,e,f)=>{let $$je;try{b=Boa(CMs(e.cf(0)));c=CR();H(c,b);b=EV(CH(c));}catch($$e){$$je=P($$e);if($$je instanceof Gt){return EV(E(14));}else{throw $$e;}}return b;},DDL=()=> +{C$t=DY(E(1494),1);},B7_=N(CI),B$T=null,Bw5=()=>{Bw5=Z(B7_);Eyp();},Fhc=a=>{Bw5();return B$T;},DLR=(a,b,c)=>{return b?0:1;},EVC=(a,b,c,d,e,f)=>{let g;g=ByA(b,E(1495));if(g===null)return EV(E(14));return EV(g);},Eyp=()=>{B$T=DY(E(1496),0);},BNO=N(CI),CTw=null,BrQ=()=>{BrQ=Z(BNO);EM9();},Ef4=a=>{BrQ();return CTw;},Ecr=(a,b,c)=>{return b?0:1;},Fdz=(a,b,c,d,e,f)=>{return EV(E(1497));},EM9=()=>{CTw=DY(E(1498),0);},BKA=N(CI),Ck0=null,BAo=()=>{BAo=Z(BKA);FlE();},Ezc=a=>{BAo();return Ck0;},E31=(a,b,c)=>{return b!=1 +?0:1;},EGb=(a,b,c,d,e,f)=>{let g,h;g=D$(e.cf(0));h=new CjU;Kk(h,Ia(g,null));return Mh((AGR(h,b,c)).bHY);},FlE=()=>{Ck0=DY(E(1499),1);}; +let B6_=N(CI),Cf1=null,Bd3=()=>{Bd3=Z(B6_);Dx5();},DLQ=a=>{Bd3();return Cf1;},DCJ=(a,b,c)=>{return b!=1?0:1;},EYP=(a,b,c,d,e,f)=>{let g;g=D$(e.cf(0));if(!BG(E(169),g)){if(BG(E(1500),g))return Mh(1);return Mh(0);}return Mh(1);},Dx5=()=>{Cf1=DY(E(1501),1);},B54=N(CI),CO8=null,Blb=()=>{Blb=Z(B54);DDj();},Fe$=a=>{Blb();return CO8;},E86=(a,b,c)=>{return b?0:1;},DHW=(a,b,c,d,e,f)=>{let g;g=ByA(b,E(1502));if(g===null)return EV(E(14));return EV(g);},DDj=()=>{CO8=DY(E(1503),0);},BRX=N(CI),Cuh=null,BpE=()=>{BpE=Z(BRX);DJS();},D9b +=a=>{BpE();return Cuh;},FbL=(a,b,c)=>{return b!=1?0:1;},Du4=(a,b,c,d,e,f)=>{return GX(ALl(AKd(D$(e.cf(0)))));},DJS=()=>{Cuh=DY(E(1504),1);},BDV=N(CI),Dgn=null,Bgh=()=>{Bgh=Z(BDV);EDo();},D3u=a=>{Bgh();return Dgn;},DZN=(a,b,c)=>{return b?0:1;},Ek0=(a,b,c,d,e,f)=>{let g;g=ByA(b,E(1505));if(g===null)return EV(E(14));return EV(g);},EDo=()=>{Dgn=DY(E(1506),0);},BHj=N(CI),CVw=null,Bgt=()=>{Bgt=Z(BHj);EBG();},DGD=a=>{Bgt();return CVw;},Fjm=(a,b,c)=>{return b?0:1;},Fpl=(a,b,c,d,e,f)=>{let g;g=ByA(b,E(1507));if(g=== +null)return EV(E(14));return EV(g);},EBG=()=>{CVw=DY(E(1508),0);},BD3=N(CI),CFl=null,ByL=()=>{ByL=Z(BD3);Ei6();},FqL=a=>{ByL();return CFl;},D4x=(a,b,c)=>{return b!=1?0:1;},DV5=(a,b,c,d,e,f)=>{return GX(BXx(b,D$(e.cf(0))));},Ei6=()=>{CFl=DY(E(1509),1);},BWK=N(CI),CeI=null,Bcd=()=>{Bcd=Z(BWK);FuS();},Ea1=a=>{Bcd();return CeI;},D66=(a,b,c)=>{return b?0:1;},Eij=(a,b,c,d,e,f)=>{let g,h,$$je;g=Zh();a:{try{b=Br(DPa());}catch($$e){$$je=P($$e);if($$je instanceof Dd){h=$$je;break a;}else{throw $$e;}}c=b;while(true){try +{if(!Bq(c))break;AMu(g,Bm(c));continue;}catch($$e){$$je=P($$e);if($$je instanceof Dd){h=$$je;break a;}else{throw $$e;}}}try{b=LX(g);}catch($$e){$$je=P($$e);if($$je instanceof Dd){h=$$je;break a;}else{throw $$e;}}return b;}GP(h);return LX(g);},FuS=()=>{CeI=DY(E(1510),0);},BX6=N(CI); +let CJo=null,Bel=()=>{Bel=Z(BX6);D6R();},Dxn=a=>{Bel();return CJo;},E1m=(a,b,c)=>{return b?0:1;},Fxq=(a,b,c,d,e,f)=>{return LX(b.chm);},D6R=()=>{CJo=DY(E(1511),0);},BJa=N(CI),Dis=null,Bpw=()=>{Bpw=Z(BJa);D9O();},DFW=a=>{Bpw();return Dis;},D6h=(a,b,c)=>{return b!=1?0:1;},DI$=(a,b,c,d,e,f)=>{let g,h,i,j,k,l;g=e.cf(0);if(W_(g)){h=g.bKG;if(!h.xe()){if(h.ul()){i=h;j=Zh();d=AGA(i);while(AAZ(d)){a:{k=AAW(d);if(k.xe()){b=(B6b(k)).dX();while(true){if(!b.dY())break a;AMu(j,b.dZ());}}}}return LX(j);}J(EC(E(1512),d));}l +=h;j=Zh();b=(B6b(l)).dX();while(b.dY()){AMu(j,b.dZ());}return LX(j);}J(EC(E(1513),d));},D9O=()=>{Dis=DY(E(1514),1);},BKa=N(CI),C_6=null,Bj4=()=>{Bj4=Z(BKa);FrG();},D2A=a=>{Bj4();return C_6;},DEl=(a,b,c)=>{return b!=1?0:1;},DRj=(a,b,c,d,e,f)=>{let g,h;g=e.cf(0);if(!BfM(g)){if(!Ju(g)){if(W_(g)){h=g.bKG;if(!h.ul()){if(!h.xe()){if(!h.xg()){if(!h.uj()){if(h.ui())return EV(E(40));return EV(E(246));}return EV(E(41));}return EV(E(45));}return EV(E(38));}return EV(E(1515));}return EV(E(1516));}return EV(E(41));}return EV(E(40));},FrG +=()=>{C_6=DY(E(1517),1);},B12=N(CI),C18=null,Bie=()=>{Bie=Z(B12);Ei5();},EDf=a=>{Bie();return C18;},FnQ=(a,b,c)=>{return b!=1?0:1;},DZi=(a,b,c,d,e,f)=>{let g;g=c.uf(D$(e.cf(0)));if(g===null)return EV(E(14));return g;},Ei5=()=>{C18=DY(E(1518),1);},B7u=N(CI),CZC=null,BbX=()=>{BbX=Z(B7u);FpC();},FpJ=a=>{BbX();return CZC;},FpU=(a,b,c)=>{return b?0:1;},EFZ=(a,b,c,d,e,f)=>{return EV(E(63));},FpC=()=>{CZC=DY(E(1519),0);},BSd=N(CI),Cen=null,BoN=()=>{BoN=Z(BSd);EsC();},ExZ=a=>{BoN();return Cen;},Elm=(a,b,c)=>{return b +!=1?0:1;},DSt=(a,b,c,d,e,f)=>{let g,h;b=D$(e.cf(0));c=U2();if(b===null)g=0;else{e=FS(b);if(BO(e,E(1520)))g=0;else if(BO(e,E(1521)))g=1;else if(!(!Bj(e,E(81))&&!Bj(e,E(83))))g=1;else{AFS();g=c!==AQn?0:1;}}if(!g)h=null;else{h=A2k(b);if(h===null)h=null;}if(h===null)return EV(E(14));return EV(h);},EsC=()=>{Cen=DY(E(1522),1);},BZW=N(CI),Cql=null,Bdr=()=>{Bdr=Z(BZW);E0u();},Dwk=a=>{Bdr();},DVw=()=>{let a=new BZW();Dwk(a);return a;},Fvl=a=>{Bdr();return Cql;},Ems=(a,b,c)=>{return b!=1?0:1;},DFS=(a,b,c,d,e,f)=>{let $$je;try +{b=Mh(Y5(D$(e.cf(0)),16));}catch($$e){$$je=P($$e);if($$je instanceof Gt){return Mh(0);}else{throw $$e;}}return b;},E0u=()=>{Cql=DY(E(1523),1);}; +let BLo=N(CI),CW2=null,Bfi=()=>{Bfi=Z(BLo);Fuq();},E5J=a=>{Bfi();},DZz=()=>{let a=new BLo();E5J(a);return a;},FhU=a=>{Bfi();return CW2;},E69=(a,b,c)=>{return !(b!=3&&b!=4)?1:0;},FqG=(a,b,c,d,e,f)=>{let g,h,i;g=(e.cf(0)).bHY;h=(e.cf(1)).bHY;i=(e.cf(2)).bHY;if(e.dV()!=3)return EV(B2V(Xv((DjC(g,h,i,(e.cf(3)).bHY/100.0)).cmr)));return EV(B2V(Xv((DjC(g,h,i,1.0)).cmr)));},Fuq=()=>{CW2=DY(E(1524),3);},B4t=N(CI),DqA=null,Bg_=()=>{Bg_=Z(B4t);EyV();},ENq=a=>{Bg_();},DNh=()=>{let a=new B4t();ENq(a);return a;},EnI=a=>{Bg_();return DqA;},EEq +=(a,b,c)=>{return b!=1?0:1;},DMN=(a,b,c,d,e,f)=>{let g,$$je;g=D$(e.cf(0));try{b=Mh(CZ(g));}catch($$e){$$je=P($$e);if($$je instanceof Ex){b=new Ij;c=new S;T(c);H(H(H(c,E(1480)),g),E(1525));JV(b,Q(c),d);J(b);}else{throw $$e;}}return b;},EyV=()=>{DqA=DY(E(1526),1);},B8P=N(),Dcc=null,Bw9=()=>{Bw9=Z(B8P);D1b();},ELM=a=>{Bw9();},ETG=()=>{let a=new B8P();ELM(a);return a;},D2E=a=>{Bw9();return Dcc;},EgN=(a,b,c)=>{return b<=0?0:1;},Eye=a=>{NK();return X4;},DMV=(a,b,c,d,e,f)=>{let g,h,i,j;g=D$(e.cf(0));h=e.dV();i=LV(e, +1,h);j=BXp(b,DY(g,Bdl(i)));if(j===null){e=new Ij;b=new S;T(b);H(H(b,E(1485)),g);JV(e,Q(b),d);J(e);}j.uw(b,c,d,i,f);},FtY=(a,b,c,d,e,f)=>{b=new BV;X(b);J(b);},E99=a=>{return 0;},D1b=()=>{Dcc=DY(E(1527),1);},BYj=N(CI),CGK=null,By$=()=>{By$=Z(BYj);Dtj();},EM5=a=>{By$();},DVi=()=>{let a=new BYj();EM5(a);return a;},EhC=a=>{By$();return CGK;},FdM=(a,b,c)=>{return b!=1?0:1;},DLj=(a,b,c,d,e,f)=>{let g,$$je;g=D$(e.cf(0));try{b=GX((DV(KI(),g)).uW());}catch($$e){$$je=P($$e);if($$je instanceof J1){J(EC(E(1489),d));}else +{throw $$e;}}return b;},Dtj=()=>{CGK=DY(E(1528),1);},B10=N(CI),C7f=null,Bix=()=>{Bix=Z(B10);E0L();},EEr=a=>{Bix();},EQq=()=>{let a=new B10();EEr(a);return a;},D9s=a=>{Bix();return C7f;},DLW=(a,b,c)=>{return b!=1?0:1;},EfJ=(a,b,c,d,e,f)=>{let g,$$je;g=D$(e.cf(0));try{b=GX((DV(KI(),g)).uW()?0:1);}catch($$e){$$je=P($$e);if($$je instanceof J1){J(EC(E(1489),d));}else{throw $$e;}}return b;},E0L=()=>{C7f=DY(E(1529),1);},BQJ=N(CI),CKq=null; +let Bj3=()=>{Bj3=Z(BQJ);FnB();},EeH=a=>{Bj3();},Ers=()=>{let a=new BQJ();EeH(a);return a;},EPX=a=>{Bj3();return CKq;},E_9=(a,b,c)=>{return !(b!=2&&b!=3)?1:0;},FhZ=(a,b,c,d,e,f)=>{let g,h,i,j;g=e.cf(0);if(W_(g)){h=g.bKG.vr();if(!h.ul()&&!h.xe())return g;if(!h.ul()){if(h.xe()){i=D$(e.cf(1));j=A$H(e.cf(2));APl(h.xk(),i,j);return LX(h);}J(EC(E(1512),d));}j=A$H(e.cf(1));A93(h.xm(),j);return LX(h);}J(EC(E(1513),d));},FnB=()=>{CKq=DY(E(1530),3);},B3K=N(CI),CDG=null,BeZ=()=>{BeZ=Z(B3K);EXS();},DEe=a=>{BeZ();},EK4=()=> +{let a=new B3K();DEe(a);return a;},Elh=a=>{BeZ();return CDG;},EGR=(a,b,c)=>{return b!=2?0:1;},D9k=(a,b,c,d,e,f)=>{let g,h,i,j;g=e.cf(0);if(W_(g)){h=g.bKG;if(h.xe()){a:{i=e.cf(1);if(!BfM(i)){if(!W_(i))break a;if(!i.bKG.ui())break a;}j=D$(i);if(Nw(h.bL3,j))return GX(1);}return GX(0);}return GX(0);}return GX(0);},EXS=()=>{CDG=DY(E(1531),1);},BP6=N(CI),CJ5=null,BwB=()=>{BwB=Z(BP6);FeD();},EeJ=a=>{BwB();},E5d=()=>{let a=new BP6();EeJ(a);return a;},Fds=a=>{BwB();return CJ5;},DyO=(a,b,c)=>{return b!=2?0:1;},Erx=(a, +b,c,d,e,f)=>{let g,h,i,j,k;g=e.cf(0);if(W_(g)){h=e.cf(1);if(W_(h)){a:{i=g.bKG.vr();j=h.bKG;if(!(!i.ul()&&!i.xe()&&!j.ul()&&!j.xe())&&!(i.ul()&&j.xe())){if(!i.xe())break a;if(!j.ul())break a;}return g;}if(i.ul()&&j.ul()){c=AGA(j.xm());while(AAZ(c)){k=AAW(c);A93(i.xm(),k);}return LX(i);}if(i.xe()&&j.xe()){b=i.xk();c=j.xk();if(c!==null){e=ABK(c);while(ABF(e)){c=ABA(e);BQE(b,c.bZv,c.bXF);}return LX(i);}b=new F2;Bp(b,E(1297));J(b);}J(EC(E(1512),d));}J(EC(E(1513),d));}J(EC(E(1513),d));},FeD=()=>{CJ5=DY(E(1532),2);},B8a +=N(CI),B_u=null,BsI=()=>{BsI=Z(B8a);FwT();},D0q=a=>{BsI();},EW$=()=>{let a=new B8a();D0q(a);return a;},Frr=a=>{BsI();return B_u;},EAy=(a,b,c)=>{return b!=2?0:1;},E6M=(a,b,c,d,e,f)=>{let g,h,i,j,k,l,m,n;g=e.cf(0);if(W_(g)){h=g.bKG.vr();if(!h.ul()&&!h.xe())return g;if(!h.ul()){if(h.xe()){i=D$(e.cf(1));b=h.xk();if(i!==null){j=BGj(b,i);if(j!=(-1)){c=b.ca6;k=0;l=j+1|0;while(true){m=c.b67.data;if(k>=m.length)break;if((m[k]&255)==l)m[k]=0;else if((m[k]&255)>l)m[k]=(m[k]-1|0)<<24>>24;k=k+1|0;}EJ(b.bL3,j);EJ(b.bQP,j);}return LX(h);}c +=new F2;Bp(c,E(1296));J(c);}J(EC(E(1512),d));}if(Ju(e.cf(1))){n=CL((e.cf(1)).bHY);k=n.bHl;if(0<=k&&k{B_u=DY(E(1533),2);},BTw=N(CI),B9D=null,DkI=0,AZe=()=>{AZe=Z(BTw);DUj();},DDM=a=>{AZe();},Fgj=()=>{let a=new BTw();DDM(a);return a;},Fci=a=>{AZe();return B9D;},FtX=(a,b,c)=>{return !(b!=2&&b!=3)?1:0;},EEI=(a,b,c,d,e,f)=>{let g,h,i,j,k,l,m;g=e.cf(0);if(W_(g)){h=g.bKG.vr();if(!h.ul()&&!h.xe())return g;a:{b:{switch(e.dV()){case 2:break;case 3:break b;default:break a;}if +(h.xe()){i=A$H(e.cf(1));if(i.xe())Cad(h.xk(),i.xk());return LX(h);}}if(h.ul()){if(Ju(e.cf(1))){j=CL((e.cf(1)).bHY);i=A$H(e.cf(2));k=j.bHl;if(0<=k&&k{DkI=0;B9D=DY(E(1535),3);},BB9=N(CI),Dnw=null,BbF=()=>{BbF=Z(BB9);DQ9();},DGQ=a=>{BbF();},DES=()=>{let a=new BB9();DGQ(a);return a;},EMU +=a=>{BbF();return Dnw;}; +let D2V=(a,b,c)=>{return b?0:1;},DRb=(a,b,c,d,e,f)=>{return EV(E(1536));},DQ9=()=>{Dnw=DY(E(1537),0);},BGg=N(CI),CJI=null,BrE=()=>{BrE=Z(BGg);EQg();},DYA=a=>{BrE();},Edl=()=>{let a=new BGg();DYA(a);return a;},Ecv=a=>{BrE();return CJI;},FpH=(a,b,c)=>{return b!=2?0:1;},DF2=(a,b,c,d,e,f)=>{let g,h,$$je;g=D$(e.cf(0));h=(e.cf(1)).bHY;try{b=EV(((DV(KI(),g)).xn(h)).oB());}catch($$e){$$je=P($$e);if($$je instanceof J1){J(EC(E(1489),d));}else{throw $$e;}}return b;},EQg=()=>{CJI=DY(E(1538),2);},B2C=N(CI),Dey=null,Bg1= +()=>{Bg1=Z(B2C);FnP();},EA5=a=>{Bg1();},Eyn=()=>{let a=new B2C();EA5(a);return a;},EBt=a=>{Bg1();return Dey;},EW_=(a,b,c)=>{return !(b!=1&&b!=2&&b!=3)?1:0;},Ezr=(a,b,c,d,e,f)=>{let g,h,i,j,$$je;g=D$(e.cf(0));a:{try{b:{try{h=FjM(a,g,EPA(a,e));if(h!==null)break b;h=AQS(Fbk(a,e));break b;}catch($$e){$$je=P($$e);if($$je instanceof AO3){i=$$je;break a;}else{throw $$e;}}}try{b=LX(h);}catch($$e){$$je=P($$e);if($$je instanceof AO3){i=$$je;break a;}else{throw $$e;}}}catch($$e){$$je=P($$e);if($$je instanceof CGS){j=$$je;GP(j);b +=new Ij;c=j.bW();e=new S;T(e);H(H(H(H(e,E(1539)),g),E(7)),c);JV(b,Q(e),d);J(b);}else{throw $$e;}}return b;}GP(i);b=new Ij;c=BY(i.cBM);e=new S;T(e);H(H(H(H(e,E(1540)),g),E(1541)),c);JV(b,Q(e),d);J(b);},Fbk=(a,b)=>{if(b.dV()>1)return D$(b.cf(1));return E(1542);},EPA=(a,b)=>{if(b.dV()==3)return D$(b.cf(2));return E(1289);},FjM=(a,b,c)=>{let d,e;if(!BO(b,E(1198))&&!BO(b,E(372)))return null;b=B_(b,1,b.bGI.length-1|0);AJl();if(Eq(b,47)==(-1))b=null;else{c=AKY();b=FS(Ih(b,E(1543),E(14)));d=Eq(b,47);if(d==(-1))b=null;else +{e=CC(b,d+1|0);b=Cea(c,B_(b,0,d));if(b===null)b=null;else{b=EHI(Cq(b),Cq(e));b=b===null?null:AQS(Fe(EgZ(b)));}}}return b;},FnP=()=>{Dey=DY(E(1544),3);},B4L=N(CI),CjB=null,Bpe=()=>{Bpe=Z(B4L);DI6();},Edr=a=>{Bpe();},DZ4=()=>{let a=new B4L();Edr(a);return a;},E0y=a=>{Bpe();return CjB;},Fxg=(a,b,c)=>{return b<2?0:1;},ERx=(a,b,c,d,e,f)=>{b=e.dX();while(b.dY()){if(!PO(b.dZ()))return GX(0);}return GX(1);},DI6=()=>{CjB=DY(E(1545),2);},BUm=N(CI),DjH=null,Bch=()=>{Bch=Z(BUm);Dyw();},Ffa=a=>{Bch();},E0d=()=>{let a=new BUm();Ffa(a);return a;},Esf +=a=>{Bch();return DjH;},E_o=(a,b,c)=>{return b<2?0:1;},Ewz=(a,b,c,d,e,f)=>{b=e.dX();while(b.dY()){if(!PO(b.dZ()))return GX(1);}return GX(0);},Dyw=()=>{DjH=DY(E(1546),2);},BCL=N(CI),CU4=null,BxO=()=>{BxO=Z(BCL);DPF();},EoJ=a=>{BxO();},D3o=()=>{let a=new BCL();EoJ(a);return a;},D0Y=a=>{BxO();return CU4;},DxH=(a,b,c)=>{return b<2?0:1;},Etl=(a,b,c,d,e,f)=>{b=e.dX();while(b.dY()){if(PO(b.dZ())==1)return GX(0);}return GX(1);}; +let DPF=()=>{CU4=DY(E(1547),2);},BCN=N(CI),Dn2=null,BxN=()=>{BxN=Z(BCN);EgP();},FrY=a=>{BxN();},EYH=()=>{let a=new BCN();FrY(a);return a;},Fuc=a=>{BxN();return Dn2;},EtI=(a,b,c)=>{return b!=1?0:1;},Fwr=(a,b,c,d,e,f)=>{return GX(PO(e.cf(0))?0:1);},EgP=()=>{Dn2=DY(E(1548),1);},BGC=N(CI),CuB=null,BsY=()=>{BsY=Z(BGC);FuB();},EM8=a=>{BsY();},EbB=()=>{let a=new BGC();EM8(a);return a;},DHd=a=>{BsY();return CuB;},Enm=(a,b,c)=>{return b<2?0:1;},EgK=(a,b,c,d,e,f)=>{let g;g=0;b=e.dX();while(b.dY()){if(PO(b.dZ())==1)g= +g+1|0;}return GX(g==1?0:1);},FuB=()=>{CuB=DY(E(1549),2);},BPF=N(CI),DjN=null,Bzi=()=>{Bzi=Z(BPF);ExF();},FpB=a=>{Bzi();},DW1=()=>{let a=new BPF();FpB(a);return a;},DIy=a=>{Bzi();return DjN;},Fuw=(a,b,c)=>{return b<2?0:1;},Eas=(a,b,c,d,e,f)=>{b=e.dX();while(b.dY()){if(PO(b.dZ())==1)return GX(1);}return GX(0);},ExF=()=>{DjN=DY(E(1550),2);},BGt=N(CI),CP7=null,BAp=()=>{BAp=Z(BGt);D9Z();},E5y=a=>{BAp();},DYb=()=>{let a=new BGt();E5y(a);return a;},EJi=a=>{BAp();return CP7;},Dyk=(a,b,c)=>{return b<2?0:1;},E1Y=(a,b, +c,d,e,f)=>{let g;g=0;b=e.dX();while(b.dY()){if(PO(b.dZ())==1)g=g+1|0;}return GX(g!=1?0:1);},D9Z=()=>{CP7=DY(E(1551),2);},BVA=N(CI),C5O=null,Bk7=()=>{Bk7=Z(BVA);DQ1();},D9J=a=>{Bk7();},Fj0=()=>{let a=new BVA();D9J(a);return a;},Dx9=a=>{Bk7();return C5O;},Dy_=(a,b,c)=>{return b!=1?0:1;},EXi=(a,b,c,d,e,f)=>{return EV(FS(D$(e.cf(0))));},DQ1=()=>{C5O=DY(E(1552),1);},BPc=N(CI),DrC=null,Bqp=()=>{Bqp=Z(BPc);Dvy();},DQJ=a=>{Bqp();}; +let EQ$=()=>{let a=new BPc();DQJ(a);return a;},E8O=a=>{Bqp();return DrC;},EkL=(a,b,c)=>{return b!=2?0:1;},EL2=(a,b,c,d,e,f)=>{let g,h;g=CL((e.cf(0)).bHY);h=(CL((e.cf(1)).bHY)).bHl;if(h)return Mh(g.bHl%h|0);J(EC(E(1553),d));},Dvy=()=>{DrC=DY(E(1554),2);},BJP=N(CI),Cgb=null,BpZ=()=>{BpZ=Z(BJP);ExL();},Dyu=a=>{BpZ();},Ff9=()=>{let a=new BJP();Dyu(a);return a;},D0_=a=>{BpZ();return Cgb;},E2u=(a,b,c)=>{return b?0:1;},ExP=(a,b,c,d,e,f)=>{return EV(E(1555));},ExL=()=>{Cgb=DY(E(1556),0);},BC6=N(CI),Cw$=null,BiD=()=> +{BiD=Z(BC6);EJI();},FgM=a=>{BiD();},D5S=()=>{let a=new BC6();FgM(a);return a;},EZL=a=>{BiD();return Cw$;},DBf=(a,b,c)=>{return b?0:1;},D5r=(a,b,c,d,e,f)=>{return EV(E(1555));},EJI=()=>{Cw$=DY(E(1557),0);},BU5=N(CI),CU2=null,Bfp=()=>{Bfp=Z(BU5);EAx();},EpP=a=>{Bfp();},Ew6=()=>{let a=new BU5();EpP(a);return a;},Fri=a=>{Bfp();return CU2;},DWB=(a,b,c)=>{return b?0:1;},EBi=(a,b,c,d,e,f)=>{return Mh(Cp(CY(QR(),V(1000))));},EAx=()=>{CU2=DY(E(1558),0);},B64=N(CI),CyC=null,Be0=()=>{Be0=Z(B64);EwL();},Duj=a=>{Be0();},E_x +=()=>{let a=new B64();Duj(a);return a;},Egq=a=>{Be0();return CyC;},E_5=(a,b,c)=>{return b!=1?0:1;},Esu=(a,b,c,d,e,f)=>{let $$je;try{b=Mh(CAQ(D$(e.cf(0)),0));}catch($$e){$$je=P($$e);if($$je instanceof Gt){return Mh(0);}else{throw $$e;}}return b;},EwL=()=>{CyC=DY(E(1559),1);},B8k=N(CI),Crj=null,Be7=()=>{Be7=Z(B8k);DKT();},Dw6=a=>{Be7();},DU$=()=>{let a=new B8k();Dw6(a);return a;},EFQ=a=>{Be7();return Crj;},Epc=(a,b,c)=>{return b?0:1;},DHk=(a,b,c,d,e,f)=>{return EV(E(861));},DKT=()=>{Crj=DY(E(1560),0);}; +let AYI=N(CI),Cv9=null,Drq=null,C$u=0,AS$=()=>{AS$=Z(AYI);Ft7();},EF5=a=>{AS$();},EIy=()=>{let a=new AYI();EF5(a);return a;},EhA=a=>{AS$();return Cv9;},EEP=(a,b,c)=>{return !(b&&b!=1&&b!=2)?1:0;},B3I=b=>{Jl(Bo(AYI));try{AS$();return Coe(Drq,b);}finally{G2(Bo(AYI));}},DMT=(a,b,c,d,e,f)=>{let g;switch(e.dV()){case 0:break;case 1:return Mh(B3I((CL((e.cf(0)).bHY)).bHl));case 2:g=CL((e.cf(0)).bHY);return Mh(B3I((CL((e.cf(1)).bHY)).bHl-g.bHl|0)+g.bHl|0);default:AS$();if(!C$u){b=new C4;X(b);J(b);}J(EC(E(1561),d));}return Mh(B3I(2));},Ft7 +=()=>{C$u=0;Cv9=DY(E(1562),2);Drq=Che();},B18=N(CI),B$P=null,BbT=()=>{BbT=Z(B18);EDG();},ELc=a=>{BbT();},D7a=()=>{let a=new B18();ELc(a);return a;},ETy=a=>{BbT();return B$P;},Eyq=(a,b,c)=>{return b<=0?0:1;},E3C=(a,b,c,d,e,f)=>{let g,h,i,j,k;g=D$(e.cf(0));h=e.dV();i=LV(e,1,h);j=BXp(b,DY(g,Bdl(i)));k=b.bRT.bGJ;j.uw(b,c,d,i,A1A());c=new S;T(c);while(true){d=b.bRT;if(d.bGJ<=k)break;L(c,(Be(d,k)).bGP);EJ(b.bRT,k);if(b.bRT.bGJ<=k)continue;Bb(c,57600);}return EV(Q(c));},EDG=()=>{B$P=DY(E(1563),1);},B9c=N(CI),Dir=null,BoI +=()=>{BoI=Z(B9c);ERI();},DGw=a=>{BoI();},Ef$=()=>{let a=new B9c();DGw(a);return a;},EKJ=a=>{BoI();return Dir;},E_1=(a,b,c)=>{return b!=1?0:1;},Fn8=(a,b,c,d,e,f)=>{let g,$$je;g=D$(e.cf(0));try{b=EV(((DV(KI(),g)).xv()).oB());}catch($$e){$$je=P($$e);if($$je instanceof J1){J(EC(E(1489),d));}else{throw $$e;}}return b;},ERI=()=>{Dir=DY(E(1564),1);},BFq=N(CI),C2A=null,BxG=()=>{BxG=Z(BFq);DL9();},Erd=a=>{BxG();},Fw5=()=>{let a=new BFq();Erd(a);return a;},EX9=a=>{BxG();return C2A;},DFZ=(a,b,c)=>{return b!=1?0:1;},DyF +=(a,b,c,d,e,f)=>{let g,$$je;g=D$(e.cf(0));try{b=EV(((DV(KI(),g)).xw()).oB());}catch($$e){$$je=P($$e);if($$je instanceof J1){J(EC(E(1489),d));}else{throw $$e;}}return b;},DL9=()=>{C2A=DY(E(1565),1);},BV6=N(CI),B9v=null,Bf1=()=>{Bf1=Z(BV6);D3J();},E2o=a=>{Bf1();},ENt=()=>{let a=new BV6();E2o(a);return a;},DBb=a=>{Bf1();return B9v;},EKg=(a,b,c)=>{return b?0:1;},Egt=(a,b,c,d,e,f)=>{return EV(E(1566));},D3J=()=>{B9v=DY(E(1567),0);},BDI=N(CI),C3I=null; +let BsT=()=>{BsT=Z(BDI);FnL();},E9M=a=>{BsT();},FdW=()=>{let a=new BDI();E9M(a);return a;},Esy=a=>{BsT();return C3I;},FdG=(a,b,c)=>{return b!=2?0:1;},FtG=(a,b,c,d,e,f)=>{let g,h;g=D$(e.cf(0));h=e.cf(1);ZS();c.sY(g,h,AH$,d);return EV(E(14));},FnL=()=>{C3I=DY(E(1568),2);},BIC=N(CI),CGn=null,Bvr=()=>{Bvr=Z(BIC);ErS();},DYY=a=>{Bvr();},Ez$=()=>{let a=new BIC();DYY(a);return a;},EFl=a=>{Bvr();return CGn;},E19=(a,b,c)=>{return b!=1?0:1;},E76=(a,b,c,d,e,f)=>{let g,h;g=e.cf(0);if(!Ju(g)){if(!BfM(g)){h=g.bKG;if(!(h instanceof Wl)) +{if(h instanceof Su)return Mh(CsO(h));return Mh(0);}return Mh(BeQ(h));}return Mh((D$(g)).bGI.length);}return Mh(0);},ErS=()=>{CGn=DY(E(1569),1);},BCe=N(CI),CzQ=null,Bgr=()=>{Bgr=Z(BCe);Ey4();},EZA=a=>{Bgr();},EDx=()=>{let a=new BCe();EZA(a);return a;},EED=a=>{Bgr();return CzQ;},FsW=(a,b,c)=>{return b!=2?0:1;},DTa=(a,b,c,d,e,f)=>{let g,h,i,j;g=Zh();h=D$(e.cf(0));i=D$(e.cf(1));j=M0(h,i);while(JO(j)){AMu(g,H5(j));}return LX(g);},Ey4=()=>{CzQ=DY(E(1570),3);},BKX=N(CI),Cz1=null,Bj2=()=>{Bj2=Z(BKX);E5k();},E2V=a=> +{Bj2();},EzM=()=>{let a=new BKX();E2V(a);return a;},DRi=a=>{Bj2();return Cz1;},E0o=(a,b,c)=>{return b!=2?0:1;},Eeu=(a,b,c,d,e,f)=>{let g,h,i,j;g=Zh();h=(IW(D$(e.cf(0)),D$(e.cf(1)))).data;i=h.length;j=0;while(j{Cz1=DY(E(1571),2);},BTm=N(CI),CpK=null,BrD=()=>{BrD=Z(BTm);Fw7();},ERH=a=>{BrD();},ERo=()=>{let a=new BTm();ERH(a);return a;},ELf=a=>{BrD();return CpK;},Evh=(a,b,c)=>{return b!=1?0:1;},DWc=(a,b,c,d,e,f)=>{let $$je;try{b=LX(AQS(D$(e.cf(0))));}catch($$e){$$je +=P($$e);if($$je instanceof Gt){return EV(E(14));}else{throw $$e;}}return b;},Fw7=()=>{CpK=DY(E(1572),1);},BGI=N(CI),CZb=null,Bz6=()=>{Bz6=Z(BGI);DQw();},DQ5=a=>{Bz6();},ErG=()=>{let a=new BGI();DQ5(a);return a;},EHr=a=>{Bz6();return CZb;},DUR=(a,b,c)=>{return b!=1?0:1;}; +let Dx2=(a,b,c,d,e,f)=>{return EV(D$(e.cf(0)));},DQw=()=>{CZb=DY(E(1573),1);},BFY=N(CI),Dlv=null,BfB=()=>{BfB=Z(BFY);E5i();},EFJ=a=>{BfB();},DFb=()=>{let a=new BFY();EFJ(a);return a;},DPi=a=>{BfB();return Dlv;},FvD=(a,b,c)=>{return b!=1?0:1;},DRn=(a,b,c,d,e,f)=>{return Mh((D$(e.cf(0))).bGI.length);},E5i=()=>{Dlv=DY(E(1574),1);},BMl=N(CI),DbM=null,Bha=()=>{Bha=Z(BMl);DVo();},E$7=a=>{Bha();},Ebt=()=>{let a=new BMl();E$7(a);return a;},Fea=a=>{Bha();return DbM;},EyA=(a,b,c)=>{return b!=2?0:1;},DyJ=(a,b,c,d,e,f)=> +{return Mh(IZ(D$(e.cf(0)),D$(e.cf(1))));},DVo=()=>{DbM=DY(E(1575),2);},BHX=N(CI),Caj=null,Bdw=()=>{Bdw=Z(BHX);ECo();},Ewd=a=>{Bdw();},DFn=()=>{let a=new BHX();Ewd(a);return a;},E8G=a=>{Bdw();return Caj;},DuG=(a,b,c)=>{return !(b!=2&&b!=3)?1:0;},Fe4=(a,b,c,d,e,f)=>{let g,h,i,j;g=D$(e.cf(0));h=(e.cf(1)).bHY;if(h{Caj=DY(E(1576),3);},BDx=N(CI),CML=null,Bz0=()=>{Bz0=Z(BDx);EKO();},EjF=a=> +{Bz0();},DSl=()=>{let a=new BDx();EjF(a);return a;},DMo=a=>{Bz0();return CML;},E7J=(a,b,c)=>{return b?0:1;},Eru=(a,b,c,d,e,f)=>{return EV(E(904));},EKO=()=>{CML=DY(E(1577),0);},B1a=N(CI),COJ=null,BcT=()=>{BcT=Z(B1a);ETv();},Euq=a=>{BcT();},DxN=()=>{let a=new B1a();Euq(a);return a;},EE3=a=>{BcT();return COJ;},DvE=(a,b,c)=>{return b!=1?0:1;},EAj=(a,b,c,d,e,f)=>{return EV(Vq(D$(e.cf(0))));},ETv=()=>{COJ=DY(E(1578),1);},BPo=N(CI),CHj=null,BrJ=()=>{BrJ=Z(BPo);E1M();}; +let DFF=a=>{BrJ();},Fbh=()=>{let a=new BPo();DFF(a);return a;},Enq=a=>{BrJ();return CHj;},DJR=(a,b,c)=>{return b!=1?0:1;},Ech=(a,b,c,d,e,f)=>{return GX(c.uf(D$(e.cf(0)))===null?0:1);},E1M=()=>{CHj=DY(E(1579),1);},BKl=N(CI),CCc=null,Bz8=()=>{Bz8=Z(BKl);Flk();},Ftv=a=>{Bz8();},DI8=()=>{let a=new BKl();Ftv(a);return a;},Ex_=a=>{Bz8();return CCc;},Em$=(a,b,c)=>{return b!=1?0:1;},D9d=(a,b,c,d,e,f)=>{let g,h;b=b.bRT;if(!b.bGJ)g=Ba6();else{b=BI$(Be(b,0));h=Eq(b,32);g=h==(-1)?Ba6():Brl(Dk(CC(b,h+1|0)));}if(B_z(g))return EV(DkY(g));return EV(E(14));},Flk +=()=>{CCc=DY(E(1580),0);}; +function CDY(){let a=this;T5.call(a);a.b4V=null;a.cYU=0;a.cuc=0;a.cuq=0;} +let Egp=(a,b)=>{A7e(a);a.b4V=b;a.cYU=Bj(E(2),b);a.cuc=Bj(E(13),b);a.cuq=Bj(E(12),b);},AQg=a=>{let b=new CDY();Egp(b,a);return b;},EKn=(a,b)=>{let c;c=a.b4V;CC6(b.bMO,c);},EwA=a=>{return a.b4V;},EbU=a=>{return FP(a.b4V);},Fby=a=>{return a.cYU;},DGb=a=>{return a.cuc;},EvL=a=>{return a.cuq;},D48=a=>{return !(!a.cuc&&!a.cuq)?1:0;},Ew7=(a,b)=>{let c;if(a!==b){if(b!==null){if(Dg(a)===Dg(b)){c=b;return Bj(a.b4V,c.b4V);}return 0;}return 0;}return 1;}; +function A05(){Bx.call(this);this.c$U=0;} +let BtB=null,ByF=null,Bv$=null,Br6=null,Bf5=null,Bnz=null,Bal=null,BDR=null,CLd=null,A43=()=>{A43=Z(A05);EHT();},EzZ=(a,b,c,d)=>{A43();Ct(a,b,c);a.c$U=d;},AEc=(a,b,c)=>{let d=new A05();EzZ(d,a,b,c);return d;},EHT=()=>{let b,c,d;BtB=AEc(E(1581),0,0);ByF=AEc(E(1582),1,1);Bv$=AEc(E(1583),2,2);Br6=AEc(E(1584),3,3);Bf5=AEc(E(1585),4,4);Bnz=AEc(E(1586),5,5);Bal=AEc(E(1587),6,6);b=AEc(E(1588),7,7);BDR=b;c=K(A05,8);d=c.data;d[0]=BtB;d[1]=ByF;d[2]=Bv$;d[3]=Br6;d[4]=Bf5;d[5]=Bnz;d[6]=Bal;d[7]=b;CLd=c;}; +function Di7(){F.call(this);this.b_1=null;} +let Bp5=null,CAc=a=>{return (a.b_1.code!==null?Fe(a.b_1.code):null);},Ds2=a=>{return (a.b_1.code!==null?Fe(a.b_1.code):null);},C9b=N(),C$5=null,CVc=null,AXD=null,ABu=null,Rh=()=>{Rh=Z(C9b);EuL();},Bwy=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;Rh();if(c.bHZ<=b.bHZ){d=c;c=b;b=d;}e=b.bHZ;if(e<63){f=c.bHZ;g=f+e|0;h=c.bHG==b.bHG?1:(-1);if(g==2){i=ALb(c.bHc.data[0],b.bHc.data[0],0,0);e=Cp(i);f=Sm(i);b=!f?Qk(h,e):M_(h,2,Ey([e,f]));}else{j=c.bHc;k=b.bHc;l=Ca(g);if(f&&e){if(f==1){m=j.data;l.data[e]=Bv8(l, +k,e,m[0]);}else if(e==1){m=k.data;l.data[f]=Bv8(l,j,f,m[0]);}else if(j===k&&f==e)Cw9(j,f,l);else{n=l.data;o=0;while(o{let f,g,h;Rh();f=BH;g=0;while(g{let d,e,f,g,h,i,j,k,l;Rh();d=b.bHG;if(d){e=b.bHZ;f=b.bHc;if(e==1){g=ALb(f.data[0],c,0,0);h=Cp(g);i=Sm(g);return !i?Qk(d,h):M_(d,2,Ey([h,i]));}j=e+1|0;k=Ca(j);k.data[e]=Bv8(k,f,e,c);l=M_(d,j,k);Q9(l);return l;}JG();return La;},Cw9=(b,c,d)=>{let e,f,g,h,i,j,k,l,m;Rh();e=0;while(e{let d;Rh();d=C$5.data;return FE(c,V(d.length))?IP(b,XO(c)):Dko(b,d[Cp(c)]);},XO=b=>{let c,d,e,f,g;Rh();c=Cp(b);d=AXD.data;if(FE(b,V(d.length))){if(G5(b,V(50))){if(G5(b,V(1000))){if(IH(BU(V(1),Pc(Id(b)/2.4082399653118496)),V(1000000))){if(G5(b,V(2147483647))){e=ALj(ABu.data[1],2147483647);f=CE(b,V(2147483647));c +=Cp(Fl(b,V(2147483647)));g=e;b=f;while(G5(b,V(2147483647))){g=IP(g,e);b=CE(b,V(2147483647));}e=T4(IP(g,ALj(ABu.data[1],c)),2147483647);while(G5(f,V(2147483647))){e=T4(e,2147483647);f=CE(f,V(2147483647));}return T4(e,c);}return T4(ALj(ABu.data[1],c),c);}e=new KZ;Bp(e,E(1589));J(e);}return T4(ALj(ABu.data[1],c),c);}JG();return ALj(ADf,c);}return d[c];},ALb=(b,c,d,e)=>{Rh();return BU(BU(CT(CN(V(b),O(4294967295, 0)),CN(V(c),O(4294967295, 0))),CN(V(d),O(4294967295, 0))),CN(V(e),O(4294967295, 0)));},EuL=()=>{let b, +c,d,e;C$5=Ey([1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000]);CVc=Ey([1,5,25,125,625,3125,15625,78125,390625,1953125,9765625,48828125,244140625,1220703125]);AXD=K(Or,32);ABu=K(Or,32);b=V(1);c=0;while(c<=18){ABu.data[c]=L3(b);AXD.data[c]=L3(EU(b,c));b=CT(b,V(5));c=c+1|0;}while(c{return 0;},A07=N(Gt),C4=N(A07),Feg=a=>{X(a);},Jk=()=>{let a=new C4();Feg(a);return a;},AT_=(a,b)=>{Bp(a, +BY(b));},Dng=a=>{let b=new C4();AT_(b,a);return b;},EZ0=N(),B8x=null,B8z=null,Dzl=()=>{return [{"code":"AFN","numericCode":971,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"ALL","numericCode":8,"fractionDigits":2},{"code":"DZD","numericCode":12,"fractionDigits":2},{"code":"USD","numericCode":840,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"AOA","numericCode":973,"fractionDigits":2},{"code":"XCD","numericCode":951,"fractionDigits":2},{"code" +:"XCD","numericCode":951,"fractionDigits":2},{"code":"ARS","numericCode":32,"fractionDigits":2},{"code":"AMD","numericCode":51,"fractionDigits":2},{"code":"AWG","numericCode":533,"fractionDigits":2},{"code":"AUD","numericCode":36,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"AZN","numericCode":944,"fractionDigits":2},{"code":"BSD","numericCode":44,"fractionDigits":2},{"code":"BHD","numericCode":48,"fractionDigits":3},{"code":"BDT","numericCode":50,"fractionDigits":2},{"code" +:"BBD","numericCode":52,"fractionDigits":2},{"code":"BYR","numericCode":974,"fractionDigits":0},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"BZD","numericCode":84,"fractionDigits":2},{"code":"XOF","numericCode":952,"fractionDigits":0},{"code":"BMD","numericCode":60,"fractionDigits":2},{"code":"BTN","numericCode":64,"fractionDigits":2},{"code":"INR","numericCode":356,"fractionDigits":2},{"code":"BOB","numericCode":68,"fractionDigits":2},{"code":"BOV","numericCode":984,"fractionDigits":2},{"code" +:"USD","numericCode":840,"fractionDigits":2},{"code":"BAM","numericCode":977,"fractionDigits":2},{"code":"BWP","numericCode":72,"fractionDigits":2},{"code":"NOK","numericCode":578,"fractionDigits":2},{"code":"BRL","numericCode":986,"fractionDigits":2},{"code":"USD","numericCode":840,"fractionDigits":2},{"code":"BND","numericCode":96,"fractionDigits":2},{"code":"BGN","numericCode":975,"fractionDigits":2},{"code":"XOF","numericCode":952,"fractionDigits":0},{"code":"BIF","numericCode":108,"fractionDigits":0},{"code" +:"KHR","numericCode":116,"fractionDigits":2},{"code":"XAF","numericCode":950,"fractionDigits":0},{"code":"CAD","numericCode":124,"fractionDigits":2},{"code":"CVE","numericCode":132,"fractionDigits":2},{"code":"KYD","numericCode":136,"fractionDigits":2},{"code":"XAF","numericCode":950,"fractionDigits":0},{"code":"XAF","numericCode":950,"fractionDigits":0},{"code":"CLF","numericCode":990,"fractionDigits":4},{"code":"CLP","numericCode":152,"fractionDigits":0},{"code":"CNY","numericCode":156,"fractionDigits":2} +,{"code":"AUD","numericCode":36,"fractionDigits":2},{"code":"AUD","numericCode":36,"fractionDigits":2},{"code":"COP","numericCode":170,"fractionDigits":2},{"code":"COU","numericCode":970,"fractionDigits":2},{"code":"KMF","numericCode":174,"fractionDigits":0},{"code":"XAF","numericCode":950,"fractionDigits":0},{"code":"CDF","numericCode":976,"fractionDigits":2},{"code":"NZD","numericCode":554,"fractionDigits":2},{"code":"CRC","numericCode":188,"fractionDigits":2},{"code":"XOF","numericCode":952,"fractionDigits" +:0},{"code":"HRK","numericCode":191,"fractionDigits":2},{"code":"CUC","numericCode":931,"fractionDigits":2},{"code":"CUP","numericCode":192,"fractionDigits":2},{"code":"ANG","numericCode":532,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"CZK","numericCode":203,"fractionDigits":2},{"code":"DKK","numericCode":208,"fractionDigits":2},{"code":"DJF","numericCode":262,"fractionDigits":0},{"code":"XCD","numericCode":951,"fractionDigits":2},{"code":"DOP","numericCode":214,"fractionDigits" +:2},{"code":"USD","numericCode":840,"fractionDigits":2},{"code":"EGP","numericCode":818,"fractionDigits":2},{"code":"SVC","numericCode":222,"fractionDigits":2},{"code":"USD","numericCode":840,"fractionDigits":2},{"code":"XAF","numericCode":950,"fractionDigits":0},{"code":"ERN","numericCode":232,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"ETB","numericCode":230,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"FKP","numericCode":238,"fractionDigits" +:2},{"code":"DKK","numericCode":208,"fractionDigits":2},{"code":"FJD","numericCode":242,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"XPF","numericCode":953,"fractionDigits":0},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"XAF","numericCode":950,"fractionDigits":0},{"code":"GMD","numericCode":270,"fractionDigits":2},{"code":"GEL","numericCode":981,"fractionDigits" +:2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"GHS","numericCode":936,"fractionDigits":2},{"code":"GIP","numericCode":292,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"DKK","numericCode":208,"fractionDigits":2},{"code":"XCD","numericCode":951,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"USD","numericCode":840,"fractionDigits":2},{"code":"GTQ","numericCode":320,"fractionDigits":2},{"code":"GBP","numericCode":826,"fractionDigits" +:2},{"code":"GNF","numericCode":324,"fractionDigits":0},{"code":"XOF","numericCode":952,"fractionDigits":0},{"code":"GYD","numericCode":328,"fractionDigits":2},{"code":"HTG","numericCode":332,"fractionDigits":2},{"code":"USD","numericCode":840,"fractionDigits":2},{"code":"AUD","numericCode":36,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"HNL","numericCode":340,"fractionDigits":2},{"code":"HKD","numericCode":344,"fractionDigits":2},{"code":"HUF","numericCode":348,"fractionDigits" +:2},{"code":"ISK","numericCode":352,"fractionDigits":0},{"code":"INR","numericCode":356,"fractionDigits":2},{"code":"IDR","numericCode":360,"fractionDigits":2},{"code":"XDR","numericCode":960,"fractionDigits":-1},{"code":"IRR","numericCode":364,"fractionDigits":2},{"code":"IQD","numericCode":368,"fractionDigits":3},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"GBP","numericCode":826,"fractionDigits":2},{"code":"ILS","numericCode":376,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits" +:2},{"code":"JMD","numericCode":388,"fractionDigits":2},{"code":"JPY","numericCode":392,"fractionDigits":0},{"code":"GBP","numericCode":826,"fractionDigits":2},{"code":"JOD","numericCode":400,"fractionDigits":3},{"code":"KZT","numericCode":398,"fractionDigits":2},{"code":"KES","numericCode":404,"fractionDigits":2},{"code":"AUD","numericCode":36,"fractionDigits":2},{"code":"KPW","numericCode":408,"fractionDigits":2},{"code":"KRW","numericCode":410,"fractionDigits":0},{"code":"KWD","numericCode":414,"fractionDigits" +:3},{"code":"KGS","numericCode":417,"fractionDigits":2},{"code":"LAK","numericCode":418,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"LBP","numericCode":422,"fractionDigits":2},{"code":"LSL","numericCode":426,"fractionDigits":2},{"code":"ZAR","numericCode":710,"fractionDigits":2},{"code":"LRD","numericCode":430,"fractionDigits":2},{"code":"LYD","numericCode":434,"fractionDigits":3},{"code":"CHF","numericCode":756,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits" +:2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"MOP","numericCode":446,"fractionDigits":2},{"code":"MKD","numericCode":807,"fractionDigits":2},{"code":"MGA","numericCode":969,"fractionDigits":2},{"code":"MWK","numericCode":454,"fractionDigits":2},{"code":"MYR","numericCode":458,"fractionDigits":2},{"code":"MVR","numericCode":462,"fractionDigits":2},{"code":"XOF","numericCode":952,"fractionDigits":0},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"USD","numericCode":840,"fractionDigits" +:2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"MRO","numericCode":478,"fractionDigits":2},{"code":"MUR","numericCode":480,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"XUA","numericCode":965,"fractionDigits":-1},{"code":"MXN","numericCode":484,"fractionDigits":2},{"code":"MXV","numericCode":979,"fractionDigits":2},{"code":"USD","numericCode":840,"fractionDigits":2},{"code":"MDL","numericCode":498,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits" +:2},{"code":"MNT","numericCode":496,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"XCD","numericCode":951,"fractionDigits":2},{"code":"MAD","numericCode":504,"fractionDigits":2},{"code":"MZN","numericCode":943,"fractionDigits":2},{"code":"MMK","numericCode":104,"fractionDigits":2},{"code":"NAD","numericCode":516,"fractionDigits":2},{"code":"ZAR","numericCode":710,"fractionDigits":2},{"code":"AUD","numericCode":36,"fractionDigits":2},{"code":"NPR","numericCode":524,"fractionDigits" +:2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"XPF","numericCode":953,"fractionDigits":0},{"code":"NZD","numericCode":554,"fractionDigits":2},{"code":"NIO","numericCode":558,"fractionDigits":2},{"code":"XOF","numericCode":952,"fractionDigits":0},{"code":"NGN","numericCode":566,"fractionDigits":2},{"code":"NZD","numericCode":554,"fractionDigits":2},{"code":"AUD","numericCode":36,"fractionDigits":2},{"code":"USD","numericCode":840,"fractionDigits":2},{"code":"NOK","numericCode":578,"fractionDigits" +:2},{"code":"OMR","numericCode":512,"fractionDigits":3},{"code":"PKR","numericCode":586,"fractionDigits":2},{"code":"USD","numericCode":840,"fractionDigits":2},{"code":"PAB","numericCode":590,"fractionDigits":2},{"code":"USD","numericCode":840,"fractionDigits":2},{"code":"PGK","numericCode":598,"fractionDigits":2},{"code":"PYG","numericCode":600,"fractionDigits":0},{"code":"PEN","numericCode":604,"fractionDigits":2},{"code":"PHP","numericCode":608,"fractionDigits":2},{"code":"NZD","numericCode":554,"fractionDigits" +:2},{"code":"PLN","numericCode":985,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"USD","numericCode":840,"fractionDigits":2},{"code":"QAR","numericCode":634,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"RON","numericCode":946,"fractionDigits":2},{"code":"RUB","numericCode":643,"fractionDigits":2},{"code":"RWF","numericCode":646,"fractionDigits":0},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"SHP","numericCode":654,"fractionDigits" +:2},{"code":"XCD","numericCode":951,"fractionDigits":2},{"code":"XCD","numericCode":951,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"XCD","numericCode":951,"fractionDigits":2},{"code":"WST","numericCode":882,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"STD","numericCode":678,"fractionDigits":2},{"code":"SAR","numericCode":682,"fractionDigits":2},{"code":"XOF","numericCode":952,"fractionDigits" +:0},{"code":"RSD","numericCode":941,"fractionDigits":2},{"code":"SCR","numericCode":690,"fractionDigits":2},{"code":"SLL","numericCode":694,"fractionDigits":2},{"code":"SGD","numericCode":702,"fractionDigits":2},{"code":"ANG","numericCode":532,"fractionDigits":2},{"code":"XSU","numericCode":994,"fractionDigits":-1},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"SBD","numericCode":90,"fractionDigits":2},{"code":"SOS","numericCode":706,"fractionDigits" +:2},{"code":"ZAR","numericCode":710,"fractionDigits":2},{"code":"SSP","numericCode":728,"fractionDigits":2},{"code":"EUR","numericCode":978,"fractionDigits":2},{"code":"LKR","numericCode":144,"fractionDigits":2},{"code":"SDG","numericCode":938,"fractionDigits":2},{"code":"SRD","numericCode":968,"fractionDigits":2},{"code":"NOK","numericCode":578,"fractionDigits":2},{"code":"SZL","numericCode":748,"fractionDigits":2},{"code":"SEK","numericCode":752,"fractionDigits":2},{"code":"CHE","numericCode":947,"fractionDigits" +:2},{"code":"CHF","numericCode":756,"fractionDigits":2},{"code":"CHW","numericCode":948,"fractionDigits":2},{"code":"SYP","numericCode":760,"fractionDigits":2},{"code":"TWD","numericCode":901,"fractionDigits":2},{"code":"TJS","numericCode":972,"fractionDigits":2},{"code":"TZS","numericCode":834,"fractionDigits":2},{"code":"THB","numericCode":764,"fractionDigits":2},{"code":"USD","numericCode":840,"fractionDigits":2},{"code":"XOF","numericCode":952,"fractionDigits":0},{"code":"NZD","numericCode":554,"fractionDigits" +:2},{"code":"TOP","numericCode":776,"fractionDigits":2},{"code":"TTD","numericCode":780,"fractionDigits":2},{"code":"TND","numericCode":788,"fractionDigits":3},{"code":"TRY","numericCode":949,"fractionDigits":2},{"code":"TMT","numericCode":934,"fractionDigits":2},{"code":"USD","numericCode":840,"fractionDigits":2},{"code":"AUD","numericCode":36,"fractionDigits":2},{"code":"UGX","numericCode":800,"fractionDigits":0},{"code":"UAH","numericCode":980,"fractionDigits":2},{"code":"AED","numericCode":784,"fractionDigits" +:2},{"code":"GBP","numericCode":826,"fractionDigits":2},{"code":"USD","numericCode":840,"fractionDigits":2},{"code":"USN","numericCode":997,"fractionDigits":2},{"code":"USD","numericCode":840,"fractionDigits":2},{"code":"UYI","numericCode":940,"fractionDigits":0},{"code":"UYU","numericCode":858,"fractionDigits":2},{"code":"UZS","numericCode":860,"fractionDigits":2},{"code":"VUV","numericCode":548,"fractionDigits":0},{"code":"VEF","numericCode":937,"fractionDigits":2},{"code":"VND","numericCode":704,"fractionDigits" +:0},{"code":"USD","numericCode":840,"fractionDigits":2},{"code":"USD","numericCode":840,"fractionDigits":2},{"code":"XPF","numericCode":953,"fractionDigits":0},{"code":"MAD","numericCode":504,"fractionDigits":2},{"code":"YER","numericCode":886,"fractionDigits":2},{"code":"ZMW","numericCode":967,"fractionDigits":2},{"code":"ZWL","numericCode":932,"fractionDigits":2},{"code":"XBA","numericCode":955,"fractionDigits":-1},{"code":"XBB","numericCode":956,"fractionDigits":-1},{"code":"XBC","numericCode":957,"fractionDigits" +:-1},{"code":"XBD","numericCode":958,"fractionDigits":-1},{"code":"XTS","numericCode":963,"fractionDigits":-1},{"code":"XXX","numericCode":999,"fractionDigits":-1},{"code":"XAU","numericCode":959,"fractionDigits":-1},{"code":"XPD","numericCode":964,"fractionDigits":-1},{"code":"XPT","numericCode":962,"fractionDigits":-1},{"code":"XAG","numericCode":961,"fractionDigits":-1}];},DH9=()=>{return {"AF":{"value":"AFN"},"AL":{"value":"ALL"},"DZ":{"value":"DZD"},"AD":{"value":"EUR"},"AO":{"value":"AOA"},"AG":{"value" +:"XCD"},"AR":{"value":"ARS"},"AM":{"value":"AMD"},"AU":{"value":""},"AT":{"value":"EUR"},"AZ":{"value":"AMD"},"-241":{"value":"Nassau"},"BH":{"value":"BHD"},"BD":{"value":"BDT"},"BB":{"value":"BBD"},"BY":{"value":"BYR"},"BE":{"value":"EUR"},"BZ":{"value":"BZD"},"BJ":{"value":"XOF"},"BT":{"value":"BTN"},"BO":{"value":"BOB"},"BA":{"value":"BAM"},"BW":{"value":"BWP"},"BR":{"value":"BRL"},"BN":{"value":"BND"},"BG":{"value":"BGN"},"BF":{"value":"XOF"},"BI":{"value":"BIF"},"KH":{"value":"KHR"},"CM":{"value":"XAF"} +,"CA":{"value":"CAD"},"CV":{"value":"CVE"},"CF":{"value":"XAF"},"TD":{"value":"XAF"},"CL":{"value":"CLP"},"86":{"value":"Beijing"},"CO":{"value":"COP"},"KM":{"value":"KMF"},"243":{"value":"Kinshasa"},"242":{"value":"Brazzaville"},"CR":{"value":"CRC"},"CI":{"value":"XOF"},"HR":{"value":"HRK"},"CU":{"value":"CUP"},"CY":{"value":"TRY"},"CZ":{"value":"CZK"},"DK":{"value":"DKK"},"DJ":{"value":"DJF"},"DM":{"value":"XCD"},"DO":{"value":"DOP"},"EC":{"value":"USD"},"EG":{"value":"EGP"},"SV":{"value":"USD"},"GQ":{"value" +:"XAF"},"ER":{"value":"ERN"},"EE":{"value":"EEK"},"ET":{"value":"ETB"},"FJ":{"value":"FJD"},"FI":{"value":"EUR"},"FR":{"value":"EUR"},"GA":{"value":"XAF"},"220":{"value":"Banjul"},"GE":{"value":"RUB and GEL"},"DE":{"value":"EUR"},"GH":{"value":"GHC"},"GR":{"value":"EUR"},"GD":{"value":"XCD"},"GT":{"value":"GTQ"},"GN":{"value":"GNF"},"GW":{"value":"XOF"},"GY":{"value":"GYD"},"HT":{"value":"HTG"},"HN":{"value":"HNL"},"HU":{"value":"HUF"},"IS":{"value":"ISK"},"IN":{"value":"INR"},"ID":{"value":"IDR"},"IR":{"value" +:"IRR"},"IQ":{"value":"IQD"},"IE":{"value":"EUR"},"IL":{"value":"ILS"},"IT":{"value":"EUR"},"JM":{"value":"JMD"},"JP":{"value":"JPY"},"JO":{"value":"JOD"},"KZ":{"value":"KZT"},"KE":{"value":"KES"},"KI":{"value":"AUD"},"850":{"value":"Pyongyang"},"82":{"value":"Seoul"},"KW":{"value":"KWD"},"KG":{"value":"KGS"},"LA":{"value":"LAK"},"LV":{"value":"LVL"},"LB":{"value":"LBP"},"LS":{"value":"LSL"},"LR":{"value":"LRD"},"LY":{"value":"LYD"},"LI":{"value":"CHF"},"LT":{"value":"LTL"},"LU":{"value":"EUR"},"MK":{"value" +:"MKD"},"MG":{"value":"MGA"},"MW":{"value":"MWK"},"MY":{"value":"MYR"},"MV":{"value":"MVR"},"ML":{"value":"XOF"},"MT":{"value":"MTL"},"MH":{"value":"USD"},"MR":{"value":"MRO"},"MU":{"value":"MUR"},"MX":{"value":"MXN"},"FM":{"value":"USD"},"MD":{"value":""},"MC":{"value":"EUR"},"MN":{"value":"MNT"},"ME":{"value":"EUR"},"MA":{"value":"MAD"},"MZ":{"value":"MZM"},"MM":{"value":"MMK"},"NA":{"value":"NAD"},"NR":{"value":"AUD"},"NP":{"value":"NPR"},"NL":{"value":"EUR"},"NZ":{"value":"NZD"},"NI":{"value":"NIO"},"NE": +{"value":"XOF"},"NG":{"value":"NGN"},"NO":{"value":"NOK"},"OM":{"value":"OMR"},"PK":{"value":"PKR"},"PW":{"value":"USD"},"PA":{"value":"PAB"},"PG":{"value":"PGK"},"PY":{"value":"PYG"},"PE":{"value":"PEN"},"PH":{"value":"PHP"},"PL":{"value":"PLN"},"PT":{"value":"EUR"},"QA":{"value":"QAR"},"RO":{"value":"RON"},"RU":{"value":"RUB"},"RW":{"value":"RWF"},"KN":{"value":"XCD"},"LC":{"value":"XCD"},"VC":{"value":"XCD"},"WS":{"value":"WST"},"SM":{"value":"EUR"},"ST":{"value":"STD"},"SA":{"value":"SAR"},"SN":{"value" +:"XOF"},"RS":{"value":"RSD"},"SC":{"value":"SCR"},"SL":{"value":"SLL"},"SG":{"value":"SGD"},"SK":{"value":"SKK"},"SI":{"value":"EUR"},"SB":{"value":"SBD"},"SO":{"value":""},"27":{"value":""},"ES":{"value":"EUR"},"LK":{"value":"LKR"},"SD":{"value":"SDD"},"SR":{"value":"SRD"},"SZ":{"value":"SZL"},"SE":{"value":"SEK"},"CH":{"value":"CHF"},"SY":{"value":"SYP"},"TJ":{"value":"TJS"},"TZ":{"value":"TZS"},"TH":{"value":"THB"},"TL":{"value":"USD"},"TG":{"value":"XOF"},"TO":{"value":"TOP"},"TT":{"value":"TTD"},"TN":{"value" +:"TND"},"TR":{"value":"TRY"},"TM":{"value":"TMM"},"TV":{"value":"AUD"},"UG":{"value":"UGX"},"UA":{"value":"UAH"},"AE":{"value":"AED"},"GB":{"value":"GBP"},"US":{"value":"USD"},"UY":{"value":"UYU"},"UZ":{"value":"UZS"},"VU":{"value":"VUV"},"VA":{"value":"EUR"},"VE":{"value":"VEB"},"VN":{"value":"VND"},"YE":{"value":"YER"},"ZM":{"value":"ZMK"},"ZW":{"value":"ZWD"},"886":{"value":"Taipei"},"CX":{"value":"AUD"},"CC":{"value":"AUD"},"HM":{"value":""},"NF":{"value":"AUD"},"NC":{"value":"XPF"},"PF":{"value":""},"YT": +{"value":"EUR"},"GP":{"value":"EUR"},"PM":{"value":"EUR"},"WF":{"value":"XPF"},"TF":{"value":""},"BV":{"value":""},"CK":{"value":"NZD"},"NU":{"value":"NZD"},"TK":{"value":"NZD"},"GG":{"value":"GGP"},"IM":{"value":"IMP"},"JE":{"value":"JEP"},"AI":{"value":"XCD"},"BM":{"value":"BMD"},"IO":{"value":""},"":{"value":"CYP"},"VG":{"value":"USD"},"KY":{"value":"KYD"},"FK":{"value":"FKP"},"GI":{"value":"GIP"},"MS":{"value":"XCD"},"PN":{"value":"NZD"},"SH":{"value":"SHP"},"GS":{"value":""},"TC":{"value":"USD"},"MP":{"value" +:"USD"},"PR":{"value":"USD"},"AS":{"value":"USD"},"UM":{"value":""},"GU":{"value":"USD"},"VI":{"value":"USD"},"HK":{"value":"HKD"},"MO":{"value":"MOP"},"FO":{"value":"DKK"},"GL":{"value":"DKK"},"GF":{"value":"EUR"},"MQ":{"value":"EUR"},"RE":{"value":"EUR"},"AX":{"value":"EUR"},"AW":{"value":"AWG"},"AN":{"value":"ANG"},"SJ":{"value":"NOK"},"AC":{"value":"SHP"},"TA":{"value":"SHP"},"AQ":{"value":""}};}; +function BEn(){let a=this;F.call(a);a.bSB=null;a.b5p=0;a.cnM=null;a.cGB=null;} +let EIN=(a,b,c)=>{DmC(a,b,c,SY());},DY=(a,b)=>{let c=new BEn();EIN(c,a,b);return c;},DmC=(a,b,c,d)=>{a.cGB=new B7D;a.bSB=B$(b);a.b5p=c;a.cnM=d;},CNY=(a,b,c)=>{let d=new BEn();DmC(d,a,b,c);return d;},EeB=a=>{let b,c,d,e;b=a.bSB;c=a.b5p;d=BY(a.cnM);e=new S;T(e);b=H(e,b);Bb(b,47);BE(b,c);Bb(b,32);H(b,d);return Q(e);},FwA=a=>{let b;b=a.cGB.bYi;if(!b){b=(31*(31+FP(a.bSB)|0)|0)+a.b5p|0;But(a.cGB,b);return b;}return b;},EYU=(a,b)=>{let c;c=b;return !(Bj(a.bSB,c.bSB)&&a.b5p==c.b5p)?0:1;}; +function BdL(){F.call(this);this.cdv=null;} +let BmA=null,A3g=null,AKu=()=>{AKu=Z(BdL);E1a();},BCn=()=>{AKu();if(BmA===null){BmA=null;BmA=A3g;}return BoH(BmA);},B8C=b=>{let c,d,e,f,g,h,i,j;AKu();c=BXK(b);if(c===null){a:{if(BO(b,E(1590))&&b.bGI.length>3){d=Bn(b,3);if(!(d!=43&&d!=45)){e=Ca(1);f=4;c=new S;T(c);g=b.bGI.length;L(c,B_(b,0,f));while(f=0&&f<=23){h=e.data;i=h[0];if(i==(-1))break a;else{j=Ev(f,3600000);if(i=0&&g<=59)j=j+(g*60000|0)|0;else return BoH(A3g);}else if(i>6)j=f*60000|0;if(d==45)j= -j|0;return BIT(BuE(b,j,j));}}return BoH(A3g);}}}return BoH(A3g);}return BIT(c);},Cxs=(b,c,d)=>{let e,f,g,h;AKu();e=b.bGI.length;f=0;g=c;a:{while(true){if(g>=e)break a;h=AM$(Bn(b,g),10);if(h==(-1))break;g=g+1|0;f=(f*10|0)+h|0;}}if(g==c)g=(-1);d.data[0]=g;return f;},E1a=()=>{A3g=BIT(BuE(E(1590), +0,0));}; +function Or(){let a=this;Lp.call(a);a.bHc=null;a.bHZ=0;a.bHG=0;a.bXV=0;} +let La=null,AC5=null,Dhw=null,ADf=null,Bk_=null,Ce$=null,BMs=null,JG=()=>{JG=Z(Or);Es0();},DDQ=(a,b,c)=>{let d;JG();a.bXV=(-2);a.bHG=b;a.bHZ=1;d=Ca(1);d.data[0]=c;a.bHc=d;},Qk=(a,b)=>{let c=new Or();DDQ(c,a,b);return c;},Ehv=(a,b,c,d)=>{JG();a.bXV=(-2);a.bHG=b;a.bHZ=c;a.bHc=d;},M_=(a,b,c)=>{let d=new Or();Ehv(d,a,b,c);return d;},DBH=(a,b,c)=>{let d;JG();a.bXV=(-2);a.bHG=b;if(DS(CN(c,O(0, 4294967295)),BH)){a.bHZ=1;d=Ca(1);d.data[0]=Cp(c);a.bHc=d;}else{a.bHZ=2;a.bHc=Ey([Cp(c),Sm(c)]);}},Cxz=(a,b)=>{let c=new Or();DBH(c, +a,b);return c;},L3=b=>{JG();if(FE(b,BH)){if(IH(b,V(10)))return Ce$.data[Cp(b)];return Cxz(1,b);}if(D4(b,V(-1)))return Cxz((-1),LF(b));return Bk_;},Euf=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;JG();e=c.bGI.length;if(Bn(c,0)!=45){f=1;g=0;h=e;}else{f=(-1);g=1;h=e+(-1)|0;}AP_();i=CK_.data[d];j=h/i|0;k=h%i|0;if(k)j=j+1|0;l=Ca(j);m=DaP.data[d-2|0];n=0;if(!k)k=i;o=l.data;p=g+k|0;while(g{if(a.bHG<0)a=M_(1,a.bHZ,a.bHc);return a;},BTI=a=>{let b;b=a.bHG;return !b?a:M_( -b|0,a.bHZ,a.bHc);},RO=(a,b)=>{let c,d,e,f,g,h,i,j,k;a:{c=a.bHG;d=b.bHG;if(c){if(!d)b=a;else{e=a.bHZ;f=b.bHZ;if((e+f|0)==2){g=CN(V(a.bHc.data[0]),O(4294967295, 0));h=CN(V(b.bHc.data[0]),O(4294967295, 0));if(c!=d)b=L3(c>=0?CE(g,h):CE(h,g));else{g=BU(g,h);i=Cp(g);e=Sm(g);b=!e?Qk(c,i):M_(c,2,Ey([i,e]));}}else{if(c==d)j +=e{let c,d,e,f,g,h,i,j,k;a:{c=a.bHG;d=b.bHG;if(d){if(!c)a=BTI(b);else{e=a.bHZ;f=b.bHZ;if((e+f|0)==2){g=CN(V(a.bHc.data[0]),O(4294967295, 0));h=CN(V(b.bHc.data[0]),O(4294967295, 0));if(c<0)g=LF(g);if(d<0)h=LF(h);a=L3(CE(g,h));}else{i=C5(e,f);i=!i?ARs(a.bHc,b.bHc,e) +:i<=0?(-1):1;if(i==(-1)){i= -d|0;j=c!=d?BsC(b.bHc,f,a.bHc,e):Bi0(b.bHc,f,a.bHc,e);}else if(c!=d){j=BsC(a.bHc,e,b.bHc,f);i=c;}else{if(!i){JG();a=La;break a;}j=Bi0(a.bHc,e,b.bHc,f);i=c;}k=j.data;a=M_(i,k.length,j);Q9(a);}}}}return a;},A$$=(a,b)=>{if(b&&a.bHG)return b>0?Cj4(a,b):CJE(a, -b|0);return a;},T4=(a,b)=>{if(b&&a.bHG)return b>0?CJE(a,b):Cj4(a, -b|0);return a;},A4g=a=>{let b,c,d,e;b=a.bHG;if(!b)c=0;else{d=a.bHZ;e=d<<5;c=a.bHc.data[d-1|0];if(b<0&&BDP(a)==(a.bHZ-1|0))c=c+(-1)|0;c=e-AOe(c)|0;}return c;},Cfx +=(a,b)=>{let c,d,e,f;if(b){if(b>=0){c=b>>5;if(c=e)d=e==c? -d|0:d^(-1);else return 0;}return !(d&b)?0:1;}return a.bHG>=0?0:1;}f=new KZ;Bp(f,E(1592));J(f);}return !(a.bHc.data[0]&1)?0:1;},CRk=a=>{let b;if(a.bHG){b=BDP(a);return (b<<5)+AMl(a.bHc.data[b])|0;}return (-1);},A8Y=a=>{return Ev(a.bHG,a.bHc.data[0]);},AEm=a=>{let b,c;if(a.bHZ<=1)b=CN(V(a.bHc.data[0]),O(4294967295, 0));else{c=a.bHc.data;b=Gu(EU(V(c[1]),32),CN(V(c[0]),O(4294967295, 0)));}return CT(V(a.bHG), +b);},AS5=(a,b)=>{let c,d,e,f;c=a.bHG;d=b.bHG;e=C5(c,d);if(e<=0){if(e>=0){e=a.bHZ;f=C5(e,b.bHZ);if(f<=0){if(f>=0)return Ev(c,ARs(a.bHc,b.bHc,e));return -d|0;}return c;}return (-1);}return 1;},VW=(a,b)=>{let c,d,e,f;if(a!==b){if(b instanceof Or){a:{b:{c=b;if(a.bHG==c.bHG){d=a.bHZ;if(d==c.bHZ){e=c.bHc;d=d-1|0;while(d>=0){f=e.data;if(a.bHc.data[d]!=f[d])break;d=d+(-1)|0;}if(d>=0?0:1)break b;}}d=0;break a;}d=1;}return d;}return 0;}return 1;},CsL=a=>{return DOx(a,0);},IP=(a,b)=>{if(b.bHG){if(a.bHG){Rh();return Bwy(a, +b);}JG();return La;}JG();return La;},ALj=(a,b)=>{let c,d,e,f,g,h,i,j,k;if(b>=0){if(b){if(b!=1){JG();if(!VW(a,AC5)&&!VW(a,La)){if(Cfx(a,0)){Rh();c=AC5;while(b>1){if(b&1)c=IP(c,a);d=a.bHZ;if(d==1)a=IP(a,a);else{e=new Or;f=Cw9(a.bHc,d,Ca(d<<1));g=f.data;e.bXV=(-2);d=g.length;if(d){e.bHG=1;e.bHZ=d;e.bHc=f;Q9(e);}else{e.bHG=0;e.bHZ=1;f=Ca(1);f.data[0]=0;e.bHc=f;}a=e;}b=b>>1;}return IP(c,a);}d=1;while(!Cfx(a,d)){d=d+1|0;}h=Ev(d,b);f=BMs.data;if(h>5;j=h&31;k=i+1|0;f=Ca(k);f.data[i]=1<{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;c=b.bHG;if(c){d=b.bHZ;e=b.bHc;if(d!=1){f=a.bHc;g=a.bHZ;h=C5(g,d);if((!h?ARs(f,e,g):h<=0?(-1):1)>=0){i=a.bHG;j=(g-d|0)+1|0;k=i!=c?(-1):1;l=Ca(j);m=BHN(l,j,f,g,e,d);n=M_(k,j,l);o=M_(i,d,m);Q9(n);Q9(o);return BB(Or,[n,o]);}e=K(Or,2);f=e.data;JG();f[0]=La;f[1]=a;return e;}g=e.data[0];e=a.bHc;d=a.bHZ;i=a.bHG;if(d!=1){c=i!=c?(-1):1;f=Ca(d);l=Ca(1);l.data[0]=CFZ(f,e,d, +g);b=M_(c,d,f);n=M_(i,1,l);Q9(b);Q9(n);f=BB(Or,[b,n]);}else{p=CN(V(e.data[0]),O(4294967295, 0));q=CN(V(g),O(4294967295, 0));r=CY(p,q);p=Fl(p,q);if(i!=c)r=LF(r);if(i<0)p=LF(p);f=BB(Or,[L3(r),L3(p)]);}return f;}b=new KZ;Bp(b,E(1594));J(b);},K9=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=b.bHG;if(c){d=b.bHZ;e=C5(d,1);if(!(!(!e&&b.bHc.data[0]==1)?0:1)){f=a.bHG;g=a.bHZ;if((g+d|0)!=2){h=C5(g,d);h=!h?ARs(a.bHc,b.bHc,g):h<=0?(-1):1;if(h){if(h!=(-1)){i=(g-d|0)+1|0;j=Ca(i);k=f!=c?(-1):1;if(e)BHN(j,i,a.bHc,g,b.bHc,d);else CFZ(j, +a.bHc,g,b.bHc.data[0]);l=M_(k,i,j);Q9(l);return l;}JG();return La;}if(f!=c){JG();b=Bk_;}else{JG();b=AC5;}return b;}m=CY(CN(V(a.bHc.data[0]),O(4294967295, 0)),CN(V(b.bHc.data[0]),O(4294967295, 0)));if(f!=c)m=LF(m);return L3(m);}if(c<=0)a=BTI(a);return a;}b=new KZ;Bp(b,E(1594));J(b);},A7E=(a,b)=>{let c,d,e,f,g,h,i,j,k;if(b.bHG){c=a.bHZ;d=b.bHZ;e=C5(c,d);if((!e?ARs(a.bHc,b.bHc,c):e<=0?(-1):1)!=(-1)){f=Ca(d);if(d!=1)f=BHN(null,(c-d|0)+1|0,a.bHc,c,b.bHc,d);else{g=a.bHc;h=b.bHc.data[0];i=BH;c=c-1|0;while(c>=0){j= +g.data;i=V(Sm((DkW(BU(EU(i,32),CN(V(j[c]),O(4294967295, 0))),h))));c=c+(-1)|0;}f.data[0]=Cp(i);}k=M_(a.bHG,d,f);Q9(k);return k;}return a;}b=new KZ;Bp(b,E(1594));J(b);},Q9=a=>{let b,c,d;while(true){b=a.bHZ;if(b<=0)break;c=a.bHc.data;b=b-1|0;a.bHZ=b;if(c[b])break;}c=a.bHc.data;d=a.bHZ;a.bHZ=d+1|0;if(!c[d])a.bHG=0;},BDP=a=>{let b;if(a.bXV==(-2)){if(!a.bHG)b=(-1);else{b=0;while(!a.bHc.data[b]){b=b+1|0;}}a.bXV=b;}return a.bXV;},Es0=()=>{let b,c,d;La=Qk(0,0);AC5=Qk(1,1);Dhw=Qk(1,2);ADf=Qk(1,10);Bk_=Qk((-1),1);b=K(Or, +11);c=b.data;c[0]=La;c[1]=AC5;c[2]=Dhw;c[3]=Qk(1,3);c[4]=Qk(1,4);c[5]=Qk(1,5);c[6]=Qk(1,6);c[7]=Qk(1,7);c[8]=Qk(1,8);c[9]=Qk(1,9);c[10]=ADf;Ce$=b;BMs=K(Or,32);d=0;while(true){b=BMs.data;if(d>=b.length)break;b[d]=L3(EU(V(1),d));d=d+1|0;}},CDo=N(),Bux=null,BCo=null,A8R=()=>{A8R=Z(CDo);DZE();},BXK=b=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;A8R();if(!NB(Bux,b)){c=Bux;d=Eq(b,47);if(d<0){e=E(14);f=b;}else{e=B_(b,0,d);f=CC(b,d+1|0);}if(!(BgO()).hasOwnProperty(Cq(e)))e=null;else{e=(BgO())[Cq(e)];e=!e.hasOwnProperty(Cq(f)) +?null:e[Cq(f)];}if(e===null)e=null;else{e=(e.value!==null?Fe(e.value):null);f=Bxr(Q5(e));if(RB(f)==4){f=CC(e,f.bY2);e=new B_y;f=BXK(f);ASK(e,b);e.cnX=f;}else a:{b:{c:{d:{f=Bxr(Q5(e));d=RB(f);switch(d){case 0:break c;case 1:e=BuE(b,Cp((UC(f))),Cp((UC(f))));break a;case 2:case 4:break d;case 3:break;case 5:break b;default:break d;}e=Cul(b,f);break a;}b=new Bt;c=new S;T(c);BE(H(c,E(1595)),d);Bp(b,Q(c));J(b);}g=RB(f);d=!(g&1)?0:1;e:{g=g>>>1|0;h=Vu(g);i=Ca(g);j=Ca(g);if(!d){k=h.data;k[0]=UC(f);l=1;while(true){if +(l>=g)break e;k[l]=BU(BU(k[l-1|0],UC(f)),V(657000000));l=l+1|0;}}k=h.data;k[0]=O(0, 2147483648);if(k.length>1){k[1]=UC(f);d=2;while(d>>1|0;r=0;while(r>>1|0:( -(g>>>1|0)|0)-1|0;if(d!=(-2147483648))l=l+d|0;g=l;}e=BVY(f);s=p.bT$;t=new CJR;t.cbf=e;t.ch5=d;t.cbC=g;U(s,t);r=r+1|0;}d=RB(f);if(!d)p.b1M=2147483647;else{g=d+(-1)|0;d=!(g&1)?g>>>1|0:( -(g>>>1|0)|0)-1|0;l=l!=(-2147483648)?d+l|0:d;p.b1M=l;p.ccg=Cqn(f);}U(m.ceO,p);o=o+1|0;}e=new Crz;ASK(e,b);e.cWU=m;}}C9(c,b,e);}return DG(Bux,b);},CNF=()=>{let b,c,d,e,f,g,h,i,j,k,l;A8R();b=Bk();c=(C9z(CTa(BgO()))).data;d +=c.length;e=0;while(e{A8R();if(BCo===null)BCo=D4M();return BCo;},DZE=()=>{Bux=Dy();},D4M=()=>{return {"Asia":{"Aden":{"value":")Asia/Riyadh"},"Aqtau":{"value":"+3 R##K)#:# V##/)3!# >##/)+% F##+)+% >##[)#% F##(#)#% 6## "},"Kuching":{"value":"++ gc2_O#im#)\'% >##?)#% F#));)3Y sH>(#;;)9Y \')%b V##/)3Q F## "},"Chungking":{"value":")Asia/Chongqing"},"Yerevan":{"value":"+/ c$uR3#am#)+) Q#L#)\'% b1&#/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 Q-K/))% 1 O53\'=1 K,#5\'\'=11^13 b#+)#% b-WO53\'=1 K,#5\'\'=11[[55\'=1 \')#% b) #5\'\'=11 #55\'=1 "},"Kashgar":{"value":")Asia/Urumqi"},"Samarkand":{"value":"+/ 6gPB=#am#)+) b#;)-v r#8%))% 1r##)5% &##\'))% r1\'/))% 1/+)5% %O53\'=1 K,#5\'\'=11j)#% r# "} +,"Phnom_Penh":{"value":")Asia/Bangkok"},"Almaty":{"value":"+/ *0yNA#am#)+) r#;)-v %/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 r-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 915B#1 &##t)\'% r# "},"Dubai":{"value":"+% !qFq7#Pm#)#% b# "},"Novosibirsk":{"value":"+3 o.kiC#Lm#)9YQ &##O)-v 6#AG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 &#-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 6#-O/))% 1 O53\'=1 K,#5\'\'=11f)+!# S/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 6##/15.#1 &##+1/ 6## "} +,"Karachi":{"value":"+- F_# r#t)\'.# r5B##/))= 1 #/5)= 9#)-% 1 \')7% #))^ 1 "},"Chita":{"value":"+1 &:*@Q#Lm#)9^ F##O)-v V#AG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 F#-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 V#1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 g##/15.#1 F##+)\'2#1 V## "},"Macao":{"value":")Asia/Macau"},"Tomsk":{"value":"+3 N>{4E#Lm#)9z &##O)-v 6#AG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 &#-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 6#1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 A)+%9 &#-lO53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 6##/15.#1 &##+1+:#1 6## "} +,"Macau":{"value":"+) :# F##]#)9v!% V#-%\'))>#!%1\'#)7f!% %#)3>#!% +)5% F#.#/\'))>#!%1 #)3>#!% -#1)>#!%1 #13>#!% %#1)n!%1 #17>#!% %#1+)!%1 #15B#!% %\'7)%9!%1\'\'55\'9!% %#1\'B#!%1 #156#!% %\'7)%9!%1\'#17%!% %\'55\'9!% +7\'f9!%1\'#175!% %C/7%== ??/\'j==1%C/)b==1C\'/5b=5 %G/5b== /#)9>#=1)\'/)b==1-#)+U=1 #/5b== "},"Dacca":{"value":")Asia/Dhaka"},"Dili":{"value":"++ ZHXwU#,m# 9B#F# F##D#)%v!% V##P#)+- F##(#)3f V## "},"Istanbul":{"value":")Europe/Istanbul"},"Choibalsan":{"value":")Asia/Ulaanbaatar"} +,"Omsk":{"value":"+/ F6ae?#Lm#)7Y r#O)-v &#AG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 r-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 6##/15.#1 &## "},"Dhaka":{"value":"+/ VkgDG#4k#)#% >Z4yE#8%)5% .##\')+^ z##)3% .##G)3># &##T%)#% &#) #)-n!%1 #)9B#ePF&!;#@m#)/- s<}&9#/)/^A b#O)-v rAG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 b-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 r1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 &##/15.#1 r# "} +,"Jayapura":{"value":"+) s]a0^#$o#)7% V##S)3% _##t)#% V## "},"Dushanbe":{"value":"++ .ZTg=#am#)+) r#;)-v %/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#11r##13E1 r# "},"Shanghai":{"value":"+\' {eZ$U#ak#)#% F#Yj#))U 1 #)5% v#)-% 1 #)5U %#)\'^ 1 #)7) %#)#B# 1-#)3) %#)+^ 1 #)5% %#))^ 1 #)7% %\')+% 1\'\')5% #)+6# F#-Z##)+111 7/3M=1 33/)M=11 "},"Beirut":{"value":"+% Zq,Z/#ii#)#% A&#g##)\'6# 1 #)5*# %#))- 1 #)5- %#)\'.# 1 #)5A %#))z 1 #)3b N#3)+% 133)5% M#)-z 1 7)5% 33)+% 1%#))># 1 #)3># 9/)+% 1/?)5b /#)-% 1%#)+I 1%+)+% 1 #)51 % -\'\'= 1 7-3\'= % -5\'= "} +,"Tel_Aviv":{"value":")Asia/Jerusalem"},"Yakutsk":{"value":"+/ 6!ZmW#Lm#)9^ F##O)-v V#AG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 F#-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 V#1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 g##/15.#1 V## "},"Oral":{"value":"+5 6kJ!7#am#)+) Q#;)-v r#8%))% 1r##)5% &##\'))% r1\'/))% 1/+)5% %O53\'=1 K,#5\'\'=11v1\'.#1 b-C/))% 1 O53\'=1 K,#5\'\'=11j1#n1 r-O/))% 1 O53\'=1 K,#5\'\'=11j1\':#1 b1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 915B#1 r# "},"Tashkent": +{"value":"++ {TJq=#am#)+) r#;)-v %/))% 1/+)5% %O53\'=1 K,#5\'\'=11n)\'B#1 r-K/))% 1 O53\'=1 K,#5\'\'=11j)#% r# "},"Jakarta":{"value":"+3 Za@uM#4i#)1I Za@uM#L% 9B#aiokU 6NuVO#G)7% >##K)\'!# V##/)3!# >##/)+% F##+)+% >##[)#% 6## "},"Barnaul":{"value":"+3 .6!{C#Lm#)9I &##O)-v 6#AG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 &#-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 6#-O/))% 1 O53\'=1 K,#5\'\'=11^)+6# [/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 6##/15.#1 &##+1\'2#1 6## "} +,"Qostanay":{"value":"+5 6!J];#am#)+) b#;)-v r#8%))% 1r##)5% &##\'))% r1\'/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 b-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 r1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 915B#1 &##t)\'% r# "},"Pyongyang":{"value":"+- s$8{U#}k#))% N##3)#% V##L#)1&# V##(\')1^ N##/)+1&% V## "},"Gaza":{"value":"+9 F&yD/#]k#)5% AEg## +B#*%1 # 3>#*% # 7b*%1)3 5B#*% /\' \'B#*%1%\' )^*%1)# +z*%A # 1B#*%1 \' 5B#*% %)+^ A9E#)+I 1 \')5% #)+% 1%C)+%)1C;)3>#9 %#)5%9 \')-5 AN#K# )2#*%1 # 3v*% f#)/= 1 #)5U %#))r 1 #)1B# 5#11)*%1 #13U*% 1#1+5*%1 #11*#*% %#))Y 1 #)3% %#)+j 1 #)3= %#))^ 1 #)3U %#))I 1 #)31 %#))># 1 #)3- %#)\'*# 1 #)1.# %#)\'&# 1 #)3% %#)\':# 1 #)39 %#))) 1 #)35 %#))% 1 #)16# %#)\'B# 1 #)3- %#)\'^ 1 #)3b #)#% A5/7/)%5 13#/3^5 %/73^5 %#1/% 1 /53\'5 -)#% AE ;/)^5 1;3/5^5 %#)5%) %#)511 %\'))% 1\'#)3z %" ++"#)3U1 %\'-\'\'5 1\'#)3% #)1:# A##)3% A=+\'))% 1 #)3U1 %\'-\'\'5 1\'#)3% %#)31) %#)\'.# 1 #)1M #)#% A##)\'2#ec6# AA+\'-\'\'5 1 #)31) %#)\'.# 1 #)1M %#))%ec6#1 #)1% #)1># 1 #)3># #)1% A#\')#% A:)\'#))%ec6#1 #)1% #)1># 1 #)3># %+-)%5 1+#)3v) %#)32# %#)5&# %#)\'6# 1 #)5!#) %+-\'>#9)1++-5>#9) %#)\':# 1 #-5>#9 %\'-\'>#9 1\'#)5&#) %#)5:#) %#)\'2# 1 W-5>#91 S#)):#11%#))r11%#))Q11%8#-\'>#911l#)5j1 %#)5I1 %#)3*#1 %#)3f1 %#)3%1 #)5r11 4#-5>#91 0##)1 #)5511%#)1b1 #)32#11%#)1%1 #)3n11%#)/!#1 #)3-11%#)/^1 #)1.#11%#)->#" ++"1 #)1j11%#)-z1 #)1-11%#)-91 #)/*#11%#)+:#1 #)/I11%#)+v1 #)/)11%#)+91 #)- %#))2#1 #)-A11%#))Q1 #)+B#11%#))11 #)+!#11%#)+A11%#)):#11%#))Y11%#))911% -\'>#911E#)5r1 %#)5Q1 %#)511 %#)3n1 %#)3I1 #)5z11 -5>#91 %#)3)1 #)5Y11%#)1j1 #)5911%#)1I1 #)3v11%#)/*#1 #)3Q11%#)/f1 #)3111%#)/E1 #)1r11%#)- #)1Q11%#)-^1 #)/2#11%#)-=1 #)/n11%#)+!#1 #)/M11%#)+^1 #)-.#11%#)):#1 #)-f11%#))v1 #)-E11%#))U1 #)+*#11 "},"Qyzylorda":{"value":"+9 w>a$=#am#)+) b#;)-v r#8%))% 1r##)5% &##\'))% r1\'/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 b-K/))% 1 O53\'=1 K,#5\'\'=11n13:#1 r-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 &#-O/))% 1 O53\'=1 K,#5\'\'=11j1\':#1 r1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 915B#1 &##[)9v r# "} +,"Ho_Chi_Minh":{"value":"+5 JZ4yE#d)#% 66u4C#X#)#% z#T#)5% 1z#\')+^ z##)3% 1z#/)5^ z# "},"Ulan_Bator":{"value":")Asia/Ulaanbaatar"},"Chongqing":{"value":")Asia/Shanghai"},"Bishkek":{"value":"+- Z}g}?#am#)+) r#;)-v %/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 r-K/))% 1 O53\'=1 K,#5\'\'=11n)1B#1 r1%37)== 133-3\'= %C-\'\'=51C?-5\'=5 \')1Q &## "},"Hanoi":{"value": +"+1 Ra{aM#uk#)/% J#1 %#)5%1 %#)3>#1 %#)) K)5%1 GO)+%11\'\')3%1 5\'))E11\'\')5%1 )#)%b11 #)5E1 %#)\'%11 \')5B#1 #)\'^11%#)\'B#11 #)5%1 %#))%11 #)3>#1 %#))% 1 \')5% #))A 1%#)\'.# 1 #)3*# %+))% 1+O)5% C\'-\'\'% 1%?))% 1 #)3z %#-\'\'5 1 #/7%5 %#/)%5 1 #)7% %#-\'\'5 1%\'/)%5 1%K-\'\'5 1WW-5\'5 #)56# Q# "} +,"Baku":{"value":"+/ s8_a5#am#)+) Q#L#)\'% b1&#/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 Q-K/))% 1 O53\'=1 K,#5\'\'=11j53\'=1 b#3)#% b-` %\'\'=)1+d%3\'=) % %5\'=) \')#% b) l-\'\'=A1ll-5\'=I "},"Taipei":{"value":"+) 6s>&U#Lk#)#% F##m#)5% V##C)3v) F#^%#)+^ 1 #)5% %#))^ 1 #)7% %/)+% 1//)5% %#)\'% 1 +)7% \';))% 13;)5% \'\')-% 1U\'))% 1\'\')5% 1#)/% 1 #)5% "},"Manila":{"value":"++ e,R8,##4g#)9B# ku&yS#H% 39A F#-Z##)7% 1%#)#b 1#)9b 1\')%Q V##/)\'1 F#A3#)9b 11#)9% E#))Q 1 #)-5 !##)\'6# 1 #)3z U#)+v 1 #)/:# "} +,"Bangkok":{"value":"+\' 2$DTK#ii#)#% 2$DTK#i#))% 6## "},"Yangon":{"value":"++ :egZI#ii#)#% :egZI#i#)#% .##|)+% V##/)+- .## "},"Ashkhabad":{"value":")Asia/Ashgabat"},"Jerusalem":{"value":"+\' N*HT/#ii#)#% *]oR/#a#)#% Ac\'z# +B#*%1 # 3>#*% # 7b*%1)3 5B#*% /\' \'B#*%1%\' )^*%1)# +z*%A # 1B#*%1 \' 5B#*% # )>#*%1%# )^*%1 # 3Y*% %# \'B#*%1 # 7I*% %# )n*%1 # 5j*% %# )M*%1 # 3Q*% %# -Q*%1 # 3M*% %# -M*%1 # 3I*% %# -)*%1 # 3:#*% %# )2#*%1 # 3v*% f#)/= 1 #)5U %#))r 1 #)1B# 5#11)*%1 #13U*% 1#1+5*%1 #11*#*% %#))Y 1 #)3% %#)+j 1 #)3= %#))^ 1 #)3U %#))I 1 #)31 %#))># 1 #)3- %#)\'*# 1 #)1.# %#)\'&# 1 #)3% %#)\':# 1 #)39 %#))) 1 #)35 %#))% 1 #)16# %#)\'B# 1 #)3- %#)\'^ 1 #)3b %#)\'v 1 #)3Y %#)\'r 1 #)" ++"39 %#)))11 #)3-1 %#))Y11 #)59) %#))E)1 #)3&#) %#)\':#)1 #)5=) %#)\'6#)1 #)5-) %#))=)1 #)3z) %?-)%511?#)5E1 %#)5%1 %#)3b1 %#)551 %#)32#1 %#)3Q1 %#)5)1 %#)3!#1 % /\'!#511 -5\'=1 "},"Vientiane":{"value":")Asia/Bangkok"},"Riyadh":{"value":"+% Vcg!5#ao#)\'Y Q# "},"Ujung_Pandang":{"value":")Asia/Makassar"},"Harbin":{"value":")Asia/Shanghai"},"Novokuznetsk":{"value":"+/ .J$cE#am#)+% &##;)-v 6#AG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 &#-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 6#1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 #1\'6#1 &#-0#O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 6## "} +,"Kuwait":{"value":")Asia/Riyadh"},"Krasnoyarsk":{"value":"+/ *TouG#Pm#)#9 &##K)-v 6#AG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 &#-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 6#1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 F##/15.#1 6## "},"Qatar":{"value":"+\' >{8&7#Pm#)#% b#<%)-% Q# "},"Magadan":{"value":"+1 Ns<@b#am#)+) g##;)-v w#AG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 g#-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 w#1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 *%#/15.#1 g##+1) w## "} +,"Ashgabat":{"value":"++ ocmP9#am#)+) b#;)-v r16%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n)\'B#1 b-K/))% 1 O53\'=1 K,#5\'\'=11j)#n1 r# "},"Muscat":{"value":")Asia/Dubai"},"Bahrain":{"value":")Asia/Qatar"},"Kathmandu":{"value":"+\' k}J# %//+%= 1///3j= \')1I V#13//+%= 1///3j= 2#\'/+A=11\'\'/5A=9 "},"Brunei":{"value":")Asia/Kuching"} +,"Colombo":{"value":"+3 ooR,C#ii#)#% N{q,C#0#)#% z#X#)#5 )z##)3% 1z#/)5b1 z#8%)+*# .###)5.#% &##K))^% z# "},"Urumqi":{"value":"+% .BmiE#qm#)#% &## "},"Hong_Kong":{"value":"+- _Z(NQ#mk# 5:#N# F##]#)-^91F###)5%A)F###)9*# V##3)7j1 F#Y%#))v 1 #19%= %#1)U=1 #17>#= %#1+)=1 3756#== /3/)%==1 O/5B#== KK/\'j==1%O/)b==1OO/5b== /#)9>#=19#)+U=1 #)5v= "},"Sakhalin":{"value":"+3 !$HX^#qk#)1!# V##i#)1*# w#A(##)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 g#-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 w#1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 U5\'\'=1 g#-WO53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 w##/15.#1 g##+1\'2#1 w## "} +,"Kamchatka":{"value":"+/ V>e!f#Xm#)7I w##C)-v *%AG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 w#-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 *%1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 #1\'6#1 w#-0#O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 *%# "},"Thimbu":{"value":")Asia/Thimphu"},"Tehran":{"value":"++ BX:$7#@m#)#% BX:$7#p)-U Y-,##)#% w%#)\'v!%1 #)5v #)5v b5y%#)#% w%#)\'v!%1 #)5v %#)\'*# 1 #)15) #)7M Yc#\'#)\'v!%1 #)5v %#)\'*# 1 #)15) %#)+.# 1 #)3n %#)\'v 1 #)3!# M#)+- 1%/)\'z 133)3z %#)\'v 1 #)3v %+)\'z 1++)3z %#)\'v 1 #)3v %+)\'z 1++)3z %#)\'v 1 #)3v %#)\'z 1 #)3z -#)\'v 1 #)3v %+)\'z 1++)3z %#)\'v 1 #)3v %+)\'z 1++)3z %#)\'v 1 #)3v %+)\'z 1++)3z %#)\'v 1 #)3v %\')\'z 1\'\')3z "} +,"Saigon":{"value":")Asia/Ho_Chi_Minh"},"Katmandu":{"value":")Asia/Kathmandu"},"Tbilisi":{"value":"+7 Z8mX3#ii#)#% Z8mX3#y#)+) Q#L#)\'% b1&#/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 Q-K/))% 1 O53\'=1 K,#5\'\'=11j)#% Q)O -\'\'= 1+d-3\'= %-3\'= b-W -\'\'= 1+d-3\'= % -5\'= #-5\'= 1b#\'-\'\'= b-d -\'\'= 1+d-3\'= % -5\'= C)-2# Q-tO53\'=1 K,#5\'\'=11[[55\'=1 5-\'\'=1 b# "},"Makassar":{"value":"++ ..ZXS#Pm#)#% ..ZXS#S)7% F##K)%E V##/)3!# F## "},"Nicosia":{"value":"+\' s}(0/#Tm#)7Y AEB%#))U 1 #)5Q %#)+^ 1 #)5M %//)%= 1/#)3*# %#)5) %l-3\'= dh-\'\'= 1#)3% A-h %\'\'=)1+d%3\'=) % %5\'=) "} +,"Atyrau":{"value":"+3 .J4.7#am#)+) Q#;)-v r#8%)5% &##\'))% r1\'/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 b-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 r1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 M1\'6#1 b-`O53\'=1 K,#5\'\'=11[[55\'=1 915B#1 r# "},"Khandyga":{"value":"+3 V&y&[#Lm#)9^ F##O)-v V#AG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 F#-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 V#1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 9)#% g#-tO53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 w###13U g##/15.#1 V## "},"Kuala_Lumpur": +{"value":")Asia/Singapore"},"Famagusta":{"value":"++ k]o:/#Tm#)7Y AEB%#))U 1 #)5Q %#)+^ 1 #)5M %//)%= 1/#)3*# %#)5) %l-3\'= dh-\'\'= 1#)3% A-h %\'\'=)1+d%3\'=) % %5\'=) t)3A Q#\' 5:#) A-X# %\'\'=)1+d%3\'=) % %5\'=) "},"Thimphu":{"value":"+\' V{26G#ao#)1^ z#i#)5% &## "},"Rangoon":{"value":")Asia/Yangon"},"Calcutta":{"value":")Asia/Kolkata"},"Kabul":{"value":"+\' {(Po=#4k#)#% b#H%)#% j# "},"Hebron":{"value":"+- oN.R/#]k#)5% AEg## +B#*%1 # 3>#*% # 7b*%1)3 5B#*% /\' \'B#*%1%\' )^*%1)# +z*%A # 1B#*%1 \' 5B#*% %)+^ A9E#)+I 1 \')5% #)+% 1%C)+%)1C;)3>#9 %#)5%9 \')-5 AN#K# )2#*%1 # 3v*% f#)/= 1 #)5U %#))r 1 #)1B# 5#11)*%1 #13U*% 1#1+5*%1 #11*#*% %#))Y 1 #)3% %#)+j 1 #)3= %#))^ 1 #)3U %#))I 1 #)31 %#))># 1 #)3- %#)\'*# 1 #)1.# %#)\'&# 1 #)3% %#)\':# 1 #)39 %#))) 1 #)35 %#))% 1 #)16# %#)\'B# 1 #)3- %#)\'^ 1 #)3b #)#% A5/7/)%5 13#/3^5 %/73^5 %#1/% 1 /53\'5 -)#% Ak) ;/)^5 1;3/5^5 %#)5%) %#)511 %\'))% 1\'#)3z " ++"%#)3U1 %\'-\'\'5 1\'#)3% %#)31) %#)\'.# 1 #)1M %#))%ec6#1 #)1% #)1># 1 #)3># %+-)%5 1+#)3v) %#)32# %#)5&# %#)\'6# 1 #)5!#) %+-\'>#9)1++-5>#9) %#)\':# 1 #-5>#9 %\'-\'>#9 1\'#)5&#) %#)5:#) %#)\'2# 1 W-5>#91 S#)):#11%#))r11%#))Q11%8#-\'>#911l#)5j1 %#)5I1 %#)3*#1 %#)3f1 %#)3%1 #)5r11 4#-5>#91 0##)1 #)5511%#)1b1 #)32#11%#)1%1 #)3n11%#)/!#1 #)3-11%#)/^1 #)1.#11%#)->#1 #)1j11%#)-z1 #)1-11%#)-91 #)/*#11%#)+:#1 #)/I11%#)+v1 #)/)11%#)+91 #)- %#))2#1 #)-A11%#))Q1 #)+B#11%#))11 #)+!#11%#)+A11%#)):#11%#)" ++")Y11%#))911% -\'>#911E#)5r1 %#)5Q1 %#)511 %#)3n1 %#)3I1 #)5z11 -5>#91 %#)3)1 #)5Y11%#)1j1 #)5911%#)1I1 #)3v11%#)/*#1 #)3Q11%#)/f1 #)3111%#)/E1 #)1r11%#)- #)1Q11%#)-^1 #)/2#11%#)-=1 #)/n11%#)+!#1 #)/M11%#)+^1 #)-.#11%#)):#1 #)-f11%#))v1 #)-E11%#))U1 #)+*#11 "},"Ust-Nera":{"value":"+3 R4Xc^#Lm#)9^ F##O)-v V#9G#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% )))% w#A]%#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 g#-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 w#1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 *%##13U w##/15.#1 g## "} +,"Srednekolymsk":{"value":"+/ &.({b#am#)+) g##;)-v w#AG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 g#-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 w#1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 *%#/15.#1 w## "},"Anadyr":{"value":"+1 &gL&n#am#)+) *%#;)-v :%9G#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %1)% *%Aa%#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 w#-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 *%1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 #1\'6#1 w#-0#O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 *%# "} +,"Irkutsk":{"value":"+1 !8FBM#ii#)#% !8FBM#i#)#*# 6##K)-v F#AG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 6#-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 F#1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 V##/15.#1 F## "},"Amman":{"value":"+\' *LFc/#}m#)#% AF#o##)-9 1 +)5% \'/)+% 1\'#)7% %#)5% %#))># 1 #)3># =#))% 1 #)5% %+/)%5 1+3/5%5 \'#)+A 1%#))2# 1%#))f 1 #)32# %#))I 1 \'/5%5 7/)%5 13#/3^5 %/73^5 %#1/% 1 /53\'5 +\'5\'\'1 1%K-)%5 1G#15&# %#15^ %#53\'5 %755\'5 )#)9r %?-)%5 1?C55\'5 #-\'%5 1#156# Q# "} +,"Tokyo":{"value":"+% og:{[#(k# 9B#># V#1_%#/+)= 1 //3A92% +#/))= 1%\'/+)= 1 "},"Singapore":{"value":"+3 B4<:M#ak#)#% B4<:M#3)-% 6##8#)#% sH>(#6##/)#% 6NuVO#7)3% >##\')%b V##/)3Q >##X# 9B#F# F## "}},"America":{"Cuiaba":{"value":"+) i6.$9#8m#)#% d{#f#)5-z1%\'))% \'#)5- 1f/)9% 1+#))b) %\'))% %#)\'% I#)9E 1%#)\'% %#)#B# 1 #)\'B# #)9% 1%+)\'% +\')7% 1j#)7) 1%#)\'^ #)5*# 1%#)%Y #)5*# 1%#)%= #)5b 1%#)#:# #)5^ 1%#)%M #)5v 1%#)%f #)5r 1%#)%E #)5*# 1%#)#B# +/5M= 1\'\'/%^= %#)%M #)59 1%#)%b #)59 1%#)\'% #)5M 1%#)%v #)5- 1%#)%2# \'/5A= 1 7/%^= 3#)7- 1%#)5n 1#)3&# d#\')5% dY/7/%^= /#)5n 1%#)7) 1%#)5b 1%#)75 1%#)%*# #/5A= 1%G/5^= 1G//%^= %#/%z= %\'/%^= %#/%z= %//%^= \'#/7%= 1 "} +,"Marigot":{"value":")America/Port_of_Spain"},"El_Salvador":{"value":"+% 4mg,G#Tm#)#% (#)s%\'/+%= 1\'\'-3\'= "},"Guatemala":{"value":"+% L0gFG#Hm#)55 (#AF%#)7*# 1%#)%&# E#)+v 1 #)3z A#)\'!# 1 #)3= ^#))># 1 #)5% "},"Belize":{"value":"+% ],uuE#0m#))% (#M9$#/5)= )|$#/%E= #)-6# 1-# 1Y!%1 #)9b )t/5)= )pt/%E= 5#)95 1%#)%E A#)9j 1%#)%Q "},"Panama":{"value":"+\' (2H&C#4k#)#% 8R$.C#l))z t# "},"Managua":{"value":"+3 ]T}NE#4k#)#% L,0PE#y#)-!# (##e#)+% t#+)%b (#)1\'/\'b= 1\'\'/-!#% S)#%A t##)3&# (##\')#% t#3)#% (#9l\'/\'b= 1\'\'/-!#% *##))I 1 #/5%= %#))>#11 #/5%=) "} +,"Indiana/Petersburg":{"value":"+1 8BmcE#ui# 7jV# (#5R#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 K)#% (#1 #)+% 1 7-3\'=1 3C-)\'=11//-5\'=1 \'))*#1 t#\')5>#1 (#=x# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11E)5>#1 t#<#)))1 (#5e#e#-5\'=1 @#K-)\'=11%p/)%=11% /\'A=11 /7%=1 #)711 t1i#e#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "},"Chicago":{"value":"+1 DXLkE#ui# 7jV# (#)R#\'-\'\'=11\'\'-5\'=1 \')#% (#5 #)-U11 \'-5\'=1 #-\'\'=11%y#-)\'=11y#H#-3\'=1 j)\'%1 t##)7^1 (#1d\'-5\'=1 #-\'\'=11%y#-)\'=11y#H#-3\'=1 Q)#% (#5(#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% (#50#\'-5\'=1 #-\'\'=11%y#-)\'=11y#H#-3\'=1 %O-5\'=1 \')#% (#I|# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "} +,"Tegucigalpa":{"value":"+% u}2cE#Tm#))% (#1s%\'/+%= 1\'\'-3\'= j#/+%= 1 #/1%% "},"Eirunepe":{"value":"+/ yR(}=#8m#)#% tvf#)5-z1%\'))% \'#)5- 1f/)9% 1+#))b) %\'))% %#)\'% I#)9E 1%#)\'% %#)#B# 1 #)\'B# #)9% 1%+)\'% +\')7% 1j#)7) 1%#)\'^ #)5*# 1%#)%Y #)5*# 1%#)%= #)5b 1#)3Q t#7)36# t5\'#)%E #)5*# 1%#)#B# +/5M= 1\'\'/%^= %)3z t#[)-&# d#7)7I t# "},"Miquelon":{"value":"+) u${$9#,m#)-^ d#$\')+% S#?)#% S5WS-)\'=11SH#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "},"Argentina/Catamarca":{"value":"+9 T}k*=#Dk#)5B# (_2i;#0#)+% d#K)9% dn #)9% 1%#))% #)5^ 1%C)\'% C?)7% 1%#)/% 1%#)-^ #)5^ 1)#)1% #)5^ 1-#)\'% #)5% 1f#)5% #)9^ 1%+)\'% ++)5^ 1%#))) \'/5%= 1 \'/)%= #)55 S=+\'/5%= 1 \'/)%= 5#)#!# 1 #)+% Y#)9% 1%3/\'%= 3//5^= 1%)\'- d##)5r S1/#)9% 1%3/\'%= 3//5^= 1=#/5%= 1#)5- d-K3/\'%= 9#/5%= 1%#)\'- #)\'- S#3)-% d##)-r S13#)\'- =#)9># 1%\'/\'^= \'#/5^= 1#)5j S# "} +,"Grand_Turk":{"value":"+- e4V8?#4k#)#% a>DLA#|)%% t#y%)#% t9Se#-5\'=1 D##-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 C)\'A1 d#/)\'M9 t18%e#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "},"Argentina/Cordoba":{"value":"+3 (_2i;#Dk#)5B# (_2i;#0#)+% d#K)9% dn #)9% 1%#))% #)5^ 1%C)\'% C?)7% 1%#)/% 1%#)-^ #)5^ 1)#)1% #)5^ 1-#)\'% #)5% 1f#)5% #)9^ 1%+)\'% ++)5^ 1%#))) \'/5%= 1 \'/)%= #)55 S=+\'/5%= 1 \'/)%= 5#)#!# 1 #)+% Y#)9% 1%3/\'%= 3//5^= 1%)\'- d##)5r S1/#)9% 1%3/\'%= 3//5^= 1=#/5%= 1#)5- d-K3/\'%= 9#/5%= 1%#)\'- #)\'- S5\'#/5%= 1%#)\'- =#)9># 1%\'/\'^= \'#/5^= 1 "} +,"Araguaina":{"value":"+/ $aD@5#8m#)#% S*#f#)5-z1%\'))% \'#)5- 1f/)9% 1+#))b) %\'))% %#)\'% I#)9E 1%#)\'% %#)#B# 1 #)\'B# #)9% 1%+)\'% +\')7% 1j#)7) 1%#)\'^ #)5*# 1%#)%Y #)5*# 1%#)%= #)5b 1%#)#:# #)5^ 1%#)%M #)5v 1#)3f S#7)3Y Sb+#)#B# +/5M= 1\'\'/%^= %#)%M #)59 1%#)%b #)59 1%#)\'% #)5M 1%#)%v #)5- 1%#)%2# \'/5A= 1 7/%^= 3#)7- 1%#)5n 1#)3&# S#G)5v S13G/5^= 1G//%^= %#/%z= %\'/%^= %)3% S# "},"Argentina/Salta":{"value":"+5 D]2$=#Dk#)5B# (_2i;#0#)+% d#K)9% dn #)9% 1%#))% #)5^ 1%C)\'% C?)7% 1%#)/% 1%#)-^ #)5^ 1)#)1% #)5^ 1-#)\'% #)5% 1f#)5% #)9^ 1%+)\'% ++)5^ 1%#))) \'/5%= 1 \'/)%= #)55 S=+\'/5%= 1 \'/)%= 5#)#!# 1 #)+% Y#)9% 1%3/\'%= 3//5^= 1%)\'- d##)5r S1/#)9% 1%3/\'%= 3//5^= 1=#/5%= 1#)5- d-K3/\'%= 9#/5%= 1%#)\'- #)\'- S5\'#/5%= 1%#)\'- =#)9># 1%\'/\'^= \'#/5^= 1#)5j S# "} +,"Montevideo":{"value":"+7 HoF&9#}k#)-I HoF&9#S)+% d#/)5% [A +)5% )\'+))% =7-5\'= )3?-)%= +#)5% )%#)52# )%#)1% )%#)9Y )#)9Y SAC?-)%= #)1% )%#)9Y )%#)\'Y b#)+&# ) #)7^ %#)#f 1 #)\'9 #)#% SA\'#)+&# ) #)7^ %#)#f 1 #)\'9 5#))1 1 #)3.# -#)+2# ) #)9% #)#% S9/#))1 1 #)3.# -#)+2# ) #)9% )#))*# 1 #)-Y #)#% SI+#)+2# ) #)9% )#))*# 1 #)-Y )#))!# 1 #)/b )#)#U 9 #)\'I ) #)3% #)9z 1#)#% S9+#))!# 1 #)/b )#)#U 9 #)\'I ) #)3% #)9z 1#)\'I S9+#))!# 1 #)/b )#)#U 9 #)\'I ) #)3% #)9z 1#)9z S:#+#))!# 1 #)/b )#)#U 9 #)\'I ) #)3% " ++" #)9z 1%#)\'># %#)9n 1%#)\'9 #)91 1%\'/\'%= \'#)9f 1%#)):# 1%#)\'b =#)9Y 1%#)%6# #)9M 1%#)\'5 #)5:# 1%#)%*# \'/5v= 1 \'/\'%= #)5j 1%#)%6# M#)3n 1%#)\'2#1 #)5E11%G/\'A=1 GC/5%=11 "},"Manaus":{"value":"++ eewq9#8m#)#% dvf#)5-z1%\'))% \'#)5- 1f/)9% 1+#))b) %\'))% %#)\'% I#)9E 1%#)\'% %#)#B# 1 #)\'B# #)9% 1%+)\'% +\')7% 1j#)7) 1%#)\'^ #)5*# 1%#)%Y #)5*# 1%#)%= #)5b 1#)3Q d#7)36# d5\'#)%E #)5*# 1%#)#B# +/5M= 1\'\'/%^= %)3z d# "},"Argentina/Mendoza":{"value":"+A u0eg=#Dk#)5B# (_2i;#0#)+% d#K)9% dn #)9% 1%#))% #)5^ 1%C)\'% C?)7% 1%#)/% 1%#)-^ #)5^ 1)#)1% #)5^ 1-#)\'% #)5% 1f#)5% #)9^ 1%+)\'% ++)5^ 1%#))) \'/5%= 1 \'/)%= #)55 S=+\'/5%= 1 \'/)%= 5#)#!# 1 #)+% Y#)9% 1%3/\'%= 3//5^= 1))\'1 d##)5^ 1d#\')\'% d##)5^ 1d#\')\'% d##)5j S13#)9% 1%3/\'%= 3//5^= 1=#/5%= 1#)5- d-K3/\'%= 9#/5%= 1%#)\'- #)\'- S#3)+!# d##)3.# S13#)\'- =#)9># 1%\'/\'^= \'#/5^= 1#)5j S# "} +,"Argentina/Rio_Gallegos":{"value":"+5 e]_o=#Dk#)5B# (_2i;#0#)+% d#K)9% dn #)9% 1%#))% #)5^ 1%C)\'% C?)7% 1%#)/% 1%#)-^ #)5^ 1)#)1% #)5^ 1-#)\'% #)5% 1f#)5% #)9^ 1%+)\'% ++)5^ 1%#))) \'/5%= 1 \'/)%= #)55 SA+\'/5%= 1 \'/)%= 5#)#!# 1 #)+% Y#)9% 1%3/\'%= 3//5^= 1=#/5%= 1#)5- d-K3/\'%= 9#/5%= 1%#)\'- #)\'- S#3)-% d##)-r S13#)\'- =#)9># 1%\'/\'^= \'#/5^= 1#)5j S# "},"Catamarca":{"value":")America/Argentina/Catamarca"},"Godthab":{"value":")America/Nuuk"},"Cordoba":{"value":")America/Argentina/Cordoba"} +,"Regina":{"value":"+\' }8.JM#qk#)3% 8#fU#))Y11 #)52#1 Q3/+%= 133/5%= -3/)A= 13#/5A= %#/5%= %+/5A= %#)%E11-# 1Y!%1 #-3\'=1 %#/)A=11 #/5A=1 %K-)\'=11KK-3\'=1 )#-)\'=11 #-5\'=1 \'-)\'=1 (## "},"Fort_Wayne":{"value":")America/Indiana/Indianapolis"},"Dawson_Creek":{"value":"+) D4oiS#yi#)#% H#5N##))Y11 #)52#1 &##)%E11-# 1Y!%1 #)3>#1 +)#% H#1\'i#-)\'=11i##)3:#1 %[-3\'=1 %y#-5\'=1 N#)1>#1 8## "},"St_Johns":{"value":"+1 umw<7#yi#)#% umw<7)J##))A11 #)3f1 \')#% umw<7) #))Y11 #)52#1 \')#% umw<79+#))A11 #)3f1 )#)+5!%1 #)1Q!% %`/+%=!%1``-5\'=!% #)\'># [9d#)+5!%1 #)1Q!% %`/+%=!%1``-5\'=!% %7/+E% 177/5)% \')+M [5(##))Y11 #)52#1 &##)%E11-# 1Y!%1 #)3>#1 \')#% [UK7/+E% 177/5)% 53/+A=1133/5)=1 %T#-)\'=11T#C-3\'=1 %0#-5\'=1 %#/)%=ec6#1 p-5\'=ec6# l#/)%=ec6#A%h/)%=ec6#1%3/\'A=ec6#13//7%=ec6# \')7% [1]#H#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "} +,"St_Thomas":{"value":")America/Puerto_Rico"},"Anguilla":{"value":")America/Puerto_Rico"},"Denver":{"value":"+- PNHPM#ui# 7j_# 8#)R#\'-\'\'=11\'\'-5\'=1 \')#% 8#- \'-\'\'=11\'#-5\'=1 %#)+z1 x)#% 8#5(#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% 8#10#\'-\'\'=11 #)+z1 w#\'-)\'=11\'\'-5\'=1 \')#% 8#I|# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"Havana":{"value":"+\' PZB_C#4k#)#% 0ga_C#T#)/n&# tc#-#)-I 1 #)5I Q+/-%= 1++/3%= -\'/-%= 1\'\'/3%= n#)-% 1 #)3># %#)+:# 1 #)5) %#))A 1 \'/3A= #))Y 1%C-)\'= 1C+-5\'= %+)5A %+-5\'= %#)+= 1 S/5A= O\'/\'^= 1%3/+5= 1%//\'Y= 1%?/)%= 1;375A= %#159 %#15Q %\'5\'\'= 1\'755\'= //7)%= 1%#5\'\'= 1)355\'= /#7\'A= 1%#7\'^= 1%\'7\'A= 1%#7\'^= 1 #17U %#1)% 1 77%= % 7\'A= 1 "} +,"Porto_Acre":{"value":")America/Rio_Branco"},"Barbados":{"value":"+) q.$k9#,m#)16# d9B## )nI1 # 1B#Q %# +)I1 # 35Q %# )II) # 3IQ #)#% d1\'# +)I1 # 35Q %# )II) # 3IQ \')#% d=\'# )II) # 3IQ J##)-Q11 \'/5%=1 +/)^=11\'#)3>#1 %#)3*#1 "},"Louisville":{"value":")America/Kentucky/Louisville"},"Sao_Paulo":{"value":"+) T@i}3#8m#)#% SAf#)5-z1%\'))% \'#)5- 1f/)9% 1+#))b) %\'))% %#)\'% I#)9E 1#)5!# 1S#\')#% S2%\'#)9E 1%#)\'% %#)#B# 1 #)\'B# #)9% 1%+)\'% +\')7% 1j#)7) 1%#)\'^ #)5*# 1%#)%Y #)5*# 1%#)%= #)5b 1%#)#:# #)5^ 1%#)%M #)5v 1%#)%f #)5r 1%#)%E #)5*# 1%#)#B# +/5M= 1\'\'/%^= %#)%M #)59 1%#)%b #)59 1%#)\'% #)5M 1%#)%v #)5- 1%#)%2# \'/5A= 1 7/%^= 3#)7- 1%#)5n 1%#)7) 1%#)5b 1%#)75 1%#)%*# #/5A= 1%G/5^= 1G//%^= %#/%z= %\'/%^= %#/%z= %//%^= \'#/7%= 1 "} +,"Curacao":{"value":")America/Puerto_Rico"},"Guyana":{"value":"++ (R]L9#,m#)1% d#3)\'% $qi&9#]%)1% S#h)\':#) d# "},"Guayaquil":{"value":"+\' y:D,C#4k#)#% qB6oA#m#)#% t)_%#)76# 1%#)%5 "},"Martinique":{"value":"++ X_J*;#4k#)#% X_J*;#x)+% d#$\'))9 1d##)36# d# "},"Puerto_Rico":{"value":"+) 4T{0=#Xk#)\'6#&# d#u#)+- d5(#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% d# "},"Rankin_Inlet":{"value":"+) #,q#)#% (#5S# 1Y!%1 #)3>#1 2#[-)\'=11[P#-5\'=1 pp/)%=119)5:#1 t#\'))%9 (#54#S-)\'=11SH#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "} +,"Argentina/Jujuy":{"value":"+; Xc$!=#Dk#)5B# (_2i;#0#)+% d#K)9% dn #)9% 1%#))% #)5^ 1%C)\'% C?)7% 1%#)/% 1%#)-^ #)5^ 1)#)1% #)5^ 1-#)\'% #)5% 1f#)5% #)9^ 1%+)\'% ++)5^ 1%#))) \'/5%= 1 \'/)%= #)55 S=+\'/5%= 1 \'/)%= 5#)#!# 1 #)+% Y#)9% 1%3/\'%= 3//5^= 1))\'1 d##)56# 1d#\')\'f d##)59 1S#\')#% S13#)9% 1%3/\'%= 3//5^= 1=#/5%= 1#)5- d-K3/\'%= 9#/5%= 1%#)\'- #)\'- S5\'#/5%= 1%#)\'- =#)9># 1%\'/\'^= \'#/5^= 1#)5j S# "},"Port_of_Spain":{"value":")America/Puerto_Rico"},"Cayenne":{"value" +:"+\' uu.67#,m#)/% d#L%)5% S# "},"Rainy_River":{"value":")America/Winnipeg"},"Yellowknife":{"value":")America/Edmonton"},"Juneau":{"value":"+5 20oB&##4i# 5nm>Nn @sgmY#L#)1r&# H##q#)#% H#5(#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% H##$#)#% H#=(## 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=119))2#1 X#-We#-5\'=1 D##-%\'=11%K-)\'=119)5.#1 H#-We#-5\'=1 D##-%\'=11%K-)\'=11-)5>#1 X#-de#-5\'=1 D##-%\'=11%K-)\'=11-)7># X#9de#-5\'=1 D##-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"Indiana/Vevay": +{"value":"+- @V}6E#ui# 7jV# (#5R#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 G))*#1 t#`)#% t1(## 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11#)#% t#L#)#% t5e#e#-5\'=1 @#K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"Recife":{"value":"+/ m]4N/#8m#)#% S*#f#)5-z1%\'))% \'#)5- 1f/)9% 1+#))b) %\'))% %#)\'% I#)9E 1%#)\'% %#)#B# 1 #)\'B# #)9% 1%+)\'% +\')7% 1j#)7) 1%#)\'^ #)5*# 1%#)%Y #)5*# 1%#)%= #)5b 1%#)#:# #)5^ 1%#)%M #)5v 1#)3f S#G)3># S9\'#)\'% #)5M 1%#)%v #)5- 1%#)%2# \'/5A= 1%)5^ S#\')3U S1\'#)%2# \'/5A= 1 7/%^= 3#)7- 1#)5% S# "} +,"Buenos_Aires":{"value":")America/Argentina/Buenos_Aires"},"Noronha":{"value":"+/ e}cy-#8m#)#% C*#f#)5-z1%\'))% \'#)5- 1f/)9% 1+#))b) %\'))% %#)\'% I#)9E 1%#)\'% %#)#B# 1 #)\'B# #)9% 1%+)\'% +\')7% 1j#)7) 1%#)\'^ #)5*# 1%#)%Y #)5*# 1%#)%= #)5b 1%#)#:# #)5^ 1%#)%M #)5v 1#)3f C#G)3># C9\'#)\'% #)5M 1%#)%v #)5- 1%#)%2# \'/5A= 1%)5^ C#\')3U C1\'#)%2# \'/5A= 1 7/%^= 3#)7- 1#)5% C# "},"Swift_Current":{"value":"++ iNR,O#qk#)3% 8#5U#))Y11 #)52#1 &##)%E11-# 1Y!%1 #)3>#1 \'-)\'=1 8#9\'# 1Y!%1 #-3\'=1 %#/)A=11 #/5A=1 %K-)\'=11KK-3\'=1 =)#% 8#5=#-)\'=11 #-5\'=1 )+-)\'=11+#-5\'=1 %\'-3\'=1 O-)\'=1 (## "} +,"Metlakatla":{"value":"+5 N:u{&##4i# 5nm>Nn $ia4Y#L#)1r&# H##q#)#% H#5(#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% H##$#)#% H#=(## 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11-)5>#1 H##H#)7%1 X#1,%e#-5\'=1 pp/)%=11% /\'A=11 /7%=1 O)711 H##\')#r1 X#1<%e#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "},"Paramaribo":{"value":"++ @B*o7#,m#)#% m$Xo7#(#)#% Pkwm7#K)5% [#e#)5% S# "},"Indiana/Vincennes":{"value":"+1 ]i:iE#ui# 7jV# (#5R#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% (#E #-)\'=11 #-3\'=1 =\'-)\'=11\';-3\'=1 3#)+% 1%?-)\'=11/#-5\'=1 %#-3\'=1 %\'-5\'=1 \')).#1 t#7)#% t1(## 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11))#% t#T#)))1 (#5e#e#-5\'=1 @#K-)\'=11%p/)%=11% /\'A=11 /7%=1 #)711 t1i#e#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "} +,"Kralendijk":{"value":")America/Curacao"},"Antigua":{"value":")America/Puerto_Rico"},"Indianapolis":{"value":")America/Indiana/Indianapolis"},"Inuvik":{"value":"+- #yo#)#% H#1C# 1Y!%1 #)3>#1 2#[-)\'=11[P#-5\'=1 2#-)\'=1 8#1P## 1Y!%1 #)3>#1 2#[-)\'=11[P#-5\'=1 .#)#% 8#=T## 1Y!%1 #)3>#1 :#S-)\'=11SH#-5\'=1 pp/)%=11% /\'A=11 /7%=1 p)1v 8#1<%H#-5\'=1 pp/)%=11% /\'A=11 /7%=1 p)7%1 (## "},"Iqaluit":{"value":"+) #Lo#)1% tA$##)+*#11 #)7% !##)%E11-# 1Y!%1 #)3>#1 2#[-)\'=11[P#-5\'=1 pp/)%=11=)5B#1 (#-,#S-)\'=11SH#-5\'=1 pp/)%=119)5:#1 t50#S-)\'=11SH#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "} +,"Moncton":{"value":"+3 }#1 \')#% d5?+/3v9) #)+1)150#-)\'=110#K-3\'=1 %`-5\'=1 \')#% d58## 1Y!%1 #)3>#1 :#S-)\'=11SH#-5\'=1 pp/)%=11U)#% d1(%0#-)\'=11``-5\'=1 vW/)%=ec6#1WW-5\'=ec6# \')#% d1L#H#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "},"St_Vincent":{"value":")America/Puerto_Rico"},"Kentucky/Louisville":{"value":"+3 ,DmDE#ui# 7jV# (#)R#\'-\'\'=11\'\'-5\'=1 +)#% (#1 #)+%11 #)3%1 r#-)\'=11 #-3\'=1 \')#% (#5(#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% (#=7#-)\'=11 #-3\'=1 5#-)\'=ec6#1 #)-)1 1O-)\'=11O7-3\'=1 %7-5\'=1 #)/!#1 t#?)#% t5$## 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911#)#911(###)52#1 tA?e#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "} +,"Yakutat":{"value":"+/ VoL6$##4i# 5nm>Nn y2,{[#L#)1r&# X##q#)#% X#5(#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% X##$#)#% X#=(## 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11-)7># X#9de#-5\'=1 D##-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"Ciudad_Juarez":{"value":"+7 q!6oM#Xm# #%Y 8##7)-I (##/)7^ 8#)%#))># 1 #)5% \'))% (##m%)#% (#1$%#)%Q 1 #)/># !%3/)%=1133-5\'=1 ))#% (###/)%=9 8#A,%#)%Q 1 #)/># !%3/)%=1133-5\'=1 %#/+%=11 #-3\'=1 %t/)%=11tt-5\'=1 Q)#% 8#1u#e#-5\'=1 pp/)%=11% /\'A=11 /7%=1 `)5>#1 (###)7># 8#1H%e#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "} +,"Mazatlan":{"value":"+/ TiTmM#Xm# #%Y 8##7)-I (##/)7^ 8#)%#))># 1 #)5% \'))% (##K))&# 8##8#)#% 8#At#)%Q 1 #)/># !%3/)%=1133-5\'=1 %#/+%=11 #-3\'=1 %t/)%=11tt-5\'=1 "},"Dominica":{"value":")America/Puerto_Rico"},"Mendoza":{"value":")America/Argentina/Mendoza"},"Santarem":{"value":"+) 4]Ne7#8m#)#% dvf#)5-z1%\'))% \'#)5- 1f/)9% 1+#))b) %\'))% %#)\'% I#)9E 1%#)\'% %#)#B# 1 #)\'B# #)9% 1%+)\'% +\')7% 1j#)7) 1%#)\'^ #)5*# 1%#)%Y #)5*# 1%#)%= #)5b 1#)3Q d#t)-&# S# "},"Asuncion":{"value":"+- 8VgB9#4k#)#% 8VgB9#m#)5I d#m#)5% S#+))% dz%W)5% 1W/)\'% %S))% +#)5z 1%#)5% 1%#)59 1%#)\'% #)55 1%#)\'B# +)5% 1\'\'-%\'= %#)\'% 7/5%= 13#-%\'= %//\'%= %+/)%= +\'/3%= 1%7/5^= 133/\'A= %[/5%= 1[+/)A= %O/\'z= #)5^ S# "} +,"Boise":{"value":"++ H6*wQ#ui# 7jg# H#)R#\'-\'\'=11\'\'-5\'=1 3)+U1 8#A7\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911#)#% 8###)%-1 8#A?e#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"Costa_Rica":{"value":"+\' u4!$E#4k#)#% u4!$E#D#)#^ (#5R%\'-%\'= 1\'\'/-%= M\'/#^9 1\'#)/% %#)\'^ "},"Dawson":{"value":"+- 4H$u[#]k#)1r X#=j#))Y11 #)52#1 %#)+*#11 #)7% !##)%E11-# 1Y!%1 #)3>#1 t)#% X#) #-)\'= A #-5\'=1 C)56# H##?)#% H#=T## 1Y!%1 #)3>#1 :#S-)\'=11SH#-5\'=1 pp/)%=11% /\'A=11 /7%=1 W)7% 8## "} +,"Indiana/Knox":{"value":"+/ (VBVE#ui# 7jV# (#5R#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 +)#% (#5 [-)\'=11[?-3\'=1 %\'-5\'=1 %\'-3\'=1 %+-5\'=1 \')):#1 t#\')52#1 (#Al# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11%p/)%=11^)52#1 t#`)))1 (#5e#e#-5\'=1 @#K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"North_Dakota/Beulah":{"value":"+\' ykmmK#ui# 7j_# 8#UR#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 /)7=1 (#1u#e#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "} +,"Maceio":{"value":"+3 <0:_/#8m#)#% S*#f#)5-z1%\'))% \'#)5- 1f/)9% 1+#))b) %\'))% %#)\'% I#)9E 1%#)\'% %#)#B# 1 #)\'B# #)9% 1%+)\'% +\')7% 1j#)7) 1%#)\'^ #)5*# 1%#)%Y #)5*# 1%#)%= #)5b 1%#)#:# #)5^ 1%#)%M #)5v 1#)3f S#7)5U S5+#)#B# +/5M= 1\'\'/%^= %#)%M #)59 1#)31 S#/)3># S9\'#)\'% #)5M 1%#)%v #)5- 1%#)%2# \'/5A= 1%)5z S#\')3U S1\'#)%2# \'/5A= 1 7/%^= 3#)7- 1#)5% S# "},"Atka":{"value":")America/Adak"},"Monterrey":{"value":"+/ 4# 1 #)5% \'))% (##L%)#% (#-xe#-5\'=1 @#K-)\'=11%p/)%=11f)#% (#Ae##)%Q 1 #)/># !%3/)%=1133-5\'=1 %#/+%=11 #-3\'=1 %t/)%=11tt-5\'=1 "} +,"Nassau":{"value":")America/Toronto"},"Jamaica":{"value":"++ a>DLA#4k#)#% a>DLA#|)%% t#e%)#% t5?e#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11))#% t# "},"Atikokan":{"value":")America/Panama"},"Sitka":{"value":"+1 FF,2&##4i# 5nm>Nn ,]L![#L#)1r&# H##q#)#% H#5(#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% H##$#)#% H#=(## 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11-)5>#1 X#-de#-5\'=1 D##-%\'=11%K-)\'=11-)7># X#9de#-5\'=1 D##-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"Kentucky/Monticello": +{"value":"++ X:q2E#ui# 7jV# (#5R#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% (##|)#% (#A$## 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11%p/)%=119)5:#1 t5L#e#-5\'=1 @#K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"Coral_Harbour":{"value":")America/Panama"},"Aruba":{"value":")America/Puerto_Rico"},"North_Dakota/Center":{"value":"+\' yF*eK#ui# 7j_# 8#MR#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11%p/)%=11Y)5*#1 (#5,#e#-5\'=1 @#K-)\'=11%p/)%=11% /\'A=11 /7%=1 "} +,"Cayman":{"value":")America/Panama"},"Indiana/Tell_City":{"value":"+1 ]ycXE#ui# 7jV# (#5R#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% (#1E#)+% 1 7-3\'=1 3?-)\'=11++-5\'=1 \')).#1 t#/)5:#1 (#1|# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=111))2#1 t1(## 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11))#% t#T#)))1 (#5e#e#-5\'=1 @#K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"Tijuana":{"value":"+O yo**S#Xm# #%Y 8##+)#% H##/)-I 8##/)7^ H##\'))% 1H###)3># H##O))&# 1H##/ 1Y!%1H###)7^ H##/))5 1H##\')#Y H##\')+% 1H###)3&# H##\')):#11H###)3>#1 H##\'))2#11H###)36#1 H#1/#)#%1 %d-)\'=)1dO-3\'=1 %3-5\'=1 \')#% H#A|# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11%p/)%=11I)#% H#9$%#)%Q 1 #)/># !%3/)%=1133-5\'=1 %#/+%=11 #-3\'=1 #)#% H#-P#e#-5\'=1 @#K-)\'=11%p/)%=111)%r H#1\'#/+%=11 #-3\'=1 %t/)%=11tt-5\'=1 Q)#% H#1u#e#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "} +,"Chihuahua":{"value":"+3 $T:gM#Xm# #%Y 8##7)-I (##/)7^ 8#)%#))># 1 #)5% \'))% (##m%)#% (#1$%#)%Q 1 #)/># !%3/)%=1133-5\'=1 ))#% (###/)%=9 8#A,%#)%Q 1 #)/># !%3/)%=1133-5\'=1 %#/+%=11 #-3\'=1 %t/)%=11tt-5\'=1 #)5>#1 (## "},"Ojinaga":{"value":"+7 HFoDM#Xm# #%Y 8##7)-I (##/)7^ 8#)%#))># 1 #)5% \'))% (##m%)#% (#1$%#)%Q 1 #)/># !%3/)%=1133-5\'=1 ))#% (###/)%=9 8#A,%#)%Q 1 #)/># !%3/)%=1133-5\'=1 %#/+%=11 #-3\'=1 %t/)%=11tt-5\'=1 Q)#% 8#1u#e#-5\'=1 pp/)%=11% /\'A=11 /7%=1 `)5>#1 (###)7># (#1H%e#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "} +,"Anchorage":{"value":"+1 cL0&|#4i# 5nm>Nn mTH.b#L#)1r&# i##q#)#% i#=(#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=119))% i##+)#% i#=(## 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11-)5>#1 X#-de#-5\'=1 D##-%\'=11%K-)\'=11-)7># X#9de#-5\'=1 D##-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"Halifax":{"value":"+/ @J:];#ek#)-^ d)Y#))% 1 #)5% +)#% d) #))Y11 #)52#1 \')#% dJ#/#))% 1 #)5% 1#)+E 1 #)1:# %#)+9 1 \')35 #))># 1%+/+%= 1+#)31 %#)3^ %#)36# %#)+b 1 #)3U %#)+% 1 #)3.# %//+A= 1/#)3E %#)3- %#)3^ %\'/3&#% #)+% 1%#))># 1 #)5) %#)+r 1 #)3b %#)-) 1 #)3># %#)-% 1 #)3Y %\'/+%= 1\'3/3&#% +#)+6# 1%\'/+%= 1\'1%E1 d5(##))Y11 #)52#1 &##)%E11-# 1Y!%1 #)3>#1 \')#% dIG3/3&#% \'\'/+%= 15/-)\'=11//-3\'=1 )/-)\'=11//-3\'=1 )/-)\'=11//-3\'=1 -O-)\'=11OO-5\'=1 \')#% d=<## 1Y!%1 #)3>#1 :#S-)\'=11SH#-5\'=1 pp/)%=11% /\'A=11 /7%" ++"=1 "},"Indiana/Indianapolis":{"value":"+7 yogLE#ui# 7jV# (#)R#\'-\'\'=11\'\'-5\'=1 \')#% (#)v#)-z11 W-3\'=1 Q)#% (#5(#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% (#-7#)-z11 W-3\'=1 CC-)\'=11\')) t#+)3:#1 (##\'))2#1 t#O)#% t1(## 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11))#% t#T#)#% t5e#e#-5\'=1 @#K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"Argentina/San_Luis":{"value":"+A ](F6=#Dk#)5B# (_2i;#0#)+% d#K)9% dn #)9% 1%#))% #)5^ 1%C)\'% C?)7% 1%#)/% 1%#)-^ #)5^ 1)#)1% #)5^ 1-#)\'% #)5% 1f#)5% #)9^ 1%+)\'% ++)5^ 1%#))) \'/5%= 1 \'/)%= #)55 S=+\'/5%= 1 \'/)%= 5#)#!# 1 #)+% Y#)9% 1%3/\'%= 3//5^= 1))#% 1S##)\'Y d##)5^ 1d#\')\'% d##)-% S#C)5- 1d#\')\'- S#3)+B# d##)/*# S13#)\'- =#)9># 1%\'/\'^= \'#/5^= 1#)#v d) \'/\'A= +\'/5A= 1\')5M S# "} +,"Santiago":{"value":"+= Dy00?#4k#)#% Dy00?#t)#I t#;)/% Dy00?#+)3I d#\')/% Dy00?#C)3% t) 3)3% 1/3))% #)3% d#K)-% t##)1% d#3)/^ 1d##)1:# 1t#\'))% t##)+v!% dR#p3))% V## 7-A1%# \'>#9 # 7!#A1%# \':#9 %# \'Y9 \'+\'5E=A1 [\'\'E=9 W# 3>#A1%W\'5E=A1 # )Q9 %+\'\'E=9 +\'\'5E=A1%# 3bA1%7\'\'E=9 7;\'5E=A1 # \'>#9 %#\'\'E=9 # 32#A1%# )19 O\'5E=A1K?\'\'E=9 %# \'>#9 %#\'\'E=9 %#\')%=9 %#\'+)=9 #\'1b=A1%+\')!#=9 ++\'3)=A1)+\'+E=9 ++\'1E=A1% \'))=9 +\'3)=A1%#\'3E=A1% \'3)=A1 "},"Argentina/Ushuaia":{"value": +"+5 # d##)-r S13#)\'- =#)9># 1%\'/\'^= \'#/5^= 1#)5j S# "},"La_Paz":{"value":"+) qc.Z=#4k#)#% qc.Z=#m#)5^ 1qc.Z=#\')\'v d# "},"Thunder_Bay":{"value":")America/Toronto"},"Indiana/Marengo":{"value":"+3 }uXPE#ui# 7jV# (#5R#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 ;)#% (#1 #-)\'=11 #-3\'=1 -;-)\'=11;;-3\'=1 \'))>#1 t#C)#% t5(## 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911#)#911(###)52#1 t5?e#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11I)#% t#@#)#% t5e#e#-5\'=1 @#K-)\'=11%p/)%=11% /\'A=11 /7%=1 "} +,"Punta_Arenas":{"value":"+= }uH4?#4k#)#% Dy00?#t)#I t#;)/% Dy00?#+)3I d#\')/% Dy00?#C)3% t) 3)3% 1/3))% #)3% d#K)-% t##)1% d#3)1:# 1t#\'))% t##)+v!% dB#p3))% V## 7-A1%# \'>#9 # 7!#A1%# \':#9 %# \'Y9 \'+\'5E=A1 [\'\'E=9 W# 3>#A1%W\'5E=A1 # )Q9 %+\'\'E=9 +\'\'5E=A1%# 3bA1%7\'\'E=9 7;\'5E=A1 # \'>#9 %#\'\'E=9 # 32#A1%# )19 O\'5E=A1K?\'\'E=9 %# \'>#9 %#\'\'E=9 %#\')%=9 %#\'+)=9 #\'1b=A1%+\')!#=9 ++\'3)=A1)+\'+E=9 ++\'1E=A1))91 S# "},"Creston":{"value":")America/Phoenix"},"Mexico_City":{"value" +:"+/ D}s8K#Xm# #%Y 8##7)-I (##/)7^ 8#)%#))># 1 #)5% \'))% (#Y\'#))># 1 #)5% A#)%5 1 #)-*# %#)9E 1%#))% )#)9b 1%#)+% 9#)%Q 1 #)/># !%3/)%=1133-5\'=1 %#/+%=11 #-3\'=1 #)3>#1 (##\')%r (#1\'#/+%=11 #-3\'=1 %t/)%=11tt-5\'=1 "},"Coyhaique":{"value":"+= }]iJ?#4k#)#% Dy00?#t)#I t#;)/% Dy00?#+)3I d#\')/% Dy00?#C)3% t) 3)3% 1/3))% #)3% d#K)-% t##)1% d#3)1:# 1t#\'))% t##)+v!% dR#p3))% V## 7-A1%# \'>#9 # 7!#A1%# \':#9 %# \'Y9 \'+\'5E=A1 [\'\'E=9 W# 3>#A1%W\'5E=A1 # )Q9 %+\'\'E=9 +\'\'5E=A1%# 3bA1%7\'\'E=9 7;\'5E=A1 # \'>#9 %#\'\'E=9 # 32#A1%# )19 O\'5E=A1K?\'\'E=9 %# \'>#9 %#\'\'E=9 %#\')%=9 %#\'+)=9 #\'1b=A1%+\')!#=9 ++\'3)=A1)+\'+E=9 ++\'1E=A1% \'))=9 +\'3)=A1%#\'3E=A1% \'3)=A1+)\'r S# "} +,"Matamoros":{"value":"++ 0##Xm# #%Q (##u%)#% (#-xe#-5\'=1 @#K-)\'=11%p/)%=11f)#% (#Ae##)%Q 1 #)/># !%3/)%=1133-5\'=1 %#/+%=11 #-3\'=1 %t/)%=11tt-5\'=1 Q)#% (#1u#e#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "},"Blanc-Sablon":{"value":")America/Puerto_Rico"},"Knox_IN":{"value":")America/Indiana/Knox"},"Bogota":{"value":"+\' ,$Ps?#yi#)\'U ,$Ps?#@#)7!# t)F\'#)+) 1%#)%= "},"Menominee":{"value":"++ iV*kE#}i#)3j&# (#5J#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% (#1 #-)\'=11 #-3\'=1 r#-)\'=11 #-5\'=1 /))2#1 t#3)):#1 (#I8## 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "} +,"Adak":{"value":"+3 wV8>p#4i# 5nm>Nn XJ@sl#L#)1r&# y##q#)#% y#5(#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% y##x))% y##+)#% y#=(## 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11-)5>#1 i#-de#-5\'=1 D##-%\'=11%K-)\'=11-)7># i#9de#-5\'=1 D##-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"Resolute":{"value":"+- #ao#)1B# (#5+# 1Y!%1 #)3>#1 2#[-)\'=11[P#-5\'=1 pp/)%=119)5:#1 t#\'))%9 (#-4#S-)\'=11SH#-5\'=1 pp/)%=11#)5:#1 t#\')\'M9 (#1L#H#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "},"Edmonton":{"value" +:"++ }8*@Q#uk#)3% 8#UQ\'/)A=11\'#)52#1 %#)+2#1 %/-)\'=11/#-5\'=1 %+-3\'=1 n#)%E11-# 1Y!%1 #-3\'=1 )#-)\'=11 #-3\'=1 *#[-)\'=11[P#-5\'=1 n)#% 8#5WS-)\'=11SH#-5\'=1 pp/)%=11% /\'A=11 /7%=1 p)-j 8#1<%H#-5\'=1 pp/)%=11% /\'A=11 /7%=1 p)7%1 (## "},"Santo_Domingo":{"value":"+- X_F}=#4k#)#% T$F!?#u#))%&# t9J##)5># 1%#)%6# )3-5\'= )/#)%v %#)#r %+)#v #)52# d#0#)5:#1 t-L#e#-5\'=1 @#K-)\'=11%p/)%=119)9-) d# "},"Glace_Bay":{"value":"+- HN:q9#ek#)-^ d5b#))Y11 #)52#1 &##)%E11-# 1Y!%1 #)3>#1 C)#% d1?/-)\'=11//-3\'=1 )/-)\'=11//-3\'=1 #)#% d#l)#% d1d/-)\'=11//-3\'=1 -O-)\'=11OO-5\'=1 \')#% d=<## 1Y!%1 #)3>#1 :#S-)\'=11SH#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "} +,"Port-au-Prince":{"value":"+\' 4]FP?#4k#)#% (oVN?#4#)#&#&# tMs%#)+A 1%/-)\'= 133-5\'= %G7)%=)1GG55\'=) A\'/)%= 1\'\'-5\'= 9//\'A=11///7%=1 ) /\'A=11 /7%=1 "},"St_Barthelemy":{"value":")America/Port_of_Spain"},"Nipigon":{"value":")America/Toronto"},"Fortaleza":{"value":"+/ 8wc81#8m#)#% S*#f#)5-z1%\'))% \'#)5- 1f/)9% 1+#))b) %\'))% %#)\'% I#)9E 1%#)\'% %#)#B# 1 #)\'B# #)9% 1%+)\'% +\')7% 1j#)7) 1%#)\'^ #)5*# 1%#)%Y #)5*# 1%#)%= #)5b 1%#)#:# #)5^ 1%#)%M #)5v 1#)3f S#G)3># S9\'#)\'% #)5M 1%#)%v #)5- 1%#)%2# \'/5A= 1%)5z S#\')3U S1\'#)%2# \'/5A= 1 7/%^= 3#)7- 1#)5% S# "} +,"Hermosillo":{"value":"+1 (&JkO#Xm# #%Y 8##7)-I (##/)7^ 8#)%#))># 1 #)5% \'))% (##K))&# 8##D%)#% 8#1$%#)%Q 1 #)/># !%3/)%=1133-5\'=1 %)#% 8## "},"Cancun":{"value":"+/ XogXE#Xm# #%Q (##X%)9.#1 t#+)#1 (#1L##)%Q 1 #)/># !%3/)%=1133-5\'=1 -)5.#1 t1(%#)%Q 1 #)/># !%3/)%=1133-5\'=1 ))1)1 (#A,%#)%Q 1 #)/># !%3/)%=1133-5\'=1 %#/+%=11 #-3\'=1 %t/)%=11tt-5\'=1 =)%%1 t# "},"Lima":{"value":"+\' }PwPA#4k#)#% ysuRA#l)/6# tI>##)#% 1 #))% \'-3\'= 1 \'/\'&#= !%\')#% 1\'\'))% -#)#% 1 #))% 1#)#% 1 #))% "} +,"St_Lucia":{"value":")America/Puerto_Rico"},"Bahia_Banderas":{"value":"+1 eL&VM#Xm# #%Y 8##7)-I (##/)7^ 8#)%#))># 1 #)5% \'))% (##K))&# 8##8#)#% 8#At#)%Q 1 #)/># !%3/)%=1133-5\'=1 %#/+%=11 #-3\'=1 %t/)%=11tt-5\'=1 Q))11 (#1G#/+%=11 #-3\'=1 %t/)%=11tt-5\'=1 "},"Montserrat":{"value":")America/Puerto_Rico"},"Santa_Isabel":{"value":")America/Tijuana"},"Cambridge_Bay":{"value":"+- #Pm#)#% 8#A\'#)+*#11 #)7% !##)%E11-# 1Y!%1 #)3>#1 2#[-)\'=11[P#-5\'=1 pp/)%=11=)5B#1 (#-,#S-)\'=11SH#-5\'=1 pp/)%=119)5:#1 t##)75 (##\'))%9 8#54#S-)\'=11SH#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "} +,"Vancouver":{"value":"++ <@:FU#yi#)#% H#EN##))Y11 #)52#1 &##)%E11-# 1Y!%1 #)3>#1 %i#-)\'=11i##)3:#1 %[-3\'=1 %y#-5\'=1 n)#% H#5WS-)\'=11SH#-5\'=1 pp/)%=11% /\'A=11 /7%=1 p)\'E H#1<%H#-5\'=1 pp/)%=11% /\'A=11 /7%=1 p)7%1 8## "},"Lower_Princes":{"value":")America/Curacao"},"Rio_Branco":{"value":"++ PwaR=#8m#)#% tvf#)5-z1%\'))% \'#)5- 1f/)9% 1+#))b) %\'))% %#)\'% I#)9E 1%#)\'% %#)#B# 1 #)\'B# #)9% 1%+)\'% +\')7% 1j#)7) 1%#)\'^ #)5*# 1%#)%Y #)5*# 1%#)%= #)5b 1#)3Q t#t)-&# d#7)7I t# "},"Danmarkshavn": +{"value":"+) 4m*!)#@m#)/6# S#m%))91 S5//\')%=)1+# 5%) %d%3\'=) [ %\'\'=)1^ %5\'=) #)#% # "},"Detroit":{"value":"+5 Hg&mC#qk#)#% (##K)+^1 t#4#)#% t5(#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% t))#-)\'=11 #-3\'=1 p)-Yec6# t1|# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=111)#% t#3)#% t98## 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11#)#% t##))2#1 t=Ce#-5\'=1 H##)#911%#-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"Thule":{"value":"+% 8&Fg=#@m#)/6# d9:\'\'-\'\'=11\'\'-3\'=1 %W/)%=11WW-5\'=1 % /\'A=11 /7%=1 "} +,"Argentina/La_Rioja":{"value":"+9 Hw>@=#Dk#)5B# (_2i;#0#)+% d#K)9% dn #)9% 1%#))% #)5^ 1%C)\'% C?)7% 1%#)/% 1%#)-^ #)5^ 1)#)1% #)5^ 1-#)\'% #)5% 1f#)5% #)9^ 1%+)\'% ++)5^ 1%#))) \'/5%= 1 \'/)%= #)55 S=+\'/5%= 1 \'/)%= 5#)#!# 1 #)+% Y#)9% 1%3/\'%= 3//5^= 1%)\'% d##)+= S1/#)9% 1%3/\'%= 3//5^= 1=#/5%= 1#)5- d-K3/\'%= 9#/5%= 1%#)\'- #)\'- S#3)-% d##)-r S13#)\'- =#)9># 1%\'/\'^= \'#/5^= 1#)5j S# "},"Tortola":{"value":")America/Puerto_Rico"},"Porto_Velho":{"value":"+\' 4T6c;#8m#)#% dvf#)5-z1%\'))% \'#)5- 1f/)9% 1+#))b) %\'))% %#)\'% I#)9E 1%#)\'% %#)#B# 1 #)\'B# #)9% 1%+)\'% +\')7% 1j#)7) 1%#)\'^ #)5*# 1%#)%Y #)5*# 1%#)%= #)5b 1#)3Q d# "} +,"Scoresbysund":{"value":"++ i{]c)#@m#)/6# C#m%))91 C1//7)%=11+#15%1 %d53\'=1 [ 5\'\'=11#)\':# 313/\')%=)1\'d%3\'=) [ %\'\'=)1^ %5\'=) 8#)\'B# C-}#d%3\'=) [ %\'\'=)1^ %5\'=) "},"Nome":{"value":"+3 RT4et#4i# 5nm>Nn }LDLh#L#)1r&# y##q#)#% y#5(#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% y##x))% y##+)#% y#=(## 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11-)5>#1 X#-de#-5\'=1 D##-%\'=11%K-)\'=11-)7># X#9de#-5\'=1 D##-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"Campo_Grande":{"value" +:"+% (o_c7#8m#)#% dN%f#)5-z1%\'))% \'#)5- 1f/)9% 1+#))b) %\'))% %#)\'% I#)9E 1%#)\'% %#)#B# 1 #)\'B# #)9% 1%+)\'% +\')7% 1j#)7) 1%#)\'^ #)5*# 1%#)%Y #)5*# 1%#)%= #)5b 1%#)#:# #)5^ 1%#)%M #)5v 1%#)%f #)5r 1%#)%E #)5*# 1%#)#B# +/5M= 1\'\'/%^= %#)%M #)59 1%#)%b #)59 1%#)\'% #)5M 1%#)%v #)5- 1%#)%2# \'/5A= 1 7/%^= 3#)7- 1%#)5n 1%#)7) 1%#)5b 1%#)75 1%#)%*# #/5A= 1%G/5^= 1G//%^= %#/%z= %\'/%^= %#/%z= %//%^= \'#/7%= 1 "},"Belem":{"value":"+\' (62F5#8m#)#% Svf#)5-z1%\'))% \'#)5- 1f/)9% 1+#))b) %\'))% %#)\'% I#)9E 1%#)\'% %#)#B# 1 #)\'B# #)9% 1%+)\'% +\')7% 1j#)7) 1%#)\'^ #)5*# 1%#)%Y #)5*# 1%#)%= #)5b 1#)3Q S# "} +,"Ensenada":{"value":")America/Tijuana"},"Jujuy":{"value":")America/Argentina/Jujuy"},"Bahia":{"value":"++ (Ns81#8m#)#% S{#f#)5-z1%\'))% \'#)5- 1f/)9% 1+#))b) %\'))% %#)\'% I#)9E 1%#)\'% %#)#B# 1 #)\'B# #)9% 1%+)\'% +\')7% 1j#)7) 1%#)\'^ #)5*# 1%#)%Y #)5*# 1%#)%= #)5b 1%#)#:# #)5^ 1%#)%M #)5v 1%#)%f #)5r 1%#)%E #)5*# 1%#)#B# +/5M= 1\'\'/%^= %#)%M #)59 1%#)%b #)59 1%#)\'% #)5M 1%#)%v #)5- 1%#)%2# \'/5A= 1 7/%^= 3#)7- 1%#)5n 1#)3&# S#C)5b S53#)%*# #/5A= 1%G/5^= 1G//%^= %#/%z= #)5v S# "} +,"Goose_Bay":{"value":"+5 T4sy9#yi#)#% umw<7#P#)#% umw<7) #))Y11 #)52#1 \')#% umw<7#d)\'># [#\')#% [1d`/+%=!%1``-5\'=!% %7/+E% 177/5)% \')+M [5(##))Y11 #)52#1 &##)%E11-# 1Y!%1 #)3>#1 \')#% [=K7/+E% 177/5)% 53/+A=1133/5)=1 %T#-)\'=11T#C-3\'=1 %0#-5\'=1 r)\'^1 dE`T#-)\'=11T#C-3\'=1 %0#-5\'=1 %#/)%=ec6#1 p-5\'=ec6# l#/)%=ec6#A%h/)%=ec6#1%3/\'A=ec6#13//7%=ec6# \')7% d1]#H#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "},"Virgin":{"value":")America/St_Thomas"},"Pangnirtung":{"value":")America/Iqaluit"},"Phoenix":{"value" +:"+/ PsB$Q#ui# 7j_# 8#-R#\'-\'\'=11\'\'-5\'=1 !##)%E11+)#%ec6# 8###))%ec6# 8#%+#)%E11+)5%ec6# 8##$#)#% 8#1|# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=115)\'v 8## "},"Whitehorse":{"value":"+- i>{yY#]k#)1r X#=j#))Y11 #)52#1 %#)+*#11 #)7% !##)%E11-# 1Y!%1 #)3>#1 t)#% X#) #-)\'= A #-5\'=1 \')%2# H##[)#% H#=T## 1Y!%1 #)3>#1 :#S-)\'=11SH#-5\'=1 pp/)%=11% /\'A=11 /7%=1 W)7% 8## "},"Montreal":{"value":")America/Toronto"},"Argentina/San_Juan":{"value":"+9 $(ia=#Dk#)5B# (_2i;#0#)+% d#K)9% dn #)9% 1%#))% #)5^ 1%C)\'% C?)7% 1%#)/% 1%#)-^ #)5^ 1)#)1% #)5^ 1-#)\'% #)5% 1f#)5% #)9^ 1%+)\'% ++)5^ 1%#))) \'/5%= 1 \'/)%= #)55 S=+\'/5%= 1 \'/)%= 5#)#!# 1 #)+% Y#)9% 1%3/\'%= 3//5^= 1%)\'% d##)+= S1/#)9% 1%3/\'%= 3//5^= 1=#/5%= 1#)5- d-K3/\'%= 9#/5%= 1%#)\'- #)\'- S#3)+B# d##)/*# S13#)\'- =#)9># 1%\'/\'^= \'#/5^= 1#)5j S# "} +,"Indiana/Winamac":{"value":"+1 <,0VE#ui# 7jV# (#5R#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% (#1 [-)\'=11[C-3\'=1 %\'-5\'=1 %/-3\'=1 \'))>#1 t#C)#% t1(## 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11))#% t#T#)))1 (#5e#e#-5\'=1 @#K-)\'=11%p/)%=11% /\'A=11 /7%=1 #)\'M1 t1i#e#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "},"Argentina/ComodRivadavia":{"value":")America/Argentina/Catamarca"},"Boa_Vista":{"value":"++ yZ@!;#8m#)#% dvf#)5-z1%\'))% \'#)5- 1f/)9% 1+#))b) %\'))% %#)\'% I#)9E 1%#)\'% %#)#B# 1 #)\'B# #)9% 1%+)\'% +\')7% 1j#)7) 1%#)\'^ #)5*# 1%#)%Y #)5*# 1%#)%= #)5b 1#)3Q d#O)3># d9\'#)\'% #)5M 1%#)%v #)5- 1%#)%2# \'/5A= 1%)5^ d# "} +,"Grenada":{"value":")America/Puerto_Rico"},"Argentina/Tucuman":{"value":"+7 Lu4};#Dk#)5B# (_2i;#0#)+% d#K)9% dn #)9% 1%#))% #)5^ 1%C)\'% C?)7% 1%#)/% 1%#)-^ #)5^ 1)#)1% #)5^ 1-#)\'% #)5% 1f#)5% #)9^ 1%+)\'% ++)5^ 1%#))) \'/5%= 1 \'/)%= #)55 S=+\'/5%= 1 \'/)%= 5#)#!# 1 #)+% Y#)9% 1%3/\'%= 3//5^= 1%)\'- d##)5r S1/#)9% 1%3/\'%= 3//5^= 1=#/5%= 1#)5- d-K3/\'%= 9#/5%= 1%#)\'- #)\'- S#3)-% d##)-U S13#)\'- =#)9># 1%\'/\'^= \'#/5^= 1 "},"New_York":{"value":"+- eTwq?#ui# 7jN# t)R#\'-\'\'=11\'\'-5\'=1 \')#% t1 #-\'\'=11 #-5\'=1 %}#-)\'=11}#L#-3\'=1 Q)#% t5(#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% t50##-\'\'=11 #-5\'=1 %}#-)\'=11}#L#-3\'=1 %O-5\'=1 \')#% tI|# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "} +,"Nuuk":{"value":"++ 0c6*7#@m#)/6# S#m%))91 S5//\')%=)1+# 5%) %d%3\'=) [ %\'\'=)1^ %5\'=) 4# \'.#) C## 5:#) C-y#d%3\'=) [ %\'\'=)1^ %5\'=) "},"Merida":{"value":"+) qoq4G#Xm# #%Q (##X%)9.#1 t#\')7)1 (#AH##)%Q 1 #)/># !%3/)%=1133-5\'=1 %#/+%=11 #-3\'=1 %t/)%=11tt-5\'=1 "},"Rosario":{"value":")America/Argentina/Cordoba"},"St_Kitts":{"value":")America/Puerto_Rico"},"Fort_Nelson":{"value":"+- aF,>U#yi#)#% H#=N##))Y11 #)52#1 &##)%E11-# 1Y!%1 #)3>#1 %i#-)\'=11i##)3:#1 #)#% H##\')#% H#1\'i#-)\'=11i##)3:#1 %[-3\'=1 %y#-5\'=1 n)#% H#5WS-)\'=11SH#-5\'=1 pp/)%=11% /\'A=11 /7%=1 C)\'A1 8## "} +,"Caracas":{"value":"+- Te.B=#4k#)#% e0}@=#|)%Q l#@%)#% d#q#)9E9 l#G)+%5 d# "},"Guadeloupe":{"value":")America/Puerto_Rico"},"North_Dakota/New_Salem":{"value":"+\' iJ4gK#ui# 7j_# 8#MR#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11%p/)%=11-)5.#1 (#5X#e#-5\'=1 @#K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"Shiprock":{"value":")America/Denver"},"Winnipeg":{"value":"+\' 8Z0oI#(k#)/b (#&#:##))!# 1 #)3f )#))Y11 #)52#1 n#)+b11 #)3.#1 5#)%E11-# 1Y!%1 #-3\'=1 %#)+Q11 #)5U1 %+-)\'=11++-3\'=1 %#)+%11 #)3>#1 %G-)\'=11G?-3\'=1 %#-5\'=1 %#-3\'=1 -#-)\'=11 #)3z1 -t5)\'=11te#55\'=1 ll7)%=11\')#% (#5H#S-)\'=11SH#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "} +,"Toronto":{"value":"+- ],y!C#Hk#)#% t)!##))Y11 #)52#1 \')#% tU #)\'>#&%1 #)5.# %#)+)11 #)3.# %#)+^11 #)3^1 %\'/+A=11\'3/3^=1 +//+%=11 K/3*#=1 GG/)*#=11%+-)\'=11+\'-3\'=1 /1%E1 t5(##))Y11 #)52#1 &##)%E11-# 1Y!%1 #)3>#1 \')#% t9C+-)\'=115/-3\'=1 +4#-)\'=11(#\'-7\'=1 %7-3\'=1 %d-5\'=1 \')#% t=<## 1Y!%1 #)3>#1 :#S-)\'=11SH#-5\'=1 pp/)%=11% /\'A=11 /7%=1 "},"Los_Angeles":{"value":"+) 0Z2BS#ui# 7jg# H#5R#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 \')#% H#5)#)\'Y4!28\'1%#)#%1 %d-)\'=)1dO-3\'=1 %3-5\'=1 \')#% H#I|# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "} +,"Argentina/Buenos_Aires":{"value":"+/ ({LR9#Dk#)5B# (_2i;#0#)+% d#K)9% dn #)9% 1%#))% #)5^ 1%C)\'% C?)7% 1%#)/% 1%#)-^ #)5^ 1)#)1% #)5^ 1-#)\'% #)5% 1f#)5% #)9^ 1%+)\'% ++)5^ 1%#))) \'/5%= 1 \'/)%= #)55 SA+\'/5%= 1 \'/)%= 5#)#!# 1 #)+% Y#)9% 1%3/\'%= 3//5^= 1=#/5%= 1#)5- d-K3/\'%= 9#/5%= 1%#)\'- #)\'- S5\'#/5%= 1%#)\'- =#)9># 1%\'/\'^= \'#/5^= 1 "}},"Etc":{"GMT+9":{"value":"+# X## "},"GMT+8":{"value":"+# H## "},"GMT-1":{"value":"+# 1# "},"GMT-0":{"value":")Etc/GMT"},"GMT-5":{"value" +:"+# r# "},"GMT-4":{"value":"+# b# "},"GMT-3":{"value":"+# Q# "},"GMT-2":{"value":"+# A# "},"GMT-9":{"value":"+# V## "},"GMT-8":{"value":"+# F## "},"GMT-7":{"value":"+# 6## "},"GMT-6":{"value":"+# &## "},"GMT+3":{"value":"+# S# "},"GMT+2":{"value":"+# C# "},"GMT+1":{"value":"+# 3# "},"GMT+0":{"value":")Etc/GMT"},"GMT+7":{"value":"+# 8## "},"GMT+6":{"value":"+# (## "},"GMT+5":{"value":"+# t# "},"GMT+4":{"value":"+# d# "},"GMT":{"value":"+# # "},"Universal":{"value":")Etc/UTC"},"UCT":{"value":")Etc/UTC"},"Zulu": +{"value":")Etc/UTC"},"GMT0":{"value":")Etc/GMT"},"GMT+10":{"value":"+# i## "},"GMT+12":{"value":"+# ,%# "},"GMT+11":{"value":"+# y## "},"Greenwich":{"value":")Etc/GMT"},"GMT-12":{"value":"+# *%# "},"GMT-11":{"value":"+# w## "},"GMT-10":{"value":"+# g## "},"GMT-14":{"value":"+# J%# "},"GMT-13":{"value":"+# :%# "},"UTC":{"value":"+# # "}},"Africa":{"Nairobi":{"value":"+- s4,u/#}k#)+% I#t)/% Q#+)#5 I#;)9B#eP#9 %8#)5%9 S#)/*#)1%#)/Q)1%3)+%)1%#)+9)1%3)+%)1%`5)\'5 1`K-5%5 %#)3z %#/3)5 %#-3%5 %#)1v %#)1M #)3I 1 #-5%5 1#)+b 1 #)-2# #)1% 1 #-5%5 E -)\'5 1 -7%5 "} +,"Mbabane":{"value":")Africa/Johannesburg"},"Kigali":{"value":")Africa/Maputo"},"Tunis":{"value":"+\' k$J2%#mi#)+Q _N&O#@#)\'M 1*#6##1)^!%1 #17j!% %#1%*#!%1%#)59 %#)\'E 1 #)7)9 %#)\':#11 #))f1 #))*#11 #)511 %\'/)%%11\'#)5A %#)3b F##1)># 1 #13&# %#1+% 1 #15% I#1-% 1 +53\'= \'#1\'.# 1%#1+% 1^#1+% 1 #13>#) %+5\'\'=11++55\'=1 "},"Tripoli":{"value":"+3 N*$o%#Pm#)#% 19B##)5Y11%#)#% %#)5E11%#)#% %#)3># 1%#)#% /)#% A#$#)#% 1A0##)#% .#+))% 1+/)5% #))9 1%#))1 1 #)5- %+))% 1++)5% \')+1 A#;)3># 11G+))% 1++)5% A#))1 1 #)51 #)51 A#`)7I1 11`#))1 1 #)51 b#-\'\'5)1 #-5\'51 #)5*#1 A# "} +,"Banjul":{"value":")Africa/Abidjan"},"Windhoek":{"value":"+- Z$__\'###)-% 1 #)3% %#)-% 1 #)1v %#)+) 1 #)1A %#))- 1 #)/B# %\'-)\'=11\'#)/r9 #)1r11 #)3>#9 %#)/=9 #)1I11 7-5\'=9 33-\'\'=113#)-6#9 #)1)11%#)-Y9 #)/n11%#)-59 #)/I11%#)+v9 #)/)11%#)+U9 #)-f11#)56#9 1z77-5\'=9 33-\'\'=11\'#)+v9 #)/)11%#)+U9 #)-f11%#)+593 #)-E1 %#))n93 #)+B#1 %#))M93 #)+b1 %#)\'2#93 #)+A1 %#)\'n93 #))!#1 %#)\'I93 #))Y1 %#)%!#93 #))91 %#)%^93 #)\'z1 #)3r1 # "} +,"Ouagadougou":{"value":")Africa/Abidjan"},"Douala":{"value":")Africa/Lagos"},"Brazzaville":{"value":")Africa/Lagos"},"Porto-Novo":{"value":")Africa/Lagos"},"Dar_es_Salaam":{"value":")Africa/Nairobi"},"Addis_Ababa":{"value":")Africa/Nairobi"},"Lome":{"value":")Africa/Abidjan"},"Kampala":{"value":")Africa/Nairobi"},"Bujumbura":{"value":")Africa/Maputo"},"Casablanca":{"value":"+- qJkZ##4m#)5.# ^.##)3Q 1 #)7n %#)%*# 15#)7j 5#)-M 1 #)5:# f#)-- #)5% =#)-&# 1 #)3% )\')+% 1\'#)1% %#)36# %#)-% 1 #)11 ;)\'b 1#+)#% 6#C#)-% 1 #)11 >##)-% 1 #)3% %#)-% 1 #)1v %#)+) 1 #)1A %#))- 1 #)/B# %\'-)\'=11\'#)/r9 #)1r11 #)3>#9 %#)/=9 #)1I11 7-5\'=9 33-\'\'=113#)-6#9 #)1)11%#)-Y9 #)/n11%#)-59 #)/I11%#)+v9 #)/)11%#)+U9 #)-f11#)56#9 1z77-5\'=9 33-\'\'=11\'#)+v9 #)/)11%#)+U9 #)-f11%#)+593 #)-E1 %#))n93 #)+B#1 %#))M93 #)+b1 %#)\'2#93 #)+A1 %#)\'n93 #))!#1 %#)\'I93 #))Y1 %#)%!#93 #))91 %#)%^9" ++"3 #)\'z1 #)3r1 # "},"Luanda":{"value":")Africa/Lagos"},"Maseru":{"value":")Africa/Johannesburg"},"Kinshasa":{"value":")Africa/Lagos"},"Blantyre":{"value":")Africa/Maputo"},"Lusaka":{"value":")Africa/Maputo"},"Dakar":{"value":")Africa/Abidjan"},"Harare":{"value":")Africa/Maputo"},"Khartoum":{"value":"+) Vwq{-#}m#)#% A1c##)+% 1 `)5^ [#))># 1%W-)\'= 1`)#^&# Q#h)7% A# "},"Johannesburg":{"value":"+\' s40!-## 1%W-)\'= 1`)#^&# Q#x)%% A# "},"Timbuktu":{"value":")Africa/Abidjan"},"Niamey":{"value":")Africa/Lagos"},"Monrovia":{"value":"+) L8B>%#qi#)#% L8B>%#]#)\'% u8eD%#@%)#= # "}},"Pacific":{"Kwajalein":{"value":"+/ {mBsh#ak#)#% w##X#)#% g##3))% V##/)%9 w##,#)5% ,%#(#)1v *%# "},"Pago_Pago":{"value":"+\' gk!Xr##11q###)+v&# q#5`\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 +)-A1 i## "} +,"Rarotonga":{"value":"+) _*qwv#Xk#)9.# qwe8f#@%)5b q##0#)7Q i#- #)7Q )%S/\'%= SO-5\'= ) "},"Yap":{"value":")Pacific/Chuuk"},"Fakaofo":{"value":"+\' 44ocj#ak#)#% y##m))9># :%# "},"Port_Moresby":{"value":"+\' FNLT`#ii#)#% gB.T`#`)#% g## "},"Palau":{"value":"+\' ik4B&##4g#)9B# g6DoY#P%)#% V## "},"Easter":{"value":"+) i._JO#4k#)#% i._JO#q#)3% 8#M73)3% 1/3))% V## 7-A1%# \'>#9 # 7!#A1%# \':#9 %# \'Y9 \'+\'5E=A1 [\'\'E=9 W# 3>#A1%W\'5E=A15 \'Y9 (#6#K[\'\'E=9 W# 3>#A1%W\'5E=A1 # )Q9 %+\'\'E=9 +\'\'5E=A1%# 3bA1%7\'\'E=9 7;\'5E=A1 # \'>#9 %#\'\'E=9 # 32#A1%# )19 O\'5E=A1K?\'\'E=9 %# \'>#9 %#\'\'E=9 %#\')%=9 %#\'+)=9 #\'1b=A1%+\')!#=9 ++\'3)=A1)+\'+E=9 ++\'1E=A1% \'))=9 +\'3)=A1%#\'3E=A1% \'3)=A1 "} +,"Tahiti":{"value":"+% <@.(b#0m#)5% i## "},"Samoa":{"value":")Pacific/Pago_Pago"},"Wallis":{"value":")Pacific/Tarawa"},"Johnston":{"value":")Pacific/Honolulu"},"Chatham":{"value":"+\' ke>@p#8i#)7) _o:Fp#H\')#% FN8!tE6##77%=m:HH)1%#5%\'=m:HH) W55\'=m:HH)1SW7\'%=m:HH) #75A=m:HH)1%d75%=m:HH)1dh7\'^=m:HH) 53\'=m:HH)1% 7)%=m:HH) "},"Ponape":{"value":")Pacific/Pohnpei"},"Bougainville":{"value":"+- gJ>Bd#ii#)#% gB.T`#`)#% g##(%)/% V##/)1v g##$\')96#1 w## "},"Galapagos":{"value":"+\' $k8kh#Tm#)#^ !%#x)1:# V##/)3A !%#P#)%I1 *%# "},"Guam":{"value":"+- uyy.!##4g#)9B# Z(]$`#P%)#% g##i#)9I V##/)/B# g#Y^#)-2#11)#)#:#1 9#)3%11)#)#.#ec6# #)-z11 #)1B#1 %\'-)\'=11\'\'/3%=1 )#)9b11%#)% )#)+.#11 #)1z4!28\' %#)) #)16#1 $#)9!# g## "} +,"Wake":{"value":")Pacific/Tarawa"},"Apia":{"value":"++ R}mBr## :%5\'#-3\'= 1%#/)%9A #-3\'991%G/)%=A GC-3\'=91 "},"Niue":{"value":"+\' yooHj#uo#)5b (__Jj#S)/% y## "},"Truk":{"value":")Pacific/Chuuk"},"Marquesas":{"value":"+% @6qu[#0m#)5% a## "},"Saipan":{"value":")Pacific/Guam"},"Kiritimati":{"value":"+) 8{eed#ak#)#% Hk$>f#H\')5% i##`)9B# J%# "},"Pohnpei":{"value":")Pacific/Guadalcanal"},"Efate":{"value":"+% cy&*j#0m#)#U w#9_%# 9z%# \'>#&# EC/3!#= 1??/\'!#= %\'/#!#= \'#/5!#= 1 "} +,"Norfolk":{"value":"+/ B0Z!j#ak#)#% !N.Y=z#1#%11 #5\'\'=1 *##1#%11 #5\'\'=1 #132#11%\'5\'\'=1 \'#15-11#)/% N>N.YEB##55\'=11%#7\'%=1 A#55\'=11%#7\'%=1 =#17f11%#7\'%=1 Y#19-11%+5\'\'=1 +\'55\'=11 "},"North":{"value":")Australia/Darwin"},"Yancowinna": +{"value":")Australia/Broken_Hill"},"Victoria":{"value":")Australia/Melbourne"},"Adelaide":{"value":"+) {@mc[#Hk#)%% V##3)+% _#=j#1#%11 #5\'\'=1 *##1#%11 #5\'\'=1 #132#11%\'5\'\'=1 \'#15-118#)#% _#^ [55\'=11%#15n11%t55\'=11T##1%2#1 %S7\'%=1 %37\'^=1 %#1\'-1 %#1\'z1 %#1\'=1 %#1\'r1 %K5\'\'=1 %#1))1 %#5\'\'=1 % 7)%=1 75%=11 "},"Queensland":{"value":")Australia/Brisbane"},"Canberra":{"value":")Australia/Sydney"},"Broken_Hill":{"value":"+- &w(@^#Hk#)%% g##\')1!# V##/)+% _#=j#1#%11 #5\'\'=1 *##1#%11 #5\'\'=1 #132#11%\'5\'\'=1 \'#15-118#)#% _#M [55\'=11W#1%2#1 %C7\'%=1 %#7)%=1 %+7\'%=1 %/7\'^=1 /#15n11%S55\'=11G77\'%=1 %G5\'\'=1 7#51\'=11#)#% _#=Wt55\'=11W#1\'r1 %K5\'\'=1 %#1))1 %#5\'\'=1 % 7)%=1 75%=11 "} +,"Currie":{"value":")Australia/Hobart"},"Lord_Howe":{"value":"+) &w}*f#Hk#)%% g##i\')\'% o#- /-5\'=11+//\'%=1 #-5\'=1)#)/% o#Y3/-5\'=11+//\'%=1 #-5\'=1)%//\'^=1 /#)5n1)%S-5\'=1)G7/\'%=1 %G-\'\'=1 7#-1\'=1)%;-5\'=1)\'#/)%=1 %#-\'\'=1 % /)%=1 /5%=1) "},"NSW":{"value":")Australia/Sydney"},"South":{"value":")Australia/Adelaide"},"Sydney":{"value":"+\' .wFHb#Hk#)%% g#=z#1#%11 #5\'\'=1 *##1#%11 #5\'\'=1 #132#11%\'5\'\'=1 \'#15-118#)#% g#b [55\'=11W#1%2#1 %C7\'%=1 %#7)%=1 %+7\'%=1 %/7\'^=1 /#15n11%S55\'=11G77\'%=1 %G5\'\'=1 7#51\'=11%;55\'=11\'#7)%=1 %#5\'\'=1 % 7)%=1 75%=11 "} +,"LHI":{"value":")Australia/Lord_Howe"},"West":{"value":")Australia/Perth"},"Brisbane":{"value":"+\' 2,@mb#Hk#)#% g#=z#1#%11 #5\'\'=1 *##1#%11 #5\'\'=1 #132#11%\'5\'\'=1 \'#15-118#)#% g#1 #55\'=11%#5%\'=1 f+55\'=11\'+7\'%=1 "},"Darwin":{"value":"+\' o:D&Y#Hk#)%% V##3)+% _#=j#1#%11 #5\'\'=1 *##1#%11 #5\'\'=1 #132#11%\'5\'\'=1 \'#15-11 "},"Melbourne":{"value":"+\' BDi(`#Hk#)%% g#=z#1#%11 #5\'\'=1 *##1#%11 #5\'\'=1 #132#11%\'5\'\'=1 \'#15-118#)#% g#Y [55\'=11W#5%\'=1 %S7\'%=1 %37\'^=1 3\'75^=11%O55\'=11C/7\'%=1 %K5\'\'=1 7#51\'=11%;55\'=11\'#7)%=1 %#5\'\'=1 % 7)%=1 75%=11 "} +,"Lindeman":{"value":"+) JaDy`#Hk#)#% g#=z#1#%11 #5\'\'=1 *##1#%11 #5\'\'=1 #132#11%\'5\'\'=1 \'#15-118#)#% g#1 #55\'=11%#5%\'=1 f+55\'=11\'+7\'%=1 #)/% g#) \'55\'=11 \'7\'%=1 "}},"Europe":{"London":{"value":"++ ei(\'#@g#)9% Z%!\'#1+v11 #15%1 %#1)A11 #13f1 %#1\' #13>#1 %#1\'>#11 #13:#1 %#1\'6#11 #15*#1 %#1)-11 #15-1 %#1\'.#11 #15A1 %#7)b=11 \'73b=1 #7)E=11%\'7)b=11\'W75)=1 O#7)E=11%\'7)b=11%#7)E=11%\'7)b=11%#7)E=11%#7)b=11%#7)E=11%\'7)b=11%#7)E=11%#7)b=11 #77b=1 %#7%!#=11%#7+)=)A +71E=)1\'+7))=)A #73b=)1%#7))%)A #7/E=)1 \'75)=1 #7)E=11%#1\'b11 #1)U)A #11I)1 #17)1 %#1\'Y11 #15B#1 %#1)-11 #15>#1 %+7)Y=11++75v=1 %#7)b=11 ?75)=1 ;#7)E=11%\'7)b=11%#7)E=11%\'7)b=11%#7)E=11%+5\'\'=11+?75!#=1 3/7\'n=11%#1%j11#)52# 1#/ 5B#1 =K?75!#" ++"=1 #1%j111C7\'b=11CC75!#=1 %[%\'\'=)1[C\'5!#=) %7\'5z=) \')#% -hd%3\'=) [ %\'\'=)1^ %5\'=) "},"Brussels":{"value":"+3 Fs.x#ii#)#% Fs.x#S)+%4JVK #|)7A 1#+)+% 11 #))>#!%1 #)5%) %\'7)^%11\'\'73^%1 # 7Mz :# #1\'E 1 \'75%9!% #1\'%!%1%#1%Y!%1 #15!#!% %#1\'Y!%1 #15*#!% %#1\'*#!%1 775%9!% 3#1)v!%1%#1\':#!%1%#1)1!%1%#1)f!%1%#1)E!%1%#1)Y!%1 K75)=1 G#1)v11%#1)U11%#1)n11%#1)-11%#1\'.#11%#1)A11%#1\'B#11%#1)n11%#1)111%#1\'2#11%#1)b11 #17n1 %#1%*#11#1+r1 1A$#\'7)^%11\'\'73^%1 z#1)%11)#17)1 %#1\':#11 #1511 %\'7)%%11\'#15)1 #)3- 193#1%*#111#13f1 %#1))11 #13b1 %#1+n11 #15=1 D#)#% 19 /\')%=)1/#%3\'=) %# 5%) %d%3\'=) [ %\'\'=)1^ %5\'=) "} +,"Warsaw":{"value":"+3 wF,P)#ii#)#% wF,P)#T#)15 11%#))>#!%1 #)5%) %\'7)^%11\'\'73^%1 #)3b9 A) \'13b1 #1)^11/)-% 1)3\'13b1 #1)^11x)-!#1 1A$#\'7)^%11\'\'73^%1 z#1)%11)#17)1 %#1\':#11 #1511 %\'7)%%11\'#15)1 #)5% 1r0#\'13b1 #1)^11*##1)-11 #)511 %#)):# 1 #)7% %#1)Y 1 #15=1 %#1+111 +75%=1 \'#1)j11%#1)I11A#1-))1 \'53\'=) #1\'>#)1%#1+B#)1 +75%=) \'#1)-)1%/5+\'=)1++53\'=) W)#% 15 /7)%=)1/#53\'=) %#15%) %d53\'=) [ 5\'\'=)1?)#% 11O/\')%=)1\'d%3\'=) [ %\'\'=)1^ %5\'=) "},"Jersey":{"value":")Europe/London"}, +"Istanbul":{"value":"+; kia4-#ii#)#% !i>:-#@#)5% AV#9#)+% 1 #)5% 1#)\'6# 1 #)5*# %#))- 1 #)5- %#)\'.# 1 #)5A )#)+U 1 \')5% #)+% 1^#)/% 1 #)59 #)9% 1%#)3v %#))% 1-#)5A %#)-% 1 #)5% %\'/)b= 1\'3/5)= +#))I 1%#))b 1%#))z 1M#)/^ 1%#)5># %#)+^ 1 #)5% E#)--)1 //5B#=1 +#)\'B#11%#)\'z11%#)\'v11%\'/)%=11\'\'/5^=1 #)-:# #)-:# Q=7//5B#=1 #)\'v11%\'/)%=11\'\'/5^=1 #)-:# 5#)/B#11 #)5)1 \')7%1 AE\'#)/B#11 #)5)1 )#1)r)1 #136#) %?5\'\'=)1?G53\'=) \'#1\'r)1%O5\'\'=)1KK55\'=) \')#% A-8#d%3\'=) [ %\'\'=)1^ %5\'=) ` \'2#) A## \'6#) A-H#d%3\'=) [ %\'\'=)1^ %5\'=" ++") l \'>#) A## \'B#) A-T#d%3\'=) [ %\'\'=)1^ %5\'=) p 5*#)1A## 7A) A-X#d%3\'=) [ %\'\'=)1^ %5\'=) t)3= Q# "},"Luxembourg":{"value":")Europe/Brussels"},"Zaporozhye":{"value":")Europe/Kyiv"},"Guernsey":{"value":")Europe/London"},"Isle_of_Man":{"value":")Europe/London"},"Kaliningrad":{"value":"+/ .V2F)#@k#))% 1M!##))>#!%1 #)5%) %\'7)^%11\'\'73^%1 z#1)%11)#17)1 %#1\':#11 #1511 %\'7)%%11\'#15)1 %#13b1 #))I A9\'#1)-11 #)511 %#)):# 1 #)7% %#1)Y 1 #15=1 #))= QA,##)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11v1\'.#1 A1C/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 Q#/15.#1 A# "} +,"Bucharest":{"value":"+/ c4HX+#8k#)5% c4HX+#i#)/&# A=%#1+v 1 ?75%= ;;7))= 1g##)+2# 1 #-3\'= %#))5!%1 #-3\'=) \'1\':#1 A-3/7)%=11\'d53\'=1 [ 5\'\'=11K)#% A1O#))5!%1 #-3\'=) M+5\'\'= 1++53\'= \')#% A1h//)%= 1\'d-3\'= [ -\'\'= 1^ -5\'= \')#% A-ld%3\'=) [ %\'\'=)1^ %5\'=) "},"Malta":{"value":"+) V!2,\'#@k#)7) 1N#!##)-1 1 \')5% #))% 1%#)\'I 1 #)5= %#)\') 1 #)55 %#)\'v 1 #)3n r#)-^ 1)#17)1 %#1\':#11 #1511 %#1))11 #13f1 %#)))11 #)3^) %#1\'f11 #1591 %#1\'b 1 #155 %#1%:#11 #15-1 j+7+z= 1+#)3*# %+73z= #1-% 1%#1+B# 1 #53\'= %\'7+z= 1\'#53\'= %#15% %#1-- 1 \'53\'= %)\'B# 1= #1\'B# 1 #13:# %#1)v 1 #13b %3/)^=1137/3^=1 #)\'B#11\')#% 113/\')%=)1\'d%3\'=) [ %\'\'=)1^ %5\'=) "} +,"Busingen":{"value":")Europe/Zurich"},"Skopje":{"value":")Europe/Belgrade"},"Sarajevo":{"value":")Europe/Belgrade"},"Rome":{"value":"+- kP,a%#0i#)9Q kP,a%#4# 5B#!% 1U!##)-1 1 \')5% #))% 1%#)\'I 1 #)5= %#)\') 1 #)55 %#)\'v 1 #)3n r#)-^ 1)#17)1 %#1\':#11 #1511 #)3I 15\'#17)1 %#1\':#11 #1511 %\'7)%%11\'#15)1 #)-1 1>#\'#1\':#11 #1511 %#1))11 #13f1 %#)))11 #)3^) %#1\'f11 #1591 %#1\'b 1 #155 %#1%:#11 #15-1 j+7+z= 1+#)3*# %+73z= #1-% 1%#1+B# 1 #53\'= %\'7+z= 1\'#53\'= %#15% %#1-- 1 \'53\'= #1+.# 1%#1-% 1 +53\'= \'#1+># 1%+7+z= 1\'#15% %#13># \')#% 15//\')%=)1+# 5%) %d%3\'=) [ %\'\'=)1^ %5\'=) "} +,"Mariehamn":{"value":")Europe/Helsinki"},"Zurich":{"value":"+) !L0o##Xg#)/b F2FX##m#)-% 1)&%\'/+%%)1\'\'/5%%1 e#)#% 113/\')%=)1\'d%3\'=) [ %\'\'=)1^ %5\'=) "},"Saratov":{"value":"+3 :XHs3#Lm# /% Q#O)-v bAG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11z1\'2#1 Q-?/))% 1 O53\'=1 K,#5\'\'=11n1\'B#1 b#\'1\':#1 Q1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 b#/15.#1 Q#+1911 b# "},"Gibraltar":{"value":"+) 06i.##ii#)1) B%V##1+v11 #15%1 %#1)A11 #13f1 %#1\' #13>#1 %#1\'>#11 #13:#1 %#1\'6#11 #15*#1 %#1)-11 #15-1 %#1\'.#11 #15A1 %#7)b=11 \'73b=1 #7)E=11%\'7)b=11\'W75)=1 O#7)E=11%\'7)b=11%#7)E=11%\'7)b=11%#7)E=11%#7)b=11%#7)E=11%\'7)b=11%#7)E=11%#7)b=11 #77b=1 %#7%!#=11%#7+)=)A +71E=)1\'+7))=)A #73b=)1%#7))%)A #7/E=)1 \'75)=1 #7)E=11%#1\'b11 #1)U)A #11I)1 #17)1 %#1\'Y11 #15B#1 %#1)-11 #15>#1 %+7)Y=11++75v=1 %#7)b=11 ?75)=1 ;#7)E=11%\'7)b=11%#7)E=11#))Y1 1#,#)#% 117/\')%=)1\'d%3\'=) [ %\'\'=)1^ %5\'=) "} +,"Vaduz":{"value":")Europe/Zurich"},"Tiraspol":{"value":")Europe/Chisinau"},"Ljubljana":{"value":")Europe/Belgrade"},"Berlin":{"value":"++ V:oq%#@k#))% 1M!##))>#!%1 #)5%) %\'7)^%11\'\'73^%1 z#1)%11)#17)1 %#1\':#11 #1511 %\'7)%%11\'#15)1 %#13b1 #)+ 1- #)+A #)3[ #17j1 \')#% 1A #1)Y11 #15=1 %+75%=1 +#1)991 #1+M1A #)-:#91%#1)j11%#1)I11D#)#% 15//\')%=)1+# 5%) %d%3\'=) [ %\'\'=)1^ %5\'=) "},"Moscow":{"value":"+7 !DT&1#ii#)#% !DT&1#X#)/- >V*,1=%#)/%!%1 #)96# %#)+B#w#A #)3b)1%#)+B#!%A # /% 1 #)1b # /% QE\'#)+B#w#A #)3b)1%#)+B#!%A # /% 1 #)1b )#)%Y!%1 #)\'r!%A #)3% 1 #)5% #)5% Q=+#)+B#!%A # /% 1 #)1b )#)%Y!%1 #)\'r!%A #)3% 1 #)5% \')5% A#C)-v QAG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11n1\'B#1 A-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 Q1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 b#/15.#1 Q# "} +,"Chisinau":{"value":"+7 2#!%1 #)5%) %\'7)^%11\'\'73^%1 #)#% 1- \'))^11\'+/3^%9 #))511x))=!% 1=\'#1)%11)#17)1 %#1\':#11 #1511 %\'7)%%11\'#15)1 %#13b1 #)#% 1j4#+/3^%9 #))511*##)+%!%1 #)7%) %#1\'B#11 #)5=1 %+7)1=11++75%=1 5#)+!# 1 #)5- %#)+z11 #)5)9 %\'/-%=11\'\'-3\'=9 !##))9 1 #)36#) %+-\'\'= 1++-3\'=) \')#% 11?/\')%=)1\'d%3\'=) [ %\'\'=)1^ %5\'=) "} +,"Zagreb":{"value":")Europe/Belgrade"},"Helsinki":{"value":"+) _B,B+#ai#)+B# _B,B+#u#)+% A1v#))- 1 #)51) c#\'-\'\'=11\'\'-3\'=9 \')#% A1;/\')%=)1\'d%3\'=) [ %\'\'=)1^ %5\'=) "},"Paris":{"value":"+/ _N&O#8k#)\'b _N&O#t)\'M >#5#1-Y!%1 /75%=!% +#1\'&#!%1%#1\'E!%1%#1\'%!%1%#1%Y!%1 #15!#!% %#1\'Y!%1 #15*#!% %#1\'*#!%1 d75%9!% `#1+.#!%1%#1\':#!%1%#1)1!%1%#1)f!%1%#1)E!%1%#1)Y!%1%#1)r!%1%#1)Q!%1%#1)j!%1%#1))!%1%#1\'*#!%1%#1)=!%1%#1\'>#!%1%#1)j!%1%#1)-!%1%#1\'.#!%1%#1)^!%1 #17j!% %#)%*#11#)-Y!% 1A$#\'7)^%11\'\'73^%1 z#1)%11)#17)1 %#1\':#11 #1511 %\'7)%%11\'#15)1 #)1*# 9\'#)\':#1A #)5191%#))-1A #)5A)1%#)))1A #)3b9 #)3b9 19\'#))-1A #)5A)1%#)))1A #)3b9 B##)\'6#)1 #)3.#) \')#% 19 /\')%=)1/#%3\'=) %# 5%) %d%3\'=) [ %\'\'=)1^ %5\'=) "} +,"Simferopol":{"value":"+? 6c>>/#ii#)#% :@@#1 b##15.#1 Q# "},"Sofia":{"value":"+5 gJ{})#ii#)#% !i>:-#[)7># A#,%)7)9 1=+#1)%11)#17)1 %#1\':#11 #1511 %\'7)%%11\'#15)1 %#13b1 #)#% 1##)))9 A#P#)\'B#!% A5 #)\'B#!%1 #)5%) %+/)%9!%1+#)3:#) %#)32#1 \')3.#9 A-7/7)%=11\'d53\'=1 [ 5\'\'=11K)#% A1[//)%= 1\'d-3\'= [ -\'\'= 1^ -5\'= \')#% A-ld%3\'=) [ %\'\'=)1^ %5\'=) "} +,"Prague":{"value":"+/ J4B*\'#Lg#)#% J4B*\'#m#)5% 1M*##))>#!%1 #)5%) %\'7)^%11\'\'73^%1 z#1)%11)#17)1 %#1\':#11 #1511 %\'7)%%11\'#15)1 %#13b1 #)+E 11 #7)%%11 #15%1 %#1+911 /75%=1 -)9%931#\')%!#1 11\'#1+911 /75%=1 +\'7)^=11%#1)E11@#)#% 15+/\')%=)1+# 5%) %d%3\'=) [ %\'\'=)1^ %5\'=) "},"Samara":{"value":"+5 J,{e5#Lm# /% Q#O)-v b#7)#2# bA[#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11v1\'.#1 Q-C/))% 1 O53\'=1 K,#5\'\'=11n1\'B#1 A-K/))% 1 O53\'=1 K,#5\'\'=11n13:#1 Q##)5r9 b1K/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 #1\'6#1 Q-0#O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 b# "} +,"Copenhagen":{"value":")Europe/Berlin"},"Vienna":{"value":"+1 V*.P\'#@k#))% 11!##))>#!%1 #)5%) %\'7)^%11\'\'73^%1 +)#% 1) #1)511 #13U1 t1)%1 1E$#\'7)^%11\'\'73^%1 z#1)%11)#17)1 %#1\':#11 #1511 %\'7)%%11\'#15)1 %#13b1 #1))111##1)Q1 1#\')#% 1E0##1)511 #13U1 .##1)Y11 #15=1 %\'75%=1 \'#1)911%#1)j11F##))9 1 #)36# \')#% 113/\')%=)1\'d%3\'=) [ %\'\'=)1^ %5\'=) "},"Tirane":{"value":"+) *,Z8)#8m#)#% 1#0#)-b 1*# #)-b 1)#)7)9 %#)\':#11 #))I9 B##)+1 1 #)5) %#)+% 1 #)5) %#)+) 1 #)5- %#)+A 1 #)5) %#)+9 1 #)5% %#)+5 1 #)3># %#)+- 1 #)51 %#)).# 1 #)32# %#)+) 1 #)5- %#))j 1 #)5% %#))% 1#)/% 11?/\')%=)1\'d%3\'=) [ %\'\'=)1^ %5\'=) "} +,"Riga":{"value":"+? .g*2+#ii#)#% .g*2+#a#))^11.g*2+##)3b9 .g*2+#\'))%11.g*2+##)+z9 .g*2+#?)+M A#[)15 Q#\')/% 19\'#1)%11)#17)1 %#1\':#11 #1511 %\'7)%%11\'#15)1 #)5U QA$##)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11v5\'\'=11A##53\'=1 A) ?5\'\'=11??53\'=1 \')#v A-ld%3\'=) [ %\'\'=)1^ %5\'=) 3)%:# A#\')#) A-|d%3\'=) [ %\'\'=)1^ %5\'=) "},"Amsterdam":{"value":")Europe/Brussels"},"Dublin":{"value":"+7 q6PB##ii#)1) q6PB##X#1+v11q6PB###15%1 Q #1+v11 #15%1 %#1)A11 #13f1 %#1\' #13>#1 %#1\'>#11 #13:#1 %#1\'6#11 #15*#1 %#1)-11 #15-1 #)99 !#\'#1\'6#11 #15*#1 %#1)-11 #15-1 %#1\'.#11 #15A1 %#7)b=11 \'73b=1 #7)E=11%\'7)b=11\'W75)=1 O#7)E=11%\'7)b=11%#7)E=11%\'7)b=11%#7)E=11%#7)b=11%#7)E=11%\'7)b=11%#7)E=11%#7)b=11 #77b=1 %#7%!#=11#1%*#11 #;1591 #\'1\'b11 ##17)1 #\'1)j1 v\'#1\'b11 #1)U)A #11I)1 #17)1 %#1\'Y11 #15B#1 %#1)-11 #15>#1 %+7)Y=11++75v=1 %#7)b=11 ?75)=1 ;#7)E=11%\'7)b=11%#7)E=11%\'7)b=11%#7)E=11%+5\'\'=11+?75!#=1" ++" 3/7\'n=11%#1%j11#)52# 1=-# 5B#13%C\'\'b=1 CC\'5!#=13% %\'\'=) C\'5!#=)3%7\'5z=)3% %5\'=)3 "},"San_Marino":{"value":")Europe/Rome"},"Uzhgorod":{"value":")Europe/Kyiv"},"Andorra":{"value":"+) 6*{=#ak#)#% #}#)3># 1#e#)\'B#1 11C/\')%=)1\'d%3\'=) [ %\'\'=)1^ %5\'=) "},"Lisbon":{"value":"+1 ,8Z{##yi#)#% ,8Z{##8# #% Z#1#)-f!%1 #)7%) %3)\'% 133)5^ -#1)b!%1 #151!% )#1)f!%1 /75%9!% +#1)E!%1%#1)Y!%1%#1)r!%1)#1)j!%1 \'75%9!% #1))!%1)#1)=!%1 375%9!% /#1\'>#!%1%#1)j!%1%#1)-!%1%#1\'.#!%1%#1)^!%1 #17j!% %#1%&#!%1 #15=!% %#1)5!%1 #155!% %/7\'A9!%1/#1)*#w#A #11^w#1 /75 !% +#1)fw#A +71*#9w#1\'\'7)v9w#A%#7)%9!%1 #75%9!% %p7)%=11pl75%=1 \'15)1 1#K)3.#) E<#p7)%=11I#-3\'=) %#5\'\'= 1 #53\'= %+7)%=)1+#15%) %\'53\'=) %75\'\'= 17353\'= \')#% -G/\')%=)1\'d%3\'=) [ %\'\'=)1O 32#) 11`/\')%=)1\'d%3\'=) [ %\'\'=)1^ %5\'=) # \'B#) -" ++"hd%3\'=) [ %\'\'=)1^ %5\'=) "},"Oslo":{"value":")Europe/Berlin"},"Kirov":{"value":"+1 J42_5#Lm# /% Q#O)-v bAG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11v1\'.#1 Q-C/))% 1 O53\'=1 K,#5\'\'=11n1\'B#1 b#\'1\':#1 Q1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 b#/15.#1 Q# "},"Podgorica":{"value":")Europe/Belgrade"},"Minsk":{"value":"+3 FZsu+#ii#)#% *D6u+#y#)+) A#;)-v Q#O)-6# 19\'#1)%11)#17)1 %#1\':#11 #1511 %\'7)%%11\'#15)1 #)/- QA$##)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11r)#% Q#\'1\'B#1 A1K/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 Q# "} +,"Kiev":{"value":")Europe/Kyiv"},"Belfast":{"value":")Europe/London"},"Vilnius":{"value":"+? smaH+#ii#)#% wF,P)#]#)#% _*e,+#+)5I 1#\')/Q A##)5E 1#t)1- Q#\')-&# 19\'#1)%11)#17)1 %#1\':#11 #1511 %\'7)%%11\'#15)1 #)1% QA$##)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11v1\'.#1 A-C/))% 1 O53\'=1 K,#5\'\'=11n13:#1 A1[/7)%=11\'d53\'=1 [ 5\'\'=11^ 55\'=1 +)#% A## \':#) 1-pd%3\'=) [ %\'\'=)1^ %5\'=) / 5B#) A#3)#% A-(#d%3\'=) [ %\'\'=)1^ %5\'=) "},"Madrid":{"value":"+) T(@j#ak# #% bf#))^!%1 \'159*% #))9!%15#))b!%1 #151*% )#))f!%1 /75%9*% +#))E!%1%#))^ 1%#))r!%1A#)-b!%1 #15)*% %#)))!%1 #))>#!%A #)5- 1%#15=*% \')\'b!% 1^\'#15=*% -#)+)!%1 #)3%) %//)U9!%1/\'/5%=) %\'-3\'=) -#))>#!%1 #)5)) *#\'/)Q9!%1\'\'/5%=) %#)\'2#!%1 \'-3\'=) #)))!%1%#1))11 #15%1 \')#% 15+/\')%=)1+# 5%) %d%3\'=) [ %\'\'=)1^ %5\'=) "} +,"Volgograd":{"value":"+7 V6(R3#Pm#)#- Q#K)-v b#D#)7M bAi##)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11z1\'2#1 Q-?/))% 1 O53\'=1 K,#5\'\'=11n1\'B#1 b#\'1\':#1 Q1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 b#/15.#1 Q#3156#1 b#+192#1 Q# "},"Tallinn":{"value":"+; ke*>+#ii#)#% ke*>+#a#)%% 11+#))>#!%1 #)5%) %\'7)^%11\'\'73^%1 \')/% ke*>+#+)+% A#p)19 Q#\')3^ 19\'#1)%11)#17)1 %#1\':#11 #1511 %\'7)%%11\'#15)1 #)3z QA$##)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11v1\'.#11A##13 A1S/7)%=11\'d53\'=1 [ 5\'\'=11^ 55\'=1 +)3z A-pd%3\'=) [ %\'\'=)1^ %5\'=) /)5B#A A#/)%v A-$#d%3\'=) [ %\'\'=)1^ %5\'=) "} +,"Belgrade":{"value":"+/ .V2F)#yi#)#% 1#P%))j!% 1=\'#1)%11)#17)1 %#1\':#11 #1511 %\'7)%%11\'#15)1 %#13b1 #)#% 1##1+A111##13b1 1#]#)72# 117/\')%=)1\'d%3\'=) [ %\'\'=)1^ %5\'=) "},"Astrakhan":{"value":"+3 _Zu<5#am#)+% Q#;)-v bAG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11v1\'.#1 Q-C/))% 1 O53\'=1 K,#5\'\'=11n1\'B#1 b#\'1\':#1 Q1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 b#/15.#1 Q#+1\'2#1 b# "},"Kyiv":{"value":"+3 Z}{R-#ii#)#% Z}{R-#y#)+) A#;)-v Q#O)3r 11\'#1)%11)#17)1 %#1\':#11 #1511 #)79 QA|#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11r)/%11A#\')3:#9 A1[/7)%=11\'d53\'=1 [ 5\'\'=11^ 55\'=1 #)+U A-hd%3\'=) [ %\'\'=)1^ %5\'=) "} +,"Bratislava":{"value":")Europe/Prague"},"Ulyanovsk":{"value":"+3 !HBD5#Lm# /% Q#O)-v bAG#)%Y!%1 #)\'r!%A #)3% 1 #)5% Z%/))% 1/+)5% %O53\'=1 K,#5\'\'=11v1\'.#1 Q-C/))% 1 O53\'=1 K,#5\'\'=11n1\'B#1 A-K/))% 1 O53\'=1 K,#5\'\'=11j1#n1 Q1O/))% 1 O53\'=1 K,#5\'\'=11[[55\'=1 \'1\'2#1 b#/15.#1 Q#+1\'2#1 b# "},"Vatican":{"value":")Europe/Rome"},"Nicosia":{"value":")Asia/Nicosia"},"Athens":{"value":"+- Vwu(+#Hk#)3Y Vwu(+#x)/6#ec6# A-b#)/= 1 #)3% E#))= 1#))># 19G#)/= 1 #)3% E#))= 1%#)7)9 %#)\'># 1 #)51 \'))1 A^\'#)\'># 1 #)51 E#)/% 1 #)7) !##1)Q 1 #17.# %#1)M11 #15I1 %\'7)%=11\'#13.#1 %#)3&#A %#))%j1 #)3:#1 %#))% 1 #)36# \')#% A13/\')%=)1\'d%3\'=) [ %\'\'=)1^ %5\'=) "} +,"Monaco":{"value":")Europe/Paris"}},"":{"GMT":{"value":")Etc/GMT"},"CET":{"value":")Europe/Brussels"},"Libya":{"value":")Africa/Tripoli"},"Cuba":{"value":")America/Havana"},"Israel":{"value":")Asia/Jerusalem"},"HST":{"value":")Pacific/Honolulu"},"GB-Eire":{"value":")Europe/London"},"GB":{"value":")Europe/London"},"NZ-CHAT":{"value":")Pacific/Chatham"},"Portugal":{"value":")Europe/Lisbon"},"Universal":{"value":")Etc/UTC"},"EST":{"value":")America/Panama"},"UTC":{"value":")Etc/UTC"},"PST8PDT":{"value":"+# H#UFm#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "} +,"ROC":{"value":")Asia/Taipei"},"ROK":{"value":")Asia/Seoul"},"MET":{"value":")Europe/Brussels"},"Kwajalein":{"value":")Pacific/Kwajalein"},"NZ":{"value":")Pacific/Auckland"},"EST5EDT":{"value":"+# tUFm#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"Eire":{"value":")Europe/Dublin"},"GMT0":{"value":")Etc/GMT"},"MST7MDT":{"value":"+# 8#UFm#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "} +,"Zulu":{"value":")Etc/UTC"},"GMT+0":{"value":")Etc/GMT"},"Poland":{"value":")Europe/Warsaw"},"GMT-0":{"value":")Etc/GMT"},"PRC":{"value":")Asia/Shanghai"},"Iceland":{"value":")Atlantic/Reykjavik"},"CST6CDT":{"value":"+# (#UFm#\'-\'\'=11\'\'-5\'=1 !##)%E11-# 1Y!%1 #)3>#1 ze#-5\'=1 e#;-)\'=11%#)#911%#-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"Greenwich":{"value":")Etc/GMT"},"Singapore":{"value":")Asia/Singapore"},"Iran":{"value":")Asia/Tehran"},"Navajo":{"value":")America/Denver"},"Turkey":{"value":")Europe/Istanbul"} +,"Jamaica":{"value":")America/Jamaica"},"WET":{"value":")Europe/Lisbon"},"MST":{"value":")America/Phoenix"},"Hongkong":{"value":")Asia/Hong_Kong"},"UCT":{"value":")Etc/UTC"},"Japan":{"value":")Asia/Tokyo"},"W-SU":{"value":")Europe/Moscow"},"EET":{"value":")Europe/Athens"},"Egypt":{"value":")Africa/Cairo"}},"Chile":{"Continental":{"value":")America/Santiago"},"EasterIsland":{"value":")Pacific/Easter"}},"Canada":{"Yukon":{"value":")America/Whitehorse"},"Atlantic":{"value":")America/Halifax"},"Pacific":{"value" +:")America/Vancouver"},"Newfoundland":{"value":")America/St_Johns"},"Central":{"value":")America/Winnipeg"},"Eastern":{"value":")America/Toronto"},"Mountain":{"value":")America/Edmonton"},"Saskatchewan":{"value":")America/Regina"}},"Atlantic":{"St_Helena":{"value":")Africa/Abidjan"},"Cape_Verde":{"value":"++ X2y$+#0m# #%1 C#@#)3% 1C#/)5^ C#@#)7*#1 3# "},"Faeroe":{"value":")Atlantic/Faroe"},"Azores":{"value":"+1 0Z.P+#yi#)#% 4TF.-#8# #%1 CZ#1#)-f!%1 #)7%) %3)\'% 133)5^ -#1)b!%1 #151!% )#1)f!%1 /75%9!% +#1)E!%1%#1)Y!%1%#1)r!%1)#1)j!%1 \'75%9!% #1))!%1)#1)=!%1 375%9!% /#1\'>#!%1%#1)j!%1%#1)-!%1%#1\'.#!%1%#1)^!%1 #17j!% %#1%&#!%1 #15=!% %#1)5!%1 #155!% %/7\'A9!%1/#1)*#w#A #11^w#1 /75 !% +#1)fw#A +71*#9w#1\'\'7)v9w#A%#7)%9!%1 #75%9!% %p7)%=11pl75%=1 \'15)1 3#d1\'6# 313+7)%=)1\'\'53\'=) %75\'\'= 17353\'= \')#% 3-G/\')%=)1\'d%3\'=) [ %\'\'=)1O192#) -`/\')%=)1\'d%3\'=) [ %\'\'=)1S -f) 31d/\')%=)1\'d%3\'=) [ %\'\'=)1^ %5\'=) "} +,"Bermuda":{"value":"++ T4Bu;#4k#)#% T4Bu;12##))9 1 #)5% %#))Y 1 #)3b S)#%1 dYS#))Y 1 #)3b &##)#M11 #)5j1 %#)\'v11 #)5B#1 %\'/\'A=11\'\'/7%=1 )#/+^=11 #/3A=1 %3/+z=1133/3%=1 1#/+z=11 #-5\'=1 l))6#1 d1<## 1Y!%1 #)3>#1 :#S-)\'=11SH#-5\'=1 >#)#% d9Ge#-5\'=1 D##-%\'=11%K-)\'=11%p/)%=11% /\'A=11 /7%=1 "},"Faroe":{"value":"+\' DyeJ##}k#)#M #4\')#% 13/\')%=)1\'d%3\'=) [ %\'\'=)1^ %5\'=) "},"Stanley":{"value":"+- @gTF9#4k#)#% @gTF9#|)\'Q d9*#\'-3\'= 1 3/\'n= /#)5% 1%+-3\'= 1%#)#% g##-3\'= 1#)+% S5i##)#% g##-3\'= 1%\'-)\'= \'#)3b 1%`/3E= 1^)3^ d9\'\'-)\'= \'#)3b 1%`/3E= 1[[/)b= %G/)^=1 GG/3%=11#)351 S# "} +,"Reykjavik":{"value":")Africa/Abidjan"},"Madeira":{"value":"+- ]#!%1%#1)j!%1%#1)-!%1%#1\'.#!%1%#1)^!%1 #17j!% %#1%&#!%1 #15=!% %#1)5!%1 #155!% %/7\'A9!%1/#1)*#w#A #11^w#1 /75 !% +#1)fw#A +71*#9w#1\'\'7)v9w#A%#7)%9!%1 #75%9!% %p7)%=11pl75%=1 \'15)1 #d))1 13+7)%=)1\'\'53\'=) %75\'\'= 17353\'= \')/B# 1G/\')%=)1\'d%3\'=) [ %\'\'=)1^ %5\'=) "} +,"South_Georgia":{"value":"+% i_>o/#4k#)#% C# "},"Canary":{"value":"++ #) #P#1)9 1 ## 36#) 5//\')%=)1+# 5%) %d%3\'=) [ %\'\'=)1^ %5\'=) "},"Jan_Mayen":{"value":")Europe/Berlin"}},"US":{"Alaska":{"value":")America/Anchorage"},"Arizona":{"value":")America/Phoenix"},"Michigan":{"value":")America/Detroit"},"Central":{"value":")America/Chicago"},"Hawaii":{"value":")Pacific/Honolulu"},"Mountain":{"value":")America/Denver"},"Samoa":{"value":")Pacific/Pago_Pago"},"Eastern":{"value":")America/New_York"} +,"East-Indiana":{"value":")America/Indiana/Indianapolis"},"Indiana-Starke":{"value":")America/Indiana/Knox"},"Aleutian":{"value":")America/Adak"},"Pacific":{"value":")America/Los_Angeles"}},"Indian":{"Comoro":{"value":")Africa/Nairobi"},"Reunion":{"value":")Asia/Dubai"},"Mauritius":{"value":"+% &{*@9#yk#)#% b1:\'#)5I 1%#)\'v *##-5\'=11%#-\'\'=1 "},"Chagos":{"value":"+\' FJ6R?#yk#)#% r#u\')#% &## "},"Maldives":{"value":"+\' *yug?#ii#)#% *yug?#P\')#% r# "},"Christmas":{"value":")Asia/Bangkok"},"Mahe":{"value" +:")Asia/Dubai"},"Antananarivo":{"value":")Africa/Nairobi"},"Mayotte":{"value":")Africa/Nairobi"},"Cocos":{"value":")Asia/Yangon"},"Kerguelen":{"value":")Indian/Maldives"}},"Antarctica":{"Syowa":{"value":")Asia/Riyadh"},"Davis":{"value":"+1 #,q#)#U 6##?)7% #7)%% 6##i#)5j1 r#\' \'Ig# 6##\')56#1 r#\' %vg# 6## "},"McMurdo":{"value":")Pacific/Auckland"},"Mawson":{"value":"+\' #}o#)%U &##H%)5j1 r# "},"Troll":{"value":"+% #4u#)%Q ) %\'\'=)A\' %5\'=) "},"Macquarie":{"value":"+3 #Xk#)7% g##h)5%11g##\')%% g#) #1#%11 #5\'\'=1 +1)% #<#)\'*# g#%7\'5\'\'=1 $#)#% g#r0%\'7\'%=1 *%#75%=11%#7\':#=1 h55\'=11d+7\'A=1 %#5%\'=1 %C7\'%=1 %\'5\'\'=1 %+7\'%=1 #75^=11%/7\'^=1 /#75z=11%+55\'=11%C75%=11C[5\'\'=1 7#51\'=11% 75%=115#7)%=1 %#5\'\'=1 % 7)%=1 +)#% 1g##\')#% g#-K 75%=119#5\'\'=1 % 7)%=1 "} +,"Casey":{"value":"+E #]q#)#% F##i#)5j1 w##\')\'51 F##\')56#1 w##\' %vN# F##3)5z w##+)\'MA F###)5=A w##\')\'f9 F###)519 w##\')\'A9 F###)51ec6# w##\')\'Y F###)5-ec6# w##\')\'U F###)5)ec6# w##\')\'E9 F## "},"Rothera":{"value":"+% #yq#)9% S# "},"DumontDUrville":{"value":")Pacific/Port_Moresby"},"South_Pole":{"value":")Antarctica/McMurdo"},"Palmer":{"value":"++ #Lq#)#% d=+#)5% #)9^ 1%+)\'% ++)5^ 1%#))) \'/5%= 1 \'/)%= #)55 S1+\'/5%= 1 \'/)%= 5#)#!# 1 #)+% C)+% d&#K[\'\'E=9 W# 3>#A1%W\'5E=A1 # )Q9 %+\'\'E=9 +\'\'5E=A1%# 3bA1%7\'\'E=9 7;\'5E=A1 # \'>#9 %#\'\'E=9 # 32#A1%# )19 O\'5E=A1K?\'\'E=9 %# \'>#9 %#\'\'E=9 %#\')%=9 %#\'+)=9 #\'1b=A1%+\')!#=9 ++\'3)=A1)+\'+E=9 ++\'1E=A1))91 S# "} +,"Vostok":{"value":"++ #,q#)9b 6##]#)%% ##)7% 6##<#)9j1 r# "}},"Brazil":{"East":{"value":")America/Sao_Paulo"},"West":{"value":")America/Manaus"},"DeNoronha":{"value":")America/Noronha"},"Acre":{"value":")America/Rio_Branco"}},"Mexico":{"BajaSur":{"value":")America/Mazatlan"},"General":{"value":")America/Mexico_City"},"BajaNorte":{"value":")America/Tijuana"}},"Arctic":{"Longyearbyen":{"value":")Europe/Oslo"}}};}; +function B7D(){let a=this;Lp.call(a);a.bYi=0;a.b5U=0;} +let DtW=(a,b)=>{a.bYi=b;},A6U=a=>{let b=new B7D();DtW(b,a);return b;},But=(a,b)=>{a.bYi=b;a.b5U=a.b5U+1|0;},Bfr=(a,b)=>{a.b5U=a.b5U+1|0;b=a.bYi+b|0;a.bYi=b;return b;}; +function CTd(){let a=this;BdL.call(a);a.cjb=null;a.b9s=0;a.cVI=0;} +let Fkv=(a,b)=>{let c,d;c=b.cmB;AKu();a.cdv=c;a.cjb=b;d=b.x7(QR());a.b9s=d;a.cVI= -d|0;},BIT=a=>{let b=new CTd();Fkv(b,a);return b;},BZs=(a,b)=>{return (a.b9s+a.cVI|0)+a.cjb.x8(b)|0;},BoH=a=>{let b,$$je;a:{b:{try{b=Cx3(a);break a;}catch($$e){$$je=P($$e);if($$je instanceof BqV){break b;}else{throw $$e;}}}b=null;}b=b;b.b9s=a.b9s;b.cjb=a.cjb;return b;}; +function BJQ(){F.call(this);this.cmB=null;} +let To=N(BJQ),ASK=(a,b)=>{let c;if(b===null){c=new Bt;Bp(c,E(1596));J(c);}a.cmB=b;},UC=b=>{let c,d;c=V(RB(b));d=CY(c,V(2));if(D4(Fl(c,V(2)),BH))d=LF(d);if(DS(CN(d,V(1)),BH))return CT(GS(d,1),V(1800000));return GS(d,1);},CuD=(b,c)=>{let d,e,f,g,h,i;d=0;while(true){e=c.data;if(d>=e.length)break;f=AJ1(b);if(f>=0){g=Cp((UC(b)));while(true){h=f+(-1)|0;if(f<=0)break;i=d+1|0;e[d]=g;f=h;d=i;}}else{i=f^(-1);while(true){g=i+(-1)|0;if(i<=0)break;h=d+1|0;e[d]=Cp((UC(b)));i=g;d=h;}}}}; +function CbB(){let a=this;To.call(a);a.coJ=0;a.cvN=0;} +let DA1=(a,b,c,d)=>{ASK(a,b);a.coJ=c;a.cvN=d;},BuE=(a,b,c)=>{let d=new CbB();DA1(d,a,b,c);return d;},Fiz=(a,b)=>{return a.coJ;},Fbl=(a,b)=>{return a.cvN;},D4o=a=>{let b,c;b=a.coJ;c=a.cvN;if(b!=c)return Di_(PC(c/1000|0),PC(a.coJ/1000|0),Gi(),Gi(),Gi());return ABH(PC(c/1000|0));}; +function AQd(){Bx.call(this);this.cqW=null;} +let BcD=null,BAd=null,BdJ=null,A3I=null,BOB=null,Chi=null,Djd=null,VO=()=>{VO=Z(AQd);Dvj();},CcA=()=>{VO();return Djd.b2();},EAD=(a,b,c)=>{VO();CwY(a,b,c,null);},Bz4=(a,b)=>{let c=new AQd();EAD(c,a,b);return c;},CwY=(a,b,c,d)=>{VO();Ct(a,b,c);a.cqW=d;},Cj6=(a,b,c)=>{let d=new AQd();CwY(d,a,b,c);return d;},CnF=b=>{let c,d,e,f,g;VO();c=new S;T(c);d=(Q5(b)).data;e=d.length;f=0;while(f=65&&g<=90)){if(g<97)break a;if(g>122)break a;}Bb(c,LG(g));}f=f+1|0;}return Q(c);},Dvj=()=>{let b,c,d;BcD=Bz4(E(1597), +0);BAd=Bz4(E(1598),1);BdJ=Cj6(E(1599),2,E(13));A3I=Cj6(E(153),3,E(13));BOB=Bz4(E(1600),4);b=Bz4(E(1601),5);Chi=b;c=K(AQd,6);d=c.data;d[0]=BcD;d[1]=BAd;d[2]=BdJ;d[3]=A3I;d[4]=BOB;d[5]=b;Djd=c;},B9Z=N(AQk),D3i=(a,b,c,d)=>{let e,f,g;e=0;f=d.bHR;a:{b:{while(true){if(b>f)break b;g=AQD(d,a.bIT);Z9(d,a.bIT,b);e=a.bQO.pN(b,c,d);if(e>=0)break;Z9(d,a.bIT,g);b=b+1|0;}break a;}b=e;}return b;},DXY=(a,b,c,d,e)=>{let f,g;f=0;a:{b:{while(true){if(c=0)break;Z9(e, +a.bIT,g);c=c+(-1)|0;}break a;}c=f;}return c;},D1A=a=>{return null;}; +function AEa(){let a=this;F.call(a);a.cGZ=null;a.c7T=0;a.coW=0;a.cm6=null;a.b1s=null;} +let Bpy=(a,b,c)=>{a.cGZ=b;a.c7T=c;a.coW=b.bMd;a.cm6=!c?b.bNn:b.bPE;},FxS=(a,b)=>{let c=new AEa();Bpy(c,a,b);return c;},Gl=a=>{return a.cm6===null?0:1;},C40=a=>{let b;if(a.coW!=a.cGZ.bMd){b=new Nr;X(b);J(b);}},B46=a=>{let b;C40(a);if(Gl(a)){b=a.cm6;a.b1s=b;a.cm6=!a.c7T?b.bPm:b.bOm;return;}b=new Kx;X(b);J(b);},CRR=a=>{let b;if(a.b1s!==null){C40(a);Dq5(a.cGZ,a.b1s);a.b1s=null;a.coW=a.coW+1|0;return;}b=new BP;X(b);J(b);},Cut=N(AEa),Dvt=a=>{B46(a);return a.b1s.bHe;}; +function AEK(){let a=this;F.call(a);a.bHY=0;a.b1V=null;a.bKG=null;} +let D_6=(a,b)=>{a.bHY=b;a.b1V=null;a.bKG=null;},AL8=a=>{let b=new AEK();D_6(b,a);return b;},A$D=(a,b)=>{a.bHY=0;a.bKG=null;a.b1V=B$(b);},CeV=a=>{let b=new AEK();A$D(b,a);return b;},Mh=b=>{return AL8(b);},GX=b=>{return AL8(!b?0:1);},LX=b=>{let c;c=new AEK;c.bKG=b;c.bHY=0;c.b1V=null;return c;},D$=a=>{let b,c;b=a.bKG;if(b!==null&&b.ui())return a.bKG.oB();b=a.bKG;if(b===null){b=a.b1V;if(b===null){c=a.bHY;b=new S;T(b);BE(b,c);return Q(b);}return b;}return b.p();},EV=b=>{return CeV(b);},Ju=a=>{return !(a.bKG===null +&&a.b1V===null)?0:1;},W_=a=>{return a.bKG===null?0:1;},BfM=a=>{return a.b1V===null?0:1;},PO=a=>{if(!Ju(a))return (D$(a)).bGI.length<=0?0:1;return !a.bHY?0:1;},CMs=a=>{return a.bHY;},ALH=a=>{return a.bKG;},A$H=a=>{let b;if(Ju(a)){b=a.bHY;AEu();return CoS(C0O(b,10));}if(BfM(a))return A8r(a.b1V);return a.bKG;},A9Z=N(Bx),AT4=null,AH$=null,D$I=null,ZS=()=>{ZS=Z(A9Z);Ere();},EZr=(a,b,c)=>{ZS();Ct(a,b,c);},Dks=(a,b)=>{let c=new A9Z();EZr(c,a,b);return c;},Ere=()=>{let b,c,d;AT4=Dks(E(1602),0);b=Dks(E(1603),1);AH$= +b;c=K(A9Z,2);d=c.data;d[0]=AT4;d[1]=b;D$I=c;},EsQ=N(),DCP=(b,c,d,e)=>{let f,g;F8();f=LK;b=b;if(!OS(b,f)){if(OS(b,Ua)){g=c;if(g.bGJ>1&&Bj(Dk((Be(g,1)).bGP),E(1604))){f=new ACj;Yw();AGr(f,A0K,E(1605),100,Be(g,1),Ua);return AZ0(e,f,Gi(),c,d);}}return null;}return Cbd(e,d);},AZ0=(b,c,d,e,f)=>{return CkI(b,e,c,f,null);},DC0=b=>{let c,d,e,f,g,h;if(b.bGJ){c=null;d=Bk();e=Bk();f=Br(b);while(Bq(f)){g=Bm(f);if(g===null)continue;b=g.bU8;if(b===null)b=c;else if(c!==null)b=c;h=HL(g.b3R);Ea(d,h);if(g instanceof BDT){c=g;U(e, +c);}c=b;}if(c!==null){if(e.bGJ>0){b=null;e=Br(e);while(Bq(e)){c=Bm(e);if(b!==null&&CWx(b)>=CWx(c))c=b;b=c;}return b;}b=new BP;X(b);J(b);}b=new BP;X(b);J(b);}b=new BP;X(b);J(b);},B1u=N(Pn),EIw=(a,b,c)=>{return a;}; +function CUe(){B1u.call(this);this.cyj=null;} +let Eou=(a,b,c,d)=>{AIR(a,b,c);a.cyj=d;},CO2=(a,b,c)=>{let d=new CUe();Eou(d,a,b,c);return d;},E$v=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=Br(a.cyj);while(Bq(c)){d=Bm(c);e=Dhy(d.ciB,CAa(d),d.ccp);f=1+e.cL1.bT9|0;d=new S;T(d);BE(d,f);g=Q(d);h=b.hE();d=h.gS(Gk(BT3),g);i=C7z(e);j=Csl(e);(b.h2(Bh(5.0,5.0+d.bGF))).hP(N1(g,BT3));d=b.h2(BM(30.0));i=i;g=i.cx8.cGn.dX();while(g.dY()){k=g.dZ();d=d.h2(BW(((d.hE()).gS(Gk(BcL),k)).bGF));d.hP(N1(k,BcL));}d=b.h2(Bh(30.0,(BY9(i,h)).bGF));l=j;(d.h2(BW(((d.hE()).gS(Gk(BpM),l.cgr.cph)).bGF))).hP(N1(l.cgr.cph, +BpM));b.h2(BW((BY9(i,h)).bGF+(DgP(l,h)).bGF));b=b.h2(BW((Cbs(e,b.hE())).bGF));}},Ehl=(a,b)=>{let c,d,e,f,g;c=0.0;d=0.0;e=Br(a.cyj);while(Bq(e)){f=Bm(e);g=Cbs(Dhy(f.ciB,CAa(f),f.ccp),b);d=d+g.bGF;c=BC(c,g.bGE);}return Cl(c,d);}; +function BJD(){Pn.call(this);this.bNt=null;} +let En$=(a,b,c)=>{let d;AIR(a,b,c);a.bNt=Bk();d=(Mv(ZI(b))).bGP;U(a.bNt,E(1606));U(a.bNt,E(344));b=a.bNt;c=new S;T(c);H(H(H(c,E(1607)),d),E(1608));c=Q(c);U(b,c);U(a.bNt,E(344));U(a.bNt,E(1609));U(a.bNt,E(1610));U(a.bNt,E(1611));U(a.bNt,E(344));U(a.bNt,E(1612));U(a.bNt,E(1613));U(a.bNt,E(1614));U(a.bNt,E(1615));U(a.bNt,E(344));},Cbd=(a,b)=>{let c=new BJD();En$(c,a,b);return c;},Fm2=(a,b,c)=>{let d,e;d=a.bNt;e=B7o(E(1616));AEt();return Bqk(d,e,AOO);}; +function AMy(){let a=this;F.call(a);a.b1l=0.0;a.bYc=0.0;a.b0D=0.0;a.b2e=0.0;} +let AMr=0,ABR=()=>{ABR=Z(AMy);DHl();},DPt=(a,b,c,d,e)=>{ABR();a.b1l=b;a.bYc=c;a.b0D=d;a.b2e=e;},B4I=(a,b,c,d)=>{let e=new AMy();DPt(e,a,b,c,d);return e;},CxM=(a,b,c)=>{return B4I(a.b1l+b,a.bYc+c,a.b0D,a.b2e);},C5o=(a,b)=>{return CxM(a,b.bHj,b.bHu);},US=(a,b,c)=>{let d,e;d=a.b1l;if(!(bd+a.b0D)){d=a.bYc;if(!(cd+a.b2e)){if(Df()){ABR();if(!AMr&&BBX(a,b)!==b){e=new C4;X(e);J(e);}}if(Df()){ABR();if(!AMr&&BFy(a,c)!==c){e=new C4;X(e);J(e);}}return 1;}if(Df()){ABR();if(!AMr&&BFy(a,c)===c){e=new C4;X(e);J(e);}}return 0;}if +(Df()){ABR();if(!AMr&&BFy(a,c)===c){e=new C4;X(e);J(e);}}return 0;}if(Df()){ABR();if(!AMr&&BBX(a,b)===b){e=new C4;X(e);J(e);}}return 0;}if(Df()){ABR();if(!AMr&&BBX(a,b)===b){e=new C4;X(e);J(e);}}return 0;},BBX=(a,b)=>{let c;c=a.b1l;if(!(bc)return c;return b;}return c;},BFy=(a,b)=>{let c;c=a.bYc;if(!(bc)return c;return b;}return c;},DHl=()=>{AMr=0;},AMZ=N(Bx),B4n=null,ATI=null,EqR=null,AJo=()=>{AJo=Z(AMZ);E6P();},Eh2=(a,b,c)=>{AJo();Ct(a,b,c);},Dhz=(a,b)=>{let c=new AMZ();Eh2(c, +a,b);return c;},E6P=()=>{let b,c,d;B4n=Dhz(E(1617),0);b=Dhz(E(1618),1);ATI=b;c=K(AMZ,2);d=c.data;d[0]=B4n;d[1]=b;EqR=c;},AER=N(0),VH=N(); +function BbK(){let a=this;F.call(a);a.bKT=null;a.bMx=null;a.bUI=null;a.bHm=0.0;a.bIR=0.0;a.bQF=0.0;} +let CBi=(a,b,c,d,e,f,g)=>{a.bKT=b;a.bMx=c;a.bUI=d;a.bHm=e;a.bIR=f;a.bQF=g;},APX=(a,b,c,d,e,f)=>{let g=new BbK();CBi(g,a,b,c,d,e,f);return g;},Erg=a=>{let b,c,d,e;b=JH(a);c=BY(a.bKT);d=BY(a.bMx);e=new S;T(e);H(H(H(H(H(e,b),E(1619)),c),E(1620)),d);return Q(e);},Ef=(a,b)=>{let c;c=a.bMx;b=c!==null?b.h2(c):b.h2(E4());c=a.bKT;return B8m(a,c!==null?b.h2(Cc(c)):b.h2(Cc(E4())));},B8m=(a,b)=>{return b.h2(a.bUI);},CXe=(a,b,c)=>{CBi(a,b,c,GT(),0.0,0.0,0.0);},AAA=(a,b)=>{let c=new BbK();CXe(c,a,b);return c;},BwX=(a,b)=> +{return APX(a.bKT,a.bMx,a.bUI,b,a.bIR,a.bQF);},Brj=(a,b)=>{return APX(a.bKT,a.bMx,a.bUI,b,a.bIR,a.bQF);},AGc=(a,b)=>{return APX(a.bKT,a.bMx,b,a.bHm,a.bIR,a.bQF);},CeU=(a,b)=>{return APX(b,a.bMx,a.bUI,a.bHm,a.bIR,a.bQF);},AZf=(a,b)=>{return APX(a.bKT,b,a.bUI,a.bHm,a.bIR,a.bQF);},Bnc=(a,b,c)=>{return APX(a.bKT,a.bMx,a.bUI,a.bHm,b,c);},A$8=a=>{return !(a.bHm>0.0)?0:1;}; +function Bmz(){F.call(this);this.cCE=null;} +let EQ7=(a,b)=>{a.cCE=b;},CFm=a=>{let b=new Bmz();EQ7(b,a);return b;},DWK=(a,b)=>{return 1;},E6s=(a,b,c)=>{c=BM((a.cCE.cF(b.bOR)).bGE);b=BdZ(b,c);c=NX(1.0,1.0);AW7(b,c);}; +function DnP(){DU.call(this);this.c_H=null;} +let Eay=(a,b)=>{Fr();return Q7(b)!=2?0:1;}; +function CiZ(){DU.call(this);this.c9B=null;} +let EeO=(a,b)=>{return Dh_(b);}; +function CcO(){DU.call(this);this.dei=null;} +let E3q=(a,b)=>{return DbD(b);}; +function CcN(){DU.call(this);this.daK=null;} +let Fly=(a,b)=>{return 0;}; +function DgB(){DU.call(this);this.c8I=null;} +let E8Y=(a,b)=>{Fr();return !Q7(b)?0:1;}; +function DjT(){DU.call(this);this.c9M=null;} +let Fvo=(a,b)=>{return Csq(b);}; +function C$H(){DU.call(this);this.ddL=null;} +let D8x=(a,b)=>{return A02(b);}; +function C2v(){DU.call(this);this.da4=null;} +let EFR=(a,b)=>{return CwI(b);}; +function CYj(){DU.call(this);this.c7W=null;} +let E05=(a,b)=>{return CCW(b);}; +function Dii(){DU.call(this);this.ddp=null;} +let D1_=(a,b)=>{a:{b:{Fr();switch(Q7(b)){case 1:case 2:case 3:case 4:case 5:case 10:case 23:case 26:break;case 6:case 7:case 8:case 9:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 24:case 25:break b;default:break b;}b=1;break a;}b=A02(b);}return b;}; +function CPe(){DU.call(this);this.dby=null;} +let DG3=(a,b)=>{return Dgz(b);}; +function C0U(){DU.call(this);this.deO=null;} +let Fpx=(a,b)=>{return B$D(b);}; +function Dkk(){DU.call(this);this.daT=null;} +let Fsn=(a,b)=>{return BGM(b);}; +function CoL(){DU.call(this);this.deC=null;} +let EY3=(a,b)=>{Fr();return Q7(b)!=3?0:1;}; +function CJb(){DU.call(this);this.dap=null;} +let DHA=(a,b)=>{a:{b:{Fr();switch(Q7(b)){case 1:case 2:case 3:case 4:case 5:case 6:case 8:case 9:case 10:case 23:break;case 7:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:break b;default:break b;}b=1;break a;}b=A02(b);}return b;}; +function B9T(){DU.call(this);this.de1=null;} +let E5P=(a,b)=>{a:{b:{Fr();switch(Q7(b)){case 1:case 2:case 3:case 4:case 5:case 10:break;case 6:case 7:case 8:case 9:break b;default:break b;}b=1;break a;}b=A02(b);}return b;}; +function BeG(){DU.call(this);this.cGw=0;} +let Dd_=(a,b)=>{GF(a);a.cGw=b;},Ebv=a=>{let b=new BeG();Dd_(b,a);return b;},DC4=(a,b)=>{return a.bJl^(a.cGw!=Bpl(b&65535)?0:1);},CIF=N(BeG),EXN=(a,b)=>{return a.bJl^(!(a.cGw>>Bpl(b&65535)&1)?0:1);}; +function Bvy(){let a=this;Tq.call(a);a.bM3=null;a.bUG=0;a.bJY=0;} +let CM9=(a,b,c,d)=>{a.bM3=b;a.bHh=b.bHh;a.bUG=c;a.bJY=d-c|0;},Eis=(a,b,c)=>{let d=new Bvy();CM9(d,a,b,c);return d;},DYa=(a,b,c)=>{let d,e;d=a.bHh;e=a.bM3;if(d==e.bHh){if(0<=b&&b<=a.bJY){e.eu(b+a.bUG|0,c);a.bJY=a.bJY+1|0;a.bHh=a.bM3.bHh;return;}c=new EN;X(c);J(c);}c=new Nr;X(c);J(c);},E2g=(a,b,c)=>{let d,e;d=a.bHh;e=a.bM3;if(d==e.bHh){if(0<=b&&b<=a.bJY){d=e.yq(b+a.bUG|0,c);if(d){a.bJY=a.bJY+c.bGJ|0;a.bHh=a.bM3.bHh;}return d;}c=new EN;X(c);J(c);}c=new Nr;X(c);J(c);},E9V=(a,b)=>{let c,d;c=a.bHh;d=a.bM3;if(c==d.bHh) +{c=d.yq(a.bUG+a.bJY|0,b);if(c){a.bJY=a.bJY+b.bGJ|0;a.bHh=a.bM3.bHh;}return c;}b=new Nr;X(b);J(b);},EmR=(a,b)=>{let c,d;c=a.bHh;d=a.bM3;if(c==d.bHh){if(0<=b&&b{return CQe(a,0);},CQe=(a,b)=>{let c,d,e;c=a.bHh;d=a.bM3;if(c==d.bHh){if(0<=b&&b<=a.bJY){e=new C7q;d=d.ew(b+a.bUG|0);b=a.bUG;c=a.bJY;e.bWv=d;e.cZX=a;e.cpc=b;e.b9M=b+c|0;return e;}d=new EN;X(d);J(d);}d=new Nr;X(d);J(d);},E2C=(a,b)=>{let c,d;c=a.bHh;d=a.bM3;if(c==d.bHh){if(0<=b +&&b{let d,e,f;if(b!=c){d=a.bHh;e=a.bM3;if(d==e.bHh){f=a.bUG;e.ev(b+f|0,c+f|0);a.bJY=a.bJY-(c-b|0)|0;a.bHh=a.bM3.bHh;}else{e=new Nr;X(e);J(e);}}},FoJ=(a,b,c)=>{let d,e;d=a.bHh;e=a.bM3;if(d==e.bHh){if(0<=b&&b{let b;if(a.bHh!=a.bM3.bHh){b=new Nr;X(b);J(b);}return a.bJY;},Dvp=(a,b)=>{if(!b)a.bJY=a.bJY-1|0;else a.bJY +=a.bJY+1|0;a.bHh=a.bM3.bHh;},CKQ=N(Bvy); +function Cjb(){let a=this;F.call(a);a.cZM=null;a.cIh=null;a.cxN=null;a.cBS=null;a.cfl=0;a.cGQ=0;a.cWq=0;a.czt=0;a.ctG=0;a.cBE=0;a.cox=0;a.bJe=null;a.bHy=0;a.chb=0;} +let Eft=(a,b)=>{let c,d,e,f,g;c=a.cZM;b.bWx=c;b.coi=a.cIh;d=a.cxN;if(d!==null)b.bTN=d;else{e=c.data.length;d=K(Rj,e+1|0);b.bTN=d;Di(c,0,d,1,e);b.bTN.data[0]=new BAV;}c=a.cBS;if(c===null)c=a.cIh;b.cmv=c;f=a.cfl;b.bVv=f;f=f<=0?0:1;g=b;g.bTV=f;Dlt(g,!a.cox?a.cGQ:DT(1,a.cGQ));CMb(g,a.cWq);BL9(g,a.czt);B7d(g,a.ctG);b.cDS=a.cox;b.b8k=a.cBE;b.bXw=a.chb;},BsR=(a,b,c)=>{let d,e,f,g,h,i,j,k;d=Bk();e=new S;T(e);a:{b:while(true){if(a.bHy>=a.bJe.bGI.length)break a;c:{d:{e:{f:{g:{h:{f=Bn(a.bJe,a.bHy);switch(f){case 35:case 48:if +(!b)break a;d=new Bt;b=a.bHy;g=a.bJe;h=new S;T(h);e=H(h,E(1621));BE(e,b);H(H(e,E(1461)),g);Bp(d,Q(h));J(d);case 37:break f;case 39:break d;case 45:break h;case 46:case 69:break b;case 59:if(!c)break a;d=new Bt;b=a.bHy;g=a.bJe;h=new S;T(h);e=H(h,E(1621));BE(e,b);H(H(e,E(1461)),g);Bp(d,Q(h));J(d);case 164:break g;case 8240:break e;default:}Bb(e,f);a.bHy=a.bHy+1|0;break c;}if(e.bG4>0){g=AN5(Q(e));U(d,g);e.bG4=0;}g=new BAV;U(d,g);a.bHy=a.bHy+1|0;break c;}if(e.bG4>0){g=AN5(Q(e));U(d,g);e.bG4=0;}g=new BUd;U(d,g);a.bHy +=a.bHy+1|0;break c;}if(e.bG4>0){h=AN5(Q(e));U(d,h);e.bG4=0;}h=new BND;U(d,h);a.bHy=a.bHy+1|0;a.chb=100;break c;}if(e.bG4>0){g=AN5(Q(e));U(d,g);e.bG4=0;}g=new B7s;U(d,g);a.bHy=a.bHy+1|0;a.chb=1000;break c;}f=a.bHy+1|0;a.bHy=f;i=In(a.bJe,39,f);if(i<0){d=new Bt;b=a.bHy;g=a.bJe;h=new S;T(h);e=H(h,E(1622));BE(e,b);H(H(e,E(1623)),g);Bp(d,Q(h));J(d);}j=a.bHy;if(i==j)Bb(e,39);else L(e,B_(a.bJe,j,i));a.bHy=i+1|0;}}d=new Bt;b=a.bHy;g=a.bJe;h=new S;T(h);e=H(h,E(1621));BE(e,b);H(H(e,E(1461)),g);Bp(d,Q(h));J(d);}if(e.bG4 +>0){h=AN5(Q(e));U(d,h);}k=K(Rj,d.bGJ);return WW(d,k);},DrB=(a,b)=>{let c,d,e,f,g,h,i;EGL(a,b);if(a.bHy=a.bJe.bGI.length)break a;c:{d:{switch(Bn(a.bJe,a.bHy)){case 35:break;case 44:f=new Bt;b=a.bHy;g=a.bJe;h=new S;T(h);i=H(h,E(1624));BE(i,b);H(H(i,E(1461)),g);Bp(f,Q(h));J(f);case 46:f=new Bt;b=a.bHy;g=a.bJe;h=new S;T(h);i=H(h,E(1625));BE(i,b);H(H(i,E(1461)),g);Bp(f,Q(h));J(f);case 48:break d;default:break a;}d=d+1|0;c +=1;break c;}if(c)break b;d=d+1|0;e=e+1|0;}a.bHy=a.bHy+1|0;}f=new Bt;b=a.bHy;g=a.bJe;h=new S;T(h);i=H(h,E(1626));BE(i,b);H(H(i,E(1461)),g);Bp(f,Q(h));J(f);}if(b){a.ctG=d;a.czt=e;a.cox=d?0:1;}}if(a.bHy=a.bJe.bGI.length)break e;switch(Bn(a.bJe,a.bHy)){case 35:case 44:case 46:case 69:break f;case 48:break;default:break e;}c=c+1|0;a.bHy=a.bHy+1|0;}f=new Bt;b=a.bHy;g=a.bJe;h=new S;T(h);i=H(h,E(1627));BE(i,b);H(H(i,E(1461)),g);Bp(f, +Q(h));J(f);}if(!c){f=new Bt;b=a.bHy;g=a.bJe;h=new S;T(h);i=H(h,E(1628));BE(i,b);H(H(i,E(1461)),g);Bp(f,Q(h));J(f);}if(b)a.cBE=c;}},EGL=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=a.bHy;d=1;e=0;f=0;g=c;a:{b:while(true){if(a.bHy>=a.bJe.bGI.length)break a;c:{d:{e:{switch(Bn(a.bJe,a.bHy)){case 35:break e;case 44:break d;case 48:break;default:break a;}d=0;e=e+1|0;f=f+1|0;break c;}if(!d){h=new Bt;b=a.bHy;i=a.bJe;j=new S;T(j);k=H(j,E(1629));BE(k,b);H(H(k,E(1461)),i);Bp(h,Q(j));J(h);}e=e+1|0;break c;}l=a.bHy;if(g==l)break b;if +(b)a.cfl=l-g|0;g=l+1|0;}a.bHy=a.bHy+1|0;}h=new Bt;i=a.bJe;j=new S;T(j);k=H(j,E(1630));BE(k,l);H(H(k,E(1461)),i);Bp(h,Q(j));J(h);}if(e){d=a.bHy;if(g!=d){if(b&&g>c)a.cfl=d-g|0;if(b){a.cWq=e;a.cGQ=f;}return;}h=new Bt;i=a.bJe;j=new S;T(j);k=H(j,E(1631));BE(k,d);H(H(k,E(1461)),i);Bp(h,Q(j));J(h);}h=new Bt;b=a.bHy;i=a.bJe;j=new S;T(j);k=H(j,E(1632));BE(k,b);H(H(k,E(1461)),i);Bp(h,Q(j));J(h);},AYP=N(Bx),X4=null,Y_=null,AGy=null,AHQ=null,EMh=null,NK=()=>{NK=Z(AYP);EGP();},D8y=(a,b,c)=>{NK();Ct(a,b,c);},BpB=(a,b)=>{let c +=new AYP();D8y(c,a,b);return c;},EGP=()=>{let b,c,d;X4=BpB(E(1633),0);Y_=BpB(E(1634),1);AGy=BpB(E(1635),2);b=BpB(E(1636),3);AHQ=b;c=K(AYP,4);d=c.data;d[0]=X4;d[1]=Y_;d[2]=AGy;d[3]=b;EMh=c;}; +function B8I(){let a=this;F.call(a);a.bXC=null;a.b7g=null;a.b4i=null;a.cNl=0;a.bWw=null;a.cjP=null;a.c5j=0;} +let BYV=0,A5J=()=>{A5J=Z(B8I);EJu();},DGr=(a,b,c,d,e)=>{let f,g,h;A5J();a.b4i=Bk();f=G$();g=Br(c);while(Bq(g)){h=(Bm(g)).b2G;EQ(f,h);}a.bXC=CNY(b,c.bGJ,f);a.b7g=c;a.cNl=d;a.bWw=e;},Ck9=(a,b,c,d)=>{let e=new B8I();DGr(e,a,b,c,d);return e;},Em1=(a,b,c)=>{let d,e,f,g;d=c.dX();while(true){if(!d.dY()){if(b<=a.b7g.bGJ){if(Df()){A5J();if(!BYV&&b>a.b7g.bGJ){c=new C4;X(c);J(c);}}e=0;d=Br(a.b7g);while(Bq(d)){f=Bm(d);if(c.et(f.b2G))continue;if(f.cDo===null)e=e+1|0;}b=C5(b,e);if(b>=0){if(Df()){A5J();if(!BYV&&b<0){c=new C4;X(c);J(c);}}return 1;}return 0;}return 0;}g +=d.dZ();if(!a.bXC.cnM.et(g))break;}return 0;},BY8=(a,b,c,d)=>{let e,f,g,h,i,j;e=Dy();f=0;g=Br(a.b7g);while(Bq(g)){h=Bm(g);if(d.dQ(h.b2G))i=d.dR(h.b2G);else if(f>=c.dV())i=h.cDo;else{i=c.cf(f);f=f+1|0;}if(i===null){b=new BP;X(b);J(b);}j=h.b2G;C9(e,j,i);}return b.ys(e);},FhV=a=>{let b,c,d;b=BY(a.bXC);c=BY(a.b7g);d=new S;T(d);b=H(H(d,E(1637)),b);Bb(b,32);H(b,c);return Q(d);},BiO=(a,b)=>{let c;U(a.b4i,b);c=Ki(b);Ii();if(c===AO6){a.c5j=1;c=a.bWw;NK();if(c===X4)J(EC(E(1638),b));}},DCq=(a,b,c,d,e,f)=>{d=a.bWw;NK();if +(d!==X4&&d!==AHQ){b=new BP;X(b);J(b);}A5U(b,BY8(a,c,e,f),a.b4i,X4,0);},D2K=(a,b,c,d,e,f)=>{let g;g=a.bWw;NK();if(g===AGy){f=d.bIM;if(a.cjP!==null){b=Tn(b,BY8(a,c,e,A1A()),Ia(a.cjP,f));return b!==null?EV(b):EV(E(14));}b=new BP;X(b);J(b);}if(g===Y_){g=A5U(b,BY8(a,c,e,f),a.b4i,Y_,1);if(g===null)J(EC(E(1639),d));return g;}J(EC(E(1640),d));},FcD=a=>{return a.bWw;},DOB=a=>{return a.bXC;},DNr=a=>{return a.cNl;},CSn=a=>{return a.b4i.bGJ<=0?0:1;},EJu=()=>{BYV=0;},AVS=N(Bx),B6N=null,BJi=null,EvH=null,Bvk=()=>{Bvk=Z(AVS);EYl();},FtH +=(a,b,c)=>{Bvk();Ct(a,b,c);},Ck6=(a,b)=>{let c=new AVS();FtH(c,a,b);return c;},EYl=()=>{let b,c,d;B6N=Ck6(E(1641),0);b=Ck6(E(1642),1);BJi=b;c=K(AVS,2);d=c.data;d[0]=B6N;d[1]=b;EvH=c;},EB_=N(),BcI=(b,c)=>{let d,e;c=c.data;d=c.length;e=0;while(e{return 0;}; +function A3A(){let a=this;Er.call(a);a.daD=5.0;a.cXJ=null;a.csl=null;a.ccQ=null;a.c8R=30.0;a.cqG=null;a.ch1=null;a.cQH=null;a.da2=0;} +let BG1=null,B4b=null,B5J=null,AJW=()=>{AJW=Z(A3A);DPr();},Cln=b=>{let c,d,e,f,g;AJW();c=new A3A;d=BNI(B4b);Go();e=K8;f=null;g=null;Ed();BCw(c,b,d,e,f,g,FR,0);return c;},Bqk=(b,c,d)=>{let e,f,g;AJW();e=new A3A;f=BNI(B4b);Go();g=K8;Ed();BCw(e,b,f,g,c,d,BkL,0);return e;},BNI=b=>{AJW();return UR(We(12),b,BG1,B5J);},BZP=b=>{AJW();return UR(We(14),b,BG1,B5J);},BCw=(a,b,c,d,e,f,g,h)=>{AJW();a.daD=5.0;a.c8R=30.0;a.csl=b;a.cXJ=d;a.ccQ=e;a.cqG=f;a.cQH=g;a.ch1=c;a.da2=h;},FyX=(a,b,c,d,e,f,g)=>{let h=new A3A();BCw(h,a, +b,c,d,e,f,g);return h;},CRh=a=>{let b,c,d;b=Ls(a.csl);c=a.cQH;Ed();if(c!==AJr){d=a.ch1;B3();return Vy(b,d,CF,new Sz,c);}return DNt(a.csl,a.ch1);},Dsv=(a,b)=>{let c,d,e,f,g;b=b.h2(Bh(5.0,5.0));c=FO(De(a,b.hE()),(-10.0),(-10.0));(CRh(a)).cC(b.h2(a.ch1.bI2));d=a.ccQ;if(d!==null){e=a.cqG;AEt();if(e===A_3){e=new FG;f=c.bGE;d=d;Hs(e,f-d.bNs,c.bGF-d.bOO);b=b.h2(e);d=new NR;e=new WP;g=a.ccQ;WL();ACP(e,g,YW);ABW(d,e);b.hP(d);}else if(e===AOO){b=b.h2(Bh(c.bGE-d.bNs-1.0,1.0));d=new NR;g=new WP;c=a.ccQ;WL();ACP(g,c,YW);ABW(d, +g);b.hP(d);}}},FuM=(a,b)=>{let c,d,e;b=(CRh(a)).cF(b);c=a.ccQ;if(c===null)d=b;else{d=a.cqG;AEt();if(d!==A_3&&d!==AOO)d=b;else{d=new LU;e=b.bGE+30.0;c=c;MO(d,e+c.bNs,BC(b.bGF,c.bOO));}}return FO(d,10.0,10.0);},EMY=a=>{return a.cXJ;},Fk8=a=>{return 0;},DPr=()=>{let b,c;Go();BG1=ASV;b=Hu;c=K8;B4b=AFv(b,c);B5J=GT();}; +function AOz(){let a=this;Er.call(a);a.clV=null;a.cMG=null;a.cUv=null;} +let ASj=(a,b,c)=>{a.cMG=b;a.cUv=c;},DNt=(a,b)=>{let c=new AOz();ASj(c,a,b);return c;},DlO=(a,b)=>{let c,d,e,f,g,h,i;a:{if(a.clV===null){if(b===null){b=new BP;X(b);J(b);}a.clV=Bk();b=a.cMG.dX();while(true){if(!b.dY())break a;c=b.dZ();d=a.clV;e=a.cUv;f=new CDc;B3();g=CF;f.b9v=Bk();f.dbR=g;if(!c.bGI.length)c=E(344);g=f.b9v;h=new BhT;i=null;h.bUC=e;h.b5s=c;h.cFM=i;U(g,h);U(d,f);}}}return a.clV;},E_I=(a,b)=>{let c,d,e,f;c=0.0;d=0.0;e=Br(DlO(a,b));while(Bq(e)){f=De(Bm(e),b);d=d+f.bGF;c=BC(c,f.bGE);}return Cl(c,d);},ExC +=(a,b)=>{let c,d,e,f;c=0.0;d=Br(DlO(a,b.hE()));while(Bq(d)){e=Bm(d);e.cC(b.h2(BW(c)));f=b.hE();c=c+(De(e,f)).bGF;}}; +function BDT(){ZB.call(this);this.ddz=null;} +let D43=(a,b,c,d,e,f)=>{Dss(a,b,e);a.bXQ=c;a.b3R=d;a.ddz=f;},CkI=(a,b,c,d,e)=>{let f=new BDT();D43(f,a,b,c,d,e);return f;},DI5=a=>{let b,c,d;b=JH(a);c=BY(a.b3R);d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},CxB=N(),Ff4=(a,b)=>{return Dy();},Oa=N(0); +function BK5(){let a=this;F.call(a);a.b8S=null;a.b6N=0.0;a.cwU=0.0;a.ctt=0.0;a.caI=0.0;} +let EHG=(a,b,c,d,e,f)=>{a.b8S=b;a.b6N=c;a.cwU=d;a.ctt=e;a.caI=f;},Dr2=(a,b,c,d,e)=>{let f=new BK5();EHG(f,a,b,c,d,e);return f;},BE5=(a,b)=>{return FO(a.b8S.cF(b),a.caI+a.cwU,a.b6N+a.ctt);},DWL=(a,b)=>{let c,d,e;c=BE5(a,b.hE());d=c.bGE;if(d>0.0){b.hP(NX(d,c.bGF));e=Bh(a.caI,a.b6N);a.b8S.cC(b.h2(e));}},DYn=(a,b,c)=>{let d;d=a.b8S.yz(b,c);if(d!==null)return A_W(Bh(a.caI,a.b6N),d);return null;},Dwe=(a,b)=>{return AWB(a.b8S.yC(b),a.b6N);}; +function ChA(){let a=this;F.call(a);a.cnF=null;a.c7P=null;} +let D2$=(a,b)=>{a.cnF.cC(b);},EX3=(a,b,c)=>{return a.cnF.yz(b,c);},Emp=(a,b)=>{return a.cnF.cF(b);},D9r=a=>{return a.c7P;}; +function Cm0(){F.call(this);this.csD=null;} +let DWy=a=>{a.csD=Bk();},Bg6=()=>{let a=new Cm0();DWy(a);return a;},MH=(a,b)=>{U(a.csD,b);},BmQ=(a,b)=>{b=b.dX();while(b.dY()){MH(a,b.dZ());}},BdO=a=>{return a.csD;},CNn=a=>{MH(a,E(1643));MH(a,E(1644));MH(a,E(1645));},Dfp=(a,b)=>{let c,d;if(!CB(E(63),E(1646))){c=CY(CY(CY(CE(QR(),QR()),V(1000)),V(3600)),V(24));if(FE(c,V(140))){Xh(a);d=new S;T(d);H(QN(H(H(d,b),E(1647)),c),E(1648));MH(a,Q(d));d=new S;T(d);H(H(d,b),E(1649));MH(a,Q(d));}return;}},Xh=a=>{MH(a,E(344));},Clv=(a,b,c)=>{let d,e,f,g,h,$$je;if(b===null)MH(a, +E(1650));else{b=BY(b);d=new S;T(d);H(H(d,E(1651)),b);MH(a,Q(d));}B8d();b=AMV;Jl(b);a:{b:{try{if(!Hn(b)){d=AMV;e=CHk;Ea(d,e);CbY(AMV);}f=Hn(AMV);d=AMV;g=f-1|0;d=Be(d,g);EJ(AMV,g);G2(b);break a;}catch($$e){$$je=P($$e);c=$$je;break b;}}G2(b);J(c);}KO();b=new S;T(b);g=0;c:while(true){if(g>=d.bGI.length){e=Q(b);b=new S;T(b);H(H(b,E(1652)),e);MH(a,Q(b));Xh(a);b=new S;T(b);H(H(H(b,E(1653)),E(63)),E(1654));MH(a,Q(b));Xh(a);Dfp(a,E(1655));f=0;h=0;while(h=97&&f<=109)){if(f<65)break e;if(f>77)break e;}f=(f+13|0)&65535;break d;}f:{if(!(f>=110&&f<=122)){if(f<78)break f;if(f>90)break f;}f=(f-13|0)&65535;break d;}if(f>126)break c;}Bb(b,f);g=g+1|0;}b=new Bt;Bp(b,d);J(b);},CRb=a=>{BmQ(a,Gi());BmQ(a,Bk());}; +function BSy(){let a=this;Er.call(a);a.bZI=null;a.cHY=null;} +let EHi=(a,b,c)=>{let d;d=Bk();a.bZI=d;if(b.bGJ<2){b=new Bt;X(b);J(b);}Ea(d,b);a.cHY=c;},CiE=(a,b)=>{let c=new BSy();EHi(c,a,b);return c;},DDv=(a,b)=>{let c,d,e;c=(Be(a.bZI,0)).cF(b);d=1;while(true){e=a.bZI;if(d>=e.bGJ)break;c=JM(c,(Be(e,d)).cF(b));d=d+1|0;}return c;},Exl=(a,b)=>{let c,d,e,f,g,h;c=0.0;d=De(a,b.hE());e=Br(a.bZI);while(Bq(e)){f=Bm(e);g=f.cF(b.hE());h=f.co();if(h!==null&&!h.gv())(((b.h2(BW(c))).h2(h)).h2(Cc(h))).hP(C2(d.bGE,g.bGF));h=a.cHY;B3();if(h===CF)f.cC(b.h2(BW(c)));else if(h===CO)f.cC(b.h2(Bh((d.bGE +-g.bGE)/2.0,c)));else{if(h!==Ft){b=new BV;X(b);J(b);}f.cC(b.h2(Bh(d.bGE-g.bGE,c)));}c=c+g.bGF;}},EVV=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=0.0;d=Ya();e=Br(a.bZI);while(Bq(e)){f=Bm(e);g=f.cF(b);h=Vm(Ty((AWB(f.yC(b),c)).bVK));f=h;while(TS(f)){i=U6(h);j=i.bHt;k=DG(d.bVK,j);if(!(k!==null&&k.b3H>=i.bHe.b3H)){l=d.bVK;i=i.bHe;C9(l,j,i);}}c=c+g.bGF;}return d;},DMX=(a,b,c)=>{let d,e,f,g,h;d=0.0;e=Br(a.bZI);while(Bq(e)){f=Bm(e);g=f.cF(c);h=f.yz(b,c);if(h!==null)return A_W(BW(d),h);d=d+g.bGF;}return null;},Cdp=N(),D3x=0,BNY +=()=>{BNY=Z(Cdp);EER();},DfL=b=>{BNY();return Fe(DEs(Cq(b)));},EER=()=>{D3x=0;},DEs=b=>{function md5(string){function md5cycle(x,k){var a=x[0],b=x[1],c=x[2],d=x[3];a=ff(a,b,c,d,k[0],7, -680876936);d=ff(d,a,b,c,k[1],12, -389564586);c=ff(c,d,a,b,k[2],17,606105819);b=ff(b,c,d,a,k[3],22, -1044525330);a=ff(a,b,c,d,k[4],7, -176418897);d=ff(d,a,b,c,k[5],12,1200080426);c=ff(c,d,a,b,k[6],17, -1473231341);b=ff(b,c,d,a,k[7],22, -45705983);a=ff(a,b,c,d,k[8],7,1770035416);d=ff(d,a,b,c,k[9],12, -1958414417);c=ff(c,d,a,b, +k[10],17, -42063);b=ff(b,c,d,a,k[11],22, -1990404162);a=ff(a,b,c,d,k[12],7,1804603682);d=ff(d,a,b,c,k[13],12, -40341101);c=ff(c,d,a,b,k[14],17, -1502002290);b=ff(b,c,d,a,k[15],22,1236535329);a=gg(a,b,c,d,k[1],5, -165796510);d=gg(d,a,b,c,k[6],9, -1069501632);c=gg(c,d,a,b,k[11],14,643717713);b=gg(b,c,d,a,k[0],20, -373897302);a=gg(a,b,c,d,k[5],5, -701558691);d=gg(d,a,b,c,k[10],9,38016083);c=gg(c,d,a,b,k[15],14, -660478335);b=gg(b,c,d,a,k[4],20, -405537848);a=gg(a,b,c,d,k[9],5,568446438);d=gg(d,a,b,c,k[14],9, -1019803690);c +=gg(c,d,a,b,k[3],14, -187363961);b=gg(b,c,d,a,k[8],20,1163531501);a=gg(a,b,c,d,k[13],5, -1444681467);d=gg(d,a,b,c,k[2],9, -51403784);c=gg(c,d,a,b,k[7],14,1735328473);b=gg(b,c,d,a,k[12],20, -1926607734);a=hh(a,b,c,d,k[5],4, -378558);d=hh(d,a,b,c,k[8],11, -2022574463);c=hh(c,d,a,b,k[11],16,1839030562);b=hh(b,c,d,a,k[14],23, -35309556);a=hh(a,b,c,d,k[1],4, -1530992060);d=hh(d,a,b,c,k[4],11,1272893353);c=hh(c,d,a,b,k[7],16, -155497632);b=hh(b,c,d,a,k[10],23, -1094730640);a=hh(a,b,c,d,k[13],4,681279174);d=hh(d,a, +b,c,k[0],11, -358537222);c=hh(c,d,a,b,k[3],16, -722521979);b=hh(b,c,d,a,k[6],23,76029189);a=hh(a,b,c,d,k[9],4, -640364487);d=hh(d,a,b,c,k[12],11, -421815835);c=hh(c,d,a,b,k[15],16,530742520);b=hh(b,c,d,a,k[2],23, -995338651);a=ii(a,b,c,d,k[0],6, -198630844);d=ii(d,a,b,c,k[7],10,1126891415);c=ii(c,d,a,b,k[14],15, -1416354905);b=ii(b,c,d,a,k[5],21, -57434055);a=ii(a,b,c,d,k[12],6,1700485571);d=ii(d,a,b,c,k[3],10, -1894986606);c=ii(c,d,a,b,k[10],15, -1051523);b=ii(b,c,d,a,k[1],21, -2054922799);a=ii(a,b,c,d,k[8], +6,1873313359);d=ii(d,a,b,c,k[15],10, -30611744);c=ii(c,d,a,b,k[6],15, -1560198380);b=ii(b,c,d,a,k[13],21,1309151649);a=ii(a,b,c,d,k[4],6, -145523070);d=ii(d,a,b,c,k[11],10, -1120210379);c=ii(c,d,a,b,k[2],15,718787259);b=ii(b,c,d,a,k[9],21, -343485551);x[0]=add32(a,x[0]);x[1]=add32(b,x[1]);x[2]=add32(c,x[2]);x[3]=add32(d,x[3]);}function cmn(q,a,b,x,s,t){a=add32(add32(a,q),add32(x,t));return add32(a<>>32 -s,b);}function ff(a,b,c,d,x,s,t){return cmn(b&c|~b&d,a,b,x,s,t);}function gg(a,b,c,d,x,s,t){return cmn(b +&d|c&~d,a,b,x,s,t);}function hh(a,b,c,d,x,s,t){return cmn(b^c^d,a,b,x,s,t);}function ii(a,b,c,d,x,s,t){return cmn(c^(b|~d),a,b,x,s,t);}function md51(s){var n=s.length,state=[1732584193, -271733879, -1732584194,271733878],i;for(i=64;i<=s.length;i+=64){md5cycle(state,md5blk(s.substring(i -64,i)));}s=s.substring(i -64);var tail=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(i=0;i>2]|=s.charCodeAt(i)<<(i%4<<3);tail[i>>2]|=0x80<<(i%4<<3);if(i>55){md5cycle(state,tail);for(i=0;i<16;i++)tail[i]=0;}tail[14] +=n*8;md5cycle(state,tail);return state;}function md5blk(s){var md5blks=[],i;for(i=0;i<64;i+=4){md5blks[i>>2]=s.charCodeAt(i)+(s.charCodeAt(i+1)<<8)+(s.charCodeAt(i+2)<<16)+(s.charCodeAt(i+3)<<24);}return md5blks;}var hex_chr='0123456789abcdef'.split('');function rhex(n){var s='',j=0;for(;j<4;j++)s+=hex_chr[n>>j*8+4&0x0F]+hex_chr[n>>j*8&0x0F];return s;}function hex(x){for(var i=0;i{a.b0a=b;a.bWs=c;a.b6s=d;},C3y=(a,b,c)=>{let d=new CRX();DHS(d,a,b,c);return d;},X2=a=>{return a.bWs>=a.b0a.bGJ?0:1;},Bvf=a=>{let b,c;b=a.b0a;c=a.bWs;return Be(b,c);},Y2=a=>{return a.b6s;},Mv=a=>{let b,c;b=a.b0a;c=a.bWs;b=Be(b,c);a.bWs=a.bWs+1|0;U(a.b6s,b);return b;}; +function Cv0(){A0O.call(this);this.cwg=null;} +let EPl=a=>{let b;b=new COW;b.c4O=a;b.clL=1;return b;},DDo=a=>{return 1;},B7V=(a,b)=>{return Li(b,a.cwg);},CS0=N(),B7C=null,Blv=()=>{Blv=Z(CS0);Eck();},Eck=()=>{let b,c;A43();b=Ca((CLd.b2()).data.length);c=b.data;B7C=b;c[Bv$.bGO]=1;c[Br6.bGO]=2;c[BtB.bGO]=3;c[ByF.bGO]=4;c[BDR.bGO]=5;c[Bnz.bGO]=6;c[Bf5.bGO]=7;c[Bal.bGO]=8;},KZ=N(DR),D1H=N(),CJE=(b,c)=>{let d,e,f,g;d=c>>5;c=c&31;e=(b.bHZ+d|0)+(c?1:0)|0;f=Ca(e);B3m(f,b.bHc,d,c);g=M_(b.bHG,e,f);Q9(g);return g;},B3m=(b,c,d,e)=>{let f,g,h,i,j,k;a:{if(!e)Di(c,0,b, +d,b.data.length-d|0);else{f=b.data;g=32-e|0;h=f.length-1|0;f[h]=0;while(true){if(h<=d)break a;i=c.data;j=f[h];k=(h-d|0)-1|0;f[h]=j|(i[k]>>>g|0);f[h-1|0]=i[k]<{let e,f,g,h;e=0;f=0;while(f>>31|0;f=f+1|0;}if(e)b.data[d]=e;},Cj4=(b,c)=>{let d,e,f,g,h,i,j,k,l,m;d=c>>5;c=c&31;e=b.bHZ;if(d=0)f=e;else{i=0;while(true){j=C5(i,d);if(j>=0)break;if(b.bHc.data[i])break;i +=i+1|0;}if(j>=0){if(c<=0){f=e;break a;}if(!(b.bHc.data[i]<<(32-c|0))){f=e;break a;}}k=g.data;l=0;while(true){i=C5(l,e);if(i>=0)break;if(k[l]!=(-1))break;k[l]=0;l=l+1|0;}if(i)f=e;k[l]=k[l]+1|0;}}m=M_(h,f,g);Q9(m);return m;}if(b.bHG>=0){JG();b=La;}else{JG();b=Bk_;}return b;},Dg3=(b,c,d,e,f)=>{let g,h,i,j,k,l;g=1;h=0;while(h>>f|0)|i[c+1|0]<>>f|0;}return g;}; +function BIi(){let a=this;Pn.call(a);a.cMm=null;a.cPe=null;a.c3M=null;} +let FfT=(a,b,c)=>{return Bqk(a.c3M,a.cMm,a.cPe);},B65=N(BIi),EmA=(a,b,c,d,e)=>{AIR(a,b,e);a.cMm=null;a.cPe=null;b=Bk();a.c3M=b;Ea(b,d);},CXE=(a,b,c,d)=>{let e=new B65();EmA(e,a,b,c,d);return e;},B7o=b=>{let c,d,e,$$je;try{c=BqS(Bo(B65),b);d=BXW(c);BLu(c);}catch($$e){$$je=P($$e);if($$je instanceof Dd){e=$$je;GP(e);return Bt9(10,10,2);}else{throw $$e;}}return d;},E6D=(b,c)=>{let d,e,f;d=Bg6();e=new S;T(e);H(H(H(e,E(1659)),E(63)),E(1660));MH(d,Q(e));MH(d,E(1661));f=new S;T(f);H(H(H(f,E(1662)),E(65)),E(1660));MH(d, +Q(f));return CXE(b,1,BdO(d),c);},DVz=(b,c)=>{let d,e,f;d=Bk();e=new S;T(e);Bb(H(H(H(H(e,E(1663)),E(63)),E(1664)),E(65)),41);Nc(d,Q(e),1);f=BY(new Crk);e=new S;T(e);Bb(e,40);H(H(e,f),E(1665));Nc(d,Q(e),1);Nc(d,E(344),1);Nc(d,E(1666),1);Nc(d,E(1667),1);Nc(d,E(1668),1);Nc(d,E(1669),1);Nc(d,E(1670),1);Nc(d,E(1671),1);Nc(d,E(1672),1);Nc(d,E(1673),1);Nc(d,E(1674),1);Nc(d,E(1675),1);Nc(d,E(1676),1);Nc(d,E(1677),1);Nc(d,E(1678),1);Nc(d,E(344),1);Nc(d,E(1679),1);Nc(d,E(344),1);return CXE(b,1,d,c);},Nc=(b,c,d)=>{if(!d)c +=Ih(c,E(1680),E(14));U(b,c);},Bax=N(Bx),A_3=null,AOO=null,E0b=null,AEt=()=>{AEt=Z(Bax);EdP();},DJ1=(a,b,c)=>{AEt();Ct(a,b,c);},CrF=(a,b)=>{let c=new Bax();DJ1(c,a,b);return c;},EdP=()=>{let b,c,d;A_3=CrF(E(1681),0);b=CrF(E(1682),1);AOO=b;c=K(Bax,2);d=c.data;d[0]=A_3;d[1]=b;E0b=c;},A4f=N(Bx),Xw=null,VJ=null,Bp1=null,ABD=null,Bir=null,AA1=null,E0Z=null,NQ=()=>{NQ=Z(A4f);Fxm();},DDy=(a,b,c)=>{NQ();Ct(a,b,c);},ASP=(a,b)=>{let c=new A4f();DDy(c,a,b);return c;},Fxm=()=>{let b,c,d;Xw=ASP(E(1683),0);VJ=ASP(E(1684), +1);Bp1=ASP(E(1685),2);ABD=ASP(E(1686),3);Bir=ASP(E(1687),4);b=ASP(E(1688),5);AA1=b;c=K(A4f,6);d=c.data;d[0]=Xw;d[1]=VJ;d[2]=Bp1;d[3]=ABD;d[4]=Bir;d[5]=b;E0Z=c;},Epq=N(),ARs=(b,c,d)=>{let e,f;e=d-1|0;while(e>=0){f=c.data;if(b.data[e]!=f[e])break;e=e+(-1)|0;}if(e<0)d=0;else{c=c.data;d=FE(CN(V(b.data[e]),O(4294967295, 0)),CN(V(c[e]),O(4294967295, 0)))?1:(-1);}return d;},BsC=(b,c,d,e)=>{let f,g,h,i,j;b=b.data;d=d.data;f=Ca(c+1|0);g=f.data;h=BU(CN(V(b[0]),O(4294967295, 0)),CN(V(d[0]),O(4294967295, 0)));g[0]=Cp(h);i +=GS(h,32);if(c{let f,g,h,i,j,k,l;f=Ca(c);g=f.data;h=BH;i=0;while +(i{let h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;h=f.data;i=Ca(e+1|0);j=Ca(g+1|0);k=g-1|0;l=AOe(h[k]);if(l){B3m(j,f,0,l);B3m(i,d,0,l);}else{Di(d,0,i,0,e);Di(f,0,j,0,g);}h=j.data;d=i.data;m=h[k];n=c-1|0;o=g-2|0;p=CN(V(m),O(4294967295, 0));while(n>=0){a:{if(d[e]==m)q=(-1);else +{r=DkW(BU(EU(CN(V(d[e]),O(4294967295, 0)),32),CN(V(d[e-1|0]),O(4294967295, 0))),m);q=Cp(r);s=Sm(r);if(q){t=0;q=q+1|0;b:{while(true){q=q+(-1)|0;if(t)break;u=CT(CN(V(q),O(4294967295, 0)),CN(V(h[o]),O(4294967295, 0)));r=V(s);v=BU(EU(r,32),CN(V(d[e-2|0]),O(4294967295, 0)));w=BU(CN(r,O(4294967295, 0)),p);if(AOe(Sm(w))>=32)s=Cp(w);else t=1;if(IH(SW(u,O(0, 2147483648)),SW(v,O(0, 2147483648))))break b;}break a;}}}}if(q){s=e-g|0;u=BH;w=BH;c=0;while(c{let f,g,h,i,j,k,l,m,n;f=BH;g=CN(V(e),O(4294967295, 0));h=d-1|0;i=V(e>>>1|0);e=e&1;j=EU(g,1);while(h>=0){k=c.data;l +=Gu(EU(f,32),CN(V(k[h]),O(4294967295, 0)));if(FE(l,BH)){m=CY(l,g);f=Fl(l,g);}else{n=GD(l,1);m=CY(n,i);f=BU(EU(Fl(n,i),1),CN(l,V(1)));if(e){if(IH(m,f))f=CE(f,m);else if(G5(CE(m,f),g)){f=BU(f,CE(j,m));m=CE(m,V(2));}else{f=BU(f,CE(g,m));m=CE(m,V(1));}}}b.data[h]=Cp(CN(m,O(4294967295, 0)));h=h+(-1)|0;}return Cp(f);},DkW=(b,c)=>{let d,e,f,g,h;d=CN(V(c),O(4294967295, 0));if(FE(b,BH)){e=CY(b,d);f=Fl(b,d);}else{g=GD(b,1);h=V(c>>>1|0);e=CY(g,h);f=BU(EU(Fl(g,h),1),CN(b,V(1)));if(c&1){if(IH(e,f))f=CE(f,e);else if(IH(CE(e, +f),d)){f=BU(f,CE(d,e));e=CE(e,V(1));}else{f=BU(f,CE(EU(d,1),e));e=CE(e,V(2));}}}return Gu(EU(f,32),CN(e,O(4294967295, 0)));}; +function Clo(){let a=this;If.call(a);a.cYK=null;a.c5W=0;} +let G3=a=>{let b;b=new Cvq;Bpy(b,a.cYK,a.c5W);return b;}; +function B9p(){F.call(this);this.c8D=null;} +let Yx=N(),E_y=BH,EBZ=0,ANK=()=>{ANK=Z(Yx);Ds8();},DS6=b=>{ANK();},Bmo=b=>{Jl(Bo(Yx));try{ANK();}finally{G2(Bo(Yx));}},Kh=b=>{Jl(Bo(Yx));try{ANK();}finally{G2(Bo(Yx));}},ENH=b=>{let c,d;Jl(Bo(Yx));try{ANK();c=Fm();b=b.cRi;d=new S;T(d);H(H(d,E(1689)),b);b=Q(d);Fw(c,b);}finally{G2(Bo(Yx));}},AJZ=b=>{Jl(Bo(Yx));try{ANK();Fw(Fm(),b);}finally{G2(Bo(Yx));}},Ds8=()=>{E_y=QR();EBZ=1;},C8q=N(),BRy=0,AQ3=()=>{AQ3=Z(C8q);Es1();},EE7=b=>{let c;AQ3();if(b!=10&&b!=13&&b!=9){if(b>=14&&b<=18){c=BD(1);c.data[0]=b<<24>>24;return c;}if +(b>=32&&b<=126){c=BD(1);c.data[0]=b<<24>>24;return c;}if(b>=128&&b<=255)return IU([11,b<<24>>24]);if(b>=256&&b<=2303)return IU([BYw(b),BeL(b)]);if(b>=8192&&b<=40959)return IU([(96+BYw(b)|0)<<24>>24,BeL(b)]);if(b>=57344&&b<=57471)return IU([11,BeL(b)]);return IU([12,BYw(b),BeL(b)]);}c=BD(1);c.data[0]=b<<24>>24;return c;},BeL=b=>{AQ3();return (b&255)<<24>>24;},BYw=b=>{AQ3();return (b&65280)>>8<<24>>24;},Es1=()=>{BRy=0;},Ezy=N(),El0=b=>{return b;},DeX=N(),EKB=null,ERL=null,AP7=()=>{AP7=Z(DeX);E$W();},AJX=b=>{let c, +d,e;AP7();c=b.bGI.length;d=0;while(true){e=C5(d,c);if(e>=0)break;if(!Z0(Bn(b,d)))break;d=d+1|0;}if(e<0){e=Bn(b,d);if(e!=64&&e!=92)return 0;return !((d+6|0){let e,f,g,h;AP7();e=b.bGI.length;while(c{AP7();return ClC(b,0,E(581));},E$W=()=>{EKB=Dm(E(1690));ERL=Dm(E(1691));}; +function AO3(){DR.call(this);this.cBM=null;} +let Dc3=a=>{return a.cBM.cBp;},C4q=N(),B2D=null,CWU=null,CaW=null,AEu=()=>{AEu=Z(C4q);EJs();},A8r=b=>{AEu();return b===null?B2D:Dn$(b);},AQS=b=>{let c;AEu();if(b!==null){c=new Byy;BcW(BCr(c),b);return c.bTr;}b=new F2;Bp(b,E(1692));J(b);},EJs=()=>{B2D=AQg(E(2));CWU=AQg(E(13));CaW=AQg(E(12));}; +function Bd5(){let a=this;H3.call(a);a.ca3=null;a.c1h=null;a.c6f=0;a.cFN=null;a.c0_=null;} +let B43=(a,b,c,d,e,f,g)=>{let h,i,j,k;a:{RU(a,b,c,null,g);a.c6f=f.cuN;if(d!==null&&!(!d.ui()&&!d.xg()&&!d.uj()&&!d.gm())){b=Zh();a.ca3=b;A93(b,d);}else{b:{if(d!==null){if(d.ul()&&HH((d.xm()).bOV))break b;if(d.xe()&&HH((d.xk()).bL3))break b;}a.ca3=d;break a;}b=Zh();a.ca3=b;AMu(b,E(14));}}c:{a.c1h=e;h=f.cHJ;if(h!==null){i=Bk();A6i(i);j=XP(h);d=Br(i);while(true){if(!Bq(d))break c;k=Bm(d);b=k.mW(j);F5();if(b===PY){b=k;Jx();BT9(b,a,j,JB);}}}}},FxY=(a,b,c,d,e,f)=>{let g=new Bd5();B43(g,a,b,c,d,e,f);return g;},D$3 +=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,$$je;c=!a.c6f?b:BUr(b);if(a.ca3===null){d=a.bGM.bH$;b=BY(a.bM8);e=new S;T(e);H(H(H(e,E(1693)),b),E(1694));e=B4(d,CH(e));f=U9(BkS(14));B3();(Js(C_(e,f,CF,HB(a)),5.0,2.0)).cC(c);}else{b=new BQ0;f=a.bGM;BLQ();b.chh=Bk();b.cwW=Bk();b.b$g=c.hE();b.bU2=f;b.ceY=c;c=a.ca3;e=a.c1h;if(b.cbm===null){g=CUk();a:{try{b.cbm=BBM(g,Co(E(1695)),g.cgE,null);CNz(b,g,c,e);DoU(g,Cuu(g,K(F,0)),b.cbm);break a;}catch($$e){$$je=P($$e);b=$$je;}A1h=A1h+1|0;J(b);}A1h=A1h+1|0;}h=0.0;e=Br(b.chh);while +(Bq(e)){c=(Bm(e)).ctj.bGQ;i=c.b$D*72.0;h=BC(h,c.ccm.bGG+i/2.0);}c=new Crm;c.cHU=h;b.cvQ=c;g=Br(b.chh);while(Bq(g)){c=Bm(g);e=c.c60;d=B1(b.bU2);B8();f=AH6(B0(d,CG(Bzd,Cb3(b))),b.ceY,b.bU2.bGN);c=c.ctj.bGQ;j=c.ciH*72.0;k=c.b$D*72.0;c=c.ccm;l=c.bGH;i=c.bGG;d=Bh(l-j/2.0,Cgo(b.cvQ,i+k/2.0));E4W(e,f.h2(Bh(d.bHu,d.bHj)));}c=B44(b);B9();c=(BJ(c,Cz)).cu(b.bU2.bGN);m=Br(b.cwW);while(Bq(m)){e=(Bm(m)).bGQ;g=new CR_;f=b.cvQ;g.bV4=Bk();g.cY7=13.0;g.bWF=f;e=e.b4y;if(e.bPl!=1){b=new BP;X(b);J(b);}f=Y(e.bIY,0);n=0;while(n{let c;c=Dg(b);if(!(a.cFN!==null&&a.c0_===c)){a.cFN=AQY(ACo(a,b,1));a.c0_=c;}return a.cFN;},EVF=(a,b,c)=>{return a;},Ld=N(Dt); +function A$I(){let a=this;F.call(a);a.bSX=null;a.b7K=null;} +let CzZ=null,AXX=()=>{AXX=Z(A$I);EG3();},BWy=(a,b,c)=>{AXX();a.bSX=b;a.b7K=c;},DCs=(a,b)=>{let c=new A$I();BWy(c,a,b);return c;},BUH=b=>{AXX();return BO(b,E(1696));},Cj_=b=>{let c,d,e,f,g,h;AXX();if(BUH(b)){b=Dk(CC(b,E(1696).bGI.length));c=D3(CzZ,b);if(Kr(c)){d=Dk(El(c,1));e=El(c,2)===null?null:FD(El(c,2));b=new A$I;c=Bk();f=(IW(d,E(21))).data;g=f.length;h=0;while(h{let c,d;if(a.bSX.dV()>1){c= +a.bSX.cf(0);if(!Bj(E(917),c)){if(!Bj(E(900),c)&&!Bj(c,b))return null;b=new A$I;c=a.bSX;d=c.dV();BWy(b,LV(c,1,d),a.b7K);return b;}return DCs(a.bSX,a.b7K);}return null;},EG3=()=>{CzZ=Dp(E(1697));}; +function Bnm(){let a=this;F.call(a);a.bSZ=null;a.clO=null;a.clU=null;a.cuN=0;a.cHJ=null;a.cmg=null;} +let B25=(a,b)=>{let c,d,e;a.bSZ=Bk();a.clO=Bk();a.clU=null;a.cuN=0;a.cHJ=null;c=b;while(X2(c)){d=Mv(c);e=Dk(d.bGP);if(!e.bGI.length)continue;a:{if(Bj(e,E(1698))){while(true){if(!X2(c))break a;b=Mv(c);if(Bj(Dk(b.bGP),E(1699)))break;U(a.clO,b);}break a;}if(a.bSZ.bGJ<=1&&BO(e,E(1700)))break a;if(a.bSZ.bGJ<=1&&BO(e,E(1256)))break a;if(a.bSZ.bGJ<=1&&BO(e,E(1701)))break a;if(a.bSZ.bGJ<=1&&BO(e,E(1702))){a.cHJ=e;break a;}if(a.bSZ.bGJ<=1&&BO(e,E(1703))){a.clU=Dk(CC(e,E(1703).bGI.length));break a;}if(a.bSZ.bGJ<=1&&BO(e, +E(1704))){a.cmg=Dk(CC(e,E(1704).bGI.length));break a;}if(!(a.bSZ.bGJ<=1&&BO(e,E(1257)))){b=a.bSZ;d=d.bGP;U(b,d);break a;}if(CB(e,E(168))&&CB(e,E(13)))a.cuN=1;if(!CB(e,E(580)))break a;while(true){if(!X2(c))break a;if(Bj(Dk(d.bGP),E(582)))break;d=Mv(c);}}}},DVV=a=>{let b=new Bnm();B25(b,a);return b;},B03=(a,b)=>{let c,d,e,f,$$je;c=a.cmg;if(c!==null){d=new S;T(d);H(H(d,c),E(172));e=Q(d);a:{try{d=Bgi(e);break a;}catch($$e){$$je=P($$e);if($$je instanceof Dd){}else if($$je instanceof LI){}else{throw $$e;}}b=new Ld;c +=a.cmg;d=new S;T(d);H(H(d,E(174)),c);Bp(b,Q(d));J(b);}f=Cr4(d);if(f.dV()<=0)b.ckt=e;else{b=new Ld;c=a.cmg;d=BY(f);f=new S;T(f);H(H(H(H(f,E(175)),c),E(176)),d);Bp(b,Q(f));J(b);}}if(a.clO.bGJ>0){b=b;c=B1(b);AI9(b,AL6(BIK(a.clO),c));}},Dov=a=>{return Br(a.bSZ);},CkR=N(),DEa=a=>{return;},ET_=()=>{let a=new CkR();DEa(a);return a;},FjL=(a,b)=>{let c,d,e,f,g,h,i;c=new Ddq;c.b2Q=Bk();d=Bk();c.bLS=d;e=ACm();U(d,e);f=new C52;f.c3X=b;f.ciq=0;g=f;while(ATm(g,0)!==null){d=Br4(ATm(g,0));b=d.bQR;Qo();if(b!==AEe){if(b===AA2) +{b=new CoJ;Bp(b,E(1705));J(b);}if(b===ByR){if(A8F(c)){b=c.bLS;EJ(b,b.bGJ-1|0);}b=ACm();AWS(Ul(c),b);U(c.bLS,b);}else{h=d.cc4;if(HH(c.b2Q)){b=c.b2Q;e=CL(h);U(b,e);}else a:{b=c.b2Q;if(h>(Be(b,b.bGJ-1|0)).bHl){b=c.b2Q;e=CL(h);U(b,e);}else while(true){b=c.b2Q;i=b.bGJ;if(i<=0)break a;if(h>=(Be(b,i-1|0)).bHl)break a;b=c.b2Q;EJ(b,b.bGJ-1|0);b=c.bLS;EJ(b,b.bGJ-1|0);e=(Ul(c)).bLC;Op();if(e!==Rb)continue;b=c.bLS;EJ(b,b.bGJ-1|0);}}if(!d.c4M){if(d.bQR===APy){e=Fot(a,f);if(!(e!==null&&BPx(e)>BPx(d)))Bot(c,ASp(d),E(14));else if +(BkU(e)!==AA2)E8E(c,ASp(d));else Bot(c,ASp(d),ENL(a,f));}else if(BkU(d)===AMY)Bot(c,ASp(d),Bin(d));else if(BkU(d)===A0C)Bot(c,ASp(d),Dv6(a,BPx(d),f));else{if(BkU(d)!==AFZ){b=new BV;c=BY(d);d=CR();H(H(d,E(1706)),c);Bcm(b,CH(d));J(b);}Fsb(c,ASp(d),C47(d));}}else{e=d.bQR;if(e!==APy){if(e===ATa)Er6(c,Bin(d));else if(e===AMY)E_3(c,d.b6J,Bin(d));else{if(e!==AFZ){b=new BV;c=BY(d);d=new S;T(d);H(H(d,E(1707)),c);Bp(b,Q(d));J(b);}Fqk(c,d.b6J,C47(d));}}else{e=d.b6J;if(A8F(c)){b=c.bLS;EJ(b,b.bGJ-1|0);}b=ACm();AWS(Ul(c), +b);U(c.bLS,b);b=ACm();AVU(Ul(c),e,b);U(c.bLS,b);}}}}BzX(g);}return Be(c.bLS,0);},ENL=(a,b)=>{let c,d,e,f;c=new S;T(c);d=b;while(true){e=ATm(d,1);if(e===null)break;f=Br4(e);if(f!==null){e=f.bQR;Qo();if(e===AEe){BzX(d);continue;}}e=f.bQR;Qo();if(e!==AA2)return Q(c);if(c.bG4>0)L(c,E(344));L(c,Bin(f));BzX(d);}return Q(c);},Fot=(a,b)=>{let c,d,e,f;c=1;d=b;while(true){e=ATm(d,c);if(e===null)return null;f=Br4(e);if(f===null)break;e=f.bQR;Qo();if(e!==AEe)break;c=c+1|0;}return f;},Dv6=(a,b,c)=>{let d,e,f,g,h;d=new S;T(d);e +=c;while(ATm(e,1)!==null){f=ATm(e,1);if(f===null)return Q(d);g=Br4(f);h=g.bQR;Qo();if(h!==AA2&&h!==AEe&&g.cc4<=b)return Q(d);L(d,Dk(f));L(d,E(15));BzX(e);}return Q(d);},Ecc=N(),EIa=b=>{let c;c=b.bLC;Op();if(c!==ADn){if(c!==Rb){if(c===UZ)return BGf(b);return null;}return C_H(b);}return A8r(Bci(b));},C_H=b=>{let c,d,e,f;c=Zh();d=0;while(d{let c,d,e,f,g,h,i;c=A9R();d=b.bLC;Op();if +(d===UZ){e=AJ5(Z$(b.b0P));f=e;while(Gl(f)){g=ALw(e);if(b.bLC!==UZ){c=new BP;Bp(c,E(1708));J(c);}h=FW(b.b0P,g);i=h.bLC;if(i===ADn)CH3(c,g,Bci(h));else if(i===UZ)APl(c,g,BGf(h));else{if(i!==Rb){b=new BV;X(b);J(b);}APl(c,g,C_H(h));}}return c;}c=new BP;Bp(c,E(1708));J(c);},A8p=N(Bx),JB=null,WY=null,ABo=null,D8v=null,Jx=()=>{Jx=Z(A8p);EDb();},DQR=(a,b,c)=>{Jx();Ct(a,b,c);},BOx=(a,b)=>{let c=new A8p();DQR(c,a,b);return c;},EDb=()=>{let b,c,d;JB=BOx(E(1709),0);WY=BOx(E(1710),1);b=BOx(E(1711),2);ABo=b;c=K(A8p,3);d= +c.data;d[0]=JB;d[1]=WY;d[2]=b;D8v=c;}; +function COh(){F.call(this);this.cT8=null;} +function ACL(){F.call(this);this.dd$=null;} +let API=(a,b)=>{a.dd$=b;},FyK=a=>{let b=new ACL();API(b,a);return b;}; +function ASR(){let a=this;F.call(a);a.cdP=0.0;a.b91=0.0;} +let DQA=(a,b,c)=>{let d;if(b===0.0){d=new Bt;X(d);J(d);}a.cdP=b;a.b91=c;},NX=(a,b)=>{let c=new ASR();DQA(c,a,b);return c;}; +function BbA(){let a=this;F.call(a);a.c6v=null;a.cSO=0.0;} +let Kx=N(DR); +function CU1(){If.call(this);this.cEc=null;} +let DOQ=a=>{return a.cEc.bHv;},Vm=a=>{let b;b=new CUQ;Bti(b,a.cEc);return b;}; +function B_K(){let a=this;F.call(a);a.bRX=0;a.cjk=0;a.cJw=null;a.b4u=null;} +let Cu6=a=>{let b,c,d;b=a.b4u.bLe.data.length*32|0;while(true){c=a.bRX;if(c>=b)break;d=AMl(a.b4u.bLe.data[c/32|0]>>>(c%32|0)|0);if(d<32){d=a.bRX+d|0;a.bRX=d;return d;}a.bRX=((a.bRX/32|0)+1|0)*32|0;}return c;},OD=a=>{return a.bRX>=(a.b4u.bLe.data.length*32|0)?0:1;},EMG=a=>{let b,c,d,e;b=a.cjk;if(b>=0){c=b/32|0;d=a.b4u.bLe.data;d[c]=d[c]&(1<<(b%32|0)^(-1));a.cjk=(-1);return;}e=new BP;X(e);J(e);},Pr=a=>{let b,c,d;if(OD(a)){a.cjk=a.bRX;if(a.cJw===null)a.cJw=A9B(a.b4u.bMW);b=a.cJw.data;c=a.bRX;a.bRX=c+1|0;d=b[c];a.bRX +=Cu6(a);return d;}d=new Kx;X(d);J(d);},BAV=N(),EnP=(a,b,c)=>{Bb(c,b.bJm.cfx);},DCx=(a,b)=>{return b instanceof BAV;},FaB=a=>{return 3;},E2B=N(),E_8=N(),EPq=N(),CrQ=N(),Cou=null,EVl=null,BDq=()=>{BDq=Z(CrQ);Fl6();},Fl6=()=>{Cou=new Bnd;EVl=new BVG;},DpA=N(),B53=BH,CtB=null,AHq=null,BrB=null,AEh=()=>{AEh=Z(DpA);D3X();},BDa=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p;AEh();d=BlS(b);c.ceU=DS(CN(d,O(0, 2147483648)),BH)?0:1;e=CN(d,O(4294967295, 1048575));f=Cp(GS(d,52))&2047;if(DS(e,BH)&&!f){c.b3X=BH;c.b7J=0;return;}if(f)e +=Gu(e,O(0, 1048576));else{e=EU(e,1);while(DS(CN(e,O(0, 1048576)),BH)){e=EU(e,1);f=f+(-1)|0;}}g=BrB.data;h=f<<16>>16;i=0;j=g.length;if(i<=j){k=j-1|0;a:{b:{while(true){if(i>k)break b;l=(i+k|0)/2|0;j=C5(g[l],h);if(!j)break;if(j<=0)i=l+1|0;else k=l-1|0;}break a;}l=( -i|0)-1|0;}if(l<0)l= -l|0;h=l+1|0;k=12+(f-g[h]|0)|0;m=AD$(e,AHq.data[h],k);if(IH(m,B53)){while(Tx(m,B53)<=0){l=l+(-1)|0;m=BU(CT(m,V(10)),V(9));}g=BrB.data;h=l+1|0;k=12+(f-g[h]|0)|0;m=AD$(e,AHq.data[h],k);}e=EU(e,1);d=BU(e,V(1));g=AHq.data;h=l+1|0;n= +g[h];f=k-1|0;n=AD$(d,n,f);o=DeD(m,AD$(CE(e,V(1)),AHq.data[h],f));p=CPo(m,n);h=Tx(o,p);e=h>0?CT(OB(m,o),o):h<0?BU(CT(OB(m,p),p),p):CT(OB(BU(m,CY(p,V(2))),p),p);if(Tx(e,O(2808348672, 232830643))>=0)while(true){l=l+1|0;e=OB(e,V(10));if(Tx(e,O(2808348672, 232830643))<0)break;}else if(Tx(e,O(1569325056, 23283064))<0){l=l+(-1)|0;e=CT(e,V(10));}c.b3X=e;c.b7J=l-330|0;return;}c=new Bt;X(c);J(c);},DeD=(b,c)=>{let d,e;AEh();d=V(1);while(true){e=CT(d,V(10));if(Tx(OB(b,e),OB(c,e))<=0)break;d=e;}return d;},CPo=(b,c)=>{let d, +e;AEh();d=V(1);while(true){e=CT(d,V(10));if(Tx(OB(b,e),OB(c,e))>=0)break;d=e;}return d;},AD$=(b,c,d)=>{let e,f,g,h,i,j,k,l;AEh();e=CN(b,V(65535));f=CN(GD(b,16),V(65535));g=CN(GD(b,32),V(65535));h=CN(GD(b,48),V(65535));i=CN(c,V(65535));j=CN(GD(c,16),V(65535));k=CN(GD(c,32),V(65535));l=CN(GD(c,48),V(65535));return BU(BU(BU(EU(CT(l,h),32+d|0),EU(BU(CT(l,g),CT(k,h)),16+d|0)),EU(BU(BU(CT(l,f),CT(k,g)),CT(j,h)),d)),GD(BU(BU(BU(CT(k,e),CT(j,f)),CT(i,g)),EU(BU(BU(BU(CT(l,e),CT(k,f)),CT(j,g)),CT(i,h)),16)),32-d|0));},D3X +=()=>{B53=OB(V(-1),V(10));CtB=EmY();AHq=Br$([O(3251292512, 2194092222),O(1766094183, 3510547556),O(553881887, 2808438045),O(443105509, 2246750436),O(3285949193, 3594800697),O(910772436, 2875840558),O(2446604867, 2300672446),O(2196580869, 3681075914),O(2616258154, 2944860731),O(1234013064, 2355888585),O(1974420903, 3769421736),O(720543263, 3015537389),O(1435428070, 2412429911),O(578697993, 3859887858),O(2180945313, 3087910286),O(885762791, 2470328229),O(3135207384, 3952525166),O(1649172448, 3162020133),O(3037324877, 2529616106), +O(3141732885, 4047385770),O(2513386308, 3237908616),O(1151715587, 2590326893),O(983751480, 4144523029),O(1645994643, 3315618423),O(3034782633, 2652494738),O(3996658754, 4243991581),O(2338333544, 3395193265),O(1870666835, 2716154612),O(4073513845, 2172923689),O(3940641775, 3476677903),O(575533043, 2781342323),O(2178413352, 2225073858),O(2626467905, 3560118173),O(3819161242, 2848094538),O(478348616, 2278475631),O(3342338164, 3645561009),O(3532863990, 2916448807),O(1108304273, 2333159046),O(55299919, 3733054474), +O(903233395, 2986443579),O(1581580175, 2389154863),O(1671534821, 3822647781),O(478234397, 3058118225),O(382587518, 2446494580),O(612140029, 3914391328),O(2207698941, 3131513062),O(48172235, 2505210450),O(77075576, 4008336720),O(61660460, 3206669376),O(3485302205, 2565335500),O(1281516232, 4104536801),O(166219527, 3283629441),O(3568949458, 2626903552),O(2274345296, 4203045684),O(2678469696, 3362436547),O(424788838, 2689949238),O(2057817989, 2151959390),O(3292508783, 3443135024),O(3493000485, 2754508019),O(3653393847, 2203606415), +O(1550462860, 3525770265),O(1240370288, 2820616212),O(3569276608, 2256492969),O(3133862195, 3610388751),O(1648096297, 2888311001),O(459483578, 2310648801),O(3312154103, 3697038081),O(1790729823, 2957630465),O(1432583858, 2366104372),O(3151127633, 3785766995),O(2520902106, 3028613596),O(1157728226, 2422890877),O(2711358621, 3876625403),O(3887073815, 3101300322),O(1391672133, 2481040258),O(1367681954, 3969664413),O(2812132482, 3175731530),O(2249705985, 2540585224),O(1022549199, 4064936359),O(1677032818, 3251949087), +O(3918606632, 2601559269),O(3692790234, 4162494831),O(2095238728, 3329995865),O(1676190982, 2663996692),O(3540899031, 4262394707),O(1114732307, 3409915766),O(32792386, 2727932613),O(1744220827, 2182346090),O(2790753324, 3491753744),O(3091596118, 2793402995),O(2473276894, 2234722396),O(2239256113, 3575555834),O(2650398349, 2860444667),O(402331761, 2288355734),O(2361717736, 3661369174),O(2748367648, 2929095339),O(3057687578, 2343276271),O(3174313206, 3749242034),O(3398444024, 2999393627),O(1000768301, 2399514902), +O(2460222741, 3839223843),O(3686165111, 3071379074),O(3807925548, 2457103259),O(3515700499, 3931365215),O(2812560399, 3145092172),O(532061401, 2516073738),O(4287272078, 4025717980),O(3429817663, 3220574384),O(3602847589, 2576459507),O(2328582306, 4122335212),O(144878926, 3297868170),O(115903141, 2638294536),O(2762425404, 4221271257),O(491953404, 3377017006),O(3829536560, 2701613604),O(3922622707, 2161290883),O(1122235577, 3458065414),O(1756781920, 2766452331),O(546432077, 2213161865),O(874291324, 3541058984), +O(1558426518, 2832847187),O(3823721592, 2266277749),O(3540974170, 3626044399),O(3691772795, 2900835519),O(3812411695, 2320668415),O(1804891416, 3713069465),O(1443913133, 2970455572),O(3732110884, 2376364457),O(2535403578, 3802183132),O(310335944, 3041746506),O(3684242592, 2433397204),O(3317807769, 3893435527),O(936259297, 3114748422),O(3325987815, 2491798737),O(1885606668, 3986877980),O(1508485334, 3189502384),O(2065781726, 2551601907),O(4164244222, 4082563051),O(2472401918, 3266050441),O(1118928075, 2612840353), +O(931291461, 4180544565),O(745033169, 3344435652),O(3173006913, 2675548521),O(3358824142, 4280877634),O(3546052773, 3424702107),O(1118855300, 2739761686),O(36090780, 2191809349),O(1775732167, 3506894958),O(3138572652, 2805515966),O(1651864662, 2244412773),O(1783990001, 3591060437),O(4004172378, 2872848349),O(4062331362, 2298278679),O(3922749802, 3677245887),O(1420212923, 2941796710),O(1136170338, 2353437368),O(958879082, 3765499789),O(1626096725, 3012399831),O(441883920, 2409919865),O(707014273, 3855871784), +O(1424604878, 3084697427),O(3716664280, 2467757941),O(4228675929, 3948412706),O(2523947284, 3158730165),O(2019157827, 2526984132),O(4089645983, 4043174611),O(2412723327, 3234539689),O(2789172121, 2587631751),O(2744688475, 4140210802),O(477763862, 3312168642),O(2959191467, 2649734913),O(3875712888, 4239575861),O(2241576851, 3391660689),O(2652254940, 2713328551),O(1262810493, 2170662841),O(302509870, 3473060546),O(3677981733, 2778448436),O(2083391927, 2222758749),O(756446706, 3556413999),O(1464150824, 2845131199), +O(2030314118, 2276104959),O(671522212, 3641767935),O(537217769, 2913414348),O(2147761134, 2330731478),O(2577424355, 3729170365),O(2061939484, 2983336292),O(4226531965, 2386669033),O(1608490388, 3818670454),O(2145785770, 3054936363),O(3434615534, 2443949090),O(1200417559, 3910318545),O(960334047, 3128254836),O(4204241074, 2502603868),O(1572824964, 4004166190),O(1258259971, 3203332952),O(3583588354, 2562666361),O(4015754449, 4100266178),O(635623181, 3280212943),O(2226485463, 2624170354),O(985396364, 4198672567), +O(3365297469, 3358938053),O(115257597, 2687150443),O(1810192996, 2149720354),O(319328417, 3439552567),O(2832443111, 2751642053),O(3983941407, 2201313642),O(2938332415, 3522101828),O(4068652850, 2817681462),O(1536935362, 2254145170),O(2459096579, 3606632272),O(249290345, 2885305818),O(1917419194, 2308244654),O(490890333, 3693191447),O(2969692644, 2954553157),O(657767197, 2363642526),O(3629407892, 3781828041),O(2044532855, 3025462433),O(3353613202, 2420369946),O(3647794205, 3872591914),O(3777228823, 3098073531), +O(2162789599, 2478458825),O(3460463359, 3965534120),O(2768370687, 3172427296),O(1355703090, 2537941837),O(3028118404, 4060706939),O(3281488183, 3248565551),O(1766197087, 2598852441),O(1107928421, 4158163906),O(27349277, 3326531125),O(21879422, 2661224900),O(35007075, 4257959840),O(28005660, 3406367872),O(2599384905, 2725094297),O(361521006, 2180075438),O(4014407446, 3488120700),O(3211525957, 2790496560),O(2569220766, 2232397248),O(3251759766, 3571835597),O(883420894, 2857468478),O(2424723634, 2285974782),O(443583977, 3657559652), +O(2931847559, 2926047721),O(1486484588, 2340838177),O(3237368801, 3745341083),O(12914663, 2996272867),O(2587312108, 2397018293),O(3280705914, 3835229269),O(3483558190, 3068183415),O(2786846552, 2454546732),O(1022980646, 3927274772),O(3395364895, 3141819817),O(998304997, 2513455854),O(3315274914, 4021529366),O(1793226472, 3217223493),O(3152568096, 2573778794),O(2467128576, 4118046071),O(1114709402, 3294436857),O(3468747899, 2635549485),O(1255029343, 4216879177),O(3581003852, 3373503341),O(2005809622, 2698802673), +O(3322634616, 2159042138),O(162254630, 3454467422),O(2706784082, 2763573937),O(447440347, 2210859150),O(715904555, 3537374640),O(572723644, 2829899712),O(3035159293, 2263919769),O(2279274491, 3622271631),O(964426134, 2897817305),O(771540907, 2318253844),O(2952452370, 3709206150),O(2361961896, 2967364920),O(1889569516, 2373891936),O(1305324308, 3798227098),O(2762246365, 3038581678),O(3927784010, 2430865342),O(2848480580, 3889384548),O(3996771382, 3111507638),O(620436728, 2489206111),O(3569679143, 3982729777), +O(1137756396, 3186183822),O(3487185494, 2548947057),O(2143522954, 4078315292),O(4291798741, 3262652233),O(856458615, 2610121787),O(2229327243, 4176194859),O(2642455254, 3340955887),O(395977285, 2672764710),O(633563656, 4276423536),O(3942824761, 3421138828),O(577279431, 2736911063),O(2179810463, 2189528850),O(3487696741, 3503246160),O(2790157393, 2802596928),O(3950112833, 2242077542),O(2884206696, 3587324068),O(4025352275, 2869859254),O(4079275279, 2295887403),O(1372879692, 3673419846),O(239310294, 2938735877), +O(2768428613, 2350988701),O(2711498862, 3761581922),O(451212171, 3009265538),O(2078956655, 2407412430),O(3326330649, 3851859888),O(84084141, 3081487911),O(3503241150, 2465190328),O(451225085, 3944304526),O(3796953905, 3155443620),O(3037563124, 2524354896),O(3142114080, 4038967834),O(3372684723, 3231174267),O(980160860, 2584939414),O(3286244294, 4135903062),O(911008517, 3308722450),O(728806813, 2646977960),O(1166090902, 4235164736),O(73879262, 3388131789),O(918096869, 2710505431),O(4170451332, 2168404344),O(4095741754, 3469446951), +O(2417599944, 2775557561),O(1075086496, 2220446049),O(3438125312, 3552713678),O(173519872, 2842170943),O(1856802816, 2273736754),O(393904128, 3637978807),O(2892103680, 2910383045),O(2313682944, 2328306436),O(1983905792, 3725290298),O(3305111552, 2980232238),O(67108864, 2384185791),O(2684354560, 3814697265),O(2147483648, 3051757812),O(0, 2441406250),O(0, 3906250000),O(0, 3125000000),O(0, 2500000000),O(0, 4000000000),O(0, 3200000000),O(0, 2560000000),O(0, 4096000000),O(0, 3276800000),O(0, 2621440000),O(0, 4194304000), +O(0, 3355443200),O(0, 2684354560),O(0, 2147483648),O(3435973836, 3435973836),O(1889785610, 2748779069),O(2370821947, 2199023255),O(3793315115, 3518437208),O(457671715, 2814749767),O(2943117749, 2251799813),O(3849994940, 3602879701),O(2221002492, 2882303761),O(917808535, 2305843009),O(3186480574, 3689348814),O(3408177918, 2951479051),O(1867548875, 2361183241),O(1270091283, 3777893186),O(157079567, 3022314549),O(984657113, 2417851639),O(3293438299, 3868562622),O(916763721, 3094850098),O(2451397895, 2475880078), +O(3063243173, 3961408125),O(2450594538, 3169126500),O(1960475630, 2535301200),O(3136761009, 4056481920),O(2509408807, 3245185536),O(1148533586, 2596148429),O(3555640657, 4153837486),O(1985519066, 3323069989),O(2447408712, 2658455991),O(2197867021, 4253529586),O(899300158, 3402823669),O(1578433585, 2722258935),O(1262746868, 2177807148),O(1161401530, 3484491437),O(3506101601, 2787593149),O(3663874740, 2230074519),O(3285219207, 3568119231),O(1769181906, 2854495385),O(1415345525, 2283596308),O(1405559381, 3653754093), +O(2842434423, 2923003274),O(3132940998, 2338402619),O(2435725219, 3741444191),O(1089586716, 2993155353),O(2589656291, 2394524282),O(707476229, 3831238852),O(3142961361, 3064991081),O(1655375629, 2451992865),O(2648601007, 3923188584),O(2977874265, 3138550867),O(664312493, 2510840694),O(2780886908, 4017345110),O(2224709526, 3213876088),O(3497754539, 2571100870),O(1301439967, 4113761393),O(2759138892, 3291009114),O(3066304573, 2632807291),O(3188100398, 4212491666),O(1691486859, 3369993333),O(3071176406, 2695994666), +O(1597947665, 2156795733),O(1697722806, 3450873173),O(3076165163, 2760698538),O(4178919049, 2208558830),O(2391303182, 3533694129),O(2772036005, 2826955303),O(3935615722, 2261564242),O(2861011319, 3618502788),O(4006795973, 2894802230),O(3205436779, 2315841784),O(2551718468, 3705346855),O(2041374775, 2964277484),O(2492093279, 2371421987),O(551375410, 3794275180),O(441100328, 3035420144),O(1211873721, 2428336115),O(1938997954, 3885337784),O(2410191822, 3108270227),O(210166539, 2486616182),O(1195259923, 3978585891), +O(97214479, 3182868713),O(1795758501, 2546294970),O(2873213602, 4074071952),O(580583963, 3259257562),O(3041447548, 2607406049),O(2289335700, 4171849679),O(2690462019, 3337479743),O(3870356534, 2669983794),O(3615590076, 4271974071),O(2033478602, 3417579257),O(4203763259, 2734063405),O(3363010607, 2187250724),O(2803836594, 3499601159),O(3102062734, 2799680927),O(763663269, 2239744742),O(2080854690, 3583591587),O(4241664129, 2866873269),O(4252324763, 2293498615),O(2508752324, 3669597785),O(2007001859, 2935678228), +O(3323588406, 2348542582),O(1881767613, 3757668132),O(4082394468, 3006134505),O(3265915574, 2404907604),O(2648484541, 3847852167),O(400800715, 3078281734),O(1179634031, 2462625387),O(2746407909, 3940200619),O(3056119786, 3152160495),O(2444895829, 2521728396),O(2193846408, 4034765434),O(2614070585, 3227812347),O(373269550, 2582249878),O(4033205117, 4131599804),O(4085557553, 3305279843),O(691465664, 2644223875),O(1106345063, 4230758200),O(885076050, 3384606560),O(708060840, 2707685248),O(2284435591, 2166148198), +O(2796103486, 3465837117),O(518895870, 2772669694),O(1274110155, 2218135755),O(2038576249, 3549017208),O(3348847917, 2839213766),O(1820084875, 2271371013),O(2053142340, 3634193621),O(783520413, 2907354897),O(3203796708, 2325883917),O(1690100896, 3721414268),O(3070067635, 2977131414),O(3315047567, 2381705131),O(3586089190, 3810728210),O(2868871352, 3048582568),O(4013084000, 2438866054),O(3843954022, 3902185687),O(1357176299, 3121748550),O(1085741039, 2497398840),O(1737185663, 3995838144),O(2248741989, 3196670515), +O(1798993591, 2557336412),O(3737383206, 4091738259),O(3848900024, 3273390607),O(1361133101, 2618712486),O(459826043, 4189939978),O(2085847752, 3351951982),O(4245658579, 2681561585),O(2498086431, 4290498537),O(280482227, 3432398830),O(224385781, 2745919064),O(1038502084, 2196735251),O(4238583712, 3514776401),O(2531873511, 2811821121),O(1166505349, 2249456897),O(2725402018, 3599131035),O(2180321615, 2879304828),O(3462244210, 2303443862),O(2103616899, 3685510180),O(1682893519, 2948408144),O(2205308275, 2358726515), +O(3528493240, 3773962424),O(3681788051, 3019169939),O(3804423900, 2415335951),O(74124026, 3864537523),O(1777286139, 3091630018),O(3139815829, 2473304014),O(2446724950, 3957286423),O(3675366878, 3165829138),O(363313125, 2532663311),O(3158281377, 4052261297),O(808638183, 3241809038),O(2364897465, 2593447230),O(3783835944, 4149515568),O(450088378, 3319612455),O(360070702, 2655689964),O(2294100042, 4249103942),O(117293115, 3399283154),O(952827951, 2719426523),O(2480249279, 2175541218),O(3109405388, 3480865949), +O(3346517769, 2784692759),O(3536207675, 2227754207),O(2221958443, 3564406732),O(59579836, 2851525386),O(3483637705, 2281220308),O(419859574, 3649952494),O(1194881118, 2919961995),O(955904894, 2335969596),O(4106428209, 3737551353),O(708162189, 2990041083),O(2284516670, 2392032866),O(1937239754, 3827252586),O(690798344, 3061802069),O(1411632134, 2449441655),O(2258611415, 3919106648),O(3524876050, 3135285318),O(242920462, 2508228255),O(388672740, 4013165208),O(2028925110, 3210532166),O(764146629, 2568425733),O(363641147, 4109481173), +O(2008899836, 3287584938),O(3325106787, 2630067950),O(1025203564, 4208108721),O(4256136688, 3366486976),O(2545915891, 2693189581),O(1177739254, 2154551665),O(1884382806, 3447282664),O(2366499704, 2757826131),O(1034206304, 2206260905),O(1654730086, 3530017448),O(3041770987, 2824013958),O(4151403708, 2259211166),O(629291719, 3614737867),O(3080413753, 2891790293),O(4182317920, 2313432234),O(4114728295, 3701491575),O(3291782636, 2961193260),O(2633426109, 2368954608),O(3354488315, 3790327373),O(106610275, 3032261899), +O(944281679, 2425809519),O(3228837605, 3881295230),O(2583070084, 3105036184),O(2925449526, 2484028947),O(1244745405, 3974446316),O(136802865, 3179557053),O(1827429210, 2543645642),O(3782880196, 4069833027),O(1308317238, 3255866422),O(3623634168, 2604693137),O(2361840832, 4167509020),O(1889472666, 3334007216),O(652584673, 2667205773),O(185142018, 4267529237),O(2725093992, 3414023389),O(3039068653, 2731218711),O(1572261463, 2184974969),O(4233605259, 3495959950),O(3386884207, 2796767960),O(2709507366, 2237414368), +O(3476218326, 3579862989),O(3639968120, 2863890391),O(2052981037, 2291112313),O(2425776200, 3665779701),O(1081627501, 2932623761),O(6308541, 2346099009),O(1728080585, 3753758414),O(2241457927, 3003006731),O(934172882, 2402405385),O(1494676612, 3843848616),O(336747830, 3075078893),O(1987385183, 2460063114),O(602835915, 3936100983),O(2200255650, 3148880786),O(901211061, 2519104629),O(3159924616, 4030567406),O(1668946233, 3224453925),O(1335156987, 2579563140),O(2136251179, 4127301024),O(2567994402, 3301840819), +O(2913388981, 2641472655),O(366455074, 4226356249),O(1152157518, 3381084999),O(1780719474, 2704867999),O(2283569038, 2163894399),O(1076730083, 3462231039),O(1720377526, 2769784831),O(517308561, 2215827865),O(827693699, 3545324584),O(1521148418, 2836259667),O(3793899112, 2269007733),O(916277824, 3630412374),O(1592015718, 2904329899),O(2132606034, 2323463919),O(835189277, 3717542271),O(4104125258, 2974033816),O(2424306747, 2379227053),O(3019897337, 3806763285),O(2415917869, 3045410628),O(3650721214, 2436328502), +O(2405180105, 3898125604),O(2783137543, 3118500483),O(3944496953, 2494800386),O(298240911, 3991680619),O(1097586188, 3193344495),O(878068950, 2554675596),O(3981890698, 4087480953),O(608532181, 3269984763),O(2204812663, 2615987810),O(3527700261, 4185580496),O(1963166749, 3348464397),O(4147513777, 2678771517),O(3200048207, 4286034428),O(4278025484, 3428827542),O(1704433468, 2743062034),O(2222540234, 2194449627),O(120090538, 3511119404),O(955065889, 2808895523),O(2482039630, 2247116418),O(3112269949, 3595386269), +O(3348809418, 2876309015),O(2679047534, 2301047212),O(850502218, 3681675540),O(680401775, 2945340432),O(3121301797, 2356272345),O(699115580, 3770035753),O(2277279382, 3016028602),O(103836587, 2412822882),O(1025131999, 3860516611),O(4256079436, 3088413288),O(827883168, 2470730631),O(3901593088, 3953169009)]);BrB=BeN([(-70),(-66),(-63),(-60),(-56),(-53),(-50),(-46),(-43),(-40),(-36),(-33),(-30),(-26),(-23),(-20),(-16),(-13),(-10),(-6),(-3),0,4,7,10,14,17,20,23,27,30,33,37,40,43,47,50,53,57,60,63,67,70,73,77,80, +83,87,90,93,97,100,103,107,110,113,116,120,123,126,130,133,136,140,143,146,150,153,156,160,163,166,170,173,176,180,183,186,190,193,196,200,203,206,210,213,216,219,223,226,229,233,236,239,243,246,249,253,256,259,263,266,269,273,276,279,283,286,289,293,296,299,303,306,309,312,316,319,322,326,329,332,336,339,342,346,349,352,356,359,362,366,369,372,376,379,382,386,389,392,396,399,402,406,409,412,415,419,422,425,429,432,435,439,442,445,449,452,455,459,462,465,469,472,475,479,482,485,489,492,495,499,502,505,508,512, +515,518,522,525,528,532,535,538,542,545,548,552,555,558,562,565,568,572,575,578,582,585,588,592,595,598,601,605,608,611,615,618,621,625,628,631,635,638,641,645,648,651,655,658,661,665,668,671,675,678,681,685,688,691,695,698,701,704,708,711,714,718,721,724,728,731,734,738,741,744,748,751,754,758,761,764,768,771,774,778,781,784,788,791,794,797,801,804,807,811,814,817,821,824,827,831,834,837,841,844,847,851,854,857,861,864,867,871,874,877,881,884,887,891,894,897,900,904,907,910,914,917,920,924,927,930,934,937, +940,944,947,950,954,957,960,964,967,970,974,977,980,984,987,990,993,997,1000,1003,1007,1010,1013,1017,1020,1023,1027,1030,1033,1037,1040,1043,1047,1050,1053,1057,1060,1063,1067,1070,1073,1077,1080,1083,1086,1090,1093,1096,1100,1103,1106,1110,1113,1116,1120,1123,1126,1130,1133,1136,1140,1143,1146,1150,1153,1156,1160,1163,1166,1170,1173,1176,1180,1183,1186,1189,1193,1196,1199,1203,1206,1209,1213,1216,1219,1223,1226,1229,1233,1236,1239,1243,1246,1249,1253,1256,1259,1263,1266,1269,1273,1276,1279,1282,1286,1289, +1292,1296,1299,1302,1306,1309,1312,1316,1319,1322,1326,1329,1332,1336,1339,1342,1346,1349,1352,1356,1359,1362,1366,1369,1372,1376,1379,1382,1385,1389,1392,1395,1399,1402,1405,1409,1412,1415,1419,1422,1425,1429,1432,1435,1439,1442,1445,1449,1452,1455,1459,1462,1465,1469,1472,1475,1478,1482,1485,1488,1492,1495,1498,1502,1505,1508,1512,1515,1518,1522,1525,1528,1532,1535,1538,1542,1545,1548,1552,1555,1558,1562,1565,1568,1572,1575,1578,1581,1585,1588,1591,1595,1598,1601,1605,1608,1611,1615,1618,1621,1625,1628,1631, +1635,1638,1641,1645,1648,1651,1655,1658,1661,1665,1668,1671,1674,1678,1681,1684,1688,1691,1694,1698,1701,1704,1708,1711,1714,1718,1721,1724,1728,1731,1734,1738,1741,1744,1748,1751,1754,1758,1761,1764,1767,1771,1774,1777,1781,1784,1787,1791,1794,1797,1801,1804,1807,1811,1814,1817,1821,1824,1827,1831,1834,1837,1841,1844,1847,1851,1854,1857,1861,1864,1867,1870,1874,1877,1880,1884,1887,1890,1894,1897,1900,1904,1907,1910,1914,1917,1920,1924,1927,1930,1934,1937,1940,1944,1947,1950,1954,1957,1960,1963,1967,1970,1973, +1977,1980,1983,1987,1990,1993,1997,2000,2003,2007,2010,2013,2017,2020,2023,2027,2030,2033,2037,2040,2043,2047,2050,2053,2057,2060,2063,2066,2070,2073,2076,2080,2083,2086,2090,2093,2096,2100,2103,2106,2110,2113,2116,2120]);}; +function Bnd(){let a=this;F.call(a);a.b3X=BH;a.b7J=0;a.ceU=0;} +let D01=a=>{return;},EmY=()=>{let a=new Bnd();D01(a);return a;}; +function COW(){let a=this;F.call(a);a.clL=0;a.c4O=null;} +let Ecm=a=>{return a.clL;},E4_=a=>{let b;if(!a.clL){b=new Kx;X(b);J(b);}a.clL=0;return a.c4O.cwg;}; +function Bfn(){let a=this;F.call(a);a.bLy=null;a.bO7=null;} +let B8J=(a,b,c)=>{a.bLy=b.b2();a.bO7=c;},A7b=(a,b)=>{let c=new Bfn();B8J(c,a,b);return c;},ExM=a=>{let b,c,d,e,f,g;b=HT(a.bO7);c=a.bLy;if(c===null)d=E(2);else{d=new S;T(d);L(d,E(842));e=0;while(true){f=c.data;if(e>=f.length)break;if(e>0)L(d,E(50));D6(d,f[e]);e=e+1|0;}L(d,E(843));d=Q(d);}g=new S;T(g);b=H(g,b);Bb(b,32);H(b,d);return Q(g);},EiK=(a,b,c)=>{let d,e,f,g,h;d=a.bO7;NQ();if(d!==AA1){if(d===ABD){e=new Bfn;f=Hr(6);g=f.data;h=a.bLy.data;g[0]=h[0]+b;g[1]=h[1]+c;g[2]=h[2]+b;g[3]=h[3]+c;g[4]=h[4]+b;g[5]=h[5] ++c;B8J(e,f,d);return e;}h=a.bLy.data;if(h.length==2)return A7b(Gh([h[0]+b,h[1]+c]),d);e=new BV;X(e);J(e);}e=new Bfn;f=Hr(7);g=f.data;h=a.bLy.data;g[0]=h[0];g[1]=h[1];g[2]=h[2];g[3]=h[3];g[4]=h[4];g[5]=h[5]+b;g[6]=h[6]+c;B8J(e,f,d);return e;},E9W=(a,b,c,d)=>{let e,f,g,h,i,j;e=a.bO7;NQ();if(e===AA1){f=new Jn;g=a.bLy.data;Kz(f,g[5],g[6]);b=H4(f,b);h=a.bLy.data;i=h[3];j=h[4];return A7b(Gh([h[0]*d,h[1]*d,h[2]+c,i,j,b.bGK,b.bGL]),a.bO7);}g=a.bLy.data;if(g.length==2){b=H4(BA(g[0],g[1]),b);return A7b(Gh([b.bGK,b.bGL]), +a.bO7);}b=new BV;X(b);J(b);}; +function A5T(){let a=this;F.call(a);a.bHS=0;a.bLv=0;a.bZQ=0;} +let CSu=a=>{a.bZQ=(-1);},VZ=(a,b)=>{let c,d,e,f;if(b>=0&&b<=a.bLv){a.bHS=b;if(b{a.bLv=a.bHS;a.bHS=0;a.bZQ=(-1);return a;},IL=a=>{return a.bLv-a.bHS|0;},NO=a=>{return a.bHS>=a.bLv?0:1;},BHQ=N(0),BUQ=N(A5T),CCG=b=>{let c,d,e;if(b<0){c=new Bt;d=new S;T(d);BE(H(d,E(1714)),b);Bp(c,Q(d));J(c);}e=Fd(b);return Cmk(0,b,0,e.data,e);},B3q=b=>{let c,d,e,f;c=b.data.length;if(c>=0){d=c+0| +0;if(d<=c){e=Cmk(0,c,0,b.data,b);e.bHS=0;e.bLv=d;return e;}}f=new EN;X(f);J(f);},BSz=(a,b,c,d)=>{let e,f,g,h;if(d>=0&&c>=0&&(c+d|0)<=b.data.length){if(d<=IL(a)){e=a.bHS;f=a;g=new Uint16Array(f.bXm.buffer,f.bXm.byteOffset+(e*2|0)|0,d);b.data.set(g,c);a.bHS=a.bHS+d|0;return a;}h=new B0m;X(h);J(h);}h=new EN;X(h);J(h);},B6k=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=0;d=b.bGI.length;if(!B8$(a)){if(d>=c&&d<=b.bGI.length){e=d-c|0;if(IL(a)>=e){f=a.bHS;g=a;while(true){h=d+(-1)|0;if(d<=0)break;i=g.bXm;j=f+1|0;k=c+1|0;i[f]=Bn(b, +c);d=h;f=j;c=k;}a.bHS=a.bHS+e|0;return a;}b=new Bgg;X(b);J(b);}b=new EN;X(b);J(b);}b=new ALI;X(b);J(b);},CKR=a=>{let b,c;b=a.cAF;if(b===null){c=new BV;X(c);J(c);}return b;}; +function BGE(){A5T.call(this);this.cRW=null;} +let CSU=b=>{let c,d,e;if(b<0){c=new Bt;d=new S;T(d);BE(H(d,E(1714)),b);Bp(c,Q(d));J(c);}e=BD(b);c=Bh7(e,0,e.data,0,0);c.bLv=b;return c;},CmV=(b,c,d)=>{let e,f;CsB(c,d,b.data.length);e=b.data;f=Bh7(b,0,e,0,0);f.bHS=c;f.bLv=c+d|0;return f;},CQP=b=>{return CmV(b,0,b.data.length);},Clb=(a,b,c,d)=>{let e,f,g;if(d>=0&&c>=0&&(c+d|0)<=b.data.length){if(d<=IL(a)){e=a.bHS;f=a;g=new Int8Array(f.bTQ.buffer,f.bTQ.byteOffset+e|0,d);b.data.set(g,c);a.bHS=a.bHS+d|0;return a;}f=new B0m;X(f);J(f);}f=new EN;X(f);J(f);},Crv=(a, +b,c,d)=>{let e,f,g,h;if(d){e=a;if(!e.ccL){if(d>=0&&c>=0&&(c+d|0)<=b.data.length){if(d<=IL(a)){f=a.bHS;g=new Int8Array(b.data.buffer,c,d);e.bTQ.set(g,f);a.bHS=a.bHS+d|0;return a;}h=new Bgg;X(h);J(h);}h=new EN;X(h);J(h);}h=new ALI;X(h);J(h);}return a;},B2N=a=>{let b,c;b=a.cn$;if(b===null){c=new BV;X(c);J(c);}return b;},AYS=N(),Doi=(a,b)=>{a.zF(b,0,b.data.length);},Fr$=a=>{return;}; +function CNj(){let a=this;AYS.call(a);a.b0Q=null;a.b1K=0;} +let EA0=a=>{a.b0Q=BD(32);},BaB=()=>{let a=new CNj();EA0(a);return a;},AY$=(a,b,c,d)=>{let e,f,g,h,i;CzN(a,a.b1K+d|0);e=0;while(e{let c;c=a.b0Q.data.length;if(c{return AQU(a.b0Q,a.b1K);},E3L=N(),ChJ=b=>{let c,d;b=b;c=AEG(b);if(c!=(-1)){if(c!=11){if(c!=12){if(c>=1&&c<=8)return ((c<<8)+AEG(b)|0)&65535;if(c>=128)return (((c-96|0)<<8)+AEG(b)|0)&65535;return c&65535;}return ((AEG(b) +<<8)+AEG(b)|0)&65535;}d=AEG(b);if(d<128)return (57344+d|0)&65535;return d&65535;}return (-1);},BXX=N(0); +function B1o(){let a=this;F.call(a);a.b1A=null;a.bQ9=0;a.cxX=0;} +let B5v=0,AYO=()=>{AYO=Z(B1o);ETf();},Ejm=(a,b)=>{AYO();a.bQ9=0;a.cxX=0;a.b1A=b;},DbE=a=>{let b=new B1o();Ejm(b,a);return b;},Bln=a=>{let b;if(a.bQ9!=a.b1A.dV()){if(a.bQ9>a.b1A.dV()){b=new BP;X(b);J(b);}return a.b1A.cf(a.bQ9);}return null;},CnY=a=>{let b;if(a.bQ9=a.b1A.dV()){b=new C4;X(b);J(b);}}a.bQ9=a.bQ9+1|0;if(Df()){AYO();if(!B5v&&a.bQ9>a.b1A.dV()){b=new C4;X(b);J(b);}}return;}b=new BP;X(b);J(b);},Emd=a=>{let b;b=new Db0;b.cWA=a.bQ9;return b;},E_E=(a,b,c)=>{let d;d +=a.cxX+1|0;a.cxX=d;if(d<=999){a.bQ9=b.cWA;return;}J(EC(E(1715),c));},ETf=()=>{B5v=0;}; +function KW(){F.call(this);this.bII=null;} +let WQ=(a,b)=>{a.bII=b;},Mz=a=>{a.bII.tB();},Eyi=a=>{return a.bII.zH();},Dw1=(a,b,c)=>{a.bII.zI(b,c);}; +function B3R(){KW.call(this);this.cwV=null;} +let BNF=0,A_h=()=>{A_h=Z(B3R);D07();},DF1=a=>{let b,c;while(a.bII.mL()!==null){b=Ki(a.bII.mL());Ii();if(b!==A8h)return a.bII.mL();while(true){c=a.bII.mL();if(c===null)break;if(Dr((C8(c)).bGP,E(1212)))break;U(a.cwV,c);a.bII.tB();}if(Df()){A_h();if(!BNF&&a.bII.mL()!==null&&!Dr((C8(c)).bGP,E(1212))){c=new C4;X(c);J(c);}}if(a.bII.mL()!==null){if(Df()){A_h();if(!BNF&&!Dr((C8(c)).bGP,E(1212))){c=new C4;X(c);J(c);}}c=a.cwV;b=a.bII.mL();U(c,b);a.bII.tB();}}return null;},D07=()=>{BNF=0;}; +function BQV(){KW.call(this);this.cWX=null;} +let C37=0,Bu1=()=>{Bu1=Z(BQV);ELo();},EFj=a=>{let b,c,d;while(true){b=a.bII.mL();if(b===null)break;c=Ki(b);Ii();if(c!==ANT){if(Df()){Bu1();if(!C37&&Ki(b)===ANT){d=new C4;X(d);J(d);}}return b;}U(a.cWX,b);Mz(a);}return null;},ELo=()=>{C37=0;},C0c=N(KW),EQj=a=>{let b;b=a.bII.mL();if(b===null)return null;return CHp(b);}; +function Djm(){let a=this;KW.call(a);a.c1S=null;a.b3W=null;a.c3H=null;a.cSv=null;} +let FhA=a=>{let b,c,d,e,f;b=a.b3W;if(b===null){c=a.bII.mL();if(c!==null){a:{d=Ki(c);Ii();if(d===AKV){b=new B73;Kk(b,C8(c));CQs(b,a.cSv,a.c3H);d=C0T(b.cqc);e=a.c1S;f=b.cqc;C9(e,f,d);a.bII.tB();while(true){b=a.bII.mL();if(b===null)break a;if(Ki(b)===AKV)break;if(Ki(b)===AUK){a.bII.tB();a.b3W=DbE(Co0(d));break a;}CbC(d,b);a.bII.tB();}J(EC(E(1716),c));}}b=a.b3W;if(b!==null)return Bln(b);return c;}return null;}return Bln(b);},D0a=a=>{let b;b=a.b3W;if(b!==null){CnY(b);if(Bln(a.b3W)===null)a.b3W=null;return;}a.bII.tB();}; +function C6v(){let a=this;KW.call(a);a.ccH=null;a.cP1=null;a.cU7=null;a.czg=null;} +let Fhn=a=>{let b,c,d,e,f,g,h,i,j;a:{while(true){b=a.bII.mL();if(b===null)return null;c=a.ccH.bN_;if(c!==null){d=c.bWw;NK();if(d===Y_){U(a.czg,b);c=Ki(b);Ii();if(c!==AKT)BiO(a.ccH.bN_,b);else{c=a.ccH;if(!c.bN_.c5j)J(EC(E(1717),b));Coh(c);}Mz(a);continue;}}d=Ki(b);Ii();if(d!==AX2)break;U(a.czg,b);c=a.ccH;e=a.cP1;f=a.cU7;if(c.bN_!==null)J(EC(E(1718),b));g=new Crb;Kk(g,C8(b));g.cOl=b;Eg(g);Hi(g,E(1217));h=0;while(!(!Dqf(g)&&!C$o(g))){if(Dqf(g)){Hi(g,E(1719));Eg(g);h=1;continue;}if(!C$o(g))continue;Hi(g,E(1720));Eg(g);g.c0e +=1;}Hi(g,E(39));Eg(g);d=g.cOl;NK();i=BjA(g,e,f,h,d,0,Y_);if(JZ(g)==114){Hi(g,E(1721));Eg(g);e=Ud(g);f=new S;T(f);H(H(f,E(1722)),e);BiO(i,Ia(Q(f),d.bIM));}else if(JZ(g)==33){Hi(g,E(1723));Eg(g);e=Ud(g);f=new S;T(f);H(H(f,E(1722)),e);BiO(i,Ia(Q(f),d.bIM));}g.cpk=i;j=g.c0e;i=i.bXC;if(Bb_(c,i)!==null){if(j)break a;if(PT(c.b9T,i))break a;}if(j)EQ(c.b9T,i);if(!CSn(g.cpk))c.bN_=g.cpk;else D1(c,g.cpk);Mz(a);}return b;}J(EC(E(1724),b));}; +function Dll(){let a=this;KW.call(a);a.b_f=null;a.cLA=null;a.c2e=null;a.csQ=null;} +let Fdq=a=>{let b,c,d,e,f,g,h,i,j;a:{while(true){b=a.bII.mL();if(b===null)return null;c=a.b_f.bN_;if(c!==null){d=c.bWw;NK();if(!(d!==X4&&d!==AHQ)){U(a.csQ,b);c=Ki(b);Ii();if(c===AKT)Coh(a.b_f);else BiO(a.b_f.bN_,b);Mz(a);continue;}}d=Ki(b);Ii();if(d!==AZC)break;U(a.csQ,b);c=a.b_f;e=a.cLA;f=a.c2e;if(c.bN_!==null)J(EC(E(1718),b));g=new C5U;Kk(g,C8(b));g.cQB=b;Eg(g);Hi(g,E(1217));h=0;while(!(!Cl2(g)&&!Djz(g))){if(Cl2(g)){Hi(g,E(1719));Eg(g);h=1;continue;}if(!Djz(g))continue;Hi(g,E(1720));Eg(g);g.cR2=1;}Hi(g,E(1725));Eg(g);d +=g.cQB;NK();d=BjA(g,e,f,h,d,0,X4);g.cm2=d;i=g.cR2;j=d.bXC;if(Bb_(c,j)!==null){if(i)break a;if(PT(c.b9T,j))break a;}if(i)EQ(c.b9T,j);if(!CSn(g.cm2))c.bN_=g.cm2;else D1(c,g.cm2);Mz(a);}return b;}J(EC(E(1724),b));}; +function CM5(){let a=this;KW.call(a);a.b5v=null;a.bQ6=null;a.cAQ=null;} +let Ej5=a=>{let b,c,d,e,f,g,h;while(true){b=a.bII.mL();if(b===null)return null;c=Ki(b);Ii();if(!(!(c!==AXc&&c!==AWn&&c!==AT1&&c!==ATM&&c!==AQw&&c!==APc)?1:0)){if(!(!(C4p(a.bQ6)!==null&&!CF8(a))?0:1))break;U(a.cAQ,b);Mz(a);continue;}a:{b:{c:{d:{e:{f:{U(a.cAQ,b);BPb();switch(CtO.data[c.bGO]){case 1:break e;case 2:break b;case 3:break c;case 4:break f;case 5:break d;case 6:break;default:break a;}if(DFR(a.bQ6)===null)J(EC(E(1726),b));break a;}b=Cu5(a,b,E(1727));b.b_T=b.cjD?0:1;break a;}if(!CF8(a))d=0;else{c=new CGD;Kk(c, +b);b=a.b5v;e=a.bQ6;Eg(c);Hi(c,E(1728));Eg(c);d=PO(AGR(c,b,e));c.deS=d;}b=a.bQ6;c=BOR(d);BKI(b,c);break a;}c=Cu5(a,b,E(1729));c.b_T=0;if(!c.cjD){e=new Dhx;Kk(e,b);b=a.b5v;f=a.bQ6;Eg(e);Hi(e,E(1730));Eg(e);d=PO(AGR(e,b,f));e.daH=d;if(d){c.b_T=1;c.cjD=1;}}break a;}c=new Cv_;Kk(c,b);Eg(c);Hi(c,E(1731));Eg(c);f=Zt(c);c.c7Q=f;b=a.b5v;d=!(a.bQ6.uf(f)===null&&!BXx(b,c.c7Q))?0:1;b=a.bQ6;c=BOR(d);BKI(b,c);break a;}c=new Cje;Kk(c,b);Eg(c);Hi(c,E(1732));Eg(c);g=Ud(c);c.dch=g;b=a.b5v;e=a.bQ6;f=new CmW;h=new Cju;h.c$7=c;h.cRM +=e;h.cPB=b;f.b04=(-1);f.b_s=g;f.cXX=h;Bib(f);d=Cr0(f);if(f.b04{let b,c;b=a.bQ6;c=a.b5v;return EyU(b,c,b);},Cu5=(a,b,c)=>{let d,e;d=C4p(a.bQ6);if(d===null){d=new Ij;e=new S;T(e);H(H(e,E(1734)),c);JV(d,Q(e),b);J(d);}return d;}; +function Cnf(){let a=this;KW.call(a);a.cHq=null;a.cF7=null;a.cIe=null;a.cur=null;} +let Efu=a=>{let b,c,d,e,f,g;while(true){b=a.bII.mL();if(b===null)return null;c=Ki(b);Ii();if(c!==A9b){if(Ki(b)!==AY3)break;U(a.cur,b);d=a.cHq;c=a.cF7;e=a.cIe;if(d.bN_!==null)J(EC(E(1718),b));f=new C3$;Kk(f,C8(b));Eg(f);Hi(f,E(1735));Eg(f);g=f.bHM;NK();b=BjA(f,c,e,1,g,1,AHQ);f.dcb=b;d.bN_=b;Mz(a);continue;}U(a.cur,b);d=a.cHq;e=a.cF7;f=a.cIe;if(d.bN_!==null)J(EC(E(1736),b));g=new CPf;Kk(g,C8(b));Eg(g);Hi(g,E(1243));Eg(g);c=g.bHM;NK();g.cOi=BjA(g,e,f,1,c,0,AGy);b=Ud(g);e=g.cOi;e.cjP=b;c=d.b1O;g=e;b=g.bXC;C9(c, +b,e);f=d.ckw;b=g.bXC.bSB;c=new S;T(c);Bb(H(c,b),40);c=Q(c);AVk(f,c);Ddr(d,e);Mz(a);}return b;}; +function CvM(){let a=this;KW.call(a);a.cE9=null;a.b6S=null;a.cwf=null;} +let Dv$=a=>{let b,c,d,e,f,g;b=0;while(true){c=a.bII.mL();if(c===null)return null;d=EgX(a.b6S);if(d!==null&&d.cKF){e=Ki(c);Ii();if(e===APk)b=b+1|0;else if(Ki(c)===AQQ){b=b+(-1)|0;if(b==(-1)){Drv(a.b6S);b=0;}}Mz(a);continue;}f=Ki(c);Ii();if(f!==APk){if(Ki(c)!==AQQ)break;U(a.cwf,c);if(d===null)J(EC(E(1737),c));if(!PO(Dpa(d,c,a.cE9,a.b6S)))Drv(a.b6S);else a.bII.zI(d.csw,c);Mz(a);continue;}U(a.cwf,c);e=a.b6S;c=C8(c);d=new CXP;Kk(d,c);Eg(d);Hi(d,E(1738));Eg(d);g=CI2(d);d.ddO=g;d=a.bII.zH();f=new Dds;f.cw8=g;f.csw +=d;if(!PO(Dpa(f,c,a.cE9,e)))f.cKF=1;FwS(e,f);Mz(a);}return c;}; +function CZl(){let a=this;KW.call(a);a.cJ$=null;a.b7q=null;a.ctv=null;} +let Ewb=a=>{let b,c,d,e,f,g,h,i,j;b=0;while(true){c=a.bII.mL();if(c===null)return null;d=EOt(a.b7q);if(d!==null&&d.cmQ){e=Ki(c);Ii();if(e===APs)b=b+1|0;else if(Ki(c)===ATX){b=b+(-1)|0;if(b==(-1)){C5A(a.b7q);b=0;}}Mz(a);continue;}f=Ki(c);Ii();if(f!==APs){if(Ki(c)!==ATX)break;U(a.ctv,c);if(d===null)J(EC(E(1739),c));g=d.cjj+1|0;d.cjj=g;if(g>=Djh(d.cDD))d.cmQ=1;if(d.cmQ)C5A(a.b7q);else{DbY(a,a.b7q,d,c);a.bII.zI(d.cK2,c);}Mz(a);continue;}U(a.ctv,c);e=a.b7q;c=C8(c);d=new CIS;Kk(d,c);f=a.cJ$;Eg(d);Hi(d,E(1740));Eg(d);d.cRo +=Zt(d);Eg(d);Hi(d,E(1741));Eg(d);h=(AGR(d,f,e)).bKG;d.cZd=h;i=d.cRo;f=a.bII.zH();j=new CN6;j.cXY=i;j.cDD=h;j.cK2=f;d=d.cZd;if(!(d===null?1:Djh(d)?0:1))DbY(a,e,j,c);else j.cmQ=1;Ei8(e,j);Mz(a);}return c;},DbY=(a,b,c,d)=>{let e,f;e=c.cDD;if(e instanceof Wl)e=CC5(e,c.cjj);else if(e instanceof Su)e=A8r((B6b(e)).cf(c.cjj));else{b=new BP;X(b);J(b);}f=c.cXY;e=LX(e);ZS();b.sY(f,e,AH$,d);}; +function Clc(){let a=this;KW.call(a);a.cK8=null;a.c34=null;a.c5r=null;} +let CtG=a=>{let b,c,d,e,f,$$je;while(true){b=a.bII.mL();if(b===null)return null;c=Ki(b);Ii();if(c!==AZ$)break;U(a.c5r,b);d=(-1);e=0;a:{b:{while(e<9999){try{Fnx(a,a.cK8,a.c34,b);break b;}catch($$e){$$je=P($$e);if($$je instanceof AO3){f=$$je;}else{throw $$e;}}if(Dc3(f)<=d)J(EC(E(1742),b));d=Dc3(f);Mz(a);b=BME(b,(a.bII.mL()).bGP);e=e+1|0;}break a;}}Mz(a);}return b;},Fnx=(a,b,c,d)=>{let e,f,g,h;e=new DoJ;Kk(e,C8(d));Eg(e);Hi(e,E(1217));Eg(e);f=Zt(e);ZS();g=BG(E(1743),f)?AT4:!BG(E(1744),f)?null:AH$;if(g!==null){Eg(e);if +(!(JZ(e)!=63&&JZ(e)!=61))g=null;else f=Zt(e);}Eg(e);h=0;if(JZ(e)==63){Wc(e,63);h=1;}Wc(e,61);if(!(h&&c.uf(f)!==null)){Eg(e);c.sY(f,AGR(e,b,c),g,e.bHM);}}; +function B2i(){F.call(this);this.c9$=null;} +function Byy(){B2i.call(this);this.bTr=null;} +let EqK=a=>{return;},DJq=()=>{let a=new Byy();EqK(a);return a;},Cv7=(a,b)=>{let c;if(!b){AEu();c=CaW;}else{AEu();c=CWU;}a.bTr=c;},B5y=a=>{return a.bTr;},Cki=(a,b)=>{a.bTr=b;},CTz=(a,b)=>{a.bTr=b;}; +function C62(){let a=this;F.call(a);a.bQM=null;a.cVr=null;a.b0S=null;a.cd9=0;a.bQI=0;a.ckL=0;a.coq=0;a.cEV=0;a.bNM=0;a.bOt=null;a.bYo=0;a.bQX=0;} +let Fiw=(a,b)=>{let c;if(b===null){c=new F2;Bp(c,E(1745));J(c);}a.bQM=b;b.c9$=a;},BCr=a=>{let b=new C62();Fiw(b,a);return b;},BcW=(a,b)=>{let c,d,$$je;if(b!==null){c=DT(10,DO(1024,b.bGI.length));try{E7E(a,BId(b),c);}catch($$e){$$je=P($$e);if($$je instanceof Dd){d=$$je;b=new DR;YV(b,d);J(b);}else{throw $$e;}}return;}b=new F2;Bp(b,E(1692));J(b);},E7E=(a,b,c)=>{let d;if(b!==null){if(c>0){a.cVr=b;a.b0S=Fd(c);a.cd9=0;a.bQI=0;a.ckL=0;a.coq=1;a.cEV=0;a.bNM=0;a.bYo=(-1);P5(a);Xx(a);BKs(a);Xx(a);if(!CS9(a))J(A2q(a,E(1746)));return;}d +=new Bt;Bp(d,E(1747));J(d);}b=new F2;Bp(b,E(1748));J(b);},BKs=a=>{let b,c,d,e;a:{b:{c:{d:{e:{f:{g:{switch(a.bNM){case 34:a.bQM.bTr=Dn$(DqM(a));break a;case 45:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:break b;case 91:break d;case 102:break f;case 110:break e;case 116:break g;case 123:break c;default:}J(TV(a,E(1749)));}P5(a);AAn(a,114);AAn(a,117);AAn(a,101);Cv7(a.bQM,1);break a;}P5(a);AAn(a,97);AAn(a,108);AAn(a,115);AAn(a,101);Cv7(a.bQM,0);break a;}P5(a);AAn(a,117);AAn(a, +108);AAn(a,108);b=a.bQM;AEu();b.bTr=B2D;break a;}c=Zh();P5(a);d=a.bQX+1|0;a.bQX=d;if(d<=1000){Xx(a);if(O2(a,93)){a.bQX=a.bQX-1|0;CTz(a.bQM,c);}else{while(true){Xx(a);BKs(a);b=a.bQM;A93(c,b.bTr);Xx(a);if(O2(a,44))continue;else break;}if(O2(a,93)){a.bQX=a.bQX-1|0;CTz(a.bQM,c);}else J(TV(a,E(1750)));}break a;}J(A2q(a,E(1751)));}e=A9R();P5(a);d=a.bQX+1|0;a.bQX=d;if(d<=1000){h:{Xx(a);if(O2(a,125)){a.bQX=a.bQX-1|0;Cki(a.bQM,e);}else{while(true){Xx(a);if(O2(a,47))CQd(a);if(a.bNM!=34)J(TV(a,E(772)));c=DqM(a);Xx(a);if +(!O2(a,58))break;Xx(a);BKs(a);b=a.bQM;APl(e,c,b.bTr);Xx(a);if(O2(a,47))CQd(a);if(O2(a,44))continue;else{if(O2(a,125)){a.bQX=a.bQX-1|0;Cki(a.bQM,e);break h;}J(TV(a,E(1752)));}}J(TV(a,E(1753)));}}break a;}J(A2q(a,E(1751)));}B6p(a);O2(a,45);d=a.bNM;if(AUt(a)){i:{if(d!=48)while(true){if(!AUt(a))break i;}}if(O2(a,46)){if(AUt(a))while(AUt(a)){}else J(TV(a,E(1754)));}if(!(!O2(a,101)&&!O2(a,69))){if(!O2(a,43))O2(a,45);if(AUt(a))while(AUt(a)){}else J(TV(a,E(1754)));}a.bQM.bTr=CoS(C0u(a));}else J(TV(a,E(1754)));}},CQd +=a=>{let b;if(O2(a,47)){while(true){b=a.bNM;if(b==10)break;if(b==13)break;P5(a);}Xx(a);return;}J(TV(a,E(1755)));},AAn=(a,b)=>{let c;if(!O2(a,b)){c=new S;T(c);Bb(c,39);Bb(c,b);Bb(c,39);J(TV(a,Q(c)));}},DqM=a=>{let b,c,d,e,f,g;P5(a);B6p(a);a:while(true){b=a.bNM;if(b==34){c=C0u(a);P5(a);return c;}if(b!=92){if(b<32)J(TV(a,E(1756)));P5(a);continue;}d=b==3?a.bQI:a.bQI-1|0;b:{c:{d:{e:{f:{g:{h:{c=a.bOt;e=a.b0S;b=a.bYo;UP(c,e,b,d-b|0);a.bYo=(-1);P5(a);d=a.bNM;switch(d){case 34:case 47:case 92:break;case 98:break h;case 102:break g;case 110:break f;case 114:break e;case 116:break d;case 117:break c;default:J(TV(a, +E(1757)));}Bb(a.bOt,d);break b;}Bb(a.bOt,8);break b;}Bb(a.bOt,12);break b;}Bb(a.bOt,10);break b;}Bb(a.bOt,13);break b;}Bb(a.bOt,9);break b;}e=Fd(4);f=e.data;d=0;while(d<4){i:{j:{P5(a);g=a.bNM;if(!(g>=48&&g<=57)&&!(g>=97&&g<=102)){if(g<65)break j;if(g>70)break j;}b=1;break i;}b=0;}if(!b)break a;f[d]=g;d=d+1|0;}Bb(a.bOt,Y5(Ue(e),16)&65535);}P5(a);B6p(a);}J(TV(a,E(1758)));},O2=(a,b)=>{if(a.bNM==b){P5(a);return 1;}return 0;},AUt=a=>{let b;b=a.bNM;if(!(b>=48&&b<=57)?0:1){P5(a);return 1;}return 0;},Xx=a=>{let b;while +(true){b=a.bNM;if(!(!(b!=32&&b!=9&&b!=10&&b!=13)?1:0))break;P5(a);}},P5=a=>{let b,c,d,e;b=a.bQI;c=a.ckL;if(b==c){b=a.bYo;if(b!=(-1)){UP(a.bOt,a.b0S,b,c-b|0);a.bYo=0;}a.cd9=a.cd9+a.ckL|0;d=a.cVr;e=a.b0S;c=e.data.length;b=B_2(d,e,0,c);a.ckL=b;a.bQI=0;if(b==(-1)){a.bNM=3;a.bQI=1;return;}}if(a.bNM==10){a.coq=a.coq+1|0;a.cEV=a.cd9+a.bQI|0;}e=a.b0S.data;c=a.bQI;a.bQI=c+1|0;a.bNM=e[c];},B6p=a=>{let b;if(a.bOt===null){b=new S;T(b);a.bOt=b;}a.bYo=a.bQI-1|0;},C0u=a=>{let b,c,d;b=a.bYo;c=a.bQI-1|0;a.bYo=(-1);d=a.bOt;if +(d.bG4>0){UP(d,a.b0S,b,c-b|0);d=Q(a.bOt);a.bOt.bG4=0;return d;}return QV(a.b0S,b,c-b|0);},TV=(a,b)=>{let c;if(!CS9(a)){c=new S;T(c);H(H(c,E(1759)),b);return A2q(a,Q(c));}return A2q(a,E(1760));},A2q=(a,b)=>{let c,d,e,f,g,h,i;c=new AO3;d=(a.cd9+a.bQI|0)-1|0;e=(d-a.cEV|0)+1|0;f=new CnG;g=a.coq;f.c9Z=d;f.cBp=e;f.cPG=g;h=BY(f);i=new S;T(i);H(H(H(i,b),E(1761)),h);Bp(c,Q(i));c.cBM=f;return c;},CS9=a=>{return a.bNM!=3?0:1;}; +function Wl(){T5.call(this);this.bOV=null;} +let EZ5=a=>{let b,c,d,e;b=Zh();c=Br(a.bOV);while(Bq(c)){d=Bm(c);e=b.bOV;d=d.vr();U(e,d);}return b;},FnV=a=>{A7e(a);a.bOV=Bk();},Zh=()=>{let a=new Wl();FnV(a);return a;},AMu=(a,b)=>{let c;c=a.bOV;b=A8r(b);U(c,b);return a;},A93=(a,b)=>{let c;if(b===null){c=new F2;Bp(c,E(1295));J(c);}U(a.bOV,b);return a;},BeQ=a=>{return a.bOV.bGJ;},CC5=(a,b)=>{return Be(a.bOV,b);},AGA=a=>{let b,c;b=Br(a.bOV);c=new CL3;c.c8g=a;c.cIl=b;return c;},FdR=(a,b)=>{let c;a:{Ww(b.bMO,91);c=AGA(a);if(AAZ(c)){(AAW(c)).vl(b);while(true){if +(!AAZ(c))break a;Ww(b.bMO,44);(AAW(c)).vl(b);}}}Ww(b.bMO,93);},DWt=a=>{return 1;},E_s=a=>{return a;},DYV=a=>{return A2c(a.bOV);},ESI=(a,b)=>{let c;if(a!==b){if(b!==null){if(Dg(a)===Dg(b)){c=b;b=a.bOV;c=c.bOV;return NI(b,c);}return 0;}return 0;}return 1;},DDd=N(),TQ=b=>{Bnh(b);Bky(b);A6i(b);Db8(b);},Bky=b=>{let c,d,e;A4N();c=CPW;d=b;U(d,c);A_k();U(d,Ck1);A0x();U(d,C8h);A_f();U(d,CuN);Ba2();U(d,Cwj);AIs();U(d,BDD);A4h();U(d,CrN);A$2();U(d,CeF);A9G();U(d,B$b);A$b();U(d,C4Y);AFA();c=BLT;U(d,c.cyY);b=new C0L;e=c.cU6;b.cul +=c;Cb(b,e);U(d,b);AZP();U(d,B$1);Baw();U(d,CbF);A$X();U(d,Dow);AWi();U(d,Cdy);A0J();U(d,Crt);A06();U(d,C2M);AU1();U(d,DrZ);A1b();U(d,Crh);},A6i=b=>{let c,d;A0q();c=CIN;d=b;U(d,c);A3X();U(d,CKa);A50();U(d,CAe);A5e();U(d,Deb);A8_();U(d,C3i);A_J();U(d,CYg);},Db8=b=>{let c,d;A_y();c=CCy;d=b;U(d,c);A_G();U(d,CI5);ARj();U(d,CHW);},Bnh=b=>{let c,d;AYQ();c=Dc9;d=b;U(d,c);A5G();U(d,DnE);AZS();U(d,Cj0);A42();U(d,Cvb);AYX();U(d,Dkr);AXm();U(d,CU7);Ban();U(d,DhD);A3Q();U(d,CSY);A1i();U(d,Cyn);A83();U(d,DhZ);AZB();U(d,CVp);A1c();U(d, +CI$);}; +function CWZ(){F.call(this);this.bIW=null;} +let RD=(a,b)=>{let c,d,e,f,g,h;if(b){c=Bk();d=a.bIW.dX();while(d.dY()){e=d.dZ();f=Bk();g=Br(Bv(IW(e.bGP,E(1555))));while(Bq(g)){h=XT(Bm(g),e.bIM,e.bO3);U(f,h);}Ea(c,f);}return Ns(c);}return a;},ECI=(b,c)=>{let d;d=Cac(b);if(d===null)return null;return CiH(d,c);},Bxc=(b,c)=>{return CiH(Bid(A4B(b)),c);},BIK=b=>{return Ns(b);},CiH=(b,c)=>{let d,e,f,$$je;d=Bk();a:{while(true){try{e=AZ5(b);if(e===null)break a;f=Ia(e,c);U(d,f);continue;}catch($$e){$$je=P($$e);c=$$je;break;}}AAF(b);J(c);}AAF(b);return Ns(d);},DGE= +(a,b)=>{a.bIW=b;},Ns=a=>{let b=new CWZ();DGE(b,a);return b;},Ig=a=>{let b,c,d,e;b=a.bIW;HW();c=Bk();b=b.dX();while(b.dY()){d=(b.dZ()).bGP;U(c,d);}d=c;e=d.bGJ;if(e>2&&CQ((Be(d,e-1|0)).p())&&Bj((Be(d,d.bGJ-2|0)).p(),E(548)))EJ(d,d.bGJ-1|0);return Ls(c);},XP=b=>{let c,d;c=Bk();d=Ia(b,null);U(c,d);return Ns(c);},BWr=()=>{return Ns(Bk());},DnS=(a,b)=>{let c;c=E2(a.bIW);U(c,b);return Ns(c);},C45=(a,b)=>{let c,d;c=E2(a.bIW);d=Ia(b,null);U(c,d);return Ns(c);},Dq=a=>{return a.bIW.dV();},ACq=(a,b)=>{return a.bIW.cf(b);},DB +=a=>{if(a.bIW.dV())return a.bIW.cf(0);return null;},L9=a=>{let b;b=a.bIW;return b.cf(b.dV()-1|0);},AAL=(a,b)=>{let c,d;c=E2(a.bIW);HE();if(b===Kl){d=Br(c);while(Bq(d)){if(BO((C8(Bm(d))).bGP,E(1762)))AQe(d);}}return Ns(c);},Nn=a=>{let b,c,d;b=E2(a.bIW);c=0;d=b;while(c{let b,c;b=E2(a.bIW);c=Br(b);while(Bq(c)){if((Bm(c)).bGP.bGI.length)continue;AQe(c);}return Ns(b);},JL=a=>{let b,c,d,e;if(C7N(a.bIW)){b=E2(a.bIW);c=b;while(true){d=0;while(d0)GJ(c,d,AYG(e,1,e.bGP.bGI.length));d=d+1|0;}if(C7N(b))continue;else break;}return Ns(b);}return a;},C7N=b=>{let c,d,e;c=1;b=b.dX();while(true){if(!b.dY())return c?0:1;d=b.dZ();if(!d.bGP.bGI.length)continue;c=0;e=Bn(d.bGP,0);if(e!=32&&e!=9)break;}return 0;},ATB=(a,b,c)=>{let d,e,f,g,h;if(a.bIW.dV()){d=E2(a.bIW);e=Ia(b,null);f=d;GJ(f,0,e);g=f.bGJ-1|0;if(c>0){h=Be(f,g);GJ(f,g,AYG(h,0,h.bGP.bGI.length-c|0));}return Ns(d);}return a;},A31=(a,b)=>{let c,d,e,f;if(a.bIW.dV()){c=E2(a.bIW);d=c;e +=d.bGJ-1|0;f=Be(d,e);GJ(d,e,Ia(b,f.bIM));return Ns(c);}return a;},BFJ=a=>{let b,c;b=new S;T(b);c=a.bIW.dX();while(c.dY()){L(b,(c.dZ()).bGP);Bb(b,57600);}return XP(CMK(b,0,b.bG4-1|0));},ARR=(a,b)=>{let c,d,e,f,g;if(a.bIW.dV()>b){c=E2(a.bIW);d=c;e=(Be(d,b)).bGP;f=0;e=e;while(f{return !(b +!=32&&b!=9)?1:0;},HI=(a,b,c)=>{let d;d=E2(a.bIW);c=d.bGJ-c|0;return Ns(LV(d,b,c));},Um=a=>{return a.bIW.dX();},BU7=a=>{let b,c,d,e,f;if(Dq(a)>=2){b=(C8(DB(a))).bGP;c=(C8(ACq(a,1))).bGP;if(!Dr(b,E(580))&&Bj(c,E(580))){d=BME(DB(a),E(1763));e=Bk();U(e,d);d=a.bIW;f=d.dV();d=LV(d,2,f);Ea(e,d);return Ns(e);}return a;}return a;},B_R=(a,b)=>{let c,d,e,f,g;c=Bk();d=DB(a);e=C8(XT(CC(d.bGP,b),d.bIM,d.bO3));f=c;U(f,e);e=a.bIW;g=e.dV()-1|0;d=LV(e,1,g);Ea(c,d);e=L9(a);U(f,C8(AYG(e,0,W0(e)-b|0)));return Ns(c);},Dg_=a=>{return CMR(a, +0);},I5=a=>{if(a.bIW.dV())return (a.bIW.cf(0)).bIM;return null;},Uh=N(0),Ckv=()=>{Ckv=Z(Uh);EEg();},A4T=(a,b)=>{return null;},FyY=(a,b)=>{return 0;},D3_=a=>{let b,c,d,e;if(Df()){BeM();if(!CoP){b=a.AE();c=a.AF();FY();if(b!==null&&c!==null){d=ABx(b);b=ABx(c);e=BG_(d,b);}else e=b!==c?0:1;if(!e){b=new C4;X(b);J(b);}}}return a.AE();},EEg=()=>{BeM();},AYH=N(Bx),PY=null,KS=null,Oo=null,E8g=null,F5=()=>{F5=Z(AYH);D5a();},D$_=(a,b,c)=>{F5();Ct(a,b,c);},BNG=(a,b)=>{let c=new AYH();D$_(c,a,b);return c;},D5a=()=>{let b, +c,d;PY=BNG(E(1764),0);KS=BNG(E(1765),1);b=BNG(E(1766),2);Oo=b;c=K(AYH,3);d=c.data;d[0]=PY;d[1]=KS;d[2]=b;E8g=c;}; +function Bl(){let a=this;F.call(a);a.cdI=null;a.ctH=0;} +let A8U=0,Biy=()=>{Biy=Z(Bl);D1f();},Cb=(a,b)=>{Biy();Oi(a,1,b);},Oi=(a,b,c)=>{Biy();a.ctH=b;a.cdI=B$(c);},Ewa=a=>{return 0;},A5h=(a,b)=>{if(a.ctH)return (C8(b)).bGP;return b.bGP;},Bxe=(a,b)=>{let c;if(Dq(b)==2&&a.AG()){if(Df()&&!A8U&&Dq(b)!=2){b=new C4;X(b);J(b);}if(Df()&&!A8U&&!a.AG()){b=new C4;X(b);J(b);}if(!Bj(A5h(a,ACq(b,1)),E(580))){F5();b=KS;}else{c=(ACq(b,0)).bGP;b=new S;T(b);H(H(b,c),E(1763));b=Bxe(a,XP(Q(b)));}return b;}if(Dq(b)==1){c=DB(b);if(a.ctH)c=C8(c);if(a.AG()&&!Dr(c.bGP,E(580))){c=(ACq(b,0)).bGP;b +=new S;T(b);H(H(b,c),E(1763));b=Bxe(a,XP(Q(b)));F5();if(b===PY)return Oo;return KS;}if(!a.cdI.AI(c)){F5();return KS;}return EBv(a);}F5();return KS;},EBv=a=>{F5();return PY;},CHx=(a,b)=>{let c,d,e;if(a.AG()&&Dq(b)==2){if(Df()&&!A8U&&!Bj(A5h(a,ACq(b,1)),E(580))){b=new C4;X(b);J(b);}c=(DB(b)).bGP;b=new S;T(b);H(H(b,c),E(1763));b=XP(Q(b));}if(Dq(b)==1){c=DB(b);d=A5h(a,c);if(!a.AK(d)){e=a.cdI.AL(d);if(e!==null)return a.AM(c.bIM,e);return null;}return null;}b=new Bt;X(b);J(b);},Fl5=(a,b,c)=>{return null;},BT9=(a, +b,c,d)=>{let e,f,g,$$je;if(a.AG()&&Dq(c)==2){if(Df()&&!A8U&&!Bj(A5h(a,ACq(c,1)),E(580))){b=new C4;X(b);J(b);}c=(DB(c)).bGP;e=new S;T(e);H(H(e,c),E(1763));c=XP(Q(e));}if(Dq(c)==1){f=DB(c);e=A5h(a,f);if(!a.AK(e)){g=a.cdI.AL(e);if(g!==null){if(!(b instanceof ZB)){try{b=a.AN(b,BlJ(f),g,d);}catch($$e){$$je=P($$e);if($$je instanceof J1){return APx();}else{throw $$e;}}return b;}return B5(E(1767));}b=new S;T(b);H(H(b,E(1768)),e);return B5(Q(b));}b=new S;T(b);H(H(b,E(1769)),e);return B5(Q(b));}b=new Bt;X(b);J(b);},E63 +=(a,b)=>{return 0;},Dfh=(a,b)=>{Jx();return b!==JB?0:1;},Dsp=a=>{return BWM(a.cdI);},D1f=()=>{A8U=0;},C1u=N(0),BpQ=N(0),BsA=N(0),BYO=N(0); +function BXc(){let a=this;F.call(a);a.ckt=null;a.cn6=null;a.bH$=null;a.c_z=null;a.cYr=null;a.cQ3=null;a.b3K=null;a.cEu=null;a.cSA=null;a.bNy=null;a.bPb=null;a.b_y=null;a.cCS=null;a.cnN=null;a.bGN=null;a.cLn=0.0;a.cts=null;} +let CYa=null,C1m=null,B_P=null,B9U=null,BHp=null,Drg=null,CuX=null,CrO=null,CDq=null,CAx=0,AJu=()=>{AJu=Z(BXc);EVQ();},AS8=b=>{AJu();return !(b!==null&&Kr(D3(CYa,b)))?0:1;},CBd=b=>{AJu();return !(b!==null&&Kr(D3(C1m,b)))?0:1;},B1=a=>{let b,c,d,$$je;a:{if(a.cn6===null){b:{c:{try{b=Bgi(EWO(a));break b;}catch($$e){$$je=P($$e);if($$je instanceof Dd){b=$$je;break c;}else if($$je instanceof Ld){b=$$je;break c;}else if($$je instanceof LI){b=$$je;break c;}else{throw $$e;}}}GP(b);try{b=Bgi(E(1770));break b;}catch($$e) +{$$je=P($$e);if($$je instanceof Dd){c=$$je;break a;}else if($$je instanceof Ld){c=$$je;break a;}else{throw $$e;}}}a.cn6=b;}return a.cn6;}d=new BP;ABa(d,E(1771),c);J(d);},AI9=(a,b)=>{let c,d,e;c=B1(a);d=B0p();d.b8n=c.b8n;c=c.bTZ;if(!b.j()){e=ANg(c.b1e.dV()+b.dV()|0);c=c.b1e;Ea(e,c);b=b.dX();while(b.dY()){Da4(e,b.dZ());}c=B1X(e);}d.bTZ=c;a.cn6=d;},EWO=a=>{return a.ckt;},FsH=a=>{return a.b3K;},BxE=a=>{let b,c,d,e,f;b=G3(G8(a.cEu));c=b;while(Gl(c)){d=GZ(b);e=new Bcv;f=d;De$(e,f.bHt);CeT(e,f.bHe,B1(a));AI9(a,Cnd(e));}APR(a.cEu);},Cqe +=(b,c,d,e,f)=>{let g;AJu();g=new BXc;g.ckt=E(1770);g.b3K=Dy();g.cEu=E9();g.cSA=Dy();Pf();g.bNy=AAK;g.b_y=Dy();g.cCS=Dy();g.cnN=Dy();g.bGN=KI();g.cts=Dy();g.bPb=d;g.bH$=e;g.cYr=f;g.c_z=c;g.cQ3=b;return g;},B$Y=(a,b)=>{let c,d,$$je;AJu();c=BHp;Jl(c);try{d=FW(c,b);if(d===null){d=Dxd(a,b);Es(BHp,b,d);}G2(c);}catch($$e){$$je=P($$e);b=$$je;G2(c);J(b);}return d;},Dxd=(a,b)=>{let c,d,e,f,g;b=ES(F9(b));AJu();b=UQ(D3(Drg,b),E(14));b=UQ(D3(CuX,b),E(1772));b=UQ(D3(CrO,b),E(712));b=UQ(D3(CDq,b),E(1773));c=DX(B9U,b,0);d= +Bk();while(EZ(c)){e=CU(c,1);f=Ih(b,E(1774),E(14));g=new S;T(g);H(H(H(H(g,f),E(1775)),e),E(1776));e=Q(g);U(d,e);}f=d;if(!f.bGJ)U(f,b);return d;},DCk=a=>{let b;JN();b=Bju(a,BbC,null,0);if(b===null){Go();return ASV;}return b;},AF5=a=>{let b,c;JN();b=Bju(a,AFk,null,0);if(b===null){b=B1(a);B8();c=B0(b,ZH);B9();return (BJ(c,CK)).cu(a.bGN);}return b;},DF=(a,b)=>{let c,d,e;if(!NB(a.b_y,b)){BxE(a);c=(B$Y(a,b)).dX();while(true){if(!c.dY()){d=a.b_y;c=null;C9(d,b,c);return null;}d=c.dZ();e=DG(a.b3K,d);if(e!==null)break;}C9(a.b_y, +b,e);return e;}return DG(a.b_y,b);},AUx=(a,b,c)=>{return BG(c,DF(a,b));},AUP=(a,b)=>{return AUx(a,b,E(13));},Bju=(a,b,c,d)=>{let e,f,g;a:{if(c!==null){c=(CEE(c)).dX();while(true){if(!c.dY())break a;e=c.dZ();f=b.bHx;g=new S;T(g);H(H(H(H(g,f),E(1777)),e),E(1776));f=DF(a,Q(g));if(f!==null&&Eu(a.bGN,f)!==null)break;}return Eu(a.bGN,f);}}g=DF(a,C99(a,b,d));if(g!==null){JN();if(!(b!==AFk&&b!==BlT)&&!(!BG(g,E(333))&&!BG(g,E(71))))return Qj();if(b!==AFk){if(Df()&&!CAx&&b===AFk){b=new C4;X(b);J(b);}return Eu(a.bGN,g);}return Eu(a.bGN, +g);}return null;},C99=(a,b,c)=>{let d;d=b.bHx;if(c&&Dr(d,E(1778)))d=Ih(d,E(1778),E(1779));else if(c&&Dr(d,E(1780)))d=Ih(d,E(1780),E(1781));b=new S;T(b);H(H(b,d),E(944));return Q(b);},DaD=(a,b,c)=>{let d,e,f;if(b!==null){F_();b=I7(b,Hl);d=new S;T(d);H(H(d,E(1782)),b);e=AHb(a,Q(d),c);if(AS8(e))return CZ(e);}d=AHb(a,E(1782),c);if(!AS8(d))d=DF(a,E(1783));if(!AS8(d)){a:{b=c.data[0];Fs();if(b===ASd){e=a.bPb;F8();if(e===Ry){f=11;break a;}}f=b!==A0G?b.cWm:11;}return f;}return CZ(d);},D6n=(a,b,c)=>{let d;d=null;if(b +!==null){F_();b=I7(b,Hl);d=new S;T(d);H(H(d,E(1784)),b);d=AHb(a,Q(d),c);}if(d===null)d=AHb(a,E(1784),c);if(d===null)d=DF(a,E(1785));if(d===null)d=c.data[0].cRz;if(d!==null)return Eu(a.bGN,d);return null;},AHb=(a,b,c)=>{let d,e,f,g;c=c.data;d=c.length;e=0;while(true){if(e>=d)return null;f=c[e].bHx;g=new S;T(g);H(H(g,f),b);g=DF(a,Q(g));if(g!==null)break;e=e+1|0;}return g;},MC=(a,b,c,d)=>{let e,f,g,h,i;a:{if(b!==null){F_();e=I7(b,Hl);f=new S;T(f);H(H(f,E(1786)),e);e=AHb(a,Q(f),d);if(e!==null){g=Dl(e);break a;}}e +=AHb(a,E(1786),d);if(e!==null)g=Dl(e);else{h=d.data;e=h[0];Fs();if(e!==KB){e=DF(a,E(1787));if(e!==null){g=Dl(e);break a;}}g=h[0].cZc;}}e=null;if(b!==null){F_();e=I7(b,Hl);f=new S;T(f);H(H(f,E(1788)),e);e=AHb(a,Q(f),d);}if(e===null)e=AHb(a,E(1788),d);if(e===null)e=DF(a,E(1789));if(e===null){f=d.data[0];Fs();e=f===A8L?f.cBh:!(!c&&f!==BdP)?SC():f.cBh;}else{f=F9(e);c=CB(f,E(350));i=CB(f,E(351));if(c&&i){AAw();e=B$Q;}else e=c?SC():!i?EO():Hw();}return AI6(g,e,DaD(a,b,d));},Lc=a=>{let b,c,d,e;b=AFi(a,E(1790),(-1));if +(b==(-1)){c=null;d=K(I1,1);e=d.data;Fs();e[0]=KB;b=(DaD(a,c,d)/3|0)+6|0;}return b;},Qy=a=>{return AFi(a,E(1791),10);},Dak=a=>{let b;b=DF(a,E(1792));if(!BG(E(1793),b)){if(BG(E(1794),b)){AHk();return APM;}AHk();return BTz;}AHk();return Baf;},BG$=(a,b,c,d,e)=>{let f,g;a:{b:{c:{BJr();switch(CAS.data[b.bGO]){case 1:break c;case 2:break b;default:}f=DF(a,b.bHx);break a;}MY();f=B9A(a,DF(a,ATH.bHx),0);break a;}MY();f=B9A(a,DF(a,ATH.bHx),1);}if(!BG(E(946),f)){d:{if(BG(E(574),f)){QG();if(c!==W2){if(c!==Xc){if(c!==ADW)break d;B3();return CO;}B3();return Ft;}B3();return CF;}}e: +{if(BG(E(947),f)){QG();if(c!==W2){if(c!==Xc){if(c!==ADW)break e;B3();return CO;}B3();return CF;}B3();return Ft;}}g=APp(f);if(g===null){MY();if(b===AEb){if(e===null)e=CF;return Q2(a,e);}}if(g===null){MY();if(b===AV0)return Q2(a,CO);}if(g===null)return b.cNa;return g;}QG();if(c===Xc){if(d){B3();return CF;}B3();return Ft;}if(d){B3();return Ft;}B3();return CF;},Q2=(a,b)=>{let c;c=APp(DF(a,E(1795)));if(c===null)return b;return c;},BS_=a=>{let b;b=APp(DF(a,E(1796)));if(b===null)return CO;return b;},B9A=(a,b,c)=>{let d;if +(b!==null){d=(IW(b,E(82))).data;if(c>=d.length)return d[0];return d[c];}return null;},BNN=(a,b)=>{let c,d;if(b!==null){F_();b=I7(b,Hl);c=new S;T(c);H(H(c,E(940)),b);d=DF(a,Q(c));if(d!==null)return BG(d,E(13));}c=DF(a,E(940));if(!BG(E(12),c)){if(!BG(E(13),c)){if(AIc(a))return 0;return 1;}return 1;}return 0;},Fih=(a,b)=>{let c;c=DG(a.cCS,b);if(c===null)c=BBG(b);return c;},AWx=a=>{let b,c,d;b=DF(a,E(1797));AWN();c=P2(AQ8(Bo(AKJ)));a:{b:{while(true){if(!OD(c))break b;d=Pr(c);if(BG(HT(d),b))break;}break a;}if(!BG(E(1798), +b))d=null;else d=AUG;}if(d===null)return A_s;return d;},AKB=a=>{let b;if(!AIc(a)){b=DF(a,E(1799));if(!BG(E(1800),b)){if(!BG(E(1801),b)){if(BG(E(785),b)){ADa();return BcH;}ADa();return ATb;}ADa();return ATb;}ADa();return Bni;}ADa();return ATb;},CeR=a=>{return AUx(a,E(1802),E(1803))?0:1;},EdE=(a,b)=>{F8();if(b===Ry)return !(!AUP(a,E(800))&&!AUP(a,E(1804)))?1:0;return 0;},BwR=a=>{return AFi(a,E(1805),0);},BAS=a=>{return AFi(a,E(1806),0);},BHB=(a,b,c)=>{let d,e;AR1();if(b===ANJ)d=E(1807);else{e=b.bHx;d=new S;T(d);H(H(d, +e),E(1807));d=Q(d);}e=Dmr(a,d,b,c);if(e===null){d=Dmr(a,d,b,null);if(d===null){d=ANJ;if(b===d)return 0.0;return BHB(a,d,c);}return d.bG6;}return e.bG6;},Dmr=(a,b,c,d)=>{let e;if(d!==null){F_();c=d.qL(Hl);d=new S;T(d);H(H(d,b),c);b=Q(d);}e=DF(a,b);if(AS8(e))return DL(DM(e));return null;},AWK=(a,b,c)=>{let d,e,f,g,h;if(c===null)d=b.bHx;else{e=b.bHx;F_();d=I7(c,Hl);f=new S;T(f);e=H(f,e);Bb(e,0);H(e,d);d=Q(f);}if(!NB(a.cnN,d)){a:{f=null;if(c!==null){g=b.bHx;F_();e=I7(c,Hl);h=new S;T(h);H(H(H(h,g),E(169)),e);e=DF(a, +Q(h));if(e!==null)f=BOF(e);h=b.bHx;c=I7(c,Hl);e=new S;T(e);H(H(H(e,h),E(1808)),c);c=DF(a,Q(e));if(CBd(c)){if(f===null)f=AT6();f=ACn(AY9(f,DM(c)));break a;}}e=b.bHx;c=new S;T(c);H(H(c,e),E(1808));c=DF(a,Q(c));if(CBd(c)){if(f===null)f=AT6();f=ACn(AY9(f,DM(c)));}else{if(f===null){c=b.bHx;b=new S;T(b);H(H(b,c),E(169));b=DF(a,Q(b));if(b!==null)f=BOF(b);}f=!(f!==null&&!A6r(f))?null:ACn(f);}}C9(a.cnN,d,f);return f;}return DG(a.cnN,d);}; +let CtH=a=>{let b;b=DF(a,E(1809));if(b===null)b=DF(a,E(1810));return Bkn(b);},AIc=a=>{return AUx(a,E(169),E(170));},B8F=a=>{return AUx(a,E(1811),E(1812));},BH5=a=>{let b,c,d;a:{b=DF(a,E(1813));AJc();if(BG(E(1814),b))c=AM0;else if(BG(E(1815),b))c=AM0;else if(BG(E(1816),b))c=AJs;else if(BG(E(1817),b))c=ABe;else{d=P2(AQ8(Bo(ASv)));b:{while(true){if(!OD(d))break b;c=Pr(d);if(BG(HT(c),b))break;}break a;}c=null;}}if(c===null)return ABe;return c;},C8_=a=>{return AUP(a,E(1818));},DxJ=a=>{return a.bNy;},GK=a=>{return a.bGN;},Ehd +=a=>{if(!AUx(a,E(1819),E(12)))return GT();return null;},WR=a=>{let b,c;a:{b:{b=DF(a,E(1820));F_();if(b!==null){if(BG(E(12),b)){b=Hl;break a;}if(BG(E(1821),b)){b=Hl;break a;}if(BG(E(71),b)){b=A6A;break a;}if(CB(b,E(344)))break b;}b=ALr;break a;}c=M0(b,E(344));b=BnG(H5(c),H5(c));}return b;},Flo=a=>{let b;b=DF(a,E(1822));if(b===null)b=E(1823);return b;},DRI=a=>{return AFi(a,E(1824),8);},BwQ=a=>{return AFi(a,E(1825),0);},BvC=a=>{return Byt(a,E(1826));},EgQ=(a,b)=>{let c;b=F9(b.bHx);c=new S;T(c);H(H(c,b),E(315));return Byt(a, +Q(c));},Byt=(a,b)=>{let c;c=DF(a,b);if(!(c!==null&&Kr(D3(B_P,c)))?0:1)return CQL(DM(c));return CQL(0.0);},AFi=(a,b,c)=>{let d;d=DF(a,b);if(AS8(d))return CZ(d);return c;},Ezf=a=>{return 0;},EUT=a=>{return AUP(a,E(1827));},CYd=a=>{return AUP(a,E(1828));},DuF=a=>{let b,c,d,e,f,g,h,i,j,k;b=Byt(a,E(1829));c=Byt(a,E(1830));d=DF(a,E(1831));e=DF(a,E(1832));if(CYc(b)&&CYc(c)&&d===null&&e===null){AP4();return Bdy;}f=d===null?null:Eu(a.bGN,d);g=e===null?null:Eu(a.bGN,e);AR1();h=BHB(a,ANJ,null);AP4();i=Bdy;j=AT5(c,i.bXO, +i.b8z,i.b7S,i.b5i);k=AT5(j.b1c,b,j.b8z,j.b7S,j.b5i);d=AT5(k.b1c,k.bXO,g,k.b7S,k.b5i);b=AT5(d.b1c,d.bXO,d.b8z,f,d.b5i);return AT5(b.b1c,b.bXO,b.b8z,b.b7S,h);},Vj=a=>{let b;b=DF(a,E(1833));if(!BG(E(1834),b)){if(BG(E(1835),b)){W9();return APK;}W9();return AD2;}W9();return AOl;},ARN=(a,b,c,d)=>{return CsW(a,b,c,d,B51(b,null,null));},CsW=(a,b,c,d,e)=>{let f,g;f=Bv(BB(F,[c,d,b,e]));g=DG(a.cts,f);if(g===null){g=BR9(b,c,a,d,e);C9(a.cts,f,g);}return g;},MS=a=>{if(AIc(a))return new CSy;return new B_0;},PJ=a=>{return a.bH$;},CKK +=a=>{return a.cYr;},Csb=(a,b)=>{return DG(a.cQ3,b);},EVQ=()=>{let b;CAx=0;CYa=Dp(E(177));C1m=Dp(E(1836));B_P=Dp(E(1837));B9U=Dm(E(1774));b=new C7g;AOK(b,2000,0.75,1);BHp=b;Drg=Dp(E(1838));CuX=Dp(E(1839));CrO=Dp(E(1840));CDq=Dp(E(1841));}; +function CAf(){let a=this;F.call(a);a.ccj=null;a.cqw=null;} +let ACU=()=>{let b;b=new CAf;b.ccj=Nq(Bo(AMj));b.cqw=AAh();return b;},AB3=(a,b)=>{return BXr(a.ccj,b);},Dpi=(a,b)=>{let c,d,e;c=a.ccj;if(AK4(c.bNO,b)){d=b.bGO;e=c.bO9.data;if(e[d]){e[d]=0;c.bPV.data[d]=null;c.bOM=c.bOM-1|0;}}},T6=(a,b)=>{return M7(a.ccj,b);},WV=(a,b)=>{let c;c=T6(a,b);return !(!BG(E(13),c)&&!BG(E(1842),c))?1:0;},DsK=(a,b)=>{let c;c=T6(a,b);return !(!BG(E(12),c)&&!BG(E(1843),c))?1:0;},BQb=(a,b)=>{if(b!==null)EQ(a.cqw,b);}; +function Bbf(){let a=this;Bx.call(a);a.cMU=null;a.cMQ=null;} +let BxI=null,Bxm=null,BeD=null,Btz=null,BTB=null,Fq_=null,AHK=()=>{AHK=Z(Bbf);DI_();},EWi=(a,b,c,d,e)=>{AHK();Ct(a,b,c);a.cMU=d;a.cMQ=e;},A4S=(a,b,c,d)=>{let e=new Bbf();EWi(e,a,b,c,d);return e;},DI_=()=>{let b,c,d;BxI=A4S(E(1844),0,E(1845),E(1846));Bxm=A4S(E(1847),1,E(1848),E(1849));BeD=A4S(E(1850),2,E(1851),E(1852));Btz=A4S(E(1853),3,E(400),E(1854));b=A4S(E(1855),4,E(1281),E(1856));BTB=b;c=K(Bbf,5);d=c.data;d[0]=BxI;d[1]=Bxm;d[2]=BeD;d[3]=Btz;d[4]=b;Fq_=c;},DVL=N(),Dlo=()=>{return E(15);}; +function ASc(){let a=this;F.call(a);a.cJ5=0.0;a.cTG=null;a.c6K=0;a.bIJ=null;} +let CGT=null,C6G=0,AHs=()=>{AHs=Z(ASc);Fad();},D1e=(a,b,c,d,e,f)=>{AHs();a.c6K=b;a.cJ5=e;a.cTG=f;a.bIJ=B$(d);},DjQ=(a,b,c,d,e)=>{let f=new ASc();D1e(f,a,b,c,d,e);return f;},CcU=b=>{let c;AHs();if(BO(b,E(1775))&&Dr(b,E(1776)))return;c=new Bt;Bp(c,b);J(c);},FD=b=>{AHs();if(b!==null)return CDy(b,1);return null;},CDy=(b,c)=>{let d,e,f;AHs();CcU(b);AXj();if(!(BO(b,E(1857))&&Dr(b,E(1776)))){d=null;e=0.0;}else{f=Ei(BZa,b);d=R(f,E(563),0);e=XW(R(f,E(1858),0),1.0);}return DjQ(c,b,Dld(b,null,0,d,e),0.0,null);},N5=(b, +c,d,e)=>{let f,g,h,i,j,k,l,m,n,o;AHs();CcU(b);AXj();f=E(14);g=null;h=0;i=null;j=0.0;F_();k=(B0A(b,Hl)).dX();while(k.dY()){l=k.dZ();m=Ei(Djl,l);n=Ei(BZa,l);if(n!==null){if(!TC(R(n,E(470),0)))l=E(14);else{o=R(n,E(470),0);g=new S;T(g);H(H(H(g,E(1775)),o),E(1776));l=Q(g);}o=R(n,E(608),0);g=o!==null?DV(e,o):null;if(g===null){Go();g=Hu;}h=0;i=R(n,E(563),0);j=XW(R(n,E(1858),0),1.0);}else if(m!==null){if(!TC(R(m,E(470),0)))l=E(14);else{n=R(m,E(470),0);o=new S;T(o);H(H(H(o,E(1775)),n),E(1776));l=Q(o);}o=R(m,E(608),0);g +=o!==null?DV(e,o):null;h=Bn(R(m,E(1859),0),0);}o=new S;T(o);H(H(o,f),l);f=Q(o);}return DjQ(1,b,Dld(f,g,h,i,j),c,d);},Bby=a=>{return a.bIJ.cXf;},BLI=a=>{return a.bIJ.cgH;},ATW=(a,b)=>{let c;c=a.bIJ.b6q;if(c!==null&&b!==null){c=b.Bk(c);if(c!==null)return c.Bl(Bby(a),null,a.bIJ.c5p,null);return null;}return null;},Bkz=a=>{return BG(E(1860),a.bIJ.bJs);},CEE=a=>{let b,c,d;b=Bk();AHs();c=D3(CGT,a.bIJ.bJs);while(GW(c)){d=El(c,1);U(b,d);}return b;},AG_=a=>{let b,c,d;b=a.bIJ;c=b.cgH;if(c){b=b.bJs;d=new S;T(d);Bb(d,c);Bb(d, +32);H(d,b);return Q(d);}return b.bJs;},EmJ=(a,b)=>{return Bn(AG_(a),b);},FrO=a=>{return (AG_(a)).bGI.length;},Eic=(a,b,c)=>{return B_(AG_(a),b,c);},I7=(a,b)=>{let c,d;if(!Bkz(a)){c=a.bIJ.b6q;if(c!==null&&BO(c,E(1861))){c=CC(a.bIJ.b6q,E(1861).bGI.length);d=new S;T(d);H(H(H(d,E(1775)),c),E(1776));return ANH(b,Q(d));}return ANH(b,a.bIJ.bJs);}return null;},T0=(a,b)=>{let c;F_();c=I7(a,Hl);if(c===null)return Gi();return B0A(c,b);},BPh=a=>{let b,c,d,e,f;b=a.bIJ;c=Bk();d=b.bJs;F_();d=(B0A(d,A6A)).dX();while(d.dY()) +{e=d.dZ();U(c,e);}d=b.b6q;if(d!==null){f=Qg(d,47);if(f!=(-1)){b=CC(b.b6q,f+1|0);U(c,b);}}return c;},EhH=a=>{return !(!BG(a.bIJ.bJs,E(1862))&&!BG(a.bIJ.bJs,E(1863))&&!BG(a.bIJ.bJs,E(1864)))?1:0;},D2J=a=>{return !(!BG(a.bIJ.bJs,E(1865))&&!BG(a.bIJ.bJs,E(1866)))?1:0;},Fql=a=>{return !(!BG(a.bIJ.bJs,E(1867))&&!BG(a.bIJ.bJs,E(1868))&&!BG(a.bIJ.bJs,E(1869))&&!BG(a.bIJ.bJs,E(1870)))?1:0;},EXq=a=>{return !(!BG(a.bIJ.bJs,E(1871))&&!BG(a.bIJ.bJs,E(1872))&&!BG(a.bIJ.bJs,E(1873))&&!BG(a.bIJ.bJs,E(1874)))?1:0;},DGO=a=>{return !(!BG(a.bIJ.bJs, +E(355))&&!BG(a.bIJ.bJs,E(1875))&&!BG(a.bIJ.bJs,E(1876))&&!BG(a.bIJ.bJs,E(1877))&&!BG(a.bIJ.bJs,E(1878)))?1:0;},Fad=()=>{C6G=0;CGT=Dp(E(1879));},A81=N(Bx),ANV=null,ADn=null,Rb=null,UZ=null,CJ0=null,Op=()=>{Op=Z(A81);D7r();},E6R=(a,b,c)=>{Op();Ct(a,b,c);},Beu=(a,b)=>{let c=new A81();E6R(c,a,b);return c;},D7r=()=>{let b,c,d;ANV=Beu(E(1880),0);ADn=Beu(E(1881),1);Rb=Beu(E(1882),2);b=Beu(E(1883),3);UZ=b;c=K(A81,4);d=c.data;d[0]=ANV;d[1]=ADn;d[2]=Rb;d[3]=b;CJ0=c;}; +function Cxr(){let a=this;F.call(a);a.b$Z=null;a.ccD=null;} +let EG4=(a,b,c)=>{a.b$Z=b;a.ccD=c;},C3q=(a,b)=>{let c=new Cxr();EG4(c,a,b);return c;}; +function Caz(){let a=this;F.call(a);a.cfe=null;a.ccp=null;a.ciB=null;} +let D1P=a=>{let b,c,d;b=a.cfe;if(b!==null){b=BY(b);c=a.ccp;d=new S;T(d);H(H(H(d,b),E(1884)),c);return Q(d);}return a.ccp;},CAa=a=>{return a.cfe;}; +function DE8(){F.call(this);this.dfg=null;} +function ER3(){F.call(this);this.dfk=null;} +function EA4(){F.call(this);this.dfe=null;} +function C9U(){let a=this;F.call(a);a.b8j=null;a.cUG=null;} +let BFQ=a=>{return Bad(a.cUG);},Ez1=(a,b,c,d)=>{let e,f,g;e=b/2.0+G4(d)*b/2.0;f=c/2.0+H0(d)*c/2.0;g=(BFQ(a)-0.5)/50.0;return BA(e+g*b,f+g*c);}; +function Cc6(){F.call(this);this.c4Q=null;} +let ERm=(a,b,c)=>{let d;d=BMv(ID(b),2.0,c);b=(BP8(b)).dX();while(b.dY()){Bh2(d,b.dZ());}a.c4Q=B1U(d);},D$$=(a,b)=>{let c=new Cc6();ERm(c,a,b);return c;}; +function Daj(){let a=this;F.call(a);a.czM=null;a.c$0=4.0;} +let EZq=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;a.c$0=4.0;d=EE();e=BA(0.0,0.0);f=Br2(b);while(true){if(!Bq(f)){a.czM=d;d.bG1=b.bG1;return;}g=Bm(f);h=g.bO7;NQ();if(h===Xw){i=g.bLy.data;j=i[0];k=i[1];Ec(d,j,k);e=BA(j,k);}else if(h===ABD){i=g.bLy.data;l=i[4];m=i[5];n=BMv(e,2.0,c);o=new Bs9;p=e.bGK;q=e.bGL;i=g.bLy.data;B0o(o,p,q,i[0],i[1],i[2],i[3],l,m);Bh2(n,o);n=Br(n.b5F);while(Bq(n)){Wx(d,Bm(n));}e=BA(l,m);}else if(h!==VJ){if(h!==AA1)break;i=g.bLy.data;j=i[5];k=i[6];B2(d,j,k);e=BA(j,k);}else{i=g.bLy.data;j +=i[0];k=i[1];n=AYh(e.bGK,e.bGL,4.0,c);Vz(n,j,k);n=Br2(B1U(n));while(Bq(n)){r=Bm(n);if(r.bO7===VJ){i=r.bLy.data;B2(d,i[0],i[1]);}}e=BA(j,k);}}a.czM=b;},DN5=(a,b)=>{let c=new Daj();EZq(c,a,b);return c;}; +function B5f(){let a=this;F.call(a);a.bIu=null;a.bI1=null;} +let FbR=a=>{return a.bI1;},B5r=(a,b)=>{let c;c=a.bI1;a.bI1=b;return c;},EAO=a=>{return a.bIu;},Fk0=(a,b)=>{let c;if(a!==b){if(F0(b,Vk)){c=b;return !(Li(a.bIu,c.d0())&&Li(a.bI1,c.d1()))?0:1;}return 0;}return 1;},FdH=a=>{return Oz(a.bIu)^Oz(a.bI1);},EyT=a=>{let b,c,d;b=BY(a.bIu);c=BY(a.bI1);d=new S;T(d);b=H(d,b);Bb(b,61);H(b,c);return Q(d);}; +function AVK(){let a=this;B5f.call(a);a.bKk=null;a.bK5=null;a.bWu=0;a.bZg=0;} +let ESd=(a,b)=>{let c;c=null;a.bIu=b;a.bI1=c;a.bWu=1;a.bZg=1;},C$$=a=>{let b=new AVK();ESd(b,a);return b;},B5W=a=>{let b;b=BL6(a);if(b!=2){if(b==(-2)){if(BL6(a.bKk)>0)a.bKk=B_v(a.bKk);return C9X(a);}return a;}if(BL6(a.bK5)<0)a.bK5=C9X(a.bK5);return B_v(a);},BL6=a=>{let b,c;b=a.bK5;c=b===null?0:b.bWu;b=a.bKk;return c-(b===null?0:b.bWu)|0;},C9X=a=>{let b;b=a.bKk;a.bKk=b.bK5;b.bK5=a;ACT(a);ACT(b);return b;},B_v=a=>{let b;b=a.bK5;a.bK5=b.bKk;b.bKk=a;ACT(a);ACT(b);return b;},ACT=a=>{let b,c,d;b=a.bK5;c=b===null? +0:b.bWu;b=a.bKk;d=b===null?0:b.bWu;a.bWu=DT(c,d)+1|0;a.bZg=1;b=a.bKk;if(b!==null)a.bZg=1+b.bZg|0;b=a.bK5;if(b!==null)a.bZg=a.bZg+b.bZg|0;},AJw=(a,b)=>{return b?a.bK5:a.bKk;},A8k=(a,b)=>{return b?a.bKk:a.bK5;},E_$=N(),BXW=b=>{return null;},BVO=b=>{let c,d,e,f,g;c=b.data;d=new Bi;AUa();e=c.length;A0i(d,EeW(b,0,e));f=new Bz_;if(e>=24){f.bNs=C7k(b,16);f.bOO=C7k(b,20);f.cau=2;f.b0e=Ca(0);g=new S;T(g);H(H(g,E(88)),d);f.cgu=Q(g);return f;}d=new Bt;f=new S;T(f);g=H(f,E(1885));BE(g,e);H(g,E(1886));Bp(d,Q(f));J(d);},DxE +=N(),Bt9=(b,c,d)=>{return CmP(b,c,d);},DK9=N(); +function BCm(){F.call(this);this.c$W=null;} +let CBF=null,WH=null,AOW=null,U0=()=>{U0=Z(BCm);ECd();},DT8=(a,b)=>{U0();a.c$W=b;},BWi=a=>{let b=new BCm();DT8(b,a);return b;},ECd=()=>{CBF=BWi(E(1887));WH=BWi(E(1888));AOW=BWi(E(1889));}; +function BDw(){let a=this;F.call(a);a.dbT=null;a.cLh=null;a.cL_=0.0;a.cNe=0.0;a.csk=null;a.cGf=null;a.b__=0;} +let EBz=(a,b)=>{let c;if(b===null){c=new Bt;Bp(c,E(1890));J(c);}a.csk=b;return a;},Ffe=(a,b)=>{let c;if(b===null){c=new Bt;Bp(c,E(1890));J(c);}a.cGf=b;return a;},Dje=(a,b,c,d)=>{let e,f,g,h,i,j,$$je;a:{e=a.b__;if(e!=3){if(d)break a;if(e!=2)break a;}b=new BP;X(b);J(b);}a.b__=!d?1:2;f=a;while(true){try{g=DuU(f,b,c);}catch($$e){$$je=P($$e);if($$je instanceof DR){f=$$je;b=new BIB;YV(b,f);J(b);}else{throw $$e;}}if(ANP(g)){if(!d)return g;h=IL(b);if(h<=0)return g;g=ABf(h);}else if(A9z(g))break;i=!BE2(g)?a.csk:a.cGf;b: +{U0();if(i!==WH){if(i===CBF)break b;else return g;}h=IL(c);j=a.cLh;e=j.data.length;if(h{let c,d,e;if(IL(b)){a.b__=0;c=CSU(IL(b)*a.cL_|0);while(true){d=Dje(a,b,c,0);Mi();if(d===Up)break;if(d===Sk){c=B$B(a,c);continue;}if(!Bas(d))continue;BqT(d);}b=Dje(a,b,c,1);if(Bas(b))BqT(b);while(true){e=a.b__;if(e!=2&&e!=4){b=new BP;X(b);J(b);}b=Up;if(b===b)a.b__=3;if(ANP(b))break;if(!A9z(b))continue;c=B$B(a,c);}BuY(c);return c;}return CSU(0);},B$B=(a, +b)=>{let c,d;c=B2N(b);d=CQP(AQU(c,c.data.length*2|0));VZ(d,b.bHS);return d;},AMA=N(Dd),ACs=N(),DC6=(a,b)=>{return a.BK(b,0,b.data.length);},DQF=a=>{return 0;}; +function ANc(){let a=this;ACs.call(a);a.cIk=null;a.b0B=0;a.c8r=0;a.chN=0;} +let CsM=(a,b,c,d)=>{a.cIk=b;a.b0B=c;a.c8r=c;a.chN=c+d|0;},DNs=(a,b,c)=>{let d=new ANc();CsM(d,a,b,c);return d;},A2x=(a,b)=>{CsM(a,b,0,b.data.length);},A0A=a=>{let b=new ANc();A2x(b,a);return b;},AEG=a=>{let b,c,d;b=a.b0B;if(b>=a.chN)c=(-1);else{d=a.cIk.data;a.b0B=b+1|0;c=d[b]&255;}return c;},Er4=(a,b,c,d)=>{let e,f,g,h,i;e=DO(d,a.chN-a.b0B|0);f=0;while(f{return a.chN-a.b0B|0;},BLu=a=>{return;},AYb=N(Bx),AIk +=null,A6O=null,AZ$=null,A5O=null,AXc=null,AWn=null,A7F=null,AT1=null,ATM=null,AQw=null,APc=null,APk=null,AQQ=null,APs=null,ATX=null,AX2=null,AZC=null,AKT=null,AO6=null,A9b=null,AY3=null,A8v=null,A8z=null,AZm=null,A3b=null,AKV=null,AUK=null,A3t=null,A$t=null,A5v=null,ANT=null,A8h=null,A8S=null,ANn=null,Djr=null,Djc=null,C0i=null,CmY=null,CHU=null,CHT=null,Dax=null; +let CvH=null,B_n=null,Dd5=null,Cm5=null,COS=null,C4h=null,CgS=null,B$n=null,Cw_=null,CRg=null,CSc=null,CM_=null,CLk=null,CIm=null,DqP=null,CuI=null,CyF=null,DkB=null,CiQ=null,Cge=null,CfX=null,CYJ=null,Ddy=null,CZ7=null,CYZ=null,DoF=null,Caa=null,Ii=()=>{Ii=Z(AYb);EiW();},E4q=(a,b,c)=>{Ii();Ct(a,b,c);},HV=(a,b)=>{let c=new AYb();E4q(c,a,b);return c;},LB=b=>{let c,d,e;Ii();c=new Ch;d=K(Bg,4);e=d.data;e[0]=BL();e[1]=Bd();e[2]=Bc(b);e[3]=Bc(E(638));Cj(c,d);return c;},Fa1=b=>{let c;Ii();c=b.bGP;if(!G7(CHU,b)){if +(!G7(CHT,b)){if(G7(Dax,b)&&!CB(c,E(1212)))return A8h;if(DS(CN(Dp3(b),CfD),BH)?0:1){if(!G7(Djr,b)){if(!G7(Djc,b)){if(!G7(C0i,b)){if(!G7(CmY,b)){if(!G7(CvH,b)){if(!G7(B_n,b)){if(!G7(Dd5,b)){if(!G7(Cm5,b)){if(!G7(COS,b)){if(!G7(C4h,b)){if(!G7(CgS,b)){if(!G7(B$n,b)){if(!G7(Cw_,b)){if(!G7(CRg,b)){if(!G7(CSc,b)){if(!G7(CM_,b)){if(!G7(CLk,b)){if(!G7(CIm,b)){if(!G7(DqP,b)){if(!G7(CuI,b)){if(!G7(CyF,b)){if(!G7(DkB,b)){if(!G7(CiQ,b)){if(!G7(Cge,b)){if(!G7(CfX,b)){if(!G7(CYJ,b)){if(!G7(Ddy,b)){if(!G7(CZ7,b)){if(!G7(CYZ, +b)){if(G7(DoF,b))return A8S;return AIk;}return A5v;}return A$t;}return A3t;}return AUK;}return AKV;}return A3b;}return AZm;}return A8z;}return A8v;}return AO6;}return AKT;}return ATX;}return APs;}return AQQ;}return APk;}return APc;}return AQw;}return ATM;}return AZC;}return AX2;}return AXc;}return A5O;}return AT1;}return A7F;}return AWn;}return AZ$;}return A6O;}return AY3;}return A9b;}return AIk;}return ANT;}return ANT;},BzP=b=>{Ii();return !(b!=34&&b!=39)?1:0;},BPT=b=>{Ii();Fr();return BGM(b);},BtN=b=>{Ii();return !(b +>=48&&b<=57)?0:1;},Bqh=b=>{Ii();return !(!CK3(b)&&!BtN(b)&&!Djk(b))?1:0;},B4k=b=>{Ii();return !(!CK3(b)&&b!=36&&!Djk(b))?1:0;},CK3=b=>{Ii();return !(!AV2(b)&&b!=95)?1:0;},Djk=b=>{Ii();return !(!Sh(b)&&!Pl(b))?1:0;},Fpe=()=>{let b,c;Ii();b=K(AYb,33);c=b.data;c[0]=AIk;c[1]=A6O;c[2]=AZ$;c[3]=A5O;c[4]=AXc;c[5]=AWn;c[6]=A7F;c[7]=AT1;c[8]=ATM;c[9]=AQw;c[10]=APc;c[11]=APk;c[12]=AQQ;c[13]=APs;c[14]=ATX;c[15]=AX2;c[16]=AZC;c[17]=AKT;c[18]=AO6;c[19]=A9b;c[20]=AY3;c[21]=A8v;c[22]=A8z;c[23]=AZm;c[24]=A3b;c[25]=AKV;c[26] +=AUK;c[27]=A3t;c[28]=A$t;c[29]=A5v;c[30]=ANT;c[31]=A8h;c[32]=A8S;return b;},EiW=()=>{let b,c,d,e,f,g,h,i;AIk=HV(E(934),0);A6O=HV(E(1891),1);AZ$=HV(E(1892),2);A5O=HV(E(1893),3);AXc=HV(E(1894),4);AWn=HV(E(1895),5);A7F=HV(E(1896),6);AT1=HV(E(1897),7);ATM=HV(E(1898),8);AQw=HV(E(1899),9);APc=HV(E(1900),10);APk=HV(E(1901),11);AQQ=HV(E(1902),12);APs=HV(E(1903),13);ATX=HV(E(1904),14);AX2=HV(E(1905),15);AZC=HV(E(1906),16);AKT=HV(E(1907),17);AO6=HV(E(1908),18);A9b=HV(E(1635),19);AY3=HV(E(1636),20);A8v=HV(E(1909),21);A8z +=HV(E(1910),22);AZm=HV(E(1911),23);A3b=HV(E(1912),24);AKV=HV(E(1913),25);AUK=HV(E(1914),26);A3t=HV(E(1915),27);A$t=HV(E(1916),28);A5v=HV(E(1917),29);ANT=HV(E(1918),30);A8h=HV(E(1919),31);A8S=HV(E(1920),32);Caa=Fpe();ANn=Bc(E(1921));b=new Ch;c=K(Bg,6);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(1243));d[3]=Bw();d[4]=ANn;d[5]=Bc(E(1922));Cj(b,c);Djr=b;e=new Ch;c=K(Bg,6);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(1735));d[3]=Bw();d[4]=ANn;d[5]=Bc(E(638));Cj(e,c);Djc=e;e=new Ch;c=K(Bg,6);d=c.data;d[0]=BL();d[1]=Bd();d[2] +=Bc(E(1243));d[3]=Bw();d[4]=ANn;d[5]=Bc(E(638));Cj(e,c);C0i=e;b=new Ch;c=K(Bg,10);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(1217));d[3]=Bd();d[4]=LZ(1,E(1923));d[5]=Bd();d[6]=Bc(E(1924));d[7]=ANn;d[8]=Bd();d[9]=Bc(E(1925));Cj(b,c);CmY=b;e=new Ch;c=K(Bg,3);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(1762));Cj(e,c);CHU=e;e=new Ch;c=K(Bg,7);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(1211));d[3]=Bc(E(649));d[4]=Bc(E(1212));d[5]=Bd();d[6]=BR();Cj(e,c);CHT=e;e=new Ch;c=K(Bg,3);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(1211));Cj(e, +c);Dax=e;CvH=LB(E(1732));B_n=LB(E(1926));Dd5=LB(E(1731));Cm5=LB(E(1927));COS=LB(E(1728));e=new Ch;c=K(Bg,8);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(1217));d[3]=LZ(1,E(1928));d[4]=Bc(E(39));d[5]=Bw();d[6]=Bc(E(1924));d[7]=ANn;Cj(e,c);C4h=e;e=new Ch;c=K(Bg,8);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(1217));d[3]=LZ(1,E(1928));d[4]=Bc(E(1725));d[5]=Bw();d[6]=Bc(E(1924));d[7]=ANn;Cj(e,c);CgS=e;B$n=LB(E(1929));Cw_=LB(E(1730));CRg=LB(E(1930));CSc=LB(E(1738));CM_=LB(E(1931));CLk=LB(E(1740));CIm=LB(E(1932));f=new Ch;c= +K(Bg,6);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(1933));d[3]=Bd();g=new DD;h=K(Bg,3);i=h.data;i[0]=Bc(E(39));i[1]=Bc(E(1934));i[2]=Bc(E(1725));Eb(g,h);d[4]=g;d[5]=Bc(E(638));Cj(f,c);DqP=f;CuI=LB(E(1723));CyF=LB(E(1935));b=new Ch;c=K(Bg,6);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(1247));d[3]=Bd();f=new C0;g=new DD;h=K(Bg,3);i=h.data;i[0]=Bc(E(1248));i[1]=Bc(E(1936));i[2]=Bc(E(1937));Eb(g,h);C3(f,g);d[4]=f;d[5]=Bc(E(638));Cj(b,c);DkB=b;CiQ=LB(E(1938));Cge=LB(E(1939));CfX=LB(E(1940));CYJ=LB(E(1941));Ddy=LB(E(1942));CZ7 +=LB(E(1246));CYZ=LB(E(1237));DoF=LB(E(1943));}; +function FA(){let a=this;F.call(a);a.bIq=0;a.bHM=null;} +let DrU=null,EaE=0,Bp4=()=>{Bp4=Z(FA);ENb();},Kk=(a,b)=>{Bp4();a.bIq=0;a.bHM=b;},ADN=a=>{return a.bHM.bIM;},DnJ=a=>{return a.bHM;},Ud=a=>{let b;b=CC(a.bHM.bGP,a.bIq);a.bIq=W0(a.bHM);return b;},AGR=(a,b,c)=>{let d;d=JZ(a);if(d!=123&&d!=91)return ARA(CI2(a),a.bHM,b,c);return LX(AQS(Ud(a)));},CI2=a=>{let b;b=Bbe();CGg(a,b,0);if(!b.bMr.dV())J(EC(E(1944),a.bHM));return b;},CGg=(a,b,c)=>{let d,e;d=null;while(true){e=Ckf(d,a,c);if(e===null)break;T9(b,e);if(e.bJC!==ABM)d=e;}},Dqn=a=>{let b,c,d;b=JZ(a);if(BzP(b)){Wc(a, +b);c=new S;T(c);a:{b:{while(a.bIq{let b,c,d,e;if(!BzP(JZ(a))){b=new S;T(b);c=0;while(true){d=JZ(a);if(!d)J(EC(E(1946),a.bHM));if(!c){if(d==44)break;if(d==41)break;}e=P0(a);if(e==40)c=c+1|0;else if(e==41)c=c+(-1)|0;Bb(b,e);}return Dk(Q(b));}return Dqn(a);},Zt=a=>{let b,c,d;b=new S;c=P0(a);d=new S;T(d);Bb(d,c);A_K(b,Q(d));if(!B4k(Vx(b,0)))J(EC(E(1947),a.bHM));C1x(a,b);return Q(b);},Eg=a=>{while +(a.bIq{if(a.bIq{let b,c;b=a.bHM.bGP;Bp4();c=Cz0(D3(DrU,b),a.bIq,b.bGI.length);return CEt(c,c.bWE,1);},BoL=a=>{if((a.bIq+1|0){let b;b=AAS(a.bHM,a.bIq);a.bIq=a.bIq+1|0;return b;},Wc=(a,b)=>{if(a.bIq{let c;c=0;while(c{let c;while(a.bIq{let h,i,j,k,l,m;h=Bk();i=new S;j=P0(a);k=new S;T(k);Bb(k,j);A_K(i,Q(k));if(B4k(Vx(i,0))){C1x(a,i);k=Q(i);Eg(a);if(!(a.bIq{EaE=0;DrU=Dp(E(1952));}; +function Dp0(){FA.call(this);this.cKp=null;} +let Egb=(a,b)=>{Kk(a,b);},Ety=a=>{let b=new Dp0();Egb(b,a);return b;},EKS=(a,b,c)=>{Eg(a);Hi(a,E(1723));Eg(a);a.cKp=AGR(a,b,c);},DOM=a=>{return a.cKp;}; +function DfX(){let a=this;F.call(a);a.coj=null;a.cqz=null;a.dbo=null;a.c1z=0;a.cVi=null;} +let DNX=(a,b,c,d,e)=>{a.coj=c;a.cVi=e;a.cqz=b;a.dbo=e!==null?B9b(e):null;a.c1z=d;},AKa=(a,b,c,d)=>{let e=new DfX();DNX(e,a,b,c,d);return e;},FuR=(a,b)=>{return AKa(b,a.coj,0,null);},By=()=>{return AKa(null,null,0,null);},APx=()=>{return AKa(null,E(1489),10,null);},B5=b=>{return AKa(null,b,0,null);},ASC=(b,c)=>{return AKa(null,b,0,c);},B9b=b=>{let c,d,e,f,g,h,i;c=Bk();d=AC1(b);e=c;U(e,d);f=(Coa(b)).data;g=f.length;h=0;while(h=g)break a;b=Deo(f[h]);d=new S;T(d);H(H(d,E(1953)),b);U(e,Q(d));h=h+1|0;}}}return c;},OI=a=>{return a.coj!==null?0:1;},CuK=a=>{return a.cqz;},BcX=N(Bl),CIp=null,CIN=null,A0q=()=>{A0q=Z(BcX);DZF();},E6f=(a,b,c)=>{let d,e,f;d=new S;T(d);e=R(c,E(1858),0);f=R(c,E(1955),0);L(d,E(1956));L(d,e);if(f!==null){L(d,E(1957));L(d,f);}a:{if(!Qc(e,E(1958))){if(f===null)break a;if(!Qc(f,E(1958)))break a;}L(d, +E(1959));}return Q(d);},DRk=a=>{A0q();return CIp;},Dtv=(a,b,c,d,e)=>{let f,g;a:{b=b;f=DM(R(d,E(1858),0));if(f===0.0)b=B5(E(1960));else{if(R(d,E(1955),0)!==null){g=DM(R(d,E(1955),0));if(g===0.0){b=B5(E(1960));break a;}f=f/g;}b.bVi=Ce3(f);b=By();}}return b;},DZF=()=>{let b,c,d,e,f,g,h,i;b=K(Bi,1);b.data[0]=E(1961);CIp=Bv(b);c=new BcX;A0q();d=BN(Bo(BcX));b=K(Bg,6);e=b.data;e[0]=BL();e[1]=Bc(E(1961));e[2]=Bw();e[3]=Ba(1,E(1858),E(1962));f=new C0;g=new Ch;h=K(Bg,4);i=h.data;i[0]=Bd();i[1]=Bc(E(21));i[2]=Bd();i[3] +=Ba(1,E(1955),E(1962));Cj(g,h);C3(f,g);e[4]=f;e[5]=BR();Cb(c,BT(d,b));CIN=c;},Bhr=N(Bl),CmE=null,CKa=null,A3X=()=>{A3X=Z(Bhr);FwB();},Du8=(a,b,c)=>{let d;b=R(c,E(685),0);c=R(c,E(688),0);d=new S;T(d);H(H(H(H(H(d,E(1963)),b),E(1964)),c),E(1965));return Q(d);},Fh4=a=>{A3X();return CmE;},FkM=(a,b,c,d,e)=>{let f,g;b=b;f=DM(R(d,E(685),0));g=DM(R(d,E(688),0));c=new C_C;c.cS_=f;c.cPW=g;b.bVi=c;return By();},FwB=()=>{let b,c,d,e;b=K(Bi,1);b.data[0]=E(1961);CmE=Bv(b);c=new Bhr;A3X();d=BN(Bo(Bhr));b=K(Bg,9);e=b.data;e[0] +=BL();e[1]=Bc(E(1961));e[2]=Bw();e[3]=Ba(1,E(685),E(1962));e[4]=Bd();e[5]=Bc(E(1966));e[6]=Bd();e[7]=Ba(1,E(688),E(1962));e[8]=BR();Cb(c,BT(d,b));CKa=c;},Bi1=N(Bl),C6Y=null,CAe=null,A50=()=>{A50=Z(Bi1);DD$();},Ezq=(a,b,c)=>{let d;b=!BG(E(362),R(c,E(685),0))?E(363):E(362);c=R(c,E(696),0);d=new S;T(d);H(H(H(H(H(d,E(1967)),b),E(1968)),c),E(1965));return Q(d);},E0q=a=>{A50();return C6Y;},E0e=(a,b,c,d,e)=>{let f;b=b;f=DM(R(d,E(696),0));if(!BG(E(362),R(d,E(685),0))){c=new CiP;c.c03=f;b.bVi=c;}else{c=new CNg;c.c4_ +=f;b.bVi=c;}return By();},DD$=()=>{let b,c,d,e;b=K(Bi,1);b.data[0]=E(1961);C6Y=Bv(b);c=new Bi1;A50();d=BN(Bo(Bi1));b=K(Bg,7);e=b.data;e[0]=BL();e[1]=Bc(E(1961));e[2]=Bw();e[3]=Ba(1,E(696),E(1962));e[4]=Bw();e[5]=Ba(1,E(685),E(1969));e[6]=BR();Cb(c,BT(d,b));CAe=c;},BgE=N(Bl),Dk0=null,Deb=null,A5e=()=>{A5e=Z(BgE);DM_();},DXg=(a,b,c)=>{b=R(c,E(685),0);c=new S;T(c);H(H(H(c,E(1970)),b),E(1965));return Q(c);},Dzt=a=>{A5e();return Dk0;},Ea3=(a,b,c,d,e)=>{let f;b=b;f=DM(R(d,E(685),0));c=new C0H;c.cTx=f;b.bVi=c;return By();},DM_ +=()=>{let b,c,d,e;b=K(Bi,1);b.data[0]=E(1961);Dk0=Bv(b);c=new BgE;A5e();d=BN(Bo(BgE));b=K(Bg,9);e=b.data;e[0]=BL();e[1]=Bc(E(1961));e[2]=Bw();e[3]=Bc(E(1971));e[4]=Bw();e[5]=Ba(1,E(685),E(1962));e[6]=Bw();e[7]=Bc(E(362));e[8]=BR();Cb(c,BT(d,b));Deb=c;},BfY=N(Bl),Csx=null,C3i=null,A8_=()=>{A8_=Z(BfY);ENN();},EfI=(a,b,c)=>{b=R(c,E(688),0);c=new S;T(c);H(H(H(c,E(1972)),b),E(1965));return Q(c);},Eid=a=>{A8_();return Csx;},EEw=(a,b,c,d,e)=>{let f;b=b;f=DM(R(d,E(688),0));c=new CWt;c.c5J=f;b.bVi=c;return By();},ENN +=()=>{let b,c,d,e;b=K(Bi,1);b.data[0]=E(1961);Csx=Bv(b);c=new BfY;A8_();d=BN(Bo(BfY));b=K(Bg,9);e=b.data;e[0]=BL();e[1]=Bc(E(1961));e[2]=Bw();e[3]=Bc(E(1971));e[4]=Bw();e[5]=Ba(1,E(688),E(1962));e[6]=Bw();e[7]=Bc(E(363));e[8]=BR();Cb(c,BT(d,b));C3i=c;}; +let Bp$=N(Bl),CDf=null,CYg=null,A_J=()=>{A_J=Z(Bp$);D4_();},FgA=(a,b,c)=>{let d;b=R(c,E(685),0);c=R(c,E(688),0);d=new S;T(d);H(H(H(H(H(d,E(1973)),b),E(1964)),c),E(1965));return Q(d);},FvP=a=>{A_J();return CDf;},Ft5=(a,b,c,d,e)=>{let f,g;b=b;f=DM(R(d,E(685),0));g=DM(R(d,E(688),0));c=new C5K;c.cVM=f;c.c0b=g;b.bVi=c;return By();},D4_=()=>{let b,c,d,e;b=K(Bi,1);b.data[0]=E(1961);CDf=Bv(b);c=new Bp$;A_J();d=BN(Bo(Bp$));b=K(Bg,11);e=b.data;e[0]=BL();e[1]=Bc(E(1961));e[2]=Bw();e[3]=Bc(E(1971));e[4]=Bw();e[5]=Ba(1, +E(685),E(1962));e[6]=Bd();e[7]=Bc(E(1966));e[8]=Bd();e[9]=Ba(1,E(688),E(1962));e[10]=BR();Cb(c,BT(d,b));CYg=c;},J1=N(Dt); +function AMj(){Bx.call(this);this.c3E=null;} +let Brd=null,BO9=null,BS0=null,BTn=null,Be$=null,BgY=null,A5w=null,AZv=null,BzZ=null,A1g=null,A82=null,VC=null,AVb=null,APz=null,Bez=null,Bjr=null,BDB=null,B1S=null,A0n=null,BxH=null,BUp=null,B6q=null,BH8=null,A97=null,BPi=null,Dni=null,IY=()=>{IY=Z(AMj);ErJ();},EKz=(a,b,c)=>{IY();C7H(a,b,c,null);},K4=(a,b)=>{let c=new AMj();EKz(c,a,b);return c;},C7H=(a,b,c,d)=>{IY();Ct(a,b,c);a.c3E=d;},Dr4=(a,b,c)=>{let d=new AMj();C7H(d,a,b,c);return d;},CdJ=b=>{let c,d,e,f,g;IY();c=new S;T(c);d=(Q5(b)).data;e=d.length;f= +0;while(f=65&&g<=90)){if(g<97)break a;if(g>122)break a;}Bb(c,LG(g));}f=f+1|0;}return Q(c);},ErJ=()=>{let b,c,d;Brd=K4(E(1974),0);BO9=K4(E(1975),1);BS0=K4(E(1976),2);BTn=K4(E(1977),3);Be$=K4(E(1978),4);BgY=K4(E(661),5);A5w=K4(E(1979),6);AZv=K4(E(1980),7);BzZ=K4(E(1981),8);A1g=K4(E(1982),9);A82=K4(E(1983),10);VC=K4(E(1984),11);AVb=K4(E(1985),12);APz=K4(E(1986),13);Bez=K4(E(1987),14);Bjr=K4(E(1988),15);BDB=K4(E(1989),16);B1S=K4(E(1990),17);A0n=K4(E(1991),18);BxH=Dr4(E(1992),19,E(13));BUp=Dr4(E(1993), +20,E(13));B6q=K4(E(1994),21);BH8=K4(E(1995),22);A97=K4(E(1996),23);b=K4(E(1997),24);BPi=b;c=K(AMj,25);d=c.data;d[0]=Brd;d[1]=BO9;d[2]=BS0;d[3]=BTn;d[4]=Be$;d[5]=BgY;d[6]=A5w;d[7]=AZv;d[8]=BzZ;d[9]=A1g;d[10]=A82;d[11]=VC;d[12]=AVb;d[13]=APz;d[14]=Bez;d[15]=Bjr;d[16]=BDB;d[17]=B1S;d[18]=A0n;d[19]=BxH;d[20]=BUp;d[21]=B6q;d[22]=BH8;d[23]=A97;d[24]=b;Dni=c;}; +function C6W(){let a=this;F.call(a);a.bLC=null;a.c1B=null;a.b2j=null;a.b0P=null;} +let D4X=a=>{Op();a.bLC=ANV;},ACm=()=>{let a=new C6W();D4X(a);return a;},FnZ=a=>{BCF();switch(C3B.data[a.bLC.bGO]){case 1:break;case 2:return Bci(a);case 3:return AFN(a.b2j);case 4:return B7I(a.b0P);default:return JH(a);}return E(1998);},AWS=(a,b)=>{let c,d;c=a.bLC;Op();if(c===ANV){a.b2j=Bk();a.bLC=Rb;}else if(c!==Rb){d=new BP;Bp(d,E(1999));J(d);}U(a.b2j,b);},AVU=(a,b,c)=>{let d;d=a.bLC;Op();if(d===ANV){a.b0P=E9();a.bLC=UZ;}else if(d!==UZ){c=new BP;Bp(c,E(2000));J(c);}Es(a.b0P,b,c);},Bci=a=>{let b;b=a.bLC;Op();if +(b!==ADn){b=new BP;Bp(b,E(2001));J(b);}return a.c1B;},CPy=(a,b)=>{let c;c=a.bLC;Op();if(c!==Rb){c=new BP;Bp(c,E(2002));J(c);}return Be(a.b2j,b);},Clf=a=>{let b;b=a.bLC;Op();if(b!==Rb){if(b!==UZ){b=new BP;Bp(b,E(2003));J(b);}return a.b0P.bHv;}return a.b2j.bGJ;},Bj6=b=>{let c,d;c=ACm();d=c.bLC;Op();if(d!==Rb&&d!==UZ){c.c1B=b;c.b2j=null;c.b0P=null;c.bLC=ADn;return c;}b=new BP;X(b);J(b);},C7D=b=>{let c;c=ACm();c.b2j=Bk();Op();c.bLC=Rb;b=b.dX();while(b.dY()){AWS(c,Bj6(b.dZ()));}return c;}; +function DgJ(){T5.call(this);this.b8C=null;} +let Ea8=(a,b)=>{let c;A7e(a);if(b===null){c=new F2;Bp(c,E(1692));J(c);}a.b8C=b;},Dn$=a=>{let b=new DgJ();Ea8(b,a);return b;},Fls=(a,b)=>{let c;c=a.b8C;Ww(b.bMO,34);CiA(b,c);Ww(b.bMO,34);},EQ5=a=>{return 1;},DTO=a=>{return a.b8C;},FkG=a=>{return FP(a.b8C);},EJH=(a,b)=>{let c;if(a!==b){if(b!==null){if(Dg(a)===Dg(b)){c=b;return Bj(a.b8C,c.b8C);}return 0;}return 0;}return 1;}; +function CAA(){F.call(this);this.c95=null;} +let Fv$=(a,b)=>{a.c95=b;},E9S=a=>{let b=new CAA();Fv$(b,a);return b;}; +function CEu(){let a=this;F.call(a);a.b5F=null;a.cet=0.0;a.ceu=0.0;a.cQr=0.0;a.cVj=null;} +let D0i=(a,b,c,d,e)=>{let f;f=Bk();a.b5F=f;a.cet=b;a.ceu=c;a.cQr=d;a.cVj=e;e=BA(b,c);U(f,e);},AYh=(a,b,c,d)=>{let e=new CEu();D0i(e,a,b,c,d);return e;},BMv=(b,c,d)=>{return AYh(b.bGK,b.bGL,c,d);},A3m=(a,b)=>{Vz(a,b.bGK,b.bGL);},BuR=(a,b,c,d,e,f,g)=>{A3m(a,C9c(d,e,(b+c)/2.0,f,g));A3m(a,C9c(d,e,c,f,g));},C9c=(b,c,d,e,f)=>{return BA(b+G4(d)*e,c+H0(d)*f);},Vz=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;d=EL(b-a.cet);e=EL(c-a.ceu);f=Gs(d*d+e*e);if(!(f<0.001)){g=Cp((AGn(f/10.0)));h=a.cQr;if(g<5){g=5;h=h/3.0;}i=A$W(b +-a.cet)*d;j=g;k=i/j;l=A$W(c-a.ceu)*e/j;m=d/f;n=e/f;o=0;while(o{let c,d,e,f,g,h,i,j,k,l;c=b.bLq;d=b.bLp;e=b.bOF;f=b.bOC;g=b.bOE;h=b.bOD;i=b.bMb;j=b.bMa;d=Gs(BC(BeR(c,d,i,j,e,f),BeR(c,d,i,j,g,h)));j=Jy(P3(b),Mc(b));if(d>0.1&&j>20.0){k=Zp();l=Zp();A7K(b,k,l);Bh2(a,k);Bh2(a,l);return;}A3m(a,Mc(b));},C6T=a=>{let b,c,d;b=Fj();c=Br(a.b5F);while(Bq(c)){d=Bm(c);BQ(b, +d.bGK,d.bGL);}return b;},B1U=a=>{let b,c,d;b=null;c=Br(a.b5F);while(Bq(c)){d=Bm(c);if(b!==null)Wx(b,d);else{b=EE();AMc(b,d);}}if(b===null){b=new BP;X(b);J(b);}return b;}; +function Jn(){let a=this;F.call(a);a.bGK=0.0;a.bGL=0.0;} +let DKA=a=>{let b,c,d,e;b=a.bGK;c=a.bGL;d=new S;T(d);Bb(d,40);e=D6(d,b);Bb(e,44);Bb(D6(e,c),41);return Q(d);},Kz=(a,b,c)=>{a.bGK=b;a.bGL=c;},BA=(a,b)=>{let c=new Jn();Kz(c,a,b);return c;},AN2=(a,b)=>{let c;c=b;return !(a.bGK===c.bGK&&a.bGL===c.bGL)?0:1;},Ext=a=>{return A7J(DL(a.bGK))+A7J(DL(a.bGL))|0;},H4=(a,b)=>{let c,d,e,f;c=b.bMu;d=a.bGK;c=c*d;e=b.bPi;f=a.bGL;return BA(c+e*f+b.bOk,b.bPg*d+b.bMt*f+b.bOj);},LD=a=>{return a.bGK;},LW=a=>{return a.bGL;},Jy=(a,b)=>{let c,d;c=b.bGK-a.bGK;d=b.bGL-a.bGL;return Gs(c +*c+d*d);},C3h=(a,b)=>{let c,d;c=b.bGK-a.bGK;d=b.bGL-a.bGL;return c*c+d*d;},R5=(a,b,c)=>{return BA(a.bGK+b,a.bGL+c);}; +function Bs9(){let a=this;F.call(a);a.bLq=0.0;a.bLp=0.0;a.bOF=0.0;a.bOC=0.0;a.bOE=0.0;a.bOD=0.0;a.bMb=0.0;a.bMa=0.0;} +let Zp=()=>{return Sn(0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0);},B0o=(a,b,c,d,e,f,g,h,i)=>{a.bLq=b;a.bLp=c;a.bOF=d;a.bOC=e;a.bOE=f;a.bOD=g;a.bMb=h;a.bMa=i;},Sn=(a,b,c,d,e,f,g,h)=>{let i=new Bs9();B0o(i,a,b,c,d,e,f,g,h);return i;},P3=a=>{return BA(a.bLq,a.bLp);},Mc=a=>{return BA(a.bMb,a.bMa);},C1Q=(a,b,c,d,e,f,g,h,i)=>{a.bLq=b;a.bLp=c;a.bOF=d;a.bOC=e;a.bOE=f;a.bOD=g;a.bMb=h;a.bMa=i;},A7K=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;d=a.bLq;e=a.bLp;f=a.bOF;g=a.bOC;h=a.bOE;i=a.bOD;j=a.bMb;k=a.bMa;l=(f+h)/2.0;m=(g+i)/2.0;f +=(d+f)/2.0;n=(e+g)/2.0;h=(j+h)/2.0;i=(k+i)/2.0;o=(f+l)/2.0;p=(n+m)/2.0;q=(h+l)/2.0;r=(i+m)/2.0;l=(o+q)/2.0;m=(p+r)/2.0;if(b!==null)C1Q(b,d,e,f,n,o,p,l,m);if(c!==null)C1Q(c,l,m,q,r,h,i,j,k);},BAQ=a=>{return BA(a.bOF,a.bOC);},BjW=a=>{return BA(a.bOE,a.bOD);}; +function BVG(){let a=this;F.call(a);a.cF3=0;a.cra=0;a.cQT=0;} +let C$W=N(0); +function Bz_(){let a=this;F.call(a);a.bNs=0;a.bOO=0;a.cau=0;a.b0e=null;a.cgu=null;} +let Ezz=(a,b,c,d)=>{let e;a.bNs=b;a.bOO=c;a.cau=d;e=Ca(Ev(b,c));a.b0e=e;a.cgu=null;if(d!=1)Wm(e,0);else Wm(e,(-1));},CmP=(a,b,c)=>{let d=new Bz_();Ezz(d,a,b,c);return d;},C7k=(b,c)=>{b=b.data;return (b[c]&255)<<24|(b[c+1|0]&255)<<16|(b[c+2|0]&255)<<8|b[c+3|0]&255;},Bmn=(a,b,c,d)=>{let e;if(b>=0){e=a.bNs;if(b=0&&c{let i,j,k,l,m;i=b>>h&255;j=c>>h&255;k=d>>h&255;l=e>>h&255;m=i+f*(j-i|0);return DO(255,DT(0,Cp((AGn(m+g*(k+f*(l-k|0)-m))))));},BTp +=N(BUQ),B8$=a=>{return a.cQL;},BDF=N(0); +function CN1(){let a=this;BTp.call(a);a.cQL=0;a.bXm=null;a.cAF=null;} +let Fnq=(a,b,c,d,e,f)=>{CSu(a);a.bHS=b;a.bLv=c;a.cQL=d;a.bXm=e;a.cAF=f;},Cmk=(a,b,c,d,e)=>{let f=new CN1();Fnq(f,a,b,c,d,e);return f;},DCA=a=>{return a.bXm.length;},B4G=N(),A4j=N(B4G),EWe=N(A4j); +function BI_(){let a=this;F.call(a);a.b7w=0;a.chK=0;} +let Up=null,Sk=null,Mi=()=>{Mi=Z(BI_);Ehc();},Fkk=(a,b,c)=>{Mi();a.b7w=b;a.chK=c;},BB0=(a,b)=>{let c=new BI_();Fkk(c,a,b);return c;},ANP=a=>{return a.b7w?0:1;},A9z=a=>{return a.b7w!=1?0:1;},Bas=a=>{return !(!Dbi(a)&&!BE2(a))?1:0;},Dbi=a=>{return a.b7w!=2?0:1;},BE2=a=>{return a.b7w!=3?0:1;},BCA=a=>{let b;if(!Bas(a)){b=new BV;X(b);J(b);}return a.chK;},ABf=b=>{Mi();return BB0(2,b);},BqT=a=>{let b,c;switch(a.b7w){case 0:b=new Cwm;X(b);J(b);case 1:b=new ChF;X(b);J(b);case 2:b=new Dfm;c=a.chK;X(b);b.cTb=c;J(b);case 3:b +=new Dat;c=a.chK;X(b);b.c1r=c;J(b);default:}},Ehc=()=>{Up=BB0(0,0);Sk=BB0(1,0);},AKU=N(0); +function DkU(){let a=this;F.call(a);a.ctz=null;a.ckr=null;a.dbH=null;} +let Fv_=(a,b,c,d)=>{if(c===null)c=E(336);a.ctz=b instanceof ARK?b:FaH(b,1024);a.ckr=BBk(c,d);a.dbH=c;b=new Dsf;b.dcZ=a;Kh(b);},BG4=(a,b,c)=>{let d=new DkU();Fv_(d,a,b,c);return d;},BSR=(b,c)=>{let d,e,f;d=new ARK;e=new AG8;f=A0A(b);TU();A6M(e,f,Vb);BXT(d,e,1024);return BG4(d,c,null);},BAw=(b,c)=>{return BG4(b,c,null);},B3p=(b,c,d)=>{return BG4(b,c,d);},DE1=a=>{let b;b=AZ5(a.ctz);a.ckr=BnY(a.ckr);if(b!==null){if(BO(b,E(2004)))b=CC(b,1);return Ia(KG(b,8211,45),a.ckr);}return null;},DUG=a=>{AAF(a.ctz);}; +function BOv(){let a=this;F.call(a);a.cBY=null;a.cbc=null;a.c_c=0;} +let CSF=null,Bms=()=>{Bms=Z(BOv);ETl();},EU9=(a,b)=>{Bms();a.cBY=b;},BFu=a=>{let b=new BOv();EU9(b,a);return b;},A71=a=>{let b,c,d,e,f,g,h;b=a.cBY.tU();if(b!==null){c=b.bGP;AP7();d=c.bGI.length;e=0;f=0;a:{b:{c:{while(f{a.cBY.tW();},ETl=()=>{CSF=Dm(E(2005));},B7l=N(0),B2z=N(),FcQ=a=>{return;},D_Z=()=>{let a=new B2z();FcQ(a);return a;},B$M=(a,b)=>{let c;c=new CdA;c.dbk=a;c.cjv=b;c.cjz=1;return c;}; +function CqG(){let a=this;F.call(a);a.cY$=null;a.cIc=null;} +let EQa=(a,b)=>{a.cIc=Bk();a.cY$=b;},C0T=a=>{let b=new CqG();EQa(b,a);return b;},Fsv=a=>{let b,c,d;b=JH(a);c=a.cY$;d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},CbC=(a,b)=>{U(a.cIc,b);},Co0=a=>{return a.cIc;},EnS=(b,c,d,e)=>{let f,g,h,i,j;f=null;g=0;h=b;while(true){b=CaY(h);if(b===null)break;i=Ki(C8(b));Ii();if(i===AKV){j=new B73;Kk(j,C8(b));CQs(j,d,e);if(!Bj(j.cqc,c))continue;g=0;if(f!==null)continue;f=C0T(c);continue;}if(i===AUK&&f!==null)g=1;if(f!==null&&!g)CbC(f,b);}return f;}; +function CJH(){FA.call(this);this.c47=null;} +let Ezm=(a,b)=>{Kk(a,b);},Fqo=a=>{let b=new CJH();Ezm(b,a);return b;},Fn6=(a,b,c)=>{Eg(a);Hi(a,E(1942));Eg(a);a.c47=Tn(b,c,Ia(Ud(a),ADN(a)));},E2I=a=>{return a.c47;}; +function Cox(){let a=this;FA.call(a);a.cpY=null;a.b5e=null;a.cpq=null;a.daI=null;a.cAc=null;} +let D_N=(a,b,c)=>{let d,e;Eg(a);Hi(a,E(1935));Eg(a);d=Ud(a);a.b5e=d;e=IZ(FS(d),E(2006));if(e!=(-1)){a.cpq=Tn(b,c,Ia(Dk(CC(a.b5e,e+E(2006).bGI.length|0)),ADN(a)));a.b5e=Dk(B_(a.b5e,0,e));a.daI=b;}a.cpY=Tn(b,c,Ia(a.b5e,ADN(a)));},Fml=a=>{let b,c,d,e,$$je;a:{b:{try{b=DSu(a.cAc,a.cpY,a.cpq,DnJ(a));if(b===null)break b;}catch($$e){$$je=P($$e);if($$je instanceof Dd){c=$$je;break a;}else{throw $$e;}}return b;}c:{try{b=a.cpq;if(b===null){d=E(14);break c;}d=CR();H(H(d,E(1461)),b);d=CH(d);break c;}catch($$e){$$je=P($$e);if +($$je instanceof Dd){c=$$je;break a;}else{throw $$e;}}}try{b=new Ij;c=a.cpY;e=CR();H(H(H(e,E(2007)),c),d);JV(b,CH(e),DnJ(a));J(b);}catch($$e){$$je=P($$e);if($$je instanceof Dd){c=$$je;break a;}else{throw $$e;}}}GP(c);b=new Ij;d=a.cpY;c=new S;T(c);H(H(c,E(2007)),d);JV(b,Q(c),a.bHM);J(b);}; +function DsJ(){let a=this;FA.call(a);a.c9m=null;a.cgm=null;} +function AJ7(){F.call(this);this.c$u=null;} +let B3C=a=>{a.c$u=new F;}; +function AG8(){let a=this;AJ7.call(a);a.cem=null;a.cqd=null;a.de0=null;a.bPJ=null;a.c_q=null;a.bPN=null;a.ckp=0;a.ckl=0;} +let A6M=(a,b,c)=>{let d,e;d=CVz(c);U0();c=DdV(Drb(d,WH),WH);B3C(a);e=BD(8192);a.de0=e;a.bPJ=CQP(e);e=Fd(1024);a.c_q=e;d=B3q(e);a.bPN=d;a.cem=b;a.cqd=c;VZ(d,d.bLv);b=a.bPJ;VZ(b,b.bLv);},E_u=(a,b)=>{let c=new AG8();A6M(c,a,b);return c;},Ctp=(a,b)=>{AYC();A6M(a,b,B9d);},A4B=a=>{let b=new AG8();Ctp(b,a);return b;},DVr=a=>{a.cem.tW();},EzI=(a,b,c,d)=>{let e,f;a:{if(!NO(a.bPN)){if(!a.ckl){if(d){Dfs(a,1);if(NO(a.bPN))break a;if(!a.ckl)break a;return (-1);}return 0;}return (-1);}if(!d)return 0;}e=0;while(true){f=DO(d, +IL(a.bPN));BSz(a.bPN,b,c+e|0,f);d=d-f|0;e=e+f|0;if(d<=0)break;if(!Dfs(a,0))break;}return e;},Dfs=(a,b)=>{let c,d,e,f,g,h,i,j;if(!NO(a.bPN)){if(a.ckl)b=0;else{c=a.bPN;if(!B8$(c)){a:{d=IL(c);e=c.bHS;if(e>0){f=0;while(true){if(f>=d)break a;g=e+1|0;h=c;e=h.bXm[e]&65535;h.bXm[f]=e;f=f+1|0;e=g;}}}c.bHS=d;c.bLv=c.V();c.bZQ=(-1);g=b?0:1;b=1;i=0;b:{c:{d:{while(true){if(NO(a.bPJ)){c=a.bPN;e=c.bHS;c=Bzt(a.cqd,a.bPJ,c,a.ckp);i=1;g=g|(a.bPN.bHS<=e?0:1);if(A9z(c))break b;if(!ANP(c))continue;}if(a.cem.Cq()<=0&&g)break d;if +(a.ckp)d=0;else{c=a.bPJ;if(c.ccL)break;d=IL(c);if(c.bHS>0){h=c.bTQ;h.set(new Int8Array(h.buffer,c.bTQ.byteOffset+c.bHS|0,d),0);}c.bHS=d;c.bLv=c.V();c.bZQ=(-1);e:{f:{while(true){if(!NO(a.bPJ))break e;c=a.cem;j=B2N(a.bPJ);h=a.bPJ;d=c.BK(j,h.bHS,IL(h));if(d==(-1))break;if(d>0)break f;}a.ckp=1;break e;}c=a.bPJ;VZ(c,c.bHS+d|0);}BuY(a.bPJ);d=1;}if(!d)break c;}c=new ALI;X(c);J(c);}b=0;break b;}c=a.bPN;d=c.bHS;Bzt(a.cqd,a.bPJ,c,1);i=1;}if(!NO(a.bPJ)&&a.ckp&&!(i&&!ANP(Dca(a.cqd,a.bPN))))a.ckl=1;BuY(a.bPN);}else{c=new ALI;X(c);J(c);}}return b;}return 1;},E93 +=a=>{return !(!NO(a.bPN)&&!NO(a.bPJ)&&a.cem.Cq()<=0)?1:0;}; +function BNn(){let a=this;F.call(a);a.cbq=null;a.cwM=null;a.cDs=null;} +let C_K=(a,b)=>{a.cDs=E9();a.cbq=b;},Fgc=a=>{let b=new BNn();C_K(b,a);return b;},B75=a=>{a.cbq.tW();},CWI=a=>{let b,c,d,e;b=a.cbq.tU();if(a.cwM===null){a.cwM=Bk();if(b!==null&&Be9(b)){a:{while(true){c=a.cbq.tU();if(c===null)break a;if(Be9(c))break;d=c.bGP;U(a.cwM,d);e=Eq(d,58);if(e>0){c=a.cDs;b=Dk(B_(d,0,e));d=Dk(CC(d,e+1|0));Es(c,b,d);}}}b=a.cbq.tU();}}return b;},Be9=b=>{return Bj(b.bGP,E(2008));},BYF=N(0); +function AGw(){F.call(this);this.bKs=null;} +let EWG=null,FuI=null,D$E=0,A$3=()=>{A$3=Z(AGw);DZG();},EME=a=>{let b,$$je;b=U2();AFS();if(b!==A76&&U2()!==A9Y&&U2()!==A7T){try{b=BT$(a.bKs);}catch($$e){$$je=P($$e);if($$je instanceof Dd){return A5_(a.bKs);}else{throw $$e;}}return b;}return JH(a);},E74=(a,b)=>{A$3();A$Z(a,A3C(b));},AKd=a=>{let b=new AGw();E74(b,a);return b;},A$Z=(a,b)=>{A$3();a.bKs=b;},FzT=a=>{let b=new AGw();A$Z(b,a);return b;},B42=(a,b)=>{let c,d,e,f,g,h;c=new AGw;A$3();d=new A0t;e=a.bKs;ABk();B$(b);if(e===null)e=BBm(b);else{e=BBm(e.bNa);if +(!(CQ(b)&&!CQ(e))){f=BBm(b);g=0;while(g0)f=CC(f,g);if(!CQ(e)&&Bn(e,e.bGI.length-1|0)==Rw){b=new S;T(b);H(H(b,e),f);e=Q(b);}else{h=Rw;b=new S;T(b);e=H(b,e);Bb(e,h);H(e,f);e=Q(b);}}}d.bNa=e;A$Z(c,d);return c;},ALl=a=>{if(a.bKs!==null&&BSa(a))return BIM(a.bKs);return 0;},ASo=a=>{let b,c;b=new AGw;c=a.bKs;A$Z(b,A3C(BT$(c)));return b;},BQ9=a=>{let b;b=a.bKs;return !(b!==null&&BIM(b)&&CYI(a.bKs))?0:1;},Epu=a=>{let b,c,d;b=a.bKs;c=b.bNa;ABk();d=AID(c,BsM);if(d<0)b=b.bNa;else +{b=b.bNa;b=B_(b,d+1|0,b.bGI.length);}return b;},FiK=a=>{let b;b=a.bKs;Xi();return FP(b.bNa);},DKx=(a,b)=>{let c,d;c=a.bKs;b=b.bKs;if(!(b instanceof A0t))d=0;else{Xi();d=Bj(c.bNa,b.bNa);}return d;},BSa=a=>{let b,$$je;b=U2();AFS();if(b!==A8A){a:{try{if(!Enk(a))break a;}catch($$e){$$je=P($$e);if($$je instanceof Dd){return 0;}else{throw $$e;}}return 0;}if(!C97(a,A3z(E(2009)))){if(!C97(a,A3z(E(2010)))){if(U2()!==A76){if(U2()!==A9Y){if(U2()!==A7T){b:{if(U2()!==AQn){b=BnU(a);if(!BO(b,E(2011))&&!BO(b,E(2012))&&!BO(b, +E(2013))&&!BO(b,E(2014))&&!BO(b,E(2015))){if(!BO(b,E(648)))break b;else return 0;}return 0;}}return 1;}return 0;}return 0;}return 0;}return 1;}return 1;}return 0;},C97=(a,b)=>{let c;c=BnU(a);b=b.dX();while(b.dY()){if(BO(c,BnU(b.dZ())))return 1;}return 0;},Enk=a=>{let b,c,d,e;a:{AF1();b=A3z(E(2016));if(!b.j()){b=b.cf(0);c=b.bKs;if(BIM(c)&&CYI(c))break a;}b=null;}if(b!==null){c=DnW(a);b=DnW(b);c=c;if(!(b instanceof B1p))d=0;else{b=b;if(CQ(b.bJH))d=CQ(c.bJH);else if(!BO(c.bJH,b.bJH))d=0;else if(c.bJH.bGI.length +==b.bJH.bGI.length)d=1;else{e=b.bJH;d=!(Bn(e,e.bGI.length-1|0)!=47&&Bn(c.bJH,b.bJH.bGI.length)!=47)?1:0;}}return d;}return 0;},DnW=a=>{let b,c,d,e,f,g;b=BT$(A3C(BnU(a)));c=K(Bi,0).data;BqO();d=CY2;e=new S;T(e);CsX(d,e,47,b);f=c.length;g=0;while(g{return Jt(Jt(A5_(a.bKs),E(1487),E(14)),E(1281),E(21));},E9H=a=>{return null;},Cac=a=>{let b,c,$$je;a:{if(BSa(a)){try{b=Bid(EqD(a.bKs));}catch($$e){$$je=P($$e);if($$je instanceof A8u){c=$$je;GP(c);break a;} +else{throw $$e;}}return b;}}return null;},Enr=(a,b)=>{let c;b=b;c=a.bKs;b=b.bKs;return J6(c.bNa,b.bNa);},DZG=()=>{ABk();EWG=BsM;FuI=CP_;D$E=Rw;},AYe=N(Bx),A9W=null,BsJ=null,BuV=null,EYu=null,Beo=()=>{Beo=Z(AYe);Fp$();},E95=(a,b,c)=>{Beo();Ct(a,b,c);},B2O=(a,b)=>{let c=new AYe();E95(c,a,b);return c;},Fp$=()=>{let b,c,d;A9W=B2O(E(2017),0);BsJ=B2O(E(2018),1);b=B2O(E(2019),2);BuV=b;c=K(AYe,3);d=c.data;d[0]=A9W;d[1]=BsJ;d[2]=b;EYu=c;},E_M=N(),DOh=(b,c,d)=>{let e,f,g,h,i,$$je;e=b;f=B$N(BGp(e),c);a:{b:{c:{g=f;d:{try +{while(true){b=A71(g);if(b===null)break;if(!AJX(ZA(b)))continue;else break d;}}catch($$e){$$je=P($$e);b=$$je;break c;}e:{try{if(f===null)break e;}catch($$e){$$je=P($$e);b=$$je;break c;}AQ0(g);}h=0;break a;}try{h=1;break b;}catch($$e){$$je=P($$e);b=$$je;break c;}}if(f!==null)AQ0(f);J(b);}if(f!==null)AQ0(g);}if(h){e=B$N(BGp(e),c);try{b=DHF(e,d);}catch($$e){$$je=P($$e);if($$je instanceof DR){g=$$je;f:{g:{try{AQ0(e);break f;}catch($$e){$$je=P($$e);if($$je instanceof Dd){i=$$je;break g;}else{throw $$e;}}}ANe(g,i);}J(g);} +else{throw $$e;}}return b;}return null;},B$N=(b,c)=>{let d;d=new AG8;TU();A6M(d,b,Vb);return BFu(B$M(new B2z,BAw(d,c)));}; +function Bdc(){let a=this;F.call(a);a.csh=null;a.cge=0;a.cB5=0;} +let CU6=null,BMV=()=>{BMV=Z(Bdc);E$J();},D50=(a,b,c)=>{let d,e,f,$$je;BMV();a.cge=0;a.cB5=0;d=0;e=null;if(c!==null&&Kr(D3(CU6,c))){d=CZ(c);c=e;}if(d<0)d=0;a.csh=b;f=b;a:{try{b:{while(true){b=A71(f);if(b===null)break;if(!AJX(ZA(b)))continue;if(!DK_(a,c,b))continue;if(!d)break b;d=d+(-1)|0;}break a;}a.cB5=1;}catch($$e){$$je=P($$e);if($$je instanceof Dd){f=$$je;GP(f);b=BY(f);c=new S;T(c);H(H(c,E(616)),b);AJZ(Q(c));break a;}else{throw $$e;}}return;}a.cge=1;},DHF=(a,b)=>{let c=new Bdc();D50(c,a,b);return c;},DK_ +=(a,b,c)=>{let d;if(b!==null){c=BI$(c);d=new S;T(d);H(H(H(d,E(2020)),b),E(2021));if(Qc(c,Q(d)))return 1;return 0;}return 1;},E6v=a=>{let b;if(!a.cge){b=A71(a.csh);if(b!==null&&ANN(b.bGP)){a.cge=1;return null;}return b;}return null;},Eb$=a=>{AQ0(a.csh);},Fpy=a=>{return a.cB5;},E$J=()=>{CU6=Dp(E(177));},COD=N(FA),ChB=N(FA),EQ1=(a,b,c)=>{let d,e;Eg(a);Hi(a,E(1927));Eg(a);d=Bbe();CGg(a,d,1);e=ARA(d,a.bHM,b,c);Eg(a);if(!PO(e)){if(JZ(a)==58){Wc(a,58);d=AGR(a,b,c);b=new Ij;c=D$(d);d=new S;T(d);H(H(d,E(2022)),c);JV(b, +Q(d),a.bHM);J(b);}J(EC(E(2023),a.bHM));}},Ca_=N(FA),FcV=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,$$je;Eg(a);Hi(a,E(1943));Eg(a);d=Zt(a);Eg(a);a:{b:{try{e=AGR(a,b,c);}catch($$e){$$je=P($$e);if($$je instanceof Ij){break b;}else{throw $$e;}}break a;}e=null;}Eg(a);VO();f=(CcA()).data;g=f.length;h=0;c:{d:{while(true){if(h>=g)break d;i=f[h];if(Bj(CnF(d),CnF(i.bHx)))break;h=h+1|0;}break c;}i=null;}if(i===null){e=b.b4G;b=new JK;j=K(Bi,2);k=j.data;c=new S;T(c);H(H(H(c,E(2024)),d),E(2025));k[0]=Q(c);l=CcA();f=l.data;c=new CQ_;h +=f.length;c.c6J=l;c.cnu=0;c.csp=h;c.da3=h-0|0;d=new Db_;i=B0z(c,d);d=CdV(E(50),E(14),E(14));c=Bh6(i,d);d=new S;T(d);H(H(d,E(2026)),c);k[1]=Q(d);J2(b,j);C$L(e,b);}else if(!(e===null&&i.cqW===null)){if(e!==null)CCH(b.b4G.bWf,i,D$(e));else CCH(b.b4G.bWf,i,i.cqW);}else{m=b.b4G;b=new JK;f=K(Bi,1);j=f.data;c=new S;T(c);H(H(H(H(H(c,E(2027)),d),E(2028)),d),E(2029));j[0]=Q(c);J2(b,f);C$L(m,b);}},Dkg=N(FA),E5g=(a,b)=>{Kk(a,C8(b));},FkL=a=>{let b=new Dkg();E5g(b,a);return b;},FiC=(a,b,c)=>{Eg(a);Hi(a,E(1926));Eg(a);c.CT(Zt(a));},CMA +=N(FA),Ckc=N(FA),C7g=N(PR),Fph=(a,b)=>{return a.bHv<=2000?0:1;}; +function B5F(){let a=this;F.call(a);a.bJs=null;a.cXf=null;a.cgH=0;a.b6q=null;a.c5p=0.0;} +let Djl=null,BZa=null,Ct7=null,AXj=()=>{AXj=Z(B5F);DG9();},FoE=(a,b,c,d,e,f)=>{AXj();a.bJs=b;a.cXf=c;a.cgH=d;a.b6q=e;a.c5p=f;},Dld=(a,b,c,d,e)=>{let f=new B5F();FoE(f,a,b,c,d,e);return f;},B0A=(b,c)=>{let d,e,f,g,$$je;AXj();d=Bk();e=DX(Ct7,b,0);while(EZ(e)){AEZ();try{f=BhZ(e.bZB);}catch($$e){$$je=P($$e);b=$$je;J(b);}if(!BO(f,E(2030))){F_();if(c!==Hl){if(BO(f,E(2031))){b=c.cfn;f=CC(f,3);g=new S;T(g);H(H(g,b),f);f=Q(g);}else if(BO(f,E(1775))){b=c.cfn;f=CC(f,2);g=new S;T(g);H(H(g,b),f);f=Q(g);}if(Dr(f,E(2032))) +{b=B_(f,0,f.bGI.length-3|0);f=c.ch8;g=new S;T(g);H(H(g,b),f);f=Q(g);}else if(Dr(f,E(1776))){b=B_(f,0,f.bGI.length-2|0);f=c.ch8;g=new S;T(g);H(H(g,b),f);f=Q(g);}}U(d,f);}}return d;},DG9=()=>{let b,c,d,e,f,g,h,i,j;b=new Ch;c=K(Bg,8);d=c.data;d[0]=Bc(E(2033));d[1]=Bd();d[2]=Bc(E(1922));d[3]=Ba(1,E(1859),E(2034));e=new C0;f=new Ch;g=K(Bg,5);h=g.data;h[0]=Bd();h[1]=Bc(E(349));h[2]=Bd();h[3]=Ba(1,E(608),E(2035));h[4]=Bd();Cj(f,g);C3(e,f);d[4]=e;d[5]=Bc(E(2036));d[6]=DI(Ba(1,E(470),E(2037)));d[7]=Bc(E(2038));Cj(b, +c);Djl=b;b=new Ch;c=K(Bg,10);d=c.data;d[0]=Bc(E(2033));d[1]=Bd();d[2]=Bc(E(2039));d[3]=Ba(1,E(563),E(2040));d[4]=Ba(2,E(1858),E(2041));d[5]=Bd();i=new C0;j=new Ch;g=K(Bg,3);h=g.data;h[0]=Bc(E(349));h[1]=Bd();h[2]=Ba(1,E(608),E(2035));Cj(j,g);C3(i,j);d[6]=i;d[7]=Bd();d[8]=DI(Ba(1,E(470),E(2042)));d[9]=Bc(E(2038));Cj(b,c);BZa=b;Ct7=Dm(E(2043));}; +function CC$(){F.call(this);this.cRr=null;} +let E2Q=(a,b)=>{let c,d,e,f;b=b;c=a.cRr;d=Bk();e=0;while(e{let d;d=new BV9;d.b2s=b;d.cJi=0;d.c0h=c;return d;},DzS=(a,b,c,d)=>{if(a.cJi)c=JL(c);c=BFJ(c);return BT9(a.b2s,b,c,d);},FgZ=(a,b)=>{if(a.cJi)b=JL(b);b=BFJ(b);return CHx(a.b2s,b);},Ds7=(a,b)=>{let c;b=BFJ(b);DB(b);c=Bxe(a.b2s,b);F5();b=Oo;if(c===b){b=new BP;X(b);J(b);}if(c===PY)return c;return b;},FoX=(a,b)=>{return Dfh(a.b2s,b);},Dzs=a=>{return Dsp(a.b2s);},EtU=a=>{return a.b2s.AE();}; +function ByZ(){F.call(this);this.dad=null;} +let Cgv=null,BGz=null,A2j=()=>{A2j=Z(ByZ);EQO();},B_6=(a,b)=>{let c,d,e,f,g;A2j();if(BGz===null)BGz={};c=Fe(EBf(BGz[Cq(b)]));if(c!==null){d=BD(c.bGI.length);e=d.data;f=0;g=e.length;while(f>24;f=f+1|0;}b=new ANc;ANm();A2x(b,CEC(d,Bhc));return b;}return null;},EQO=()=>{let b;b=new Ca1;A2j();b.dad=null;Cgv=b;},EBf=b=>{return b!==null&&b!==void 0?b:null;}; +function CIL(){let a=this;BGE.call(a);a.cn$=null;a.cMh=0;a.bTQ=null;a.cJR=0;a.ccL=0;} +let Fmy=(a,b,c,d,e,f)=>{CSu(a);A0_();a.cRW=BE9;a.cn$=b;a.cMh=c;a.bTQ=d;a.cJR=e;a.ccL=f;},Bh7=(a,b,c,d,e)=>{let f=new CIL();Fmy(f,a,b,c,d,e);return f;},EVM=a=>{return a.bTQ.length;},DaO=(a,b)=>{let c;if(b>=0&&b{let d;if(!a.ccL){if(b>=0&&b{WK=Z(ER);Ep7();},D6a=(a,b)=>{WK();Fh(a,0,null,b);},Bc=a=>{let b=new ER();D6a(b,a);return b;},BW9=(a,b,c)=>{WK();Fh(a,b,null,c);},LZ=(a,b)=>{let c=new ER();BW9(c,a,b);return c;},Fh=(a,b,c,d)=>{let e;WK();a.cc$=(-1);a.b1j=d;a.cnR=c;a.cc$=b;if(Df()&&!CH2&&Daw(D3(COl(a.b1j),E(14)))!=b){d=new C4;e=new S;T(e);H(H(e,E(2044)),c);AT_(d,Q(e));J(d);}},Ba=(a,b,c)=>{let d=new ER();Fh(d,a,b,c);return d;},Bd=()=>{WK();return Bc(E(2045));},C6n=()=>{WK();return DI(Bc(E(2046)));},Bw +=()=>{WK();return Bc(E(2047));},BL=()=>{WK();return Civ;},BR=()=>{WK();return Cht;},Fa$=a=>{let b,c,d,e;b=JH(a);c=a.cnR;d=a.b1j;e=new S;T(e);b=H(e,b);Bb(b,32);b=H(b,c);Bb(b,32);H(b,d);return Q(e);},FsE=a=>{return a.b1j;},Ejt=(a,b,c)=>{let d,e,f;if(a.cnR!==null){d=BO1(a.cc$);e=0;while(e0){Bjc(b);f=f+(-1)|0;}},ECX=(a,b)=>{b=new BV;X(b);J(b);},E34=(a,b)=>{b=new BV;X(b);J(b);},Ep7=()=>{CH2=0;Cht=Bc(E(1497));Civ=Bc(E(1174));CpI=Dp(E(2048));CpH +=Dp(E(2049));CpJ=Dp(E(2050));CYx=Dp(E(2051));}; +function ACz(){let a=this;F.call(a);a.bZh=null;a.cFr=null;} +let BMw=a=>{let b,c,d,e;b=a.cFr.b2I;if(b===null){c=Dm(a.CZ());d=a.cFr;b=null;if(d.b2I!==b)e=0;else{d.b2I=c;d.b8t=d.b8t+1|0;e=1;}if(!e)return d.b2I;return c;}return b;},BgR=(a,b)=>{a.cFr=new BC3;a.bZh=Bv(b);},BFM=(a,b,c)=>{let d;d=a.bZh.dX();while(d.dY()){(d.dZ()).C0(b,c);}},Ei=(a,b)=>{let c,d,e;c=DX(BMw(a),b,0);if(EZ(c)){d=new CWV;d.cte=1;d.cRE=c;e=new Bps;A96();e.bYV=K(Bi,16);e.bYO=K(Bmr,16);e.bXK=null;a.C0(d,e);return e;}return null;}; +function Ch(){let a=this;ACz.call(a);a.cBj=null;a.czA=0;} +let BOz=0,Brb=()=>{Brb=Z(Ch);Esi();},Cj=(a,b)=>{let c;Brb();BgR(a,b);c=new DeZ;c.cAx=V(-1);a.cBj=c;},Qz=a=>{let b=new Ch();Cj(b,a);return b;},BT=(b,c)=>{Brb();b=Qz(c);if(Df()&&!BOz&&c.data[0]!==BL()){b=new C4;X(b);J(b);}if(Df()&&!BOz){c=c.data;if(c[c.length-1|0]!==BR()){b=new C4;X(b);J(b);}}return b;},G7=(a,b)=>{let c,d,e,f,g,h,i;if(a.czA&&b.bGP.bGI.length>a.czA)return 0;c=a.cBj.cAx;if(DS(c,V(-1))){c=BH;d=1;while(d<(a.bZh.dV()-1|0)){e=a.bZh.cf(d);if(e instanceof ER){e=e;if(Bj(e.b1j,E(2047))){ANZ();f=BbD;}else if +(Bj(e.b1j,E(2045)))f=BH;else{WK();e=UQ(D3(CYx,e.b1j),E(14));g=D3(CpI,e);if(Kr(g))f=DoH(El(g,1));else if(!Kr(D3(CpH,e))){if(!Kr(D3(CpJ,e)))f=BH;else{ANZ();f=BEt;}}else{f=V(-1);h=M0(e,E(2052));while(JO(h)){f=CN(f,DoH(H5(h)));}}}c=Gu(c,f);}d=d+1|0;}e=a.cBj;e.cAx=c;e.cSe=e.cSe+1|0;}if(D4(c,BH)&&D4(CN(c,Dp3(b)),c))return 0;e=BMw(a);i=b.bGP;g=e.cJN;b=null;h=g.b2I;g.b2I=b;g.b8t=g.b8t+1|0;b=h;if(b!==null)CMn(b,i);else b=D3(A_U(e.czN),i);d=GW(b);CMn(b,E(14));e=e.cJN;e.b2I=b;e.b8t=e.b8t+1|0;return d;},A7s=a=>{let b,c;b +=new S;T(b);c=a.bZh.dX();while(c.dY()){L(b,(c.dZ()).CZ());}return Q(b);},Esi=()=>{BOz=0;}; +function DD(){ACz.call(this);this.cbe=null;} +let Eb=(a,b)=>{Sf(a,null,b);},FzG=a=>{let b=new DD();Eb(b,a);return b;},Sf=(a,b,c)=>{BgR(a,c);a.cbe=b;},FyA=(a,b)=>{let c=new DD();Sf(c,a,b);return c;},Eos=a=>{let b,c;b=Lk(E(864));if(a.cbe===null)L(b,E(2053));c=a.bZh.dX();while(c.dY()){L(b,(c.dZ()).CZ());L(b,E(2054));}b.bG4=b.bG4-1|0;Bb(b,41);return Q(b);},EtB=(a,b,c)=>{let d,e;d=a.cbe===null?null:Bjc(b);BFM(a,b,c);if(a.cbe!==null){e=BO1(1);BZH(e,d);B7h(c,a.cbe,e);}},EiR=(a,b)=>{b=new BV;X(b);J(b);},C0=N(ACz),C3=(a,b)=>{let c;c=K(Bg,1);c.data[0]=b;BgR(a,c);},DI +=a=>{let b=new C0();C3(b,a);return b;},E9l=a=>{let b;b=Lk(E(2055));L(b,(a.bZh.cf(0)).CZ());L(b,E(2056));return Q(b);},EZI=(a,b)=>{b=new BV;X(b);J(b);}; +function B73(){FA.call(this);this.cqc=null;} +let CQs=(a,b,c)=>{Eg(a);Hi(a,E(1940));Eg(a);b=Ud(a);a.cqc=b;if(!Qc(b,E(2057)))J(EC(E(2058),a.bHM));},DGN=N(),DSu=(b,c,d,e)=>{let f,g,h,i,j,$$je;if(d!==null){if(CzC(d)){if(BO(d,E(1198))&&Dr(d,E(372))){a:{b=B_(d,1,d.bGI.length-1|0);e=CUO(c);f=new S;T(f);b=H(f,b);Bb(b,47);H(b,e);b=Q(f);AJl();b=Jt(FS(b),E(2059),E(14));g=Eq(b,47);if(g==(-1))h=null;else{b:{try{e=Dfc(B_(b,0,g));if(!(e!==null&&CkW(e.ckR))){h=null;break a;}h=FnC(e,CC(b,g+1|0));break a;}catch($$e){$$je=P($$e);if($$je instanceof Dd){b=$$je;break b;}else +{throw $$e;}}}GP(b);h=null;}}if(h===null)b=null;else{b=new S;T(b);H(H(H(b,c),E(2006)),d);c=Q(b);b=BQ1(BSR(h,c));}return b;}if(!BO(d,E(1196))&&!BO(d,E(1197))){b=B4R(b,CHi(d,c),E(1500));if(b===null)c=null;else{b=BGp(b);if(b===null)c=null;else{e=new S;T(e);H(H(H(e,c),E(2006)),d);e=Q(e);c=BQ1(BAw(A4B(b),e));}}return c;}c=C_x(CHi(d,c));if(c!==null){d=new BpA;TU();b=Vb;B3D();f=CtR(c);if(f!==null){i=E_u(f,b);b=c.cTV;c=b.bMg;if(c!==null)b=CTX(c,b);else{c=b.bKz;f=b.bRI;b=b.bVt;j=new S;T(j);H(H(H(H(H(j,E(2060)),c),E(2061)), +f),b);b=Q(j);}B08(d,B3p(i,b,e.bIM));return d;}J(EC(E(2062),e));}J(EC(E(2062),e));}return null;}c:{b=new Ch9;b.dcq=c;Kh(b);b=Fe(C_m(Cq(c)));if(b===null){d:{e:{try{Brr(E(2063));break d;}catch($$e){$$je=P($$e);if($$je instanceof DR){break e;}else{throw $$e;}}}}if(!(E_z()?1:0)){b=new S;T(b);H(H(H(b,E(2064)),c),E(2065));BFt(Q(b));c=BQ1(BSR(BD(0),E(2066)));break c;}b=Fe(C_m(Cq(c)));}if(b===null)c=null;else{d=new S;T(d);Bb(H(H(d,E(2067)),c),62);e=Q(d);c=new BpA;TU();B08(c,BSR(A1z(b,Vb),e));}}return c;},CzC=b=>{if(b +!==null){if(BO(b,E(1198))&&Dr(b,E(372)))return 0;return !(!BO(b,E(1196))&&!BO(b,E(1197)))?0:1;}return 0;},CHi=(b,c)=>{let d;d=Lk(b);if(!Dr(b,E(21)))L(d,E(21));b=BY(d);c=CUO(c);d=new S;T(d);H(H(d,b),c);return Q(d);},DPa=()=>{let b,c;b=Bk();c=(DEj()).bHV;Ea(b,c);BvU(b);return b;},CUO=b=>{let c;c=new S;T(c);H(H(H(c,E(2068)),b),E(2059));return Q(c);}; +function BpA(){F.call(this);this.cjx=null;} +let B08=(a,b)=>{a.cjx=Fgc(b);},BQ1=a=>{let b=new BpA();B08(b,a);return b;},EaL=a=>{return CWI(a.cjx);},CS2=a=>{B75(a.cjx);},CLI=a=>{let b,c,d;b=A9R();c=(a.cjx.cDs.dW()).dX();while(c.dY()){d=c.dZ();CH3(b,d.d0(),d.d1());}return b;}; +function A0t(){F.call(this);this.bNa=null;} +let Rw=0,BsM=null,Ev1=0,CP_=null,ABk=()=>{ABk=Z(A0t);Fgg();},EpY=(a,b)=>{ABk();B$(b);a.bNa=BBm(b);},A3C=a=>{let b=new A0t();EpY(b,a);return b;},Xi=()=>{ABk();return BcN();},A5_=a=>{let b,c,d;if(!CyH(a)){b=(Xi()).c2F;if(!CQ(a.bNa)){c=b.bGI.length;d=Lk(b);if(Bn(b,c-1|0)==Rw)Xi();else if(Bn(a.bNa,0)!=Rw)L(d,BsM);L(d,a.bNa);return Q(d);}return b;}return a.bNa;},CyH=a=>{let b;b=a.bNa;Xi();return !(!CQ(b)&&Bn(b,0)==Rw)?0:1;},FyF=b=>{ABk();a:{b:{if(!(b>=97&&b<=122)){if(b<65)break b;if(b>90)break b;}b=1;break a;}b= +0;}return b;},CYI=a=>{let b;b=BP3(a);return !(b!==null&&Cm3(b))?0:1;},BT$=a=>{Xi();return CPz(a);},CPz=a=>{let b,c,d,e,f,g,h,i,j,k,l;b=A5_(a);c=1;d=0;while(db.bGI.length)break a;if(k<0){c=h+1|0;g[h]=Bn(b,k);}else if(k!=b.bGI.length&&Bn(b,k)!=Rw){if(Bn(b,k)==46){j=j+1|0;c=h;}else{if(j>0){l=0;while(l1&&g[h-1|0]==Rw)h=h+(-1)|0;return QV(f,0,h);},BIM=a=>{let b;b=BP3(a);if(b!==null){b=b;return !(!Cm3(b)&&!Clk(b))?1:0;}return 0;},BBm=b=>{let c,d,e,f,g,h,i,j;ABk();c=b.bGI.length;d=0;Xi();e=0;f=Q5(b);g=0;while(g{let b,c,d;b=Xi();c=CPz(a);b=b;d=new DqW;d.c0i=b;d.b4Q=c;return d;},Fgg=()=>{Xi();Rw=47;BsM=QO(47);Xi();Ev1=58;CP_=QO(58);},APF=N(Bx),AFF=null,AAK=null,E$p=null,Pf=()=>{Pf=Z(APF);ExB();},CHG=b=>{Pf();return Ss(Bo(APF),b);},DIm=(a,b,c)=>{Pf();Ct(a,b,c);},DmK=(a,b)=>{let c=new APF();DIm(c,a,b);return c;},ExB=()=>{let b,c,d;AFF=DmK(E(2069),0);b=DmK(E(2070),1);AAK=b;c=K(APF,2);d=c.data;d[0]=AFF;d[1]=b;E$p=c;},Dsq=N(),Dq$=null,C9A=null,ANR=()=>{ANR=Z(Dsq);FeX();},Bq1=b=>{ANR();if(b.bL()>=2)return !(b.u(0) +==124&&b.u(1)==95)?0:1;return 0;},XW=(b,c)=>{let d;ANR();if(b!==null){d=D3(Dq$,b);if(GW(d))return DM(El(d,1));return c;}return c;},BZL=b=>{let c;ANR();if(b!==null){c=D3(C9A,b);if(GW(c))return El(c,1);return null;}return null;},FeX=()=>{Dq$=Dp(E(2071));C9A=Dp(E(2072));},BW8=N(0); +function CT2(){Er.call(this);this.c96=null;} +let CIG=(b,c,d)=>{let e,f,g,h,i,j,k;e=Bk();f=new S;T(f);H(H(f,E(91)),b);f=Q(f);g=e;U(g,f);h=1;a:{while(true){if(!c.dY())break a;f=c.dZ();if(AFV(f)!==null)h=h+1|0;else if((A0W(f.p())).cx(E(548))){h=h+(-1)|0;if(!h)break;}U(g,f.p());}}c=new S;T(c);H(H(c,E(1185)),b);U(g,Q(c));b=new CT2;c=Bk();i=BBk(E(2073),null);j=Br(e);while(Bq(j)){e=Bm(j);i=BnY(i);f=Ia(e,i);U(c,f);}if(d!==null)DcU(d.Di());else CLM(new BH7);b:{c:{d:{f=null;AKY();Drd();Dgb(new AIb);d=c;if(d.bGJ>1&&Be9(Be(d,1))){j=Bk();i=Be(d,0);U(j,i);k=2;while +(true){if(k>=d.bGJ)break d;if(Be9(Be(d,k)))break c;k=k+1|0;}}}break b;}h=k+1|0;k=d.bGJ;c=LV(c,h,k);Ea(j,c);c=j;}Zs(new Tp,c);C0j(new BXO);b.c96=f;return b;},DZB=(a,b)=>{return 0.0;},EmW=(a,b)=>{let c,$$je;a:{try{break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){c=$$je;GP(c);break a;}else{throw $$e;}}}return Cl(42.0,42.0);},CGu=(a,b)=>{let c,$$je;a:{b:{try{b.hE();break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){c=$$je;break b;}else{throw $$e;}}}GP(c);}},E36=a=>{let b;b=K(AFj,1);b.data[0]=BAm(a);return Bv(b);},AFV +=b=>{let c,d,e;if(b!==null){c=b.bL();d=0;while(de&&Z0(b.u(c-1|0))){c=c+(-1)|0;}if(c-e|0){a:{switch(b.u(e)){case 98:break;case 99:if(!Nl(b,e,c,E(234))){if(!Nl(b,e,c,E(235))){if(!Nl(b,e,c,E(236))){if(!Nl(b,e,c,E(233)))break a;else return E(233);}return E(236);}return E(235);}return E(234);case 100:if(!Nl(b,e,c,E(2074)))break a;return E(2074);case 101:if(!Nl(b,e,c,E(240)))break a;return E(240);case 102:if(!Nl(b,e,c,E(242)))break a;return E(242);case 103:if +(!Nl(b,e,c,E(243)))break a;return E(243);case 104:case 105:case 107:case 108:case 111:case 113:case 116:case 118:case 120:break a;case 106:if(!Nl(b,e,c,E(246)))break a;return E(246);case 109:if(!Nl(b,e,c,E(249)))break a;return E(249);case 110:if(!Nl(b,e,c,E(250)))break a;return E(250);case 112:if(!Nl(b,e,c,E(252)))break a;return E(252);case 114:if(!Nl(b,e,c,E(253)))break a;return E(253);case 115:if(!Nl(b,e,c,E(254)))break a;return E(254);case 117:if(!Nl(b,e,c,E(256)))break a;return E(256);case 119:if(!Nl(b, +e,c,E(258))){if(!Nl(b,e,c,E(257)))break a;return E(257);}return E(258);case 121:if(!Nl(b,e,c,E(259)))break a;return E(259);default:break a;}if(Nl(b,e,c,E(232)))return E(232);}return null;}return E(256);}return null;}return null;},Nl=(b,c,d,e)=>{let f,g;f=e.bGI.length;if((d-c|0)==f){g=0;while(g{B3C(a);a.cSH=(-1);if(c<0){b=new Bt;X(b);J(b);}a.b0K=b;a.b7f=Fd(DT(64,c));},FaH=(a,b)=>{let c=new ARK();BXT(c,a,b);return c;},Dkx=(a,b)=>{BXT(a,b,1024);},Bid=a=>{let b=new ARK();Dkx(b,a);return b;},AAF=a=>{B8v(a);a.b0K.tW();a.b0K=null;},DRy=(a,b,c,d)=>{let e,f;B8v(a);if(a.bOI==a.b00&&a.cjM)return (-1);if(d){e=0;a:{b:{while(true){f=DO(a.b00-a.bOI|0,d-e|0);Di(a.b7f,a.bOI,b,c,f);c=c+f|0;a.bOI=a.bOI+f|0;e=e+f|0;if(e==d)break;if(e>0&&!a.b0K.Dl())break a;if(!BJM(a,0,d-e|0))break b;}break a;}}return e;}return 0;},AZ5 +=a=>{let b,c,d,e;B8v(a);if(a.cjM&&a.bOI>=a.b00)return null;b=new S;T(b);a:{b:{while(true){c=a.bOI;d=a.b00;if(c>=d&&!BJM(a,0,d-c|0))break b;e=a.b7f.data;d=a.bOI;c=d+1|0;a.bOI=c;d=e[d];if(d==10)break;if(d==13){d=a.b00;if(c>=d&&!BJM(a,0,d-c|0))break a;e=a.b7f.data;c=a.bOI;if(e[c]!=10)break a;a.bOI=c+1|0;break a;}Bb(b,d);}break a;}if(b.bG4?0:1)return null;}return Q(b);},Egu=a=>{let b;b=new CCe;b.cMq=a;return b;},Fvd=a=>{return a.bOI>=a.b00?0:1;},BJM=(a,b,c)=>{let d,e,f,g;if(!a.cjM){c=DO(c,a.b7f.data.length-a.bOI +|0);d=0;a:{b:{while(true){e=a.b0K;f=a.b7f;g=e.At(f,b,f.data.length-b|0);if(g==(-1))break b;b=b+g|0;d=d+g|0;if(!(b0)break;}break a;}a.cjM=1;}a.b00=b;a.bOI=0;a.cSH=(-1);return d<=0?0:1;}return 0;},B8v=a=>{let b;if(a.b0K===null){b=new Dd;X(b);J(b);}}; +function Dsf(){F.call(this);this.dcZ=null;} +function B0y(){let a=this;F.call(a);a.dec=null;a.c4L=0.0;a.c8q=0.0;a.b1o=null;a.b$e=null;a.cxH=null;a.b1Y=0;} +let Drb=(a,b)=>{let c;if(b===null){c=new Bt;Bp(c,E(2075));J(c);}a.b$e=b;return a;},DdV=(a,b)=>{let c;if(b===null){c=new Bt;Bp(c,E(2075));J(c);}a.cxH=b;return a;},Bzt=(a,b,c,d)=>{let e,f,g,h,$$je;e=a.b1Y;if(!(e==2&&!d)&&e!=3){a.b1Y=d?2:1;f=a;while(true){try{g=EHZ(f,b,c);}catch($$e){$$je=P($$e);if($$je instanceof DR){h=$$je;b=new BIB;YV(b,h);J(b);}else{throw $$e;}}if(A9z(g))return g;if(ANP(g)){a:{if(d&&NO(b)){h=a.b$e;U0();if(h!==AOW){if(IL(c)>a.b1o.bGI.length){VZ(b,b.bHS+IL(b)|0);if(a.b$e!==WH)break a;B6k(c,a.b1o);break a;}return Sk;}return ABf(IL(b));}}return g;}if +(Dbi(g)){h=a.b$e;U0();if(h===AOW)return g;if(h===WH){if(IL(c){let c;c=a.b1Y;if(c!=3&&c!=2){b=new BP;X(b);J(b);}a.b1Y=3;Mi();return Up;},FjK=(a,b)=>{let c,d,e;c=a.b1Y;if(c&&c!=3){b=new BP;X(b);J(b);}if(IL(b)){if(a.b1Y)a.b1Y=0;d=CCG(DT(8,IL(b)*a.c4L|0));while(true){e=Bzt(a,b,d, +0);if(ANP(e))break;if(A9z(e))d=CnS(a,d);if(!Bas(e))continue;BqT(e);}b=Bzt(a,b,d,1);if(Bas(b))BqT(b);while(!ANP(Dca(a,d))){d=CnS(a,d);}BuY(d);return d;}return CCG(0);},CnS=(a,b)=>{let c,d;c=CKR(b);d=B3q(B$w(c,DT(8,c.data.length*2|0)));VZ(d,b.bHS);return d;}; +function B9j(){let a=this;F.call(a);a.c8l=null;a.c$Q=null;a.c$n=null;a.c8a=0;} +let Deo=a=>{let b,c;b=new S;T(b);L(b,a.c8l);Bb(b,46);L(b,a.c$Q);Bb(b,40);c=a.c$n;if(c===null)L(b,E(2076));else{L(b,c);Bb(b,58);BE(b,a.c8a);}L(b,E(865));return Q(b);}; +function Bps(){let a=this;F.call(a);a.bYV=null;a.bYO=null;a.bZX=0;a.bXK=null;} +let BJn=0,A96=()=>{A96=Z(Bps);DD_();},EgV=(a,b)=>{A96();a.bYV=K(Bi,0);a.bYO=K(Bmr,0);a.bXK=b;},Dln=a=>{let b=new Bps();EgV(b,a);return b;},B7h=(a,b,c)=>{let d,e,f,g;if(Df()){A96();if(!BJn&&CdP(a,b)!=(-1)){c=new C4;d=new S;T(d);H(H(d,E(2077)),b);AT_(c,Q(d));J(c);}}e=a.bZX;f=a.bYV;if(e==f.data.length){a.bYV=MK(f,e*2|0);a.bYO=MK(a.bYO,a.bZX*2|0);}f=a.bYV.data;g=a.bZX;f[g]=b;a.bYO.data[g]=c;a.bZX=g+1|0;},CdP=(a,b)=>{let c;c=0;while(true){if(c>=a.bZX)return (-1);if(Bj(a.bYV.data[c],b))break;c=c+1|0;}return c;},D2a +=a=>{let b,c,d,e,f;b=a.bXK;if(b===null){c=Lk(E(580));d=0;while(d0)L(c,E(50));L(c,a.bYV.data[d]);Bb(c,61);H(c,a.bYO.data[d]);d=d+1|0;}Bb(c,125);return Q(c);}b=b;c=BY(b.cyB);b=b.b2x;d=b.bJS;b=BY(b.bQ5);e=new S;T(e);f=H(e,E(2078));BE(f,d);Bb(f,32);H(f,b);e=Q(e);b=new S;T(b);c=H(b,c);Bb(c,32);H(c,e);return Q(b);},Dh5=(a,b)=>{let c;if(a.bXK===null){c=CdP(a,b);return c==(-1)?null:a.bYO.data[c];}b=new BV;X(b);J(b);},R=(a,b,c)=>{let d,e;d=a.bXK;if(d!==null){e=Zl(d,b);if(e!==null){b=e;if(b.bGJ)return Be(b, +c);}return null;}d=Dh5(a,b);if(d===null)return null;return AL4(d,c);},Ck=(a,b,c)=>{let d,e,f,g;d=a.bXK;if(d===null){e=0;while(e{let e;if(BO(a.bYV.data[b],c)){e=a.bYO.data[b];if(d>=e.b9W)return null;return AL4(e,d);}return null;},DD_=()=>{BJn=0;},Ddd=N(),CoP=0,BeM=()=>{BeM=Z(Ddd);Ebz();},Ebz=()=>{CoP=0;},Ca1=N(ByZ); +function BPw(){F.call(this);this.dds=null;} +let BE9=null,EJP=null,A0_=()=>{A0_=Z(BPw);Fxo();},EcJ=(a,b)=>{A0_();a.dds=b;},Cau=a=>{let b=new BPw();EcJ(b,a);return b;},Fxo=()=>{BE9=Cau(E(2080));EJP=Cau(E(2081));}; +function Ch9(){F.call(this);this.dcq=null;} +function BwY(){let a=this;F.call(a);a.dcH=null;a.cu8=null;a.de2=null;a.deZ=null;a.ddA=null;a.c8S=null;a.cUA=null;a.ckR=null;} +let Dqx=null,AJl=()=>{AJl=Z(BwY);EZy();},DGL=(a,b)=>{let c,d,e,f,g,$$je;AJl();a.dcH=Bk();a.cu8=Dy();a.de2=Dy();a.deZ=Dy();a.ddA=Dy();a.c8S=Bk();a.ckR=Dy();a.cUA=b;APi();c=Cmy(a,BtU);a:{try{b=Br(DHq(c));}catch($$e){$$je=P($$e);if($$je instanceof Gt){b=$$je;break a;}else{throw $$e;}}d=b;while(true){try{if(!Bq(d))break;e=Bm(d);if(CB(e,E(684))){f=(IW(e,E(684))).data;if(f.length==2){b=a.ckR;g=f[0];e=f[1];AWb(b,g,e);}}continue;}catch($$e){$$je=P($$e);if($$je instanceof Gt){b=$$je;break a;}else{throw $$e;}}}if(c!== +null)A1S(c);return;}b:{if(c!==null){c:{try{A1S(c);break b;}catch($$e){$$je=P($$e);if($$je instanceof Gt){c=$$je;break c;}else{throw $$e;}}}ANe(b,c);}}J(b);},EH0=a=>{let b=new BwY();DGL(b,a);return b;},FnC=(a,b)=>{let c,d,$$je;c=a.cu8;Jl(c);try{APi();Ex9(a,c,BnX);d=DG(a.cu8,b);G2(c);}catch($$e){$$je=P($$e);b=$$je;G2(c);J(b);}return d;},Ex9=(a,b,c)=>{let d,e,f,g,h,i,$$je;a:{b:{c:{b=b;if(!b.bHv){d=Cmy(a,c);try{e=Eum(d);try{f=CAX(e);g=0;while(g{let c,d;AJl();c=Dqx;d=new C2t;return B4e(c,b,d);},EuP=a=>{return DG(a.ckR,E(1190));},Cmy=(a,b)=>{let c,d,e,f,g,h,$$je;c=a.cUA;b=KG(FS(b.bHx),95,45);d=new S;T(d);H(H(d,b),E(2082));e=Q(d);b=new S;T(b);c=H(H(b,E(2083)),c);Bb(c,47);H(c,e);f=Q(b);b=new DaB;APi();d=new S;T(d);Bb(d,47);H(d,f);d=BqS(Bo(BwY),Q(d));if(d===null){d=new BO_;c=new Bk5;BvF();CJ9(c,A3C(f));DrA(d,c);}c=new C6F;c.b05=BD(0);g=Ca(10);h=g.data;c.bYz=g;h[0]=16;h[1]=15;h[2]=11;h[3]=4;b.clv=c;b.cUp=BD(16384);b.c2Z=0;b.b86=0;try +{Dzg(c,d);}catch($$e){$$je=P($$e);if($$je instanceof Lz){b=$$je;c=new Dd;ABa(c,E(2084),b);J(c);}else{throw $$e;}}return b;},EZy=()=>{Dqx=AOG();}; +function B8S(){let a=this;F.call(a);a.cTV=null;a.c$M=null;} +let ENR=null,DKL=null,Ea5=null,Ekj=null,BAX=()=>{BAX=Z(B8S);D3T();},C_x=b=>{let c,$$je;BAX();if(b!==null){if(!(!BO(b,E(1196))&&!BO(b,E(1197)))){a:{try{b=E7U(DzJ(ECR(b)));}catch($$e){$$je=P($$e);if($$je instanceof TR){c=$$je;break a;}else if($$je instanceof Ws){c=$$je;break a;}else{throw $$e;}}return b;}GP(c);}return null;}return null;},E7U=b=>{let c;BAX();if(b!==null){c=new B8S;c.cTV=B$(b);c.c$M=B$(E(2085));return c;}b=new TR;Bp(b,E(2086));J(b);},CtR=a=>{return null;},D3T=()=>{ENR=Dp(E(2087));DKL=null;Ea5=AOG();Ekj +=Dp(E(2088));},DlI=N(),ElQ=null,B3D=()=>{B3D=Z(DlI);Ffs();},Ffs=()=>{ElQ=Dp(E(2089));},CCI=N(),Cio=null,Cy7=null,BsK=()=>{BsK=Z(CCI);EWn();},DVQ=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n;BsK();e=330+c|0;if(D4(b,BH)&&e>=0){f=Cio.data;if(e=0?GD(g,i):EU(g, -i|0);h=h+i|0;if(h<2047){j=Cp(CN(g,V(31)));k=16;if(Kj(j-16|0)<=1){l=CN(g,V(-32));m=Tx(CE(b,Cti(l,32,e,h)),CE(Cti(BU(l,V(32)),32,e,h),b));if(m<0)k= -j|0;else if(m>0)k=32-j|0;}b=BU(g,V(k));if(D4(CN(b,O(0, 4227858432)), +BH)){b=GD(b,1);h=h+1|0;}if(h<=0){b=GS(b,DO(( -h|0)+1|0,64));h=0;}n=Gu(CN(GD(b,5),O(4294967295, 1048575)),EU(V(h),52));if(d)n=SW(n,O(0, 2147483648));return Baa(n);}return !d?Infinity:(-Infinity);}return !d?Infinity:(-Infinity);}return Baa((!d?BH:O(0, 2147483648)));},Cti=(b,c,d,e)=>{let f,g,h,i,j,k,l;BsK();f=c>>>1|0;AEh();g=7-(BrB.data[d]-e|0)|0;h=AD$(b,AHq.data[d],g);i=V(f);j=AD$(BU(b,i),AHq.data[d],g);i=DeD(h,AD$(CE(b,i),AHq.data[d],g));k=CPo(h,j);l=Tx(i,k);return l>0?CT(OB(h,i),i):l<0?BU(CT(OB(h,k),k),k):CT(OB(BU(h, +CY(k,V(2))),k),k);},EWn=()=>{Cio=Br$([O(136053384, 4203730336),O(85033365, 2627331460),O(106291706, 3284164325),O(1206606457, 4105205406),O(3975354508, 2565753378),O(2821709486, 3207191723),O(2453395034, 4008989654),O(459630072, 2505618534),O(2722021238, 3132023167),O(2328784724, 3915028959),O(3066103188, 2446893099),O(2758887162, 3058616374),O(1301125304, 3823270468),O(2960686963, 2389544042),O(1553375056, 2986930053),O(3015460644, 3733662566),O(810921078, 2333539104),O(1013651348, 2916923880),O(1267064185, 3646154850), +O(1865656940, 2278846781),O(3405812998, 2848558476),O(4257266248, 3560698095),O(4271404141, 2225436309),O(2118029704, 2781795387),O(1573795306, 3477244234),O(2057363890, 2173277646),O(424221215, 2716597058),O(2677760167, 3395746322),O(1199716561, 4244682903),O(2360435586, 2652926814),O(803060835, 3316158518),O(3151309692, 4145198147),O(1432697645, 2590748842),O(3938355705, 3238436052),O(627977335, 4048045066),O(1466227658, 2530028166),O(3980268221, 3162535207),O(3901593452, 3953169009),O(827883171, 2470730631), +O(4256079436, 3088413288),O(1025131999, 3860516611),O(103836588, 2412822882),O(2277279383, 3016028602),O(699115580, 3770035753),O(3121301798, 2356272345),O(680401775, 2945340432),O(850502219, 3681675540),O(2679047535, 2301047212),O(3348809418, 2876309015),O(3112269949, 3595386269),O(2482039630, 2247116418),O(955065890, 2808895523),O(120090538, 3511119404),O(2222540234, 2194449627),O(1704433469, 2743062034),O(4278025484, 3428827542),O(3200048207, 4286034428),O(4147513777, 2678771517),O(1963166750, 3348464397), +O(3527700261, 4185580496),O(2204812663, 2615987810),O(608532181, 3269984763),O(3981890698, 4087480953),O(878068951, 2554675596),O(1097586188, 3193344495),O(298240911, 3991680619),O(3944496953, 2494800386),O(2783137544, 3118500483),O(2405180106, 3898125604),O(3650721214, 2436328502),O(2415917870, 3045410628),O(3019897337, 3806763285),O(2424306748, 2379227053),O(4104125259, 2974033816),O(835189277, 3717542271),O(2132606034, 2323463919),O(1592015719, 2904329899),O(916277825, 3630412374),O(3793899112, 2269007733), +O(1521148418, 2836259667),O(827693699, 3545324584),O(517308562, 2215827865),O(1720377526, 2769784831),O(1076730084, 3462231039),O(2283569038, 2163894399),O(1780719474, 2704867999),O(1152157519, 3381084999),O(366455074, 4226356249),O(2913388981, 2641472655),O(2567994403, 3301840819),O(2136251179, 4127301024),O(1335156987, 2579563140),O(1668946234, 3224453925),O(3159924616, 4030567406),O(901211061, 2519104629),O(2200255651, 3148880786),O(602835915, 3936100983),O(1987385183, 2460063114),O(336747831, 3075078893), +O(1494676613, 3843848616),O(934172883, 2402405385),O(2241457928, 3003006731),O(1728080585, 3753758414),O(6308542, 2346099009),O(1081627501, 2932623761),O(2425776201, 3665779701),O(2052981037, 2291112313),O(3639968121, 2863890391),O(3476218327, 3579862989),O(2709507366, 2237414368),O(3386884208, 2796767960),O(4233605260, 3495959950),O(1572261463, 2184974969),O(3039068653, 2731218711),O(2725093993, 3414023389),O(185142019, 4267529237),O(652584674, 2667205773),O(1889472666, 3334007216),O(2361840833, 4167509020), +O(3623634168, 2604693137),O(1308317239, 3255866422),O(3782880196, 4069833027),O(1827429211, 2543645642),O(136802865, 3179557053),O(1244745406, 3974446316),O(2925449527, 2484028947),O(2583070084, 3105036184),O(3228837605, 3881295230),O(944281679, 2425809519),O(106610275, 3032261899),O(3354488316, 3790327373),O(2633426109, 2368954608),O(3291782637, 2961193260),O(4114728296, 3701491575),O(4182317921, 2313432234),O(3080413753, 2891790293),O(629291719, 3614737867),O(4151403709, 2259211166),O(3041770988, 2824013958), +O(1654730087, 3530017448),O(1034206304, 2206260905),O(2366499704, 2757826131),O(1884382806, 3447282664),O(1177739254, 2154551665),O(2545915892, 2693189581),O(4256136688, 3366486976),O(1025203564, 4208108721),O(3325106788, 2630067950),O(2008899837, 3287584938),O(363641148, 4109481173),O(764146629, 2568425733),O(2028925111, 3210532166),O(388672741, 4013165208),O(242920463, 2508228255),O(3524876051, 3135285318),O(2258611415, 3919106648),O(1411632134, 2449441655),O(690798344, 3061802069),O(1937239754, 3827252586), +O(2284516670, 2392032866),O(708162190, 2990041083),O(4106428209, 3737551353),O(955904895, 2335969596),O(1194881119, 2919961995),O(419859574, 3649952494),O(3483637706, 2281220308),O(59579836, 2851525386),O(2221958443, 3564406732),O(3536207675, 2227754207),O(3346517770, 2784692759),O(3109405388, 3480865949),O(2480249280, 2175541218),O(952827952, 2719426523),O(117293116, 3399283154),O(2294100043, 4249103942),O(360070703, 2655689964),O(450088378, 3319612455),O(3783835945, 4149515568),O(2364897466, 2593447230),O(808638184, 3241809038), +O(3158281378, 4052261297),O(363313125, 2532663311),O(3675366878, 3165829138),O(2446724950, 3957286423),O(3139815830, 2473304014),O(1777286139, 3091630018),O(74124026, 3864537523),O(3804423900, 2415335951),O(3681788051, 3019169939),O(3528493240, 3773962424),O(2205308275, 2358726515),O(1682893520, 2948408144),O(2103616900, 3685510180),O(3462244210, 2303443862),O(2180321615, 2879304828),O(2725402019, 3599131035),O(1166505350, 2249456897),O(2531873511, 2811821121),O(4238583713, 3514776401),O(1038502085, 2196735251), +O(224385782, 2745919064),O(280482227, 3432398830),O(2498086432, 4290498537),O(4245658580, 2681561585),O(2085847753, 3351951982),O(459826043, 4189939978),O(1361133101, 2618712486),O(3848900024, 3273390607),O(3737383206, 4091738259),O(1798993592, 2557336412),O(2248741990, 3196670515),O(1737185663, 3995838144),O(1085741040, 2497398840),O(1357176300, 3121748550),O(3843954022, 3902185687),O(4013084000, 2438866054),O(2868871352, 3048582568),O(3586089190, 3810728210),O(3315047568, 2381705131),O(3070067636, 2977131414), +O(1690100897, 3721414268),O(3203796708, 2325883917),O(783520414, 2907354897),O(2053142341, 3634193621),O(1820084875, 2271371013),O(3348847918, 2839213766),O(2038576249, 3549017208),O(1274110156, 2218135755),O(518895871, 2772669694),O(2796103486, 3465837117),O(2284435591, 2166148198),O(708060841, 2707685248),O(885076051, 3384606560),O(1106345064, 4230758200),O(691465665, 2644223875),O(4085557553, 3305279843),O(4033205117, 4131599804),O(373269550, 2582249878),O(2614070586, 3227812347),O(2193846408, 4034765434), +O(2444895829, 2521728396),O(3056119787, 3152160495),O(2746407909, 3940200619),O(1179634031, 2462625387),O(400800715, 3078281734),O(2648484542, 3847852167),O(3265915575, 2404907604),O(4082394468, 3006134505),O(1881767613, 3757668132),O(3323588406, 2348542582),O(2007001860, 2935678228),O(2508752325, 3669597785),O(4252324763, 2293498615),O(4241664130, 2866873269),O(2080854690, 3583591587),O(763663269, 2239744742),O(3102062735, 2799680927),O(2803836594, 3499601159),O(3363010608, 2187250724),O(4203763259, 2734063405), +O(2033478602, 3417579257),O(3615590077, 4271974071),O(3870356534, 2669983794),O(2690462020, 3337479743),O(2289335700, 4171849679),O(3041447549, 2607406049),O(580583964, 3259257562),O(2873213603, 4074071952),O(1795758502, 2546294970),O(97214479, 3182868713),O(1195259923, 3978585891),O(210166540, 2486616182),O(2410191823, 3108270227),O(1938997955, 3885337784),O(1211873722, 2428336115),O(441100328, 3035420144),O(551375410, 3794275180),O(2492093279, 2371421987),O(2041374775, 2964277484),O(2551718469, 3705346855), +O(3205436779, 2315841784),O(4006795974, 2894802230),O(2861011319, 3618502788),O(3935615723, 2261564242),O(2772036005, 2826955303),O(2391303183, 3533694129),O(4178919049, 2208558830),O(3076165163, 2760698538),O(1697722806, 3450873173),O(1597947666, 2156795733),O(3071176406, 2695994666),O(1691486860, 3369993333),O(3188100399, 4212491666),O(3066304573, 2632807291),O(2759138893, 3291009114),O(1301439968, 4113761393),O(3497754540, 2571100870),O(2224709527, 3213876088),O(2780886909, 4017345110),O(664312494, 2510840694), +O(2977874265, 3138550867),O(2648601008, 3923188584),O(1655375630, 2451992865),O(3142961361, 3064991081),O(707476230, 3831238852),O(2589656291, 2394524282),O(1089586716, 2993155353),O(2435725219, 3741444191),O(3132940998, 2338402619),O(2842434424, 2923003274),O(1405559382, 3653754093),O(1415345525, 2283596308),O(1769181907, 2854495385),O(3285219208, 3568119231),O(3663874741, 2230074519),O(3506101602, 2787593149),O(1161401530, 3484491437),O(1262746869, 2177807148),O(1578433586, 2722258935),O(899300158, 3402823669), +O(2197867022, 4253529586),O(2447408712, 2658455991),O(1985519067, 3323069989),O(3555640657, 4153837486),O(1148533587, 2596148429),O(2509408807, 3245185536),O(3136761009, 4056481920),O(1960475631, 2535301200),O(2450594539, 3169126500),O(3063243173, 3961408125),O(2451397895, 2475880078),O(916763721, 3094850098),O(3293438299, 3868562622),O(984657113, 2417851639),O(157079567, 3022314549),O(1270091283, 3777893186),O(1867548876, 2361183241),O(3408177919, 2951479051),O(3186480575, 3689348814),O(917808535, 2305843009), +O(2221002493, 2882303761),O(3849994940, 3602879701),O(2943117750, 2251799813),O(457671715, 2814749767),O(3793315116, 3518437208),O(2370821947, 2199023255),O(1889785610, 2748779069),O(3435973837, 3435973836),O(0, 2147483648),O(0, 2684354560),O(0, 3355443200),O(0, 4194304000),O(0, 2621440000),O(0, 3276800000),O(0, 4096000000),O(0, 2560000000),O(0, 3200000000),O(0, 4000000000),O(0, 2500000000),O(0, 3125000000),O(0, 3906250000),O(0, 2441406250),O(2147483648, 3051757812),O(2684354560, 3814697265),O(67108864, 2384185791), +O(3305111552, 2980232238),O(1983905792, 3725290298),O(2313682944, 2328306436),O(2892103680, 2910383045),O(393904128, 3637978807),O(1856802816, 2273736754),O(173519872, 2842170943),O(3438125312, 3552713678),O(1075086496, 2220446049),O(2417599944, 2775557561),O(4095741754, 3469446951),O(4170451332, 2168404344),O(918096869, 2710505431),O(73879263, 3388131789),O(1166090902, 4235164736),O(728806814, 2646977960),O(911008517, 3308722450),O(3286244295, 4135903062),O(980160860, 2584939414),O(3372684723, 3231174267), +O(3142114080, 4038967834),O(3037563124, 2524354896),O(3796953905, 3155443620),O(451225085, 3944304526),O(3503241150, 2465190328),O(84084142, 3081487911),O(3326330649, 3851859888),O(2078956656, 2407412430),O(451212172, 3009265538),O(2711498863, 3761581922),O(2768428613, 2350988701),O(239310295, 2938735877),O(1372879692, 3673419846),O(4079275280, 2295887403),O(4025352276, 2869859254),O(2884206696, 3587324068),O(3950112833, 2242077542),O(2790157394, 2802596928),O(3487696742, 3503246160),O(2179810464, 2189528850), +O(577279432, 2736911063),O(3942824762, 3421138828),O(633563656, 4276423536),O(395977285, 2672764710),O(2642455254, 3340955887),O(2229327244, 4176194859),O(856458615, 2610121787),O(4291798741, 3262652233),O(2143522955, 4078315292),O(3487185495, 2548947057),O(1137756396, 3186183822),O(3569679143, 3982729777),O(620436729, 2489206111),O(3996771383, 3111507638),O(2848480580, 3889384548),O(3927784011, 2430865342),O(2762246365, 3038581678),O(1305324309, 3798227098),O(1889569517, 2373891936),O(2361961896, 2967364920), +O(2952452370, 3709206150),O(771540907, 2318253844),O(964426134, 2897817305),O(2279274492, 3622271631),O(3035159293, 2263919769),O(572723645, 2829899712),O(715904556, 3537374640),O(447440347, 2210859150),O(2706784082, 2763573937),O(162254631, 3454467422),O(3322634616, 2159042138),O(2005809622, 2698802673),O(3581003852, 3373503341),O(1255029343, 4216879177),O(3468747899, 2635549485),O(1114709402, 3294436857),O(2467128577, 4118046071),O(3152568096, 2573778794),O(1793226473, 3217223493),O(3315274915, 4021529366), +O(998304998, 2513455854),O(3395364895, 3141819817),O(1022980647, 3927274772),O(2786846552, 2454546732),O(3483558190, 3068183415),O(3280705914, 3835229269),O(2587312108, 2397018293),O(12914663, 2996272867),O(3237368801, 3745341083),O(1486484589, 2340838177),O(2931847560, 2926047721),O(443583978, 3657559652),O(2424723634, 2285974782),O(883420895, 2857468478),O(3251759766, 3571835597),O(2569220766, 2232397248),O(3211525958, 2790496560),O(4014407447, 3488120700),O(361521006, 2180075438),O(2599384906, 2725094297), +O(28005660, 3406367872),O(35007075, 4257959840),O(21879422, 2661224900),O(27349278, 3326531125),O(1107928421, 4158163906),O(1766197087, 2598852441),O(3281488183, 3248565551),O(3028118405, 4060706939),O(1355703091, 2537941837),O(2768370688, 3172427296),O(3460463360, 3965534120),O(2162789600, 2478458825),O(3777228824, 3098073531),O(3647794206, 3872591914),O(3353613203, 2420369946),O(2044532855, 3025462433),O(3629407893, 3781828041),O(657767197, 2363642526),O(2969692644, 2954553157),O(490890333, 3693191447),O(1917419194, 2308244654), +O(249290345, 2885305818),O(2459096579, 3606632272),O(1536935362, 2254145170),O(4068652851, 2817681462),O(2938332415, 3522101828),O(3983941407, 2201313642),O(2832443111, 2751642053),O(319328417, 3439552567),O(1810192997, 2149720354),O(115257598, 2687150443),O(3365297469, 3358938053),O(985396365, 4198672567),O(2226485464, 2624170354),O(635623182, 3280212943),O(4015754449, 4100266178),O(3583588355, 2562666361),O(1258259972, 3203332952),O(1572824965, 4004166190),O(4204241075, 2502603868),O(960334048, 3128254836), +O(1200417559, 3910318545),O(3434615535, 2443949090),O(2145785770, 3054936363),O(1608490389, 3818670454),O(4226531965, 2386669033),O(2061939484, 2983336292),O(2577424355, 3729170365),O(2147761134, 2330731478),O(537217770, 2913414348),O(671522212, 3641767935),O(2030314119, 2276104959),O(1464150824, 2845131199),O(756446706, 3556413999),O(2083391927, 2222758749),O(3677981733, 2778448436),O(302509871, 3473060546),O(1262810493, 2170662841),O(2652254940, 2713328551),O(2241576851, 3391660689),O(3875712888, 4239575861), +O(2959191467, 2649734913),O(477763862, 3312168642),O(2744688476, 4140210802),O(2789172121, 2587631751),O(2412723328, 3234539689),O(4089645983, 4043174611),O(2019157828, 2526984132),O(2523947285, 3158730165),O(4228675930, 3948412706),O(3716664280, 2467757941),O(1424604878, 3084697427),O(707014274, 3855871784),O(441883921, 2409919865),O(1626096725, 3012399831),O(958879083, 3765499789),O(1136170339, 2353437368),O(1420212923, 2941796710),O(3922749802, 3677245887),O(4062331362, 2298278679),O(4004172379, 2872848349), +O(1783990002, 3591060437),O(1651864663, 2244412773),O(3138572653, 2805515966),O(1775732168, 3506894958),O(36090781, 2191809349),O(1118855300, 2739761686),O(3546052773, 3424702107),O(3358824142, 4280877634),O(3173006913, 2675548521),O(745033169, 3344435652),O(931291462, 4180544565),O(1118928076, 2612840353),O(2472401918, 3266050441),O(4164244222, 4082563051),O(2065781727, 2551601907),O(1508485334, 3189502384),O(1885606668, 3986877980),O(3325987816, 2491798737),O(936259297, 3114748422),O(3317807770, 3893435527), +O(3684242592, 2433397204),O(310335944, 3041746506),O(2535403578, 3802183132),O(3732110884, 2376364457),O(1443913133, 2970455572),O(1804891417, 3713069465),O(3812411696, 2320668415),O(3691772795, 2900835519),O(3540974170, 3626044399),O(3823721592, 2266277749),O(1558426518, 2832847187),O(874291324, 3541058984),O(546432078, 2213161865),O(1756781921, 2766452331),O(1122235577, 3458065414),O(3922622708, 2161290883),O(3829536561, 2701613604),O(491953405, 3377017006),O(2762425404, 4221271257),O(115903142, 2638294536), +O(144878927, 3297868170),O(2328582307, 4122335212),O(3602847590, 2576459507),O(3429817663, 3220574384),O(4287272079, 4025717980),O(532061401, 2516073738),O(2812560400, 3145092172),O(3515700500, 3931365215),O(3807925548, 2457103259),O(3686165111, 3071379074),O(2460222741, 3839223843),O(1000768301, 2399514902),O(3398444024, 2999393627),O(3174313207, 3749242034),O(3057687578, 2343276271),O(2748367649, 2929095339),O(2361717737, 3661369174),O(402331761, 2288355734),O(2650398350, 2860444667),O(2239256113, 3575555834), +O(2473276895, 2234722396),O(3091596119, 2793402995),O(2790753324, 3491753744),O(1744220828, 2182346090),O(32792387, 2727932613),O(1114732307, 3409915766),O(3540899032, 4262394707),O(1676190983, 2663996692),O(2095238729, 3329995865),O(3692790235, 4162494831),O(3918606633, 2601559269),O(1677032819, 3251949087),O(1022549200, 4064936359),O(2249705986, 2540585224),O(2812132482, 3175731530),O(1367681955, 3969664413),O(1391672134, 2481040258),O(3887073815, 3101300322),O(2711358621, 3876625403),O(1157728226, 2422890877), +O(2520902107, 3028613596),O(3151127633, 3785766995),O(1432583859, 2366104372),O(1790729824, 2957630465),O(3312154103, 3697038081),O(459483579, 2310648801),O(1648096297, 2888311001),O(3133862196, 3610388751),O(3569276608, 2256492969),O(1240370288, 2820616212),O(1550462860, 3525770265),O(3653393848, 2203606415),O(3493000486, 2754508019),O(3292508783, 3443135024),O(2057817989, 2151959390),O(424788839, 2689949238),O(2678469697, 3362436547),O(2274345297, 4203045684),O(3568949458, 2626903552),O(166219527, 3283629441), +O(1281516233, 4104536801),O(3485302206, 2565335500),O(61660461, 3206669376),O(77075576, 4008336720),O(48172235, 2505210450),O(2207698942, 3131513062),O(612140029, 3914391328),O(382587518, 2446494580),O(478234398, 3058118225),O(1671534821, 3822647781),O(1581580175, 2389154863),O(903233395, 2986443579),O(55299920, 3733054474),O(1108304274, 2333159046)]);Cy7=BeN([(-76),(-72),(-69),(-66),(-62),(-59),(-56),(-52),(-49),(-46),(-42),(-39),(-36),(-32),(-29),(-26),(-22),(-19),(-16),(-12),(-9),(-6),(-2),1,4,8,11,14,17, +21,24,27,31,34,37,41,44,47,51,54,57,61,64,67,71,74,77,81,84,87,91,94,97,101,104,107,110,114,117,120,124,127,130,134,137,140,144,147,150,154,157,160,164,167,170,174,177,180,184,187,190,194,197,200,204,207,210,213,217,220,223,227,230,233,237,240,243,247,250,253,257,260,263,267,270,273,277,280,283,287,290,293,297,300,303,306,310,313,316,320,323,326,330,333,336,340,343,346,350,353,356,360,363,366,370,373,376,380,383,386,390,393,396,400,403,406,409,413,416,419,423,426,429,433,436,439,443,446,449,453,456,459,463, +466,469,473,476,479,483,486,489,493,496,499,502,506,509,512,516,519,522,526,529,532,536,539,542,546,549,552,556,559,562,566,569,572,576,579,582,586,589,592,595,599,602,605,609,612,615,619,622,625,629,632,635,639,642,645,649,652,655,659,662,665,669,672,675,679,682,685,689,692,695,698,702,705,708,712,715,718,722,725,728,732,735,738,742,745,748,752,755,758,762,765,768,772,775,778,782,785,788,791,795,798,801,805,808,811,815,818,821,825,828,831,835,838,841,845,848,851,855,858,861,865,868,871,875,878,881,885,888, +891,894,898,901,904,908,911,914,918,921,924,928,931,934,938,941,944,948,951,954,958,961,964,968,971,974,978,981,984,987,991,994,997,1001,1004,1007,1011,1014,1017,1021,1024,1027,1031,1034,1037,1041,1044,1047,1051,1054,1057,1061,1064,1067,1071,1074,1077,1081,1084,1087,1090,1094,1097,1100,1104,1107,1110,1114,1117,1120,1124,1127,1130,1134,1137,1140,1144,1147,1150,1154,1157,1160,1164,1167,1170,1174,1177,1180,1183,1187,1190,1193,1197,1200,1203,1207,1210,1213,1217,1220,1223,1227,1230,1233,1237,1240,1243,1247,1250, +1253,1257,1260,1263,1267,1270,1273,1276,1280,1283,1286,1290,1293,1296,1300,1303,1306,1310,1313,1316,1320,1323,1326,1330,1333,1336,1340,1343,1346,1350,1353,1356,1360,1363,1366,1370,1373,1376,1379,1383,1386,1389,1393,1396,1399,1403,1406,1409,1413,1416,1419,1423,1426,1429,1433,1436,1439,1443,1446,1449,1453,1456,1459,1463,1466,1469,1472,1476,1479,1482,1486,1489,1492,1496,1499,1502,1506,1509,1512,1516,1519,1522,1526,1529,1532,1536,1539,1542,1546,1549,1552,1556,1559,1562,1566,1569,1572,1575,1579,1582,1585,1589,1592, +1595,1599,1602,1605,1609,1612,1615,1619,1622,1625,1629,1632,1635,1639,1642,1645,1649,1652,1655,1659,1662,1665,1668,1672,1675,1678,1682,1685,1688,1692,1695,1698,1702,1705,1708,1712,1715,1718,1722,1725,1728,1732,1735,1738,1742,1745,1748,1752,1755,1758,1761,1765,1768,1771,1775,1778,1781,1785,1788,1791,1795,1798,1801,1805,1808,1811,1815,1818,1821,1825,1828,1831,1835,1838,1841,1845,1848,1851,1855,1858,1861,1864,1868,1871,1874,1878,1881,1884,1888,1891,1894,1898,1901,1904,1908,1911,1914,1918,1921,1924,1928,1931,1934, +1938,1941,1944,1948,1951,1954,1957,1961,1964,1967,1971,1974,1977,1981,1984,1987,1991,1994,1997,2001,2004,2007,2011,2014,2017,2021,2024,2027,2031,2034,2037,2041,2044,2047,2051,2054,2057,2060,2064,2067,2070,2074,2077,2080,2084,2087,2090,2094,2097,2100,2104,2107,2110,2114]);}; +function CKj(){let a=this;F.call(a);a.co7=null;a.cds=null;a.bX1=null;a.bPa=null;a.db2=null;a.ddm=null;a.cUY=0;a.b$1=null;a.cdp=null;a.b_7=null;a.crN=0;a.cx3=0;a.dbJ=0;a.dbB=0;} +let Fqu=(a,b)=>{let c;a.cUY=(-1);a.dbB=(-1);c=new DqY;c.bIH=a;EsS(c,b,0);},ECR=a=>{let b=new CKj();Fqu(b,a);return b;},DzJ=a=>{let b,c,d,e;if(a.cx3){b=new Bm9;if(a.co7===null){c=new S;T(c);d=a.cds;if(d!==null){L(c,d);Bb(c,58);}if(a.crN)L(c,a.bX1);else{if(a.bPa!==null){L(c,E(648));L(c,a.bPa);}d=a.b$1;if(d!==null)L(c,d);if(a.cdp!==null){Bb(c,63);L(c,a.cdp);}}if(a.b_7!==null){Bb(c,35);L(c,a.b_7);}a.co7=Q(c);}e=a.co7;BxR();DlR(b,null,e,null);return b;}b=new Bt;X(b);J(b);},TR=N(Dd); +function Ws(){let a=this;Dt.call(a);a.cNC=null;a.bYq=0;} +let Ftw=(a,b,c,d)=>{Bp(a,c);if(b!==null&&c!==null){if(d<(-1)){b=new Bt;X(b);J(b);}a.cNC=b;a.bYq=d;return;}b=new F2;X(b);J(b);},Nj=(a,b,c)=>{let d=new Ws();Ftw(d,a,b,c);return d;},Dx8=(a,b,c)=>{Bp(a,c);if(b!==null&&c!==null){a.cNC=b;a.bYq=(-1);return;}b=new F2;X(b);J(b);},BxV=(a,b)=>{let c=new Ws();Dx8(c,a,b);return c;},DC1=a=>{return E(14);},D5i=N(),BDk=null,BcN=()=>{let b,c;if(BDk===null){b=new CRQ;c=new CCr;c.dd_=QR();c.c73=E(14);c.cRj=E9();b.cLf=c;b.c2F=E(21);BDk=b;}return BDk;}; +function AP1(){AYS.call(this);this.cvK=null;} +let BBF=(a,b)=>{a.cvK=b;},Fyh=a=>{let b=new AP1();BBF(b,a);return b;}; +function BCK(){let a=this;AP1.call(a);a.c8A=0;a.c9n=null;a.daJ=null;a.c$O=null;} +let BYp=N(BCK),Fw=(a,b)=>{let c;c=a;AOm(c,b);AOm(c,E(15));},Ct3=(a,b)=>{let c;c=E(2);if(b!==null)c=HT(b);Fw(a,c);},Cy0=N(BYp),AOm=(a,b)=>{if(b===null)b=E(2);EhV(Cq(b));},C2t=N(),DRS=(a,b)=>{let c,$$je;b=b;AJl();try{c=EH0(b);b=EuP(c);if(b!==null)c=Dfc(b);}catch($$e){$$je=P($$e);if($$je instanceof Dd){b=$$je;c=new BCV;YV(c,b);J(c);}else{throw $$e;}}return c;},A3S=N(Bx),BtU=null,BnX=null,BJ2=null,B8t=null,BGb=null,CmI=null,FwN=null,APi=()=>{APi=Z(A3S);FhE();},EXm=(a,b,c)=>{APi();Ct(a,b,c);},AXP=(a,b)=>{let c=new A3S();EXm(c, +a,b);return c;},FhE=()=>{let b,c,d;BtU=AXP(E(2090),0);BnX=AXP(E(2091),1);BJ2=AXP(E(284),2);B8t=AXP(E(2092),3);BGb=AXP(E(37),4);b=AXP(E(852),5);CmI=b;c=K(A3S,6);d=c.data;d[0]=BtU;d[1]=BnX;d[2]=BJ2;d[3]=B8t;d[4]=BGb;d[5]=b;FwN=c;}; +function DqY(){F.call(this);this.bIH=null;} +let EsS=(a,b,c)=>{let d,e,f,g,h,i,j,k,$$je;a.bIH.co7=b;d=Eq(b,35);if(d==(-1))e=b;else{f=a.bIH;g=d+1|0;f.b_7=CC(b,g);f=a.bIH.b_7;a:{try{A7B(f,E(2093));break a;}catch($$e){$$je=P($$e);if($$je instanceof Ws){e=$$je;}else{throw $$e;}}J(Nj(b,E(14),g+e.bYq|0));}e=B_(b,0,d);}b:{c:{d=Eq(e,58);h=Eq(e,47);i=Eq(e,63);if(d!=(-1)&&!(h=d)break c;if(i==(-1))break c;}f=a.bIH;f.cx3=0;f.bX1=e;break b;}f=a.bIH;f.cx3=1;f.cds=B_(e,0,d);if(a.bIH.cds.bGI.length){j=a.bIH.cds;g=Bn(j,0);if(!(g>=97&&g<=122)&&!(g>=65 +&&g<=90))J(Nj(b,E(14),0));d:{try{CsC(j,E(2094));break d;}catch($$e){$$je=P($$e);if($$je instanceof Ws){f=$$je;}else{throw $$e;}}J(Nj(b,E(14),0+f.bYq|0));}a.bIH.bX1=CC(e,d+1|0);if(a.bIH.bX1.bGI.length)break b;J(BxV(b,E(14)));}J(BxV(b,E(14)));}e:{f=a.bIH;if(f.cds!==null&&!(f.bX1.bGI.length>0&&Bn(a.bIH.bX1,0)==47)){f=a.bIH;f.crN=1;f=f.bX1;g=(h+2|0)+d|0;f:{try{A7B(f,E(2093));break e;}catch($$e){$$je=P($$e);if($$je instanceof Ws){e=$$je;break f;}else{throw $$e;}}}J(Nj(b,E(14),g+e.bYq|0));}f=a.bIH;f.crN=0;j=f.bX1;g +=Eq(j,63);if(g!=(-1)){a.bIH.cdp=CC(j,g+1|0);j=B_(j,0,g);f=a.bIH.cdp;k=(h+1|0)+g|0;g:{try{A7B(f,E(2095));break g;}catch($$e){$$je=P($$e);if($$je instanceof Ws){e=$$je;}else{throw $$e;}}J(Nj(b,E(14),k+e.bYq|0));}}if(!BO(j,E(648)))a.bIH.b$1=j;else{g=In(j,47,2);if(g!=(-1)){a.bIH.bPa=B_(j,2,g);a.bIH.b$1=CC(j,g);}else{a.bIH.bPa=CC(j,2);if(!a.bIH.bPa.bGI.length){f=a.bIH;if(f.cdp===null&&f.b_7===null)J(BxV(b,E(14)));}a.bIH.b$1=E(14);}if(!a.bIH.bPa.bGI.length)a.bIH.bPa=null;else{f=a.bIH.bPa;k=d+3|0;h:{try{A7B(f,E(2096));break h;} +catch($$e){$$je=P($$e);if($$je instanceof Ws){e=$$je;}else{throw $$e;}}J(Nj(b,E(14),k+e.bYq|0));}}}k=0;if(h>(-1))k=k+h|0;if(g>(-1))k=k+g|0;f=a.bIH.b$1;try{A7B(f,E(2097));break e;}catch($$e){$$je=P($$e);if($$je instanceof Ws){e=$$je;J(Nj(b,E(14),k+e.bYq|0));}else{throw $$e;}}}E0t(a,c);},E0t=(a,b)=>{let c,d,e,f,g,h,i,j,$$je;c=a.bIH.bPa;if(c!==null){a:{d=null;e=0;f=(-1);g=Eq(c,64);if(g!=(-1)){d=B_(c,0,g);h=a.bIH.bPa;i=0;while(true){if(i>=d.bGI.length){e=g+1|0;c=CC(c,e);break a;}e=Bn(d,i);if(e==93)break;if(e==91)break;i +=i+1|0;}J(Nj(h,E(14),0+i|0));}}j=Qg(c,58);i=Eq(c,93);if(j!=(-1)&&i=(c.bGI.length-1|0))c=h;else{b:{c:{try{f=CZ(CC(c,j+1|0));if(f>=0)break b;}catch($$e){$$je=P($$e);if($$je instanceof Ex){break c;}else{throw $$e;}}d:{try{if(b)break d;}catch($$e){$$je=P($$e);if($$je instanceof Ex){break c;}else{throw $$e;}}return;}try{J(Nj(a.bIH.bPa,E(14),(e+j|0)+1|0));}catch($$e){$$je=P($$e);if($$je instanceof Ex){break c;}else{throw $$e;}}}if(b)J(Nj(a.bIH.bPa,E(14),(e+j|0)+1|0));return;}c=h;}}if(!Bj(c,E(14))) +{e:{if(Bn(c,0)==91){if(Bn(c,c.bGI.length-1|0)==93){if(ECq(a,c)){b=1;break e;}J(BxV(c,E(14)));}J(Nj(c,E(14),0));}if(Eq(c,91)==(-1)&&Eq(c,93)==(-1)){e=Qg(c,46);if(e>=0&&e!=(c.bGI.length-1|0)&&AVW(Bn(c,e+1|0))){if(Ea2(a,c)){b=1;break e;}if(!b){b=0;break e;}J(Nj(c,E(14),0));}f:{g:{try{CsC(c,E(2098));break g;}catch($$e){$$je=P($$e);if($$je instanceof Ws){}else{throw $$e;}}i=0;break f;}i=0;h:{while(true){e=In(c,46,i);if(e==(-1))break h;if(Bn(c,i)==45)break;if(Bn(c,e-1|0)==45)break;i=e+1|0;}i=0;break f;}if(!(Bn(c, +i)!=45&&Bn(c,c.bGI.length-1|0)!=45))i=0;else{h=CC(c,i);if(Bj(h,c))i=1;else{i=Bn(h,0);i=!(i>=48&&i<=57)?1:0;}}}if(i){b=1;break e;}if(!b){b=0;break e;}J(Nj(c,E(14),0));}J(Nj(c,E(14),0));}if(b){h=a.bIH;h.db2=d;h.ddm=c;h.cUY=f;h.dbJ=1;return;}return;}if(b)J(Nj(a.bIH.bPa,E(14),e));return;}},Ea2=(a,b)=>{let c,d,e,f,$$je;a:{b:{try{c=Eq(b,46);d=CZ(B_(b,0,c));if(d>=0&&d<=255)break b;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break a;}else{throw $$e;}}return 0;}c:{try{d=c+1|0;e=In(b,46,d);d=CZ(B_(b,d,e));if(d>=0&& +d<=255)break c;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break a;}else{throw $$e;}}return 0;}d:{try{c=e+1|0;f=In(b,46,c);d=CZ(B_(b,c,f));if(d>=0&&d<=255)break d;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break a;}else{throw $$e;}}return 0;}e:{try{d=CZ(CC(b,f+1|0));if(d<0)break e;if(d>255)break e;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break a;}else{throw $$e;}}return 1;}try{}catch($$e){$$je=P($$e);if($$je instanceof Dt){break a;}else{throw $$e;}}return 0;}return 0;},ECq=(a,b)=>{let c,d,e,f,g, +h,i,j,k,l,m,n,o,p,q,r;c=b.bGI.length;d=0;e=0;f=0;g=E(14);h=0;i=0;if(c>=2){j=0;k=c-1|0;l=C5(c,4);a:while(true){if(j>=c){if(f<=0){if(e!=7&&!d)return 0;return !(CQ(g)&&Bn(b,k-i|0)!=58&&Bn(b,(c-2|0)-i|0)!=58)?1:0;}return !(f==3&&CD$(a,g))?0:1;}b:{c:{d:{e:{f:{m=Bn(b,j);switch(m){case 46:break d;case 58:break f;case 91:break e;case 93:break;default:break c;}if(j!=k)return 0;if(Bn(b,0)!=91)break a;break b;}e=e+1|0;if(e>7)return 0;if(f>0)return 0;if(h==58){if(d)return 0;d=1;}g=E(14);break b;}if(j)return 0;if(Bn(b,k) +!=93)return 0;if(Bn(b,1)==58&&Bn(b,2)!=58)return 0;i=1;if(l<0)return 0;break b;}f=f+1|0;if(f>3)return 0;if(!CD$(a,g))return 0;if(e!=6&&!d)return 0;if(e==7&&Bn(b,0+i|0)!=58&&Bn(b,1+i|0)!=58)return 0;g=E(14);break b;}if(g.bGI.length>3)return 0;g:{h:{if(!(m>=48&&m<=57)&&!(m>=65&&m<=70)){if(m<97)break h;if(m>102)break h;}n=1;break g;}n=0;}if(!n)return 0;o=QO(m);if(!CQ(o)){if(CQ(g))g=o;else{p=Fd(g.bGI.length+o.bGI.length|0);q=p.data;n=0;h=0;while(h{let c,d;if(b.bGI.length>=1&&b.bGI.length<=3){c=0;while(true){if(c>=b.bGI.length)return CZ(b)>255?0:1;d=Bn(b,c);if(d<48)break;if(d>57)break;c=c+1|0;}return 0;}return 0;}; +function Bm9(){let a=this;F.call(a);a.coz=0;a.bVt=null;a.bKz=null;a.bRI=null;a.bUW=0;a.bYB=null;a.b6e=null;a.b7N=null;a.bYL=null;a.b$d=null;a.bMg=null;} +let B1L=null,Epz=null,BxR=()=>{BxR=Z(Bm9);EkE();},DlR=(a,b,c,d)=>{let e,f,g,h,i,j,k,$$je;BxR();a.bUW=(-1);a.bMg=d;if(c!==null){d=Dk(c);a:{try{e=Eq(d,58);break a;}catch($$e){$$je=P($$e);if($$je instanceof F2){f=$$je;}else{throw $$e;}}b=new TR;Bp(b,f.p());J(b);}g=Eq(d,91);if(e>0&&!(g!=(-1)&&e>=g)){b:{c:{c=B_(d,0,e);a.bKz=c;h=Bn(c,0);if(!(97<=h&&h<=122)){if(65>h)break c;if(h>90)break c;}i=1;break b;}i=0;}j=1;while(i&&j{let d=new Bm9();DlR(d,a,b,c);return d;},FfO=(a,b)=>{if(b!==null){if(a!==b){if(Dg(a)===Dg(b))return DWG(a.bMg,a,b);return 0;}return 1;}return 0;},FxP=a=>{if(!a.coz)a.coz=EZX(a.bMg,a);return a.coz;},BjY=(a,b,c,d,e,f,g,h,i)=>{let j,k,l;if(h===null)j=g;else if(CQ(h))j=g;else if(g===null){j=new S;T(j);Bb(j,63);H(j,h);j=Q(j);}else{j=new S;T(j);k=H(j,g);Bb(k,63);H(k,h);j=Q(j);}if(a.bKz===null)a.bKz=b;a.bRI=c;a.bVt=j;a.bUW=d;a.b$d +=i;a.coz=0;if(c!==null&&c.bGI.length>0){b=a.bRI;a.bYB=b;d=a.bUW;if(d!=(-1)){c=new S;T(c);b=H(c,b);Bb(b,58);BE(b,d);a.bYB=Q(c);}}d=(-1);b=a.bRI;if(b!==null)d=Qg(b,64);if(d<0)a.b6e=null;else{a.b6e=B_(a.bRI,0,d);a.bRI=CC(a.bRI,d+1|0);}l=(-1);b=a.bVt;if(b!==null)l=Eq(b,63);if(l<0){a.bYL=null;a.b7N=a.bVt;}else{a.bYL=CC(a.bVt,l+1|0);a.b7N=B_(a.bVt,0,l);}a.bYB=e;a.b6e=f;a.b7N=g;a.bYL=h;},EkE=()=>{B1L=Dy();}; +function AAl(){ACs.call(this);this.bKr=null;} +let A3M=(a,b)=>{a.bKr=b;},Fza=a=>{let b=new AAl();A3M(b,a);return b;},B3b=a=>{a.bKr.tW();},D79=(a,b)=>{return a.BK(b,0,b.data.length);},C$V=N(0); +function Cv$(){AAl.call(this);this.cmk=null;} +let ELx=(a,b)=>{A3M(a,b);a.cmk=BD(8);},Eum=a=>{let b=new Cv$();ELx(b,a);return b;},CEG=(a,b)=>{let c,d;c=0;while(c{let b,c;if(CEG(a,4)>=0){b=a.cmk.data;return (b[0]&255)<<24|(b[1]&255)<<16|(b[2]&255)<<8|b[3]&255;}c=new AA3;X(c);J(c);},DEm=a=>{let b,c,d,e,f,g,h;if(CEG(a,2)>=0){b=a.cmk.data;c=((b[0]&255)<<8|b[1]&255)&65535;b=BD(c);d=Fd(c);e=0;f=a;if(c>=0){a:{if(c){if(f.bKr!==null){if(e<=(b.data.length-c|0)){g=c;while(g>0){h=f.bKr.BK(b, +e,g);if(h<0){f=new AA3;X(f);J(f);}e=e+h|0;g=g-h|0;}break a;}f=new EN;X(f);J(f);}f=new F2;X(f);J(f);}}return Ez0(b,d,0,c);}f=new EN;X(f);J(f);}f=new AA3;X(f);J(f);},Ez0=(b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o;f=0;g=0;a:{while(f=e){m=new AXO;Bp(m,E(2102));J(m);}k=j+1|0;j=h[d+j|0];if((j&192)!=128){m=new AXO;Bp(m,E(2103));J(m);}n=g+1|0;i[g]=((l&31)<<6|j&63)&65535;g=n;j=k;}else{if((l&240)!=224){m=new AXO;Bp(m,E(2103));J(m);}f +=j+1|0;if(f>=e){m=new AXO;Bp(m,E(2103));J(m);}n=h[d+j|0];j=f+1|0;o=h[d+f|0];if((n&192)!=128)break a;if((o&192)!=128)break a;f=g+1|0;i[g]=((l&15)<<12|(n&63)<<6|o&63)&65535;g=f;}f=j;}return QV(c,0,g);}m=new AXO;Bp(m,E(2103));J(m);},Ec5=N(),E1N=b=>{let c;c=Cac(b);if(c!==null)return C1X(c,0,1);return null;},DE_=b=>{return C1X(Bid(A4B(b)),0,0);},C1X=(b,c,d)=>{let e,f;e=new S;T(e);while(true){f=AZ5(b);if(f===null)break;L(e,f);if(!c)continue;L(e,E(15));}if(d)AAF(b);return Q(e);},DHq=b=>{let c,d,$$je;c=new ARK;d=new AG8;TU();A6M(d, +b,Vb);Dkx(c,d);try{b=Egu(c);d=DgM();b=Bh6(b,d);}catch($$e){$$je=P($$e);if($$je instanceof Gt){b=$$je;a:{b:{try{AAF(c);break a;}catch($$e){$$je=P($$e);if($$je instanceof Gt){c=$$je;break b;}else{throw $$e;}}}ANe(b,c);}J(b);}else{throw $$e;}}AAF(c);return b;},DOK=(b,c)=>{let d,e,f,g,h,i;if(c>=0){d=BD(c);e=0;while(e{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,$$je;if(e>=d&&e>=0){f=B_(c,d,e);d=e-d|0;g=0;h=b.bRI;i=b.bUW;j=b.b$d;k=b.b7N;l=b.bYL;m=b.bYB;n=b.b6e;o=In(f,35,0);if(BO(f,E(648))&&!BO(f,E(2107))){p=2;i=(-1);e=In(f,47,p);g=In(f,63,p);if(g==(-1))g=e;else if(e!=(-1)&&e<=g)g=e;if(g==(-1)){k=E(14);g=d;}e=o==(-1)?g:o0){n=B_(f,p,q);p=q+1|0;}if(!r)q=p;a:{s=In(f,58,q);t=Eq(f,93);if(t==(-1))r=s;else{b:{try{u=s;v=GB(f);r=t+1|0;if(v<=r){u=s;r=(-1);u=r;}else{u=s;if(Bn(f, +r)==58){u=r;u=s;}else{u=s;r=(-1);u=r;}u=r;}break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break b;}else{throw $$e;}}}r=u;}}if(!(r!=(-1)&&r<=g))h=B_(f,p,e);else{h=B_(f,p,r);w=B_(f,r+1|0,e);if(!CQ(w))i=CZ(w);}}e=C5(o,(-1));if(e>0)j=B_(f,o+1|0,d);r=e?o:d;v=ADv(f,63,r);u=0;if(v<=(-1)){if(!o)v=r;else{l=null;v=r;}}else{l=B_(f,v+1|0,r);if(!v&&k!==null){if(Bj(k,E(14)))k=E(21);else if(BO(k,E(21)))u=1;k=B_(k,0,Qg(k,47)+1|0);}}if(g>(-1)){if(gg){if(k===null)k=E(14);else if(Bj(k, +E(14)))k=E(21);else if(BO(k,E(21)))u=1;x=Qg(k,47)+1|0;if(!x)k=B_(f,g,v);else{k=B_(k,0,x);c=B_(f,g,v);f=new S;T(f);H(H(f,k),c);k=Q(f);}}}if(k===null)k=E(14);if(h===null)h=E(14);if(u)k=ED0(k);BjY(b,b.bKz,h,i,m,n,k,l,j);return;}c:{if(e<=(-2147483647)){if(d>=c.bGI.length)break c;if(d<0)break c;}if(!(Rl(c,E(648),d)&&In(c,47,d+2|0)==(-1)))return;}b=new AG0;c=new S;T(c);L(c,E(2108));BE(c,e);Bp(b,Q(c));J(b);},ED0=b=>{let c,d,e;while(true){c=IZ(b,E(2109));if(c<0)break;d=B_(b,0,c+1|0);b=CC(b,c+3|0);e=new S;T(e);H(H(e, +d),b);b=Q(e);}if(Dr(b,E(2110)))b=B_(b,0,b.bGI.length-1|0);while(true){c=IZ(b,E(2111));if(c<0)break;if(!c){b=CC(b,3);continue;}d=B_(b,0,ADv(b,47,c-1|0));b=CC(b,c+3|0);e=new S;T(e);H(H(e,d),b);b=Q(e);}if(Dr(b,E(2112))&&b.bGI.length>3)b=B_(b,0,ADv(b,47,b.bGI.length-4|0)+1|0);return b;},Fyy=(a,b,c,d,e,f,g,h,i,j)=>{BjY(b,c,d,e,f,g,h,i,j);},CTX=(a,b)=>{let c,d,e,f;c=new S;T(c);L(c,b.bKz);Bb(c,58);d=b.bYB;if(d!==null&&d.bGI.length>0){L(c,E(648));L(c,b.bYB);}e=b.bVt;f=b.b$d;if(e!==null)L(c,e);if(f!==null){Bb(c,35);L(c, +f);}return Q(c);},DWG=(a,b,c)=>{if(DzE(a,b,c))return !(Li(b.b$d,c.b$d)&&Li(b.bYL,c.bYL))?0:1;return 0;},EZX=(a,b)=>{return FP(CTX(a,b));},FkU=(a,b,c)=>{let d,e;d=C_Y(b);e=C_Y(c);if(d===null&&e===null)return 1;return !(d!==null&&BG(d,e))?0:1;},DzE=(a,b,c)=>{let d,e;if(Li(b.bKz,c.bKz)&&Li(b.bVt,c.bVt)){if(FkU(a,b,c)){d=b.bUW;if(d==(-1))d=a.D2();e=c.bUW;if(e==(-1))e=a.D2();return d!=e?0:1;}return 0;}return 0;},C_Y=b=>{let c;c=b.bRI;if(Bj(E(55),b.bKz)&&Bj(E(14),c))c=E(2113);return c;},CjF=N(0); +function CRQ(){let a=this;F.call(a);a.cLf=null;a.c2F=null;} +let AA3=N(Dd),E85=a=>{X(a);},E6o=()=>{let a=new AA3();E85(a);return a;},EQV=N(),A7B=(b,c)=>{let d,e,f,g;d=0;a:{b:{c:while(d=b.bGI.length)J(Nj(b,E(14),d));g=AM$(Bn(b,d+1|0),16);f=AM$(Bn(b,f),16);if(g==(-1))break b;if(f==(-1))break b;d=d+3|0;if(d>=b.bGI.length)break d;if(Bn(b,d)!=37)break;}continue c;}continue;}if(!(e>=97&&e<=122)&&!(e>=65&&e<=90)&&!(e>=48&&e<=57)&&Eq(c,e)<=(-1)){if(e<=127)break a;e:{f:{switch(e){case 9:case 32:break;default:break f;}f +=1;break e;}f=0;}if(f)break a;Fr();if(CwI(e))break a;}d=d+1|0;}return;}J(Nj(b,E(14),d));}J(Nj(b,E(14),d));},CsC=(b,c)=>{let d,e;d=0;while(d=97&&e<=122)&&!(e>=65&&e<=90)&&!(e>=48&&e<=57)&&Eq(c,e)<=(-1))J(Nj(b,E(14),d));d=d+1|0;}}; +function BXS(){let a=this;F.call(a);a.c73=null;a.da8=null;a.dd_=BH;} +function CCr(){BXS.call(this);this.cRj=null;} +function DaB(){let a=this;ACs.call(a);a.cUp=null;a.c2Z=0;a.b86=0;a.clv=null;} +let A1S=a=>{let b,c,d;b=a.clv;LH();c=b.bI3;if(c){if(c!=11){b.bI3=11;d=b.ceg;if(d!==null){ALm();d.tW();b.ceg=null;}}return;}d=new BP;Bp(d,E(2114));J(d);},Dw9=(a,b,c,d)=>{let e,f,g,h,i,j,$$je;if(c>=0){if(d>=0){e=b.data;f=c+d|0;g=e.length;if(f<=g){if(d){f=DT(a.c2Z-a.b86|0,0);if(f){f=DO(f,d);Di(a.cUp,a.b86,b,c,f);a.b86=a.b86+f|0;c=c+f|0;d=d-f|0;if(!d)return f;}a:{b:{try{h=a.clv;h.c7n=b;h.c7I=c;h.cEd=d;h.b1k=0;FtB(h);c=a.clv.b1k;if(!c)break b;c=c+f|0;}catch($$e){$$je=P($$e);if($$je instanceof Lz){i=$$je;break a;} +else{throw $$e;}}return c;}try{}catch($$e){$$je=P($$e);if($$je instanceof Lz){i=$$je;break a;}else{throw $$e;}}return (-1);}j=new Dd;ABa(j,E(2115),i);J(j);}return 0;}h=new Bt;i=new S;T(i);j=H(i,E(2116));BE(j,f);BE(H(j,E(2117)),g);Bp(h,Q(i));J(h);}h=new Bt;i=new S;T(i);BE(H(i,E(2118)),d);Bp(h,Q(i));J(h);}h=new Bt;i=new S;T(i);BE(H(i,E(2119)),c);Bp(h,Q(i));J(h);},C$r=N(A4P),FmR=a=>{return 80;}; +function CxA(){A4P.call(this);this.c5Y=0;} +let D5d=(a,b)=>{a.c5Y=b;},CjP=a=>{let b=new CxA();D5d(b,a);return b;},D5K=a=>{return a.c5Y;}; +function BO_(){let a=this;AAl.call(a);a.bZi=null;a.b6n=0;a.daE=0;a.ccJ=0;a.bN$=0;} +let DrA=(a,b)=>{A3M(a,b);a.ccJ=(-1);a.bZi=BD(8192);},D8Y=a=>{let b=new BO_();DrA(b,a);return b;},EJ8=a=>{let b,c;b=a.bKr;if(a.bZi!==null&&b!==null)return (a.b6n-a.bN$|0)+b.Cq()|0;c=new Dd;Bp(c,E(2120));J(c);},Eyk=a=>{let b;a.bZi=null;b=a.bKr;a.bKr=null;if(b!==null)b.tW();},Eju=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m;Jl(a);try{e=a.bZi;if(e!==null){if(c<=(b.data.length-d|0)&&c>=0&&d>=0){if(d){f=a.bKr;if(f!==null){g=a.bN$;h=a.b6n;if(g>=h)i=d;else{h=h-g|0;if(h>=d)h=d;Di(e,g,b,c,h);a.bN$=a.bN$+h|0;if(h!=d&&f.Cq()){c=c ++h|0;i=d-h|0;}else return h;}while(true){j=a.ccJ;h=C5(j,(-1));if(!h&&i>=e.data.length){k=f.BK(b,c,i);if(k==(-1))return i!=d?d-i|0:(-1);}else{a:{b:{if(h){g=a.bN$-j|0;h=a.daE;if(g0){a.ccJ=(-1);a.bN$=0;a.b6n=h;}break a;}c:{d:{if(!j){g=e.data.length;if(h>g)break d;}if(j<=0){l=e;break c;}Di(e,j,e,0,e.data.length-j|0);l=e;break c;}k=g*2|0;if(k<=h)h=k;l=BD(h);Di(e,0,l,0,g);a.bZi=l;l=a.bZi;}m=l.data;g=a.bN$-a.ccJ|0;a.bN$=g;a.b6n=0;a.ccJ=0;h=f.BK(l,g,m.length-g|0);a.b6n=h<=0?a.bN$:a.bN$+h| +0;}if(h==(-1))return i!=d?d-i|0:(-1);if(e!==a.bZi){e=a.bZi;if(e===null){f=new Dd;Bp(f,E(2120));J(f);}}k=DO(a.b6n-a.bN$|0,i);Di(e,a.bN$,b,c,k);a.bN$=a.bN$+k|0;}i=i-k|0;if(!i)break;if(!f.Cq())return d-i|0;c=c+k|0;}return d;}f=new Dd;Bp(f,E(2120));J(f);}return 0;}f=new EN;X(f);J(f);}f=new Dd;Bp(f,E(2120));J(f);}finally{G2(a);}}; +function Bk5(){ACs.call(this);this.b1G=null;} +let E2F=null,BvF=()=>{BvF=Z(Bk5);DBe();},CJ9=(a,b)=>{let c;BvF();c=BP3(b);if(c!==null){b=c;if(Clk(b)){a.b1G=BVx(b)===null?null:null;b=new A8u;X(b);J(b);}}b=new A8u;X(b);J(b);},DbS=a=>{let b=new Bk5();CJ9(b,a);return b;},EuV=(a,b,c,d)=>{let e,f;B$(b);if(c>=0&&d>=0&&c<=(b.data.length-d|0)){if(d){CIr(a);e=a.b1G.BK(b,c,d);if(e<=0)e=(-1);return e;}return 0;}f=new EN;X(f);J(f);},EDz=a=>{CIr(a);return DT(0,a.b1G.dV()-a.b1G.D7()|0);},Egw=a=>{let b;b=a.b1G;if(b!==null)b.tW();a.b1G=null;},CIr=a=>{let b;if(a.b1G===null) +{b=new Dd;Bp(b,E(2121));J(b);}},DBe=()=>{E2F=BD(1);}; +function C6F(){let a=this;F.call(a);a.b05=null;a.cjt=null;a.cmL=null;a.cON=null;a.c7n=null;a.ccW=null;a.clM=null;a.bYz=null;a.b41=null;a.b3B=null;a.b83=null;a.cqt=null;a.b3J=BH;a.bI3=0;a.b0H=0;a.bJN=0;a.bQi=0;a.cqC=0;a.cbi=0;a.bJj=0;a.ckS=0;a.cID=0;a.b7n=0;a.bZY=0;a.cd$=0;a.b$C=0;a.cIB=0;a.b9h=0;a.czS=0;a.bKH=0;a.b7O=0;a.ct7=0;a.cq1=0;a.cM7=0;a.crE=0;a.bPL=0;a.cjR=0;a.czU=0;a.cAE=0;a.cDR=0;a.cDQ=0;a.cwy=0;a.bVy=0;a.cxW=0;a.cWk=0;a.co$=0;a.cus=0;a.b4N=0;a.cd5=0;a.cFX=0;a.c3d=0;a.bRO=0;a.cjK=0;a.c7I=0;a.cEd=0;a.b1k +=0;a.bUb=0;a.b2y=0;a.ceg=null;} +let CsG=N(),C7h=null,C0g=null,CoV=null,Cd9=null,Da_=null,CkH=null,CI1=null,Dl8=null,Cim=null,CWB=null,C93=null,Ctm=null,Dj2=null,CDn=null,LH=()=>{LH=Z(CsG);D8K();},Dzg=(b,c)=>{let d;LH();if(!b.bI3){b.b41=Ca(6480);b.ceg=c;b.ccW=BD(4160);b.b3J=BH;b.clM=Ca(1040);b.bJN=64;b.bQi=1024;b.cbi=0;CJl(b);I9(b);if(!Il(b,1))d=16;else{d=Il(b,3);if(d)d=17+d|0;else{d=Il(b,3);d=!d?17:8+d|0;}}if(d!=9){d=1<{let c;LH();I9(b);if +(Il(b,1)){c=Il(b,3);if(c)return Il(b,c)+(1<{let c,d,e,f,g;LH();I9(b);c=Il(b,1);b.ckS=c;b.bJj=0;b.cID=0;b.b7n=0;if(c&&Il(b,1))return;a:{d=Il(b,2)+4|0;if(d==7){b.b7n=1;if(!Il(b,1)){c=Il(b,2);if(c){e=0;f=C5(c,1);while(true){if(e>=c)break a;I9(b);g=Il(b,8);if(!g&&(e+1|0)==c&&f>0)break;b.bJj=b.bJj|g<<(e*8|0);e=e+1|0;}b=new Lz;Bp(b,E(2124));J(b);}return;}b=new Lz;Bp(b,E(2125));J(b);}e=0;f=C5(d,4);while(true){if(e>=d)break a;I9(b);g=Il(b,4);if(!g&&(e+1|0)==d&&f>0)break;b.bJj=b.bJj +|g<<(e*4|0);e=e+1|0;}b=new Lz;Bp(b,E(2124));J(b);}b.bJj=b.bJj+1|0;if(!b.ckS)b.cID=Il(b,1);},AJv=(b,c,d)=>{let e,f,g;LH();b=b.data;e=AVx(d);c=c+(e&255)|0;f=b[c]>>16;g=b[c]&65535;if(f>8){c=(c+g|0)+((e&((1<>>8|0)|0;d.bJN=d.bJN+((b[c]>>16)+8|0)|0;return b[c]&65535;}d.bJN=d.bJN+f|0;return g;},Cqc=(b,c,d)=>{let e,f;LH();I9(d);e=AJv(b,c,d);f=Dl8.data[e];I9(d);return CI1.data[e]+Il(d,f)|0;},EIx=(b,c,d)=>{LH();if(b<16)return c.data[(d+C0g.data[b]|0)&3]+CoV.data[b]|0;return (b-16|0)+1|0;},BjX=(b,c,d,e)=>{let f, +g,h,i,j,k,l,m,n,o,p,q,r,s,t;LH();f=1;S5(e);g=Ca(b);I9(e);h=Il(e,2);if(h==1){i=b-1|0;j=0;k=Ca(4);l=Il(e,2)+1|0;while(i){i=i>>1;j=j+1|0;}k=k.data;m=g.data;h=0;while(h0){n=C7h.data[h];I9(e);o +=AVx(e)&15;s=e.bJN;k=Cd9.data;e.bJN=s+(k[o]>>16)|0;s=k[o]&65535;m[n]=s;if(s){q=q-(32>>s)|0;r=r+1|0;}h=h+1|0;}if(q&&r!=1)f=0;k=g.data;n=0;l=8;j=0;h=0;q=32768;t=Ca(32);m=t.data;CUd(t,0,5,p,18);e:{while(true){if(n>=b)break e;if(q<=0)break e;S5(e);I9(e);o=AVx(e)&31;e.bJN=e.bJN+(m[o]>>16)|0;s=m[o]&65535;o=C5(s,16);if(o<0){j=0;o=n+1|0;k[n]=s;if(!s)n=o;else{q=q-(32768>>s)|0;n=o;l=s;}}else{i=s-14|0;s=0;if(!o)s=l;if(h!=s)r=0;else{r=j;s=h;}o=r<=0?r:(r+(-2)|0)<b)break;h= +0;while(h{let e,f,g,h,i,j,k,l;LH();S5(d);e=Bdm(d)+1|0;if(e!=1){I9(d);f=Il(d,1);g=0;if(f)g=Il(d,4)+1|0;h=Ca(1080);BjX(e+g|0,h,0,d);i=0;a:while(true){if(i>=b){I9(d);if(Il(d,1)==1){j=Ca(256).data;k=0;while(k<256){j[k]=k;k=k+1|0;}i=0;while(i +>24;if(k){g=j[k];while(k>0){j[k]=j[k-1|0];k=k+(-1)|0;}j[0]=g;}i=i+1|0;}}return e;}S5(d);I9(d);k=AJv(h,0,d);if(!k){c.data[i]=0;i=i+1|0;}else if(k>g){c.data[i]=(k-g|0)<<24>>24;i=i+1|0;}else{I9(d);l=(1<=b)break a;c.data[i]=0;i=i+1|0;l=l+(-1)|0;}}}d=new Lz;Bp(d,E(2129));J(d);}i=0;ALm();while(i{let e,f,g,h;LH();e=b.bYz;f=4+(c*2|0)|0;I9(b);g=AJv(b.b41,c*1080|0,b);h=Cqc(b.b41, +(c+3|0)*1080|0,b);c=g==1?e.data[f+1|0]+1|0:g?g+(-2)|0:e.data[f];if(c>=d)c=c-d|0;e=e.data;d=f+1|0;e[f]=e[d];e[d]=c;return h;},CZJ=b=>{let c,d;LH();b.bZY=B7m(b,0,b.cd$);c=b.bYz.data[5];d=c<<6;b.czU=d;d=b.cmL.data[d]&255;b.cM7=d;b.crE=b.b3B.data[d];c=b.cjt.data[c]<<9;b.cDR=c;b.cDQ=c+256|0;},Efo=b=>{LH();b.b$C=B7m(b,1,b.cIB);b.cwy=b.b83.data[b.bYz.data[7]];},FpZ=b=>{LH();b.b9h=B7m(b,2,b.czS);b.cAE=b.bYz.data[9]<<2;},Dz$=b=>{let c,d,e,f,g,h,i;LH();if(!b.ckS){b.b3B=Ca(0);b.b83=Ca(0);b.cqt=Ca(0);S5(b);DxR(b);if(!b.bJj +&&!b.b7n)return;if(!b.cID&&!b.b7n)b.bI3=2;else{Cq0(b);b.bI3=!b.b7n?5:4;}if(!b.b7n){c=b.cjK+b.bJj|0;b.cjK=c;if(c>1073741824)b.cjK=1073741824;c=b.bRO;d=b.c3d;if(ce){f=d;while(true){g=f>>1;if(g<=e)break;f=g;}d=b.ckS?f:f>=16384?f:d>=16384?16384:f;}if(d>c){h=BD(d+37|0);i=b.b05;if(i.data.length)Di(i,0,h,0,c);b.b05=h;b.bRO=d;}}return;}return;}b.b0H=10;b.b2y=b.bKH;b.bUb=0;b.bI3=12;},B6e=(b,c,d)=>{let e;LH();if(d>1){BjX(d+2|0,b.b41,c*1080|0,b);e=b.b41;c=(c+3|0)*1080|0;BjX(26,e,c,b);return Cqc(b.b41, +c,b);}return 268435456;},FsB=b=>{let c,d,e,f,g,h,i;LH();c=Bdm(b)+1|0;b.cd$=c;b.bZY=B6e(b,0,c);c=Bdm(b)+1|0;b.cIB=c;b.b$C=B6e(b,1,c);c=Bdm(b)+1|0;b.czS=c;b.b9h=B6e(b,2,c);S5(b);I9(b);b.co$=Il(b,2);d=Il(b,4);e=b.co$;c=16+(d<=e)break;f=DO(d+96|0,e);while(d>24;d=d+1|0;}S5(b);}d=e<<6;g=BD(d);b.cmL=g;e=CXK(d,g,b);b.cq1=1;h=0;a:{while(true){if(h>=b.cd$<<6)break a;if(b.cmL.data[h]!=h>>6)break;h +=h+1|0;}b.cq1=0;}d=b.czS<<2;g=BD(d);b.cON=g;i=CXK(d,g,b);b.b3B=BSP(256,e,b);b.b83=BSP(704,b.cIB,b);b.cqt=BSP(c,i,b);b.czU=0;b.cAE=0;c=b.cjt.data[0]<<9;b.cDR=c;b.cDQ=c+256|0;b.cM7=0;b.crE=b.b3B.data[0];b.cwy=b.b83.data[0];g=b.bYz.data;g[4]=1;g[5]=0;g[6]=1;g[7]=0;g[8]=1;g[9]=0;},FmE=b=>{let c,d,e,f,g,h,i,j;LH();c=b.b05;d=b.bJj;if(d>0){d=DO(b.bRO-b.bKH|0,d);e=b.bKH;if(!(b.bJN&7)){f=d;while(b.bJN!=64&&f){g=c.data;h=e+1|0;g[e]=AVx(b)<<24>>24;b.bJN=b.bJN+8|0;f=f+(-1)|0;e=h;}a:{if(f){i=DO(BPE(b),f>>2);if(i>0){h=b.bQi +<<2;j=i<<2;Di(b.ccW,h,c,e,j);e=e+j|0;f=f-j|0;b.bQi=b.bQi+i|0;}if(f){if(BPE(b)<=0){while(true){if(f<=0)break a;h=CQ9(b.ceg,c,e,f);if(h==(-1))break;e=e+h|0;f=f-h|0;}b=new Lz;Bp(b,E(1760));J(b);}I9(b);while(f){g=c.data;j=e+1|0;g[e]=AVx(b)<<24>>24;b.bJN=b.bJN+8|0;f=f+(-1)|0;e=j;}BMz(b,0);}}}b.bJj=b.bJj-d|0;d=b.bKH+d|0;b.bKH=d;h=b.bRO;if(d==h){b.b0H=5;b.b2y=h;b.bUb=0;b.bI3=12;return;}CRS(b);b.bI3=1;return;}b=new Lz;Bp(b,E(2130));J(b);}CRS(b);b.bI3=1;},DWf=b=>{let c;LH();c=DO(b.cEd-b.b1k|0,b.b2y-b.bUb|0);if(c){Di(b.b05, +b.bUb,b.c7n,b.c7I+b.b1k|0,c);b.b1k=b.b1k+c|0;b.bUb=b.bUb+c|0;}if(b.b1k{let e,f,g,h;LH();e=Ca(c+(c*1080|0)|0);f=e.data;g=0;h=c;while(g{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,bd,be,bf;LH();c=b.bI3;if(c){if(c!=11){c=b.bRO-1|0;d=b.b05;a:{b:{c:while(true){e=b.bI3;f=C5(e,10);if(!f){if(!f){if(b.bJj>=0){Cq0(b);BMz(b,1);}else J(AXi(E(2131)));}return;}d:{e:{f:{g:{h:{i:{j:{k:{l:{switch(e){case 1:break k;case 2:break g;case 3:break f;case 4:break j;case 5:break;case 6:break e;case 7:break d;case 8:break l;case 9:break h;case 10:case 11:break a;case 12:break i;default:break a;}FmE(b);continue c;}BDH(d, +0,b.bRO,b.cd5);b.bI3=3;continue c;}if(b.bJj<0)J(AXi(E(2131)));Dz$(b);c=b.bRO-1|0;d=b.b05;continue c;}while(b.bJj>0){S5(b);I9(b);Il(b,8);b.bJj=b.bJj-1|0;}b.bI3=1;continue c;}if(!DWf(b))break c;e=b.bKH;f=b.cFX;if(e>=f)b.b7O=f;b.bKH=e&c;b.bI3=b.b0H;continue c;}e=b.b4N;if(e<4)break b;if(e>24)break b;g=Da_.data[e];h=(b.cus-b.b7O|0)-1|0;i=CkH.data[e];j=h&((1<>>i|0;e=g+Ev(j,e)|0;if(k>=121)J(AXi(E(2132)));l=DVn(d,b.cd5,Fff(),e,b.b4N,k);e=b.cd5+l|0;b.cd5=e;b.bKH=b.bKH+l|0;b.bJj=b.bJj-l|0;f=b.bRO;if(e>>6|0;b.bVy=0;if(n>=2){n=n+(-2)|0;b.bVy=(-1);}o=Dj2.data[n]+((m>>>3|0)&7)|0;I9(b);p=BMF(b,CWB.data[o]);b.cjR=Cim.data[o]+p|0;q=CDn.data[n]+(m&7)|0;I9(b);r=BMF(b,Ctm.data[q]);b.b4N=C93.data[q]+r|0;b.bPL=0;b.bI3=6;}m:{if(b.cq1){while(true){if(b.bPL>=b.cjR)break m;S5(b);if(!b.bZY)CZJ(b);s=d.data;b.bZY=b.bZY-1|0;I9(b);s[b.bKH]=AJv(b.b3B, +b.crE,b)<<24>>24;b.bPL=b.bPL+1|0;e=b.bKH;b.bKH=e+1|0;if(e!=c)continue;else break;}b.b0H=6;b.b2y=b.bRO;b.bUb=0;b.bI3=12;}else{t=d.data;e=b.bKH;f=t[(e-1|0)&c]&255;e=t[(e-2|0)&c]&255;while(true){if(b.bPL>=b.cjR)break m;S5(b);if(!b.bZY)CZJ(b);u=b.cmL.data;v=b.czU;Bx2();s=Dic.data;v=u[v+(s[b.cDR+f|0]|s[b.cDQ+e|0])|0]&255;b.bZY=b.bZY-1|0;I9(b);s=b.b3B;v=AJv(s,s.data[v],b);e=b.bKH;t[e]=v<<24>>24;b.bPL=b.bPL+1|0;b.bKH=e+1|0;if(e==c)break;e=f;f=v;}b.b0H=6;b.b2y=b.bRO;b.bUb=0;b.bI3=12;}}if(b.bI3!=6)continue c;e=b.bJj +-b.cjR|0;b.bJj=e;if(e<=0){b.bI3=3;continue c;}if(b.bVy<0){S5(b);if(!b.b9h)FpZ(b);b.b9h=b.b9h-1|0;I9(b);t=b.cqt;s=b.cON;f=b.cAE;v=b.b4N;e=v>4?3:v-2|0;s=s.data;e=AJv(t,t.data[s[f+e|0]&255],b);b.bVy=e;f=b.cxW;if(e>=f){e=e-f|0;b.bVy=e;w=e&b.cWk;e=e>>>b.co$|0;b.bVy=e;x=(e>>>1|0)+1|0;g=((2+(e&1)|0)< +b.b7O){b.bI3=9;continue c;}if(b.bVy>0){t=b.bYz.data;f=b.ct7;t[f&3]=e;b.ct7=f+1|0;}if(b.b4N>b.bJj)J(AXi(E(2132)));b.bPL=0;b.bI3=7;}p:{z=b.bKH;e=b.cus;ba=(z-e|0)&c;f=b.b4N;bb=f-b.bPL|0;bc=ba+bb|0;bd=z+bb|0;if(!(bc=f)break p;t=d.data;w=b.bKH;t[w]=t[(w-e|0)&c];b.bJj=b.bJj-1|0;b.bPL=v+1|0;b.bKH=w+1|0;if(w!=c)continue;else break;}b.b0H=7;b.b2y=b.bRO;b.bUb=0;b.bI3=12;}else{if(bb>=12&&!(bc>z&&bd>ba))BDH(d,z,ba,bc);else{be=0;while(be{C7h=Ey([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]);C0g=Ey([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]);CoV=Ey([0,0,0,0,(-1),1,(-2),2,(-3),3,(-1),1,(-2),2,(-3),3]);Cd9=Ey([131072,131076,131075,196610,131072,131076,131075,262145,131072,131076,131075,196610,131072,131076,131075,262149]);Da_=Ey([0, +0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]);CkH=Ey([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]);CI1=Ey([1,5,9,13,17,25,33,41,49,65,81,97,113,145,177,209,241,305,369,497,753,1265,2289,4337,8433,16625]);Dl8=Ey([2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,7,8,9,10,11,12,13,24]);Cim=Ey([0,1,2,3,4,5,6,8,10,14,18,26,34,50,66,98,130,194,322,578,1090,2114,6210,22594]);CWB=Ey([0,0,0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,7,8, +9,10,12,14,24]);C93=Ey([2,3,4,5,6,7,8,9,10,12,14,18,22,30,38,54,70,102,134,198,326,582,1094,2118]);Ctm=Ey([0,0,0,0,0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9,10,24]);Dj2=Ey([0,0,8,8,0,16,8,16,16]);CDn=Ey([0,8,0,8,16,0,16,8,16]);},Lz=N(DR),Df9=(a,b)=>{Bp(a,b);},AXi=a=>{let b=new Lz();Df9(b,a);return b;},A8u=N(Dd),DKD=N(),S5=b=>{let c,d,e,f,g,h,i,j;c=b.bQi;if(c>1015){if(!b.cbi){c=c<<2;d=4096-c|0;BDH(b.ccW,0,c,4096);b.bQi=0;a:{b:{while(d<4096){e=4096-d|0;e=CQ9(b.ceg,b.ccW,d,e);if(e<=0)break b;d=d+e|0;}break a;}b.cbi= +1;b.cqC=d;d=d+3|0;}f=b.ccW;e=d>>2;g=b.clM;d=0;while(d{if(b.cbi){if((((b.bQi<<2)+((b.bJN+7|0)>>3)|0)-8|0)>b.cqC){b=new Lz;Bp(b,E(2138));J(b);}return;}},I9=b=>{let c,d,e;c=b.bJN;if(c>=32){d=b.clM.data;e=b.bQi;b.bQi=e+1|0;b.b3J=Gu(EU(V(d[e]),32),GD(b.b3J,32));b.bJN=c-32|0;}},Dhq=b=>{let c,d;c=b.clM.data;d=b.bQi;b.bQi=d+1|0;b.b3J=Gu(EU(V(c[d]), +32),GD(b.b3J,32));b.bJN=b.bJN-32|0;},AVx=b=>{return Cp(GD(b.b3J,b.bJN));},Il=(b,c)=>{let d;d=AVx(b)&((1<{return Il(b,c);},CJl=b=>{S5(b);BMz(b,0);Dhq(b);Dhq(b);},CRS=b=>{if(b.bJN==64)CJl(b);}; +let Cq0=b=>{let c,d;c=(64-b.bJN|0)&7;if(c&&Il(b,c)){d=new Lz;Bp(d,E(2139));J(d);}},BPE=b=>{let c;c=1024;if(b.cbi)c=(b.cqC+3|0)>>2;return c-b.bQi|0;},Ccg=N(),CWW=null,CgQ=null,ALm=()=>{ALm=Z(Ccg);FjO();},BDH=(b,c,d,e)=>{ALm();Di(b,d,b,c,e-d|0);},CQ9=(b,c,d,e)=>{let f,$$je;ALm();try{d=b.BK(c,d,e);}catch($$e){$$je=P($$e);if($$je instanceof Dd){f=$$je;b=new Lz;ABa(b,E(2140),f);J(b);}else{throw $$e;}}return d;},FjO=()=>{CWW=BD(1024);CgQ=Ca(1024);}; +function BIa(){let a=this;F.call(a);a.cL1=null;a.cGn=null;a.cph=null;} +let BT3=null,BcL=null,BpM=null,A7o=()=>{A7o=Z(BIa);ET0();},D8R=(a,b,c,d)=>{A7o();a.cL1=b;a.cGn=c;a.cph=d;},Dhy=(a,b,c)=>{let d=new BIa();D8R(d,a,b,c);return d;},C7z=a=>{let b;b=new CwM;b.cx8=a;return b;},Csl=a=>{let b;b=new CwN;b.cgr=a;return b;},Cbs=(a,b)=>{let c,d,e;c=BY9(C7z(a),b);d=DgP(Csl(a),b);e=c.bGF+d.bGF;return Cl(BC(c.bGE,d.bGE)+30.0+5.0,e+15.0);},ET0=()=>{BT3=U9(BkS(10));BcL=U9(We(14));BpM=A69(U9(We(14)));},Cvq=N(AEa),GZ=a=>{B46(a);return a.b1s;}; +function AGP(){let a=this;F.call(a);a.chP=0;a.cin=0;a.b$L=null;a.bXU=null;a.cIr=null;a.b7p=null;} +let Bti=(a,b)=>{a.b7p=b;a.cin=b.bMd;a.b$L=null;},FzE=a=>{let b=new AGP();Bti(b,a);return b;},TS=a=>{let b,c;if(a.b$L===null){while(true){b=a.chP;c=a.b7p.bJV.data;if(b>=c.length)break;if(c[b]!==null)return 1;a.chP=b+1|0;}return 0;}return 1;},C03=a=>{let b;if(a.cin!=a.b7p.bMd){b=new Nr;X(b);J(b);}},BII=a=>{let b,c,d,e;C03(a);if(TS(a)){b=a.b$L;if(b!==null){c=a.bXU;if(c!==null)a.cIr=c;a.bXU=b;a.b$L=b.bKN;}else{d=a.b7p.bJV.data;e=a.chP;a.chP=e+1|0;b=d[e];a.bXU=b;a.b$L=b.bKN;a.cIr=null;}return;}b=new Kx;X(b);J(b);},D8h +=a=>{let b,c,d,e,f;C03(a);b=a.bXU;if(b!==null){c=a.cIr;if(c!==null)c.bKN=b.bKN;else{d=b.b50;e=a.b7p.bJV.data;f=d&(e.length-1|0);e[f]=e[f].bKN;}a.bXU=null;a.cin=a.cin+1|0;b=a.b7p;b.bMd=b.bMd+1|0;b.bHv=b.bHv-1|0;return;}b=new BP;X(b);J(b);},CUQ=N(AGP),U6=a=>{BII(a);return a.bXU;},CSZ=N(0); +function WP(){let a=this;F.call(a);a.cm9=null;a.cDz=0.0;a.cz2=null;a.cos=null;} +let ACP=(a,b,c)=>{Cvl(a,b,c,1.0);},Ex3=(a,b)=>{let c=new WP();ACP(c,a,b);return c;},Cvl=(a,b,c,d)=>{a.cos=null;a.cm9=b;a.cDz=d;a.cz2=B$(c);},Ehn=(a,b,c)=>{let d=new WP();Cvl(d,a,b,c);return d;},Cq6=(a,b)=>{return Ehn(a.cm9,a.cz2,a.cDz*b);},BW2=a=>{let b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y;b=a.cDz;if(b!==1.0){if(a.cos===null){a:{b:{c=a.cm9;switch(a.cz2.bGO){case 0:d=1;break a;case 1:break b;default:}c=new C4;X(c);J(c);}d=2;}e=c;f=Cp((AGn(e.bNs*b)));g=Cp((AGn(e.bOO*b)));if(!(f>0&&g>0))c=CmP(1,1,e.cau);else +{h=Ev(f,g);i=Ca(h);if(d!=2){j=i.data;k=e.b0e;l=e.bNs;m=e.bOO;n=0;while(n{WL=Z(AZt);FcW();},DYx=(a,b,c)=>{WL();Ct(a,b,c);},Ciu=(a,b)=>{let c=new AZt();DYx(c,a,b);return c;},FcW=()=>{let b,c,d;Bcn=Ciu(E(2141),0);b=Ciu(E(2142),1);YW=b;c=K(AZt,2);d=c.data;d[0]=Bcn;d[1]=b;EKp=c;},C_Z=N(0); +function CN0(){F.call(this);this.ccG=null;} +let E2t=(a,b)=>{a.ccG=b;},CJ2=a=>{let b=new CN0();E2t(b,a);return b;},Bq$=(a,b,c)=>{a.ccG.setAttribute(Cq(b),Cq(c));},B7v=N(),DDq=N(B7v),Dpo=N(),CK_=null,DaP=null,AP_=()=>{AP_=Z(Dpo);FuZ();},DOx=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba;AP_();d=b.bHG;e=b.bHZ;f=b.bHc;if(d){g=((e*10|0)+1|0)+7|0;h=Fd(g+1|0);if(e==1){i=f.data[0];if(i>=0){j=g;while(true){f=h.data;k=i/10|0;j=j+(-1)|0;f[j]=(48+(i-(k*10|0)|0)|0)&65535;if(!k)break;i=k;}}else{l=CN(V(i),O(4294967295, 0));j=g;while(true){f=h.data;m=CY(l, +V(10));j=j+(-1)|0;f[j]=(48+Cp(CE(l,CT(m,V(10))))|0)&65535;if(DS(m,BH))break;l=m;}}}else{n=h.data;o=Ca(e);p=o.data;Di(f,0,o,0,e);q=g;a:while(true){r=BH;s=e-1|0;j=s;while(j>=0){t=Ee3(BU(EU(r,32),CN(V(p[j]),O(4294967295, 0))));p[j]=Cp(t);r=V(Sm(t));j=j+(-1)|0;}u=Cp(r);j=q;while(true){j=j+(-1)|0;n[j]=(48+(u%10|0)|0)&65535;u=u/10|0;if(!u)break;if(!j)break;}v=(9-q|0)+j|0;w=0;while(w0){j=j+(-1)|0;n[j]=48;w=w+1|0;}while(!p[s]){if(!s)break a;s=s+(-1)|0;}e=s+1|0;q=j;}while(n[j]==48){j=j+1|0;}}q=d>=0?0:1;d=g-j|0;x +=(d-c|0)-1|0;if(c){if(c>0&&x>=(-6)){if(x>=0){f=h.data;y=j+x|0;s=g-1|0;while(s>=y){f[s+1|0]=f[s];s=s+(-1)|0;}f[y+1|0]=46;if(q){j=j+(-1)|0;f[j]=45;}return QV(h,j,(g-j|0)+1|0);}f=h.data;s=2;c=( -x|0)+1|0;while(s0)Bb(ba,43);L(ba,W7(x));return Q(ba);}if(q) +{f=h.data;j=j+(-1)|0;f[j]=45;}return QV(h,j,g-j|0);}switch(c){case 0:break;case 1:return E(2143);case 2:return E(2144);case 3:return E(2145);case 4:return E(2146);case 5:return E(2147);case 6:return E(2148);default:ba=new S;T(ba);if(c>=0)L(ba,E(2149));else L(ba,E(2150));BE(ba, -c|0);return Q(ba);}return E(35);},Ee3=b=>{let c,d,e;AP_();if(FE(b,BH)){c=CY(b,V(1000000000));d=Fl(b,V(1000000000));}else{e=GD(b,1);c=CY(e,V(500000000));d=BU(EU(Fl(e,V(500000000)),1),CN(b,V(1)));}return Gu(EU(d,32),CN(c,O(4294967295, 0)));},FuZ +=()=>{CK_=Ey([(-1),(-1),31,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5]);DaP=Ey([(-2147483648),1162261467,1073741824,1220703125,362797056,1977326743,1073741824,387420489,1000000000,214358881,429981696,815730721,1475789056,170859375,268435456,410338673,612220032,893871739,1280000000,1801088541,113379904,148035889,191102976,244140625,308915776,387420489,481890304,594823321,729000000,887503681,1073741824,1291467969,1544804416,1838265625,60466176]);}; +function C1w(){F.call(this);this.cLC=null;} +let DIL=(a,b,c,d)=>{let e,f,g,$$je;try{e=a.cLC.fZ(b,c,d);}catch($$e){$$je=P($$e);if($$je instanceof Gt){f=$$je;b=BY(f);c=new S;T(c);H(H(c,E(616)),b);AJZ(Q(c));GP(f);if(BCa)g=E(2151);else{b=new S;T(b);Bb(H(H(b,E(2152)),E(63)),41);g=Q(b);}AJZ(g);b=AC1(f);c=new S;T(c);d=H(c,g);Bb(d,32);H(d,b);return ASC(Q(c),f);}else{throw $$e;}}return e;}; +function BI5(){let a=this;F.call(a);a.cfn=null;a.ch8=null;} +let A6A=null,Hl=null,ALr=null,Dpk=null,F_=()=>{F_=Z(BI5);DBX();},Fg0=(a,b,c)=>{F_();a.cfn=b;a.ch8=c;},BnG=(a,b)=>{let c=new BI5();Fg0(c,a,b);return c;},ANH=(a,b)=>{let c,d,e;F_();if(a!==Hl){if(Eq(b,60)>=0){b=D3(Dpk,b);c=AH8(a.cfn);d=AH8(a.ch8);e=new S;T(e);H(H(H(e,c),E(1772)),d);return UQ(b,Q(e));}return b;}return b;},DBX=()=>{A6A=BnG(E(14),E(14));Hl=BnG(E(1775),E(1776));ALr=BnG(E(2153),E(2154));Dpk=Dp(E(1879));}; +function Kc(){let a=this;Bx.call(a);a.cKc=0;a.c7p=null;a.cb$=null;} +let AFk=null,BbC=null,BIn=null,Bom=null,B3h=null,BD9=null,BlT=null,BPB=null,ACf=null,ADy=null,BEv=null,BRJ=null,BYT=null,Blk=null,Bsa=null,Bvx=null,Bzf=null,BTu=null,BQn=null,AX0=null,BcK=null,A52=null,BgX=null,A9t=null,Bsd=null,A1E=null,BjU=null,Bwg=null,Bzh=null,Bxh=null,BnI=null,Byi=null,BoF=null,ByQ=null,BwZ=null,Btl=null,Bn5=null,B1Z=null,B7n=null,B5S=null,B4f=null,D87=null,JN=()=>{JN=Z(Kc);ELg();},EI8=(a,b,c,d,e)=>{JN();BzD(a,b,c,d,0,e);},Pi=(a,b,c,d)=>{let e=new Kc();EI8(e,a,b,c,d);return e;},DvO=(a, +b,c,d)=>{JN();BzD(a,b,c,d,0,null);},On=(a,b,c)=>{let d=new Kc();DvO(d,a,b,c);return d;},BzD=(a,b,c,d,e,f)=>{JN();Ct(a,b,c);a.cKc=e;a.c7p=d;a.cb$=f;CM();if(f===C6&&!e){Ct3(Fm(),a);b=new BP;X(b);J(b);}},AJH=(a,b,c,d,e)=>{let f=new Kc();BzD(f,a,b,c,d,e);return f;},ENC=()=>{let b,c;JN();b=K(Kc,41);c=b.data;c[0]=AFk;c[1]=BbC;c[2]=BIn;c[3]=Bom;c[4]=B3h;c[5]=BD9;c[6]=BlT;c[7]=BPB;c[8]=ACf;c[9]=ADy;c[10]=BEv;c[11]=BRJ;c[12]=BYT;c[13]=Blk;c[14]=Bsa;c[15]=Bvx;c[16]=Bzf;c[17]=BTu;c[18]=BQn;c[19]=AX0;c[20]=BcK;c[21]=A52;c[22] +=BgX;c[23]=A9t;c[24]=Bsd;c[25]=A1E;c[26]=BjU;c[27]=Bwg;c[28]=Bzh;c[29]=Bxh;c[30]=BnI;c[31]=Byi;c[32]=BoF;c[33]=ByQ;c[34]=BwZ;c[35]=Btl;c[36]=Bn5;c[37]=B1Z;c[38]=B7n;c[39]=B5S;c[40]=B4f;return b;}; +let ELg=()=>{let b,c;b=new Kc;Go();c=K8;CM();BzD(b,E(334),0,c,1,C6);AFk=b;BbC=On(E(2155),1,ASV);BIn=AJH(E(2156),2,BbH,1,C6);Bom=Pi(E(2157),3,YS,E1);B3h=AJH(E(2158),4,BbH,1,C6);BD9=Pi(E(2159),5,YS,E1);BlT=Pi(E(2160),6,YS,null);BPB=Pi(E(2161),7,YS,E1);ACf=AJH(E(2162),8,ChS,1,C6);ADy=Pi(E(2163),9,YS,E1);BEv=Pi(E(2164),10,null,E1);BRJ=AJH(E(2165),11,BbH,1,C6);BYT=Pi(E(2166),12,YS,E1);Blk=AJH(E(2167),13,AU8,1,C6);Bsa=AJH(E(2168),14,Cfm,1,C6);Bvx=AJH(E(2169),15,K8,1,C6);Bzf=Pi(E(2170),16,YS,E1);BTu=Pi(E(2171),17, +Hu,E1);BQn=Pi(E(2172),18,YS,E1);AX0=On(E(2173),19,C22);BcK=On(E(2174),20,C6N);A52=On(E(2175),21,CfM);BgX=On(E(2176),22,CEl);A9t=On(E(2177),23,CrW);Bsd=On(E(2178),24,CSQ);A1E=On(E(2179),25,CT$);BjU=On(E(2180),26,CBu);Bwg=On(E(2181),27,Hu);Bzh=On(E(2182),28,K8);Bxh=On(E(2183),29,K8);BnI=Pi(E(2184),30,Hu,E1);Byi=On(E(2185),31,K8);BoF=Pi(E(2186),32,Hu,E1);ByQ=On(E(2187),33,K8);BwZ=Pi(E(2188),34,Hu,E1);Btl=On(E(2189),35,K8);Bn5=Pi(E(2190),36,Hu,E1);B1Z=On(E(2191),37,K8);B7n=Pi(E(2192),38,Hu,E1);B5S=On(E(2193),39, +K8);B4f=Pi(E(2194),40,Hu,E1);D87=ENC();},ALI=N(BV),Bgg=N(DR),Cwm=N(DR),ChF=N(DR); +function Dfm(){AMA.call(this);this.cTb=0;} +let ExT=a=>{let b,c;b=a.cTb;c=new S;T(c);BE(H(c,E(2195)),b);return Q(c);}; +function Dat(){AMA.call(this);this.c1r=0;} +let E6a=a=>{let b,c;b=a.c1r;c=new S;T(c);BE(H(c,E(2196)),b);return Q(c);}; +function CWV(){let a=this;F.call(a);a.cte=0;a.cRE=null;} +let Bjc=a=>{let b,c;b=a.cRE;c=a.cte;a.cte=c+1|0;return CU(b,c);},Cxq=N(),COU=null,Dfj=null,Bhc=null,BJ_=null,ANm=()=>{ANm=Z(Cxq);Eoc();},CEC=(b,c)=>{let d,e,f,g,h;ANm();d=b.data;e=d.length;f=(e/4|0)*3|0;g=e%4|0;if(!(g!=2&&g!=3))f=f+(g-1|0)|0;h=e-1|0;while(h>=0&&d[h]==61){f=f+(-1)|0;h=h+(-1)|0;}d=BD(f);Feh(b,d,c);return d;},Feh=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p;ANm();b=b.data;e=b.length;f=e-1|0;while(f>=0&&b[f]==61){e=e+(-1)|0;f=f+(-1)|0;}g=(e/4|0)*4|0;h=0;i=0;while(h>>16|0)<<24>>24;k=f+1|0;j[f]=(o>>>8|0)<<24>>24;i=k+1|0;j[k]=o<<24>>24;}p=e-h|0;if(p==2)c.data[i]=(ADQ(d,b[h])<<2|(ADQ(d,b[h+1|0])>>>4|0))<<24>>24;else if(p==3){c=c.data;k=ADQ(d,b[h]);l=ADQ(d,b[h+1|0]);h=ADQ(d,b[h+2|0]);c[i]=(k<<2|(l>>>4|0))<<24>>24;c[i+1|0]=(l<<4|(h>>>2|0))<<24>>24;}},ADQ=(b,c)=>{ANm();return b.data[c];},Eoc=()=>{let b,c,d,e,f,g;b=BD(64);c=b.data;COU=b;b=BD(64);d=b.data;Dfj=b;b=Ca(256);Bhc=b;BJ_ +=Ca(256);e=0;f=65;while(f<=90){g=f<<24>>24;c[e]=g;d[e]=g;e=e+1|0;f=(f+1|0)&65535;}f=97;while(f<=122){g=f<<24>>24;c[e]=g;d[e]=g;e=e+1|0;f=(f+1|0)&65535;}g=48;while(g<=57){f=g<<24>>24;c[e]=f;d[e]=f;e=e+1|0;g=(g+1|0)&65535;}c[e]=43;d[e]=45;e=e+1|0;c[e]=47;d[e]=95;Wm(b,(-1));Wm(BJ_,(-1));g=0;while(true){b=COU.data;if(g>=b.length)break;Bhc.data[b[g]]=g;BJ_.data[Dfj.data[g]]=g;g=g+1|0;}}; +function C7q(){let a=this;F.call(a);a.cZX=null;a.bWv=null;a.cpc=0;a.b9M=0;} +let A5t=a=>{return a.bWv.qq()>=a.b9M?0:1;},A18=a=>{let b;if(a.bWv.qq()>=a.b9M){b=new Kx;X(b);J(b);}return a.bWv.dZ();},DUL=a=>{return a.bWv.qq()-a.cpc|0;},EWf=a=>{let b;if(a.bWv.EO(){let b,c;b=a.bWv.EO();c=a.cpc;if(b>=c)return b-c|0;return (-1);},Ft4=a=>{a.bWv.ey();Dvp(a.cZX,0);a.b9M=a.b9M-1|0;}; +function B0I(){let a=this;F.call(a);a.ctK=null;a.cyp=null;a.c5P=0;} +let Eae=(a,b,c)=>{a.ctK=b;a.cyp=c;a.c5P=ME(BB(F,[b,c]));},Cho=(a,b)=>{let c=new B0I();Eae(c,a,b);return c;},DvS=a=>{return a.c5P;},Ffw=(a,b)=>{let c;if(a!==b){if(b instanceof B0I){c=b;return !(ClQ(a.ctK,c.ctK)&&Bj(a.cyp,c.cyp))?0:1;}return 0;}return 1;}; +function Ckt(){let a=this;F.call(a);a.c9E=null;a.cO$=null;a.cO_=null;} +let FiZ=(a,b)=>{let c,d,e,f,g,h;b=a.cO$;c=a.cO_;d=Bvp(b,null,null);e=b.bPf;b=!BAI(b.bOg)?E(72):E(350);f=(AQW(BJg(Cq(c),Cq(d),e,Cq(b)))).data[0];g=(AQW(D6D(Cq(c),Cq(d),e))).data[1];if(g===0.0&&!CQ(c)){h=(AQW(CUx(Cq(c),Cq(d),e,Cq(b)))).data;g=h[3]+h[4];}return Cl(f,g);}; +function DsW(){let a=this;AJ7.call(a);a.b8g=null;a.cl$=0;} +let Eo6=(a,b)=>{B3C(a);if(b===null){b=new F2;X(b);J(b);}a.b8g=b;},BId=a=>{let b=new DsW();Eo6(b,a);return b;},B_2=(a,b,c,d)=>{let e,f,g,h,i;DsF(a);if(a.cl${DsF(a);return 1;},BYY=a=>{a.b8g=null;},DsF=a=>{let b;if(a.b8g===null){b=new Dd;X(b);J(b);}}; +function Cr$(){let a=this;F.call(a);a.czm=0;a.clx=0;a.cfW=0;a.c_F=0;a.b3m=null;a.cjO=0;a.cSc=0;a.cJV=0;} +let D_$=(a,b,c)=>{let d,$$je;a.czm=0;a.cfW=(-1);a.c_F=0;if(b>=(-1)&&b<=9){a.cfW=b;a:{b:{try{a.b3m=E1$(b,c);break a;}catch($$e){$$je=P($$e);if($$je instanceof A$n){break b;}else{throw $$e;}}}}a.cJV=c;return;}d=new Bt;X(d);J(d);},Cs$=(a,b)=>{let c=new Cr$();D_$(c,a,b);return c;},BC5=(a,b)=>{let c,d,e,f,g,h,i;c=b.data.length;d=a.czm;e=a.b3m;if(e!==null){if(0<=c&&c>=0&&(c-0|0)>=c){f=e.bG2;g=e.bOW;Cv6(e,b,0,c);h=a.b3m;e=h.b6m;if(e===null)c=(-2);else{c=EMi(e,d);if(c==1)h.cv0=1;}a:{b:{switch(c){case 0:break;case 1:a.clx +=1;break a;default:break b;}break a;}e=new DR;h=new S;T(h);BE(H(h,E(2197)),c);Bp(e,Q(h));J(e);}i=V(a.cjO);e=a.b3m;a.cjO=Cp(BU(i,CE(e.bG2,f)));return Cp(CE(e.bOW,g));}e=new TB;X(e);J(e);}e=new BP;X(e);J(e);},DcT=a=>{a.czm=4;},BSV=a=>{return a.cjO!=a.cSc?0:1;},BKE=(a,b,c,d)=>{let e,f;e=a.b3m;if(e!==null){f=b.data.length;if(c<=f&&d>=0&&c>=0&&(f-c|0)>=d){a.cSc=d;a.cjO=0;if(e.bIr===null)DfI(e,a.cfW,15,a.cJV);CF4(a.b3m,b,c,d,0);return;}e=new TB;X(e);J(e);}e=new BP;X(e);J(e);}; +function CEv(){let a=this;AP1.call(a);a.b6j=null;a.bTM=null;a.cFs=0;} +let Etp=a=>{let b,c,d;b=a.bTM;if(!b.clx&&!a.cFs){DcT(b);while(true){b=a.bTM;if(b.clx)break;if(BSV(b))BKE(a.bTM,a.b6j,0,0);c=BC5(a.bTM,a.b6j);b=a.cvK;d=a.b6j;AY$(b,d,0,c);}a.cFs=1;}a.bTM.b3m=null;},Fit=(a,b,c,d)=>{let e,f;if(!a.cFs){e=b.data.length;if(c<=e&&d>=0&&c>=0&&(e-c|0)>=d){if(BSV(a.bTM)){BKE(a.bTM,b,c,d);while(true){d=BC5(a.bTM,a.b6j);f=a.cvK;b=a.b6j;AY$(f,b,0,d);if(!BSV(a.bTM))continue;else break;}return;}f=new Dd;X(f);J(f);}f=new TB;X(f);J(f);}f=new Dd;X(f);J(f);},EmN=N(); +function CrD(){Pn.call(this);this.cHx=null;} +let DHb=(a,b,c)=>{let d,e,f,g;d=Ls(a.cHx);e=U9(Cgm(14));f=a.b4w;c=AKY();F8();g=Cqe(f,c,Ua,ACU(),a.bUc.bWf);B3();c=CF;Ed();f=S0(ARN(g,e,c,FR),d);c=new ACw;Jo();AP8(c,f,JJ,ACx());return c;},BKT=N(),BjM=null,DkK=null,AD8=()=>{AD8=Z(BKT);ERv();},Bgi=b=>{let c,d,e,$$je;AD8();try{if(Fvi(BjM)>=30)Djf(BjM);c=BjM;d=EhX();b=ESt(B4e(c,b,d));}catch($$e){$$je=P($$e);if($$je instanceof DR){d=$$je;e=d.B6();if(!(e instanceof Dd)){if(e instanceof Ld)J(e);J(d);}J(e);}else{throw $$e;}}return b;},AL6=(b,c)=>{let d,e,f,g,h,i;AD8();if +(Dq(b)){a:{Bap();if(!Dq(b))d=CSb(E9(),Bk());else{e=new B1J;d=CMR(b,1);e.ceF=E9();e.bUw=U1();e.crk=Bk();e.bHs=d;b:{while(true){AV_(e);f=Da(e.bHs,0);if(!f){while(!RL(e.bUw)){CQ1(e);}d=CSb(e.ceF,e.crk);break a;}if(f==125){Dx(e.bHs);CQ1(e);}else if(f==64){Dx(e.bHs);b=new S;T(b);while(true){f=Da(e.bHs,0);if(!f)break b;if(f==125)break b;if(f==59)break b;if(f==123)break;Bb(b,f);Dx(e.bHs);}Dx(e.bHs);d=e.bUw;b=Dk(Q(b));g=CnA(Gi(),0,b);EY(d,g);}else if(f==58){Dx(e.bHs);DrX(e,BGU(e));}else{d=BGU(e);if(!d.bGI.length){b +=new Ld;f=Da(e.bHs,0);c=new S;T(c);e=H(c,E(2198));Bb(e,f);Bb(e,39);Bp(b,Q(c));J(b);}if(BO(d,E(658))){b=Ccv(e);g=e.ceF;d=CC(d,2);b=CcE(e,b);Es(g,d,b);}else{AV_(e);f=Da(e.bHs,0);if(!(f!=44&&f!=42&&f!=123))DrX(e,d);else{if(RL(e.bUw))break;b=Ccv(e);BeF();B9();h=(Crr.b2()).data;f=h.length;i=0;c:{d:{while(true){if(i>=f)break d;g=h[i];if(BG(g.bHx,d))break;i=i+1|0;}break c;}g=null;}if(g!==null){d=JX(e.bUw);b=CcE(e,b);Es(d.ckq,g,b);}}}}}c=new Ld;e=new S;T(e);H(H(H(e,E(2199)),d),E(2200));Bp(c,Q(e));J(c);}c=new Ld;b=BY(b);e +=new S;T(e);Bb(H(H(e,E(2201)),b),39);Bp(c,Q(e));J(c);}}g=B00(0);e=Br(d.cRY);while(Bq(e)){b=Bm(e);if(!BIo(b)){Cs2(g,b,c,0);continue;}d=Br(b.cb9);while(Bq(d)){Cs2(g,Bm(d),c,1);}}b=Bk();BFH(g,CfR(),b);return b;}return Gi();},DKh=b=>{let c,d,e,f;AD8();c=B0p();d=AL6(Bxc(A0A(CyR(CxJ(),E(2202))),BBk(b,null)),c);if(!d.j()){b=d.dX();while(b.dY()){e=b.dZ();if(e.bNc.bKx.bOH){b=new Bt;X(b);J(b);}f=c.bTZ;d=ANg(f.b1e.dV()+1|0);f=f.b1e;Ea(d,f);Da4(d,e);c.bTZ=B1X(d);Djf(c.cBd);}return c;}c=new Ld;f=new S;T(f);H(H(f,E(2203)), +b);Bp(c,Q(f));J(c);},Cr4=b=>{let c,d,e,f,g,h;AD8();if(b===null)c=null;else{B8();c=B0(b,BZG);}d=Bk();e=DkK.data;f=e.length;g=0;while(g{let b,c;BjM=AOG();b=K(RY,8);c=b.data;B9();c[0]=Vc;c[1]=Ov;c[2]=V0;c[3]=Lv;c[4]=Cz;c[5]=H1;c[6]=CK;c[7]=Xs;DkK=b;},LI=N(DR); +function Ddq(){let a=this;F.call(a);a.b2Q=null;a.bLS=null;} +let Ul=a=>{let b;b=a.bLS;return Be(b,b.bGJ-1|0);},A8F=a=>{let b,c,d,e;b=a.bLS;c=b.bGJ;if(c>=2){b=Be(b,c-2|0);d=b.bLC;Op();if(d===Rb){b=CPy(b,Clf(b)-1|0);e=a.bLS;return b!==Be(e,e.bGJ-1|0)?0:1;}return 0;}return 0;},Bot=(a,b,c)=>{AVU(Ul(a),b,Bj6(c));},Fsb=(a,b,c)=>{AVU(Ul(a),b,C7D(c));},E8E=(a,b)=>{let c;c=ACm();AVU(Ul(a),b,c);U(a.bLS,c);},Er6=(a,b)=>{let c;if(A8F(a)){c=a.bLS;EJ(c,c.bGJ-1|0);}AWS(Ul(a),Bj6(b));},E_3=(a,b,c)=>{let d,e;if(A8F(a)){d=a.bLS;EJ(d,d.bGJ-1|0);}e=ACm();AWS(Ul(a),e);U(a.bLS,e);AVU(Ul(a), +b,Bj6(c));},Fqk=(a,b,c)=>{let d,e;if(A8F(a)){d=a.bLS;EJ(d,d.bGJ-1|0);}e=ACm();AWS(Ul(a),e);U(a.bLS,e);AVU(Ul(a),b,C7D(c));},DK5=N(); +function AML(){let a=this;F.call(a);a.cc4=0;a.b6J=null;a.cHf=null;a.cZ2=null;a.c4M=0;a.bQR=null;} +let Br4=b=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;c=0;b=Ih(b,E(401),E(2204));while(c=d.bGI.length)break d;e=Bn(d,i);if(h){if(e +==h)h=0;}else if(!(e!=34&&e!=39))h=e;else if(e==58)break;i=i+1|0;}break c;}i=(-1);}if(i!=(-1)){j=Dk(B_(d,0,i));k=Dk(CC(d,i+1|0));Qo();l=AMY;if(CQ(k))l=APy;else if(Bj(k,E(2054)))l=A0C;else if(Bj(k,E(372)))l=Btk;else if(BO(k,E(842))&&Dr(k,E(843))){l=new AML;m=AFZ;j=A1U(j);b=null;k=B_(k,1,k.bGI.length-1|0);n=Bk();o=new S;T(o);e=0;i=0;g=0;while(g=k.bGI.length)q=g;else Bb(o,Bn(k,q));}}else if(!i&&CQ(Dk(CH(o)))&&!(p!=39 +&&p!=34)){i=1;B62(o,0);q=g;e=p;}else if(p!=44){if(p!=92){Et(o,p);q=g;}else{q=g+1|0;if(q>=GB(k))q=g;else Et(o,Bn(k,q));}}else{r=i?CH(o):Dk(CH(o));U(n,r);B62(o,0);i=0;q=g;}g=q+1|0;}k=i?CH(o):Dk(CH(o));U(n,k);AQA(l,m,c,j,b,n,f);return l;}return D78(l,c,A1U(j),A1U(k),null,f);}if(!f){b=new AML;Qo();AQA(b,AA2,c,null,A1U(d),null,0);return b;}b=new AML;Qo();AQA(b,ATa,c,null,A1U(d),null,f);return b;}b=new AML;Qo();AQA(b,ByR,c+1|0,null,null,null,1);return b;}b=new AML;Qo();AQA(b,AEe,0,null,null,null,0);return b;},AQA +=(a,b,c,d,e,f,g)=>{a.bQR=b;a.cc4=c;a.b6J=d;a.cHf=e;a.cZ2=f;a.c4M=g;},D78=(a,b,c,d,e,f)=>{let g=new AML();AQA(g,a,b,c,d,e,f);return g;},A1U=b=>{let c,d;if(b!==null&&b.bGI.length>=2){c=Bn(b,0);d=Bn(b,b.bGI.length-1|0);if(!(c==34&&d==34)&&!(c==39&&d==39))return b;return B_(b,1,b.bGI.length-1|0);}return b;},BPx=a=>{return a.cc4;},ASp=a=>{return a.b6J;},Bin=a=>{let b,c;b=a.bQR;Qo();if(b!==AMY&&b!==AFZ&&b!==ATa&&b!==AA2){c=new BP;Bp(c,b.bHx);J(c);}return a.cHf;},BkU=a=>{return a.bQR;},C47=a=>{let b,c;b=a.bQR;Qo();if +(b!==AFZ){c=new BP;Bp(c,b.bHx);J(c);}return a.cZ2;},EVp=a=>{let b,c,d,e,f;b=BY(a.bQR);c=a.cc4;d=a.b6J;e=a.cHf;f=new S;T(f);b=H(H(H(f,E(2206)),b),E(2207));BE(b,c);Bb(H(H(H(H(b,E(2208)),d),E(2209)),e),41);return Q(f);},A9C=N(Bx),AEe=null,AA2=null,APy=null,AMY=null,AFZ=null,A0C=null,Btk=null,ATa=null,ByR=null,Fmr=null,Qo=()=>{Qo=Z(A9C);FmO();},EP2=(a,b,c)=>{Qo();Ct(a,b,c);},ACZ=(a,b)=>{let c=new A9C();EP2(c,a,b);return c;},FmO=()=>{let b,c,d;AEe=ACZ(E(2210),0);AA2=ACZ(E(2211),1);APy=ACZ(E(2212),2);AMY=ACZ(E(2213), +3);AFZ=ACZ(E(2214),4);A0C=ACZ(E(2215),5);Btk=ACZ(E(2216),6);ATa=ACZ(E(2217),7);b=ACZ(E(2218),8);ByR=b;c=K(A9C,9);d=c.data;d[0]=AEe;d[1]=AA2;d[2]=APy;d[3]=AMY;d[4]=AFZ;d[5]=A0C;d[6]=Btk;d[7]=ATa;d[8]=b;Fmr=c;},CoJ=N(DR),B7s=N(),D7c=(a,b,c)=>{Bb(c,b.bJm.cSd);},DKd=(a,b)=>{return b instanceof B7s;},DL_=a=>{return 2;},BUd=N(),Dtu=(a,b,c)=>{let d,e,f,g;d=b.cTt;if(d===null)Bb(c,164);else{b=b.bJm.cKf;e=b.bIP;f=b.bK3;b=CAc(d);f=A_2(e,f);if(BHy===null)BHy=ECU();a:{g=BHy;if(g.hasOwnProperty(Cq(f))){f=g[Cq(f)];if(f.hasOwnProperty(Cq(b))) +{b=f[Cq(b)];break a;}}b:{if(g.hasOwnProperty(Cq(e))){f=g[Cq(e)];if(f.hasOwnProperty(Cq(b)))break b;}b=null;break a;}b=f[Cq(b)];}L(c,!(b!==null&&!CQ((b.symbol!==null?Fe(b.symbol):null)))?CAc(d):(b.symbol!==null?Fe(b.symbol):null));}},Ewk=(a,b)=>{return b instanceof BUd;},Fc2=a=>{return 0;},BND=N(),Dt2=(a,b,c)=>{Bb(c,b.bJm.cQI);},E6E=(a,b)=>{return b instanceof BND;},D4c=a=>{return 1;}; +function BP1(){let a=this;BDw.call(a);a.cUk=null;a.cWJ=null;} +let DuU=(a,b,c)=>{let d,e,f,g,h,i,j,k,l;d=a.cUk;e=0;f=0;g=a.cWJ;a:{b:{while(true){if((e+32|0)>f&&NO(b)){h=e;while(h=f){Mi();l=Up;}else if(!NO(c)&&e>=f){Mi();l=Sk;}}Crv(c,g,0,j);if(l!==null)break;}break a;}if(!(!NO(b)&&e>=f)){Mi();l=Sk;}else{Mi();l=Up;}}VZ(b,b.bHS-(f-e|0)|0);return l;},C_M +=N(BP1),DAp=(a,b,c,d,e,f,g,h)=>{let i,j,k,l,m,n,o;i=null;a:{b:{c:{d:{e:{f:{g:{h:{while(c=g)break h;j=b.data;k=c+1|0;l=j[c];if(l<128){j=e.data;m=f+1|0;j[f]=l<<24>>24;}else if(l<2048){if((f+2|0)>g)break b;j=e.data;c=f+1|0;j[f]=(192|l>>6)<<24>>24;m=c+1|0;j[c]=(128|l&63)<<24>>24;}else if(!BJK(l)){if((f+3|0)>g)break c;j=e.data;n=f+1|0;j[f]=(224|l>>12)<<24>>24;c=n+1|0;j[n]=(128|l>>6&63)<<24>>24;m=c+1|0;j[c]=(128|l&63)<<24>>24;}else{if(!Pl(l))break g;if(k>=d)break e;c=k+1|0;m=j[k];if(!Sh(m))break f;if((f+ +4|0)>g)break d;j=e.data;o=ADq(l,m);m=f+1|0;j[f]=(240|o>>18)<<24>>24;n=m+1|0;j[m]=(128|o>>12&63)<<24>>24;f=n+1|0;j[n]=(128|o>>6&63)<<24>>24;m=f+1|0;j[f]=(128|o&63)<<24>>24;k=c;}c=k;f=m;}k=c;break a;}k=c;break a;}i=ABf(1);break a;}k=c+(-2)|0;i=ABf(1);break a;}if(NO(h.cQD))break a;Mi();i=Up;break a;}k=c+(-2)|0;if(B8j(h,4))break a;Mi();i=Sk;break a;}k=k+(-1)|0;if(B8j(h,3))break a;Mi();i=Sk;break a;}k=k+(-1)|0;if(!B8j(h,2)){Mi();i=Sk;}}h.cYv=k;h.cM4=f;return i;},Bhm=N(Bl),Cg$=null,Bdj=()=>{Bdj=Z(Bhm);FoB();},DCd +=(a,b,c)=>{if(BG(R(c,E(551),0),E(2219)))return E(2220);return E(2221);},E2X=a=>{Bdj();return Cg$;},Dw2=(a,b,c,d,e)=>{b.c2_=BG(R(d,E(551),0),E(2219));return By();},FoB=()=>{Cg$=Bv(BB(Bi,[E(2219),E(2222)]));},Byp=N(Bl),Dpb=null,Bfb=()=>{Bfb=Z(Byp);EwI();},DE9=a=>{Bfb();return Dpb;},Ec6=(a,b,c)=>{let d,e,f,g,h;d=new S;T(d);e=F9(R(c,E(554),0));f=Dl(R(c,E(556),0));if(Bj(E(2223),e)){L(d,E(2224));L(d,f);L(d,E(1762));}else if(Bj(E(562),e)){L(d,E(2225));L(d,f);L(d,E(1762));}else if(!Bj(E(745),e)){L(d,E(2226));L(d,f);L(d, +E(1762));}else{L(d,E(2227));L(d,f);L(d,E(1762));}g=R(c,E(558),0);if(g!==null){L(d,E(2228));L(d,g);}h=R(c,E(560),0);if(h!==null){L(d,E(2229));L(d,h);}return Q(d);},DDl=(a,b,c,d,e)=>{let f,g;b=b;e=J3(R(d,E(554),0));Hy();f=Ss(Bo(AIo),e);e=YL(b,c,Dl(R(d,E(556),0)));g=R(d,E(558),0);g=g===null?null:DV(b.bGM.bGN,g);d=R(d,E(560),0);b=Doh(b,e,f,g,d===null?null:DV(b.bGM.bGN,d));return b!==null?B5(b):By();},EwI=()=>{Dpb=Bv(BB(Bi,[E(2223),E(562),E(745),E(2230)]));},Bvb=N(Bl),ChG=null,BjH=()=>{BjH=Z(Bvb);EBX();},DUh=(a, +b,c)=>{return E(2231);},Ec_=a=>{BjH();return ChG;},DZ$=(a,b,c,d,e)=>{b=b;c=CRI(b);if(c===null)b=B5(E(2232));else{e=c.Fq();Hy();b=NW(b,e,PX,null);b=b===null?By():B5(b);}return b;},EBX=()=>{let b;b=K(Bi,1);b.data[0]=E(562);ChG=Bv(b);},ADI=N(Bl),AZd=()=>{let b,c,d,e;b=new C0;c=new Ch;d=K(Bg,3);e=d.data;e[0]=Bc(E(2233));e[1]=Bw();e[2]=Ba(1,E(2234),E(2235));Cj(c,d);C3(b,c);return b;},Bih=()=>{let b,c,d;b=new DD;c=K(Bg,2);d=c.data;d[0]=Ba(1,E(554),E(2236));d[1]=Ba(1,E(2237),E(2238));Eb(b,c);return b;},DRh=(a,b,c)=> +{let d,e,f,g,h,i,j,k,l;a:{b:{d=new S;T(d);e=R(c,E(594),0);f=R(c,E(2237),0);g=R(c,E(554),0);if(f===null){if(g===null)break b;if(!BG(g,E(2230)))break b;}h=1;break a;}h=0;}if(f===null)f=!(g!==null&&!BG(g,E(2230)))?E(779):g;L(d,!h?E(2239):E(2240));L(d,FS(f));if(e!==null){L(d,E(2241));L(d,e);L(d,E(1762));}i=R(c,E(664),0);if(i!==null){L(d,E(2242));L(d,i);L(d,E(1268));}j=R(c,E(2234),0);if(j!==null){L(d,E(2243));L(d,j);}k=R(c,E(567),0);if(k!==null){L(d,E(2244));L(d,k);}l=R(c,E(608),0);if(l!==null){L(d,E(2228));L(d, +l);}if(R(c,E(2245),0)!==null)L(d,E(2246));if(h)L(d,E(2247));return Q(d);},EqU=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;f=R(d,E(594),0);if(!C_O(b,f)){HW();g=Lu;if(R(d,E(664),0)!==null)g=B4(Cf(b),R(d,E(664),0));h=R(d,E(554),0);i=R(d,E(2237),0);if(i!==null){j=B$E(J3(i));k=1;}else if(!BG(h,E(2237))){j=B$E(J3(h));k=0;}else{ABp();j=AE1;k=1;}l=R(d,E(2234),0);m=DlJ(b,c,j,f,g,l!==null?CZ(l):0);n=R(d,E(567),0);if(n!==null){o=b.bGM;p=CeR(o);e=null;q=K(I1,1);r=q.data;Fs();r[0]=KB;s=MC(o,e,0,q);C9h(m,N5(n,Lc(o), +s,b.bGM.bGN),p);}t=R(d,E(608),0);CM();e=C6;c=t===null?null:DV(b.bGM.bGN,t);if(c!==null)m.cgY=Lg(m.cgY,e,c);u=R(d,E(2245),0);if(u!==null){v=new FZ;c=DF(b.bGM,E(2248));FC();Gb(v,c,FI);m.cbn=Gj(v,u);}if(k){Hy();w=NW(b,m,AOb,null);if(w!==null)return B5(w);}return By();}CiG(b,f);return By();},EQe=(a,b,c,d,e)=>{return EqU(a,b,c,d,e);},Bg4=N(ADI),Crd=null,A5u=()=>{A5u=Z(Bg4);Faz();},E09=()=>{let b,c,d,e,f,g,h;A5u();b=BN(Bo(Bg4));c=K(Bg,12);d=c.data;d[0]=BL();d[1]=Bih();d[2]=Bw();e=new C0;f=new Ch;g=K(Bg,4);h=g.data;h[0] +=Ba(1,E(664),E(603));h[1]=Bw();h[2]=Bc(E(665));h[3]=Bw();Cj(f,g);C3(e,f);d[3]=e;d[4]=Ba(1,E(594),E(666));d[5]=D2(E(567));d[6]=AZd();d[7]=Bd();E3();d[8]=Fy;d[9]=Bd();d[10]=Kp();d[11]=BR();return BT(b,c);},D8s=a=>{A5u();return Crd;},Faz=()=>{Crd=Bv(BB(Bi,[E(709),E(715),E(728),E(740),E(2230),E(741),E(749),E(779),E(784)]));},BA7=N(ADI),Cp9=null,A6o=()=>{A6o=Z(BA7);Dxb();},EIz=()=>{let b,c,d;A6o();b=BN(Bo(BA7));c=K(Bg,15);d=c.data;d[0]=BL();d[1]=Bih();d[2]=Bw();d[3]=Ba(1,E(594),E(666));d[4]=Bw();d[5]=Bc(E(665));d[6] +=Bw();d[7]=Ba(1,E(664),E(603));d[8]=D2(E(567));d[9]=AZd();d[10]=Bd();E3();d[11]=Fy;d[12]=Bd();d[13]=Kp();d[14]=BR();return BT(b,c);},D3n=a=>{A6o();return Cp9;},Dxb=()=>{Cp9=Bv(BB(Bi,[E(709),E(715),E(728),E(740),E(2230),E(741),E(749),E(779),E(784)]));},BA6=N(ADI),Czg=null,A6n=()=>{A6n=Z(BA6);DA_();},EQF=()=>{let b,c,d;A6n();b=BN(Bo(BA6));c=K(Bg,15);d=c.data;d[0]=BL();d[1]=Bih();d[2]=Bw();d[3]=Ba(1,E(664),E(666));d[4]=Bw();d[5]=Bc(E(665));d[6]=Bw();d[7]=Ba(1,E(594),E(666));d[8]=D2(E(567));d[9]=AZd();d[10]=Bd();E3();d[11] +=Fy;d[12]=Bd();d[13]=Kp();d[14]=BR();return BT(b,c);},Dul=a=>{A6n();return Czg;},DA_=()=>{Czg=Bv(BB(Bi,[E(709),E(715),E(728),E(740),E(2230),E(741),E(749),E(779),E(784)]));},BA5=N(ADI),Dmv=null; +let Box=()=>{Box=Z(BA5);FkV();},E4f=a=>{let b,c,d;Box();b=BN(Bo(BA5));c=K(Bg,11);d=c.data;d[0]=BL();d[1]=Bih();d[2]=Bw();d[3]=Ba(1,E(594),E(603));d[4]=D2(E(567));d[5]=AZd();d[6]=Bd();E3();d[7]=Fy;d[8]=Bd();d[9]=Kp();d[10]=BR();Cb(a,BT(b,c));},ERS=()=>{let a=new BA5();E4f(a);return a;},D7O=a=>{Box();return Dmv;},FkV=()=>{Dmv=Bv(BB(Bi,[E(709),E(715),E(728),E(740),E(2230),E(741),E(749),E(779),E(784)]));}; +function EP(){let a=this;F.call(a);a.bHB=null;a.cX_=null;a.cf1=null;a.cvA=null;} +let BF9=0,BCs=()=>{BCs=Z(EP);EL$();},Iy=(a,b,c,d,e)=>{let f;BCs();if(Df()&&!BF9){f=b;if(!(BO(A7s(f),E(1174))&&Dr(A7s(f),E(1497)))){b=new C4;X(b);J(b);}}if(Df()&&!BF9&&e===null){b=new C4;X(b);J(b);}a.cf1=c;a.bHB=b;a.cX_=d;a.cvA=e;},EVq=a=>{return 0;},C23=(a,b)=>{let c,d;b=AAL(b,a.cf1);if(a.AG()){if(Dq(b)==1&&!Dr((C8(DB(b))).bGP,E(580))){c=(ACq(b,0)).bGP;b=new S;T(b);H(H(b,c),E(1763));b=C23(a,XP(Q(b)));F5();c=Oo;if(b!==c)return KS;return c;}b=BU7(b);}c=DB(b);if(c!==null){d=a.bHB;c=C8(c);if(G7(d,c)){if(Dq(b)!= +1){if(!O7(DX(A_U(a.cvA),Ddm(a.cX_,L9(b)),0))){F5();return Oo;}return a.FH(b);}F5();return Oo;}F5();return KS;}F5();return KS;},B$d=(a,b,c,d)=>{let $$je;c=AAL(c,a.cf1);if(a.AG())c=BU7(c);try{b=a.FI(b,c,d);}catch($$e){$$je=P($$e);if($$je instanceof J1){return APx();}else{throw $$e;}}return b;},ERs=(a,b)=>{b=AAL(b,a.cf1);if(a.AG())b=BU7(b);return a.FJ(b);},CoA=(a,b)=>{F5();return PY;},Fi_=(a,b)=>{Jx();return b!==JB?0:1;},ABT=a=>{return A_U(a.cvA);},D3m=a=>{return BWM(a.bHB);},EL$=()=>{BF9=0;},Bj0=N(EP),CE7=null,C5m +=null,A5s=()=>{A5s=Z(Bj0);EtX();},Es9=a=>{let b,c,d,e,f;A5s();b=BN(Bo(Bj0));c=K(Bg,13);d=c.data;d[0]=BL();d[1]=Ba(1,E(554),E(2249));d[2]=Bw();d[3]=Ba(1,E(594),E(666));d[4]=D2(E(567));d[5]=AZd();d[6]=Bd();E3();d[7]=Fy;d[8]=Bd();d[9]=Kp();d[10]=Bd();d[11]=Bc(E(598));d[12]=BR();e=BT(b,c);HE();f=Kl;HA();Iy(a,e,f,G0,C5m);},E59=()=>{let a=new Bj0();Es9(a);return a;},DAP=(a,b)=>{let c,d,e,f,g,h;c=a.bHB;d=(C8(DB(b))).bGP;d=Ei(c,d);if(d!==null){c=new S;T(c);L(c,E(2250));L(c,R(d,E(594),0));L(c,E(1762));e=R(d,E(2234), +0);if(e!==null){L(c,E(2243));L(c,e);}f=R(d,E(567),0);if(f!==null){L(c,E(2244));L(c,f);}g=R(d,E(608),0);if(g!==null){L(c,E(2228));L(c,g);L(c,E(2251));}if(R(d,E(2245),0)!==null)L(c,E(2246));h=Dq(b)<=2?0:Dq(b)-2|0;if(h>0){L(c,E(2252));BE(c,h);L(c,h!=1?E(2253):E(2254));L(c,E(2255));}return Q(c);}return E(2256);},D1L=a=>{A5s();return CE7;},E8R=(a,b,c,d)=>{let e,f,g,h,i,j,k;b=b;e=a.bHB;f=(C8(DB(c))).bGP;d=Ei(e,f);f=R(d,E(594),0);if(C_O(b,f)){CiG(b,f);b=By();}else{c=JL(HI(c,1,1));e=Ig(c);ABp();g=AE1;h=R(d,E(2234), +0);i=h!==null?CZ(h):0;f=DlJ(b,I5(c),g,f,e,i);h=R(d,E(567),0);if(h!==null){g=b.bGM;i=CeR(g);e=null;j=K(I1,1);k=j.data;Fs();k[0]=KB;c=MC(g,e,0,j);C9h(f,N5(h,Lc(g),c,b.bGM.bGN),i);}e=R(d,E(2245),0);if(e!==null){c=new FZ;b=DF(b.bGM,E(2248));FC();Gb(c,b,FI);f.cbn=Gj(c,e);}b=By();}return b;},EtX=()=>{let b;b=K(Bi,1);b.data[0]=E(779);CE7=Bv(b);C5m=HO(new Daz);},Bgw=N(Bl),CfC=null,AEJ=()=>{AEJ=Z(Bgw);Frn();},ElH=a=>{AEJ();Cb(a,DMy());},D6v=()=>{let a=new Bgw();ElH(a);return a;},AIZ=()=>{AEJ();return E(621);},EaA=a=> +{FY();return G6;},DMy=()=>{let b,c,d,e,f,g,h,i,j,k,l;AEJ();b=BN(Bo(Bgw));c=K(Bg,22);d=c.data;d[0]=BL();d[1]=Ba(1,E(2257),E(2258));d[2]=Ba(2,E(2259),E(2260));e=new DD;f=K(Bg,4);g=f.data;g[0]=Ba(1,E(2261),E(666));g[1]=Ba(1,E(2262),E(603));g[2]=Ba(2,E(2263),E(2264));g[3]=Ba(2,E(2265),E(2266));Sf(e,E(2267),f);d[3]=e;d[4]=Ba(2,E(2268),E(2260));d[5]=Bd();e=new C0;h=new DD;f=K(Bg,4);g=f.data;g[0]=Bc(E(2269));g[1]=Bc(E(2270));g[2]=Bc(E(2271));g[3]=Bc(E(2272));Sf(h,E(2273),f);C3(e,h);d[6]=e;i=new DD;j=K(Bg,2);g=j.data;k +=new Ch;l=K(Bg,3);f=l.data;f[0]=Ba(1,E(2274),E(619));f[1]=Ba(1,E(2275),AIZ());f[2]=Ba(1,E(2276),E(622));Cj(k,l);g[0]=k;e=new Ch;f=K(Bg,3);l=f.data;l[0]=Ba(1,E(2277),E(622));l[1]=Ba(1,E(2278),AIZ());l[2]=Ba(1,E(2279),E(619));Cj(e,f);g[1]=e;Eb(i,j);d[7]=i;e=new C0;h=new DD;f=K(Bg,4);g=f.data;g[0]=Bc(E(2280));g[1]=Bc(E(2281));g[2]=Bc(E(2282));g[3]=Bc(E(2283));Sf(h,E(2284),f);C3(e,h);d[8]=e;d[9]=Bd();e=new DD;f=K(Bg,4);g=f.data;g[0]=Ba(1,E(2285),E(666));g[1]=Ba(1,E(2286),E(603));g[2]=Ba(2,E(2287),E(2264));g[3]= +Ba(2,E(2288),E(2266));Sf(e,E(2289),f);d[10]=e;d[11]=Ba(1,E(2290),E(2291));d[12]=Ba(2,E(2292),E(2260));d[13]=Bd();d[14]=Ba(1,E(2293),E(2294));d[15]=Bd();d[16]=Ba(1,E(2295),E(2296));d[17]=D2(E(578));E3();d[18]=Fy;d[19]=Bd();d[20]=Ba(1,E(2297),E(2298));d[21]=BR();e=BT(b,c);e.czA=2000;return e;},EqJ=(a,b,c,d)=>{let e,f,g,h,i,j;e=R(d,E(2290),0);if(e!==null){f=Bk();AEJ();g=(A0k(CfC,e)).data;h=g.length;i=0;while(i{let f,g,h;f=new S;T(f);H(H(f,e),E(594));if(R(d,Q(f),0)!==null){f=new S;T(f);H(H(f,e),E(594));f=R(d,Q(f),0);g=B4(Cf(c),f);}else{f=new S;T(f);H(H(f,e),E(2299));if(R(d,Q(f),0)!==null){f=new S;T(f);H(H(f,e),E(2299));f=R(d,Q(f),0);g=B4(Cf(c),f);}else{f=new S;T(f);H(H(f,e),E(2300));if(R(d,Q(f),0)===null){f=new S;T(f);H(H(f,e),E(2301));if(R(d,Q(f),0)!==null){f=new S;T(f);H(H(f,e),E(2301));f=R(d,Q(f),0);g=Cf(c);h=new S;T(h);H(H(h,e),E(2301));return B4_(c,b,f,B4(g,R(d,Q(h),1)));}b=new BP;X(b);J(b);}f=Cf(c);g +=new S;T(g);H(H(g,e),E(2300));g=B4(f,R(d,Q(g),0));f=new S;T(f);H(H(f,e),E(2300));f=R(d,Q(f),1);}}return B4_(c,b,f,g);},ABS=(a,b,c)=>{let d,e;c=c.data;d=c.length;e=0;while(e{return F9(Jt(MI(R(b,c,0)),E(840),E(14)));},C3L=(a,b)=>{let c,d;if(b!==null){c=Eq(b,40);if(c!=(-1)){d=Eq(b,41);if(d!=(-1))return CZ(B_(b,c+1|0,d));return 0;}return 0;}return 0;},FpF=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n;d=new S;T(d);e=B9q(c,E(2267));f=B9q(c,E(2289));L(d,E(2302));L(d, +e);L(d,E(2303));L(d,f);L(d,E(1762));g=BdY(a,c,E(2273));h=BdY(a,c,E(2284));if(ABS(a,g,BB(Bi,[E(1198),E(1280),E(21)]))&&!CB(g,E(2304)))L(d,E(2305));if(Dls(a,c)>1)L(d,E(2306));if(!(!ABS(a,g,BB(Bi,[E(1775),E(1281),E(648)]))&&!ABS(a,h,BB(Bi,[E(1776),E(1281),E(648)]))))L(d,E(2307));if(!(!CB(g,E(2304))&&!CB(h,E(2304))))L(d,E(2308));if(!(!CB(g,E(2309))&&!CB(h,E(2309))))L(d,E(2310));i=Ck(c,E(620),0);if(i!==null&&!CQ(i)){L(d,E(2311));L(d,i);L(d,E(843));}j=R(c,E(2297),0);if(j!==null&&!CQ(j)){L(d,E(2312));L(d,j);L(d,E(1268));}k +=R(c,E(2293),0);if(k!==null&&!CQ(k)){L(d,E(2313));L(d,k);L(d,E(1762));}l=R(c,E(2295),0);if(l!==null&&!CQ(l)){L(d,E(2314));L(d,l);}m=R(c,E(578),0);if(m!==null){L(d,E(2244));L(d,m);}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(2257),0)!==null)L(d,E(2315));n=R(c,E(2290),0);if(n!==null&&!CQ(Dk(n))){L(d,E(2316));L(d,Jt(n,E(2317),E(344)));}if(R(c,E(2259),1)!==null){L(d,E(2318));L(d,R(c,E(2259),1));L(d,E(1762));}return Q(d);},B9q=(b,c)=>{let d;AEJ();d=new S;T(d);H(H(d,c),E(594));if(R(b,Q(d),0)===null){d=new S;T(d);H(H(d, +c),E(2299));if(R(b,Q(d),0)===null){d=new S;T(d);H(H(d,c),E(2300));if(R(b,Q(d),0)===null){d=new S;T(d);H(H(d,c),E(2301));if(R(b,Q(d),0)!==null){d=new S;T(d);H(H(d,c),E(2301));return R(b,Q(d),0);}return E(336);}d=new S;T(d);H(H(d,c),E(2300));return R(b,Q(d),1);}d=new S;T(d);H(H(d,c),E(2299));return R(b,Q(d),0);}d=new S;T(d);H(H(d,c),E(594));return R(b,Q(d),0);},DuP=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,bd,be,bf,bg,bh;f=BdY(a,d,E(2273));g=BdY(a,d,E(2284));h=C3L(a,R(d,E(2273),0));i +=C3L(a,R(d,E(2284),0));j=ABS(a,f,BB(Bi,[E(1198),E(1280),E(21)]));k=CB(f,E(2304));l=ABS(a,g,BB(Bi,[E(372),E(1280),E(21)]));m=CB(g,E(2304));if(!l&&!(k&&m)){if(j)n=1;else{if(!k&&!m)return B5(E(2319));n=0;}}else n=0;if(!n){o=Btq(a,c,b,d,E(2267));p=Btq(a,c,b,d,E(2289));q=CB(f,E(2309));r=CB(g,E(2309));s=ABS(a,f,BB(Bi,[E(1775),E(1281),E(648)]));t=ABS(a,g,BB(Bi,[E(1776),E(1281),E(648)]));}else{p=Btq(a,c,b,d,E(2267));o=Btq(a,c,b,d,E(2289));q=CB(g,E(2309));r=CB(f,E(2309));t=ABS(a,f,BB(Bi,[E(1775),E(1281),E(648)]));s= +ABS(a,g,BB(Bi,[E(1776),E(1281),E(648)]));}u=Dls(a,d)<=1?0:1;if(R(d,E(2297),0)!==null){v=R(d,E(2297),0);w=B4(Cf(b),v);}else{x=K(KH,1);x.data[0]=E(14);w=PB(x);}y=!(j&&l)?C$C():BPt();if(u){SV();y=AU2(y,ABL);}if(s){GQ();y=A53(y,P6);}if(t){GQ();y=A5L(y,P6);}if(!(!CB(g,E(1280))&&!CB(f,E(21)))){MP();y=B5s(y,RG);}if(!(!CB(g,E(21))&&!CB(f,E(1280)))){MP();y=B5s(y,SO);}if(r){OG();y=BLF(y,PA);}if(q){OG();y=BZt(y,PA);}if(!n){if(k){GQ();y=A53(y,L7);}if(m){GQ();y=A5L(y,L7);}}else{if(k){GQ();y=A5L(y,L7);}if(m){GQ();y=A53(y, +L7);}}if(n)y=FnN(y);v=Ftn(BZE(Ck(d,E(620),0),y),h+i|0);z=R(d,E(2293),0);if(z!==null&&Bn(z,0)==42){Hy();NW(b,p,AOb,null);}ba=Ben(b);bb=ChQ(B1(HB(b)),o,p,ACC(b,w),v,ba,c);EZe(bb,EqJ(a,c,b,d));bc=R(d,E(2245),0);if(bc!==null){bd=new FZ;c=DF(HB(b),E(2248));FC();Gb(bd,c,FI);FbJ(bb,Gj(bd,bc));}if(R(d,E(578),0)!==null){be=FD(R(d,E(578),0));EE5(bb,be);}if(R(d,E(2257),0)===null?0:1)B2c(bb);e=R(d,E(2259),1);c=bb;CrU(c,e);DUD(c,R(d,E(2268),1));CsR(c,R(d,E(2292),1));bf=BRc(b,bb);if(OI(bf)){bg=R(d,E(2295),0);bh=bg===null +?null:DV(GK(HB(b)),bg);if(z===null){if(Cy_(b)){c=BfU(v);GQ();if(!(c!==MG&&BfU(v)!==P6)){if(!Bds(v)){Hy();NW(b,p,Ri,bh);}else{Hy();NW(b,o,PX,null);}}}return By();}return Fgh(a,z,b,o,p,bh);}return bf;},Fgh=(a,b,c,d,e,f)=>{a:{b:{c:{switch(Bn(b,0)){case 33:break c;case 43:break;case 45:break b;default:break a;}Hy();NW(c,e,Ri,f);break a;}Hy();NW(c,e,Vs,null);break a;}Hy();NW(c,d,PX,null);}d:{if(b.bGI.length==4){e:{switch(Bn(b,2)){case 43:break;case 45:break e;default:break d;}Hy();NW(c,e,Ri,f);break d;}Hy();NW(c, +d,PX,null);}}return By();},Dls=(a,b)=>{let c,d;c=Ck(b,E(2320),0);if(c===null)c=E(14);d=Ck(b,E(2321),0);if(d===null)d=E(14);return c.bGI.length+d.bGI.length|0;},BZE=(b,c)=>{let d,e;AEJ();if(b!==null){d=M0(b,E(349));while(JO(d)){e=H5(d);if(BG(e,E(2322))){SV();c=AU2(c,ABL);}else if(!BG(e,E(350))){if(BG(e,E(2323))){SV();c=AU2(c,ABL);}else if(!BG(e,E(2324)))c=Cy3(c,DV(KI(),e));else{SV();c=AU2(c,Bbr);}}}return c;}return c;},D4R=(a,b,c,d,e)=>{return DuP(a,b,c,d,e);},Frn=()=>{CfC=Dp(E(2317));},A7U=N(Bl),Euo=(a,b,c, +d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s;f=Ck(d,E(2320),0);g=Ck(d,E(2321),0);e=new S;T(e);H(H(e,f),g);e=Q(e);g=Ck(d,E(2325),0);h=YL(b,c,Dl(R(d,E(485),0)));i=g.bGI.length!=2?0:1;j=CB(e,E(658));if(R(d,E(470),0)!==null)k=B4(Cf(b),R(d,E(470),0));else{l=K(KH,1);l.data[0]=E(14);k=PB(l);}m=!(R(d,E(2326),0)===null?0:1)?C$C():BPt();if(j){SV();m=AU2(m,ABL);}if(i){GQ();m=D3S(m,P6);}n=a.Go(d);if(CB(g,E(21))){if(BVI(n)!=1){MP();e=RG;}else{MP();e=SO;}}else if(!CB(g,E(1280))){MP();e=AFD;}else if(BVI(n)!=1){MP();e=SO;}else{MP();e +=RG;}e=B5s(m,e);m=BZE(Ck(d,E(620),0),e);o=R(d,E(2293),0);if(o!==null&&Bn(o,0)==42){Hy();NW(b,h,AOb,null);}KK();if(!(n!==WE&&n!==Ug)){if(AD0(a,E(2327),d,E(2309))){OG();m=BZt(m,PA);}if(AD0(a,E(2327),d,E(2304))){GQ();m=A53(m,L7);}if(AD0(a,E(2328),d,E(2309))){OG();m=BLF(m,PA);}if(AD0(a,E(2328),d,E(2304))){GQ();m=A5L(m,L7);}}else{if(AD0(a,E(2328),d,E(2309))){OG();m=BZt(m,PA);}if(AD0(a,E(2328),d,E(2304))){GQ();m=A53(m,L7);}if(AD0(a,E(2327),d,E(2309))){OG();m=BLF(m,PA);}if(AD0(a,E(2327),d,E(2304))){GQ();m=A5L(m,L7);}}f +=DyT(B1(b.bGM),h,n,k,m,Ben(b),EWx(a,d),c);if(R(d,E(2245),0)!==null){p=new FZ;c=DF(b.bGM,E(2248));FC();Gb(p,c,FI);f.cJz=Gj(p,R(d,E(2245),0));}if(R(d,E(2257),0)===null?0:1)B2c(f);e=R(d,E(2259),1);c=f;CrU(c,e);c.cxq=R(d,E(2268),1);CsR(c,R(d,E(2292),1));q=BRc(b,f);if(OI(q)){r=R(d,E(2295),0);s=r===null?null:DV(GK(HB(b)),r);a:{if(o!==null){b:{c:{d:{switch(Bn(o,0)){case 33:break c;case 43:break d;case 45:break b;default:}break a;}Hy();NW(b,h,Ri,s);break a;}Hy();NW(b,h,Vs,null);break a;}Hy();NW(b,h,PX,null);}else if +(Cy_(b)){c=BfU(m);GQ();if(!(c!==MG&&BfU(m)!==P6)){if(!Bds(m)){Hy();NW(b,h,Ri,s);}else{Hy();NW(b,h,PX,null);}}}}return By();}return q;},EWx=(a,b)=>{let c;c=R(b,E(2328),0);if(c!==null&&CB(c,E(336)))return 1;return 0;},AD0=(a,b,c,d)=>{let e;e=R(c,b,0);if(e!==null&&CB(e,d))return 1;return 0;},D4d=(a,b,c,d,e)=>{return Euo(a,b,c,d,e);},Bh_=N(A7U),CUt=null; +let A45=()=>{A45=Z(Bh_);EIY();},ER7=a=>{A45();Cb(a,Fa0());},Fg_=()=>{let a=new Bh_();ER7(a);return a;},Fa0=()=>{let b,c,d,e,f,g,h,i,j;A45();b=BN(Bo(Bh_));c=K(Bg,17);d=c.data;d[0]=BL();d[1]=Ba(1,E(2257),E(2258));d[2]=Ba(2,E(2259),E(2260));d[3]=Ba(1,E(2328),E(2329));e=new DD;f=K(Bg,2);g=f.data;h=new Ch;i=K(Bg,5);j=i.data;j[0]=Ba(1,E(2326),E(2330));j[1]=Ba(1,E(2274),E(619));j[2]=Ba(1,E(2275),AIZ());j[3]=Ba(1,E(2276),E(622));j[4]=Ba(1,E(2273),E(2331));Cj(h,i);g[0]=h;h=new Ch;i=K(Bg,4);j=i.data;j[0]=Ba(1,E(2284), +E(2332));j[1]=Ba(1,E(2279),E(622));j[2]=Ba(1,E(2278),AIZ());j[3]=Ba(1,E(2277),E(619));Cj(h,i);g[1]=h;Eb(e,f);d[4]=e;d[5]=Ba(1,E(2327),E(2333));d[6]=Bd();d[7]=Ba(1,E(485),E(557));d[8]=Bd();d[9]=Ba(1,E(2293),E(2334));d[10]=Bd();d[11]=Ba(1,E(2295),E(2296));d[12]=Bd();E3();d[13]=Fy;d[14]=Bd();e=new C0;h=new Ch;f=K(Bg,3);i=f.data;i[0]=Bc(E(82));i[1]=Bd();i[2]=Ba(1,E(470),E(566));Cj(h,f);C3(e,h);d[15]=e;d[16]=BR();return BT(b,c);},Dwm=(a,b,c)=>{let d,e,f,g,h,i,j,k;a:{b:{c:{d:{e:{d=new S;T(d);e=Dl(R(c,E(485),0));f +=DsO(a,c);BEA();switch(Cpk.data[f.bGO]){case 1:break;case 2:break e;case 3:break d;case 4:break c;default:break b;}L(d,E(2335));L(d,e);L(d,E(1762));break a;}L(d,E(2336));L(d,e);L(d,E(2337));break a;}L(d,E(2338));L(d,e);L(d,E(1762));break a;}L(d,E(2336));L(d,e);L(d,E(2339));break a;}L(d,E(2340));L(d,e);L(d,E(1762));}g=R(c,E(2328),0);if(g!==null&&CB(g,E(336)))L(d,E(2341));b=Ck(c,E(2320),0);e=Ck(c,E(2321),0);f=new S;T(f);H(H(f,b),e);if(CB(Q(f),E(658)))L(d,E(2306));h=Ck(c,E(2325),0);if(h!==null&&h.bGI.length==2)L(d, +E(2307));if(R(c,E(2326),0)!==null)L(d,E(2342));if(g!==null&&CB(g,E(2309)))L(d,E(2343));if(g!==null&&CB(g,E(2304)))L(d,E(2344));i=R(c,E(2327),0);if(i!==null&&CB(i,E(2309)))L(d,E(2345));if(i!==null&&CB(i,E(2304)))L(d,E(2346));j=R(c,E(2293),0);if(j!==null&&!CQ(j)){L(d,E(2313));L(d,j);L(d,E(1762));}k=R(c,E(2295),0);if(k!==null&&!CQ(k)){L(d,E(2314));L(d,k);}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(2257),0)!==null)L(d,E(2315));if(R(c,E(2259),1)!==null){L(d,E(2318));L(d,R(c,E(2259),1));L(d,E(1762));}return Q(d);},DsO +=(a,b)=>{let c,d,e;c=R(b,E(2328),0);d=R(b,E(2273),0);e=R(b,E(2284),0);if(c!==null&&CB(c,E(843))){if(d===null){if(e===null){b=new Bt;X(b);J(b);}KK();return WE;}KK();return Xa;}if(d===null){if(e===null){b=new Bt;X(b);J(b);}KK();return Ug;}KK();return Xk;},DNZ=a=>{A45();return CUt;},EIY=()=>{CUt=Bv(BB(Bi,[E(2317),E(1272),E(21),E(1198),E(336),E(842),E(1280),E(843),E(580)]));},BN0=N(A7U),E$Z=a=>{Cb(a,DA0());},ETX=()=>{let a=new BN0();E$Z(a);return a;},D3v=a=>{FY();return G6;},DA0=()=>{let b,c,d,e,f,g,h,i,j,k;b=BN(Bo(BN0));c +=K(Bg,17);d=c.data;d[0]=BL();d[1]=Ba(1,E(2257),E(2258));d[2]=Ba(2,E(2259),E(2260));d[3]=Ba(1,E(485),E(557));d[4]=Bd();d[5]=Ba(1,E(2327),E(2347));e=new DD;f=K(Bg,2);g=f.data;h=new Ch;i=K(Bg,5);j=i.data;j[0]=Ba(1,E(2326),E(2330));j[1]=Ba(1,E(2274),E(619));j[2]=Ba(1,E(2275),AIZ());j[3]=Ba(1,E(2276),E(622));j[4]=Ba(1,E(2273),E(2331));Cj(h,i);g[0]=h;k=new Ch;i=K(Bg,4);j=i.data;j[0]=Ba(1,E(2284),E(2332));j[1]=Ba(1,E(2279),E(622));j[2]=Ba(1,E(2278),AIZ());j[3]=Ba(1,E(2277),E(619));Cj(k,i);g[1]=k;Eb(e,f);d[6]=e;d[7] +=Ba(1,E(2328),E(2348));d[8]=Bd();d[9]=Ba(1,E(2293),E(2334));d[10]=Bd();d[11]=Ba(1,E(2295),E(2296));d[12]=Bd();E3();d[13]=Fy;d[14]=Bd();e=new C0;k=new Ch;f=K(Bg,3);g=f.data;g[0]=Bc(E(82));g[1]=Bd();g[2]=Ba(1,E(470),E(566));Cj(k,f);C3(e,k);d[15]=e;d[16]=BR();return BT(b,c);},EKe=(a,b,c)=>{let d,e,f,g,h,i,j,k;a:{b:{c:{d:{e:{d=new S;T(d);e=Dl(R(c,E(485),0));f=C0l(a,c);BPW();switch(CWl.data[f.bGO]){case 1:break;case 2:break e;case 3:break d;case 4:break c;default:break b;}L(d,E(2335));L(d,e);L(d,E(1762));break a;}L(d, +E(2336));L(d,e);L(d,E(2337));break a;}L(d,E(2338));L(d,e);L(d,E(1762));break a;}L(d,E(2336));L(d,e);L(d,E(2339));break a;}L(d,E(2340));L(d,e);L(d,E(1762));}g=R(c,E(2328),0);if(g!==null&&CB(g,E(336)))L(d,E(2341));b=Ck(c,E(2320),0);e=Ck(c,E(2321),0);f=new S;T(f);H(H(f,b),e);if(CB(Q(f),E(658)))L(d,E(2306));h=Ck(c,E(2325),0);if(h!==null&&h.bGI.length==2)L(d,E(2307));if(R(c,E(2326),0)!==null)L(d,E(2342));if(g!==null&&CB(g,E(2309)))L(d,E(2343));if(g!==null&&CB(g,E(2304)))L(d,E(2344));i=R(c,E(2327),0);if(i!==null&& +CB(i,E(2309)))L(d,E(2345));if(i!==null&&CB(i,E(2304)))L(d,E(2346));j=R(c,E(2293),0);if(j!==null&&!CQ(j)){L(d,E(2313));L(d,j);L(d,E(1762));}k=R(c,E(2295),0);if(k!==null&&!CQ(k)){L(d,E(2314));L(d,k);}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(2257),0)!==null)L(d,E(2315));if(R(c,E(2259),1)!==null){L(d,E(2318));L(d,R(c,E(2259),1));L(d,E(1762));}return Q(d);},C0l=(a,b)=>{let c,d,e;c=R(b,E(2328),0);d=R(b,E(2273),0);e=R(b,E(2284),0);if(c!==null&&CB(c,E(842))){if(d===null){if(e===null){b=new Bt;X(b);J(b);}KK();return Xk;}KK();return Ug;}if +(d===null){if(e===null){b=new Bt;X(b);J(b);}KK();return Xa;}KK();return WE;},V$=N(0),AKx=N(),B8u=null,CsE=null,AK5=()=>{AK5=Z(AKx);EQ8();},Dyx=a=>{AK5();},Fet=()=>{let a=new AKx();Dyx(a);return a;},B6g=()=>{AK5();CM();return HQ(C6);},Ete=(a,b)=>{let c,d,e,f,g,h,i;c=new CO5;d=BN(Bo(AKx));e=new S;T(e);H(H(e,d),E(2349));f=Q(e);g=K(Bg,14);h=g.data;h[0]=BL();h[1]=Ba(1,E(2257),E(2258));h[2]=Ba(1,E(2350),E(2351));h[3]=Bd();h[4]=Ba(1,E(2352),E(2353));h[5]=D2(E(2354));h[6]=Ba(1,E(585),E(2355));h[7]=Bw();h[8]=Ba(1,E(485), +E(2356));h[9]=D2(E(2357));h[10]=(B6g()).bH3;h[11]=Bd();E3();h[12]=Fy;h[13]=BR();f=BT(f,g);HE();d=Q6;HA();e=G0;i=CsE;c.ctJ=a;Iy(c,f,d,e,i);return c;},FaI=a=>{let b,c,d,e,f,g;b=new CO6;c=BN(Bo(AKx));d=new S;T(d);H(H(d,c),E(583));e=Q(d);f=K(Bg,18);g=f.data;g[0]=BL();g[1]=Ba(1,E(2257),E(2258));g[2]=Ba(1,E(2350),E(2351));g[3]=Bd();g[4]=Ba(1,E(2352),E(2353));g[5]=D2(E(2354));g[6]=Ba(1,E(585),E(2355));g[7]=Bw();g[8]=Ba(1,E(485),E(2358));g[9]=D2(E(2357));g[10]=(B6g()).bH3;g[11]=Bd();E3();g[12]=Fy;g[13]=Bd();g[14]=Bc(E(82));g[15] +=Bd();g[16]=Ba(1,E(455),E(566));g[17]=BR();c=BT(e,f);b.cIz=a;Cb(b,c);return b;},CPV=(a,b,c)=>{let d,e,f,g,h;d=new S;T(d);e=F9(R(b,E(2352),0));if(Bj(E(760),e))L(d,E(2359));else if(!Bj(E(789),e))L(d,E(2360));else L(d,E(2361));f=F9(R(b,E(585),0));g=Dl(R(b,E(485),0));if(Bj(E(2362),f)){L(d,E(2363));L(d,g);L(d,E(1762));}else{L(d,E(2364));L(d,f);L(d,E(2365));L(d,g);L(d,E(1762));}if(c!==null&&!CQ(c)){L(d,E(2366));L(d,c);L(d,E(1268));}h=Ck(b,E(567),0);if(h!==null){L(d,E(2244));L(d,h);}if(R(b,E(608),0)!==null){L(d,E(2228));L(d, +R(b,E(608),0));}if(R(b,E(2245),0)!==null)L(d,E(2246));if(R(b,E(2350),0)!==null)L(d,E(2367));if(R(b,E(2257),0)!==null)L(d,E(2315));return Q(d);},CHN=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p;f=YL(c,b,Dl(R(d,E(485),0)));g=BUS(J3(R(d,E(585),0)));if(I6(e)>0){h=R(d,E(2350),0)===null?0:1;i=R(d,E(2257),0)===null?0:1;j=BFL(f,null,g,e,B1(c.bGM));k=Iw(B6g(),d,c.bGM.bGN);l=Ck(d,E(567),0);if(l!==null){m=FD(l);e=c.bGM;n=K(Kc,2);o=n.data;JN();o[0]=ACf;o[1]=ADy;k=AQL(k,m,e,n);j.b$A=m;}j.bMc=k;j.bOz=BdF(R(d,E(2352),0));if(R(d, +E(2245),0)!==null){p=new FZ;b=DF(c.bGM,E(2248));FC();Gb(p,b,FI);j.b4_=Gj(p,R(d,E(2245),0));}if(i)C4g(j);if(h){d=new JK;n=K(Bi,1);n.data[0]=E(2368);J2(d,n);Nk(c,d);}BLB(c,j,h);}return By();},EQ8=()=>{B8u=Bv(BB(Bi,[E(2317),E(21),E(760),E(2369),E(2370),E(2371),E(584),E(2372),E(2373),E(2374),E(789),E(2375),E(2376),E(2377)]));CsE=HO(new B$F);},ALL=N(),BH9=null,DeA=null,AIm=()=>{AIm=Z(ALL);ETn();},EpW=a=>{AIm();},EwB=()=>{let a=new ALL();EpW(a);return a;},Fer=a=>{let b,c,d,e;b=BN(Bo(ALL));c=new S;T(c);H(H(c,b),E(583));c +=Q(c);d=K(Bg,22);e=d.data;e[0]=BL();e[1]=Ba(1,E(2257),E(2258));e[2]=Ba(1,E(2350),E(2351));e[3]=Bd();e[4]=Ba(1,E(2352),E(2353));e[5]=D2(E(2354));e[6]=Bc(E(2362));e[7]=Bw();e[8]=Ba(1,E(2378),E(557));e[9]=Bd();e[10]=Bc(E(349));e[11]=Bd();e[12]=Ba(1,E(2379),E(557));e[13]=D2(E(2357));e[14]=(BZn()).bH3;e[15]=Bd();E3();e[16]=Fy;e[17]=Bd();e[18]=Bc(E(82));e[19]=Bd();e[20]=Ba(1,E(455),E(566));e[21]=BR();return BT(c,d);},BZn=()=>{AIm();CM();return HQ(C6);},D$H=a=>{let b,c;b=new Cy5;c=Fer(a);b.cAg=a;Cb(b,c);return b;},CWK +=(a,b,c)=>{let d,e,f,g,h;d=new S;T(d);e=F9(R(b,E(2352),0));if(Bj(E(760),e))L(d,E(2359));else if(!Bj(E(789),e))L(d,E(2360));else L(d,E(2361));f=Dl(R(b,E(2378),0));g=Dl(R(b,E(2379),0));L(d,E(2363));L(d,f);L(d,E(2380));L(d,g);L(d,E(1762));if(c!==null&&!CQ(c)){L(d,E(2366));L(d,c);L(d,E(1268));}h=Ck(b,E(567),0);if(h!==null){L(d,E(2244));L(d,h);}if(R(b,E(608),0)!==null){L(d,E(2228));L(d,R(b,E(608),0));}if(R(b,E(2245),0)!==null)L(d,E(2246));if(R(b,E(2350),0)!==null)L(d,E(2367));if(R(b,E(2257),0)!==null)L(d,E(2315));return Q(d);},EUX +=(a,b)=>{let c,d,e,f,g,h,i;c=new Cy4;d=BN(Bo(ALL));e=new S;T(e);H(H(e,d),E(2349));f=Q(e);g=K(Bg,18);h=g.data;h[0]=BL();h[1]=Ba(1,E(2257),E(2258));h[2]=Ba(1,E(2350),E(2351));h[3]=Bd();h[4]=Ba(1,E(2352),E(2353));h[5]=D2(E(2354));h[6]=Bc(E(2362));h[7]=Bw();h[8]=Ba(1,E(2378),E(557));h[9]=Bd();h[10]=Bc(E(349));h[11]=Bd();h[12]=Ba(1,E(2379),E(557));h[13]=D2(E(2357));h[14]=(BZn()).bH3;h[15]=Bd();E3();h[16]=Fy;h[17]=BR();f=BT(f,g);HE();d=Q6;HA();e=G0;i=DeA;c.cBJ=a;Iy(c,f,d,e,i);return c;},DiJ=(a,b,c,d,e)=>{let f,g, +h,i,j,k,l,m,n,o,p;f=YL(c,b,Dl(R(d,E(2378),0)));g=YL(c,b,Dl(R(d,E(2379),0)));if(I6(e)>0){h=R(d,E(2350),0)===null?0:1;i=R(d,E(2257),0)===null?0:1;j=Cgu(f,g,e,B1(c.bGM));k=Iw(BZn(),d,c.bGM.bGN);l=Ck(d,E(567),0);if(l!==null){m=FD(l);e=c.bGM;n=K(Kc,2);o=n.data;JN();o[0]=ACf;o[1]=ADy;k=AQL(k,m,e,n);j.b$A=m;}j.bMc=k;j.bOz=BdF(R(d,E(2352),0));if(R(d,E(2245),0)!==null){p=new FZ;b=DF(c.bGM,E(2248));FC();Gb(p,b,FI);j.b4_=Gj(p,R(d,E(2245),0));}if(i)C4g(j);BLB(c,j,h);}return By();},ETn=()=>{BH9=Bv(BB(Bi,[E(2317),E(21),E(760), +E(2370),E(584),E(2373),E(789),E(2376)]));DeA=HO(new B9V);},AKS=N(),BEz=null,Cps=null,AKw=()=>{AKw=Z(AKS);DJM();},EDe=a=>{AKw();},D3A=()=>{let a=new AKS();EDe(a);return a;},BUO=()=>{AKw();CM();return HQ(C6);},FeC=a=>{let b,c,d,e,f,g;b=new CP$;c=BN(Bo(AKS));d=new S;T(d);H(H(d,c),E(583));e=Q(d);f=K(Bg,15);g=f.data;g[0]=BL();g[1]=Ba(1,E(2350),E(2351));g[2]=Bd();g[3]=Ba(1,E(2352),E(2353));g[4]=D2(E(2354));g[5]=Ba(1,E(2381),E(2382));g[6]=D2(E(2357));g[7]=(BUO()).bH3;g[8]=Bd();E3();g[9]=Fy;g[10]=Bd();g[11]=Bc(E(82));g[12] +=Bd();g[13]=Ba(1,E(455),E(566));g[14]=BR();c=BT(e,f);b.cs6=a;Cb(b,c);return b;},CeH=(a,b,c)=>{let d,e,f;d=new S;T(d);e=F9(R(b,E(2352),0));if(Bj(E(760),e))L(d,E(2359));else if(!Bj(E(789),e))L(d,E(2360));else L(d,E(2361));L(d,E(2383));if(c!==null&&!CQ(c)){L(d,E(2366));L(d,c);L(d,E(1268));}f=Ck(b,E(567),0);if(f!==null){L(d,E(2244));L(d,f);}if(R(b,E(608),0)!==null){L(d,E(2228));L(d,R(b,E(608),0));}if(R(b,E(2245),0)!==null)L(d,E(2246));if(R(b,E(2350),0)!==null)L(d,E(2367));if(BG(E(2384),R(b,E(2381),0)))L(d,E(2385));return Q(d);}; +let DLH=(a,b)=>{let c,d,e,f,g,h,i;c=new CP9;d=BN(Bo(AKS));e=new S;T(e);H(H(e,d),E(2349));f=Q(e);g=K(Bg,11);h=g.data;h[0]=BL();h[1]=Ba(1,E(2350),E(2351));h[2]=Bd();h[3]=Ba(1,E(2352),E(2353));h[4]=D2(E(2354));h[5]=Ba(1,E(2381),E(2382));h[6]=D2(E(2357));h[7]=(BUO()).bH3;h[8]=Bd();E3();h[9]=Fy;h[10]=BR();f=BT(f,g);HE();d=Q6;HA();e=G0;i=Cps;c.cvO=a;Iy(c,f,d,e,i);return c;},CIH=(a,b,c,d)=>{let e,f,g,h,i,j,k,l;if(!BG(R(c,E(2381),0),E(2384))){if(I6(d)>0){e=R(c,E(2350),0)===null?0:1;f=Cgu(null,null,d,B1(b.bGM));g=Iw(BUO(), +c,b.bGM.bGN);h=Ck(c,E(567),0);if(h!==null){i=FD(h);h=b.bGM;j=K(Kc,2);k=j.data;JN();k[0]=ACf;k[1]=ADy;g=AQL(g,i,h,j);f.b$A=i;}f.bMc=g;f.bOz=BdF(R(c,E(2352),0));if(R(c,E(2245),0)!==null){l=new FZ;d=DF(b.bGM,E(2248));FC();Gb(l,d,FI);f.b4_=Gj(l,R(c,E(2245),0));}BLB(b,f,e);}return By();}return B5(E(2386));},DJM=()=>{BEz=Bv(BB(Bi,[E(21),E(760),E(2387),E(2388),E(584),E(2389),E(2390),E(789),E(2391),E(2392)]));Cps=HO(new C_J);},Btc=N(Bl),CL_=null,A_H=()=>{A_H=Z(Btc);D7q();},D44=a=>{let b,c,d,e,f,g,h,i,j,k,l;A_H();b= +BN(Bo(Btc));c=K(Bg,6);d=c.data;d[0]=BL();d[1]=Bc(E(716));e=new C0;f=new DD;g=K(Bg,2);h=g.data;i=new Ch;j=K(Bg,2);k=j.data;k[0]=Bw();k[1]=Ba(1,E(657),E(603));Cj(i,j);h[0]=i;l=new Ch;k=K(Bg,2);j=k.data;j[0]=Bw();j[1]=Ba(1,E(659),E(2393));Cj(l,k);h[1]=l;Eb(f,g);C3(e,f);d[2]=e;d[3]=D2(E(567));d[4]=(C76()).bH3;d[5]=BR();Cb(a,BT(b,c));},Eus=()=>{let a=new Btc();D44(a);return a;},C76=()=>{A_H();CM();return HQ(C6);},Fhp=(a,b,c)=>{let d,e,f,g;d=new S;T(d);L(d,E(2394));e=Ck(c,E(563),0);if(e!==null){L(d,E(2395));L(d,e);L(d, +E(1268));}f=R(c,E(567),0);if(f!==null){L(d,E(2244));L(d,f);}g=R(c,E(608),0);if(g!==null){L(d,E(2228));L(d,g);}return Q(d);},EdG=a=>{A_H();return CL_;},DG7=(a,b,c,d,e)=>{let f;b=b;c=Ck(d,E(563),0);R(d,E(608),0);e=R(d,E(567),0);f=null;if(e!==null)f=FD(e);d=Iw(C76(),d,b.bGM.bGN);if(c===null)c=E(14);e=B4(Cf(b),c);CM();c=DQ(d,C6);d=b.bXL;if(d!==null)b.bXL=Di6(d,e,c,f);else b.bXL=Di6(null,e,c,f);return By();},D7q=()=>{let b;b=K(Bi,1);b.data[0]=E(716);CL_=Bv(b);},Bn2=N(Bl),Df7=null,Bg5=()=>{Bg5=Z(Bn2);D_n();},ETW= +a=>{let b,c,d;Bg5();b=BN(Bo(Bn2));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Bc(E(581));d[2]=Bd();d[3]=Bc(E(716));d[4]=BR();Cb(a,BT(b,c));},EhN=()=>{let a=new Bn2();ETW(a);return a;},DT2=(a,b,c)=>{return E(2396);},DVT=a=>{Bg5();return Df7;},DQe=(a,b,c,d,e)=>{b=b;c=b.bXL;if(!(c===null?0:1))b=B5(E(2397));else{if(c===null){b=new BP;X(b);J(b);}b.bXL=c.cgD;b=By();}return b;},D_n=()=>{Df7=Bv(BB(Bi,[E(581),E(2398)]));},BfC=N(Bl),Cr1=null,BR8=null,BaU=()=>{BaU=Z(BfC);DRq();},EzL=a=>{let b,c,d,e,f,g,h;BaU();b=BN(Bo(BfC));c=K(Bg, +6);d=c.data;d[0]=BL();d[1]=Ba(1,E(2257),E(2258));d[2]=Ba(1,E(554),E(2399));d[3]=Ba(2,E(2400),E(2401));e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=Bw();h[1]=Ba(1,E(2402),E(2403));Cj(f,g);C3(e,f);d[4]=e;d[5]=BR();Cb(a,BT(b,c));},D77=()=>{let a=new BfC();EzL(a);return a;},DSa=(a,b,c)=>{let d,e,f,g,h,i;d=new S;T(d);e=F9(R(c,E(554),0));f=R(c,E(2402),0);if(!Bj(E(653),e))g=e;else if(Bs0(f))g=e;else{BaU();h=D3(BR8,f);if(!GW(h))g=e;else{g=El(h,1);f=El(h,2);}}if(Bj(E(581),e))L(d,E(2404));else if(!(!Bj(E(1727),e)&&!Bj(E(2405), +e))){L(d,E(2406));L(d,e);L(d,E(2407));}else{L(d,E(2408));L(d,e);L(d,E(2409));}if(!Bj(g,e)){L(d,E(2410));L(d,g);L(d,E(1268));}if(f!==null&&!CQ(f)){L(d,E(2312));L(d,f);L(d,E(1268));}g=R(c,E(2400),0);if(g!==null){L(d,E(2411));L(d,g);}i=R(c,E(2400),1);if(i!==null){L(d,E(2228));L(d,i);}if(R(c,E(2257),0)!==null)L(d,E(2315));return Q(d);},C8J=(a,b,c)=>{if(b===null)return null;return DV(c,b);},DNS=a=>{BaU();return Cr1;},Efk=(a,b,c,d,e)=>{let f,g,h,i,j,k;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{b=b;e=b.bGM.bGN;c=C8J(a, +R(d,E(2400),0),e);f=C8J(a,R(d,E(2400),1),e);g=F9(R(d,E(554),0));h=R(d,E(2402),0);Vp();RX();i=CXG(g,AVF);j=(-1);switch(FP(i)){case -1799810326:break m;case 96681:break l;case 100571:break k;case 110259:break j;case 110753:break i;case 2997191:break h;case 3116345:break g;case 3327652:break f;case 3433393:break e;case 94001407:break d;case 98629247:break c;case 1952151455:break b;default:}break a;}if(!Bj(i,E(575)))break a;j=8;break a;}if(!Bj(i,E(2412)))break a;j=1;break a;}if(!Bj(i,E(581)))break a;j=11;break a;}if +(!Bj(i,E(2413)))break a;j=0;break a;}if(!Bj(i,E(2414)))break a;j=3;break a;}if(!Bj(i,E(2405)))break a;j=9;break a;}if(!Bj(i,E(1727)))break a;j=10;break a;}if(!Bj(i,E(2415)))break a;j=2;break a;}if(!Bj(i,E(2416)))break a;j=4;break a;}if(!Bj(i,E(2417)))break a;j=5;break a;}if(!Bj(i,E(653)))break a;j=6;break a;}if(Bj(i,E(2418)))j=7;}n:{o:{p:{q:{switch(j){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:i=AXo;break n;case 8:break q;case 9:case 10:break p;case 11:break o;default:}b=new Bt;Bp(b,g);J(b);}i= +X6;break n;}i=ATw;break n;}i=AZU;}if(Bj(E(653),g)){if(Bs0(h))h=E(653);else{e=D3(BR8,h);if(GW(e)){g=El(e,1);h=El(e,2);}}}k=R(d,E(2257),0)===null?0:1;if(!Cv5(i)&&!b.cbN.bGJ)k=0;else{if(f===null){f=b.bGM;JN();d=Blk;e=null;f=Bju(f,d,e,0);}d=b.cbN;d=d.bGJ<=0?null:Be(d,0);r:{s:{BXw();switch(DaN.data[i.bGO]){case 1:case 2:break;default:break s;}e=new B5a;CRz(e,g,h,i,c,B1(b.bGM));e.c3O=Bk();e.cvR=0;e.cpw=f;e.dbm=d;break r;}e=new AYJ;CRz(e,g,h,i,c,B1(b.bGM));e.cDY=Bk();e.c3b=f;e.cAy=B$(d);U(d.c3O,e);}U(b.bJZ,e);if(Cv5(i)) +{if(k)e.cvR=1;b=b.cbN;c=e;Ik(b,0,c);}else if(i===AZU){EJ(b.cbN,0);b.b1B=e;}k=1;}return k?By():B5(E(2419));},DRq=()=>{Cr1=Bv(BB(Bi,[E(2317),E(2405),E(2412),E(2417),E(2418),E(1727),E(581),E(653),E(2415),E(2413),E(2414),E(575)]));BR8=Dp(E(2420));},BDg=N(Bl),EAC=a=>{let b,c,d;b=BN(Bo(BDg));c=K(Bg,7);d=c.data;d[0]=BL();d[1]=Ba(1,E(563),E(666));d[2]=Bd();d[3]=Ba(1,E(554),E(2421));d[4]=Bd();d[5]=Ba(1,E(608),E(559));d[6]=BR();Cb(a,BT(b,c));},DBu=()=>{let a=new BDg();EAC(a);return a;},EXB=a=>{FY();return G6;},E46=(a, +b,c)=>{let d,e,f,g;d=new S;T(d);e=Bj(R(c,E(554),0),E(2422));f=R(c,E(563),0);if(!e){L(d,E(2225));L(d,f);L(d,E(2423));}else{L(d,E(2224));L(d,f);L(d,E(2424));}g=R(c,E(608),0);if(g!==null){L(d,E(2228));L(d,g);}return Q(d);},EZ7=(a,b,c,d,e)=>{let f;b=b;if(!Bj(R(d,E(554),0),E(2422))){Hy();f=PX;}else{Hy();f=Ri;}c=YL(b,c,R(d,E(563),0));d=R(d,E(608),0);b=NW(b,c,f,d===null?null:DV(b.bGM.bGN,d));return b!==null?B5(b):By();},Bb0=N(Bl),BIA=null,A8I=()=>{A8I=Z(Bb0);DTl();},EUH=a=>{let b,c,d,e,f,g,h;A8I();b=BN(Bo(Bb0));c= +K(Bg,8);d=c.data;d[0]=BL();d[1]=Ba(1,E(2257),E(2258));d[2]=Bd();d[3]=Bc(E(1721));d[4]=Bd();e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=Ba(1,E(608),E(561));h[1]=Bw();Cj(f,g);C3(e,f);d[5]=e;d[6]=Ba(1,E(2297),E(566));d[7]=BR();Cb(a,BT(b,c));},EuX=()=>{let a=new Bb0();EUH(a);return a;},EDV=(a,b,c)=>{let d,e,f;d=new S;T(d);L(d,E(2425));e=R(c,E(2297),0);if(e!==null&&!CQ(e)){L(d,E(2366));L(d,e);L(d,E(1268));}f=R(c,E(608),0);if(f!==null){L(d,E(2426));L(d,f);}if(R(c,E(2257),0)!==null)L(d,E(2315));return Q(d);},Fbp=a=> +{A8I();return BIA;},E9y=a=>{A8I();return BIA;},Ey_=(a,b,c,d,e)=>{let f,g,h,i,j,k;a:{b=b;f=CRI(b);g=1;if(f===null){g=b.bJZ.bGJ-1|0;b:{c:{while(g>=0){if(F0(Be(b.bJZ,g),A_B))break c;g=g+(-1)|0;}e=null;break b;}e=Be(b.bJZ,g);}if(!(e instanceof AGU)){c=B5(E(2427));break a;}f=e;g=0;}e=f.bWj;SV();h=AU2(e,ABL);e=R(d,E(608),0);if(e!==null)h=Cy3(h,DV(KI(),e));i=B4(Cf(b),R(d,E(2297),0));if(!(f instanceof AGO)){j=ChQ(B1(b.bGM),f.Fq(),f.GG(),i,h,Ben(b),c);if(R(d,E(2257),0)===null?0:1)B2c(j);}else{d:{e:{f:{g:{d=f;j=new AGO;e +=B1(b.bGM);k=d.bVI;switch(d.bRm.bGO){case 0:KK();d=Ug;break d;case 1:break g;case 2:break f;case 3:break e;default:}b=new BP;X(b);J(b);}KK();d=Xk;break d;}KK();d=WE;break d;}KK();d=Xa;}CTx(j,e,k,d,i,h,Ben(b),0,c);}c=BRc(b,j);if(OI(c)){h:{if(g){c=f.Fq();Hy();b=NW(b,c,PX,null);if(b!==null)break h;}c=By();break a;}c=B5(b);}}return c;},DTl=()=>{BIA=Bv(BB(Bi,[E(2317),E(1721)]));},ANz=N(); +let BS1=null,B9y=null,AN4=()=>{AN4=Z(ANz);Et3();},FvS=a=>{AN4();},FuE=()=>{let a=new ANz();FvS(a);return a;},EnB=a=>{let b,c,d,e,f,g;b=new Czq;c=BN(Bo(ANz));d=new S;T(d);H(H(d,c),E(583));e=Q(d);f=K(Bg,14);g=f.data;g[0]=BL();g[1]=Bd();g[2]=Ba(1,E(2352),E(2353));g[3]=D2(E(2354));g[4]=Ba(1,E(585),E(2428));g[5]=D2(E(2357));g[6]=Kp();g[7]=Bd();E3();g[8]=Fy;g[9]=Bd();g[10]=Bc(E(82));g[11]=Bd();g[12]=Ba(1,E(455),E(566));g[13]=BR();c=BT(e,f);b.cGy=a;Cb(b,c);return b;},CO_=(a,b,c)=>{let d,e,f,g;d=new S;T(d);e=F9(R(b, +E(2352),0));if(Bj(E(760),e))L(d,E(2359));else if(!Bj(E(789),e))L(d,E(2360));else L(d,E(2361));f=F9(R(b,E(585),0));if(Bj(E(2429),f))L(d,E(2430));else if(Bj(E(1803),f))L(d,E(2431));else{L(d,E(2364));L(d,f);L(d,E(2432));}if(c!==null&&!CQ(c)){L(d,E(2366));L(d,c);L(d,E(1268));}g=Ck(b,E(567),0);if(g!==null){L(d,E(2244));L(d,g);}if(R(b,E(608),0)!==null){L(d,E(2228));L(d,R(b,E(608),0));}if(R(b,E(2245),0)!==null)L(d,E(2246));return Q(d);},EO1=(a,b)=>{let c,d,e,f,g,h,i;c=new Czo;d=BN(Bo(ANz));e=new S;T(e);H(H(e,d),E(2349));f +=Q(e);g=K(Bg,10);h=g.data;h[0]=BL();h[1]=Bd();h[2]=Ba(1,E(2352),E(2353));h[3]=D2(E(2354));h[4]=Ba(1,E(585),E(2428));h[5]=D2(E(2357));h[6]=Kp();h[7]=Bd();E3();h[8]=Fy;h[9]=BR();f=BT(f,g);HE();d=Q6;HA();e=G0;AN4();i=B9y;c.csm=a;Iy(c,f,d,e,i);return c;},CQH=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r;e=b.bJZ.bGJ-1|0;a:{b:{while(e>=0){if(F0(Be(b.bJZ,e),A0$))break b;e=e+(-1)|0;}f=null;break a;}f=Be(b.bJZ,e);}if(f!==null){g=BUS(J3(R(c,E(585),0)));h=null;if(R(c,E(2245),0)!==null){i=new FZ;j=DF(b.bGM,E(2248));FC();Gb(i, +j,FI);h=Gj(i,R(c,E(2245),0));}k=BdF(R(c,E(2352),0));l=R(c,E(608),0);j=Qd();CM();m=Lg(j,C6,l===null?null:DV(KI(),l));j=BFL(null,null,g,d,B1(b.bGM));j.bOz=k;n=Ck(c,E(567),0);if(n!==null){o=FD(n);d=b.bGM;p=K(Kc,2);q=p.data;JN();q[0]=ACf;q[1]=ADy;m=AQL(m,o,d,p);j.b$A=o;}j.b4_=h;j.bMc=m;r=f.GH(j);Nk(b,r);return By();}return By();},Et3=()=>{BS1=Bv(BB(Bi,[E(760),E(2433),E(2369),E(2371),E(2434),E(584),E(2435),E(2372),E(2374),E(2436),E(789),E(2437),E(2375),E(2377),E(2438)]));B9y=HO(new CZA);},BhA=N(Bl),C$h=null,Bm3= +()=>{Bm3=Z(BhA);EL_();},Eei=a=>{let b,c,d,e,f,g,h;Bm3();b=BN(Bo(BhA));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Bc(E(2439));d[2]=Bc(E(773));e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=Bc(E(2440));h[1]=Ba(1,E(470),E(2441));Cj(f,g);C3(e,f);d[3]=e;d[4]=BR();Cb(a,BT(b,c));},E8Z=()=>{let a=new BhA();Eei(a);return a;},FdX=(a,b,c)=>{let d,e;d=new S;T(d);L(d,E(2442));e=R(c,E(470),0);if(e!==null){L(d,E(2395));L(d,e);L(d,E(1268));}return Q(d);},FqD=a=>{Bm3();return C$h;},ELR=(a,b,c,d,e)=>{let f;b=b;d=R(d,E(470),0);if(d!==null)f +=B4(Cf(b),d);else{HW();f=Lu;}B3();d=CO;Fa();c=AMI(c,f,d,NH);if(!b.cvw){U(b.c0v,c);c=b.bJZ;d=new BSO;e=B1(b.bGM);FX();d.cN9=B0(e,XD(AQB));U(c,d);b.crS=b.crS+1|0;}return By();},EL_=()=>{C$h=Bv(BB(Bi,[E(2443),E(773)]));},BA2=N(Bl),Cdw=null,BrK=()=>{BrK=Z(BA2);Eqf();},FuN=a=>{let b,c,d;BrK();b=BN(Bo(BA2));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Bc(E(2444));d[2]=Bd();d[3]=Bc(E(773));d[4]=BR();Cb(a,BT(b,c));},Fi6=()=>{let a=new BA2();FuN(a);return a;},EHN=(a,b,c)=>{return E(2445);},FeA=a=>{BrK();return Cdw;},DQI=(a,b,c, +d,e)=>{b.cvw=1;return By();},Eqf=()=>{Cdw=Bv(BB(Bi,[E(2444),E(2446)]));},Bo0=N(Bl),ChW=null,Bws=()=>{Bws=Z(Bo0);DC5();},DGk=a=>{let b,c,d;Bws();b=BN(Bo(Bo0));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Bc(E(2447));d[2]=Bw();d[3]=Ba(1,E(696),E(2448));d[4]=BR();Cb(a,BT(b,c));},E5h=()=>{let a=new Bo0();DGk(a);return a;},E9s=(a,b,c)=>{let d;d=R(c,E(696),0);b=new S;T(b);H(H(H(b,E(2449)),d),E(2450));return Q(b);},EUN=a=>{Bws();return ChW;},Edo=(a,b,c,d,e)=>{CZ(R(d,E(696),0));return By();},DC5=()=>{let b;b=K(Bi,1);b.data[0] +=E(2447);ChW=Bv(b);},BAE=N(Bl),Dk7=null,Bth=()=>{Bth=Z(BAE);EBL();},DFO=a=>{let b,c,d;Bth();b=BN(Bo(BAE));c=K(Bg,7);d=c.data;d[0]=BL();d[1]=Bc(E(2451));d[2]=Bd();d[3]=Ba(1,E(470),E(566));d[4]=Bd();d[5]=Bc(E(2451));d[6]=BR();Cb(a,BT(b,c));},E9A=()=>{let a=new BAE();DFO(a);return a;},DSF=(a,b,c)=>{let d,e;d=new S;T(d);L(d,E(2452));e=R(c,E(470),0);if(e!==null&&!CQ(e)){L(d,E(2366));L(d,e);L(d,E(1268));}return Q(d);},D_l=a=>{Bth();return Dk7;},FfJ=(a,b,c,d,e)=>{b=b;c=B4(Cf(b),R(d,E(470),0));d=new B80;e=B1(b.bGM);d.c19 +=c;FX();d.cWg=B0(e,XD(ALB));U(b.bJZ,d);b.b1B=d;return By();},EBL=()=>{let b;b=K(Bi,1);b.data[0]=E(684);Dk7=Bv(b);},Bf3=N(Bl),CLC=null,BnO=()=>{BnO=Z(Bf3);Elc();},Ezb=a=>{let b,c,d;BnO();b=BN(Bo(Bf3));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Bc(E(2453));d[2]=Ba(1,E(696),E(2454));d[3]=Bc(E(2455));d[4]=BR();Cb(a,BT(b,c));}; +let Fan=()=>{let a=new Bf3();Ezb(a);return a;},DEi=(a,b,c)=>{let d,e;d=new S;T(d);L(d,E(2456));e=R(c,E(696),0);if(TC(e)){L(d,E(2457));L(d,e);L(d,E(1965));}return Q(d);},E5G=a=>{BnO();return CLC;},Emm=(a,b,c,d,e)=>{let f;b=b;c=R(d,E(696),0);if(!TC(c)){c=b.bJZ;b=Cs_(25);U(c,b);}else{f=CZ(c);c=b.bJZ;b=Cs_(f);U(c,b);}return By();},Elc=()=>{let b;b=K(Bi,1);b.data[0]=E(2054);CLC=Bv(b);},BqH=N(Bl),CZB=null,Blz=()=>{Blz=Z(BqH);Ds5();},Eyr=a=>{let b,c,d;Blz();b=BN(Bo(BqH));c=K(Bg,14);d=c.data;d[0]=BL();d[1]=Bc(E(2458));d[2] +=Ba(1,E(2459),E(559));d[3]=Bw();d[4]=Bc(E(2362));d[5]=Bw();d[6]=Ba(4,E(2460),E(2461));d[7]=Bd();d[8]=DI(Ba(1,E(2245),E(2462)));d[9]=Bd();d[10]=Bc(E(82));d[11]=Bd();d[12]=Ba(1,E(849),E(566));d[13]=BR();Cb(a,BT(b,c));},FnJ=()=>{let a=new BqH();Eyr(a);return a;},DN7=(a,b,c)=>{let d,e,f,g,h;d=new S;T(d);L(d,E(2463));e=BgG(R(c,E(2460),0));f=0;while(f0)L(d,f!=(e.dV()-1|0)?E(50):E(2464));L(d,E(1762));L(d,Dl(e.cf(f)));L(d,E(1762));f=f+1|0;}g=ES(R(c,E(849),0));if(!CQ(g)){L(d,E(2366));L(d,g);L(d,E(1268));}h +=R(c,E(2459),0);if(h!==null){L(d,E(2228));L(d,h);}if(R(c,E(2245),0)!==null)L(d,E(2246));return Q(d);},DAG=a=>{Blz();return CZB;},D5M=(a,b,c,d,e)=>{let f,g,h,i;b=b;e=R(d,E(2459),0);e=e===null?null:DV(b.bGM.bGN,e);f=BgG(R(d,E(2460),0));g=R(d,E(2245),0);d=ES(R(d,E(849),0));h=Bk();f=f.dX();while(f.dY()){i=YL(b,c,Dl(f.dZ()));U(h,i);}c=B4(Cf(b),d);d=new FZ;f=DF(b.bGM,E(2248));FC();Gb(d,f,FI);f=null;if(g!==null)f=Gj(d,g);CmN(b,C$6(h,f,c,null,e,B1(b.bGM)));return By();},Ds5=()=>{let b;b=K(Bi,1);b.data[0]=E(2458);CZB +=Bv(b);}; +function Xj(){let a=this;F.call(a);a.b1S=null;a.cW7=null;} +let A54=(a,b,c)=>{a.b1S=b;a.cW7=c;},EOP=(a,b)=>{if(O7(DX(a.b1S,(C8(DB(b))).bGP,0))){if(Dq(b)!=1){if(!O7(DX(a.cW7,(C8(L9(b))).bGP,0))){F5();return Oo;}return ENZ(a);}F5();return Oo;}F5();return KS;},ENZ=a=>{F5();return PY;},EV4=(a,b)=>{Jx();return b!==JB?0:1;},EQv=a=>{return B9e(a.b1S.b$n);},BgQ=N(Xj),B_U=null,Bwb=null,AWL=()=>{AWL=Z(BgQ);E$_();},E1z=a=>{AWL();A54(a,Dm((BMw(Bwb)).b$n),Dm(E(2465)));},E6Q=()=>{let a=new BgQ();E1z(a);return a;},Ev_=(a,b)=>{let c,d,e,f,g,h,i;AWL();c=Bwb;d=(C8(DB(b))).bGP;c=Ei(c, +d);if(c!==null){d=new S;T(d);L(d,E(2463));e=BgG(R(c,E(2460),0));f=0;while(f0)L(d,f!=(e.dV()-1|0)?E(50):E(2464));L(d,E(1762));L(d,Dl(e.cf(f)));L(d,E(1762));f=f+1|0;}g=R(c,E(2459),0);if(g!==null){L(d,E(2228));L(d,g);}if(R(c,E(2245),0)!==null)L(d,E(2246));h=R(c,E(2466),0);if(h!==null){L(d,E(2467));L(d,h);L(d,E(2251));}i=Dq(b)<=2?0:Dq(b)-2|0;if(i>0){L(d,E(2468));BE(d,i);L(d,i!=1?E(2253):E(2254));L(d,E(2255));}return Q(d);}return E(2469);},DL2=a=>{AWL();return B_U;},DCD=(a,b,c,d)=>{let e,f,g,h;b=b;e +=(C8(DB(c))).bGP;AWL();d=Ei(Bwb,e);if(d===null){b=new S;T(b);H(H(b,E(1768)),e);b=B5(Q(b));}else{e=R(d,E(2459),0);e=e===null?null:DV(b.bGM.bGN,e);f=BgG(R(d,E(2460),0));g=Bk();h=f.dX();while(h.dY()){f=h.dZ();f=YL(b,I5(c),Dl(f));U(g,f);}h=Ig(JL(HI(c,1,1)));c=R(d,E(2245),0);d=new FZ;f=DF(b.bGM,E(2248));FC();Gb(d,f,FI);f=null;if(c!==null)f=Gj(d,c);CmN(b,C$6(g,f,h,null,e,B1(b.bGM)));b=By();}return b;},E$_=()=>{let b,c,d;b=K(Bi,1);b.data[0]=E(2458);B_U=Bv(b);c=BN(Bo(BgQ));b=K(Bg,12);d=b.data;d[0]=BL();d[1]=Bc(E(2458));d[2] +=Ba(1,E(2459),E(559));d[3]=Bw();d[4]=Bc(E(2362));d[5]=Bw();d[6]=Ba(1,E(2460),E(2470));d[7]=Bd();d[8]=DI(Ba(1,E(2245),E(2462)));d[9]=Bd();d[10]=Ba(1,E(2466),E(559));d[11]=BR();Bwb=BT(c,b);},BxJ=N(Bl),CRx=null,BA1=()=>{BA1=Z(BxJ);DBt();},D8I=a=>{let b,c,d,e,f,g,h,i;BA1();b=BN(Bo(BxJ));c=K(Bg,8);d=c.data;d[0]=BL();d[1]=Bc(E(2471));d[2]=Bd();d[3]=Ba(1,E(2472),E(2473));e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=Bw();h[1]=Ba(1,E(2474),E(2448));Cj(f,g);C3(e,f);d[4]=e;i=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=Bw();h[1] +=Ba(1,E(2475),E(603));Cj(f,g);C3(i,f);d[5]=i;d[6]=Bd();d[7]=BR();Cb(a,BT(b,c));},EQE=()=>{let a=new BxJ();D8I(a);return a;},DIr=(a,b,c)=>{let d,e,f,g;d=new S;T(d);L(d,E(2476));e=R(c,E(2472),0);if(e!==null){L(d,E(2006));L(d,e);}f=R(c,E(2474),0);if(f!==null){L(d,E(2477));L(d,f);}g=R(c,E(2475),0);if(g!==null){L(d,E(2478));L(d,g);L(d,E(1268));}return Q(d);},EtV=a=>{BA1();return CRx;},DFe=(a,b,c,d,e)=>{let f,$$je;b=b;e=COE(E(360));c=R(d,E(2472),0);if(c!==null)e=COE(c);f=1;c=R(d,E(2474),0);if(c!==null)f=CZ(c);c=R(d, +E(2475),0);if(c===null)c=E(2479);a:{b:{try{d=CGy(c);break b;}catch($$e){$$je=P($$e);if($$je instanceof Bt){}else{throw $$e;}}b=new S;T(b);H(H(b,E(2480)),c);b=B5(Q(b));break a;}b=b.bU9;b.b8m=1;b.b9R=e;b.cBV=f;b.cmU=d;b=By();}return b;},DBt=()=>{let b;b=K(Bi,1);b.data[0]=E(2471);CRx=Bv(b);},Bhi=N(Bl),C5R=null,BiS=()=>{BiS=Z(Bhi);EId();},E3T=a=>{let b,c,d;BiS();b=BN(Bo(Bhi));c=K(Bg,6);d=c.data;d[0]=BL();d[1]=Bc(E(2471));d[2]=Bw();d[3]=Bc(E(750));d[4]=Bd();d[5]=BR();Cb(a,BT(b,c));},D81=()=>{let a=new Bhi();E3T(a);return a;},EDB +=(a,b,c)=>{return E(2481);},Enf=a=>{BiS();return C5R;},D5T=(a,b,c,d,e)=>{b.bU9.b8m=0;return By();},EId=()=>{let b;b=K(Bi,1);b.data[0]=E(2471);C5R=Bv(b);},Bg$=N(Bl),CIv=null,Bfl=()=>{Bfl=Z(Bg$);EpB();},E7y=a=>{let b,c,d,e,f,g,h,i,j;Bfl();b=BN(Bo(Bg$));c=K(Bg,8);d=c.data;d[0]=BL();d[1]=Bc(E(2471));d[2]=Bw();d[3]=Bc(E(2482));d[4]=Bd();e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=Bw();h[1]=Ba(1,E(2483),E(2448));Cj(f,g);C3(e,f);d[5]=e;i=new C0;j=new Ch;g=K(Bg,2);h=g.data;h[0]=Bw();h[1]=Ba(1,E(2484),E(603));Cj(j,g);C3(i, +j);d[6]=i;d[7]=BR();Cb(a,BT(b,c));},Evr=()=>{let a=new Bg$();E7y(a);return a;},Fbm=(a,b,c)=>{let d,e,f;d=new S;T(d);L(d,E(2485));e=R(c,E(2483),0);if(e!==null){L(d,E(2477));L(d,e);}f=R(c,E(2484),0);if(f!==null){L(d,E(2478));L(d,f);L(d,E(1268));}return Q(d);},DM4=a=>{Bfl();return CIv;},EYt=(a,b,c,d,e)=>{let f,$$je;a:{b=b;c=R(d,E(2484),0);e=null;if(c!==null)b:{try{e=CGy(c);break b;}catch($$e){$$je=P($$e);if($$je instanceof Bt){}else{throw $$e;}}b=new S;T(b);H(H(b,E(2480)),c);b=B5(Q(b));break a;}c=R(d,E(2483),0);if +(c===null){b=b.bU9;b.b8m=1;if(e!==null)b.cmU=e;}else{b=b.bU9;f=CZ(c);b.b8m=1;b.cBV=f;if(e!==null)b.cmU=e;}b=By();}return b;},EpB=()=>{let b;b=K(Bi,1);b.data[0]=E(2471);CIv=Bv(b);},Bgk=N(Bl),Cun=null,BqJ=()=>{BqJ=Z(Bgk);D5N();},EPi=a=>{let b,c,d,e,f,g,h;BqJ();b=BN(Bo(Bgk));c=K(Bg,7);d=c.data;d[0]=BL();d[1]=Bc(E(2471));d[2]=Bw();d[3]=Bc(E(2486));e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=Bw();h[1]=Ba(1,E(2487),E(2488));Cj(f,g);C3(e,f);d[4]=e;d[5]=Bd();d[6]=BR();Cb(a,BT(b,c));},DSe=()=>{let a=new Bgk();EPi(a);return a;},EBS +=(a,b,c)=>{let d,e,f;d=new S;T(d);e=R(c,E(2487),0);if(e===null)L(d,E(2489));else{f=B2o(Bn(e,0))-97|0;L(d,E(2490));L(d,e);L(d,E(2491));BE(d,f+1|0);L(d,E(2492));}L(d,E(2493));return Q(d);},D4k=a=>{BqJ();return Cun;},EbY=(a,b,c,d,e)=>{let f,g;b=b;c=R(d,E(2487),0);if(c!==null){f=B2o(Bn(c,0))-97|0;Co2(b.bU9.b9R,f);}else{b=b.bU9.b9R;g=b.bYG.bGJ;Co2(b,g==1?0:g-2|0);}return By();}; +let D5N=()=>{let b;b=K(Bi,1);b.data[0]=E(2471);Cun=Bv(b);},BoX=N(Bl),B_$=null,BqG=()=>{BqG=Z(BoX);EaB();},ES9=a=>{let b,c,d;BqG();b=BN(Bo(BoX));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Bc(E(2494));d[2]=Bw();d[3]=Ba(1,E(2495),E(2496));d[4]=BR();Cb(a,BT(b,c));},DFd=()=>{let a=new BoX();ES9(a);return a;},Dxw=(a,b,c)=>{if(BG(E(1842),R(c,E(2495),0)))return E(2497);return E(2498);},D3s=a=>{BqG();return B_$;},Eug=(a,b,c,d,e)=>{b.c02=BG(E(1842),R(d,E(2495),0));return By();},EaB=()=>{let b;b=K(Bi,1);b.data[0]=E(2494);B_$=Bv(b);},BrR +=N(Bl),C5X=null,BYA=null,AZH=()=>{AZH=Z(BrR);E17();},DSK=a=>{AZH();Cb(a,BYA);},EzG=()=>{let a=new BrR();DSK(a);return a;},E8J=(a,b,c)=>{if(BG(E(2222),R(c,E(554),0)))return E(2499);return E(2500);},EhB=a=>{AZH();return C5X;},EPb=(a,b,c,d,e)=>{b.cpR=BG(E(2222),R(d,E(554),0));return By();},E17=()=>{let b,c,d;C5X=Bv(BB(Bi,[E(571),E(2219),E(2501),E(2222),E(2502)]));b=BN(Bo(BrR));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Ba(1,E(554),E(2503));d[2]=Bd();d[3]=Bc(E(571));d[4]=BR();BYA=BT(b,c);},Bkf=N(Bl),CqB=null,BlD=()=>{BlD +=Z(Bkf);DS3();},EGk=a=>{let b,c,d;BlD();b=BN(Bo(Bkf));c=K(Bg,4);d=c.data;d[0]=BL();d[1]=Bc(E(2504));d[2]=DI(Ba(1,E(470),E(2505)));d[3]=BR();Cb(a,BT(b,c));},EWU=()=>{let a=new Bkf();EGk(a);return a;},D1r=(a,b,c)=>{let d,e;d=new S;T(d);L(d,E(2506));e=R(c,E(470),0);if(e!==null){L(d,E(2366));L(d,e);L(d,E(1268));}return Q(d);},DGY=a=>{BlD();return CqB;},E43=(a,b,c,d,e)=>{b=b;c=R(d,E(470),0)===null?Yu():B4(Cf(b),R(d,E(470),0));d=new BW0;e=B1(b.bGM);d.cUB=c;FX();d.cQ7=B0(e,XD(AMX));U(b.bJZ,d);b.cAV=d;return By();},DS3 +=()=>{CqB=Bv(BB(Bi,[E(423),E(2507)]));},Buk=N(Bl),C0z=null,Bq6=()=>{Bq6=Z(Buk);Eb8();},Fda=a=>{let b,c,d;Bq6();b=BN(Bo(Buk));c=K(Bg,6);d=c.data;d[0]=BL();d[1]=Bc(E(571));d[2]=Bd();d[3]=Ba(1,E(554),E(2508));d[4]=Bd();d[5]=BR();Cb(a,BT(b,c));},EMX=()=>{let a=new Buk();Fda(a);return a;},D4S=(a,b,c)=>{if(BG(E(1842),R(c,E(554),0)))return E(2499);return E(2500);},D1o=a=>{Bq6();return C0z;},D$Y=(a,b,c,d,e)=>{b.cpR=BG(R(d,E(554),0),E(1842));return By();},Eb8=()=>{C0z=Bv(BB(Bi,[E(571),E(2509),E(2510)]));},Btp=N(Bl),Dc5 +=null,Bke=()=>{Bke=Z(Btp);EOC();},Dzp=a=>{let b,c,d;Bke();b=BN(Bo(Btp));c=K(Bg,11);d=c.data;d[0]=BL();d[1]=Bc(E(1248));d[2]=Bd();d[3]=DI(Bc(E(2511)));d[4]=Bw();d[5]=Ba(1,E(594),E(557));d[6]=Bw();d[7]=DI(Bc(E(2512)));d[8]=Bd();E3();d[9]=BOr;d[10]=BR();Cb(a,BT(b,c));},EnQ=()=>{let a=new Btp();Dzp(a);return a;},DTB=(a,b,c)=>{let d,e,f;d=new S;T(d);e=R(c,E(594),0);L(d,E(2513));L(d,e);L(d,E(1762));f=R(c,E(2245),0);if(f!==null){L(d,E(7));L(d,f);}return Q(d);},Eox=a=>{Bke();return Dc5;},D9h=(a,b,c,d,e)=>{b=b;e=R(d, +E(594),0);d=R(d,E(2245),0);c=YL(b,c,e);e=new FZ;b=DF(b.bGM,E(2248));FC();Gb(e,b,FI);c.cbn=Gj(e,d);return By();},EOC=()=>{Dc5=Bv(BB(Bi,[E(1248),E(2514),E(2515)]));},Bik=N(Bl),DnF=null,Bn9=()=>{Bn9=Z(Bik);DIB();}; +let EeF=a=>{let b,c,d;Bn9();b=BN(Bo(Bik));c=K(Bg,9);d=c.data;d[0]=BL();d[1]=Ba(1,E(2516),E(2517));d[2]=Bd();d[3]=Ba(0,E(642),E(2518));d[4]=Bd();d[5]=Ba(1,E(2519),E(2517));d[6]=Bd();d[7]=Ba(1,E(2297),E(2298));d[8]=BR();Cb(a,BT(b,c));},EMn=()=>{let a=new Bik();EeF(a);return a;},DYZ=(a,b,c)=>{let d,e;d=new S;T(d);L(d,E(2520));L(d,R(c,E(2516),0));L(d,E(2521));L(d,R(c,E(2519),0));L(d,E(1762));e=R(c,E(2297),0);if(e!==null&&!CQ(e)){L(d,E(2312));L(d,e);L(d,E(1268));}return Q(d);},EmP=a=>{Bn9();return DnF;},Esc=(a,b, +c,d,e)=>{let f;b=b;c=R(d,E(2516),0);e=R(d,E(2519),0);d=R(d,E(2297),0);f=b.cIw;b=new Cet;b.cGN=c;b.cGM=e;b.cEZ=d;U(f,b);return By();},DIB=()=>{let b;b=K(Bi,1);b.data[0]=E(580);DnF=Bv(b);},BAs=N(Bl),C9P=null,Bo3=()=>{Bo3=Z(BAs);DBV();},Efb=a=>{let b,c,d;Bo3();b=BN(Bo(BAs));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=LZ(1,E(2503));d[2]=Bd();d[3]=Bc(E(571));d[4]=BR();Cb(a,BT(b,c));},AXU=()=>{let a=new BAs();Efb(a);return a;},DZd=(a,b,c)=>{return E(2522);},DUk=a=>{Bo3();return C9P;},Fvc=(a,b,c,d,e)=>{return By();},DBV=()=> +{C9P=Bv(BB(Bi,[E(571),E(2219),E(2501),E(2222),E(2502)]));},Blm=N(Bl),CuL=null,Bp3=()=>{Bp3=Z(Blm);EHc();},FgC=a=>{let b,c,d;Bp3();b=BN(Bo(Blm));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Ba(1,E(572),E(2523));d[2]=Bw();d[3]=Bc(E(574));d[4]=BR();Cb(a,BT(b,c));},BvM=()=>{let a=new Blm();FgC(a);return a;},Ep2=(a,b,c)=>{b=F9(R(c,E(572),0));c=new S;T(c);H(H(c,E(2524)),b);return Q(c);},E7j=a=>{Bp3();return CuL;},EiC=(a,b,c,d,e)=>{b=b;c=KG(J3(R(d,E(572),0)),32,95);b.bGM.bNy=CHG(c);return By();},EHc=()=>{CuL=Bv(BB(Bi,[E(1273), +E(2429)]));}; +function BjQ(){Bl.call(this);this.cN8=null;} +let CkU=null,Boe=()=>{Boe=Z(BjQ);E4j();},EJn=(a,b)=>{let c,d,e;Boe();c=BN(Bo(BjQ));d=K(Bg,3);e=d.data;e[0]=BL();e[1]=Bc(E(773));e[2]=BR();Cb(a,BT(c,d));a.cN8=b;},CDD=a=>{let b=new BjQ();EJn(b,a);return b;},ELQ=(a,b,c)=>{return E(2525);},E8k=a=>{Boe();return CkU;},FvV=(a,b,c,d,e)=>{let f;b=b;f=AFi(b.bGM,E(2526),96);if(f<=0)f=96;c=a.cN8.mG(AKY(),b.bU8,Fey(b),b.bUc);if(f!=96){e=new S;T(e);BE(e,f);B1l(c,E(2526),Q(e));}d=new Bbz;AIR(d,b.bU8,b.bUc);e=Bk();d.bRG=e;if(!(b instanceof Bbz)){if(!(c instanceof Bbz)){U(e, +b);U(d.bRG,c);return AKa(d,null,0,null);}b=new Bt;X(b);J(b);}b=new Bt;X(b);J(b);},E4j=()=>{let b;b=K(Bi,1);b.data[0]=E(773);CkU=Bv(b);},B7a=N(Bl),DSm=a=>{FY();return G6;},EAX=(a,b,c)=>{let d;d=Dl(R(c,E(563),0));b=R(c,E(565),0);c=new S;T(c);H(H(H(H(H(c,E(2527)),b),E(2528)),d),E(2529));return Q(c);},D7m=(a,b,c,d,e)=>{let f,g;b=b;e=R(d,E(563),0);f=DA(b,1,E8(b,e));e=f.bG5;if(e===null){g=ACN(f);Cy();e=ED(b,c,f,g,NG,null);}c=R(d,E(565),0);if(c.bGI.length>0&&AIW(c))b.cuC=1;e.bKL.G0(c);return By();},BcP=N(Bl),Cc_=null,BxT +=()=>{BxT=Z(BcP);D8J();},En3=a=>{let b,c,d;BxT();b=BN(Bo(BcP));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Ba(1,E(2530),E(2531));d[2]=Bw();d[3]=Ba(1,E(2532),E(2533));d[4]=BR();Cb(a,BT(b,c));},BTN=()=>{let a=new BcP();En3(a);return a;},Eaf=(a,b,c)=>{let d,e,f;d=new S;T(d);e=Bn(R(c,E(2530),0),0);L(d,!(!(e!=115&&e!=83)?1:0)?E(2534):E(2535));f=Dk(R(c,E(2532),0));if(BO(f,E(1775))){L(d,E(2536));L(d,f);}else{L(d,E(2537));L(d,f);L(d,E(1762));}if(CB(R(c,E(2530),0),E(1272)))L(d,E(2538));return Q(d);},Dz6=a=>{BxT();return Cc_;},FbD +=(a,b,c,d,e)=>{let f;b=b;f=Bn(R(d,E(2530),0),0);f=!(f!=115&&f!=83)?1:0;Dma(b,Dk(R(d,E(2532),0)),f);return By();},D8J=()=>{Cc_=Bv(BB(Bi,[E(2219),E(2222)]));},BwU=N(Bl),DqT=null,BAD=()=>{BAD=Z(BwU);Eat();},E_f=a=>{let b,c,d;BAD();b=BN(Bo(BwU));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Ba(1,E(2530),E(2539));d[2]=Bw();d[3]=Ba(1,E(2532),E(2540));d[4]=BR();Cb(a,BT(b,c));},B31=()=>{let a=new BwU();E_f(a);return a;},EZG=(a,b,c)=>{let d,e;d=new S;T(d);L(d,!BG(R(c,E(2530),0),E(2541))?E(2542):E(2543));e=Dk(R(c,E(2532),0));if(BO(e, +E(1775))){L(d,E(2536));L(d,e);}else{L(d,E(2537));L(d,e);L(d,E(1762));}return Q(d);},Et4=a=>{BAD();return DqT;},EZM=(a,b,c,d,e)=>{let f;b=b;f=BG(R(d,E(2530),0),E(2541));D_F(b,Dk(R(d,E(2532),0)),f);return By();},Eat=()=>{DqT=Bv(BB(Bi,[E(2544),E(2541)]));},Bml=N(EP),CjL=null,EEU=null,AZ7=null,Csd=null,Cdr=0,Zb=()=>{Zb=Z(Bml);Fcd();},D1M=()=>{let b,c,d,e,f,g,h,i,j,k,l,m,n,o;Zb();b=BN(Bo(Bml));c=K(Bg,23);d=c.data;d[0]=BL();e=new ER;f=BKC();g=new S;T(g);Bb(g,40);H(H(g,f),E(2056));Fh(e,1,E(2545),Q(g));d[1]=e;d[2]= +Bd();d[3]=Ba(1,E(554),E(2546));d[4]=Bw();d[5]=Chg();e=new C0;h=new Ch;i=K(Bg,2);j=i.data;j[0]=Bd();f=new ER;AL_();k=AM2;l=new S;T(l);H(H(H(l,E(2547)),k),E(2548));Fh(f,1,E(2549),Q(l));j[1]=f;Cj(h,i);C3(e,h);d[6]=e;d[7]=Bd();e=new ER;f=new S;T(f);Bb(H(f,E(2550)),63);Fh(e,4,E(2551),Q(f));d[8]=e;d[9]=D2(E(567));e=new ER;f=new S;T(f);Bb(H(f,E(2550)),63);Fh(e,4,E(2552),Q(f));d[10]=e;d[11]=Bd();E3();d[12]=Fy;d[13]=Bd();d[14]=(Cbk()).bH3;d[15]=Bd();e=new C0;h=new Ch;i=K(Bg,2);j=i.data;j[0]=Bc(E(1244));j[1]=Ba(2,E(2553), +E(2554));Cj(h,i);C3(e,h);d[16]=e;h=new C0;f=new Ch;i=K(Bg,3);j=i.data;j[0]=Bw();e=new ER;k=AZ7;l=new S;T(l);H(H(H(l,E(2555)),k),E(2556));Fh(e,3,E(2557),Q(l));j[1]=e;g=new C0;k=new Ch;m=K(Bg,2);n=m.data;n[0]=Bd();l=new ER;e=AM2;o=new S;T(o);H(H(H(o,E(2547)),e),E(2548));BW9(l,1,Q(o));n[1]=l;Cj(k,m);C3(g,k);j[2]=g;Cj(f,i);C3(h,f);d[17]=h;e=new C0;h=new Ch;i=K(Bg,3);j=i.data;j[0]=Bw();f=new ER;k=AZ7;l=new S;T(l);H(H(H(l,E(2558)),k),E(2556));Fh(f,3,E(2559),Q(l));j[1]=f;f=new C0;g=new Ch;m=K(Bg,2);n=m.data;n[0]=Bd();k +=new ER;l=AM2;o=new S;T(o);H(H(H(o,E(2547)),l),E(2548));BW9(k,1,Q(o));n[1]=k;Cj(g,m);C3(f,g);j[2]=f;Cj(h,i);C3(e,h);d[18]=e;d[19]=Bd();d[20]=Bc(E(568));d[21]=Bd();d[22]=BR();return BT(b,c);},Dwi=a=>{return 1;},Cbk=()=>{Zb();CM();return HQ(C6);},Ej8=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;b=ARR(b,1);c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){d=new S;T(d);f=J3(R(e,E(554),0));L(d,E(2240));L(d,FS(f));g=Ck(e,E(594),0);if(g!==null){L(d,E(2241));L(d,g);L(d,E(1762));}h=Ck(e,E(2560),0);if(h!==null){L(d,E(2242));L(d, +h);L(d,E(1268));}i=R(e,E(2545),0);if(i!==null){L(d,E(2561));L(d,i);L(d,E(1762));}j=Ck(e,E(2560),1);if(j===null)j=R(e,E(2549),0);if(j!==null){L(d,E(2562));L(d,j);L(d,E(372));}k=R(e,E(567),0);if(k!==null){L(d,E(2244));L(d,k);}if(R(e,E(2245),0)!==null)L(d,E(2246));if(R(e,E(608),0)!==null){L(d,E(2228));L(d,R(e,E(608),0));}if(R(e,E(2553),1)!==null){L(d,E(2229));L(d,R(e,E(2553),1));}l=R(e,E(2557),1);if(l!==null){L(d,E(2563));L(d,l);}c=R(e,E(2559),1);if(c!==null){L(d,E(2564));L(d,c);}if(CB(f,E(2565)))L(d,E(2566));m +=Dq(b)<=1?0:Dq(b)-1|0;if(m>0){L(d,E(2468));BE(d,m);L(d,m!=1?E(2567):E(2568));}return Q(d);}return E(2569);},Fm3=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;c=ARR(c,1);e=a.bHB;f=(C8(DB(c))).bGP;g=Ei(e,f);h=J3(R(g,E(554),0));i=Coz(h);j=R(g,E(2545),0);k=null;if(j!==null){d=new S;T(d);H(H(d,j),E(2570));k=ASq(Q(d),0);}f=Ck(g,E(594),0);l=E8(b,f);m=Ck(g,E(2560),0);n=Ck(g,E(2560),1);if(n===null)n=R(g,E(2549),0);o=R(g,E(567),0);p=AYD(b,0,l);if(!AAs(p)){a:{f=(Mr(p)).bG5;q=B4(Cf(b),m);if(f!==null){if(BDv(f, +i,null)){if(FQ(q))break a;f.bH1=q;break a;}b=new S;T(b);H(H(H(b,E(2571)),l),E(2572));return B5(Q(b));}if(FQ(q)){d=B4(Cf(b),(Mr(p)).bHL);Ed();q=AOa(d,J0);}f=ED(b,I5(c),Mr(p),q,i,null);}r=Dml(b,f);if(OI(r)){b.b0R=f;f.cb7=k;if(o!==null){s=Lc(b.bGM);e=b.bGM;d=null;t=K(I1,1);u=t.data;Fs();u[0]=KB;f.bGZ=N5(o,s,MC(e,d,0,t),b.bGM.bGN);CeM(f,o);}v=R(g,E(2245),0);if(v!==null){e=new FZ;d=DF(b.bGM,E(2248));FC();Gb(e,d,FI);f.bIa=Gj(e,v);}w=Iw(Cbk(),g,b.bGM.bGN);x=R(g,E(2553),1);y=x===null?null:DV(b.bGM.bGN,x);if(y!==null) +{CM();w=Lg(w,E1,y);}if(R(g,E(2553),0)!==null)w=AKc(w,R(g,E(2553),0));f.bG_=w;if(n!==null)Ccm(f,n);if(CB(h,E(2565)))f.cSk=1;if(Dq(c)>1){c=HI(c,1,1);d=Um(c);while(d.dY()){z=d.dZ();if(z.bGP.bGI.length>0&&AIW(z.bGP))b.cuC=1;f.bKL.G0(z.bGP);}}Bo_(I5(c),E(2557),b,g,f);Bo_(I5(c),E(2559),b,g,f);ZW(f,Ck(g,E(2573),0));return By();}return r;}return B5(AL$(p));},ZW=(b,c)=>{let d,e,f,g;Zb();if(c!==null){d=(IW(c,E(2574))).data;e=d.length;f=0;while(f{let g,h,i,j,k,l,m,n,o,p,q;Zb();a:{if(R(e,c,0)!==null){if(!BG(R(e,c,0),E(2575))){ARW();g=BoT;}else{ARW();g=A1e;}Cy();h=NG;ARW();if(g===BoT)h=SZ;if(g!==A1e)i=h;else{g=f.bHD;i=SZ;if(g!==i)i=h;}j=(IW(Dl(R(e,c,1)),E(349))).data;k=j.length;l=0;while(true){if(l>=k)break a;m=ES(j[l]);g=d;n=DA(d,0,E8(g,m));o=n.bG5;if(o===null)o=ED(d,b,n,B4(Cf(d),n.bHL),i,null);p=new H6;FU();Mo(p,Hf,AGv);e=SZ;if(i===e&&f.bHD +!==e)p=AQj(p);q=KY(2);IS(g,KE(b,d,B1(d.bGM),o,f,p,Xq(VF(q,null,null),A$z(g),A9r(g))));l=l+1|0;}}}},DBG=a=>{Zb();return CjL;},Ez3=(a,b,c,d)=>{return Fm3(a,b,c,d);},Fcd=()=>{let b,c,d,e;Cdr=0;CjL=Bv(BB(Bi,[E(332),E(866),E(1272),E(2576),E(839),E(569),E(2577),E(749),E(2578),E(2579),E(2580),E(2581),E(2582),E(2583),E(2584),E(298),E(2585),E(2586)]));b=AGQ();c=AGQ();d=new S;T(d);H(H(H(H(d,b),E(2587)),c),E(2588));e=Q(d);EEU=e;b=new S;T(b);H(H(H(H(b,e),E(2589)),e),E(2590));AZ7=Q(b);Csd=HO(new CNa);},BoA=N(EP),C4R=null,CwC +=null; +let C1F=0,AXs=()=>{AXs=Z(BoA);EJe();},EPx=(a,b)=>{let c,d,e,f,g,h;b=ADd(Nn(b));c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){d=new S;T(d);c=Dl(Ck(e,E(594),0));L(d,E(2591));L(d,c);L(d,E(1762));f=Ck(e,E(2560),0);if(f!==null){L(d,E(2242));L(d,Dl(f));L(d,E(1268));}g=Dq(b)<=2?0:Dq(b)-2|0;L(d,E(2592));BE(d,g);L(d,g!=1?E(2593):E(2594));h=R(e,E(567),0);if(h!==null){L(d,E(2244));L(d,h);}if(R(e,E(608),0)!==null){L(d,E(2228));L(d,R(e,E(608),0));}if(R(e,E(2245),0)!==null)L(d,E(2595));return Q(d);}return E(2596);},DQQ +=a=>{AXs();return C4R;},DLm=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m;b=b;c=ADd(Nn(c));e=a.bHB;f=(C8(DB(c))).bGP;d=Ei(e,f);g=I5(c);e=Ck(d,E(594),0);h=DA(b,1,E8(b,e));f=Ck(d,E(2560),0);i=R(d,E(567),0);j=B4(Cf(b),f);if(FQ(j)){f=B4(Cf(b),h.bHL);Ed();j=AOa(f,J0);}e=h.bG5;if(e===null){Cy();e=ED(b,g,h,j,PI,null);}if(i!==null){k=Lc(b.bGM);f=b.bGM;g=null;l=K(I1,1);m=l.data;Fs();m[0]=KB;e.bGZ=N5(i,k,MC(f,g,0,l),b.bGM.bGN);}d=R(d,E(608),0);CM();PP(e,C6,d===null?null:DV(b.bGM.bGN,d));c=Um(HI(c,1,1));while(c.dY()){d=c.dZ();if(Df()) +{AXs();if(!C1F&&d.bGP.bGI.length<=0){b=new C4;X(b);J(b);}}if(AIW(d.bGP))b.cuC=1;e.bKL.G0(d.bGP);}return By();},EJe=()=>{let b;C1F=0;b=K(Bi,1);b.data[0]=E(38);C4R=Bv(b);CwC=HO(new CaD);},BzB=N(EP),CVd=null,DfP=null,CxK=0,AKp=()=>{AKp=Z(BzB);EZC();},ETP=a=>{let b,c,d,e,f,g,h,i;AKp();b=BN(Bo(BzB));c=K(Bg,13);d=c.data;d[0]=BL();d[1]=Ba(0,E(554),E(768));d[2]=Bw();d[3]=Ba(2,E(563),E(2597));d[4]=D2(E(567));E3();d[5]=Fy;d[6]=Bd();d[7]=(CGc()).bH3;d[8]=Bd();e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=Bc(E(1244));h[1]= +Ba(2,E(2553),E(2554));Cj(f,g);C3(e,f);d[9]=e;d[10]=Bd();d[11]=Bc(E(568));d[12]=BR();f=BT(b,c);HE();i=Kl;HA();Iy(a,f,i,G0,DfP);},B1k=()=>{let a=new BzB();ETP(a);return a;},CGc=()=>{AKp();CM();return HQ(C6);},DVk=(a,b)=>{let c,d,e,f,g,h;c=ADd(Nn(b));d=a.bHB;e=(C8(DB(c))).bGP;e=Ei(d,e);if(e!==null){d=new S;T(d);L(d,E(2598));L(d,R(e,E(563),1));L(d,E(1762));f=R(e,E(563),0);if(f!==null){L(d,E(2242));L(d,f);L(d,E(1268));}g=Dq(c)<=2?0:Dq(c)-2|0;L(d,E(2592));BE(d,g);L(d,g!=1?E(2599):E(2600));h=0;b=Um(HI(c,1,1));while +(b.dY()){if(AYF((b.dZ()).bGP)!==null)h=h+1|0;}if(h>0){L(d,E(2601));BE(d,h);L(d,h!=1?E(2602):E(2603));L(d,E(2604));}c=R(e,E(567),0);if(c!==null){L(d,E(2244));L(d,c);}if(R(e,E(608),0)!==null){L(d,E(2228));L(d,R(e,E(608),0));}if(R(e,E(2553),1)!==null){L(d,E(2229));L(d,R(e,E(2553),1));}if(R(e,E(2553),0)!==null){L(d,E(2605));L(d,R(e,E(2553),0));}if(R(e,E(2245),0)!==null)L(d,E(2595));return Q(d);}return E(2606);},DXu=a=>{AKp();return CVd;},EMz=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o;b=b;c=ADd(Nn(c));e=a.bHB;f=(C8(DB(c))).bGP;d +=Ei(e,f);f=I5(c);e=R(d,E(563),1);g=DA(b,1,b.GW(e));h=R(d,E(563),0);i=R(d,E(567),0);if(g.bG5!==null)f=null;else{j=B4(Cf(b),h);if(FQ(j)){e=B4(Cf(b),e);Ed();j=AOa(e,J0);}Cy();f=ED(b,f,g,j,ACO,null);if(i!==null){k=Lc(b.bGM);g=b.bGM;h=null;l=K(I1,1);m=l.data;Fs();m[0]=KB;f.bGZ=N5(i,k,MC(g,h,0,l),b.bGM.bGN);}e=Iw(CGc(),d,b.bGM.bGN);i=R(d,E(2553),1);i=i===null?null:DV(b.bGM.bGN,i);if(i!==null){CM();e=Lg(e,E1,i);}if(R(d,E(2553),0)!==null)e=AKc(e,R(d,E(2553),0));f.bG_=e;}a:{if(f===null){b=R(d,E(563),1);c=new S;T(c);H(H(c, +E(2607)),b);b=B5(Q(c));}else{n=HI(c,1,1);c=Um(n);b:{c:{while(c.dY()){i=(c.dZ()).bGP;if(Df()){AKp();if(!CxK&&i.bGI.length<=0)break b;}if(!f.bKL.G0(i))break c;if(AYF(i)!==null){d=AYF(i);o=IZ(i,d);e=Dk(B_(i,0,o));i=DA(b,1,Dk(CC(i,o+d.bGI.length|0)));h=i.bG5;if(h===null){d=i.bHL;b=new S;T(b);H(H(b,E(2608)),d);b=B5(Q(b));break a;}i=new H6;FU();Mo(i,AB1,Hf);o=d.bGI.length-2|0;d=KE(I5(n),b,B1(b.bGM),f,h,i,KY(o));C1K(d,e,null);IS(b,d);}}b=By();break a;}b=B5(E(2609));break a;}b=new C4;X(b);J(b);}}return b;},EZC=()=> +{let b;CxK=0;b=K(Bi,1);b.data[0]=E(768);CVd=Bv(b);DfP=HO(new CZT);},BgF=N(EP),Dl6=null,Cp4=null,BaI=()=>{BaI=Z(BgF);Eoz();},Ejo=a=>{let b,c,d,e,f;BaI();b=BN(Bo(BgF));c=K(Bg,11);d=c.data;d[0]=BL();d[1]=Ba(0,E(554),E(246));d[2]=Bw();d[3]=BTr();d[4]=D2(E(567));E3();d[5]=Fy;d[6]=Bd();d[7]=Kp();d[8]=Bd();d[9]=Bc(E(568));d[10]=BR();e=BT(b,c);HE();f=Kl;HA();Iy(a,e,f,G0,Cp4);},BVi=()=>{let a=new BgF();Ejo(a);return a;},DM0=(a,b)=>{let c,d,e,f,g,h;b=ADd(Nn(b));c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){d=new S;T(d);c +=Dl(Ck(e,E(594),0));L(d,E(2610));L(d,c);L(d,E(1762));f=Ck(e,E(2560),0);if(f!==null){L(d,E(2242));L(d,Dl(f));L(d,E(1268));}g=Dq(b)<=2?0:Dq(b)-2|0;L(d,E(2592));BE(d,g);L(d,g!=1?E(2253):E(2254));L(d,E(2611));h=R(e,E(567),0);if(h!==null){L(d,E(2244));L(d,h);}if(R(e,E(608),0)!==null){L(d,E(2228));L(d,R(e,E(608),0));}if(R(e,E(2245),0)!==null)L(d,E(2595));return Q(d);}return E(2612);},DzP=(a,b)=>{if(Dju(a,b)===null){F5();return Oo;}return CoA(a,b);},Dju=(a,b)=>{let c,d,e,$$je;c=new Byy;d=BCr(c);try{BcW(d,Fm1(a,b));e +=B5y(c);}catch($$e){$$je=P($$e);if($$je instanceof Dt){try{b=HI(b,1,1);e=CR();b=Um(b);while(b.dY()){FN(e,ZA(b.dZ()));}BcW(d,CH(e));b=B5y(c);}catch($$e){$$je=P($$e);if($$je instanceof Dt){return null;}else{throw $$e;}}return b;}else{throw $$e;}}return e;},Fm1=(a,b)=>{let c;b=HI(b,1,1);c=Lk(E(580));b=Um(b);while(b.dY()){L(c,(b.dZ()).bGP);}L(c,E(582));return Q(c);},E5j=a=>{BaI();return Dl6;},EMj=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m;b=b;c=ADd(Nn(c));e=a.bHB;d=(C8(DB(c))).bGP;f=Ei(e,d);g=I5(c);h=DA(b,1,b.GW(Ck(f,E(594), +0)));if(h.bG5!==null)g=null;else{d=Ck(f,E(2560),0);i=R(f,E(567),0);j=B4(Cf(b),d);if(FQ(j)){d=B4(Cf(b),h.bHL);Ed();j=AOa(d,J0);}Cy();g=ED(b,g,h,j,ANr,null);if(i!==null){k=Lc(b.bGM);d=b.bGM;h=null;l=K(I1,1);m=l.data;Fs();m[0]=KB;g.bGZ=N5(i,k,MC(d,h,0,l),b.bGM.bGN);}d=R(f,E(608),0);CM();PP(g,C6,d===null?null:DV(b.bGM.bGN,d));}if(g===null){b=Ck(f,E(594),0);c=new S;T(c);H(H(c,E(2613)),b);b=B5(Q(c));}else{b=Dju(a,c);if(b===null)b=B5(E(2614));else{g.bKL.cI$=b;b=By();}}return b;},Eoz=()=>{let b;b=K(Bi,1);b.data[0]= +E(246);Dl6=Bv(b);Cp4=HO(new CVf);},Bmq=N(Bl),C7W=null,Bk0=()=>{Bk0=Z(Bmq);Efh();},Fl_=a=>{let b,c,d,e,f,g;Bk0();b=BN(Bo(Bmq));c=K(Bg,11);d=c.data;d[0]=BL();d[1]=Ba(0,E(554),E(246));d[2]=Bw();d[3]=Ba(2,E(563),E(2597));d[4]=D2(E(567));E3();d[5]=Fy;d[6]=Bd();d[7]=Kp();d[8]=Bd();e=new DD;f=K(Bg,6);g=f.data;g[0]=Ba(1,E(2615),E(2616));g[1]=Ba(1,E(2617),E(2618));g[2]=Ba(1,E(2619),E(2620));g[3]=Ba(1,E(2621),E(2622));g[4]=Ba(1,E(2623),E(2624));g[5]=Ba(2,E(2625),E(2626));Eb(e,f);d[9]=e;d[10]=BR();Cb(a,BT(b,c));},BDS= +()=>{let a=new Bmq();Fl_(a);return a;},Fgd=(a,b,c)=>{let d,e,f;d=new S;T(d);L(d,E(2610));L(d,R(c,E(563),1));L(d,E(1762));e=R(c,E(563),0);if(e!==null){L(d,E(2242));L(d,e);L(d,E(1268));}L(d,E(2627));L(d,Ck(c,E(2628),0));f=R(c,E(567),0);if(f!==null){L(d,E(2244));L(d,f);}if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}if(CiR(a,c)===null)L(d,E(2629));if(R(c,E(2245),0)!==null)L(d,E(2595));return Q(d);},CiR=(a,b)=>{let c,d,e,$$je;try{c=Ck(b,E(2628),0);d=DJq();BcW(BCr(d),c);e=B5y(d);}catch($$e){$$je=P($$e);if +($$je instanceof Dt){return null;}else{throw $$e;}}return e;},D93=a=>{Bk0();return C7W;},EWl=(a,b,c,d,e)=>{let f,g,h,i,j,k;b=b;e=R(d,E(563),1);f=DA(b,0,b.GW(e));if(f.bG5!==null)g=null;else{g=R(d,E(563),0);h=R(d,E(567),0);g=B4(Cf(b),g);if(FQ(g)){e=B4(Cf(b),e);Ed();g=AOa(e,J0);}Cy();g=ED(b,c,f,g,ANr,null);if(h!==null){i=Lc(b.bGM);f=b.bGM;e=null;j=K(I1,1);k=j.data;Fs();k[0]=KB;g.bGZ=N5(h,i,MC(f,e,0,j),b.bGM.bGN);}c=R(d,E(608),0);CM();PP(g,C6,c===null?null:DV(b.bGM.bGN,c));}if(g===null){b=R(d,E(563),1);c=new S;T(c);H(H(c, +E(2613)),b);b=B5(Q(c));}else{b=CiR(a,d);if(b===null)b=B5(E(2614));else{g.bKL.cI$=b;b=By();}}return b;},Efh=()=>{let b;b=K(Bi,1);b.data[0]=E(246);C7W=Bv(b);},Bvw=N(Bl),Cdu=null,AO9=()=>{AO9=Z(Bvw);Flp();},EUM=()=>{let b,c,d,e,f,g,h,i,j,k,l;AO9();b=BN(Bo(Bvw));c=K(Bg,21);d=c.data;d[0]=BL();e=new ER;f=BKC();g=new S;T(g);Bb(g,40);H(H(g,f),E(2056));Fh(e,1,E(2545),Q(g));d[1]=e;d[2]=Bd();d[3]=Ba(1,E(554),E(2630));d[4]=Bw();d[5]=Chg();h=new C0;f=new Ch;i=K(Bg,2);j=i.data;j[0]=Bd();e=new ER;AL_();k=AM2;l=new S;T(l);H(H(H(l, +E(2547)),k),E(2548));Fh(e,1,E(2549),Q(l));j[1]=e;Cj(f,i);C3(h,f);d[6]=h;d[7]=Bd();h=new ER;e=new S;T(e);Bb(H(e,E(2550)),63);Fh(h,4,E(2551),Q(e));d[8]=h;d[9]=D2(E(567));h=new ER;e=new S;T(e);Bb(H(e,E(2550)),63);Fh(h,4,E(2552),Q(e));d[10]=h;d[11]=Bd();E3();d[12]=Fy;d[13]=Bd();d[14]=(CnZ()).bH3;d[15]=Bd();h=new C0;f=new Ch;i=K(Bg,2);j=i.data;j[0]=Bc(E(1244));j[1]=Ba(2,E(2553),E(2554));Cj(f,i);C3(h,f);d[16]=h;h=new C0;f=new Ch;i=K(Bg,2);j=i.data;j[0]=Bw();e=new ER;Zb();k=AZ7;l=new S;T(l);H(H(H(l,E(2555)),k),E(2556));Fh(e, +3,E(2557),Q(l));j[1]=e;Cj(f,i);C3(h,f);d[17]=h;h=new C0;f=new Ch;i=K(Bg,2);j=i.data;j[0]=Bw();e=new ER;k=AZ7;l=new S;T(l);H(H(H(l,E(2558)),k),E(2556));Fh(e,3,E(2559),Q(l));j[1]=e;Cj(f,i);C3(h,f);d[18]=h;h=new C0;f=new Ch;i=K(Bg,4);j=i.data;j[0]=Bd();j[1]=Bc(E(568));j[2]=Bd();j[3]=Bc(E(613));Cj(f,i);C3(h,f);d[19]=h;d[20]=BR();return BT(b,c);},CnZ=()=>{AO9();CM();return HQ(C6);},EQX=(a,b,c)=>{let d,e,f,g,h,i,j,k,l;d=new S;T(d);e=J3(R(c,E(554),0));L(d,E(2240));L(d,FS(e));f=Ck(c,E(594),0);if(f!==null){L(d,E(2241));L(d, +f);L(d,E(1762));}g=Ck(c,E(2560),0);if(g!==null){L(d,E(2242));L(d,g);L(d,E(1268));}h=R(c,E(2545),0);if(h!==null){L(d,E(2561));L(d,h);L(d,E(1762));}i=Ck(c,E(2560),1);if(i===null)i=R(c,E(2549),0);if(i!==null){L(d,E(2562));L(d,i);L(d,E(372));}j=R(c,E(567),0);if(j!==null){L(d,E(2244));L(d,j);}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}if(R(c,E(2553),1)!==null){L(d,E(2229));L(d,R(c,E(2553),1));}k=R(c,E(2557),1);if(k!==null){L(d,E(2563));L(d,k);}l=R(c,E(2559),1);if +(l!==null){L(d,E(2564));L(d,l);}return Q(d);},DAU=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y;f=J3(R(d,E(554),0));g=Coz(f);h=R(d,E(2545),0);i=null;if(h!==null){e=new S;T(e);H(H(e,h),E(2570));i=ASq(Q(e),0);}e=Ck(d,E(594),0);j=E8(b,e);k=Ck(d,E(2560),0);l=Ck(d,E(2560),1);if(l===null)l=R(d,E(2549),0);m=R(d,E(567),0);n=AYD(b,0,j);if(!AAs(n)){a:{o=(Mr(n)).bG5;if(o!==null){if(BDv(o,g,null))break a;return B5(E(2631));}p=B4(Cf(b),k);if(FQ(p)){e=B4(Cf(b),(Mr(n)).bHL);Ed();p=AOa(e,J0);}o=ED(b,c,Mr(n),p,g, +null);}q=Dml(b,o);if(OI(q)){b.b0R=o;o.cb7=i;if(m!==null){r=Lc(b.bGM);p=b.bGM;e=null;s=K(I1,1);t=s.data;Fs();t[0]=KB;o.bGZ=N5(m,r,MC(p,e,0,s),b.bGM.bGN);CeM(o,m);}if(l!==null)Ccm(o,l);u=R(d,E(2245),0);if(u!==null){v=new FZ;e=DF(b.bGM,E(2248));FC();Gb(v,e,FI);o.bIa=Gj(v,u);}w=Iw(CnZ(),d,b.bGM.bGN);x=R(d,E(2553),1);y=x===null?null:DV(b.bGM.bGN,x);if(y!==null){CM();w=Lg(w,E1,y);}if(R(d,E(2553),0)!==null)w=AKc(w,R(d,E(2553),0));o.bG_=w;Bo_(c,E(2557),b,d,o);Bo_(c,E(2559),b,d,o);ZW(o,Ck(d,E(2573),0));if(CB(f,E(2565)))o.cSk +=1;return By();}return q;}b=AL$(n);if(n.cEh!==null)return AKa(null,b,n.cQV,null);b=new BP;X(b);J(b);},Dzc=a=>{AO9();return Cdu;},Es2=(a,b,c,d,e)=>{return DAU(a,b,c,d,e);}; +let Flp=()=>{Cdu=Bv(BB(Bi,[E(332),E(866),E(1272),E(2576),E(839),E(721),E(569),E(2577),E(746),E(749),E(2578),E(2579),E(2580),E(768),E(2581),E(2582),E(2583),E(2584),E(298),E(2585),E(2586)]));},Bkj=N(Bl),B$r=null,AZI=()=>{AZI=Z(Bkj);DIX();},DtT=()=>{let b,c,d;AZI();b=BN(Bo(Bkj));c=K(Bg,9);d=c.data;d[0]=BL();d[1]=Ba(0,E(554),E(38));d[2]=Bw();d[3]=BTr();d[4]=D2(E(567));E3();d[5]=Fy;d[6]=Bd();d[7]=Kp();d[8]=BR();return BT(b,c);},E9Z=(a,b,c)=>{let d,e,f,g;d=new S;T(d);e=Dl(Ck(c,E(594),0));L(d,E(2591));L(d,e);L(d,E(1762));f +=Ck(c,E(2560),0);if(f!==null){L(d,E(2242));L(d,Dl(f));L(d,E(1268));}g=R(c,E(567),0);if(g!==null){L(d,E(2244));L(d,g);}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}return Q(d);},Fs$=a=>{AZI();return B$r;},Fw6=(a,b,c,d,e)=>{let f,g,h,i,j,k,l;b=b;e=Ck(d,E(594),0);f=b;g=DA(b,1,E8(f,E8(f,e)));f=Ck(d,E(2560),0);h=R(d,E(567),0);if(g.bG5!==null){d=g.bHL;b=new S;T(b);H(H(b,E(2632)),d);b=B5(Q(b));}else{i=B4(Cf(b),f);if(FQ(i)){e=B4(Cf(b),g.bHL);Ed();i=AOa(e,J0);}Cy();e +=ED(b,c,g,i,PI,null);if(h!==null){j=Lc(b.bGM);g=b.bGM;f=null;k=K(I1,1);l=k.data;Fs();l[0]=KB;e.bGZ=N5(h,j,MC(g,f,0,k),b.bGM.bGN);}c=R(d,E(2245),0);if(c!==null){f=new FZ;g=DF(b.bGM,E(2248));FC();Gb(f,g,FI);e.bIa=Gj(f,c);}c=R(d,E(608),0);CM();PP(e,C6,c===null?null:DV(b.bGM.bGN,c));b=By();}return b;},DIX=()=>{let b;b=K(Bi,1);b.data[0]=E(38);B$r=Bv(b);},Bt4=N(Bl),Cme=null,BAM=()=>{BAM=Z(Bt4);EC$();},EhO=a=>{let b,c,d;BAM();b=BN(Bo(Bt4));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Bc(E(2633));d[2]=Bc(E(2634));d[3]=Bc(E(2635));d[4] +=BR();Cb(a,BT(b,c));},Eb5=()=>{let a=new Bt4();EhO(a);return a;},Efx=(a,b,c)=>{return E(2636);},Fum=a=>{BAM();return Cme;},EbP=(a,b,c,d,e)=>{b.cQK=1;return By();},EC$=()=>{Cme=Bv(BB(Bi,[E(2633),E(2637)]));},Bes=N(Bl),Cv1=null,Dpj=null,AJt=()=>{AJt=Z(Bes);EYR();},ESB=a=>{AJt();Cb(a,Eg0());},E6K=()=>{let a=new Bes();ESB(a);return a;},Eg0=()=>{let b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;AJt();b=BN(Bo(Bes));c=K(Bg,11);d=c.data;d[0]=BL();d[1]=Bc(E(2638));CM();d[2]=(BhH(C6,E(2639))).bH3;d[3]=Bd();e=new DD;f=K(Bg,4);g=f.data;g[0] +=Ba(1,E(618),E(2640));h=new Ch;i=K(Bg,6);j=i.data;j[0]=Ba(1,E(2641),E(2642));k=new C0;l=new Ch;m=K(Bg,2);n=m.data;n[0]=Bw();n[1]=Ba(1,E(667),E(2643));Cj(l,m);C3(k,l);j[1]=k;j[2]=Bd();j[3]=Bc(E(665));j[4]=Bw();j[5]=Ba(1,E(624),E(2644));Cj(h,i);g[1]=h;o=new Ch;m=K(Bg,6);n=m.data;n[0]=Ba(1,E(601),E(2644));p=new C0;l=new Ch;i=K(Bg,2);j=i.data;j[0]=Bw();j[1]=Ba(1,E(2645),E(2643));Cj(l,i);C3(p,l);n[1]=p;n[2]=Bw();n[3]=Bc(E(665));n[4]=Bd();n[5]=Ba(1,E(2646),E(2642));Cj(o,m);g[2]=o;o=new Ch;i=K(Bg,6);j=i.data;j[0]= +Ba(1,E(2647),E(2648));p=new C0;l=new Ch;m=K(Bg,2);n=m.data;n[0]=Bw();n[1]=Ba(1,E(2649),E(2643));Cj(l,m);C3(p,l);j[1]=p;j[2]=Bd();j[3]=Bc(E(665));j[4]=Bw();j[5]=Ba(1,E(602),E(2644));Cj(o,i);g[3]=o;Eb(e,f);d[4]=e;o=new C0;p=new Ch;m=K(Bg,2);n=m.data;n[0]=Bd();n[1]=Ba(1,E(578),E(2643));Cj(p,m);C3(o,p);d[5]=o;d[6]=Bd();E3();d[7]=Fy;d[8]=Bd();d[9]=(Cwb()).bH3;d[10]=BR();return BT(b,c);},Cwb=()=>{AJt();CM();return HQ(C6);},EFm=(a,b)=>{AJt();return Kr(D3(Dpj,b));},Feb=(a,b,c)=>{let d,e,f,g;d=new S;T(d);e=Dl(Ck(c,E(594), +0));L(d,E(2650));L(d,e);L(d,E(2651));f=Ck(c,E(2560),0);if(f!==null){L(d,E(2652));L(d,Dl(f));L(d,E(1268));}g=Ck(c,E(578),0);if(g!==null){L(d,E(2244));L(d,g);}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}if(R(c,E(2639),0)!==null){L(d,E(2653));L(d,R(c,E(2639),0));L(d,E(2654));}return Q(d);},DGU=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;f=Ck(d,E(594),0);g=Ck(d,E(2560),0);Cy();h=O9;i=Bu5(E(2580),b.bGM);j=DA(b,0,E8(b,f));if(j.bG5===null){if(g===null)g=j.bHL;e +=Dl(g);k=Ck(d,E(578),0);if(!BD7(b,j,h,i)){l=ED(b,c,j,B4(Cf(b),e),h,i);l.bH1=B4(Cf(b),e);if(k!==null){m=Lc(b.bGM);f=b.bGM;e=null;n=K(I1,1);o=n.data;Fs();o[0]=KB;l.bGZ=N5(k,m,MC(f,e,0,n),b.bGM.bGN);}p=R(d,E(2245),0);if(p!==null){q=new FZ;c=DF(b.bGM,E(2248));FC();Gb(q,c,FI);l.bIa=Gj(q,p);}r=Iw(Cwb(),d,b.bGM.bGN);s=R(d,E(2553),1);t=s===null?null:DV(b.bGM.bGN,s);if(t!==null){CM();r=Lg(r,E1,t);}l.bG_=r;return By();}d=j.bHL;b=new S;T(b);H(H(H(b,E(2655)),d),E(2656));return B5(Q(b));}d=j.bHL;b=new S;T(b);H(H(H(b,E(2655)), +d),E(2656));return B5(Q(b));},EpA=a=>{AJt();return Cv1;},Eku=(a,b,c,d,e)=>{return DGU(a,b,c,d,e);},EYR=()=>{let b;b=K(Bi,1);b.data[0]=E(864);Cv1=Bv(b);Dpj=Dp(E(2657));},ByW=N(Bl),CVY=null,Byl=()=>{Byl=Z(ByW);Fka();},DNa=a=>{let b,c,d;Byl();b=BN(Bo(ByW));c=K(Bg,3);d=c.data;d[0]=BL();d[1]=Bc(E(2658));d[2]=BR();Cb(a,BT(b,c));},Eh5=()=>{let a=new ByW();DNa(a);return a;},EZp=(a,b,c)=>{return E(2659);},EvE=a=>{Byl();return CVY;},Eqk=(a,b,c,d,e)=>{b=b;b.cDv=b.cDv+1|0;b=b;b.chZ=b.chZ+1|0;return By();},Fka=()=>{let b;b +=K(Bi,1);b.data[0]=E(2660);CVY=Bv(b);},BvN=N(Bl),Dau=null,APD=()=>{APD=Z(BvN);E$Y();},DvH=a=>{APD();Cb(a,EfN());},Fn5=()=>{let a=new BvN();DvH(a);return a;},EfN=()=>{let b,c,d,e,f,g,h,i,j,k,l,m,n,o;APD();b=BN(Bo(BvN));c=K(Bg,17);d=c.data;d[0]=BL();e=new ER;f=BKC();g=new S;T(g);Bb(g,40);H(H(g,f),E(2056));Fh(e,1,E(2545),Q(g));d[1]=e;d[2]=Bd();d[3]=Ba(1,E(554),E(2661));d[4]=Bw();f=new DD;h=K(Bg,2);i=h.data;g=new Ch;j=K(Bg,2);k=j.data;k[0]=Ba(1,E(618),E(2662));l=new C0;m=new Ch;n=K(Bg,4);o=n.data;o[0]=Bw();o[1] +=Bc(E(665));o[2]=Bw();o[3]=Ba(1,E(2663),E(2664));Cj(m,n);C3(l,m);k[1]=l;Cj(g,j);i[0]=g;l=new Ch;j=K(Bg,5);k=j.data;k[0]=Ba(1,E(2641),E(2664));k[1]=Bw();k[2]=Bc(E(665));k[3]=Bw();k[4]=Ba(1,E(624),E(597));Cj(l,j);i[1]=l;Eb(f,h);d[5]=f;d[6]=Bd();e=new ER;f=new S;T(f);Bb(H(f,E(2550)),63);Fh(e,4,E(2551),Q(f));d[7]=e;d[8]=D2(E(578));e=new ER;f=new S;T(f);Bb(H(f,E(2550)),63);Fh(e,4,E(2552),Q(f));d[9]=e;d[10]=Bd();E3();d[11]=Fy;d[12]=Bd();d[13]=(Cij()).bH3;d[14]=Bd();d[15]=Bc(E(568));d[16]=BR();return BT(b,c);},E_r +=a=>{return 1;},Cij=()=>{APD();CM();return HQ(C6);},Fdk=(a,b,c)=>{let d,e,f,g,h,i;d=new S;T(d);e=Dl(Ck(c,E(594),0));f=Dl(Ck(c,E(2560),0));if(f!==null){L(d,E(2665));L(d,e);L(d,E(2666));L(d,f);L(d,E(1268));}else if(e.bGI.length){L(d,E(2665));L(d,e);L(d,E(1762));}else return E(2667);g=R(c,E(2545),0);if(g!==null){L(d,E(2668));L(d,g);L(d,E(1762));}h=R(c,E(578),0);if(h!==null){L(d,E(2244));L(d,h);L(d,E(2669));}i=Ck(c,E(2573),0);if(i!==null&&!CQ(i)){L(d,E(2670));L(d,i);}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c, +E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}return Q(d);}; +let E25=a=>{APD();return Dau;},E1w=(a,b,c,d,e)=>{let f,g,h;b=b;e=Dl(Ck(d,E(594),0));f=Dl(Ck(d,E(2560),0));if(!e.bGI.length)c=B5(E(2671));else{g=DA(b,0,b.GW(e));if(f===null)f=g.bHL;h=R(d,E(578),0);e=A2e(h,Vj(b.bGM),AKB(b.bGM),AWx(b.bGM));f=B4(Cf(b),f);F7();c=AOn(b,c,g,f,Kw,e);if(OI(c)){f=GH(b);c=R(d,E(2545),0);if(c!==null){g=new S;T(g);H(H(g,c),E(2570));f.cb7=ASq(Q(g),0);}if(h!==null&&e===null)f.bGZ=FD(h);ZW(f,Ck(d,E(2573),0));e=R(d,E(2245),0);if(e!==null){h=new FZ;c=DF(b.bGM,E(2248));FC();Gb(h,c,FI);f.bIa=Gj(h, +e);}f.bG_=Iw(Cij(),d,b.bGM.bGN);c=By();}}return c;},E$Y=()=>{Dau=Bv(BB(Bi,[E(332),E(866),E(1272),E(2672),E(2586)]));},BnV=N(Bl),CBj=null,BnP=()=>{BnP=Z(BnV);DJO();},Ftx=a=>{let b,c,d;BnP();b=BN(Bo(BnV));c=K(Bg,3);d=c.data;d[0]=BL();d[1]=Bc(E(613));d[2]=BR();Cb(a,BT(b,c));},CT5=()=>{let a=new BnV();Ftx(a);return a;},DS5=(a,b,c)=>{return E(2673);},Fki=a=>{BnP();return CBj;},Dv9=(a,b,c,d,e)=>{return b.HK()?By():B5(E(2674));},DJO=()=>{let b;b=K(Bi,1);b.data[0]=E(582);CBj=Bv(b);},Bek=N(Bl),Cs7=null,Bpc=()=>{Bpc= +Z(Bek);DYl();},EWq=a=>{let b,c,d,e,f,g,h;Bpc();b=BN(Bo(Bek));c=K(Bg,12);d=c.data;d[0]=BL();d[1]=Bc(E(2672));d[2]=Bw();d[3]=Ba(1,E(2560),E(2675));e=new C0;f=new Ch;g=K(Bg,4);h=g.data;h[0]=Bw();h[1]=Bc(E(665));h[2]=Bw();h[3]=Ba(1,E(594),E(597));Cj(f,g);C3(e,f);d[4]=e;d[5]=Bd();d[6]=Ba(1,E(608),E(2676));d[7]=Bd();d[8]=Bc(E(568));d[9]=Bd();d[10]=Bc(E(613));d[11]=BR();Cb(a,BT(b,c));},EaQ=()=>{let a=new Bek();EWq(a);return a;},EGI=(a,b,c)=>{let d,e,f;d=new S;T(d);e=Dl(R(c,E(2560),0));f=R(c,E(594),0);if(f!==null){L(d, +E(2677));L(d,f);L(d,E(2666));L(d,e);L(d,E(1268));}else if(!e.bGI.length)L(d,E(2678));else{L(d,E(2677));L(d,e);L(d,E(1762));}if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}return Q(d);},Fex=a=>{Bpc();return Cs7;},Ef9=(a,b,c,d,e)=>{let f;b=b;if(R(d,E(594),0)!==null){e=Dl(R(d,E(2560),0));f=R(d,E(594),0);}else if(!(Dl(R(d,E(2560),0))).bGI.length){f=Ui(b,E(1244));e=null;}else{e=Dl(R(d,E(2560),0));f=e;}f=DA(b,0,b.GW(f));e=B4(Cf(b),e);F7();c=So(b,c,f,e,Kw);if(OI(c)){f=GH(b);c=R(d,E(608),0);if(c!==null){CM();PP(f, +C6,DV(b.bGM.bGN,c));}b.HK();c=By();}return c;},DYl=()=>{let b;b=K(Bi,1);b.data[0]=E(2672);Cs7=Bv(b);},BhE=N(Bl),Dl1=null,APJ=()=>{APJ=Z(BhE);Fj$();},E0v=a=>{APJ();Cb(a,Dw0());},CXB=()=>{let a=new BhE();E0v(a);return a;},Dw0=()=>{let b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;APJ();b=BN(Bo(BhE));c=K(Bg,15);d=c.data;d[0]=BL();d[1]=Ba(1,E(2679),E(2680));d[2]=Bw();e=new DD;f=K(Bg,5);g=f.data;h=new Ch;i=K(Bg,6);j=i.data;j[0]=Ba(1,E(2663),E(2681));k=new C0;l=new Ch;m=K(Bg,2);n=m.data;n[0]=Bw();n[1]=Ba(1,E(2682),E(2643));Cj(l, +m);C3(k,l);j[1]=k;j[2]=Bd();j[3]=Bc(E(665));j[4]=Bw();j[5]=Ba(1,E(618),E(2683));Cj(h,i);g[0]=h;o=new Ch;i=K(Bg,6);j=i.data;j[0]=Ba(1,E(624),E(2684));p=new C0;h=new Ch;m=K(Bg,2);n=m.data;n[0]=Bw();n[1]=Ba(1,E(667),E(2643));Cj(h,m);C3(p,h);j[1]=p;j[2]=Bd();j[3]=Bc(E(665));j[4]=Bw();j[5]=Ba(1,E(2641),E(2681));Cj(o,i);g[1]=o;o=new Ch;i=K(Bg,6);j=i.data;j[0]=Ba(1,E(2646),E(2684));p=new C0;h=new Ch;m=K(Bg,2);n=m.data;n[0]=Bw();n[1]=Ba(1,E(2645),E(2643));Cj(h,m);C3(p,h);j[1]=p;j[2]=Bd();j[3]=Bc(E(665));j[4]=Bw();j[5] +=Ba(1,E(601),E(2684));Cj(o,i);g[2]=o;g[3]=Ba(1,E(2685),E(2664));g[4]=Ba(1,E(2686),E(2687));Eb(e,f);d[3]=e;d[4]=Bd();o=new ER;e=new S;T(e);Bb(H(e,E(2550)),63);Fh(o,4,E(2551),Q(e));d[5]=o;d[6]=D2(E(578));o=new ER;e=new S;T(e);Bb(H(e,E(2550)),63);Fh(o,4,E(2552),Q(e));d[7]=o;d[8]=Bd();E3();d[9]=Fy;d[10]=Bd();d[11]=(C26()).bH3;d[12]=Bd();d[13]=Bc(E(568));d[14]=BR();return BT(b,c);},C26=()=>{APJ();CM();return HQ(C6);},D6Y=(a,b,c)=>{let d,e,f,g,h,i;d=new S;T(d);e=F9(R(c,E(2679),0));f=Dl(Ck(c,E(594),0));if(!f.bGI.length) +{L(d,E(2688));L(d,e);}else{L(d,E(2689));L(d,e);L(d,E(2241));L(d,f);L(d,E(1762));}g=Dl(Ck(c,E(2560),0));if(g!==null){L(d,E(2242));L(d,g);L(d,E(1268));}h=Ck(c,E(578),0);if(h!==null){L(d,E(2244));L(d,h);}i=Ck(c,E(2573),0);if(i!==null&&!CQ(i)){L(d,E(2670));L(d,i);}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}return Q(d);},EVO=a=>{APJ();return Dl1;},DIV=(a,b,c,d,e)=>{let f,g,h;b=b;f=Dl(Ck(d,E(594),0));e=f.bGI.length?f:Ui(b,E(1244));g=DA(b,0,b.GW(e));h=Dl(Ck(d,E(2560), +0));if(!f.bGI.length)h=null;else if(h===null)h=g.bHL;e=A2e(R(d,E(2679),0),Vj(b.bGM),AKB(b.bGM),AWx(b.bGM));f=B4(Cf(b),h);F7();c=AOn(b,c,g,f,Kw,e);if(OI(c)){g=GH(b);c=Ck(d,E(578),0);if(c!==null)g.bGZ=CDy(c,0);f=R(d,E(2245),0);if(f!==null){h=new FZ;c=DF(b.bGM,E(2248));FC();Gb(h,c,FI);g.bIa=Gj(h,f);}ZW(g,Ck(d,E(2573),0));g.bG_=Iw(C26(),d,b.bGM.bGN);c=By();}return c;},Fj$=()=>{Dl1=Bv(BB(Bi,[E(704),E(713),E(719),E(725),E(729),E(741),E(55),E(752),E(753),E(758),E(774),E(2672),E(782),E(784),E(785),E(796),E(799)]));},BbU +=N(Bl),De5=null,Bz5=()=>{Bz5=Z(BbU);DCv();},EIl=a=>{let b,c,d;Bz5();b=BN(Bo(BbU));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Bc(E(2690));d[2]=Bd();d[3]=Bc(E(568));d[4]=BR();Cb(a,BT(b,c));},Dn9=()=>{let a=new BbU();EIl(a);return a;},EAp=(a,b,c)=>{return E(2691);},D6L=a=>{Bz5();return De5;},DEM=(a,b,c,d,e)=>{b=b;d=b.bUV;c=new BO8;c.cl0=BOj(b);U(d,c);return By();},DCv=()=>{let b;b=K(Bi,1);b.data[0]=E(2690);De5=Bv(b);}; +function AT2(){Bl.call(this);this.cfc=null;} +let CL4=null,Ck5=null,CIa=null,AMk=()=>{AMk=Z(AT2);EvM();},C4A=(a,b)=>{AMk();Cb(a,FkJ(b));a.cfc=b;},DK0=a=>{let b=new AT2();C4A(b,a);return b;},EJL=a=>{let b,c;b=a.cfc;AHA();if(b!==A51){AMk();c=CL4;}else{AMk();c=Ck5;}return c;},FkJ=b=>{let c,d,e,f,g,h,i;AMk();AHA();if(b===A51){c=BN(Bo(AT2));b=BY(b);d=new S;T(d);H(H(d,c),b);d=Q(d);e=K(Bg,14);f=e.data;f[0]=BL();f[1]=Bc(E(2692));f[2]=Ba(1,E(2679),E(2693));f[3]=Bw();b=new DD;g=K(Bg,2);h=g.data;h[0]=Ba(1,E(618),E(2640));h[1]=Qz(BB(Bg,[Ba(1,E(2641),E(2642)),D2(E(667)), +Bc(E(665)),Bw(),Ba(1,E(624),E(2644))]));Eb(b,g);f[4]=b;f[5]=Bd();b=new ER;c=new S;T(c);Bb(H(c,E(2550)),63);Fh(b,4,E(2551),Q(c));f[6]=b;f[7]=D2(E(578));b=new ER;c=new S;T(c);Bb(H(c,E(2550)),63);Fh(b,4,E(2552),Q(c));f[8]=b;f[9]=Bd();E3();f[10]=Fy;f[11]=Bd();f[12]=Kp();f[13]=BR();return BT(d,e);}c=BN(Bo(AT2));b=BY(b);d=new S;T(d);H(H(d,c),b);i=Q(d);e=K(Bg,13);f=e.data;f[0]=BL();f[1]=Ba(1,E(2679),E(2693));f[2]=Bw();d=new DD;g=K(Bg,2);h=g.data;h[0]=Ba(1,E(618),E(2640));h[1]=Qz(BB(Bg,[Ba(1,E(2641),E(2642)),D2(E(667)), +Bc(E(665)),Bw(),Ba(1,E(624),E(2644))]));Eb(d,g);f[3]=d;f[4]=Bd();b=new ER;c=new S;T(c);Bb(H(c,E(2550)),63);Fh(b,4,E(2551),Q(c));f[5]=b;f[6]=D2(E(578));b=new ER;c=new S;T(c);Bb(H(c,E(2550)),63);Fh(b,4,E(2552),Q(c));f[7]=b;f[8]=Bd();E3();f[9]=Fy;f[10]=Bd();f[11]=Kp();f[12]=BR();return BT(i,e);},DNd=(a,b)=>{AMk();return Kr(D3(CIa,b));},D9v=(a,b,c)=>{let d,e,f,g,h,i,j,k,l;d=new S;T(d);e=Ck(c,E(594),0);f=Dl(Ck(c,E(2560),0));g=BtO(a,e);h=BtO(a,f);if(BO(e,E(2694))){i=E(2580);e=Dl(ES(CC(e,2)));}else i=!(g!=40&&h!=40) +?E(807):!(g!=58&&h!=58)?E(709):!(g!=91&&h!=91)?E(729):R(c,E(2679),0);j=Dl(e);L(d,E(2695));if(i===null)i=E(748);L(d,i);L(d,E(2241));L(d,j);L(d,E(1762));if(f!==null){L(d,E(2242));L(d,f);L(d,E(1268));}k=Ck(c,E(578),0);if(k!==null){L(d,E(2244));L(d,k);}l=Ck(c,E(2573),0);if(l!==null&&!CQ(l)){L(d,E(2670));L(d,l);}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}b=a.cfc;AHA();if(b===AT3)L(d,E(2696));return Q(d);},DtB=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v, +w;f=a.cfc;AHA();if(f===AT3&&!b.cQK)return B5(E(2697));g=Ck(d,E(594),0);h=Dl(Ck(d,E(2560),0));i=BtO(a,g);j=BtO(a,h);if(BO(g,E(2694))){k=E(2580);g=Dl(ES(CC(g,2)));}else k=!(i!=40&&j!=40)?E(807):!(i!=58&&j!=58)?E(709):!(i!=91&&j!=91)?E(729):R(d,E(2679),0);a:{if(k===null){Cy();f=O9;l=AH2(Vj(b.bGM));break a;}if(BG(k,E(781))){Cy();f=YI;l=null;break a;}if(BG(k,E(2698))){Cy();f=YI;l=null;break a;}if(BG(k,E(2699))){Cy();f=AEq;l=null;break a;}if(BG(k,E(807))){Cy();f=Wd;l=null;break a;}if(BG(k,E(2700))){Cy();f=Y8;l=null;break a;}if +(BG(k,E(606))){Cy();f=VL;l=null;break a;}Cy();f=O9;l=Bu5(k,b.bGM);if(l!==null)break a;b=new BP;X(b);J(b);}m=Dl(g);e=Cf(b);if(h===null)h=m;n=B4(e,h);o=DA(b,1,m);p=o.bG5;if(p===null)p=ED(b,c,o,n,f,l);q=Ck(d,E(578),0);p.bH1=n;if(q!==null){r=Lc(b.bGM);c=b.bGM;f=null;s=K(I1,1);t=s.data;Fs();t[0]=KB;p.bGZ=N5(q,r,MC(c,f,0,s),b.bGM.bGN);}ZW(p,Ck(d,E(2573),0));u=R(d,E(2245),0);if(u!==null){v=new FZ;c=DF(b.bGM,E(2248));FC();Gb(v,c,FI);p.bIa=Gj(v,u);}w=R(d,E(608),0);CM();PP(p,C6,w===null?null:DV(b.bGM.bGN,w));return By();},BtO +=(a,b)=>{return !(b!==null&&b.bGI.length>2)?0:Bn(b,0);},DZS=(a,b,c,d,e)=>{return DtB(a,b,c,d,e);},EvM=()=>{let b;CL4=Bv(BB(Bi,[E(606),E(780),E(713),E(709),E(752),E(719),E(55),E(2672),E(785),E(758),E(764),E(774),E(753),E(725),E(704),E(782),E(741),E(784),E(796),E(799),E(710),E(807),E(729),E(715),E(740),E(749),E(2580),E(721),E(728),E(781),E(2698),E(2699)]));b=K(Bi,1);b.data[0]=E(2701);Ck5=Bv(b);CIa=Dp(E(2657));},A0p=N(Bx),AT3=null,A51=null,D3p=null,AHA=()=>{AHA=Z(A0p);ESy();},DRV=(a,b,c)=>{AHA();Ct(a,b,c);},Cfe +=(a,b)=>{let c=new A0p();DRV(c,a,b);return c;},ESy=()=>{let b,c,d;AT3=Cfe(E(2702),0);b=Cfe(E(2703),1);A51=b;c=K(A0p,2);d=c.data;d[0]=AT3;d[1]=b;D3p=c;},AJx=N(),BYb=null,BfW=null,DiI=null,CHR=null,CwF=null,CAO=0,U3=()=>{U3=Z(AJx);D5n();},BJo=a=>{let b,c;b=new B97;U3();c=CHR;b.cwG=a;Cb(b,c);return b;},BeC=(a,b)=>{let c,d,e,f,g;c=new B96;U3();d=DiI;HE();e=Q6;HA();f=G0;g=CwF;c.cBX=a;Iy(c,d,e,f,g);return c;},B9W=(a,b,c)=>{let d,e,f;d=new S;T(d);L(d,E(2704));L(d,R(b,E(594),0));L(d,E(1762));L(d,c);e=R(b,E(567),0);if +(e!==null){L(d,E(2244));L(d,e);}f=R(b,E(2573),0);if(f!==null&&!CQ(f)){L(d,E(2670));L(d,f);}if(R(b,E(608),0)!==null){L(d,E(2228));L(d,R(b,E(608),0));}return Q(d);},DiZ=(a,b,c,d,e)=>{let f,g,h,i;f=DA(c,0,c.GW(R(d,E(594),0)));if(f.bG5===null){Cy();g=ED(c,b,f,e,Ok,null);if(Df()){U3();if(!CAO&&g===null){b=new C4;X(b);J(b);}}h=R(d,E(608),0);CM();PP(g,C6,h===null?null:DV(c.bGM.bGN,h));i=R(d,E(567),0);if(i!==null)g.bGZ=FD(i);ZW(g,R(d,E(2573),0));return By();}d=f.bHL;b=new S;T(b);H(H(b,E(2705)),d);return B5(Q(b));},D5n +=()=>{let b,c,d,e,f,g,h;CAO=0;b=K(Bi,1);b.data[0]=E(584);BYb=Bv(b);c=new AJx;U3();BfW=c;c=BN(Bo(AJx));d=new S;T(d);H(H(d,c),E(2349));d=Q(d);b=K(Bg,11);e=b.data;e[0]=BL();e[1]=Bc(E(584));e[2]=Bw();e[3]=Bc(E(665));e[4]=Bw();e[5]=Ba(1,E(594),E(597));e[6]=Bd();c=new ER;f=new S;T(f);Bb(H(f,E(2550)),63);Fh(c,4,E(2573),Q(f));e[7]=c;e[8]=D2(E(567));e[9]=Kp();e[10]=BR();DiI=BT(d,b);c=BN(Bo(AJx));d=new S;T(d);H(H(d,c),E(583));g=Q(d);b=K(Bg,15);e=b.data;e[0]=BL();e[1]=Bc(E(584));e[2]=Bw();e[3]=Bc(E(2706));e[4]=Ba(1,E(2560), +E(2707));e[5]=Bc(E(2706));e[6]=Bw();e[7]=Bc(E(665));e[8]=Bw();e[9]=Ba(1,E(594),E(597));e[10]=Bd();c=new ER;h=new S;T(h);Bb(H(h,E(2550)),63);Fh(c,4,E(2573),Q(h));e[11]=c;e[12]=D2(E(567));e[13]=Kp();e[14]=BR();CHR=BT(g,b);CwF=HO(new Cca);},Bwc=N(Bl),CgI=null,Bre=()=>{Bre=Z(Bwc);Et7();},DQz=a=>{let b,c,d;Bre();b=BN(Bo(Bwc));c=K(Bg,11);d=c.data;d[0]=BL();d[1]=Bc(E(2708));d[2]=Bw();d[3]=Ba(1,E(563),E(2709));d[4]=D2(E(578));E3();d[5]=Fy;d[6]=Bd();d[7]=Kp();d[8]=Bd();d[9]=Bc(E(568));d[10]=BR();Cb(a,BT(b,c));},DHg= +()=>{let a=new Bwc();DQz(a);return a;},EfV=(a,b,c)=>{let d,e;d=new S;T(d);L(d,E(2710));L(d,R(c,E(563),0));L(d,E(1762));e=R(c,E(578),0);if(e!==null){L(d,E(2244));L(d,e);L(d,E(2711));}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}return Q(d);},Fr8=a=>{Bre();return CgI;},E_e=(a,b,c,d,e)=>{let f,g,h;b=b;e=R(d,E(563),0);f=DA(b,0,E8(b,e));g=R(d,E(578),0);h=A2e(g,Vj(b.bGM),AKB(b.bGM),AWx(b.bGM));e=B4(Cf(b),f.bHL);F7();c=AOn(b,c,f,e,Kw,h);if(OI(c)){c=GH(b);if(g!==null +&&h===null)c.bGZ=FD(g);e=R(d,E(2245),0);if(e!==null){f=new FZ;g=DF(b.bGM,E(2248));FC();Gb(f,g,FI);c.bIa=Gj(f,e);}d=R(d,E(608),0);if(d!==null){CM();PP(c,C6,DV(b.bGM.bGN,d));}c=By();}return c;},Et7=()=>{let b;b=K(Bi,1);b.data[0]=E(2708);CgI=Bv(b);},Brx=N(Bl),Ctc=null,BdA=()=>{BdA=Z(Brx);EHE();},Fps=a=>{let b,c,d;BdA();b=BN(Bo(Brx));c=K(Bg,17);d=c.data;d[0]=BL();d[1]=Bc(E(2708));d[2]=Bw();d[3]=Bc(E(2706));d[4]=Ba(1,E(2560),E(2707));d[5]=Bc(E(2706));d[6]=Bw();d[7]=Bc(E(665));d[8]=Bw();d[9]=Ba(1,E(563),E(2709));d[10] +=D2(E(578));E3();d[11]=Fy;d[12]=Bd();d[13]=Kp();d[14]=Bd();d[15]=Bc(E(568));d[16]=BR();Cb(a,BT(b,c));},EIc=()=>{let a=new Brx();Fps(a);return a;},Duu=(a,b,c)=>{let d,e;d=new S;T(d);L(d,E(2710));L(d,R(c,E(563),0));L(d,E(2666));L(d,Ck(c,E(2560),0));L(d,E(1268));e=R(c,E(578),0);if(e!==null){L(d,E(2244));L(d,e);}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}return Q(d);}; +let DJ9=a=>{BdA();return Ctc;},ElF=(a,b,c,d,e)=>{let f,g;b=b;e=R(d,E(563),0);f=DA(b,0,E8(b,e));e=Ck(d,E(2560),0);g=B4(Cf(b),e);F7();c=So(b,c,f,g,Kw);if(OI(c)){c=GH(b);e=R(d,E(578),0);if(e!==null)c.bGZ=FD(e);e=R(d,E(2245),0);if(e!==null){g=new FZ;f=DF(b.bGM,E(2248));FC();Gb(g,f,FI);c.bIa=Gj(g,e);}d=R(d,E(608),0);if(d!==null){CM();PP(c,C6,DV(b.bGM.bGN,d));}c=By();}return c;},EHE=()=>{let b;b=K(Bi,1);b.data[0]=E(2708);Ctc=Bv(b);},Buo=N(Bl),Dmz=null,Bfq=()=>{Bfq=Z(Buo);E$m();},DSX=a=>{let b,c,d;Bfq();b=BN(Bo(Buo));c +=K(Bg,13);d=c.data;d[0]=BL();d[1]=Bc(E(2708));d[2]=Bw();d[3]=Ba(1,E(563),E(2709));d[4]=D2(E(578));E3();d[5]=Fy;d[6]=Bd();d[7]=Kp();d[8]=Bd();d[9]=Bc(E(568));d[10]=Bd();d[11]=Bc(E(613));d[12]=BR();Cb(a,BT(b,c));},D29=()=>{let a=new Buo();DSX(a);return a;},D2W=(a,b,c)=>{let d,e;d=new S;T(d);L(d,E(2712));L(d,R(c,E(563),0));L(d,E(1762));e=R(c,E(578),0);if(e!==null){L(d,E(2244));L(d,e);}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}return Q(d);},E9o=a=>{Bfq();return Dmz;},Fnu +=(a,b,c,d,e)=>{let f,g,h,i;b=b;e=R(d,E(563),0);f=b;g=DA(b,0,E8(f,e));if(g.bG5!==null){d=g.bHL;b=new S;T(b);H(H(b,E(2713)),d);c=B5(Q(b));}else{h=B4(Cf(b),g.bJ1);F7();c=So(b,c,g,h,Kw);if(OI(c)){h=GH(b);c=R(d,E(578),0);if(c!==null)h.bGZ=FD(c);i=R(d,E(2245),0);if(i!==null){c=new FZ;e=DF(b.bGM,E(2248));FC();Gb(c,e,FI);h.bIa=Gj(c,i);}c=R(d,E(608),0);if(c!==null){CM();PP(h,C6,DV(b.bGM.bGN,c));}X5(f);c=By();}}return c;},E$m=()=>{let b;b=K(Bi,1);b.data[0]=E(2708);Dmz=Bv(b);},B38=N(Bl),EsL=a=>{let b,c,d;b=BN(Bo(B38));c +=K(Bg,5);d=c.data;d[0]=BL();d[1]=Ba(1,E(563),E(564));d[2]=Bd();d[3]=CFI(E(567));d[4]=BR();Cb(a,BT(b,c));},ECz=()=>{let a=new B38();EsL(a);return a;},FiF=a=>{FY();return G6;},DWR=(a,b,c)=>{let d;d=Dl(R(c,E(563),0));b=R(c,E(567),0);c=new S;T(c);H(H(H(H(c,E(2714)),d),E(2715)),b);return Q(c);},D$V=(a,b,c,d,e)=>{let f,g,h,i,j;b=b;c=R(d,E(563),0);e=R(d,E(567),0);c=DA(b,1,E8(b,c));f=c.bG5;if(f===null){d=c.bHL;b=new S;T(b);H(H(b,E(2716)),d);b=B5(Q(b));}else{g=Lc(b.bGM);h=b.bGM;c=null;i=K(I1,1);j=i.data;Fs();j[0]=KB;f.bGZ +=N5(e,g,MC(h,c,0,i),b.bGM.bGN);b=By();}return b;},AZO=N(Bl),CnK=null,D8Q=null,EcU=null,BO2=null,AC_=()=>{AC_=Z(AZO);DU6();},AGQ=()=>{AC_();return E(2717);},CQ0=(a,b)=>{AC_();Cb(a,Fh2(b));},Fzy=a=>{let b=new AZO();CQ0(b,a);return b;},El2=a=>{FY();return G6;},Fh2=b=>{let c,d,e,f,g,h,i,j;AC_();c=BN(Bo(AZO));b=BY(b);d=CR();H(H(d,c),b);c=CH(d);e=K(Bg,23);f=e.data;f[0]=BL();g=new C0;b=new Ch;h=K(Bg,2);i=h.data;i[0]=Ba(1,E(493),E(2718));i[1]=Bw();Cj(b,h);C3(g,b);f[1]=g;j=new DD;i=K(Bg,2);h=i.data;h[0]=Ba(1,E(2719), +BwJ());h[1]=Ba(2,E(2720),BO2);Eb(j,i);f[2]=j;f[3]=Bd();b=new C0;d=new Ch;h=K(Bg,5);i=h.data;i[0]=Bw();i[1]=Bc(E(2721));i[2]=Ba(1,E(2722),E(2723));i[3]=Bc(E(2724));i[4]=Bw();Cj(d,h);C3(b,d);f[4]=b;f[5]=DI(Ba(1,E(2725),E(603)));f[6]=DI(Ba(1,E(2726),E(2727)));f[7]=Bd();b=new Ch;h=K(Bg,8);i=h.data;i[0]=Ba(1,E(2728),Cnt());i[1]=Ba(1,E(2729),E(2730));i[2]=Ba(1,E(2275),E(621));i[3]=Ba(1,E(2731),E(2732));i[4]=DI(Ba(1,E(2733),E(2734)));i[5]=Ba(1,E(2278),E(621));i[6]=Ba(1,E(2735),E(2736));i[7]=Ba(1,E(2737),CmR());Cj(b, +h);f[8]=b;f[9]=Bd();f[10]=DI(Ba(1,E(2738),E(603)));f[11]=DI(Ba(1,E(2739),E(2727)));b=new C0;d=new Ch;h=K(Bg,5);i=h.data;i[0]=Bw();i[1]=Bc(E(2721));i[2]=Ba(1,E(2740),E(2723));i[3]=Bc(E(2724));i[4]=Bw();Cj(d,h);C3(b,d);f[12]=b;f[13]=Bd();b=new DD;h=K(Bg,2);i=h.data;i[0]=Ba(1,E(2741),BwJ());i[1]=Ba(2,E(2742),BO2);Eb(b,h);f[14]=b;f[15]=Bd();f[16]=D5t(CFE());f[17]=Bd();E3();f[18]=Fy;f[19]=Bd();f[20]=D2(E(578));b=new C0;d=new Ch;h=K(Bg,3);i=h.data;i[0]=Bc(E(82));i[1]=Bd();i[2]=Ba(1,E(644),E(2540));Cj(d,h);C3(b,d);f[21] +=b;f[22]=BR();return BT(c,e);},CFE=()=>{AC_();CM();return HQ(E1);},BwJ=()=>{let b,c,d;AC_();b=AGQ();c=AGQ();d=new S;T(d);Bb(d,40);H(H(H(H(d,b),E(2587)),c),E(2743));return Q(d);},EQx=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n;d=new S;T(d);L(d,E(2744));L(d,Cqq(B3w(a,c),BXt(a,c)));L(d,E(2745));L(d,Cu9(a,c,E(2719),E(2720)));L(d,E(2464));L(d,Cu9(a,c,E(2741),E(2742)));if(!(!CB(MI(R(c,E(2729),0)),E(423))&&!CB(MI(R(c,E(2735),0)),E(423))))L(d,E(2746));e=R(c,E(2731),0);if(e!==null&&!CQ(e)){a:{b:{c:{d:{L(d,E(2747));switch(Bn(F9(e), +0)){case 108:break;case 114:break d;case 117:break c;default:break b;}b=E(2748);break a;}b=E(2749);break a;}b=E(2750);break a;}b=E(2751);}L(d,b);}if(R(c,E(2733),0)!==null)L(d,E(2752));f=Ck(c,E(620),0);if(f!==null){L(d,E(2753));L(d,f);L(d,E(1762));}g=R(c,E(2722),0);if(g!==null){L(d,E(2754));L(d,g);L(d,E(2755));}h=R(c,E(2740),0);if(h!==null){L(d,E(2754));L(d,h);L(d,E(2756));}i=R(c,E(2725),0);if(i!==null){L(d,E(2757));L(d,i);L(d,E(2755));}j=R(c,E(2738),0);if(j!==null){L(d,E(2757));L(d,j);L(d,E(2756));}k=R(c,E(2726), +0);if(k!==null){L(d,E(2758));L(d,Dl(k));L(d,E(2755));}l=R(c,E(2739),0);if(l!==null){L(d,E(2758));L(d,Dl(l));L(d,E(2756));}m=R(c,E(644),0);if(m!==null){L(d,E(2312));L(d,m);L(d,E(1268));}if(R(c,E(578),0)!==null){L(d,E(2244));L(d,R(c,E(578),0));}if(R(c,E(608),0)!==null){L(d,E(2229));L(d,R(c,E(608),0));}if(R(c,E(2245),0)!==null)L(d,E(2246));n=R(c,E(493),0);if(n!==null){L(d,E(2759));L(d,n);}return Q(d);},Cqq=(b,c)=>{let d;AC_();d=new S;T(d);H(H(d,b),c);c=Q(d);if(!CB(c,E(2054))){if(!CB(c,E(900))){if(!CB(c,E(2309))) +{if(!CB(c,E(1198))&&!CB(c,E(372))){if(CQ(c))return E(2760);return E(2761);}return E(2762);}return E(2763);}return E(2764);}return E(2765);},Cu9=(a,b,c,d)=>{let e;e=R(b,c,0);if(e===null){c=Dl(R(b,d,0));b=Dl(R(b,d,1));d=new S;T(d);Bb(H(H(H(H(d,E(2766)),c),E(2380)),b),39);return Q(d);}b=Dl(e);c=new S;T(c);Bb(c,39);Bb(H(c,b),39);return Q(c);},EVw=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y;e=R(d,E(2719),0);f=b;g=E8(f,e);h=E8(f,R(d,E(2741),0));if(g===null&&h===null){e=Dl(R(d,E(2720),0));f=Dl(R(d,E(2720), +1));i=Dl(R(d,E(2742),0));j=Dl(R(d,E(2742),1));k=DA(b,1,e);l=DA(b,1,f);m=DA(b,1,i);n=DA(b,1,j);if(!(k.bG5===null?0:1)){b=new S;T(b);H(H(b,E(2767)),e);b=B5(Q(b));}else if(!(l.bG5===null?0:1)){b=new S;T(b);H(H(b,E(2767)),f);b=B5(Q(b));}else if(!(m.bG5===null?0:1)){b=CR();H(H(b,E(2767)),i);b=B5(CH(b));}else if(!(n.bG5===null?0:1)){b=CR();H(H(b,E(2767)),j);b=B5(CH(b));}else b=DI2(b,c,AD6(k),AD6(l),AD6(m),AD6(n),Bc8(a,d),B4(Cf(b),R(d,E(644),0)));return b;}if(g!==null){if(h!==null){o=null;p=null;q=Bc8(a,d);if(CB(g, +E(2768))&&AU9(f,g)===null){o=C0W(f,g);g=Clj(f,g);}if(CB(h,E(2768))&&AU9(f,h)===null){p=C0W(f,h);h=Clj(f,h);}r=AYD(b,1,g);if(!AAs(r)){s=AYD(b,1,h);if(!AAs(s)){t=AD6(Mr(r));if(t===null){e=Mr(r);l=B4(Cf(b),Be6(Mr(r)));Cy();t=ED(b,c,e,l,NG,null);}i=AD6(Mr(s));if(i===null){e=Mr(s);l=B4(Cf(b),Be6(Mr(s)));Cy();i=ED(b,c,e,l,NG,null);}j=DAV(a,d);DC();u=j!==FL&&j!==Gy?DOV(a,d):1;k=C8G(d);v=R(d,E(2722),0);w=R(d,E(2740),0);e=E2j(k,Cf(b));x=Qy(HB(b))<=0?0:1;f=DyH(Xq(DuT(VF(AAc(e,u,x),EBs(k),FeL(k)),EHX(k),DMv(k)),A$z(f), +A9r(f)),v,w);y=KE(c,b,B1(HB(b)),t,i,q,f);if(R(d,E(2245),0)!==null){m=new FZ;e=DF(HB(b),E(2248));FC();Gb(m,e,FI);C1H(y,Gj(m,R(d,E(2245),0)));}C1K(y,o,p);if(!(j!==FL&&j!==HG))y=AA9(y);ESJ(y,Cwn(k));e=Iw(CFE(),d,GK(HB(b)));l=y;Ep9(l,e);U5(l,Ck(d,E(620),0));if(R(d,E(578),0)!==null)D00(y,FD(R(d,E(578),0)));DGa(y,c);Fu1(a,b,y,R(d,E(493),0));return By();}return B5(AL$(s));}return B5(AL$(r));}return DAr(a,c,b,d);}return Fxv(a,c,b,d);},Fu1=(a,b,c,d)=>{IS(b,c);if(d!==null)c.b9Z=DM(d);},Fxv=(a,b,c,d)=>{let e,f,g,h,i,j, +k,l;e=Dl(R(d,E(2720),0));f=Dl(R(d,E(2720),1));g=DA(c,1,e);h=DA(c,1,f);g=g.bG5;if(g===null?0:1){e=h.bG5;if(e===null?0:1){i=g;j=e;k=DA(c,1,Ye(R(d,E(2741),0),E(1268)));l=k.bG5;if(l===null){e=B4(Cf(c),k.bHL);Cy();l=ED(c,b,k,e,NG,null);}if(!Dq1(c,b,1,i,j,l,Bc8(a,d),B4(Cf(c),R(d,E(644),0))))return B5(E(2769));return By();}b=new S;T(b);H(H(b,E(2767)),f);return B5(Q(b));}b=new S;T(b);H(H(b,E(2767)),e);return B5(Q(b));},DAr=(a,b,c,d)=>{let e,f,g,h,i,j,k,l;e=Dl(R(d,E(2742),0));f=Dl(R(d,E(2742),1));g=DA(c,1,e);h=DA(c, +1,f);g=g.bG5;if(g===null?0:1){e=h.bG5;if(e===null?0:1){i=g;j=e;k=DA(c,1,Ye(R(d,E(2719),0),E(1268)));l=k.bG5;if(l===null){e=B4(Cf(c),k.bHL);Cy();l=ED(c,b,k,e,NG,null);}if(!Dq1(c,b,2,i,j,l,Bc8(a,d),B4(Cf(c),R(d,E(644),0))))return B5(E(2769));return By();}b=new S;T(b);H(H(b,E(2767)),f);return B5(Q(b));}b=new S;T(b);H(H(b,E(2767)),e);return B5(Q(b));},Bc8=(a,b)=>{let c,d,e;c=DdJ(B3w(a,b));d=Cxx(CTH(BXt(a,b)),c);if(!(!CB(R(b,E(2729),0),E(423))&&!CB(R(b,E(2735),0),E(423))))d=AQj(d);e=R(b,E(2733),0);if(Bj(E(35),e))d +=C5z(d);else if(Bj(E(2770),e))d=CBV(d);else if(Bj(E(2771),e))d=Co9(d);else if(Bj(E(635),e))d=C7d(d);return d;},DOV=(a,b)=>{return (Ih(Cnh(a,b),E(2772),E(14))).bGI.length;},DAV=(a,b)=>{b=Ih(Cnh(a,b),E(2773),E(14));if(BO(b,E(2309)))b=CC(b,1);if(Dr(b,E(2309)))b=B_(b,0,b.bGI.length-1|0);return AXV(b);},B3w=(a,b)=>{return CeL(a,b,E(2728));},BXt=(a,b)=>{return CeL(a,b,E(2737));},CeL=(a,b,c)=>{return Ih(MI(R(b,c,0)),E(840),E(14));},Cnh=(a,b)=>{let c,d,e,f,g;c=B3w(a,b);d=MI(R(b,E(2729),0));e=MI(R(b,E(2731),0));f=MI(R(b, +E(2735),0));b=BXt(a,b);g=new S;T(g);H(H(H(H(H(g,c),d),e),f),b);return Q(g);},MI=b=>{AC_();if(b===null)return E(14);return b;},ERr=(a,b,c,d,e)=>{return EVw(a,b,c,d,e);},DU6=()=>{let b,c,d,e;b=AGQ();c=AGQ();d=new S;T(d);H(H(H(H(d,b),E(2774)),c),E(2775));CnK=Q(d);b=AGQ();c=AGQ();d=new S;T(d);H(H(H(H(H(d,E(2706)),b),E(2774)),c),E(2776));e=Q(d);D8Q=e;b=CnK;c=new S;T(c);b=H(H(c,E(2055)),b);Bb(b,124);Bb(H(b,e),41);e=Q(c);EcU=e;b=new S;T(b);H(H(H(H(H(b,E(2777)),e),E(2778)),e),E(2779));BO2=Q(b);},BRT=N(Bl),E$P=(a,b)=> +{Cb(a,FeP(b));}; +let Fgx=a=>{let b=new BRT();E$P(b,a);return b;},DUb=a=>{FY();return G6;},FeP=b=>{let c,d,e,f,g,h,i,j,k,l,m;c=BN(Bo(BRT));d=BY(b);e=new S;T(e);H(H(e,c),d);f=Q(e);g=K(Bg,14);h=g.data;h[0]=BL();i=new C0;c=new Ch;j=K(Bg,2);k=j.data;k[0]=Ba(1,E(493),E(2718));k[1]=Bw();Cj(c,j);C3(i,c);h[1]=i;l=new ER;e=Cqy(b);m=BwJ();c=new S;T(c);H(H(H(H(H(c,E(2055)),e),E(2780)),m),E(2781));Fh(l,3,E(2719),Q(c));h[2]=l;h[3]=Bd();h[4]=DI(Ba(1,E(2725),E(603)));h[5]=Bd();c=new DD;j=K(Bg,2);k=j.data;k[0]=Ba(2,E(2782),E(2783));k[1]=Ba(2, +E(2784),E(2785));Eb(c,j);h[6]=c;h[7]=Bd();h[8]=DI(Ba(1,E(2738),E(603)));h[9]=Bd();e=new ER;c=Cqy(b);i=BwJ();d=new S;T(d);H(H(H(H(H(d,E(2055)),c),E(2780)),i),E(2781));Fh(e,3,E(2741),Q(d));h[10]=e;h[11]=Bd();b=new C0;c=new Ch;j=K(Bg,3);k=j.data;k[0]=Bc(E(82));k[1]=Bd();k[2]=Ba(1,E(644),E(2540));Cj(c,j);C3(b,c);h[12]=b;h[13]=BR();return BT(f,g);},Cqy=b=>{F8();if(b!==Wa){if(b!==AWv){b=new Bt;X(b);J(b);}return E(2786);}return E(2787);},Da6=(a,b)=>{if(Bn(b,0)==Bn(b,1)){Cy();return Yg;}Cy();return AMG;},Fp1=(a,b,c)=> +{let d,e,f,g,h,i,j,k;d=new S;T(d);if(R(c,E(2782),1)!==null){e=R(c,E(2782),0);f=R(c,E(2719),1);g=R(c,E(2741),1);}else{e=R(c,E(2784),1);g=R(c,E(2719),1);f=R(c,E(2741),1);}L(d,E(2788));L(d,Dl(f));L(d,E(2303));L(d,Dl(g));L(d,E(1762));if(Bn(e,0)!=Bn(e,1))L(d,E(2789));else L(d,E(2790));if(CB(C1D(a,c),E(423)))L(d,E(2746));h=R(c,E(2725),0);if(h!==null){L(d,E(2791));L(d,h);L(d,E(2755));}i=R(c,E(2738),0);if(i!==null){L(d,E(2791));L(d,i);L(d,E(2756));}j=R(c,E(644),0);if(j!==null){L(d,E(2312));L(d,Dl(j));L(d,E(1268));}k +=R(c,E(493),0);if(k!==null){L(d,E(2759));L(d,k);}return Q(d);},Fh0=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba;a:{f=R(d,E(2719),1);g=R(d,E(2741),1);h=b;i=Ui(h,E(2792));if(R(d,E(2782),1)!==null){j=DA(b,1,E8(h,g));k=j.bG5;if(k!==null){e=E8(h,g);l=new S;T(l);H(H(l,e),i);m=DA(b,1,Q(l));n=Da6(a,R(d,E(2782),0));l=ED(b,c,m,B4(Cf(b),f),n,null);o=k;break a;}d=j.bHL;b=new S;T(b);H(H(b,E(2767)),d);return B5(Q(b));}j=DA(b,1,E8(h,f));k=j.bG5;if(k!==null){e=E8(h,f);l=new S;T(l);H(H(l,e),i);m=DA(b,1,Q(l));n +=Da6(a,R(d,E(2784),1));o=ED(b,c,m,B4(Cf(b),g),n,null);l=k;}else{d=j.bHL;b=new S;T(b);H(H(b,E(2767)),d);return B5(Q(b));}}p=new H6;FU();e=Hf;Mo(p,e,e);q=(C1D(a,d)).bGI.length;if(q==1){r=k.bHD;Cy();if(r!==AMG&&r!==Yg){s=0;e=(K6(b)).dX();while(e.dY()){r=e.dZ();if(M2(r)==1&&UY(r,k)&&!(!C3p(r,AMG)&&!C3p(r,Yg)))s=s+1|0;}if(s>1)q=q+1|0;}else{b=new Bt;X(b);J(b);}}t=R(d,E(2725),0);u=R(d,E(2738),0);v=null;if(R(d,E(644),0)!==null){e=R(d,E(644),0);if(t===null&&u===null){w=DX(Dm(E(2793)),e,0);if(O7(w)){t=CU(w,1);e=ES(Dl(ES(CU(w, +2))));u=CU(w,3);}else{x=DX(Dm(E(2794)),e,0);if(O7(x)){t=CU(x,1);e=ES(Dl(ES(CU(x,2))));u=null;}else{y=DX(Dm(E(2795)),e,0);if(O7(y)){t=null;e=ES(Dl(ES(CU(y,1))));u=CU(y,2);}}}}v=Dl(e);}z=AAc(B4(Cf(b),v),q,Qy(b.bGM)<=0?0:1);ba=KE(c,b,B1(b.bGM),l,o,p,Xq(VF(z,t,u),A$z(h),A9r(h)));c=Cf(h);IY();Dpi(c,APz);Dpi(Cf(h),AVb);b=R(d,E(493),0);IS(h,ba);if(b!==null)ba.b9Z=DM(b);return By();},C1D=(a,b)=>{if(R(b,E(2782),1)===null){if(R(b,E(2784),0)===null){b=new Bt;X(b);J(b);}return ES(R(b,E(2784),0));}return ES(R(b,E(2782), +1));},Eyf=(a,b,c,d,e)=>{return Fh0(a,b,c,d,e);}; +function APa(){F.call(this);this.c$J=E(2796);} +let B_q=null,CQb=null,Cm_=null,AKq=()=>{AKq=Z(APa);Foq();},EXE=a=>{AKq();a.c$J=E(2796);},DAQ=()=>{let a=new APa();EXE(a);return a;},EF$=(a,b)=>{let c,d,e,f,g,h,i;if(b){c=BN(Bo(APa));d=new S;T(d);c=H(d,c);Bb(c,97);XU(c,b);e=Q(d);f=K(Bg,19);g=f.data;g[0]=BL();g[1]=Bc(E(584));g[2]=Bw();g[3]=Ba(1,E(585),E(2797));g[4]=Bw();g[5]=Bc(E(2798));g[6]=Bw();g[7]=CJA();g[8]=Bd();c=new ER;h=new S;T(h);Bb(H(h,E(2550)),63);Fh(c,4,E(2551),Q(h));g[9]=c;g[10]=D2(E(567));c=new ER;h=new S;T(h);Bb(H(h,E(2550)),63);Fh(c,4,E(2552), +Q(h));g[11]=c;g[12]=Bd();g[13]=Kp();g[14]=Bd();E3();g[15]=Fy;g[16]=Bd();g[17]=Bc(E(568));g[18]=BR();return BT(e,f);}c=BN(Bo(APa));d=new S;T(d);c=H(d,c);Bb(c,97);XU(c,b);d=Q(d);f=K(Bg,17);g=f.data;g[0]=BL();g[1]=Bc(E(584));g[2]=Bw();g[3]=Ba(1,E(585),E(2797));g[4]=Bw();g[5]=Bc(E(2798));g[6]=Bw();g[7]=CJA();g[8]=Bd();c=new ER;i=new S;T(i);Bb(H(i,E(2550)),63);Fh(c,4,E(2551),Q(i));g[9]=c;g[10]=D2(E(567));c=new ER;i=new S;T(i);Bb(H(i,E(2550)),63);Fh(c,4,E(2552),Q(i));g[11]=c;g[12]=Bd();g[13]=Kp();g[14]=Bd();E3();g[15] +=Fy;g[16]=BR();return BT(d,f);},COx=(a,b)=>{let c,d,e,f,g;c=new B_B;d=EF$(a,b);HE();e=Q6;HA();f=G0;g=!b?CQb:Cm_;c.dcI=a;Iy(c,d,e,f,g);return c;},Foq=()=>{let b;b=K(Bi,1);b.data[0]=E(584);B_q=Bv(b);CQb=HO(new Cvi);Cm_=HO(new Cvj);}; +function WO(){let a=this;F.call(a);a.ctf=null;a.ci6=null;a.cGK=null;} +let BKk=null,CLn=null,DqG=null,AFu=()=>{AFu=Z(WO);ERa();},Bc3=(a,b,c,d)=>{AFu();a.ctf=c;a.ci6=b;a.cGK=d;},Fy2=(a,b,c)=>{let d=new WO();Bc3(d,a,b,c);return d;},EZb=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=BN(Bo(WO));d=a.ci6;e=new S;T(e);H(H(H(e,c),d),E(583));e=Q(e);f=K(Bg,18);g=f.data;g[0]=BL();g[1]=Bc(E(584));g[2]=Bw();g[3]=Ba(1,E(585),E(586));h=new DD;i=K(Bg,2);j=i.data;c=new Ch;k=K(Bg,4);l=k.data;l[0]=Bw();l[1]=Bc(E(2798));l[2]=Bw();l[3]=b;Cj(c,k);j[0]=c;j[1]=Bc(E(14));Eb(h,i);g[4]=h;g[5]=Bd();c=new ER;h=new S;T(h);Bb(H(h, +E(2550)),63);Fh(c,4,E(2551),Q(h));g[6]=c;g[7]=D2(E(567));b=new ER;d=new S;T(d);Bb(H(d,E(2550)),63);Fh(b,4,E(2552),Q(d));g[8]=b;g[9]=Bd();g[10]=(Bul()).bH3;g[11]=Bd();E3();g[12]=Fy;g[13]=Bd();g[14]=Bc(E(82));g[15]=Bd();g[16]=Ba(1,E(455),E(566));g[17]=BR();return BT(e,f);},Bul=()=>{AFu();CM();return HQ(C6);},EzH=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m;if(c){d=BN(Bo(WO));e=a.ci6;f=new S;T(f);XU(H(H(H(f,d),e),E(2349)),c);g=Q(f);h=K(Bg,16);i=h.data;i[0]=BL();i[1]=Bc(E(584));i[2]=Bw();i[3]=Ba(1,E(585),E(586));d=new DD;j +=K(Bg,2);k=j.data;k[0]=Qz(BB(Bg,[Bw(),Bc(E(2798)),Bw(),b]));k[1]=Bc(E(14));Eb(d,j);i[4]=d;i[5]=Bd();b=new ER;e=new S;T(e);Bb(H(e,E(2550)),63);Fh(b,4,E(2551),Q(e));i[6]=b;i[7]=D2(E(567));b=new ER;e=new S;T(e);Bb(H(e,E(2550)),63);Fh(b,4,E(2552),Q(e));i[8]=b;i[9]=Bd();i[10]=(Bul()).bH3;i[11]=Bd();E3();i[12]=Fy;i[13]=Bd();i[14]=Bc(E(568));i[15]=BR();return BT(g,h);}d=BN(Bo(WO));e=a.ci6;f=new S;T(f);XU(H(H(H(f,d),e),E(2349)),c);l=Q(f);h=K(Bg,14);i=h.data;i[0]=BL();i[1]=Bc(E(584));i[2]=Bw();i[3]=Ba(1,E(585),E(586));f +=new DD;j=K(Bg,2);m=j.data;m[0]=Qz(BB(Bg,[Bw(),Bc(E(2798)),Bw(),b]));m[1]=Bc(E(14));Eb(f,j);i[4]=f;i[5]=Bd();b=new ER;e=new S;T(e);Bb(H(e,E(2550)),63);Fh(b,4,E(2551),Q(e));i[6]=b;i[7]=D2(E(567));b=new ER;e=new S;T(e);Bb(H(e,E(2550)),63);Fh(b,4,E(2552),Q(e));i[8]=b;i[9]=Bd();i[10]=(Bul()).bH3;i[11]=Bd();E3();i[12]=Fy;i[13]=BR();return BT(l,h);},BQj=a=>{let b,c;b=new Chm;c=EZb(a,a.ctf);b.cfR=a;Cb(b,c);return b;},ARk=(a,b)=>{let c,d,e,f,g;c=new Chl;d=EzH(a,a.ctf,b);HE();e=Q6;HA();f=G0;g=!b?CLn:DqG;c.coh=a;Iy(c, +d,e,f,g);return c;},B$K=(a,b,c)=>{let d,e,f,g;d=new S;T(d);L(d,E(2799));L(d,R(b,E(585),0));e=R(b,E(594),0);if(e===null)L(d,E(2800));else{L(d,E(2365));L(d,Dl(e));L(d,E(1762));}L(d,c);f=R(b,E(567),0);if(f!==null){L(d,E(2244));L(d,f);}g=Ck(b,E(2573),0);if(g!==null&&!CQ(g)){L(d,E(2670));L(d,g);}if(R(b,E(608),0)!==null){L(d,E(2228));L(d,R(b,E(608),0));}return Q(d);},DmB=(a,b,c,d,e,f)=>{let g,h,i,j,k,l,m,n,o,p,q,r,s;a:{g=R(c,E(585),0);h=d.GW(R(c,E(594),0));if(h===null){i=d.b0R;if(i!==null)break a;return B5(E(2801));}i +=(DA(d,1,h)).bG5;if(i===null){b=new S;T(b);H(H(b,E(2802)),h);return B5(Q(b));}}j=BZO(BaW(J3(g)),d.bGM.bNy);k=Iw(Bul(),c,d.bGM.bGN);l=R(c,E(567),0);m=null;if(l!==null){m=FD(l);n=d.bGM;o=K(Kc,2);p=o.data;JN();p[0]=ACf;p[1]=ADy;k=AQL(k,m,n,o);}n=Cf(d);IY();if(WV(n,VC)&&Hh(i)){if(j===Ku){b=i.cuV;c=BH4(f,j,k);U(b,c);}else if(j===M5){b=i.cC2;c=BH4(f,j,k);U(b,c);}return By();}g=d;q=DA(d,1,Ui(g,E(2803)));Cy();n=ED(d,b,q,f,Ok,null);if(l!==null)n.bGZ=m;n.bG_=k;if(e!==null)n.bIa=e;ZW(n,Ck(c,E(2573),0));c=new H6;FU();e +=Hf;Mo(c,e,e);r=AQj(c);if(j===T_){s=KE(b,d,B1(d.bGM),i,n,r,KY(1));s.cLl=1;}else if(j===Y0){s=KE(b,d,B1(d.bGM),n,i,r,KY(1));s.cLl=1;}else if(j===M5)s=KE(b,d,B1(d.bGM),i,n,r,KY(2));else if(j===Ku)s=KE(b,d,B1(d.bGM),n,i,r,KY(2));else{b=new Bt;X(b);J(b);}IS(g,s);return By();},ERa=()=>{let b;b=K(Bi,1);b.data[0]=E(584);BKk=Bv(b);CLn=HO(new CLK);DqG=HO(new CLL);},C83=N(),BVq=null,AQG=()=>{AQG=Z(C83);EkX();},Chg=()=>{let b,c,d,e,f,g;AQG();b=new DD;c=K(Bg,4);d=c.data;e=new Ch;f=K(Bg,5);g=f.data;g[0]=Ba(2,E(2663),BVq);g[1] +=Bw();g[2]=Bc(E(665));g[3]=Bw();g[4]=Ba(1,E(618),E(2804));Cj(e,f);d[0]=e;e=new Ch;f=K(Bg,5);g=f.data;g[0]=Ba(1,E(624),E(2804));g[1]=Bw();g[2]=Bc(E(665));g[3]=Bw();g[4]=Ba(2,E(2641),BVq);Cj(e,f);d[1]=e;d[2]=Ba(1,E(601),E(2804));d[3]=Ba(1,E(602),E(603));Eb(b,c);return b;},BTr=()=>{let b,c,d,e,f,g;AQG();b=new DD;c=K(Bg,4);d=c.data;e=new Ch;f=K(Bg,5);g=f.data;g[0]=Ba(1,E(2663),E(2805));g[1]=Bw();g[2]=Bc(E(665));g[3]=Bw();g[4]=Ba(1,E(618),E(2804));Cj(e,f);d[0]=e;e=new Ch;f=K(Bg,5);g=f.data;g[0]=Ba(1,E(624),E(2804));g[1] +=Bw();g[2]=Bc(E(665));g[3]=Bw();g[4]=Ba(1,E(2641),E(2805));Cj(e,f);d[1]=e;d[2]=Ba(1,E(601),E(2804));d[3]=Ba(1,E(602),E(603));Eb(b,c);return b;},EY$=()=>{AQG();return Ba(1,E(594),E(2806));},CJA=()=>{AQG();return Ba(2,E(594),E(2807));},EkX=()=>{let b,c;AL_();b=AM2;c=new S;T(c);H(H(H(c,E(2808)),b),E(2809));BVq=Q(c);},BlZ=N(Bl),CH4=null,ByV=()=>{ByV=Z(BlZ);FiV();},EEl=a=>{let b,c,d;ByV();b=BN(Bo(BlZ));c=K(Bg,11);d=c.data;d[0]=BL();d[1]=Bc(E(1248));d[2]=Bd();d[3]=DI(Bc(E(2511)));d[4]=Bw();d[5]=Ba(1,E(594),E(564));d[6] +=Bw();d[7]=DI(Bc(E(2512)));d[8]=Bd();E3();d[9]=BOr;d[10]=BR();Cb(a,BT(b,c));},B7K=()=>{let a=new BlZ();EEl(a);return a;},Fib=(a,b,c)=>{let d;d=Dl(R(c,E(594),0));b=R(c,E(2245),0);c=new S;T(c);H(H(H(H(c,E(2513)),d),E(2810)),b);return Q(c);},Esx=a=>{ByV();return CH4;},EhY=(a,b,c,d,e)=>{b=b;c=DA(b,1,b.GW(R(d,E(594),0)));e=c.bG5;if(e===null){c=c.bHL;b=new S;T(b);H(H(b,c),E(2811));b=B5(Q(b));}else{c=R(d,E(2245),0);d=new FZ;b=DF(b.bGM,E(2248));FC();Gb(d,b,FI);e.bIa=Gj(d,c);b=By();}return b;},FiV=()=>{CH4=Bv(BB(Bi, +[E(1248),E(2514),E(2515)]));}; +function AB0(){F.call(this);this.cwv=null;} +let B7Z=null,CfI=null,AMb=()=>{AMb=Z(AB0);E0_();},BTC=(a,b)=>{AMb();a.cwv=b;},Cas=a=>{let b=new AB0();BTC(b,a);return b;},BG7=()=>{AMb();CM();return HQ(C6);},Bcw=(a,b)=>{let c,d,e,f,g,h,i;c=new Cyd;d=BN(Bo(AB0));e=new S;T(e);H(H(e,d),E(2349));f=Q(e);g=K(Bg,11);h=g.data;h[0]=BL();h[1]=Bc(E(584));h[2]=Bw();h[3]=Ba(1,E(585),E(2812));h[4]=Bd();h[5]=LZ(1,E(2813));h[6]=Bw();h[7]=Bc(E(1190));h[8]=Bd();h[9]=(BG7()).bH3;h[10]=BR();i=BT(f,g);HE();d=Q6;HA();e=G0;f=CfI;c.ccP=a;Iy(c,i,d,e,f);return c;},BjJ=a=>{let b,c,d, +e,f,g;b=new Cye;c=BN(Bo(AB0));d=new S;T(d);H(H(d,c),E(583));e=Q(d);f=K(Bg,15);g=f.data;g[0]=BL();g[1]=Bc(E(584));g[2]=Bw();g[3]=Ba(1,E(585),E(2812));g[4]=Bd();g[5]=LZ(1,E(2813));g[6]=Bw();g[7]=Bc(E(1190));g[8]=Bd();g[9]=(BG7()).bH3;g[10]=Bd();g[11]=Bc(E(82));g[12]=Bd();g[13]=Ba(1,E(455),E(566));g[14]=BR();c=BT(e,f);b.cff=a;Cb(b,c);return b;},BEq=(a,b,c)=>{let d,e;d=new S;T(d);L(d,E(2360));e=R(b,E(585),0);if(e!==null&&!CQ(e)){L(d,E(2364));L(d,e);}L(d,E(2814));L(d,c);if(R(b,E(608),0)!==null){L(d,E(2228));L(d, +R(b,E(608),0));}return Q(d);},CcX=(a,b,c,d)=>{let e,f,g,h,i;e=K6(b);f=e.dV()-1|0;a:{b:{while(true){if(f<0)break b;g=e.cf(f);h=g.bHn.bHD;Cy();i=Ok;if(h!==i&&g.bHo.bHD!==i)break;f=f+(-1)|0;}break a;}g=null;}if(g!==null){K$();i=M5;if(R(c,E(585),0)!==null)i=BaW(J3(R(c,E(585),0)));if(R(c,E(2245),0)!==null){h=new FZ;e=DF(b.bGM,E(2248));FC();Gb(h,e,FI);Gj(h,R(c,E(2245),0));}g.b6v=BH4(d,i,Iw(BG7(),c,b.bGM.bGN));return By();}return B5(E(2815));},E0_=()=>{let b;b=K(Bi,1);b.data[0]=E(584);B7Z=Bv(b);CfI=HO(new DeJ);},BzM +=N(Bl),Cc3=null,Bb5=()=>{Bb5=Z(BzM);DYM();},Fdp=a=>{let b,c,d;Bb5();b=BN(Bo(BzM));c=K(Bg,13);d=c.data;d[0]=BL();d[1]=Bc(E(2816));d[2]=Bd();d[3]=Bc(E(1842));d[4]=Bw();d[5]=Bc(E(2817));d[6]=Bd();CM();d[7]=(HQ(C6)).bH3;d[8]=Bd();d[9]=Bc(E(82));d[10]=Bd();d[11]=Ba(1,E(455),E(566));d[12]=BR();Cb(a,BT(b,c));},DSw=()=>{let a=new BzM();Fdp(a);return a;},Eld=(a,b,c)=>{let d;d=new S;T(d);L(d,E(2818));L(d,R(c,E(455),0));L(d,E(2819));if(R(c,E(608),0)!==null){L(d,E(2820));L(d,R(c,E(608),0));L(d,E(2654));}return Q(d);},E_v +=a=>{Bb5();return Cc3;},E5o=(a,b,c,d,e)=>{let f,g,h,i,j,k,l;b=b;e=Bk();c=K6(b);f=c.dV()-1|0;a:{b:{while(f>=0){g=c.cf(f);h=g.bHn.bHD;Cy();i=Ok;if(h!==i&&g.bHo.bHD!==i){i=e;U(i,g);if(i.bGJ==2)break b;}f=f+(-1)|0;}e=null;break a;}}if(e===null)b=B5(E(2821));else{d=R(d,E(455),0);c=Bk();HW();if(d===null)g=null;else{g=Bk();i=new S;T(i);j=0;while(true){h=d;if(j>=h.bGI.length)break;f=Bn(h,j);if(!(f==92&&j<(h.bGI.length-1|0)))Bb(i,f);else{j=j+1|0;k=Bn(h,j);if(k==110){l=Q(i);U(g,l);i.bG4=0;}else if(k==116)Bb(i,9);else if +(k==92)Bb(i,k);}j=j+1|0;}i=Q(i);U(g,i);}g=g.dX();while(g.dY()){h=Ia(g.dZ(),null);U(c,h);}d=Ns(c);b=EfG(b,e.cf(0),e.cf(1),Ig(d));}return b;},DYM=()=>{Cc3=Bv(BB(Bi,[E(2816),E(2822)]));},BhS=N(Bl),CYP=null,BnE=()=>{BnE=Z(BhS);EJD();},Fr3=a=>{let b,c,d;BnE();b=BN(Bo(BhS));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Bc(E(2823));d[2]=Bd();d[3]=Ba(1,E(594),E(597));d[4]=BR();Cb(a,BT(b,c));},DBa=()=>{let a=new BhS();Fr3(a);return a;},D7Y=(a,b,c)=>{b=R(c,E(594),0);c=new S;T(c);Bb(H(H(c,E(2824)),b),39);return Q(c);},FoT=a=>{BnE();return CYP;},El6 +=(a,b,c,d,e)=>{let f;b=b;d=R(d,E(594),0);e=DA(b,1,E8(b,d));if(e.bG5===null){f=B4(Cf(b),E(14));Cy();ED(b,c,e,f,A9k,null);b=By();}else{d=e.bHL;b=new S;T(b);H(H(b,E(2825)),d);b=B5(Q(b));}return b;},EJD=()=>{let b;b=K(Bi,1);b.data[0]=E(1198);CYP=Bv(b);}; +function Ba9(){EP.call(this);this.dbY=0;} +let CNt=null,Cdh=null,Cdg=null,B5U=null,B5V=null,AAb=()=>{AAb=Z(Ba9);E9a();},EgJ=(a,b)=>{let c,d;AAb();c=Fle(b);HE();d=Kl;HA();Iy(a,c,d,G0,b?Cdg:Cdh);a.dbY=b;},C5t=a=>{let b=new Ba9();EgJ(b,a);return b;},Fle=b=>{let c,d,e,f,g;AAb();if(b){if(b==1){c=BN(Bo(Ba9));d=new S;T(d);BE(H(d,c),b);d=Q(d);e=K(Bg,11);f=e.data;f[0]=BL();f[1]=Ba(1,E(554),E(2826));f[2]=Ba(1,E(594),E(597));f[3]=D2(E(567));E3();f[4]=Fy;f[5]=Bd();f[6]=Kp();f[7]=Bd();f[8]=Bc(E(598));f[9]=Ba(1,E(599),E(566));f[10]=BR();return BT(d,e);}c=new Bt;X(c);J(c);}c +=BN(Bo(Ba9));d=new S;T(d);BE(H(d,c),b);g=Q(d);e=K(Bg,13);f=e.data;f[0]=BL();f[1]=Ba(1,E(554),E(2826));f[2]=Ba(1,E(594),E(597));f[3]=D2(E(567));E3();f[4]=Fy;f[5]=Bd();f[6]=Kp();f[7]=Bd();f[8]=Bc(E(665));f[9]=Bd();f[10]=Bc(E(2706));f[11]=Ba(1,E(599),E(2827));f[12]=BR();return BT(g,e);},ESi=(a,b)=>{let c,d,e,f,g;c=RD(ARR(b,1),0);d=a.bHB;e=(C8(DB(c))).bGP;e=Ei(d,e);if(e!==null){d=new S;T(d);L(d,E(2695));L(d,CKs(R(e,E(554),0)));L(d,E(2241));L(d,R(e,E(594),0));L(d,E(1762));f=ACl(ABT(a),(C8(L9(c))).bGP);g=Dq(c)<=2 +?0:Dq(c)-2|0;if(TC(R(e,E(599),0)))g=g+1|0;if(f!==null&&TC(Be(f,0)))g=g+1|0;L(d,E(2828));BE(d,g);L(d,g!=1?E(2253):E(2254));if(R(e,E(567),0)!==null){L(d,E(2244));L(d,R(e,E(567),0));}if(R(e,E(2245),0)!==null)L(d,E(2246));if(R(e,E(608),0)!==null){L(d,E(2228));L(d,R(e,E(608),0));}return Q(d);}return E(2829);},Fvf=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;e=I5(c);c=RD(ARR(c,1),0);f=a.bHB;d=(C8(DB(c))).bGP;f=Ei(f,d);g=J3(R(f,E(554),0));if(BG(g,E(807))){Cy();h=Wd;F$();i=A8Z;}else if(BG(g,E(2700))){Cy();h=Y8;F$();i +=A4y;}else{i=A2e(g,Vj(b.bGM),AKB(b.bGM),AWx(b.bGM));if(i!==null){Cy();h=O9;}else{b=new BP;X(b);J(b);}}j=R(f,E(594),0);k=ACl(ABT(a),(C8(L9(c))).bGP);l=Ig(HI(c,1,1));m=R(f,E(599),0);if(TC(m))l=Dmt(l,m);d=k;if(TC(Be(d,0)))l=Us(l,Be(d,0));n=R(f,E(567),0);o=DA(b,1,b.GW(j));c=o.bG5;p=c;if(c===null)p=ED(b,e,o,l,h,i);if(!BD7(b,o,h,i)){if(n!==null){q=Lc(b.bGM);e=b.bGM;c=null;r=K(I1,1);s=r.data;Fs();s[0]=KB;p.bGZ=N5(n,q,MC(e,c,0,r),b.bGM.bGN);}t=R(f,E(2245),0);if(t!==null){u=new FZ;c=DF(b.bGM,E(2248));FC();Gb(u,c,FI);p.bIa +=Gj(u,t);}AAb();CM();p.bG_=Iw(HQ(C6),f,b.bGM.bGN);return By();}d=o.bHL;b=new S;T(b);H(H(H(b,E(2655)),d),E(2656));return B5(Q(b));},D0P=a=>{AAb();return CNt;},D_x=(a,b,c,d)=>{return Fvf(a,b,c,d);},E9a=()=>{CNt=Bv(BB(Bi,[E(704),E(709),E(710),E(713),E(715),E(719),E(721),E(725),E(728),E(729),E(740),E(741),E(749),E(55),E(752),E(753),E(758),E(2580),E(764),E(774),E(2672),E(780),E(781),E(2698),E(2699),E(782),E(784),E(785),E(796),E(799),E(807)]));Cdh=HO(new Ccc);Cdg=HO(new Ccb);B5U=C5t(0);B5V=C5t(1);}; +function Ky(){let a=this;F.call(a);a.cmP=null;a.cGh=0;} +let Eky=0,BDl=()=>{BDl=Z(Ky);EwJ();},V4=(a,b)=>{BDl();a.cGh=1;a.cmP=B$(b);},FyW=a=>{return 0;},C9$=(a,b)=>{if(a.cGh)return (C8(b)).bGP;return b.bGP;},FqF=(a,b)=>{let c;Dq(b);if(Dq(b)==1){c=DB(b);if(a.cGh)c=C8(c);if(!AVR(Zq(a.cmP,c.bGP,0))){F5();return KS;}return Ecb(a);}F5();return KS;},Ecb=a=>{F5();return PY;},DG_=(a,b)=>{let c,d,e;if(Dq(b)==1){c=DB(b);d=C9$(a,c);e=Zq(a.cmP,d,0);if(AVR(e))return a.AM(c.bIM,Dln(e));return null;}b=new Bt;X(b);J(b);},D39=(a,b,c,d)=>{let e,f,g,$$je;if(Dq(c)==1){e=DB(c);f=C9$(a, +e);g=Zq(a.cmP,f,0);if(AVR(g)){if(!(b instanceof ZB)){try{b=a.AN(b,BlJ(e),Dln(g),d);}catch($$e){$$je=P($$e);if($$je instanceof J1){return APx();}else{throw $$e;}}return b;}return B5(E(1767));}c=new S;T(c);H(H(c,E(1768)),f);return B5(Q(c));}b=new Bt;X(b);J(b);},FzW=(a,b)=>{return 0;},DIf=(a,b)=>{Jx();return b!==JB?0:1;},EwJ=()=>{Eky=0;},BNq=N(Ky),BSw=null,BaX=()=>{BaX=Z(BNq);Ffc();},EUm=(a,b,c)=>{return E(2522);},Ept=a=>{BaX();return BSw;},EaM=a=>{BaX();return BSw;},ELX=(a,b,c,d,e)=>{return By();},Ffc=()=>{BSw +=Bv(BB(Bi,[E(2219),E(2501),E(2222),E(2502)]));},BRI=N(Ky),BGk=null,A3D=()=>{A3D=Z(BRI);D9N();},FeZ=(a,b,c)=>{b=F9(R(c,E(572),0));c=new S;T(c);H(H(c,E(2524)),b);return Q(c);},ECb=a=>{A3D();return BGk;},DTv=a=>{A3D();return BGk;},D6A=(a,b,c,d,e)=>{b=b;c=KG(J3(R(d,E(572),0)),32,95);b.bGM.bNy=CHG(c);return By();},D9N=()=>{BGk=Bv(BB(Bi,[E(1273),E(2429)]));},B5n=N(Ky),B0f=null,AXn=()=>{AXn=Z(B5n);D1B();},Cwh=()=>{let b,c;AXn();CM();b=C6;c=new B$R;c.cPj=DZ(E(608),Ce(E(2830)));c.cU_=E(608);c.cCI=b;return c;},EDX=(a, +b,c)=>{let d,e;d=new S;T(d);L(d,E(2831));L(d,R(c,E(563),0));L(d,E(1762));if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}e=R(c,E(578),0);if(e!==null){L(d,E(2244));L(d,e);}return Q(d);},E6B=a=>{AXn();return B0f;},FeG=a=>{AXn();return B0f;},Du2=(a,b,c,d,e)=>{let f,g;b=b;e=R(d,E(563),0);e=DA(b,1,E8(b,e));f=B4(Cf(b),e.bHL);F7();So(b,c,e,f,Kw);c=GH(b);e=Cwh();g=b.bGM.bGN;if(e.cCI!==null){f=Ck(d,e.cU_,0);b=f===null?Qd():BnJ(f,g,e.cCI);if(!Dly(b))c.bG_=b;c.bGZ=FD(R(d,E(578),0));return By();}b=new BP;X(b);J(b);},D1B +=()=>{let b;b=K(Bi,1);b.data[0]=E(575);B0f=Bv(b);},B8Q=N(Ky),B2L=null,A0N=()=>{A0N=Z(B8Q);Ep_();},DZM=(a,b,c)=>{return E(2832);},FuG=a=>{A0N();return B2L;},E8f=a=>{A0N();return B2L;},Era=(a,b,c,d,e)=>{return X5(b)?By():B5(E(2833));},Ep_=()=>{B2L=Bv(BB(Bi,[E(581),E(2834),E(582)]));},Bjx=N(EP),CIQ=null,A_O=()=>{A_O=Z(Bjx);DOn();},Fbf=a=>{FY();return G6;},EB5=()=>{let b,c,d,e,f,g,h;A_O();b=BN(Bo(Bjx));c=K(Bg,19);d=c.data;d[0]=BL();e=new C0;f=new DD;g=K(Bg,4);h=g.data;h[0]=Ba(2,E(2835),E(2836));h[1]=Ba(1,E(594), +E(2837));h[2]=Ba(1,E(2838),E(2839));h[3]=Ba(2,E(2840),E(2841));Sf(f,E(2842),g);C3(e,f);d[1]=e;d[2]=D2(E(578));d[3]=Ba(1,E(630),E(559));d[4]=Bd();E3();d[5]=Fy;d[6]=Ba(1,E(2729),E(2843));d[7]=Ba(1,E(2275),E(621));d[8]=Ba(1,E(2731),E(2844));d[9]=Ba(1,E(2278),E(621));d[10]=Ba(1,E(2735),E(2845));d[11]=Bc(E(623));d[12]=Bd();d[13]=DI(Ba(1,E(2846),E(2847)));d[14]=Bd();d[15]=Bc(E(2706));d[16]=Ba(1,E(599),E(2848));d[17]=Bd();d[18]=BR();return BT(b,c);}; +let Ep6=(a,b)=>{let c,d,e,f,g,h,i;b=Nn(b);c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){d=new S;T(d);L(d,E(2849));L(d,DiY(e));L(d,E(2850));BE(d,Dq(b));L(d,Dq(b)!=1?E(1231):E(2851));f=ACl(ABT(a),(L9(b)).bGP);if(Be(f,1)!==null){L(d,E(2852));L(d,Be(f,1));L(d,E(1762));}if(Be(f,3)!==null){L(d,E(2853));L(d,Dl(Be(f,3)));L(d,E(1762));}g=R(e,E(2846),0);if(g!==null){L(d,E(2312));L(d,g);L(d,E(1268));}b=MI(R(e,E(2729),0));c=MI(R(e,E(2735),0));g=new S;T(g);H(H(g,b),c);if(CB(Q(g),E(423)))L(d,E(2306));h=R(e,E(2731),0);if +(h!==null&&!CQ(h)&&!Bj(E(900),h)){L(d,E(2747));L(d,C77(h));}i=Ck(e,E(620),0);if(i!==null){L(d,E(2753));L(d,i);L(d,E(1762));}if(R(e,E(2245),0)!==null)L(d,E(2246));if(R(e,E(578),0)!==null){L(d,E(2854));L(d,R(e,E(578),0));}if(R(e,E(630),0)!==null){L(d,E(2855));L(d,R(e,E(630),0));}if(Be(f,2)!==null){L(d,E(2856));L(d,Be(f,2));}if(Be(f,4)!==null){L(d,E(2857));L(d,Be(f,4));}return Q(d);}return E(2858);},Erb=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,bd,be;c=Nn(c);e=a.bHB;f=(C8(DB(c))).bGP;f +=Ei(e,f);g=BY5(I5(c),b,f,1);if(g!==null){if(R(f,E(578),0)!==null)g.bGZ=FD(R(f,E(578),0));e=R(f,E(630),0);if(e!==null){CM();PP(g,C6,DV(b.bGM.bGN,e));}h=new S;T(h);i=R(f,E(599),0);j=null;if(TC(i)){j=Cae(a,b,i);if(j===null){L(h,i);Bb(h,57600);}}k=0;d=Um(HI(c,1,1));while(d.dY()){l=d.dZ();k=k+1|0;if(k==1&&j===null){j=DB2(a,b,l);if(j!==null)continue;}FN(h,ZA(l));if(k<(Dq(c)-2|0))Et(h,57600);}i=ACl(ABT(a),ZA(L9(c)));if(TC(Be(i,0))){if(AMP(h)>0&&!Dr(CH(h),E(1555)))Et(h,57600);FN(h,Be(i,0));}m=CH(h);n=Be(i,1)===null +?m:Be(i,1);o=null;if(Be(i,3)!==null)o=Dl(Be(i,3));if(o!==null){p=DA(b,1,E8(b,o));d=I5(c);e=B4(Cf(b),o);F7();So(b,d,p,e,Kw);}q=b;r=DA(b,1,E8(q,n));s=AD6(r);if(s===null){n=I5(c);d=B4(Cf(b),m);Cy();s=ED(b,n,r,d,AEE,null);}E7M(b,s);if(o!==null)X5(q);if(j!==null)CaF(s,j);if(Be(i,2)!==null)DkV(s,FD(Be(i,2)));if(Be(i,4)!==null){t=Be(i,4);CM();PP(s,C6,DV(GK(HB(b)),t));}u=MI(R(f,E(2729),0));v=MI(R(f,E(2735),0));w=MI(R(f,E(2731),0));d=CR();Et(H(H(H(d,u),w),v),62);x=BFC(CH(d));y=GB(x)-1|0;z=B4(Cf(b),R(f,E(2846),0));ba +=new H6;FU();Mo(ba,AB1,Hf);if(CB(x,E(423)))ba=Bns(ba);bb=AAc(z,y,Qy(HB(b))<=0?0:1);bc=KE(I5(c),b,B1(HB(b)),g,s,ba,bb);c=CR();Et(H(H(H(c,u),w),v),62);bd=Bpz(CH(c));DC();if(!(bd!==FL&&bd!==HG))bc=AA9(bc);if(R(f,E(2245),0)!==null){be=new FZ;b=DF(HB(b),E(2248));FC();Gb(be,b,FI);C1H(bc,Gj(be,R(f,E(2245),0)));}b=Ck(f,E(620),0);U5(bc,b);IS(q,bc);return By();}return B5(E(2859));},DB2=(a,b,c)=>{return Cae(a,b,c.bGP);},Cae=(a,b,c)=>{let d;d=new FZ;b=DF(b.bGM,E(2248));FC();Gb(d,b,FI);return Gj(d,c);},Dwh=(a,b,c,d)=>{return Erb(a, +b,c,d);},DOn=()=>{CIQ=HO(new CiJ);},ALE=N(),BTK=null,CoD=null,AM5=()=>{AM5=Z(ALE);Fm4();},DGy=(a,b)=>{let c,d,e,f,g,h,i;c=new DrS;d=BN(Bo(ALE));e=new S;T(e);H(H(e,d),E(2349));f=Q(e);g=K(Bg,8);h=g.data;h[0]=BL();h[1]=Bc(E(584));h[2]=Bw();h[3]=Ba(1,E(585),E(586));h[4]=Bd();h[5]=Kp();h[6]=Bd();h[7]=BR();i=BT(f,g);HE();d=Q6;HA();e=G0;AM5();f=CoD;c.cyl=a;Iy(c,i,d,e,f);return c;},Cx0=(a,b,c)=>{let d;d=new S;T(d);L(d,E(2799));L(d,R(b,E(585),0));L(d,E(2860));L(d,c);if(R(b,E(608),0)!==null){L(d,E(2228));L(d,R(b,E(608), +0));}return Q(d);},Dke=(a,b,c,d,e)=>{let f,g,h,i,j;f=R(d,E(608),0);CM();PP(e,C6,f===null?null:DV(c.bGM.bGN,f));g=c.bUJ;if(g===null)g=BHx(c,b);h=BZO(BaW(J3(R(d,E(585),0))),c.bGM.bNy);d=new H6;FU();f=Hf;Mo(d,f,f);i=AQj(d);if(h===T_)j=KE(b,c,B1(c.bGM),g,e,i,KY(1));else if(h===Y0)j=KE(b,c,B1(c.bGM),e,g,i,KY(1));else if(h===M5)j=KE(b,c,B1(c.bGM),g,e,i,KY(2));else if(h===Ku)j=KE(b,c,B1(c.bGM),e,g,i,KY(2));else{b=new Bt;X(b);J(b);}IS(c,j);return By();},Fm4=()=>{let b;b=K(Bi,1);b.data[0]=E(584);BTK=Bv(b);CoD=HO(new Cof);},Dg8 +=N(Ky),EjH=a=>{FY();return G6;},Erp=()=>{let b,c,d,e,f,g,h,i,j;b=K(C7,6);c=b.data;c[0]=QT();d=new LO;e=K(C7,6);f=e.data;f[0]=DZ(E(2729),Ce(E(2861)));f[1]=Ce(E(2862));f[2]=DZ(E(2731),Ce(E(2863)));f[3]=Ce(E(2864));f[4]=DZ(E(2735),Ce(E(2865)));f[5]=Ce(E(372));L6(d,DP(e));c[1]=d;c[2]=QT();c[3]=AWQ(Ce(E(2866)));c[4]=QT();g=new Oy;e=K(C7,4);f=e.data;f[0]=Ce(E(2867));f[1]=Ce(E(2868));f[2]=Ce(E(2869));f[3]=Ce(E(2870));QL(g,e);c[5]=g;g=DP(b);b=K(C7,2);h=b.data;i=new Oy;c=K(C7,5);j=c.data;j[0]=g;e=K(C7,2);f=e.data;f[0] +=DZ(E(2835),Ce(E(2871)));f[1]=g;j[1]=DP(e);e=K(C7,2);f=e.data;f[0]=DZ(E(2838),Ce(E(2872)));f[1]=g;j[2]=DP(e);e=K(C7,2);f=e.data;f[0]=Ce(E(2873));f[1]=g;j[3]=DP(e);e=K(C7,2);f=e.data;f[0]=DZ(E(594),Ce(E(2874)));f[1]=g;j[4]=DP(e);QL(i,c);h[0]=i;h[1]=X1();return DP(b);},EQm=(a,b,c)=>{let d,e,f,g,h;d=new S;T(d);L(d,E(2875));if(R(c,E(2876),0)!==null){L(d,E(2877));L(d,R(c,E(2876),0));L(d,E(1268));}else{e=R(c,E(2878),0);if(e!==null&&!CQ(e)){L(d,E(2877));L(d,e);L(d,E(1268));}if(R(c,E(2879),0)!==null){L(d,E(2880));L(d, +R(c,E(2879),0));L(d,E(2881));}}L(d,E(2882));if(R(c,E(2835),0)!==null)b=E(2883);else if(R(c,E(2838),0)!==null){b=R(c,E(2838),0);e=new S;T(e);Bb(H(H(e,E(2884)),b),39);b=Q(e);}else if(R(c,E(2885),0)===null){if(R(c,E(594),0)===null)b=E(2886);else{b=R(c,E(594),0);e=new S;T(e);Bb(e,39);Bb(H(e,b),39);b=Q(e);}}else if(R(c,E(2887),0)===null){b=R(c,E(2885),0);e=new S;T(e);Bb(e,34);Bb(H(e,b),34);b=Q(e);}else{b=R(c,E(2887),0);e=R(c,E(2885),0);f=new S;T(f);Bb(f,39);Bb(H(H(H(f,b),E(2666)),e),34);b=Q(f);}L(d,b);f=R(c,E(2846), +0);if(f!==null){L(d,E(2888));L(d,f);L(d,E(1268));}g=R(c,E(2731),0);if(g!==null&&!CQ(g)){a:{b:{c:{d:{L(d,E(2747));switch(LG(Bn(g,0))){case 108:break;case 114:break d;case 117:break c;default:break b;}b=E(2748);break a;}b=E(2749);break a;}b=E(2750);break a;}b=E(2751);}L(d,b);}h=Ck(c,E(620),0);if(h!==null){L(d,E(2753));L(d,h);L(d,E(1762));}return Q(d);},Ecz=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r;if(R(d,E(2835),0)!==null)f=BHx(b,c);else{e=R(d,E(594),0);if(e!==null){g=DA(b,1,E8(b,e));h=BAY(b,g);f=g.bG5;if(f +===null)f=ED(b,c,g,B4(Cf(b),e),h,null);}else{e=R(d,E(2838),0);if(e!==null){g=DA(b,1,E8(b,e));f=g.bG5;if(f===null){e=B4(Cf(b),e);Cy();f=ED(b,c,g,e,AIC,null);}}else{e=R(d,E(2885),0);if(e===null)f=b.bUJ;else{g=R(d,E(2887),0);if(g===null)g=e;g=DA(b,1,E8(b,g));h=BAY(b,g);f=g.bG5;if(f===null)f=ED(b,c,g,B4(Cf(b),e),h,null);}}}}if(f!==null){if(R(d,E(2876),0)!==null){i=null;j=R(d,E(2876),0);}else{i=R(d,E(2879),0);j=R(d,E(2878),0);}if(i===null)i=Ui(b,E(332));k=b;g=DA(b,1,E8(k,i));l=K(KH,1);l.data[0]=E(14);e=PB(l);Cy();e +=ED(b,c,g,e,AOF,null);g=new B$0;h=b.b8H;DC();m=G_;g.cIW=B$(e);if(e.bHD===AOF){g.ddW=m;g.c7z=h;b.b8H=g;n=2;if(R(d,E(2729),0)!==null){h=MI(R(d,E(2729),0));m=MI(R(d,E(2735),0));o=MI(R(d,E(2731),0));e=new S;T(e);Bb(H(H(H(e,h),o),m),62);n=(BFC(Q(e))).bGI.length-1|0;}p=b.b8H.cIW;q=AHE(B4(Cf(b),R(d,E(2846),0)),n);r=new NZ;e=B1(b.bGM);o=new H6;FU();Mo(o,AB1,Hf);O3(r,c,b,e,f,p,o,Xq(VF(q,null,j),A$z(k),A9r(k)));if(R(d,E(445),0)!==null){g=Bpz(R(d,E(445),0));if(!(g!==FL&&g!==HG))r=AA9(r);}b=Ck(d,E(620),0);U5(r,b);IS(k, +r);return By();}b=new Bt;X(b);J(b);}return B5(E(2889));},D6U=a=>{FY();return G6;},DR4=(a,b,c,d,e)=>{return Ecz(a,b,c,d,e);},B2w=N(Ky),B5A=null,AWy=()=>{AWy=Z(B2w);Eam();},DOC=()=>{let b,c;AWy();b=K(C7,2);c=b.data;c[0]=Ce(E(1727));c[1]=X1();return DP(b);},Dv2=(a,b,c)=>{return E(2890);},Ed8=a=>{AWy();return B5A;},Eaz=a=>{AWy();return B5A;},EnZ=(a,b,c,d,e)=>{b=b;if(b.bUJ===null)b=B5(E(2891));else{c=b.b8H;if(c===null)b=B5(E(2891));else{b.bUJ=c.cIW;b=By();}}return b;},Eam=()=>{let b;b=K(Bi,1);b.data[0]=E(1727);B5A +=Bv(b);},B3E=N(Ky),BJF=null,BaF=()=>{BaF=Z(B3E);EhW();},D7C=a=>{let b,c;BaF();b=K(C7,4);c=b.data;c[0]=Ce(E(581));c[1]=QT();c[2]=Ce(E(2892));c[3]=X1();V4(a,DP(b));},D9n=()=>{let a=new B3E();D7C(a);return a;},E20=(a,b,c)=>{return E(2893);},ElT=a=>{BaF();return BJF;},Dzd=a=>{BaF();return BJF;},Ecp=(a,b,c,d,e)=>{b=b;if(b.bUJ===null)b=B5(E(2894));else{c=b.b8H;if(c===null)b=B5(E(2894));else{b.b8H=c.c7z;b=By();}}return b;},EhW=()=>{BJF=Bv(BB(Bi,[E(581),E(2895)]));},BPL=N(Bl),E$s=a=>{Cb(a,DCy());},DB8=()=>{let a=new BPL();E$s(a);return a;},Ffm +=a=>{FY();return G6;},DCy=()=>{let b,c,d,e,f,g,h,i,j;b=BN(Bo(BPL));c=K(Bg,21);d=c.data;d[0]=BL();e=new C0;f=new DD;g=K(Bg,4);h=g.data;h[0]=Ba(2,E(2835),E(2836));h[1]=Ba(1,E(594),E(2837));h[2]=Ba(1,E(2838),E(2839));h[3]=Ba(2,E(2840),E(2841));Sf(f,E(2842),g);C3(e,f);d[1]=e;d[2]=D2(E(578));d[3]=Ba(1,E(630),E(2896));d[4]=Bd();E3();d[5]=Fy;d[6]=Ba(1,E(2729),E(2843));d[7]=Ba(1,E(2275),E(621));d[8]=Ba(1,E(2731),E(2844));d[9]=Ba(1,E(2278),E(621));d[10]=Ba(1,E(2735),E(2845));d[11]=Bc(E(623));d[12]=Bd();d[13]=DI(Ba(1, +E(2846),E(2847)));d[14]=Bd();i=new DD;g=K(Bg,6);h=g.data;h[0]=Ba(2,E(2897),E(2898));h[1]=Ba(1,E(2899),E(2900));h[2]=Ba(1,E(624),E(2837));h[3]=Ba(1,E(2901),E(2839));h[4]=Ba(2,E(2887),E(2902));h[5]=Ba(1,E(2903),E(2904));Sf(i,E(2905),g);d[15]=i;d[16]=D2(E(667));i=new C0;j=new Ch;g=K(Bg,3);h=g.data;h[0]=Bc(E(1741));h[1]=Bw();h[2]=Ba(1,E(2906),E(2907));Cj(j,g);C3(i,j);d[17]=i;d[18]=Bd();d[19]=Ba(1,E(2908),E(2896));d[20]=BR();return BT(b,c);},EEo=(a,b,c)=>{let d,e,f,g,h;d=new S;T(d);L(d,E(2849));L(d,DiY(c));L(d,E(95));L(d, +Ens(a,c));e=R(c,E(2906),0);if(e!==null){L(d,E(2853));L(d,Dl(e));L(d,E(1762));}f=R(c,E(2846),0);if(f!==null){L(d,E(2312));L(d,f);L(d,E(1268));}b=MI(R(c,E(2729),0));e=MI(R(c,E(2735),0));f=new S;T(f);H(H(f,b),e);if(CB(Q(f),E(423)))L(d,E(2306));g=R(c,E(2731),0);if(Bj(E(900),g))L(d,E(2909));else if(g!==null&&!CQ(g)){L(d,E(2747));L(d,C77(g));}h=Ck(c,E(620),0);if(h!==null){L(d,E(2753));L(d,h);L(d,E(1762));}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(578),0)!==null){L(d,E(2854));L(d,R(c,E(578),0));}if(R(c,E(630), +0)!==null){L(d,E(2855));L(d,R(c,E(630),0));}if(R(c,E(667),0)!==null){L(d,E(2856));L(d,R(c,E(667),0));}if(R(c,E(2908),0)!==null){L(d,E(2857));L(d,R(c,E(2908),0));}return Q(d);},DiY=b=>{let c,d,e;if(R(b,E(2835),0)===null){c=R(b,E(594),0);if(c===null){d=R(b,E(2838),0);if(d===null){e=R(b,E(2840),0);if(e!==null){if(R(b,E(2840),1)!==null){b=R(b,E(2840),1);c=new S;T(c);Bb(c,39);Bb(H(H(H(c,b),E(2666)),e),34);return Q(c);}b=new S;T(b);Bb(b,34);Bb(H(b,e),34);return Q(b);}return E(2886);}b=new S;T(b);Bb(H(H(b,E(2884)), +d),39);return Q(b);}b=new S;T(b);Bb(b,39);Bb(H(b,c),39);return Q(b);}if(R(b,E(2835),1)!==null)return E(2910);return E(2883);},Ens=(a,b)=>{let c,d,e,f;if(R(b,E(2897),0)===null){if(R(b,E(2899),0)===null){c=R(b,E(624),0);if(c===null){d=R(b,E(2901),0);if(d===null){e=R(b,E(2887),0);if(e!==null){if(R(b,E(2887),1)!==null){b=R(b,E(2887),1);c=new S;T(c);Bb(c,39);Bb(H(H(H(c,b),E(2666)),e),34);return Q(c);}b=new S;T(b);Bb(b,34);Bb(H(b,e),34);return Q(b);}b=R(b,E(2903),0);c=new S;T(c);Bb(c,39);Bb(H(c,b),39);return Q(c);}b +=new S;T(b);Bb(H(H(b,E(2884)),d),39);return Q(b);}b=new S;T(b);Bb(b,39);Bb(H(b,c),39);return Q(b);}return E(2911);}f=R(b,E(2897),1);if(f!==null){b=new S;T(b);Bb(H(H(b,E(2912)),f),39);return Q(b);}return E(2913);},C77=b=>{switch(LG(Bn(b,0))){case 108:break;case 114:return E(2749);case 117:return E(2750);default:return E(2751);}return E(2748);},E2J=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r;f=BY5(c,b,d,1);if(f!==null){if(R(d,E(578),0)!==null)f.bGZ=FD(R(d,E(578),0));if(R(d,E(630),0)!==null){g=R(d,E(630),0);CM();PP(f, +C6,DV(b.bGM.bGN,g));}h=BY5(c,b,d,0);if(h!==null){b.bUJ=h;if(R(d,E(2908),0)!==null){g=R(d,E(2908),0);CM();PP(h,C6,DV(b.bGM.bGN,g));}if(R(d,E(667),0)!==null)h.bGZ=FD(R(d,E(667),0));i=B4(Cf(b),R(d,E(2846),0));j=MI(R(d,E(2729),0));k=MI(R(d,E(2735),0));l=MI(R(d,E(2731),0));e=new S;T(e);Bb(H(H(H(e,j),l),k),62);m=(BFC(Q(e))).bGI.length-1|0;if(CB(l,E(900)))m=2;n=new H6;FU();Mo(n,AB1,Hf);e=new S;T(e);H(H(e,j),k);if(CB(Q(e),E(423)))n=Bns(n);o=AAc(i,m,Qy(b.bGM)<=0?0:1);p=KE(c,b,B1(b.bGM),f,h,n,o);if(CB(l,E(900)))p.caM +=0;c=new S;T(c);Bb(H(H(H(c,j),l),k),62);q=Bpz(Q(c));DC();if(!(q!==FL&&q!==HG))p=AA9(p);if(R(d,E(2245),0)!==null){r=new FZ;c=DF(b.bGM,E(2248));FC();Gb(r,c,FI);p.b8s=Gj(r,R(d,E(2245),0));}c=Ck(d,E(620),0);U5(p,c);IS(b,p);return By();}return B5(E(2914));}return B5(E(2914));}; +let BY5=(b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s;f=!e?E(2915):E(14);g=new S;T(g);H(H(g,E(2916)),f);if(R(d,Q(g),0)===null){h=new S;T(h);H(H(h,E(2835)),f);if(R(d,Q(h),0)===null){g=new S;T(g);H(H(g,E(518)),f);i=R(d,Q(g),0);if(i!==null)i=Dl(i);g=new S;T(g);H(H(g,E(594)),f);j=R(d,Q(g),0);if(j===null){g=new S;T(g);H(H(g,E(2838)),f);k=R(d,Q(g),0);if(k===null){g=new S;T(g);H(H(g,E(2840)),f);l=Dh5(d,Q(g));if(AL4(l,0)!==null){m=AL4(l,1)!==null?AL4(l,1):AL4(l,0);if(i!==null){n=DA(c,1,E8(c,i));d=B4(Cf(c),i);F7();So(c, +b,n,d,Kw);}h=c;n=DA(c,1,E8(h,m));o=BAY(c,n);p=n.bG5;if(p===null)p=ED(c,b,n,B4(Cf(c),AL4(l,0)),o,null);if(i!==null)X5(h);return p;}g=new S;T(g);H(H(g,E(2917)),f);q=R(d,Q(g),0);if(q!==null){if(i!==null){n=DA(c,1,E8(c,i));d=ACN(n);F7();So(c,b,n,d,Kw);}f=c;r=DA(c,1,E8(f,q));p=r.bG5;if(p===null){g=B4(Cf(c),r.bHL);Cy();p=ED(c,b,r,g,AEE,null);}if(i!==null)X5(f);return p;}b=new S;T(b);H(H(b,E(2842)),f);if(R(d,Q(b),0)===null)return c.bUJ;return null;}n=DA(c,1,E8(c,k));p=n.bG5;if(p===null){d=B4(Cf(c),k);Cy();p=ED(c,b, +n,d,AIC,null);}return p;}if(i!==null){n=DA(c,1,E8(c,i));d=ACN(n);F7();So(c,b,n,d,Kw);}h=c;s=DA(c,1,E8(h,j));o=BAY(c,s);p=s.bG5;if(p===null)p=ED(c,b,s,B4(Cf(c),j),o,null);if(i!==null)X5(h);return p;}g=new S;T(g);H(H(g,E(2835)),f);h=R(d,Q(g),1);if(!e){if(h===null)d=E(581);else{d=new S;T(d);H(H(d,E(2918)),h);d=Q(d);}g=DA(c,1,d);if(g.bG5===null){h=B4(Cf(c),E(581));Cy();ED(c,b,g,h,AFJ,null);}return g.bG5;}return BHx(c,b);}d=DA(c,1,Ui(c,E(1244)));g=B4(Cf(c),d.bHL);F7();So(c,b,d,g,AWA);b=GH(c);c.bUJ=null;c.cU$=null;return b;},BAY +=(b,c)=>{Cy();return AEE;},E0F=(a,b,c,d,e)=>{return E2J(a,b,c,d,e);},BKq=N(Ky),B3Z=null,AYi=()=>{AYi=Z(BKq);E5R();},EsN=a=>{let b,c;AYi();b=K(C7,4);c=b.data;c[0]=DZ(E(2530),Ce(E(2919)));c[1]=EW();c[2]=DZ(E(2532),Ce(E(2920)));c[3]=X1();V4(a,DP(b));},EMb=()=>{let a=new BKq();EsN(a);return a;},ECe=(a,b,c)=>{let d,e,f;d=new S;T(d);e=Bn(R(c,E(2530),0),0);L(d,!(!(e!=115&&e!=83)?1:0)?E(2534):E(2535));f=Dk(R(c,E(2532),0));if(BO(f,E(1775))){L(d,E(2536));L(d,f);}else{L(d,E(2537));L(d,f);L(d,E(1762));}if(CB(R(c,E(2530), +0),E(1272)))L(d,E(2538));return Q(d);},Fac=a=>{AYi();return B3Z;},DVI=a=>{AYi();return B3Z;},DzZ=(a,b,c,d,e)=>{let f;b=b;f=Bn(R(d,E(2530),0),0);f=!(f!=115&&f!=83)?1:0;Dma(b,Dk(R(d,E(2532),0)),f);return By();},E5R=()=>{B3Z=Bv(BB(Bi,[E(2219),E(2222)]));},BOg=N(Bl),Fkl=a=>{FY();return G6;},EnE=()=>{let b,c,d;b=BN(Bo(BOg));c=K(Bg,22);d=c.data;d[0]=BL();d[1]=CeX(E(2719));d[2]=Bd();d[3]=DI(Ba(1,E(2725),E(603)));d[4]=Bd();d[5]=Ba(1,E(2921),Cnt());d[6]=Ba(1,E(2922),E(2923));d[7]=Ba(1,E(2275),E(2924));d[8]=DI(Ba(1,E(572), +E(2925)));d[9]=DI(Ba(1,E(2733),E(2734)));d[10]=Ba(1,E(2278),E(621));d[11]=Ba(1,E(2926),E(2927));d[12]=Ba(1,E(2928),CmR());d[13]=Bd();d[14]=DI(Ba(1,E(2738),E(603)));d[15]=Bd();d[16]=CeX(E(2741));d[17]=Bd();d[18]=(C1N()).bH3;d[19]=D2(E(578));d[20]=Ba(1,E(644),E(645));d[21]=BR();return BT(b,c);},C1N=()=>{CM();return HQ(E1);},Bl0=(a,b,c)=>{let d;d=R(b,c,0);return Jt(d===null?E(14):F9(ES(d)),E(840),E(14));},BnK=(a,b)=>{let c,d;c=R(b,E(2922),0);b=R(b,E(2926),0);d=new S;T(d);H(H(d,c),b);return Q(d);},CeX=b=>{return Ba(1, +b,E(2929));},DuN=(a,b,c)=>{let d,e,f,g,h,i,j;d=new S;T(d);L(d,E(2744));L(d,Cqq(Bl0(a,c,E(2921)),Bl0(a,c,E(2928))));L(d,E(2745));L(d,DnM(a,R(c,E(2719),0)));L(d,E(2464));L(d,DnM(a,R(c,E(2741),0)));e=BnK(a,c);if(CB(e,E(423)))L(d,E(2746));else if(CB(e,E(2586)))L(d,E(2306));else if(CB(e,E(684)))L(d,E(2930));f=R(c,E(572),0);if(f!==null&&!CQ(f)){a:{b:{c:{d:{L(d,E(2747));switch(LG(Bn(f,0))){case 108:break;case 114:break d;case 117:break c;default:break b;}b=E(2748);break a;}b=E(2749);break a;}b=E(2750);break a;}b=E(2751);}L(d, +b);}if(R(c,E(2733),0)!==null)L(d,E(2752));g=Ck(c,E(620),0);if(g!==null){L(d,E(2753));L(d,g);L(d,E(1762));}h=R(c,E(2725),0);if(h!==null){L(d,E(2791));L(d,h);L(d,E(2755));}i=R(c,E(2738),0);if(i!==null){L(d,E(2791));L(d,i);L(d,E(2756));}j=R(c,E(644),0);if(j!==null){L(d,E(2312));L(d,j);L(d,E(1268));}if(R(c,E(608),0)!==null){L(d,E(2229));L(d,R(c,E(608),0));}if(R(c,E(578),0)!==null){L(d,E(2244));L(d,R(c,E(578),0));}return Q(d);},DnM=(a,b)=>{let c,d,e,f;if(!BO(b,E(2694))){c=b.bGI.length<=2?0:Bn(b,0);d=Dr(b,E(21));if +(c!=40){if(c==58){e=B_(b,1,b.bGI.length-(!d?1:2)|0);b=!d?E(2931):E(2932);f=new S;T(f);Bb(H(H(f,b),e),39);return Q(f);}if(c==91){b=B_(b,1,b.bGI.length-1|0);e=new S;T(e);Bb(H(H(e,E(2933)),b),39);return Q(e);}b=Dl(b);e=new S;T(e);Bb(e,39);Bb(H(e,b),39);return Q(e);}e=B_(b,1,b.bGI.length-(!d?1:2)|0);b=!d?E(2934):E(2935);f=new S;T(f);Bb(H(H(f,b),e),39);return Q(f);}e=Dl(ES(CC(b,2)));b=new S;T(b);Bb(H(H(b,E(2936)),e),39);return Q(b);},CMW=(a,b,c,d)=>{let e,f,g,h,i;if(!BO(d,E(2694))){e=d.bGI.length<=2?0:Bn(d,0);f= +Dr(d,E(21));g=DA(c,1,Z_(c,d));if(!B5$(c,g)){d=g.bG5;if(d===null){h=B4(Cf(c),g.bHL);if(e!=40){if(e!=58){if(e==91){i=Blt(AKB(c.bGM));Cy();return ED(c,b,g,h,O9,i);}Cy();return ED(c,b,g,h,AQX,null);}if(!f){Cy();return ED(c,b,g,h,O9,AH2(Vj(c.bGM)));}Cy();d=O9;W9();return ED(c,b,g,h,d,AH2(ALJ));}if(f){Cy();d=Y8;F$();return ED(c,b,g,h,d,A4y);}Cy();d=Wd;F$();return ED(c,b,g,h,d,A8Z);}return d;}return g.bG5;}g=DA(c,1,Z_(c,d));d=g.bG5;if(d===null){d=B4(Cf(c),g.bHL);Cy();i=O9;F$();return ED(c,b,g,d,i,AAP);}return d;},EXn +=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o;f=b;g=R(d,E(2719),0);h=R(d,E(2741),0);i=Z_(f,g);j=Z_(f,h);b=Bl0(a,d,E(2921));e=Bl0(a,d,E(2928));k=DdJ(b);e=Cxx(CTH(e),k);b=BnK(a,d);if(CB(b,E(423)))e=AQj(e);else if(CB(b,E(2586)))e=Bns(e);else if(CB(b,E(684)))e=DdH(e);b=R(d,E(2733),0);if(Bj(E(35),b))e=C5z(e);else if(Bj(E(2770),b))e=CBV(e);else if(Bj(E(2771),b))e=Co9(e);else if(Bj(E(635),b))e=C7d(e);b=R(d,E(572),0);l=b!==null?AXV(b):AXV(BnK(a,d));DC();k=l!==FL&&l!==Gy?BnK(a,d):E(1272);m=C8G(d);if(!(COv(f,i)&&COv(f,j))){n +=CMW(a,c,f,g);o=CMW(a,c,f,h);}else{n=Dqc(f,i);o=Dqc(f,j);}b=AAc(B4(Cf(f),m.cl2.bSm),k.bGI.length,Qy(f.bGM)<=0?0:1);k=new NZ;g=B1(f.bGM);b=VF(b,m.b17,m.b2N);j=f;O3(k,c,f,g,n,o,e,Xq(b,A$z(j),A9r(j)));if(!(l!==FL&&l!==HG))k=AA9(k);k.bWG=Cwn(m);b=Iw(C1N(),d,f.bGM.bGN);c=k;c.bQT=b;U5(c,Ck(d,E(620),0));if(R(d,E(578),0)!==null)k.bPW=FD(R(d,E(578),0));IS(j,k);return By();},BqA=N(Bl),CF1=null,AFL=()=>{AFL=Z(BqA);FrT();},EGh=a=>{FY();return G6;},EE0=()=>{let b,c,d,e,f,g,h,i,j,k,l;AFL();b=BN(Bo(BqA));c=K(Bg,14);d=c.data;d[0] +=BL();d[1]=Ba(1,E(2679),E(2937));CM();d[2]=(BhH(C6,E(2639))).bH3;d[3]=Bd();e=new DD;f=K(Bg,4);g=f.data;g[0]=Ba(1,E(618),E(2640));h=new Ch;i=K(Bg,5);j=i.data;j[0]=Ba(1,E(2641),E(2642));j[1]=D2(E(667));j[2]=Bc(E(665));j[3]=Bw();j[4]=Ba(1,E(624),E(2644));Cj(h,i);g[1]=h;k=new Ch;i=K(Bg,5);j=i.data;j[0]=Ba(1,E(601),E(2644));j[1]=D2(E(2645));j[2]=Bc(E(665));j[3]=Bd();j[4]=Ba(1,E(2646),E(2642));Cj(k,i);g[2]=k;h=new Ch;i=K(Bg,5);j=i.data;j[0]=Ba(1,E(2647),E(2648));j[1]=D2(E(2649));j[2]=Bc(E(665));j[3]=Bw();j[4]=Ba(1, +E(602),E(2644));Cj(h,i);g[3]=h;Eb(e,f);d[4]=e;d[5]=Bd();e=new ER;l=new S;T(l);Bb(H(l,E(2550)),63);Fh(e,4,E(2551),Q(l));d[6]=e;d[7]=D2(E(578));e=new ER;l=new S;T(l);Bb(H(l,E(2550)),63);Fh(e,4,E(2552),Q(l));d[8]=e;d[9]=Bd();E3();d[10]=Fy;d[11]=Bd();d[12]=(Dqm()).bH3;d[13]=BR();return BT(b,c);},Dqm=()=>{AFL();CM();return HQ(C6);},EpL=(a,b)=>{AFL();return Kr(D3(CF1,b));},FiP=(a,b,c)=>{let d,e,f,g,h,i,j,k,l;d=new S;T(d);e=Ck(c,E(594),0);f=Ck(c,E(2560),0);g=BhP(a,e);h=BhP(a,f);if(BO(e,E(2694))){i=E(2580);e=Dl(ES(CC(e, +2)));}else if(!(g!=40&&h!=40)){if(R(c,E(2679),0)!==null&&Dr(R(c,E(2679),0),E(21)))i=E(2700);else if(f!==null&&Dr(f,E(2938))){f=B_(f,0,f.bGI.length-1|0);i=E(2700);}else if(!Dr(e,E(2938)))i=E(807);else{e=B_(e,0,e.bGI.length-1|0);i=E(2700);}}else if(g!=58&&h!=58)i=!(g!=91&&h!=91)?E(729):R(c,E(2679),0);else if(R(c,E(2679),0)!==null&&Dr(R(c,E(2679),0),E(21)))i=E(2939);else if(f!==null&&Dr(f,E(2940))){f=B_(f,0,f.bGI.length-1|0);i=E(2939);}else if(!Dr(e,E(2940)))i=E(709);else{e=B_(e,0,e.bGI.length-1|0);i=E(2939);}j +=Dl(e);L(d,E(2695));L(d,CKs(i));L(d,E(2241));L(d,j);L(d,E(1762));if(f!==null){L(d,E(2242));L(d,Dl(f));L(d,E(1268));}k=Ck(c,E(578),0);if(k!==null){L(d,E(2244));L(d,k);}l=Ck(c,E(2573),0);if(l!==null&&!CQ(l)){L(d,E(2670));L(d,l);}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}if(R(c,E(2639),0)!==null){L(d,E(2653));L(d,R(c,E(2639),0));L(d,E(2654));}return Q(d);},CKs=b=>{AFL();if(b!==null){if(!BG(b,E(2700))){if(BG(b,E(2939)))return E(2941);return F9(b);}return E(2942);}return E(748);},Evo +=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;f=Ck(d,E(594),0);g=Ck(d,E(2560),0);h=BhP(a,f);i=BhP(a,g);if(BO(f,E(2694))){j=E(2580);f=Dl(ES(CC(f,2)));}else if(!(h!=40&&i!=40)){if(R(d,E(2679),0)!==null&&Dr(R(d,E(2679),0),E(21)))j=E(2700);else if(g!==null&&Dr(g,E(2938))){g=B_(g,0,GB(g)-1|0);j=E(2700);}else if(!Dr(f,E(2938)))j=E(807);else{f=B_(f,0,GB(f)-1|0);j=E(2700);}}else if(h!=58&&i!=58)j=!(h!=91&&i!=91)?E(729):R(d,E(2679),0);else if(R(d,E(2679),0)!==null&&Dr(R(d,E(2679),0),E(21)))j=E(2939);else if +(g!==null&&Dr(g,E(2940))){g=B_(g,0,GB(g)-1|0);j=E(2939);}else if(!Dr(f,E(2940)))j=E(709);else{f=B_(f,0,GB(f)-1|0);j=E(2939);}a:{if(j===null){Cy();k=O9;l=AH2(Vj(b.bGM));break a;}if(BG(j,E(2698))){Cy();k=YI;l=null;break a;}if(BG(j,E(2699))){Cy();k=AEq;l=null;break a;}if(BG(j,E(781))){Cy();k=YI;l=null;break a;}if(BG(j,E(807))){Cy();k=Wd;l=null;break a;}if(BG(j,E(2700))){Cy();k=Y8;l=null;break a;}if(BG(j,E(721))){Cy();k=ASb;l=null;break a;}Cy();k=O9;l=Bu5(j,HB(b));if(l!==null)break a;J(AFM());}m=DA(b,0,Z_(b,f));if +(!B5$(b,m)){if(g===null)g=Be6(m);e=Dl(g);n=Ck(d,E(578),0);if(!BD7(b,m,k,l)){Cy();if(!(k!==YI&&k!==AEq)&&KX(GH(b)))return B5(E(2943));o=AD6(m);if(o===null)o=ED(b,c,m,B4(Cf(b),e),k,l);DVB(o,B4(Cf(b),e));if(n!==null){p=Lc(HB(b));c=HB(b);e=null;q=K(I1,1);r=q.data;Fs();r[0]=KB;DkV(o,N5(n,p,MC(c,e,0,q),GK(HB(b))));}ZW(o,Ck(d,E(2573),0));s=R(d,E(2245),0);if(s!==null){t=new FZ;c=DF(HB(b),E(2248));FC();Gb(t,c,FI);CaF(o,Gj(t,s));}u=Iw(Dqm(),d,GK(HB(b)));v=R(d,E(2553),1);w=v===null?null:DV(GK(HB(b)),v);if(w!==null){CM();u +=Lg(u,E1,w);}Ft0(o,u);return By();}b=Be6(m);c=CR();H(H(H(c,E(2655)),b),E(2656));return B5(CH(c));}d=m.bHL;b=CR();H(H(H(b,E(2655)),d),E(2656));return B5(CH(b));},BD7=(b,c,d,e)=>{let f;AFL();b=c.bG5;if(b!==null){f=b;if(f.bHD===d){if(e!==null&&Mt(f)!==e)return 1;return 0;}return 1;}return 0;},BhP=(a,b)=>{return !(b!==null&&b.bGI.length>2)?0:Bn(b,0);},Dz3=(a,b,c,d,e)=>{return Evo(a,b,c,d,e);},FrT=()=>{CF1=Dp(E(2657));},BmI=N(Bl),DoN=null,AS_=()=>{AS_=Z(BmI);DWD();},E0c=()=>{let b,c,d,e,f,g,h,i,j,k;AS_();b=BN(Bo(BmI));c +=K(Bg,8);d=c.data;d[0]=BL();d[1]=Ba(0,E(2679),E(596));d[2]=Bw();d[3]=(DlC()).bH3;d[4]=Bw();e=new DD;f=K(Bg,4);g=f.data;g[0]=Ba(1,E(618),E(2640));h=new Ch;i=K(Bg,5);j=i.data;j[0]=Ba(1,E(2641),E(2642));j[1]=ABy(E(667));j[2]=Bc(E(665));j[3]=Bw();j[4]=Ba(1,E(624),E(2644));Cj(h,i);g[1]=h;h=new Ch;i=K(Bg,5);j=i.data;j[0]=Ba(1,E(601),E(2644));j[1]=ABy(E(2645));j[2]=Bc(E(665));j[3]=Bd();j[4]=Ba(1,E(2646),E(2642));Cj(h,i);g[2]=h;k=new Ch;i=K(Bg,5);j=i.data;j[0]=Ba(1,E(2647),E(2648));j[1]=ABy(E(2649));j[2]=Bc(E(665));j[3] +=Bw();j[4]=Ba(1,E(602),E(2644));Cj(k,i);g[3]=k;Eb(e,f);d[5]=e;d[6]=ABy(E(578));d[7]=BR();return BT(b,c);},DlC=()=>{AS_();CM();return HQ(C6);},DHv=(a,b,c)=>{let d,e,f,g;d=new S;T(d);e=Dl(Ck(c,E(594),0));L(d,E(2944));L(d,e);L(d,E(1762));f=Dl(Ck(c,E(2560),0));if(f!==null){L(d,E(2242));L(d,f);L(d,E(1268));}g=ARB(Ck(c,E(578),0));if(g!==null){L(d,E(2945));L(d,g);L(d,E(1762));}if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}return Q(d);},Fgu=a=>{AS_();return DoN;},DHu=(a,b,c,d,e)=>{let f,g,h,i,j,k,l;b=b;e +=DA(b,1,Z_(b,Ck(d,E(594),0)));f=Dl(Ck(d,E(2560),0));if(f===null)f=e.bHL;g=e.bG5;if(g===null){g=B4(Cf(b),f);Cy();h=O9;F$();g=ED(b,c,e,g,h,B4w);}c=ARB(Ck(d,E(578),0));g.bH1=B4(Cf(b),f);if(c!==null){e=new S;T(e);H(H(H(e,E(2946)),c),E(1776));i=Q(e);j=Lc(b.bGM);h=b.bGM;c=null;k=K(I1,1);l=k.data;Fs();l[0]=KB;g.bGZ=N5(i,j,MC(h,c,0,k),b.bGM.bGN);}g.bG_=Iw(DlC(),d,b.bGM.bGN);return By();},DWD=()=>{let b;b=K(Bi,1);b.data[0]=E(596);DoN=Bv(b);},Bxl=N(EP),C2i=null,DkT=null; +let AWh=()=>{AWh=Z(Bxl);Fd6();},B_Q=()=>{AWh();CM();return HQ(C6);},E5W=(a,b)=>{let c,d,e,f,g,h;c=Nn(b);d=a.bHB;e=(C8(DB(c))).bGP;e=Ei(d,e);if(e!==null){d=new S;T(d);L(d,E(2944));L(d,Ck(e,E(594),0));L(d,E(1762));f=Dq(c)<=2?0:Dq(c)-2|0;L(d,E(2828));BE(d,f);L(d,f!=1?E(2253):E(2254));g=ARB(Ck(e,E(578),0));if(g!==null){L(d,E(2945));L(d,g);L(d,E(1762));}if(Ck(e,E(608),0)!==null){L(d,E(2228));L(d,Ck(e,E(608),0));}if(R(e,E(2245),0)!==null)L(d,E(2595));h=R(e,E(599),0);if(h!==null&&!CQ(h))L(d,E(2947));c=ACl(ABT(a),(C8(L9(c))).bGP);if +(c!==null&&TC(Be(c,0)))L(d,E(2948));return Q(d);}return E(2949);},D6k=a=>{AWh();return C2i;},DG2=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m;b=b;c=Nn(c);e=a.bHB;d=(C8(DB(c))).bGP;f=Ei(e,d);g=DA(b,0,b.GW(Ck(f,E(594),0)));if(g.bG5!==null){d=g.bHL;b=new S;T(b);H(H(b,E(2713)),d);b=B5(Q(b));}else{h=ARB(Ck(f,E(578),0));i=I5(c);j=ACN(g);Cy();d=O9;F$();g=ED(b,i,g,j,d,AS1);g.bH1=Ig(HI(c,1,1));if(h!==null){c=new S;T(c);H(H(H(c,E(2946)),h),E(1776));h=Q(c);k=Lc(b.bGM);e=b.bGM;d=null;l=K(I1,1);m=l.data;Fs();m[0]=KB;g.bGZ=N5(h,k,MC(e, +d,0,l),b.bGM.bGN);}g.bG_=Iw(B_Q(),f,b.bGM.bGN);b=By();}return b;},Fd6=()=>{let b;b=K(Bi,1);b.data[0]=E(596);C2i=Bv(b);DkT=HO(new C2_);},BpK=N(Bl),C5V=null,AUh=()=>{AUh=Z(BpK);DYv();},Fv9=()=>{let b,c,d,e,f,g,h,i,j,k;AUh();b=BN(Bo(BpK));c=K(Bg,10);d=c.data;d[0]=BL();d[1]=Ba(0,E(2679),E(596));d[2]=Bw();d[3]=(CW$()).bH3;d[4]=Bw();e=new DD;f=K(Bg,4);g=f.data;g[0]=Ba(1,E(618),E(2640));h=new Ch;i=K(Bg,5);j=i.data;j[0]=Ba(1,E(2641),E(2642));j[1]=ABy(E(667));j[2]=Bc(E(665));j[3]=Bw();j[4]=Ba(1,E(624),E(2644));Cj(h, +i);g[1]=h;k=new Ch;i=K(Bg,5);j=i.data;j[0]=Ba(1,E(601),E(2644));j[1]=ABy(E(2645));j[2]=Bc(E(665));j[3]=Bd();j[4]=Ba(1,E(2646),E(2642));Cj(k,i);g[2]=k;k=new Ch;i=K(Bg,5);j=i.data;j[0]=Ba(1,E(2647),E(2648));j[1]=ABy(E(2649));j[2]=Bc(E(665));j[3]=Bw();j[4]=Ba(1,E(602),E(2644));Cj(k,i);g[3]=k;Eb(e,f);d[5]=e;d[6]=ABy(E(578));d[7]=Bd();d[8]=Bc(E(568));d[9]=BR();return BT(b,c);},CW$=()=>{AUh();CM();return HQ(C6);},EW2=(a,b,c)=>{let d,e,f,g;d=new S;T(d);e=Dl(Ck(c,E(594),0));L(d,E(2950));L(d,e);L(d,E(1762));f=Dl(Ck(c, +E(2560),0));if(f!==null){L(d,E(2242));L(d,f);L(d,E(1268));}g=ARB(Ck(c,E(578),0));if(g!==null){L(d,E(2945));L(d,g);L(d,E(1762));}if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}return Q(d);},D1x=a=>{AUh();return C5V;},DN8=(a,b,c,d,e)=>{let f,g,h,i,j,k,l;b=b;f=DA(b,1,Z_(b,Ck(d,E(594),0)));g=Dl(Ck(d,E(2560),0));if(g===null)g=f.bHL;h=B4(Cf(b),g);F7();i=Kw;F$();c=AOn(b,c,f,h,i,B4w);if(OI(c)){e=GH(b);c=ARB(Ck(d,E(578),0));e.bH1=B4(Cf(b),g);if(c!==null){g=new S;T(g);H(H(H(g,E(2946)),c),E(1776));h=Q(g);j= +Lc(b.bGM);f=b.bGM;g=null;k=K(I1,1);l=k.data;Fs();l[0]=KB;e.bGZ=N5(h,j,MC(f,g,0,k),b.bGM.bGN);}e.bG_=Iw(CW$(),d,b.bGM.bGN);c=By();}return c;},DYv=()=>{let b;b=K(Bi,1);b.data[0]=E(596);C5V=Bv(b);},Bk2=N(Bl),DaR=null,C5Y=null,A7P=()=>{A7P=Z(Bk2);D1$();},Fju=()=>{let b,c,d;A7P();b=BN(Bo(Bk2));c=K(Bg,11);d=c.data;d[0]=BL();d[1]=Ba(1,E(554),E(2951));d[2]=Bw();d[3]=Ba(2,E(2560),C5Y);d[4]=Bw();d[5]=Bc(E(665));d[6]=Bw();d[7]=Ba(1,E(594),E(2952));d[8]=D2(E(567));d[9]=Ba(1,E(2953),E(2954));d[10]=BR();return BT(b,c);},D$C +=(a,b,c)=>{let d,e,f;d=new S;T(d);e=F9(R(c,E(554),0));if(R(c,E(2953),0)===null){L(d,E(2695));L(d,e);L(d,E(2241));}else{L(d,E(2689));L(d,e);L(d,E(2955));}L(d,Ck(c,E(594),0));L(d,E(2666));L(d,Ck(c,E(2560),0));L(d,E(1268));f=R(c,E(567),0);if(f!==null){L(d,E(2244));L(d,f);if(Bj(e,E(2956))&&!(!BG(f,E(1875))&&!BG(f,E(1866))&&!BG(f,E(1872))&&!BG(f,E(1868))&&!BG(f,E(1863))))L(d,E(2957));}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(2560),1)!==null){L(d,E(2958));L(d,R(c,E(2560),1));L(d,E(2959));}return Q(d);},D2z= +(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;f=R(d,E(554),0);g=Ck(d,E(2560),0);h=Ck(d,E(594),0);if(h===null)h=g;i=R(d,E(567),0);if(!BG(f,E(2956))){F7();j=BC7;}else{F7();j=Bku;}if(!BG(f,E(2956))){Cy();k=A78;}else{Cy();k=Yo;}if(BG(f,E(2956))){if(i!==null&&BG(i,E(1875)))f=E(2960);if(i!==null&&BG(i,E(1866)))f=E(2961);if(i!==null&&BG(i,E(1872)))f=E(2962);if(i!==null&&BG(i,E(1868)))f=E(2963);if(i!==null&&BG(i,E(1863)))f=E(2964);}l=Bu5(f,b.bGM);m=DA(b,1,Z_(b,h));if(m.bG5===null){n=B4(Cf(b),g);o=R(d,E(2245),0);if +(R(d,E(2953),0)===null)p=ED(b,c,m,n,k,l);else{AOn(b,c,m,n,j,l);p=GH(b);}if(i!==null){q=Lc(b.bGM);c=b.bGM;e=null;r=K(I1,1);s=r.data;Fs();s[0]=KB;p.bGZ=N5(i,q,MC(c,e,0,r),b.bGM.bGN);}if(o!==null){t=new FZ;c=DF(b.bGM,E(2248));FC();Gb(t,c,FI);p.bIa=Gj(t,o);}u=R(d,E(608),0);CM();PP(p,C6,u===null?null:DV(b.bGM.bGN,u));return By();}b=new S;T(b);H(H(b,E(2965)),h);return B5(Q(b));},E1k=a=>{A7P();return DaR;},EvO=(a,b,c,d,e)=>{return D2z(a,b,c,d,e);},D1$=()=>{let b,c;DaR=Bv(BB(Bi,[E(2956),E(788)]));AL_();b=AM2;c=new S;T(c);H(H(H(c, +E(2808)),b),E(2809));C5Y=Q(c);},BoK=N(Bl),DaE=null,ARu=()=>{ARu=Z(BoK);EiP();},Ez9=(a,b)=>{Jx();return !(b!==JB&&b!==WY&&b!==ABo)?1:0;},D1V=()=>{let b,c,d,e,f,g,h,i,j,k,l;ARu();b=BN(Bo(BoK));c=K(Bg,17);d=c.data;d[0]=BL();d[1]=Bc(E(606));d[2]=Bw();e=new DD;f=K(Bg,4);g=f.data;h=new Ch;i=K(Bg,5);j=i.data;j[0]=Ba(1,E(618),E(597));j[1]=Bw();j[2]=Bc(E(665));j[3]=Bw();j[4]=Ba(1,E(2663),E(603));Cj(h,i);g[0]=h;k=new Ch;i=K(Bg,5);j=i.data;j[0]=Ba(1,E(2641),E(603));j[1]=Bw();j[2]=Bc(E(665));j[3]=Bw();j[4]=Ba(1,E(624), +E(597));Cj(k,i);g[1]=k;g[2]=Ba(1,E(601),E(597));g[3]=Ba(1,E(602),E(603));Eb(e,f);d[3]=e;d[4]=Bd();e=new ER;l=new S;T(l);Bb(H(l,E(2550)),63);Fh(e,4,E(2551),Q(l));d[5]=e;d[6]=L_();e=new ER;l=new S;T(l);Bb(H(l,E(2550)),63);Fh(e,4,E(2552),Q(l));d[7]=e;d[8]=Bd();E3();d[9]=Fy;d[10]=Bd();d[11]=(Dk$()).bH3;d[12]=Bd();d[13]=DI(Ba(2,E(2553),E(2966)));d[14]=Bd();e=new C0;h=new Ch;f=K(Bg,3);g=f.data;g[0]=Bc(E(82));g[1]=Bd();g[2]=Ba(1,E(2967),E(566));Cj(h,f);C3(e,h);d[15]=e;d[16]=BR();return BT(b,c);},Dk$=()=>{ARu();CM();return HQ(C6);},DO0 +=(a,b,c)=>{let d,e,f,g,h,i;d=new S;T(d);L(d,E(2968));L(d,Ck(c,E(594),0));L(d,E(1762));e=Ck(c,E(2560),0);if(e!==null){L(d,E(2242));L(d,e);L(d,E(1268));}f=Gn(c);if(!LC(f)){L(d,E(2969));L(d,R(c,E(2970),0));g=CZh(f);if(g!==null){L(d,E(2971));L(d,KG(F9(g.bHx),95,32));L(d,E(865));}}h=Ck(c,E(2573),0);if(h!==null&&!CQ(h)){L(d,E(2670));L(d,h);}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}if(R(c,E(2553),1)!==null){L(d,E(2229));L(d,R(c,E(2553),1));}if(R(c,E(2553),0)!== +null){L(d,E(2605));L(d,R(c,E(2553),0));}i=R(c,E(2967),0);if(i!==null&&!CQ(i)){L(d,E(2972));L(d,i);L(d,E(1268));}return Q(d);},DEw=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r;f=Ck(d,E(594),0);g=b;h=DA(b,1,E8(g,f));i=Ck(d,E(2560),0);if(i===null)i=h.bHL;j=Gn(d);k=CZh(j);if(k===null){Cy();k=VL;}if(Cfn(b,h)){l=h.bG5;if(l!==null)b.b0R=l;else l=ED(b,c,h,B4(Cf(b),i),k,null);while(true){h=h.bP$;if(h===null)break;if(h.bG5!==null)break;F7();(B67(g,c,h,ZD)).bH1=ACN(h);}Jx();if(e===JB){l.bH1=B4(Cf(b),i);l.bGZ=AAV(j);g=R(d, +E(2245),0);if(g!==null){m=new FZ;c=DF(b.bGM,E(2248));FC();Gb(m,c,FI);l.bIa=Gj(m,g);}n=b.bGM.bGN;o=Iw(Dk$(),d,n);p=R(d,E(2553),1);q=p!==null?DV(n,p):null;if(q!==null){CM();o=Lg(o,E1,q);}if(R(d,E(2553),0)!==null)o=AKc(o,R(d,E(2553),0));l.bG_=BoG(o,N6(j,n));r=R(d,E(2967),0);if(r!==null)l.bKL.G0(r);ZW(l,Ck(d,E(2573),0));if(KX(Ja(l))&&!BQp(T7(l)))return B5(E(2973));}return By();}d=h.bHL;b=new S;T(b);H(H(H(b,E(2974)),d),E(2975));return B5(Q(b));},Fv8=a=>{ARu();return DaE;},D7p=(a,b,c,d,e)=>{return DEw(a,b,c,d,e);},EiP +=()=>{let b;b=K(Bi,1);b.data[0]=E(606);DaE=Bv(b);},AX5=N(Bl),Dgk=(a,b)=>{Jx();return b!==WY?0:1;},BjD=b=>{return Ba(1,b,E(2976));},Dd9=()=>{return D2(E(578));},EdR=(a,b,c)=>{let d,e,f,g;d=new S;T(d);L(d,E(2977));L(d,CF6(a,R(c,E(2719),0),1));L(d,E(95));L(d,CF6(a,R(c,E(2741),0),0));e=R(c,E(470),0);if(e!==null){L(d,E(2312));L(d,e);L(d,E(1268));}if(R(c,E(2978),0)!==null)L(d,E(2979));if(R(c,E(2980),0)!==null)L(d,E(2981));f=R(c,E(2731),0);if(f!==null&&!CQ(f)){a:{b:{c:{d:{L(d,E(2747));switch(LG(Bn(f,0))){case 108:break;case 114:break d;case 117:break c;default:break b;}b +=E(2748);break a;}b=E(2749);break a;}b=E(2750);break a;}b=E(2751);}L(d,b);}g=Ck(c,E(620),0);if(g!==null){L(d,E(2753));L(d,g);L(d,E(1762));if(CB(F9(g),E(774)))L(d,E(2982));}if(R(c,E(578),0)!==null){L(d,E(2244));L(d,R(c,E(578),0));}return Q(d);},CF6=(a,b,c)=>{let d;if(!BO(b,E(2983))){if(!BG(b,E(2984))){if(!Dr(b,E(2984))){if(!BG(b,E(2985))){if(!Dr(b,E(2985))){if(BO(b,E(684))&&Dr(b,E(684))){b=CyO(a,b);d=new S;T(d);Bb(H(H(d,E(2884)),b),39);return Q(d);}d=new S;T(d);Bb(d,39);Bb(H(d,b),39);return Q(d);}b=B_(b,0,b.bGI.length +-4|0);d=new S;T(d);Bb(H(H(d,E(2986)),b),39);return Q(d);}return E(2987);}b=B_(b,0,b.bGI.length-3|0);d=new S;T(d);Bb(H(H(d,E(2988)),b),39);return Q(d);}return E(2989);}return !c?E(2990):E(2991);},DGi=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r;f=R(d,E(2719),0);g=R(d,E(2741),0);if(!BO(f,E(2983)))h=Czv(a,c,b,f);else{e=GH(b);if(KX(e)){e=DA(b,1,E8(b,E(2992)));if(e.bG5===null){i=B4(Cf(b),E(14));Cy();ED(b,c,e,i,AGi,null);}h=e.bG5;}else{e=En(e);i=new S;T(i);H(H(i,E(2992)),e);i=Q(i);i=DA(b,1,E8(b,i));if(i.bG5===null) +{j=B4(Cf(b),E(14));Cy();ED(b,c,i,j,AGi,null);}h=i.bG5;}}if(h!==null){if(!BO(g,E(2983)))i=Czv(a,c,b,g);else{e=GH(b);if(KX(e)){e=DA(b,1,E8(b,E(2993)));if(e.bG5===null){i=B4(Cf(b),E(14));Cy();ED(b,c,e,i,AFJ,null);}i=e.bG5;}else{e=En(e);i=new S;T(i);H(H(i,E(2993)),e);i=Q(i);i=DA(b,1,E8(b,i));if(i.bG5===null){j=B4(Cf(b),E(14));Cy();ED(b,c,i,j,AFJ,null);}i=i.bG5;}}if(i!==null){e=R(d,E(2729),0);j=R(d,E(2735),0);k=new S;T(k);H(H(k,e),j);k=Q(k);e=R(d,E(2731),0);j=e===null?a.JI():AXV(e);DC();if(!(j!==FL&&j!==Gy))k=E(1272);l +=k.bGI.length;m=R(d,E(2978),0)===null?0:1;n=R(d,E(2980),0)===null?0:1;k=new H6;if(!n){FU();e=AB1;}else{FU();e=BtM;}if(!m){FU();f=Hf;}else{FU();f=BzU;}Mo(k,e,f);o=B4(Cf(b),R(d,E(470),0));e=Ck(d,E(620),0);if(e!==null&&CB(FS(e),E(774)))p=1;else{e=DF(b.bGM,E(2994));p=!(e!==null&&BG(e,E(774)))?0:1;}if(p&&o!==null&&!FQ(o)&&!CQ(Dk(YE(o))))return ESC(a,b,c,h,i,o,k,l,j,d);q=AAc(o,l,Qy(b.bGM)<=0?0:1);r=KE(c,b,B1(b.bGM),h,i,k,q);if(!(j!==FL&&j!==HG))r=AA9(r);c=Ck(d,E(620),0);U5(r,c);if(R(d,E(578),0)!==null)r.bPW=FD(R(d, +E(578),0));IS(b,r);return By();}b=new S;T(b);H(H(H(b,E(2974)),g),E(2995));return B5(Q(b));}b=new S;T(b);H(H(H(b,E(2974)),f),E(2995));return B5(Q(b));},E5p=a=>{return null;},Czv=(a,b,c,d)=>{let e,f,g;if(!BG(d,E(2984))){if(!Dr(d,E(2984))){if(!BG(d,E(2985))){if(!Dr(d,E(2985))){if(BO(d,E(684))&&Dr(d,E(684))){e=CyO(a,d);f=DA(c,1,E8(c,e));d=f.bG5;if(d===null){d=ACN(f);Cy();return ED(c,b,f,d,AIC,null);}return d;}if(!Bj(En(GH(c)),d)){f=DA(c,1,E8(c,d));if(Cfn(c,f)){d=f.bG5;if(d===null){if(f.bP$.bG5!==null){e=B4(Cf(c), +f.bHL);Cy();return ED(c,b,f,e,VL,null);}return null;}return d;}return null;}return GH(c);}d=B_(d,0,d.bGI.length-4|0);f=c;e=DA(c,1,E8(f,d));g=ACN(e);F7();So(c,b,e,g,ZD);d=En(GH(c));e=new S;T(e);H(H(e,E(2996)),d);f=DA(c,1,E8(f,Q(e)));d=f.bG5;if(d!==null)b=d;else{e=B4(Cf(c),E(14));Cy();b=ED(c,b,f,e,AE$,null);}BwG(c);return b;}d=GH(c);if(KX(d)){d=DA(c,1,E8(c,E(2996)));if(d.bG5===null){f=B4(Cf(c),E(14));Cy();ED(c,b,d,f,AE$,null);}b=d.bG5;}else{d=En(d);f=new S;T(f);H(H(f,E(2996)),d);f=Q(f);f=DA(c,1,E8(c,f));if(f.bG5 +===null){e=B4(Cf(c),E(14));Cy();ED(c,b,f,e,AE$,null);}b=f.bG5;}return b;}d=B_(d,0,d.bGI.length-3|0);f=DA(c,1,E8(c,d));e=ACN(f);F7();So(c,b,f,e,ZD);d=En(GH(c));f=new S;T(f);H(H(f,E(2997)),d);f=DA(c,1,Q(f));d=f.bG5;if(d!==null)b=d;else{e=B4(Cf(c),E(14));Cy();b=ED(c,b,f,e,AE4,null);}BwG(c);return b;}d=GH(c);if(KX(d)){d=DA(c,1,E8(c,E(2997)));if(d.bG5===null){f=B4(Cf(c),E(14));Cy();ED(c,b,d,f,AE4,null);}b=d.bG5;}else{d=En(d);f=new S;T(f);H(H(f,E(2997)),d);f=Q(f);f=DA(c,1,E8(c,f));if(f.bG5===null){e=B4(Cf(c),E(14));Cy();ED(c, +b,f,e,AE4,null);}b=f.bG5;}return b;},CyO=(a,b)=>{while(BO(b,E(684))){b=CC(b,1);}while(Dr(b,E(684))){b=B_(b,0,b.bGI.length-1|0);}return b;},ESC=(a,b,c,d,e,f,g,h,i,j)=>{let k,l,m,n,o,p,q,r,s,t,u;k=En(d);l=En(e);m=Ih(YE(f),E(2998),E(840));n=QR();o=new S;T(o);p=H(H(o,E(2999)),k);Bb(p,95);p=H(p,l);Bb(p,95);p=H(p,m);Bb(p,95);QN(p,n);p=Q(o);q=b;k=DA(b,1,E8(q,p));Cy();p=ED(b,c,k,f,AWe,null);p.bGZ=FD(E(3000));m=new H6;FU();f=Hf;Mo(m,f,f);l=AAc(Lu,2,Qy(b.bGM)<=0?0:1);o=KE(c,b,B1(b.bGM),d,p,m,l);o.b9Z=10.0;r=AAc(Lu,2, +Qy(b.bGM)<=0?0:1);s=KE(c,b,B1(b.bGM),p,e,g,r);s.b9Z=10.0;DC();if(!(i!==FL&&i!==HG)){o=AA9(o);s=AA9(s);}t=Ck(j,E(620),0);if(t!==null){u=Ih(Ih(Ih(t,E(3001),E(14)),E(3002),E(349)),E(3003),E(14));if(!CQ(u)){U5(o,u);U5(s,u);}}IS(q,o);IS(q,s);return By();},FiM=(a,b,c,d,e)=>{return DGi(a,b,c,d,e);},B1T=N(AX5),Dys=a=>{FY();return G6;}; +let Fhb=()=>{let b,c,d,e,f,g,h,i;b=BN(Bo(B1T));c=K(Bg,10);d=c.data;d[0]=BL();d[1]=BjD(E(2719));d[2]=Bd();e=new Ch;f=K(Bg,8);g=f.data;g[0]=Ba(1,E(2978),E(3004));g[1]=Ba(1,E(2729),E(619));g[2]=Ba(1,E(2275),E(621));g[3]=Ba(1,E(2731),E(2732));g[4]=Ba(1,E(2278),E(621));g[5]=Ba(1,E(2735),E(622));g[6]=Bc(E(623));g[7]=Ba(1,E(2980),E(3005));Cj(e,f);d[3]=e;d[4]=Bd();d[5]=BjD(E(2741));d[6]=Bd();d[7]=Dd9();h=new C0;i=new Ch;f=K(Bg,3);g=f.data;g[0]=Bc(E(82));g[1]=Bd();g[2]=Ba(1,E(470),E(2540));Cj(i,f);C3(h,i);d[8]=h;d[9] +=BR();return BT(b,c);},Dxc=(a,b)=>{return Dgk(a,b);},BJO=N(AX5),D0r=a=>{FY();return G6;},ERP=()=>{let b,c,d,e,f,g,h,i;b=BN(Bo(BJO));c=K(Bg,10);d=c.data;d[0]=BL();d[1]=BjD(E(2741));d[2]=Bd();e=new Ch;f=K(Bg,8);g=f.data;g[0]=Ba(1,E(2980),E(3005));g[1]=Bc(E(3006));g[2]=Ba(1,E(2735),E(622));g[3]=Ba(1,E(2278),E(621));g[4]=Ba(1,E(2731),E(2732));g[5]=Ba(1,E(2275),E(621));g[6]=Ba(1,E(2729),E(619));g[7]=Ba(1,E(2978),E(3004));Cj(e,f);d[3]=e;d[4]=Bd();d[5]=BjD(E(2719));d[6]=Bd();d[7]=Dd9();h=new C0;i=new Ch;f=K(Bg,3);g +=f.data;g[0]=Bc(E(82));g[1]=Bd();g[2]=Ba(1,E(470),E(2540));Cj(i,f);C3(h,i);d[8]=h;d[9]=BR();return BT(b,c);},Eme=a=>{DC();return FL;},DNp=(a,b)=>{return Dgk(a,b);},Byo=N(Bl),C2u=null,AUw=()=>{AUw=Z(Byo);E1F();},DLn=(a,b)=>{Jx();return !(b!==JB&&b!==WY&&b!==ABo)?1:0;},EY0=()=>{let b,c,d,e,f,g,h,i,j,k,l,m,n,o;AUw();b=BN(Bo(Byo));c=K(Bg,16);d=c.data;d[0]=BL();d[1]=Bc(E(606));d[2]=Bw();e=new DD;f=K(Bg,2);g=f.data;h=new Ch;i=K(Bg,5);j=i.data;j[0]=Ba(1,E(618),E(597));j[1]=Bw();j[2]=Bc(E(665));j[3]=Bw();j[4]=Ba(1, +E(2663),E(603));Cj(h,i);g[0]=h;h=new Ch;k=K(Bg,2);l=k.data;m=new C0;n=new Ch;i=K(Bg,4);j=i.data;j[0]=Ba(1,E(2641),E(603));j[1]=Bw();j[2]=Bc(E(665));j[3]=Bw();Cj(n,i);C3(m,n);l[0]=m;l[1]=Ba(1,E(624),E(597));Cj(h,k);g[1]=h;Eb(e,f);d[3]=e;d[4]=Bd();o=new ER;e=new S;T(e);Bb(H(e,E(2550)),63);Fh(o,4,E(2551),Q(e));d[5]=o;d[6]=L_();o=new ER;e=new S;T(e);Bb(H(e,E(2550)),63);Fh(o,4,E(2552),Q(e));d[7]=o;d[8]=Bd();E3();d[9]=Fy;d[10]=Bd();d[11]=(C3A()).bH3;d[12]=Bd();d[13]=DI(Ba(2,E(2553),E(2966)));d[14]=Bc(E(3007));d[15] +=BR();return BT(b,c);},C3A=()=>{AUw();CM();return HQ(C6);},Bd_=(a,b,c,d)=>{if(R(b,c,0)===null)return R(b,d,0);return R(b,c,0);},DDf=(a,b,c)=>{let d,e,f;d=new S;T(d);L(d,E(3008));L(d,Bd_(a,c,E(618),E(624)));L(d,E(1762));e=Bd_(a,c,E(2663),E(2641));if(e!==null){L(d,E(2242));L(d,e);L(d,E(1268));}if(!LC(Gn(c))){L(d,E(2969));L(d,R(c,E(2970),0));}f=Ck(c,E(2573),0);if(f!==null&&!CQ(f)){L(d,E(2670));L(d,f);}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}if(R(c,E(2553), +1)!==null){L(d,E(2229));L(d,R(c,E(2553),1));}if(R(c,E(2553),0)!==null){L(d,E(2605));L(d,R(c,E(2553),0));}return Q(d);},Fbv=a=>{AUw();return C2u;},EFI=(a,b,c,d,e)=>{let f,g,h;b=b;e=DA(b,1,Bd_(a,d,E(618),E(624)));f=Bd_(a,d,E(2663),E(2641));g=B4(Cf(b),f!==null?f:e.bHL);F7();So(b,c,e,g,ZD);c=GH(b);if(f!==null)c.bH1=B4(Cf(b),f);f=Gn(d);c.bGZ=AAV(f);g=R(d,E(2245),0);if(g!==null){h=new FZ;e=DF(b.bGM,E(2248));FC();Gb(h,e,FI);c.bIa=Gj(h,g);}b=b.bGM.bGN;e=Iw(C3A(),d,b);g=R(d,E(2553),1);g=g!==null?DV(b,g):null;if(g!== +null){CM();e=Lg(e,E1,g);}if(R(d,E(2553),0)!==null)e=AKc(e,R(d,E(2553),0));c.bG_=BoG(e,N6(f,b));ZW(c,Ck(d,E(2573),0));return By();},E1F=()=>{let b;b=K(Bi,1);b.data[0]=E(606);C2u=Bv(b);},Bc4=N(Bl),CVa=null,AQC=()=>{AQC=Z(Bc4);DFQ();},DAf=(a,b)=>{Jx();return !(b!==JB&&b!==WY&&b!==ABo)?1:0;},E26=()=>{let b,c,d,e,f,g,h,i,j,k,l,m,n,o;AQC();b=BN(Bo(Bc4));c=K(Bg,12);d=c.data;d[0]=BL();d[1]=Bc(E(753));d[2]=Bw();e=new DD;f=K(Bg,2);g=f.data;h=new Ch;i=K(Bg,5);j=i.data;j[0]=Ba(1,E(618),E(597));j[1]=Bw();j[2]=Bc(E(665));j[3] +=Bw();j[4]=Ba(1,E(2663),E(603));Cj(h,i);g[0]=h;k=new Ch;l=K(Bg,2);m=l.data;n=new C0;o=new Ch;i=K(Bg,4);j=i.data;j[0]=Ba(1,E(2641),E(603));j[1]=Bw();j[2]=Bc(E(665));j[3]=Bw();Cj(o,i);C3(n,o);m[0]=n;m[1]=Ba(1,E(624),E(597));Cj(k,l);g[1]=k;Eb(e,f);d[3]=e;d[4]=D2(E(578));E3();d[5]=Fy;d[6]=Bd();d[7]=(CC4()).bH3;d[8]=Bd();d[9]=DI(Ba(2,E(2553),E(2966)));d[10]=Bc(E(3007));d[11]=BR();return BT(b,c);},CC4=()=>{AQC();CM();return HQ(C6);},BBh=(a,b,c,d)=>{if(R(b,c,0)===null)return R(b,d,0);return R(b,c,0);},Fhh=(a,b,c)=> +{let d,e,f;d=new S;T(d);L(d,E(3009));L(d,BBh(a,c,E(618),E(624)));L(d,E(1762));e=BBh(a,c,E(2663),E(2641));if(e!==null){L(d,E(2242));L(d,e);L(d,E(1268));}f=R(c,E(578),0);if(f!==null){L(d,E(2244));L(d,f);}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}if(R(c,E(2553),1)!==null){L(d,E(2229));L(d,R(c,E(2553),1));}if(R(c,E(2553),0)!==null){L(d,E(2605));L(d,R(c,E(2553),0));}return Q(d);},ER$=a=>{AQC();return CVa;},D9P=(a,b,c,d,e)=>{let f,g,h;b=b;e=BBh(a,d,E(618),E(624));f +=DA(b,1,E8(b,e));e=BBh(a,d,E(2663),E(2641));if(e===null)e=f.bHL;g=B4(Cf(b),e);F7();h=Kw;F$();AOn(b,c,f,g,h,A_N);e=GH(b);c=R(d,E(578),0);if(c!==null)e.bGZ=FD(c);f=R(d,E(2245),0);if(f!==null){g=new FZ;c=DF(b.bGM,E(2248));FC();Gb(g,c,FI);e.bIa=Gj(g,f);}c=Iw(CC4(),d,b.bGM.bGN);f=R(d,E(2553),1);b=f===null?null:DV(b.bGM.bGN,f);if(b!==null){CM();c=Lg(c,E1,b);}if(R(d,E(2553),0)!==null)c=AKc(c,R(d,E(2553),0));e.bG_=c;return By();},DFQ=()=>{let b;b=K(Bi,1);b.data[0]=E(753);CVa=Bv(b);},BAb=N(Bl),DjS=null,Bzk=()=>{Bzk= +Z(BAb);FiH();},FiE=(a,b)=>{Jx();return !(b!==JB&&b!==WY&&b!==ABo)?1:0;},Esg=(a,b,c)=>{return E(3010);},Exn=a=>{Bzk();return DjS;},Ekb=(a,b,c,d,e)=>{b=b;c=GH(b);if(!(c!==null&&!KX(c)))b=B5(E(3011));else{BwG(b);b=By();}return b;},FiH=()=>{DjS=Bv(BB(Bi,[E(581),E(3012),E(582)]));},BCk=N(Bl),EJJ=(a,b)=>{Jx();return b!==JB?0:1;},D0m=a=>{FY();return G6;},FfZ=(a,b,c)=>{let d;b=R(c,E(604),0);c=Ck(c,E(594),0);d=new S;T(d);H(H(H(H(H(d,E(3013)),b),E(3014)),c),E(3015));return Q(d);},Ely=(a,b,c,d,e)=>{let f,g;b=b;e=Ck(d, +E(594),0);f=!Bj(En(GH(b)),e)?DA(b,1,E8(b,e)):(GH(b)).bH4;e=f.bG5;if(e===null){g=ACN(f);Cy();e=ED(b,c,f,g,VL,null);}b=R(d,E(604),0);e.bKL.G0(b);return By();},Bn0=N(Bl),C_z=null,Bjv=()=>{Bjv=Z(Bn0);DVx();},EyY=(a,b)=>{Jx();return !(b!==JB&&b!==WY&&b!==ABo)?1:0;},EI1=(a,b,c)=>{if(Bn(R(c,E(554),0),0)==45)return E(3016);return E(3017);},ENs=a=>{Bjv();return C_z;},DXs=(a,b,c,d,e)=>{let f,g,h;b=b;f=Bn(R(d,E(554),0),0);d=GH(b);(GH(b)).b$o=f;d=HR(d);F7();if(d===N2)X5(b);d=b;g=Bfr(d.cEs,1);e=new S;T(e);BE(H(e,E(3018)), +g);e=DA(b,1,E8(d,Q(e)));h=K(KH,1);h.data[0]=E(14);So(b,c,e,PB(h),N2);(GH(b)).b$o=f;return By();},DVx=()=>{C_z=Bv(BB(Bi,[E(1272),E(2054)]));}; +let Bnr=N(Bl),Cm8=null,Bnu=()=>{Bnu=Z(Bnr);FoN();},EF6=(a,b,c)=>{let d,e;d=new S;T(d);L(d,E(3019));L(d,R(c,E(610),0));L(d,E(1762));e=R(c,E(470),0);if(e!==null&&!CQ(e)){L(d,E(2242));L(d,e);L(d,E(1268));}if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}return Q(d);},Fbx=a=>{Bnu();return Cm8;},ERC=(a,b,c,d,e)=>{b=b;c=R(d,E(608),0);c=c===null?null:DV(b.bGM.bGN,c);return Djj(b,R(d,E(610),0),c,B4(Cf(b),R(d,E(470),0)));},FoN=()=>{let b;b=K(Bi,1);b.data[0]=E(2054);Cm8=Bv(b);},Bif=N(Bl),Cod=null,A2p=()=>{A2p +=Z(Bif);EQs();},EqO=()=>{let b,c,d,e,f,g,h;A2p();b=BN(Bo(Bif));c=K(Bg,8);d=c.data;d[0]=BL();d[1]=Bc(E(800));d[2]=Bw();d[3]=Ba(1,E(608),E(3020));d[4]=Bd();d[5]=Ba(1,E(610),E(3021));e=new C0;f=new Ch;g=K(Bg,4);h=g.data;h[0]=Bw();h[1]=Bc(E(665));h[2]=Bw();h[3]=Ba(1,E(470),E(611));Cj(f,g);C3(e,f);d[6]=e;d[7]=BR();return BT(b,c);},DAS=(a,b,c)=>{let d,e;d=new S;T(d);L(d,E(3019));L(d,R(c,E(610),0));L(d,E(1762));e=R(c,E(470),0);if(e!==null&&!CQ(e)){L(d,E(2242));L(d,e);L(d,E(1268));}if(R(c,E(608),0)!==null){L(d,E(2228));L(d, +R(c,E(608),0));}return Q(d);},D$A=a=>{A2p();return Cod;},FbG=(a,b,c,d,e)=>{b=b;c=R(d,E(608),0);c=c===null?null:DV(b.bGM.bGN,c);return Djj(b,R(d,E(610),0),c,B4(Cf(b),R(d,E(470),0)));},EQs=()=>{let b;b=K(Bi,1);b.data[0]=E(800);Cod=Bv(b);},BxU=N(Bl),C$c=null,AXg=()=>{AXg=Z(BxU);FaX();},FlU=()=>{let b,c,d,e,f,g,h,i;AXg();b=BN(Bo(BxU));c=K(Bg,9);d=c.data;d[0]=BL();d[1]=Ba(1,E(554),E(3022));d[2]=Bw();e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=(BFd(E(3023))).bH3;h[1]=Bw();Cj(f,g);C3(e,f);d[3]=e;d[4]=Ba(1,E(563),E(3024));i +=new C0;e=new Ch;g=K(Bg,2);h=g.data;h[0]=Bw();h[1]=(BFd(E(3025))).bH3;Cj(e,g);C3(i,e);d[5]=i;d[6]=D2(E(567));d[7]=Ba(1,E(2846),E(3026));d[8]=BR();return BT(b,c);},BFd=b=>{AXg();CM();return BhH(C6,b);},Fgo=(a,b,c)=>{let d,e,f;d=new S;T(d);e=Dl(R(c,E(563),0));L(d,E(2689));L(d,F9(R(c,E(554),0)));L(d,E(2241));L(d,e);L(d,E(1762));f=R(c,E(3023),0)!==null?R(c,E(3023),0):R(c,E(3025),0);if(f!==null){L(d,E(2228));L(d,f);}if(R(c,E(567),0)!==null){L(d,E(2244));L(d,R(c,E(567),0));}if(!(R(c,E(2846),0)).bGI.length)L(d,E(3027));return Q(d);},EdH +=a=>{AXg();return C$c;},DJY=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m;b=b;c=Dl(R(d,E(563),0));e=R(d,E(3023),0)!==null?E(3023):E(3025);f=Iw(BFd(e),d,b.bGM.bGN);e=R(d,E(554),0);if(BG(E(575),e)){F$();g=Cu$;}else if(BG(E(2672),e)){F$();g=AR7;}else if(BG(E(785),e)){F$();g=AS1;}else if(BG(E(719),e)){F$();g=BwI;}else if(BG(E(653),e)){F$();g=C78;}else{b=new Bt;X(b);J(b);}e=R(d,E(567),0);h=e!==null?FD(e):null;if(!((R(d,E(2846),0)).bGI.length<=0?0:1)){e=new JK;i=K(Bi,1);j=Lk(R(d,E(554),0));if(R(d,E(3023),0)!==null){L(j,E(344));L(j, +R(d,E(3023),0));}L(j,E(344));L(j,R(d,E(563),0));if(R(d,E(3025),0)!==null){L(j,E(344));L(j,R(d,E(3025),0));}if(R(d,E(567),0)!==null){L(j,E(344));L(j,R(d,E(567),0));}k=i.data;L(j,E(1763));j=Q(j);d=new S;T(d);H(H(H(d,E(3028)),j),E(3029));k[0]=Q(d);J2(e,i);Nk(b,e);}d=B1(b.bGM);B8();e=AIf(Q3,g.JS());CV();d=B0(d,Du(CG(e,AF0),h));CM();e=DQ(f,C6);if(e===null){B9();e=(BJ(d,CK)).cu(b.bGM.bGN);}c=B4(Cf(b),c);RV(b);l=new BFP;f=EF(b);m=b.bJg.bJW;h=Kq(b);l.cw9=null;l.bYp=AQc(m);l.cOQ=g;l.cWH=h;l.cKl=f;l.cYG=c;l.cYF=d;l.cPV +=e;(EF(b)).JX(l);Rn(b,l);return By();},FaX=()=>{C$c=Bv(BB(Bi,[E(719),E(653),E(2672),E(575),E(785)]));},BdC=N(Bl),C3F=null,BdB=()=>{BdB=Z(BdC);FvO();},DFV=(a,b,c)=>{return E(3030);},D2o=a=>{BdB();return C3F;},Dww=(a,b,c,d,e)=>{return Dp2(b);},FvO=()=>{let b;b=K(Bi,1);b.data[0]=E(582);C3F=Bv(b);},BvI=N(Bl),CJ6=null,A$J=()=>{A$J=Z(BvI);EZc();},DLG=()=>{let b,c,d;A$J();b=BN(Bo(BvI));c=K(Bg,4);d=c.data;d[0]=BL();d[1]=Ba(1,E(3031),E(3032));d[2]=Bc(E(652));d[3]=BR();return BT(b,c);},EdK=(a,b,c)=>{b=R(c,E(3031),0);c +=new S;T(c);H(H(H(c,E(3033)),b),E(2881));return Q(c);},D6y=a=>{A$J();return CJ6;},D03=(a,b,c,d,e)=>{let f,g;b=b;c=new JK;f=K(Bi,1);g=f.data;d=R(d,E(3031),0);e=new S;T(e);Bb(e,39);H(H(e,d),E(3034));g[0]=Q(e);J2(c,f);Nk(b,c);return Dp2(b);},EZc=()=>{CJ6=Bv(BB(Bi,[E(581),E(3035),E(653),E(3036)]));},BvK=N(Bl),Drw=null,AZ4=()=>{AZ4=Z(BvK);D2x();},EtH=()=>{let b,c,d,e,f,g,h;AZ4();b=BN(Bo(BvK));c=K(Bg,5);d=c.data;d[0]=BL();e=new DD;f=K(Bg,2);g=f.data;g[0]=Bc(E(3037));g[1]=Ba(1,E(608),E(3038));Eb(e,f);d[1]=e;d[2]=Bd();h +=new DD;f=K(Bg,2);g=f.data;g[0]=Ba(1,E(470),E(3039));g[1]=Bc(E(14));Eb(h,f);d[3]=h;d[4]=BR();return BT(b,c);},Fmh=(a,b,c)=>{let d,e,f;d=R(c,E(608),0);e=R(c,E(470),0);f=!(e!==null&&e.bGI.length>0)?0:1;if(f&&d!==null){b=new S;T(b);Bb(H(H(H(H(b,E(3040)),e),E(3041)),d),39);return Q(b);}if(!f){if(d!==null){b=new S;T(b);Bb(H(H(b,E(3042)),d),39);return Q(b);}return E(3043);}b=new S;T(b);Bb(H(H(b,E(3040)),e),34);return Q(b);},EOK=a=>{AZ4();return Drw;},Fe8=(a,b,c,d,e)=>{let f;b=b;c=R(d,E(608),0);if(c!==null){f=b.bGM;BD5(b, +Bsg(f,c,BwQ(f)));}c=R(d,E(470),0);if(c!==null&&c.bGI.length>0)Cne(b,B4(Cf(b),c));return By();},D2x=()=>{let b;b=K(Bi,1);b.data[0]=E(1272);Drw=Bv(b);},BvS=N(EP),DbP=null,CjY=null; +let ATL=()=>{ATL=Z(BvS);EeX();},E3i=()=>{let b,c,d,e,f,g;ATL();b=BN(Bo(BvS));c=K(Bg,5);d=c.data;d[0]=BL();e=new DD;f=K(Bg,2);g=f.data;g[0]=Bc(E(3037));g[1]=Ba(1,E(608),E(3038));Eb(e,f);d[1]=e;d[2]=Bd();d[3]=Ba(1,E(470),E(566));d[4]=BR();return BT(b,c);},Euc=(a,b)=>{let c,d,e;b=JL(b);c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){d=new S;T(d);L(d,E(3044));BE(d,Dq(b));L(d,Dq(b)!=1?E(2253):E(2254));L(d,E(2255));c=R(e,E(608),0);if(c!==null){L(d,E(3045));L(d,c);L(d,E(1762));}return Q(d);}return E(3046);},DUr=a=> +{ATL();return DbP;},EmX=(a,b,c,d)=>{let e,f,g;b=b;c=JL(c);e=a.bHB;f=(C8(DB(c))).bGP;d=Ei(e,f);f=R(d,E(608),0);if(f!==null){g=b.bGM;BD5(b,Bsg(g,f,BwQ(g)));}Cne(b,Ig(ATB(c,R(d,E(470),0),1)));return By();},EeX=()=>{let b;b=K(Bi,1);b.data[0]=E(1272);DbP=Bv(b);CjY=HO(new Dl$);},Brn=N(Bl),DoM=null,A$i=()=>{A$i=Z(Brn);Fl7();},DxI=()=>{let b,c,d,e,f,g,h;A$i();b=BN(Bo(Brn));c=K(Bg,7);d=c.data;d[0]=BL();d[1]=AHC();d[2]=Bc(E(3047));d[3]=Bd();e=new C0;f=new Ch;g=K(Bg,4);h=g.data;h[0]=Bc(E(82));h[1]=Ba(1,E(470),E(2403));h[2] +=Bc(E(939));h[3]=Bd();Cj(f,g);C3(e,f);d[4]=e;d[5]=L_();d[6]=BR();return BT(b,c);},E6O=(a,b,c)=>{let d,e,f,g;d=new S;T(d);L(d,E(3048));e=R(c,E(470),0);if(e!==null&&!CQ(e)){L(d,E(3049));L(d,e);L(d,E(3050));}f=Gn(c);if(!LC(f)){L(d,E(2969));L(d,R(c,E(2970),0));g=XV(f);K0();if(g!==Vh){L(d,E(3051));L(d,FS(g.bV5));L(d,E(865));}}if(R(c,E(608),0)!==null){L(d,E(3052));L(d,R(c,E(608),0));L(d,E(3053));}return Q(d);},EJ2=a=>{A$i();return DoM;},D$s=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m;b=b;e=B4(Cf(b),R(d,E(470),0));f=Gn(d);g +=XV(f);if(R(d,E(608),0)!==null){h=R(d,E(470),0);if(h===null)i=E(3047);else{c=new S;T(c);Bb(H(H(c,E(3054)),h),59);i=Q(c);}j=new JK;k=K(Bi,1);l=k.data;c=R(d,E(608),0);d=R(d,E(608),0);h=new S;T(h);c=H(H(H(H(H(H(h,E(3055)),i),E(3056)),c),E(3057)),d);Bb(c,58);Bb(H(c,i),39);l[0]=Q(h);J2(j,k);Nk(b,j);}N6(f,b.bGM.bGN);RV(b);c=new BsD;d=b.bJg;j=EF(b);h=Kq(b);c.cyU=0;c.cam=Lu;c.b7Z=FF();c.cGr=FF();c.cEX=Bk();m=Lu;c.cAr=m;c.cGu=m;c.cFb=m;c.cjU=0;c.cCa=FF();c.cwr=BTf;c.c25=B1(d.bPw);c.cYQ=d;m=d.bJW;c.ctx=m;c.b8f=AQc(m);c.cKP +=g;c.cX6=e;c.csY=j;c.cVa=B$(h);c.cU4=f;(EF(b)).JX(c);Rn(b,c);Lb(b,FF());return By();},Fl7=()=>{DoM=Bv(BB(Bi,[E(332),E(3047)]));},BtF=N(Bl),Ccu=null,A86=()=>{A86=Z(BtF);EtP();},DO2=()=>{let b,c,d;A86();b=BN(Bo(BtF));c=K(Bg,11);d=c.data;d[0]=BL();CM();d[1]=(HQ(C6)).bH3;d[2]=CPC();d[3]=Bc(E(82));d[4]=Ba(1,E(470),E(2403));d[5]=Bc(E(939));d[6]=Bd();d[7]=L_();d[8]=Bd();E3();d[9]=Fy;d[10]=BR();return BT(b,c);},E_a=(a,b,c)=>{let d,e,f;d=new S;T(d);L(d,E(3058));L(d,R(c,E(470),0));L(d,E(1268));e=Gn(c);if(!LC(e)){L(d, +E(2969));L(d,R(c,E(2970),0));f=XV(e);K0();if(f!==Vh){L(d,E(3051));L(d,f.bV5);L(d,E(865));}}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(3059),0)!==null)L(d,E(3060));if(R(c,E(608),0)!==null){L(d,E(3052));L(d,R(c,E(608),0));L(d,E(3061));}return Q(d);},EFP=a=>{A86();return Ccu;},Dyd=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m;b=b;if(R(d,E(2245),0)===null)f=null;else{e=new FZ;c=DF(b.bGM,E(2248));FC();Gb(e,c,FI);f=Gj(e,R(d,E(2245),0));}g=Gn(d);e=R(d,E(470),0);if(R(d,E(3059),0)!==null){h=new JK;i=K(Bi,1);j=i.data;c=R(d,E(3059), +0);k=R(d,E(3059),0);l=new S;T(l);H(H(H(H(H(H(H(l,E(3062)),c),E(3063)),e),E(3064)),k),E(3065));j[0]=Q(l);J2(h,i);Nk(b,h);}if(R(d,E(608),0)!==null){h=new JK;i=K(Bi,1);j=i.data;k=R(d,E(608),0);l=R(d,E(608),0);m=new S;T(m);c=H(H(H(H(H(H(m,E(3066)),e),E(3067)),k),E(3057)),l);Bb(c,58);H(H(c,e),E(3068));j[0]=Q(m);J2(h,i);Nk(b,h);}c=XV(g);return BKu(b,CES(Cf(b),e),c,f,g);},EtP=()=>{Ccu=Bv(BB(Bi,[E(332),E(82),E(1198)]));},Bep=N(Bl),Dar=null,Bru=()=>{Bru=Z(Bep);DFE();},E3n=a=>{let b,c,d;Bru();b=BN(Bo(Bep));c=K(Bg,20);d +=c.data;d[0]=BL();d[1]=AHC();d[2]=Bc(E(2892));d[3]=Bd();d[4]=Bc(E(1922));d[5]=Ba(1,E(3069),E(2403));d[6]=Bc(E(2036));d[7]=Bd();d[8]=LZ(1,E(3070));d[9]=Bd();d[10]=Bc(E(1922));d[11]=Ba(1,E(3071),E(3072));d[12]=Bc(E(2036));d[13]=Bd();d[14]=Bc(E(3073));d[15]=Bd();d[16]=Bc(E(652));d[17]=Bd();d[18]=L_();d[19]=BR();Cb(a,BT(b,c));},EGm=()=>{let a=new Bep();E3n(a);return a;},E6n=(a,b,c)=>{let d,e;d=new S;T(d);L(d,E(2875));e=R(c,E(3069),0);if(e.bGI.length<=0){L(d,E(3074));L(d,R(c,E(3071),0));L(d,E(1268));}else{L(d,E(2877));L(d, +e);L(d,E(3075));L(d,R(c,E(3071),0));L(d,E(1268));}if(!LC(Gn(c))){L(d,E(2969));L(d,R(c,E(2970),0));}if(R(c,E(608),0)!==null){L(d,E(3052));L(d,R(c,E(608),0));L(d,E(3053));}return Q(d);},Fai=a=>{Bru();return Dar;},Fei=(a,b,c,d,e)=>{let f,g,h,i;b=b;if(R(d,E(608),0)!==null){e=new JK;f=K(Bi,1);g=f.data;c=R(d,E(608),0);h=new S;T(h);H(H(H(h,E(3076)),c),E(3077));g[0]=Q(h);J2(e,f);Nk(b,e);}e=Gn(d);c=N6(e,b.bGM.bGN);CM();i=DQ(c,C6);c=R(d,E(3069),0);if(!c.bGI.length)c=null;BHk(b,B4(Cf(b),c),B4(Cf(b),R(d,E(3071),0)),i,null, +AAV(e));return By();},DFE=()=>{Dar=Bv(BB(Bi,[E(332),E(2892)]));},Beq=N(Bl),CVS=null,Brt=()=>{Brt=Z(Beq);DQn();},DvA=a=>{let b,c,d,e,f,g,h;Brt();b=BN(Bo(Beq));c=K(Bg,15);d=c.data;d[0]=BL();E3();d[1]=Fy;d[2]=Bd();d[3]=AHC();d[4]=Bc(E(2892));d[5]=CPC();d[6]=Bc(E(1922));d[7]=Ba(1,E(3069),E(2403));d[8]=Bc(E(2036));d[9]=Bd();e=new C0;f=new Ch;g=K(Bg,3);h=g.data;h[0]=Bc(E(3073));h[1]=Bd();h[2]=DI(Ba(1,E(3071),E(3078)));Cj(f,g);C3(e,f);d[10]=e;d[11]=Bc(E(652));d[12]=Bd();d[13]=L_();d[14]=BR();Cb(a,BT(b,c));},Cuv=()=> +{let a=new Beq();DvA(a);return a;},DPg=(a,b,c)=>{let d,e,f;d=new S;T(d);L(d,E(2875));e=R(c,E(3069),0);if(e.bGI.length>0){L(d,E(2877));L(d,e);L(d,E(1268));}f=R(c,E(3071),0);if(f!==null){L(d,E(3079));L(d,f);L(d,E(1268));}if(!LC(Gn(c))){L(d,E(2969));L(d,R(c,E(2970),0));}if(R(c,E(2245),0)!==null)L(d,E(2246));if(R(c,E(3059),0)!==null)L(d,E(3080));if(R(c,E(608),0)!==null){L(d,E(3052));L(d,R(c,E(608),0));L(d,E(3053));}return Q(d);},DGI=a=>{Brt();return CVS;},DJX=(a,b,c,d,e)=>{let f,g,h,i,j;b=b;if(R(d,E(608),0)!==null) +{e=new JK;f=K(Bi,1);g=f.data;c=R(d,E(608),0);h=new S;T(h);H(H(H(h,E(3076)),c),E(3077));g[0]=Q(h);J2(e,f);Nk(b,e);}e=R(d,E(3069),0);if(!e.bGI.length)e=null;h=Gn(d);i=N6(h,b.bGM.bGN);if(R(d,E(2245),0)===null)j=null;else{j=new FZ;c=DF(b.bGM,E(2248));FC();Gb(j,c,FI);j=Gj(j,R(d,E(2245),0));}h=AAV(h);CM();i=DQ(i,C6);BHk(b,B4(Cf(b),e),B4(Cf(b),R(d,E(3071),0)),i,j,h);return By();},DQn=()=>{CVS=Bv(BB(Bi,[E(332),E(842),E(2892)]));},BmH=N(Bl),Cbo=null,BdU=()=>{BdU=Z(BmH);Eqb();},EVR=a=>{let b,c,d;BdU();b=BN(Bo(BmH));c +=K(Bg,14);d=c.data;d[0]=BL();d[1]=Bc(E(2892));d[2]=Bd();d[3]=Bc(E(1922));d[4]=Ba(1,E(3069),E(3072));d[5]=Bc(E(2036));d[6]=Bd();d[7]=Bc(E(3073));d[8]=Bw();d[9]=Bc(E(3081));d[10]=Bw();d[11]=Ba(1,E(3071),E(566));d[12]=Bc(E(652));d[13]=BR();Cb(a,BT(b,c));},En7=()=>{let a=new BmH();EVR(a);return a;},ESf=(a,b,c)=>{let d;b=R(c,E(3069),0);c=R(c,E(3071),0);d=new S;T(d);H(H(H(H(H(d,E(3082)),b),E(3083)),c),E(3084));return Q(d);},E_w=a=>{BdU();return Cbo;},DGu=(a,b,c,d,e)=>{b=b;BHk(b,B4(Cf(b),R(d,E(3069),0)),B4(Cf(b),R(d, +E(3071),0)),null,null,null);return By();},Eqb=()=>{let b;b=K(Bi,1);b.data[0]=E(2892);Cbo=Bv(b);},BmL=N(Bl); +let Dos=null,A1l=()=>{A1l=Z(BmL);Fhx();},FaS=a=>{A1l();Cb(a,Fn0());},E1r=()=>{let a=new BmL();FaS(a);return a;},Fn0=()=>{let b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;A1l();b=BN(Bo(BmL));c=K(Bg,24);d=c.data;d[0]=BL();d[1]=AHC();d[2]=Bd();e=new C0;f=new Ch;g=K(Bg,4);h=g.data;h[0]=Bc(E(1922));i=new C0;j=new DD;k=K(Bg,2);l=k.data;l[0]=Bc(E(3037));l[1]=Ba(1,E(3085),E(3038));Eb(j,k);C3(i,j);h[1]=i;h[2]=Ba(1,E(3086),E(2403));h[3]=Bc(E(2036));Cj(f,g);C3(e,f);d[3]=e;d[4]=Bd();d[5]=Bc(E(1727));d[6]=Bd();d[7]=Bc(E(2892));d[8]= +Bd();d[9]=Bc(E(1922));d[10]=Ba(1,E(3069),E(2403));d[11]=Bc(E(2036));d[12]=Bd();d[13]=LZ(1,E(3070));d[14]=Bd();d[15]=Bc(E(1922));d[16]=Ba(1,E(3071),E(3072));d[17]=Bc(E(2036));d[18]=Bd();i=new C0;j=new Ch;g=K(Bg,3);h=g.data;h[0]=Bc(E(3073));h[1]=Bd();m=new C0;f=new Ch;k=K(Bg,3);l=k.data;l[0]=Bc(E(1922));n=new C0;o=new DD;p=K(Bg,2);q=p.data;q[0]=Bc(E(3037));q[1]=Ba(1,E(3087),E(3038));Eb(o,p);C3(n,o);l[1]=n;l[2]=Bc(E(2036));Cj(f,k);C3(m,f);h[2]=m;Cj(j,g);C3(i,j);d[19]=i;d[20]=Bc(E(652));d[21]=Bd();d[22]=L_();d[23] +=BR();return BT(b,c);},FaE=(a,b,c)=>{let d,e,f;d=new S;T(d);L(d,E(3088));e=R(c,E(3069),0);if(e.bGI.length<=0){L(d,E(3074));L(d,R(c,E(3071),0));L(d,E(1268));}else{L(d,E(2877));L(d,e);L(d,E(3075));L(d,R(c,E(3071),0));L(d,E(1268));}f=R(c,E(3087),0);if(f!==null){L(d,E(3089));L(d,f);L(d,E(1762));}A5o(d,c,E(3086),E(3090));if(!LC(Gn(c))){L(d,E(2969));L(d,R(c,E(2970),0));}if(R(c,E(608),0)!==null){L(d,E(3052));L(d,R(c,E(608),0));L(d,E(3053));}return Q(d);},Eed=a=>{A1l();return Dos;},Edz=(a,b,c,d,e)=>{let f,g,h,i;b=b;if +(R(d,E(608),0)!==null){e=new JK;f=K(Bi,1);g=f.data;h=R(d,E(608),0);i=new S;T(i);H(H(H(i,E(3076)),h),E(3077));g[0]=Q(i);J2(e,f);Nk(b,e);}c=N6(Gn(d),b.bGM.bGN);CM();c=DQ(c,C6);i=R(d,E(3069),0);if(!i.bGI.length)i=null;e=AIE(b,d,E(3086));d=AIE(b,d,E(3071));return CXg(b,e,B4(Cf(b),i),d,c);},Fhx=()=>{Dos=Bv(BB(Bi,[E(332),E(864),E(1727),E(1729)]));},BmM=N(Bl),Ckx=null,A1k=()=>{A1k=Z(BmM);FuY();},EIh=a=>{A1k();Cb(a,E3h());},DpY=()=>{let a=new BmM();EIh(a);return a;},E3h=()=>{let b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;A1k();b +=BN(Bo(BmM));c=K(Bg,18);d=c.data;d[0]=BL();d[1]=AHC();d[2]=Bd();e=new C0;f=new Ch;g=K(Bg,4);h=g.data;h[0]=Bc(E(1922));i=new C0;j=new DD;k=K(Bg,2);l=k.data;l[0]=Bc(E(3037));l[1]=Ba(1,E(3085),E(3038));Eb(j,k);C3(i,j);h[1]=i;h[2]=Ba(1,E(3086),E(2403));h[3]=Bc(E(2036));Cj(f,g);C3(e,f);d[3]=e;d[4]=Bd();d[5]=Bc(E(1727));d[6]=Bd();d[7]=Bc(E(2892));d[8]=Bd();d[9]=Bc(E(1922));d[10]=Ba(1,E(3069),E(2403));d[11]=Bc(E(2036));d[12]=Bd();m=new C0;f=new Ch;g=K(Bg,3);h=g.data;h[0]=Bc(E(3073));h[1]=Bd();i=new C0;j=new Ch;k=K(Bg, +4);l=k.data;l[0]=Bc(E(1922));n=new C0;o=new DD;p=K(Bg,2);q=p.data;q[0]=Bc(E(3037));q[1]=Ba(1,E(3087),E(3038));Eb(o,p);C3(n,o);l[1]=n;l[2]=Ba(1,E(3071),E(2403));l[3]=Bc(E(2036));Cj(j,k);C3(i,j);h[2]=i;Cj(f,g);C3(m,f);d[13]=m;d[14]=Bc(E(652));d[15]=Bd();d[16]=L_();d[17]=BR();return BT(b,c);},DJH=(a,b,c)=>{let d,e;d=new S;T(d);L(d,E(3088));e=R(c,E(3069),0);if(e.bGI.length>0){L(d,E(2877));L(d,e);L(d,E(1268));}A5o(d,c,E(3071),E(3091));A5o(d,c,E(3086),E(3090));if(!LC(Gn(c))){L(d,E(2969));L(d,R(c,E(2970),0));}if(R(c, +E(608),0)!==null){L(d,E(3052));L(d,R(c,E(608),0));L(d,E(3053));}return Q(d);},Fne=a=>{A1k();return Ckx;},DLP=(a,b,c,d,e)=>{let f,g,h,i;b=b;if(R(d,E(608),0)!==null){e=new JK;f=K(Bi,1);g=f.data;c=R(d,E(608),0);h=new S;T(h);H(H(H(h,E(3076)),c),E(3077));g[0]=Q(h);J2(e,f);Nk(b,e);}c=N6(Gn(d),b.bGM.bGN);i=R(d,E(3069),0);if(!i.bGI.length)i=null;e=AIE(b,d,E(3086));d=AIE(b,d,E(3071));CM();c=DQ(c,C6);return CXg(b,e,B4(Cf(b),i),d,c);},FuY=()=>{Ckx=Bv(BB(Bi,[E(332),E(864),E(1727),E(1729)]));},BAL=N(Bl),C5Z=null,Bhw=()=> +{Bhw=Z(BAL);DBP();},DDz=a=>{let b,c,d,e,f,g,h,i,j,k,l;Bhw();b=BN(Bo(BAL));c=K(Bg,7);d=c.data;d[0]=BL();d[1]=Bc(E(1727));d[2]=Bd();e=new C0;f=new Ch;g=K(Bg,4);h=g.data;h[0]=Bc(E(1922));i=new C0;j=new DD;k=K(Bg,2);l=k.data;l[0]=Bc(E(3037));l[1]=Ba(1,E(3087),E(3038));Eb(j,k);C3(i,j);h[1]=i;h[2]=Ba(1,E(3071),E(2403));h[3]=Bc(E(2036));Cj(f,g);C3(e,f);d[3]=e;d[4]=Bd();d[5]=Bc(E(652));d[6]=BR();Cb(a,BT(b,c));},C9s=()=>{let a=new BAL();DDz(a);return a;},DXO=(a,b,c)=>{let d,e,f;d=new S;T(d);L(d,E(2890));e=R(c,E(3071), +0);if(e!==null&&!CQ(e)){L(d,E(2312));L(d,e);L(d,E(1268));}f=R(c,E(3087),0);if(f!==null){L(d,E(3092));L(d,f);L(d,E(1762));}return Q(d);},DPE=a=>{Bhw();return C5Z;},EE6=(a,b,c,d,e)=>{b=b;return ChD(b,AIE(b,d,E(3071)));},DBP=()=>{let b;b=K(Bi,1);b.data[0]=E(1727);C5Z=Bv(b);},Bwz=N(Bl),CIl=null,BkX=()=>{BkX=Z(Bwz);ESn();},FmT=a=>{let b,c,d;BkX();b=BN(Bo(Bwz));c=K(Bg,8);d=c.data;d[0]=BL();d[1]=Bc(E(1727));d[2]=Bw();d[3]=Bc(E(3081));d[4]=Bw();d[5]=Ba(1,E(3071),E(566));d[6]=Bc(E(652));d[7]=BR();Cb(a,BT(b,c));},ERK +=()=>{let a=new Bwz();FmT(a);return a;},EJc=(a,b,c)=>{b=R(c,E(3071),0);c=new S;T(c);H(H(H(c,E(3093)),b),E(3094));return Q(c);},EIT=a=>{BkX();return CIl;},EvK=(a,b,c,d,e)=>{b=b;c=B4(Cf(b),R(d,E(3071),0));return ChD(b,ADY(FF(),c));},ESn=()=>{let b;b=K(Bi,1);b.data[0]=E(1727);CIl=Bv(b);},BjG=N(Bl),CaA=null,Bos=()=>{Bos=Z(BjG);Fsi();},DEd=a=>{let b,c,d;Bos();b=BN(Bo(BjG));c=K(Bg,8);d=c.data;d[0]=BL();d[1]=Bc(E(581));d[2]=Bd();d[3]=Bc(E(2892));d[4]=Bc(E(652));d[5]=Bd();d[6]=L_();d[7]=BR();Cb(a,BT(b,c));},E5V=()=> +{let a=new BjG();DEd(a);return a;},EC3=(a,b,c)=>{let d;d=new S;T(d);L(d,E(3095));if(!LC(Gn(c))){L(d,E(2969));L(d,R(c,E(2970),0));}return Q(d);},E5H=a=>{Bos();return CaA;},Etk=(a,b,c,d,e)=>{let f,g,h;b=b;c=N6(Gn(d),b.bGM.bGN);if(!(EF(b) instanceof AUk))b=B5(E(3096));else{d=EF(b);e=Kq(b);d.cg0=1;if(d.bNL===null){f=new AYm;g=d.b8h;h=FF();HW();BzC(f,g,h,Lu,null,FF(),d.b6C);d.bNL=f;}AZJ(d.bNL,e,c);Cru(d.bRK,e);Lb(b,FF());Rn(b,(EF(b)).cWS);b=By();}return b;},Fsi=()=>{CaA=Bv(BB(Bi,[E(581),E(2895)]));},Bx9=N(Bl),CTk +=null,BoP=()=>{BoP=Z(Bx9);ECQ();},DRU=a=>{let b,c,d;BoP();b=BN(Bo(Bx9));c=K(Bg,10);d=c.data;d[0]=BL();d[1]=AHC();d[2]=Bc(E(3097));d[3]=Bd();d[4]=Bc(E(1922));d[5]=Ba(1,E(3069),E(2403));d[6]=Bc(E(2036));d[7]=Bd();d[8]=L_();d[9]=BR();Cb(a,BT(b,c));}; +let EuJ=()=>{let a=new Bx9();DRU(a);return a;},DCj=(a,b,c)=>{let d,e;d=new S;T(d);L(d,E(3098));e=R(c,E(3069),0);if(e.bGI.length>0){L(d,E(2877));L(d,e);L(d,E(1268));}if(!LC(Gn(c))){L(d,E(2969));L(d,R(c,E(2970),0));}if(R(c,E(608),0)!==null){L(d,E(3052));L(d,R(c,E(608),0));L(d,E(3053));}return Q(d);},EbW=a=>{BoP();return CTk;},DP8=(a,b,c,d,e)=>{let f,g,h,i,j,k;b=b;e=N6(Gn(d),b.bGM.bGN);if(R(d,E(608),0)!==null){f=new JK;g=K(Bi,1);h=g.data;c=R(d,E(608),0);i=new S;T(i);H(H(H(i,E(3076)),c),E(3077));h[0]=Q(i);J2(f, +g);Nk(b,f);}c=R(d,E(3069),0);if(!c.bGI.length)c=null;j=B4(Cf(b),c);RV(b);c=new Bfs;k=b.bJg.bJW;d=EF(b);f=Kq(b);AS6(c);c.b8v=Bk();c.c6N=FF();c.cuv=B$(f);c.cNK=d;c.c7i=j;c.ck1=k;c.cLM=e;(EF(b)).JX(c);Lb(b,FF());Rn(b,c);return By();},ECQ=()=>{CTk=Bv(BB(Bi,[E(332),E(3097)]));},BlF=N(Bl),DnG=null,Bcr=()=>{Bcr=Z(BlF);E83();},EQl=a=>{let b,c,d;Bcr();b=BN(Bo(BlF));c=K(Bg,8);d=c.data;d[0]=BL();d[1]=Bc(E(3099));d[2]=Bd();d[3]=Bc(E(1922));d[4]=Ba(1,E(3069),E(2403));d[5]=Bc(E(2036));d[6]=Bd();d[7]=BR();Cb(a,BT(b,c));},EzT +=()=>{let a=new BlF();EQl(a);return a;},DSR=(a,b,c)=>{let d;d=R(c,E(3069),0);if(d.bGI.length){b=new S;T(b);H(H(H(b,E(3100)),d),E(3101));return Q(b);}return E(3102);},Fru=a=>{Bcr();return DnG;},FlA=(a,b,c,d,e)=>{let f;b=b;c=R(d,E(3069),0);if(!c.bGI.length)c=null;c=B4(Cf(b),c);if(!(EF(b) instanceof Bfs))b=B5(E(3103));else{d=EF(b);e=Kq(b);f=d.b2L;if(f!==null)AZJ(f,e,null);e=BXA(d.ck1,ADY(FF(),c),c,null,ADY(FF(),c),null);d.b2L=e;U(d.b8v,e);Lb(b,FF());b=By();}return b;},E83=()=>{let b;b=K(Bi,1);b.data[0]=E(3099);DnG +=Bv(b);},Bmk=N(Bl),Cqv=null,Bl4=()=>{Bl4=Z(Bmk);E7z();},EuT=a=>{let b,c,d;Bl4();b=BN(Bo(Bmk));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Bc(E(3104));d[2]=Bd();d[3]=L_();d[4]=BR();Cb(a,BT(b,c));},EyR=()=>{let a=new Bmk();EuT(a);return a;},DZ5=(a,b,c)=>{let d;d=new S;T(d);L(d,E(3105));if(!LC(Gn(c))){L(d,E(2969));L(d,R(c,E(2970),0));}return Q(d);},EXH=a=>{Bl4();return Cqv;},DIk=(a,b,c,d,e)=>{b=b;c=N6(Gn(d),b.bGM.bGN);if(!(EF(b) instanceof Bfs))b=B5(E(3103));else{d=EF(b);e=Kq(b);d.cXt=c;d=d.b2L;if(d!==null)AZJ(d,e,c);Lb(b, +FF());Rn(b,(EF(b)).cNK);b=By();}return b;},E7z=()=>{let b;b=K(Bi,1);b.data[0]=E(3104);Cqv=Bv(b);},BzA=N(Bl),CK8=null,A_z=()=>{A_z=Z(BzA);DDI();},Etv=a=>{A_z();Cb(a,ETm());},E1v=()=>{let a=new BzA();Etv(a);return a;},ETm=()=>{let b,c,d,e,f,g,h,i,j,k,l,m;A_z();b=BN(Bo(BzA));c=K(Bg,12);d=c.data;d[0]=BL();d[1]=Bc(E(3047));d[2]=Bd();d[3]=Bc(E(3106));d[4]=Bd();e=new DD;f=K(Bg,4);g=f.data;h=new Ch;i=K(Bg,9);j=i.data;j[0]=Ba(1,E(3107),E(3108));j[1]=Bd();j[2]=LZ(1,E(3070));j[3]=Bd();j[4]=Ba(1,E(3109),E(3078));j[5]=Bd();j[6] +=LZ(1,E(3110));j[7]=Bd();j[8]=Ba(1,E(3111),E(3078));Cj(h,i);g[0]=h;h=new Ch;i=K(Bg,5);j=i.data;j[0]=Ba(1,E(3112),E(3108));j[1]=Bd();j[2]=LZ(1,E(3110));j[3]=Bd();j[4]=Ba(1,E(3113),E(3078));Cj(h,i);g[1]=h;h=new Ch;i=K(Bg,5);j=i.data;j[0]=Ba(1,E(3114),E(3108));j[1]=Bd();j[2]=LZ(1,E(3070));j[3]=Bd();j[4]=Ba(1,E(3115),E(3078));Cj(h,i);g[2]=h;g[3]=DI(Ba(1,E(3116),E(3117)));Eb(e,f);d[5]=e;d[6]=Bd();k=new C0;l=new Ch;f=K(Bg,3);j=f.data;m=new DD;g=K(Bg,2);i=g.data;i[0]=Bc(E(3037));i[1]=Ba(1,E(3118),E(3038));Eb(m,g);j[0] +=m;j[1]=Bd();e=new DD;g=K(Bg,2);i=g.data;i[0]=Ba(1,E(470),E(566));i[1]=Bc(E(14));Eb(e,g);j[2]=e;Cj(l,f);C3(k,l);d[7]=k;d[8]=Bc(E(652));d[9]=Bd();d[10]=L_();d[11]=BR();return BT(b,c);},FiA=(a,b,c)=>{let d,e,f,g,h,i;d=new S;T(d);L(d,E(3119));e=Ck(c,E(3069),0);if(e!==null&&!CQ(e)){L(d,E(3120));L(d,e);L(d,E(1268));}f=Ck(c,E(3071),0);if(f!==null){L(d,E(3121));L(d,f);L(d,E(1268));}g=Ck(c,E(3122),0);if(g!==null){L(d,E(3123));L(d,g);L(d,E(1268));}h=R(c,E(3118),0);if(h!==null){L(d,E(3124));L(d,h);L(d,E(1762));}i=R(c, +E(470),0);if(i!==null&&!CQ(i)){L(d,E(2888));L(d,i);L(d,E(1268));}if(!LC(Gn(c))){L(d,E(2969));L(d,R(c,E(2970),0));}return Q(d);},DWS=a=>{A_z();return CK8;},Eks=(a,b,c,d,e)=>{let f,g,h,i;b=b;c=B4(Cf(b),Ck(d,E(3069),0));f=B4(Cf(b),Ck(d,E(3071),0));g=B4(Cf(b),Ck(d,E(3122),0));h=R(d,E(3118),0);if(h===null)i=A9$();else{i=b.bGM;i=Bsg(i,h,BwQ(i));}h=Gn(d);return C69(b,c,f,g,B4(Cf(b),R(d,E(470),0)),i,h);},DDI=()=>{CK8=Bv(BB(Bi,[E(3047),E(3125)]));}; +function AGl(){let a=this;F.call(a);a.bVu=null;a.ckn=null;a.cUa=null;a.bYk=null;} +let Cq$=0,BCv=()=>{BCv=Z(AGl);E1h();},B3l=(a,b,c,d,e)=>{let f;BCv();a:{if(Df()&&!Cq$){f=b;if(!BO(A7s(f),E(1174)))break a;if(!Dr(A7s(f),E(1497)))break a;}a.ckn=c;a.bVu=b;a.cUa=d;a.bYk=e;return;}b=new C4;X(b);J(b);},DX$=(a,b)=>{let c,d;b=AAL(b,a.ckn);c=DB(b);if(c!==null){d=a.bVu;c=C8(c);if(G7(d,c)){if(Dq(b)!=1){c=a.cUa;HA();if(c===A$q)d=L9(b);else if(c===G0)d=C8(L9(b));else{b=new BP;X(b);J(b);}if(!G7(a.bYk,d)){F5();return Oo;}return Dwr(a);}F5();return Oo;}F5();return KS;}F5();return KS;},DPf=(a,b,c,d)=>{return a.Kk(b, +AAL(c,a.ckn));},Eax=(a,b)=>{return a.FJ(AAL(b,a.ckn));},Dwr=a=>{F5();return PY;},Ejh=(a,b)=>{Jx();return b!==JB?0:1;},EDj=a=>{return BWM(a.bVu);},E1h=()=>{Cq$=0;},Bnw=N(AGl),CzF=null,CiB=null,B7Y=null,ARm=()=>{ARm=Z(Bnw);FvN();},D46=a=>{let b,c,d,e,f;ARm();b=BN(Bo(Bnw));c=K(Bg,8);d=c.data;d[0]=BL();d[1]=Bc(E(3047));d[2]=Bd();d[3]=Bc(E(3106));d[4]=Bd();d[5]=Bc(E(1922));d[6]=Ba(1,E(3116),E(566));d[7]=BR();e=BT(b,c);HE();f=Kl;HA();B3l(a,e,f,G0,CiB);},Em2=()=>{let a=new Bnw();D46(a);return a;},Dws=(a,b)=>{let c, +d,e,f;b=Nn(b);c=a.bVu;d=ES((DB(b)).bGP);d=Ei(c,d);e=a.bYk;f=(L9(b)).bGP;c=Ei(e,f);if(d!==null&&c!==null){f=new S;T(f);L(f,E(3126));BE(f,Dq(b));L(f,Dq(b)!=1?E(2253):E(2254));L(f,E(3127));b=Um(b);a:{while(true){if(!b.dY())break a;e=b.dZ();ARm();if(EZ(DX(B7Y,e.bGP,0)))break;}L(f,E(3128));}return Q(f);}return E(3119);},E9K=a=>{ARm();return CzF;},DOE=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o;b=b;c=Nn(c);d=a.bVu;e=ES((DB(c)).bGP);e=Ei(d,e);f=a.bYk;g=(L9(c)).bGP;d=Ei(f,g);e=R(e,E(3116),0);e=B4(Cf(b),e);g=Um(HI(c,1,1));while +(g.dY()){e=Us(e,(g.dZ()).bGP);}c=R(d,E(3116),0);if(!Bs0(c))e=Us(e,c);f=Lu;h=A9$();i=Lu;ARm();j=B7Y;k=Bk();l=C0X(e.bMJ,e.bSH,e.bNJ,e.bMn);d=k;U(d,l);g=Br(e.bIc);while(Bq(g)){m=Bm(g);n=DX(j,m,0);if(!EZ(n))U(l.bIc,m);else{o=m.rL(0,Di$(n));U(l.bIc,o);m=m.rL(B$2(n),m.bL());l=C0X(e.bMJ,e.bSH,e.bNJ,e.bMn);U(d,l);U(l.bIc,m);}}if(k.dV()!=2)d=f;else{e=k.cf(0);d=k.cf(1);}AJi();return C69(b,e,d,f,i,h,BTf);},FvN=()=>{let b,c,d;CzF=Bv(BB(Bi,[E(3047),E(3125)]));b=new Ch;c=K(Bg,4);d=c.data;d[0]=Ba(1,E(3116),E(566));d[1]=Bc(E(2036));d[2] +=Bc(E(652));d[3]=BR();Cj(b,c);CiB=b;B7Y=Dm(E(3129));},Bpg=N(Bl),CbG=null,AM8=()=>{AM8=Z(Bpg);EHH();},Eec=a=>{AM8();Cb(a,EUp());},EMQ=()=>{let a=new Bpg();Eec(a);return a;},EUp=()=>{let b,c,d,e,f,g,h,i,j,k,l;AM8();b=BN(Bo(Bpg));c=K(Bg,14);d=c.data;d[0]=BL();e=new C0;f=new Ch;g=K(Bg,4);h=g.data;h[0]=Bc(E(1922));i=new C0;j=new DD;k=K(Bg,2);l=k.data;l[0]=Bc(E(3037));l[1]=Ba(1,E(3085),E(3038));Eb(j,k);C3(i,j);h[1]=i;h[2]=Ba(1,E(3086),E(2403));h[3]=Bc(E(2036));Cj(f,g);C3(e,f);d[1]=e;d[2]=Bd();d[3]=Bc(E(3130));d[4] +=Bd();d[5]=Bc(E(82));d[6]=Ba(1,E(470),E(2403));d[7]=Bc(E(939));d[8]=Bd();d[9]=L_();d[10]=Bd();e=new C0;i=new Ch;g=K(Bg,4);h=g.data;h[0]=Bc(E(1922));j=new C0;f=new DD;k=K(Bg,2);l=k.data;l[0]=Bc(E(3037));l[1]=Ba(1,E(3131),E(3038));Eb(f,k);C3(j,f);h[1]=j;h[2]=Ba(1,E(3132),E(2403));h[3]=Bc(E(2036));Cj(i,g);C3(e,i);d[11]=e;d[12]=Bd();d[13]=BR();return BT(b,c);},FjE=(a,b,c)=>{let d,e,f;d=new S;T(d);L(d,E(3133));L(d,R(c,E(470),0));L(d,E(3134));e=Gn(c);if(!LC(e)){L(d,E(2969));L(d,R(c,E(2970),0));f=XV(e);K0();if(f!== +Vh){L(d,E(3051));L(d,FS(f.bV5));L(d,E(865));}}A5o(d,c,E(3086),E(3090));A5o(d,c,E(3132),E(3135));return Q(d);},A5o=(b,c,d,e)=>{let f,g,h;AM8();f=R(c,d,0);g=new S;T(g);H(H(g,d),E(3136));g=R(c,Q(g),0);h=!(f!==null&&!CQ(f))?0:1;if(!h&&g===null)return;L(b,E(50));L(b,e);L(b,E(3137));if(h){L(b,E(2366));L(b,f);L(b,E(1268));}if(g!==null){L(b,E(3138));L(b,g);L(b,E(1762));}},AIE=(b,c,d)=>{let e,f,g;AM8();e=new S;T(e);H(H(e,d),E(3136));e=R(c,Q(e),0);if(e===null)e=null;else{f=b.bGM;e=Bsg(f,e,BwQ(f));}g=e!==null?AM6(e):FF();f +=R(c,d,0);return ADY(g,B4(Cf(b),f));},EjI=a=>{AM8();return CbG;},EYg=(a,b,c,d,e)=>{let f;b=b;c=Gn(d);e=XV(c);f=AAV(c);return Df$(b,B4(Cf(b),R(d,E(470),0)),e,AIE(b,d,E(3086)),AIE(b,d,E(3132)),f);},EHH=()=>{CbG=Bv(BB(Bi,[E(864),E(3130)]));},BAt=N(AGl),CYy=null,DeM=null,BzE=()=>{BzE=Z(BAt);EPI();},DGV=a=>{let b,c,d,e,f;BzE();b=BN(Bo(BAt));c=K(Bg,8);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(3130));d[3]=Bd();d[4]=Bc(E(82));d[5]=Bd();d[6]=Ba(1,E(565),E(566));d[7]=BR();e=BT(b,c);HE();f=Kl;HA();B3l(a,e,f,G0,DeM);},DYh +=()=>{let a=new BAt();DGV(a);return a;},Flf=(a,b)=>{let c,d,e,f,g;b=JL(b);c=a.bVu;d=(C8(DB(b))).bGP;e=Ei(c,d);f=a.bYk;c=(L9(b)).bGP;d=Ei(f,c);if(e!==null&&d!==null){c=new S;T(c);L(c,E(3139));BE(c,Dq(b));L(c,Dq(b)!=1?E(2253):E(2254));L(c,E(3140));f=Gn(d);if(!LC(f)){L(c,E(2969));L(c,R(d,E(2970),0));g=XV(f);K0();if(g!==Vh){L(c,E(3051));L(c,FS(g.bV5));L(c,E(865));}}return Q(c);}return E(3141);},D2Y=a=>{BzE();return CYy;},EvX=(a,b,c)=>{let d,e,f,g,h;b=b;c=JL(c);d=a.bVu;e=(C8(DB(c))).bGP;f=Ei(d,e);g=a.bYk;d=(L9(c)).bGP;d +=Ei(g,d);e=Gn(d);g=AAV(e);h=XV(e);c=A31(ATB(c,R(f,E(565),0),0),R(d,E(849),0));f=FF();e=FF();return Df$(b,Ig(c),h,f,e,g);},EPI=()=>{let b,c,d;b=K(Bi,1);b.data[0]=E(3130);CYy=Bv(b);c=new Ch;b=K(Bg,5);d=b.data;d[0]=Ba(1,E(849),E(566));d[1]=Bc(E(939));d[2]=Bd();d[3]=L_();d[4]=BR();Cj(c,b);DeM=c;},BsO=N(Bl),CX3=null,ByN=()=>{ByN=Z(BsO);Fpp();},Ex2=a=>{let b,c,d,e,f,g,h;ByN();b=BN(Bo(BsO));c=K(Bg,12);d=c.data;d[0]=BL();d[1]=AHC();d[2]=Bc(E(3106));d[3]=Bd();d[4]=Bc(E(1922));d[5]=Ba(1,E(3069),E(2403));d[6]=Bc(E(2036));e +=new C0;f=new Ch;g=K(Bg,4);h=g.data;h[0]=Bd();h[1]=LZ(1,E(3070));h[2]=Bd();h[3]=Ba(1,E(3142),E(3078));Cj(f,g);C3(e,f);d[7]=e;d[8]=Bc(E(652));d[9]=Bd();d[10]=L_();d[11]=BR();Cb(a,BT(b,c));},DXS=()=>{let a=new BsO();Ex2(a);return a;},Dvq=(a,b,c)=>{let d,e,f;d=new S;T(d);L(d,E(3143));e=R(c,E(3069),0);if(e.bGI.length>0){L(d,E(3144));L(d,e);L(d,E(1268));}f=R(c,E(3142),0);if(f!==null){L(d,E(3145));L(d,f);L(d,E(1268));}if(!LC(Gn(c))){L(d,E(2969));L(d,R(c,E(2970),0));}if(R(c,E(608),0)!==null){L(d,E(3052));L(d,R(c,E(608), +0));L(d,E(3053));}return Q(d);},ENh=a=>{ByN();return CX3;}; +let FnU=(a,b,c,d,e)=>{let f,g,h,i,j,k,l;b=b;if(R(d,E(608),0)!==null){e=new JK;f=K(Bi,1);g=f.data;c=R(d,E(608),0);h=new S;T(h);H(H(H(h,E(3076)),c),E(3077));g[0]=Q(h);J2(e,f);Nk(b,e);}c=N6(Gn(d),b.bGM.bGN);CM();e=DQ(c,C6);h=B4(Cf(b),R(d,E(3069),0));c=B4(Cf(b),R(d,E(3142),0));RV(b);d=new AKt;i=b.bJg.bJW;j=EF(b);k=Kq(b);l=B1(b.bGM);AS6(d);d.bYb=BmX();d.cAL=0;d.cI0=0;d.b6I=FF();d.cjI=Lu;d.cfD=FF();d.cfC=FF();d.cZ3=j;d.cLZ=B$(h);d.cTe=B$(k);d.cJl=B$(c);d.cEJ=i;d.c53=l;d.cOv=e;(EF(b)).JX(d);Rn(b,d);return By();},Fpp +=()=>{CX3=Bv(BB(Bi,[E(332),E(3106)]));},Bs4=N(Bl),CZZ=null,BqB=()=>{BqB=Z(Bs4);Ftb();},D5C=a=>{let b,c,d,e,f,g,h,i,j;BqB();b=BN(Bo(Bs4));c=K(Bg,6);d=c.data;d[0]=BL();e=new DD;f=K(Bg,2);g=f.data;h=new Ch;i=K(Bg,3);j=i.data;j[0]=Bc(E(581));j[1]=Bd();j[2]=Bc(E(3106));Cj(h,i);g[0]=h;h=new Ch;i=K(Bg,3);j=i.data;j[0]=Bc(E(3106));j[1]=Bd();j[2]=Bc(E(581));Cj(h,i);g[1]=h;Eb(e,f);d[1]=e;d[2]=Bd();d[3]=DI(Ba(1,E(3122),E(3078)));d[4]=Bc(E(652));d[5]=BR();Cb(a,BT(b,c));},D4g=()=>{let a=new Bs4();D5C(a);return a;},D19=(a, +b,c)=>{let d,e;d=new S;T(d);L(d,E(3146));e=R(c,E(3122),0);if(e!==null){L(d,E(3123));L(d,e);L(d,E(1268));}return Q(d);},EvI=a=>{BqB();return CZZ;},EXL=(a,b,c,d,e)=>{b=b;c=B4(Cf(b),R(d,E(3122),0));if(!(EF(b) instanceof AKt))b=B5(E(3147));else{d=EF(b);e=Kq(b);if(!d.cKa){d.cfD=e;d.cfC=e;}d.cI0=1;d=EF(b);d.b6I=ADY(d.b6I,B$(c));Lb(b,FF());Rn(b,(EF(b)).cZ3);b=By();}return b;},Ftb=()=>{CZZ=Bv(BB(Bi,[E(581),E(3148),E(3106),E(3149)]));},Bje=N(Bl),CY1=null,Bpt=()=>{Bpt=Z(Bje);Fov();},EVz=a=>{let b,c,d;Bpt();b=BN(Bo(Bje));c +=K(Bg,6);d=c.data;d[0]=BL();d[1]=Bc(E(3150));d[2]=Bc(E(652));d[3]=Bd();d[4]=L_();d[5]=BR();Cb(a,BT(b,c));},Fg4=()=>{let a=new Bje();EVz(a);return a;},Esd=(a,b,c)=>{let d;d=new S;T(d);L(d,E(3151));if(!LC(Gn(c))){L(d,E(2969));L(d,R(c,E(2970),0));}return Q(d);},Edy=a=>{Bpt();return CY1;},DCV=(a,b,c,d,e)=>{let f,g;b=b;c=N6(Gn(d),b.bGM.bGN);RV(b);d=new Bcj;e=EF(b);f=Kq(b);g=b.bJg.bJW;AS6(d);d.b7v=Bk();AHn();d.ctZ=AXr;d.cza=0;d.cYT=e;d.c1c=c;d.cYE=B$(f);d.c0L=g;d.chf=g;c=d.b7v;e=BmX();U(c,e);(EF(b)).JX(d);Lb(b,FF());Rn(b, +d);return By();},Fov=()=>{let b;b=K(Bi,1);b.data[0]=E(3150);CY1=Bv(b);},Bkk=N(Bl),Ckl=null,Bh8=()=>{Bh8=Z(Bkk);E8$();},FcP=a=>{let b,c,d;Bh8();b=BN(Bo(Bkk));c=K(Bg,6);d=c.data;d[0]=BL();d[1]=Bc(E(3150));d[2]=Bd();d[3]=Bc(E(3152));d[4]=Bc(E(652));d[5]=BR();Cb(a,BT(b,c));},EDZ=()=>{let a=new Bkk();FcP(a);return a;},EBa=(a,b,c)=>{return E(3153);},D6M=a=>{Bh8();return Ckl;},EEK=(a,b,c,d,e)=>{b=b;if(!(EF(b) instanceof Bcj))b=B5(E(3154));else{c=EF(b);CFR(c,Kq(b),0);Lb(b,FF());c.chf=b.bJg.bJW;b=c.b7v;c=BmX();U(b,c);b +=By();}return b;},E8$=()=>{Ckl=Bv(BB(Bi,[E(3150),E(3155)]));},BkP=N(Bl),CK9=null,Bjf=()=>{Bjf=Z(BkP);D6u();},Ek6=a=>{let b,c,d,e,f,g,h,i,j,k;Bjf();b=BN(Bo(BkP));c=K(Bg,6);d=c.data;d[0]=BL();e=new DD;f=K(Bg,3);g=f.data;h=new Ch;i=K(Bg,3);j=i.data;j[0]=Bc(E(581));j[1]=Bd();j[2]=Bc(E(3150));Cj(h,i);g[0]=h;h=new Ch;j=K(Bg,3);i=j.data;i[0]=Bc(E(3150));i[1]=Bd();i[2]=Bc(E(581));Cj(h,j);g[1]=h;k=new Ch;i=K(Bg,3);j=i.data;j[0]=Bc(E(581));j[1]=Bd();j[2]=Bc(E(3156));Cj(k,i);g[2]=k;Sf(e,E(2352),f);d[1]=e;d[2]=Bd();d[3] +=Ba(1,E(470),E(3157));d[4]=Bc(E(652));d[5]=BR();Cb(a,BT(b,c));},Fna=()=>{let a=new BkP();Ek6(a);return a;},DRA=(a,b,c)=>{let d,e;d=new S;T(d);if(!CB(R(c,E(2352),0),E(3156)))L(d,E(3158));else L(d,E(3159));e=R(c,E(470),0);if(e!==null){L(d,E(2312));L(d,B_(e,1,e.bGI.length-1|0));L(d,E(1268));}return Q(d);},D3R=a=>{Bjf();return CK9;},D8$=(a,b,c,d,e)=>{let f;b=b;if(!CB(R(d,E(2352),0),E(3156))){AHn();c=AXr;}else{AHn();c=ByP;}d=R(d,E(470),0);if(!(EF(b) instanceof Bcj))b=B5(E(3154));else{e=EF(b);f=b.bJg.bJW;e.ctZ=c;e.cXq +=d;e.chf=f;CFR(e,Kq(b),1);Lb(b,FF());Rn(b,e.cYT);b=By();}return b;},D6u=()=>{CK9=Bv(BB(Bi,[E(581),E(3160),E(3161),E(3150),E(3162)]));},BlB=N(Bl),DdX=null,Bhy=()=>{Bhy=Z(BlB);E9g();},FuT=a=>{let b,c,d;Bhy();b=BN(Bo(BlB));c=K(Bg,4);d=c.data;d[0]=BL();d[1]=Bc(E(3163));d[2]=Bc(E(652));d[3]=BR();Cb(a,BT(b,c));},Dvu=()=>{let a=new BlB();FuT(a);return a;},Fni=(a,b,c)=>{return E(3164);},Dut=a=>{Bhy();return DdX;},Eu6=(a,b,c,d,e)=>{let f,g,h;b=b;c=new BbZ;e=EF(b);f=Kq(b);g=b.bJg.bJW;d=null;h=Bk();c.b$5=h;c.cXF=e;c.cGW +=g;c.cRT=d;d=AQc(g);U(h,d);c.cY4=B$(f);Lb(b,FF());(EF(b)).JX(c);Rn(b,c);return By();},E9g=()=>{let b;b=K(Bi,1);b.data[0]=E(3163);DdX=Bv(b);},Bjy=N(Bl),CCJ=null,BuJ=()=>{BuJ=Z(Bjy);Exq();}; +let DPs=a=>{let b,c,d;BuJ();b=BN(Bo(Bjy));c=K(Bg,6);d=c.data;d[0]=BL();d[1]=Bc(E(3163));d[2]=Bd();d[3]=Bc(E(3152));d[4]=Bc(E(652));d[5]=BR();Cb(a,BT(b,c));},DPV=()=>{let a=new Bjy();DPs(a);return a;},E0V=(a,b,c)=>{return E(3165);},E7Q=a=>{BuJ();return CCJ;},D7N=(a,b,c,d,e)=>{b=b;if(!(EF(b) instanceof BbZ))b=B5(E(3166));else{c=EF(b);d=Kq(b);if(d!==null)(A1Z(c)).caV=d;d=AQc(c.cGW);U(c.b$5,d);Lb(b,FF());b=By();}return b;},Exq=()=>{CCJ=Bv(BB(Bi,[E(3163),E(3167)]));},Bma=N(Bl),CXk=null,Bgb=()=>{Bgb=Z(Bma);EYd();},DxD +=a=>{let b,c,d,e,f,g,h,i,j,k;Bgb();b=BN(Bo(Bma));c=K(Bg,4);d=c.data;d[0]=BL();e=new DD;f=K(Bg,2);g=f.data;h=new Ch;i=K(Bg,3);j=i.data;j[0]=Bc(E(581));j[1]=Bd();j[2]=Bc(E(3163));Cj(h,i);g[0]=h;k=new Ch;j=K(Bg,3);i=j.data;i[0]=Bc(E(3163));i[1]=Bd();i[2]=Bc(E(581));Cj(k,j);g[1]=k;Eb(e,f);d[1]=e;d[2]=Bc(E(652));d[3]=BR();Cb(a,BT(b,c));},DxT=()=>{let a=new Bma();DxD(a);return a;},FpQ=(a,b,c)=>{return E(3168);},DWO=a=>{Bgb();return CXk;},Eqi=(a,b,c,d,e)=>{let f;b=b;if(!(EF(b) instanceof BbZ))b=B5(E(3166));else{c= +EF(b);d=Kq(b);f=b.bJg.bJW;if(d!==null)(A1Z(c)).caV=d;c.c2c=f;Lb(b,FF());Rn(b,(EF(b)).cXF);b=By();}return b;},EYd=()=>{CXk=Bv(BB(Bi,[E(581),E(3169),E(3163),E(3170)]));},ByC=N(Bl),CLa=null,Bum=()=>{Bum=Z(ByC);DR6();},DOy=a=>{let b,c,d;Bum();b=BN(Bo(ByC));c=K(Bg,6);d=c.data;d[0]=BL();d[1]=Bc(E(230));d[2]=Bc(E(652));d[3]=Bd();d[4]=L_();d[5]=BR();Cb(a,BT(b,c));},Ft1=()=>{let a=new ByC();DOy(a);return a;},Eb3=(a,b,c)=>{let d;d=new S;T(d);L(d,E(3171));if(!LC(Gn(c))){L(d,E(2969));L(d,R(c,E(2970),0));}return Q(d);},D9t +=a=>{Bum();return CLa;},Ef2=(a,b,c,d,e)=>{let f,g;b=b;c=N6(Gn(d),b.bGM.bGN);RV(b);e=EF(b);d=new CzE;f=b.bJg.bJW;g=Kq(b);AFR(d,f);d.cUP=c;d.cNk=B$(g);e.JX(d);Lb(b,FF());return By();},DR6=()=>{let b;b=K(Bi,1);b.data[0]=E(230);CLa=Bv(b);},Byb=N(Bl),Ct6=null,BdT=()=>{BdT=Z(Byb);EK0();},Efw=a=>{let b,c,d;BdT();b=BN(Bo(Byb));c=K(Bg,6);d=c.data;d[0]=BL();d[1]=Bc(E(750));d[2]=Bc(E(652));d[3]=Bd();d[4]=L_();d[5]=BR();Cb(a,BT(b,c));},E6L=()=>{let a=new Byb();Efw(a);return a;},EFk=(a,b,c)=>{let d;d=new S;T(d);L(d,E(3172));if +(!LC(Gn(c))){L(d,E(2969));L(d,R(c,E(2970),0));}return Q(d);},FqB=a=>{BdT();return Ct6;},D3g=(a,b,c,d,e)=>{let f;b=b;c=N6(Gn(d),b.bGM.bGN);RV(b);d=new BCQ;f=b.bJg.bJW;e=Kq(b);AFR(d,f);d.c1v=c;d.cKY=B$(e);if(!B91(b,d))(EF(b)).JX(d);return By();},EK0=()=>{let b;b=K(Bi,1);b.data[0]=E(750);Ct6=Bv(b);},Bzl=N(Bl),CKH=null,Brz=()=>{Brz=Z(Bzl);DEE();},Ekp=a=>{let b,c,d;Brz();b=BN(Bo(Bzl));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=AHC();d[2]=Ba(1,E(3173),E(3174));d[3]=Bc(E(652));d[4]=BR();Cb(a,BT(b,c));},EPF=()=>{let a=new Bzl();Ekp(a);return a;},E7T +=(a,b,c)=>{let d;d=new S;T(d);L(d,E(3175));L(d,R(c,E(3173),0));L(d,E(1762));if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}return Q(d);},EmH=a=>{Brz();return CKH;},EBw=(a,b,c,d,e)=>{let f;b=b;c=R(d,E(608),0);c=c===null?null:DV(b.bGM.bGN,c);d=R(d,E(3173),0);e=new BQ_;f=Kq(b);AFR(e,b.bJg.bJW);e.ctk=0;e.cZR=d;e.c5b=B$(f);e.c1g=c;(EF(b)).JX(e);Lb(b,FF());RV(b);return By();},DEE=()=>{CKH=Bv(BB(Bi,[E(332),E(864)]));},Bhf=N(Bl),Cfg=null,BAH=()=>{BAH=Z(Bhf);EqV();},DRF=a=>{let b,c,d;BAH();b=BN(Bo(Bhf));c +=K(Bg,4);d=c.data;d[0]=BL();d[1]=Bc(E(2417));d[2]=Bc(E(652));d[3]=BR();Cb(a,BT(b,c));},DZv=()=>{let a=new Bhf();DRF(a);return a;},EoQ=(a,b,c)=>{return E(3176);},Fb7=a=>{BAH();return Cfg;},DDC=(a,b,c,d,e)=>{b=b;RV(b);d=EF(b);c=new C_P;e=b.bJg.bJW;b=Kq(b);AFR(c,e);c.cLW=B$(b);d.JX(c);return By();}; +let EqV=()=>{let b;b=K(Bi,1);b.data[0]=E(2417);Cfg=Bv(b);},BkZ=N(Bl),DiO=null,BfI=()=>{BfI=Z(BkZ);E1p();},EBC=a=>{let b,c,d;BfI();b=BN(Bo(BkZ));c=K(Bg,6);d=c.data;d[0]=BL();d[1]=Bc(E(581));d[2]=Bc(E(652));d[3]=Bd();d[4]=L_();d[5]=BR();Cb(a,BT(b,c));},EUQ=()=>{let a=new BkZ();EBC(a);return a;},DCK=(a,b,c)=>{let d;d=new S;T(d);L(d,E(3177));if(!LC(Gn(c))){L(d,E(2969));L(d,R(c,E(2970),0));}return Q(d);},DQT=a=>{BfI();return DiO;},ENM=(a,b,c,d,e)=>{let f;b=b;c=N6(Gn(d),b.bGM.bGN);RV(b);d=new BKn;f=b.bJg.bJW;e=Kq(b);AFR(d, +f);d.c3z=c;d.cUi=B$(e);if(!B91(b,d))(EF(b)).JX(d);return By();},E1p=()=>{let b;b=K(Bi,1);b.data[0]=E(581);DiO=Bv(b);},Bza=N(Bl),Caq=null,BwP=()=>{BwP=Z(Bza);D5v();},EfX=a=>{let b,c,d;BwP();b=BN(Bo(Bza));c=K(Bg,4);d=c.data;d[0]=BL();d[1]=Bc(E(3178));d[2]=Bc(E(652));d[3]=BR();Cb(a,BT(b,c));},EFe=()=>{let a=new Bza();EfX(a);return a;},Fc3=(a,b,c)=>{return E(3179);},DSN=a=>{BwP();return Caq;},Eya=(a,b,c,d,e)=>{return (EF(b)).Ks()?By():B5(E(3180));},D5v=()=>{Caq=Bv(BB(Bi,[E(3181),E(3182)]));},Bb8=N(Bl),Cfl=null,BwE +=()=>{BwE=Z(Bb8);DC9();},Dxx=a=>{let b,c,d;BwE();b=BN(Bo(Bb8));c=K(Bg,6);d=c.data;d[0]=BL();d[1]=Bc(E(1190));d[2]=Bw();d[3]=Ba(1,E(608),E(561));d[4]=Bc(E(652));d[5]=BR();Cb(a,BT(b,c));},Fa7=()=>{let a=new Bb8();Dxx(a);return a;},Etj=(a,b,c)=>{b=R(c,E(608),0);c=new S;T(c);H(H(c,E(3183)),b);return Q(c);},ElD=a=>{BwE();return Cfl;},EbI=(a,b,c,d,e)=>{b=b;c=R(d,E(608),0);c=c===null?null:DV(b.bGM.bGN,c);if(c!==null)BD5(b,B5Y(c,null));return By();},DC9=()=>{let b;b=K(Bi,1);b.data[0]=E(1190);Cfl=Bv(b);},Bb3=N(Bl),DhP +=null,A$y=()=>{A$y=Z(Bb3);Frl();},EX6=a=>{let b,c,d,e,f;A$y();b=BN(Bo(Bb3));c=K(Bg,13);d=c.data;d[0]=BL();d[1]=Ba(1,E(554),E(3184));d[2]=Bd();d[3]=Ba(1,E(585),E(3185));d[4]=Bd();d[5]=(Dfi()).bH3;d[6]=Bd();e=new ER;f=new S;T(f);Bb(H(f,E(2550)),63);Fh(e,4,E(2573),Q(f));d[7]=e;d[8]=D2(E(567));d[9]=Bc(E(82));d[10]=Bd();d[11]=Ba(1,E(455),E(566));d[12]=BR();Cb(a,BT(b,c));},FhN=()=>{let a=new Bb3();EX6(a);return a;},Dfi=()=>{A$y();CM();return HQ(C6);},DuL=(a,b,c)=>{let d,e,f;d=new S;T(d);if(!BO(R(c,E(554),0),E(3186)))L(d, +E(3187));else L(d,E(3188));e=R(c,E(585),0);if(e!==null&&!CQ(e)){L(d,E(2364));L(d,e);}L(d,E(2366));L(d,R(c,E(455),0));L(d,E(1268));if(R(c,E(608),0)!==null){L(d,E(2228));L(d,R(c,E(608),0));}if(R(c,E(567),0)!==null){L(d,E(2244));L(d,R(c,E(567),0));}f=R(c,E(2573),0);if(f!==null&&!CQ(f)){L(d,E(3189));L(d,f);L(d,E(2654));}return Q(d);},DYD=a=>{A$y();return DhP;},ETo=(a,b,c,d,e)=>{let f,g,h;b=b;c=Iw(Dfi(),d,b.bGM.bGN);f=B4(Cf(b),R(d,E(455),0));g=CgL(R(d,E(585),0));h=Cqw(R(d,E(554),0));d=R(d,E(567),0);e=null;if(d!== +null)e=FD(d);return C_w(b,f,g,h,c,e);},Frl=()=>{DhP=Bv(BB(Bi,[E(3186),E(584),E(2372),E(2374)]));},Bto=N(EP),Dlj=null,Dmd=null,AU_=()=>{AU_=Z(Bto);EiY();},Fqm=a=>{let b,c,d,e,f;AU_();b=BN(Bo(Bto));c=K(Bg,9);d=c.data;d[0]=BL();d[1]=Ba(1,E(554),E(3184));d[2]=Bd();d[3]=Ba(1,E(585),E(3185));d[4]=Bd();e=new ER;f=new S;T(f);Bb(H(f,E(2550)),63);Fh(e,4,E(2573),Q(f));d[5]=e;d[6]=D2(E(567));d[7]=(Ddo()).bH3;d[8]=BR();e=BT(b,c);HE();f=Kl;HA();Iy(a,e,f,G0,Dmd);},DQS=()=>{let a=new Bto();Fqm(a);return a;},Ddo=()=>{AU_();CM();return HQ(C6);},DEG +=(a,b)=>{let c,d,e,f,g;c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){d=new S;T(d);if(!BO(R(e,E(554),0),E(3186)))L(d,E(3187));else L(d,E(3188));c=R(e,E(585),0);if(c!==null&&!CQ(c)){L(d,E(2364));L(d,c);}f=Dq(b)<=2?0:Dq(b)-2|0;if(f>0){L(d,E(2468));BE(d,f);L(d,f!=1?E(2253):E(2254));L(d,E(2255));}if(R(e,E(608),0)!==null){L(d,E(2228));L(d,R(e,E(608),0));}if(R(e,E(567),0)!==null){L(d,E(2244));L(d,R(e,E(567),0));}g=R(e,E(2573),0);if(g!==null&&!CQ(g)){L(d,E(3189));L(d,g);L(d,E(2654));}return Q(d);}return E(2360);},Fhs +=a=>{AU_();return Dlj;},Fi4=(a,b,c,d)=>{let e,f,g,h;b=b;e=a.bHB;f=(C8(DB(c))).bGP;d=Ei(e,f);c=JL(HI(c,1,1));f=CgL(R(d,E(585),0));e=Cqw(R(d,E(554),0));g=Ig(c);h=Iw(Ddo(),d,b.bGM.bGN);d=R(d,E(567),0);c=null;if(d!==null)c=FD(d);return C_w(b,g,f,e,h,c);},EiY=()=>{Dlj=Bv(BB(Bi,[E(3186),E(584),E(2372),E(2374)]));Dmd=HO(new Cuk);},BhW=N(AGl); +let ClI=null,Cpz=null,BxQ=()=>{BxQ=Z(BhW);E4z();},ErV=a=>{let b,c,d,e,f;BxQ();b=BN(Bo(BhW));c=K(Bg,5);d=c.data;d[0]=BL();CM();d[1]=(HQ(C6)).bH3;d[2]=Bc(E(82));d[3]=Ba(1,E(565),E(566));d[4]=BR();e=BT(b,c);HE();f=Kl;HA();B3l(a,e,f,A$q,Cpz);},FfE=()=>{let a=new BhW();ErV(a);return a;},EQc=(a,b)=>{let c,d,e,f,g;b=JL(b);c=a.bVu;d=(C8(DB(b))).bGP;e=Ei(c,d);f=a.bYk;c=(L9(b)).bGP;d=Ei(f,c);if(e!==null&&d!==null){c=new S;T(c);L(c,E(3190));BE(c,Dq(b));L(c,Dq(b)!=1?E(2253):E(2254));L(c,E(2255));f=Gn(d);if(!LC(f)){L(c, +E(2969));L(c,R(d,E(2970),0));g=XV(f);K0();if(g!==Vh){L(c,E(3051));L(c,FS(g.bV5));L(c,E(865));}}if(R(e,E(608),0)!==null){L(c,E(3052));L(c,R(e,E(608),0));L(c,E(3061));}return Q(c);}return E(3191);},DN1=a=>{BxQ();return ClI;},Eu2=(a,b,c)=>{let d,e,f,g,h,i,j;b=b;c=JL(c);d=a.bVu;e=(C8(DB(c))).bGP;f=Ei(d,e);g=a.bYk;d=(L9(c)).bGP;h=Ei(g,d);if(R(f,E(608),0)!==null){e=new JK;i=K(Bi,1);j=i.data;d=R(f,E(608),0);g=new S;T(g);H(H(H(g,E(3076)),d),E(3192));j[0]=Q(g);J2(e,i);Nk(b,e);}if(R(h,E(2245),0)===null)e=null;else{e= +new FZ;d=DF(b.bGM,E(2248));FC();Gb(e,d,FI);e=Gj(e,R(h,E(2245),0));}d=Gn(h);g=XV(d);return BKu(b,Ig(A31(ATB(c,R(f,E(565),0),0),R(h,E(849),0))),g,e,d);},E4z=()=>{let b,c,d;ClI=Bv(BB(Bi,[E(332),E(82)]));b=new Ch;c=K(Bg,7);d=c.data;d[0]=Ba(1,E(849),E(566));d[1]=Bc(E(939));d[2]=Bd();d[3]=L_();d[4]=Bd();E3();d[5]=Fy;d[6]=BR();Cj(b,c);Cpz=b;},By7=N(Bl),CxD=null,BeY=()=>{BeY=Z(By7);DTi();},DTd=a=>{let b,c,d;BeY();b=BN(Bo(By7));c=K(Bg,9);d=c.data;d[0]=BL();d[1]=Bc(E(3193));d[2]=C6n();d[3]=Ba(1,E(470),E(2403));d[4]=Bd();d[5] +=L_();d[6]=Bd();E3();d[7]=Fy;d[8]=BR();Cb(a,BT(b,c));},Fa3=()=>{let a=new By7();DTd(a);return a;},Fi$=(a,b,c)=>{let d;d=new S;T(d);L(d,E(3058));L(d,R(c,E(470),0));L(d,E(3194));if(!LC(Gn(c))){L(d,E(2969));L(d,R(c,E(2970),0));}if(R(c,E(2245),0)!==null)L(d,E(2246));return Q(d);},EKF=a=>{BeY();return CxD;},DIK=(a,b,c,d,e)=>{let f,g;b=b;e=Gn(d);if(R(d,E(2245),0)===null)f=null;else{g=new FZ;c=DF(b.bGM,E(2248));FC();Gb(g,c,FI);f=Gj(g,R(d,E(2245),0));}c=B4(Cf(b),R(d,E(470),0));K0();return BKu(b,c,Vh,f,e);},DTi=()=> +{CxD=Bv(BB(Bi,[E(900),E(1272)]));},Bkq=N(Bl),Cq5=null,Brm=()=>{Brm=Z(Bkq);Fsy();},Edm=a=>{let b,c,d;Brm();b=BN(Bo(Bkq));c=K(Bg,6);d=c.data;d[0]=BL();d[1]=Bc(E(764));d[2]=Bw();d[3]=Ba(1,E(563),E(597));d[4]=Bc(E(652));d[5]=BR();Cb(a,BT(b,c));},Fbt=()=>{let a=new Bkq();Edm(a);return a;},EZ9=(a,b,c)=>{b=R(c,E(563),0);c=new S;T(c);H(H(H(c,E(3195)),b),E(3196));return Q(c);},Dxo=a=>{Brm();return Cq5;},Fv6=(a,b,c,d,e)=>{b=b;c=R(d,E(563),0);d=new CVB;AFR(d,b.bJg.bJW);d.c14=c;(EF(b)).JX(d);Lb(b,FF());return By();},Fsy +=()=>{let b;b=K(Bi,1);b.data[0]=E(764);Cq5=Bv(b);},Bmm=N(Bl),Cdk=null,BdR=()=>{BdR=Z(Bmm);EFA();},ETS=a=>{let b,c,d;BdR();b=BN(Bo(Bmm));c=K(Bg,6);d=c.data;d[0]=BL();d[1]=Bc(E(3197));d[2]=Bw();d[3]=Ba(1,E(563),E(597));d[4]=Bc(E(652));d[5]=BR();Cb(a,BT(b,c));},Far=()=>{let a=new Bmm();ETS(a);return a;},DJc=(a,b,c)=>{b=R(c,E(563),0);c=new S;T(c);Bb(H(H(c,E(3198)),b),39);return Q(c);},EQK=a=>{BdR();return Cdk;},Eqv=(a,b,c,d,e)=>{b=b;c=R(d,E(563),0);d=new Dnh;AFR(d,b.bJg.bJW);d.cLV=c;(EF(b)).JX(d);Lb(b,FF());return By();},EFA +=()=>{let b;b=K(Bi,1);b.data[0]=E(3197);Cdk=Bv(b);},B3G=N(Bl),ETg=a=>{FY();return G6;},EN6=(a,b,c)=>{return null;},EQR=(a,b,c,d,e)=>{b=b;c=R(d,E(617),0);if(!b.clk.bGJ&&Bj(Dk(c),E(254)))b=B5(E(3199));else{b=b.clk;AW$();c=Bv(IW(c,E(1555)));Ea(b,c);b=By();}return b;},BNw=N(Bl),FhW=a=>{FY();return G6;},FvR=(a,b,c,d,e)=>{let f;b=b;c=R(d,E(618),0);e=R(d,E(624),0);f=AF9(b,c);if(f===null){b=new S;T(b);H(H(b,E(3200)),c);b=B5(Q(b));}else{c=AF9(b,e);if(c!==null){b=BSn(b,f,c);c=R(d,E(620),0);U5(b,c);b=By();}else{b=new S;T(b);H(H(b, +E(3200)),e);b=B5(Q(b));}}return b;},Bwv=N(Bl),Chk=null,Bli=()=>{Bli=Z(Bwv);EOc();},Fpi=a=>{Bli();return Chk;},D9w=(a,b,c,d,e)=>{b=b;c=R(d,E(625),0);e=R(d,E(628),0);b=BSn(b,BQk(b,AT7(c),0),BQk(b,AT7(e),0));c=R(d,E(620),0);U5(b,c);return By();},EOc=()=>{let b;b=K(Bi,1);b.data[0]=E(842);Chk=Bv(b);},Bwr=N(Bl); +let C12=null,Bbc=()=>{Bbc=Z(Bwr);EZn();},Eof=()=>{let b,c,d;Bbc();b=BN(Bo(Bwr));c=K(Bg,6);d=c.data;d[0]=BL();d[1]=Ba(1,E(594),E(3201));d[2]=Bw();d[3]=Ba(2,E(2400),E(3202));d[4]=Bd();d[5]=BR();return BT(b,c);},EgD=a=>{Bbc();return C12;},E68=(a,b,c,d,e)=>{let f;b=b;c=R(d,E(594),0);e=AF9(b,c);if(e===null){b=new S;T(b);H(H(b,E(3200)),c);b=B5(Q(b));}else{c=R(d,E(2400),0);d=R(d,E(2400),1);c=c===null?null:DV(OY(b),c);d=d===null?null:DV(OY(b),d);f=K(AFn,1);f.data[0]=AZ2(c,d);e.KC(f);b=By();}return b;},EZn=()=>{let b;b +=K(Bi,1);b.data[0]=E(842);C12=Bv(b);},BvZ=N(Bl),Cz3=null,A4k=()=>{A4k=Z(BvZ);EHw();},DX_=()=>{let b,c,d;A4k();b=BN(Bo(BvZ));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Bc(E(658));d[2]=Bd();d[3]=Ba(2,E(2402),E(3203));d[4]=BR();return BT(b,c);},DEf=a=>{A4k();return Cz3;},DHp=(a,b,c,d,e)=>{let f,g;b=b;c=R(d,E(2402),1);d=new AVp;e=B1(b.bGM);f=(Td(b.bNU)).dV();g=new S;T(g);BE(H(g,E(1244)),f);B39(d,e,AT7(Q(g)));d.cMt=c;BU$(b.bNU,d.bRF,d);return By();},EHw=()=>{let b;b=K(Bi,1);b.data[0]=E(1272);Cz3=Bv(b);},Bcf=N(Bl),C$x=null,A$k +=()=>{A$k=Z(Bcf);EK7();},EDh=()=>{let b,c,d,e,f,g,h,i,j,k;A$k();b=BN(Bo(Bcf));c=K(Bg,12);d=c.data;d[0]=BL();d[1]=Bc(E(3204));d[2]=Bw();d[3]=Bc(E(3205));d[4]=Bc(E(3206));d[5]=Bw();e=new ER;f=new S;T(f);g=(ASJ()).data;h=g.length;i=0;while(i0)L(f,E(2054));j=B_(j.bHx,0,3);k=new S;T(k);H(H(k,j),E(3207));L(f,Q(k));i=i+1|0;}j=Q(f);f=new S;T(f);Bb(f,40);Bb(H(f,j),41);Fh(e,1,E(3208),Q(f));d[6]=e;d[7]=Bw();d[8]=Bc(E(3206));d[9]=Ba(1,E(3209),E(3210));d[10]=Bc(E(3206));d[11]=BR();return BT(b,c);},Dt3 +=a=>{A$k();return C$x;},Es6=(a,b,c,d,e)=>{let f;b=b;c=B40(R(d,E(3208),0));f=CZ(R(d,E(3209),0));b.b71.cqm=EjW(c,f);return By();},EK7=()=>{C$x=Bv(BB(Bi,[E(3211),E(3212)]));},Bnv=N(Bl),CBk=null,BaO=()=>{BaO=Z(Bnv);DJx();},ELj=()=>{let b,c,d;BaO();b=BN(Bo(Bnv));c=K(Bg,8);d=c.data;d[0]=BL();d[1]=Bc(E(653));d[2]=Bw();d[3]=Bc(E(598));d[4]=Ba(1,E(563),E(2723));d[5]=Bc(E(627));d[6]=Bd();d[7]=BR();return BT(b,c);},DVW=a=>{BaO();return CBk;},FqH=(a,b,c,d,e)=>{b=b;c=AT7(R(d,E(563),0));d=new BbP;e=b.b1d;B39(d,B1(b.bGM), +c);d.cm7=Bk();d.c20=e;c=b.b1d;if(c!==null)Dd4(c,d);b.b1d=d;BU$(b.bNU,d.bRF,d);return By();},DJx=()=>{let b;b=K(Bi,1);b.data[0]=E(653);CBk=Bv(b);},BeK=N(Bl),DrK=null,A_m=()=>{A_m=Z(BeK);D7W();},E$5=()=>{let b,c,d;A_m();b=BN(Bo(BeK));c=K(Bg,7);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(581));d[3]=Bd();d[4]=Bc(E(653));d[5]=Bd();d[6]=BR();return BT(b,c);},EOs=a=>{A_m();return DrK;},Ec0=(a,b,c,d,e)=>{b=b;c=b.b1d;if(c===null)b=B5(E(3213));else{b.b1d=c.c20;b=By();}return b;},D7W=()=>{DrK=Bv(BB(Bi,[E(581),E(3035)]));},Beb +=N(Bl),B_p=null,A$P=()=>{A$P=Z(Beb);DWj();},EhQ=()=>{let b,c,d;A$P();b=BN(Bo(Beb));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Bc(E(3214));d[2]=Bw();d[3]=Ba(1,E(3215),E(3216));d[4]=BR();return BT(b,c);},Dzv=a=>{A$P();return B_p;},EoL=(a,b,c,d,e)=>{b=b;c=R(d,E(3215),0);d=b.b71;b=new AOX;RX();B7X(b,c,E(14),E(14));d.cg_=b;return By();},DWj=()=>{let b;b=K(Bi,1);b.data[0]=E(3214);B_p=Bv(b);},BtL=N(Bl),Cgp=null,A8B=()=>{A8B=Z(BtL);DXQ();},Fxn=()=>{let b,c,d,e,f,g,h,i,j,k,l,m;A8B();b=BN(Bo(BtL));c=K(Bg,7);d=c.data;d[0]=BL();e +=new DD;f=K(Bg,3);g=f.data;g[0]=Bc(E(3217));g[1]=Bc(E(3218));g[2]=Bc(E(3219));Eb(e,f);d[1]=e;d[2]=Bw();e=new DD;f=K(Bg,5);g=f.data;g[0]=Bc(E(3220));g[1]=Bc(E(3221));g[2]=Bc(E(3222));g[3]=Bc(E(3223));g[4]=Bc(E(3224));Sf(e,E(1858),f);d[3]=e;h=new C0;i=new Ch;f=K(Bg,2);g=f.data;g[0]=Bw();j=new DD;k=K(Bg,2);l=k.data;l[0]=LZ(1,E(3225));l[1]=Ba(1,E(3226),E(3227));Sf(j,E(1920),k);g[1]=j;Cj(i,f);C3(h,i);d[4]=h;e=new C0;m=new Ch;f=K(Bg,4);g=f.data;g[0]=Bw();g[1]=Bc(E(3228));g[2]=Bw();g[3]=Ba(1,E(3229),E(3230));Cj(m, +f);C3(e,m);d[5]=e;d[6]=BR();return BT(b,c);},E7u=a=>{A8B();return Cgp;},Fm$=(a,b,c,d,e)=>{let f;b=b;c=R(d,E(1858),0);Xg();b.b$H.bS6=BO(c,E(992))?Ys:BO(c,E(3231))?A_A:BO(c,E(3232))?A8V:!BO(c,E(3233))?AAr:Bjs;c=R(d,E(3229),0);if(c!==null)b.b$H.ct9=DM(c);c=R(d,E(1920),0);if(c!==null){if(CB(c,E(3234))){APw();CG2(b,A3c,0);}else if(CB(c,E(3235))){f=CZ(R(d,E(3226),0));APw();CG2(b,Bho,f);}}return By();},DXQ=()=>{Cgp=Bv(BB(Bi,[E(3218),E(3219),E(3217)]));},BC0=N(Ky),BVX=null; +let AYp=null,ANd=()=>{ANd=Z(BC0);D1J();},DF$=()=>{let b,c;ANd();b=K(C7,10);c=b.data;c[0]=Ce(E(3236));c[1]=EW();c[2]=Ce(E(3237));c[3]=EW();c[4]=DZ(E(2472),BUA(AYp));c[5]=EW();c[6]=Ce(E(3238));c[7]=EW();c[8]=DZ(E(3239),BUA(AYp));c[9]=X1();return DP(b);},Eeg=(a,b,c)=>{let d,e;d=R(c,E(2472),0);e=R(c,E(3239),0);b=new S;T(b);H(H(H(H(b,E(3240)),d),E(2464)),e);return Q(b);},Frf=a=>{ANd();return BVX;},EBV=a=>{ANd();return BVX;},DAg=(a,b,c,d,e)=>{b=b;c=Dbz(d.bXK,E(2472));d=Dbz(d.bXK,E(3239));ANd();c=Mr(B0Z(AYp,b,c));d +=Mr(B0Z(AYp,b,d));b=b.bPI;b.bVr=c;b.cMv=d;return By();},D1J=()=>{let b;b=K(Bi,1);b.data[0]=E(3236);BVX=Bv(b);AYp=Uz();},Bct=N(EP),C17=null,CHt=null,A9j=()=>{A9j=Z(Bct);DxP();},EjQ=a=>{let b,c,d,e,f;A9j();b=BN(Bo(Bct));c=K(Bg,8);d=c.data;d[0]=BL();d[1]=Ba(1,E(554),E(3241));d[2]=Bd();d[3]=Ba(1,E(585),E(3242));d[4]=Bd();e=new ER;f=new S;T(f);Bb(H(f,E(2550)),63);Fh(e,4,E(2573),Q(f));d[5]=e;d[6]=D2(E(567));d[7]=BR();e=BT(b,c);HE();f=Kl;HA();Iy(a,e,f,G0,CHt);},DzR=()=>{let a=new Bct();EjQ(a);return a;},E50=(a,b)=> +{let c,d,e,f,g;c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){d=R(e,E(567),0);c=R(e,E(2573),0);f=Dq(b)<=2?0:Dq(b)-2|0;g=new S;T(g);L(g,E(3243));BE(g,f);L(g,E(3244));if(d!==null){L(g,E(3245));L(g,d);}if(c!==null&&!CQ(c)){L(g,E(3246));L(g,c);L(g,E(2251));}return Q(g);}return E(2360);},E_N=a=>{A9j();return C17;},E8z=(a,b,c,d)=>{let e,f;b=b;e=a.bHB;f=(C8(DB(c))).bGP;d=Ei(e,f);c=Ig(JL(HI(c,1,1)));if(!I6(c))b=B5(E(3247));else{d=R(d,E(567),0);f=null;if(d!==null)f=FD(d);d=null;b=(Td(b.bNU)).dX();while(b.dY()){d=b.dZ();}if +(d!==null){d.KO(c,f);b=By();}else b=B5(E(3248));}return b;},DxP=()=>{C17=Bv(BB(Bi,[E(584),E(2435)]));CHt=HO(new Cuc);},B0q=N(Bl),CW4=null,Bdk=()=>{Bdk=Z(B0q);DWn();},Fpu=a=>{Bdk();AZH();Cb(a,BYA);},DEH=()=>{let a=new B0q();Fpu(a);return a;},EEb=a=>{Bdk();return CW4;},DGv=(a,b,c,d,e)=>{let f;b=b;f=BG(R(d,E(554),0),E(2222));b.cdu.chg=f;return By();},DWn=()=>{CW4=Bv(BB(Bi,[E(571),E(2219),E(2501),E(2222),E(2502)]));},Blr=N(Bl),Dh6=null,Byn=()=>{Byn=Z(Blr);D8D();},Ehk=a=>{let b,c,d,e,f,g,h;Byn();b=BN(Bo(Blr));c= +K(Bg,10);d=c.data;d[0]=BL();d[1]=Bc(E(3249));d[2]=Bw();d[3]=Bc(E(1842));d[4]=Bd();d[5]=Ba(1,E(585),E(3250));d[6]=Bd();d[7]=Bc(E(3251));e=new C0;f=new Ch;g=K(Bg,6);h=g.data;h[0]=Bd();h[1]=Bc(E(3238));h[2]=Bd();h[3]=Ba(1,E(3252),E(3253));h[4]=Bd();h[5]=Bc(E(3254));Cj(f,g);C3(e,f);d[8]=e;d[9]=BR();Cb(a,BT(b,c));},E0$=()=>{let a=new Blr();Ehk(a);return a;},FgW=a=>{Byn();return Dh6;},EhT=(a,b,c,d,e)=>{let f,g;b=b;c=new JK;f=K(Bi,1);g=f.data;d=R(d,E(585),0);e=new S;T(e);H(H(H(e,E(3255)),d),E(3256));g[0]=Q(e);J2(c, +f);Nk(b,c);return By();},D8D=()=>{Dh6=Bv(BB(Bi,[E(764),E(3257)]));},BpL=N(Bl),DcK=null,Bhb=()=>{Bhb=Z(BpL);DOm();},Fww=a=>{let b,c,d;Bhb();b=BN(Bo(BpL));c=K(Bg,7);d=c.data;d[0]=BL();d[1]=Bc(E(2219));d[2]=Bw();d[3]=Bc(E(3258));d[4]=Bw();d[5]=Bc(E(3259));d[6]=BR();Cb(a,BT(b,c));},DY_=()=>{let a=new BpL();Fww(a);return a;},DPy=a=>{Bhb();return DcK;},DST=(a,b,c,d,e)=>{b.cdu.cTi=1;return By();},DOm=()=>{let b;b=K(Bi,1);b.data[0]=E(2219);DcK=Bv(b);},BuX=N(Bl),DjL=null,Bs8=()=>{Bs8=Z(BuX);D1G();},Eba=a=>{let b,c,d;Bs8();b +=BN(Bo(BuX));c=K(Bg,7);d=c.data;d[0]=BL();d[1]=Bc(E(2219));d[2]=Bw();d[3]=Bc(E(3258));d[4]=Bw();d[5]=Bc(E(571));d[6]=BR();Cb(a,BT(b,c));},E5c=()=>{let a=new BuX();Eba(a);return a;},FcG=a=>{Bs8();return DjL;},EeR=(a,b,c,d,e)=>{b.cdu.cAB=1;return By();},D1G=()=>{let b;b=K(Bi,1);b.data[0]=E(2219);DjL=Bv(b);}; +let BH2=N(Ky),BTt=null,A1X=()=>{A1X=Z(BH2);DCz();},DHj=a=>{let b,c,d,e,f,g,h,i,j,k,l,m,n;A1X();b=K(C7,6);c=b.data;d=new W6;e=new Oy;f=K(C7,2);g=f.data;g[0]=Ce(E(2219));g[1]=Ce(E(2222));QL(e,f);Za(d,E(2530),e);c[0]=d;c[1]=EW();c[2]=Ce(E(3251));c[3]=EW();h=new W6;AN3();i=Bk();f=(DnO.b2()).data;j=f.length;k=0;while(k{let a=new BH2();DHj(a);return a;},Ecx=(a,b,c)=>{return null;},E02=a=>{A1X();return BTt;},DD5=a=>{A1X();return BTt;},Fmb=(a,b,c,d,e)=>{let f,$$je;b=b;f=Bn(R(d,E(2530),0),0)!=115?0:1;c=R(d,E(2532),0);AN3();a:{b:{try{c=Dw5(Vq(c));break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break b;}else{throw $$e;}}}c=null;}if(c!==null){if(!f)C07(b.cm5,c);else OJ(b.cm5,c);}return By();},DCz=()=>{BTt=Bv(BB(Bi,[E(2219),E(2222)]));},BeT=N(Bl),Dkt=null,Bs7=()=>{Bs7=Z(BeT);Ek_();},EAS=a=>{let b,c,d;Bs7();b=BN(Bo(BeT));c +=K(Bg,5);d=c.data;d[0]=BL();d[1]=Bc(E(2219));d[2]=Bw();d[3]=Bc(E(726));d[4]=BR();Cb(a,BT(b,c));},FoP=()=>{let a=new BeT();EAS(a);return a;},DRl=a=>{Bs7();return Dkt;},Fee=(a,b,c,d,e)=>{b.b$H.cjC=1;return By();},Ek_=()=>{let b;b=K(Bi,1);b.data[0]=E(2219);Dkt=Bv(b);},Bw4=N(Bl),Cwu=null,Bw7=()=>{Bw7=Z(Bw4);EMq();},Fli=a=>{let b,c,d,e,f,g;Bw7();b=BN(Bo(Bw4));c=K(Bg,10);d=c.data;d[0]=BL();d[1]=Bc(E(801));d[2]=Bw();e=new DD;f=K(Bg,2);g=f.data;g[0]=Bc(E(3260));g[1]=Bc(E(3261));Eb(e,f);d[3]=e;d[4]=Bw();d[5]=Bc(E(3262));d[6] +=Bw();d[7]=Ba(1,E(696),E(2448));d[8]=Bc(E(649));d[9]=BR();Cb(a,BT(b,c));},Eo5=()=>{let a=new Bw4();Fli(a);return a;},D5c=a=>{Bw7();return Cwu;},EqM=(a,b,c,d,e)=>{let f;b=b;f=CZ(R(d,E(696),0));if(f>100)b=B5(E(3263));else{b.crm=f;b=By();}return b;},EMq=()=>{let b;b=K(Bi,1);b.data[0]=E(801);Cwu=Bv(b);},Bd7=N(EP),CGV=null,CfH=null,A$L=()=>{A$L=Z(Bd7);DUO();},ELB=(a,b)=>{let c,d,e,f,g,h,i,j;c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){d=R(e,E(554),0);c=R(e,E(630),0);f=R(e,E(632),0);g=d.bGI.length-1|0;h=ACl(ABT(a), +(L9(b)).bGP);i=h===null?null:Be(h,1);j=new S;T(j);L(j,E(3264));BE(j,g);if(Bj(E(840),f))L(j,E(3265));if(i!==null){L(j,E(3266));L(j,i);L(j,E(1776));}if(c!==null){L(j,E(3267));L(j,c);}return Q(j);}return E(3268);},D$R=a=>{A$L();return CGV;},DM7=(a,b,c,d)=>{let e,f,g,h,i;b=b;e=a.bHB;f=(C8(DB(c))).bGP;d=Ei(e,f);e=ACl(ABT(a),(L9(c)).bGP);c=ATB(c,R(d,E(565),0),1);f=e;e=Be(f,1);if(e!==null)c=A31(c,Be(f,0));g=R(d,E(554),0);h=R(d,E(630),0);f=null;if(h!==null)f=DV(b.bGM.bGN,h);if(e===null)b=C46(b,f,g.bGI.length-1|0,Ig(c), +AEy(R(d,E(632),0)));else{e=FD(e);i=g.bGI.length-1|0;g=Ig(c);c=AEy(R(d,E(632),0));if(Ca9(Bi$(b),i)){d=b.b8q;h=BM$(b.bGM);U(d,h);}b=CQK(Bi$(b),e,f,i,g,c,b.cn_);}return b;},DUO=()=>{CGV=Bv(BB(Bi,[E(332),E(900)]));CfH=HO(new CnI);},Bm_=N(Bl),CZd=null,A_I=()=>{A_I=Z(Bm_);E1X();},Dw7=(a,b,c)=>{let d,e,f,g,h,i,j,k;d=R(c,E(554),0);e=R(c,E(470),0);f=R(c,E(630),0);g=R(c,E(632),0);A_I();h=0;i=0;while(i{A_I();return CZd;},D5x=(a,b,c,d,e)=>{let f,g,h;b=b;c=R(d,E(554),0);e=R(d,E(470),0);f=R(d,E(630),0);g=null;if(f!==null)g=DV(b.bGM.bGN,f);if(b.b1W===null)b.b1W=c;if(Dr(c,E(917)))c=Dk(KG(c,9,32));f=KG(c,9,32);if(!CB(f,E(344)))h=f.bGI.length-1|0;else if(Dr(f,b.b1W))h=f.bGI.length-b.b1W.bGI.length|0;else if((Dk(f)).bGI.length==1)h=f.bGI.length-1|0;else{if(!BO(f,b.b1W)){c=new BV;b=b.b1W;d=new S;T(d);Bb(H(H(H(H(d, +E(3269)),f),E(3270)),b),93);Bp(c,Q(d));J(c);}h=f.bGI.length-b.b1W.bGI.length|0;}return C46(b,g,h,B4(Cf(b),e),AEy(R(d,E(632),0)));},E1X=()=>{CZd=Bv(BB(Bi,[E(332),E(900)]));},Bx$=N(Bl),C7w=null,BiC=()=>{BiC=Z(Bx$);FaV();},Fn$=(a,b,c)=>{let d,e;d=R(c,E(470),0);e=new S;T(e);L(e,E(3271));if(d!==null&&!CQ(d)){L(e,E(2366));L(e,d);L(e,E(1268));}return Q(e);},Fuh=a=>{BiC();return C7w;},Fr4=(a,b,c,d,e)=>{b=b;c=R(d,E(470),0);d=null;c=B4(Cf(b),c);SQ();return BG6(b,d,0,c,AHt,1);},FaV=()=>{let b;b=K(Bi,1);b.data[0]=E(35);C7w +=Bv(b);},Br5=N(Bl),CHg=null; +let Bj5=()=>{Bj5=Z(Br5);Etd();},DPu=(a,b,c)=>{let d,e,f,g,h,i,j;d=R(c,E(554),0);e=R(c,E(470),0);f=R(c,E(630),0);g=R(c,E(632),0);h=d.bGI.length-1|0;i=CB(d,E(1272))?0:1;j=new S;T(j);L(j,E(3264));BE(j,h);L(j,!i?E(3272):E(3273));if(e!==null&&!CQ(e)){L(j,E(2366));L(j,e);L(j,E(1268));}if(Bj(E(840),g))L(j,E(3265));if(f!==null){L(j,E(3267));L(j,f);}return Q(j);},EIp=a=>{Bj5();return CHg;},Fqt=(a,b,c,d,e)=>{let f,g,h;b=b;c=R(d,E(554),0);f=R(d,E(470),0);g=R(d,E(630),0);e=null;if(g!==null)e=DV(b.bGM.bGN,g);h=!CB(c,E(1272)) +?1:0;return BG6(b,e,c.bGI.length-1|0,B4(Cf(b),f),AEy(R(d,E(632),0)),h);},Etd=()=>{CHg=Bv(BB(Bi,[E(866),E(1272)]));},BRH=N(Bl),Fuu=a=>{FY();return G6;},EnJ=(a,b,c)=>{let d;d=R(c,E(572),0);b=new S;T(b);H(H(b,E(3274)),d);return Q(b);},DJe=(a,b,c,d,e)=>{b=b;c=R(d,E(572),0);DC();c=Vq(c);c=Bj(E(859),c)?HG:Bj(E(860),c)?G_:Ss(Bo(Nf),c);b.cn_=!(c!==Gy&&c!==G_)?1:0;return By();},A1o=N(Bl),Cxd=null,A00=()=>{A00=Z(A1o);Fo2();},DMD=(a,b)=>{A00();Oi(a,0,Fv4(b));},DhI=a=>{let b=new A1o();DMD(b,a);return b;},Fv4=b=>{let c, +d,e,f,g,h,i,j,k,l,m;A00();if(!b){c=BN(Bo(A1o));d=new S;T(d);BE(H(d,c),b);e=Q(d);f=K(Bg,6);g=f.data;g[0]=BL();g[1]=Ba(1,E(554),E(3275));c=new DD;h=K(Bg,3);i=h.data;i[0]=Qz(BB(Bg,[Ba(1,E(3276),E(633)),Ba(1,E(3277),E(3278))]));j=new Ch;k=K(Bg,1);k.data[0]=Ba(1,E(3279),E(3278));Cj(j,k);i[1]=j;i[2]=Ba(1,E(3280),E(633));Eb(c,h);g[2]=c;l=new DD;h=K(Bg,2);i=h.data;i[0]=Qz(BB(Bg,[DI(Ba(1,E(3281),E(631))),DI(Ba(1,E(3282),E(3283)))]));i[1]=Qz(BB(Bg,[DI(Ba(1,E(3284),E(3283))),DI(Ba(1,E(3285),E(631)))]));Eb(l,h);g[3]=l;g[4] +=DI(Qz(BB(Bg,[Bw(),Ba(1,E(470),E(3286))])));g[5]=BR();return BT(e,f);}c=BN(Bo(A1o));d=new S;T(d);BE(H(d,c),b);d=Q(d);f=K(Bg,11);g=f.data;g[0]=BL();g[1]=Ba(1,E(554),E(3275));e=new DD;h=K(Bg,3);i=h.data;i[0]=Qz(BB(Bg,[Ba(1,E(3276),E(633)),Ba(1,E(3277),E(3278))]));c=new Ch;m=K(Bg,1);m.data[0]=Ba(1,E(3279),E(3278));Cj(c,m);i[1]=c;i[2]=Ba(1,E(3280),E(633));Eb(e,h);g[2]=e;g[3]=DI(Ba(1,E(630),E(631)));g[4]=Bw();g[5]=Ba(1,E(470),E(3287));g[6]=Bw();g[7]=Bc(E(665));g[8]=Bw();g[9]=Ba(1,E(594),E(641));g[10]=BR();return BT(d, +f);},ETt=(a,b,c)=>{return null;},Fd$=a=>{A00();return Cxd;},E1_=(a,b,c,d,e)=>{let f,g,h,i;b=b;c=R(d,E(554),0);e=R(d,E(470),0);f=Ck(d,E(594),0);g=Ck(d,E(630),0);h=null;if(g!==null)h=DV(b.bGM.bGN,g);a:{g=Bsh(d);d=AEy(Ck(d,E(632),0));if(e===null&&d===UO)d=AMJ;else if(e===null){b=B5(E(3288));break a;}i=BjF(b,c);if(e===null)e=E(14);b=CCa(b,f,h,i,e,g,d);}return b;},Fo2=()=>{Cxd=Bv(BB(Bi,[E(900),E(866),E(1272)]));},BqC=N(EP),CaL=null,C_F=null,AOZ=()=>{AOZ=Z(BqC);EjR();},DM1=()=>{let b,c,d,e,f,g,h,i,j,k,l,m,n;AOZ();b +=BN(Bo(BqC));c=K(Bg,7);d=c.data;d[0]=BL();d[1]=Ba(1,E(554),E(3275));e=new DD;f=K(Bg,3);g=f.data;h=new Ch;i=K(Bg,2);j=i.data;j[0]=Ba(1,E(3276),E(633));j[1]=Ba(1,E(3277),E(3278));Cj(h,i);g[0]=h;k=new Ch;i=K(Bg,1);i.data[0]=Ba(1,E(3279),E(3278));Cj(k,i);g[1]=k;g[2]=Ba(1,E(3280),E(633));Eb(e,f);d[2]=e;l=new DD;f=K(Bg,2);j=f.data;m=new Ch;i=K(Bg,2);g=i.data;g[0]=DI(Ba(1,E(3281),E(631)));g[1]=DI(Ba(1,E(3282),E(3283)));Cj(m,i);j[0]=m;n=new Ch;i=K(Bg,2);g=i.data;g[0]=DI(Ba(1,E(3284),E(3283)));g[1]=DI(Ba(1,E(3285),E(631)));Cj(n, +i);j[1]=n;Eb(l,f);d[3]=l;d[4]=Bc(E(82));d[5]=Ba(1,E(565),E(566));d[6]=BR();return BT(b,c);},FeT=(a,b)=>{return null;},EAP=a=>{AOZ();return CaL;},EMc=(a,b,c,d)=>{let e,f,g,h,i;b=b;e=a.bHB;f=(C8(DB(c))).bGP;d=Ei(e,f);e=ACl(ABT(a),(L9(c)).bGP);f=ATB(c,R(d,E(565),0),1);g=e;e=Be(g,1);if(e!==null)f=A31(f,Be(g,0));g=R(d,E(554),0);h=Ck(d,E(630),0);c=null;if(h!==null)c=DV(b.bGM.bGN,h);h=Ck(d,E(594),0);i=Bsh(d);return B2P(b,h,c,BjF(b,g),Ig(f),FD(e),i,AEy(Ck(d,E(632),0)));},EjR=()=>{CaL=Bv(BB(Bi,[E(900),E(866),E(1272)]));C_F +=HO(new CTF);}; +function A1B(){Bl.call(this);this.cLX=0;} +let B9x=null,AKm=()=>{AKm=Z(A1B);DRe();},E9w=(a,b)=>{AKm();Oi(a,0,EVL(b));a.cLX=b;},CEq=a=>{let b=new A1B();E9w(b,a);return b;},EVL=b=>{let c,d,e,f,g,h,i,j,k,l;AKm();if(!b){c=BN(Bo(A1B));d=new S;T(d);BE(H(d,c),b);e=Q(d);f=K(Bg,6);g=f.data;g[0]=BL();g[1]=Ba(1,E(554),E(3275));h=new DD;i=K(Bg,2);j=i.data;j[0]=Qz(BB(Bg,[DI(Ba(1,E(3281),E(631))),DI(Ba(1,E(3282),E(3283)))]));j[1]=Qz(BB(Bg,[DI(Ba(1,E(3284),E(3283))),DI(Ba(1,E(3285),E(631)))]));Eb(h,i);g[2]=h;c=new DD;i=K(Bg,3);j=i.data;j[0]=Qz(BB(Bg,[Ba(1,E(3276), +E(633)),Ba(1,E(3277),E(3278))]));d=new Ch;k=K(Bg,1);k.data[0]=Ba(1,E(3279),E(3278));Cj(d,k);j[1]=d;j[2]=Ba(1,E(3280),E(633));Eb(c,i);g[3]=c;g[4]=DI(Qz(BB(Bg,[Bw(),Ba(1,E(470),E(3286))])));g[5]=BR();return BT(e,f);}c=BN(Bo(A1B));d=new S;T(d);BE(H(d,c),b);d=Q(d);f=K(Bg,11);g=f.data;g[0]=BL();g[1]=Ba(1,E(554),E(3275));g[2]=DI(Ba(1,E(630),E(631)));l=new DD;i=K(Bg,3);j=i.data;j[0]=Qz(BB(Bg,[Ba(1,E(3276),E(633)),Ba(1,E(3277),E(3278))]));c=new Ch;k=K(Bg,1);k.data[0]=Ba(1,E(3279),E(3278));Cj(c,k);j[1]=c;j[2]=Ba(1,E(3280), +E(633));Eb(l,i);g[3]=l;g[4]=Bw();g[5]=Ba(1,E(470),E(3287));g[6]=Bw();g[7]=Bc(E(665));g[8]=Bw();g[9]=Ba(1,E(594),E(641));g[10]=BR();return BT(d,f);},DKt=(a,b,c)=>{return null;},Chv=(b,c)=>{let d,e,f,g;AKm();d=Lk(Dk(R(b,E(554),0)));BnW(d,E(14),Ck(b,E(632),0),E(14));BnW(d,E(14),Ck(b,E(572),0),E(14));BnW(d,E(842),Ck(b,E(630),0),E(843));if(c)BnW(d,E(864),Ck(b,E(594),0),E(865));b=new JK;e=K(Bi,1);f=e.data;d=BY(d);g=new S;T(g);Bb(H(H(g,E(3289)),d),39);f[0]=Q(g);J2(b,e);return b;},BnW=(b,c,d,e)=>{AKm();if(d!==null&& +d.bGI.length>0){L(b,c);L(b,d);L(b,e);}},E6H=a=>{AKm();return B9x;},FuC=(a,b,c,d,e)=>{let f,g,h,i,j,k;b=b;e=R(d,E(554),0);f=R(d,E(470),0);g=Ck(d,E(594),0);h=Ck(d,E(630),0);i=null;if(h!==null)i=DV(b.bGM.bGN,h);a:{j=Bsh(d);h=AEy(Ck(d,E(632),0));if(f===null&&h===UO)h=AMJ;else if(f===null){b=B5(E(3288));break a;}c=Chv(d,a.cLX?0:1);Nk(b,c);k=BjF(b,e);if(f===null)f=E(14);b=CCa(b,g,i,k,f,j,h);}return b;},DRe=()=>{B9x=Bv(BB(Bi,[E(900),E(866),E(1272)]));},Bp7=N(EP),CpY=null,CGp=null,AOR=()=>{AOR=Z(Bp7);DS2();},D18=()=> +{let b,c,d,e,f,g,h,i,j,k;AOR();b=BN(Bo(Bp7));c=K(Bg,7);d=c.data;d[0]=BL();d[1]=Ba(1,E(554),E(3275));e=new DD;f=K(Bg,2);g=f.data;h=new Ch;i=K(Bg,2);j=i.data;j[0]=DI(Ba(1,E(3281),E(631)));j[1]=DI(Ba(1,E(3282),E(3283)));Cj(h,i);g[0]=h;k=new Ch;i=K(Bg,2);j=i.data;j[0]=DI(Ba(1,E(3284),E(3283)));j[1]=DI(Ba(1,E(3285),E(631)));Cj(k,i);g[1]=k;Eb(e,f);d[2]=e;e=new DD;f=K(Bg,3);j=f.data;k=new Ch;g=K(Bg,2);i=g.data;i[0]=Ba(1,E(3276),E(633));i[1]=Ba(1,E(3277),E(3278));Cj(k,g);j[0]=k;k=new Ch;g=K(Bg,1);g.data[0]=Ba(1,E(3279), +E(3278));Cj(k,g);j[1]=k;j[2]=Ba(1,E(3280),E(633));Eb(e,f);d[3]=e;d[4]=Bc(E(82));d[5]=Ba(1,E(565),E(566));d[6]=BR();return BT(b,c);},DRp=(a,b)=>{return null;},EuC=a=>{AOR();return CpY;},DLd=(a,b,c,d)=>{let e,f,g,h,i,j;b=b;e=a.bHB;f=(C8(DB(c))).bGP;d=Ei(e,f);e=ACl(ABT(a),(L9(c)).bGP);f=ATB(c,R(d,E(565),0),1);g=e;e=Be(g,1);if(e!==null)f=A31(f,Be(g,0));g=R(d,E(554),0);h=Ck(d,E(630),0);c=null;if(h!==null)c=DV(b.bGM.bGN,h);h=Ck(d,E(594),0);i=Bsh(d);j=Chv(d,1);Nk(b,j);return B2P(b,h,c,BjF(b,g),Ig(f),FD(e),i,AEy(Ck(d, +E(632),0)));},DS2=()=>{CpY=Bv(BB(Bi,[E(900),E(866),E(1272)]));CGp=HO(new DoZ);},B3P=N(Bl),EMu=a=>{FY();return G6;},CYr=()=>{CM();return HQ(E1);},E8w=(a,b,c)=>{return null;},EGs=(a,b,c,d,e)=>{let f,g;b=b;c=R(d,E(618),0);e=R(d,E(624),0);f=Iw(CYr(),d,b.bGM.bGN);g=null;if(R(d,E(578),0)!==null)g=FD(R(d,E(578),0));d=FW(b.b$G,c);if(d===null){b=new S;T(b);H(H(b,E(3290)),c);b=B5(Q(b));}else{c=FW(b.b$G,e);if(c===null){b=new S;T(b);H(H(b,E(3290)),e);b=B5(Q(b));}else{CM();e=DQ(f,E1);if(e===null){e=Vt(b);B8();e=B0(e,Du(B8V, +g));B9();e=(BJ(e,Cz)).cu(b.bGM.bGN);}b=b.cre;f=new CNW;f.cSV=d;f.cSW=c;f.c5e=e;if(e===null){b=new Bt;X(b);J(b);}U(b,f);b=By();}}return b;},Bwi=N(Bl),ChK=null,Bcb=()=>{Bcb=Z(Bwi);FfN();},DXj=a=>{Bcb();return ChK;},D_L=(a,b,c,d,e)=>{return By();},FfN=()=>{ChK=Bv(BB(Bi,[E(14),E(250),E(580)]));},Br0=N(Bl),C8k=null,BkJ=()=>{BkJ=Z(Br0);FkP();},DEn=a=>{BkJ();return C8k;},Fln=(a,b,c,d,e)=>{return By();},FkP=()=>{let b;b=K(Bi,1);b.data[0]=E(21);C8k=Bv(b);},BPd=N(Bl),Dzz=a=>{FY();return G6;},E0B=(a,b,c,d,e)=>{let f,g, +h;b=b;c=R(d,E(563),0);d=CPE(R(d,E(277),1));e=FW(b.bQG,c);if(e===null){e=CXU(c,b.bGM);Es(b.bQG,c,e);}a:{if(ANa(b)!==null){f=Br(b.b1H);b:{c:{while(Bq(f)){if((Bm(f)).b9A.et(c))break c;}g=0;break b;}g=1;}if(g){b=B5(E(3291));break a;}EQ((ANa(b)).b9A,c);if(VY(b)===null){BEb(e,d);b=By();break a;}}if(!(b.bLb.bGJ&&VY(b)!==null)){BEb(e,d);Dha(e,DG(d,E(3292)));b=By();}else{if(!b.bLb.bGJ){h=AMH(b,E(14));A6W(h);AHR(e,h,DG(d,E(3292)));A7d(b.bUl,e.bQL);C_n(e);}else if(VY(b)===null)Dha(e,DG(d,E(3292)));else{AHR(e,VY(b),DG(d, +E(3292)));A7d(b.bUl,e.bQL);}BEb(e,d);b=By();}}return b;},Bfz=N(Bl),BIx=null,A4o=()=>{A4o=Z(Bfz);EMl();},EWN=a=>{A4o();return BIx;},DNj=a=>{A4o();return BIx;},EP_=(a,b,c,d,e)=>{b=b;c=R(d,E(563),0);e=Br(b.bTU);a:{b:{while(true){if(!Bq(e))break b;if(Bm(e) instanceof BeW)break;}b=B5(E(3293));break a;}d=new BeW;d.b9A=G$();d.cJ2=c;Ik(b.bTU,0,d);U(b.b1H,d);b=By();}return b;},EMl=()=>{let b;b=K(Bi,1);b.data[0]=E(653);BIx=Bv(b);},Bnf=N(Bl),B7R=null,BaJ=()=>{BaJ=Z(Bnf);Dty();}; +let E_4=a=>{BaJ();return B7R;},EQJ=a=>{BaJ();return B7R;},Fe7=(a,b,c,d,e)=>{let f;a:{b=b;c=R(d,E(563),0);if(ANa(b)!==null)b=B5(E(3294));else{e=Br(b.bTU);b:{while(true){if(!Bq(e))break b;if(Bm(e) instanceof Bl7)break;}b=B5(E(3295));break a;}if(!b.bLb.bGJ&&!b.b1H.bGJ){d=null;e=(Gc(b.bQG)).dX();while(e.dY()){f=e.dZ();if(BH0(f)){if(d===null){d=AMH(b,E(14));A6W(d);}BMH(f,d);}}}c=AMH(b,c);Ik(b.bTU,0,c);b=By();}}return b;},Dty=()=>{let b;b=K(Bi,1);b.data[0]=E(655);B7R=Bv(b);},BFh=N(Bl),Ff5=a=>{FY();return G6;},El_ +=(a,b,c,d,e)=>{let f,g,h;b=b;c=R(d,E(657),0);d=R(d,E(659),0);e=FW(b.bQG,c);if(e===null){if(b.bLb.bGJ){b=new S;T(b);H(H(b,E(3296)),c);b=B5(Q(b));}else{c=AMH(b,c);e=CXU(d,b.bGM);Es(b.bQG,d,e);AHR(e,c,E(14));A7d(b.bUl,e.bQL);b=By();}}else{if(BH0(e)){if(!b.bLb.bGJ)A6W(AMH(b,E(14)));BMH(e,Be(b.bLb,0));}a:{b:{f=Boq(e);g=Rv(b.bLb,f);if(g!=(-1)){c=b.bLb;if(g<(c.bGJ-1|0))break b;}c=null;break a;}c=Be(c,g+1|0);}if(!(c!==null&&!c.bZG))c=AMH(b,E(14));f=FW(b.bQG,d);A6W(c);if(f===null){f=Dp$(d,e.bQL,b.bGM);Es(b.bQG,d,f);AHR(e, +c,E(14));AHR(f,c,E(14));}else{d=e.bQx;if(d.bHv>0){h=ALw(AJ5(Z$(d)));Es(e.bQx,h,E(14));}AHR(e,c,Dn8(e));AHR(f,c,Dn8(f));}A7d(b.bUl,f.bQL);b=By();}return b;},BxA=N(Bl),DnQ=null,AYv=()=>{AYv=Z(BxA);EYG();},EFz=()=>{let b,c,d;AYv();b=BN(Bo(BxA));c=K(Bg,12);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Ba(1,E(563),E(3297));d[3]=Bd();d[4]=Bc(E(684));d[5]=Bd();d[6]=Bc(E(3298));d[7]=Ba(1,E(696),E(3299));d[8]=Bc(E(3298));d[9]=Bd();d[10]=Bc(E(652));d[11]=BR();return BT(b,c);},E47=a=>{AYv();return DnQ;},DI7=(a,b,c,d,e)=>{b=b;c=R(d, +E(563),0);d=R(d,E(696),0);if(BG(E(3292),c)&&VY(b)!==null)(VY(b)).cXH=d;if(BG(E(362),c)&&VY(b)!==null)(VY(b)).css=BG(E(3300),d);if(BG(E(944),c)){e=d===null?null:Eu(b.bGM.bGN,d);if(ANa(b)!==null)(ANa(b)).cRl=e;else if(VY(b)!==null)(VY(b)).cYl=e;}if(BG(E(744),c)){if(ANa(b)!==null)(ANa(b)).cs8=d;else (VY(b)).cUo=d;}return By();},EYG=()=>{DnQ=Bv(BB(Bi,[E(3292),E(944),E(744),E(362)]));},Bxn=N(Bl),DlU=null,BuG=()=>{BuG=Z(Bxn);DOq();},Ef0=a=>{BuG();return DlU;},E6x=(a,b,c,d,e)=>{b=b.bTU;if(b.bGJ>0)EJ(b,0);return By();},DOq +=()=>{let b;b=K(Bi,1);b.data[0]=E(582);DlU=Bv(b);},BA$=N(Bl),Dg0=null,A$1=()=>{A$1=Z(BA$);EDR();},C13=()=>{A$1();CM();return HQ(C6);},EMx=(a,b,c)=>{let d,e,f,g,h,i,j;d=R(c,E(661),0);e=R(c,E(554),0);f=R(c,E(594),0);g=R(c,E(664),0);h=R(c,E(578),0);if(h===null)h=R(c,E(667),0);i=Ck(c,E(608),0);j=new S;T(j);L(j,E(3301));if(d!==null)L(j,E(3302));L(j,e);L(j,E(3303));L(j,f);L(j,E(1762));if(g!==null){L(j,E(2242));L(j,g);L(j,E(1268));}if(h!==null){L(j,E(3245));L(j,h);}if(i!==null){L(j,E(3267));L(j,i);}return Q(j);},Ek5 +=a=>{A$1();return Dg0;},DxU=(a,b,c,d,e)=>{let f,g,h,i,j,k;b=b;c=R(d,E(661),0);e=R(d,E(594),0);f=R(d,E(664),0);if(f===null)f=E(14);g=null;if(R(d,E(578),0)!==null)g=FD(R(d,E(578),0));else if(R(d,E(667),0)!==null)g=FD(R(d,E(667),0));a:{b:{c:{d:{e:{h=Vq(R(d,E(554),0));AYq();h=Ss(Bo(AUc),h);d=Iw(C13(),d,b.bGM.bGN);BY_();switch(Dp6.data[h.bGO]){case 1:break e;case 2:break d;case 3:break c;default:}b=BY(h);c=new S;T(c);H(H(c,E(3304)),b);b=B5(Q(c));break a;}i=c===null?0:1;CM();j=DQ(d,C6);c=new CLx;h=b.bGM;d=b.bLJ;k +=!(!b.bV8&&!i)?1:0;CV();BMM(c,f,h,d,k,g,j,BxL,2.5);Es(b.bPo,e,c);b.b6O=c;break b;}i=c===null?0:1;CM();j=DQ(d,C6);c=new C8r;h=b.bGM;d=b.bLJ;k=!(!b.bV8&&!i)?1:0;CV();BMM(c,f,h,d,k,g,j,Bjl,1.0);Es(b.bPo,e,c);b.b6O=c;break b;}i=c===null?0:1;CM();j=DQ(d,C6);c=new C$F;h=b.bGM;d=b.bLJ;k=!(!b.bV8&&!i)?1:0;CV();BMM(c,f,h,d,k,g,j,AIz,1.0);Es(b.bPo,e,c);b.b6O=c;}b=By();}return b;},EDR=()=>{Dg0=Bv(BB(Bi,[E(3305),E(736),E(785),E(731)]));},Bk4=N(Bl),DbQ=null,Bbk=()=>{Bbk=Z(Bk4);Frs();},E0z=()=>{let b,c,d,e,f,g,h,i;Bbk();b +=BN(Bo(Bk4));c=K(Bg,18);d=c.data;d[0]=BL();e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=Ba(1,E(661),E(662));h[1]=Bw();Cj(f,g);C3(e,f);d[1]=e;d[2]=Ba(0,E(554),E(737));d[3]=Bw();i=new C0;f=new Ch;g=K(Bg,4);h=g.data;h[0]=Ba(1,E(664),E(603));h[1]=Bw();h[2]=Bc(E(665));h[3]=Bw();Cj(f,g);C3(i,f);d[4]=i;d[5]=Ba(1,E(594),E(666));d[6]=Bw();d[7]=Bc(E(3306));d[8]=Bw();d[9]=Bc(E(3307));d[10]=Bw();d[11]=Ba(1,E(3308),E(3309));i=new C0;f=new Ch;g=K(Bg,4);h=g.data;h[0]=Bw();h[1]=Bc(E(3310));h[2]=Bw();h[3]=Ba(1,E(3311),E(3309));Cj(f, +g);C3(i,f);d[12]=i;i=new C0;f=new Ch;g=K(Bg,4);h=g.data;h[0]=Bw();h[1]=Bc(E(3312));h[2]=Bw();h[3]=Ba(1,E(3313),E(3309));Cj(f,g);C3(i,f);d[13]=i;d[14]=Bd();d[15]=D2(E(567));d[16]=Bd();d[17]=BR();return BT(b,c);},D8G=(a,b,c)=>{let d,e,f,g,h,i,j,k;d=R(c,E(661),0);e=R(c,E(594),0);f=R(c,E(664),0);g=R(c,E(3308),0);h=R(c,E(3311),0);i=R(c,E(3313),0);j=R(c,E(567),0);k=new S;T(k);if(d===null)L(k,E(3314));else L(k,E(3315));L(k,e);L(k,E(1762));if(f!==null){L(k,E(2242));L(k,f);L(k,E(1268));}L(k,E(3316));L(k,g);if(h!==null) +{L(k,E(3317));L(k,h);}if(i!==null){L(k,E(3318));L(k,i);}if(j!==null){L(k,E(3245));L(k,j);}return Q(k);},Dki=(a,b)=>{if(b===null){MN();return A44;}return BfE(b);},E42=a=>{Bbk();return DbQ;},EGc=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n;b=b;e=R(d,E(661),0);f=R(d,E(594),0);g=BfE(R(d,E(3308),0));c=Dki(a,R(d,E(3311),0));h=Dki(a,R(d,E(3313),0));i=R(d,E(664),0);if(i===null)i=E(14);d=R(d,E(567),0);j=null;if(d!==null)j=FD(d);k=new C7L;l=b.bGM;m=b.bLJ;n=b.bV8;d=null;CV();Bqz(k,i,l,m,n,j,d,BkK,30);k.cxU=g;k.cKI=c;k.cRm=h;Es(b.bPo, +f,k);C9(b.cuY,f,k);c=new Xf;NV();XG(c,g,Yk);Cq4(b.bLJ,c);return By();},Frs=()=>{DbQ=Bv(BB(Bi,[E(737),E(3305)]));},Bx3=N(Bl),B9t=null,A3O=()=>{A3O=Z(Bx3);DuS();},DXX=()=>{let b,c,d,e,f,g,h,i,j,k,l;A3O();b=BN(Bo(Bx3));c=K(Bg,12);d=c.data;d[0]=BL();e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=Ba(1,E(661),E(662));h[1]=Bw();Cj(f,g);C3(e,f);d[1]=e;d[2]=Bc(E(711));d[3]=Bw();d[4]=Ba(1,E(664),E(603));d[5]=D2(E(578));i=new C0;f=new Ch;j=K(Bg,8);h=j.data;e=new DD;g=K(Bg,2);k=g.data;k[0]=Bc(E(3237));k[1]=Bc(E(3319));Eb(e, +g);h[0]=e;h[1]=Bw();h[2]=Ba(1,E(2472),E(3320));h[3]=Bw();l=new DD;g=K(Bg,2);k=g.data;k[0]=Bc(E(3238));k[1]=Bc(E(3262));Eb(l,g);h[4]=l;h[5]=Bw();h[6]=Ba(1,E(3239),E(3320));h[7]=Bw();Cj(f,j);C3(i,f);d[6]=i;d[7]=Bc(E(665));d[8]=Bw();d[9]=Ba(1,E(594),E(666));d[10]=D2(E(667));d[11]=BR();return BT(b,c);},Fsl=(a,b,c)=>{let d,e,f,g,h,i,j;d=R(c,E(661),0);e=R(c,E(594),0);f=R(c,E(664),0);g=R(c,E(578),0);if(g===null)g=R(c,E(667),0);h=R(c,E(2472),0);i=R(c,E(3239),0);j=new S;T(j);if(d===null)L(j,E(3321));else L(j,E(3322));L(j, +e);L(j,E(1762));if(f!==null){L(j,E(2242));L(j,f);L(j,E(1268));}if(g!==null){L(j,E(3245));L(j,g);}if(h!==null&&i!==null){L(j,E(3323));L(j,h);L(j,E(95));L(j,i);}return Q(j);},DRD=a=>{A3O();return B9t;},E7P=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o;b=b;c=R(d,E(661),0);e=R(d,E(594),0);f=R(d,E(664),0);g=null;if(R(d,E(578),0)!==null)g=FD(R(d,E(578),0));else if(R(d,E(667),0)!==null)g=FD(R(d,E(667),0));h=new BWS;i=b.bGM;c=b.bLJ;j=b.bV8;k=null;CV();Bqz(h,f,i,c,j,g,k,ByG,100);c=new Csp;c.cb6=AAk();h.clK=c;h.cyg=Bk();Es(b.bPo, +e,h);b=R(d,E(2472),0);c=R(d,E(3239),0);if(b!==null&&c!==null){d=h.clK;d.cPk=DL(DM(b));d.cWZ=DL(DM(c));b=Do4(b);c=Do4(c);if(c!==null){j=!(!b.cg5&&!c.cg5)?1:0;l=b.cht;if(!l)l=c.cht;m=b.b19;if(!m)m=c.b19;else{n=c.b19;if(n&&m!=n)m=0;}n=DO(b.b8M,c.b8M);o=DT(b.cfd,c.cfd);if(m&&l&&m==l)m=0;b=BBt(j,m,l,n,o);}c=new BSH;RX();C7T(c,AVF);j=b.cht;if(j)c.bTp=j;j=b.b19;if(j)c.bV1=j;e=new S;T(e);if(b.cg5)L(e,E(866));if(!b.b19)L(e,E(35));else L(e,E(3324));a:{if(b.b8M>0){L(e,E(423));j=0;while(true){if(j>=b.b8M)break a;L(e,E(35));j +=j+1|0;}}}f=Cyk(Q(e),c);j=!b.b19?0:1;c=f;c.bTV=j;BL9(c,b.b8M);B7d(c,b.cfd);d.cMd=f;}return By();},DuS=()=>{B9t=Bv(BB(Bi,[E(711),E(3305)]));},BuP=N(Bl),CCt=null,Bhk=()=>{Bhk=Z(BuP);FjP();},D32=(a,b,c)=>{let d,e,f,g,h;d=R(c,E(661),0);e=R(c,E(594),0);f=R(c,E(664),0);g=R(c,E(578),0);if(g===null)g=R(c,E(667),0);h=new S;T(h);if(d===null)L(h,E(3325));else L(h,E(3326));L(h,e);L(h,E(1762));if(f!==null){L(h,E(2242));L(h,f);L(h,E(1268));}if(g!==null){L(h,E(3245));L(h,g);}return Q(h);},EID=a=>{Bhk();return CCt;}; +let ETd=(a,b,c,d,e)=>{let f,g,h,i,j;b=b;c=R(d,E(661),0);e=R(d,E(594),0);f=R(d,E(664),0);if(f===null)f=E(14);g=null;if(R(d,E(578),0)!==null)g=FD(R(d,E(578),0));else if(R(d,E(667),0)!==null)g=FD(R(d,E(667),0));c=new CSR;h=b.bGM;d=b.bLJ;i=b.bV8;j=null;CV();Bqz(c,f,h,d,i,g,j,BoM,30);c.cxd=Bk();c.cFo=AAk();Es(b.bPo,e,c);return By();},FjP=()=>{CCt=Bv(BB(Bi,[E(668),E(3305)]));},B2y=N(Bl),EDY=a=>{FY();return G6;},Eng=()=>{let b,c,d;b=BN(Bo(B2y));c=K(Bg,8);d=c.data;d[0]=BL();d[1]=Ba(1,E(3327),E(666));d[2]=Bw();d[3]= +Bc(E(3328));d[4]=Bw();d[5]=Ba(1,E(261),E(3329));d[6]=Ba(3,E(3330),E(3331));d[7]=BR();return BT(b,c);},D97=(a,b,c)=>{let d,e,f,g,h;a:{d=R(c,E(3327),0);e=R(c,E(261),0);f=new S;T(f);L(f,E(3332));L(f,e);L(f,E(3333));L(f,d);L(f,E(1762));g=R(c,E(3330),0);if(g!==null){h=M0(g,E(349));while(true){if(!JO(h))break a;L(f,E(3334));L(f,H5(h));L(f,E(1762));}}}return Q(f);},EnW=(a,b,c,d,e)=>{b=b;c=R(d,E(3327),0);b=Wj(b,c);if(b===null){b=new S;T(b);H(H(b,E(3335)),c);b=B5(Q(b));}else{a:{c=R(d,E(261),0);b.Lr(c,c);d=R(d,E(3330), +0);if(d!==null){e=M0(d,E(349));while(true){if(!JO(e))break a;c=H5(e);b.Lr(c,c);}}}b=By();}return b;},BDn=N(Bl),Eaa=a=>{FY();return G6;},DQ8=()=>{let b,c,d;b=BN(Bo(BDn));c=K(Bg,11);d=c.data;d[0]=BL();d[1]=Ba(1,E(3327),E(666));d[2]=Bw();d[3]=Bc(E(3328));d[4]=Bw();d[5]=Ba(1,E(470),E(603));d[6]=Bw();d[7]=Bc(E(665));d[8]=Bw();d[9]=Ba(1,E(261),E(666));d[10]=BR();return BT(b,c);},Fm5=(a,b,c)=>{let d,e,f;d=R(c,E(3327),0);e=R(c,E(470),0);f=R(c,E(261),0);b=new S;T(b);Bb(H(H(H(H(H(H(b,E(3332)),f),E(3336)),e),E(3337)), +d),39);return Q(b);},Eez=(a,b,c,d,e)=>{b=b;c=R(d,E(3327),0);b=Wj(b,c);if(b===null){b=new S;T(b);H(H(b,E(3335)),c);b=B5(Q(b));}else{c=R(d,E(470),0);b.Lr(R(d,E(261),0),c);b=By();}return b;},Ba8=N(Bl),B5E=()=>{CM();return HQ(C6);},COt=(a,b,c,d,e)=>{let f,g,h;f=R(c,E(2402),0);g=Iw(B5E(),c,b.bGM.bGN);if(R(c,E(3338),0)===null){h=K(Bi,1);h.data[0]=Ck(c,E(261),0);}else{b=R(c,E(3338),0);h=BB(Bi,[b,R(c,E(3338),1)]);}d.Ls(e,f,g,h);return By();},CIf=b=>{let c,d;if(R(b,E(3338),0)===null){if(R(b,E(3339),0)===null){if(R(b, +E(3340),0)===null){if(R(b,E(3341),0)===null){if(R(b,E(3342),0)===null){c=Ck(b,E(261),0);b=new S;T(b);Bb(H(H(b,E(3343)),c),39);return Q(b);}return E(3344);}return E(3345);}return E(3346);}return E(3347);}c=R(b,E(3338),0);b=R(b,E(3338),1);d=new S;T(d);Bb(H(H(H(H(d,E(3348)),c),E(2380)),b),39);return Q(d);},CHO=()=>{let b,c,d;b=new DD;c=K(Bg,7);d=c.data;d[0]=Ba(1,E(3349),E(2805));d[1]=Ba(1,E(3350),E(3351));d[2]=Ba(1,E(3339),E(3352));d[3]=Ba(1,E(3340),E(3353));d[4]=Ba(1,E(3341),E(3354));d[5]=Ba(1,E(3342),E(3355));d[6] +=Ba(2,E(3338),E(3356));Eb(b,c);return b;},B7W=N(Ba8),D5U=a=>{FY();return G6;},DVE=()=>{let b,c,d,e,f,g,h;b=BN(Bo(B7W));c=K(Bg,12);d=c.data;d[0]=BL();d[1]=Ba(1,E(594),E(3357));d[2]=Bd();d[3]=Bc(E(2512));d[4]=Bd();d[5]=CHO();d[6]=Bd();d[7]=(B5E()).bH3;d[8]=Bd();e=new C0;f=new Ch;g=K(Bg,4);h=g.data;h[0]=Bd();h[1]=Bc(E(82));h[2]=Bd();h[3]=Ba(1,E(2402),E(2403));Cj(f,g);C3(e,f);d[9]=e;d[10]=Bd();d[11]=BR();return BT(b,c);},D8T=(a,b,c)=>{let d,e,f,g,h;d=R(c,E(594),0);e=CIf(c);f=Ck(c,E(608),0);g=R(c,E(2402),0);h=new S;T(h);L(h, +E(3358));L(h,d);L(h,E(2715));L(h,e);if(f!==null){L(h,E(3267));L(h,f);}if(g!==null&&!CQ(g)){L(h,E(2366));L(h,g);L(h,E(1268));}return Q(h);},E3x=(a,b,c,d,e)=>{b=b;c=R(d,E(594),0);e=Wj(b,c);if(e!==null){c=b.bWU;b=COt(a,b,d,e,c);}else{b=new S;T(b);Bb(H(H(b,E(3359)),c),34);b=B5(Q(b));}return b;},BZw=N(Ba8),DL8=a=>{FY();return G6;},EPZ=()=>{let b,c,d,e,f,g,h;b=BN(Bo(BZw));c=K(Bg,13);d=c.data;d[0]=BL();d[1]=Bd();d[2]=BAl(E(3360));d[3]=Bd();d[4]=Bc(E(2512));d[5]=Bd();d[6]=CHO();d[7]=Bd();d[8]=(B5E()).bH3;d[9]=Bd();e +=new C0;f=new Ch;g=K(Bg,4);h=g.data;h[0]=Bd();h[1]=Bc(E(82));h[2]=Bd();h[3]=Ba(1,E(2402),E(2403));Cj(f,g);C3(e,f);d[10]=e;d[11]=Bd();d[12]=BR();return BT(b,c);},EHh=(a,b,c)=>{let d,e,f,g,h;d=AE8(E(3360),c);e=CIf(c);f=Ck(c,E(608),0);g=R(c,E(2402),0);h=new S;T(h);L(h,E(3361));L(h,e);L(h,E(1761));L(h,d);if(f!==null){L(h,E(3267));L(h,f);}if(g!==null&&!CQ(g)){L(h,E(2366));L(h,g);L(h,E(1268));}return Q(h);},EN7=(a,b,c,d,e)=>{let f;b=b;f=b.b6O;if(f===null)b=B5(E(3362));else{c=ADZ(E(3360),d,b);C8f(b,c,null);b=COt(a, +b,d,f,c);}return b;},Bg7=N(Bl),CXA=null,A8e=()=>{A8e=Z(Bg7);D9q();},Ern=()=>{let b,c,d,e,f,g,h;A8e();b=BN(Bo(Bg7));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Bpu(E(3360));e=new C0;f=new Ch;g=K(Bg,5);h=g.data;h[0]=Bw();h[1]=Bc(E(665));h[2]=Bw();h[3]=Bc(E(82));h[4]=Ba(1,E(594),E(597));Cj(f,g);C3(e,f);d[2]=e;d[3]=Bd();d[4]=BR();return BT(b,c);},D0j=(a,b,c)=>{let d,e,f;d=AE8(E(3360),c);e=R(c,E(594),0);f=new S;T(f);L(f,E(3363));L(f,d);if(e!==null){L(f,E(3364));L(f,e);L(f,E(1762));}return Q(f);},DDF=a=>{A8e();return CXA;},D8O +=(a,b,c,d,e)=>{b=b;c=ADZ(E(3360),d,b);if(c===null)b=B5(E(3365));else{C8f(b,c,R(d,E(594),0));b=By();}return b;},D9q=()=>{let b;b=K(Bi,1);b.data[0]=E(2443);CXA=Bv(b);},BA0=N(Bl),Dsd=null,A1D=()=>{A1D=Z(BA0);D8z();},EQ4=()=>{let b,c,d;A1D();b=BN(Bo(BA0));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Bc(E(2443));d[2]=Ba(1,E(3327),E(3357));d[3]=Bd();d[4]=BR();return BT(b,c);},D3l=(a,b,c)=>{let d;d=R(c,E(3327),0);b=new S;T(b);Bb(H(H(b,E(3366)),d),39);return Q(b);},Ece=a=>{A1D();return Dsd;},Ffx=(a,b,c,d,e)=>{b=b;c=R(d,E(3327), +0);d=Wj(b,c);if(d!==null){b.b6O=d;b=By();}else{b=new S;T(b);H(H(b,E(3367)),c);b=B5(Q(b));}return b;},D8z=()=>{let b;b=K(Bi,1);b.data[0]=E(2443);Dsd=Bv(b);},BHC=N(Bl),EmV=a=>{FY();return G6;},DvW=()=>{let b,c,d,e,f,g,h;b=BN(Bo(BHC));c=K(Bg,14);d=c.data;d[0]=BL();d[1]=Ba(1,E(2267),E(3357));d[2]=DfY(E(3368));d[3]=Bd();d[4]=Ba(1,E(3369),E(619));d[5]=Ba(1,E(620),E(621));d[6]=Ba(0,E(3370),E(623));d[7]=Bd();d[8]=Ba(1,E(2289),E(3357));d[9]=DfY(E(3371));d[10]=Bd();e=new C0;f=new Ch;g=K(Bg,3);h=g.data;h[0]=Bc(E(82));h[1] +=Bd();h[2]=Ba(1,E(2297),E(566));Cj(f,g);C3(e,f);d[11]=e;d[12]=Bd();d[13]=BR();return BT(b,c);},D6N=(a,b,c)=>{let d,e,f,g,h;d=R(c,E(2267),0);e=R(c,E(2289),0);f=Ck(c,E(620),0);g=R(c,E(2297),0);h=new S;T(h);L(h,E(3372));L(h,d);L(h,E(1762));if(CB$(E(3368),c)){L(h,E(1761));L(h,AE8(E(3368),c));}L(h,E(3373));L(h,e);L(h,E(1762));if(CB$(E(3371),c)){L(h,E(1761));L(h,AE8(E(3371),c));}if(f!==null){L(h,E(3374));L(h,f);}if(g!==null&&!CQ(g)){L(h,E(2366));L(h,g);L(h,E(1268));}return Q(h);},CB$=(b,c)=>{let d,e;a:{b:{d=new S;T(d);H(H(d, +b),E(594));if(R(c,Q(d),0)===null){d=new S;T(d);H(H(d,b),E(3375));if(R(c,Q(d),0)===null){d=new S;T(d);H(H(d,b),E(3376));if(R(c,Q(d),0)===null){d=new S;T(d);H(H(d,b),E(3377));if(R(c,Q(d),0)===null){d=new S;T(d);H(H(d,b),E(3378));if(R(c,Q(d),1)===null)break b;}}}}e=1;break a;}e=0;}return e;},DME=(a,b,c,d,e)=>{let f,g,h,i,j;b=b;e=Wj(b,R(d,E(2267),0));if(e===null){b=R(d,E(2267),0);c=new S;T(c);H(H(c,E(3379)),b);b=B5(Q(c));}else{f=Wj(b,R(d,E(2289),0));if(f===null){b=R(d,E(2289),0);c=new S;T(c);H(H(c,E(3379)),b);b +=B5(Q(c));}else{g=ADZ(E(3368),d,b);h=ADZ(E(3371),d,b);c=R(d,E(2297),0);i=new CEP;j=DlH(e,g);g=DlH(f,h);e=b.bGM;BJy(i);i.cZW=e;f=e;i.cny=B1(f);i.cGJ=j;i.cGI=g;i.cKi=B4(f.bH$,c);if(i.cny===null){Go();c=YS;}else{e=Cws(i);B9();c=(BJ(e,Cz)).cu(i.cZW.bGN);}CQO(i,c);e=new H6;FU();c=Hf;Mo(e,c,c);i.bMK=e;U(b.cFO,i);b=Ck(d,E(620),0);U5(i,b);b=By();}}return b;},Bpo=N(Bl); +let CGl=null,A4a=()=>{A4a=Z(Bpo);D$5();},Dt5=()=>{let b,c,d,e,f;A4a();b=BN(Bo(Bpo));c=K(Bg,18);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(584));d[3]=Bw();d[4]=Ba(1,E(585),E(3380));d[5]=Bw();d[6]=Bc(E(2798));d[7]=Bw();d[8]=Ba(1,E(594),E(3357));d[9]=Bd();e=new ER;f=new S;T(f);Bb(H(f,E(2550)),63);Fh(e,4,E(2573),Q(f));d[10]=e;d[11]=D2(E(567));d[12]=Bd();d[13]=Bc(E(82));d[14]=Bd();d[15]=Ba(1,E(455),E(2540));d[16]=Bd();d[17]=BR();return BT(b,c);},E6T=(a,b,c)=>{let d,e,f,g,h,i;d=R(c,E(594),0);e=R(c,E(585),0);f=R(c,E(455), +0);g=R(c,E(567),0);h=R(c,E(2573),0);i=new S;T(i);L(i,E(3381));L(i,e);L(i,E(3382));L(i,d);L(i,E(1762));if(f!==null){L(i,E(2366));L(i,f);L(i,E(1268));}if(g!==null){L(i,E(3245));L(i,g);}if(h!==null&&!CQ(h)){L(i,E(3246));L(i,h);L(i,E(2251));}return Q(i);},DF0=a=>{A4a();return CGl;},Dt9=(a,b,c,d,e)=>{let f,g;b=b;c=R(d,E(594),0);e=Wj(b,c);if(e===null){b=new S;T(b);Bb(H(H(b,E(3359)),c),34);b=B5(Q(b));}else{c=B4(Cf(b),R(d,E(455),0));f=b.bWU;b=R(d,E(567),0);g=null;if(b!==null)g=FD(b);ChN(e,f,c,DrR(R(d,E(585),0)),g);b +=By();}return b;},D$5=()=>{let b;b=K(Bi,1);b.data[0]=E(584);CGl=Bv(b);},BrU=N(EP),C7v=null,B9l=null,A5k=()=>{A5k=Z(BrU);ExU();},DDP=a=>{let b,c,d,e,f;A5k();b=BN(Bo(BrU));c=K(Bg,13);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(584));d[3]=Bw();d[4]=Ba(1,E(585),E(3380));d[5]=Bw();d[6]=Bc(E(2798));d[7]=Bw();d[8]=Ba(1,E(594),E(3357));d[9]=Bd();d[10]=D2(E(567));d[11]=Bd();d[12]=BR();e=BT(b,c);HE();f=Kl;HA();Iy(a,e,f,G0,B9l);},Edx=()=>{let a=new BrU();DDP(a);return a;},D0F=(a,b)=>{let c,d,e,f,g,h;c=a.bHB;d=(C8(DB(b))).bGP;e +=Ei(c,d);if(e!==null){d=R(e,E(594),0);c=R(e,E(585),0);f=R(e,E(567),0);g=Dq(b)<=2?0:Dq(b)-2|0;h=new S;T(h);L(h,E(3381));L(h,c);L(h,E(3382));L(h,d);L(h,E(1762));L(h,E(2592));BE(h,g);L(h,E(3244));if(f!==null){L(h,E(3245));L(h,f);}return Q(h);}return E(2360);},DEU=a=>{A5k();return C7v;},Dyn=(a,b,c,d)=>{let e,f,g;b=b;e=a.bHB;f=(C8(DB(c))).bGP;d=Ei(e,f);c=JL(HI(c,1,1));f=R(d,E(594),0);e=Wj(b,f);if(e===null){b=new S;T(b);Bb(H(H(b,E(3359)),f),34);b=B5(Q(b));}else{c=Ig(c);g=b.bWU;b=R(d,E(567),0);f=null;if(b!==null)f +=FD(b);ChN(e,g,c,DrR(R(d,E(585),0)),f);b=By();}return b;},ExU=()=>{let b;b=K(Bi,1);b.data[0]=E(584);C7v=Bv(b);B9l=HO(new B_V);},BMD=N(Bl),DSO=a=>{FY();return G6;},EpV=()=>{let b,c,d,e,f,g,h;b=BN(Bo(BMD));c=K(Bg,15);d=c.data;d[0]=BL();d[1]=Ba(2,E(2267),E(3383));d[2]=Bpu(E(3368));d[3]=Bd();d[4]=Bc(E(3006));d[5]=LZ(1,E(619));d[6]=Ba(1,E(2275),AIZ());d[7]=LZ(1,E(622));d[8]=Bc(E(623));d[9]=Bd();d[10]=Bpu(E(3371));d[11]=Bd();e=new C0;f=new Ch;g=K(Bg,3);h=g.data;h[0]=Bc(E(82));h[1]=Bd();h[2]=Ba(1,E(2297),E(566));Cj(f, +g);C3(e,f);d[12]=e;d[13]=Bd();d[14]=BR();return BT(b,c);},Fct=(a,b,c)=>{let d,e,f,g,h,i;d=R(c,E(2267),0);e=AE8(E(3368),c);f=AE8(E(3371),c);g=Ck(c,E(620),0);h=R(c,E(2297),0);i=new S;T(i);L(i,E(3384));L(i,e);L(i,E(95));L(i,f);if(d!==null){L(i,E(3385));L(i,d);L(i,E(1762));}if(g!==null){L(i,E(3374));L(i,g);}if(h!==null&&!CQ(h)){L(i,E(2366));L(i,h);L(i,E(1268));}return Q(i);},Fip=(a,b,c,d,e)=>{let f,g;a:{b=b;c=R(d,E(2267),0);if(c===null){e=b.b6O;if(e===null){b=B5(E(3386));break a;}}else{e=Wj(b,c);if(e===null){b= +new S;T(b);H(H(b,E(3367)),c);b=B5(Q(b));break a;}}c=ADZ(E(3368),d,b);if(c===null)b=B5(E(3387));else{f=b.bWU;b.bWU=c;g=ADZ(E(3371),d,b);b.bWU=f;if(g===null)b=B5(E(3387));else{b=BPt();f=BZE(Ck(d,E(620),0),b);e.LI(c,g,R(d,E(2297),0),f);b=By();}}}return b;},Bw2=N(Bl),CN4=null,A1G=()=>{A1G=Z(Bw2);EFd();},D38=a=>{let b,c,d,e,f,g,h;A1G();b=BN(Bo(Bw2));c=K(Bg,13);d=c.data;d[0]=BL();d[1]=Bc(E(1961));d[2]=Bw();d[3]=Ba(1,E(3388),E(2448));e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=C6n();h[1]=Ba(1,E(3389),E(3390));Cj(f,g);C3(e, +f);d[4]=e;d[5]=Bw();d[6]=Bc(E(665));d[7]=Bw();d[8]=Ba(1,E(855),E(2448));d[9]=Bw();d[10]=Bc(E(3391));d[11]=Bd();d[12]=BR();Cb(a,BT(b,c));},DSh=()=>{let a=new Bw2();D38(a);return a;},DI1=(a,b,c)=>{let d,e,f,g,h;d=R(c,E(3388),0);e=R(c,E(3389),0);f=R(c,E(855),0);g=new S;T(g);L(g,E(3392));L(g,d);if(e===null)L(g,E(3393));else{a:{b:{c:{d:{e:{f:{g:{h:{L(g,E(344));A1G();h=(-1);switch(FP(e)){case 68:break h;case 89:break g;case 100:break f;case 104:break e;case 109:break d;case 115:break c;case 121:break b;default:}break a;}if +(!Bj(e,E(997)))break a;h=3;break a;}if(!Bj(e,E(3394)))break a;h=5;break a;}if(!Bj(e,E(996)))break a;h=4;break a;}if(!Bj(e,E(3395)))break a;h=2;break a;}if(!Bj(e,E(3231)))break a;h=1;break a;}if(!Bj(e,E(994)))break a;h=0;break a;}if(Bj(e,E(3233)))h=6;}i:{j:{k:{l:{m:{n:{switch(h){case 0:break;case 1:break n;case 2:break m;case 3:case 4:break l;case 5:case 6:break k;default:break j;}b=E(3396);break i;}b=E(3397);break i;}b=E(3398);break i;}b=E(3399);break i;}b=E(3400);break i;}b=E(3401);}L(g,b);}L(g,E(95));L(g, +f);L(g,E(1965));return Q(g);},FaC=a=>{A1G();return CN4;},D5s=(a,b,c,d,e)=>{let f,g,h,i,j;a:{b=b;f=B8N(R(d,E(3388),0));c=R(d,E(3389),0);if(c===null)g=V(1);else{b:{c:{d:{e:{f:{g:{h:{i:{h=(-1);switch(FP(c)){case 68:break i;case 89:break h;case 100:break g;case 104:break f;case 109:break e;case 115:break d;case 121:break c;default:}break b;}if(!Bj(c,E(997)))break b;h=3;break b;}if(!Bj(c,E(3394)))break b;h=5;break b;}if(!Bj(c,E(996)))break b;h=4;break b;}if(!Bj(c,E(3395)))break b;h=2;break b;}if(!Bj(c,E(3231)))break b;h +=1;break b;}if(!Bj(c,E(994)))break b;h=0;break b;}if(Bj(c,E(3233)))h=6;}j:{k:{l:{m:{n:{switch(h){case 0:break;case 1:break n;case 2:break m;case 3:case 4:break l;case 5:case 6:break k;default:break j;}g=V(1);break a;}g=V(60);break a;}g=V(3600);break a;}g=V(86400);break a;}g=V(31557600);break a;}g=V(1);}}o:{p:{q:{f=CT(f,g);i=B8N(R(d,E(855),0));j=OT(f,BH);if(j>0){h=OT(i,BH);if(h>0)break q;}b=B5(E(3402));break p;}b=b.bLJ;if(h<=0)break o;if(j<=0)break o;b.bRQ=i;b.cpv=f;b=By();}return b;}b=new Bt;X(b);J(b);},EFd +=()=>{let b;b=K(Bi,1);b.data[0]=E(1961);CN4=Bv(b);},BbB=N(Bl),C1v=null,Bb9=()=>{Bb9=Z(BbB);FlN();},EL1=a=>{let b,c,d;Bb9();b=BN(Bo(BbB));c=K(Bg,7);d=c.data;d[0]=BL();d[1]=Ba(1,E(2530),E(3403));d[2]=Bw();d[3]=Bc(E(3404));d[4]=Bc(E(3405));d[5]=Bc(E(835));d[6]=BR();Cb(a,BT(b,c));},FiT=()=>{let a=new BbB();EL1(a);return a;},D2Z=(a,b,c)=>{if(BG(E(3406),R(c,E(2530),0)))return E(3407);return E(3408);},ETw=a=>{Bb9();return C1v;},DU1=(a,b,c,d,e)=>{b=b;if(!BG(E(3406),R(d,E(2530),0))){ANY();b=Ce4(b,AYA);}else{ANY();b= +Ce4(b,B0n);}return b;},FlN=()=>{C1v=Bv(BB(Bi,[E(2219),E(3409)]));},Bh4=N(Bl),Dm2=null,A5B=()=>{A5B=Z(Bh4);Er7();},DY9=a=>{let b,c,d,e,f,g,h;A5B();b=BN(Bo(Bh4));c=K(Bg,14);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(759));d[3]=Bw();d[4]=BAl(E(3410));d[5]=Bw();d[6]=Bc(E(3262));d[7]=Bw();d[8]=BAl(E(3411));d[9]=Bd();d[10]=(Cp5()).bH3;d[11]=Bd();e=new C0;f=new Ch;g=K(Bg,3);h=g.data;h[0]=Bc(E(82));h[1]=Bd();h[2]=Ba(1,E(489),E(566));Cj(f,g);C3(e,f);d[12]=e;d[13]=BR();Cb(a,BT(b,c));},DHR=()=>{let a=new Bh4();DY9(a);return a;},Cp5 +=()=>{A5B();CM();return HQ(C6);},DIl=(a,b,c)=>{let d,e,f,g,h;d=AE8(E(3410),c);e=AE8(E(3411),c);f=Ck(c,E(608),0);g=R(c,E(489),0);h=new S;T(h);L(h,E(3412));L(h,d);L(h,E(95));L(h,e);if(f!==null){L(h,E(3267));L(h,f);}if(g!==null&&!CQ(g)){L(h,E(2366));L(h,g);L(h,E(1268));}return Q(h);},Eto=a=>{A5B();return Dm2;},E2S=(a,b,c,d,e)=>{let f,g,h;b=b;c=ADZ(E(3410),d,b);e=ADZ(E(3411),d,b);f=B4(Cf(b),R(d,E(489),0));g=Iw(Cp5(),d,b.bGM.bGN);d=b.cml;h=new Cdq;b=b.bGM;h.ckZ=c;h.cuh=e;h.c61=f;h.cyI=g;h.cfN=b;U(d,h);return By();},Er7 +=()=>{let b;b=K(Bi,1);b.data[0]=E(759);Dm2=Bv(b);}; +let BoJ=N(Bl),CFD=null,BoO=()=>{BoO=Z(BoJ);DBz();},E_6=a=>{let b,c,d;BoO();b=BN(Bo(BoJ));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Bc(E(3413));d[2]=Bw();d[3]=Bc(E(3305));d[4]=BR();Cb(a,BT(b,c));},DZo=()=>{let a=new BoJ();E_6(a);return a;},EFC=(a,b,c)=>{return E(3414);},E2R=a=>{BoO();return CFD;},ENm=(a,b,c,d,e)=>{b.bV8=1;return By();},DBz=()=>{let b;b=K(Bi,1);b.data[0]=E(3413);CFD=Bv(b);},BMA=N(Bl),Ezi=a=>{let b,c,d,e,f,g,h,i,j;b=BN(Bo(BMA));c=K(Bg,9);d=c.data;d[0]=BL();d[1]=Ba(1,E(3327),E(666));d[2]=Bw();d[3]=Bc(E(3415));d[4] +=Bw();e=new DD;f=K(Bg,2);g=f.data;g[0]=Bc(E(3416));h=new Ch;i=K(Bg,5);j=i.data;j[0]=Bc(E(3417));j[1]=Bw();j[2]=Bc(E(1842));j[3]=Bw();j[4]=Bc(E(3418));Cj(h,i);g[1]=h;Eb(e,f);d[5]=e;d[6]=Bw();d[7]=Ba(1,E(3209),E(3210));d[8]=BR();Cb(a,BT(b,c));},FfM=()=>{let a=new BMA();Ezi(a);return a;},Egm=a=>{FY();return G6;},DL6=(a,b,c)=>{let d,e;d=R(c,E(3327),0);e=R(c,E(3209),0);b=new S;T(b);H(H(H(H(b,E(3419)),d),E(2715)),e);return Q(b);},Et1=(a,b,c,d,e)=>{b=b;c=R(d,E(3327),0);b=Wj(b,c);if(b===null){b=new S;T(b);H(H(b,E(3367)), +c);b=B5(Q(b));}else{if(b instanceof BWS)b.c3J=CL(CZ(R(d,E(3209),0)));b=By();}return b;},BUb=N(Bl),FoU=a=>{let b,c,d;b=BN(Bo(BUb));c=K(Bg,11);d=c.data;d[0]=BL();d[1]=Ba(1,E(3327),E(666));d[2]=Bw();d[3]=Bc(E(2512));d[4]=Bw();d[5]=Ba(1,E(3209),E(3210));d[6]=Bw();d[7]=Bc(E(3391));d[8]=Bw();d[9]=Bc(E(363));d[10]=BR();Cb(a,BT(b,c));},DCW=()=>{let a=new BUb();FoU(a);return a;},Eu0=a=>{FY();return G6;},EWB=(a,b,c)=>{let d,e;d=R(c,E(3327),0);e=R(c,E(3209),0);b=new S;T(b);H(H(H(H(H(b,E(3420)),d),E(2715)),e),E(1965));return Q(b);},E$g +=(a,b,c,d,e)=>{b=b;c=R(d,E(3327),0);b=Wj(b,c);if(b!==null){b.bYU=CZ(R(d,E(3209),0));b=By();}else{b=new S;T(b);H(H(b,E(3367)),c);b=B5(Q(b));}return b;},Bkc=N(Bl),Cl3=null,BpJ=()=>{BpJ=Z(Bkc);EC0();},EtE=a=>{let b,c,d;BpJ();b=BN(Bo(Bkc));c=K(Bg,9);d=c.data;d[0]=BL();d[1]=Bc(E(3421));d[2]=Bd();d[3]=Bc(E(3234));d[4]=Bd();d[5]=Bc(E(3422));d[6]=Bd();d[7]=Ba(1,E(2475),E(603));d[8]=BR();Cb(a,BT(b,c));},FfC=()=>{let a=new Bkc();EtE(a);return a;},EWs=(a,b,c)=>{let d;d=R(c,E(2475),0);b=new S;T(b);Bb(H(H(b,E(3423)),d), +34);return Q(b);},DN_=a=>{BpJ();return Cl3;},D3K=(a,b,c,d,e)=>{let $$je;b=b;c=R(d,E(2475),0);a:{b:{try{d=new Brq;RX();BS9(d,c,AVF);b.c5C=d;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break b;}else{throw $$e;}}b=By();break a;}b=B5(E(3424));}return b;},EC0=()=>{Cl3=Bv(BB(Bi,[E(3421),E(3425),E(3426)]));},Bnn=N(Bl),DcG=null,A6t=()=>{A6t=Z(Bnn);ELV();},FjG=()=>{let b,c,d,e,f,g,h;A6t();b=BN(Bo(Bnn));c=K(Bg,17);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(3427));d[3]=Bd();d[4]=DI(Ba(1,E(426),E(671)));d[5]=Bd();d[6]=DI(Ba(2, +E(3428),E(3429)));d[7]=Bd();d[8]=DI(Ba(1,E(565),E(672)));d[9]=Bd();e=new C0;f=new Ch;g=K(Bg,3);h=g.data;h[0]=Bc(E(3430));h[1]=Bw();h[2]=Ba(1,E(3431),E(3210));Cj(f,g);C3(e,f);d[10]=e;d[11]=Bd();d[12]=DI(Ba(1,E(3432),E(3433)));d[13]=Bd();d[14]=DI(Ba(1,E(3434),E(3435)));d[15]=Bd();d[16]=BR();return BT(b,c);},D3w=(a,b,c)=>{return null;},DCM=a=>{A6t();return DcG;},ExG=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,$$je;a:{b=b;c=R(d,E(426),0);e=R(d,E(3428),0);f=R(d,E(3428),1);g=R(d,E(565),0);h=R(d,E(3431),0);i=R(d,E(3432), +0);d=R(d,E(3434),0);if(h!==null)b:{c:{try{j=CZ(h);if(j<=0){b=B5(E(3436));break a;}E9D(b,CL(j));break b;}catch($$e){$$je=P($$e);if($$je instanceof Ex){break c;}else{throw $$e;}}}b=B5(E(3437));break a;}if(i!==null){VP();b.cpr=A8N;}if(d!==null){VR();b.cj2=A70;By();}if(e!==null&&f!==null){d:{try{k=DM(e);l=DM(f);b=Etg(b,c,DL(k),DL(l));break a;}catch($$e){$$je=P($$e);if($$je instanceof Ex){break d;}else{throw $$e;}}}b=B5(E(3438));}else{d=Bk();if(g!==null&&!CQ(Dk(g))){m=(IW(g,E(349))).data;n=m.length;o=0;while(o{DcG=Bv(BB(Bi,[E(3395),E(2304)]));},Bgn=N(Bl),CmZ=null,ARw=()=>{ARw=Z(Bgn);DX5();},Fal=()=>{let b,c,d,e,f,g,h;ARw();b=BN(Bo(Bgn));c=K(Bg,19);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Ba(1,E(3439),E(3440));d[3]=Bd();d[4]=DI(Ba(1,E(426),E(671)));d[5]=Bd();d[6]=DI(Ba(2,E(3428),E(3429)));d[7]=Bd();d[8]=DI(Ba(1,E(674),E(3441)));d[9]=Bd();e=new C0;f=new Ch;g=K(Bg,3);h=g.data;h[0] +=Bc(E(3415));h[1]=Bw();h[2]=Ba(1,E(3442),E(672));Cj(f,g);C3(e,f);d[10]=e;d[11]=Bd();e=new C0;f=new Ch;h=K(Bg,3);g=h.data;g[0]=Bc(E(3430));g[1]=Bw();g[2]=Ba(1,E(3431),E(1962));Cj(f,h);C3(e,f);d[12]=e;d[13]=Bd();d[14]=DI(Ba(1,E(3443),E(3444)));d[15]=Bd();d[16]=DI(Ba(1,E(3434),E(3435)));d[17]=Bd();d[18]=BR();return BT(b,c);},Ffb=(a,b,c)=>{return null;},Fn2=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,$$je;f=R(d,E(3439),0);g=R(d,E(426),0);h=R(d,E(3428),0);i=R(d,E(3428),1);j=R(d,E(674),0);k=R(d,E(3442), +0);l=R(d,E(3431),0);m=R(d,E(3443),0);n=R(d,E(3434),0);if(j===null){o=null;p=null;if(h!==null&&i!==null)a:{try{o=DL(DM(h));p=DL(DM(i));break a;}catch($$e){$$je=P($$e);if($$je instanceof Ex){}else{throw $$e;}}return B5(E(3438));}q=null;if(k!==null){b:{q=E9();if(!CQ(Dk(k))){r=(IW(k,E(349))).data;s=r.length;t=0;c:{d:{e:{while(t{let c;ARw();a:{b:{if(b!==null){if(BO(b,E(3447)))break b;if(BO(b,E(3448)))break b;}c=0;break a;}c=1;}return c;},El9=a=>{ARw();return CmZ;},EIW=(a,b,c,d,e)=>{return Fn2(a,b,c,d,e);},DX5=()=>{CmZ=Bv(BB(Bi,[E(3449),E(3233)]));},Bq3=N(Bl),Cm6=null; +let Bvd=()=>{Bvd=Z(Bq3);DOP();},Fxi=(a,b,c)=>{return null;},FsM=a=>{Bvd();return Cm6;},FxG=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,$$je;a:{b=b;e=R(d,E(567),0);f=R(d,E(563),0);g=R(d,E(565),0);h=R(d,E(608),0);i=Bk();if(g!==null&&!CQ(Dk(g))){j=(IW(g,E(349))).data;k=j.length;l=0;b:{while(l{let b;b=K(Bi,1);b.data[0]=E(669);Cm6=Bv(b);},Ber=N(Bl),Cys=null,A6$=()=>{A6$=Z(Ber);DTb();},E21=()=>{let b,c,d,e,f,g,h;A6$();b=BN(Bo(Ber));c=K(Bg,15);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(832));d[3]=Bd();d[4]=DI(Ba(1,E(567),E(670)));d[5]=Bd();d[6]=DI(Ba(1,E(563),E(671)));d[7]=Bd();d[8]=Ba(1,E(565),E(672));d[9]=Bd();d[10] +=DI(Ba(1,E(608),E(673)));e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=Bw();h[1]=Ba(1,E(3451),E(3452));Cj(f,g);C3(e,f);d[11]=e;e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=Bw();h[1]=Ba(1,E(674),E(675));Cj(f,g);C3(e,f);d[12]=e;d[13]=Bd();d[14]=BR();return BT(b,c);},Fkj=(a,b,c)=>{return null;},Fi0=a=>{A6$();return Cys;},D30=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,$$je;b=b;e=R(d,E(567),0);f=R(d,E(563),0);g=R(d,E(565),0);h=R(d,E(608),0);if(f===null){i=b.bQW.bGJ;j=new S;T(j);BE(H(j,E(832)),i);f=Q(j);}a:{if(!CB(g,E(864))) +{b:{j=Bk();if(!CQ(Dk(g))){k=(IW(g,E(349))).data;i=k.length;l=0;c:{while(l{let b;b=K(Bi,1);b.data[0]=E(832);Cys=Bv(b);},BhB=N(Bl),CsK=null,Bam=()=>{Bam=Z(BhB);Fdl();},EHx=()=>{let b,c,d,e, +f,g,h;Bam();b=BN(Bo(BhB));c=K(Bg,15);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(833));d[3]=Bd();d[4]=DI(Ba(1,E(567),E(670)));d[5]=Bd();d[6]=DI(Ba(1,E(563),E(671)));d[7]=Bd();d[8]=Ba(1,E(565),E(672));d[9]=Bd();d[10]=DI(Ba(1,E(608),E(673)));e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=Bw();h[1]=Ba(1,E(3451),E(3452));Cj(f,g);C3(e,f);d[11]=e;e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=Bw();h[1]=Ba(1,E(674),E(675));Cj(f,g);C3(e,f);d[12]=e;d[13]=Bd();d[14]=BR();return BT(b,c);},DEZ=(a,b,c)=>{return null;},Eex=a=>{Bam();return CsK;},ET3 +=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,$$je;a:{b=b;e=R(d,E(567),0);f=R(d,E(563),0);g=R(d,E(565),0);h=R(d,E(608),0);i=Bk();if(g!==null&&!CQ(Dk(g))){j=(IW(g,E(349))).data;k=j.length;l=0;b:{while(l{let b;b=K(Bi,1);b.data[0]=E(833);CsK=Bv(b);},BiA=N(Bl),CKE=null,A4Q=()=>{A4Q=Z(BiA);E$f();},Fl$=()=>{let b,c,d,e,f,g,h;A4Q();b=BN(Bo(BiA));c=K(Bg,16);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(834));d[3]=Bd();d[4]=DI(Ba(1,E(567),E(670)));d[5]=Bd();d[6]=DI(Ba(1,E(563),E(671)));d[7]=Bd();d[8]=Ba(1,E(565),E(672));d[9]=Bd();d[10]=DI(Ba(1,E(608),E(673)));e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0] +=Bw();h[1]=Ba(1,E(3451),E(3452));Cj(f,g);C3(e,f);d[11]=e;e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=Bw();h[1]=Ba(1,E(674),E(675));Cj(f,g);C3(e,f);d[12]=e;e=new C0;f=new Ch;g=K(Bg,2);h=g.data;h[0]=Bw();h[1]=Ba(1,E(3460),E(3461));Cj(f,g);C3(e,f);d[13]=e;d[14]=Bd();d[15]=BR();return BT(b,c);},FtZ=(a,b,c)=>{return null;},Dtp=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,$$je;f=R(d,E(567),0);g=R(d,E(563),0);h=R(d,E(565),0);i=R(d,E(608),0);j=R(d,E(3460),0);if(g===null){k=b.bQW.bGJ;c=new S;T(c);BE(H(c,E(834)),k);g +=Q(c);}a:{if(!CB(h,E(864))){b:{l=Bk();if(!CQ(Dk(h))){m=(IW(h,E(349))).data;k=m.length;n=0;c:{while(n{A4Q();return CKE;},DCp=(a,b,c,d,e)=>{return Dtp(a,b,c,d,e);},E$f=()=>{let b;b=K(Bi,1);b.data[0]=E(834);CKE=Bv(b);},BlE=N(Bl),DkA=null,Bfa=()=>{Bfa=Z(BlE);EQQ();},EIU=(a,b,c)=>{return null;},EZZ=a=>{Bfa();return DkA;},DuM=(a, +b,c,d,e)=>{let f;a:{b:{c:{d:{e:{b=b;c=R(d,E(585),0);d=FS(c);f=(-1);switch(FP(d)){case -1383228885:break e;case 115029:break d;case 3317767:break c;case 108511772:break b;default:}break a;}if(!Bj(d,E(1803)))break a;f=3;break a;}if(!Bj(d,E(2429)))break a;f=2;break a;}if(!Bj(d,E(1273)))break a;f=0;break a;}if(Bj(d,E(1274)))f=1;}f:{g:{h:{i:{j:{k:{switch(f){case 0:break;case 1:break k;case 2:break j;case 3:break i;default:break g;}SH();c=Yq;break h;}SH();c=AB7;break h;}SH();c=AMF;break h;}SH();c=A9E;}b.cj0=c;b=By();break f;}b +=new S;T(b);H(H(b,E(3466)),c);b=B5(Q(b));}return b;},EQQ=()=>{let b;b=K(Bi,1);b.data[0]=E(220);DkA=Bv(b);},Bfx=N(Bl),B9o=null,BwF=()=>{BwF=Z(Bfx);FdT();},EjL=(a,b,c)=>{return null;},E3v=a=>{BwF();return B9o;},EKi=(a,b,c,d,e)=>{let f;a:{b:{c:{b=b;c=R(d,E(677),0);d=FS(c);f=(-1);switch(FP(d)){case -1897640665:break c;case 293429086:break b;default:}break a;}if(!Bj(d,E(3467)))break a;f=1;break a;}if(Bj(d,E(3468)))f=0;}d:{e:{f:{g:{switch(f){case 0:break;case 1:break g;default:break e;}AIq();c=A8T;break f;}AIq();c +=BlA;}b.ciJ=c;b=By();break d;}b=new S;T(b);H(H(b,E(3469)),c);b=B5(Q(b));}return b;},FdT=()=>{let b;b=K(Bi,1);b.data[0]=E(3470);B9o=Bv(b);},Bm0=N(Bl),Dme=null,Bwx=()=>{Bwx=Z(Bm0);DDn();},DtM=(a,b,c)=>{return null;},Fu5=a=>{Bwx();return Dme;},DAW=(a,b,c,d,e)=>{let f;a:{b:{c:{b=b;c=R(d,E(680),0);d=FS(c);f=(-1);switch(FP(d)){case -1984141450:break c;case 1387629604:break b;default:}break a;}if(!Bj(d,E(3471)))break a;f=0;break a;}if(Bj(d,E(3472)))f=1;}d:{e:{f:{g:{switch(f){case 0:break;case 1:break g;default:break e;}RE();c +=BaM;break f;}RE();c=Vd;}b.chF=c;b=By();break d;}b=new S;T(b);H(H(b,E(3473)),c);b=B5(Q(b));}return b;}; +let DDn=()=>{let b;b=K(Bi,1);b.data[0]=E(679);Dme=Bv(b);},BvY=N(Bl),CQv=null,A$0=()=>{A$0=Z(BvY);Fhj();},DMM=()=>{let b,c,d;A$0();b=BN(Bo(BvY));c=K(Bg,21);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(839));d[3]=Bw();d[4]=Ba(1,E(849),E(671));d[5]=Bw();d[6]=Bc(E(3474));d[7]=Bd();d[8]=Bc(E(1922));d[9]=Bd();d[10]=Ba(1,E(3475),E(3476));d[11]=Bd();d[12]=Bc(E(349));d[13]=Bd();d[14]=Ba(1,E(3477),E(3478));d[15]=Bd();d[16]=Bc(E(2036));d[17]=Bd();d[18]=DI(Ba(1,E(445),E(3479)));d[19]=Bd();d[20]=BR();return BT(b,c);},D9C=(a,b, +c)=>{return null;},Fvp=a=>{A$0();return CQv;},E4i=(a,b,c,d,e)=>{let f,g,h,i,$$je;b=b;c=R(d,E(849),0);e=Dk(R(d,E(3475),0));f=Dk(R(d,E(3477),0));d=R(d,E(445),0);a:{b:{try{g=DL(DM(e));}catch($$e){$$je=P($$e);if($$je instanceof Ex){break b;}else{throw $$e;}}break a;}g=e;}c:{d:{try{h=DM(f);break d;}catch($$e){$$je=P($$e);if($$je instanceof Ex){}else{throw $$e;}}b=new S;T(b);H(H(b,E(3480)),f);b=B5(Q(b));break c;}i=d===null?0:1;d=new CdQ;d.cV2=c;d.cxR=g;d.cxe=h;d.cVE=i;U(b.cna,d);b=By();}return b;},Fhj=()=>{let b;b +=K(Bi,1);b.data[0]=E(839);CQv=Bv(b);},Bsk=N(Bl),Ca5=null,BsV=()=>{BsV=Z(Bsk);Ey1();},EkO=a=>{BsV();return Ca5;},D60=(a,b,c,d,e)=>{return By();},Ey1=()=>{Ca5=Bv(BB(Bi,[E(14),E(252),E(580)]));},BbR=N(Bl),CZe=null,BA8=()=>{BA8=Z(BbR);DBE();},E0K=a=>{BA8();return CZe;},Fpo=(a,b,c,d,e)=>{let $$je;b=b;a:{b:{try{c=R(d,E(685),0);if(c!==null)DCn(b,CZ(c));}catch($$e){$$je=P($$e);if($$je instanceof Ex){b=$$je;break b;}else{throw $$e;}}b=By();break a;}b=ASC(E(3481),b);}return b;},DBE=()=>{let b;b=K(Bi,1);b.data[0]=E(683);CZe +=Bv(b);},Bzr=N(Bl),DqJ=null,BwK=()=>{BwK=Z(Bzr);Ejr();},ENF=a=>{BwK();return DqJ;},EdI=(a,b,c,d,e)=>{let $$je;b=b;a:{b:{try{DJK(b,CZ(R(d,E(688),0)));}catch($$e){$$je=P($$e);if($$je instanceof Ex){b=$$je;break b;}else{throw $$e;}}b=By();break a;}b=ASC(E(3482),b);}return b;},Ejr=()=>{let b;b=K(Bi,1);b.data[0]=E(774);DqJ=Bv(b);},BeV=N(Bl),C$N=null,BeX=()=>{BeX=Z(BeV);D90();},EWg=a=>{BeX();return C$N;},DDU=(a,b,c,d,e)=>{let $$je;b=b;c=Bzn(BLf(Bn6(R(d,E(690),0)),new C7p),E(3483));if(c===null){AF7();b.b4L=AVj;}else a: +{b:{try{b.b4L=DvZ(Vq(c));break a;}catch($$e){$$je=P($$e);if($$je instanceof Bt){break b;}else{throw $$e;}}}b.b4L=AVj;}return By();},D90=()=>{let b;b=K(Bi,1);b.data[0]=E(1961);C$N=Bv(b);},Boh=N(Bl),Dd1=null,Bil=()=>{Bil=Z(Boh);EoA();},DEq=a=>{Bil();return Dd1;},Epa=(a,b,c,d,e)=>{let $$je;b=b;a:{b:{try{DfM(b,CZ(R(d,E(693),0)));}catch($$e){$$je=P($$e);if($$je instanceof Ex){b=$$je;break b;}else{throw $$e;}}b=By();break a;}b=ASC(E(3484),b);}return b;},EoA=()=>{let b;b=K(Bi,1);b.data[0]=E(1961);Dd1=Bv(b);},Bu8=N(Bl),DbW +=null,BAx=()=>{BAx=Z(Bu8);Dti();},EWd=a=>{BAx();return DbW;},Exi=(a,b,c,d,e)=>{b.cxi=BG(E(13),R(d,E(696),0));return By();},Dti=()=>{let b;b=K(Bi,1);b.data[0]=E(3485);DbW=Bv(b);},BoV=N(Bl),Cjh=null,ZR=()=>{ZR=Z(BoV);DX4();},Fic=()=>{let b,c,d,e,f,g;ZR();b=BN(Bo(BoV));c=K(Bg,7);d=c.data;d[0]=BL();d[1]=Bd();e=new DD;f=K(Bg,3);g=f.data;g[0]=Ba(1,E(3486),E(3487));g[1]=Ba(2,E(3428),E(3488));g[2]=Bc(E(3489));Eb(e,f);d[2]=e;d[3]=Ba(1,E(599),E(3490));d[4]=Ba(1,E(3491),E(3492));d[5]=Bd();d[6]=BR();return BT(b,c);},BRU +=(b,c,d)=>{ZR();b=Bn6(DG(c,b));c=new C3N;c.cNH=d;return Bzn(BLf(b,c),d);}; +let Ceu=b=>{ZR();return (BRU(E(3493),b,CL(1))).bHl;},EaF=a=>{ZR();return Cjh;},Edu=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,$$je;a:{b=b;c=R(d,E(3486),0);e=R(d,E(3428),0);f=R(d,E(3428),1);g=R(d,E(599),0);d=CPE(R(d,E(3491),0));if(c!==null)b:{try{h=CZ(c);i=(h+Ceu(d)|0)-1|0;break b;}catch($$e){$$je=P($$e);if($$je instanceof Ex){b=$$je;}else{throw $$e;}}d=new S;T(d);H(H(d,E(3494)),c);b=ASC(Q(d),b);break a;}else if(e!==null&&f!==null)c:{try{h=CZ(e);i=CZ(f);break c;}catch($$e){$$je=P($$e);if($$je instanceof Ex){b=$$je;}else +{throw $$e;}}c=new S;T(c);H(H(H(H(c,E(3495)),e),E(2464)),f);b=ASC(Q(c),b);break a;}else{if(HH(b.ceD))e=Ba6();else{c=b.ceD;e=Brl(CL((Be(c,c.bGJ-1|0)).cgR));}h=(Bzn(BLf(e,new DiR),CL(0))).bHl;i=(h+Ceu(d)|0)-1|0;}ZR();j=(BRU(E(363),d,CL(1))).bHl;k=(BRU(E(3496),d,CL(0))).bHl;l=(i-h|0)+1|0;c=DjM(l,j,h,i,g);c.c9k=k;U(b.ceD,c);b=By();}return b;},DX4=()=>{Cjh=Bv(BB(Bi,[E(900),E(35),E(360),E(2915),E(3497),E(3498),E(3499),E(3500),E(3501),E(3502),E(3503)]));},Bt6=N(Bl),COu=null,A5M=()=>{A5M=Z(Bt6);Fuv();},DRB=()=>{let b, +c,d;A5M();b=BN(Bo(Bt6));c=K(Bg,5);d=c.data;d[0]=BL();d[1]=Bd();d[2]=Bc(E(3504));d[3]=Bd();d[4]=BR();return BT(b,c);},Dzn=a=>{A5M();return COu;},Ek2=(a,b,c,d,e)=>{return By();},Fuv=()=>{COu=Bv(BB(Bi,[E(14),E(582)]));},BZT=N(Ky),BF$=null,A2V=()=>{A2V=Z(BZT);DKQ();},FdE=(a,b,c)=>{let d;d=Dk(R(c,E(2402),0));b=new S;T(b);Bb(H(H(b,E(3505)),d),34);return Q(b);},DIH=a=>{A2V();return BF$;},EMo=a=>{A2V();return BF$;},FeF=(a,b,c,d,e)=>{b=b;c=Dk(R(d,E(2402),0));return BGV(b,B4(Cf(b),c),null);},DKQ=()=>{let b;b=K(Bi,1);b.data[0] +=E(864);BF$=Bv(b);},BbJ=N(EP),Dob=null,Cyo=null,A9e=()=>{A9e=Z(BbJ);DBQ();},EHF=(a,b)=>{let c,d;c=Dq(b);b=new S;T(b);d=H(b,E(3506));BE(d,c);H(d,E(3244));return Q(b);},DWC=a=>{A9e();return Dob;},Dzh=(a,b,c,d)=>{return BGV(b,Ig(B_R(c,3)),null);},DBQ=()=>{let b;b=K(Bi,1);b.data[0]=E(864);Dob=Bv(b);Cyo=HO(new Cip);},BcO=N(EP),Dhe=null,CWM=null,A3x=()=>{A3x=Z(BcO);EDJ();},Frp=(a,b)=>{let c,d;c=Dq(b);b=new S;T(b);d=H(b,E(3507));BE(d,c);H(d,E(3244));return Q(b);},DC7=a=>{A3x();return Dhe;},E8i=(a,b,c,d)=>{return BGV(b, +Ig(B_R(c,2)),null);},EDJ=()=>{let b;b=K(Bi,1);b.data[0]=E(864);Dhe=Bv(b);CWM=HO(new CM1);},BHw=N(Bl),DKg=a=>{FY();return G6;},EX8=()=>{let b,c,d,e,f,g,h,i,j;b=BN(Bo(BHw));c=K(Bg,9);d=c.data;d[0]=BL();e=new C0;f=new Ch;g=K(Bg,5);h=g.data;h[0]=Bd();h[1]=Bc(E(700));h[2]=Ba(1,E(3508),E(3509));h[3]=Bc(E(3510));h[4]=Bd();Cj(f,g);C3(e,f);d[1]=e;d[2]=Ba(1,E(425),E(3511));i=new C0;j=new Ch;g=K(Bg,5);h=g.data;h[0]=Bd();h[1]=Bc(E(700));h[2]=Ba(1,E(3512),E(3509));h[3]=Bc(E(3510));h[4]=Bd();Cj(j,g);C3(i,j);d[3]=i;d[4]=Bd();d[5] +=Ba(1,E(3513),E(3514));d[6]=Bd();d[7]=Ba(1,E(560),E(3515));d[8]=BR();return BT(b,c);},Dvv=(a,b,c)=>{let d,e,f,g;d=R(c,E(425),0);e=R(c,E(3508),0);f=R(c,E(3512),0);g=new S;T(g);L(g,E(3516));L(g,d);L(g,E(1762));if(e!==null)L(g,E(3517));if(f!==null)L(g,E(3518));return Q(g);},E4m=(a,b,c,d,e)=>{let f,g,h;b=b;f=R(d,E(425),0);g=R(d,E(3513),0);h=R(d,E(560),0);e=new S;T(e);H(H(H(e,f),g),h);e=Q(e);f=R(d,E(3508),0);d=R(d,E(3512),0);return CFf(b,BIK(IN(Ia(e,c))),f,d);}; +function BBo(){let a=this;F.call(a);a.cTl=null;a.cKq=null;a.cnC=null;a.cRG=null;} +let DfJ=0,BRS=()=>{BRS=Z(BBo);Fj9();},Ehx=(a,b)=>{let c;b=AAL(b,a.cnC);c=DB(b);if(c!==null){if(AVR(Zq(a.cTl,(C8(c)).bGP,0))){if(Dq(b)!=1){if(AVR(Zq(A_U(a.cRG),Ddm(a.cKq,L9(b)),0))){F5();return PY;}F5();return Oo;}F5();return Oo;}F5();return KS;}F5();return KS;},FuW=(a,b)=>{let c,d;c=Dq(AAL(b,a.cnC));b=new S;T(b);d=H(b,E(3519));BE(d,c);H(d,E(2253));return Q(b);},El$=(a,b,c,d)=>{let $$je;c=AAL(c,a.cnC);try{b=Ed_(a,b,c,d);}catch($$e){$$je=P($$e);if($$je instanceof J1){return APx();}else{throw $$e;}}return b;},Fxf +=(a,b)=>{Jx();return b!==JB?0:1;},Fj9=()=>{DfJ=0;},BTE=N(BBo),CZ1=null,Bwk=()=>{Bwk=Z(BTE);Dwf();},EJ0=a=>{FY();return G6;},DLJ=a=>{FY();return G6;},Ed_=(a,b,c,d)=>{return CFf(b,c,null,null);},Dwf=()=>{CZ1=HO(new Cvr);},BTD=N(Bl),Fo_=a=>{FY();return G6;},DI4=(a,b,c)=>{let d;d=R(c,E(560),0);b=new S;T(b);Bb(H(H(b,E(3520)),d),39);return Q(b);},EdA=(a,b,c,d,e)=>{return ENY(b,BIK(IN(Ia(R(d,E(560),0),c))));}; +function CdA(){let a=this;F.call(a);a.cjz=0;a.cjv=null;a.dbk=null;} +let D6d=a=>{a.cjv.tW();},CaY=a=>{let b,c,d,e,f,g,h;b=a.cjv.tU();if(b!==null&&AJX(b.bGP)){c=BcZ(A0W(b.bGP));d=BiM;if(OS(c,d))a.cjz=0;}if(b!==null&&ANN(b.bGP))a.cjz=1;d=null;a:{while(true){if(b===null)break a;if(!a.cjz)break a;if(!B8h(b.bGP))break a;if(d===null){c=new Cgk;e=a.cjv;d=new Dqk;d.c_6=c;d.cXU=e;}f=d;g=0;b:{c:{while(true){c=f.cXU.tU();if(c===null)break;e=Dk(KG(c.bGP,9,32));if(g&&Dr(e,E(1212))){g=0;continue;}if(g)continue;if(BO(e,E(1762)))continue;if(BO(e,E(1211))&&Dr(e,E(1212)))continue;if(!BO(e,E(1211)))break c;if +(CB(e,E(1212)))break c;g=1;}h=null;break b;}h=CHp(c);}if(h===null)break;if(!B8h(b.bGP)){b=new Bt;X(b);J(b);}c=new X9;e=b.bGP;e=B_(e,0,e.bGI.length-1|0);h=h.bGP;f=new S;T(f);H(H(f,e),h);A1Q(c,Q(f),b.bIM,b.bO3);b=c;}}return b;},Db_=N(),Epj=(a,b)=>{return F9(b.bHx);},ES5=N(),DgM=()=>{return C8P(new Cub,new Cdb,new Cdc,new CYo,K(AGH,0));},CdV=(b,c,d)=>{let e,f,g;e=new DsU;e.cVG=b;f=new DsV;f.der=b;b=new DsS;g=new DsT;g.cWQ=c;g.cWP=d;return C8P(b,e,f,g,K(AGH,0));}; +function CXh(){F.call(this);this.cRi=null;} +function Dg9(){let a=this;F.call(a);a.cmA=null;a.cWW=null;a.chi=null;} +let Exf=(a,b,c,d,e)=>{let f,g,h,i,j,k;a:{while(true){if(d>=c.bGI.length)break a;f=Bn(c,d);if(f==46){d=d+1|0;g=new S;T(g);b:{while(true){if(d>=c.bGI.length)break b;if(!Cuw(Bn(c,d)))break;Bb(g,Bn(c,d));d=d+1|0;}}b=BMj(b,Q(g));}else{if(f!=91)break a;f=d+1|0;h=new S;T(h);i=0;while(true){if(Bn(c,f)==91)i=i+1|0;if(Bn(c,f)==93){if(!i)break;i=i+(-1)|0;}Bb(h,Bn(c,f));f=f+1|0;}j=Tn(a.cWW,a.cmA,Ia(Q(h),a.chi.bIM));if(b instanceof Wl){k=CZ(j);b=CC5(b,k);}else{if(!(b instanceof Su))J(EC(E(3521),a.chi));b=BMj(b,j);}if(b=== +null)break;d=f+1|0;}}J(EC(E(3522),a.chi));}if(b!==null){if(!b.ui())L(e,b.p());else L(e,b.oB());}return d;},Deg=(a,b,c)=>{let d,e;d=!(c>0&&Bqh(Bn(b,c-1|0))&&!Dlu(b,c))?0:1;if(d&&Bn(b,c)!=36)return null;e=(a.cmA.L_()).uc(b,c);if(e.bGI.length){if((c+e.bGI.length|0)!=b.bGI.length&&Bqh(Bn(b,c+e.bGI.length|0)))return null;return e;}return null;},Dlu=(b,c)=>{return !(c>1&&Bn(b,c-2|0)==92&&Bn(b,c-1|0)==110)?0:1;}; +function CZc(){let a=this;FA.call(a);a.cdQ=null;a.cnc=null;a.c4V=0;a.cvP=0;} +let FwR=(a,b,c)=>{let d,e,f,g;while(a.bIq{return a.cdQ;},B6m=a=>{return a.cnc;}; +function BLy(){let a=this;B0y.call(a);a.cNU=null;a.cPi=null;} +let EHZ=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n;d=a.cNU;e=0;f=0;g=a.cPi;a:{b:{while(true){if((e+32|0)>f&&NO(b)){h=e;while(hj)break;h=c.bHS;l=c;n=new Uint16Array(g.data.buffer, +0,k);l.bXm.set(n,h);c.bHS=c.bHS+k|0;if(m!==null)break a;}b=new EN;X(b);J(b);}if(!(!NO(b)&&e>=f)){Mi();m=Sk;}else{Mi();m=Up;}}VZ(b,b.bHS-(f-e|0)|0);return m;},DdT=N(BLy),Ery=(a,b,c,d,e,f,g,h)=>{let i,j,k,l,m,n,o,p,q,r;i=null;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{while(c=g)break k;j=b.data;k=c+1|0;l=j[c]&255;if(!(l&128)){j=e.data;m=f+1|0;j[f]=l&65535;}else if((l&224)==192){if(k>=d)break c;c=k+1|0;n=j[k];if(!AXC(a,n))break f;j=e.data;m=f+1|0;j[f]=((l&31)<<6|n&63)&65535;k=c;}else if((l&240)==224){if((k+2|0) +>d)break d;c=k+1|0;n=j[k];k=c+1|0;o=j[c];if(!AXC(a,n))break g;if(!AXC(a,o))break g;p=((l&15)<<12|(n&63)<<6|o&63)&65535;if(BJK(p))break h;j=e.data;m=f+1|0;j[f]=p;}else{if((l&248)!=240)break i;if((k+3|0)>d)break e;if((f+2|0)>g)break b;c=k+1|0;n=j[k];q=c+1|0;o=j[c];k=q+1|0;q=j[q];if(!AXC(a,n))break j;if(!AXC(a,o))break j;if(!AXC(a,q))break j;j=e.data;r=(l&7)<<18|(n&63)<<12|(o&63)<<6|q&63;c=f+1|0;j[f]=BmJ(r);m=c+1|0;j[c]=Bem(r);}c=k;f=m;}break a;}break a;}c=k+(-3)|0;i=ABf(1);break a;}c=k+(-1)|0;i=ABf(1);break a;}c +=k+(-3)|0;i=ABf(3);break a;}c=k+(-3)|0;i=ABf(1);break a;}c=c+(-2)|0;i=ABf(1);break a;}c=k+(-1)|0;if(B6U(h,4))break a;Mi();i=Up;break a;}c=k+(-1)|0;if(B6U(h,3))break a;Mi();i=Up;break a;}c=k+(-1)|0;if(B6U(h,2))break a;Mi();i=Up;break a;}c=k+(-1)|0;if(!(IL(h.cVJ)<2?0:1)){Mi();i=Sk;}}h.cM6=c;h.cFE=f;return i;},AXC=(a,b)=>{return (b&192)!=128?0:1;}; +function BGA(){let a=this;F.call(a);a.bH9=null;a.bHd=0;a.bKe=0;} +let G6=null,Bm1=null,FY=()=>{FY=Z(BGA);Eyg();},BWM=b=>{FY();return B9e(b.CZ());},B9e=b=>{let c,d;FY();if(BO(b,E(1174))){c=new BGA;c.bH9=b;d=CQJ();d.bP5=1;d=Dhn(c,d);if(!c.bKe&&c.bHd==b.bGI.length){b=ABx(d.bSS);c=d.bMj;Ea(b,c);if(d.bP5)EQ(b,E(14));return b;}return null;}return null;},Dhn=(a,b)=>{let c;c=CF9(a,AAy(b));while(!a.bKe&&a.bHd{let c;a:{while(true){if(a.bKe)break a;if(a.bHd>=a.bH9.bGI.length)break a;c +=Bn(a.bH9,a.bHd);if(c==124)break a;if(c==41)break;if(!(!(!b.bP5&&A6V(b.bMj))?0:1)){b=DS9(a,b);if((AFU(b.bMj)+AFU(b.bSS)|0)>64)a.bKe=1;continue;}b:{c:{c=Bn(a.bH9,a.bHd);if(c==40){DdN(a);if(!a.bKe)break c;break b;}if(c==91){c=B2X(a);if(c<0){a.bKe=1;break b;}a.bHd=c+1|0;}else if(c!=92)a.bHd=a.bHd+1|0;else a.bHd=a.bHd+2|0;}if(a.bHd<=a.bH9.bGI.length)Chy(a);else a.bKe=1;}}}return b;},DS9=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=Bn(a.bH9,a.bHd);if(c!=94&&c!=36){if(c==40){if(!(!(!Rl(a.bH9,E(3525),a.bHd)&&!Rl(a.bH9,E(3526), +a.bHd)&&!Rl(a.bH9,E(3527),a.bHd)&&!Rl(a.bH9,E(3528),a.bHd))?1:0)){c=a.bHd+1|0;a.bHd=c;if(Rl(a.bH9,E(2053),c))a.bHd=a.bHd+2|0;else if(a.bHd=0){h=FkT(B_(a.bH9,a.bHd+1|0,g));if(h!==null){a.bHd=g+1|0;f=null;if(h.b82){f=AAy(b);BGr(f);}if(!A$A(h.b3c)){i=AAy(b);BdH(i, +h.b3c);f=CYS(f,i);}h=NA(h.cg2);while(h.dY()){j=(h.dZ()).bUT;k=AAy(b);Cq9(k,QO(j));f=CYS(f,k);}return AY5(a,b,f);}a.bKe=1;return b;}a.bKe=1;return b;}a.bHd=a.bHd+1|0;return b;},CYS=(b,c)=>{FY();if(b!==null){BD6(b,c);return b;}return c;},AY5=(a,b,c)=>{let d,e,f,g,h,i,j;if(a.bHd=0){h=B_(a.bH9,a.bHd ++1|0,g);a.bHd=g+1|0;i=Eq(h,44);if(i<0){f=B2U(h);e=f;}else{e=B2U(B_(h,0,i));j=CC(h,i+1|0);f=j.bGI.length?B2U(j):2147483647;}if(e>=0&&f>=0)break a;a.bKe=1;return c;}a.bKe=1;return c;}return c;}}if(a.bHd1){h=b.bMj;j=c.bMj;if(!BQo(h,j)){a.bKe=1;return c;}}if(!e)BD6(c,b);return c;}return c;},B2U=b=>{let c,d,e;FY();c=0;if(b.bGI.length){d=0;a:{while(d57)break a;c=(c*10|0)+(e-48|0)|0;d=d ++1|0;}return c;}return (-1);}return (-1);},B2X=a=>{let b,c;b=a.bHd+1|0;if(b=a.bH9.bGI.length)return (-1);c=Bn(a.bH9,b);if(c==92)b=b+2|0;else{if(c==93)break;b=b+1|0;}}return b;},DdN=a=>{let b,c,d;b=0;while(true){if(a.bHd>=a.bH9.bGI.length){a.bKe=1;return;}c=Bn(a.bH9,a.bHd);if(c==92){a.bHd=a.bHd+2|0;continue;}if(c==91){d=B2X(a);if(d<0){a.bKe=1;return;}a.bHd=d+1|0;continue;}a.bHd=a.bHd+1|0;if(c==40)b=b+1| +0;else if(c==41){b=b+(-1)|0;if(!b)break;}}},Chy=a=>{let b,c;if(a.bHd=0){a.bHd=c+1|0;break a;}a.bKe=1;return;}return;}}if(a.bHd{FY();a:{b:{if(!(b>=97&&b<=122)){if(b<65)break b;if(b>90)break b;}b=1;break a;}b=0;}return b;},C8O=b=>{FY();return (b|32)&65535;},Eyg=()=>{let b,c,d;G6=null;Bm1=UJ();b +=48;while(b<=57){c=Bm1;d=AE5(b);KM(c,d);b=(b+1|0)&65535;}},BNe=N(0); +function CUH(){F.call(this);this.b4j=null;} +let APE=a=>{return B7N(a.b4j);},DEu=a=>{return a.b4j.caG;},S9=a=>{return a.b4j.cbh;},Bs1=a=>{return a.b4j.b4x;},Cwp=a=>{return a.b4j.b6z;},Sz=N(),EF0=(a,b)=>{return BBG(b);},E13=(a,b)=>{return null;},E4c=a=>{return ACx();},EDy=a=>{F_();return Hl;},Ekn=a=>{return E(1823);},E6b=a=>{return KI();},ESu=a=>{let b;b=new BV;X(b);J(b);},EPt=(a,b,c,d)=>{b=new BV;X(b);J(b);},Fun=(a,b,c,d,e)=>{return BR9(b,c,a,d,e);},D9p=a=>{return ACU();},DRM=(a,b)=>{return null;}; +function B29(){let a=this;F.call(a);a.b94=null;a.cTP=null;a.cN_=null;} +let B9O=null,BqD=()=>{BqD=Z(B29);EqS();},EqS=()=>{B9O=Dp(E(3529));}; +function BH7(){F.call(this);this.cHA=null;} +let CLM=a=>{a.cHA=Dy();},EWm=()=>{let a=new BH7();CLM(a);return a;},DcU=b=>{let c;c=EWm();AFQ(c.cHA,b);return c;}; +function BHO(){let a=this;F.call(a);a.bZB=null;a.c$H=null;} +let EJ4=null,A10=()=>{A10=Z(BHO);EPa();},Fsu=(a,b,c)=>{A10();a.bZB=b;a.c$H=c;},EGS=(a,b)=>{let c=new BHO();Fsu(c,a,b);return c;},O7=a=>{let b,c,$$je;AEZ();try{b=Kr(a.bZB);}catch($$e){$$je=P($$e);c=$$je;J(c);}return b;},AEZ=()=>{A10();return BH;},CU=(a,b)=>{let c,$$je;AEZ();try{c=El(a.bZB,b);}catch($$e){$$je=P($$e);c=$$je;J(c);}return c;},EZ=a=>{let b,c,$$je;AEZ();try{b=GW(a.bZB);}catch($$e){$$je=P($$e);c=$$je;J(c);}return b;},B$2=a=>{let b,c,$$je;AEZ();try{b=BX7(a.bZB);}catch($$e){$$je=P($$e);c=$$je;J(c);}return b;},Di$ +=a=>{let b,c,$$je;AEZ();try{b=BWt(a.bZB);}catch($$e){$$je=P($$e);c=$$je;J(c);}return b;},EPa=()=>{EJ4=Dy();}; +function Bmr(){let a=this;F.call(a);a.cgv=null;a.b9W=0;} +let Dxl=(a,b)=>{a.cgv=K(Bi,b);},BO1=a=>{let b=new Bmr();Dxl(b,a);return b;},BZH=(a,b)=>{let c,d;c=a.cgv.data;d=a.b9W;a.b9W=d+1|0;c[d]=b;},AL4=(a,b)=>{let c,d,e,f;if(b>=0&&b{let b,c;b=BY(Bv(a.cgv));c=new S;T(c);Bb(c,123);Bb(H(c,b),125);return Q(c);},A2B=N(),Baj=null,BXb=0,Bq2=()=>{Bq2=Z(A2B);Ef5();},Fff=()=>{let b,$$je;Bq2();if(Baj===null){Jl(Bo(A2B));a:{b:{try{if(!BXb){c:{d:{try{DPA();break c;} +catch($$e){$$je=P($$e);if($$je instanceof Gt){break d;}else{throw $$e;}}}}BXb=1;}G2(Bo(A2B));break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}G2(Bo(A2B));J(b);}if(Baj===null){b=new Lz;Bp(b,E(3532));J(b);}return Baj;}return Baj;},Ef5=()=>{BXb=0;},CdW=N(),Dpm=null,BFn=null,Cqf=null,BvB=()=>{BvB=Z(CdW);EU2();},DVn=(b,c,d,e,f,g)=>{let h,i,j,k,l,m,n,o,p,q,r;BvB();h=3*g|0;i=Cqf.data;j=Dpm.data;k=i[j[h]];l=j[h+1|0];m=i[j[h+2|0]];n=c;while(true){i=BFn.data;if(!i[k])break;j=b.data;g=n+1|0;h=k+1|0;j[n]=i[k];n=g;k=h;}o +=l<12?0:l-11|0;if(o>f)o=f;e=e+o|0;f=(f-o|0)-(l>9?0:l)|0;p=f;while(p>0){j=b.data;g=n+1|0;h=e+1|0;j[n]=DaO(d,e);p=p+(-1)|0;n=g;e=h;}if(!(l!=11&&l!=10)){q=n-f|0;if(l==10)f=1;while(f>0){j=b.data;r=j[q]&255;if(r>=192){if(r>=224){e=q+2|0;j[e]=(j[e]^5)<<24>>24;q=q+3|0;f=f+(-3)|0;}else{e=q+1|0;j[e]=(j[e]^32)<<24>>24;q=q+2|0;f=f+(-2)|0;}}else{if(r>=97&&r<=122)j[q]=(j[q]^32)<<24>>24;q=q+1|0;f=f+(-1)|0;}}}while(true){j=BFn.data;if(!j[m])break;i=b.data;f=n+1|0;e=m+1|0;i[n]=j[m];n=f;m=e;}return n-c|0;},EU2=()=>{let b,c, +d,e,f,g,h,i;b=Ca(363);Dpm=b;c=BD(217);d=c.data;BFn=c;e=Ca(51);c=e.data;Cqf=e;BvB();f=E(3533).bGI.length;g=1;h=0;while(h>24;if(i==35){i=g+1|0;c[g]=h+1|0;d[h]=0;g=i;}h=h+1|0;}b=b.data;g=0;while(g<363){b[g]=Bn(E(3534),g)-32|0;g=g+1|0;}},CQR=N(),Dic=null,Bx2=()=>{Bx2=Z(CQR);Eg9();},Fry=(b,c,d)=>{let e,f,g,h,i,j,k;Bx2();e=0;while(e<256){f=b.data;f[e]=e&63;f[512+e|0]=e>>2;f[1792+e|0]=2+(e>>6)|0;e=e+1|0;}e=0;while(e<128){b.data[1024+e|0]=4*(Bn(c,e)-32|0)|0;e=e+1|0;}e=0;while(e<64){f= +b.data;g=1152+e|0;h=e&1;f[g]=h;f[1216+e|0]=2+h|0;e=e+1|0;}h=1280;i=0;while(i<19){j=i&3;k=Bn(d,i)-32|0;e=0;while(e{let b;b=Ca(2048);Dic=b;Fry(b,E(3535),E(3536));}; +function CDc(){let a=this;Er.call(a);a.b9v=null;a.dbR=null;} +let E28=(a,b)=>{let c,d,e,f;c=0.0;d=0.0;e=Br(a.b9v);while(Bq(e)){f=(Bm(e)).cF(b);c=c+f.bGE;d=BC(d,f.bGF);}return Cl(c,d);},D$J=(a,b)=>{let c,d,e,f,g,h,i;c=0.0;d=De(a,b.hE());e=Br(a.b9v);while(Bq(e)){f=Bm(e);if(!(f instanceof BhT))continue;g=f.cF(b.hE());c=BC(c,d.bGF-g.bGF+ZM(Gk(f.bUC)));}d=b.hE();f=De(a,d);h=0.0;i=Br(a.b9v);while(Bq(i)){g=Bm(i);if(g instanceof BhT)g.cC(b.h2(Bh(h,c)));else g.cC(b.h2(Bh(h,f.bGF-(g.cF(d)).bGF)));h=h+(g.cF(d)).bGE;}}; +function ASs(){let a=this;F.call(a);a.bIr=null;a.bG0=0;a.bHa=0;a.bG2=BH;a.b5k=null;a.b2t=0;a.bLj=0;a.bOW=BH;a.bIj=null;a.b6m=null;a.cRn=null;a.dcd=0;a.bK8=null;} +let B1c=a=>{a.bK8=C6I();},FzO=()=>{let a=new ASs();B1c(a);return a;},Bw1=a=>{let b,c,d,e,f,g,h;b=a.b6m;c=b.bRx;d=a.bLj;if(c<=d)d=c;if(d){e=b.b4O;f=e.data.length;g=b.b84;if(f>g){c=a.b5k.data.length;h=a.b2t;c>h&&f>=(g+d|0)&&c>=(h+d|0);}Di(e,g,a.b5k,a.b2t,d);a.b2t=a.b2t+d|0;b=a.b6m;b.b84=b.b84+d|0;a.bOW=BU(a.bOW,V(d));a.bLj=a.bLj-d|0;c=b.bRx-d|0;b.bRx=c;if(!c)b.b84=0;return;}},Cv6=(a,b,c,d)=>{a.b5k=b;a.b2t=c;a.bLj=d;},CF4=(a,b,c,d,e)=>{let f,g;if(d<=0&&e&&a.bIr!==null)return;f=a.bHa;if(!(f>0&&e)){a.bIr=b;a.bG0 +=c;a.bHa=d;}else{g=BD(f+d|0);Di(a.bIr,a.bG0,g,0,f);Di(b,c,g,a.bHa,d);a.bIr=g;a.bG0=0;a.bHa=a.bHa+d|0;}}; +function Ciy(){ASs.call(this);this.cv0=0;} +let DI3=(a,b,c)=>{let d,e;B1c(a);a.cv0=0;b=DfI(a,b,15,c);if(b){d=new A$n;e=new S;T(e);BE(e,b);L(e,E(7));L(e,a.bIj);Bp(d,Q(e));J(d);}},E1$=(a,b)=>{let c=new Ciy();DI3(c,a,b);return c;},DfI=(a,b,c,d)=>{let e;a.cv0=0;e=new BHM;ABE();e.bU1=1;e.cc6=BJ1();e.b9H=BJ1();e.cxv=BJ1();e.cdB=AMU(16);e.cOD=AMU(16);e.bOZ=Ca(573);e.b4n=BD(573);e.ciE=null;e.bIF=a;e.bQg=AMU(1146);e.bXj=AMU(122);e.bNY=AMU(78);a.b6m=e;if(d)c= -c|0;return Evm(e,b,8,c,8,0);},A$n=N(Dd); +function B1J(){let a=this;F.call(a);a.bHs=null;a.ceF=null;a.bUw=null;a.crk=null;} +let C5H=null,Bap=()=>{Bap=Z(B1J);EXk();},DrX=(a,b)=>{let c,d,e,f,g,h,$$je;c=Bk();d=c;U(d,b);AV_(a);while(Da(a.bHs,0)==44){Dx(a.bHs);AV_(a);U(d,BGU(a));AV_(a);}e=0;if(Da(a.bHs,0)==42){e=1;Dx(a.bHs);AV_(a);}if(Da(a.bHs,0)==123){Dx(a.bHs);d=Bk();c=Br(c);while(Bq(c)){a:{f=Bm(c);if(BO(f,E(423))){g=new AOU;AB6();A$V(g,Bs2,f,null,(-1));}else{if(BO(f,E(901))&&Dr(f,E(865))){b=Dk(B_(f,E(901).bGI.length,f.bGI.length-1|0));b:{try{g=new AOU;AB6();A$V(g,A66,f,null,CZ(b));break a;}catch($$e){$$je=P($$e);if($$je instanceof Ex) +{break b;}else{throw $$e;}}}}CV();b=BK7;h=FS(f);h=DG(b,h);if(h!==null){g=new AOU;AB6();A$V(g,AYc,f,h,(-1));}else{g=new AOU;AB6();A$V(g,BRz,f,null,(-1));}}}U(d,g);}h=a.bUw;b=CnA(d,e,null);EY(h,b);return;}b=new Ld;c=BY(c);d=new S;T(d);H(H(d,E(3537)),c);Bp(b,Q(d));J(b);},CQ1=a=>{let b;if(!RL(a.bUw)){b=Fp(a.bUw);if(RL(a.bUw))U(a.crk,b);else U((JX(a.bUw)).cb9,b);return;}},Ccv=a=>{let b,c;C5v(a);while(Da(a.bHs,0)==58){Dx(a.bHs);}C5v(a);b=new S;T(b);a:{b:{while(true){c=Da(a.bHs,0);if(!c)break a;if(c==10)break a;if +(c==13)break a;if(c==125)break;if(c==59)break b;if(c!=34){Bb(b,c);Dx(a.bHs);continue;}Dx(a.bHs);while(Da(a.bHs,0)&&Da(a.bHs,0)!=34){Bb(b,Da(a.bHs,0));Dx(a.bHs);}if(Da(a.bHs,0)!=34)continue;Dx(a.bHs);}break a;}Dx(a.bHs);}return Dk(Q(b));},BGU=a=>{let b,c,d,e;if(Da(a.bHs,0)!=34){b=Da(a.bHs,0)!=46?0:1;c=new S;T(c);while(true){d=Da(a.bHs,0);e=C5(d,32);if(!e&&b){Bb(c,d);Dx(a.bHs);continue;}a:{b:{c:{Bap();if(!d)break c;if(!e)break c;if(d==9)break c;if(d==10)break c;if(d==13)break c;if(d==123)break c;if(d==125)break c;if +(d==59)break c;if(d==44)break c;if(d==58)break c;if(d!=42)break b;}e=1;break a;}e=0;}if(e)break;Bb(c,d);Dx(a.bHs);}return !b?Q(c):Dk(Q(c));}Dx(a.bHs);c=new S;T(c);while(Da(a.bHs,0)&&Da(a.bHs,0)!=34){Bb(c,Da(a.bHs,0));Dx(a.bHs);}if(Da(a.bHs,0)==34)Dx(a.bHs);return Q(c);},C5v=a=>{while(!(Da(a.bHs,0)!=32&&Da(a.bHs,0)!=9)){Dx(a.bHs);}},AV_=a=>{let b;while(true){b=Da(a.bHs,0);if(!(b!=32&&b!=9&&b!=10&&b!=13))Dx(a.bHs);else{b=C5(b,47);if(!b&&Da(a.bHs,1)==47)while(Da(a.bHs,0)&&Da(a.bHs,0)!=10){Dx(a.bHs);}else if(!b +&&Da(a.bHs,1)==42){Dx(a.bHs);Dx(a.bHs);Cr3(a,42,47);}else{if(b)break;if(Da(a.bHs,1)!=39)break;Dx(a.bHs);Dx(a.bHs);Cr3(a,39,47);}}}},Cr3=(a,b,c)=>{while(Da(a.bHs,0)){if(Da(a.bHs,0)==b&&Da(a.bHs,1)==c){Dx(a.bHs);Dx(a.bHs);return;}Dx(a.bHs);}},CcE=(a,b)=>{let c,d,e;if(IZ(b,E(3538))!=(-1)){Bap();c=D3(C5H,b);d=new Sj;T(d);while(GW(c)){e=El(c,1);AMW(c,d,AH8(!NB(a.ceF,e)?BhZ(c):FW(a.ceF,e)));}ALx(c,d);return Q(d);}return b;},EXk=()=>{C5H=Dp(E(3539));}; +function DqU(){let a=this;F.call(a);a.cgC=null;a.cpL=null;a.coS=null;a.ceS=null;a.cxG=null;a.b6$=null;a.cor=0;} +let EUS=(a,b)=>{a.cgC=Nq(Bo(Cn));a.cpL=Nq(Bo(Cn));a.coS=E9();a.ceS=E9();a.cxG=E9();a.b6$=Nq(Bo(RY));a.cor=b;},B00=a=>{let b=new DqU();EUS(b,a);return b;},Cs2=(a,b,c,d)=>{Cux(a,b,c,d,AH7());},Cux=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q;if(!BIo(b)){f=e;g=BAW(f,b);if(g===null){g=Nq(Bo(RY));h=G3(G8(b.ckq));i=h;while(Gl(i)){j=GZ(h);k=c.MF();l=j;j=l.bHt;m=!d?Bso(l.bHe,null,k):Bso(null,l.bHe,k);Po(g,j,m);}ADl(f,b,g);}n=b.cAs.dX();while(n.dY()){o=n.dZ();p=b.cBa;i=o.cAo;AB6();if(i===AYc){h=!p?a.cgC:a.cpL;j=o.cAZ;i +=h;l=M7(i,j);if(l===null){l=B00(p);Po(i,o.cAZ,l);}}else{a:{b:{c:{switch(i.bGO){case 1:break c;case 2:break b;case 3:break;default:b=new BP;c=BY(i);e=new S;T(e);H(H(e,E(3540)),c);Bp(b,Q(e));J(b);}h=FS(o.cjf);break a;}h=FS(CC(o.cjf,1));break a;}k=o.cQG;h=new S;T(h);i=H(h,E(901));BE(i,k);Bb(i,41);h=Q(h);}j=!p?a.coS:a.ceS;l=FW(j,h);if(l===null){l=B00(p);Es(j,h,l);i=a.cxG;j=o.cAo;Es(i,h,j);}}m=(g.dW()).dX();while(m.dY()){d:{j=m.dZ();h=l.b6$;o=j.d0();h=M7(h,o);o=l.b6$;i=j.d0();j=j.d1();if(h!==null){e:{f=j.bZ4;if(!(f +===null&&h.bZ4===null)){q=j.b2H;if(q!==null)break e;if(h.b2H!==null)break e;}if(Ctr(j.bUU,h.bUU))h=j;j=h;break d;}if(f===null&&h.b2H===null)j=Bso(q,h.bZ4,j.bUU);else if(h.bZ4===null&&q===null)j=Bso(h.b2H,f,h.bUU);else{if(Ctr(j.bUU,h.bUU))h=j;j=h;}}}Po(o,i,j);}o=Br(b.cb9);while(Bq(o)){Cux(l,Bm(o),c,d,e);}}return;}b=new Bt;Bp(b,E(3541));J(b);},Eci=a=>{let b;b=new S;T(b);Dny(a,b,0);return Q(b);},Dny=(a,b,c)=>{let d,e,f;d=Zd(Yl(a.b6$));while(Z3(d)){e=YO(d);BCd(b,c);f=e;e=H(b,VX(f));L(e,E(1189));Bb(H(e,Wt(f)),10);}BiF(b, +c,a.cgC);BiF(b,c,a.cpL);BiF(b,c,a.coS);BiF(b,c,a.ceS);},BiF=(b,c,d)=>{let e,f,g;d=(d.dW()).dX();e=c+1|0;while(d.dY()){f=d.dZ();BCd(b,c);Bb(b,91);g=H(b,f.d0());L(g,!(f.d1()).cor?E(14):E(3542));L(g,E(3543));Dny(f.d1(),b,e);BCd(b,c);L(b,E(3544));}},BCd=(b,c)=>{let d;d=0;while(d{let e,f,g,h,i,j,k,l,m,n,o;a:{if(!AQI(b.b6$)){e=new Ob;f=b.b6$;g=AAh();h=c.bLh;i=new C4n;i.cFL=h;i.cp9=0;i=i;while(true){if(!Ck_(i)){j=AFU(g);k=Nq(Bo(RY));l=Zd(Yl(f));while(Z3(l)){i=YO(l);g +=Wt(i);h=COb(C7n(g.bUU),j);i=VX(i);m=g.b2H;f=g.bZ4;n=B1x(ATQ(m,f,h));Po(k,i,n);}CH1(e,c,k);U(d,e);break a;}if(!Ck_(i))break;o=i.cFL.bLI.data;j=i.cp9;i.cp9=j+1|0;h=o[j];if(!C8F(h)){l=h.bXk;EQ(g,l);}}b=new Kx;X(b);J(b);}}DnV(b.cgC,c,d);DnV(b.cpL,c,d);C4F(b,b.coS,c,d);C4F(b,b.ceS,c,d);},DnV=(b,c,d)=>{let e,f,g,h;e=Zd(Yl(b));while(Z3(e)){f=YO(e);g=Wt(f);h=CG(c,VX(f));if(g.cor)h=Bva(h);BFH(g,h,d);}},C4F=(b,c,d,e)=>{let f,g,h,i,j,k;f=G3(G8(c));g=f;while(Gl(g)){c=GZ(f);h=c.bHt;i=c.bHe;j=FW(b.cxG,h);AB6();k=j!==A66 +?AIV(d,h):Q1(d,CZ(B_(h,E(901).bGI.length,h.bGI.length-1|0)));if(i.cor)k=Bva(k);BFH(i,k,e);}},DnX=N(),DGp=a=>{return;},EhX=()=>{let a=new DnX();DGp(a);return a;},D7s=(a,b)=>{let c,$$je;b=b;AD8();a:{try{b=DKh(b);}catch($$e){$$je=P($$e);if($$je instanceof Dd){b=$$je;break a;}else if($$je instanceof Ld){b=$$je;break a;}else{throw $$e;}}return b;}c=new DR;YV(c,b);J(c);},CuU=N(0); +function C52(){let a=this;F.call(a);a.ciq=0;a.c3X=null;} +let ATm=(a,b)=>{let c,d;c=a.ciq+b|0;d=a.c3X;if(c{a.ciq=a.ciq+1|0;},Do0=N(),CDU=null,CvR=null,DlA=null,A6E=()=>{A6E=Z(Do0);DPC();},DPC=()=>{CDU=Br$([V(1),V(10),V(100),V(10000),V(100000000),O(1874919424, 2328306)]);CvR=new Bnd;DlA=new BVG;},A8X=N(Bx),Kl=null,Q6=null,EFT=null,HE=()=>{HE=Z(A8X);Fb8();},Ftg=(a,b,c)=>{HE();Ct(a,b,c);},CDj=(a,b)=>{let c=new A8X();Ftg(c,a,b);return c;},Fb8=()=>{let b,c,d;Kl=CDj(E(3545),0);b=CDj(E(3546),1);Q6=b;c=K(A8X,2);d=c.data;d[0]=Kl;d[1] +=b;EFT=c;},A35=N(Bx),G0=null,BBx=null,A$q=null,CS3=null,Fwf=null,EIZ=null,HA=()=>{HA=Z(A35);EC1();},EbL=(a,b,c)=>{HA();Ct(a,b,c);},BJ5=(a,b)=>{let c=new A35();EbL(c,a,b);return c;},Ddm=(a,b)=>{let c;HA();if(a!==A$q){if(a!==G0){c=b.bGP;return UQ(D3(CS3,c),E(14));}return (C8(b)).bGP;}return b.bGP;},EC1=()=>{let b,c,d;G0=BJ5(E(3547),0);BBx=BJ5(E(3548),1);b=BJ5(E(3549),2);A$q=b;c=K(A35,3);d=c.data;d[0]=G0;d[1]=BBx;d[2]=b;EIZ=c;CS3=Dp(E(3550));Fwf=Dp(E(3551));}; +function CO6(){Bl.call(this);this.cIz=null;} +let ELW=a=>{AK5();return B8u;},D7J=(a,b,c)=>{return CPV(a.cIz,c,R(c,E(455),0));},Enz=(a,b,c,d,e)=>{b=b;e=B4(Cf(b),R(d,E(455),0));return CHN(a.cIz,c,b,d,ACC(b,e));}; +function Cy5(){Bl.call(this);this.cAg=null;} +let D$o=a=>{AIm();return BH9;},E80=(a,b,c)=>{return CWK(a.cAg,c,R(c,E(455),0));},DJ$=(a,b,c,d,e)=>{b=b;e=B4(Cf(b),R(d,E(455),0));return DiJ(a.cAg,c,b,d,ACC(b,e));}; +function CP$(){Bl.call(this);this.cs6=null;} +let EEX=a=>{AKw();return BEz;},Fno=(a,b,c)=>{return CeH(a.cs6,c,R(c,E(455),0));},Eti=(a,b,c,d,e)=>{b=b;c=B4(Cf(b),R(d,E(455),0));return CIH(a.cs6,b,d,ACC(b,c));}; +function Czq(){Bl.call(this);this.cGy=null;} +let EHM=a=>{AN4();return BS1;},EZa=(a,b,c)=>{return CO_(a.cGy,c,R(c,E(455),0));},E8m=(a,b,c,d,e)=>{b=b;c=B4(Cf(b),R(d,E(455),0));return CQH(a.cGy,b,d,ACC(b,c));}; +function CO5(){EP.call(this);this.ctJ=null;} +let ETM=a=>{AK5();return B8u;},Ejl=(a,b)=>{let c,d,e,f;c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){d=Lk(CPV(a.ctJ,e,null));f=Dq(b)<=2?0:Dq(b)-2|0;if(f>0){L(d,E(2468));BE(d,f);L(d,f!=1?E(2253):E(2254));L(d,E(2255));}return Q(d);}return E(2360);},Fof=(a,b,c,d)=>{let e,f;b=b;e=a.bHB;f=(C8(DB(c))).bGP;d=Ei(e,f);c=RD(JL(HI(c,1,1)),0);f=Ig(c);return CHN(a.ctJ,I5(c),b,d,ACC(b,f));}; +function Cy4(){EP.call(this);this.cBJ=null;} +let FoW=a=>{AIm();return BH9;},E2Y=(a,b)=>{let c,d,e,f;c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){d=Lk(CWK(a.cBJ,e,null));f=Dq(b)<=2?0:Dq(b)-2|0;if(f>0){L(d,E(2468));BE(d,f);L(d,f!=1?E(2253):E(2254));L(d,E(2255));}return Q(d);}return E(2360);},DB0=(a,b,c,d)=>{let e;b=b;e=a.bHB;d=(C8(DB(c))).bGP;d=Ei(e,d);c=JL(RD(HI(c,1,1),0));e=Ig(c);return DiJ(a.cBJ,I5(c),b,d,ACC(b,e));}; +function Czo(){EP.call(this);this.csm=null;} +let Fuy=a=>{AN4();return BS1;},DGG=(a,b)=>{let c,d,e,f;c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){d=Lk(CO_(a.csm,e,null));f=Dq(b)<=2?0:Dq(b)-2|0;if(f>0){L(d,E(2468));BE(d,f);L(d,f!=1?E(2253):E(2254));L(d,E(2255));}return Q(d);}return E(2360);},E8p=(a,b,c,d)=>{let e,f;b=b;e=a.bHB;f=(C8(DB(c))).bGP;d=Ei(e,f);c=Ig(JL(RD(HI(c,1,1),0)));return CQH(a.csm,b,d,ACC(b,c));}; +function CP9(){EP.call(this);this.cvO=null;} +let DJn=a=>{AKw();return BEz;},Dwo=(a,b)=>{let c,d,e,f;c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){d=Lk(CeH(a.cvO,e,null));f=Dq(b)<=2?0:Dq(b)-2|0;if(f>0){L(d,E(2468));BE(d,f);L(d,f!=1?E(2253):E(2254));L(d,E(2255));}return Q(d);}return E(2360);},E9$=(a,b,c,d)=>{let e,f;b=b;e=a.bHB;f=(C8(DB(c))).bGP;d=Ei(e,f);c=Ig(RD(JL(HI(c,1,1)),0));return CIH(a.cvO,b,d,ACC(b,c));},BzS=N(Bl),Dfy=null,CCy=null,A_y=()=>{A_y=Z(BzS);Evy();},D8F=(a,b,c)=>{if(BG(R(c,E(551),0),E(2219)))return E(3552);return E(3553);},EN1=a=>{A_y();return Dfy;},E_W +=(a,b,c,d,e)=>{b.MU(BG(R(d,E(551),0),E(2219)));return By();},Evy=()=>{let b,c,d,e;Dfy=Bv(BB(Bi,[E(2219),E(2222)]));b=new BzS;A_y();c=BN(Bo(BzS));d=K(Bg,7);e=d.data;e[0]=BL();e[1]=Ba(1,E(551),E(552));e[2]=Bw();e[3]=Bc(E(3554));e[4]=Bw();e[5]=Bc(E(744));e[6]=BR();Cb(b,BT(c,d));CCy=b;},Bvi=N(Bl),C51=null,CI5=null,A_G=()=>{A_G=Z(Bvi);Ff7();},D20=(a,b,c)=>{let d,e,f,g;d=new S;T(d);L(d,!BG(R(c,E(2530),0),E(2222))?E(3555):E(3556));e=M0(F9(R(c,E(2545),0)),E(3557));f=new S;T(f);while(JO(e)){if(f.bG4>0)L(f,E(50));L(f, +H5(e));}if(f.bG4>0){T3(d,f);L(d,E(344));}g=F9(R(c,E(3558),0));if(BO(g,E(3559)))L(d,E(3560));else if(!BO(g,E(3561)))L(d,E(3562));else L(d,E(3563));L(d,E(3564));if(!f.bG4)L(d,E(3565));return Q(d);},Er1=(a,b,c,d)=>{let e;if(Bj(b,E(3566))){HN();if(!(c!==Pk&&c!==QA)){OM();e=AHl;OJ(d,e);}}if(Bj(b,E(3566))){HN();if(!(c!==Pk&&c!==Q0)){OM();e=AK1;OJ(d,e);}}if(Bj(b,E(3567))){HN();if(!(c!==Pk&&c!==QA)){OM();e=AGZ;OJ(d,e);}}if(Bj(b,E(3567))){HN();if(!(c!==Pk&&c!==Q0)){OM();e=AK3;OJ(d,e);}}if(Bj(b,E(3568))){HN();if(!(c!== +Pk&&c!==QA)){OM();e=AFc;OJ(d,e);}}if(Bj(b,E(3568))){HN();if(!(c!==Pk&&c!==Q0)){OM();e=AOu;OJ(d,e);}}if(Bj(b,E(2672))){HN();if(!(c!==Pk&&c!==QA)){OM();e=AEW;OJ(d,e);}}if(Bj(b,E(2672))){HN();if(!(c!==Pk&&c!==Q0)){OM();b=AMz;OJ(d,b);}}},Ds3=a=>{A_G();return C51;},DMR=(a,b,c,d,e)=>{let f,g;b=b;if(!(b instanceof B0x))b=By();else{b=b;e=F9(B_(R(d,E(3558),0),0,3));if(Bj(e,E(3559))){HN();c=Q0;}else if(Bj(e,E(3561))){HN();c=Pk;}else{if(!Bj(e,E(3569))&&!Bj(e,E(3570))){b=new Bt;X(b);J(b);}HN();c=QA;}e=PZ(Bo(AFO));f=M0(F9(R(d, +E(2545),0)),E(3557));while(JO(f)){Er1(a,H5(f),c,e);}g=BG(R(d,E(2530),0),E(2222));b=b;if(!g)Ea(b.cj$,e);else Dd$(b.cj$,e);b=By();}return b;},Ff7=()=>{let b,c,d,e;C51=Bv(BB(Bi,[E(2219),E(2222)]));b=new Bvi;A_G();c=BN(Bo(Bvi));d=K(Bg,7);e=d.data;e[0]=BL();e[1]=Ba(1,E(2530),E(552));e[2]=Bw();e[3]=Ba(1,E(2545),E(3571));e[4]=Bw();e[5]=Ba(1,E(3558),E(3572));e[6]=BR();Cb(b,BT(c,d));CI5=b;},Biz=N(Bl),Cbw=null,CHW=null,CDb=null,ARj=()=>{ARj=Z(Biz);DH6();},BQZ=(a,b)=>{HN();if(b!==Q0){if(b!==QA){if(b===Pk){b=new Bt;X(b);J(b);}return BTh();}return new C8A;}return new C8z;},Egs +=(a,b,c)=>{let d,e,f;d=new S;T(d);L(d,!BG(R(c,E(2530),0),E(2222))?E(3555):E(3556));if(R(c,E(3573),0)!==null)L(d,E(3574));e=F9(R(c,E(3558),0));if(BO(e,E(3559)))L(d,E(3560));else if(BO(e,E(3561)))L(d,E(3563));else if(BO(e,E(3575)))L(d,E(3576));else if(!BO(e,E(3577)))L(d,E(3562));else L(d,E(298));f=R(c,E(3578),0);if(f===null)L(d,E(3579));else if(BO(f,E(1775))){L(d,E(3580));L(d,f);}else{ARj();b=CDb;c=F9(f);if(Nw(b,c)){L(d,E(3581));L(d,F9(f));}else{L(d,E(2365));L(d,Dl(f));L(d,E(1762));}}return Q(d);},E3c=(a,b,c)=> +{let d,e,f,g,h;a:{d=BFA(a,R(c,E(3558),0));e=R(c,E(3578),0);if(e===null){f=BTh();break a;}if(BG(e,E(569))){Cy();f=JR(NG);break a;}if(BG(e,E(38))){Cy();f=JR(PI);break a;}if(BG(e,E(2580))){Cy();f=JR(SZ);break a;}if(BG(e,E(2578))){Cy();f=JR(ACy);break a;}if(BG(e,E(2576))){Cy();f=JR(VI);break a;}if(BG(e,E(839))){Cy();f=JR(AD7);break a;}if(BG(e,E(2582))){Cy();f=JR(AK7);break a;}if(BG(e,E(2585))){Cy();f=JR(AKX);break a;}if(BG(e,E(2579))){Cy();f=JR(AOy);break a;}if(BG(e,E(2581))){Cy();f=JR(AN1);break a;}if(BG(e,E(298))) +{Cy();f=JR(AJG);break a;}if(BG(e,E(2583))){Cy();f=JR(ABt);break a;}if(BG(e,E(2577))){Cy();f=JR(AAq);break a;}if(BO(e,E(1775))){f=C_N(e);break a;}g=DA(b,1,Z_(b,e));h=g.bG5;if(h!==null){f=Cn1(h);break a;}g=g.bHL;b=new S;T(b);H(H(b,E(3582)),g);return B5(Q(b));}Bol(b,f,d,BG(R(c,E(2530),0),E(2222)));return By();},Fu7=(a,b,c)=>{let d,e,f,g,h,i,j;a:{d=BFA(a,R(c,E(3558),0));e=R(c,E(3578),0);if(e===null){f=BTh();break a;}if(BG(e,E(569))){Cy();f=JR(NG);break a;}if(BG(e,E(38))){Cy();f=JR(PI);break a;}if(BG(e,E(2580))) +{Cy();f=JR(SZ);break a;}if(BG(e,E(2578))){Cy();f=JR(ACy);break a;}if(BG(e,E(2576))){Cy();f=JR(VI);break a;}if(BG(e,E(839))){Cy();f=JR(AD7);break a;}if(BG(e,E(2582))){Cy();f=JR(AK7);break a;}if(BG(e,E(2585))){Cy();f=JR(AKX);break a;}if(BG(e,E(2579))){Cy();f=JR(AOy);break a;}if(BG(e,E(2581))){Cy();f=JR(AN1);break a;}if(BG(e,E(298))){Cy();f=JR(AJG);break a;}if(BG(e,E(2577))){Cy();f=JR(AAq);break a;}if(BG(e,E(2583))){Cy();f=JR(ABt);break a;}if(BO(e,E(1775))){f=C_N(e);break a;}g=Dl(e);h=DA(b,1,E8(b,g));if(h!==null) +{HN();if(d===Q0){f=new C8B;f.czD=g;break a;}g=h.bG5;if(g!==null){f=Cn1(g);break a;}e=h.bHL;b=new S;T(b);H(H(b,E(3582)),e);return B5(Q(b));}b=new S;T(b);H(H(b,E(3583)),g);return B5(Q(b));}i=R(c,E(3573),0)===null?0:1;b:{c:{if(i){HN();if(d===Pk)break c;}j=0;break b;}j=1;}if(i&&!j)f=BpT(f,BQZ(a,d));if(!KX(GH(b))){e=GH(b);if(!KX(e)){g=new C8w;g.cTn=e;f=BpT(f,g);}else{b=new Bt;X(b);J(b);}}if(!j)Bol(b,f,d,BG(R(c,E(2530),0),E(2222)));else{HN();Bol(b,BpT(f,BQZ(a,QA)),QA,BG(R(c,E(2530),0),E(2222)));Bol(b,BpT(f,BQZ(a, +Q0)),Q0,BG(R(c,E(2530),0),E(2222)));}return By();},BFA=(a,b)=>{let c;c=F9(B_(b,0,3));if(!Bj(c,E(3559))){if(!Bj(c,E(3561))){if(!Bj(c,E(3569))&&!Bj(c,E(3570))){if(!Bj(c,E(3575))){if(!Bj(c,E(3577))){b=new Bt;X(b);J(b);}HN();return AAT;}HN();return ASl;}HN();return QA;}HN();return Pk;}HN();return Q0;},Evu=a=>{ARj();return Cbw;},Euw=(a,b,c,d,e)=>{let f,g,h;b=b;if(b instanceof A2Z)b=Fu7(a,b,d);else if(b instanceof BZ9)b=E3c(a,b,d);else if(!(b instanceof Bne))b=By();else{b=b;c=DiK(BFA(a,R(d,E(3558),0)));if(!BG(R(d, +E(2530),0),E(2222)))CLl(b.ccC,c);else a:{b:{b=b.ccC;if(c instanceof ANj){d=c;if(b.bMW===d.bMW)break b;}Dd$(b,c);break a;}f=0;while(true){g=b.bLe.data;if(f>=g.length)break;h=d.bLe.data[f]^(-1);if((g[f]&h)!=g[f])g[f]=g[f]&h;f=f+1|0;}}b=By();}return b;},DH6=()=>{let b,c,d,e,f,g,h,i;Cbw=Bv(BB(Bi,[E(2219),E(2222)]));b=new Biz;ARj();c=BN(Bo(Biz));d=K(Bg,7);e=d.data;e[0]=BL();e[1]=Ba(1,E(2530),E(552));e[2]=Bw();e[3]=Ba(1,E(3578),E(3584));f=new C0;g=new Ch;h=K(Bg,2);i=h.data;i[0]=Ba(1,E(3573),E(3585));i[1]=Bw();Cj(g, +h);C3(f,g);e[4]=f;e[5]=Ba(1,E(3558),E(3586));e[6]=BR();Cb(b,BT(c,d));CHW=b;CDb=Bv(BB(Bi,[E(569),E(38),E(2580),E(2578),E(2576),E(839),E(2582),E(2585),E(2579),E(2581),E(298),E(2577),E(2583)]));}; +function B97(){Bl.call(this);this.cwG=null;} +let DQb=a=>{U3();return BYb;},FaY=(a,b,c)=>{let d,e;d=a.cwG;b=R(c,E(2560),0);e=new S;T(e);Bb(H(H(e,E(2366)),b),34);return B9W(d,c,Q(e));},D_a=(a,b,c,d,e)=>{b=b;e=B4(Cf(b),R(d,E(2560),0));return DiZ(a.cwG,c,b,d,e);}; +function B_B(){EP.call(this);this.dcI=null;} +let DSV=a=>{AKq();return B_q;},DQx=(a,b)=>{let c,d,e,f,g;c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){d=new S;T(d);f=Dq(b)<=2?0:Dq(b)-2|0;L(d,E(3587));L(d,R(e,E(585),0));L(d,E(3588));L(d,Dl(R(e,E(594),1)));L(d,E(3589));L(d,R(e,E(594),0));L(d,E(3590));BE(d,f);L(d,f!=1?E(2253):E(2254));L(d,E(2255));c=R(e,E(567),0);if(c!==null){L(d,E(2244));L(d,c);}if(R(e,E(608),0)!==null){L(d,E(2228));L(d,R(e,E(608),0));}g=Ck(e,E(2573),0);if(g!==null&&!CQ(g)){L(d,E(3189));L(d,g);L(d,E(2654));}if(R(e,E(2245),0)!==null)L(d, +E(2595));return Q(d);}return E(3591);},Fhf=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n;b=b;e=a.bHB;f=(C8(DB(c))).bGP;d=Ei(e,f);c=JL(RD(HI(c,1,1),0));f=Ig(c);if(R(d,E(2245),0)!==null){e=new FZ;g=DF(b.bGM,E(2248));FC();Gb(e,g,FI);Gj(e,R(d,E(2245),0));}h=I5(c);c=R(d,E(585),0);e=R(d,E(594),0);i=Dl(R(d,E(594),1));j=(DA(b,1,e)).bG5;if(j===null)b=B5(E(2801));else{k=BZO(BaW(J3(c)),b.bGM.bNy);l=k.bHx;c=new S;T(c);H(H(H(c,e),E(3592)),l);l=DA(b,1,Dl(Q(c)));c=l.bG5;if(c===null){c=B4(Cf(b),E(14));Cy();c=ED(b,h,l,c,A30,null);e=new H6;FU();g +=Hf;Mo(e,g,g);e=C_1(e);g=k!==T_?KE(h,b,B1(b.bGM),c,j,e,KY(1)):KE(h,b,B1(b.bGM),j,c,e,KY(1));IS(b,g);}AKq();CM();e=Iw(HQ(C6),d,b.bGM.bGN);d=R(d,E(567),0);g=null;if(d!==null){g=FD(d);d=b.bGM;m=K(Kc,2);n=m.data;JN();n[0]=ACf;n[1]=ADy;e=AQL(e,g,d,m);}c=c.cyN;b=new COX;b.cOe=f;b.cOP=e;b.cWa=g;Es(c,i,b);b=By();}return b;}; +function Chm(){Bl.call(this);this.cfR=null;} +let E04=a=>{AFu();return BKk;},DP1=(a,b,c)=>{let d,e,f;d=new S;e=a.cfR;b=R(c,E(455),0);f=new S;T(f);Bb(H(H(f,E(2366)),b),34);A_K(d,B$K(e,c,Q(f)));if(R(c,E(2245),0)!==null)L(d,E(2595));return Q(d);},EKv=(a,b)=>{return a.cfR.cGK!==b?0:1;},DHw=(a,b,c,d,e)=>{let f;b=b;f=B4(Cf(b),R(d,E(455),0));return DmB(a.cfR,c,d,b,null,f);}; +function Chl(){EP.call(this);this.coh=null;} +let DMx=a=>{AFu();return BKk;},ES3=(a,b)=>{let c,d,e,f,g,h;c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){f=Dq(b)<=2?0:Dq(b)-2|0;d=new S;b=a.coh;c=f!=1?E(2253):E(2254);g=new S;T(g);h=H(g,E(2592));BE(h,f);H(H(h,c),E(2255));A_K(d,B$K(b,e,Q(g)));if(R(e,E(2245),0)!==null)L(d,E(2246));return Q(d);}return E(2360);},DEK=(a,b)=>{return a.coh.cGK!==b?0:1;},FeH=(a,b,c,d)=>{let e,f,g;b=b;e=a.bHB;f=(C8(DB(c))).bGP;d=Ei(e,f);c=JL(RD(HI(c,1,1),0));f=Ig(c);e=null;if(R(d,E(2245),0)!==null){e=new FZ;g=DF(b.bGM,E(2248));FC();Gb(e, +g,FI);e=Gj(e,R(d,E(2245),0));}return DmB(a.coh,I5(c),d,b,e,f);}; +function B96(){EP.call(this);this.cBX=null;} +let Fb4=a=>{U3();return BYb;},EyF=(a,b)=>{let c,d,e,f,g;c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){f=Dq(b)<=2?0:Dq(b)-2|0;b=a.cBX;d=f!=1?E(2253):E(2254);c=new S;T(c);g=H(c,E(2592));BE(g,f);H(H(g,d),E(2255));return B9W(b,e,Q(c));}return E(3593);},Etx=(a,b,c,d)=>{let e,f;b=b;e=a.bHB;f=(C8(DB(c))).bGP;d=Ei(e,f);c=JL(RD(HI(c,1,1),0));f=Ig(c);return DiZ(a.cBX,I5(c),b,d,f);}; +function Cye(){Bl.call(this);this.cff=null;} +let FnD=a=>{AMb();return B7Z;},Fnr=(a,b,c)=>{let d,e;d=a.cff;b=R(c,E(455),0);e=new S;T(e);Bb(H(H(e,E(2366)),b),34);return BEq(d,c,Q(e));},Fdg=(a,b)=>{return b!==a.cff.cwv?0:1;},DMd=(a,b,c,d,e)=>{b=b;c=B4(Cf(b),R(d,E(455),0));return CcX(a.cff,b,d,c);}; +function Cyd(){EP.call(this);this.ccP=null;} +let EoF=a=>{AMb();return B7Z;},DUE=(a,b)=>{let c,d,e,f,g;c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){f=Dq(b)<=2?0:Dq(b)-2|0;if(f){b=a.ccP;d=f!=1?E(2253):E(2254);c=new S;T(c);g=H(c,E(2592));BE(g,f);H(H(g,d),E(2255));return BEq(b,e,Q(c));}return BEq(a.ccP,e,E(3594));}return E(3595);},Ej3=(a,b)=>{return b!==a.ccP.cwv?0:1;},EV9=(a,b,c,d)=>{let e;b=b;e=(C8(DB(c))).bGP;c=JL(RD(HI(c,1,1),0));if(Dq(c)<=0)b=B5(E(3247));else{d=Ei(a.bHB,e);c=Ig(c);b=CcX(a.ccP,b,d,c);}return b;},Bg0=N(Bl),CAd=null,Dc9=null,AYQ=()=> +{AYQ=Z(Bg0);EB4();},Fmo=(a,b,c)=>{b=Ck(c,E(426),0);c=new S;T(c);Bb(H(H(c,E(3596)),b),34);return Q(c);},EAI=a=>{AYQ();return CAd;},DRX=(a,b,c,d,e)=>{let f;b=b;e=B4(Cf(b),Ck(d,E(426),0));B3();f=CO;Fa();BBn(b,AMI(c,e,f,NH));return By();},EB4=()=>{let b,c,d,e,f,g,h;b=K(Bi,1);b.data[0]=E(222);CAd=Bv(b);c=new Bg0;AYQ();d=BN(Bo(Bg0));e=K(Bg,5);b=e.data;b[0]=BL();b[1]=Bc(E(222));b[2]=Bc(E(2440));f=new DD;g=K(Bg,2);h=g.data;h[0]=Ba(1,E(3597),E(3287));h[1]=Ba(1,E(3598),E(2441));Eb(f,g);b[3]=f;b[4]=BR();Cb(c,BT(d,e));Dc9 +=c;},Bff=N(Bl),CWz=null,DnE=null,A5G=()=>{A5G=Z(Bff);Eao();},DPo=(a,b,c)=>{b=R(c,E(470),0);c=new S;T(c);Bb(H(H(c,E(3599)),b),34);return Q(c);},FwV=a=>{A5G();return CWz;},EbN=(a,b,c,d,e)=>{b=b;b.coy=AMI(c,B4(Cf(b),R(d,E(470),0)),null,null);return By();},Eao=()=>{let b,c,d,e,f,g,h,i,j,k;b=K(Bi,1);b.data[0]=E(767);CWz=Bv(b);c=new Bff;A5G();d=BN(Bo(Bff));e=K(Bg,5);f=e.data;f[0]=BL();f[1]=Bc(E(767));g=new DD;h=K(Bg,2);i=h.data;j=new Ch;b=K(Bg,3);k=b.data;k[0]=Bd();k[1]=Bc(E(82));k[2]=Bd();Cj(j,b);i[0]=j;i[1]=Bw();Eb(g, +h);f[2]=g;f[3]=Ba(1,E(470),E(2441));f[4]=BR();Cb(c,BT(d,e));DnE=c;},Bs5=N(Bl),CmX=null,Cj0=null,AZS=()=>{AZS=Z(Bs5);Fq7();},Eep=(a,b,c)=>{b=Ck(c,E(2560),0);c=new S;T(c);Bb(H(H(c,E(3600)),b),34);return Q(c);},EJm=a=>{AZS();return CmX;},Exy=(a,b,c,d,e)=>{let f;b=b;e=B4(Cf(b),Ck(d,E(2560),0));B3();f=CO;Fa();b.b$0=AMI(c,e,f,Pe);return By();},Fq7=()=>{let b,c,d,e,f,g,h;b=K(Bi,1);b.data[0]=E(224);CmX=Bv(b);c=new Bs5;AZS();d=BN(Bo(Bs5));e=K(Bg,5);b=e.data;b[0]=BL();b[1]=Bc(E(224));b[2]=Bc(E(2440));f=new DD;g=K(Bg, +2);h=g.data;h[0]=Ba(1,E(2663),E(3287));h[1]=Ba(1,E(2641),E(2441));Eb(f,g);b[3]=f;b[4]=BR();Cb(c,BT(d,e));Cj0=c;},BJH=N(Xj),CUZ=null,Cvb=null,A42=()=>{A42=Z(BJH);DZY();},Fdh=(a,b)=>{let c,d,e;c=Dq(b)<=2?0:Dq(b)-2|0;if(c){b=c!=1?E(2253):E(2254);d=new S;T(d);e=H(d,E(3601));BE(e,c);H(H(e,b),E(2255));return Q(d);}return E(3602);},EVH=a=>{A42();return CUZ;},DHB=(a,b,c,d)=>{let e;b=b;d=I5(c);c=Ig(JL(HI(c,1,1)));if(I6(c)<=0)b=B5(E(3603));else{e=BFO(c);B3();c=CO;Fa();b.b$0=AMI(d,e,c,Pe);b=By();}return b;},DZY=()=>{let b, +c;b=K(Bi,1);b.data[0]=E(224);CUZ=Bv(b);c=new BJH;A42();A54(c,Dm(E(3604)),Dm(E(3605)));Cvb=c;},BN9=N(Xj),CwO=null,Dkr=null,AYX=()=>{AYX=Z(BN9);DAC();},DRP=(a,b)=>{let c,d,e;c=Dq(b)<=2?0:Dq(b)-2|0;if(c){b=c!=1?E(2253):E(2254);d=new S;T(d);e=H(d,E(3606));BE(e,c);H(H(e,b),E(2255));return Q(d);}return E(3607);},D_q=a=>{AYX();return CwO;},D7D=(a,b,c,d)=>{let e;b=b;d=I5(c);c=Ig(JL(RD(HI(c,1,1),0)));if(I6(c)<=0)b=B5(E(3608));else{e=BFO(c);B3();c=CO;Fa();BBn(b,AMI(d,e,c,NH));b=By();}return b;},DAC=()=>{let b,c;b=K(Bi, +1);b.data[0]=E(222);CwO=Bv(b);c=new BN9;AYX();A54(c,Dm(E(3609)),Dm(E(3610)));Dkr=c;},Bpv=N(EP),Dn4=null,DoQ=null,CU7=null,AXm=()=>{AXm=Z(Bpv);DIp();},Ffl=(a,b)=>{let c,d,e,f,g;b=ARR(b,1);c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){d=new S;T(d);L(d,E(3611));c=R(e,E(3612),0);if(c!==null){L(d,E(3613));L(d,c);}f=R(e,E(3614),0);if(f!==null){L(d,E(3615));L(d,f);}g=Dq(b)<=2?0:Dq(b)-2|0;if(g<=0)L(d,E(3616));else{L(d,E(3617));BE(d,g);L(d,g!=1?E(2253):E(2254));L(d,E(2255));}return Q(d);}return E(3611);}; +let DzO=a=>{AXm();return Dn4;},Emk=(a,b,c,d)=>{let e,f;b=b;d=I5(c);c=ARR(c,1);e=a.bHB;f=(C8(DB(c))).bGP;f=Ei(e,f);e=R(f,E(3614),0);f=R(f,E(3612),0);c=Ig(JL(HI(c,1,1)));if(I6(c)<=0)b=B5(E(3618));else{Fa();f=BG(NH.bHx,f)?NH:!BG(Pe.bHx,f)?Pe:Pe;e=APp(e);if(e===null)e=CO;b.Nb(AMI(d,BFO(c),e,f));b=By();}return b;},DIp=()=>{let b,c,d,e,f,g,h,i,j,k;b=K(Bi,1);b.data[0]=E(220);Dn4=Bv(b);DoQ=HO(new Cgg);c=new Bpv;AXm();d=BN(Bo(Bpv));e=K(Bg,5);f=e.data;f[0]=BL();f[1]=Bc(E(220));g=new C0;h=new Ch;b=K(Bg,2);i=b.data;i[0] +=Bw();i[1]=Ba(1,E(3612),E(3380));Cj(h,b);C3(g,h);f[2]=g;j=new C0;k=new Ch;b=K(Bg,2);i=b.data;i[0]=Bw();i[1]=Ba(1,E(3614),E(3619));Cj(k,b);C3(j,k);f[3]=j;f[4]=BR();g=BT(d,e);HE();j=Kl;HA();Iy(c,g,j,G0,DoQ);CU7=c;},Bqx=N(Bl),CJx=null,DhD=null,Ban=()=>{Ban=Z(Bqx);EON();},DXp=(a,b,c)=>{b=Ck(c,E(488),0);c=new S;T(c);Bb(H(H(c,E(3620)),b),34);return Q(c);},E29=a=>{Ban();return CJx;},Eph=(a,b,c,d,e)=>{b=b;c=B4(Cf(b),Ck(d,E(488),0));B3();d=CO;Fa();b.Nb(BYy(c,d,Pe));return By();},EON=()=>{let b,c,d,e,f,g,h;b=K(Bi,1);b.data[0] +=E(220);CJx=Bv(b);c=new Bqx;Ban();d=BN(Bo(Bqx));e=K(Bg,5);b=e.data;b[0]=BL();b[1]=Bc(E(220));b[2]=Bc(E(2440));f=new DD;g=K(Bg,2);h=g.data;h[0]=Ba(1,E(3621),E(3287));h[1]=Ba(1,E(3622),E(2441));Eb(f,g);b[3]=f;b[4]=BR();Cb(c,BT(d,e));DhD=c;},Bz3=N(Bl),CRp=null,CSY=null,A3Q=()=>{A3Q=Z(Bz3);DZn();},DQv=(a,b,c)=>{let d,e;d=new S;T(d);L(d,E(3623));L(d,Ck(c,E(470),0));L(d,E(1268));e=R(c,E(585),0);if(e!==null){L(d,E(3615));L(d,e);}return Q(d);},D$B=a=>{A3Q();return CRp;},DW2=(a,b,c,d,e)=>{let f;b=b;f=R(d,E(585),0);B3();e +=BuK(f,CO);if(f===null){e=Vt(b);Fs();e=IR(B0(e,BjO(AOD,null)));}DgC(b,c,B4(Cf(b),Ck(d,E(470),0)),e);return By();},DZn=()=>{let b,c,d,e,f,g,h,i,j,k,l;CRp=Bv(BB(Bi,[E(3624),E(3625),E(226),E(1273),E(3626),E(1274),E(3627)]));b=new Bz3;A3Q();c=BN(Bo(Bz3));d=K(Bg,7);e=d.data;e[0]=BL();e[1]=DI(Ba(1,E(585),E(3619)));e[2]=Bd();e[3]=Bc(E(226));f=new DD;g=K(Bg,2);h=g.data;i=new Ch;j=K(Bg,3);k=j.data;k[0]=Bd();k[1]=Bc(E(82));k[2]=Bd();Cj(i,j);h[0]=i;h[1]=Bw();Eb(f,g);e[4]=f;l=new DD;j=K(Bg,2);g=j.data;g[0]=Ba(1,E(3628), +E(3287));g[1]=Ba(1,E(3629),E(2441));Eb(l,j);e[5]=l;e[6]=BR();Cb(b,BT(c,d));CSY=b;},B2k=N(Xj),CJ4=null,Cyn=null,A1i=()=>{A1i=Z(B2k);D$8();},Esj=(a,b)=>{let c,d,e,f;b=Nn(b);c=DX(a.b1S,(C8(DB(b))).bGP,0);if(EZ(c)){d=new S;T(d);L(d,E(3630));e=CU(c,1);if(e!==null){L(d,E(3615));L(d,e);}f=Dq(b)<=2?0:Dq(b)-2|0;if(f<=0)L(d,E(3631));else{L(d,E(3617));BE(d,f);L(d,f!=1?E(2253):E(2254));L(d,E(2255));}return Q(d);}return E(3630);},EML=a=>{A1i();return CJ4;},EHU=(a,b,c,d)=>{let e,f;b=b;d=I5(c);c=Nn(c);e=DX(a.b1S,(C8(DB(c))).bGP, +0);if(EZ(e)){e=CU(e,1);c=Ig(HI(c,1,1));if(I6(c)<=0)b=B5(E(3632));else{B3();f=BuK(e,CO);if(e===null){f=B1(b.bGM);Fs();f=IR(B0(f,BjO(AOD,null)));}DgC(b,d,c,f);b=By();}return b;}b=new BP;X(b);J(b);},D$8=()=>{let b;CJ4=Bv(BB(Bi,[E(3624),E(3625),E(226),E(1273),E(3626),E(1274),E(3627)]));b=new B2k;A1i();A54(b,Dm(E(3633)),Dm(E(3634)));Cyn=b;},Bu6=N(Bl),Cev=null,DhZ=null,A83=()=>{A83=Z(Bu6);DPQ();},Fuf=(a,b,c)=>{let d,e;d=new S;T(d);L(d,E(3635));L(d,Ck(c,E(470),0));L(d,E(1268));e=R(c,E(585),0);if(e!==null){L(d,E(3615));L(d, +e);}return Q(d);},DtI=a=>{A83();return Cev;},Fhg=(a,b,c,d,e)=>{let f;b=b;f=R(d,E(585),0);B3();e=BuK(f,Ft);if(f===null){e=Vt(b);Fs();e=IR(B0(e,BjO(AJd,null)));}CEx(b,c,B4(Cf(b),Ck(d,E(470),0)),e);return By();},DPQ=()=>{let b,c,d,e,f,g,h,i,j,k,l;Cev=Bv(BB(Bi,[E(3624),E(3636),E(225),E(1273),E(3637),E(1274),E(3638)]));b=new Bu6;A83();c=BN(Bo(Bu6));d=K(Bg,7);e=d.data;e[0]=BL();e[1]=DI(Ba(1,E(585),E(3619)));e[2]=Bd();e[3]=Bc(E(225));f=new DD;g=K(Bg,2);h=g.data;i=new Ch;j=K(Bg,3);k=j.data;k[0]=Bd();k[1]=Bc(E(82));k[2] +=Bd();Cj(i,j);h[0]=i;h[1]=Bw();Eb(f,g);e[4]=f;l=new DD;j=K(Bg,2);g=j.data;g[0]=Ba(1,E(3628),E(3287));g[1]=Ba(1,E(3629),E(2441));Eb(l,j);e[5]=l;e[6]=BR();Cb(b,BT(c,d));DhZ=b;},BOp=N(Xj),Cep=null,CVp=null,AZB=()=>{AZB=Z(BOp);FdO();},EY5=(a,b)=>{let c,d,e,f;b=Nn(b);c=DX(a.b1S,(C8(DB(b))).bGP,0);if(EZ(c)){d=new S;T(d);L(d,E(3639));e=CU(c,1);if(e!==null){L(d,E(3615));L(d,e);}f=Dq(b)<=2?0:Dq(b)-2|0;if(f<=0)L(d,E(3640));else{L(d,E(3617));BE(d,f);L(d,f!=1?E(2253):E(2254));L(d,E(2255));}return Q(d);}return E(3639);},E44 +=a=>{AZB();return Cep;},E_2=(a,b,c,d)=>{let e,f;b=b;d=I5(c);c=Nn(c);e=DX(a.b1S,(C8(DB(c))).bGP,0);if(EZ(e)){e=CU(e,1);c=Ig(HI(c,1,1));if(I6(c)<=0)b=B5(E(3641));else{B3();f=BuK(e,Ft);if(e===null){f=B1(b.bGM);Fs();f=IR(B0(f,BjO(AJd,null)));}CEx(b,d,c,f);b=By();}return b;}b=new BP;X(b);J(b);},FdO=()=>{let b;Cep=Bv(BB(Bi,[E(3624),E(3636),E(225),E(1273),E(3637),E(1274),E(3638)]));b=new BOp;AZB();A54(b,Dm(E(3642)),Dm(E(3643)));CVp=b;},Bmw=N(Bl),Chq=null,CI$=null,A1c=()=>{A1c=Z(Bmw);FcM();},EIX=(a,b,c)=>{let d;d=R(c, +E(3644),0);if(!BG(E(71),d)&&!BG(E(2),d)){b=new S;T(b);Bb(H(H(b,E(3645)),d),39);return Q(b);}return E(3646);},FaJ=a=>{A1c();return Chq;},E$d=(a,b,c,d,e)=>{b=b;c=R(d,E(3644),0);if(!BG(E(71),c)&&!BG(E(2),c))b.nA(c);else b.nA(null);return By();}; +let FcM=()=>{let b,c,d,e,f,g,h;b=K(Bi,1);b.data[0]=E(3647);Chq=Bv(b);c=new Bmw;A1c();d=BN(Bo(Bmw));b=K(Bg,7);e=b.data;e[0]=BL();e[1]=Bc(E(3647));e[2]=Bw();f=new DD;g=K(Bg,2);h=g.data;h[0]=Bc(E(793));h[1]=Bc(E(3648));Eb(f,g);e[3]=f;e[4]=Bw();e[5]=Ba(1,E(3644),E(3649));e[6]=BR();Cb(c,BT(d,b));CI$=c;},Bmx=N(Bl),Cgn=null,CPW=null,A4N=()=>{A4N=Z(Bmx);FkO();},D$L=(a,b,c)=>{return null;},EXU=(a,b,c,d,e)=>{return By();},FbO=a=>{A4N();return Cgn;},FkO=()=>{let b,c,d,e;b=K(Bi,1);b.data[0]=E(14);Cgn=Bv(b);c=new Bmx;A4N();d +=BN(Bo(Bmx));b=K(Bg,3);e=b.data;e[0]=BL();e[1]=Bd();e[2]=BR();Cb(c,BT(d,b));CPW=c;},BiW=N(Bl),Ctv=null,Ck1=null,A_k=()=>{A_k=Z(BiW);DTx();},DK4=(a,b,c)=>{let d,e,f;d=F9(R(c,E(563),0));e=R(c,E(696),0);if(!Bj(d,E(3650))){if(!Bj(d,E(3651))){if(Bj(d,E(2660))&&e!==null){b=new S;T(b);H(H(H(b,E(3652)),e),E(3653));return Q(b);}f=new S;T(f);L(f,E(3654));L(f,d);L(f,E(1762));if(e!==null){L(f,E(3655));L(f,e);L(f,E(1762));}return Q(f);}return E(3656);}if(e!==null&&CB(e,E(344))){b=new S;T(b);Bb(H(H(b,E(3657)),e),39);return Q(b);}return E(3658);},Enp +=a=>{A_k();return Ctv;},EDr=(a,b,c,d,e)=>{let f,g,h,i,j;b=b;c=F9(R(d,E(563),0));d=R(d,E(696),0);if(!BG(c,E(3650))){e=Cf(b);IY();f=(Dni.b2()).data;g=f.length;h=0;a:{b:{while(true){if(h>=g)break b;i=f[h];if(Bj(CdJ(c),CdJ(i.bHx)))break;h=h+1|0;}break a;}i=null;}if(i!==null){if(d!==null)j=d;else{j=i.c3E;if(j===null)j=d;}ABb(e.ccj,i,j);}if(BG(c,E(2660))&&BG(d,E(3659)))b.cxV=1;}else if(CB(d,E(344))){c=AVX(d,E(3660),0);d=b.bGM;b=H5(c);c=H5(c);d=d.cSA;b=COV(b);c=COV(c);C9(d,b,c);}return By();},DTx=()=>{let b,c,d,e, +f,g,h,i;b=K(Bi,1);b.data[0]=E(1217);Ctv=Bv(b);c=new BiW;A_k();d=BN(Bo(BiW));e=K(Bg,6);f=e.data;f[0]=BL();f[1]=Bc(E(3661));f[2]=Bw();f[3]=Ba(1,E(563),E(3662));g=new C0;h=new Ch;b=K(Bg,2);i=b.data;i[0]=Bw();i[1]=Ba(1,E(696),E(566));Cj(h,b);C3(g,h);f[4]=g;f[5]=BR();Cb(c,BT(d,e));Ck1=c;},Bzg=N(Bl),Cw1=null,C8h=null,A0x=()=>{A0x=Z(Bzg);Fsr();},FqU=(a,b,c)=>{b=R(c,E(554),0);c=new S;T(c);H(H(H(c,E(3663)),b),E(3664));return Q(c);},EgR=a=>{A0x();return Cw1;},D8c=(a,b,c,d,e)=>{return By();},Fsr=()=>{let b,c,d,e;b=K(Bi, +1);b.data[0]=E(1217);Cw1=Bv(b);c=new Bzg;A0x();d=BN(Bo(Bzg));b=K(Bg,7);e=b.data;e[0]=BL();e[1]=Bc(E(3665));e[2]=Bw();e[3]=Bc(E(333));e[4]=Bw();e[5]=Ba(1,E(554),E(3666));e[6]=BR();Cb(c,BT(d,b));C8h=c;},BAj=N(Bl),Dap=null,CuN=null,A_f=()=>{A_f=Z(BAj);DXW();},Ea7=(a,b,c)=>{let d,e;d=new S;T(d);e=R(c,E(563),0);L(d,E(3667));L(d,e);L(d,E(2303));L(d,R(c,E(696),0));L(d,E(1762));if(BG(E(168),e))L(d,E(3668));else if(!(!BG(E(3669),e)&&!BG(E(1826),e)))L(d,E(3670));if(BG(E(3671),R(c,E(554),0)))L(d,E(3672));return Q(d);},DCE +=a=>{A_f();return Dap;},EyG=(a,b,c,d,e)=>{let f,g,h,i,$$je;b=b;a:{b:{try{e=R(d,E(563),0);if(BG(E(168),e)){c=new JK;f=K(Bi,1);g=R(d,E(696),0);h=CR();H(H(H(h,E(3673)),g),E(3065));f.data[0]=CH(h);J2(c,f);Nk(b,c);}if(BG(E(3669),e)){g=new JK;f=K(Bi,6);i=f.data;i[0]=E(3674);i[1]=E(1698);i[2]=E(3675);c=R(d,E(696),0);h=CR();H(H(h,E(3676)),c);i[3]=CH(h);i[4]=E(582);i[5]=E(1699);J2(g,f);Nk(b,g);}B1l(b,e,R(d,E(696),0));FpT(b,1);b=By();break a;}catch($$e){$$je=P($$e);if($$je instanceof LI){break b;}else{throw $$e;}}}b= +B5(E(3677));}return b;},DXW=()=>{let b,c,d,e;Dap=Bv(BB(Bi,[E(3678),E(3671)]));b=new BAj;A_f();c=BN(Bo(BAj));d=K(Bg,7);e=d.data;e[0]=BL();e[1]=Ba(1,E(554),E(3679));e[2]=Bw();e[3]=Ba(1,E(563),E(3680));e[4]=Bw();e[5]=Ba(1,E(696),E(3681));e[6]=BR();Cb(b,BT(c,d));CuN=b;}; +function BpP(){Bl.call(this);this.cTC=null;} +let CXZ=null,Cwj=null,Ba2=()=>{Ba2=Z(BpP);EB2();},EnU=(a,b,c)=>{let d,e,f,g,h;d=(IW(R(c,E(664),0),E(1555))).data;e=0;f=d.length;g=0;while(g{Ba2();return CXZ;},FgH=(a,b,c,d,e)=>{let f,g,h,i;b=b;f=R(d,E(664),0);c=BWr();g=(IW(f,E(1555))).data;h=g.length;i=0;a:{b:{while(true){if(i>=h)break b;d=g[i];c=C45(c,d);if(Bj(Dk(d), +E(582))){c=Dga(a.cTC,b,c,e);if(!OI(c))break;c=BWr();}i=i+1|0;}break a;}b.caP=1;c=By();}return c;},EB2=()=>{let b,c,d,e,f,g,h,i;CXZ=Bv(BB(Bi,[E(3678),E(3671)]));b=new BpP;Ba2();c=BN(Bo(BpP));d=K(Bg,3);e=d.data;e[0]=BL();f=new CYK;g=new Ch;h=K(Bg,3);i=h.data;i[0]=Ba(1,E(554),E(3679));i[1]=Bw();i[2]=Bc(E(3686));Cj(g,h);i=K(Bg,1);i.data[0]=g;BgR(f,i);f.cpy=E(664);e[1]=f;e[2]=BR();Cb(b,BT(c,d));AIs();b.cTC=BDD;Cwj=b;}; +function BH3(){F.call(this);this.cbW=null;} +let DRW=(a,b)=>{let c,d,e,f;if(O7(DX(a.cbW,(C8(DB(b))).bGP,0))){if(Dq(b)!=1){c=1;b=Um(HI(b,1,0));while(true){if(!b.dY()){if(!c){F5();return PY;}F5();return Oo;}d=(C8(b.dZ())).bGP;e=ES(d);AIs();if(O7(DX(CNx,e,0)))f=1;else{Bhd();f=O7(DX(BR4,e,0));}if(!f){F5();return KS;}if(Dr(d,E(580)))c=c+1|0;if(Dr(d,E(582)))c=c+(-1)|0;if(c<0)break;}F5();return KS;}F5();return Oo;}F5();return KS;},DyU=a=>{return B9e(a.cbW.b$n);},B1y=N(BH3),CUY=null,CNx=null,BDD=null,AIs=()=>{AIs=Z(B1y);DP_();},EgI=(a,b)=>{let c,d,e,f;b=RD(b, +1);c=DX(a.cbW,(C8(DB(b))).bGP,0);if(EZ(c)){d=new S;T(d);e=CU(c,1);if(e===null)L(d,E(3687));else{L(d,E(3688));L(d,e);L(d,E(1762));}f=Dq(b)<=2?0:Dq(b)-2|0;L(d,E(3689));BE(d,f);L(d,f!=1?E(2253):E(2254));return Q(d);}return E(3687);},Dga=(a,b,c,d)=>{let e,f,g,$$je;e=new BMq;Bhd();e.civ=Bk();e.c1N=b;c=RD(c,1);f=DX(a.cbW,(C8(DB(c))).bGP,0);if(EZ(f)){g=CU(f,1);b.caP=1;if(g!==null)CHw(e,g);a:{try{b=Um(ADd(Nn(HI(c,1,1))));b:{while(true){if(!b.dY()){b=By();break a;}c=b.dZ();if(Df()&&!CIT&&GB(ZA(c))<=0)J(Jk());if(Bj(ZA(c), +E(582))){DRc(e);continue;}d=DX(BR4,ZA(c),0);if(!EZ(d))break;if(CU(d,2)!==null)CHw(e,CU(d,1));else{if(CU(d,3)===null)break b;c=DBn(e);f=CU(d,1);g=CR();H(H(g,c),f);f=CH(g);B1l(e.c1N,f,CU(d,3));}}J(AFM());}b=new BP;c=ZA(c);d=CR();Et(H(Et(d,46),c),46);BZA(b,CH(d));J(b);}catch($$e){$$je=P($$e);if($$je instanceof LI){b=B5(E(3677));break a;}else{throw $$e;}}}return b;}return B5(E(3690));},Dtw=(a,b)=>{Jx();return b!==JB?0:1;},EGE=a=>{AIs();return CUY;},Fmk=(a,b,c,d)=>{return Dga(a,b,c,d);},DP_=()=>{let b,c,d;b=K(Bi, +1);b.data[0]=E(3678);CUY=Bv(b);CNx=Dm(E(3691));c=new B1y;AIs();if(BO(E(3692),E(1174))&&Dr(E(3692),E(1497))){c.cbW=Dm(E(3692));BDD=c;return;}c=new Bt;d=new S;T(d);H(H(d,E(3693)),E(3692));Bp(c,Q(d));J(c);},Bfj=N(Bl),B_3=null,CrN=null,A4h=()=>{A4h=Z(Bfj);DTW();},D21=(a,b,c)=>{b=R(c,E(3694),0);c=new S;T(c);Bb(H(H(c,E(3695)),b),39);return Q(c);},DTh=a=>{A4h();return B_3;},E$a=(a,b,c,d,e)=>{let $$je;b=b;a:{b:{try{b=D23(b,R(d,E(3694),0));break a;}catch($$e){$$je=P($$e);if($$je instanceof Dd){break b;}else{throw $$e;}}}b +=B5(E(3696));}return b;},DTW=()=>{let b,c,d,e;b=K(Bi,1);b.data[0]=E(3697);B_3=Bv(b);c=new Bfj;A4h();d=BN(Bo(Bfj));b=K(Bg,5);e=b.data;e[0]=BL();e[1]=Bc(E(3697));e[2]=Bw();e[3]=Ba(1,E(3694),E(3698));e[4]=BR();Cb(c,BT(d,b));CrN=c;},Bww=N(Bl),C2w=null,CeF=null,A$2=()=>{A$2=Z(Bww);DKk();},EJf=(a,b,c)=>{b=R(c,E(696),0);c=new S;T(c);H(H(H(c,E(3699)),b),E(3700));return Q(c);},DD4=a=>{A$2();return C2w;},D7G=(a,b,c,d,e)=>{CZ(R(d,E(696),0));return By();},DKk=()=>{let b,c,d,e;b=K(Bi,1);b.data[0]=E(3701);C2w=Bv(b);c=new Bww;A$2();d +=BN(Bo(Bww));b=K(Bg,5);e=b.data;e[0]=BL();e[1]=Bc(E(3701));e[2]=Bw();e[3]=Ba(1,E(696),E(2448));e[4]=BR();Cb(c,BT(d,b));CeF=c;},BeU=N(Bl),Dhs=null,B$b=null,A9G=()=>{A9G=Z(BeU);EQf();},EbF=(a,b,c)=>{let d,e,f;d=new S;T(d);e=R(c,E(3702),0);f=R(c,E(3703),0);L(d,E(3704));L(d,e);L(d,E(1964));L(d,f);L(d,E(3705));L(d,e);L(d,E(3706));L(d,f);L(d,E(3707));if(!(!Qc(e,E(3708))&&!Qc(f,E(3708))))L(d,E(3709));return Q(d);},Ewi=a=>{A9G();return Dhs;},Fc7=(a,b,c,d,e)=>{let f,g;b=b;f=CZ(R(d,E(3702),0));g=CZ(R(d,E(3703),0));if +(!(f>0&&g>0))b=B5(E(3710));else{b=b;b.cBO=f;b.cr1=g;b=By();}return b;},EQf=()=>{let b,c,d,e;b=K(Bi,1);b.data[0]=E(3711);Dhs=Bv(b);c=new BeU;A9G();d=BN(Bo(BeU));b=K(Bg,9);e=b.data;e[0]=BL();e[1]=Bc(E(3711));e[2]=Bw();e[3]=Ba(1,E(3702),E(2448));e[4]=Bd();e[5]=Bc(E(3712));e[6]=Bd();e[7]=Ba(1,E(3703),E(2448));e[8]=BR();Cb(c,BT(d,b));B$b=c;},Biw=N(Bl),C8c=null,C4Y=null,A$b=()=>{A$b=Z(Biw);FaM();},E66=(a,b,c)=>{return E(3713);},D9y=a=>{A$b();return C8c;},DAb=(a,b,c,d,e)=>{return By();},FaM=()=>{let b,c,d,e;b=K(Bi, +1);b.data[0]=E(3496);C8c=Bv(b);c=new Biw;A$b();d=BN(Bo(Biw));b=K(Bg,3);e=b.data;e[0]=BL();e[1]=Bc(E(3496));e[2]=BR();Cb(c,BT(d,b));C4Y=c;}; +function AI7(){let a=this;F.call(a);a.cLP=null;a.cU6=null;a.cyY=null;} +let BUY=null,CCB=null,BLT=null,AFA=()=>{AFA=Z(AI7);Fre();},E0f=a=>{let b,c,d,e,f,g,h;AFA();b=BN(Bo(AI7));c=new S;T(c);H(H(c,b),E(2349));d=Q(c);e=K(Bg,10);f=e.data;f[0]=BL();f[1]=Bc(E(3714));f[2]=Bw();f[3]=Bc(E(1924));f[4]=Ba(1,E(563),E(650));f[5]=Bd();f[6]=DI(Ba(5,E(3715),E(3716)));f[7]=Bd();f[8]=Bc(E(568));f[9]=BR();a.cLP=BT(d,e);b=BN(Bo(AI7));c=new S;T(c);H(H(c,b),E(583));g=Q(c);e=K(Bg,10);f=e.data;f[0]=BL();f[1]=Bc(E(3714));f[2]=Bw();f[3]=Bc(E(1924));f[4]=Ba(1,E(563),E(650));f[5]=Bd();f[6]=DI(Ba(5,E(3715), +E(3717)));f[7]=Bw();f[8]=Ba(1,E(565),E(3718));f[9]=BR();a.cU6=BT(g,e);b=new C0I;c=a.cLP;HE();h=Kl;HA();d=G0;g=CCB;b.cEL=a;Iy(b,c,h,d,g);a.cyY=b;},DM6=()=>{let a=new AI7();E0f(a);return a;},Cnx=(a,b)=>{let c,d;c=new S;T(c);L(c,E(3719));L(c,R(b,E(563),0));L(c,E(1762));if(R(b,E(3715),0)===null)L(c,E(3720));else{L(c,E(50));L(c,R(b,E(3715),0));L(c,E(1964));L(c,R(b,E(3715),1));L(c,E(1965));if(R(b,E(3715),4)!==null)L(c,E(3721));else{d=R(b,E(3715),2);L(c,E(50));L(c,d);L(c,E(3722));if(R(b,E(3715),3)!==null)L(c,E(3723));if +(!Bj(d,E(3498))&&!Bj(d,E(3502))&&!Bj(d,E(3724)))L(c,E(3725));}}return Q(c);},Dqa=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,$$je;a:{if(R(c,E(3715),0)===null){AO4();e=Dci(ATT,(-1),(-1),d);}else{f=CZ(R(c,E(3715),0));g=CZ(R(c,E(3715),1));if(R(c,E(3715),4)!==null){BE1();e=new CMi;h=(d.cf(0)).bGI.length/2|0;f=d.dV();e.b6M=h;e.b8y=f;e.c4G=Bgv([h,f]);e.cCm=Bgv([h,f]);f=0;b:while(true){if(f>=e.b6M)break a;g=0;while(g=0&&f=0&&g{let b;b=K(Bi,1);b.data[0]=E(3714);BUY=Bv(b);CCB=HO(new CUo);BLT=DM6();},BtK=N(Bl),Cjj=null,B$1=null,AZP=()=>{AZP=Z(BtK);DCL();},DP2=(a,b,c)=>{let d;b=R(c,E(563),0);d=(R(c,E(565),0)).bGI.length;c=new S;T(c);b=H(H(H(c,E(3719)),b),E(3729));BE(b,d);H(b,E(3730));return Q(c);},EvG=a=>{AZP();return Cjj;},Fe3=(a,b,c,d,e)=>{let f,$$je;b=b;f=BlL(R(d,E(565),0));a:{b:{try{b.Nw(R(d,E(563),0),Bwm(BVO(f)));b=By();break a;}catch($$e){$$je=P($$e);if($$je instanceof Dd){break b;}else{throw $$e;}}}b +=B5(E(3731));}return b;},DCL=()=>{let b,c,d,e;b=K(Bi,1);b.data[0]=E(3714);Cjj=Bv(b);c=new BtK;AZP();d=BN(Bo(BtK));b=K(Bg,9);e=b.data;e[0]=BL();e[1]=Bc(E(3714));e[2]=Bw();e[3]=Bc(E(1924));e[4]=Ba(1,E(563),E(650));e[5]=Bw();e[6]=Bc(E(88));e[7]=Ba(1,E(565),E(3732));e[8]=BR();Cb(c,BT(d,b));B$1=c;},Bfo=N(Bl),C5M=null,CbF=null,Baw=()=>{Baw=Z(Bfo);Ep5();},ELr=a=>{Baw();return C5M;},D4f=(a,b,c,d,e)=>{let f,$$je;a:{b=b;c=R(d,E(3733),0);e=Csb(b.bGM,c);if(e===null){b=new S;T(b);H(H(b,E(3734)),c);b=B5(Q(b));}else{f=BlL(e);b: +{try{b.Nw(R(d,E(563),0),Bwm(BVO(f)));b=By();break a;}catch($$e){$$je=P($$e);if($$je instanceof Dd){break b;}else{throw $$e;}}}b=B5(E(3731));}}return b;},Ep5=()=>{let b,c,d,e;b=K(Bi,1);b.data[0]=E(3714);C5M=Bv(b);c=new Bfo;Baw();d=BN(Bo(Bfo));b=K(Bg,9);e=b.data;e[0]=BL();e[1]=Bc(E(3714));e[2]=Bw();e[3]=Bc(E(1924));e[4]=Ba(1,E(563),E(650));e[5]=Bw();e[6]=Bc(E(89));e[7]=Ba(1,E(3733),E(3735));e[8]=BR();Cb(c,BT(d,b));CbF=c;},BcY=N(Bl),B9K=null,Dow=null,A$X=()=>{A$X=Z(BcY);FwL();},Ezv=(a,b,c)=>{let d;b=R(c,E(563), +0);d=(R(c,E(37),0)).bGI.length;c=new S;T(c);b=H(H(H(c,E(3719)),b),E(3736));BE(b,d);H(b,E(3730));return Q(c);},E3w=a=>{A$X();return B9K;},EtG=(a,b,c,d,e)=>{b=b;c=BRh(IN(R(d,E(37),0)),Cf(b),b.b4w);b.Nw(R(d,E(563),0),c);return By();},FwL=()=>{let b,c,d,e;b=K(Bi,1);b.data[0]=E(3714);B9K=Bv(b);c=new BcY;A$X();d=BN(Bo(BcY));b=K(Bg,8);e=b.data;e[0]=BL();e[1]=Bc(E(3714));e[2]=Bw();e[3]=Bc(E(1924));e[4]=Ba(1,E(563),E(3737));e[5]=Bw();e[6]=Ba(1,E(37),E(3738));e[7]=BR();Cb(c,BT(d,b));Dow=c;},Bsu=N(EP),CPR=null,Cyt=null,Cdy +=null,AWi=()=>{AWi=Z(Bsu);D0b();},E1x=(a,b)=>{let c,d,e,f;c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){e=R(e,E(563),0);f=Dq(b);b=Dq(b)!=1?E(2253):E(2254);d=new S;T(d);e=H(H(H(d,E(3719)),e),E(3739));BE(e,f);H(e,b);return Q(d);}return E(3740);},Eri=a=>{AWi();return CPR;},Ees=(a,b,c,d)=>{let e,f,g;b=b;e=a.bHB;f=(C8(DB(c))).bGP;d=Ei(e,f);f=R(d,E(3741),0);c=HI(c,1,0);e=Bk();g=e;U(g,f);c=Um(c);while(c.dY()){U(g,(c.dZ()).bGP);}c=BRh(e,Cf(b),b.b4w);b.Nw(R(d,E(563),0),c);return By();},D0b=()=>{let b,c,d,e,f,g;b= +K(Bi,1);b.data[0]=E(3714);CPR=Bv(b);Cyt=HO(new C_l);c=new Bsu;AWi();d=BN(Bo(Bsu));b=K(Bg,8);e=b.data;e[0]=BL();e[1]=Bc(E(3714));e[2]=Bw();e[3]=Bc(E(1924));e[4]=Ba(1,E(563),E(3737));e[5]=Bw();e[6]=Ba(1,E(3741),E(3742));e[7]=BR();f=BT(d,b);HE();g=Q6;HA();Iy(c,f,g,G0,Cyt);Cdy=c;},BqX=N(Bl),CXW=null,Crt=null,A0J=()=>{A0J=Z(BqX);DSP();},DHV=(a,b,c)=>{let d,e,f;d=new S;T(d);L(d,E(3719));L(d,R(c,E(563),0));L(d,E(1762));e=R(c,E(462),0);if(BO(e,E(3743))){L(d,E(3744));L(d,CC(e,4));L(d,E(1762));}else if(CB(e,E(2586))) +{f=AID(e,E(2586));L(d,E(3745));L(d,CC(e,f+1|0));L(d,E(3746));L(d,B_(e,0,f));L(d,E(1762));}else if(!BGL(a,e)){L(d,E(3747));L(d,e);L(d,E(1762));}else{L(d,E(3748));L(d,e);L(d,E(1762));}return Q(d);},DD7=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,$$je;f=R(d,E(462),0);a:{b:{c:{d:{try{if(!BO(f,E(3743)))break d;g=CC(f,4);h=BBG(g);if(h!==null)break c;b=CR();H(H(b,E(3749)),g);b=B5(CH(b));}catch($$e){$$je=P($$e);if($$je instanceof Dd){i=$$je;break a;}else{throw $$e;}}return b;}e:{try{if(!CB(f,E(2586)))break e;}catch($$e){$$je=P($$e);if +($$je instanceof Dd){i=$$je;break a;}else{throw $$e;}}f:{try{j=AID(f,E(2586));k=BKK(B2B(),B_(f,0,j));if(ALl(k))break f;b=CR();H(H(b,E(3750)),f);b=B5(CH(b));}catch($$e){$$je=P($$e);if($$je instanceof Dd){i=$$je;break a;}else{throw $$e;}}return b;}g:{try{h=Egd(a,k,CC(f,j+1|0));if(h===null)break g;break c;}catch($$e){$$je=P($$e);if($$je instanceof Dd){i=$$je;break a;}else{throw $$e;}}}try{b=CR();H(H(b,E(3750)),f);b=B5(CH(b));}catch($$e){$$je=P($$e);if($$je instanceof Dd){i=$$je;break a;}else{throw $$e;}}return b;}h: +{try{k=BKK(B2B(),f);if(ALl(k))break h;b=CR();H(H(b,E(3750)),f);b=B5(CH(b));}catch($$e){$$je=P($$e);if($$je instanceof Dd){i=$$je;break a;}else{throw $$e;}}return b;}i:{try{if(BGL(a,Epu(k)))break i;l=E9H(k);if(l!==null){h=Bwm(l);break c;}b=CR();H(H(b,E(3750)),f);b=B5(CH(b));}catch($$e){$$je=P($$e);if($$je instanceof Dd){i=$$je;break a;}else{throw $$e;}}return b;}try{l=E1N(k);if(l===null)break b;h=Dcy(l);break c;}catch($$e){$$je=P($$e);if($$je instanceof Dd){i=$$je;break a;}else{throw $$e;}}}b.Nw(R(d,E(563),0), +h);return By();}try{b=CR();H(H(b,E(3750)),f);b=B5(CH(b));}catch($$e){$$je=P($$e);if($$je instanceof Dd){i=$$je;break a;}else{throw $$e;}}return b;}b=BY(i);c=new S;T(c);d=H(H(c,E(3751)),f);Bb(d,32);H(d,b);AJZ(Q(c));b=new S;T(b);H(H(b,E(3750)),f);return B5(Q(b));},Egd=(a,b,c)=>{let d,e,f,g,$$je;a:{if(BSa(b)){b:{try{d=D8Y(DbS(b.bKs));break a;}catch($$e){$$je=P($$e);if($$je instanceof A8u){b=$$je;break b;}else{throw $$e;}}}GP(b);}d=null;}if(d!==null){e=null;c:{try{b=new B5p;e=b;C2m(b,d);f=Dlk(b);}catch($$e){$$je +=P($$e);b=$$je;break c;}d:{try{while(true){e=b;if(f===null)break;e=b;g=Fpk(f);if(EK5(f))e=b;else{e=b;if(Bj(g,c))break d;}e=b;f=Dlk(b);}}catch($$e){$$je=P($$e);b=$$je;break c;}AXe(b);A8a(b);return null;}e:{try{e=b;if(BGL(a,c))break e;e=b;d=Bwm(BXW(b));}catch($$e){$$je=P($$e);b=$$je;break c;}AXe(b);A8a(b);return d;}try{e=b;c=Dcy(DE_(b));}catch($$e){$$je=P($$e);b=$$je;break c;}AXe(b);A8a(b);return c;}if(e!==null){AXe(e);A8a(e);}J(b);}return null;},BGL=(a,b)=>{return Dr(FS(b),E(3752));},FcC=a=>{A0J();return CXW;}; +let ESm=(a,b,c,d,e)=>{return DD7(a,b,c,d,e);},DSP=()=>{let b,c,d,e;b=K(Bi,1);b.data[0]=E(3714);CXW=Bv(b);c=new BqX;A0J();d=BN(Bo(BqX));b=K(Bg,8);e=b.data;e[0]=BL();e[1]=Bc(E(3714));e[2]=Bw();e[3]=Bc(E(1924));e[4]=Ba(1,E(563),E(3737));e[5]=Bw();e[6]=Ba(1,E(462),E(3753));e[7]=BR();Cb(c,BT(d,b));Crt=c;},BkE=N(Bl),Cy8=null,C2M=null,A06=()=>{A06=Z(BkE);Fhd();},ECV=(a,b,c)=>{b=R(c,E(2352),0);c=new S;T(c);Bb(H(H(c,E(3754)),b),34);return Q(c);},E4g=a=>{A06();return Cy8;},D2s=(a,b,c,d,e)=>{let $$je;b=b;c=R(d,E(2352), +0);a:{b:{c:{try{d=B1(HB(b));e=HB(b);c=AL6(XP(c),d);AI9(e,c);BxE(HB(b));b=By();break a;}catch($$e){$$je=P($$e);if($$je instanceof Ld){b=$$je;break b;}else if($$je instanceof LI){break c;}else{throw $$e;}}}b=B5(E(3677));break a;}d=b.bRf;b=new S;T(b);H(H(b,E(3755)),d);b=B5(Q(b));}return b;},Fhd=()=>{let b,c,d,e;b=K(Bi,1);b.data[0]=E(1198);Cy8=Bv(b);c=new BkE;A06();d=BN(Bo(BkE));b=K(Bg,5);e=b.data;e[0]=BL();e[1]=Bc(E(3756));e[2]=Ba(1,E(2352),E(3757));e[3]=Bc(E(3758));e[4]=BR();Cb(c,BT(d,b));C2M=c;},BdW=N(EP),CTV +=null,Cyh=null,DrZ=null,AU1=()=>{AU1=Z(BdW);EB0();},Evp=(a,b)=>{let c,d,e;c=Dq(b)<=2?0:Dq(b)-2|0;b=c!=1?E(2253):E(2254);d=new S;T(d);e=H(d,E(3759));BE(e,c);H(H(e,b),E(3760));return Q(d);},Frq=a=>{AU1();return CTV;},Eh8=(a,b,c,d)=>{let e,$$je;b=b;a:{b:{c:{try{d=B1(HB(b));e=HB(b);c=AL6(HI(c,1,1),d);AI9(e,c);BxE(HB(b));b=By();break a;}catch($$e){$$je=P($$e);if($$je instanceof Ld){b=$$je;break b;}else if($$je instanceof LI){break c;}else{throw $$e;}}}b=B5(E(3677));break a;}d=b.bRf;b=new S;T(b);H(H(b,E(3755)),d);b +=B5(Q(b));}return b;},EB0=()=>{let b,c,d,e,f,g;b=K(Bi,1);b.data[0]=E(1198);CTV=Bv(b);Cyh=HO(new Da3);c=new BdW;AU1();d=BN(Bo(BdW));b=K(Bg,3);e=b.data;e[0]=BL();e[1]=Bc(E(3756));e[2]=BR();f=BT(d,b);HE();g=Kl;HA();Iy(c,f,g,G0,Cyh);DrZ=c;},Bno=N(Bl),CN7=null,Crh=null,A1b=()=>{A1b=Z(Bno);Ed5();},ECP=(a,b,c)=>{let d;d=R(c,E(850),0);if(!BO(d,E(1196))&&!BO(d,E(1197))){b=new S;T(b);H(H(H(H(H(b,E(3761)),d),E(3762)),d),E(3763));return Q(b);}b=new S;T(b);H(H(b,E(3764)),d);return Q(b);},EH4=a=>{A1b();return CN7;},DBJ=(a, +b,c,d,e)=>{let f,g,$$je;b=b;d=R(d,E(850),0);a:{b:{c:{d:{try{e:{try{f:{try{e=null;if(BO(d,E(1196)))break f;if(BO(d,E(1197)))break f;f=BKK(B2B(),d);if(ALl(f)){e=ECI(f,c);break e;}g=CR();H(H(g,E(3765)),d);f=BqS(Bo(BKT),CH(g));if(f===null)break e;e=Bxc(f,c);break e;}catch($$e){$$je=P($$e);if($$je instanceof TR){b=$$je;break c;}else{throw $$e;}}}try{f=CtR(C_x(d));g:{h:{try{if(f===null)break g;e=Bxc(f,c);break g;}catch($$e){$$je=P($$e);if($$je instanceof Gt){b=$$je;break h;}else{throw $$e;}}}i:{if(f!==null){j:{try +{f.tW();break i;}catch($$e){$$je=P($$e);if($$je instanceof Gt){c=$$je;break j;}else{throw $$e;}}}ANe(b,c);}}J(b);}if(f!==null)f.tW();break e;}catch($$e){$$je=P($$e);if($$je instanceof TR){b=$$je;break c;}else{throw $$e;}}}catch($$e){$$je=P($$e);if($$je instanceof Ld){b=$$je;break b;}else{throw $$e;}}}}catch($$e){$$je=P($$e);if($$je instanceof Dd){break d;}else{throw $$e;}}k:{try{if(e===null)break k;if(!Dq(e))break k;c=B1(HB(b));b=HB(b);c=AL6(e,c);AI9(b,c);}catch($$e){$$je=P($$e);if($$je instanceof TR){b=$$je;break c;} +else if($$je instanceof Ld){b=$$je;break b;}else if($$je instanceof Dd){break d;}else{throw $$e;}}b=By();break a;}try{b=CR();H(H(b,E(3750)),d);b=B5(CH(b));break a;}catch($$e){$$je=P($$e);if($$je instanceof TR){b=$$je;break c;}else if($$je instanceof Ld){b=$$je;break b;}else if($$je instanceof Dd){break d;}else{throw $$e;}}}b=new S;T(b);H(H(b,E(3750)),d);b=B5(Q(b));break a;}d=b.bRf;b=new S;T(b);H(H(b,E(3766)),d);b=B5(Q(b));break a;}d=b.bRf;b=new S;T(b);H(H(b,E(3755)),d);b=B5(Q(b));}return b;},Ed5=()=>{let b, +c,d,e;b=K(Bi,1);b.data[0]=E(1198);CN7=Bv(b);c=new Bno;A1b();d=BN(Bo(Bno));b=K(Bg,12);e=b.data;e[0]=BL();e[1]=Bc(E(3767));e[2]=Bd();e[3]=Bc(E(2057));e[4]=Bd();e[5]=Bc(E(684));e[6]=Bd();e[7]=Bc(E(3768));e[8]=Ba(1,E(850),E(3769));e[9]=Bc(E(3768));e[10]=Bc(E(623));e[11]=BR();Cb(c,BT(d,b));Crh=c;}; +function DrT(){Bl.call(this);this.cJL=null;} +let EEG=a=>{AM5();return BTK;},E9L=(a,b,c)=>{let d,e;d=a.cJL;b=R(c,E(455),0);e=new S;T(e);Bb(H(H(e,E(2366)),b),34);return Cx0(d,c,Q(e));},E7f=(a,b,c,d,e)=>{let f,g;f=b;b=f;b=DA(f,1,E8(b,Ui(b,E(3770))));e=B4(Cf(f),R(d,E(455),0));g=B$(b);Cy();e=ED(f,c,g,e,Ok,null);return Dke(a.cJL,c,f,d,e);}; +function DrS(){EP.call(this);this.cyl=null;} +let Ep3=a=>{AM5();return BTK;},EqX=(a,b)=>{let c,d,e,f,g;c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){f=Dq(b)<=2?0:Dq(b)-2|0;b=a.cyl;d=f!=1?E(2253):E(2254);c=new S;T(c);g=H(c,E(2592));BE(g,f);H(H(g,d),E(2255));return Cx0(b,e,Q(c));}return E(2360);},FnK=(a,b,c,d)=>{let e,f,g,h,i;b=b;e=a.bHB;f=(C8(DB(c))).bGP;g=Ei(e,f);d=JL(RD(HI(c,1,1),0));f=Ig(d);e=null;if(I6(f)>0){c=new FZ;e=DF(b.bGM,E(2248));FC();Gb(c,e,FI);e=Gj(c,(Ne(f,0)).p());}if(e!==null)f=A$o(f,1,I6(f));h=DA(b,1,Ui(b,E(2803)));i=I5(d);Cy();c=ED(b, +i,h,f,Ok,null);if(e!==null)c.bIa=e;return Dke(a.cyl,I5(d),b,g,c);}; +function Uv(){F.call(this);this.cdg=null;} +let B_G=null,BDL=()=>{BDL=Z(Uv);Ehr();},XL=(a,b)=>{BDL();a.cdg=b;},Fyq=a=>{let b=new Uv();XL(b,a);return b;},BBN=a=>{return a.cdg.NN();},EvF=(a,b)=>{let c,d,e;c=ANt((DB(b)).bGP);ADp(c);d=Va(Y9(a.cdg.NS(),c));if(d.bGI.length){Hq(c,d.bGI.length);ADp(c);e=Br(BBN(a));while(Bq(e)){if(CdH(Bm(e),c)){F5();return PY;}}F5();return KS;}F5();return KS;},E77=(a,b)=>{Jx();return b!==JB?0:1;},EJG=a=>{FY();return G6;},Dyc=a=>{FY();return G6;},DAl=(a,b,c,d)=>{let e,f,g,h,i,j,k;b=b;d=ANt((DB(c)).bGP);ADp(d);e=Y9(a.cdg.NS(),d);Hq(d, +(Va(e)).bGI.length);ADp(d);f=new B7O;c=BBN(a);if(HH(c))f.bLY=K(F,8);else{f.bLY=K(F,c.bGJ+1|0);g=0;h=Br(c);while(Bq(h)){i=f.bLY.data;j=g+1|0;i[g]=Bm(h);g=j;}f.bUs=f.bLY.data.length-1|0;}a:{e=a.cdg.NV(b,e);if(AAs(e))c=B5(AL$(e));else{k=f;b:{c:{d:{while(true){if(RL(k))break c;c=Fp(k);if(!CdH(c,d))continue;h=Fxw(c,b,Eii(c,d));if(AAs(h))break b;c=c.NY(b,Mr(e),Mr(h));if(!OI(c))break d;h=Va(Y9(B_G,d));if(!h.bGI.length)break;Hq(d,h.bGI.length);BFs(k.bLY,null);k.bSg=k.bUs;c=BBN(a);Ea(f,c);}break a;}break a;}c=B5(E(3771));break a;}c +=B5(AL$(h));}}return c;},Ehr=()=>{B_G=Ce(E(3772));},XI=N(0),BEL=N(),Crl=null,Bq8=()=>{Bq8=Z(BEL);E_C();},DNT=a=>{let b,c,d;b=new Oy;c=K(C7,2);d=c.data;d[0]=Ce(E(251));d[1]=Ce(E(243));QL(b,c);return b;},Eig=a=>{let b,c,d,e,f;b=Bk();c=new BG8;UI();d=AIU;e=Lm(BB(Bi,[E(1842),E(3773),E(3774),E(3474)]));f=new A7g;AS2();Bly(f,B7x);BsB();c.dd7=a;JY(c,d,e,f);U(b,c);return b;},DQg=(a,b,c)=>{return FV(b);},E_C=()=>{let b;b=new BEL;Bq8();Crl=b;},B7z=N(),CGs=null,Byv=()=>{Byv=Z(B7z);EFX();},DuH=a=>{return Ce(E(3775));},DOf +=a=>{let b,c,d,e,f;b=Bk();c=new Ct$;UI();d=Bo2;e=new BQl;c.c8c=a;Ke(c,d,e);f=b;U(f,c);d=new Ct9;e=Bld;c=Uz();d.dae=a;Ke(d,e,c);U(f,d);return b;},FdJ=(a,b,c)=>{return FV(new Cna);},EFX=()=>{let b;b=new B7z;Byv();CGs=b;},BD$=N(),CUT=null,A94=()=>{A94=Z(BD$);EwM();},AC4=b=>{let c,d;A94();c=K(C7,3);d=c.data;d[0]=Ce(E(842));d[1]=DZ(b,Ce(E(3776)));d[2]=Ce(E(843));return DP(c);},D$m=a=>{let b,c,d;b=Bk();c=new B1$;UI();CaK(c,a,C4z,Lm(BB(Bi,[E(1842),E(3773),E(3774),E(3474)])),E6h());d=b;U(d,c);U(d,D_T(a,AIU,Lm(BB(Bi, +[E(3774),E(1842),E(3474)])),C0k()));U(d,DHz(a,AIU,EIK(BiH(),Fmj())));U(d,Eh6(a,AIU,BiH()));U(d,Efr(a,AIU,Lm(BB(Bi,[E(3774),E(1842),E(3474)])),Cnz()));U(d,E3K(a,AIU,Lm(BB(Bi,[E(3774),E(1842),E(3474)])),Uz()));U(d,FiO(a,Bo2,Fbw()));U(d,ETi(a,Bo2,EvR(BB(Bi,[E(3773),E(3777)])),E1j()));U(d,Eyx(a,B1A,Lm(BB(Bi,[E(3774),E(1842),E(3474)])),Uz()));U(d,EKu(a,B1A,Lm(BB(Bi,[E(3774),E(1842),E(3474)])),BiH()));U(d,D5Z(a,Cit,FkB()));U(d,D_7(a,AYs,Lm(BB(Bi,[E(3774),E(1842),E(3474)])),C0k()));U(d,DtL(a,AYs,BiH()));U(d,EhF(a, +AYs,Lm(BB(Bi,[E(3774),E(1842),E(3474)])),Cnz()));U(d,Dua(a,AYs,Lm(BB(Bi,[E(3774),E(1842),E(3474)])),Uz()));U(d,DSp(a,Cee,DNo()));U(d,Ehj(a,Bld,Fio()));U(d,DvD(a,Bld,EFf()));U(d,EPk(a,A$w,Lm(BB(Bi,[E(3774),E(1842),E(3474),E(3319)])),Eaj()));U(d,EUV(a,A$w,Lm(BB(Bi,[E(3774),E(1842),E(3474),E(3319)])),D4h()));U(d,ER4(a,A$w,Lm(BB(Bi,[E(3774),E(1842),E(3474),E(3319)])),Uz()));U(d,D5G(a,A$w,Lm(BB(Bi,[E(3774),E(1842),E(3474),E(3319)])),Eav()));U(d,Ea_(a,DfO,EnR()));U(d,D40(a,CtN,DJ_()));return b;},EYQ=a=>{let b,c,d, +e,f,g,h,i,j,k,l,m,n;b=new Oy;c=K(C7,2);d=c.data;d[0]=DZ(E(537),ATk(E(536)));e=K(C7,5);f=e.data;g=new LO;h=K(C7,2);i=h.data;i[0]=DZ(E(3778),ATk(E(3073)));i[1]=EW();L6(g,DP(h));f[0]=g;f[1]=AC4(E(3779));j=new LO;h=K(C7,3);i=h.data;i[0]=QT();i[1]=DZ(E(578),Ce(E(3780)));i[2]=QT();L6(j,DP(h));f[2]=j;k=new LO;h=K(C7,3);l=h.data;i=K(Bi,1);i.data[0]=E(665);l[0]=AHX(i);l[1]=EW();l[2]=AC4(E(3781));L6(k,DP(h));f[3]=k;m=new LO;n=K(C7,3);l=n.data;i=K(Bi,1);i.data[0]=E(1842);l[0]=AHX(i);l[1]=EW();j=new W6;g=new CvL;h=K(C7, +2);i=h.data;i[0]=Ce(E(3782));i[1]=QT();k=DP(h);AAG(g,Dqs(k.bNX));Za(j,E(3783),g);l[2]=j;L6(m,DP(n));f[4]=m;d[1]=DP(e);QL(b,c);return b;},DL0=(a,b,c)=>{let d,e,f,g,h;a:{b=b;if(Ek(c,E(537))!==null){d=b.c7t;if(d===null){b=ALG(E(3784));break a;}}else{d=Ek(c,E(3779));e=Ek(c,E(3781));f=Ek(c,E(3778));g=Ek(c,E(578));if(e===null)e=d;d=BQk(b,d===null?AT7(e):B$Z(e,d),f===null?0:1);if(g!==null)d.cqg=FD(Ek(c,E(578)));b.c7t=d;}if(d!==null){b:{c:{e=Ek(c,E(3783));if(e!==null){f=M0(e,E(1542));while(true){if(!JO(f))break c;c +=Dk(H5(f));if(c.bGI.length>0){Btt();c=D3(Dm9,c);if(!GW(c)){b=new Bt;X(b);J(b);}e=C0R(b,El(c,1));h=100;if(El(c,3)!==null)h=CZ(El(c,3));if(!h)h=0;else{d.Oe(e,h);h=1;}if(!h)break b;}}}}b=FV(d);break a;}b=ALG(E(3785));}else{b=new BP;X(b);J(b);}}return b;},EwM=()=>{let b;b=new BD$;A94();CUT=b;},BC8=N(),CAt=null,BoQ=()=>{BoQ=Z(BC8);FoR();},EBl=a=>{let b,c,d,e,f,g,h,i,j;b=Bk();c=new CbI;UI();d=Cfc;e=new CsZ;c.deV=a;Ke(c,d,e);e=b;U(e,c);c=new CbH;f=AWa;g=K(C7,2);h=g.data;h[0]=ATk(E(3786));i=K(Bi,1);i.data[0]=E(3774);h[1] +=Lm(i);j=DP(g);d=Uz();c.c_i=a;JY(c,f,j,d);U(e,c);d=new CbK;c=AWa;h=K(C7,2);g=h.data;g[0]=ATk(E(3787));i=K(Bi,1);i.data[0]=E(3774);g[1]=Lm(i);j=DP(h);f=Uz();d.dbS=a;JY(d,c,j,f);U(e,d);d=new CbJ;c=AWa;f=Lm(BB(Bi,[E(3319),E(1842),E(3773),E(3774),E(3474)]));j=new BhU;d.c9_=a;JY(d,c,f,j);U(e,d);d=new Cby;j=AWa;c=Lm(BB(Bi,[E(3319),E(1842),E(3773),E(3774),E(3474)]));f=new BB$;d.c9j=a;JY(d,j,c,f);U(e,d);d=new Cbx;c=AWa;f=Lm(BB(Bi,[E(3319),E(1842),E(3773),E(3774),E(3474)]));j=Uz();d.ddw=a;JY(d,c,f,j);U(e,d);d=new CbA;c +=B5O;f=Lm(BB(Bi,[E(3319),E(1842),E(3773),E(3774),E(3474)]));j=new BhU;d.daf=a;JY(d,c,f,j);U(e,d);d=new Cbz;c=B5O;f=Lm(BB(Bi,[E(3319),E(1842),E(3773),E(3774),E(3474)]));j=Uz();d.dc3=a;JY(d,c,f,j);U(e,d);return b;},FcB=a=>{let b,c,d,e,f;b=new Oy;c=K(C7,2);d=c.data;d[0]=DZ(E(3788),Ce(E(3789)));e=K(C7,3);f=e.data;f[0]=Ce(E(580));f[1]=DZ(E(3783),Ce(E(3790)));f[2]=Ce(E(582));d[1]=DP(e);QL(b,c);return b;},Ffy=(a,b,c)=>{b=b;if(Ek(c,E(3788))===null){c=C0R(b,Ek(c,E(3783)));b.cR8=c;b=FV(c);}else{b=b.cR8;b=b!==null?FV(b) +:ALG(E(3791));}return b;},FoR=()=>{let b;b=new BC8;BoQ();CAt=b;},BXo=N(),CvJ=null,Buz=()=>{Buz=Z(BXo);Ev8();},DBk=a=>{let b,c,d,e,f,g,h;b=new Oy;c=K(C7,4);d=c.data;e=K(C7,4);f=e.data;f[0]=Ba$(E(3792),E(3793),E(3794));g=K(Bi,1);g.data[0]=E(3262);f[1]=AHX(g);f[2]=EW();f[3]=Ba$(E(3795),E(3796),E(3797));d[0]=DP(e);f=K(C7,6);g=f.data;g[0]=Ce(E(3798));g[1]=DZ(E(3799),Ce(E(3800)));h=K(Bi,1);h.data[0]=E(3262);g[2]=AHX(h);g[3]=EW();g[4]=Ce(E(3798));g[5]=DZ(E(3801),Ce(E(3800)));d[1]=DP(f);g=K(C7,6);h=g.data;h[0]=Ba$(E(3802), +E(3803),E(3804));e=K(Bi,1);e.data[0]=E(3238);h[1]=AHX(e);h[2]=EW();h[3]=DZ(E(3805),Ce(E(3800)));h[4]=EW();h[5]=Ce(E(3806));d[2]=DP(g);f=K(C7,5);g=f.data;g[0]=Ce(E(3073));g[1]=EW();g[2]=DZ(E(3807),Ce(E(3800)));g[3]=EW();g[4]=Ce(E(3806));d[3]=DP(f);QL(b,c);return b;},B2S=(a,b,c,d)=>{let e,f,g,h;e=new S;T(e);H(H(e,E(3808)),d);if(Ek(c,Q(e))!==null){b=new S;T(b);H(H(b,E(3808)),d);f=CZ(Ek(c,Q(b)));b=new S;T(b);H(H(b,E(3809)),d);g=CZ(Ek(c,Q(b)));b=new S;T(b);H(H(b,E(3810)),d);h=CZ(Ek(c,Q(b)));b=new A5I;ACM();BDt(b, +A8y(AMm(h,g,f),C6w(0,0)));return b;}e=new S;T(e);H(H(e,E(3811)),d);if(Ek(c,Q(e))!==null){e=new S;T(e);H(H(e,E(3811)),d);f=CZ(Ek(c,Q(e)));return XB(BZZ(b),f);}b=new BP;X(b);J(b);},FiU=a=>{let b,c,d,e,f;b=Bk();c=new CNb;UI();d=AHi;e=new BmF;c.ddI=a;Ke(c,d,e);f=b;U(f,c);d=new CNc;e=AHi;c=new BjZ;d.c_x=a;Ke(d,e,c);U(f,d);d=new CNd;c=AHi;e=new Bpp;d.dev=a;Ke(d,c,e);U(f,d);d=new CNe;e=DrI;c=new BOY;d.c8M=a;Ke(d,e,c);U(f,d);return b;},DTq=(a,b,c)=>{let d,e,f,g;b=b;d=Ek(c,E(3805));if(d!==null){c=B2S(a,b,c,E(3497));e +=CZ(d);b=FV(Cp2(b,Jj(c),e));}else{d=Ek(c,E(3807));if(d===null){d=B2S(a,b,c,E(360));b=B2S(a,b,c,E(2915));b=FV(Bgp(Jj(d),Jj(b)));}else{f=EA(b.bPI.bKj);c=(DgW(b.bJ8)).dX();while(c.dY()){g=c.dZ();if(Ko(g,f)>0)f=g;}c=((AIH(b.bJ8)).p3()).dX();while(c.dY()){g=c.dZ();if(Ko(g,f)>0)f=g;}e=CZ(d);b=FV(Cp2(b,Jj(f),e));}}return b;},Ev8=()=>{let b;b=new BXo;Buz();CvJ=b;},BE_=N(); +let Cvy=null,BAB=()=>{BAB=Z(BE_);FmH();},E3t=a=>{return DZ(E(3779),CS8());},E1I=a=>{let b,c,d,e,f;b=Bk();c=new Cid;UI();d=Bqg;e=new BjZ;c.c_n=a;Ke(c,d,e);f=b;U(f,c);d=new Cif;e=Bqg;c=new BmF;d.dbj=a;Ke(d,e,c);U(f,d);d=new Cie;c=AHi;e=new Bpp;d.c98=a;Ke(d,c,e);U(f,d);return b;},Ei4=(a,b,c)=>{return FV(B40(Ek(c,E(3779))));},FmH=()=>{let b;b=new BE_;BAB();Cvy=b;},BLS=N(),DiX=null,Bkr=()=>{Bkr=Z(BLS);DBq();},EKR=a=>{let b,c,d,e,f;b=Bk();c=new Cfj;UI();d=AHi;e=new BjZ;c.dal=a;Ke(c,d,e);f=b;U(f,c);d=new Cfk;e=AHi;c +=new BmF;d.dd1=a;Ke(d,e,c);U(f,d);d=new Cfi;c=AHi;e=new Bpp;d.dbV=a;Ke(d,c,e);U(f,d);return b;},DNq=a=>{let b,c,d,e,f;b=new Oy;c=K(C7,2);d=c.data;d[0]=Ba$(E(3810),E(3809),E(3808));e=K(C7,3);f=e.data;f[0]=DZ(E(3812),Ce(E(3813)));f[1]=DZ(E(3814),Ce(E(3815)));f[2]=DZ(E(3811),Ce(E(3800)));d[1]=DP(e);QL(b,c);return b;},D9I=(a,b,c)=>{let d,e,f,g;b=b;if(Ek(c,E(3808))!==null){d=CZ(Ek(c,E(3808)));e=CZ(Ek(c,E(3809)));b=FV(AMm(CZ(Ek(c,E(3810))),e,d));}else if(Ek(c,E(3811))!==null){f=Vq(Ek(c,E(3812)));g=Ek(c,E(3814));d +=CZ(Ek(c,E(3811)));if(Bj(E(1272),g))d= -d|0;a:{if(Bj(E(997),f))b=Ep(AKN(b),V(d));else{if(!Bj(E(3816),f)){if(Bj(E(3817),f)){BZ_(b);b=Ep(b.bPI.bKW,V(d));break a;}b=new BP;X(b);J(b);}if(b.b0V===null)b.b0V=C_q();b=Ep(Jj(b.b0V),V(d));}}b=FV(b);}else{b=new BP;X(b);J(b);}return b;},DBq=()=>{let b;b=new BLS;Bkr();DiX=b;},B5z=N(),CYY=null,Bdt=()=>{Bdt=Z(B5z);EZN();},DUW=a=>{return Ce(E(793));},DDN=a=>{let b,c,d,e,f,g;b=Bk();c=new BYH;UI();d=BlM;e=ATk(E(3786));f=Uz();Bte();c.dan=a;JY(c,d,e,f);g=b;U(g,c);d=new BYI;f=BlM;c +=ATk(E(3787));e=Uz();Btg();d.dcO=a;JY(d,f,c,e);U(g,d);d=new BYJ;f=BlM;c=new BI9;Btf();d.c8T=a;Ke(d,f,c);U(g,d);return b;},EM3=(a,b,c)=>{return FV(b);},EZN=()=>{let b;b=new B5z;Bdt();CYY=b;},BR5=N(),Dp_=null,Bi3=()=>{Bi3=Z(BR5);Ff8();},Flt=a=>{let b,c;b=K(C7,7);c=b.data;c[0]=Ce(E(3319));c[1]=EW();c[2]=DZ(E(2472),Ce(E(3818)));c[3]=EW();c[4]=Ce(E(3262));c[5]=EW();c[6]=DZ(E(3239),Ce(E(3818)));return DP(b);},EcY=a=>{let b,c,d,e;b=Bk();c=new Drr;UI();d=Bqg;e=new CEg;c.det=a;Ke(c,d,e);U(b,c);return b;},FtP=(a,b,c)=> +{let d;b=Ek(c,E(2472));c=Ek(c,E(3239));d=new B1w;b=Dc0(b);c=Dc0(c);d.bRC=b;d.bRM=c;return FV(d);},Ff8=()=>{let b;b=new BR5;Bi3();Dp_=b;},Cqr=N(0); +function B8E(){F.call(this);this.cVs=null;} +function B0W(){let a=this;F.call(a);a.cC5=null;a.cuR=null;} +let BGp=a=>{let b,c;b=new ANc;c=a.cuR;TU();A2x(b,A1z(c,Vb));return b;},CkG=(a,b)=>{return BId(a.cuR);},CIV=a=>{let b;b=new B8E;b.cVs=a.cC5;return b;}; +function AZF(){F.call(this);this.bMr=null;} +let BYC=0,AMt=()=>{AMt=Z(AZF);EPy();},ECg=a=>{AMt();BOw(a,Bk());},Bbe=()=>{let a=new AZF();ECg(a);return a;},BOw=(a,b)=>{AMt();a.bMr=b;},Fyf=a=>{let b=new AZF();BOw(b,a);return b;},T9=(a,b)=>{a.bMr.g(b);},B6s=a=>{let b,c,d,e;b=Bbe();c=a.bMr.dX();while(c.dY()){d=c.dZ();e=d.bJC;RC();if(e!==ABM)T9(b,d);}return b;},BPU=b=>{let c,d,e,f,g,h;AMt();c=Bbe();d=0;e=null;while(true){Eg(b);f=JZ(b);if(!f)J(EC(E(1946),b.bHM));if(!d){if(f==44)break;if(f==41)break;}g=Ckf(e,b,0);h=g.bJC;if(h===QK)d=d+1|0;else if(h===Rg)d=d+(-1) +|0;if(h!==ABM)e=g;T9(c,g);}return c;},BwT=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=U1();d=Dy();e=0;while(e0){g=a.bMr;k=i-1|0;d=(g.cf(k)).bJC;RC();if(d===AJP){g= +a.bMr;g.dC(k,AMi((g.cf(k)).bQf,AIw,null));k=i+1|0;g=new AZF;d=a.bMr;e=d.dV();BOw(g,LV(d,k,e));d=BGn(g);h=(Dp8(d)).bJC;if(!(h!==Rg&&h!==AC$))k=0;else{k=1;while(true){if(!Bqa(d))J(EC(E(3819),b));e=0;while(true){g=Dp8(d);if(g===null)J(EC(E(3820),b));h=g.bJC;if(!e){if(h===Yi)break;if(h===Rg)break;}if(h===AC$)break;h=(A38(d)).bJC;if(!(h!==QK&&h!==AC2))e=e+1|0;else if(!(h!==Rg&&h!==AC$))e=e+(-1)|0;}h=(A38(d)).bJC;if(h===Rg)break;if(h===AC$)break;if(h!==Yi)J(EC(E(3821),b));k=k+1|0;}}g=a.bMr;d=new AGG;h=new S;T(h);BE(h, +k);AJA(d,Q(h),AC2,null);g.dC(i,d);a.bMr.dC(j,AMi(E(865),AC$,null));}}}},BGn=a=>{let b;b=new Ch2;b.cog=a;b.ccr=0;return b;},ARA=(a,b,c,d)=>{let e,f,g,h;e=b.bIM;f=new Czf;f.cqE=c;f.cG9=d;f.c7A=e;e=B6s(a);BwT(e,b);g=BGn(e);h=EK1(g,f,b);return (DPl(b,h.bRp,f,d,c)).cXV;},EPy=()=>{BYC=0;},BHb=N(0),C$k=N(0),SF=N(),B0z=(a,b)=>{let c;c=new Dbq;c.c29=a;c.c2D=b;return c;},Bh6=(a,b)=>{let c,d,e;c=b;d=c.cNF.pS();e=c.cVF;while(true){b=new CBZ;b.cNz=e;b.cNA=d;if(!a.OG(b))break;}return c.cR3.dT(d);}; +function CQ_(){let a=this;SF.call(a);a.c6J=null;a.cnu=0;a.csp=0;a.da3=0;} +let DIU=(a,b)=>{let c,d,e;a:{while(true){c=a.cnu;if(c>=a.csp)break a;d=a.c6J.data;a.cnu=c+1|0;e=d[c];if(BSN(b,e))continue;else break;}}return a.cnu>=a.csp?0:1;},DoJ=N(FA),DoP=N(),BmT=()=>{BmT=Z(DoP);EaT();},DPA=()=>{BmT();},EaT=()=>{let b,c,d,e,f,g,h,i;b=Bh7(null,0,new Int8Array(122784),1,0);b.bLv=122784;BmT();c=E(3822).bGI.length;d=E(3823).bGI.length;if((c+d|0)==b.V()){e=0;f=0;while(f>24;B0Y(b,e,g);e=e+1|0;f=f+1|0;}g=0;while(g>24;B0Y(b,e,c);e=e+1|0;g=g+1|0;}g +=0;h=E(3824).bGI.length;c=0;while(c>24);g=g+1|0;d=d+1|0;}c=c+2|0;}b=b;i=Bh7(b.cn$,b.cMh+b.bHS|0,b.bTQ,b.cJR,1);i.bHS=b.bHS;i.bLv=b.bLv;i.bZQ=b.bZQ;A0_();i.cRW=BE9;Bq2();b=i;if(b.cJR&&b.ccL){Baj=i;return;}i=new Lz;Bp(i,E(3825));J(i);}b=new DR;Bp(b,E(3826));J(b);}; +function BhT(){let a=this;Er.call(a);a.b5s=null;a.bUC=null;a.cFM=null;} +let DXM=(a,b)=>{let c,d,e,f,g,h,i;c=b.gS(Gk(a.bUC),a.b5s);d=Kj(B5j(a.bUC));e=new C4$;e.c8k=c;Bmo(e);e=new C5b;e.dcF=a;e.dcE=c;Bmo(e);f=c.bGF;if(f<10.0)f=10.0;if(Eq(a.b5s,9)==(-1)&&Eq(a.b5s,57617)==(-1))g=c.bGE;else{c=AVX(a.b5s,E(903),1);h=C_X(a,b);g=0.0;while(JO(c)){i=H5(c);g=!(!Bj(i,E(401))&&!Bj(i,E(904)))?g+h-g%h:g+(b.gS(Gk(a.bUC),i)).bGE;}}return Cl(g,f+d);},C_X=(a,b)=>{return (b.gS(Gk(a.bUC),E(905))).bGE;},DKm=(a,b)=>{let c,d,e,f,g,h,i,j;c=0.0;d=a.cFM;if(d!==null)b.hF(d);a:{d=b.h2(a.bUC.bI2);e=AVX(a.b5s, +E(903),1);if(JO(e)){f=C_X(a,d.hE());while(true){if(!JO(e))break a;g=H5(e);if(!(!Bj(g,E(401))&&!Bj(g,E(904))))c=c+f-c%f;else{h=N1(g,a.bUC);i=(d.hE()).gS(Gk(a.bUC),g);j=B5j(a.bUC);(d.h2(Bh(c,j>=0?j:j))).hP(h);c=c+i.bGE;}}}}if(a.cFM!==null)d.hG();},Crk=N(),EP9=a=>{return E(3827);}; +function Des(){let a=this;F.call(a);a.c9D=null;a.cRY=null;} +let DAA=(a,b,c)=>{a.c9D=b;a.cRY=c;},CSb=(a,b)=>{let c=new Des();DAA(c,a,b);return c;}; +function Deq(){let a=this;F.call(a);a.cAs=null;a.cBa=0;a.czY=null;a.ckq=null;a.cb9=null;} +let DUi=(a,b,c,d)=>{a.ckq=E9();a.cb9=Bk();a.cAs=b;a.cBa=c;a.czY=d;},CnA=(a,b,c)=>{let d=new Deq();DUi(d,a,b,c);return d;},BIo=a=>{return a.czY===null?0:1;},DAu=a=>{let b;b=new S;T(b);Dpf(a,b,0);return Q(b);},Dpf=(a,b,c)=>{let d,e,f,g,h,i;BSM(b,c);if(BIo(a)){Bb(b,64);L(b,a.czY);}else{H(b,a.cAs);if(a.cBa)L(b,E(3542));}L(b,E(3828));d=G3(G8(a.ckq));e=d;f=c+1|0;while(Gl(e)){g=GZ(d);BSM(b,f);h=g;i=H(b,h.bHt);L(i,E(1189));L(i,h.bHe);Bb(i,10);}g=Br(a.cb9);while(Bq(g)){Dpf(Bm(g),b,f);}BSM(b,c);L(b,E(3544));},BSM=(b, +c)=>{let d;d=0;while(d{let c,d,e;c=new Ch;d=K(Bg,3);e=d.data;e[0]=Bd();e[1]=DI(CFI(b));e[2]=Bd();Cj(c,d);return c;},CPC=()=>{return D2(E(3059));},CFI=b=>{return Ba(1,b,E(670));},ABy=b=>{let c,d,e;c=new Ch;d=K(Bg,3);e=d.data;e[0]=Bd();e[1]=DI(Ba(1,b,E(3829)));e[2]=Bd();Cj(c,d);return c;},ARB=b=>{if(b!==null&&BO(b,E(1775))&&Dr(b,E(1776)))return B_(b,2,b.bGI.length-2|0);return b;}; +function FZ(){let a=this;F.call(a);a.cTA=null;a.cUu=null;} +let BOr=null,Fy=null,CO$=null,C1G=null,Dq4=null,Cib=null,Cll=null,E3=()=>{E3=Z(FZ);EWF();},Bo1=()=>{E3();return E(3830);},Gb=(a,b,c)=>{E3();a.cTA=b;a.cUu=c;},Fzq=(a,b)=>{let c=new FZ();Gb(c,a,b);return c;},Gj=(a,b)=>{let c;E3();c=DX(CO$,b,0);if(!BaH(a,c)){c=DX(C1G,b,0);if(!BaH(a,c)){c=DX(Dq4,b,0);if(!BaH(a,c)){c=DX(Cib,b,0);if(!BaH(a,c)){b=DX(Cll,b,0);if(BaH(a,b))return A49(BNH(a,CU(b,1)),CU(b,2),CU(b,3));return null;}return A49(BNH(a,CU(c,1)),CU(c,2),null);}return A49(E(14),CU(c,1),CU(c,2));}return A49(E(14), +CU(c,1),null);}return A49(BNH(a,CU(c,1)),CU(c,2),CU(c,3));},BaH=(a,b)=>{let c;c=a.cUu;FC();if(c!==FI){if(c!==Bai){b=new BP;X(b);J(b);}return EZ(b);}return O7(b);},BNH=(a,b)=>{let c,d;if(!BO(b,E(3831))&&!BO(b,E(3832))&&!BO(b,E(3833))){c=a.cTA;if(c!==null){d=new S;T(d);H(H(d,c),b);return Q(d);}}return b;},EWF=()=>{let b,c,d;b=new ER;c=Bo1();d=new S;T(d);Bb(d,40);Bb(H(d,c),41);Fh(b,12,E(2245),Q(d));BOr=b;Fy=DI(b);CO$=Dm(E(3834));C1G=Dm(E(3835));Dq4=Dm(E(3836));Cib=Dm(E(3837));Cll=Dm(E(3838));}; +function CNA(){let a=this;F.call(a);a.bH3=null;a.c35=null;a.cyH=null;} +let Iw=(a,b,c)=>{let d;if(a.cyH!==null){d=Ck(b,a.c35,0);if(d!==null)return BnJ(d,c,a.cyH);return Qd();}b=new BP;X(b);J(b);},HQ=b=>{return BhH(b,E(608));},BhH=(b,c)=>{let d;d=new CNA;d.bH3=Ba(1,c,E(3839));d.c35=c;d.cyH=b;return d;},Kp=()=>{return (HQ(null)).bH3;},AHC=()=>{return Ba(1,E(608),E(3840));},D5t=a=>{return a.bH3;},Daz=N(),Fpv=a=>{A5s();return Dm(E(3841));},B$F=N(),EN_=a=>{AK5();return Dm(E(3842));},B9V=N(),DGt=a=>{AIm();return Dm(E(3842));},C_J=N(),D7H=a=>{AKw();return Dm(E(3842));},CZA=N(),DO8=a=> +{AN4();return Dm(E(3843));}; +function AFO(){let a=this;Bx.call(a);a.b6Y=null;a.cxS=null;a.c91=0;} +let AGZ=null,AFc=null,AEW=null,AHl=null,AK3=null,AOu=null,AMz=null,AK1=null,AVE=null,EUt=null,OM=()=>{OM=Z(AFO);EVh();},BKC=()=>{OM();return E(3844);},BXq=(a,b,c,d,e,f)=>{OM();Ct(a,b,c);a.b6Y=e;a.cxS=f;a.c91=d;},AJ4=(a,b,c,d,e)=>{let f=new AFO();BXq(f,a,b,c,d,e);return f;},ASm=(a,b,c,d,e)=>{let f;f=new CrS;f.cWr=a;f.cfr=b;f.cYe=e;f.c5B=c;f.cYk=d;return f;},CRM=(a,b,c,d,e,f)=>{b=b.h2(Bh(e+2.0,f+2.0));e=d-4|0;b.hP(C2(e,e));},BSA=(a,b,c,d,e,f)=>{b=b.h2(Bh(e+2.0,f+2.0));e=d-4|0;b.hP(Fz(e,e));},C25=(a,b,c,d,e,f)=> +{let g,h,i;g=Fj();h=d+(-2)|0;i=h/2.0;BQ(g,i,0.0);BQ(g,h,i);BQ(g,i,h);BQ(g,0.0,i);(b.h2(Bh(e+1.0,f))).hP(g);},CqD=(a,b,c,d,e,f)=>{let g,h,i;g=Fj();c=d+(-2)|0;h=c;BQ(g,h/2.0,1.0);i=c-1|0;BQ(g,0.0,i);BQ(g,h,i);(b.h2(Bh(e+1.0,f))).hP(g);},AIW=b=>{let c;OM();if(b.bL()>2){c=b.u(0);if(b.u(1)!=c){if(c!=45){if(c!=35){if(c!=43){if(c!=126){if(c==42)return 1;return 0;}return 1;}return 1;}return 1;}return 1;}return 0;}return 0;},ASq=(b,c)=>{let d;OM();if(b.bL()>2){d=b.u(0);if(b.u(1)!=d){if(c)return d==45?AGZ:d==35?AFc:d +==43?AHl:d==126?AEW:d!=42?null:AVE;return d==45?AK3:d==35?AOu:d==43?AK1:d==126?AMz:d!=42?null:AVE;}return null;}return null;},EVh=()=>{let b,c,d,e;b=new AFO;JN();BXq(b,E(3845),0,61179,AX0,null);AGZ=b;AFc=AJ4(E(3846),1,61178,A9t,null);AEW=AJ4(E(3847),2,61177,A52,null);AHl=AJ4(E(3848),3,61176,A1E,null);AK3=AJ4(E(3849),4,61175,AX0,BcK);AOu=AJ4(E(3850),5,61174,A9t,Bsd);AMz=AJ4(E(3851),6,61173,A52,BgX);AK1=AJ4(E(3852),7,61172,A1E,BjU);b=new AFO;c=Bwg;BXq(b,E(3853),8,61171,c,c);AVE=b;d=K(AFO,9);e=d.data;e[0]=AGZ;e[1] +=AFc;e[2]=AEW;e[3]=AHl;e[4]=AK3;e[5]=AOu;e[6]=AMz;e[7]=AK1;e[8]=b;EUt=d;},C5B=N(),AM2=null,AL_=()=>{AL_=Z(C5B);Ebi();},CCV=b=>{let c,d;AL_();if(b>=0){if(b){c=CCV(b-1|0);d=new S;T(d);H(H(H(d,E(3854)),c),E(3855));return Q(d);}return E(3856);}c=new Bt;X(c);J(c);},Ebi=()=>{let b,c;b=CCV(4);c=new S;T(c);H(H(c,E(3857)),b);AM2=Q(c);}; +function B$m(){F.call(this);this.b7c=null;} +let EP0=a=>{return FP(a.b7c);},EJ3=(a,b)=>{return Bj(a.b7c,b.b7c);},EXl=a=>{let b,c;b=a.b7c;c=new S;T(c);Bb(c,36);H(c,b);return Q(c);},CNa=N(),E7K=a=>{Zb();return Dm(E(3858));},CaD=N(),DzK=a=>{AXs();return Dm(E(3858));},CZT=N(),E89=a=>{AKp();return Dm(E(3858));},CVf=N(),FxK=a=>{BaI();return Dm(E(3858));},Cca=N(),EDI=a=>{U3();return Dm(E(3843));}; +function JF(){let a=this;Bx.call(a);a.cvJ=0.0;a.cuF=0;a.cgZ=0;a.cXy=null;a.cXx=null;} +let Hf=null,AGv=null,Bwq=null,BpD=null,Bkm=null,A3i=null,A4H=null,Bcz=null,BmC=null,BwW=null,BcJ=null,BzW=null,AB1=null,Bio=null,BtM=null,BOb=null,BV4=null,BSK=null,BJx=null,BFW=null,BzU=null,Bz$=null,BSL=null,B6E=null,BF8=null,Byz=null,ByB=null,DqX=null,FU=()=>{FU=Z(JF);FeI();},Dyv=()=>{FU();return DqX.b2();},M8=b=>{FU();return b;},Mq=b=>{FU();return b;},Mw=(a,b,c,d,e,f,g,h)=>{FU();Ct(a,b,c);a.cuF=f;a.cgZ=g;a.cvJ=h;a.cXy=d;a.cXx=e;},AQh=(a,b,c,d,e,f,g)=>{let h=new JF();Mw(h,a,b,c,d,e,f,g);return h;},CrA=a=> +{return a.cgZ;},By4=(a,b)=>{FU();if(a===AGv)return CLE(null,18,6,18);return A$G(a,b);},A$G=(a,b)=>{let c;switch(a.bGO){case 2:return Cf3(1);case 3:return Cf3(0);case 4:return new Dgr;case 5:return DjA(b,0);case 6:return DjA(b,1);case 7:return new CET;case 8:return new Dq6;case 9:return new Cwo;case 10:return new CDA;case 11:return new CBl;case 12:return new CyQ;case 13:return CLE(null,8,3,8);case 14:c=new B$u;c.cuJ=b;return c;case 15:return Da7(0,b);case 16:return Da7(1,b);case 17:c=new Ddh;c.cCP=b;return c;case 18:return new Cmj;case 19:c +=new C04;c.cCK=b;return c;case 20:c=new Dof;c.cuS=b;return c;case 21:c=new Chx;c.csx=b;return c;case 22:return CKz(1);case 23:return CKz((-1));default:}return null;},DdJ=b=>{FU();if(b!==null)return DjW(Byz,ES(b),Hf);return Hf;},CTH=b=>{FU();if(b!==null)return DjW(ByB,ES(b),Hf);return Hf;},Cnt=()=>{FU();return C5D(AUM(Byz));},CmR=()=>{FU();return C5D(AUM(ByB));},C5D=b=>{let c,d,e,f,g,h,i;FU();b=BEi(b);c=new DnZ;d=new C4k;d.c5H=c;c=new CgM;c.cM_=d;b=b;d=new CLp;d.dav=b;e=b;f=Cp(V(e.cuX.czc.dV()));if(f<0){b=Bk();while +(true){B$(b);g=new COC;g.c27=b;if(!BtR(e,g))break;}g=b;h=K(F,g.bGJ);f=0;while(true){i=h.data;if(f>=i.length)break;i[f]=Be(g,f);f=f+1|0;}}else{h=K(F,f);b=new DnU;b.c6D=h;while(BtR(e,b)){}i=h.data;f=b.crr;if(f{let b,c;FU();b=K(JF,25);c=b.data;c[0]=Hf;c[1]=AGv;c[2]=Bwq;c[3]=BpD;c[4]=Bkm;c[5]=A3i;c[6]=A4H;c[7]=Bcz;c[8]=BmC;c[9]=BwW;c[10]=BcJ;c[11]=BzW;c[12]=AB1;c[13]=Bio;c[14]=BtM;c[15]=BOb;c[16]=BV4;c[17] +=BSK;c[18]=BJx;c[19]=BFW;c[20]=BzU;c[21]=Bz$;c[22]=BSL;c[23]=B6E;c[24]=BF8;return b;},FeI=()=>{let b,c,d,e,f,g,h,i,j;Hf=AQh(E(3549),0,null,null,2,0,0.0);AGv=AQh(E(2557),1,M8(BB(Bi,[E(3859),E(1174)])),Mq(BB(Bi,[E(3860),E(1174)])),30,0,2.0);b=new JF;c=K(Bi,1);c.data[0]=E(900);c=M8(c);d=K(Bi,1);d.data[0]=E(900);Mw(b,E(3861),2,c,Mq(d),15,1,1.3);Bwq=b;b=new JF;c=K(Bi,1);c.data[0]=E(2309);c=M8(c);d=K(Bi,1);d.data[0]=E(2309);Mw(b,E(3862),3,c,Mq(d),15,0,1.3);BpD=b;b=new JF;c=K(Bi,1);c.data[0]=E(2304);c=M8(c);d=K(Bi, +1);d.data[0]=E(2304);Mw(b,E(3863),4,c,Mq(d),1,0,0.5);Bkm=b;b=new JF;c=K(Bi,1);c.data[0]=E(3864);c=M8(c);d=K(Bi,1);d.data[0]=E(3865);Mw(b,E(3866),5,c,Mq(d),30,0,2.0);A3i=b;b=new JF;c=K(Bi,1);c.data[0]=E(3867);c=M8(c);d=K(Bi,1);d.data[0]=E(3868);Mw(b,E(3869),6,c,Mq(d),30,0,2.0);A4H=b;b=new JF;c=K(Bi,1);c.data[0]=E(582);c=M8(c);d=K(Bi,1);d.data[0]=E(580);Mw(b,E(3870),7,c,Mq(d),10,1,0.8);Bcz=b;b=new JF;c=K(Bi,1);c.data[0]=E(3871);c=M8(c);d=K(Bi,1);d.data[0]=E(3872);Mw(b,E(3873),8,c,Mq(d),14,0,0.8);BmC=b;b=new JF;c +=K(Bi,1);c.data[0]=E(3874);c=M8(c);d=K(Bi,1);d.data[0]=E(3875);Mw(b,E(3876),9,c,Mq(d),10,0,0.8);BwW=b;b=new JF;c=K(Bi,1);c.data[0]=E(3877);c=M8(c);d=K(Bi,1);d.data[0]=E(3877);Mw(b,E(3878),10,c,Mq(d),7,0,0.7);BcJ=b;b=new JF;c=K(Bi,1);c.data[0]=E(3879);c=M8(c);d=K(Bi,1);d.data[0]=E(3880);Mw(b,E(3881),11,c,Mq(d),10,0,0.8);BzW=b;AB1=AQh(E(445),12,M8(BB(Bi,[E(1198),E(3882)])),Mq(BB(Bi,[E(372),E(3883)])),10,1,0.5);b=new JF;c=K(Bi,1);c.data[0]=E(1775);c=M8(c);d=K(Bi,1);d.data[0]=E(1776);Mw(b,E(3884),13,c,Mq(d),10, +1,0.8);Bio=b;BtM=AQh(E(3885),14,null,null,10,0,0.5);b=new JF;c=K(Bi,1);c.data[0]=E(35);c=M8(c);d=K(Bi,1);d.data[0]=E(35);Mw(b,E(3886),15,c,Mq(d),0,0,0.5);BOb=b;b=new JF;c=K(Bi,1);c.data[0]=E(2443);c=M8(c);d=K(Bi,1);d.data[0]=E(2443);Mw(b,E(3887),16,c,Mq(d),0,0,0.5);BV4=b;b=new JF;c=K(Bi,1);c.data[0]=E(2770);c=M8(c);d=K(Bi,1);d.data[0]=E(2771);Mw(b,E(3888),17,c,Mq(d),0,0,0.5);BSK=b;b=new JF;c=K(Bi,1);c.data[0]=E(865);c=M8(c);d=K(Bi,1);d.data[0]=E(864);Mw(b,E(3889),18,c,Mq(d),0,0,1.0);BJx=b;b=new JF;c=K(Bi,1);c.data[0] +=E(332);c=M8(c);d=K(Bi,1);d.data[0]=E(332);Mw(b,E(3890),19,c,Mq(d),0,0,0.5);BFW=b;BzU=AQh(E(3891),20,null,null,0,0,0.5);b=new JF;c=K(Bi,1);c.data[0]=E(866);c=M8(c);d=K(Bi,1);d.data[0]=E(866);Mw(b,E(3892),21,c,Mq(d),0,0,1.5);Bz$=b;b=new JF;e=null;c=K(Bi,1);c.data[0]=E(1281);Mw(b,E(3893),22,e,Mq(c),0,0,1.5);BSL=b;b=new JF;e=null;c=K(Bi,1);c.data[0]=E(648);Mw(b,E(3894),23,e,Mq(c),0,0,1.5);B6E=b;BF8=AQh(E(3895),24,null,null,30,0,0.0);DqX=DJt();Byz=Dy();ByB=Dy();c=(Dyv()).data;f=c.length;g=0;while(g=h)break a;j=d[i];AWb(Byz,j,b);i=i+1|0;}}}b:{d=b.cXx;if(d!==null){d=d.data;h=d.length;i=0;while(true){if(i>=h)break b;j=d[i];AWb(ByB,j,b);i=i+1|0;}}}g=g+1|0;}},Cvi=N(),EMp=a=>{AKq();return Dm(E(3896));},Cvj=N(),EPY=a=>{AKq();return Dm(E(3897));},CLK=N(),DHt=a=>{AFu();return Dm(E(3896));}; +let CLL=N(),D5B=a=>{AFu();return Dm(E(3897));},DeJ=N(),DJ7=a=>{AMb();return Dm(E(3898));},Ccc=N(),EAa=a=>{AAb();return Dm(E(3899));},Ccb=N(),Erh=a=>{AAb();return Dm(E(3841));}; +function C0L(){Bl.call(this);this.cul=null;} +let DWW=a=>{AFA();return BUY;},Dzu=(a,b,c)=>{b=Cnx(a.cul,c);c=new S;T(c);H(H(c,b),E(3900));return Q(c);},E2L=(a,b,c,d,e)=>{let f;b=b;e=a.cul;f=K(Bi,1);f.data[0]=R(d,E(565),0);return Dqa(e,b,d,Bv(f));},BDY=N(0),Zq=(a,b,c)=>{return a.O2(ANt(b),c);},Y9=(a,b)=>{return C0o(a,b,0);},ADP=b=>{return Cvc(A6P(b));},Cvc=b=>{let c;c=new C3H;c.cSK=b;return c;}; +function C7(){F.call(this);this.bNX=null;} +let AAG=(a,b)=>{a.bNX=b;},FyM=a=>{return a.bNX;},C0o=(a,b,c)=>{return BT_(Cvc(a.bNX),b,c);},AZw=N(C7),Ces=(a,b)=>{AAG(a,A6P(b));},Ce=a=>{let b=new AZw();Ces(b,a);return b;},X1=()=>{return Ce(E(3901));},EW=()=>{return Ce(E(3902));},QT=()=>{return Ce(E(3903));},B90=N(C7),DP=b=>{let c,d,e,f;b=b.data;c=Dev();d=b.length;e=0;while(e{let d;if(c instanceof B4P){d=c.bNX;c=Dgm(b,DiT(d));}else{d=c.bNX;c=new B1v;c.cbL=b;c.cmG=IN(d);}AAG(a,c);},DZ +=(a,b)=>{let c=new W6();Za(c,a,b);return c;},Oy=N(C7),QL=(a,b)=>{let c,d,e;b=b.data;AAG(a,BF0());c=b.length;d=0;while(d{let b=new Oy();QL(b,a);return b;},LO=N(C7),L6=(a,b)=>{AAG(a,CWf(b.bNX));},AWQ=a=>{let b=new LO();L6(b,a);return b;},CiJ=N(),DY7=a=>{A_O();return Dm(E(3904));},Cof=N(),Fnk=a=>{AM5();return Dm(E(3843));},C2_=N(),FdU=a=>{AWh();return Dm(E(3905));}; +function BHP(){F.call(this);this.cdw=null;} +let BTf=null,CtC=null,AJi=()=>{AJi=Z(BHP);FcF();},L_=()=>{AJi();return DI(Ba(1,E(2970),E(3906)));},Gn=b=>{AJi();return Cg2(R(b,E(2970),0));},DTk=(a,b)=>{AJi();a.cdw=b;},Cg2=a=>{let b=new BHP();DTk(b,a);return b;},LC=a=>{return a.cdw!==null?0:1;},AAV=a=>{let b;b=a.cdw;if(b===null)return null;return FD(b);},XV=a=>{let b,c,d,e;b=(B4U(a)).dX();while(true){if(!b.dY()){K0();return Vh;}c=b.dZ();K0();c=Ih(c,E(1272),E(14));d=Br(BKR);a:{b:{while(true){if(!Bq(d))break b;e=Bm(d);if(BG(c,e.bV5))break;}break a;}e=Vh;}if(e +!==Vh)break;}return e;},CZh=a=>{let b,c;b=B4U(a);if(b.dV()){a:{b:{c:{d:{e:{f:{g:{h:{i:{b=FS(b.cf(0));c=(-1);switch(FP(b)){case -1361224287:break i;case -1329811946:break h;case -237754540:break g;case 100571:break f;case 3148994:break e;case 3267882:break d;case 109757538:break c;case 926934164:break b;default:}break a;}if(!Bj(b,E(3907)))break a;c=0;break a;}if(!Bj(b,E(3908)))break a;c=7;break a;}if(!Bj(b,E(3909)))break a;c=4;break a;}if(!Bj(b,E(581)))break a;c=5;break a;}if(!Bj(b,E(3150)))break a;c=1;break a;}if +(!Bj(b,E(3910)))break a;c=2;break a;}if(!Bj(b,E(230)))break a;c=3;break a;}if(Bj(b,E(3911)))c=6;}switch(c){case 0:Cy();return ASH;case 1:case 2:Cy();return A6s;case 3:Cy();return AGi;case 4:Cy();return AIF;case 5:Cy();return AFJ;case 6:Cy();return AE4;case 7:Cy();return AE$;default:}return null;}return null;},B4U=a=>{let b,c,d;if(a.cdw!==null){b=Bk();AJi();c=D3(CtC,a.cdw);while(GW(c)){d=Dk(El(c,1));U(b,d);}return b;}return Gi();},Czd=(a,b,c,d,e)=>{let f;f=B0(d,Du(b,AAV(a)));return UD(N6(a,e),f,c,e);},N6=(a, +b)=>{let c,d,e,f,g,h,i,$$je;c=Qd();d=(B4U(a)).dX();while(d.dY()){a:{e=d.dZ();if(BO(e,E(3912))){f=A09(b,CC(e,3));if(f!==null){CM();c=Lg(c,YD,f);}}else if(!BO(e,E(1244))){if(BO(e,E(332))){g=new BfO;CM();DmI(g,e,b,C6);c=BoG(c,g);}else if(CB(e,E(82))&&CB(e,E(939))){b:{try{f=c;h=CR();Et(H(H(h,E(3913)),e),125);h=CH(h);f=c;h=AL6(XP(h),EOD());if(!h.j()){f=c;c=CAC(c,(h.dX()).dZ(),b);f=c;}break a;}catch($$e){$$je=P($$e);if($$je instanceof Ld){break b;}else{throw $$e;}}}c=f;}}else{h=CC(e,2);if(Bn(h,0)==91){i=Eq(h,93);if +(i==(-1))h=E(14);else{c=AKc(c,B_(h,1,i));h=CC(h,i+1|0);}}if(h.bGI.length>0){g=A09(b,h);if(g!==null){CM();c=Lg(c,E1,g);}}}}}return c;},FcF=()=>{BTf=Cg2(null);CtC=Dp(E(3914));},Dl$=N(),FvZ=a=>{ATL();return Dm(E(3915));},Cuk=N(),Dy7=a=>{AU_();return Dm(E(3898));},FaD=N(),CS8=()=>{let b,c,d,e,f,g,h,i,j,k,l,m,n,o;b=K(C7,(ASJ()).data.length);c=b.data;d=0;e=(ASJ()).data;f=e.length;g=0;while(g{let c,d,e,f;b=B_(J3(b),0,3);c=(ASJ()).data;d=c.length;e=0;while(true){if(e>=d){b=new Bt;X(b);J(b);}f=c[e];if(BO(f.bHx,b))break;e=e+1|0;}return f;},LL=N(0); +function A7g(){F.call(this);this.cZl=null;} +let Bly=(a,b)=>{a.cZl=b;},Fzc=a=>{let b=new A7g();Bly(b,a);return b;},Uz=()=>{let b;b=new A7g;AS2();Bly(b,BfT);return b;},Cnz=()=>{let b;b=new A7g;AS2();Bly(b,Bk$);return b;},BUA=a=>{let b;b=ZX(E(14));switch(a.cZl.bGO){case 1:return APm(BB(C7,[Da8(a),DkH(a)]));case 2:break;default:return APm(BB(C7,[ATr(b),Da8(a),DkH(a)]));}return ATr(b);},Da8=a=>{let b,c;b=K(C7,7);c=b.data;c[0]=DZ(E(3917),Ce(E(3800)));c[1]=EW();c[2]=Ce(E(3806));c[3]=EW();c[4]=Ce(E(3787));c[5]=EW();c[6]=Ce(E(230));return DP(b);},DkH=a=>{let b, +c;b=K(C7,2);c=b.data;c[0]=Ce(E(3798));c[1]=DZ(E(3811),Ce(E(3800)));return DP(b);},B0Z=(a,b,c)=>{let d,e;d=A1n(ZX(E(14)),c);if(d===null){if(c.Ob(E(3917))===null){if(c.Ob(E(3811))!==null){e=CZ(c.Ob(E(3811)));return FV(Ep(AKN(b),V(e)));}b=new BP;X(b);J(b);}e=CZ(c.Ob(E(3917)));return FV(Ep(AKN(b),V(e)));}return FV(d);},EGG=(a,b,c)=>{return B0Z(a,b,c);},Cuc=N(),EC8=a=>{A9j();return Dm(E(3918));},SB=N(Bx),BWN=null,Bj7=null,Bx8=null,B7Q=null,EOE=BH,DnO=null,AN3=()=>{AN3=Z(SB);Fr_();},Dw5=b=>{AN3();return Ss(Bo(SB), +b);},Bq4=(a,b,c)=>{AN3();Ct(a,b,c);},Fr_=()=>{let b,c,d;b=new BHR;Bq4(b,E(3919),0);BWN=b;b=new BHT;Bq4(b,E(2472),1);Bj7=b;b=new BHS;Bq4(b,E(3239),2);Bx8=b;b=new BHW;Bq4(b,E(3920),3);B7Q=b;c=K(SB,4);d=c.data;d[0]=BWN;d[1]=Bj7;d[2]=Bx8;d[3]=b;DnO=c;MF();EOE=Ka.cKH.bN6;},CnI=N(),ERq=a=>{A$L();return Dm(E(3921));},CTF=N(),FtR=a=>{AOZ();return Dm(E(3921));},DoZ=N(),Fez=a=>{AOR();return Dm(E(3921));},Ej$=N(),BAl=b=>{let c,d,e,f,g,h;c=new DD;d=K(Bg,5);e=d.data;f=new ER;g=new S;T(g);H(H(g,b),E(594));Fh(f,2,Q(g),E(3922));e[0] +=f;f=new ER;g=new S;T(g);H(H(g,b),E(3377));Fh(f,3,Q(g),E(3923));e[1]=f;f=new ER;h=new S;T(h);H(H(h,b),E(3376));Fh(f,3,Q(h),E(3924));e[2]=f;g=new ER;f=new S;T(f);H(H(f,b),E(3378));Fh(g,2,Q(f),E(3925));e[3]=g;f=new ER;g=new S;T(g);H(H(g,b),E(3375));Fh(f,2,Q(g),E(3926));e[4]=f;Eb(c,d);return c;},Bpu=b=>{let c,d,e;c=new Ch;d=K(Bg,2);e=d.data;e[0]=Bc(E(2443));e[1]=BAl(b);Cj(c,d);return c;},DfY=b=>{return DI(Bpu(b));},ADZ=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,$$je;e=new S;T(e);H(H(e,b),E(594));e=R(c,Q(e),0);if +(e===null){e=new S;T(e);H(H(e,b),E(3375));f=R(c,Q(e),0);if(f===null){e=new S;T(e);H(H(e,b),E(3376));if(R(c,Q(e),0)===null){e=new S;T(e);H(H(e,b),E(3377));if(R(c,Q(e),0)!==null){e=new S;T(e);H(H(e,b),E(3377));g=CZ(R(c,Q(e),0));e=new S;T(e);H(H(e,b),E(3377));h=CZ(R(c,Q(e),1));e=new S;T(e);H(H(e,b),E(3377));i=CZ(R(c,Q(e),2));c=d.c5C;if(c===null){NV();b=Bj$;}else{NV();b=Bq5(c);}NV();c=AHw;Jl(c);a:{try{Z7(c,BH);E__(AHw,g,h-1|0,i);j=CY(ACr(AHw),V(1000));G2(c);break a;}catch($$e){$$je=P($$e);b=$$je;}G2(c);J(b);}c= +new Xf;d=new QI;MN();DeK(d,j,0);XG(c,d,b);return c;}e=new S;T(e);H(H(e,b),E(3378));k=R(c,Q(e),1);if(k!==null){f=new S;T(f);H(H(f,b),E(3378));l=Bj(E(866),R(c,Q(f),0));m=BfE(k);if(l){b=d.bWU;if(b!==null)m=BBD(b.bJv,m);}b=new Xf;NV();XG(b,m,Yk);return b;}return d.bWU;}d=new S;T(d);H(H(d,b),E(3376));n=CZ(R(c,Q(d),0));d=new S;T(d);H(H(d,b),E(3376));o=CZ(R(c,Q(d),1));d=new S;T(d);H(H(d,b),E(3376));p=CZ(R(c,Q(d),2));m=new QI;g=((3600*n|0)+(60*o|0)|0)+p|0;MN();Cty(m,g,0);b=new Xf;NV();XG(b,m,Bi7);return b;}e=new S;T(e);H(H(e, +b),E(3375));q=CZ(R(c,Q(e),1));c=DG(d.cuY,f);if(c===null)b=null;else{b=new Xf;c=Bjw(c.cxU,AUR(V(q)));NV();XG(b,c,Yk);}return b;}f=new S;T(f);H(H(f,b),E(594));r=R(c,Q(f),1);s=DG(d.cn1,e);if(r!==null){m=BBD(s.bJv,BfE(r));b=new Xf;NV();XG(b,m,Yk);return b;}return s;},AE8=(b,c)=>{let d,e,f;d=new S;T(d);H(H(d,b),E(594));if(R(c,Q(d),0)===null){d=new S;T(d);H(H(d,b),E(3375));if(R(c,Q(d),0)===null){d=new S;T(d);H(H(d,b),E(3376));if(R(c,Q(d),0)===null){d=new S;T(d);H(H(d,b),E(3377));if(R(c,Q(d),0)!==null){d=new S;T(d);H(H(d, +b),E(3377));d=R(c,Q(d),0);e=new S;T(e);H(H(e,b),E(3377));e=R(c,Q(e),1);f=new S;T(f);H(H(f,b),E(3377));b=R(c,Q(f),2);c=new S;T(c);d=H(H(c,E(3927)),d);Bb(d,47);d=H(d,e);Bb(d,47);H(d,b);return Q(c);}d=new S;T(d);H(H(d,b),E(3378));d=R(c,Q(d),1);if(d!==null){f=new S;T(f);H(H(f,b),E(3378));if(Bj(E(866),R(c,Q(f),0))){b=new S;T(b);H(H(b,E(3928)),d);return Q(b);}b=new S;T(b);H(H(b,E(3929)),d);return Q(b);}return E(3930);}d=new S;T(d);H(H(d,b),E(3376));d=R(c,Q(d),0);e=new S;T(e);H(H(e,b),E(3376));e=R(c,Q(e),1);f=new S;T(f);H(H(f, +b),E(3376));b=R(c,Q(f),2);c=new S;T(c);d=H(H(c,E(3931)),d);Bb(d,58);d=H(d,e);Bb(d,58);H(d,b);return Q(c);}d=new S;T(d);H(H(d,b),E(3375));d=R(c,Q(d),1);e=new S;T(e);H(H(e,b),E(3375));b=R(c,Q(e),0);c=new S;T(c);Bb(H(H(H(H(c,E(3932)),d),E(3933)),b),39);return Q(c);}d=new S;T(d);H(H(d,b),E(594));e=R(c,Q(d),1);if(e!==null){d=new S;T(d);H(H(d,b),E(594));b=R(c,Q(d),0);c=new S;T(c);H(H(H(H(c,E(3934)),b),E(3935)),e);return Q(c);}d=new S;T(d);H(H(d,b),E(594));b=R(c,Q(d),0);c=new S;T(c);Bb(H(H(c,E(3934)),b),39);return Q(c);},B_V +=N(),EAF=a=>{A5k();return Dm(E(3898));},Cip=N(),EWD=a=>{A9e();return Dm(E(3936));},CM1=N(),Eff=a=>{A3x();return Dm(E(3937));},Cvr=N(),Fwo=a=>{Bwk();return Ce(E(3938));}; +function AGG(){let a=this;F.call(a);a.bQf=null;a.c5O=null;a.bJC=null;} +let CVU=a=>{let b,c,d;b=BY(a.bJC);c=a.bQf;d=new S;T(d);b=H(d,b);Bb(b,123);Bb(H(b,c),125);return Q(d);},ELZ=(a,b,c,d)=>{let e;e=new S;T(e);Bb(e,b);AJA(a,Q(e),c,d);},A2Q=(a,b,c)=>{let d=new AGG();ELZ(d,a,b,c);return d;},AJA=(a,b,c,d)=>{a.bQf=b;a.bJC=c;a.c5O=d;},AMi=(a,b,c)=>{let d=new AGG();AJA(d,a,b,c);return d;},CTv=a=>{let b,c,d;b=a.bJC;RC();if(b===Vv){c=a.bQf.bGI.length<=1?0:Bn(a.bQf,1);return BXJ(Bn(a.bQf,0),c);}d=new BP;X(d);J(d);},BV5=a=>{return a.bJC;},BvQ=a=>{let b;b=a.bJC;RC();if(b===AA8){A22();return A$x.cIK;}return (CTv(a)).cIK;},A1H +=N(Bx),ACS=null,A9w=null,Vv=null,QK=null,Yi=null,Rg=null,AHO=null,AJP=null,ABM=null,AIw=null,AC2=null,AC$=null,AA8=null,Ekv=null,RC=()=>{RC=Z(A1H);DWg();},DvL=(a,b,c)=>{RC();Ct(a,b,c);},TO=(a,b)=>{let c=new A1H();DvL(c,a,b);return c;},Ckf=(b,c,d)=>{let e,f,g;RC();e=JZ(c);if(e){if(d&&e==58)return null;if(e==45){if(b===null)d=0;else{f=b.bJC;d=!(f!==Vv&&f!==QK&&f!==Yi&&f!==AA8)?0:1;}if(d)e=8274;}f=BXJ(e,BoL(c));if(!BzP(e)){if(f===null){if(e!=61){if(e!=40){if(e!=41){if(e!=44){if(!BtN(e)&&e!=45){if(!BPT(e)){b=new AGG;f +=new S;T(f);while(true){d=JZ(c);if(!d)break;a:{e=BoL(c);g=AJP;if(BzP(d)){g=ACS;break a;}if(d==61){g=AA8;break a;}if(d==40){g=QK;break a;}if(d==41){g=Rg;break a;}if(d==44){g=Yi;break a;}if(BtN(d)){g=AHO;break a;}if(BPT(d)){g=ABM;break a;}if(d!=45&&BXJ(d,e)===null)break a;g=Vv;}d=!(g!==QK&&g!==Yi&&g!==Rg)?1:0;if(!(!d&&g!==Vv&&g!==ABM&&g!==AA8)?1:0)break;Bb(f,P0(c));}AJA(b,Q(f),AJP,null);return b;}b=new AGG;f=new S;T(f);while(true){d=JZ(c);if(!d)break;if(!BPT(d))break;Bb(f,P0(c));}AJA(b,Q(f),ABM,null);return b;}b +=new AGG;f=new S;T(f);while(true){d=JZ(c);if(!f.bG4&&d==45){Bb(f,P0(c));continue;}if(!d)break;if(!BtN(d))break;Bb(f,P0(c));}AJA(b,Q(f),AHO,null);return b;}return A2Q(P0(c),Yi,null);}return A2Q(P0(c),Rg,null);}return A2Q(P0(c),QK,null);}return A2Q(P0(c),AA8,null);}if(f.c2V.bGI.length!=1){b=new AGG;d=P0(c);e=P0(c);c=new S;T(c);Bb(c,d);Bb(c,e);AJA(b,Q(c),Vv,null);return b;}P0(c);return A2Q(e,Vv,null);}return AMi(Dqn(c),ACS,null);}return null;},DWg=()=>{let b,c,d;ACS=TO(E(3939),0);A9w=TO(E(3940),1);Vv=TO(E(3941), +2);QK=TO(E(3942),3);Yi=TO(E(3943),4);Rg=TO(E(3944),5);AHO=TO(E(3226),6);AJP=TO(E(3945),7);ABM=TO(E(3946),8);AIw=TO(E(3947),9);AC2=TO(E(3948),10);AC$=TO(E(3949),11);b=TO(E(1892),12);AA8=b;c=K(A1H,13);d=c.data;d[0]=ACS;d[1]=A9w;d[2]=Vv;d[3]=QK;d[4]=Yi;d[5]=Rg;d[6]=AHO;d[7]=AJP;d[8]=ABM;d[9]=AIw;d[10]=AC2;d[11]=AC$;d[12]=b;Ekv=c;},BVL=N(0); +function DsU(){F.call(this);this.cVG=null;} +let EZJ=(a,b,c)=>{let d;b=b;c=c;d=a.cVG;if(b.bG4>0)T3(b,d);T3(b,c);},AO0=N(0),BlO=N(0); +function DsV(){F.call(this);this.der=null;} +let DsS=N(),D_f=a=>{let b;b=new S;T(b);return b;}; +function DsT(){let a=this;F.call(a);a.cWQ=null;a.cWP=null;} +let Exz=(a,b)=>{let c,d,e;b=b;c=a.cWQ;d=a.cWP;e=c.bGI.length;BIh(b,0,c,0,e);T3(b,d);return Q(b);},AGH=N(Bx),B6f=null,BVw=null,DiV=null,DVC=null,BXz=()=>{BXz=Z(AGH);DzM();},D4q=(a,b,c)=>{BXz();Ct(a,b,c);},BPz=(a,b)=>{let c=new AGH();D4q(c,a,b);return c;},DzM=()=>{let b,c,d;B6f=BPz(E(3950),0);BVw=BPz(E(3951),1);b=BPz(E(3952),2);DiV=b;c=K(AGH,3);d=c.data;d[0]=B6f;d[1]=BVw;d[2]=b;DVC=c;},Ckk=N(0),C8P=(b,c,d,e,f)=>{let g,h;g=PZ(Bo(AGH));h=Bv(f);CLl(g,h);h=new CyP;h.cNF=b;h.cVF=c;h.dbE=d;h.cR3=e;h.c_l=g;return h;},AXO +=N(Dd); +function CTn(){let a=this;OQ.call(a);a.bVQ=0;a.bPP=null;a.bZb=0;a.cN1=0.0;a.cEn=0;} +let EBJ=a=>{let b;b=C67(16);a.bVQ=0;a.bPP=K(Bzm,b);a.cN1=0.75;CBe(a);},AH7=()=>{let a=new CTn();EBJ(a);return a;},C67=b=>{let c;if(b<1073741824){if(b){c=b-1|0;b=c|c>>1;b=b|b>>2;b=b|b>>4;b=b|b>>8;return (b|b>>16)+1|0;}return 16;}return 1073741824;},CBe=a=>{a.cEn=a.bPP.data.length*a.cN1|0;},Bhv=(a,b)=>{return Dhu(a,b)===null?0:1;},BAW=(a,b)=>{let c;c=Dhu(a,b);if(c!==null)return c.bHe;return null;},Dhu=(a,b)=>{let c,d;if(b===null)c=Dlb(a);else{d=C3r(b);c=CEI(a,b,d&(a.bPP.data.length-1|0),d);}return c;},CEI=(a, +b,c,d)=>{let e;e=a.bPP.data[c];while(e!==null&&!(e.cls==d&&(b!==e.bHt?0:1))){e=e.bUp;}return e;},Dlb=a=>{let b;b=a.bPP.data[0];while(b!==null&&b.bHt!==null){b=b.bUp;}return b;},ADl=(a,b,c)=>{let d,e,f;if(b===null){d=Dlb(a);if(d===null){a.bZb=a.bZb+1|0;d=Cq_(a,null,0,0);e=a.bVQ+1|0;a.bVQ=e;if(e>a.cEn)DiS(a);}}else{e=C3r(b);f=e&(a.bPP.data.length-1|0);d=CEI(a,b,f,e);if(d===null){a.bZb=a.bZb+1|0;d=Cq_(a,b,f,e);e=a.bVQ+1|0;a.bVQ=e;if(e>a.cEn)DiS(a);}}b=d.bHe;d.bHe=c;return b;},Cq_=(a,b,c,d)=>{let e,f;e=new Bzm;Blg(e, +b,null);e.cls=d;f=a.bPP.data;e.bUp=f[c];f[c]=e;return e;},DiS=a=>{let b,c,d,e,f,g,h,i;b=a.bPP.data.length;b=C67(!b?1:b<<1);c=K(Bzm,b);d=c.data;e=0;f=b-1|0;while(true){g=a.bPP.data;if(e>=g.length)break;h=g[e];g[e]=null;while(h!==null){b=h.cls&f;i=h.bUp;h.bUp=d[b];d[b]=h;h=i;}e=e+1|0;}a.bPP=c;CBe(a);},C3r=b=>{return b===null?0:AI$(b);},Cgg=N(),D4D=a=>{AXm();return Dm(E(3953));},CUo=N(),FwC=a=>{AFA();return Dm(E(3954));},C_l=N(),E_V=a=>{AWi();return Dm(E(3955));},Da3=N(),Eqw=a=>{AU1();return Dm(E(3956));},Nm=N(0); +function BPJ(){F.call(this);this.b51=null;} +let Blo=(a,b)=>{U(a.b51,b);},Dev=()=>{return CeP();},A6P=b=>{let c;if(b!==null){c=new BPJ;c.b51=Bk();if(!b.bL()){b=new BV;X(b);J(b);}Dhk(c,ANt(b));return c;}b=new Bt;X(b);J(b);},Ex0=a=>{return AFN(a.b51);},D63=a=>{a.b51=Bk();},CeP=()=>{let a=new BPJ();D63(a);return a;},Dhk=(a,b)=>{let c,d;c=new Dn_;while(Jh(b)>0){a:{if(Hc(b,0)==32)Hq(b,1);else{d=Br(BF_(c,b));while(true){if(!Bq(d))break a;Blo(a,Bm(d));}}}}},Cat=(a,b,c)=>{let d,e,f,g,h;SL();d=Xe;e=Br(a.b51);f=c;while(true){if(!Bq(e))return AIT(f-c|0,d);g=(Bm(e)).Pw(b, +f);h=g.bJS;if(h<0)break;f=f+h|0;d=AOf(d,g.bQ5);}H8();return MD;},DiT=a=>{return a.b51;}; +function B$R(){let a=this;F.call(a);a.cPj=null;a.cU_=null;a.cCI=null;} +function CD6(){F.call(this);this.cAY=null;} +let EGX=(a,b)=>{a.cAY=b;},CWf=a=>{let b=new CD6();EGX(b,a);return b;},EpU=a=>{let b,c;b=BY(a.cAY);c=new S;T(c);H(H(c,E(3957)),b);return Q(c);},E5t=(a,b,c)=>{let d;d=a.cAY.Pw(b,c);if(d.bJS<0){H8();return ALF;}return d;}; +function CJK(){F.call(this);this.ckC=null;} +let DTM=a=>{a.ckC=Bk();},BF0=()=>{let a=new CJK();DTM(a);return a;},DW3=a=>{let b,c;b=BY(a.ckC);c=new S;T(c);H(H(c,E(3958)),b);return Q(c);},FiN=(a,b,c)=>{let d,e;d=Br(a.ckC);while(true){if(!Bq(d)){H8();return MD;}e=(Bm(d)).Pw(b,c);if(e.bJS>=0)break;}return e;},BhK=(a,b)=>{U(a.ckC,b);},ACV=N(0),BZo=(a,b)=>{return COe(a.Pz(b),a.PA(b),b);},C$s=(a,b)=>{if(b!==Bo6()&&b!==A_Q()&&b!==Bf7())return b.PE(a);return null;},St=N(0),AAH=N(Bx),ASi=null,BkW=null,BsS=null,Bfm=null,BfG=null,BzT=null,A8H=null,E49=null,C1P=null,Dgy +=null,AEg=()=>{AEg=Z(AAH);Eqa();},ASJ=()=>{AEg();return Dgy.b2();},DMl=(a,b,c)=>{AEg();Ct(a,b,c);},AOx=(a,b)=>{let c=new AAH();DMl(c,a,b);return c;},C2D=b=>{let c,d;AEg();if(b>=1&&b<=7)return C1P.data[b-1|0];c=new GE;d=new S;T(d);BE(H(d,E(3959)),b);Bp(c,Q(d));J(c);},ADT=a=>{return a.bGO+1|0;},Eqa=()=>{let b,c,d;ASi=AOx(E(3960),0);BkW=AOx(E(3961),1);BsS=AOx(E(3962),2);Bfm=AOx(E(3963),3);BfG=AOx(E(3964),4);BzT=AOx(E(3965),5);b=AOx(E(3966),6);A8H=b;c=K(AAH,7);d=c.data;d[0]=ASi;d[1]=BkW;d[2]=BsS;d[3]=Bfm;d[4]=BfG;d[5] +=BzT;d[6]=b;Dgy=c;E49=new CFN;C1P=ASJ();},A2D=N(Bx),BfT=null,Bk$=null,B7x=null,EUf=null,AS2=()=>{AS2=Z(A2D);FqC();},DRC=(a,b,c)=>{AS2();Ct(a,b,c);},BCC=(a,b)=>{let c=new A2D();DRC(c,a,b);return c;},FqC=()=>{let b,c,d;BfT=BCC(E(3967),0);Bk$=BCC(E(3968),1);b=BCC(E(3969),2);B7x=b;c=K(A2D,3);d=c.data;d[0]=BfT;d[1]=Bk$;d[2]=b;EUf=c;}; +function I$(){let a=this;Bx.call(a);a.cIK=0;a.c2V=null;} +let BlQ=null,Biu=null,Bu7=null,Bz1=null,ByT=null,Bjq=null,Bvz=null,Bs_=null,A$x=null,Bxq=null,BrC=null,BTg=null,Fw$=null,A22=()=>{A22=Z(I$);FrK();},Uw=(a,b,c,d,e)=>{A22();Ct(a,b,c);a.cIK=d;a.c2V=e;},BXJ=(b,c)=>{A22();switch(b){case 33:return c!=61?null:Bxq;case 38:return c!=38?null:BrC;case 42:break;case 43:return Bu7;case 47:return Biu;case 60:return c!=61?ByT:Bvz;case 61:return c!=61?null:A$x;case 62:return c!=61?Bjq:Bs_;case 124:return c!=124?null:BTg;case 8274:return Bz1;default:return null;}return BlQ;},FrK +=()=>{let b,c,d;b=new BTU;Uw(b,E(3970),0,97,E(900));BlQ=b;b=new BTV;Uw(b,E(3971),1,97,E(21));Biu=b;b=new BTW;Uw(b,E(3972),2,96,E(866));Bu7=b;b=new BTX;Uw(b,E(3973),3,96,E(3974));Bz1=b;b=new BTY;Uw(b,E(3975),4,94,E(1198));ByT=b;b=new BTZ;Uw(b,E(3976),5,94,E(372));Bjq=b;b=new BT0;Uw(b,E(3977),6,94,E(3978));Bvz=b;b=new BT1;Uw(b,E(3979),7,94,E(3980));Bs_=b;b=new BT2;Uw(b,E(3513),8,93,E(2451));A$x=b;b=new BMQ;Uw(b,E(3981),9,93,E(3982));Bxq=b;b=new BMP;Uw(b,E(3983),10,89,E(3984));BrC=b;b=new BMO;Uw(b,E(3985),11,88, +E(3877));BTg=b;c=K(I$,12);d=c.data;d[0]=BlQ;d[1]=Biu;d[2]=Bu7;d[3]=Bz1;d[4]=ByT;d[5]=Bjq;d[6]=Bvz;d[7]=Bs_;d[8]=A$x;d[9]=Bxq;d[10]=BrC;d[11]=b;Fw$=c;}; +function CyP(){let a=this;F.call(a);a.cNF=null;a.cVF=null;a.dbE=null;a.cR3=null;a.c_l=null;} +let Ebg=N(),CgY=(b,c)=>{let d;d=1<<(c-1|0);while(b&d){d=d>>1;}return (b&(d-1|0))+d|0;},DqO=(b,c,d,e,f)=>{let g;while(true){g=b.data;e=e-d|0;g[c+e|0]=f;if(e<=0)break;}},CUd=(b,c,d,e,f)=>{let g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;g=Ca(f);h=Ca(16).data;i=Ca(16);j=0;while(j0){f=c ++o|0;j=k<<16;q=m+1|0;DqO(b,f,p,n,j|g[m]);o=CgY(o,k);h[k]=h[k]-1|0;m=q;}k=k+1|0;p=p<<1;}q=n-1|0;r=(-1);s=d+1|0;t=2;u=c;while(s<=15){while(h[s]>0){f=o&q;if(f!=r){u=u+n|0;j=1<<(s-d|0);k=s;a:{while(true){if(k>=15)break a;j=j-h[k]|0;if(j<=0)break;k=k+1|0;j=j<<1;}}e=b.data;k=k-d|0;n=1<>d)|0;k=(s-d|0)<<16;f=m+1|0;DqO(b,j,t,n,k|g[m]);o=CgY(o,s);h[s]=h[s]-1|0;m=f;}s=s+1|0;t=t<<1;}return;}o=0;while(o{a.bNB=V(1);a.bNC=BH;},C6I=()=>{let a=new CWE();EFL(a);return a;},E2m=(a,b)=>{a.bNB=CN(b,V(65535));a.bNC=CN(GS(b,16),V(65535));},Fa_=a=>{a.bNB=V(1);a.bNC=BH;},D0H=a=>{return Gu(EU(a.bNC,16),a.bNB);},EUz=(a,b,c,d)=>{let e,f,g,h,i,j,k;if(d!=1){e=d/5552|0;f=d%5552|0;while(true){g=e+(-1)|0;if(e<=0)break;h=5552;while(true){e=h+(-1)|0;if(h<=0)break;i=b.data;j=a.bNB;d=c+1|0;j=BU(j,V(i[c]&255));a.bNB=j;a.bNC=BU(a.bNC,j);h=e;c=d;}a.bNB=Fl(a.bNB,V(65521));a.bNC=Fl(a.bNC,V(65521));e=g;}while(true){d=f+(-1)| +0;if(f<=0)break;i=b.data;j=a.bNB;g=c+1|0;j=BU(j,V(i[c]&255));a.bNB=j;a.bNC=BU(a.bNC,j);f=d;c=g;}a.bNB=Fl(a.bNB,V(65521));a.bNC=Fl(a.bNC,V(65521));return;}b=b.data;j=BU(a.bNB,V(b[c]&255));a.bNB=j;k=BU(a.bNC,j);a.bNC=k;a.bNB=Fl(j,V(65521));a.bNC=Fl(k,V(65521));}; +function BHM(){let a=this;F.call(a);a.bIF=null;a.b8r=0;a.b4O=null;a.c3g=0;a.b84=0;a.bRx=0;a.bU1=0;a.cKN=0;a.dbA=0;a.b6x=0;a.bVD=0;a.cOM=0;a.b3O=0;a.bOX=null;a.c1X=0;a.b3x=null;a.bW2=null;a.bPx=0;a.cjF=0;a.c89=0;a.b01=0;a.b18=0;a.bXM=0;a.bN1=0;a.cOj=0;a.b3Q=0;a.bIf=0;a.b46=0;a.bI7=0;a.bXg=0;a.c37=0;a.cHy=0;a.b24=0;a.chX=0;a.c5k=0;a.c2z=0;a.bQg=null;a.bXj=null;a.bNY=null;a.cc6=null;a.b9H=null;a.cxv=null;a.cdB=null;a.cOD=null;a.bOZ=null;a.bVf=0;a.b0w=0;a.b4n=null;a.cGv=null;a.cTW=0;a.b6k=0;a.crM=0;a.bVG=0;a.b68 +=0;a.chD=0;a.cej=0;a.bOd=0;a.bQH=0;a.ciE=null;} +let Uy=null,AY8=null,ABE=()=>{ABE=Z(BHM);EzY();},DoO=a=>{let b;b=0;while(b<286){a.bQg.data[b*2|0]=0;b=b+1|0;}b=0;while(b<30){a.bXj.data[b*2|0]=0;b=b+1|0;}b=0;while(b<19){a.bNY.data[b*2|0]=0;b=b+1|0;}a.bQg.data[512]=1;a.b68=0;a.bVG=0;a.chD=0;a.b6k=0;},B4y=(a,b,c)=>{let d,e,f,g;d=a.bOZ.data[c];e=c<<1;a:{while(true){f=C5(e,a.bVf);if(f>0)break a;if(f>=0)f=e;else{g=a.bOZ.data;f=e+1|0;if(!CM6(b,g[f],g[e],a.b4n))f=e;}if(CM6(b,d,a.bOZ.data[f],a.b4n))break;g=a.bOZ.data;g[c]=g[f];e=f<<1;c=f;}}a.bOZ.data[c]=d;},CM6=(b, +c,d,e)=>{let f;ABE();a:{b:{b=b.data;f=C5(b[c*2|0],b[d*2|0]);if(f>=0){if(f)break b;b=e.data;if(b[c]>b[d])break b;}c=1;break a;}c=0;}return c;},DoT=(a,b,c)=>{let d,e,f,g,h,i,j,k;b=b.data;d=(-1);e=b[1];f=0;g=7;h=4;if(!e){g=138;h=3;}b[((c+1|0)*2|0)+1|0]=(-1);i=0;while(i<=c){i=i+1|0;j=b[(i*2|0)+1|0];f=f+1|0;if(!(f>16;}else if(!e){if(f>10){k=a.bNY.data;k[36]=(k[36]+1|0)<<16>>16;}else{k=a.bNY.data;k[34]=(k[34]+1|0)<<16>>16;}}else{if(e!=d){k=a.bNY.data;g=e +*2|0;k[g]=(k[g]+1|0)<<16>>16;}k=a.bNY.data;k[32]=(k[32]+1|0)<<16>>16;}f=0;if(!j){g=138;h=3;d=e;}else if(e!=j){g=7;h=4;d=e;}else{g=6;h=3;d=e;}}e=j;}},Do9=(a,b,c)=>{let d,e,f,g,h,i,j,k;d=b.data;e=(-1);f=d[1];g=0;h=7;i=4;if(!f){h=138;i=3;}j=0;while(j<=c){j=j+1|0;k=d[(j*2|0)+1|0];g=g+1|0;if(!(g10){V2(a,18,a.bNY);QY(a,g-11|0,7);}else{V2(a,17,a.bNY);QY(a,g-3|0,3);}}else{if(f!=e){V2(a,f,a.bNY);g=g+(-1)|0;}V2(a,16,a.bNY);QY(a,g-3|0, +2);}g=0;if(!k){h=138;i=3;e=f;}else if(f!=k){h=7;i=4;e=f;}else{h=6;i=3;e=f;}}f=k;}},Bdf=(a,b,c,d)=>{Di(b,c,a.b4O,a.bRx,d);a.bRx=a.bRx+d|0;},JS=(a,b)=>{let c,d;c=a.b4O.data;d=a.bRx;a.bRx=d+1|0;c[d]=b;},APH=(a,b)=>{JS(a,b<<24>>24);JS(a,(b>>>8|0)<<24>>24);},A9m=(a,b)=>{JS(a,b>>8<<24>>24);JS(a,b<<24>>24);},V2=(a,b,c)=>{let d;c=c.data;d=b*2|0;QY(a,c[d]&65535,c[d+1|0]&65535);},QY=(a,b,c)=>{let d,e;d=a.bQH;if(d<=(16-c|0)){a.bOd=(a.bOd|b<>16;a.bQH=d+c|0;}else{e=(a.bOd|b<>16;a.bOd=e;APH(a, +e);d=a.bQH;a.bOd=(b>>>(16-d|0)|0)<<16>>16;a.bQH=d+(c-16|0)|0;}},ESj=a=>{QY(a,2,3);AQ5();V2(a,256,BgM);CQw(a);if((((1+a.cej|0)+10|0)-a.bQH|0)<9){QY(a,2,3);V2(a,256,BgM);CQw(a);}a.cej=7;},AZZ=(a,b,c)=>{let d,e,f,g,h,i,j;d=a.b4O.data;e=a.crM;f=a.b6k;g=e+(f*2|0)|0;d[g]=(b>>>8|0)<<24>>24;d[g+1|0]=b<<24>>24;a.cGv.data[f]=c<<24>>24;a.b6k=f+1|0;if(!b){d=a.bQg.data;b=c*2|0;d[b]=(d[b]+1|0)<<16>>16;}else{a.chD=a.chD+1|0;b=b+(-1)|0;h=a.bQg.data;ABd();c=((BV0.data[c]+256|0)+1|0)*2|0;h[c]=(h[c]+1|0)<<16>>16;d=a.bXj.data;b +=CWi(b)*2|0;d[b]=(d[b]+1|0)<<16>>16;}c=a.b6k;if(!(c&8191)&&a.b24>2){f=c*8|0;g=a.bIf-a.bXM|0;e=0;while(e<30){i=V(f);j=V(a.bXj.data[e*2|0]);ABd();f=Cp(BU(i,CT(j,BU(V(5),V(Bvg.data[e])))));e=e+1|0;}b=f>>>3|0;if(a.chD<(c/2|0)&&b<(g/2|0))return 1;}return c!=(a.cTW-1|0)?0:1;},CIj=(a,b,c)=>{let d,e,f,g,h,i;a:{d=0;if(a.b6k)while(true){e=a.b4O.data;f=a.crM+(d*2|0)|0;g=e[f]<<8&65280|e[f+1|0]&255;h=a.cGv.data[d]&255;d=d+1|0;if(!g)V2(a,h,b);else{ABd();f=BV0.data[h];V2(a,(f+256|0)+1|0,b);i=BDb.data[f];if(i)QY(a,h-CwZ.data[f] +|0,i);g=g+(-1)|0;f=CWi(g);V2(a,f,c);h=Bvg.data[f];if(h)QY(a,g-Dct.data[f]|0,h);}if(d>=a.b6k)break a;}}c=b.data;V2(a,256,b);a.cej=c[513];},CQw=a=>{let b;b=a.bQH;if(b==16){APH(a,a.bOd);a.bOd=0;a.bQH=0;}else if(b>=8){JS(a,a.bOd<<24>>24);a.bOd=(a.bOd>>>8|0)<<16>>16;a.bQH=a.bQH-8|0;}},CW7=a=>{let b;b=a.bQH;if(b>8)APH(a,a.bOd);else if(b>0)JS(a,a.bOd<<24>>24);a.bOd=0;a.bQH=0;},AFa=(a,b)=>{let c,d,e,f,g,h,i;c=a.bXM;d=c<0?(-1):c;e=a.bIf-c|0;f=0;if(a.b24<=0){g=e+5|0;c=g;}else{if(a.cKN==2){c=0;g=0;f=0;while(c<7){f=f+a.bQg.data[c +*2|0]|0;c=c+1|0;}while(c<128){g=g+a.bQg.data[c*2|0]|0;c=c+1|0;}while(c<256){f=f+a.bQg.data[c*2|0]|0;c=c+1|0;}a.cKN=(f<=(g>>>2|0)?1:0)<<24>>24;}BRu(a.cc6,a);BRu(a.b9H,a);DoT(a,a.bQg,a.cc6.b1X);DoT(a,a.bXj,a.b9H.b1X);BRu(a.cxv,a);f=18;a:{while(true){if(f<3)break a;if(a.bNY.data[(BV8.data[f]*2|0)+1|0])break;f=f+(-1)|0;}}h=a.bVG+((((3*(f+1|0)|0)+5|0)+5|0)+4|0)|0;a.bVG=h;c=((h+3|0)+7|0)>>>3|0;g=((a.b68+3|0)+7|0)>>>3|0;if(g<=c)c=g;}if((e+4|0)<=c&&d!=(-1))Cl0(a,d,e,b);else if(g==c){QY(a,2+(!b?0:1)|0,3);AQ5();CIj(a, +BgM,BUh);}else{QY(a,4+(!b?0:1)|0,3);d=a.cc6.b1X+1|0;h=a.b9H.b1X+1|0;c=f+1|0;QY(a,d-257|0,5);h=h-1|0;QY(a,h,5);QY(a,c-4|0,4);g=0;while(g{let c,d,e;c=a.c3g-5|0;if(65535<=c)c=65535;while(true){if(a.bI7<=1){B82(a);d=a.bI7;if(!d&&!b)return 0;if(!d){b=C5(b,4);AFa(a,b?0:1);if(!a.bIF.bLj)return b?0:2;return b?1:3;}}d=a.bIf+a.bI7|0;a.bIf=d;a.bI7 +=0;e=a.bXM+c|0;if(!(d&&d{QY(a,0+(!d?0:1)|0,3);CW7(a);a.cej=8;APH(a,c<<16>>16);APH(a,(c^(-1))<<16>>16);Bdf(a,a.bOX,b,c);},B82=a=>{let b,c,d,e,f,g,h,i;while(true){b=a.c1X;c=a.bI7;b=b-c|0;d=a.bIf;e=b-d|0;if(!e&&!d&&!c)e=a.bVD;else if(e==(-1))e=e+(-1)|0;else{c=a.bVD;if(d>=((c+c|0)-262|0)){f=a.bOX;Di(f,c,f,0,c);b=a.b46;c=a.bVD;a.b46=b-c|0;a.bIf=a.bIf-c|0;a.bXM +=a.bXM-c|0;b=a.cjF;g=b;while(true){f=a.bW2.data;g=g+(-1)|0;d=f[g]&65535;f[g]=d>16;b=b+(-1)|0;if(!b)break;}d=c;g=c;while(true){f=a.b3x.data;d=d+(-1)|0;h=f[d]&65535;f[d]=h>16;g=g+(-1)|0;if(!g)break;}e=e+c|0;}}i=a.bIF;b=i.bHa;if(!b)return;f=a.bOX;c=a.bIf+a.bI7|0;if(b<=e)e=b;if(!e)e=0;else{i.bHa=b-e|0;if(i.b6m.bU1)i.bK8.P0(i.bIr,i.bG0,e);Di(i.bIr,i.bG0,f,c,e);i.bG0=i.bG0+e|0;i.bG2=BU(i.bG2,V(e));}b=a.bI7+e|0;a.bI7=b;if(b>=3){f=a.bOX.data;c=a.bIf;d=f[c]&255;a.bPx=d;a.bPx=(d<=262)break;if(a.bIF.bHa)continue;else break;}},Fs7=(a,b)=>{let c,d,e,f,g;c=0;while(true){if(a.bI7<262){B82(a);d=a.bI7;if(d<262&&!b)return 0;if(!d){b=C5(b,4);AFa(a,b?0:1);if(a.bIF.bLj)return b?1:3;if(!b)return 2;return 0;}}if(a.bI7>=3){c=a.bPx<>16;}if(D4(V(c),BH)&&((a.bIf-c|0)&65535)<=(a.bVD-262|0)&&a.chX!=2)a.bN1=CyL(a,c);g=a.bN1;if(g<3){d=AZZ(a,0,a.bOX.data[a.bIf] +&255);a.bI7=a.bI7-1|0;a.bIf=a.bIf+1|0;}else{d=AZZ(a,a.bIf-a.b46|0,g-3|0);f=a.bI7;g=a.bN1;f=f-g|0;a.bI7=f;if(!(g<=a.cHy&&f>=3)){f=a.bIf+g|0;a.bIf=f;a.bN1=0;e=a.bOX.data;g=e[f]&255;a.bPx=g;a.bPx=(g<>16;g=a.bN1-1|0;a.bN1=g;if(g)continue;else break;}a.bIf=f+1|0;}}if(!d)continue;AFa(a,0);if(!a.bIF.bLj)break;}return 0;},EXa= +(a,b)=>{let c,d,e,f,g,h;c=0;while(true){if(a.bI7<262){B82(a);d=a.bI7;if(d<262&&!b)return 0;if(!d){if(a.b3Q){AZZ(a,0,a.bOX.data[a.bIf-1|0]&255);a.b3Q=0;}b=C5(b,4);AFa(a,b?0:1);if(a.bIF.bLj)return b?1:3;if(!b)return 2;return 0;}}if(a.bI7>=3){c=a.bPx<>16;}a:{f=a.bN1;a.bXg=f;a.cOj=a.b46;a.bN1=2;if(c&&f=3&&a.bN1<=g)){if(!a.b3Q){a.b3Q=1;a.bIf=a.bIf+1|0;a.bI7=a.bI7-1|0;continue;}if(AZZ(a,0,a.bOX.data[a.bIf-1|0]&255))AFa(a,0);a.bIf=a.bIf+1|0;a.bI7=a.bI7-1|0;if(!a.bIF.bLj)break;continue;}d=a.bIf;f=(d+a.bI7|0)-3|0;d=AZZ(a,(d-1|0)-a.cOj|0,g-3|0);h=a.bI7;g=a.bXg;a.bI7=h-(g-1|0)|0;a.bXg=g-2|0;while(true){h=a.bIf+1|0;a.bIf=h;if(h<=f){g=(a.bPx<>16;}g=a.bXg-1|0;a.bXg=g;if(!g)break;}a.b3Q=0;a.bN1=2;a.bIf=h+1|0;if(d){AFa(a,0);if(!a.bIF.bLj)return 0;}}return 0;},CyL=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;c=a.c37;d=a.bIf;e=a.bXg;f=a.bVD-262|0;g=d<=f?0:d-f|0;h=a.c2z;i=a.b3O;j=d+258|0;k=a.bOX.data;f=d+e|0;l=k[f-1|0];m=k[f];if(e>=a.c5k)c=c>>2;n=a.bI7;if(h>n)h=n;o=j-258|0;a:{b:{c:{while(true){f=b+e|0;if(k[f]==m&&k[f-1|0]==l&&k[b]==k[d]){p=b+1|0;if(k[p]==k[d+1|0]){f=d+2|0;d=p+1|0;d:{e:{f:{g:{h:{i:{j:{k:{l:{while(true){f=f+1|0;p=k[f];d=d ++1|0;if(p!=k[d])break;f=f+1|0;p=k[f];q=d+1|0;if(p!=k[q])break e;f=f+1|0;d=k[f];p=q+1|0;if(d!=k[p])break f;f=f+1|0;q=k[f];d=p+1|0;if(q!=k[d])break g;f=f+1|0;p=k[f];d=d+1|0;if(p!=k[d])break h;f=f+1|0;p=k[f];d=d+1|0;if(p!=k[d])break i;f=f+1|0;p=k[f];d=d+1|0;if(p!=k[d])break j;f=f+1|0;p=k[f];d=d+1|0;if(p!=k[d])break k;if(f>=j)break l;}break d;}break d;}break d;}break d;}break d;}break d;}break d;}break d;}}f=258-(j-f|0)|0;if(f<=e)d=o;else{a.b46=b;if(f>=h)break;m=o+f|0;l=k[m-1|0];m=k[m];d=o;e=f;}}}b=a.b3x.data[b +&i]&65535;if(b<=g)break b;c=c+(-1)|0;if(!c)break c;}break a;}f=e;break a;}f=e;}if(f<=n)return f;return n;},Evm=(a,b,c,d,e,f)=>{let g,h,i,j,k,l;g=1;h=a.bIF;h.bIj=null;if(b==(-1))b=6;if(d<0){g=0;d= -d|0;}else if(d>15){g=2;d=d+(-16)|0;h.bK8=Bpk();}a:{if(e<1)break a;if(e>9)break a;if(c!=8)break a;if(d<9)break a;if(d>15)break a;if(b<0)break a;if(b>9)break a;if(f<0)break a;if(f<=2){i=a.bIF;i.b6m=a;a.bU1=g;a.cOM=d;d=1<>24;i.bOW=BH;i.bG2=BH;i.bIj=null;i.dcd=2;a.bRx=0;a.b84=0;if(g<0)a.bU1= -g|0;a.b8r=a.bU1?42:113;i.bK8.rP();a.b6x=0;i=a.cc6;i.cca=a.bQg;AQ5();i.b_F=CVk;i=a.b9H;i.cca=a.bXj;i.b_F=C4C;i=a.cxv;i.cca=a.bNY;i.b_F=DcR;a.bOd=0;a.bQH=0;a.cej=8;DoO(a);a.c1X=2*a.bVD|0;l=a.bW2.data;b=a.cjF-1|0;l[b]=0;c=0;while(c{let c,d,e,f,g,h,i,j;c=C5(b,4);if(c<=0&&b>=0){a:{d=a.bIF;if(d.b5k!==null&&!(d.bIr===null&&d.bHa)){e=a.b8r;if(e!=666)break a;if(!c)break a;}ABE();d.bIj=AY8.data[4];return (-2);}if(d.bLj){f=a.b6x;a.b6x=b;if(e==42){if(a.bU1==2){DvQ(Cke(a),a);a.b8r=113;a.bIF.bK8.rP();}else{g=(8+((a.cOM-8|0)<<4)|0)<<8;e=((a.b24-1|0)&255)>>1;if(e>3)e=3;g=g|e<<6;if(a.bIf)g=g|32;e=g+(31-(g%31|0)|0)|0;a.b8r=113;A9m(a,e);if(a.bIf){h= +a.bIF.bK8.P6();A9m(a,Cp(GD(h,16)));A9m(a,Cp(CN(h,V(65535))));}a.bIF.bK8.rP();}}b:{if(!a.bRx){d=a.bIF;if(d.bHa)break b;if(b>f)break b;if(!c)break b;ABE();d.bIj=AY8.data[7];return (-5);}Bw1(a.bIF);if(!a.bIF.bLj){a.b6x=(-1);return 0;}}e=C5(a.b8r,666);if(!e){d=a.bIF;if(d.bHa){ABE();d.bIj=AY8.data[7];return (-5);}}c:{if(!a.bIF.bHa&&!a.bI7){if(!b)break c;if(!e)break c;}d:{e:{f:{g:{i=(-1);ABE();switch(Uy.data[a.b24].cO6){case 0:break g;case 1:break f;case 2:break e;default:}break d;}i=DIh(a,b);break d;}i=Fs7(a,b);break d;}i +=EXa(a,b);}e=C5(i,2);if(!(e&&i!=3))a.b8r=666;if(i&&e){if(i!=1)break c;h:{if(b==1)ESj(a);else{Cl0(a,0,0,0);if(b==3){j=0;while(true){if(j>=a.cjF)break h;a.bW2.data[j]=0;j=j+1|0;}}}}Bw1(a.bIF);if(a.bIF.bLj)break c;a.b6x=(-1);return 0;}if(!a.bIF.bLj)a.b6x=(-1);return 0;}if(!c){b=a.bU1;if(b>0){if(b!=2){h=a.bIF.bK8.P6();A9m(a,Cp(GD(h,16)));A9m(a,Cp(CN(h,V(65535))));}else{h=a.bIF.bK8.P6();JS(a,Cp(CN(h,V(255)))<<24>>24);JS(a,Cp(CN(GS(h,8),V(255)))<<24>>24);JS(a,Cp(CN(GS(h,16),V(255)))<<24>>24);JS(a,Cp(CN(GS(h,24),V(255))) +<<24>>24);JS(a,Cp(CN(a.bIF.bG2,V(255)))<<24>>24);JS(a,Cp(CN(GS(a.bIF.bG2,8),V(255)))<<24>>24);JS(a,Cp(CN(GS(a.bIF.bG2,16),V(255)))<<24>>24);JS(a,Cp(CN(GS(a.bIF.bG2,24),V(255)))<<24>>24);Eg3(Cke(a),h);}Bw1(a.bIF);b=a.bU1;if(b>0)a.bU1= -b|0;return !a.bRx?1:0;}return 1;}return 0;}ABE();d.bIj=AY8.data[7];return (-5);}return (-2);},Cke=a=>{Jl(a);try{if(a.ciE===null)a.ciE=CKm();return a.ciE;}finally{G2(a);}},EzY=()=>{let b,c;b=K(BXv,10);c=b.data;Uy=b;c[0]=Zc(0,0,0,0,0);Uy.data[1]=Zc(4,4,8,4,1);Uy.data[2]=Zc(4,5,16, +8,1);Uy.data[3]=Zc(4,6,32,32,1);Uy.data[4]=Zc(4,4,16,16,2);Uy.data[5]=Zc(8,16,32,32,2);Uy.data[6]=Zc(8,16,128,128,2);Uy.data[7]=Zc(8,32,128,256,2);Uy.data[8]=Zc(32,128,258,1024,2);Uy.data[9]=Zc(32,258,258,4096,2);AY8=BB(Bi,[E(3986),E(3987),E(14),E(3988),E(3989),E(3990),E(3991),E(3992),E(3993),E(14)]);}; +function AOU(){let a=this;F.call(a);a.cAo=null;a.cjf=null;a.cAZ=null;a.cQG=0;} +let A$V=(a,b,c,d,e)=>{a.cAo=b;a.cjf=c;a.cAZ=d;a.cQG=e;},Fyk=(a,b,c,d)=>{let e=new AOU();A$V(e,a,b,c,d);return e;},EcI=a=>{return a.cjf;}; +function C4x(){let a=this;F.call(a);a.b2H=null;a.bZ4=null;a.bUU=0;} +let Ecf=(a,b,c,d)=>{a.b2H=b;a.bZ4=c;a.bUU=d;},Bso=(a,b,c)=>{let d=new C4x();Ecf(d,a,b,c);return d;},Ctr=(b,c)=>{return b<=c?0:1;},DYL=a=>{let b,c,d,e;b=a.b2H;c=a.bZ4;d=a.bUU;e=new S;T(e);b=H(e,b);Bb(b,47);b=H(H(b,c),E(3994));BE(b,d);Bb(b,41);return Q(e);},A$h=N(Bx),AYc=null,Bs2=null,A66=null,BRz=null,FeV=null,AB6=()=>{AB6=Z(A$h);EK2();},E73=(a,b,c)=>{AB6();Ct(a,b,c);},Bki=(a,b)=>{let c=new A$h();E73(c,a,b);return c;},EK2=()=>{let b,c,d;AYc=Bki(E(563),0);Bs2=Bki(E(578),1);A66=Bki(E(3995),2);b=Bki(E(297),3);BRz +=b;c=K(A$h,4);d=c.data;d[0]=AYc;d[1]=Bs2;d[2]=A66;d[3]=b;FeV=c;}; +function C38(){let a=this;F.call(a);a.b4R=0;a.cdV=0;a.b$b=0;a.b0u=0;a.bYy=0;} +let EFv=(a,b,c,d,e,f)=>{a.b4R=b;a.cdV=c;a.b$b=d;a.b0u=e;a.bYy=f;},Bdn=(a,b,c,d,e)=>{let f=new C38();EFv(f,a,b,c,d,e);return f;},C7n=b=>{return Bdn(0,0,0,0,b);},COb=(a,b)=>{return Bdn(a.b4R,a.cdV,a.b$b,b,a.bYy);},BRO=(a,b)=>{let c;c=BKh(a.b4R,b.b4R);if(!c){c=BKh(a.cdV,b.cdV);if(!c){c=T1(a.b$b,b.b$b);if(!c){c=T1(a.b0u,b.b0u);if(!c)c=T1(a.bYy,b.bYy);}}}return c<=0?0:1;},DFM=a=>{let b,c,d,e,f;if(!a.b4R){if(a.cdV){b=a.bYy;c=a.b0u;d=a.b$b;e=new S;T(e);BE(e,b);f=H(e,E(3996));BE(f,c);BE(H(f,E(3997)),d);return Q(e);}b +=a.b0u;if(b){c=a.bYy;e=new S;T(e);BE(e,c);BE(H(e,E(3996)),b);return Q(e);}return W7(a.bYy);}return E(3998);},BdQ=N(0); +function AXS(){let a=this;F.call(a);a.bNq=null;a.b$i=0;a.b97=0;a.cdm=0.0;} +let AHW=(b,c)=>{return B1x(ATQ(B$(b),null,C7n(CQG(c))));},Bsw=(a,b)=>{a.b$i=(-2147483648);a.b97=(-2147483648);a.cdm=4.9E-324;a.bNq=b;},B1x=a=>{let b=new AXS();Bsw(b,a);return b;},EkD=a=>{return Cd_(a.bNq);},Cl5=a=>{return a.bNq.bOo;},Ei3=(a,b)=>{let c,d;c=a.bNq.bOo;if(!BG(E(71),c)){if(!BG(E(333),c)){if(c!==null){d=Eu(b,c);c=a.bNq.bVL;if(c!==null)return d.lm(Eu(b,c));return d;}b=new Bt;Bp(b,Cd_(a.bNq));J(b);}return Qj();}return Qj();},Fmm=a=>{return BG(E(13),a.bNq.bOo);},FvG=a=>{let b;if(a.b$i==(-2147483648)) +{b=CTK(a);if(b.bGI.length)a.b$i=CZ(b);else a.b$i=0;}return a.b$i;},Ffp=a=>{let b;if(a.b97==(-2147483648)){b=CTK(a);if(b.bGI.length)a.b97=CZ(b);else a.b97=(-1);}return a.b97;},CTK=a=>{let b,c,d,e;b=a.bNq.bOo;c=new S;JP(c,b.bGI.length);d=0;while(d=48&&e<=57)Bb(c,e);d=d+1|0;}return Q(c);},Cmv=a=>{let b,c,d,e;if(a.cdm===4.9E-324){b=a.bNq.bOo;c=new S;JP(c,b.bGI.length);d=0;while(d=48&&e<=57)&&e!=46))Bb(c,e);d=d+1|0;}if(!c.bG4)a.cdm=NaN;else a.cdm=DM(Q(c));}return a.cdm;},Ewf +=(a,b)=>{let c;c=Cmv(a);if(c===NaN)return b;return c;},EKQ=a=>{let b,c,d,e,$$je;b=a.bNq.bOo;if(b!==null&&!CQ(b)){c=FS(Dk(b));if(!Bj(E(350),c)){if(!Bj(E(351),c)){if(!Bj(E(3999),c)&&!Bj(E(72),c)){a:{AAw();if(c===null)d=null;else{b:{c:{d:{e:{f:{d=FS(Dk(c));e=(-1);switch(FP(d)){case -1383482894:break f;case -1039745817:break e;case 3029637:break d;case 170546243:break c;default:}break b;}if(!Bj(d,E(4000)))break b;e=3;break b;}if(!Bj(d,E(72)))break b;e=0;break b;}if(!Bj(d,E(350)))break b;e=1;break b;}if(Bj(d,E(4001)))e +=2;}g:{h:{i:{j:{switch(e){case 0:break;case 1:break j;case 2:break i;case 3:break h;default:break g;}d=BK4;break a;}d=B6n;break a;}ABZ();d=BS3(AEw,300);break a;}ABZ();d=BS3(AEw,800);break a;}k:{try{e=CZ(d);ABZ();d=BS3(AEw,e);break a;}catch($$e){$$je=P($$e);if($$je instanceof Ex){break k;}else{throw $$e;}}}d=null;}}if(d===null)return EO();return d;}return EO();}return Hw();}return SC();}return EO();},Eoj=a=>{return APp(Cl5(a));},Cwv=a=>{return a.bNq.bR0;},BVs=N(0),DnZ=N(),CWv=(a,b)=>{return b.bGI.length;},DnY +=N(),D4y=(a,b)=>{let c,d,e;b=b;FU();c=A1d(b);d=BO(b,E(2309));e=Dr(b,E(2309));if(d&&e){b=new S;T(b);H(H(H(b,E(638)),c),E(638));c=Q(b);}else if(d){b=new S;T(b);H(H(b,E(638)),c);c=Q(b);}else if(e){b=new S;T(b);H(H(b,c),E(638));c=Q(b);}return c;}; +function C0I(){EP.call(this);this.cEL=null;} +let ECt=a=>{AFA();return BUY;},DMc=(a,b)=>{let c,d,e,f;b=ADd(Nn(b));c=a.bHB;d=(C8(DB(b))).bGP;e=Ei(c,d);if(e!==null){d=Lk(Cnx(a.cEL,e));f=Dq(b)<=2?0:Dq(b)-2|0;if(f<=0)L(d,E(4002));else{L(d,E(2468));BE(d,f);L(d,f!=1?E(2253):E(2254));L(d,E(4003));}return Q(d);}return E(4004);},FoH=(a,b,c,d)=>{let e,f,g;b=b;c=ADd(Nn(c));e=a.bHB;f=(C8(DB(c))).bGP;d=Ei(e,f);c=JL(HI(c,1,1));if(!Dq(c))b=B5(E(4005));else{f=a.cEL;e=Bk();c=c.bIW.dX();while(c.dY()){g=(c.dZ()).bGP;U(e,g);}b=Dqa(f,b,d,e);}return b;},B4P=N(C7); +function B1v(){let a=this;F.call(a);a.cbL=null;a.cmG=null;} +let DOZ=a=>{let b,c,d;b=a.cbL;c=a.cmG.p();d=new S;T(d);Bb(d,40);H(H(H(d,b),E(4006)),c);return Q(d);},DAR=(a,b,c)=>{a.cbL=b;a.cmG=c;},Dgm=(a,b)=>{let c=new B1v();DAR(c,a,b);return c;},Fvg=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q;SL();d=Xe;e=a.cmG.dX();f=c;while(true){if(!e.dY()){e=C4G(ABw(b,c,f));b=a.cbL;g=new A9a;h=d.bR4;i=new C4o;i.cRv=b;if(h.bPu){j=BY$(h);k=K(F,h.bPu);l=k.data;m=0;while(m{let c,d;a:{b:{c:{d:{e:{f:{g:{h:{c=b.bIP;d=(-1);switch(FP(c)){case 3201:break h;case 3246:break g;case 3276:break f;case 3383:break e;case 3428:break d;case 3651:break c;case 3886:break b;default:}break a;}if(!Bj(c,E(534)))break a;d=2;break a;}if(!Bj(c,E(4007)))break a;d=1;break a;}if(!Bj(c,E(530)))break a;d +=0;break a;}if(!Bj(c,E(538)))break a;d=3;break a;}if(!Bj(c,E(540)))break a;d=4;break a;}if(!Bj(c,E(4008)))break a;d=5;break a;}if(Bj(c,E(531)))d=6;}i:{j:{k:{l:{m:{n:{o:{p:{switch(d){case 0:break;case 1:break p;case 2:break o;case 3:break n;case 4:break m;case 5:break l;case 6:break k;default:break j;}b=E(4009);break i;}b=E(4010);break i;}b=E(4011);break i;}b=E(4012);break i;}b=E(4013);break i;}b=E(4014);break i;}b=E(4015);break i;}b=E(4016);}return b;},D84=(a,b,c)=>{return b.bRF.b8l;},BHT=N(SB),DX8=(a,b)=>{let c, +d;a:{b:{c:{d:{e:{f:{g:{h:{c=b.bIP;d=(-1);switch(FP(c)){case 3201:break h;case 3246:break g;case 3276:break f;case 3383:break e;case 3428:break d;case 3651:break c;case 3886:break b;default:}break a;}if(!Bj(c,E(534)))break a;d=2;break a;}if(!Bj(c,E(4007)))break a;d=1;break a;}if(!Bj(c,E(530)))break a;d=0;break a;}if(!Bj(c,E(538)))break a;d=3;break a;}if(!Bj(c,E(540)))break a;d=4;break a;}if(!Bj(c,E(4008)))break a;d=5;break a;}if(Bj(c,E(531)))d=6;}i:{j:{k:{l:{m:{n:{o:{p:{switch(d){case 0:break;case 1:break p;case 2:break o;case 3:break n;case 4:break m;case 5:break l;case 6:break k;default:break j;}b +=E(4017);break i;}b=E(4018);break i;}b=E(4019);break i;}b=E(4020);break i;}b=E(4021);break i;}b=E(4022);break i;}b=E(4023);break i;}b=E(4019);}return b;},E6X=(a,b,c)=>{return C8p(c,b.Qk());},BHS=N(SB),EoK=(a,b)=>{let c,d;a:{b:{c:{d:{e:{f:{g:{h:{c=b.bIP;d=(-1);switch(FP(c)){case 3201:break h;case 3246:break g;case 3276:break f;case 3383:break e;case 3428:break d;case 3651:break c;case 3886:break b;default:}break a;}if(!Bj(c,E(534)))break a;d=2;break a;}if(!Bj(c,E(4007)))break a;d=1;break a;}if(!Bj(c,E(530)))break a;d +=0;break a;}if(!Bj(c,E(538)))break a;d=3;break a;}if(!Bj(c,E(540)))break a;d=4;break a;}if(!Bj(c,E(4008)))break a;d=5;break a;}if(Bj(c,E(531)))d=6;}i:{j:{k:{l:{m:{n:{o:{p:{switch(d){case 0:break;case 1:break p;case 2:break o;case 3:break n;case 4:break m;case 5:break l;case 6:break k;default:break j;}b=E(4024);break i;}b=E(4024);break i;}b=E(4025);break i;}b=E(4026);break i;}b=E(4027);break i;}b=E(4028);break i;}b=E(4029);break i;}b=E(4030);}return b;},E1E=(a,b,c)=>{let d;b=b.Ql();d=b.bJ5;return !(!(!Ceq(d) +&&!Cgs(d)&&!C3G(d))?0:1)?C8p(c,b):COQ(c,B6l(b));},BHW=N(SB),EtW=(a,b)=>{let c,d;a:{b:{c:{d:{e:{f:{g:{h:{c=b.bIP;d=(-1);switch(FP(c)){case 3201:break h;case 3246:break g;case 3276:break f;case 3383:break e;case 3428:break d;case 3651:break c;case 3886:break b;default:}break a;}if(!Bj(c,E(534)))break a;d=2;break a;}if(!Bj(c,E(4007)))break a;d=1;break a;}if(!Bj(c,E(530)))break a;d=0;break a;}if(!Bj(c,E(538)))break a;d=3;break a;}if(!Bj(c,E(540)))break a;d=4;break a;}if(!Bj(c,E(4008)))break a;d=5;break a;}if(Bj(c, +E(531)))d=6;}i:{j:{k:{l:{m:{n:{o:{p:{switch(d){case 0:break;case 1:break p;case 2:break o;case 3:break n;case 4:break m;case 5:break l;case 6:break k;default:break j;}b=E(4031);break i;}b=E(4032);break i;}b=E(4033);break i;}b=E(4034);break i;}b=E(4035);break i;}b=E(4036);break i;}b=E(4037);break i;}b=E(4038);}return b;},DZC=(a,b,c)=>{let d,e,f,g,h,i;d=ABr((b.Qk()).bJ5,(b.Ql()).bJ5);b=c.ceR;e=d.bN6;b=Fn3(b.bIP);if(DS(e,BH))b=b.c6n;else{f=CY(e,V(86400));e=Fl(e,V(86400));g=CY(e,V(3600));e=Fl(e,V(3600));h=CY(e, +V(60));e=Fl(e,V(60));i=new S;T(i);Bcl();BhF(b,i,f,BjP);BhF(b,i,g,Bdi);BhF(b,i,h,Bls);BhF(b,i,e,B21);b=Q(i);}return b;},BOm=N(0); +function AC3(){let a=this;Bx.call(a);a.cQx=null;a.cKH=null;} +let ACQ=null,AKO=null,AKP=null,Rx=null,AH_=null,ZL=null,AFW=null,Ka=null,Nd=null,Vf=null,S8=null,BhG=null,Bfw=null,BpO=null,A1K=null,TJ=null,C3o=null,MF=()=>{MF=Z(AC3);EAJ();},BJA=()=>{MF();return C3o.b2();},DOu=(a,b,c,d,e)=>{MF();Ct(a,b,c);a.cQx=d;a.cKH=e;},PF=(a,b,c,d)=>{let e=new AC3();DOu(e,a,b,c,d);return e;},Fyg=(a,b,c)=>{return AK8(b,c,a);},EeQ=a=>{return a.cQx;},EAJ=()=>{let b,c,d;ACQ=PF(E(4039),0,E(4040),BMT(V(1)));AKO=PF(E(4041),1,E(4042),BMT(V(1000)));AKP=PF(E(4043),2,E(4044),BMT(V(1000000)));Rx= +PF(E(4045),3,E(4046),RI(V(1)));AH_=PF(E(4047),4,E(4048),RI(V(60)));ZL=PF(E(4049),5,E(4050),RI(V(3600)));AFW=PF(E(4051),6,E(4052),RI(V(43200)));Ka=PF(E(4053),7,E(4054),RI(V(86400)));Nd=PF(E(4055),8,E(4056),RI(V(604800)));Vf=PF(E(4057),9,E(4058),RI(V(2629746)));S8=PF(E(4059),10,E(4060),RI(V(31556952)));BhG=PF(E(4061),11,E(4062),RI(V(315569520)));Bfw=PF(E(4063),12,E(4064),RI(O(3155695200, 0)));BpO=PF(E(4065),13,E(4066),RI(O(1492180928, 7)));A1K=PF(E(4067),14,E(4068),RI(O(1915187200, 7347425)));b=PF(E(4069),15, +E(4070),Bmc(O(4294967295, 2147483647),V(999999999)));TJ=b;c=K(AC3,16);d=c.data;d[0]=ACQ;d[1]=AKO;d[2]=AKP;d[3]=Rx;d[4]=AH_;d[5]=ZL;d[6]=AFW;d[7]=Ka;d[8]=Nd;d[9]=Vf;d[10]=S8;d[11]=BhG;d[12]=Bfw;d[13]=BpO;d[14]=A1K;d[15]=b;C3o=c;},Cl9=N(0); +function BkI(){let a=this;F.call(a);a.bN6=BH;a.bSe=0;} +let ARV=null,BJj=null,Qi=()=>{Qi=Z(BkI);E07();},Bla=b=>{Qi();return A2H(S3(b,86400),0);},CP1=b=>{Qi();return A2H(S3(b,3600),0);},RI=b=>{Qi();return A2H(b,0);},Bmc=(b,c)=>{Qi();return A2H(QD(b,AEY(c,1000000000)),AJk(c,1000000000));},BMT=b=>{let c,d;Qi();c=CY(b,V(1000000000));d=Cp(Fl(b,V(1000000000)));if(d<0){d=d+1000000000|0;c=CE(c,V(1));}return A2H(c,d);},ABr=(b,c)=>{let d,e,f,g,h,i,$$je;Qi();a:{MF();d=b.QE(c,Rx);e=BH;GC();if(!b.QF(WS))f=e;else if(!c.QF(WS))f=e;else{b:{try{c:{try{g=d;h=b.PA(WS);f=CE(c.PA(WS), +h);e=f;i=OT(d,BH);if(i>0){e=f;g=d;if(GR(f,BH)){e=f;g=d;f=BU(f,V(1000000000));e=f;break c;}}e=f;g=d;if(i<0){e=f;g=d;if(G5(f,BH)){e=f;g=d;f=CE(f,V(1000000000));e=f;break c;}}e=f;g=d;if(i)break c;e=f;g=d;if(DS(f,BH))break c;e=f;g=d;d=b.QE(c.QG(WS,h),Rx);g=d;break c;}catch($$e){$$je=P($$e);if($$je instanceof GE){break b;}else{throw $$e;}}}break a;}catch($$e){$$je=P($$e);if($$je instanceof KZ){break b;}else{throw $$e;}}}f=e;d=g;}}return Bmc(d,f);},A2H=(b,c)=>{Qi();if(D4(Gu(b,V(c)),BH))return Dox(b,c);return ARV;},Fk$ +=(a,b,c)=>{Qi();a.bN6=b;a.bSe=c;},Dox=(a,b)=>{let c=new BkI();Fk$(c,a,b);return c;},ANx=(a,b)=>{return ALa(a,b.bN6,V(b.bSe));},ALa=(a,b,c)=>{if(D4(Gu(b,c),BH)){b=QD(QD(a.bN6,b),CY(c,V(1000000000)));c=Fl(c,V(1000000000));return Bmc(b,BU(V(a.bSe),c));}return a;},CdM=a=>{let b,c,d,e,f,g;Qi();if(a!==ARV){b=a.bN6;c=CY(b,V(3600));d=Cp(CY(Fl(b,V(3600)),V(60)));e=Cp(Fl(b,V(60)));f=new S;JP(f,24);L(f,E(4071));if(D4(c,BH))Bb(QN(f,c),72);if(d){BE(f,d);Bb(f,77);}if(!e&&!a.bSe&&f.bG4>2)return Q(f);if(!(e<0&&a.bSe>0))BE(f, +e);else if(e==(-1))L(f,E(1284));else BE(f,e+1|0);d=a.bSe;if(d>0){g=f.bG4;if(e>=0)BE(f,d+1000000000|0);else BE(f,2000000000-d|0);while(Vx(f,f.bG4-1|0)==48){f.bG4=f.bG4-1|0;}Clx(f,g,46);}Bb(f,83);return Q(f);}return E(4072);},E07=()=>{ARV=Dox(BH,0);}; +function C3H(){F.call(this);this.cSK=null;} +let BT_=(a,b,c)=>{let d,e,f,g;d=a.cSK.Pw(b,c);e=d.bJS;f=e<0?E(14):ABw(b,c,c+e|0);g=new Clt;g.dcW=a;g.cyB=f;g.b2x=d;g.cPh=c;g.cVb=b;return g;}; +function BDE(){let a=this;F.call(a);a.cca=null;a.b1X=0;a.b_F=null;} +let BDb=null,Bvg=null,CBr=null,BV8=null,B16=null,BV0=null,CwZ=null,Dct=null,ABd=()=>{ABd=Z(BDE);E2w();},EUZ=a=>{ABd();},BJ1=()=>{let a=new BDE();EUZ(a);return a;},CWi=b=>{ABd();return b<256?B16.data[b]:B16.data[256+(b>>>7|0)|0];},DV2=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;c=a.cca;d=a.b_F;e=d.cE7;f=d.c6P;g=d.cMa;h=d.cP7;i=0;j=0;while(j<=15){b.cdB.data[j]=0;j=j+1|0;}k=c.data;l=b.bOZ.data;j=b.b0w;k[(l[j]*2|0)+1|0]=0;m=j+1|0;while(m<573){n=l[m];j=n*2|0;o=j+1|0;p=k[(k[o]*2|0)+1|0]+1|0;if(p>h){i=i+1|0;p=h;}k[o] +=p<<16>>16;if(n<=a.b1X){c=b.cdB.data;c[p]=(c[p]+1|0)<<16>>16;q=0;if(n>=g)q=f.data[n-g|0];r=k[j];b.bVG=b.bVG+Ev(r,p+q|0)|0;if(e!==null){c=e.data;b.b68=b.b68+Ev(r,c[o]+q|0)|0;}}m=m+1|0;}if(i){g=h-1|0;while(true){n=g;while(true){c=b.cdB.data;if(c[n])break;n=n+(-1)|0;}c[n]=(c[n]-1|0)<<16>>16;j=n+1|0;c[j]=(c[j]+2|0)<<16>>16;c[h]=(c[h]-1|0)<<16>>16;i=i+(-2)|0;if(i<=0)break;}while(h){n=c[h];while(n){m=m+(-1)|0;o=l[m];if(o>a.b1X)continue;i=o*2|0;j=i+1|0;if(k[j]!=h){b.bVG=Cp(BU(V(b.bVG),CT(CE(V(h),V(k[j])),V(k[i]))));k[j] +=h<<16>>16;}n=n+(-1)|0;}h=h+(-1)|0;}return;}},BRu=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o;c=a.cca;d=a.b_F;e=d.cE7;f=d.cYj;g=(-1);b.bVf=0;b.b0w=573;h=0;while(h=2)break;i=b.bOZ;j=j+1|0;b.bVf=j;if(g>=2)h=0;else{g=g+1|0;h=g;}k=i.data;i=c.data;k[j]=h;j=h*2|0;i[j]=1;b.b4n.data[h]=0;b.bVG=b.bVG-1|0;if(e===null)continue;i=e.data;b.b68=b.b68-i[j+1|0]|0;}a.b1X=g;j=j/2|0;while(j>=1) +{B4y(b,c,j);j=j+(-1)|0;}while(true){i=c.data;e=b.bOZ.data;l=e[1];m=b.bVf;b.bVf=m-1|0;e[1]=e[m];B4y(b,c,1);e=b.bOZ.data;j=e[1];h=b.b0w-1|0;b.b0w=h;e[h]=l;h=h-1|0;b.b0w=h;e[h]=j;h=f*2|0;m=l*2|0;n=i[m];o=j*2|0;i[h]=(n+i[o]|0)<<16>>16;e=b.b4n.data;e[f]=(DT(e[l],e[j])+1|0)<<24>>24;j=m+1|0;l=o+1|0;h=f<<16>>16;i[l]=h;i[j]=h;e=b.bOZ.data;l=f+1|0;e[1]=f;B4y(b,c,1);if(b.bVf<2)break;f=l;}c=b.bOZ.data;j=b.b0w-1|0;b.b0w=j;c[j]=c[1];DV2(a,b);e=b.cdB;k=b.cOD.data;l=0;k[0]=0;h=1;while(h<=15){l=(l+e.data[h-1|0]|0)<<1<<16>>16;k[h] +=l;h=h+1|0;}j=0;while(j<=g){l=j*2|0;h=i[l+1|0];if(h){f=k[h];k[h]=(f+1|0)<<16>>16;m=0;while(true){m=m|f&1;f=f>>>1|0;m=m<<1;h=h+(-1)|0;if(h<=0)break;}i[l]=(m>>>1|0)<<16>>16;}j=j+1|0;}},E2w=()=>{BDb=Ey([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]);Bvg=Ey([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);CBr=Ey([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]);BV8=IU([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);B16=IU([0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9, +9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15, +15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,16,17,18,18,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27, +27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29]);BV0=IU([0,1,2,3,4,5,6,7,8,8,9,9,10,10,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16, +16,16,16,16,16,16,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26, +26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28]);CwZ=Ey([0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0]);Dct=Ey([0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576]);},A2t=N(Bx),BFG=null,C2d=null,DYR=null,BeF=()=>{BeF=Z(A2t);Ewu();},ET7=(a,b,c)=>{BeF();Ct(a,b,c);},Dhr=(a,b)=>{let c=new A2t();ET7(c,a,b);return c;},Ewu +=()=>{let b,c,d;BFG=Dhr(E(4073),0);b=Dhr(E(4074),1);C2d=b;c=K(A2t,2);d=c.data;d[0]=BFG;d[1]=b;DYR=c;}; +function C4n(){let a=this;F.call(a);a.cp9=0;a.cFL=null;} +let Ck_=a=>{return a.cp9>=a.cFL.bLI.data.length?0:1;}; +function BSx(){let a=this;F.call(a);a.bOo=null;a.bVL=null;a.bR0=null;} +let C_0=(a,b,c,d)=>{a.bOo=b;a.bVL=c;a.bR0=d;},ATQ=(a,b,c)=>{let d=new BSx();C_0(d,a,b,c);return d;},Cd_=a=>{let b,c,d,e;b=a.bOo;c=a.bVL;d=BY(a.bR0);e=new S;T(e);b=H(e,b);Bb(b,47);Bb(H(H(H(b,c),E(3994)),d),41);return Q(e);}; +function C4k(){F.call(this);this.c5H=null;} +function CYK(){ACz.call(this);this.cpy=null;} +let DKI=a=>{let b;b=Lk(E(864));L(b,(a.bZh.cf(0)).CZ());L(b,E(4075));return Q(b);},FwQ=(a,b,c)=>{let d,e;d=a.cpy===null?null:Bjc(b);BFM(a,b,c);if(a.cpy!==null){e=BO1(1);BZH(e,d);B7h(c,a.cpy,e);}},D9l=(a,b)=>{b=new BV;X(b);J(b);}; +function Bpf(){let a=this;F.call(a);a.b3t=null;a.bWX=0;a.bZ3=0;a.b6D=0;} +let ANt=b=>{return B1e(b,0,b.bL(),0);},C4G=a=>{let b,c,d;b=Jh(a);c=new S;JP(c,b);d=0;while(d{if(d{let e=new Bpf();BIy(e,a,b,c,d);return e;},ABw=(a,b,c)=>{let d,e,f,g,h;if(b>=0&&c<=Jh(a)&&b<=c){d=a.b6D;if(d){e=new Bpf;f=a.b3t;g=a.bZ3;BIy(e,f,g-c|0,g-b|0,d);return e;}f=new Bpf;e=a.b3t;g=a.bWX;BIy(f,e,g+b|0,g+c|0,d);return f;}f=new EN;d=Jh(a);h=new S;T(h);e=H(h,E(4076));BE(e,b);e=H(e, +E(50));BE(e,c);BE(H(e,E(4077)),d);Bp(f,Q(h));J(f);},Jh=a=>{return a.bZ3-a.bWX|0;},Hc=(a,b)=>{let c,d,e,f;if(b>=0&&b{if(!a.b6D)a.bWX=a.bWX+b|0;else a.bZ3=a.bZ3-b|0;},EIJ=(a,b,c)=>{return ABw(a,b,c);},TA=N(0),CFN=N(),BTU=N(I$),E_S=(a,b,c)=>{let d,e;if(Ju(b)&&Ju(c))d=AL8(Ev(b.bHY,c.bHY));else{d=new AEK;b=D$(b);c=D$(c);e=new S;T(e);b=H(e, +b);Bb(b,42);H(b,c);A$D(d,Q(e));}return d;},BTV=N(I$),DHc=(a,b,c)=>{let d,e;if(Ju(b)&&Ju(c))d=AL8(b.bHY/c.bHY|0);else{d=new AEK;b=D$(b);c=D$(c);e=new S;T(e);b=H(e,b);Bb(b,47);H(b,c);A$D(d,Q(e));}return d;},BTW=N(I$),Eih=(a,b,c)=>{let d,e;if(Ju(b)&&Ju(c))d=AL8(b.bHY+c.bHY|0);else{d=new AEK;b=D$(b);c=D$(c);e=new S;T(e);H(H(e,b),c);A$D(d,Q(e));}return d;},BTX=N(I$),ETe=(a,b,c)=>{let d,e;if(Ju(b)&&Ju(c))d=AL8(b.bHY-c.bHY|0);else{d=new AEK;b=D$(b);c=D$(c);e=new S;T(e);H(H(e,b),c);A$D(d,Q(e));}return d;},BTY=N(I$),FvX +=(a,b,c)=>{return !(Ju(b)&&Ju(c))?GX(J6(D$(b),D$(c))>=0?0:1):GX(b.bHY>=c.bHY?0:1);},BTZ=N(I$),E9R=(a,b,c)=>{return !(Ju(b)&&Ju(c))?GX(J6(D$(b),D$(c))<=0?0:1):GX(b.bHY<=c.bHY?0:1);},BT0=N(I$),DBm=(a,b,c)=>{return !(Ju(b)&&Ju(c))?GX(J6(D$(b),D$(c))>0?0:1):GX(b.bHY>c.bHY?0:1);},BT1=N(I$),Egf=(a,b,c)=>{return !(Ju(b)&&Ju(c))?GX(J6(D$(b),D$(c))<0?0:1):GX(b.bHY{return !(Ju(b)&&Ju(c))?GX(J6(D$(b),D$(c))?0:1):GX(b.bHY!=c.bHY?0:1);},BMQ=N(I$),DKC=(a,b,c)=>{return !(Ju(b)&&Ju(c))? +GX(!J6(D$(b),D$(c))?0:1):GX(b.bHY==c.bHY?0:1);},BMP=N(I$),EkV=(a,b,c)=>{return GX(!(PO(b)&&PO(c))?0:1);},BMO=N(I$),EIe=(a,b,c)=>{return GX(!(!PO(b)&&!PO(c))?1:0);}; +function BXv(){let a=this;F.call(a);a.cPH=0;a.cR1=0;a.cO3=0;a.cRD=0;a.cO6=0;} +let DHN=(a,b,c,d,e,f)=>{a.cPH=b;a.cR1=c;a.cO3=d;a.cRD=e;a.cO6=f;},Zc=(a,b,c,d,e)=>{let f=new BXv();DHN(f,a,b,c,d,e);return f;}; +function BSq(){F.call(this);this.b3S=0;} +let B5o=null,BlW=()=>{BlW=Z(BSq);FcT();},D0t=a=>{BlW();a.b3S=0;},Bpk=()=>{let a=new BSq();D0t(a);return a;},Cin=(a,b,c,d)=>{let e,f,g,h;e=a.b3S^(-1);while(true){d=d+(-1)|0;if(d<0)break;f=b.data;BlW();g=B5o.data;h=c+1|0;e=g[(e^f[c])&255]^(e>>>8|0);c=h;}a.b3S=e^(-1);},C2N=a=>{a.b3S=0;},FtO=(a,b)=>{a.b3S=Cp(CN(b,O(4294967295, 0)));},Cn0=a=>{return CN(V(a.b3S),O(4294967295, 0));},FcT=()=>{let b,c,d,e,f;B5o=null;b=Ca(256);c=b.data;B5o=b;d=0;while(d<256){e=8;f=d;while(true){e=e+(-1)|0;if(e<0)break;if(!(f&1)){f=f>>> +1|0;continue;}f=(-306674912)^(f>>>1|0);}c[d]=f;d=d+1|0;}},Dn_=N(),AJ6=(a,b)=>{let c;c=BF_(a,b);if(c.dV()!=1){b=new BV;X(b);J(b);}return c.cf(0);},BF_=(a,b)=>{let c,d,e,f,g,h,i,j,k;switch(Hc(b,0)){case 9479:b=new Bt;X(b);J(b);case 12291:Hq(b,1);return IN(CKy(34));case 12292:a:{c=Hc(b,1);if(c==62){Hq(b,2);b=AJ6(a,b);d=K(Nm,2);e=d.data;f=new C9C;f.cZV=b;e[0]=f;e[1]=b;b=Bv(d);}else{if(c==43){Hq(b,2);B8W(a,b);f=AJ6(a,b);B8W(a,b);if(Hc(b,0)==45){if(Hc(b,1)==62){Hq(b,2);B8W(a,b);g=AJ6(a,b);b=Bv(BB(Nm,[CvE(f,g),g]));break a;}b +=new BV;Bp(b,E(4080));J(b);}b=new BV;Bp(b,E(4080));J(b);}b=new BV;Bp(b,E(4081));J(b);}}return b;case 12295:b:{c=Hc(b,1);Hq(b,2);if(c==123){f=new DjD;f.cyW=UJ();f.cG5=A6U(2147483647);g=new S;T(g);while(true){c=Hc(b,0);if(c==125)break;if(c!=59)Bb(g,c);else{B$t(f,Q(g));g.bG4=0;}Hq(b,1);}B$t(f,Q(g));Hq(b,1);b=AJ6(a,b);g=new CZs;g.c4e=b;g.cP5=f;b=IN(g);}else if(c==108){Hq(b,1);f=AJ6(a,b);g=CeP();Dhk(g,b);b=Bk();h=new CLU;h.cNo=f;h.cQs=g;f=b;U(f,h);g=(DiT(g)).dX();while(g.dY()){U(f,g.dZ());}}else{c:{d:{e:{b=AJ6(a, +b);switch(c){case 42:break;case 43:break e;case 63:break d;default:break c;}b=IN(CXf(b));break b;}b=IN(Dqs(b));break b;}b=IN(CWf(b));break b;}b=new BV;Bp(b,E(4082));J(b);}}return b;case 12300:i=0;f:{g:{while(true){if(i>=Jh(b))break g;if(Hc(b,i)==12301)break;i=i+1|0;}break f;}i=(-1);}if(i!=(-1)){f=FaN(ABw(b,1,i));Hq(b,i+1|0);return IN(f);}b=new BV;Bp(b,E(4083));J(b);case 12304:f=BF0();c=1;i=0;j=1;while(true){if(j>=Jh(b)){f=new BV;Dil(f,E(4084));J(f);}k=Hc(b,j);if(k==12304)i=i+1|0;else if(!i&&k==9479){BhK(f,A6P(ABw(b, +c,j)));c=j+1|0;}else if(k==12305){if(!i){BhK(f,A6P(ABw(b,c,j)));Hq(b,j+1|0);return IN(f);}i=i+(-1)|0;if(i<0)break;}j=j+1|0;}J(Ms());case 12306:return IN(Ezk(a,b));case 12312:return IN(E2U(a,b));case 12340:return IN(DSG(a,b));case 12342:break;default:return IN(Fnn(a,b));}return EPM(a,b);},Ezk=(a,b)=>{let c,d,e,f,g;a:{Hq(b,1);A8q();c=b;d=Hc(c,0);if(d==36)c=Bt0;else if(d==61)c=Bar;else if(d==33)c=A2$;else{b:{if(d==60){d=Hc(c,1);if(d==61){c=AZh;break a;}if(d==33)break b;}c=null;break a;}c=A63;}}if(c!==null){Hq(b, +c.cMf.bGI.length);if(c===Bt0)e=new Dh$;else{c:{d:{f=AJ6(a,b);g=c.bGO;switch(g){case 2:case 3:break;default:break d;}d=1;break c;}d=0;}if(d){e=new Dnx;e.cKB=f;e.c7a=c;}else{e:{f:{switch(g){case 0:case 1:break;default:break f;}d=1;break e;}d=0;}if(d){e=new C0G;e.cH4=f;e.cCq=c;}else{b=new BV;X(b);J(b);}}}return e;}b=new BV;Bp(b,E(4085));J(b);},DSG=(a,b)=>{let c,d,e;Hq(b,1);if(!Df4(Hc(b,0))){AUD();c=A34;}else{AUD();c=BKQ;}d=DrN(b);e=new DpT;e.cGE=d;e.cE8=c;Hq(b,CrK(d));b=new B$H;b.cBP=e;return b;},B8W=(a,b)=>{while +(Hc(b,0)==32){Hq(b,1);}},E2U=(a,b)=>{let c,d,e,f;c=0;d=1;a:{b:{while(true){if(d>=Jh(b))break b;e=Hc(b,d);if(e==12312)c=c+1|0;else if(e==12313){if(!c)break a;c=c+(-1)|0;if(c<0)break;}d=d+1|0;}b=new Bt;X(b);J(b);}d=(-1);}if(d!=(-1)){f=A6P(ABw(b,1,d));Hq(b,d+1|0);return f;}b=new BV;Bp(b,E(4086));J(b);},EPM=(a,b)=>{let c,d,e,f,g,h;c=new S;T(c);if(Hc(b,1)==36){Hq(b,2);while(true){d=Hc(b,0);Hq(b,1);if(d==61){if(c.bG4){e=BF_(a,b);f=Dgm(Q(c),IN(e.cf(0)));if(e.dV()!=1){g=Bk();c=g;U(c,f);h=1;while(h{let c;c=Hc(b,0);if(c!=32){if(c==8729)c=32;Hq(b,1);return CKy(c);}b=new BP;Bp(b,E(4090));J(b);}; +function CXu(){A11.call(this);this.c1e=null;} +let ExX=a=>{return 1;},Ebx=(a,b)=>{let c;if(b){c=new EN;X(c);J(c);}return a.c1e;}; +function BBg(){let a=this;F.call(a);a.cE7=null;a.c6P=null;a.cMa=0;a.cYj=0;a.cP7=0;} +let BgM=null,BUh=null,CVk=null,C4C=null,DcR=null,AQ5=()=>{AQ5=Z(BBg);EaG();},CCo=(a,b,c,d,e,f)=>{AQ5();a.cE7=b;a.c6P=c;a.cMa=d;a.cYj=e;a.cP7=f;},Dht=(a,b,c,d,e)=>{let f=new BBg();CCo(f,a,b,c,d,e);return f;},EaG=()=>{let b,c;b=BeN([12,8,140,8,76,8,204,8,44,8,172,8,108,8,236,8,28,8,156,8,92,8,220,8,60,8,188,8,124,8,252,8,2,8,130,8,66,8,194,8,34,8,162,8,98,8,226,8,18,8,146,8,82,8,210,8,50,8,178,8,114,8,242,8,10,8,138,8,74,8,202,8,42,8,170,8,106,8,234,8,26,8,154,8,90,8,218,8,58,8,186,8,122,8,250,8,6,8,134,8,70, +8,198,8,38,8,166,8,102,8,230,8,22,8,150,8,86,8,214,8,54,8,182,8,118,8,246,8,14,8,142,8,78,8,206,8,46,8,174,8,110,8,238,8,30,8,158,8,94,8,222,8,62,8,190,8,126,8,254,8,1,8,129,8,65,8,193,8,33,8,161,8,97,8,225,8,17,8,145,8,81,8,209,8,49,8,177,8,113,8,241,8,9,8,137,8,73,8,201,8,41,8,169,8,105,8,233,8,25,8,153,8,89,8,217,8,57,8,185,8,121,8,249,8,5,8,133,8,69,8,197,8,37,8,165,8,101,8,229,8,21,8,149,8,85,8,213,8,53,8,181,8,117,8,245,8,13,8,141,8,77,8,205,8,45,8,173,8,109,8,237,8,29,8,157,8,93,8,221,8,61,8,189,8,125, +8,253,8,19,9,275,9,147,9,403,9,83,9,339,9,211,9,467,9,51,9,307,9,179,9,435,9,115,9,371,9,243,9,499,9,11,9,267,9,139,9,395,9,75,9,331,9,203,9,459,9,43,9,299,9,171,9,427,9,107,9,363,9,235,9,491,9,27,9,283,9,155,9,411,9,91,9,347,9,219,9,475,9,59,9,315,9,187,9,443,9,123,9,379,9,251,9,507,9,7,9,263,9,135,9,391,9,71,9,327,9,199,9,455,9,39,9,295,9,167,9,423,9,103,9,359,9,231,9,487,9,23,9,279,9,151,9,407,9,87,9,343,9,215,9,471,9,55,9,311,9,183,9,439,9,119,9,375,9,247,9,503,9,15,9,271,9,143,9,399,9,79,9,335,9,207,9, +463,9,47,9,303,9,175,9,431,9,111,9,367,9,239,9,495,9,31,9,287,9,159,9,415,9,95,9,351,9,223,9,479,9,63,9,319,9,191,9,447,9,127,9,383,9,255,9,511,9,0,7,64,7,32,7,96,7,16,7,80,7,48,7,112,7,8,7,72,7,40,7,104,7,24,7,88,7,56,7,120,7,4,7,68,7,36,7,100,7,20,7,84,7,52,7,116,7,3,8,131,8,67,8,195,8,35,8,163,8,99,8,227,8]);BgM=b;BUh=BeN([0,5,16,5,8,5,24,5,4,5,20,5,12,5,28,5,2,5,18,5,10,5,26,5,6,5,22,5,14,5,30,5,1,5,17,5,9,5,25,5,5,5,21,5,13,5,29,5,3,5,19,5,11,5,27,5,7,5,23,5]);c=new BBg;ABd();CCo(c,b,BDb,257,286,15);CVk +=c;C4C=Dht(BUh,Bvg,0,30,15);DcR=Dht(null,CBr,0,19,7);}; +function BQ0(){let a=this;F.call(a);a.ceY=null;a.bU2=null;a.ckN=0;a.cbm=null;a.b$g=null;a.chh=null;a.cwW=null;a.cvQ=null;} +let A1h=0,BLQ=()=>{BLQ=Z(BQ0);FwU();},Cb3=a=>{let b;b=a.bU2.bPb;F8();if(b===AAX){CV();return AW3;}CV();return AOo;},B44=a=>{let b;b=B1(a.bU2);B8();return B0(b,CG(AFI,Cb3(a)));},CNz=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q;e=new CuV;f=a.bU2;e.bTf=Bk();g=f;e.clP=B1(g);g=g.bPb;F8();if(g!==AAX){CV();h=AOo;}else{CV();h=AW3;}a:{e.bXe=h;e.bWP=f;e.b_h=c;if(c instanceof Su){i=ABK(c);while(true){if(!ABF(i))break a;h=ABA(i);j=h.bZv;h=Cpv(e,h.bXF);g=Cmz(e,j,d);f=B70(e,BIk(e,1,g),j);h=B70(e,BIk(e,0,g),h);j=e.bTf;k=CuQ(f, +h,g);U(j,k);}}}b:{if(c instanceof Wl){l=0;k=AGA(c);while(true){if(!AAZ(k))break b;h=AAW(k);g=new S;T(g);BE(g,l);g=Cmz(e,Q(g),d);h=B70(e,BIk(e,0,g),Cpv(e,h));f=e.bTf;j=CuQ(h,null,g);U(f,j);l=l+1|0;}}}h=De(e,a.b$g);l=c.ul();m=BWm(e,a.b$g);n=BJ$(e,a.b$g);c=a.b$g;o=Hr(e.bTf.bGJ);p=o.data;q=0;while(true){g=e.bTf;if(q>=g.bGJ)break;p[q]=BnL(Be(g,q),c);q=q+1|0;}c:{h=D0o(a,b,h,l,m,n,o);c=a.chh;g=new Cbm;g.c60=e;g.ctj=h;U(c,g);k=Bk();c=e.b_h;if(c instanceof Su){f=ABK(c);while(true){if(!ABF(f))break c;g=(ABA(f)).bXF;if +(!(!(g instanceof Su)&&!(g instanceof Wl)))U(k,g);else{c=null;U(k,c);}}}}d:{c=e.b_h;if(c instanceof Wl){f=AGA(c);while(true){if(!AAZ(f))break d;c=AAW(f);if(!(!(c instanceof Su)&&!(c instanceof Wl)))U(k,c);else{c=null;U(k,c);}}}}e:{c=Bk();g=e.b_h;if(g instanceof Su){f=ABK(g);while(true){if(!ABF(f))break e;j=(ABA(f)).bZv;U(c,j);}}}f:{g=e.b_h;if(g instanceof Wl){l=0;f=AGA(g);while(true){if(!AAZ(f))break f;AAW(f);g=new S;T(g);BE(g,l);j=Q(g);U(c,j);l=l+1|0;}}}l=0;while(l{let f,g;f=B8e(b,a.cbm,c,d,null,1);c=c.cBy;d=d.cBy;g=new S;T(g);c=H(g,c);Bb(c,45);H(c,d);f.bYR=Q(g);Jq(b,f,Co(E(4091)),Co(E(4092)),Co(E(14)));Jq(b,f,Co(E(4093)),Co(E(71)),Co(E(14)));Jq(b,f,Co(E(4094)),Co(E(72)),Co(E(14)));c=Co(E(4095));d=new H2;g=new S;T(g);Bb(g,80);BE(g,e);Me(d,Q(g));Jq(b,f,c,d,Co(E(14)));return f;},D0o=(a,b,c,d,e,f,g)=>{let h,i,j,k,l,m,n,o,p,q;g=g.data;h +=c.bGE/72.0;i=new S;T(i);D6(i,h);j=Q(i);h=c.bGF/72.0;c=new S;T(c);D6(c,h);k=Q(c);i=a.cbm;l=new H2;m=a.ckN;c=new S;T(c);Bb(c,78);BE(c,m);Me(l,Q(c));l=B3X(b,i,l,1);n=a.ckN;c=new S;T(c);BE(H(c,E(4096)),n);l.cBy=Q(c);a.ckN=a.ckN+1|0;Jq(b,l,Co(E(4097)),Co(E(2583)),Co(E(14)));i=Co(E(363));o=new H2;c=new S;T(c);H(c,j);Me(o,Q(c));Jq(b,l,i,o,Co(E(14)));i=Co(E(362));j=new H2;c=new S;T(c);H(c,k);Me(j,Q(c));Jq(b,l,i,j,Co(E(14)));n=g.length;if(d){e=e-8.0;i=Lk(E(14));m=0;p=n-1|0;while(m0)Jq(b,l,Co(E(764)),Co(i),Co(E(14)));return l;},FwU +=()=>{A1h=0;}; +function CjV(){let a=this;F.call(a);a.cQD=null;a.c0f=null;a.cYv=0;a.cM4=0;} +let B8j=(a,b)=>{return IL(a.c0f){a.bQZ=0;a.b64=0;a.cbV=b;a.cS$=c;},CMR=(a,b)=>{let c=new Dpu();DVY(c,a,b);return c;},Da=(a,b)=>{let c;if(a.bQZ!=(-1)){c=BCh(a);if((a.b64+b|0){let b,c;if(a.cS$){b=(C8(ACq(a.cbV,a.bQZ))).bGP;c=new S;T(c);Bb(H(c,b),10);return Q(c);}return (C8(ACq(a.cbV,a.bQZ))).bGP;},Dx=a=>{let b,c;if(a.bQZ!=(-1)){b=a.b64+1|0;a.b64=b;if(b>=(BCh(a)).bGI.length){a.bQZ=a.bQZ+1|0;a.b64=0;}while(a.bQZ=Dq(a.cbV))a.bQZ=(-1);return;}c=new BP;X(c);J(c);}; +function BDh(){SF.call(this);this.c29=null;} +let CSO=(a,b)=>{let c,d,e;c=a.c29;d=a;e=new DdO;e.cK5=d;e.cK4=b;return c.OG(e);}; +function Dbq(){BDh.call(this);this.c2D=null;} +function B_N(){If.call(this);this.ci9=null;} +let EZf=(a,b)=>{return NB(a.ci9,b);},DB1=a=>{return a.ci9.bHv;},D6e=a=>{let b;b=new CJu;Bti(b,a.ci9);return b;}; +function Csn(){If.call(this);this.cpX=null;} +let DxA=a=>{let b,c;b=(a.cpX.dW()).dX();c=new CUc;c.c9i=a;c.cpg=b;return c;},FnO=a=>{return a.cpX.dV();},DN4=(a,b)=>{return a.cpX.dQ(b);}; +function BMr(){let a=this;F.call(a);a.bRp=null;a.bKh=null;} +let ClY=null,BKp=()=>{BKp=Z(BMr);Dwp();},DSq=(a,b,c,d)=>{let e,f,g,h,i,$$je;BKp();a.bRp=Bbe();a.bKh=U1();e=b;a:while(true){if(!Bqa(e)){while(!RL(a.bKh)){e=Fp(a.bKh);T9(a.bRp,e);}return;}b:{f=A38(e);b=f.bJC;RC();if(!(b!==AHO&&b!==ACS))T9(a.bRp,f);else if(b===AIw)EY(a.bKh,f);else if(b===AJP){g=f.bQf;b=c;if(!CB(g,E(423))&&!CB(g,E(842)))h=b.cG9.uf(g);else{b=Tn(b.cqE,b.cG9,Ia(g,b.c7A));c:{d:{try{h=LX(AQS(b));break c;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break d;}else{throw $$e;}}}h=EV(b);}}if(h===null){if +(!Kr(D3(ClY,g))){b=new Ij;c=new S;T(c);H(H(c,E(4101)),g);JV(b,Q(c),d);J(b);}T9(a.bRp,AMi(g,ACS,null));}else T9(a.bRp,Ju(h)?AMi(D$(h),AHO,null):!W_(h)?AMi(D$(h),ACS,null):AMi(D$(h),A9w,h.bKG));}else if(!BFp(a,f)){b=f.bJC;if(b===AC2)EY(a.bKh,f);else if(b===QK)EY(a.bKh,f);else if(b===AC$){while(JX(a.bKh)!==null&&(JX(a.bKh)).bJC!==AC2){T9(a.bRp,Fp(a.bKh));}i=Fp(a.bKh);T9(a.bRp,i);}else{if(b!==Rg){if(b!==Yi)break a;while(true){if(JX(a.bKh)===null)break b;if(BV5(JX(a.bKh))===AC2)break b;T9(a.bRp,Fp(a.bKh));}}while +(BV5(JX(a.bKh))!==QK){T9(a.bRp,Fp(a.bKh));}if(BV5(JX(a.bKh))===QK)Fp(a.bKh);}}else{while(true){b=JX(a.bKh);if(!(!(b!==null&&b.bJC===AIw)?0:1)){b=JX(a.bKh);if(!(!(b!==null&&BFp(a,b)&&BvQ(b)>BvQ(f))?0:1)&&!E79(a,f))break;}b=JX(a.bKh);if(!(!(b!==null&&b.bJC===QK)?1:1))break;T9(a.bRp,Fp(a.bKh));}EY(a.bKh,f);}}}J(ZF(CVU(f)));},EK1=(a,b,c)=>{let d=new BMr();DSq(d,a,b,c);return d;},E79=(a,b)=>{let c;c=JX(a.bKh);if(c!==null&&BFp(a,c)&&BvQ(c)==BvQ(b))return 1;return 0;},BFp=(a,b)=>{let c;c=b.bJC;RC();return !(c!==Vv +&&c!==AA8)?1:0;},Dwp=()=>{ClY=Dp(E(4102));}; +function C2b(){let a=this;F.call(a);a.cXV=null;a.daa=0;} +let DUA=(a,b,c,d,e,f)=>{let g,h,i,j,k,l,m,n,o,p,q,r,s;a.daa=0;g=Dy();h=U1();i=BGn(c);while(true){if(!Bqa(i)){a.cXV=Fp(h);return;}j=A38(i);c=j.bJC;RC();k=AHO;if(c===k){if(c!==k){b=new Bt;X(b);J(b);}k=AL8(CZ(j.bQf));EY(h,k);}else{k=ACS;if(c===k){if(c!==k){b=new Bt;X(b);J(b);}k=CeV(j.bQf);EY(h,k);}else{k=A9w;if(c===k){if(c!==k){b=new BP;X(b);J(b);}c=LX(j.c5O);EY(h,c);}else if(c===AA8){l=h;k=Fp(l);c=D$(Fp(l));C9(g,c,k);}else if(c===Vv){m=h;k=Fp(m);l=Fp(m);n=CTv(j);if(n===null)J(EC(E(4103),b));EY(m,n.Rg(l,k));}else +{if(c!==AC2)J(EC(E(4104),b));o=CZ(j.bQf);c=g;p=o-c.bHv|0;q=A38(i);if(q.bJC!==AIw)J(EC(E(4105),b));l=DY(q.bQf,p);m=BC2(d.cqE.bSL,l);if(m===null){c=new Ij;f=q.bQf;d=new S;T(d);H(H(d,E(4106)),f);JV(c,Q(d),b);J(c);}if(!m.vh(p,SY())){c=new Ij;f=(m.vg()).bSB;d=new S;T(d);H(H(d,E(4107)),f);JV(c,Q(d),b);J(c);}r=Bk();o=0;while(o{let f=new C2b();DUA(f,a,b,c,d,e);return f;}; +function CE3(){let a=this;F.call(a);a.cE4=null;a.cE5=null;a.cE6=null;a.cwl=null;a.cwk=null;a.cwm=null;a.cif=null;a.cie=null;a.cig=null;} +let EIi=(a,b)=>{let c;c=new S;T(c);H(H(c,E(4109)),b);a.cE4=Q(c);c=new S;T(c);H(H(c,E(3810)),b);a.cE5=Q(c);c=new S;T(c);H(H(c,E(4110)),b);a.cE6=Q(c);c=new S;T(c);H(H(c,E(4111)),b);a.cwl=Q(c);c=new S;T(c);H(H(c,E(3809)),b);a.cwk=Q(c);c=new S;T(c);H(H(c,E(4112)),b);a.cwm=Q(c);c=new S;T(c);H(H(c,E(4113)),b);a.cif=Q(c);c=new S;T(c);H(H(c,E(3808)),b);a.cie=Q(c);c=new S;T(c);H(H(c,E(4114)),b);a.cig=Q(c);},ZX=a=>{let b=new CE3();EIi(b,a);return b;},ATr=a=>{let b,c,d,e,f,g,h,i,j,k,l,m,n;b=new Oy;c=K(C7,3);d=c.data;e +=a.cE4;f=a.cwl;g=a.cif;h=Ce(E(4115));i=Ce(E(4116));j=CDT();k=K(C7,4);l=k.data;l[0]=DZ(g,h);m=new B4P;h=Ce(E(4117));g=DZ(f,j);n=h.bNX;h=g.bNX;g=Dev();Blo(g,CvE(n,h));Blo(g,h);AAG(m,g);l[1]=m;l[2]=Ce(E(4118));l[3]=DZ(e,i);d[0]=DP(k);d[1]=Ba$(a.cE5,a.cwk,a.cie);i=a.cE6;j=a.cwm;m=a.cig;e=Ce(E(4115));g=Ce(E(4116));h=CDT();n=Ce(E(4118));k=K(C7,5);l=k.data;l[0]=DZ(j,h);l[1]=n;l[2]=DZ(m,e);l[3]=n;l[4]=DZ(i,g);d[2]=DP(k);QL(b,c);return b;},A1n=(a,b)=>{let c,d,e;if(b.Ob(a.cif)===null){if(b.Ob(a.cie)===null){if(b.Ob(a.cig) +!==null){c=CZ(b.Ob(a.cig));d=CuE(b.Ob(a.cwm));return Bip(CZ(b.Ob(a.cE6)),d,c);}return null;}c=CZ(b.Ob(a.cie));e=CZ(b.Ob(a.cwk));return AMm(CZ(b.Ob(a.cE5)),e,c);}c=CZ(b.Ob(a.cif));d=CuE(b.Ob(a.cwl));return Bip(CZ(b.Ob(a.cE4)),d,c);}; +function CC2(){If.call(this);this.bVB=null;} +let Zd=a=>{let b;b=new CZW;b.b_B=a;b.cii=(-1);CAo(b);return b;}; +function CgM(){F.call(this);this.cM_=null;} +let DJd=(a,b,c)=>{let d;d=a.cM_.c5H;return T1(CWv(d,c),CWv(d,b));}; +function Die(){let a=this;F.call(a);a.bS_=0;a.b0E=0;a.cyX=0;a.b89=0;a.b8V=null;} +let D96=a=>{return a.bS_>=a.b89?0:1;},EPJ=a=>{let b,c;B3x(a);b=a.bS_;if(b!=a.b89){a.b0E=b;c=a.b8V;a.bS_=b+1|0;return c.cf(b);}c=new Kx;X(c);J(c);},Duv=a=>{let b,c,d;if(a.b0E!=(-1)){B3x(a);a.b8V.dK(a.b0E);b=a.b0E;c=a.bS_;if(b{let b,c;B3x(a);b=a.bS_-1|0;if(b<0){c=new Kx;X(c);J(c);}a.bS_=b;a.b0E=b;return a.b8V.cf(b);},EYO=a=>{return a.bS_;},EIM=a=>{return a.bS_-1|0;},B3x=a=>{let b;if(a.cyX!=a.b8V.bHh){b=new Nr;X(b);J(b);}}; +function Dds(){let a=this;F.call(a);a.cw8=null;a.csw=null;a.cKF=0;} +let D9u=a=>{let b,c,d;b=a.cw8.bMr.p();c=BY(a.csw);d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},Dpa=(a,b,c,d)=>{return ARA(a.cw8,b,c,d);}; +function CN6(){let a=this;F.call(a);a.cXY=null;a.cDD=null;a.cK2=null;a.cmQ=0;a.cjj=0;} +let Cmf=N(),DpM=null,B52=()=>{B52=Z(Cmf);EYm();},EYm=()=>{let b,c;Hb();b=Ca((Dp4.b2()).data.length);c=b.data;DpM=b;c[ANo.bGO]=1;c[KF.bGO]=2;c[KD.bGO]=3;c[A7r.bGO]=4;c[AUv.bGO]=5;c[A7q.bGO]=6;c[AUb.bGO]=7;c[IO.bGO]=8;c[A4C.bGO]=9;c[L8.bGO]=10;c[ALN.bGO]=11;c[Bao.bGO]=12;c[AYM.bGO]=13;},AWI=N(),CQz=null,Ew4=null,Bp0=()=>{Bp0=Z(AWI);EI_();},CJw=a=>{Bp0();},EI_=()=>{let b,c;b=new CfN;CJw(b);CQz=b;c=Fd(2);Ce2(c,32);b=new DdM;CJw(b);b.daG=c;Ew4=b;},B0m=N(DR); +function C4$(){F.call(this);this.c8k=null;} +function C5b(){let a=this;F.call(a);a.dcF=null;a.dcE=null;} +let BPn=N(0); +function B5q(){let a=this;F.call(a);a.bPd=null;a.bXx=null;a.csB=0;a.bL9=0;} +let DV7=(a,b,c)=>{CW8(a,b,c,0);},M0=(a,b)=>{let c=new B5q();DV7(c,a,b);return c;},CW8=(a,b,c,d)=>{if(b!==null){a.bPd=b;a.bXx=c;a.csB=d;a.bL9=0;return;}b=new F2;X(b);J(b);},AVX=(a,b,c)=>{let d=new B5q();CW8(d,a,b,c);return d;},JO=a=>{let b,c,d;if(a.bXx!==null){a:{b=a.bPd.bGI.length;c=a.bL9;if(c=b)break a;if(In(a.bXx,Bn(a.bPd,c),0)==(-1))return 1;c=c+1|0;}}}return 0;}d=new F2;X(d);J(d);},H5=a=>{let b,c,d,e;if(a.bXx!==null){a:{b=a.bL9;c=a.bPd.bGI.length;if(b=0)break;if(In(a.bXx,Bn(a.bPd,b),0)<0)break;b=b+1|0;}a.bL9=b;if(d>=0)break a;else{a.bL9=b+1|0;while(true){d=a.bL9;if(d>=c)break;if(In(a.bXx,Bn(a.bPd,d),0)>=0)return B_(a.bPd,b,a.bL9);a.bL9=a.bL9+1|0;}return CC(a.bPd,b);}}if(In(a.bXx,Bn(a.bPd,a.bL9),0)<0){a.bL9=a.bL9+1|0;while(true){d=a.bL9;if(d>=c)break;if(In(a.bXx,Bn(a.bPd,d),0)>=0)return B_(a.bPd,b,a.bL9);a.bL9=a.bL9+1|0;}return CC(a.bPd,b);}e=a.bPd;b=a.bL9;a.bL9=b+1|0;return QO(Bn(e,b));}}e=new Kx;X(e);J(e);}e=new F2;X(e);J(e);},TB +=N(EN); +function Cg7(){F.call(this);this.cmW=null;} +let Fss=(a,b,c)=>{let d,e,f,g,h,i,j,k;Jl(a);try{a:{b:{c:{d=new Dlr;d.b1w=BD(65536);BDA();e=Dja.data;f=b.cKu;switch(e[f.bGO]){case 1:break b;case 2:JU(d,120);JU(d,30);BQO(a.cmW,b,c,d);g=1;h=0;i=0;while(true){e=c.data;j=e.length;if(i>=j)break;j=DO(j,i+1024|0);while(i>24&255)<<24>>24);JU(d,(h>>16&255)<<24>>24);JU(d,(h>>8&255)<<24>>24);JU(d,(h&255)<<24>>24);break a;case 3:break;default:break c;}BQO(a.cmW,b,c,d);break a;}b=new Bt;d=BY(f);f +=new S;T(f);H(H(f,E(4119)),d);Bp(b,Q(f));J(b);}e=c.data;JU(d,31);JU(d,(-117));JU(d,8);JU(d,0);JU(d,0);JU(d,0);JU(d,0);JU(d,0);JU(d,2);JU(d,3);BQO(a.cmW,b,c,d);BtH();g=(-1);k=0;h=e.length;while(k>>8|0);k=k+1|0;}i=g^(-1);JU(d,(i&255)<<24>>24);JU(d,(i>>8&255)<<24>>24);JU(d,(i>>16&255)<<24>>24);JU(d,(i>>24&255)<<24>>24);JU(d,(h&255)<<24>>24);JU(d,(h>>8&255)<<24>>24);JU(d,(h>>16&255)<<24>>24);JU(d,(h>>24&255)<<24>>24);}return d;}finally{G2(a);}}; +function Dav(){let a=this;F.call(a);a.ctY=0;a.c1s=null;a.cKu=null;} +let A7H=N(Bx),A_v=null,BqE=null,BQ$=null,CGC=null,A55=()=>{A55=Z(A7H);EB1();},DyB=(a,b,c)=>{A55();Ct(a,b,c);},BNK=(a,b)=>{let c=new A7H();DyB(c,a,b);return c;},EB1=()=>{let b,c,d;A_v=BNK(E(4120),0);BqE=BNK(E(4121),1);b=BNK(E(4122),2);BQ$=b;c=K(A7H,3);d=c.data;d[0]=A_v;d[1]=BqE;d[2]=b;CGC=c;},A$Y=N(Bx),A8m=null,Bus=null,BXR=null,CoH=null,A72=()=>{A72=Z(A$Y);Fha();},Eoh=(a,b,c)=>{A72();Ct(a,b,c);},B3N=(a,b)=>{let c=new A$Y();Eoh(c,a,b);return c;},Fha=()=>{let b,c,d;A8m=B3N(E(2842),0);Bus=B3N(E(4123),1);b=B3N(E(3549), +2);BXR=b;c=K(A$Y,3);d=c.data;d[0]=A8m;d[1]=Bus;d[2]=b;CoH=c;}; +function Bne(){let a=this;H3.call(a);a.c2_=0;a.bUP=null;a.bJZ=null;a.c0v=null;a.b7d=null;a.cXa=null;a.cIp=null;a.b1B=null;a.c3C=0;a.cvw=0;a.crS=0;a.cAV=null;a.b4d=null;a.b4a=null;a.cbN=null;a.bU9=null;a.cpR=0;a.bXL=null;a.c02=0;a.ccC=null;a.cIw=null;} +let Dfg=0,B8B=()=>{B8B=Z(Bne);E58();},YL=(a,b,c)=>{return B4_(a,b,c,B4(Cf(a),c));},B4_=(a,b,c,d)=>{let e;e=Buq(a,c);if(e===null){e=new BKr;ABp();CWm(e,b,AE1,c,d,a.ccC,0,B1(a.bGM),C_S(a));BDN(a,e);b=a.b7d;c=a.bXL;C9(b,e,c);}return e;},Buq=(a,b)=>{let c,d;c=Br(a.bUP);while(true){if(!Bq(c))return null;d=Bm(c);if(Bj(d.bQo,b))break;}return d;},DlJ=(a,b,c,d,e,f)=>{let g;if(Buq(a,d)===null){if(FQ(e))e=B4(Cf(a),d);g=Duw(b,c,d,e,a.ccC,f,B1(a.bGM),C_S(a));BDN(a,g);b=a.b7d;c=a.bXL;C9(b,g,c);return g;}b=new Bt;X(b);J(b);},C_S +=a=>{let b,c;b=a.cIp;b.b5U=b.b5U+1|0;c=b.bYi;b.bYi=c+1|0;b=new S;T(b);BE(H(b,E(4124)),c);return Q(b);},BDN=(a,b)=>{let c,d;c=0;while(true){d=a.bUP;if(c>=d.bGJ)break;if(b.cEm<(Be(d,c)).cEm){Ik(a.bUP,c,b);return;}c=c+1|0;}U(d,b);},C_O=(a,b)=>{return Buq(a,b)===null?0:1;},BRc=(a,b)=>{let c,d;if(b.b2c){c=a.bJZ.bGJ-1|0;a:{b:{while(c>=0){if(Be(a.bJZ,c) instanceof T$)break b;c=c+(-1)|0;}d=null;break a;}d=Be(a.bJZ,c);}b.cFl=d;}c=a.c3C+1|0;a.c3C=c;d=new S;T(d);BE(H(d,E(4125)),c);b.c7U=Q(d);a.b1B=b;a.cAV=null;U(a.bJZ, +b);d=a.b4a;if(d!==null){if(!b.Rs(d.bLO)){b=BY(a.b4a.bLO);d=new S;T(d);Bb(H(H(d,E(4126)),b),34);return B5(Q(d));}CDv(b,a.b4a);a.b4a=null;}return By();},BLB=(a,b,c)=>{let d,e,f,g;if(c){d=a.bJZ;e=d.bGJ;if(e>0){d=Be(d,e-1|0);if(d instanceof Tg){f=new ARr;d=d;g=Bk();f.b7M=g;U(g,d);U(f.b7M,b);b=a.bJZ;GJ(b,b.bGJ-1|0,f);return;}if(d instanceof ARr){U(d.b7M,b);return;}}}U(a.bJZ,b);},Dl0=a=>{return a.bJZ;},DNy=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;But(a.cIp,1);d=new DgG;e=a.cXa;f=new C2o;f.bY5=E9();d.cmO= +f;d.bVj=Bdb(c,a.bGM,Cf(a));d.b1a=a;d.ctr=e;g=new BMB;e=B4h();h=e;f=B$J(h,0.0);i=B4h();j=d.b1a.bUP.dX();while(j.dY()){k=j.dZ();l=DKf(k,Fck(d.b1a,k),d.ctr,DDZ(d),f,Dl0(d.b1a));EIv(d.cmO,k,l);f=N8(QC(l,d.bVj),0.0);}f=BHf(d.bVj,d.cmO,d.ctr,d.b1a.bGM,e,i);m=new CjC;m.bQ1=E9();e=AJ5(Z$(f.bN0.bY5));n=e;while(Gl(n)){a:{o=ALw(e);k=(K3(f.bN0,o)).cTo;if(k!==null){j=new A3E;EIs(j);while(k!==null){l=new BdD;l.bZk=k;p=j.bWo;l.bPS=p;if(p===null)j.bUj=l;else p.bRv=l;j.bWo=l;j.bHh=j.bHh+1|0;j.bO$=j.bO$+1|0;k=k.cgD;}j=j.dX();while +(true){if(!j.dY())break a;p=j.dZ();q=FW(m.bQ1,p);if(q===null){r=m.bQ1;q=new CGm;k=f.bNl.cp();q.ccR=Bk();q.b0p=B$(p);q.cYo=k;q.bOl=B$(f);q.c2i=r;Es(m.bQ1,p,q);}k=q.ccR;l=B$(o);U(k,l);}}}}d.chR=m;l=d.bVj;j=(Gc(m.bQ1)).dX();while(j.dY()){k=j.dZ();s=(CyI(k)).RE(k.bOl.bJ$);t=(A$T(k)).bL$.RG();u=(s+10.0-((QC(A7x(k),l)).RG()-t))/2.0;if(u>0.0){Bl1(A$T(k),u);BqQ(A7x(k),u);}}p=(Gc(m.bQ1)).dX();while(p.dY()){n=p.dZ();e=CUX(n);k=CGX(A$T(n),l);o=ClG(n.bOl.bN0,A$T(n));o=o!==null?QC(o,l):n.bOl.bOY;u=10.0+e.bIv;e=EK(o,u);B3_(k, +e);}e=(Gc(m.bQ1)).dX();while(e.dY()){EA3(e.dZ(),l);}e=EKG(d.b1a,d.chR,f);FsV(d.cmO,d.bVj);EFS(e);ByM(h);ByM(i);EBD(f,e);Ccy(g,e);d.bZS=g;d.c4Y=EM0(g,d.bVj);u=DOl(d.chR,d.bVj);d.cla=u;d.ck_=u!==0.0?10.0:0.0;return DDm(d,b,c);},CRI=a=>{if(!CZE(a.b4d))return E90(a.b4d);return null;},NW=(a,b,c,d)=>{return Doh(a,b,c,d,null);},Doh=(a,b,c,d,e)=>{let f,g,h;if(a.cAV===null){f=new SR;g=AAA(d,e);f.c6A=B1(a.bGM);f.bLO=b;f.bSw=c;f.cBR=g;U(a.bJZ,f);Hy();if(c!==AOb){g=a.b1B;if(g!==null){if(g.R0(b)){a:{if(c===Ri){d=a.b1B;if +(d instanceof T$){c=a.b4d;d=d;EiE(c,d);break a;}}if(c===PX&&!CZE(a.b4d))ECS(a.b4d);}h=a.b1B.Rt(f);c=a.b1B;if(c instanceof T$)f.b1C=c;if(!h){d=b.bQo;b=new S;T(b);H(H(b,E(4127)),d);return Q(b);}return null;}return null;}if(c===Ri){c=AAA(d,e);b.cmT=b.cmT+1|0;U(b.c69,c);return null;}if(!b.cmT)return E(4128);return null;}a.b4a=f;return null;}return E(4129);},Ben=a=>{let b,c,d,e,f,g,h;b=a.bU9;if(!b.b8m)b=null;else{c=b.b9R;d=b.cmU;e=c.bYG;if(e.bGJ==1&&!c.cHH.bGJ)c=Bjp(d,Be(e,0));else{d=new S;T(d);f=0;while(true){g +=c.bYG;if(f>=g.bGJ)break;H(d,Be(g,f));g=c.cHH;if(f{let c,d,e;c=Gp(Buq(a,b),b);d=AZx(a.bUP,c);if(Df()&&!Dfg&&!d){b=new C4;X(b);J(b);}BDN(a,c);b=a.b7d;e=a.bXL;C9(b,c,e);},Fck=(a,b)=>{return DG(a.b7d,b);},Cy_=a=>{return a.c02;},CmN=(a,b)=>{U(a.bJZ,b);},EpE=a=>{return a.bUP.bGJ?0:1;},Fqe=a=>{let b,c,d,e;if(a.c2_) +{b=Br(E2(a.bUP));while(Bq(b)){c=Bm(b);d=Br(a.bJZ);a:{b:{while(Bq(d)){if((Bm(d)).R0(c))break b;}e=1;break a;}e=0;}if(e){if(!AZx(a.bUP,c)){c=new Bt;X(c);J(c);}A7k(a.b7d,c);}}}return null;},ACC=(a,b)=>{let c,d,e,f;c=Jt(Jt(a.bU9.cfU,E(1655),E(14)),E(4130),E(14));d=Bk();e=Br(b.bIc);while(Bq(e)){f=Bm(e);if(CB(f.p(),E(4131)))f=Jt(f.p(),E(4131),c);U(d,f);}return AVM(b.bMJ,d,b.bSH,b.bNJ,b.bMn);},E58=()=>{Dfg=0;},BsQ=N(0),BsF=N(0),BOQ=null,BkH=()=>{BkH=Z(BsF);D5g();},D5g=()=>{BOQ=new C32;},DjR=N(0); +function AU6(){let a=this;H3.call(a);a.cnv=null;a.cj$=null;a.cIR=null;a.b9a=null;a.cEt=null;a.cEs=null;a.bUV=null;a.cuC=0;a.cbk=null;a.b9q=null;a.b6d=null;a.chZ=0;a.b0R=null;} +let Djv=null,BCY=0,A__=()=>{A__=Z(AU6);DuX();},Bf6=(a,b)=>{a.bY6=b;E9B(a,b);},BnR=(a,b,c,d,e)=>{let f,g;A__();RU(a,b,c,d,e);a.cnv=Bk();a.cj$=G$();a.cIR=Bk();a.b9a=Bk();a.cEt=A6U(0);a.cEs=A6U(0);a.bUV=Bk();a.cbk=Bk();a.b0R=null;b=new CzM;b.b2M=E(4132);b.crx=Bk();b.b9u=Dy();f=Drk(b,null,E(14));b.c_E=f;a.b9q=b;a.b6d=f;d=new AB2;e=null;g=null;b=null;F7();DeO(d,e,g,f,a,b,Bp2,0);b=a.bUV;c=a.b6d.bG5;U(b,c);},DYF=(a,b)=>{let c;a.b0R=null;But(a.cEs,0);b=a.bUV;c=b.bGJ;if(c>1)CTM(LV(b,1,c));},GH=a=>{let b,c;b=a.bUV.bGJ +-1|0;while(true){if(b<0){c=new BP;X(c);J(c);}c=Be(a.bUV,b);if(c instanceof AB2)break;b=b+(-1)|0;}return c;},BOj=a=>{let b;b=a.bUV;b=Be(b,b.bGJ-1|0);if(b instanceof BO8)return b;return null;},E8=(a,b)=>{if(b===null)return null;return Dl(b);},D_p=(a,b)=>{return;},ED=(a,b,c,d,e,f)=>{let g,h,i,j,k;B$(e);if(c.bG5===null){if(!FQ(d)){g=a.cj$;h=B$(e);Cy();if(h===ACO){i=new B8Y;BmR();B0J(i);i.ch9=E9();}else if(B$(e)===ANr)i=new CSa;else{h=a.bGM;if(!AJn(e)&&e!==PI)i=C5G(h);else{i=new BKY;A_g();B0J(i);if(e!==ACO){i.b5C +=B$(e);if(Df()&&!BSI&&!AJn(e)&&e!==PI){b=new C4;X(b);J(b);}i.cmz=g;}else{b=new Bt;X(b);J(b);}}}h=new AB2;j=B1(a.bGM);k=a.chZ;AOT();BEl(h,j,b,B$(c),a,i,k);h.bHD=e;i.R8(h);h.ck3=f;a.b0R=h;h.b6t=BOj(a);a.R9(h);h.bH1=d;if(AJn(e))CHE(a,b);return h;}b=new Bt;X(b);J(b);}b=new BP;X(b);J(b);},DA=(a,b,c)=>{return Mr(AYD(a,b,c));},AYD=(a,b,c)=>{let d,e,f,g,h,i,j;d=a.bY6;if(d!==null){if(Dr(c,d))e=1;else{f=new S;T(f);H(H(f,d),d);e=!CB(c,Q(f))?0:1;}if(!e){g=(GH(a)).bH4;if(!BO(c,d)){e=IZ(c,d);if(e!=(-1)){f=a.b6d;h=B_(c,0, +e);if(DnH(f.bYQ)&&CB(h,f.bYQ.b2M)){c=new Bt;X(c);J(c);}h=FW(f.b8U,h);i=h===null?0:1;if(i){f=h.bG5;if(f!==null&&!Hh(f)){c=B_(c,0,e);f=new S;T(f);H(H(f,E(4133)),c);return ALG(Q(f));}}if(i)return FV(AGF(a.b6d,c));return FV(AGF(g,c));}if(b&&EO9(a,c)==1){j=AU9(a,c);if(Df()&&!BCY&&j===null){c=new C4;X(c);J(c);}if(j!==g)return FV(j);}return FV(AGF(g,c));}return FV(AGF(a.b6d,CC(c,d.bGI.length)));}c=new S;T(c);H(H(H(c,E(4134)),d),E(4135));return BWv(null,Q(c),3);}f=AU9(a,c);if(f===null)return FV(AGF((GH(a)).bH4,c));return FV(f);},Clj +=(a,b)=>{let c;if(!Bj(E(2768),a.bY6)){c=AID(b,E(2768));if(c!=(-1))return B_(b,0,c);return b;}return b;},C0W=(a,b)=>{let c;if(!Bj(E(2768),a.bY6)){c=AID(b,E(2768));if(c!=(-1))return CC(b,c+2|0);return null;}return null;},D6x=(a,b)=>{return Rk(b);},CHE=(a,b)=>{let c,d,e;c=Br(Bsx(a));while(Bq(c)){d=Bm(c);if(d.bG5!==null)continue;if(C8t(d)>0){e=B4(Cf(a),d.bHL);F7();(B67(a,b,d,Kw)).bH1=e;}}},So=(a,b,c,d,e)=>{return AOn(a,b,c,d,e,null);},AOn=(a,b,c,d,e,f)=>{let g,h;if(c.bG5===null){g=B67(a,b,c,e);g.b6t=BOj(a);g.bH1 +=d;}b=c.bG5;h=b;h.bWr=e;h.bHD=null;if(f!==null)h.ck3=f;c=a.bUV;b=b;U(c,b);return By();},X5=a=>{let b,c;b=a.bUV;c=b.bGJ;if(c>0){EJ(b,c-1|0);return 1;}return 0;},Dqc=(a,b)=>{let c;c=AU9(a,b);if(c!==null)return c.bG5;return null;},COv=(a,b)=>{let c;c=AU9(a,b);if(c===null)return 0;return B5$(a,c);},B5$=(a,b)=>{let c;c=b.bG5;if(c===null)return 0;return Hh(c);},CZu=a=>{let b,c,d,e,f;b=Bk();c=(a.Sg()).dX();while(c.dY()){d=c.dZ();if(!(!BO(d,E(1805))&&!BO(d,E(1806))&&!BO(d,E(2660))))U(b,d);}c=Cf(a);IY();c=T6(c,Be$);if +(c!==null){c=KG(c,44,46);d=new S;T(d);Bb(H(H(d,E(4136)),c),59);d=Q(d);U(b,d);}e=T6(Cf(a),Bez);if(e!==null){c=new S;T(c);Bb(H(H(c,E(4137)),e),59);d=Q(c);U(b,d);}f=K(Bi,b.bGJ);return WW(b,f);},DUs=(a,b,c)=>{let d;CHE(a,null);if(!(!Due(a)&&!(Ewn()?1:0))){d=new Bjm;A_i();Df_(d,a,AOt(a));}else{d=new BOD;DaL(d,a,AOt(a));}if(d instanceof BOD){if(!(!(!!globalThis.__plantumlVizInstance?1:0)&&Fe(CPK("Viz is not loaded: this diagram type needs the Graphviz layout engine (viz-global.js). Load viz-global.js before rendering.")) +===null))b=1;else{B_7();b=0;}if(!b){c=new Dd;Bp(c,E(56));J(c);}}return d.Sl(a.Sg(),c);},BcR=b=>{A__();return Kr(D3(Djv,b));},A$z=a=>{let b,c;b=Cf(a);IY();if(AB3(b,APz)){c=T6(Cf(a),APz);if(BcR(c))return c;}if(AB3(Cf(a),AZv)){c=T6(Cf(a),AZv);if(BcR(c))return c;}return E(4138);},A9r=a=>{let b,c;b=Cf(a);IY();if(AB3(b,AVb)){c=T6(Cf(a),AVb);if(BcR(c))return c;}if(AB3(Cf(a),A5w)){c=T6(Cf(a),A5w);if(BcR(c))return c;}return E(4139);},A3d=(a,b)=>{let c,d,e;c=(BdV(b.bH4)).dX();a:{b:{while(c.dY()){d=(c.dZ()).bG5;if(!BYg(b.bOU, +d))break b;}e=1;break a;}e=0;}return e;},Frd=(a,b,c)=>{let d,e,f;if(AIc(a.bGM)){HN();if(b===ASl)return 0;}d=1;e=Br(a.cnv);while(Bq(e)){f=Bm(e);if(f.cx7===b&&f.cAK.IG(c))d=f.cso;}return d;},Ekd=(a,b)=>{let c,d,e,f,g,h;if(b.bGZ!==null){c=Bk();d=b.bGZ;F_();b=(T0(d,Hl)).dX();while(b.dY()){e=b.dZ();f=1;g=Br(a.cnv);while(Bq(g)){d=Bm(g);h=d.cx7;HN();if(h!==AAT)continue;h=d.cAK.Sq();if(!(h!==null&&!Bj(h,e)))f=d.cso;}if(f)U(c,e);}return c;}return null;},Bol=(a,b,c,d)=>{let e,f,g;e=P2(DiK(c));while(OD(e)){f=Pr(e);c=a.cnv;g +=new DfE;g.cAK=b;g.cx7=f;g.cso=d;U(c,g);}},Dma=(a,b,c)=>{let d,e;b=Cjm(a,b);d=a.cIR;e=C4i(b,c);U(d,e);},D_F=(a,b,c)=>{let d,e;b=Cjm(a,b);d=a.b9a;e=C4i(b,c);U(d,e);},Cjm=(a,b)=>{let c,d,e;c=a.bY6;if(c!==null){d=(GH(a)).bH4;if(d.bJ1.bGI.length>0){d=d.bJ1;e=new S;T(e);H(H(H(e,d),c),b);b=Q(e);}}return b;},CPD=a=>{let b,c,d,e,f,g,h,i,j,k;b=CIR();c=Bk();d=Br(Bsx(a));while(Bq(d)){e=(Bm(d)).bG5;if(e!==null&&Hh(e))U(c,e);}e=c.dX();while(e.dY()){f=e.dZ();d=Bk();g=(Pw(f)).dX();while(g.dY()){h=g.dZ();i=(K6(a)).dX();a:{b: +{while(i.dY()){j=i.dZ();if(j.bHn===h)break b;if(j.bHo===h)break b;}k=1;break a;}k=0;}if(k)U(d,h);}if(d.bGJ<3)continue;g=new C8S;f=new H6;FU();h=Hf;Mo(f,h,h);g.caa=C_1(f);g.cey=a;g.bTL=d;f=new CGU;f.b_X=g;CP0(new BZb,d,f);CL5(b,g);}e=c.dX();while(e.dY()){f=e.dZ();c=CIR();h=Br(b.cnp);while(Bq(h)){d=Bm(h);if(CnO(d)===f)CL5(c,d);}d=c.cnp;if(d.bGJ<3)continue;f=new CER;f.c9A=c;CP0(new BZb,d,f);}},Dxq=a=>{return 0;},EfG=(a,b,c,d)=>{let e;e=new C1C;e.cQo=b;e.cQn=c;e.cR7=d;b.b3$=e;c.b3$=e;return By();},ElY=a=>{return Bfr(a.cEt, +1);},Ui=(a,b)=>{let c,d;c=Bfr(a.cEt,1);d=new S;T(d);BE(H(d,b),c);return Q(d);},EBQ=(a,b)=>{let c,d,e,f,g;c=0;d=Br(a.b9a);while(Bq(d)){e=Bm(d);if(!(BO(e.bQk,E(1775))&&Dr(e.bQk,E(1776))))f=0;else{g=e.bQk;f=CEp(e,b,Dk(B_(g,2,g.bGI.length-2|0)));}if(f)c=e.cfG?0:1;}return c;},Dew=(a,b)=>{let c,d,e;if(!KX(b)){c=CV8(a,b);if(c!==null&&c!==b)return Dew(a,c);d=0;e=Br(a.cIR);while(Bq(e)){d=B6V(Bm(e),d,b);}if(!d&&DjU(a,b))d=1;return d;}return 0;},BYg=(a,b)=>{let c,d,e;if(!KX(b)){c=CV8(a,b);if(c===null){d=0;e=Br(a.b9a);while +(Bq(e)){d=B6V(Bm(e),d,b);}if(!d&&DjU(a,b))d=1;return d;}return BYg(a,c);}return 0;},DjU=(a,b)=>{let c,d,e;c=b.bHD;Cy();if(c===AWe){d=(K6(a)).dX();a:{while(d.dY()){c=d.dZ();if(!UY(c,b))continue;e=ANk(c,b);if(e!==b){if(Qq(e))break a;if(AT8(e))break a;}}return 0;}return 1;}return 0;},CV8=(a,b)=>{let c,d,e;c=b.bHD;Cy();if(c===Ok){if(Df()){A__();if(!BCY&&b.bHD!==Ok){b=new C4;X(b);J(b);}}d=null;c=(K6(a)).dX();while(c.dY()){e=c.dZ();if(BS6(L1(e)))continue;if(!UY(e,b))continue;if(d!==null)return null;d=ANk(e,b);if(d.bHD +===Ok)return null;}return d;}return null;},DZA=(a,b)=>{let c,d,e;c=0;d=Br(a.b9a);while(Bq(d)){e=Bm(d);if(!CA_(e))c=B6V(e,c,b);}return c;},B67=(a,b,c,d)=>{let e,f;B$(d);e=c.bG5;if(e===null){f=C5G(a.bGM);return Fhz(B1(a.bGM),b,c,a,f,d,a.chZ);}return e;},Bpj=a=>{let b,c,d,e;b=Bk();c=Br(Bsx(a));while(Bq(c)){d=Bm(c);if(ANv(d))continue;e=d.bG5;if(e!==null&&!Hh(e))U(b,e);}return b;},B6$=a=>{let b,c,d,e;b=Bk();c=Br(Bsx(a));while(Bq(c)){d=Bm(c);if(ANv(d))continue;e=d.bG5;if(e!==null&&Hh(e))U(b,e);}return b;},K6=a=>{return a.cbk;}; +let IS=(a,b)=>{let c,d;if(b.ctO){c=Br(a.cbk);a:{b:{while(Bq(c)){if(A1P(b,Bm(c)))break b;}d=0;break a;}d=1;}if(d)return;}U(a.cbk,b);},A3l=(a,b)=>{if(!AZx(a.cbk,b)){b=new Bt;X(b);J(b);}},Bsx=a=>{let b,c,d;b=Bk();c=a.b9q.crx.dX();while(c.dY()){d=c.dZ();U(b,d);}return b;},AOt=a=>{return a.b6d.bG5;},E9B=(a,b)=>{let c;c=a.b9q;if(b===null)b=E(4132);c.b2M=b;},AU9=(a,b)=>{b=DG(a.b9q.b9u,b);return b!==null?b.cSw:null;},EO9=(a,b)=>{b=DG(a.b9q.b9u,b);return b!==null?b.cqp:0;},DuX=()=>{BCY=0;Djv=Dp(E(4140));},AKZ=N(AU6),EeU +=a=>{let b,c,d;b=Bv(BB(Bi,[E(4141),E(4142),E(4143),E(4144)]));c=Cf(a);IY();if(AB3(c,A1g)){c=T6(Cf(a),A1g);d=E2(b);U(d,c);return d;}return b;},CQS=a=>{let b,c,d,e,f,g,h,i,j,k,l;b=a.bY6;if(b===null)b=E(423);while(true){c=0;d=(B6$(a)).dX();while(d.dY()){a:{e=d.dZ();if(e.bYt)f=0;else if(AUe(e)!=1)f=0;else if((Pw(e)).dV())f=0;else{g=(K6(e.bOU)).dX();b:{while(true){if(!g.dY())break b;if(UY(g.dZ(),e))break;}f=0;break a;}if(AUe(((Rk(e)).dX()).dZ()))f=1;else f=0;}}if(f){g=((Rk(e)).dX()).dZ();h=BY(Ne(e.bH1,0));i=new S;T(i);H(H(i, +h),b);j=Q(i);k=g.bH1;h=AEj(k.bMJ,k,k.bMn);l=h.bIc;i=BY(Be(l,0));k=new S;T(k);H(H(k,j),i);GJ(l,0,Q(k));g.bH1=h;e.bYt=1;c=1;}}if(!c)break;}}; +function A2Z(){AKZ.call(this);this.chG=null;} +let DkF=0,BBS=()=>{BBS=Z(A2Z);Fja();},B2x=(a,b,c)=>{let d,e,f,g;d=K6(a);e=d.dV()-1|0;while(true){if(e<0)return null;f=d.cf(e);g=f.bHn;if(b===g&&c===f.bHo?1:!(b===f.bHo&&c===g)?0:1)break;e=e+(-1)|0;}return f;},DI2=(a,b,c,d,e,f,g,h)=>{let i,j,k,l,m,n,o;i=BDf(a,c,d);j=BDf(a,e,f);if(!i.bGJ&&!j.bGJ){j=a;k=Ui(j,E(4145));l=Ui(j,E(4145));m=AGF((GH(a)).bH4,k);n=B4(Cf(a),E(14));Cy();n=ED(a,b,m,n,ACF,null);o=ED(a,b,AGF((GH(a)).bH4,l),B4(Cf(a),E(14)),ACF,null);CG4(a,b,c,d,n);CG4(a,b,e,f,o);IS(j,KE(b,a,B1(a.bGM),n,o,g,AHE(h, +1)));return By();}return B5(E(4146));},CG4=(a,b,c,d,e)=>{let f,g,h,i,j,k;f=B2x(a,c,d);if(f!==null)A3l(a,f);else{f=new NZ;g=B1(a.bGM);h=new H6;FU();i=Hf;Mo(h,i,i);O3(f,b,a,g,c,d,h,KY(2));}j=f.b3A;i=!j?f.bHn:f.bHo;h=!j?f.bHo:f.bHn;k=KE(b,a,B1(a.bGM),i,e,BEx(L1(f)),Xq(VF(AHE(XF(f),M2(f)),ATc(f),null),AVq(f),AVI(f)));k.bWG=A5c(f);g=KE(b,a,B1(a.bGM),e,h,B0S(L1(f)),Xq(VF(KY(M2(f)),null,ATs(f)),AVq(f),AVI(f)));b=a;IS(b,k);IS(b,g);},Dq1=(a,b,c,d,e,f,g,h)=>{let i,j,k;i=BDf(a,d,e);j=i.bGJ;if(j<=1){if(j){if(Df()&&!DkF +&&i.bGJ!=1){b=new C4;X(b);J(b);}e=Be(i,0);k=CCK(e.bJK,b,c,e.bUm,e.bSr,f);k.bIB=e.bIB;k.b9m=e;if(M2(e.bIB)==1){Bef(e.b3p,2);Bef(e.b8d,2);Bef(e.bWC,1);}FdL(k,b,g,h);U(a.chG,k);return 1;}k=CCK(a,b,c,d,e,f);FmL(k,b,c,g,h);U(a.chG,k);return 1;}return 0;},BDf=(a,b,c)=>{let d,e,f,g;d=Bk();e=Br(a.chG);while(Bq(e)){f=Bm(e);g=f.bUm;if(g===b&&f.bSr===c?1:!(g===c&&f.bSr===b)?0:1)U(d,f);}return d;},Duf=(a,b)=>{let c;c=GH(a);if(!KX(c)){A40(c);c.cgF=b;return;}a.b_q=b;},Fja=()=>{DkF=0;}; +function B0x(){let a=this;A2Z.call(a);a.cQK=0;a.cDv=0;} +let DMz=a=>{let b,c,d,e;b=(K6(a)).dX();while(b.dY()){a:{c=b.dZ();if(M2(c)==1){d=(K6(a)).dX();while(true){if(!d.dY())break a;e=d.dZ();if(A1P(e,c)&&M2(e)!=1)Bef(e,1);}}}}c=Cf(a);IY();if(DsK(c,A97))CQS(a);CPD(a);return null;},Dml=(a,b)=>{let c,d;c=b.bH4.bP$;while(!ANv(c)){d=c.bG5;if(d!==null&&!Hh(d)){d=b.bH4.bJ1;b=new S;T(b);H(H(b,E(4147)),d);return B5(Q(b));}c=c.bP$;}return By();}; +function CfY(){let a=this;AU6.call(a);a.bUJ=null;a.cU$=null;a.b8H=null;} +let BHx=(a,b)=>{let c,d;c=DA(a,1,E(230));if(c.bG5===null){d=B4(Cf(a),E(230));Cy();ED(a,b,c,d,AGi,null);}return c.bG5;},EiJ=(a,b)=>{let c;if(b!==null){c=b.bHD;Cy();if(c!==Ok){a.bUJ=b;if(c===AOF)a.cU$=b;return;}}},EwG=a=>{return Bv(BB(Bi,[E(4148),E(4149),E(4143),E(4150)]));},E7M=(a,b)=>{a.bUJ=b;},BZ9=N(AKZ),Z_=(a,b)=>{if(b!==null){if(BO(b,E(2694)))b=ES(CC(b,2));if(BO(b,E(82))&&Dr(b,E(2940)))return B_(b,1,b.bGI.length-2|0);if(BO(b,E(864))&&Dr(b,E(2938)))return B_(b,1,b.bGI.length-2|0);return E8(a,b);}return null;},Edv +=a=>{let b,c,d,e,f,g;Cy();b=O9;c=(Bpj(a)).dX();a:{b:{while(c.dY()){d=c.dZ();e=d.bHD;f=Mt(d);if(e===Wd)break b;if(f===AH2(Vj(a.bGM)))break b;}g=0;break a;}g=1;}if(!g){F$();d=AAP;}else d=AH2(Vj(a.bGM));f=(Bpj(a)).dX();while(f.dY()){e=f.dZ();if(e.bHD===AQX)BDv(e,b,d);}},EtL=a=>{let b;b=Cf(a);IY();if(DsK(b,A97))CQS(a);CPD(a);return null;}; +function BJW(){AKZ.call(this);this.cru=0;} +let C5f=0,Bou=()=>{Bou=Z(BJW);D6Q();},E1T=a=>{Jx();return Dsr(JB,WY,ABo);},Cfn=(a,b)=>{let c,d,e;b=b.bG5;if(b===null)c=1;else{d=b;e=HR(GH(a));F7();c=e===N2&&GH(a)!==Ja(d)?0:!(Ja(d)!==null&&HR(Ja(d))===N2&&GH(a)!==Ja(d))?1:0;}return c;},BwG=a=>{let b;b=HR(GH(a));F7();if(b===N2)X5(a);return X5(a);},EwX=(a,b)=>{a.cru=b;},DQW=a=>{return a.cru;},EcK=a=>{let b,c,d,e,f;b=(K6(a)).dX();a:{while(b.dY()){c=b.dZ();d=CwG(c.bHn);e=CwG(c.bHo);if(d===null&&e===null)f=1;else if((d===null?0:1)^(e===null?0:1))f=0;else{if(Df() +&&!C5f){if(d===null)break a;if(e===null)break a;}f=d!==e?0:1;}if(!f){b=En(c.bHn);c=En(c.bHo);d=new S;T(d);Bb(H(H(H(H(d,E(4151)),b),E(2464)),c),41);return Q(d);}}return null;}b=new C4;X(b);J(b);},CwG=b=>{let c,d;Bou();c=Ja(b);while(true){if(c===null)return null;d=HR(c);F7();if(d===N2)break;c=Ja(c);}return c;},D6Q=()=>{C5f=0;}; +function Crp(){let a=this;H3.call(a);a.b_4=null;a.bJg=null;a.cvX=0;} +let RV=a=>{if(a.b_4===null){APZ();a.b_4=A5P;}},Djj=(a,b,c,d)=>{let e,f,g;if(a.b_4===null){APZ();a.b_4=B1r;}e=a.b_4;APZ();if(e!==A5P){e=a.bJg;f=(U7(e)).dX();a:{b:{while(true){if(!f.dY())break b;g=f.dZ();if(Bj(g.cJH,b))break;}break a;}g=CHd(b,e.b9C.bGJ,e.cgz);U(e.b9C,g);}e.bJW=g;if(c!==null){CM();b=C6;g.cnk=Lg(g.cnk,b,c);}if(!FQ(d))e.bJW.cFI=d;return By();}return B5(E(4152));},Rn=(a,b)=>{a.bJg.cxA=b;},EF=a=>{return a.bJg.cxA;},Kq=a=>{return a.bJg.cim;},BKu=(a,b,c,d,e)=>{let f,g,h,i,j;f=N6(e,a.bGM.bGN);RV(a);g +=new BX0;h=Kq(a);i=a.bJg.bJW;e=AAV(e);j=Vt(a);AFR(g,i);g.coB=0;g.c7u=e;g.cYV=d;g.cV6=c;g.c6a=b;g.cOk=B$(h);g.c4l=B$(f);g.c2r=j;i=(EF(a)).JX(g);if(OI(i)){Lb(a,FF());CoG(a,b);if(d!==null)a.cvX=1;return By();}return i;},B91=(a,b)=>{let c,d;if(EF(a) instanceof BrW){c=WI(EF(a));if(c instanceof AKt){d=c;if(!Cua(d)){d.cCB=b;return 1;}return 0;}return 0;}return 0;},DAy=(a,b,c)=>{let d;d=a.bJg;ML();c=C7m(Nb,d);c=C7m(AKg,c);d=new Db$;d.cHu=c;return d;},BHk=(a,b,c,d,e,f)=>{let g,h,i,j,k,l;RV(a);g=new AUk;h=a.bJg.bJW;i +=EF(a);c=ADY(FF(),c);j=Kq(a);k=a.bGM;AS6(g);g.bTG=Bk();g.cg0=0;g.cHk=FF();g.c6B=e;g.b6C=f;g.cWS=i;g.ddQ=k;g.cIQ=B$(j);g.b8h=h;g.c1k=B1(k);j=g.bTG;l=BXA(h,c,b,d,FF(),f);U(j,l);g.bRK=Be(g.bTG,0);(EF(a)).JX(g);Lb(a,FF());Rn(a,g);},CXg=(a,b,c,d,e)=>{let f,g,h,i;if(EF(a) instanceof AUk){f=EF(a);g=Kq(a);if(f.bNL!==null)h=0;else{AZJ(f.bRK,g,null);i=BXA(f.b8h,d,c,e,b,f.b6C);f.bRK=i;U(f.bTG,i);h=1;}if(h){Lb(a,FF());return By();}return B5(E(4153));}return B5(E(3096));},ChD=(a,b)=>{let c,d,e,f,g;if(EF(a) instanceof AUk) +{c=EF(a);d=Kq(a);AZJ(c.bRK,d,null);if(c.bNL!==null)e=0;else{Cru(c.bRK,d);f=new AYm;g=c.b8h;HW();BzC(f,g,b,Lu,null,FF(),c.b6C);c.bNL=f;c.bRK=f;e=1;}if(e){Lb(a,FF());return By();}return B5(E(3096));}return B5(E(3096));},C69=(a,b,c,d,e,f,g)=>{let h,i;RV(a);if(EF(a) instanceof BsD){h=EF(a);i=ADY(AM6(f),e);e=Kq(a);f=a.bJg.bJW;h.cwr=g;h.cLr=f;h.cAr=B$(b);h.cGu=B$(c);h.cFb=B$(d);h.cCa=e;if(!B5e(i))h.b7Z=i;h.cjU=1;Rn(a,h.csY);Lb(a,FF());return By();}return B5(E(4154));},Df$=(a,b,c,d,e,f)=>{let g,h;RV(a);if(!(EF(a) instanceof BsD)) +{if(EF(a) instanceof AKt){g=EF(a);g.cjI=b;g.c0G=c;g.cfD=d;g.cfC=e;g.cKa=1;g.cZg=f;return By();}return B5(E(4154));}h=EF(a);g=a.bJg.bJW;h.cam=b;h.ct2=g;h.cLF=c;h.b7Z=d;h.cGr=e;h.cP2=f;return By();},Dp2=a=>{if(EF(a) instanceof BFP){Rn(a,(EF(a)).cKl);return By();}return B5(E(4155));},Lb=(a,b)=>{a.bJg.cim=B$(B$(b));},Cne=(a,b)=>{if(EF(a) instanceof AKt&&DmP(EF(a))===null){(EF(a)).cJl=b;return;}Lb(a,ADY(Kq(a),b));},BD5=(a,b)=>{let c,d;if(b!==null){c=AM6(b);B$(c);if(F0(EF(a),AIy)){b=(EF(a)).S2();if(b instanceof AKt) +{b=b;d=c.bLD;b.b6I=CTA(b.b6I,d);}else if(b instanceof AUk)b.cHk=c;}Lb(a,c);return;}},C_w=(a,b,c,d,e,f)=>{if(!(EF(a)).S7(b,c,d,e,a.bJg.bJW,f))return B5(E(4156));CoG(a,b);return By();},CoG=(a,b)=>{let c,d,e;c=new FZ;d=null;FC();Gb(c,d,Bai);b=Xo(b);a:{b:{while(b.dY()){if(Gj(c,(b.dZ()).p())!==null)break b;}e=0;break a;}e=1;}if(e)a.cvX=1;}; +function Cu0(){let a=this;H3.call(a);a.clk=null;a.b1Z=null;} +let EDm=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,$$je;AFA();d=BLT.cyY;e=Bk();f=Br(a.clk);while(Bq(f)){g=Bm(f);if(!Bj(g,E(4157))&&!BO(g,E(1257))){if(BO(g,E(1702)))a.bVi=Ce3(DM(CC(g,E(1702).bGI.length)));else if(!BO(g,E(4158)))U(e,g);else{h=XP(g);while(true){g=Bm(f);h=C45(h,g);if(Bj(g,E(582)))break;}a:{b:{try{Jx();g=JB;B$d(d,a,h,g);break a;}catch($$e){$$je=P($$e);if($$je instanceof J1){break b;}else{throw $$e;}}}}}}}g=new BOJ;BN1();g.cdq=0;g.ce4=Bk();i=Br(e);while(Bq(i)){j=Jt(Jt(Jt(Bm(i),E(607),E(4159)),E(568),E(4160)), +E(613),E(4161));f=AVX(j,E(4162),1);while(JO(f)){h=ES(H5(f));if(Bj(h,E(2054)))continue;if(!JO(f)){R7();j=AFm;}else{R7();j=AFP;}d=DX(C5I,h,0);if(!EZ(d)){BkO(g,h,j);continue;}b=0;while(true){k=Di$(d);if(k>b){l=B_(h,b,k);R7();BkO(g,l,AFP);}b=B$2(d);if(b==h.bGI.length)l=j;else{R7();l=AFP;}BkO(g,B_(h,k,b),l);if(!EZ(d))break;}if(b{let e;e=new CDg;e.cIO=b;e.cJx=c;e=ACo(e,d,1);return W$(c,e.bNf,e.bN2);},EdB=(a,b,c)=>{C9(a.b1Z.cxC,b,c);},CwJ=N(0); +function BVo(){let a=this;H3.call(a);a.bNU=null;a.bPI=null;a.b$H=null;a.b71=null;a.bJ8=null;a.cdu=null;a.cKA=null;a.ciS=null;a.b0V=null;a.crm=0;a.c7t=null;a.cR8=null;a.b1d=null;a.cm5=null;} +let Dm9=null,Btt=()=>{Btt=Z(BVo);DO9();},Fqr=a=>{let b,$$je;a:{b:{try{BZ_(a);if(G5(Eg$(a.bPI),V(7300)))break b;}catch($$e){$$je=P($$e);if($$je instanceof BLx){b=$$je;break a;}else{throw $$e;}}return null;}try{}catch($$e){$$je=P($$e);if($$je instanceof BLx){b=$$je;break a;}else{throw $$e;}}return E(4164);}return b.bW();},Eg4=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q;d=Bdb(c,a.bGM,Cf(a));c=a.bPI;e=c.bVr;if(e===null)BZ_(a);else{c.bKj=e;c.bKW=c.cMv;}a:{e=new CSx;c=a.b71;f=a.bJ8;g=a.bPI;h=a.b$H;i=a.ciS;e.bYN=c;e.bQ_ +=g;e.bTh=f;e.bSK=h;e.bV9=i;if(AFy(g.bKj,AKE())){j=new Cnn;AKk(j,DKr(Big(e),Bmh(e),e.bSK.bS6),e.bYN,e.bTh,e.bQ_,e.bSK,e.bV9);j.bSJ=0;}else if(DfG(e.bTh.cak)){c=e.bTh;k=new B_C;k.chT=c.cak;k.cOy=120.0;k.cN3=0.2;j=new CL8;f=new CCh;g=e.bQ_;l=g.bKj;i=g.bKW;h=c.bNx;f.cO4=l;f.c9F=i;f.ce0=k;f.czX=h;AKk(j,f,e.bYN,c,g,e.bSK,e.bV9);j.c01=k;}else{b:{c:{d:{e:{BNr();m=CVH.data;f=e.bSK;c=f.bS6;switch(m[c.bGO]){case 1:break b;case 2:j=new CFH;AKk(j,Bx5(e),e.bYN,e.bTh,e.bQ_,e.bSK,e.bV9);break a;case 3:break e;case 4:break d;case 5:break c;default:}d +=new BP;c=BY(c);e=new S;T(e);H(H(e,E(4165)),c);Bp(d,Q(e));J(d);}j=new C53;AKk(j,Bx5(e),e.bYN,e.bTh,e.bQ_,e.bSK,e.bV9);break a;}j=new CTq;AKk(j,Bx5(e),e.bYN,e.bTh,e.bQ_,e.bSK,e.bV9);break a;}j=new CMJ;AKk(j,Bx5(e),e.bYN,e.bTh,e.bQ_,e.bSK,e.bV9);break a;}j=new Cwt;if(!f.cjC)h=C1i(Big(e),B2f(e),Bmh(e),e.bQ_.bVr);else{h=new CL0;n=Big(e);c=B2f(e);o=Bmh(e);g=e.bTh.bNx;f=Dy();h.cql=f;h.csV=n*o;h.cL3=c;h.cuL=c;h.cU8=g;g=CL(0);C9(f,c,g);}AKk(j,h,e.bYN,e.bTh,e.bQ_,e.bSK,e.bV9);}}c=new CLA;e=a.bPI;f=a.bNU;g=a.cKA;h=a.cdu;i +=a.ciS;p=a.b71.cg_;c.cyM=a;c.cbS=e;c.caN=f;c.bXb=g;c.cm8=h;c.cvC=i;c.cll=j;l=new CFh;DOi(g,d,j,f,h,e,i);l.cvY=0.0;n=j.bHC.Ts(EA(e.bKj));l.cl_=j.bHC.Ts(XB(EA(e.bKW),1))-n;o=0.0;q=(Td(f)).dX();while(q.dY()){k=q.dZ();if(Bvu(e,k))continue;k=AD1(g,k);if(k===null)continue;o=BC(o,k.Tv(d,l.cl_));}l.cs3=l.cl_+o;l.cLE=j.Tw(d);l.cAS=!h.chg?0.0:j.Tx(d);l.cYx=AZ9(g)+l.cAS;c.bZx=l;c.coX=DLx(f,e,g,i,j.TA(d),p,d,DZP(a));return c;},BZ_=a=>{let b,c,d,e,f;a:{b=a.bPI;c=a.bNU;d=a.bJ8;if((Td(c)).j())b.bKW=b.bKj;else{b.bKW=null;c +=(Td(c)).dX();while(true){if(!c.dY())break a;e=c.dZ();if(e instanceof AVp)continue;if(e instanceof BbP)continue;e=B6l(e.Ql());f=b.bKW;if(!(f!==null&&It(f,Jj(e))>=0))b.bKW=Jj(e);}}}c=(DgW(d)).dX();while(c.dY()){e=c.dZ();if(It(Jj(e),b.bKW)>0)b.bKW=Jj(e);}c=((AIH(d)).p3()).dX();while(c.dY()){d=c.dZ();if(It(Jj(d),b.bKW)>0)b.bKW=Jj(d);}},AYt=(a,b)=>{let c;c=Vt(a);B8();return B0(c,CG(XQ,b));},Byr=(a,b,c)=>{let d;d=Vt(a);B8();return B0(d,AIf(XQ,BB(Cn,[b,c])));},Dji=(a,b,c)=>{if(c.bGI.length)BM8(Bss(a.bJ8,c),b);else BM8(a.bJ8.bNx, +b);},CSe=(a,b,c)=>{if(c.bGI.length)BIW(Bss(a.bJ8,c),b);else BIW(a.bJ8.bNx,b);},AF9=(a,b)=>{let c;c=AT7(B$(b));return COr(a.bNU,c);},BSn=(a,b,c)=>{let d,e;d=new ADe;Lf();ALU(d,b,Oq);c.TI(Z8(d));e=Cs3(OY(a),B1(a.bGM),d,Bq9(c,O1));AVC(a,e);return e;},BQk=(a,b,c)=>{let d,e,f,g;d=COr(a.bNU,B$(b));if(d===null){e=null;if(c){d=E2(Td(a.bNU));c=d.bGJ-1|0;a:{b:{while(c>=0){if(Be(d,c) instanceof BlI)break b;c=c+(-1)|0;}e=null;break a;}e=Be(d,c);}}d=new BlI;f=B1(a.bGM);g=EA(a.bPI.bKj);c=a.crm;B39(d,f,b);d.b5x=UJ();d.cdN +=PZ(Bo(AAH));d.bZa=E9();d.c1F=a;d.cma=c;f=new B3j;BBd();f.bT7=E9();d.b6G=f;Cl4(d,g);Coj(d,A2d(Db6(a,1)));f=a.b1d;if(f!==null)Dd4(f,d);BU$(a.bNU,b,d);if(e!==null)BSn(a,e,d);}return d;},AVC=(a,b)=>{U(a.bNU.cGS,b);},AKN=a=>{return a.bPI.bKj;},BZZ=a=>{return EA(a.bPI.bKj);},B8G=a=>{let b,c,d,e;b=a.bJ8.bNx;c=7;d=(C$A(b.bRt)).dX();while(d.dY()){e=d.dZ();TN();if(e===Zk)c=c+(-1)|0;}return c;},C0R=(a,b)=>{let c;c=FW(a.bNU.cnd,b);if(c===null){c=new CjD;c.bZy=BtD();c.b0t=b;}Es(a.bNU.cnd,b,c);return c;},Dnt=(a,b,c)=>{let d;d +=a.bJ8;b=EA(b);C9(d.cl3,b,c);},CG2=(a,b,c)=>{let d;d=a.b71;d.c1w=b;d.cV$=c;},B5M=(a,b)=>{EQ(a.bJ8.cCl,b);},OY=a=>{return a.ciS.bSt;},Db6=(a,b)=>{let c,d,e,f,g,h,i,j;c=a.bJ8.cak;if(!DfG(c))c=Bla(V(b));else{c=CDk(c);d=V(b);if(DS(d,BH)){Qi();c=ARV;}else if(D4(d,V(1))){a:{c=Bjw(BBD(AUR(c.bN6),ANL(V(c.bSe),9)),AUR(d));Qi();d=CE(V(c.bHQ),V(9));if(ABG(c)){e=BH;if(G5(d,e))e=d;f=DfW(e);}else if(FE(d,BH))f=c.bKA<64?ANL(c.bK$,Bck(d)):AMp(Kt(c),Bck(d));else{d=LF(d);g=A9F.data;if(GR(d,V(g.length))){b=c.bKA;h=Bzs.data;i= +Cp(d);if((b+h[i]|0)<64){f=ANL(CT(c.bK$,g[i]),0);break a;}}f=AMp(Dim(Kt(c),V(Cp(d))),0);}}c=CRe(f);if(BJj===null)BJj=L3(V(1000000000));g=(AJR(c,BJj)).data;if(A4g(g[0])>63){f=new KZ;c=BY(c);j=new S;T(j);H(H(j,E(4166)),c);Bp(f,Q(j));J(f);}c=Bmc(AEm(g[0]),V(A8Y(g[1])));}}return c;},DZP=a=>{return E2(a.cm5);},DO9=()=>{Dm9=Dp(E(4167));}; +function DgI(){let a=this;H3.call(a);a.b8q=null;a.cn_=0;a.b1W=null;} +let D_y=(a,b,c)=>{c=new CWc;c.cJC=a;return c;},C46=(a,b,c,d,e)=>{return BG6(a,b,c,d,e,a.cn_);},Bi$=a=>{let b;b=a.b8q;return Be(b,b.bGJ-1|0);},BG6=(a,b,c,d,e,f)=>{let g,h,i,j;HW();g=BVC;h=d.bIc;g=DX(g,Be(h,h.bGJ-1|0),0);i=!O7(g)?null:FD(CU(g,2));if(i!==null){g=BVC;h=d.bIc;g=DX(g,Be(h,h.bGJ-1|0),0);if(O7(g)){h=E2(d.bIc);j=h;GJ(j,j.bGJ-1|0,CU(g,1));d=AVM(d.bMJ,h,d.bSH,d.bNJ,d.bMn);}}if(Ca9(Bi$(a),c)){j=a.b8q;g=BM$(a.bGM);U(j,g);}return CQK(Bi$(a),i,b,c,d,e,f);}; +function B02(){let a=this;H3.call(a);a.cjr=null;a.bYx=null;a.b3s=null;a.b$G=null;a.cre=null;} +let CW1=null,Ddx=0,A64=()=>{A64=Z(B02);EWL();},Epo=(a,b,c)=>{return a;},DZ8=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;b=b.h2(Bh(10.0,10.0));c=null;if(b instanceof AWC)c=b.bSM;d=CJm(a);CdF(d,b.hE());e=b.hE();f=d.ccX.cF(e);g=f.bGF;h=g+20.0;i=g+40.0;j=f.bGE;f=d.bZA;if(!f.bGJ){d.ccX.cC(b);k=j/2.0;AHm(d,b,k,g,k,h);}else{l=0.0;k=((Be(f,0)).TV(e)).bGK;m=Br(d.bZA);n=k;while(Bq(m)){f=Bm(m);n=l+(f.TV(e)).bGK;AHm(d,b,n,h,n,i);f.cC(b.h2(Bh(l,i)));l=l+(f.cF(e)).bGE+20.0;}o=QE(n,k);if(o>0){AHm(d,b,k,h,n,h);l=k+(n-k-j)/2.0;} +else{if(Df()&&!Cd3&&o){b=new C4;X(b);J(b);}l=((De(d,e)).bGE-j)/2.0;AHm(d,b,k,h,l+j/2.0,h);}d.ccX.cC(b.h2(BM(l)));k=l+j/2.0;AHm(d,b,k,g,k,h);}if(c!==null){b=b.h2(BQX(c));d=Br(a.cre);while(Bq(d)){c=Bm(d);f=c.cSV;e=c.cSW;p=f.cz9;m=e.cz9;f=f.czd;q=e.czd;if(p!==null&&m!==null){e=AOd(p.bHj,p.bHu,f.bGE,f.bGF);f=AOd(m.bHj,m.bHu,q.bGE,q.bGF);q=ADU(BVP(e),By1(e),BVP(f),By1(f));e=CaH(e,q);f=CaH(f,q);e=AQp(e,f);c=b.h2(c.c5e);(c.h2(Bh(e.bQN,e.bM_))).hP(EB(e.bSp-e.bQN,e.bSo-e.bM_));Da2(CTu(f,Nz(e.bSo-e.bM_,e.bSp-e.bQN)), +c);}}}},Ep$=(a,b)=>{return FO(De(CJm(a),b),20.0,20.0);},CJm=a=>{let b,c,d,e,f;b=new BMX;c=a.bGM;d=a.cjr;BP7();C1T(b,BBV(d,c),d);b.bZA=Bk();b.c_y=20.0;b.c$l=40.0;if(!d.b34){b.ccX=Cia(b,d);DC();d=(BQU(d,Gy)).dX();while(d.dY()){e=d.dZ();f=b.bZA;e=BRV(c,e);U(f,e);}return b;}b=new Bt;X(b);J(b);},CCa=(a,b,c,d,e,f,g)=>{let h,i;A64();h=DX(CW1,e,0);i=null;if(O7(h)){e=CU(h,1);i=CU(h,2);}return B2P(a,b,c,d,B4(Cf(a),e),FD(i),f,g);},B2P=(a,b,c,d,e,f,g,h)=>{let $$je;a:{b:{try{if(!d)break b;b=E0h(a,b,c,d,e,f,g,h);}catch($$e) +{$$je=P($$e);if($$je instanceof LI){break a;}else{throw $$e;}}return b;}c:{try{if(a.cjr!==null)break c;E7$(a,c,e,f,h);b=By();}catch($$e){$$je=P($$e);if($$je instanceof LI){break a;}else{throw $$e;}}return b;}try{b=B5(E(4168));}catch($$e){$$je=P($$e);if($$je instanceof LI){break a;}else{throw $$e;}}return b;}return B5(E(3677));},E7$=(a,b,c,d,e)=>{let f,g;f=new B5w;g=B1(a.bGM);CfS(f,b,0,c,d,null,e,g);a.cjr=f;a.bYx=f;},Exr=(a,b)=>{let c,d;c=a.bYx;d=0;while(d{let c,d,e;if +(a.cjr!==null){b=KG(b,9,32);if(CB(b,E(344))){if(!Dr(b,a.b3s)){if((Dk(b)).bGI.length!=1){if(!BO(b,a.b3s)){c=new BV;d=a.b3s;e=new S;T(e);Bb(H(H(H(H(e,E(3269)),b),E(3270)),d),93);Bp(c,Q(e));J(c);}return b.bGI.length-a.b3s.bGI.length|0;}return b.bGI.length-1|0;}return b.bGI.length-a.b3s.bGI.length|0;}return b.bGI.length-1|0;}if(Df()){A64();if(!Ddx&&a.b3s!==null){b=new C4;X(b);J(b);}}a.b3s=b;return 0;},E0h=(a,b,c,d,e,f,g,h)=>{let i,$$je;a:{b:{try{if(d!=(BRa(a.bYx)+1|0))break b;i=DmE(a.bYx,c,d,e,f,g,h,B1(HB(a)));a.bYx +=i;if(b!==null)Es(a.b$G,b,i);b=By();}catch($$e){$$je=P($$e);if($$je instanceof LI){break a;}else{throw $$e;}}return b;}c:{try{if(d<=BRa(a.bYx))break c;b=B5(E(4169));}catch($$e){$$je=P($$e);if($$je instanceof LI){break a;}else{throw $$e;}}return b;}d:{try{i=DmE(Exr(a,(BRa(a.bYx)-d|0)+1|0),c,d,e,f,g,h,B1(HB(a)));a.bYx=i;if(b===null)break d;Es(a.b$G,b,i);break d;}catch($$e){$$je=P($$e);if($$je instanceof LI){break a;}else{throw $$e;}}}try{b=By();}catch($$e){$$je=P($$e);if($$je instanceof LI){break a;}else{throw $$e;}}return b;}return B5(E(3677));},EWL +=()=>{Ddx=0;CW1=Dm(E(4170));}; +function B1j(){let a=this;H3.call(a);a.bQG=null;a.bLb=null;a.b1H=null;a.bTU=null;a.bUl=null;a.dcp=5.0;} +let CIw=null,Btx=()=>{Btx=Z(B1j);EFy();},VY=a=>{let b,c;b=0;while(true){c=a.bTU;if(b>=c.bGJ)break;if(Be(c,b) instanceof Bl7)return Be(a.bTU,b);b=b+1|0;}return null;},ANa=a=>{let b;b=a.bTU;if(b.bGJ>0&&Be(b,0) instanceof BeW)return Be(a.bTU,0);return null;},El7=a=>{let b,c;if(!a.bLb.bGJ)A6W(AMH(a,E(14)));b=(Gc(a.bQG)).dX();while(b.dY()){c=b.dZ();BMH(c,Be(a.bLb,0));A7d(a.bUl,c.bQL);}},AMH=(a,b)=>{let c,d,e,f;c=new Bl7;d=a.bUl;e=d.coE.bGJ;f=!e?null:C9K(d,e-1|0);d=a.bUl;d=C9K(d,d.coE.bGJ);c.bZG=1;c.c2A=f;c.cxL=b;c.cto +=d;U(a.bLb,c);return c;},CPE=b=>{let c,d,e,f;Btx();c=Dy();if(b!==null){d=D3(CIw,b);while(GW(d)){e=El(d,1);f=El(d,3)!==null?El(d,3):El(d,2);C9(c,e,f);}return c;}return c;},Fig=(a,b,c)=>{c=new CGa;c.cJQ=a;return c;},DgA=(a,b,c)=>{let d,e;if(c!==null){d=new S;T(d);b=H(d,b);Bb(b,57600);H(b,c);b=Q(d);}d=B1(a.bGM);CV();c=A5b;B8();e=D0(B0(d,CG(Bmt,c)),a.bGM.bGN);c=B4(Cf(a),b);B3();return C_(c,e,Ft,new Sz);},CYD=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;b=b.h2(Bh(5.0,5.0));c=b.hE();d=0.0;e=0.0;f=a.bUl;g=a.b1H;h +=Gc(a.bQG);i=Br(g);while(Bq(i)){g=Bm(i);j=h.dX();while(j.dY()){k=j.dZ();if(BTH(g,k)){if(g.cfP===null)g.cfP=CQI();l=g.cfP;m=k.bQL.cb2;if(m!==l){AZx(f.bZU,m);if(!Nw(f.bZU,l))U(f.bZU,l);k=k.bQL;k.cb2=l;Dpp(l,k);}}}}i=new CUn;f=a.bLb;n=f.bGJ;o=a.bQG.bHv;g=a.b1H;i.b1p=a.bGM;j=new Dph;j.b8N=BMZ(BWT,[o,n]);i.bJE=j;i.cN0=g;i.c3R=f;f=a.bUl;j=Cft();g=Br(f.bZU);while(Bq(g)){Dnb(j,Bm(g));}p=Dy();q=((C$n(j)).dW()).dX();while(q.dY()){g=q.dZ();f=g.d0();n=(g.d1()).bHl;f=((C$n(f.cgP)).dW()).dX();while(f.dY()){g=f.dZ();j=g.d0();g +=CL(n+(g.d1()).bHl|0);C9(p,j,g);}}o=0;while(o{let c,d;c=Br(a.b1H);while(true){if(!Bq(c))return null;d=Bm(c);if(BTH(d,b))break;}return d;},EFy=()=>{CIw=Dp(E(4171));},C6V=N(0); +function Ctb(){let a=this;H3.call(a);a.deK=5.0;a.cn1=null;a.bPo=null;a.cuY=null;a.cFO=null;a.cml=null;a.bLJ=null;a.bWU=null;a.b6O=null;a.cB9=null;a.bV8=0;a.c5C=null;} +let DGm=(a,b,c)=>{let d;d=new DrV;d.cag=a;return Js(d,10.0,10.0);},Dc1=a=>{B8();return Z5;},CFC=a=>{let b;b=B0(B1(a.bGM),Dc1(a));B9();return (BJ(b,Cz)).cu(a.bGM.bGN);},E3a=(a,b)=>{let c;c=b.hE();(((b.h2(CFC(a))).h2(DrM(a))).h2(BM((-5.0)))).hP(DE(BYd(a,c)));},DrM=a=>{return Fi(B0(Vt(a),Dc1(a)));},B0r=(a,b)=>{return Bqf(a,null,b);},Enu=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=BiV(a,b.hE());d=Br(a.cml);while(Bq(d)){e=Bm(d);f=a.bLJ;g=b.h2(Fi(BNZ(e)));h=e.cyI;CM();i=DQ(h,E1);if(i===null){i=BNZ(e);B9();i=(BJ(i,Cz)).cu(e.cfN.bGN);}g +=g.h2(i);i=Fg(c);j=Ll(f,e.ckZ);k=Ll(f,e.cuh);(g.h2(BM(j))).hP(i);(g.h2(BM(k))).hP(i);k=Ll(a.bLJ,e.ckZ);i=a.bGM;Fs();f=Nu(i,Bd4,null);e=e.c61;B3();(C_(e,f,CF,i)).cC(b.h2(Bh(k+3.0,2.0)));}},BiV=(a,b)=>{return (B0r(a,b)).bHu;},BYd=(a,b)=>{return BRM(a,b)+PN(a.bLJ)+5.0+5.0;},BRM=(a,b)=>{let c,d;c=0.0;d=(Gc(a.bPo)).dX();while(d.dY()){c=BC(c,(AN9(d.dZ())).UB(b));}return c;},EJa=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n;d=c.cGJ.cqQ;e=c.cGI.cqQ;f=b.hE();g=Bqf(a,d,f);h=Bqf(a,e,f);d=(AN9(d)).UC(f,c.cGJ.cEW);i=(AN9(e)).UC(f, +c.cGI.cEW);if(d!==null&&i!==null){f=C_s(d,g);g=C_s(i,h);h=c.cKi;j=a.bGM;d=Bd9(f.b6_,g.b6_,h,j,c);i=Bd9(f.b6_,g.b7a,h,j,c);e=Bd9(f.b7a,g.b6_,h,j,c);k=Bd9(f.b7a,g.b7a,h,j,c);g=B87(B87(d,i),B87(e,k));c=g.bZo;l=c.bGK;f=g.b4X;m=Nz(l-f.bGK,c.bGL-f.bGL);f=b.h2(AKF(g.cmt));b=g.cmt;h=f.h2(b.cny!==null?Fi(Cws(b)):Dw(1.5));b=new SA;f=g.bZo;n=f.bGK;c=g.b4X;A$K(b,n-c.bGK,f.bGL-c.bGL);(h.h2(I3(g.b4X))).hP(b);e=Cjy(g.bZo,m+0.3490658503988659);b=Cjy(g.bZo,m-0.3490658503988659);c=Fj();BQ(c,e.bGK,e.bGL);BQ(c,b.bGK,b.bGL);f=g.bZo;BQ(c, +f.bGK,f.bGL);f=h.h2(Cc(AKF(g.cmt)));f.hP(c);c=g.c6h;h=g.cQZ;B8();i=D0(B0(h,BBI),g.cA_.bGN);B3();c=C_(c,i,CF,g.cA_);m=(e.bGK+b.bGK)/2.0;l=(e.bGL+b.bGL)/2.0;if(g.b4X.bGL{let d,e,f;d=0.0;e=(Gc(a.bPo)).dX();while(true){if(!e.dY()){if(b!==null){b=new Bt;X(b);J(b);}return BW(d);}f=e.dZ();d=d+B3i(f,c);if(b===f)break;d=d+(AN9(f)).UJ(c);}return BW(d);},CmT=(a,b,c)=>{let d,e,f;d=0.0;e=(Gc(a.bPo)).dX();while(true){if(!e.dY()){if(b!==null){b=new Bt;X(b);J(b);}return BW(d);}f +=e.dZ();if(b===f)break;d=d+B3i(f,c)+(AN9(f)).UJ(c);}return BW(d);},C8f=(a,b,c)=>{a.bWU=b;Cq4(a.bLJ,b);if(c!==null)C9(a.cn1,c,b);},Wj=(a,b)=>{return FW(a.bPo,b);},Ce4=(a,b)=>{a.cB9=b;return By();}; +function CAm(){let a=this;H3.call(a);a.cd1=null;a.c4J=null;a.c7s=null;a.cpr=null;a.bRN=null;a.ch4=null;a.bQW=null;a.bTP=null;a.bTT=null;a.cj0=null;a.cj2=null;a.ckv=null;a.ciJ=null;a.chF=null;a.cna=null;} +let Dec=a=>{let b,c,d,e,f,g,h,i,j;b=a.chF;RE();if(b!==Vd){a:{b:{c=a.bRN;if(c!==null){c=c.bST;if(c!==null&&!CQ(c))break b;}c=a.c4J;break a;}c=a.bRN.bST;}return DuQ(a.bGM,a.cd1,c,a.c7s,a.cpr,a.bQW,a.bRN,a.bTP,a.bTT,a.cj0,a.cj2,a.ckv,a.ciJ,a.chF,a.cna);}c=new B77;d=a.bGM;e=a.ch4;f=a.bTP.bST;g=null;h=a.cpr;i=a.bQW;j=a.bRN;B9I(c,d,e,f,g,h,i,j,j,null,a.cj0,a.ckv,a.cj2,a.ciJ,b,a.cna);return c;},E9D=(a,b)=>{a.c7s=b;},Etg=(a,b,c,d)=>{if(b!==null)a.bRN.bST=b;if(c!==null)BNQ(a.bRN,c.bG6);if(d!==null)BIb(a.bRN,d.bG6);return By();},BgT +=(a,b)=>{let c,d,e,f,g;a:{if(Yt(b)){c=b.cbw;Ru();if(c!==ABg&&c!==AEN)return B5(E(4172));if(HH(a.cd1)){d=a.bRN;if(!d.b_K&&d.bID!==d.bIt){if(!HH(a.bQW)&&Yt(Be(a.bQW,0))!=Yt(b))return B5(E(4173));c=Br(b.b2g);while(true){if(!Bq(c)){c=Br(b.b2g);while(Bq(c)){e=(Bm(c)).bG6;Do6(a.bRN,e);}break a;}f=(Bm(c)).bG6;d=a.bRN;g=d.bIt;if(fd.bID)break;}e=d.bID;b=new S;T(b);Bb(D6(H(D6(H(D6(H(b,E(4174)),f),E(4175)),g),E(50)),e),93);return B5(Q(b));}return B5(E(4176));}return B5(E(4177));}if(!HH(a.bQW)&&Yt(Be(a.bQW, +0))!=Yt(b))return B5(E(4173));}b:{U(a.bQW,b);if(b.b0O){d=a.bTT;if(d!==null)break b;}d=a.bTP;}c=Br(b.bSv);while(Bq(c)){Do6(d,(Bm(c)).bG6);}return By();},DJ6=(a,b,c)=>{c=new CGd;c.cDb=a;return c;}; +function B0g(){let a=this;H3.call(a);a.bPB=0;a.b2S=0.0;a.cj1=0.0;a.cGX=0;a.cAm=0;a.cxi=0;a.b4L=null;a.ceD=null;a.ccN=null;a.cpz=null;a.cG6=null;} +let CCZ=0,AN_=()=>{AN_=Z(B0g);FcH();},FrR=(a,b,c)=>{c=new C1y;c.bTi=a;return c;},Flq=a=>{let b,c,d,e,f,g,h,i,j,k,l,m,n,o;if(a.cAm)DfM(a,a.bPB/2|0);b=Bk();c=Bzv(K(AGg,0));d=a.bPB;e=Br(a.ceD);while(true){if(!Bq(e)){if(!HH(c))U(b,c);c=new CA8;c.cVt=a;Dkz(b,c);a.ccN=b;if(!HH(b)){b=BEi(Be(a.ccN,0));c=new CWe;b=b;f=new Cyr;f.c3_=b;f.c8E=c;b=f;c=new Clq;b=b;while(true){f=b.c3_;g=new DhR;g.deM=b;g.c7e=c;if(!BtR(f,g))break;}a.bPB=DO(c.cJp,a.bPB);}h=a.bPB;if(h>=4)h=h/4|0;b=CU9(0,new CpS);i=V(a.bPB+1|0);b=C1a(b,i);c=a.b4L;AF7();if +(c===BrY){b=CU9(a.bPB,new CpR);i=V(a.bPB+1|0);b=C1a(b,i);}c=new CpQ;c.cP4=a;c.cP3=h;b=b;f=new Ddw;f.c2q=b;f.cYD=c;b=DgM();a.cpz=Bh6(f,b);c=DsL(a);B9();a.b2S=(BJ(c,Ov)).oK()*3.0;return null;}g=Bm(e);if(Df()&&!CCZ&&d<=0)break;h=g.b_p;j=h-d|0;if(j>0){k=g.cgR-j|0;f=B8n(g,d,0,1,a.bGM);U(c,f);f=Brl(DjM(j,g.cpn,k,g.cgR,g.clt));}else{f=a.bGM;l=new AGg;j=g.cpn;m=g.clt;Bx7();l.cDJ=0;l.cqb=0;l.cg$=h;l.caY=j;l.b5c=m;l.b2Y=f;U(c,l);f=Ba6();}if(!B_z(f)){d=d-g.b_p|0;if(!d){d=a.bPB;U(b,c);c=Bzv(K(AGg,0));}}else{d=a.bPB;l=b;U(l, +c);c=Bzv(K(AGg,0));f=DkY(f);n=f.b_p;h=n/d|0;n=n%d|0;j=0;while(j0){f=B8n(f,d,1,0,a.bGM);U(c,f);d=d-n|0;}else ((Be(l,l.bGJ-1|0)).cf(0)).cqb=0;}}b=new C4;X(b);J(b);},DCn=(a,b)=>{if(b>0)a.bPB=b;},DfM=(a,b)=>{if(b>0){a.cGX=DO(b,a.bPB);a.cAm=0;}},DJK=(a,b)=>{a.cj1=DT(b,0);},DsL=a=>{let b;if(a.cG6===null){b=B1(a.bGM);B8();a.cG6=B0(b,DdS);}return a.cG6;},Bzv=b=>{let c,d;AN_();c=Bk();Le();d=Bv(b);Ea(c,d);return c;},D9G=(a,b,c)=>{let d,e,f,g,h;d +=c%b|0?0:1;e=c%a.cGX|0?0:1;f=new Ccw;g=DsL(a);h=a.bGM;f.cI9=d;f.cOf=e;f.crn=g;g=new S;T(g);BE(g,c);f.cVm=Q(g);f.cnK=h;return f;},FcH=()=>{CCZ=0;}; +function CqW(){H3.call(this);this.b_Z=null;} +let CFf=(a,b,c,d)=>{let e,f;e=Cf(a);IY();f=AB3(e,BgY);e=Ebo(Dg_(b),f,c,d);if(!(e.bKV.bGJ?0:1)){U(a.b_Z,e);return By();}return B5(E(4178));},BGV=(a,b,c)=>{let d;d=a.b_Z;c=new Dcq;c.dbI=a;c.c1b=b;U(d,c);return By();},EHt=(a,b,c)=>{let d,e;c=a.b_Z;if(c.bGJ){d=(Be(c,0)).UU(a.bGM,a.bUc);e=1;while(true){c=a.b_Z;if(e>=c.bGJ)break;c=(Be(c,e)).UU(a.bGM,a.bUc);B3();d=FT(d,c,CF);e=e+1|0;}return A8w(d,null);}return A8w(ASZ(D0(B0(B1(a.bGM),Byg()),a.bGM.bGN),a.bGM),null);}; +function DdD(){let a=this;H3.call(a);a.bIZ=null;a.bXN=null;a.b56=null;a.b8R=null;a.cQ$=null;} +let Ed4=(a,b,c)=>{let d,e;d=JX(a.bIZ);e=new C$O;e.c4K=a;e.csf=d;return A8w(e,null);},ENY=(a,b)=>{let c,d,e,f,g,$$je;a:{try{c=D6p(a,EYr(Dg_(b)));b=(EQz(DGf(Br(c)))).dX();}catch($$e){$$je=P($$e);if($$je instanceof Zz){d=$$je;break a;}else{throw $$e;}}b:{try{while(b.dY()){c:{e=b.dZ();f=R_(e);JQ();if(f===AVz){HF();Bmd(a,e,YU);break c;}if(R_(e)===ARZ){HF();Bmd(a,e,YU);break c;}if(R_(e)===ARt){DIR(a,e);break c;}if(R_(e)===APC){Cv3(a,AGh(e));break c;}if(R_(e)===AXx){Cv3(a,AGh(e));break c;}if(R_(e)===AVH){DNW(a,AGh(e));break c;}if +(R_(e)===Y4){HF();Bmd(a,e,AHU);break c;}if(R_(e)===ASY){HF();Bmd(a,e,AHU);break c;}if(R_(e)===AW9){D64(a);break c;}if(R_(e)===AIX){EkF(a);break c;}if(R_(e)===Ze&&BO(AGh(e),E(900))){CSp(a);break c;}if(R_(e)===Ze&&BO(AGh(e),E(866))){DP7(a);break c;}if(R_(e)===Ze&&BO(AGh(e),E(336))){CSi(a);break c;}if(R_(e)!==Ze)break b;if(!BO(AGh(e),E(580)))break b;Fve(a,AGh(e));}}}catch($$e){$$je=P($$e);if($$je instanceof Zz){d=$$je;break a;}else{throw $$e;}}return By();}try{J(E9j(BPI(e)));}catch($$e){$$je=P($$e);if($$je instanceof Zz) +{d=$$je;break a;}else{throw $$e;}}}g=d.bRf;b=new S;T(b);H(H(b,E(4179)),g);return B5(Q(b));},D6p=(a,b)=>{let c,d,e,f,g,h,i,j;c=Bk();d=Br(b);while(Bq(d)){e=Bm(d);f=c;g=f.bGJ;if(g>0){h=(Be(f,g-1|0)).bTd;i=e.bTd;JQ();if(B1t(h))j=0;else{b=AIX;j=h===b?0:i===b?0:i===Ze?0:h===Yp?0:i!==AUX?1:0;}if(j)U(f,Fro(AW9,E(14)));}U(f,e);}return c;},Bmd=(a,b,c)=>{let d,e;d=a.bIZ;e=Cdv(b.cbI,c,a.bXN,a.b56,a.b8R,a.bGM,a.bUc.bWf);EY(d,e);},DIR=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=b.cbI;d=Bk();e=0;while(e{let c,d,e,f,g,h;c=Fp(a.bIZ);d=a.bIZ;e=new CkM;f=a.bXN;g=a.b56;h=a.b8R;Vo(e);e.c9V=4.0;e.c9W=8.0;e.c8F=6.0;e.cMu=g;e.cer=c;e.db_=f;e.cKT=h;e.cck=N1(b,f);EY(d,e);},DNW=(a,b)=>{let c,d,e,f,g,h;c=Fp(a.bIZ);d=a.bIZ;e=new CZ6;f=a.bXN;g=a.b8R;h=a.bGM;Vo(e);e.c90=10.0;e.daY=10.0;e.daZ=10.0;e.c9S=h;e.ccb=c;e.c1W=f;e.cMS=g;e.cFq=N1(b,f);EY(d,e);},CSp=a=>{let b,c,d;b=Fp(a.bIZ);c=a.bIZ;d=Ddz(b,a.bGM);EY(c,d);},CSi=a=>{let b,c,d;b=Fp(a.bIZ);c=a.bIZ;d=BeS(b,a.bGM);EY(c,d);},DP7=a=>{let b, +c,d;b=Fp(a.bIZ);c=a.bIZ;d=B09(b);EY(c,d);},Fve=(a,b)=>{let c,d,e,f,g,h;c=CX4(b);d=BCf(b);e=Eq(d,44);f=e==(-1)?0:(Dk(CC(d,e+1|0))).bGI.length?0:1;f=!(!f&&Cm7(b))?1:0;if(!c&&f){CSp(a);return;}if(!c){if(Cm7(b)!=1){g=CJJ(Fp(a.bIZ),b,AQ1(a.bXN,(-2.0)),a.bGM);b=a.bIZ;d=BeS(g,a.bGM);EY(b,d);return;}CSi(a);return;}g=Fp(a.bIZ);h=a.bIZ;d=CJJ(g,b,AQ1(a.bXN,(-2.0)),a.bGM);EY(h,d);},BCf=b=>{if(Dr(b,E(336)))b=B_(b,0,b.bGI.length-1|0);if(BO(b,E(580))&&Dr(b,E(582)))b=B_(b,1,b.bGI.length-1|0);return b;},CX4=b=>{let c,d,e,$$je;c +=BCf(b);d=Eq(c,44);if(d!=(-1))c=B_(c,0,d);e=Dk(c);if(e.bGI.length){try{d=CZ(e);}catch($$e){$$je=P($$e);if($$je instanceof Ex){return (-1);}else{throw $$e;}}return d;}return 0;},Cm7=b=>{let c,d,e,$$je;c=BCf(b);d=Eq(c,44);if(d!=(-1)){e=Dk(CC(c,d+1|0));if(e.bGI.length){try{d=CZ(e);}catch($$e){$$je=P($$e);if($$je instanceof Ex){return (-1);}else{throw $$e;}}return d;}return (-1);}return CX4(b);},EkF=a=>{let b,c,d,e;b=Fp(a.bIZ);c=Fp(a.bIZ);if(b instanceof AVr){b.Vj(c);EY(a.bIZ,b);}else if(c instanceof AVr){c.Vj(b);EY(a.bIZ, +c);}else{d=B$S();e=d;A9o(e,b);A9o(e,c);EY(a.bIZ,d);}},D64=a=>{let b,c,d,e,f,g,h,i;b=Fp(a.bIZ);c=Fp(a.bIZ);if(Bxo(a,b)&&Bxo(a,c)){d=b;e=c;b=a.bIZ;c=CqO(e,d);EY(b,c);return;}f=b instanceof A0c;g=!f?0:Bxo(a,Cpq(b));if(g&&Bxo(a,c)){h=b;d=Cpq(h);b=CqO(c,d);GJ(h.bSD,0,b);EY(a.bIZ,h);return;}if(f){b.Vj(c);EY(a.bIZ,b);}else{i=Ci9();h=i;A3r(h,b);A3r(h,c);EY(a.bIZ,i);}},Bxo=(a,b)=>{let c;if(b instanceof A_t){c=b.cnI;HF();return c!==YU?0:1;}return 0;}; +function B_D(){F.call(this);this.dew=null;} +let B_F=N(),CCx=N(0); +function DqW(){let a=this;F.call(a);a.c0i=null;a.b4Q=null;} +let Cm3=a=>{return BVx(a)===null?0:1;},Clk=a=>{BVx(a);return 0;},BVx=a=>{let b,c,d,e;b=a.c0i.cLf;c=0;if(BO(a.b4Q,E(21)))c=1;a:{b:{while(c{let d;d=a.Vn(b,c);if(!(d<=0.0)){if(d>4.0)return 4.0;return d;}return 1.0;}; +function CXt(){QB.call(this);this.cL6=0.0;} +let EeD=(a,b)=>{a.cL6=b;},Ce3=a=>{let b=new CXt();EeD(b,a);return b;},DxS=(a,b,c)=>{return a.cL6;}; +function C_C(){let a=this;QB.call(a);a.cS_=0.0;a.cPW=0.0;} +let Ead=(a,b,c)=>{return Eh(a.cS_/b,a.cPW/c);}; +function CiP(){QB.call(this);this.c03=0.0;} +let E87=(a,b,c)=>{return a.c03/c;}; +function CNg(){QB.call(this);this.c4_=0.0;} +let DLi=(a,b,c)=>{return a.c4_/b;}; +function C0H(){QB.call(this);this.cTx=0.0;} +let EzJ=(a,b,c)=>{let d;d=a.cTx/b;if(d>1.0)return 1.0;return d;}; +function CWt(){QB.call(this);this.c5J=0.0;} +let D36=(a,b,c)=>{let d;d=a.c5J/c;if(d>1.0)return 1.0;return d;}; +function C5K(){let a=this;QB.call(a);a.cVM=0.0;a.c0b=0.0;} +let D_X=(a,b,c)=>{let d;d=Eh(a.cVM/b,a.c0b/c);if(d>1.0)return 1.0;return d;}; +function Bzm(){let a=this;AE_.call(a);a.cls=0;a.bUp=null;} +let CMr=N(),C3B=null,BCF=()=>{BCF=Z(CMr);FlW();},FlW=()=>{let b,c;Op();b=Ca((CJ0.b2()).data.length);c=b.data;C3B=b;c[ANV.bGO]=1;c[ADn.bGO]=2;c[Rb.bGO]=3;c[UZ.bGO]=4;}; +function Do(){let a=this;F.call(a);a.cn5=null;a.cJO=null;a.b9o=null;} +let CLf=null,A4t=()=>{A4t=Z(Do);Fcu();},Ke=(a,b,c)=>{A4t();JY(a,b,null,c);},FwH=a=>{let b,c,d;b=BY(a.cn5);c=AUI(Dg(a.b9o));d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},JY=(a,b,c,d)=>{A4t();a.cn5=b;a.cJO=c;a.b9o=d;},Fxw=(a,b,c)=>{return a.b9o.Vo(b,c.cQe);},Eii=(a,b)=>{let c,d,e;ADp(b);c=Y9(a.cn5.cAJ,b);d=Va(c);if(d.bGI.length){Hq(b,d.bGI.length);ADp(b);d=a.cJO;if(d!==null){Hq(b,(Va(Y9(d,b))).bGI.length);ADp(b);}d=Y9(a.b9o.KK(),b);e=Va(d);if(e.bGI.length){Hq(b,e.bGI.length);b=new C6L;b.c$A=c;b.cQe=d;return b;}b +=new BP;X(b);J(b);}b=new BP;X(b);J(b);},CdH=(a,b)=>{let c,d;c=B1e(b.b3t,b.bWX,b.bZ3,b.b6D);d=Va(Y9(a.cn5.cAJ,c));if(d.bGI.length){Hq(c,d.bGI.length);ADp(c);b=a.cJO;if(b!==null){Hq(c,(Va(Y9(b,c))).bGI.length);ADp(c);}if(!(Va(Y9(a.b9o.KK(),c))).bGI.length)return 0;return 1;}return 0;},ADp=b=>{A4t();Hq(b,(Va(Y9(CLf,b))).bGI.length);},Fcu=()=>{CLf=Ce(E(3902));}; +function CwM(){F.call(this);this.cx8=null;} +let BY9=(a,b)=>{let c,d,e,f,g;c=0.0;d=0.0;e=a.cx8.cGn.dX();while(e.dY()){f=e.dZ();A7o();g=b.gS(Gk(BcL),f);d=d+g.bGF;c=BC(c,g.bGE);}return Cl(c,d);}; +function CwN(){F.call(this);this.cgr=null;} +let DgP=(a,b)=>{A7o();return b.gS(Gk(BpM),a.cgr.cph);},Dm$=N(),CtO=null,BPb=()=>{BPb=Z(Dm$);E6r();},E6r=()=>{let b,c;Ii();b=Ca((Caa.b2()).data.length);c=b.data;CtO=b;c[AXc.bGO]=1;c[AWn.bGO]=2;c[AT1.bGO]=3;c[ATM.bGO]=4;c[AQw.bGO]=5;c[APc.bGO]=6;}; +function CXP(){FA.call(this);this.ddO=null;} +function CIS(){let a=this;FA.call(a);a.cRo=null;a.cZd=null;} +let Djh=b=>{if(!(b instanceof Wl)){if(!(b instanceof Su)){b=new Bt;X(b);J(b);}return CsO(b);}return BeQ(b);}; +function BNf(){let a=this;F.call(a);a.cR5=null;a.cR4=null;a.cQj=null;a.cQk=null;a.cBK=null;a.cyx=0;a.cqs=null;a.cqr=null;a.cJU=null;a.ci_=null;a.cyP=null;a.cyO=null;a.cT0=null;a.cfQ=null;a.clD=null;a.clE=null;a.cX9=null;a.cBu=null;a.cBv=null;a.cXj=null;a.ck4=null;a.ck5=null;a.cPD=null;a.c2P=null;a.cf6=null;a.czR=null;a.cUX=null;a.cgN=null;a.cP9=null;a.c6C=null;a.cXm=null;a.cPq=null;a.b$F=null;a.bUY=0;a.b62=0;a.cx5=0;a.cgQ=null;a.cPb=null;a.czF=null;a.cVQ=0;a.deT=15;} +let Mf=null,Bgz=null,CMk=null,A9g=null,BKg=null,BHn=null,Rc=()=>{Rc=Z(BNf);E5r();},B5B=b=>{let c;Rc();c=64;while(c<65536){Cdi(b,0,b,c,c);c=c+c|0;}},ARH=(a,b,c,d)=>{let e,f,g;e=a.cBK.data;f=a.cyx;a.cyx=f+1|0;g=e[f];g.bP_=b;g.b_j=c;g.cu_=d;return g;},DnC=(b,c)=>{let d,e;Rc();d=0;while(dc)e=c;Di(BHn,0,b,d,e-d|0);d=e;}},D5l=(a,b)=>{let c,d;Rc();a.cR5=K(AJD,15);a.cR4=K(AJD,15);a.cQj=K(AJD,288);a.cQk=K(AJD,288);a.cBK=K(AJD,10240);a.cqs=Ca(320);a.cqr=Ca(320);a.cJU=Ca(320);a.ci_=Ca(288);a.cyP=Ca(288);a.cyO +=Ca(288);a.cT0=Ca(289);a.cfQ=Fd(259);a.clD=Ca(32);a.clE=Ca(32);a.cX9=Ca(32);a.cBu=Ca(19);a.cBv=Ca(19);a.cXj=Ca(19);a.ck4=Ca(16);a.ck5=Ca(16);a.cPD=Ca(9);a.c2P=Ca(9);a.c6C=BN6();a.cXm=BN6();a.cPq=BN6();c=new B4V;Bk8();c.cf2=Ca(65536);c.cjW=Ca(32768);c.cHI=Ca(32768);c.b38=Ca(32768);c.cFJ=Ca(65536);c.clS=Ca(32768);c.cmh=Ca(32768);a.b$F=c;a.cx5=42;a.deT=15;a.cVQ=b;d=0;while(d<10240){a.cBK.data[d]=new AJD;d=d+1|0;}a.cgN=Ca(16);a.cP9=Ca(16);d=b+1|0;a.cf6=Fd(d);a.czR=Vu(d);a.cUX=Fd(d);c=new C4r;c.cIT=Fd(b);c.b87=Fd(b);d +=8*b|0;c.cbd=Fd(d);c.b7x=BD(d);a.czF=c;a.cgQ=CZY(b);a.cPb=CZY(b);},DCi=a=>{let b=new BNf();D5l(b,a);return b;},E5r=()=>{let b,c,d,e,f,g;Mf=Ca(65536);Bgz=Fd(65536);CMk=BD(65536);b=Ca(65536);c=b.data;A9g=b;d=Fd(65536);e=d.data;BKg=d;f=Vu(65536);d=f.data;BHn=f;g=0;while(g<64){c[g]=(-1);e[g]=1;d[g]=O(4294967295, 2147483647);g=g+1|0;}B5B(b);B5B(BKg);B5B(BHn);}; +function Dlr(){let a=this;F.call(a);a.b1w=null;a.b3C=0;a.b5u=0;} +let JU=(a,b)=>{let c,d,e,f;c=a.b3C;d=a.b1w;if(c==d.data.length){e=BD(c*2|0);Di(d,0,e,0,c);a.b1w=e;}e=a.b1w.data;f=a.b3C;a.b3C=f+1|0;e[f]=b;},ADj=(a,b,c)=>{let d,e,f,g,h,i;d=0;while(d>d&1;f=a.b1w.data;g=a.b3C-1|0;h=f[g];i=a.b5u;f[g]=(h|e<>24;a.b5u=(i+1|0)&7;d=d+1|0;}},AGe=(a,b,c)=>{let d,e,f,g,h,i;d=0;while(d>((c-d|0)-1|0)&1;f=a.b1w.data;g=a.b3C-1|0;h=f[g];i=a.b5u;f[g]=(h|e<>24;a.b5u=(i+1|0)&7;d=d+1|0;}}; +function Bwn(){let a=this;Tq.call(a);a.bZr=0;a.b5d=null;a.c3A=0;} +let E7C=0,BEj=()=>{BEj=Z(Bwn);EuU();},EiE=(a,b)=>{let c,d,e,f,g;Jl(a);try{c=a.bZr;d=a.b5d;e=d.data.length;if(c==e){f=a.c3A;if(f<=0)f=!e?1:e;g=K(F,e+f|0);Di(d,0,g,0,c);a.b5d=g;}g=a.b5d.data;e=a.bZr;a.bZr=e+1|0;g[e]=b;a.bHh=a.bHh+1|0;}finally{G2(a);}},EQT=a=>{Jl(a);try{return a.bZr?0:1;}finally{G2(a);}},EuU=()=>{E7C=0;},C1E=N(Bwn),CZE=a=>{return EQT(a);},E90=a=>{let b,$$je;Jl(a);try{try{b=a.b5d.data[a.bZr-1|0];}catch($$e){$$je=P($$e);if($$je instanceof EN){b=new B2W;X(b);J(b);}else{throw $$e;}}return b;}finally +{G2(a);}},ECS=a=>{let b,c,d,e;Jl(a);try{b=a.bZr;if(b){c=b-1|0;a.bZr=c;d=a.b5d.data;e=d[c];d[c]=null;a.bHh=a.bHh+1|0;return e;}e=new B2W;X(e);J(e);}finally{G2(a);}}; +function CVL(){let a=this;F.call(a);a.b8m=0;a.b9R=null;a.cBV=0;a.cmU=null;a.cfU=null;} +let AP6=N(Bx),QA=null,Q0=null,Pk=null,ASl=null,AAT=null,D7y=null,HN=()=>{HN=Z(AP6);E5q();},DUm=(a,b,c)=>{HN();Ct(a,b,c);},AYu=(a,b)=>{let c=new AP6();DUm(c,a,b);return c;},DiK=a=>{HN();if(a===Pk)return CuA(QA,Q0);return Fv(a);},E5q=()=>{let b,c,d;QA=AYu(E(604),0);Q0=AYu(E(4181),1);Pk=AYu(E(4182),2);ASl=AYu(E(446),3);b=AYu(E(578),4);AAT=b;c=K(AP6,5);d=c.data;d[0]=QA;d[1]=Q0;d[2]=Pk;d[3]=ASl;d[4]=b;D7y=c;},ABO=N(0); +function B8M(){let a=this;F.call(a);a.bPw=null;a.cgz=null;a.b9C=null;a.clg=null;a.b3b=null;a.bJW=null;a.cGs=null;a.cxA=null;a.cim=null;a.cfj=null;a.cNd=0;} +let BkC=0,BLG=()=>{BLG=Z(B8M);Fes();},U7=a=>{return a.b9C;},ACb=a=>{let b,c;b=a.clg;if(!b.bGJ){c=a.b9C;Ea(b,c);c=CHd(E(14),2147483647,a.cgz);c.b8c=ALg(1);U(a.clg,c);}return a.clg;},CuW=a=>{let b;if(a.cfj===null){b=B1(a.bPw);B8();a.cfj=B0(b,BLc);}return a.cfj;},CRK=(a,b)=>{let c,d;c=new CdS;c.bP1=a.bPw;c.cZ7=b;b=new DpO;ZK(b,c);c=new B$6;ZK(c,b);b=new CeE;d=a.cgz;ZK(b,c);b.c6I=d;c=new CiW;ZK(c,b);b=new CjH;ZK(b,c);c=new C7j;ZK(c,b);b=new Dkf;ZK(b,c);c=new CpC;ZK(c,b);b=new CJa;ZK(b,c);return b;},E2D=(a,b)=>{let c, +d,e,$$je;a:{if(!a.cNd){a.cNd=1;if((U7(a)).dV()>1){b:{try{ML();c=CT1(AKg,b);d=a.cGs;b=CRK(a,b);E0D(a,c,ACX(d,b));break a;}catch($$e){$$je=P($$e);if($$je instanceof J1){e=$$je;break b;}else{throw $$e;}}}AEM(e);}}}},EZ3=(a,b)=>{let c,d,e,f,g,$$je;a:{b:{try{E2D(a,b.hE());c=a.cGs;d=CRK(a,b.hE());c=ACX(c,d);d=B1(a.bPw);B8();d=B0(d,CWD);B9();e=(BJ(d,Cz)).cu(GK(a.bPw));d=CKK(a.bPw);VO();f=BGW(Bs6(d,A3I));d=BM7(b);if((U7(a)).dV()>1)DOL(a,d,c);else{DBp(E4v(c,e,f),d);BPH(d);}break a;}catch($$e){$$je=P($$e);if($$je instanceof J1) +{g=$$je;break b;}else{throw $$e;}}}AEM(g);}},BLi=(a,b)=>{let c,d,e,f,g;B3();c=CF;d=D0(CuW(a),a.bPw.bGN);e=Bkn(DF(a.bPw,E(4183)));if(e===JJ)e=GM(a.cfj);if(BG(E(4184),e.cjH)){e=new Bzy;f=b.cc1|0;g=new S;T(g);BE(g,f);CAj(e,Q(g));}return BJN(b.cFI,d,c,a.bPw,e);},Bg9=(a,b)=>{let c;c=Cos(a,b);return BW(!(c>0.0)?0.0:c+5.0);},Cos=(a,b)=>{let c,d;c=0.0;d=(U7(a)).dX();while(d.dY()){c=BC(c,((BLi(a,d.dZ())).cF(b)).bGF);}return c;},DOL=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;d=b;e=Im(d);f=Bg9(a,e);g=CuW(a);B9();h=(BJ(g, +CK)).cu(a.bPw.bGN);if(h!==null){i=Cos(a,Im(d));d=Buv(Ba_(C2(((ACb(a)).cf((ACb(a)).dV()-1|0)).bXu.bHj-10.0-1.0,i)));g=BM(5.0);g=YR(b,g);j=Cc(h);BmP(YR(YR(g,j),h),d);}k=c.cF(e);l=0;if(Df()&&!BkC&&a.b3b.bGJ!=((U7(a)).dV()+1|0)){b=new C4;X(b);J(b);}m=(ACb(a)).dX();while(m.dY()){j=m.dZ();n=Be(a.b3b,l);o=j.bXu.bHj+j.b8c.bJ0;d=j.cnk;CM();g=DQ(d,C6);if(g!==null&&!g.gv()){h=a.b3b;p=l+1|0;h=Be(h,p);d=Cc(g);d=YR(YR(b,d),g);g=BM(o-n.b7B);d=YR(d,g);h=Buv(Ba_(C2(j.cc1+n.b7B+h.b7A,k.bGF+f.bHu)));BmP(d,h);}h=BGD(DpW(b,j,U7(a)), +j.bXu);d=Bg9(a,e);c.cC(BGD(h,d));h=BM(o-(CR8(n,e)).bGE);DeW(n,YR(b,h));l=l+1|0;}q=new BWE;h=Bg9(a,e);d=b;C41(q,a,YR(d,h));c.cC(q);BLb(q);b=(U7(a)).dX();while(b.dY()){c=b.dZ();h=BLi(a,c);i=c.bXu.bHj+c.b8c.bJ0;g=new BbA;r=A2f(a,c);g.c6v=h;g.cSO=r;BmP(YR(d,BM(i)),g);}},E0D=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p;d=b;e=d.bOR;b=E9();f=E9();g=(U7(a)).dX();while(g.dY()){h=g.dZ();i=BAN(e,0);Es(b,h,i);j=BM7(i);Es(f,h,j);}g=BEp(f,U7(a),Z$(f),e);c.cC(g);DfZ(g);f=(U7(a)).dX();while(f.dY()){g=f.dZ();g.b8c=Bej(FW(b,g));}b +=DF(a.bPw,E(4185));k=BG(E(3485),b)?(-1):!AS8(b)?0:CZ(b);if(k===(-1.0)){b=(U7(a)).dX();while(b.dY()){k=BC(k,A2f(a,b.dZ()));}}d=d.bOR;l=0;while(l<(ACb(a)).dV()){f=(ACb(a)).cf(l);f.cc1=BC(k,A2f(a,f));l=l+1|0;}g=Bg9(a,d);h=c.cF(d);TD(a.b3b);m=0.0;l=0;while(l<(ACb(a)).dV()){f=(ACb(a)).cf(l);n=CTR(a,d,l,k);l=l+1|0;o=CTR(a,d,l,k);i=new CJj;b=a.bPw;p=h.bGF+g.bHu;i.cyC=b;i.b7A=n;i.b7B=o;i.cuk=p;U(a.b3b,i);f.bXu=BM(m+Chd(i)-f.b8c.bJ0+(f.cc1-A2f(a,f))/2.0);m=m+f.cc1+Chd(i);}if(Df()&&!BkC&&a.b3b.bGJ!=((U7(a)).dV()+1|0)) +{b=new C4;X(b);J(b);}},CTR=(a,b,c,d)=>{let e,f,g;if(c&&c<=(ACb(a)).dV()){e=(ACb(a)).cf(c-1|0);f=BC(d,A2f(a,e));g=((BLi(a,e)).cF(b)).bGE;if(!(g<=f)){if(Df()&&!BkC&&!(g>f)){b=new C4;X(b);J(b);}return BC(5.0,5.0+(g-f)/2.0);}return 5.0;}return 5.0;},A2f=(a,b)=>{return BXn(b.b8c);},Fes=()=>{BkC=0;}; +function DcB(){let a=this;F.call(a);a.cGS=null;a.cmS=null;a.cnd=null;} +let Td=a=>{return Gc(a.cmS);},CwP=a=>{return Gc(a.cnd);},CxC=a=>{return a.cGS;},BU$=(a,b,c)=>{Es(a.cmS,b,c);},COr=(a,b)=>{return FW(a.cmS,b);}; +function CsY(){let a=this;F.call(a);a.bKj=null;a.bKW=null;a.bVr=null;a.cMv=null;} +let BST=(a,b)=>{let c,d;if(a.bVr===null)c=b.Qk();else{d=EA(a.bKj);c=b.Qk();if(Ko(d,c)>=0)c=d;}return c;},C2L=(a,b)=>{let c,d;if(a.bVr===null)c=b.Ql();else{d=EA(Ep(a.bKW,V(1)));c=b.Ql();if(Ko(d,c)<=0)c=d;}return c;},Bvu=(a,b)=>{if(a.bVr!==null&&!(b instanceof AVp)){if(Ko(BOc(b),EA(a.bKj))>=0){if(Ko(b.Qk(),BSX(a.bKW))>0)return 1;return 0;}return 1;}return 0;},Eg$=a=>{let b;MF();b=Ka;return a.bKj.QE(a.bKW,b);}; +function CsD(){let a=this;F.call(a);a.bS6=null;a.ct9=0.0;a.cjC=0;} +function Dj5(){let a=this;F.call(a);a.cg_=null;a.cqm=null;a.c1w=null;a.cV$=0;} +function Dcs(){let a=this;F.call(a);a.bNx=null;a.coT=null;a.cJr=null;a.cl3=null;a.cz7=null;a.cCl=null;a.cR0=null;a.cak=null;} +let DgW=a=>{return AUM(a.cl3);},AIH=a=>{return a.coT;},Bss=(a,b)=>{return AN$(a.cR0,b,new C2n);}; +function CGF(){let a=this;F.call(a);a.chg=0;a.cTi=0;a.cAB=0;} +let CPU=a=>{return a.chg;},FuX=a=>{return a.cAB;}; +function CqZ(){let a=this;F.call(a);a.chE=null;a.b$t=null;a.cK9=0.0;} +let AZ9=a=>{return a.cK9;},AD1=(a,b)=>{return FW(a.b$t,b);},DOi=(a,b,c,d,e,f,g)=>{let h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb;h=c.bHC;i=c.TA(b);j=g.b23;k=EK(a.chE,i);l=(Td(d)).dX();while(l.dY()){m=l.dZ();if(m instanceof AVp){n=m;o=new Co7;p=n.cMt;n=f.bKj;q=f.bKW;o.cSt=m.ceX;o.cZJ=j;o.cfH=j.bGN;o.cYJ=p;o.clu=k;o.cgt=h;o.cUJ=n;o.cx9=q;}else if(m instanceof BbP){q=m;o=new C6E;r=g.bSt;p=q.bRF.b8l;c=BST(f,q);q=C2L(f,q);BMe(o,r,h,k,p,c,m,a,m.ceX,j);o.dcD=10.0;o.bM7=q;}else{p=m;r=!e.cTi?EpD(p):p.bRF.b8l;if(p.cuK)o +=EXg(CBY(g),h,k,r,BST(f,p),p,a,Cyf(m),j);else{c=BST(f,p);q=C2L(f,p);if(f.bVr===null){s=0;t=0;}else{s=Ko(EA(f.bKj),c)?0:1;t=Ko(EA(Ep(f.bKW,V(1))),q)?0:1;}o=new BVE;u=g.bSt;v=g.b23;w=Bk();n=(CxC(d)).dX();while(n.dY()){x=n.dZ();if(DRd(x,p))U(w,x);}CvK(o,u,h,k,r,c,q,s,t,v,p,a,w,Cyf(p));}c=DJE(p);y=EgE(p);q=Ekk(p);n=EYN(p);p=DxY(p);FlF(o,c,y,q,n,p);}if(m.b2d===null){z=o.V3(b);k=N8(k,z);}Es(a.b$t,m,o);}ByM(a.chE);p=Bk();j=(Gc(a.b$t)).dX();while(j.dY()){a:{k=j.dZ();l=k.V4(b);m=k.V5(b);if(k.V6()===null){n=Br(p);while +(true){if(!Bq(n))break a;b:{c=Bm(n);q=c.V5(b);z=q.cAa;ba=l.cAa;if(!(!(z>=ba+l.cB4)&&!(ba>=z+q.cB4)))z=0.0;else{c:{z=q.cAb;bb=l.cAb;if(!(z>=bb+l.cFY)){z=z+q.cFY;if(!(bb>=z))break c;}z=0.0;break b;}z=z-bb;}}if(z>0.0){q=c.V7(b);z=c.V8(b);c=N8(q,z);OC(k.V7(b),c);ByM(a.chE);}}}}if(m!==null)U(p,k);}ba=0.0;c=(Gc(a.b$t)).dX();while(c.dY()){q=c.dZ();ba=BC(ba,(q.V7(b)).RG()+q.V8(b));}if(ba!==0.0){if(e.cAB)i=ba;else{b=(CwP(d)).dX();while(b.dY()){c=b.dZ();e=new DqC;q=EA(f.bKj);n=BSX(f.bKW);e.ctM=c;e.bYA=h;e.c5y=ba;e.csL +=q;e.cyo=n;e.c0W=d;e.cxT=g;c.c7q=e;ba=ba+32.0;}i=ba;}}a.cK9=i;}; +function Cdt(){let a=this;F.call(a);a.bT6=null;a.bSt=null;a.b23=null;} +let Ffo=a=>{return a.b23;},C2I=a=>{return a.b23.bH$;},Tb=a=>{let b;b=CBW(a);B9();return (BJ(b,Ov)).oK();},R3=a=>{let b,c,d;b=a.bT6;CV();c=Wv;d=Y3;c=Byr(b,c,d);B9();return (BJ(c,Ov)).oK();},Uf=a=>{let b,c,d;b=a.bT6;CV();c=Wv;d=BaC;c=Byr(b,c,d);B9();return (BJ(c,Ov)).oK();},Chs=(a,b)=>{let c,d;c=a.bT6;CV();d=Wv;return A9u(Byr(c,d,b));},DaG=a=>{let b,c;b=a.bT6;CV();c=Wv;c=AYt(b,c);B9();return (BJ(c,Cz)).cu(a.bSt);},CBY=a=>{return a.bSt;},Dg6=(a,b)=>{let c,d,e;c=a.bT6;CV();d=Bkh;d=AYt(c,d);B9();c=(BJ(d,Cz)).cu(a.bSt);e +=Fi(d);return (b.h2(c)).h2(e);},CBW=a=>{let b,c,d;b=a.bT6;CV();c=Wv;d=Vr;return Byr(b,c,d);}; +function BG0(){let a=this;Er.call(a);a.bNF=null;a.bMq=null;a.bU0=null;a.b9B=0;} +let Ci4=0,Byq=()=>{Byq=Z(BG0);EBp();},FpG=(a,b)=>{Byq();a.bNF=new BPe;a.bMq=new BPe;a.b9B=0;a.bU0=b;},BM$=a=>{let b=new BG0();FpG(b,a);return b;},C24=a=>{if(!A4p(a.bMq)&&!A4p(a.bNF)){if(CMm(a.bMq))DpB(a.bMq,a.bU0,0);if(!(A4p(a.bMq)&&!CMm(a.bNF)))DpB(a.bNF,a.bU0,1);if(A4p(a.bMq)&&A4p(a.bNF))a.bMq.b0X.cmd=0;}},FnR=(a,b)=>{let c,d,e,f;C24(a);c=BC(AWc(a.bNF,b),AWc(a.bMq,b));d=BM6(a.bMq,b)+BM6(a.bNF,b);e=c+BC(AWc(a.bMq,b),AWc(a.bNF,b));f=a.bU0.bNy;Pf();if(f===AAK)return Cl(e,d);return Cl(d,e);},DlT=(a,b)=>{let c, +d,e,f;if(!A0b(a.bMq)&&!A0b(a.bNF))return;C24(a);c=b.hE();d=BC(AWc(a.bNF,c),AWc(a.bMq,c));e=BM6(a.bMq,c);f=a.bU0.bNy;Pf();b=f!==AAK?b.h2(Bh(e,d)):b.h2(Bh(d,e));Do1(a.bNF,b);Do1(a.bMq,b);},CQK=(a,b,c,d,e,f,g)=>{let h,$$je;a:{try{if(!A0b(a.bMq)&&!A0b(a.bNF))d=0;}catch($$e){$$je=P($$e);if($$je instanceof LI){break a;}else{throw $$e;}}b:{try{if(d)break b;C1q(a.bNF,B1(a.bU0),c,e,f,b);C1q(a.bMq,B1(a.bU0),c,e,f,b);b=By();}catch($$e){$$je=P($$e);if($$je instanceof LI){break a;}else{throw $$e;}}return b;}c:{try{if(a.b9B)break c;a.b9B +=d;break c;}catch($$e){$$je=P($$e);if($$je instanceof LI){break a;}else{throw $$e;}}}d:{try{if(!Df())break d;Byq();if(Ci4)break d;if(a.b9B>0)break d;J(Jk());}catch($$e){$$je=P($$e);if($$je instanceof LI){break a;}else{throw $$e;}}}e:{try{h=a.b9B;if(!(d%h|0))break e;b=B5(E(4186));}catch($$e){$$je=P($$e);if($$je instanceof LI){break a;}else{throw $$e;}}return b;}f:{try{d=d/h|0;if(!g)break f;b=CyY(a.bNF,B1(a.bU0),c,d,e,f,b);}catch($$e){$$je=P($$e);if($$je instanceof LI){break a;}else{throw $$e;}}return b;}try{b +=CyY(a.bMq,B1(a.bU0),c,d,e,f,b);}catch($$e){$$je=P($$e);if($$je instanceof LI){break a;}else{throw $$e;}}return b;}return B5(E(3677));},Ca9=(a,b)=>{return !(!b&&A0b(a.bNF))?0:1;},EBp=()=>{Ci4=0;}; +function CaO(){let a=this;F.call(a);a.coE=null;a.bZU=null;} +let C9K=(a,b)=>{let c,d,e;while(true){c=a.coE;d=c.bGJ;if(d>b)break;e=new C6D;e.bPT=d;U(c,e);}return Be(c,b);},A7d=(a,b)=>{let c,d;c=b.cb2;if(c===null){d=CQI();Dpp(d,b);b.cb2=d;U(a.bZU,d);}else if(!Nw(a.bZU,c)){d=a.bZU;c=b.cb2;U(d,c);}}; +function C9x(){let a=this;F.call(a);a.bPh=null;a.bY4=null;a.bRQ=BH;a.cpv=BH;a.ceP=null;a.b1u=BH;} +let CXs=(b,c,d)=>{let e,f;e=J$(3.0,5.0,0.5);B9();f=(BJ(c,Cz)).cu(d.bGN);return (b.h2(e)).h2(f);},BFD=a=>{let b,c,d,e,f,g,h,i;b=a.cpv;if(DS(b,BH)){a:{if(DS(a.b1u,V(-1))){c=new AUp;d=new C94;d.c$_=a;AQx();c.bNW=Ese(d);d=NA(a.bPh);while(d.dY()){e=AOc(A62((d.dZ()).bJv));if(G5(e,BH)){f=TT(e);KM(c,f);}}c=NA(c);while(true){if(!c.dY())break a;g=(c.dZ()).bMQ;e=a.b1u;if(DS(e,V(-1)))a.b1u=g;else{h=e;while(D4(h,BH)){b=Fl(e,g);h=b;e=g;g=b;}a.b1u=AOc(e);}}}}b=a.b1u;if(DS(b,V(1))&&CkD(a,b)>4000.0){i=Lq((Bdh(a)).bJv)-Lq((AXK(a)).bJv);return AGn(1.0 ++Id(a.bRQ)*i/4000.0);}return b;}return b;},PN=a=>{if(APh(a.bPh))return CkD(a,BFD(a));return 100.0;},CkD=(a,b)=>{return ((Lq((Bdh(a)).bJv)-Lq((AXK(a)).bJv))/Id(b)+1.0)*Id(a.bRQ);},C6p=a=>{if(APh(a.bPh))return DO(1000,Cp(BU(V(1),CY(CE(A62((Bdh(a)).bJv),A62((AXK(a)).bJv)),BFD(a)))));return 1;},Ll=(a,b)=>{return Bwp(a,Lq(b.bJv));},Bwp=(a,b)=>{return (b-Lq((AXK(a)).bJv))/Id(BFD(a))*Id(a.bRQ);},Cq4=(a,b)=>{let c;a.b1u=V(-1);KM(a.bPh,b);c=b.csX;NV();if(c!==Yk)a.ceP=c;},Cq1=a=>{let b;b=B1(a.bY4);B8();return B0(b,CaZ);},Cb9 +=a=>{let b;b=B1(a.bY4);B8();return B0(b,Der);},DdB=(a,b)=>{return CqF(a,CmF(a.ceP,b));},CqF=(a,b)=>{let c,d;c=B4(a.bY4.bH$,b);d=XK(a.bY4,Cb9(a));B3();return C_(c,d,CF,a.bY4);},DHm=(a,b)=>{let c,d,e,f,g,h,i,j;c=Fg(5.0);d=Bwp(a,Lq(CzT(a)));e=0;while(true){f=V(e);if(!(d+Id(CT(f,a.bRQ))<=PN(a)))break;(b.h2(BM(d+Id(CT(f,a.bRQ))))).hP(c);e=e+1|0;}a:{(b.h2(BM(d))).hP(DE(Id(CT(V(e-1|0),a.bRQ))));c=UJ();if(DS(a.cpv,BH)){g=NA(a.bPh);while(g.dY()){h=TT(A62((g.dZ()).bJv));KM(c,h);}}else{e=C6p(a);i=0;while(true){if(i>e)break a;g +=TT(BU(CT(a.cpv,V(i)),A62((AXK(a)).bJv)));KM(c,g);i=i+1|0;}}}g=c;if(GR((Cku(g)).bMQ,BH)&&G5((DdP(g)).bMQ,BH))KM(g,TT(BH));c=NA(g);while(c.dY()){f=(c.dZ()).bMQ;h=DdB(a,f);j=h.cF(b.hE());h.cC(b.h2(Bh(Bwp(a,Id(f))-j.bGE/2.0,6.0)));}},CzT=a=>{let b,c;b=NA(a.bPh);while(true){if(!b.dY()){b=new BP;X(b);J(b);}c=b.dZ();if(AKC(c.bJv)>=0)break;}return c.bJv;},Bdh=a=>{return DdP(a.bPh);},AXK=a=>{return Cku(a.bPh);},A7l=N(Bx),A5Q=null,AYA=null,B0n=null,FfI=null,ANY=()=>{ANY=Z(A7l);Ezd();},EoR=(a,b,c)=>{ANY();Ct(a,b,c);},BIZ +=(a,b)=>{let c=new A7l();EoR(c,a,b);return c;},Ezd=()=>{let b,c,d;A5Q=BIZ(E(4187),0);AYA=BIZ(E(1618),1);b=BIZ(E(3406),2);B0n=b;c=K(A7l,3);d=c.data;d[0]=A5Q;d[1]=AYA;d[2]=b;FfI=c;},A3k=N(Bx),A_F=null,ARO=null,A8N=null,FiL=null,VP=()=>{VP=Z(A3k);E8d();},D2v=(a,b,c)=>{VP();Ct(a,b,c);},BJk=(a,b)=>{let c=new A3k();D2v(c,a,b);return c;},E8d=()=>{let b,c,d;A_F=BJk(E(2019),0);ARO=BJk(E(859),1);b=BJk(E(422),2);A8N=b;c=K(A3k,3);d=c.data;d[0]=A_F;d[1]=ARO;d[2]=b;FiL=c;}; +function Dkj(){let a=this;F.call(a);a.bST=null;a.bIt=0.0;a.bID=0.0;a.b_K=0;a.b_d=null;a.b8e=null;a.cih=null;} +let DFl=a=>{a.bST=E(14);a.bIt=0.0;a.bID=100.0;a.b_K=1;a.b_d=null;a.b8e=null;VP();a.cih=A_F;},B4l=()=>{let a=new Dkj();DFl(a);return a;},BnA=a=>{return a.bST;},Pa=a=>{return a.bIt;},BNQ=(a,b)=>{a.bIt=b;a.b_K=0;},Uo=a=>{return a.bID;},BIb=(a,b)=>{a.bID=b;a.b_K=0;},ARv=(a,b,c,d)=>{let e,f;e=a.bID;f=a.bIt;if(e!==f)return c+(b-f)/(e-f)*(d-c);return c;},Do6=(a,b)=>{if(a.b_K){if(ba.bID)a.bID=b;}},EOx=a=>{return a.b_d;},FiX=a=>{let b;b=a.b_d;return !(b!==null&&!ATn(b))?0:1;},Fco=a=>{return a.b8e;},CjX +=a=>{let b;b=a.b8e;return !(b!==null&&b.bG6>0.0)?0:1;},FeW=a=>{return a.cih;},Bag=N(Bx),AVn=null,Yq=null,AB7=null,AMF=null,A9E=null,COL=null,SH=()=>{SH=Z(Bag);DEV();},EJQ=(a,b,c)=>{SH();Ct(a,b,c);},Bbx=(a,b)=>{let c=new Bag();EJQ(c,a,b);return c;},DEV=()=>{let b,c,d;AVn=Bbx(E(3549),0);Yq=Bbx(E(420),1);AB7=Bbx(E(422),2);AMF=Bbx(E(859),3);b=Bbx(E(860),4);A9E=b;c=K(Bag,5);d=c.data;d[0]=AVn;d[1]=Yq;d[2]=AB7;d[3]=AMF;d[4]=b;COL=c;},A5x=N(Bx),Zf=null,A70=null,Dcf=null,E9C=null,VR=()=>{VR=Z(A5x);EVr();},DQ7=(a,b,c)=> +{VR();Ct(a,b,c);},B33=(a,b)=>{let c=new A5x();DQ7(c,a,b);return c;},EVr=()=>{let b,c,d;Zf=B33(E(4188),0);A70=B33(E(4189),1);b=B33(E(3547),2);Dcf=b;c=K(A5x,3);d=c.data;d[0]=Zf;d[1]=A70;d[2]=b;E9C=c;},A6K=N(Bx),A8T=null,BlA=null,FjD=null,AIq=()=>{AIq=Z(A6K);DyQ();},Een=(a,b,c)=>{AIq();Ct(a,b,c);},CG6=(a,b)=>{let c=new A6K();Een(c,a,b);return c;},DyQ=()=>{let b,c,d;A8T=CG6(E(4190),0);b=CG6(E(4191),1);BlA=b;c=K(A6K,2);d=c.data;d[0]=A8T;d[1]=b;FjD=c;},A20=N(Bx),BaM=null,Vd=null,DUe=null,RE=()=>{RE=Z(A20);D1p();},EjM +=(a,b,c)=>{RE();Ct(a,b,c);},CzO=(a,b)=>{let c=new A20();EjM(c,a,b);return c;},D1p=()=>{let b,c,d;BaM=CzO(E(4192),0);b=CzO(E(4193),1);Vd=b;c=K(A20,2);d=c.data;d[0]=BaM;d[1]=b;DUe=c;}; +let AVZ=N(Bx),AVj=null,BrY=null,Flw=null,AF7=()=>{AF7=Z(AVZ);EIf();},DvZ=b=>{AF7();return Ss(Bo(AVZ),b);},D7$=(a,b,c)=>{AF7();Ct(a,b,c);},Cgl=(a,b)=>{let c=new AVZ();D7$(c,a,b);return c;},EIf=()=>{let b,c,d;AVj=Cgl(E(3483),0);b=Cgl(E(4194),1);BrY=b;c=K(AVZ,2);d=c.data;d[0]=AVj;d[1]=b;Flw=c;}; +function J9(){Er.call(this);this.dbG=0;} +let Vo=a=>{a.dbG=0;},Byg=()=>{B8();return CXI;},ERB=(a,b)=>{return Cl(a.Wx(b),a.Wy(b)+a.Wz(b));},ABi=(a,b,c,d,e)=>{(b.h2(Bh(d,c))).hP(DE(e-d));},Xd=(a,b,c,d,e,f,g)=>{let h;(b.h2(Bh(d,c))).hP(DE(e-d));if(e>d+g){b=(b.h2(new VH)).h2(Bh(d*(1.0-f)+e*f-2.0,c));h=EE();Ec(h,0.0,0.0);B2(h,0.0,(-3.0));B2(h,6.0,0.0);B2(h,0.0,3.0);B2(h,0.0,0.0);b.hP(h);}},AVT=(a,b,c,d,e)=>{(b.h2(Bh(c,d))).hP(Fg(e-d));},D_B=(a,b)=>{let c,d,e;c=Fm();d=BY(Dg(a));e=new S;T(e);b=H(H(e,E(4195)),b);Bb(b,32);H(b,d);b=Q(e);Fw(c,b);},FfK=(a,b)=> +{let c,d,e;c=Fm();d=BY(Dg(a));e=new S;T(e);b=H(H(e,E(4196)),b);Bb(b,32);H(b,d);b=Q(e);Fw(c,b);},DJN=a=>{return E(336);}; +function C0J(){let a=this;F.call(a);a.cZ9=null;a.crt=0;} +let Fgy=(a,b)=>{let c;Y$();c=AG9;a.cZ9=c;switch(b){case 9479:case 12292:case 12295:case 12300:case 12301:case 12304:case 12305:case 12312:case 12313:case 12316:case 12324:case 12340:case 12342:break;default:if(c===c)b=ATi(b);a.crt=b;return;}c=new Bt;X(c);J(c);},CKy=a=>{let b=new C0J();Fgy(b,a);return b;},Eu3=a=>{let b,c;b=a.crt;c=new S;T(c);Bb(c,91);Bb(c,b);Bb(c,93);return Q(c);},DNu=(a,b,c)=>{let d;if(Jh(b)!=c){d=Hc(b,c);b=a.cZ9;Y$();if(b===AG9)d=ATi(d);if(d==a.crt){H8();return Bhh;}H8();return MD;}H8();return MD;}; +function C9C(){F.call(this);this.cZV=null;} +let EZK=(a,b,c)=>{let d;d=c;while(true){if((a.cZV.Pw(b,d)).bJS>=0)return BqZ(d-c|0);d=d+1|0;if(d>Jh(b))break;}H8();return MD;}; +function C5P(){let a=this;F.call(a);a.c4D=null;a.cXb=null;} +let E3R=(a,b,c)=>{a.c4D=b;a.cXb=c;},CvE=(a,b)=>{let c=new C5P();E3R(c,a,b);return c;},DAZ=(a,b,c)=>{let d,e,f,g;SL();d=Xe;e=c;while(true){f=a.c4D.Pw(b,e);g=f.bJS;if(g<0)break;if(!g){b=new BP;Bp(b,E(4197));J(b);}d=AOf(d,f.bQ5);e=e+f.bJS|0;if((a.cXb.Pw(b,e)).bJS>=0)return AIT(e-c|0,d);}H8();return MD;}; +function Doy(){F.call(this);this.cvq=null;} +let E1D=(a,b)=>{a.cvq=b;},CXf=a=>{let b=new Doy();E1D(b,a);return b;},Fqn=a=>{let b,c;b=BY(a.cvq);c=new S;T(c);H(H(c,E(4198)),b);return Q(c);},DvK=(a,b,c)=>{let d,e,f,g;SL();d=Xe;e=c;while(true){f=a.cvq.Pw(b,e);g=f.bJS;if(g<0)break;if(!g){b=new BP;Bp(b,E(4197));J(b);}d=AOf(d,f.bQ5);e=e+f.bJS|0;}return AIT(e-c|0,d);}; +function Cst(){F.call(this);this.cFD=null;} +let ESp=(a,b)=>{a.cFD=b;},Dqs=a=>{let b=new Cst();ESp(b,a);return b;},D7V=a=>{let b,c;b=BY(a.cFD);c=new S;T(c);H(H(c,E(4199)),b);return Q(c);},DTR=(a,b,c)=>{let d,e,f,g;SL();d=Xe;e=c;while(true){f=a.cFD.Pw(b,e);g=f.bJS;if(g<0){if(e>c)return AIT(e-c|0,d);H8();return MD;}if(!g)break;d=AOf(d,f.bQ5);e=e+f.bJS|0;}b=new BP;Bp(b,E(4197));J(b);}; +function CqM(){let a=this;F.call(a);a.cFj=null;a.chO=null;a.cIZ=0;} +let FaN=b=>{let c,d,e,f,g;c=b;if(Jh(c)){if(Hc(c,Jh(c)-1|0)!=12316){c=new CqM;c.cFj=PZ(Bo(M4));d=new CF0;Y$();d.cpp=AG9;d.bXA=BH;d.bXB=BH;c.chO=d;c.cIZ=0;d=ANt(b);while(Jh(d)>0){e=Hc(d,0);if(e==12324)c.cIZ=1;else if(e!=32){if(e==12340){Hq(d,1);f=DrN(d);OJ(c.cFj,f);Hq(d,CrK(f)-1|0);}else if(Jh(d)>2&&Hc(d,1)==12316){Hq(d,2);g=Hc(d,0);FdQ(c.chO,e,g);}else if(e==12291)B7c(c,34);else if(e!=8729)B7c(c,e);else B7c(c,32);}Hq(d,1);}return c;}b=new Bt;Bp(b,E(4200));J(b);}b=new Bt;Bp(b,E(4201));J(b);},B7c=(a,b)=>{let c, +d,e,f;c=a.chO;d=c.cpp;Y$();if(d===AG9)b=ATi(b);e=Dqz(c,b);if(b>=32&&b<=128){if(e<64)c.bXA=Gu(c.bXA,EU(V(1),e));else c.bXB=Gu(c.bXB,EU(V(1),e-64|0));return;}c=new Bt;f=new S;T(f);Bb(H(f,E(4202)),b);Bp(c,Q(f));J(c);},ExW=(a,b,c)=>{let d,e,f,g;if(Jh(b)!=c){d=Hc(b,c);b=a.chO;e=b.cpp;Y$();f=Dqz(b,e===AG9?ATi(d):d);c=f>128?0:f<64?(DS(CN(b.bXA,EU(V(1),f)),BH)?0:1):DS(CN(b.bXB,EU(V(1),f-64|0)),BH)?0:1;a:{b:{if(!c){b=a.cFj;A1N();g=P2(b);c:{d:{while(OD(g)){if((Pr(g)).WE(d))break d;}c=0;break c;}c=1;}if(!c)break b;}c= +1;break a;}c=0;}if(c!=a.cIZ){H8();return Bhh;}H8();return MD;}H8();return MD;}; +function AYU(){Bx.call(this);this.cMf=null;} +let Bar=null,A2$=null,AZh=null,A63=null,Bt0=null,Dbx=null,A8q=()=>{A8q=Z(AYU);ENa();},CNJ=()=>{A8q();return Dbx.b2();},EJN=(a,b,c,d)=>{A8q();Ct(a,b,c);a.cMf=d;},A8j=(a,b,c)=>{let d=new AYU();EJN(d,a,b,c);return d;},ENa=()=>{let b,c,d;Bar=A8j(E(4203),0,E(684));A2$=A8j(E(4204),1,E(1217));AZh=A8j(E(4205),2,E(3978));A63=A8j(E(4206),3,E(4207));b=A8j(E(4208),4,E(1497));Bt0=b;c=K(AYU,5);d=c.data;d[0]=Bar;d[1]=A2$;d[2]=AZh;d[3]=A63;d[4]=b;Dbx=c;},Dh$=N(),DTt=(a,b,c)=>{if(c>=Jh(b)){H8();return ALF;}H8();return MD;}; +function Dnx(){let a=this;F.call(a);a.cKB=null;a.c7a=null;} +let ELJ=(a,b,c)=>{let d,e;if(!b.b6D){d=B1e(b.b3t,0,b.bWX+c|0,1);e=(a.cKB.Pw(d,0)).bJS;B8f();switch(CUm.data[a.c7a.bGO]){case 1:if(e<0){H8();return MD;}H8();return ALF;case 2:if(e<0){H8();return ALF;}H8();return MD;default:}b=new BP;X(b);J(b);}b=new BP;X(b);J(b);}; +function C0G(){let a=this;F.call(a);a.cH4=null;a.cCq=null;} +let FxB=a=>{let b,c,d;b=HT(a.cCq);c=BY(a.cH4);d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},EZj=(a,b,c)=>{let d;d=(a.cH4.Pw(b,c)).bJS;BIU();switch(COB.data[a.cCq.bGO]){case 1:if(d<0){H8();return MD;}H8();return ALF;case 2:if(d<0){H8();return ALF;}H8();return MD;default:}b=new BP;X(b);J(b);}; +function DpT(){let a=this;F.call(a);a.cGE=null;a.cE8=null;} +function B$H(){F.call(this);this.cBP=null;} +let DKe=a=>{let b,c,d;b=a.cBP;c=b.cGE.bHx;d=b.cE8.bHx;b=new S;T(b);c=H(b,c);Bb(c,45);H(c,d);return Q(b);},Ek$=(a,b,c)=>{let d;if(Jh(b)!=c){d=Hc(b,c);b=a.cBP;c=b.cGE.WE(d);b=b.cE8;AUD();if(b!==A34)c=c?0:1;if(c){H8();return Bhh;}H8();return MD;}H8();return MD;},AVw=N(Bx),AE1=null,A$9=null,A27=null,A0l=null,A9s=null,A8D=null,A7W=null,BbL=null,FrH=null,ABp=()=>{ABp=Z(AVw);D2F();},B$E=b=>{ABp();return Ss(Bo(AVw),b);},DF6=(a,b,c)=>{ABp();Ct(a,b,c);},AHI=(a,b)=>{let c=new AVw();DF6(c,a,b);return c;},D2F=()=>{let b, +c,d;AE1=AHI(E(485),0);A$9=AHI(E(458),1);A27=AHI(E(465),2);A0l=AHI(E(466),3);A9s=AHI(E(467),4);A8D=AHI(E(477),5);A7W=AHI(E(476),6);b=AHI(E(4209),7);BbL=b;c=K(AVw,8);d=c.data;d[0]=AE1;d[1]=A$9;d[2]=A27;d[3]=A0l;d[4]=A9s;d[5]=A8D;d[6]=A7W;d[7]=b;FrH=c;},A7p=N(0),X$=N(0); +function BKr(){let a=this;F.call(a);a.bQo=null;a.cEg=null;a.cAd=null;a.cmT=0;a.bRB=null;a.c5R=0;a.cWc=null;a.cEm=0;a.cwI=null;a.cm0=null;a.bV_=null;a.c69=null;a.cgY=null;a.cbn=null;} +let CGM=a=>{let b,c,d;a:{b=a.cAd;ABp();if(b===AE1){B8();b=BKd;break a;}if(b===A$9){B8();b=C2s;break a;}if(b===A27){B8();b=DaI;break a;}if(b===A0l){B8();b=CAH;break a;}if(b===A9s){B8();b=DhG;break a;}if(b===A8D){B8();b=DgE;break a;}if(b===A7W){B8();b=Cfh;break a;}if(b!==BbL){b=null;break a;}B8();b=Dep;}if(a.cbn===null)c=b;else{c=new ADV;d=b.bLh;CV();AOY(c,ATd(d,Yj(AVA)),b.bKx);}return c;},CWm=(a,b,c,d,e,f,g,h,i)=>{a.cmT=0;a.c69=Bk();a.cgY=Qd();a.cm0=b;a.bV_=i;a.cWc=f;a.cwI=h;a.cEm=g;a.bQo=B$(d);if(d.bGI.length) +{if(!FQ(e)&&I6(e)){a.cAd=B$(c);a.cEg=e;return;}b=new Bt;X(b);J(b);}b=new Bt;X(b);J(b);},Duw=(a,b,c,d,e,f,g,h)=>{let i=new BKr();CWm(i,a,b,c,d,e,f,g,h);return i;},Fmq=a=>{return a.bQo;},BMu=(a,b)=>{let c,d,e,f,g,h;if(!b)c=a.cEg;else{d=a.cEg;e=Bk();f=Br(d.bIc);while(Bq(f)){g=BY(Bm(f));c=new S;T(c);H(H(c,E(4210)),g);h=Q(c);U(e,h);}c=AVM(d.bMJ,e,d.bSH,d.bNJ,d.bMn);}if(a.bRB!==null){e=a.cWc;HN();d=AAT;if(!OS(e,d))c=!a.c5R?Us(c,a.bRB):Dmt(c,a.bRB);}return c;},C9h=(a,b,c)=>{if(a.bRB!==null){b=new BP;X(b);J(b);}a.bRB +=B$(b);a.c5R=c;},A98=N(Bx),FI=null,Bai=null,EFF=null,FC=()=>{FC=Z(A98);EBo();},Fbs=(a,b,c)=>{FC();Ct(a,b,c);},Dpl=(a,b)=>{let c=new A98();Fbs(c,a,b);return c;},EBo=()=>{let b,c,d;FI=Dpl(E(4211),0);b=Dpl(E(4212),1);Bai=b;c=K(A98,2);d=c.data;d[0]=FI;d[1]=b;EFF=c;},AIo=N(Bx),Ri=null,PX=null,Vs=null,AOb=null,EXZ=null,Hy=()=>{Hy=Z(AIo);EdN();},DCB=(a,b,c)=>{Hy();Ct(a,b,c);},BsL=(a,b)=>{let c=new AIo();DCB(c,a,b);return c;},EdN=()=>{let b,c,d;Ri=BsL(E(4213),0);PX=BsL(E(4214),1);Vs=BsL(E(4215),2);b=BsL(E(2237),3);AOb +=b;c=K(AIo,4);d=c.data;d[0]=Ri;d[1]=PX;d[2]=Vs;d[3]=b;EXZ=c;}; +function BAi(){let a=this;F.call(a);a.bM6=null;a.bKu=null;a.bKc=null;a.bLV=null;a.bLW=null;a.bMT=null;a.bNP=0;a.bMo=0.0;a.bLo=0;a.bMD=0;} +let BI4=(a,b,c,d,e,f,g,h,i,j,k)=>{a.bLo=j;a.bMo=i;a.bM6=B$(b);a.bKu=B$(c);a.bKc=B$(d);a.bLV=e;a.bLW=f;a.bMT=g;a.bNP=h;a.bMD=k;},Si=(a,b,c,d,e,f,g,h,i,j)=>{let k=new BAi();BI4(k,a,b,c,d,e,f,g,h,i,j);return k;},C$C=()=>{let b,c,d,e,f;b=new BAi;SV();c=AY1;d=Bmy();e=Bmy();GQ();e=ARS(e,MG);OG();f=A$_;BI4(b,c,d,e,f,f,null,0,1.0,0,0);return b;},BPt=()=>{let b,c,d,e,f,g;b=new BAi;SV();c=AY1;d=Bmy();GQ();e=ARS(d,MG);f=ARS(Bmy(),MG);OG();g=A$_;BI4(b,c,e,f,g,g,null,0,1.0,0,0);return b;},BMW=a=>{return Si(a.bM6,a.bKc,a.bKu, +a.bLW,a.bLV,a.bMT,a.bNP,a.bMo,a.bLo,a.bMD);},AU2=(a,b)=>{return Si(b,a.bKu,a.bKc,a.bLV,a.bLW,a.bMT,a.bNP,a.bMo,a.bLo,a.bMD);},D3S=(a,b)=>{let c,d;c=DoB(a.bKu,b);d=DoB(a.bKc,b);return Si(a.bM6,c,d,a.bLV,a.bLW,a.bMT,a.bNP,a.bMo,a.bLo,a.bMD);},DoB=(b,c)=>{let d;d=b.bJ9;GQ();if(d!==Th)return ARS(b,c);return b;},A53=(a,b)=>{return Si(a.bM6,ARS(a.bKu,b),a.bKc,a.bLV,a.bLW,a.bMT,a.bNP,a.bMo,a.bLo,a.bMD);},A5L=(a,b)=>{return Si(a.bM6,a.bKu,ARS(a.bKc,b),a.bLV,a.bLW,a.bMT,a.bNP,a.bMo,a.bLo,a.bMD);},B5s=(a,b)=>{let c,d;c +=a.bKc;d=c.bJ9;GQ();if(d===Th)return Si(a.bM6,CZU(a.bKu,b),a.bKc,a.bLV,a.bLW,a.bMT,a.bNP,a.bMo,a.bLo,a.bMD);return Si(a.bM6,a.bKu,CZU(c,b),a.bLV,a.bLW,a.bMT,a.bNP,a.bMo,a.bLo,a.bMD);},BZt=(a,b)=>{return Si(a.bM6,a.bKu,a.bKc,b,a.bLW,a.bMT,a.bNP,a.bMo,a.bLo,a.bMD);},BLF=(a,b)=>{return Si(a.bM6,a.bKu,a.bKc,a.bLV,b,a.bMT,a.bNP,a.bMo,a.bLo,a.bMD);},Cy3=(a,b)=>{return Si(a.bM6,a.bKu,a.bKc,a.bLV,a.bLW,b,a.bNP,a.bMo,a.bLo,a.bMD);},CLQ=a=>{return a.bLV;},Dez=a=>{return a.bLW;},BJh=a=>{let b,c;if(!a.bNP){b=a.bKu.bJ9;GQ();c +=Th;if(b===c&&a.bKc.bJ9!==c){QG();return W2;}if(b!==c&&a.bKc.bJ9===c){QG();return Xc;}QG();return ADW;}QG();return A3$;},Bds=a=>{let b;b=a.bM6;SV();return b!==ABL?0:1;},CVv=a=>{let b;b=a.bM6;SV();return b!==Bbr?0:1;},BfU=a=>{let b,c;b=a.bKc;if(b!==null){c=b.bJ9;GQ();if(c!==Th)return c;}return a.bKu.bJ9;},D6c=a=>{let b;b=a.bKu.bJ9;GQ();return b!==P6?0:1;},Dhm=a=>{let b;b=a.bKc.bJ9;GQ();return b!==P6?0:1;},AF_=a=>{let b,c;b=a.bKc;c=b.bJ9;GQ();if(c===Th)return a.bKu.bPp;return b.bPp;},AQt=a=>{return a.bKu;},Wg +=a=>{return a.bKc;},B5D=(a,b,c)=>{let d;d=Fi(c);if(Bds(a)&&d.bWe===0.0&&d.bU$===0.0)return b.h2(J$(2.0,2.0,d.bJw));return b.h2(d);},YB=(a,b)=>{return b.h2(Dw(a.bMo));},BU_=(a,b)=>{return Si(a.bM6,a.bKu,a.bKc,a.bLV,a.bLW,a.bMT,a.bNP,b,a.bLo,a.bMD);},FnN=a=>{return Si(a.bM6,a.bKu,a.bKc,a.bLV,a.bLW,a.bMT,a.bNP,a.bMo,a.bLo?0:1,a.bMD);},Ftn=(a,b)=>{return Si(a.bM6,a.bKu,a.bKc,a.bLV,a.bLW,a.bMT,a.bNP,a.bMo,a.bLo,b);},A0g=N(Bx),AY1=null,ABL=null,BKz=null,Bbr=null,CBS=null,FuH=null,SV=()=>{SV=Z(A0g);EV0();},ENo=(a, +b,c)=>{SV();Ct(a,b,c);},A2w=(a,b)=>{let c=new A0g();ENo(c,a,b);return c;},EV0=()=>{let b,c,d;AY1=A2w(E(883),0);ABL=A2w(E(4216),1);BKz=A2w(E(4217),2);Bbr=A2w(E(1618),3);b=A2w(E(935),4);CBS=b;c=K(A0g,5);d=c.data;d[0]=AY1;d[1]=ABL;d[2]=BKz;d[3]=Bbr;d[4]=b;FuH=c;},A_p=N(Bx),MG=null,L7=null,P6=null,Th=null,DTC=null,GQ=()=>{GQ=Z(A_p);FvL();},D3H=(a,b,c)=>{GQ();Ct(a,b,c);},Br8=(a,b)=>{let c=new A_p();D3H(c,a,b);return c;}; +let FvL=()=>{let b,c,d;MG=Br8(E(883),0);L7=Br8(E(4218),1);P6=Br8(E(4219),2);b=Br8(E(3549),3);Th=b;c=K(A_p,4);d=c.data;d[0]=MG;d[1]=L7;d[2]=P6;d[3]=b;DTC=c;},A0m=N(Bx),Xk=null,Ug=null,Xa=null,WE=null,CcV=null,KK=()=>{KK=Z(A0m);Ett();},CMo=()=>{KK();return CcV.b2();},Eoi=(a,b,c)=>{KK();Ct(a,b,c);},Bh0=(a,b)=>{let c=new A0m();Eoi(c,a,b);return c;},BVI=a=>{let b;switch(a.bGO){case 0:break;case 1:return (-1);case 2:return (-1);case 3:return 1;default:b=new BP;X(b);J(b);}return 1;},C6a=a=>{KK();return !(a!==Xk&&a +!==Ug)?1:0;},Bx1=a=>{KK();return !(a!==Xa&&a!==WE)?1:0;},Ett=()=>{let b,c,d;Xk=Bh0(E(4220),0);Ug=Bh0(E(4221),1);Xa=Bh0(E(4222),2);b=Bh0(E(4223),3);WE=b;c=K(A0m,4);d=c.data;d[0]=Xk;d[1]=Ug;d[2]=Xa;d[3]=b;CcV=c;},A$u=N(Bx),A$_=null,PA=null,DXT=null,OG=()=>{OG=Z(A$u);FgO();},E0a=(a,b,c)=>{OG();Ct(a,b,c);},B9w=(a,b)=>{let c=new A$u();E0a(c,a,b);return c;},FgO=()=>{let b,c,d;A$_=B9w(E(3549),0);b=B9w(E(3886),1);PA=b;c=K(A$u,2);d=c.data;d[0]=A$_;d[1]=b;DXT=c;},UL=N(0),Ma=N(),EfC=a=>{return 0;},Fy5=(a,b)=>{return;},A_B +=N(0),A0$=N(0); +function T$(){let a=this;Ma.call(a);a.cW_=null;a.c7M=null;a.c7U=null;a.coP=null;a.bWj=null;a.b0v=null;a.cJz=null;a.cBg=null;a.b2c=0;a.cFl=null;a.cgl=null;a.caH=null;a.c6W=0;a.cHp=null;a.cwq=null;a.cxq=null;a.cSs=null;} +let EE5=(a,b)=>{a.cW_=b;},BgW=a=>{let b,c,d;b=B0(a.cgl,EgG(a));if(b!==null){c=a.bWj.bMT;if(c!==null){B9();b=Wu(b,Cz,c);}}d=K(Ob,1);d.data[0]=b;return d;},EgG=a=>{B8();return Du(BlP,a.cW_);},Cp7=(a,b,c,d,e,f)=>{a.b0v=PZ(Bo(AIo));a.b2c=0;a.caH=Bk();a.c6W=0;a.cHp=G$();a.cgl=b;a.c7M=f;a.cJz=null;a.coP=c;a.bWj=d;a.cBg=e;},FbJ=(a,b)=>{a.cJz=b;},B2c=a=>{a.b2c=1;},Fyt=(a,b)=>{a.cFl=b;},EK$=a=>{return a.b2c;},Bzw=(a,b)=>{let c,d;c=a.cFl;d=c===null?0:1;a:{b:{if(a!==b&&!(d&&c===b)){if(!d)break b;if(!Bzw(c,b))break b;}d +=1;break a;}d=0;}return d;},CDv=(a,b)=>{let c,d;b.b1C=a;if(a.WL()&&b.bLO!==a.GG())return 1;c=a.b0v;d=b.bSw;OJ(c,d);if(Ba3(a.b0v)==1&&C5_(a))a.c6W=1;d=b.bSw;Hy();if(d===Ri){c=a.cHp;d=b.bLO;if(PT(c,d))return 0;}d=b.bSw;if(!(d!==PX&&d!==Vs)){c=a.cHp;d=b.bLO;EQ(c,d);}return 1;},A4O=a=>{let b,c;b=a.b0v;Hy();c=AOb;return OS(b,c);},C5_=a=>{let b,c;b=a.b0v;Hy();c=Ri;return OS(b,c);},BZ7=a=>{let b,c;if(a.cBg!==null){b=Yu();c=new BWZ;c.ca1=a.cBg;return BZg(Us(b,c),a.coP);}return a.coP;},Dx_=a=>{return a.caH;},D1m=(a, +b)=>{let c,d,e,f;c=b.bJ_;HK();if(c!==Lr&&c!==OL&&c!==A9n&&c!==BwM){b=new JK;d=K(Bi,1);e=d.data;f=F9(c.bHx);c=new S;T(c);H(H(H(c,E(4224)),f),E(4225));e[0]=Q(c);J2(b,d);return b;}f=a.WO(c);if(b.bJ_===f)c=b;else{c=BFL(b.bSy,b.b1F,f,b.bP4,b.cnY);c.bOz=b.bOz;c.b4_=b.b4_;c.bMc=b.bMc;c.b12=b.b12;}U(a.caH,c);return null;},Fgr=(a,b)=>{return b;},CrU=(a,b)=>{let c;a.cwq=b;if(b!==null&&BO(b,E(580))){c=new Bt;Bp(c,b);J(c);}},DUD=(a,b)=>{a.cxq=b;},CsR=(a,b)=>{a.cSs=b;},Fz1=a=>{return a.cwq;},FzA=a=>{return a.cgl;},BJp=a=> +{let b;b=KV(a.c7M);Hb();Db(b,IO,E(4226));Db(b,A7r,(a.GG()).bV_);Db(b,A7q,(a.Fq()).bV_);Db(b,KD,a.c7U);return b;}; +function AGO(){let a=this;T$.call(a);a.bRm=null;a.bVI=null;a.c6w=0;} +let CTx=(a,b,c,d,e,f,g,h,i)=>{Cp7(a,b,e,f,g,i);a.bVI=c;a.bRm=d;a.c6w=h;},DyT=(a,b,c,d,e,f,g,h)=>{let i=new AGO();CTx(i,a,b,c,d,e,f,g,h);return i;},EZ_=(a,b)=>{let c;c=a.bRm;KK();if(c!==Xk&&c!==Ug){if(c!==Xa&&c!==WE){b=new BP;X(b);J(b);}HK();return Lr;}HK();return OL;},EdY=a=>{return a.bVI;},E27=a=>{return a.bVI;},DD1=(a,b)=>{return a.bVI!==b?0:1;},DE3=(a,b)=>{return b!==a.bVI?0:1;},ETu=a=>{return 0;}; +function C$X(){let a=this;F.call(a);a.bYQ=null;a.bP$=null;a.bHL=null;a.bG5=null;a.b8U=null;a.bJ1=null;} +let EDv=(a,b,c,d)=>{let e;a.b8U=E9();a.bHL=d;a.bYQ=b;a.bP$=c;if(!(c!==null&&c.bP$!==null))a.bJ1=d;else{c=c.bJ1;e=b.b2M;b=new S;T(b);H(H(H(b,c),e),d);a.bJ1=Q(b);}b=a.bYQ;U(b.crx,a);c=b.b9u;d=a.bHL;c=DG(c,d);if(c!==null)c.cqp=c.cqp+1|0;else{c=new DqV;c.cqp=1;c.cSw=a;b=b.b9u;d=a.bHL;C9(b,d,c);}},Drk=(a,b,c)=>{let d=new C$X();EDv(d,a,b,c);return d;},D62=a=>{return a.bJ1;},AYN=a=>{let b,c,d;b=a.bP$;if(b!==null&&b.bP$!==null){b=AYN(b);c=a.bHL;d=new S;T(d);b=H(d,b);Bb(b,46);H(b,c);return Q(d);}return a.bHL;},Be6=a=> +{return a.bHL;},ANv=a=>{return a.bP$!==null?0:1;},AD6=a=>{return a.bG5;},AGF=(a,b)=>{let c,d,e;if(DnH(a.bYQ)){b=COG(a,b);c=a.bYQ.b2M;d=a;while(true){e=IZ(b,c);if(e==(-1))break;d=BPA(d,B_(b,0,e));b=COG(a,CC(b,e+c.bGI.length|0));}return BPA(d,b);}return BPA(a,b);},BPA=(a,b)=>{let c;c=FW(a.b8U,b);if(c===null){c=Drk(a.bYQ,a,b);Es(a.b8U,b,c);}return c;},COG=(a,b)=>{let c;c=a.bYQ.b2M;while(BO(b,c)){b=CC(b,c.bGI.length);}while(Dr(b,c)){b=B_(b,0,b.bGI.length-c.bGI.length|0);}return b;},BdV=a=>{return Gc(a.b8U);},C8t +=a=>{return a.b8U.bHv;},BOU=N(0),CRE=N(0),BJ4=N(0); +function AB2(){let a=this;F.call(a);a.c04=null;a.bOU=null;a.bH4=null;a.bIa=null;a.bKL=null;a.bJn=null;a.bH1=null;a.cgF=null;a.bHD=null;a.bGZ=null;a.bYu=null;a.c4v=null;a.bWr=null;a.ci7=null;a.cqR=null;a.cE0=null;a.ck3=null;a.ddg=0;a.b$o=0;a.bMi=null;a.cA8=null;a.cuV=null;a.cC2=null;a.b6t=null;a.bYt=0;a.cSk=0;a.cmN=null;a.cb7=null;a.c4c=null;a.bG_=null;a.cyN=null;} +let CSo=0,AOT=()=>{AOT=Z(AB2);E2f();},A$s=(a,b)=>{K$();if(b!==Ku){if(b!==M5){b=new Bt;X(b);J(b);}return a.cC2;}return a.cuV;},BEl=(a,b,c,d,e,f,g)=>{let h,i;AOT();a.bH1=Yu();a.cgF=null;A7X();a.bYu=CZ9;Qa();a.ci7=RW;a.cqR=G$();a.cA8=AAh();a.cuV=Bk();a.cC2=Bk();a.cmN=Nq(Bo(Nf));a.bG_=Qd();a.cyN=E9();a.bMi=c;a.c04=b;a.bH4=B$(d);a.bOU=e;if(ANv(d))a.bJn=E(4227);else{h=ElY(e);KO();i=K(F,1);i.data[0]=CL(h);c=Jv(E(4228),i);d=new S;T(d);H(H(d,E(4229)),c);a.bJn=Q(d);}a.bKL=f;a.ddg=g;b=a.bH4;if(b.bG5!==null){b=new BP;X(b);J(b);}b.bG5 +=a;},FxV=(a,b,c,d,e,f)=>{let g=new AB2();BEl(g,a,b,c,d,e,f);return g;},DeO=(a,b,c,d,e,f,g,h)=>{AOT();BEl(a,b,c,B$(d),e,f,h);a.bWr=g;},Fhz=(a,b,c,d,e,f,g)=>{let h=new AB2();DeO(h,a,b,c,d,e,f,g);return h;},Ga=a=>{return a.bHD;},C9f=(a,b)=>{let c;c=a.bHD;Cy();if(c===NG&&b===PI)a.bKL.WU();a.bWr=null;a.bHD=b;},BDv=(a,b,c)=>{let d,e;a:{B$(b);d=a.bHD;Cy();if(d!==AQX){if(b!==d){e=AD7;if(d!==e&&d!==VI&&d!==NG&&d!==ACy&&d!==SZ&&d!==ABt&&d!==AAq)return 0;if(b===e)break a;if(b===VI)break a;if(b===NG)break a;if(b===ACy)break a;if +(b===SZ)break a;if(b===ABt)break a;if(b===AAq)break a;if(b===PI)break a;return 0;}return 1;}}if(d===NG&&b===PI)a.bKL.WU();a.bHD=b;a.ck3=c;return 1;},A7f=a=>{return a.bH1;},DVB=(a,b)=>{a.bH1=b;},Cvd=a=>{return a.bJn;},Tm=a=>{return a.bGZ;},DkV=(a,b)=>{a.bGZ=b;},Cmo=a=>{let b,c,d,e,f,g;b=a.bH4.bJ1;c=BY(a.bH1);d=BY(a.bHD);e=BY(a.bWr);f=a.bJn;g=new S;T(g);b=H(g,b);Bb(b,32);c=H(b,c);Bb(c,40);H(H(H(H(H(c,d),E(4230)),e),E(60)),f);return Q(g);},CaF=(a,b)=>{a.bIa=b;},Bvv=(a,b)=>{let c;c=a.ci7;a.ci7=AQR(BC(c.cbr,b.cbr), +BC(c.cbs,b.cbs),BC(c.cbt,b.cbt),BC(c.cbu,b.cbu));},AQs=a=>{AWG(a);return a.cE0;},Ccm=(a,b)=>{AWG(a);a.c4v=b;},BD_=a=>{AWG(a);return a.c4v;},DM5=a=>{return a.bKL;},T7=a=>{let b,c;b=a.bHD;Cy();if(b!==YI){if(b!==AEq){if(b===VL){if(!ANv(a.bH4)){b=a.bGZ;if(b!==null){F_();c=I7(b,Hl);Jb();if(!BG(E(4231),c))return BG(E(4232),c)?AHz:BG(E(4233),c)?AAY:BG(E(4234),c)?AP$:BG(E(4235),c)?APG:BG(E(4236),c)?ANX:!BG(E(4237),c)?LQ:ANb;c=new BV;X(c);J(c);}Jb();return LQ;}Jb();return LQ;}Jb();return LQ;}Jb();return A59;}Jb();return ASh;},A40 +=a=>{let b;if(!Hh(a)){b=new BV;X(b);J(b);}},AWG=a=>{let b;if(Hh(a)){b=new BV;X(b);J(b);}},HR=a=>{A40(a);return a.bWr;},C5r=a=>{let b,c,d,e,f;A40(a);b=a.bGZ;if(b!==null){a:{if(!b.c6K)c=null;else{d=P2(AQ8(Bo(AKJ)));b:{while(true){if(!OD(d))break b;c=Pr(d);e=BY(c);f=new S;T(f);H(H(H(f,E(1775)),e),E(1776));if(BG(Q(f),b.bIJ.bJs))break;}break a;}c=null;}}return c;}return null;},Hh=a=>{let b;if(a.bWr!==null&&a.bHD!==null){b=new BP;X(b);J(b);}if(Df()){AOT();if(!CSo&&a.bWr!==null&&a.bHD!==null){b=new C4;X(b);J(b);}}if +(a.bWr===null){if(a.bHD===null){b=new BP;X(b);J(b);}return 0;}return 1;},B2_=(a,b,c)=>{let d,e;A40(a);a.cE0=b;a.bIa=null;d=Br(E2(K6(a.bOU)));while(Bq(d)){e=Bm(d);if(BLg(a,e))A3l(a.bOU,e);}a.bWr=null;a.bHD=c;},Mt=a=>{let b;b=a.bHD;Cy();if(b!==Wd){if(b!==Y8){if(b===ASb){F$();return AAP;}return a.ck3;}F$();return A4y;}F$();return A8Z;},AT8=a=>{let b;if(!KX(a)){b=Ja(a);if(b!==a){if(b!==null&&AT8(b))return 1;return Dew(a.bOU,a);}return 0;}return 0;},Qq=a=>{let b;if(!KX(a)){b=Ja(a);if(b!==a){if(b!==null&&Qq(b))return 1;return BYg(a.bOU, +a);}return 0;}return 0;},Ctz=a=>{let b,c,d;if(!Hh(a)){b=(K6(a.bOU)).dX();while(b.dY()){c=b.dZ();if(UY(c,a)){d=ANk(c,a);if(!DZA(a.bOU,d)&&!BS6(L1(c)))return 0;}}return 1;}b=(BdV(a.bH4)).dX();while(b.dY()){if(!Ctz((b.dZ()).bG5))return 0;}return 1;},EjZ=a=>{return a.c4c;},CEb=a=>{return a.cyN;},Ft0=(a,b)=>{a.bG_=b;},PP=(a,b,c)=>{if(c!==null)a.bG_=Lg(a.bG_,b,c);},BWf=a=>{AWG(a);return a.cqR;},CPb=(a,b)=>{EQ(a.cqR,b);},CeM=(a,b)=>{let c,d,e;A7X();c=CtD();b=DX(C55,b,0);while(EZ(b)){d=c.ckd;e=CU(b,1);EQ(d,e);}a.bYu +=c;},BuA=(a,b)=>{let c;c=M7(a.cmN,b);if(c===null)return Gi();return c;},B1B=(a,b)=>{let c,d,e,f,g,h;A40(a);c=Dcu(a.bGZ,b.cp());d=a.bKL.W0();if(d.dV()){if(c!==null){e=XK(b,c);f=null;g=d.dX();while(g.dY()){h=g.dZ();f=f===null?B4(b.gs(),h.p()):BZg(f,B4(b.gs(),h.p()));}return C_(f,e,IR(c),b);}b=new Bt;X(b);J(b);}return BhM();},Ja=a=>{if(!ANv(a.bH4))return a.bH4.bP$.bG5;return null;},Pw=a=>{let b,c,d;b=Bk();c=(BdV(a.bH4)).dX();while(c.dY()){d=(c.dZ()).bG5;if(d!==null&&!Hh(d))U(b,d);}return b;},Rk=a=>{let b,c,d;b +=Bk();c=(BdV(a.bH4)).dX();while(c.dY()){d=(c.dZ()).bG5;if(d!==null&&Hh(d))U(b,d);}return b;},AUe=a=>{return C8t(a.bH4);},KX=a=>{return ANv(a.bH4);},En=a=>{return a.bH4.bHL;},BQB=a=>{let b,c,d,e;b=HR(a);F7();if(b!==Kw){if(HR(a)!==AWA){if(HR(a)!==BsP){if(HR(a)!==N2){c=(K6(a.bOU)).dX();while(true){if(!c.dY()){c=(Pw(a)).dX();while(c.dY()){b=T7(c.dZ());Jb();if(b!==LQ)return 0;}return 1;}b=c.dZ();if(!Hh(a)){c=new Bt;X(c);J(c);}d=b.bHn;e=b.bHo;b=Ja(d);if(!(BdS(Ja(e),a)!=BdS(b,a)?0:1))break;}return 0;}return 1;}return 1;}return 1;}return 0;},Ew2 +=a=>{return a.bYt;}; +let TF=a=>{return a.bOU.bGM;},A2O=a=>{if(a.bOU.caP)return B1(TF(a));return a.c04;},E2f=()=>{CSo=0;}; +function CRa(){let a=this;F.call(a);a.b29=null;a.b6T=null;a.b6U=null;a.b7I=null;a.b7H=null;a.b5G=null;a.b5D=null;a.b1y=null;a.b1z=null;a.bWd=null;a.bTD=0;} +let AHE=(b,c)=>{return AAc(b,c,1);},KY=b=>{HW();return AAc(Lu,b,1);},AAc=(b,c,d)=>{let e,f,g,h,i,j,k;e=null;if(FQ(b))f=Lu;else{g=Bk();h=1;i=Br(b.bIc);while(Bq(i)){j=Bm(i);k=j.p();if(d&&h&&AIW(j))k=Dk(CC(k,1));F_();k=ANH(ALr,k);U(g,k);h=0;}f=AVM(b.bMJ,g,b.bSH,b.bNJ,b.bMn);if(d&&AIW(Ne(b,0)))e=ASq(Ne(b,0),0);}return ARL(f,c,null,null,null,null,e,null,null,null,null);},VF=(a,b,c)=>{return ARL(a.b29,a.bTD,b,c,a.b5G,a.b5D,a.bWd,a.b1y,a.b1z,a.b7I,a.b7H);},DuT=(a,b,c)=>{return ARL(a.b29,a.bTD,a.b6T,a.b6U,a.b5G,a.b5D, +a.bWd,a.b1y,a.b1z,b,c);},DyH=(a,b,c)=>{return ARL(a.b29,a.bTD,a.b6T,a.b6U,a.b5G,a.b5D,a.bWd,b,c,a.b7I,a.b7H);},Xq=(a,b,c)=>{return ARL(a.b29,a.bTD,a.b6T,a.b6U,b,c,a.bWd,a.b1y,a.b1z,a.b7I,a.b7H);},Epe=(a,b,c,d,e,f,g,h,i,j,k,l)=>{a.b29=b;a.bWd=h;a.bTD=c;a.b6T=d;a.b6U=e;a.b5G=f;a.b5D=g;a.b1y=i;a.b1z=j;a.b7I=k;a.b7H=l;},ARL=(a,b,c,d,e,f,g,h,i,j,k)=>{let l=new CRa();Epe(l,a,b,c,d,e,f,g,h,i,j,k);return l;}; +function ANs(){let a=this;F.call(a);a.bMK=null;a.crQ=0;a.ctO=0;a.c2H=0;a.bQT=null;a.czz=null;} +let BJy=a=>{a.crQ=0;a.ctO=0;a.c2H=0;a.bQT=Qd();a.czz=Bk();},AKF=a=>{let b;b=a.bQT;CM();return DQ(b,E1);},CQO=(a,b)=>{Cmu(a,b,0);},Cmu=(a,b,c)=>{let d,e;if(!c){d=a.bQT;CM();a.bQT=Lg(d,E1,b);}else{d=a.czz;e=a.bQT;CM();b=Lg(e,E1,b);U(d,b);}},ETT=a=>{return a.czz;},Ep9=(a,b)=>{a.bQT=b;},AXa=a=>{return a.bQT;},U5=(a,b)=>{let c,d,e,f;if(b!==null){c=M0(b,E(939));d=0;while(JO(c)){e=M0(H5(c),E(349));while(JO(e)){a:{b=H5(e);if(BG(b,E(2322))){a.bMK=AQj(a.bMK);break a;}if(BG(b,E(350))){a.bMK=DdH(a.bMK);break a;}if(BG(b, +E(2323))){a.bMK=Bns(a.bMK);break a;}if(BG(b,E(2324))){a.crQ=1;break a;}if(BG(b,E(583))){a.ctO=1;break a;}if(BG(b,E(3999)))break a;if(BG(b,E(774))){a.c2H=1;break a;}if(BG(b,E(4238))){a.W4();break a;}if(!BO(b,E(4239))){Cmu(a,Eu(KI(),b),d);break a;}f=DM(CC(b,E(4239).bGI.length));b=a.bMK;a.bMK=A1O(b.bJG,b.bJi,b.bO5,AY9(b.bN3,f));}}d=d+1|0;}return;}}; +function NZ(){let a=this;ANs.call(a);a.bHn=null;a.bHo=null;a.cqe=null;a.cqf=null;a.bLP=null;a.cIv=null;a.b6v=null;a.cIN=0;a.b9Z=0.0;a.caM=0;a.b3A=0;a.bWG=null;a.b90=0;a.cLl=0;a.b2B=null;a.bU4=null;a.bPW=null;a.cs9=null;a.cwp=null;a.b8s=null;a.b3$=null;a.cNb=null;} +let Dcj=a=>{return a.bU4;},CE4=a=>{AH1();return AJq;},Ecj=a=>{let b,c,d;if(!CRw(a.bMK)){b=a.bMK;c=b.bJG;FU();d=Hf;if(c===d&&b.bJi===d?1:!(c!==d&&b.bJi!==d)?0:1){b=En(a.bHn);d=En(a.bHo);c=new S;T(c);b=H(c,b);Bb(b,45);H(b,d);return Q(c);}b=En(a.bHn);d=En(a.bHo);c=new S;T(c);H(H(H(c,b),E(4240)),d);return Q(c);}b=En(a.bHn);d=En(a.bHo);c=new S;T(c);H(H(H(c,b),E(4241)),d);return Q(c);},E9Y=a=>{let b,c,d,e;if(CRw(a.bMK)){b=new ACL;c=En(a.bHn);d=En(a.bHo);e=new S;T(e);H(H(H(H(e,E(4242)),c),E(95)),d);API(b,Q(e));return b;}b +=new ACL;c=En(a.bHn);d=En(a.bHo);e=new S;T(e);H(H(H(H(e,E(4243)),c),E(95)),d);API(b,Q(e));return b;},O3=(a,b,c,d,e,f,g,h)=>{BJy(a);a.cIN=0;a.b9Z=1.0;a.caM=1;a.b3A=0;M3();a.bWG=Xr;if(h.bTD>=1){a.cwp=b;a.cs9=c;a.bU4=d;a.bHn=B$(e);a.bHo=B$(f);a.bMK=g;a.cIv=Ui(c,E(4244));a.bLP=h;b=Cf(c);IY();if(WV(b,VC)&&(BQp(T7(e))?0:1)^(BQp(T7(f))?0:1))a.caM=0;return;}b=new Bt;X(b);J(b);},KE=(a,b,c,d,e,f,g)=>{let h=new NZ();O3(h,a,b,c,d,e,f,g);return h;},AA9=a=>{let b,c,d,e,f,g,h,i,j,k,l,m;b=new NZ;c=a.cwp;d=a.cs9;e=a.bU4;f=a.bHo;g +=a.bHn;h=L1(a);i=new H6;j=h.bJi;k=h.bJG;l=h.bO5;UM();m=AWm;if(l===m)l=ANU;else if(l===ANU)l=m;WF(i,j,k,l,h.bN3);m=a.bLP;O3(b,c,d,e,f,g,i,ARL(m.b29,m.bTD,m.b6U,m.b6T,m.b5G,m.b5D,m.bWd,m.b1z,m.b1y,m.b7H,m.b7I));b.b3A=a.b3A?0:1;b.cqe=a.cqf;b.cqf=a.cqe;b.b8s=a.b8s;b.b3$=a.b3$;b.bPW=a.bPW;b.bLP.bWd=a.bLP.bWd;b.bWG=a.bWG;return b;},Ej0=a=>{a.caM=0;},AVq=a=>{return a.bLP.b5G;},AVI=a=>{return a.bLP.b5D;},DOj=a=>{return a.cIv;},AG$=a=>{if(BS6(a.bMK))return 1;return a.cIN;},EYT=a=>{let b,c,d,e,f;b=JH(a);c=a.bLP.bTD;d +=BY(a.bHn);e=BY(a.bHo);f=new S;T(f);b=H(H(f,b),E(1763));BE(b,c);H(H(H(H(b,E(4245)),d),E(4246)),e);return Q(f);},AF4=a=>{return a.bHn;},AJg=a=>{return a.bHo;},CMv=(a,b,c,d)=>{let e;e=T7(b);if(!(!(!CMS(e)&&e!==AAY&&e!==AHz)?1:0))return CY_(BnD(d,b),c!==null?CJk(c):null);return CY_(BnD(d,b),E(4247));},L1=a=>{let b,c;if(!a.b90){if(a.b2B!==null){b=new H6;FU();c=Hf;Mo(b,c,c);return b;}return a.bMK;}c=new H6;FU();b=Hf;Mo(c,b,b);return c;},CBx=(a,b)=>{if(Hh(b))return ((Rk(b)).dV()+(Pw(b)).dV()|0)<=0?0:1;return 0;},XF +=a=>{return a.bLP.b29;},M2=a=>{return a.bLP.bTD;},Bef=(a,b)=>{a.bLP.bTD=b;},ATc=a=>{return a.bLP.b6T;},ATs=a=>{return a.bLP.b6U;},Bh3=a=>{return a.bLP.b7I;},BuL=a=>{return a.bLP.b7H;},CPP=a=>{return a.b6v;},B7$=(a,b,c)=>{b=b.b6v;if(b!==null)a.b6v=E7W(b.ced,b.clj,b.cev,c);},DKK=a=>{if(Hh(a.bHn)){if(Hh(a.bHo)){if(a.bHn===a.bHo)return 1;return 0;}return 0;}return 0;},C3p=(a,b)=>{if(a.bHn.bHD!==b&&a.bHo.bHD!==b)return 0;return 1;},UY=(a,b)=>{if(a.bHn!==b){if(a.bHo===b)return 1;return 0;}return 1;},ANk=(a,b)=>{let c;c +=a.bHn;if(c!==b){if(a.bHo!==b){b=new Bt;X(b);J(b);}return c;}return a.bHo;},A5c=a=>{let b,c;if(a.b3A){b=a.bWG;M3();c=AJ3;if(b===c)c=AHT;else if(b!==AHT)c=Xr;return c;}return a.bWG;},ESJ=(a,b)=>{a.bWG=b;},EIj=a=>{let b,c;a:{b:{if(!Hh(a.bHn)&&!Hh(a.bHo)){b=T7(a.bHn);Jb();if(b!==LQ&&T7(a.bHo)!==LQ&&Ja(a.bHn)===Ja(a.bHo))break b;}c=0;break a;}c=1;}return c;},EA2=a=>{return a.b8s;},C1H=(a,b)=>{a.b8s=b;},Dfa=a=>{return !(!a.crQ&&!AT8(a.bHn)&&!AT8(a.bHo))?1:0;},A1P=(a,b)=>{let c,d;c=a.bHn;d=b.bHn;if(c===d&&a.bHo=== +b.bHo)return 1;if(c===b.bHo&&a.bHo===d)return 1;return 0;},Bev=a=>{let b;b=a.bPW;if(b!==null&&EBQ(a.cs9,b))return 1;return !(!Qq(a.bHn)&&!Qq(a.bHo))?1:0;},C1K=(a,b,c)=>{a.cqe=b;a.cqf=c;if(b!==null)CPb(a.bHn,b);if(c!==null)CPb(a.bHo,c);},BkV=a=>{return a.b3$;},DYr=a=>{let b,c;b=a.cNb;if(b!==null){c=b.bT9;b=new S;T(b);BE(b,c);return Q(b);}return null;},DGa=(a,b)=>{a.cNb=b;},D00=(a,b)=>{a.bPW=b;},Cq8=a=>{return a.bPW;},Dgj=a=>{return a.bLP.bWd;},EVf=a=>{return a.cwp;}; +function ACW(){let a=this;F.call(a);a.bNw=null;a.b2A=null;a.c7B=0;a.c30=null;a.bYU=0;a.cQA=null;a.cSU=null;a.csR=null;a.cDZ=null;a.cqy=null;a.c6U=null;} +let ChN=(a,b,c,d,e)=>{let f,g,h;f=B1(a.bNw);B8();g=B0(f,Du(B_W,e));e=a.cDZ;h=new DcP;f=a.bNw;h.b59=g;h.c2N=c;h.dab=a;h.c2t=b;h.b4f=f;h.cj7=d;U(e,h);},Bqz=(a,b,c,d,e,f,g,h,i)=>{a.cDZ=Bk();a.cSU=g;a.c6U=h;a.cQA=f;a.bNw=c;a.c7B=e;a.b2A=d;a.bYU=i;b=B4(c.bH$,b);a.c30=b;f=new CI4;if(ATq(b)){GO();b=HD;}else{d=a.bNw;g=B1(d);B8();g=XK(d,B0(g,Z5));h=a.c30;B3();b=C_(h,g,CF,a.bNw);}f.chw=b;f.cf$=c;f.czG=e;a.cqy=f;},AWs=a=>{let b;b=B1(a.bNw);B8();return B0(b,Du(CG(Z5,a.c6U),a.cQA));},BPV=a=>{return a.cDZ;},DTJ=a=>{return a.c7B;},Ekx +=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=a.cqy;d=c.chw;GO();if(d!==HD){d.cC(b);if(!c.czG){e=B0(B1(c.cf$),Ca$(c));B9();b=(b.h2((BJ(e,Cz)).cu(c.cf$.bGN))).h2(Fi(B0(B1(c.cf$),Ca$(c))));c=c.chw.cF(b.hE());f=c.bGE+1.0;g=c.bGF+1.0;h=Hr(6).data;h[0]=(-5.0);h[1]=g;h[2]=f;h[3]=g;h[4]=f+10.0;h[5]=0.0;i=0;j=h.length-2|0;while(i{let c,d;c=a.cqy;d=(c.chw.cF(b)).bGF;return !c.czG?d+1.0:d-1.0;},AN9=a=>{if(a.csR===null)a.csR=a.Xb();return a.csR;},AUc +=N(Bx),Bqb=null,BcM=null,BXF=null,CqI=null,AYq=()=>{AYq=Z(AUc);D3Q();},Fap=(a,b,c)=>{AYq();Ct(a,b,c);},B3o=(a,b)=>{let c=new AUc();Fap(c,a,b);return c;},D3Q=()=>{let b,c,d;Bqb=B3o(E(4248),0);BcM=B3o(E(4249),1);b=B3o(E(469),2);BXF=b;c=K(AUc,3);d=c.data;d[0]=Bqb;d[1]=BcM;d[2]=b;CqI=c;},CzK=N(),Dp6=null,BY_=()=>{BY_=Z(CzK);EnG();},EnG=()=>{let b,c;AYq();b=Ca((CqI.b2()).data.length);c=b.data;Dp6=b;c[Bqb.bGO]=1;c[BcM.bGO]=2;c[BXF.bGO]=3;}; +function BWS(){let a=this;ACW.call(a);a.clK=null;a.cyg=null;a.ciL=null;a.c3J=null;} +let Fjo=a=>{let b,c,d,e,f,g,h,i,j;b=new C4j;c=a.b2A;d=a.bNw;e=a.bYU;f=AWs(a);g=a.clK;h=a.cyg;i=a.ciL;j=a.c3J;AX8(b,c,d,e,f,null,h);b.bMG=g;b.cPE=i;b.b2F=j;return b;},E4K=(a,b,c)=>{b=new BV;X(b);J(b);},DuD=(a,b,c,d,e)=>{let f,$$je;c=e.data[0];a:{b:{try{f=DM(c);break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){c=$$je;break b;}else{throw $$e;}}}GP(c);f=0.0;}if(b===null)a.ciL=DL(f);else{c=a.clK.cb6;d=DL(f);Qm(c,b,d);}if(a.ciL===null)a.ciL=DL(f);},Dya=(a,b,c,d,e)=>{let f,g;f=a.cyg;g=BRf(1.0,b,c,d,a.bNw,e);U(f, +g);},AS0=N(Bx),T_=null,Y0=null,M5=null,Ku=null,Es_=null,K$=()=>{K$=Z(AS0);EtF();},BaW=b=>{K$();return Ss(Bo(AS0),b);},Ekr=(a,b,c)=>{K$();Ct(a,b,c);},Bv_=(a,b)=>{let c=new AS0();Ekr(c,a,b);return c;},DrR=b=>{K$();return BaW(Vq(b));},BZO=(a,b)=>{let c;c=B$(b);Pf();if(c!==AAK){K$();b=T_;if(a!==b){c=Y0;if(a!==c){if(a!==M5){if(a!==Ku){b=new BP;X(b);J(b);}return c;}return b;}return Ku;}return M5;}return a;},EtF=()=>{let b,c,d;T_=Bv_(E(422),0);Y0=Bv_(E(420),1);M5=Bv_(E(860),2);b=Bv_(E(859),3);Ku=b;c=K(AS0,4);d=c.data;d[0] +=T_;d[1]=Y0;d[2]=M5;d[3]=b;Es_=c;},AI5=N(Bx),APu=null,VI=null,NG=null,SZ=null,AD7=null,AK7=null,AKX=null,AOy=null,AN1=null,AJG=null,AMG=null,Yg=null,Ok=null,A30=null,PI=null,ACO=null,ANr=null,A9k=null,ACy=null,ASb=null,AAq=null,ABt=null,Wd=null,Y8=null,O9=null,BxP=null,AEE=null,AOF=null,AIC=null,AGi=null,AFJ=null,ACF=null; +let BM1=null,VL=null,Xn=null,AE4=null,AE$=null,ASH=null,A6s=null,AWe=null,AIF=null,BEf=null,A1y=null,Yo=null,A78=null,YI=null,AEq=null,BiB=null,BmW=null,Bec=null,ByO=null,AQX=null,Cnc=null,C16=null,Cy=()=>{Cy=Z(AI5);Et5();},EoU=(a,b,c)=>{Cy();Ct(a,b,c);},Fq=(a,b)=>{let c=new AI5();EoU(c,a,b);return c;},Coz=b=>{let c;Cy();c=J3(b);if(!BO(c,E(4250))){if(!BO(c,E(4251))){if(!BO(c,E(2565)))return Ss(Bo(AI5),c);return NG;}return ASH;}return VI;},AJn=a=>{Cy();return OS(Cnc,a);},FmS=()=>{let b,c;Cy();b=K(AI5,52);c=b.data;c[0] +=APu;c[1]=VI;c[2]=NG;c[3]=SZ;c[4]=AD7;c[5]=AK7;c[6]=AKX;c[7]=AOy;c[8]=AN1;c[9]=AJG;c[10]=AMG;c[11]=Yg;c[12]=Ok;c[13]=A30;c[14]=PI;c[15]=ACO;c[16]=ANr;c[17]=A9k;c[18]=ACy;c[19]=ASb;c[20]=AAq;c[21]=ABt;c[22]=Wd;c[23]=Y8;c[24]=O9;c[25]=BxP;c[26]=AEE;c[27]=AOF;c[28]=AIC;c[29]=AGi;c[30]=AFJ;c[31]=ACF;c[32]=BM1;c[33]=VL;c[34]=Xn;c[35]=AE4;c[36]=AE$;c[37]=ASH;c[38]=A6s;c[39]=AWe;c[40]=AIF;c[41]=BEf;c[42]=A1y;c[43]=Yo;c[44]=A78;c[45]=YI;c[46]=AEq;c[47]=BiB;c[48]=BmW;c[49]=Bec;c[50]=ByO;c[51]=AQX;return b;},Et5=()=> +{let b,c,d;APu=Fq(E(4252),0);VI=Fq(E(4253),1);NG=Fq(E(262),2);SZ=Fq(E(452),3);AD7=Fq(E(4254),4);AK7=Fq(E(4255),5);AKX=Fq(E(4256),6);AOy=Fq(E(4257),7);AN1=Fq(E(4258),8);AJG=Fq(E(578),9);AMG=Fq(E(4259),10);Yg=Fq(E(4260),11);Ok=Fq(E(455),12);A30=Fq(E(4261),13);PI=Fq(E(263),14);ACO=Fq(E(1883),15);ANr=Fq(E(284),16);A9k=Fq(E(4262),17);ACy=Fq(E(4263),18);ASb=Fq(E(3886),19);AAq=Fq(E(4264),20);ABt=Fq(E(4265),21);Wd=Fq(E(494),22);Y8=Fq(E(4266),23);O9=Fq(E(265),24);BxP=Fq(E(4267),25);AEE=Fq(E(264),26);AOF=Fq(E(4268),27);AIC +=Fq(E(4269),28);AGi=Fq(E(4270),29);AFJ=Fq(E(4271),30);ACF=Fq(E(4272),31);BM1=Fq(E(4273),32);VL=Fq(E(261),33);Xn=Fq(E(4274),34);AE4=Fq(E(4275),35);AE$=Fq(E(4276),36);ASH=Fq(E(4277),37);A6s=Fq(E(4278),38);AWe=Fq(E(4279),39);AIF=Fq(E(4280),40);BEf=Fq(E(4281),41);A1y=Fq(E(467),42);Yo=Fq(E(521),43);A78=Fq(E(525),44);YI=Fq(E(4282),45);AEq=Fq(E(4283),46);BiB=Fq(E(4284),47);BmW=Fq(E(4285),48);Bec=Fq(E(4286),49);ByO=Fq(E(4287),50);AQX=Fq(E(4288),51);C16=FmS();b=AD7;c=K(AI5,12);d=c.data;d[0]=VI;d[1]=NG;d[2]=SZ;d[3]=ACy;d[4] +=A1y;d[5]=AK7;d[6]=AKX;d[7]=AOy;d[8]=AN1;d[9]=AJG;d[10]=AAq;d[11]=ABt;Cnc=De9(b,c);},Nf=N(Bx),Gy=null,FL=null,G_=null,HG=null,Ci2=null,DC=()=>{DC=Z(Nf);D2r();},EZg=(a,b,c)=>{DC();Ct(a,b,c);},Bb7=(a,b)=>{let c=new Nf();EZg(c,a,b);return c;},CKi=a=>{let b;switch(a.bGO){case 0:break;case 1:DC();return Gy;case 2:DC();return HG;case 3:DC();return G_;default:b=new BP;X(b);J(b);}DC();return FL;},Bsh=b=>{let c,d;DC();c=!CB(R(b,E(554),0),E(1272))?Gy:FL;d=Ck(b,E(572),0);if(Bj(E(1198),d))c=FL;else if(Bj(E(372),d))c=Gy;return c;},Bmf +=(b,c)=>{let d,e;DC();d=b.bGK;e=c.bGK;if(!(de)){b=new Bt;X(b);J(b);}return Gy;}return FL;},BQa=(b,c)=>{let d,e,f,g,h;DC();d=b.bGK;e=b.bGL;f=c.bGK;g=c.bGL;h=QE(d,f);if(!h&&e===g)return null;if(h){if(e!==g){b=new Bt;Bp(b,E(4289));J(b);}if(f>d)return Gy;return FL;}if(g>e)return G_;return HG;},D2r=()=>{let b,c,d;Gy=Bb7(E(422),0);FL=Bb7(E(420),1);G_=Bb7(E(1582),2);b=Bb7(E(1581),3);HG=b;c=K(Nf,4);d=c.data;d[0]=Gy;d[1]=FL;d[2]=G_;d[3]=b;Ci2=c;}; +function BVN(){let a=this;F.call(a);a.b17=null;a.b2N=null;a.cTY=null;a.cRK=null;a.cl2=null;} +let C6z=null,CZH=null,CvW=null,BgK=()=>{BgK=Z(BVN);D08();},EJb=(a,b)=>{let c;BgK();a.b17=R(b,E(2725),0);a.b2N=R(b,E(2738),0);a.cTY=CX2(R(b,E(2726),0));a.cRK=CX2(R(b,E(2739),0));c=R(b,E(644),0);if(c!==null)a:{b:{if(a.b17===null&&a.b2N===null){b=DX(C6z,c,0);if(O7(b)){a.b17=CU(b,1);a.b2N=CU(b,3);c=ES(Dl(ES(CU(b,2))));break a;}b=DX(CZH,c,0);if(O7(b)){a.b17=CU(b,1);a.b2N=null;c=ES(Dl(ES(CU(b,2))));break a;}b=DX(CvW,c,0);if(O7(b))break b;}c=Ye(c,E(1268));break a;}a.b17=null;a.b2N=CU(b,2);c=ES(Dl(ES(CU(b,1))));}a.cl2 +=CCs(c);},C8G=a=>{let b=new BVN();EJb(b,a);return b;},CX2=b=>{BgK();if(b!==null)return Ye(b,E(1268));return null;},EBs=a=>{return a.b17;},FeL=a=>{return a.b2N;},EHX=a=>{return a.cTY;},DMv=a=>{return a.cRK;},Cwn=a=>{return a.cl2.bRa;},E2j=(a,b)=>{return CEk(a.cl2,b);},D08=()=>{C6z=Dm(E(4290));CZH=Dm(E(4291));CvW=Dm(E(4292));}; +function CQW(){let a=this;F.call(a);a.bP5=0;a.bMj=null;a.bSS=null;} +let Eg2=a=>{a.bMj=G$();a.bSS=G$();},CQJ=()=>{let a=new CQW();Eg2(a);return a;},AAy=a=>{let b,c,d;b=CQJ();b.bP5=a.bP5;c=b.bMj;d=a.bMj;Ea(c,d);c=b.bSS;d=a.bSS;Ea(c,d);return b;},Cq9=(a,b)=>{let c,d,e,f;c=G$();d=Ro(a.bMj);while(d.dY()){e=d.dZ();f=new S;T(f);H(H(f,e),b);f=Q(f);EQ(c,f);}if(a.bP5)EQ(c,b);B26(a.bMj);Ea(a.bMj,c);a.bP5=0;},BGr=a=>{let b,c;b=a.bSS;c=a.bMj;Ea(b,c);B26(a.bMj);},BdH=(a,b)=>{let c,d,e;a:{c=a.bSS;d=a.bMj;Ea(c,d);B26(a.bMj);if(a.bP5){b=b.dX();while(true){if(!b.dY())break a;e=(b.dZ()).bUT;c +=a.bSS;d=QO(e);EQ(c,d);}}}a.bP5=0;},BD6=(a,b)=>{let c,d;a.bP5=!(!a.bP5&&!b.bP5)?1:0;c=a.bMj;d=b.bMj;Ea(c,d);c=a.bSS;b=b.bSS;Ea(c,b);}; +function CGD(){FA.call(this);this.deS=0;} +function CKZ(){let a=this;F.call(a);a.b_T=0;a.cjD=0;} +let BOR=b=>{let c;c=new CKZ;c.b_T=b;if(b)c.cjD=1;return c;}; +function Cje(){FA.call(this);this.dch=null;} +function Cv_(){FA.call(this);this.c7Q=null;} +function Dhx(){FA.call(this);this.daH=0;} +let CfN=N(AWI); +function DdM(){AWI.call(this);this.daG=null;} +function ASA(){let a=this;F.call(a);a.bQN=0.0;a.bM_=0.0;a.bSp=0.0;a.bSo=0.0;} +let A8o=(a,b,c,d,e)=>{a.bQN=b;a.bM_=c;a.bSp=d;a.bSo=e;},ADU=(a,b,c,d)=>{let e=new ASA();A8o(e,a,b,c,d);return e;},AQp=(b,c)=>{return ADU(b.bGK,b.bGL,c.bGK,c.bGL);},BoS=a=>{return BA(a.bQN,a.bM_);},Clu=a=>{return BA(a.bSp,a.bSo);},BeR=(b,c,d,e,f,g)=>{let h,i;d=d-b;e=e-c;b=f-b;c=g-c;if(b*d+c*e<=0.0)h=0.0;else{b=d-b;c=e-c;f=b*d+c*e;h=f<=0.0?0.0:f*f/(d*d+e*e);}i=b*b+c*c-h;if(i<0.0)i=0.0;return i;},Bdd=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=a.bSp;d=a.bQN;c=c-d;e=a.bSo;f=a.bM_;g=e-f;e=b.bSp;h=b.bQN;i=e-h;e=b.bSo;j=b.bM_;k +=e-j;e= -g;l=d-h;h=e*l;m=f-j;e=h+c*m;h= -i*g+c*k;e=e/h;h=(i*m-k*l)/h;if(e>=0.0&&e<=1.0&&h>=0.0&&h<=1.0)return BA(d+h*c,f+h*g);return null;}; +function AJD(){let a=this;F.call(a);a.bP_=0;a.cu_=null;a.b_j=0;} +function CyD(){let a=this;F.call(a);a.bVJ=null;a.bYw=null;a.cde=null;a.b61=null;a.b3y=null;} +let FmI=a=>{a.bVJ=Ca(288);a.bYw=Ca(32);a.cde=Vu(288);a.b61=Vu(259);a.b3y=Vu(32);},BN6=()=>{let a=new CyD();FmI(a);return a;},CXw=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p;c=a.bVJ;d=a.bYw;Rc();Di(Mf,0,c,0,288);Di(Mf,0,d,0,32);e=b.bOs;f=b.bPF;g=b.bPc;Ol();h=AEL;i=ASt;j=0;while(j{Di(b.bVJ,0,a.bVJ,0,288);Di(b.bYw,0,a.bYw,0, +32);Di(b.cde,0,a.cde,0,288);Di(b.b61,0,a.b61,0,259);Di(b.b3y,0,a.b3y,0,32);},BVh=a=>{let b,c,d,e,f,g,h,i,j,k,l,m;b=0;c=a.bVJ;d=0;while(d<288){b=b+c.data[d]|0;d=d+1|0;}e=(b?AP3(b):AP3(288.0))*94548.46219969496;f=a.cde;g=0;h=Pc(e);while(g<288){i=c.data;if(!i[g])f.data[g]=h;else f.data[g]=Pc(e-AP3(i[g])*94548.46219969496);j=f.data;if(GR(j[g],BH))j[g]=BH;g=g+1|0;}c=a.b61;Ol();j=AEL;i=AQZ;b=0;while(b<259){k=j.data;l=f.data;m=i.data;c.data[b]=BU(l[k[b]],CT(V(m[b]),V(65536)));b=b+1|0;}b=0;c=a.bYw;d=0;while(d<32){b +=b+c.data[d]|0;d=d+1|0;}e=(b?AP3(b):AP3(32.0))*94548.46219969496;f=a.b3y;b=0;h=Pc(e);while(b<32){j=c.data;if(!j[b])f.data[b]=h;else f.data[b]=Pc(e-AP3(j[b])*94548.46219969496);j=f.data;if(GR(j[b],BH))j[b]=BH;b=b+1|0;}g=4;while(g<30){c=f.data;c[g]=BU(c[g],CT(V(65536),V((g/2|0)-1|0)));g=g+1|0;}}; +function B4V(){let a=this;F.call(a);a.cf2=null;a.cjW=null;a.cHI=null;a.b38=null;a.cju=0;a.cFJ=null;a.clS=null;a.cmh=null;} +let BZB=null,Bk8=()=>{Bk8=Z(B4V);Eq1();},Bm4=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;f=b.data;g=a.cHI;h=a.cf2;i=a.b38;j=a.cjW;k=a.cmh;l=a.cFJ;m=a.clS;Rc();Di(A9g,0,h,0,65536);Di(A9g,0,g,0,32768);Di(Mf,0,i,32768,0);Bk8();Di(BZB,0,j,0,32768);Di(A9g,0,l,0,65536);Di(A9g,0,k,0,32768);Di(BZB,0,m,0,32768);n=((f[c]&255)<<5^f[c+1|0]&255)&32767;while(c=e?0:f[q]&255;b=g.data;r=h.data;n=(p^q)&32767;b[o]=n;s=r[n];if(!(s!=(-1)&&b[s]==n))s=o;b=j.data;t=i.data;b[o]=s;r[n]=o;p=t[(c +-1|0)&32767];if(p<1)p=1;p=p+c|0;q=f[c];while(p{let e,f,g,h,i,j,k,l;e=c&32767;f=a.cju<<5;g=c+2|0;h=(f^(g>=d?0:b.data[g]&255))&32767;i=a.cHI.data;i[e]=h;j=a.cf2.data;k=j[h];l=a.cjW;if(!(k!=(-1)&&i[k]==h))k=e;l.data[e]=k;j[h]=e;i=a.b38.data;g=i[(c-1|0)&32767];if(g<1)g=1;b=b.data;g=g+c|0;f=b[c];while(g{let b,c,d;b=Ca(32768);c=b.data;BZB=b;d=0;while(d<32768){c[d]=d;d=d+1|0;}}; +function C4r(){let a=this;F.call(a);a.cIT=null;a.b87=null;a.cbd=null;a.b7x=null;} +let Dr5=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=a.b87;Rc();d=0;while(db)e=b;Di(Bgz,0,c,d,e-d|0);d=e;}d=b<<3;c=a.cbd;f=a.b7x;g=a.cIT;h=Bgz;i=CMk;j=BKg;k=0;while(kd)l=d;m=l-k|0;Di(i,0,f,k,m);Di(h,0,c,k,m);k=l;}d=0;while(db)e=b;m=e-d|0;Di(j,0,g,d,m);Di(h,0,c,d,m);d=e;}},FoK=(a,b,c,d)=>{let e,f,g,h,i;if(d>=3){e=0;f=c*8|0;g=(f+8|0)-1|0;h=3;a:{b:{c:while(true){c=C5(h,d);if(c>0)break b;d:{if(c){i=b.data;if(i[h]==i[h+1|0])break d;}a.cbd.data[f]=b.data[h];a.b7x.data[f] +=(h-3|0)<<24>>24;f=f+1|0;if(f>g)break c;e=h;}h=h+1|0;}break a;}h=e;}if(f<=g)a.b7x.data[g]=(h-3|0)<<24>>24;return;}},BQL=(a,b)=>{b=b*8|0;if(a.cbd.data[b])return (a.b7x.data[(b+8|0)-1|0]&255)+3|0;return 0;}; +function DqS(){let a=this;F.call(a);a.bPF=null;a.bPc=null;a.bOs=0;} +let DSC=(a,b)=>{a.bPF=Fd(b);a.bPc=Fd(b);},CZY=a=>{let b=new DqS();DSC(b,a);return b;},AXk=(a,b,c)=>{let d,e;d=a.bPF.data;e=a.bOs;d[e]=b;d=a.bPc.data;a.bOs=e+1|0;d[e]=c;},BuO=a=>{a.bOs=0;}; +function CzM(){let a=this;F.call(a);a.b2M=null;a.c_E=null;a.crx=null;a.b9u=null;} +let DnH=a=>{return Bj(a.b2M,E(4132))?0:1;},AY7=N(Bx),Bp2=null,Kw=null,ZD=null,N2=null,AWA=null,BsP=null,Bku=null,BC7=null,Ehq=null,F7=()=>{F7=Z(AY7);Fd3();},E32=(a,b,c)=>{F7();Ct(a,b,c);},AFz=(a,b)=>{let c=new AY7();E32(c,a,b);return c;},Fd3=()=>{let b,c,d;Bp2=AFz(E(4293),0);Kw=AFz(E(456),1);ZD=AFz(E(261),2);N2=AFz(E(4294),3);AWA=AFz(E(4295),4);BsP=AFz(E(4296),5);Bku=AFz(E(521),6);b=AFz(E(525),7);BC7=b;c=K(AY7,8);d=c.data;d[0]=Bp2;d[1]=Kw;d[2]=ZD;d[3]=N2;d[4]=AWA;d[5]=BsP;d[6]=Bku;d[7]=b;Ehq=c;},ADD=N(); +function Tv(){ADD.call(this);this.cb4=null;} +let AS6=a=>{a.cb4=Bk();},S7=(a,b,c,d,e,f,g)=>{let h,i;h=a.cb4;i=B7H(b,c,d,f,e,g);U(h,i);return 1;},ALD=(a,b,c,d,e)=>{let f;f=a.cb4;if(f.bGJ)return b.Xj(c,d,f,e);return c;},A0Z=a=>{return a.cb4;},DiP=a=>{return a.cb4.bGJ<=0?0:1;},BtX=N(0),NP=N(0),AIy=N(0); +function BrW(){let a=this;Tv.call(a);a.bTW=null;a.czb=null;a.caV=null;} +let AOi=a=>{let b;b=Br(a.bTW);while(Bq(b)){if((Bm(b)).S3())return 1;}return 0;},BmX=()=>{return AQc(null);},EYb=(a,b)=>{AS6(a);a.bTW=Bk();a.czb=b;},AQc=a=>{let b=new BrW();EYb(b,a);return b;},B0i=a=>{return HH(a.bTW);},AJU=(a,b)=>{U(a.bTW,b);return By();},ACX=(a,b)=>{let c,d,e,f,g,h;if(a.bTW.bGJ){c=Bk();d=null;e=a.czb;Fa();f=ALD(a,b,d,e,Hg);d=Br(a.bTW);while(Bq(d)){e=Bm(d);g=e.Vv(b);h=g.Xl();Ea(c,h);if(!B5e(e.Xm())){e=e.Xm();g=B3O(b,g,e);}if(f!==null)g=Bmi(b,f,g);f=g;}d=a.caV;if(d!==null)f=Bri(b,f,d);return c.bGJ +<=0?f:CAs(f,c);}d=new WJ;c=b;A0U(d,F4(c),a.czb);b=a.caV;if(b!==null)d=B3O(c,d,b);return d;},ANO=a=>{if(a.bTW.bGJ)return (WI(a)).Ks();return 0;},Ehb=a=>{return (Bm(Br(a.bTW))).Xm();},WI=a=>{let b,c;b=a.bTW;c=b.bGJ;if(c)return Be(b,c-1|0);return null;},AGs=(a,b,c,d,e,f,g)=>{if(WI(a)!==null)return (WI(a)).S7(b,c,d,e,f,g);return S7(a,b,c,d,e,f,g);}; +function BLL(){let a=this;F.call(a);a.bLD=null;a.bJa=null;} +let AM6=b=>{let c;c=new BLL;HW();CdG(c,b,Lu);return c;},FF=()=>{return AM6(A9$());},CdG=(a,b,c)=>{a.bLD=B$(b);a.bJa=c;},C3E=(a,b)=>{let c=new BLL();CdG(c,a,b);return c;},CTA=(a,b)=>{return C3E(b,a.bJa);},ADY=(a,b)=>{return C3E(a.bLD,b);},Dqr=a=>{return a.bJa;},Lj=(a,b)=>{if(NN(a.bLD))return a.bLD;return b;},B5e=a=>{return !(FQ(a.bJa)&&!NN(a.bLD))?0:1;}; +function CEW(){let a=this;F.call(a);a.crl=null;a.c_K=null;a.dbt=null;a.cxC=null;} +let FeN=(a,b)=>{return DG(a.cxC,b);},E39=(a,b)=>{return null;},EFV=a=>{return ACx();},E4B=a=>{F_();return ALr;},EiS=a=>{return E(1823);},Frb=a=>{return KI();},ELi=a=>{let b;b=new BV;X(b);J(b);},Ewr=(a,b,c,d)=>{b=new BV;X(b);J(b);},Fod=(a,b,c,d,e)=>{return BR9(b,c,a,d,e);},D_o=a=>{return ACU();},E$x=(a,b)=>{return null;},B3L=N(0); +function A5I(){F.call(this);this.bJ5=null;} +let AKE=()=>{let b,c,d,e;ADJ();b=AY2;TK();c=ACi;Gp(b,E(4297));Gp(c,E(4298));d=b.bSG;e=b.bWT;b=ABH(c);BAe(d,V(e));b=BQ7(d,e,b.bWk);BQI();return b.bHU;},B4$=b=>{return Bgx(b);},EA=b=>{return Bgx(RK(b));},BSX=b=>{return B6l(EA(Ep(b,V(1))));},C_q=()=>{let b,c,d,e,f,g;b=new A5I;VD();c=new BQr;A4M();d=(BCn()).cdv;e=C_k;Gp(d,E(4299));Gp(e,E(4300));e=DoL(e,d);if(e!==null)d=e;c.b_Q=D$Z(d);Gp(c,E(737));f=QR();ADJ();g=CdC(AEY(f,1000),Ev(AJk(f,1000),1000000));e=(c.b_Q.Xz()).XA(g);BDt(b,RK(AGN(AEY(BU(g.bSG,V(e.bI6)),86400))));return b;},BDt +=(a,b)=>{a.bJ5=b;},Bgx=a=>{let b=new A5I();BDt(b,a);return b;},Qu=a=>{return XB(a,1);},AYB=a=>{return XB(a,(-1));},XB=(a,b)=>{return Bgx(ABm(a.bJ5,V(b)));},Bd6=a=>{return Cp((BIp(BEQ(a),V(86400000))));},BEQ=a=>{let b,c,d,e,f;b=a.bJ5;TK();c=ACi;c=CWX(b,c);d=c.bSG;if(FE(d,BH))d=QD(ASX(d,V(1000)),V(c.bWT/1000000|0));else{e=ASX(BU(d,V(1)),V(1000));f=CE(V(1000),V(c.bWT/1000000|0));d=CE(e,f);if(GR(SW(e,d),BH)&&GR(SW(e,f),BH)){c=new KZ;X(c);J(c);}}return d;},BZ6=a=>{return (QS(a)).bTn;},BJ7=a=>{let b,c;b=((A3Z(a)).bGO ++3|0)/3|0;c=new S;T(c);Bb(c,81);BE(c,b);return Q(c);},Fmt=a=>{return C5J(a.bJ5);},FcJ=a=>{return BVf(a.bJ5);},Epx=(a,b)=>{let c;if(a!==b){if(b!==null&&Dg(b)===Bo(A5I)){c=b;return B8X(a.bJ5,c.bJ5);}return 0;}return 1;},Ko=(a,b)=>{return C2c(a.bJ5,b.bJ5);},XS=a=>{return a.bJ5.bHU.bL8;},A3Z=a=>{return BR_(a.bJ5.bHU);},QS=a=>{let b,c,d,e,$$je;a:{b:{b=a.bJ5;if(b instanceof Byj)b=b;else{c:{try{c=b;Xp();d=ADc;e=Bic(b);if(DQd(d,e))break c;c=b;b=AQV(b);c=b;break c;}catch($$e){$$je=P($$e);if($$je instanceof GE){break a;} +else{throw $$e;}}}try{c=b;GC();b=Fl9(b.XM(NJ),b.XM(AED));break b;}catch($$e){$$je=P($$e);if($$je instanceof GE){break a;}else{throw $$e;}}}}return b;}b=new GE;d=BY(c);e=BN(Dg(c));c=new S;T(c);H(H(H(H(c,E(4301)),d),E(4302)),e);Bp(b,Q(c));J(b);},AEP=a=>{return BM4(a.bJ5);},Jj=a=>{return a.bJ5.bHU;},B6l=a=>{return Bgx(Cmi(a.bJ5,V(1)));},DR0=(a,b)=>{return Ko(a,b);}; +function A4X(){Bx.call(this);this.c7y=0.0;} +let AAr=null,Ys=null,A_A=null,A8V=null,Bjs=null,C68=null,Xg=()=>{Xg=Z(A4X);DJJ();},DXf=(a,b,c,d)=>{Xg();Ct(a,b,c);a.c7y=1.0/d;},Bbs=(a,b,c)=>{let d=new A4X();DXf(d,a,b,c);return d;},DJJ=()=>{let b,c,d;AAr=Bbs(E(4303),0,1);Ys=Bbs(E(4304),1,4);A_A=Bbs(E(4305),2,15);A8V=Bbs(E(4306),3,40);b=Bbs(E(4307),4,60);Bjs=b;c=K(A4X,5);d=c.data;d[0]=AAr;d[1]=Ys;d[2]=A_A;d[3]=A8V;d[4]=b;C68=c;}; +function BS5(){let a=this;F.call(a);a.cEk=null;a.cR9=0;} +let Dcz=(a,b,c)=>{a.cEk=b;a.cR9=c;},EjW=(a,b)=>{let c=new BS5();Dcz(c,a,b);return c;}; +function C3D(){let a=this;F.call(a);a.bRt=null;a.bTX=null;a.ccV=null;a.ceI=null;a.bXo=null;a.bR8=null;} +let DJ3=a=>{a.bRt=Nq(Bo(AAH));a.bTX=Dy();a.ccV=Bk();},BtD=()=>{let a=new C3D();DJ3(a);return a;},ALW=(a,b)=>{let c;c=a.ceI;if(c!==null&&It(b,c)<0){TN();c=Zk;}else{c=a.bXo;if(c!==null&&It(b,c)>0){TN();c=Zk;}else{c=DG(a.bTX,b);if(c===null){b=BjR(b);c=M7(a.bRt,b);if(c===null)c=null;}}}if(c!==null){TN();return c!==Zk?0:1;}return 0;},CPA=(a,b)=>{let c,d;c=a.bRt;TN();d=Zk;Po(c,b,d);a.bR8=null;},DpJ=(a,b)=>{let c,d;c=a.bRt;TN();d=A_8;Po(c,b,d);a.bR8=null;},BM8=(a,b)=>{let c,d;c=a.bTX;TN();d=Zk;C9(c,b,d);a.bR8=null;},BIW +=(a,b)=>{let c,d;c=a.bTX;TN();d=A_8;C9(c,b,d);a.bR8=null;},BqM=a=>{let b,c,d,e,f,g,h,i,j,k,l;b=a.bR8;if(b===null){RT();b=C9u(ADi);c=(BEO(a.bRt)).dX();while(c.dY()){d=c.dZ();e=M7(a.bRt,d);TN();if(e===Zk)b=Cp_(b,d,S2);}if(!ATn(a.bTX)){c=Dy();e=Dy();f=Vm(Ty(a.bTX));d=f;while(TS(d)){g=U6(f);h=g.bHt;i=g.bHe;TN();if(i!==Zk){g=ADi;C9(e,h,g);}else{g=S2;C9(c,h,g);}}f=B0w(ADi,c);i=B0w(S2,e);j=K(Sb,2);k=j.data;k[0]=i;k[1]=XX(BB(Sb,[b,f]));b=k.length==1?k[0]:FbW(Dgd,j);}c=a.ccV;if(c.bGJ>0){a:{j=K(Sb,2);l=j.data;l[0]=b;b +=Czs(S2);if(c!==null){f=Br(c);while(true){if(!Bq(f))break a;e=Bm(f);c=ADi;h=e.bRM;No();if(!AC8(h,S4)&&AXN(e.bRC,e.bRM)>=0)break;g=Czs(b.b4A);h=g.bRg;i=b.bRg;BvE(h,i);h=g.bRg;i=e.bRC;Qm(h,i,c);if(!AC8(e.bRM,S4)){c=g.bRg;e=e.bRM;b=b.b4A;Qm(c,e,b);}b=g;}b=new Bt;Bp(b,E(4308));J(b);}}l[1]=b;b=XX(j);}c=a.ceI;if(c===null&&a.bXo===null){a.bR8=b;return b;}if(c!==null){if(a.bXo!==null){b=XX(BB(Sb,[b,EwQ(RK(c),RK(Ep(a.bXo,V(1))))]));a.bR8=b;return b;}j=K(Sb,2);l=j.data;l[0]=b;b=new Brg;c=RK(c);ACM();BH6(b,c,BMa);l[1] +=b;b=XX(j);a.bR8=b;return b;}j=K(Sb,2);l=j.data;l[0]=b;b=new Brg;ACM();BH6(b,BML,RK(Ep(a.bXo,V(1))));l[1]=b;b=XX(j);a.bR8=b;return b;}return b;}; +function C$9(){F.call(this);this.b9r=null;} +let DfG=a=>{return a.b9r.bGJ<=0?0:1;},B4T=a=>{return a.b9r.dX();},CDk=a=>{let b,c,d;Qi();b=ARV;c=B4T(a);while(c.dY()){d=c.dZ();b=ANx(b,ABr(d.bRC,d.bRM));}return b;}; +function B1w(){let a=this;F.call(a);a.bRC=null;a.bRM=null;} +let Dc0=b=>{let c,d,e,$$je;c=Eq(b,58);if(c!=(-1)){try{b=C6w(CZ(Dk(B_(b,0,c))),CZ(Dk(CC(b,c+1|0))));}catch($$e){$$je=P($$e);if($$je instanceof Dt){return null;}else{throw $$e;}}return b;}d=new Bt;e=new S;T(e);H(H(e,E(4309)),b);Bp(d,Q(e));J(d);},Fsk=a=>{let b,c,d;b=BY(a.bRC);c=BY(a.bRM);d=new S;T(d);b=H(d,b);Bb(b,45);H(b,c);return Q(d);},Fl8=N(),B4h=()=>{let b;b=new Cwe;b.cpP=Bk();b.cC7=G$();return Df6(b,0.0);},C7Q=(b,c)=>{return Cn_(b,c);},BNT=(b,c)=>{let d;d=new BFI;b=b;c=c;B3k();Bmp(d,b.bQz);if(Df()&&!CPi&& +b.bQz!==c.bQz){b=new C4;X(b);J(b);}d.cHN=b;d.cHM=c;return d;},BFU=b=>{return C5k(Bv(b));},Bij=b=>{return C5k(b);},ByK=b=>{return CSG(b);}; +function BPe(){let a=this;F.call(a);a.cfS=null;a.cgA=null;a.b0X=null;} +let C1q=(a,b,c,d,e,f)=>{let g;g=DsI(b,c,0,null,d,e,f);a.cfS=g;a.cgA=g;},DpB=(a,b,c)=>{a.b0X=Db4(a.cfS,b,c);},CyY=(a,b,c,d,e,f,g)=>{let h,i,j;h=a.cgA;if(h!==null){i=h.b9F;if(d!=(i+1|0)){if(d<=i){j=(i-d|0)+1|0;i=0;while(i{return a.b0X===null?0:1;},Do1=(a,b)=>{let c;c=a.b0X;if(c!==null)Cg5(c,b);},AWc=(a,b)=>{let c;c=a.b0X;if(c!==null){c=c;return BC(BgB(c,b),CmO(c,b))/ +2.0;}return 0.0;},CMm=a=>{return a.cfS.b4K.bGJ<=0?0:1;},A0b=a=>{return a.cfS===null?0:1;},BM6=(a,b)=>{let c;c=a.b0X;if(c!==null){c=c;return CFP(c,b)+CDl(c,b)+BY0(a.b0X);}return 0.0;}; +function BYi(){F.call(this);this.cA3=null;} +let DCf=null,AHw=null,Yk=null,Bi7=null,Bj$=null,NV=()=>{NV=Z(BYi);DOX();},E$C=(a,b)=>{NV();a.cA3=b;},Bq5=a=>{let b=new BYi();E$C(b,a);return b;},CkP=(a,b)=>{let c,d,e,f,g,h;NV();if(a!==Bi7&&a!==Bj$&&a.cA3===null){a:{b:{c=CsL(Kt(b));if(b.bHQ){if(!ABG(b))break b;if(b.bHQ>=0)break b;}break a;}d=AKC(b)>=0?0:1;e=b.bHQ;f=new S;JP(f,(c.bGI.length+1|0)+Kj(b.bHQ)|0);if(d==1)Bb(f,45);if(b.bHQ<=0){L(f,CC(c,d));while(true){g=ALs;if(e>=( -g.data.length|0))break;AXl(f,g);e=e+ALs.data.length|0;}UP(f,g,0, -e|0);}else{e=e-(c.bGI.length +-d|0)|0;if(e<0){h=d-e|0;L(f,B_(c,d,h));Bb(f,46);L(f,CC(c,h));}else{L(f,E(4312));while(true){g=ALs;if(e<=g.data.length)break;AXl(f,g);e=e-ALs.data.length|0;}UP(f,g,0,e);L(f,CC(c,d));}}c=Q(f);}return c;}b=CRe(b);if(A4g(b)>=64){c=new KZ;Bp(c,E(1467));J(c);}return CmF(a,AEm(b));},CmF=(a,b)=>{let c,d,e,f,$$je;c=a.cA3;if(c===null){NV();if(a!==Bi7){if(a===Bj$){c=AHw;Jl(c);a:{try{b=CT(b,V(1000));Z7(c,b);NT(AHw,1);d=NT(AHw,2)+1|0;e=NT(AHw,5);G2(c);break a;}catch($$e){$$je=P($$e);f=$$je;}G2(c);J(f);}return Jv(E(4313), +BB(F,[CL(d),CL(e)]));}c=new S;T(c);QN(c,b);return Q(c);}return Jv(E(4314),BB(F,[CL(Cp(CY(b,V(3600)))),CL(Cp(CY(b,V(60)))%60|0),CL(Cp(b)%60|0)]));}return Bjp(c,TT(CT(b,V(1000))));},DOX=()=>{let b;b=B8C(E(1590));DCf=b;AHw=Bu9(b);Yk=Bq5(null);Bi7=Bq5(null);Bj$=Bq5(null);},BCV=N(DR),DLX=a=>{return B79(a);},A0e=N(Bx),BDM=null,AG9=null,Dvl=null,Y$=()=>{Y$=Z(A0e);D3z();},DAs=(a,b,c)=>{Y$();Ct(a,b,c);},Dd2=(a,b)=>{let c=new A0e();DAs(c,a,b);return c;},ATi=b=>{Y$();if(b>=65&&b<=90)return ((b-65|0)+97|0)&65535;return b;},D3z +=()=>{let b,c,d;BDM=Dd2(E(4315),0);b=Dd2(E(4316),1);AG9=b;c=K(A0e,2);d=c.data;d[0]=BDM;d[1]=b;Dvl=c;}; +function DjD(){let a=this;F.call(a);a.cyW=null;a.cG5=null;} +let B$t=(a,b)=>{let c,d,e,f;if(!CQ(b)){if(Dr(b,E(866))){c=CZ(B_(b,0,b.bGI.length-1|0));But(a.cG5,c);}else if(!CB(b,E(1272)))CMD(a,CZ(b));else{d=Eq(b,45);e=CZ(B_(b,0,d));f=CZ(CC(b,d+1|0));while(e<=f){CMD(a,e);e=e+1|0;}}return;}b=new BV;Bp(b,E(4317));J(b);},CMD=(a,b)=>{let c,d;c=a.cyW;d=CL(b);KM(c,d);}; +function CZs(){let a=this;F.call(a);a.c4e=null;a.cP5=null;} +let Fng=(a,b,c)=>{let d,e,f,g,h;SL();d=Xe;e=0;f=c;while(true){g=a.c4e.Pw(b,f);h=g.bJS;if(h<0){if(f>c){b=a.cP5;if(e>=b.cG5.bYi)h=1;else{b=b.cyW;g=CL(e);h=Dcw(b,g);}if(h)return AIT(f-c|0,d);}H8();return MD;}if(!h)break;d=AOf(d,g.bQ5);f=f+g.bJS|0;e=e+1|0;}b=new BP;Bp(b,E(4197));J(b);}; +function CLU(){let a=this;F.call(a);a.cNo=null;a.cQs=null;} +let FpV=(a,b,c)=>{let d,e,f,g;SL();d=Xe;e=c;while(true){f=a.cNo.Pw(b,e);g=f.bJS;if(g<0)break;if(!g){b=new BP;Bp(b,E(4197));J(b);}d=AOf(d,f.bQ5);e=e+f.bJS|0;if((Cat(a.cQs,b,e)).bJS>=0)return AIT(e-c|0,d);}H8();return MD;}; +function M4(){Bx.call(this);this.c1Q=null;} +let Blw=null,Bgj=null,Bhe=null,Bd8=null,Bqs=null,BeB=null,B8i=null,EtJ=null,A1N=()=>{A1N=Z(M4);DJ0();},AM_=(a,b,c,d)=>{A1N();Ct(a,b,c);a.c1Q=d;},CrK=a=>{return a.c1Q.bGI.length;},DrN=b=>{let c,d;A1N();c=Hc(b,0);switch(c){case 46:break;case 65:case 97:return BeB;case 68:case 100:return Bqs;case 71:case 103:return Bhe;case 76:case 108:return B8i;case 83:case 115:return Bgj;case 87:case 119:return Bd8;default:b=new BV;d=new S;T(d);Bb(H(d,E(4318)),c);Bp(b,Q(d));J(b);}return Blw;},DJ0=()=>{let b,c,d;b=new BEK;AM_(b, +E(3967),0,E(423));Blw=b;b=new BEJ;AM_(b,E(4319),1,E(994));Bgj=b;b=new BEI;AM_(b,E(4320),2,E(1695));Bhe=b;b=new BEH;AM_(b,E(4321),3,E(992));Bd8=b;b=new BEG;AM_(b,E(3378),4,E(996));Bqs=b;b=new BEF;AM_(b,E(4322),5,E(4323));BeB=b;b=new BEM;AM_(b,E(4324),6,E(4325));B8i=b;c=K(M4,7);d=c.data;d[0]=Blw;d[1]=Bgj;d[2]=Bhe;d[3]=Bd8;d[4]=Bqs;d[5]=BeB;d[6]=b;EtJ=c;},A24=N(Bx),A34=null,BKQ=null,EEC=null,AUD=()=>{AUD=Z(A24);Fjs();},EJV=(a,b,c)=>{AUD();Ct(a,b,c);},CGr=(a,b)=>{let c=new A24();EJV(c,a,b);return c;},Fjs=()=>{let b, +c,d;A34=CGr(E(883),0);b=CGr(E(4326),1);BKQ=b;c=K(A24,2);d=c.data;d[0]=A34;d[1]=b;EEC=c;}; +function BO6(){let a=this;F.call(a);a.bJ9=null;a.bPp=null;} +let Cp3=(a,b,c)=>{a.bJ9=B$(b);a.bPp=B$(c);},DbV=(a,b)=>{let c=new BO6();Cp3(c,a,b);return c;},Bmy=()=>{let b,c;b=new BO6;GQ();c=Th;MP();Cp3(b,c,AFD);return b;},ARS=(a,b)=>{return DbV(b,a.bPp);},CZU=(a,b)=>{return DbV(a.bJ9,b);},QZ=a=>{return a.bJ9;},DjX=a=>{return a.bPp;},A2T=N(Bx),AFD=null,RG=null,SO=null,Fuo=null,MP=()=>{MP=Z(A2T);D$4();},EAo=(a,b,c)=>{MP();Ct(a,b,c);},BI0=(a,b)=>{let c=new A2T();EAo(c,a,b);return c;},D$4=()=>{let b,c,d;AFD=BI0(E(664),0);RG=BI0(E(4327),1);b=BI0(E(4328),2);SO=b;c=K(A2T,3);d +=c.data;d[0]=AFD;d[1]=RG;d[2]=b;Fuo=c;}; +function Xf(){let a=this;F.call(a);a.bJv=null;a.csX=null;} +let XG=(a,b,c)=>{a.bJv=b;a.csX=c;},Fyx=(a,b)=>{let c=new Xf();XG(c,a,b);return c;},DGc=a=>{return a.bJv;},AOB=(a,b)=>{return CiT(a.bJv,b.bJv);},E$4=a=>{return CkP(a.csX,a.bJv);},ELK=(a,b)=>{return AOB(a,b);}; +function H6(){let a=this;F.call(a);a.bJG=null;a.bN3=null;a.bJi=null;a.bO5=null;} +let CRw=a=>{let b,c;b=a.bJG;FU();c=Hf;if(b===c&&a.bJi!==c)return 1;return 0;},Mo=(a,b,c)=>{UM();WF(a,b,c,AWM,AT6());},Cxx=(a,b)=>{let c=new H6();Mo(c,a,b);return c;},WF=(a,b,c,d,e)=>{a.bJG=b;a.bJi=c;a.bO5=d;a.bN3=B$(e);},A1O=(a,b,c,d)=>{let e=new H6();WF(e,a,b,c,d);return e;},BS6=a=>{return B4q(a.bN3);},AQj=a=>{return A1O(a.bJG,a.bJi,a.bO5,BEg());},Bns=a=>{return A1O(a.bJG,a.bJi,a.bO5,BNv());},DdH=a=>{return A1O(a.bJG,a.bJi,a.bO5,BHa());},C5z=a=>{let b,c,d;b=new H6;c=a.bJG;d=a.bJi;UM();WF(b,c,d,A8f,a.bN3);return b;},C7d +=a=>{let b,c,d;b=new H6;c=a.bJG;d=a.bJi;UM();WF(b,c,d,A8b,a.bN3);return b;},CBV=a=>{let b,c,d;b=new H6;c=a.bJG;d=a.bJi;UM();WF(b,c,d,AWm,a.bN3);return b;},Co9=a=>{let b,c,d;b=new H6;c=a.bJG;d=a.bJi;UM();WF(b,c,d,ANU,a.bN3);return b;},C_1=a=>{return A1O(a.bJG,a.bJi,a.bO5,CPw());},FcY=(a,b)=>{let c,d,e,f,g;AH1();if(b!==AJq){c=new S;T(c);b=a.bJG;FU();d=Hf;e=b!==d?0:1;f=a.bJi!==d?0:1;if(e&&f){L(c,E(4329));L(c,E(4330));}else if(!e&&!f){L(c,E(4331));L(c,E(4332));L(c,E(4333));}else if(e&&!f){L(c,E(4332));L(c,E(4330));L(c, +E(4334));}g=BC(a.bJG.cvJ,a.bJi.cvJ);if(g>0.0){if(c.bG4>0)L(c,E(349));b=new S;T(b);D6(H(b,E(4335)),g);L(c,Q(b));}return Q(c);}return E(4336);},A2X=a=>{return a.bJG;},Eb_=a=>{return a.bN3;},A7i=a=>{return a.bJi;},B0S=a=>{let b,c;b=new H6;c=a.bJG;FU();WF(b,c,Hf,a.bO5,a.bN3);return b;},BEx=a=>{let b;b=new H6;FU();WF(b,Hf,a.bJi,a.bO5,a.bN3);return b;},A9Q=(a,b)=>{let c;c=a.bN3;if(!(c.ckJ===null?0:1)){if(b!==null){if(b.bWe===0.0&&b.bU$===0.0)return ACn(AY9(c,b.bJw));return b;}return ACn(c);}return ACn(c);},Dmg=a=> +{return a.bO5;},Db9=a=>{let b,c;FU();if(!AEn(a,Bwq)){if(!AEn(a,BpD)){if(!AEn(a,AGv)){if(!AEn(a,A3i)){if(!AEn(a,A4H)){if(!BYt(a,BB(JF,[AB1,Bio]))){if(!AEn(a,Bkm)){if(!BYt(a,BB(JF,[Bcz,BmC,BzW]))){if(!BYt(a,BB(JF,[BwW,BcJ]))){b=a.bJG;c=Hf;if(!(!(b===c&&a.bJi===c)?0:1)){if(AEn(a,Bz$))return E(4337);return null;}}return E(4338);}return E(4339);}return E(4340);}return E(4341);}return E(4342);}return E(4343);}return E(4344);}return E(4345);}return E(4346);},AEn=(a,b)=>{return !(a.bJG!==b&&a.bJi!==b)?1:0;},BYt=(a, +b)=>{let c,d;b=b.data;c=b.length;d=0;while(d{M3=Z(Bbv);Fgf();},E3X=(a,b,c)=>{M3();Ct(a,b,c);},BPR=(a,b)=>{let c=new Bbv();E3X(c,a,b);return c;},Fgf=()=>{let b,c,d;Xr=BPR(E(4347),0);AJ3=BPR(E(4348),1);b=BPR(E(4349),2);AHT=b;c=K(Bbv,3);d=c.data;d[0]=Xr;d[1]=AJ3;d[2]=b;Dvx=c;},AD3=N(Bx),LQ=null,AHz=null,AAY=null,AP$=null,APG=null,ANX=null,ANb=null,ASh=null,A59=null,Fyc=6.0,FlJ=null,Jb=()=>{Jb=Z(AD3);FgI();},E3D= +(a,b,c)=>{Jb();Ct(a,b,c);},AAI=(a,b)=>{let c=new AD3();E3D(c,a,b);return c;},CQ2=()=>{Jb();return B$X(AHz,AP$,ANX,ASh);}; +let Cpa=()=>{Jb();return B$X(AAY,APG,ANb,A59);},BQp=a=>{Jb();return a!==LQ?0:1;},Bxz=(a,b,c,d,e)=>{return BA(b+e*G4(d),c+e*H0(d));},Cwx=(b,c,d)=>{let e,f,g,h;Jb();e=d.bGK;f=c.bGK;e=e-f;g=d.bGL;h=c.bGL;g=g-h;(b.h2(Bh(f,h))).hP(EB(e,g));},CMS=a=>{Jb();return !(a!==ASh&&a!==A59)?1:0;},FgI=()=>{let b,c,d;LQ=AAI(E(883),0);AHz=AAI(E(4350),1);AAY=AAI(E(4351),2);AP$=AAI(E(4352),3);APG=AAI(E(4353),4);ANX=AAI(E(4354),5);ANb=AAI(E(4355),6);ASh=AAI(E(4282),7);b=AAI(E(4283),8);A59=b;c=K(AD3,9);d=c.data;d[0]=LQ;d[1]=AHz;d[2] +=AAY;d[3]=AP$;d[4]=APG;d[5]=ANX;d[6]=ANb;d[7]=ASh;d[8]=b;FlJ=c;}; +function DcP(){let a=this;F.call(a);a.c2t=null;a.dab=null;a.c2N=null;a.cj7=null;a.b4f=null;a.b59=null;} +let ChY=a=>{let b,c,d,e,f,g,h,i;b=XK(a.b4f,a.b59);c=G1(a.b59);d=a.b59;B9();e=(BJ(d,Cz)).cu(a.b4f.bGN);f=(BJ(a.b59,CK)).cu(a.b4f.bGN);g=Fi(a.b59);h=a.b4f;B3();d=CF;h=h;d=Q2(h,d);Ed();d=ARN(h,b,d,FR);b=a.c2N;h=S0(d,b);i=new ACw;Jo();AP8(i,h,JJ,BvC(a.b4f));return XJ(c,e,f,i,0,g);}; +function DrH(){let a=this;F.call(a);a.cye=null;a.cEh=null;a.cQV=0;} +let FV=b=>{return BWv(b,null,0);},ALG=b=>{return BWv(null,b,0);},Ea4=(a,b,c,d)=>{if(b===null&&c===null){b=new Bt;X(b);J(b);}if(b!==null&&c!==null){b=new Bt;X(b);J(b);}a.cye=b;a.cEh=c;a.cQV=d;},BWv=(a,b,c)=>{let d=new DrH();Ea4(d,a,b,c);return d;},Mr=a=>{let b;b=a.cye;if(b===null){b=new BP;X(b);J(b);}return b;},AAs=a=>{return a.cye!==null?0:1;},AL$=a=>{let b;b=a.cEh;if(b===null){b=new BP;X(b);J(b);}return b;}; +function Diw(){let a=this;F.call(a);a.bSm=null;a.bRa=null;} +let DNF=(a,b)=>{if(b!==null){b=Ye(b,E(1268));HW();if(Chn(Bv(IW(b,E(69))))){M3();a.bRa=Xr;a.bSm=b;}else if(Bj(E(1198),b)){M3();a.bRa=AHT;a.bSm=null;}else if(Bj(E(372),b)){M3();a.bRa=AJ3;a.bSm=null;}else if(BO(b,E(412))){M3();a.bRa=AHT;a.bSm=ES(CC(b,2));}else if(BO(b,E(413))){M3();a.bRa=AJ3;a.bSm=ES(CC(b,2));}else if(Dr(b,E(415))){M3();a.bRa=AJ3;a.bSm=ES(B_(b,0,b.bGI.length-2|0));}else if(!Dr(b,E(414))){M3();a.bRa=Xr;a.bSm=b;}else{M3();a.bRa=AHT;a.bSm=ES(B_(b,0,b.bGI.length-2|0));}return;}M3();a.bRa=Xr;a.bSm= +null;},CCs=a=>{let b=new Diw();DNF(b,a);return b;},CEk=(a,b)=>{return B4(b,a.bSm);},Crx=(b,c,d)=>{let e;e=CVl(c,d);Fa();return Vi(e,b,Hg);},Fwd=(b,c,d,e,f)=>{let g,h,i,j,k;GO();g=HD;h=Xo(b);while(h.dY()){i=h.dZ();j=CCs(i.p());k=BJN(CEk(j,f.gs()),d,e,f,f.rg());i=j.bRa;M3();if(i!==Xr){a:{b:{switch(i.bGO){case 1:break;case 2:break b;default:b=new BV;X(b);J(b);}b=c;break a;}b=new Cy$;b.c8B=i;b.cVW=c;}i=CVl(b,d);Fa();k=Vi(i,k,Hg);}g=FT(g,k,e);}return g;}; +function Cyj(){let a=this;F.call(a);a.bZm=null;a.cTL=0;} +let EWR=(a,b)=>{a.bZm=Bk();a.cTL=b;},BMk=a=>{let b=new Cyj();EWR(b,a);return b;},A9$=()=>{return BMk(0);},B5Y=(b,c)=>{let d;if(b!==null){d=C5u(b,AT6(),c);b=BMk(0);c=b.bZm;d=B$(d);U(c,d);return b;}return A9$();},LY=(b,c)=>{let d,e,f;B9();d=(BJ(b,Cz)).cu(c);e=BJ(b,A2r);f=!(e instanceof AZN)?e.cu(c):d;if(f===null)f=Qj();return B5Y(d,f);},B_8=(a,b)=>{if(!NN(a))return b;return a;},Bsg=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p;if(c!==null){e=BMk(d);f=(IW(c,E(939))).data;d=f.length;g=0;while(g{return a.bZm;},ATO=a=>{return (Be(a.bZm,0)).chC;},Cpx=a=>{return (Be(a.bZm,0)).cFa;},NN=a=>{return a.bZm.bGJ;},W3=N(0); +function Bwf(){let a=this;F.call(a);a.bSG=BH;a.bWT=0;} +let AY2=null,E$M=null,E_k=null,FbF=null,ADJ=()=>{ADJ=Z(Bwf);E2s();},BAe=(b,c)=>{ADJ();return CdC(QD(b,AEY(c,1000000000)),AJk(c,1000000000));},CdC=(b,c)=>{let d;ADJ();if(D4(Gu(b,V(c)),BH)){if(FE(b,O(342103040, 4287619856))&&IH(b,O(4204099839, 7347410)))return CGi(b,c);d=new GE;Bp(d,E(4356));J(d);}return AY2;},EGt=(a,b,c)=>{ADJ();a.bSG=b;a.bWT=c;},CGi=(a,b)=>{let c=new Bwf();EGt(c,a,b);return c;},D4F=(a,b)=>{let c;if(a!==b){if(b instanceof Bwf){c=b;return !(DS(a.bSG,c.bSG)&&a.bWT==c.bWT)?0:1;}return 0;}return 1;},D_d +=a=>{let b;b=a.bSG;return Cp(SW(b,GD(b,32)))+(51*a.bWT|0)|0;},E2s=()=>{AY2=CGi(BH,0);E$M=BAe(O(342103040, 4287619856),BH);E_k=BAe(O(4204099839, 7347410),V(999999999));FbF=new CXO;},AKL=N(),DPb=null,C_k=null,A4M=()=>{A4M=Z(AKL);D1t();},D$Z=b=>{let c,d,e,f,g,h,$$je;A4M();Gp(b,E(4299));if(!Bj(b,E(4357))){if(b.bGI.length!=1){if(!BO(b,E(866))&&!BO(b,E(1272))){if(!Bj(b,E(4358))&&!Bj(b,E(1590))&&!Bj(b,E(4359))){if(!BO(b,E(4360))&&!BO(b,E(4361))&&!BO(b,E(4362))&&!BO(b,E(4363))){if(!BO(b,E(4364))&&!BO(b,E(4365))){a: +{Gp(b,E(4299));if(b.bGI.length<2)c=0;else if(!CB2(Bn(b,0)))c=0;else{c=1;b:{while(c57)break f;}d=1;break e;}d=0;}}if(!d)break b;c=c+1|0;}c=1;break a;}c=0;}}if(c){g:{h:{try{e=DnB(b,1);break g;}catch($$e){$$je=P($$e);if($$je instanceof AUT){e=$$je;break h;}else{throw $$e;}}}if(Bj(b,E(4366))){TK();e=ABH(ACi);}else J(e);}return BMI(b,e);}e=new GE;f=new S;T(f);H(H(f, +E(4367)),b);Bp(e,Q(f));J(e);}e=BVT(CC(b,2));if(e.bI6){b=new AQF;g=e.b49;f=new S;T(f);H(H(f,E(4359)),g);BdG(b,Q(f),ABH(e));return b;}return BMI(E(4359),ABH(e));}e=BVT(CC(b,3));if(e.bI6){f=new AQF;b=B_(b,0,3);g=e.b49;h=new S;T(h);H(H(h,b),g);BdG(f,Q(h),ABH(e));return f;}return BMI(B_(b,0,3),ABH(e));}f=new AQF;TK();BdG(f,b,ABH(ACi));return f;}return BVT(b);}e=new GE;f=new S;T(f);H(H(f,E(4368)),b);Bp(e,Q(f));J(e);}TK();return ACi;},Dik=a=>{A4M();if(Dg(a)!==Bo(AOQ)&&Dg(a)!==Bo(AQF))J(Dng(E(4369)));},E6y=(a,b)=>{let c;if +(a!==b){if(b instanceof AKL){c=b;return Bj(a.Yn(),c.Yn());}return 0;}return 1;},Fq$=a=>{return FP(a.Yn());},D1t=()=>{let b,c;DPb=new Cgf;b=Dy();c=b;C9(c,E(4370),E(4371));C9(c,E(4372),E(4373));C9(c,E(4374),E(4375));C9(c,E(4376),E(4377));C9(c,E(4378),E(4379));C9(c,E(4380),E(4381));C9(c,E(4382),E(4383));C9(c,E(4384),E(4385));C9(c,E(4386),E(4387));C9(c,E(4388),E(4389));C9(c,E(4390),E(4391));C9(c,E(4392),E(4393));C9(c,E(4394),E(4395));C9(c,E(4396),E(4397));C9(c,E(4398),E(4399));C9(c,E(4400),E(4401));C9(c,E(3827), +E(4402));C9(c,E(4403),E(4404));C9(c,E(4405),E(4406));C9(c,E(4407),E(4408));C9(c,E(4409),E(4410));C9(c,E(4411),E(4412));C9(c,E(4413),E(4414));C9(c,E(4415),E(4416));C9(c,E(4417),E(4418));C9(c,E(4419),E(4420));C9(c,E(4421),E(4422));C9(c,E(4423),E(4424));C_k=DqD(b);}; +function AOQ(){let a=this;AKL.call(a);a.bI6=0;a.b49=null;} +let Bdu=null,B4A=null,ACi=null,FlO=null,Fl1=null,TK=()=>{TK=Z(AOQ);Erj();},BVT=b=>{let c,d,e,f,g,h;TK();Gp(b,E(4425));c=DG(B4A,b);if(c===null){a:{b:{c:{d:{e:{f:{g:{switch(b.bGI.length){case 2:break c;case 4:case 8:break;case 5:break g;case 6:break f;case 7:break e;case 9:break d;case 3:break b;default:}c=new GE;d=new S;T(d);H(H(d,E(4426)),b);Bp(c,Q(d));J(c);}e=VV(b,1,0);f=VV(b,3,0);g=0;break a;}e=VV(b,1,0);f=VV(b,4,1);g=0;break a;}e=VV(b,1,0);f=VV(b,3,0);g=VV(b,5,0);break a;}e=VV(b,1,0);f=VV(b,4,1);g=VV(b,7, +1);break a;}f=Bn(b,0);e=Bn(b,1);b=new S;T(b);Bb(b,f);Bb(b,48);Bb(b,e);b=Q(b);}e=VV(b,1,0);f=0;g=0;}h=Bn(b,0);if(h!=43&&h!=45){c=new GE;d=new S;T(d);H(H(d,E(4427)),b);Bp(c,Q(d));J(c);}if(h==45)return CuZ( -e|0, -f|0, -g|0);return CuZ(e,f,g);}return c;},VV=(b,c,d)=>{let e,f,g,h;TK();if(d){d=c-1|0;if(Bn(b,d)!=58){e=new GE;b=BY(b);f=new S;T(f);H(H(f,E(4428)),b);Bp(e,Q(f));J(e);}}e=b;g=Bn(e,c);h=Bn(e,c+1|0);if(g>=48&&g<=57&&h>=48&&h<=57)return ((g-48|0)*10|0)+(h-48|0)|0;e=new GE;b=BY(b);f=new S;T(f);H(H(f,E(4429)), +b);Bp(e,Q(f));J(e);},CuZ=(b,c,d)=>{let e,f,g;TK();if(b>=(-18)&&b<=18){a:{if(b<=0){if(b>=0){if(!(c>0&&d<0)){if(c>=0)break a;if(d<=0)break a;}e=new GE;Bp(e,E(4430));J(e);}if(c<=0&&d<=0)break a;e=new GE;Bp(e,E(4431));J(e);}if(!(c>=0&&d>=0)){e=new GE;Bp(e,E(4432));J(e);}}if(Kj(c)<=59){if(Kj(d)<=59){if(Kj(b)==18&&!(Kj(c)<=0&&Kj(d)<=0)){e=new GE;Bp(e,E(4433));J(e);}return PC(((b*3600|0)+(c*60|0)|0)+d|0);}e=new GE;b=Kj(d);f=new S;T(f);g=H(f,E(4434));BE(g,b);H(g,E(4435));Bp(e,Q(f));J(e);}e=new GE;b=Kj(c);f=new S;T(f);g +=H(f,E(4436));BE(g,b);H(g,E(4435));Bp(e,Q(f));J(e);}e=new GE;f=new S;T(f);g=H(f,E(4437));BE(g,b);H(g,E(4438));Bp(e,Q(f));J(e);},PC=b=>{let c,d;TK();if(Kj(b)<=64800){if(!(b%900|0)){c=CL(b);d=DG(Bdu,c);if(d===null){d=CQa(b);A6S(Bdu,c,d);d=DG(Bdu,c);A6S(B4A,d.b49,d);}return d;}return CQa(b);}c=new GE;Bp(c,E(4433));J(c);},D61=(a,b)=>{let c,d,e,f;TK();Dik(a);a.bI6=b;if(!b)c=E(4357);else{d=Kj(b);c=new S;T(c);e=d/3600|0;f=(d/60|0)%60|0;L(c,b>=0?E(866):E(1272));L(c,e>=10?E(14):E(35));BE(c,e);L(c,f>=10?E(82):E(4439));BE(c, +f);b=d%60|0;if(b){L(c,b>=10?E(82):E(4439));BE(c,b);}c=Q(c);}a.b49=c;},CQa=a=>{let b=new AOQ();D61(b,a);return b;},Ftf=a=>{return a.b49;},Fp7=a=>{return ABH(a);},Ckm=(a,b)=>{return b.bI6-a.bI6|0;},Yv=(a,b)=>{if(a!==b){if(b instanceof AOQ)return a.bI6!=b.bI6?0:1;return 0;}return 1;},E9q=a=>{return a.bI6;},E4L=a=>{return a.b49;},Fme=(a,b)=>{return Ckm(a,b);},Erj=()=>{Bdu=Dy();B4A=Dy();ACi=PC(0);FlO=PC((-64800));Fl1=PC(64800);},BhC=N(),FuF=null,BQI=()=>{BQI=Z(BhC);FsO();},FsO=()=>{FuF=B_b(BWe(new Ced),new Cec);}; +function Cz9(){let a=this;BhC.call(a);a.c$t=null;a.dfw=null;a.de6=null;} +function Cwe(){let a=this;F.call(a);a.cpP=null;a.cyw=0.0;a.cyz=0.0;a.cC7=null;} +let Cse=0,B74=(a,b)=>{U(a.cpP,b);},Yb=N(0); +function AJY(){F.call(this);this.bQz=null;} +let BUe=(a,b)=>{a.bQz=b;EQ(b.cC7,a);},CW=a=>{return a.RG();}; +function ADA(){AJY.call(this);this.cM0=null;} +let Bmp=(a,b)=>{BUe(a,b);a.cM0=BWG();},ENd=a=>{B3Y(a.cM0);},EK=(a,b)=>{return A79(a,b);},CZV=N(0); +function Cfs(){ADA.call(this);this.b_O=0.0;} +let DuB=(a,b,c)=>{Bmp(a,b);a.b_O=c;},Df6=(a,b)=>{let c=new Cfs();DuB(c,a,b);return c;},D0c=(a,b)=>{a.b_O=a.b_O+b;},DDE=a=>{return a.b_O;},B$J=(a,b)=>{let c;c=Df6(a.bQz,a.b_O+b);B74(a.bQz,BYf(a,c,b));return c;},EUr=(a,b)=>{B74(a.bQz,BYf(b,a,0.0));},ByM=a=>{let b,c,d,e,f,g,h,i,j,k,l,m,n,o,$$je;b=a.bQz;c=0;d=Dy();a:while(true){e=1;f=Br(b.cpP);while(Bq(f)){g=Bm(f);h=g.clA.RG();try{i=CW(g.ceB);}catch($$e){$$je=P($$e);if($$je instanceof BP){d=$$je;break a;}else{throw $$e;}}j=h-i-g.cHP;h=BC(EL(h),EL(i));if(!(isNaN(h) +?1:0)){if(AWW(h))h=Infinity;else if(!(isNaN(h)?1:0)){if(AWW(h))h=Infinity;else{k=CN(BlS(h),O(0, 4025483264));h=Baa((FE(k,O(0, 55574528))?CE(k,O(0, 54525952)):EU(V(1),DT(0,Cp(GS(k,52))-1|0))));}}}if(j>= -BC(1.0E-6,1000.0*h))l=0;else{g.clA.YA( -j);l=1;}if(l){m=d;n=DG(m,g);C9(m,g,CL(n===null?1:n.bHl+1|0));e=0;}}if(e){Cse=Cse+c|0;b.cyw=0.0;b.cyz=0.0;d=Ro(b.cC7);while(d.dY()){j=(d.dZ()).RG();if(j>b.cyz)b.cyz=j;if(j99999){n=Br(b.cpP);while(Bq(n)){g=Bm(n);f=Fm();g=BY(g);b=new S;T(b);H(H(b, +E(4440)),g);g=Q(b);Fw(f,g);}d=Vm(Ty(d));o=d;while(TS(o)){g=U6(d);f=Fm();n=g;g=BY(n.bHe);n=BY(n.bHt);b=new S;T(b);H(H(H(H(b,E(4441)),g),E(4442)),n);n=Q(b);Fw(f,n);}g=new BP;Bp(g,E(4443));J(g);}}f=Fm();n=BY(g);b=new S;T(b);H(H(b,E(4444)),n);n=Q(b);Fw(f,n);Fw(Fm(),E(4445));B3Y(g.c3q);f=Fm();n=BY(g.ceB);b=new S;T(b);H(H(b,E(4446)),n);n=Q(b);Fw(f,n);g.ceB.YB();J(d);}; +function CF0(){let a=this;F.call(a);a.cpp=null;a.bXA=BH;a.bXB=BH;} +let FdQ=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n;if(b<=c){if(b>=32&&c<=128){d=a.cpp;Y$();if(d===AG9){b=ATi(b);c=ATi(c);}e=b-32|0;f=c-32|0;if(f<64){g=(f-e|0)+1|0;h=EU(g==64?V(-1):CE(EU(V(1),g),V(1)),e);a.bXA=Gu(a.bXA,h);}else if(e>=64){i=e-64|0;h=EU(CE(EU(V(1),((f-64|0)-i|0)+1|0),V(1)),i);a.bXB=Gu(a.bXB,h);}else{j=64-e|0;k=EU(j==64?V(-1):CE(EU(V(1),j),V(1)),e);a.bXA=Gu(a.bXA,k);l=CE(EU(V(1),(f-64|0)+1|0),V(1));a.bXB=Gu(a.bXB,l);}return;}m=new Bt;Bp(m,E(4447));J(m);}d=new Bt;m=new S;T(m);n=H(m,E(4448));Bb(n,b);n=H(n, +E(4449));Bb(n,c);H(n,E(4450));Bp(d,Q(m));J(d);},Dqz=(a,b)=>{return b-32|0;}; +function BfZ(){let a=this;F.call(a);a.bVH=0;a.bHq=null;a.bSf=null;a.bVl=0;a.bLE=BH;a.cr$=0;a.b28=0;a.cy6=0;a.c6g=0;a.cUI=0;a.b39=null;} +let EXd=null,BGY=0,BMy=0,BKW=null,AXZ=()=>{AXZ=Z(BfZ);Eun();},AL1=a=>{if(!a.bVl){CrI(a);a.bVl=1;}if(!a.bVH){FfF(a);a.bVH=1;}},NT=(a,b)=>{AL1(a);return a.bHq.data[b];},ALh=a=>{return a.c6g;},B$e=()=>{let b;AXZ();b=new AR6;Zo();Cwz(b,ACH());return b;},BpW=a=>{return a.cUI;},ACr=a=>{if(!a.bVl){CrI(a);a.bVl=1;}return a.bLE;},BK2=(a,b)=>{a.b39=b;a.bVH=0;},BM5=a=>{return a.cy6;},KQ=(a,b,c)=>{a.bHq.data[b]=c;a.bSf.data[b]=1;a.bVH=0;a.bVl=0;if(b>2&&b<9)a.b28=b;if(!(b!=10&&b!=11))a.cr$=b;if(b==9)a.cr$=10;},E__=(a,b, +c,d)=>{KQ(a,1,b);KQ(a,2,c);KQ(a,5,d);},Z7=(a,b)=>{if(!(a.bVl&&a.bVH&&DS(a.bLE,b))){a.bLE=b;a.bVl=1;a.bVH=0;AL1(a);}},Eun=()=>{EXd=BB(Bi,[E(4451),E(4452),E(4453),E(4454),E(4455),E(4456),E(4457),E(4458),E(4459),E(4460),E(4461),E(4462),E(4463),E(4464),E(4465),E(4466),E(4467)]);BGY=(-1);BMy=(-1);},BZQ=N(0); +function AMh(){let a=this;F.call(a);a.bR3=null;a.b0k=null;} +let B0J=a=>{a.bR3=Bk();},Fav=(a,b)=>{a.b0k=B$(b);},Evd=a=>{return a.bR3;},Fgl=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n;if(b!==null){c=b;if(c.bGI.length){d=null;e=O(4294967295, 2147483647);f=Br(a.bR3);a:{while(Bq(f)){g=Bm(f);if(g===null)break a;if(b===null)break a;if(!c.bGI.length){b=new Bt;Bp(b,E(4468));J(b);}h=g.bL();i=c.bGI.length;j=BH;k=0;l=h-i|0;b:{c:{while(k<=l){d:{if(!(g!==null&&b!==null))m=0;else{m=g.bL();n=c.bGI.length;if(!n){b=new Bt;X(b);J(b);}if(!(k>=0&&k<=m))m=0;else if((k+n|0)>m)m=0;else{m=0;e:{while +(m{BmR=Z(B8Y);E5v();},ERA=a=>{let b;b=new BV;X(b);J(b);},AYF=b=>{let c;BmR();c=D3(CEO,b);if(GW(c))return El(c,1);return null;},EsM=(a,b)=>{let c,d,e,f;c=IZ(b,E(4469));if(c==(-1)){if(AYF(b)!==null){d=IZ(b,AYF(b));e=a.ch9;b=Dk(B_(b,0,d));Es(e,b,E(1487));return 1;}return 0;}e=a.ch9;f=Dk(B_(b,0,c));b=Dk(CC(b,c+2|0));Es(e,f,b);return 1;},DFk=a=>{let b;b=new BV;X(b);J(b);},Fo3=a=>{let b;b=new BV;X(b);J(b);},E_Q=(a,b,c,d,e,f,g)=>{let h,i,j;h=GM(f);i=IR(f);e=new Crw;f=a.ch9;e.b0Y=E9();e.csN=Bk();e.cq8 +=b;e.cxI=i;e.cIL=g;i=G3(G8(f));g=i;while(Gl(g)){b=GZ(i);j=b.bHt;if(AIW(j))j=CC(j,1);U(e.csN,j);b=b.bHe;f=DkS(e,j,h);j=DkS(e,b,h);Es(e.b0Y,f,j);}return e;},E5v=()=>{CEO=Dp(E(4470));},FpI=N(),BZ4=(b,c,d,e,f,g)=>{e=new Bjo;ARi();BRL(e,b,Yz(g,d.bGN,f.bG_),g);e.co_=Bk();e.b_r=g;e.cr3=Ls(c);e.b4l=d;e.cyd=1;e.cGC=f;e.cEy=0;return e;},BOu=(b,c,d,e,f,g)=>{let h,i;h=new Bjo;ARi();BRL(h,b,Yz(g,d.bGN,f.bG_),g);h.co_=Bk();h.b_r=g;h.cGC=f;h.b4l=d;h.cyd=0;d=f.bHD;Cy();i=!(d!==Wd&&d!==Y8)?1:0;h.cEy=i;if(i&&I6(c)>0&&Bim((Ne(c, +0)).p()))c=Us(c,E(14));h.cr3=c;return h;},A$j=(b,c,d,e,f,g)=>{let h;h=new Cxb;BRL(h,d,e,g);h.cYs=b;h.cLB=f;h.ctP=c;return h;}; +function CSa(){F.call(this);this.cI$=null;} +let EPL=a=>{let b;b=new BV;X(b);J(b);},EDW=(a,b)=>{return;},DJj=a=>{let b;b=new BV;X(b);J(b);},D6f=a=>{let b;b=new BV;X(b);J(b);},E97=(a,b,c,d,e,f,g)=>{let h;e=new DlQ;h=a.cI$;f=GM(f);e.cEK=b;e.cTw=h;e.cZQ=g;e.cPu=f;return e;},DON=a=>{let b;b=new BV;X(b);J(b);},Ejy=(a,b)=>{b=new BV;X(b);J(b);},EKt=(a,b)=>{b=new BV;X(b);J(b);}; +function BO8(){F.call(this);this.cl0=null;} +let A1M=N(Bx),AWM=null,A8f=null,A8b=null,AWm=null,ANU=null,BlU=null,B68=null,FrE=null,UM=()=>{UM=Z(A1M);Ed6();},DSr=(a,b,c)=>{UM();Ct(a,b,c);},AI2=(a,b)=>{let c=new A1M();DSr(c,a,b);return c;},D1a=(a,b,c)=>{let d;UM();if(a!==A8f){if(a!==A8b){if(a!==AWm){if(a!==ANU){if(a!==BlU){if(a!==B68){b=new BV;X(b);J(b);}return CEJ(1);}return CEJ(0);}d=new A3e;AJ9();BxF(d,Be5,b,c);return d;}d=new A3e;AJ9();BxF(d,A0j,b,c);return d;}d=new A3e;AJ9();BxF(d,AKM,b,c);return d;}c=new C6r;c.c2y=b;return c;},Ed6=()=>{let b,c,d;AWM +=AI2(E(3549),0);A8f=AI2(E(3886),1);A8b=AI2(E(4471),2);AWm=AI2(E(4472),3);ANU=AI2(E(4473),4);BlU=AI2(E(4474),5);b=AI2(E(4475),6);B68=b;c=K(A1M,7);d=c.data;d[0]=AWM;d[1]=A8f;d[2]=A8b;d[3]=AWm;d[4]=ANU;d[5]=BlU;d[6]=b;FrE=c;}; +function AKy(){let a=this;F.call(a);a.b4B=null;a.ckJ=null;} +let AVl=(a,b,c)=>{a.b4B=b;a.ckJ=c;},EKf=(a,b)=>{let c=new AKy();AVl(c,a,b);return c;},Fv7=a=>{let b,c,d;b=HT(a.b4B);c=a.ckJ;d=new S;T(d);b=H(d,b);Bb(b,40);Bb(H(b,c),41);return Q(d);},A6r=a=>{let b;b=a.b4B;WD();return b!==A4q?0:1;},B4q=a=>{let b;b=a.b4B;WD();return b!==Bjz?0:1;},AT6=()=>{let b;b=new AKy;WD();AVl(b,A4q,null);return b;},CPw=()=>{let b;b=new AKy;WD();AVl(b,Bjz,null);return b;},BHa=()=>{let b;b=new AKy;WD();AVl(b,A_M,null);return b;},BNv=()=>{let b;b=new AKy;WD();AVl(b,A6g,null);return b;},BEg=()=> +{let b;b=new AKy;WD();AVl(b,Bbu,null);return b;},AY9=(a,b)=>{return EKf(a.b4B,DL(b));},ACn=a=>{let b;b=a.b4B;WD();if(b!==Bbu){if(b!==A6g){if(b===A_M)return Dw(2.0);return Dw(BVu(a));}return J$(1.0,3.0,BVu(a));}return J$(7.0,7.0,BVu(a));},BVu=a=>{let b;b=a.ckJ;if(b!==null)return b.bG6;return 1.0;},Da5=b=>{let c;c=BOF(b);if(c===null)return AT6();return c;},BOF=b=>{if(!BG(E(2322),b)){if(!BG(E(2323),b)){if(!BG(E(350),b)){if(BG(E(2324),b))return CPw();return null;}return BHa();}return BNv();}return BEg();}; +function BQD(){let a=this;F.call(a);a.b1e=null;a.cLg=null;a.c08=null;} +let Ca4=null,A_Y=()=>{A_Y=Z(BQD);DPc();},D58=(a,b)=>{A_Y();a.c08=AOG();a.b1e=b;},B1X=a=>{let b=new BQD();D58(b,a);return b;},Da4=(b,c)=>{let d,e,f;A_Y();d=c.bNc;e=0;f=b;while(e{let c,d,e,f,g,h,i,j,k;c=a.cLg;if(c===null){c=new CA6;c.cwt=CXC();d=a.b1e.dX();while(d.dY()){e=d.dZ();f=e.bNc;g=f.bLh;h=f.bKx;i=c.cwt;j=0;while(j{Ca4=B1X(Gi());},ER8=N(); +function BO0(){F.call(this);this.ckd=null;} +let CZ9=null,C55=null,A7X=()=>{A7X=Z(BO0);EKA();},ENf=a=>{A7X();a.ckd=AAh();},CtD=()=>{let a=new BO0();ENf(a);return a;},EKA=()=>{CZ9=CtD();C55=Dm(E(4476));}; +function BpG(){let a=this;F.call(a);a.cbr=0.0;a.cbs=0.0;a.cbt=0.0;a.cbu=0.0;} +let RW=null,Qa=()=>{Qa=Z(BpG);E5z();},CIX=(a,b,c,d,e)=>{Qa();a.cbr=b;a.cbs=c;a.cbt=d;a.cbu=e;},AQR=(a,b,c,d)=>{let e=new BpG();CIX(e,a,b,c,d);return e;},Ce0=a=>{return !(a.cbr===0.0&&a.cbs===0.0&&a.cbt===0.0&&a.cbu===0.0)?0:1;},E5z=()=>{RW=AQR(0.0,0.0,0.0,0.0);},Be4=N(),EnX=null,BLW=()=>{BLW=Z(Be4);EJw();},BVl=a=>{return BvP(a.bHU);},CWX=(a,b)=>{return BAe(Doq(a,b),V(a.bH8.bLL));},Doq=(a,b)=>{let c;Gp(b,E(3312));c=a;return CE(BU(CT(Od(c.bHU),V(86400)),V(A5V(c.bH8))),V(b.bI6));},EJw=()=>{EnX=B_b(BWe(new CEz), +new CED);}; +function Zn(){let a=this;Be4.call(a);a.bHU=null;a.bH8=null;} +let BML=null,BMa=null,ACM=()=>{ACM=Z(Zn);DDT();},Bbd=(b,c)=>{ACM();Gp(b,E(3234));Gp(c,E(3404));return A8y(b,c);},BQ7=(b,c,d)=>{let e,f,g,h,i;ACM();Gp(d,E(3312));e=BU(b,V(d.bI6));f=AEY(e,86400);g=AJk(e,86400);h=AGN(f);b=V(g);No();GC();Jp(AR4,b);Jp(WS,V(c));i=Cp(CY(b,V(3600)));b=CE(b,V(i*3600|0));g=Cp(CY(b,V(60)));return A8y(h,Z1(i,g,Cp(CE(b,V(g*60|0))),c));},DE0=(a,b,c)=>{ACM();BLW();a.bHU=b;a.bH8=c;},A8y=(a,b)=>{let c=new Zn();DE0(c,a,b);return c;},AOp=(a,b,c)=>{if(a.bHU===b&&a.bH8===c)return a;return A8y(b, +c);},Fvz=(a,b)=>{if(b instanceof Mj){b=b;return !(!BYz(b)&&!Bkg(b))?1:0;}return !(b!==null&&a.QF(b))?0:1;},Ez_=(a,b)=>{if(b instanceof Mj)return !b.YV()?CRA(a.bHU,b):B_X(a.bH8,b);return b.YW(a);},Ejf=(a,b)=>{if(b instanceof Mj)return !Bkg(b)?BkB(a.bHU,b):CLJ(a.bH8,b);return BZo(a,b);},ET4=(a,b)=>{if(b instanceof Mj)return !b.YV()?WN(a.bHU,b):Dri(a.bH8,b);return b.YX(a);},BM4=a=>{return BjR(a.bHU);},Ceq=a=>{return a.bH8.bJL;},Cgs=a=>{return a.bH8.bMf;},C3G=a=>{return a.bH8.bMl;},AYg=(a,b)=>{let c,d;if(!(b instanceof AA6)) +{if(!(b instanceof ATy)){if(!(b instanceof Zn)){b=b;GC();c=ACA;d=Rt(b);return CKS(a,c,d);}return b;}return AOp(a,a.bHU,b);}return AOp(a,b,a.bH8);},ABm=(a,b)=>{return AOp(a,Ep(a.bHU,b),a.bH8);},AIN=(a,b)=>{return CZq(a,a.bHU,BH,BH,b,BH,1);},Cmi=(a,b)=>{return CZq(a,a.bHU,BH,BH,b,BH,(-1));},CZq=(a,b,c,d,e,f,g)=>{let h,i,j,k,l;if(D4(Gu(Gu(Gu(c,d),e),f),BH)){h=BU(BU(BU(CY(f,O(2437873664, 20116)),CY(e,V(86400))),CY(d,V(1440))),CY(c,V(24)));i=V(g);h=CT(h,i);j=BU(BU(BU(Fl(f,O(2437873664, 20116)),CT(Fl(e,V(86400)), +V(1000000000))),CT(Fl(d,V(1440)),O(4165425152, 13))),CT(Fl(c,V(24)),O(817405952, 838)));k=Rt(a.bH8);c=BU(CT(j,i),k);d=BU(h,BIp(c,O(2437873664, 20116)));i=Cl$(c,O(2437873664, 20116));l=D4(i,k)?AZM(i):a.bH8;return AOp(a,Ep(b,d),l);}return AOp(a,b,a.bH8);},Ejq=(a,b)=>{if(b!==AXd()){if(b===A_Q())b=BVl(a);else if(b===Bf7()){MF();b=ACQ;}else b=b===AXd()?AGN(Od(a.bHU)):b===Blp()?a.bH8:!(b!==B0$()&&b!==Bo6()&&b!==BJY())?null:C$s(a,b);return b;}return a.bHU;},DJU=(a,b,c)=>{let d,e,f,g,h,i,$$je;ACM();if(b instanceof Zn)d +=b;else if(b instanceof Cz9)d=b.c$t;else a:{try{d=A8y(AQV(b),C1W(b));break a;}catch($$e){$$je=P($$e);if($$je instanceof GE){}else{throw $$e;}}c=new GE;d=BY(b);b=BN(Dg(b));e=new S;T(e);H(H(H(H(e,E(4477)),d),E(4302)),b);Bp(c,Q(e));J(c);}if(c instanceof AC3){e=c;MF();if(BBv(e,Ka)>=0?0:1){f=BPQ(a.bHU,d.bHU);g=CE(Rt(d.bH8),Rt(a.bH8));h=OT(f,BH);if(h>0&&GR(g,BH)){f=CE(f,V(1));g=BU(g,O(2437873664, 20116));}else if(h<0&&G5(g,BH)){f=BU(f,V(1));g=CE(g,O(2437873664, 20116));}BMf();switch(CSf.data[e.bGO]){case 1:break;case 2:return QD(ASX(f, +O(500654080, 20)),CY(g,V(1000)));case 3:return QD(ASX(f,V(86400000)),CY(g,V(1000000)));case 4:return QD(S3(f,86400),CY(g,V(1000000000)));case 5:return QD(S3(f,1440),CY(g,O(4165425152, 13)));case 6:return QD(S3(f,24),CY(g,O(817405952, 838)));case 7:return QD(S3(f,2),CY(g,O(1218936832, 10058)));default:b=new Wh;c=BY(c);d=new S;T(d);H(H(d,E(4478)),c);Bp(b,Q(d));J(b);}return QD(ASX(f,O(2437873664, 20116)),g);}i=d.bHU;b=a.bHU;h=b instanceof AA6?(A3R(i,b)<=0?0:1):IH(Od(i),Od(b))?0:1;if(h&&BZd(d.bH8,a.bH8))i=B6B(i, +V(1));else if(CmL(i,a.bHU)&&(AXN(d.bH8,a.bH8)<=0?0:1))i=Ep(i,V(1));return Cxj(a.bHU,i,c);}return a.QE(d,c);},C2c=(a,b)=>{let c,d,e,f,g;if(!(b instanceof Zn)){c=a;d=c.bHU;e=b;f=e.bHU;g=It(d,f);if(!g){g=AXN(c.bH8,e.bH8);if(!g)g=BR6(BVl(a),BVl(b));}return g;}return B8R(a,b);},B8R=(a,b)=>{let c;c=A3R(a.bHU,b.bHU);if(!c)c=AXN(a.bH8,b.bH8);return c;},A6a=(a,b)=>{let c,d,e;if(!(b instanceof Zn)){a:{b:{c=a;d=Od(c.bHU);b=b;e=OT(d,Od(b.bHU));if(e<=0){if(e)break b;if(IH(Rt(c.bH8),Rt(b.bH8)))break b;}e=1;break a;}e=0;}return e;}return B8R(a, +b)<=0?0:1;},VG=(a,b)=>{let c,d,e;if(!(b instanceof Zn)){a:{b:{c=a;d=Od(c.bHU);b=b;e=OT(d,Od(b.bHU));if(e>=0){if(e)break b;if(FE(Rt(c.bH8),Rt(b.bH8)))break b;}e=1;break a;}e=0;}return e;}return B8R(a,b)>=0?0:1;},B8X=(a,b)=>{let c;if(a!==b){if(b instanceof Zn){c=b;return !(AFy(a.bHU,c.bHU)&&AC8(a.bH8,c.bH8))?0:1;}return 0;}return 1;},BVf=a=>{return C2U(a.bHU)^CZi(a.bH8);},C5J=a=>{let b,c,d;b=C29(a.bHU);c=DsN(a.bH8);d=new S;T(d);b=H(d,b);Bb(b,84);H(b,c);return Q(d);},CKS=(a,b,c)=>{return !(b instanceof Mj)?a.QG(b, +c):!Bkg(b)?AOp(a,B1H(a.bHU,b,c),a.bH8):AOp(a,a.bHU,CXq(a.bH8,b,c));},FaW=(a,b)=>{return C2c(a,b);},DDT=()=>{let b;VD();b=C2z;No();BML=Bbd(b,DhJ);BMa=Bbd(C1r,B5k);}; +function AR6(){let a=this;BfZ.call(a);a.b$q=BH;a.bSP=0;a.ce6=0;a.bX_=0;a.cE1=null;a.cME=BH;a.cS7=BH;a.b9j=0;a.cK6=0;} +let B6Y=null,BJ3=null,E54=null,Ezo=null,ECH=null,Zo=()=>{Zo=Z(AR6);DwW();},Cwz=(a,b)=>{Zo();BBH(a,BCn(),b);},E6_=a=>{let b=new AR6();Cwz(b,a);return b;},EQU=(a,b)=>{Zo();BBH(a,b,ACH());},Bu9=a=>{let b=new AR6();EQU(b,a);return b;},BBH=(a,b,c)=>{let d,e,f,g;Zo();a:{AXZ();a.bHq=Ca(17);a.bSf=BBl(17);a.bVH=0;a.bVl=0;a.cy6=1;BK2(a,b);a.bHq=Ca(17);a.bSf=BBl(17);a.bVH=0;a.bVl=0;a.cy6=1;if(c===BKW){d=BGY;if(d>=0)break a;}b=BTi(c.bIP,c.bK3);if(BHE===null)BHE=EJ_();e=BHE;d=e.hasOwnProperty(Cq(b))?e[Cq(b)].value:e[Cq(E(4479))].value;BGY +=d;}b:{b=a;b.c6g=d;b.bX_=0;if(c===BKW){d=BMy;if(d>=0)break b;}e=BTi(c.bIP,c.bK3);if(BHF===null)BHF=Fq4();f=BHF;d=f.hasOwnProperty(Cq(e))?f[Cq(e)].value:f[Cq(E(4479))].value;BMy=d;}b.cUI=d;b.bX_=0;BKW=c;a.b$q=O(4184124416, 4294964450);a.bSP=1582;a.ce6=((-1)+BVW(a)|0)-((a.bSP-2000|0)/100|0)|0;a.cE1=Ey([0,0,0,0,0,0,0,0,0,0]);a.b9j=10;g=QR();Z7(a,g);},Fzb=(a,b)=>{let c=new AR6();BBH(c,a,b);return c;},AGC=(a,b,c)=>{let d,e,f,g,h,i,j;if(c){if(b>=0&&b<15){a.bX_=0;if(b){if(b!=1&&b!=2){a:{b:{c:{d:{e:{f:{g:{h:{d=BH;e +=a;ACr(e);switch(b){case 3:case 4:case 8:break h;case 5:case 6:case 7:break g;case 9:break f;case 10:case 11:break d;case 12:break c;case 13:break b;case 14:break e;default:}break a;}d=V(604800000);break a;}d=V(86400000);break a;}d=V(43200000);break a;}a.bLE=BU(a.bLE,V(c));break a;}a.bLE=BU(a.bLE,CT(V(c),V(3600000)));break a;}a.bLE=BU(a.bLE,CT(V(c),V(60000)));break a;}a.bLE=BU(a.bLE,CT(V(c),V(1000)));}if(G5(d,BH)){f=AZ1(a,a.bLE);g=BU(a.bLE,CT(V(c),d));a.bLE=g;h=AZ1(a,g);if(h!=f)a.bLE=BU(a.bLE,V(f-h|0));}a.bVH +=0;AL1(e);return;}e=a;AL1(e);if(b==2){i=a.bHq.data[2]+c|0;if(i>=0)c=i/12|0;else{c=(i-11|0)/12|0;i=12+(i%12|0)|0;}KQ(e,2,i%12|0);}KQ(e,1,a.bHq.data[1]+c|0);j=AD9(a,AHN(a,a.bHq.data[1]),a.bHq.data[2]);if(a.bHq.data[5]>j)KQ(e,5,j);AL1(e);return;}i:{e=a;AL1(e);if(a.bHq.data[0]!=1){if(c>0){KQ(e,0,1);break i;}return;}if(c<0)KQ(e,0,0);else return;}AL1(e);return;}e=new Bt;X(e);J(e);}},CU3=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q;e=CY(b,V(86400000));if(c<0){c=c+86400000|0;e=CE(e,V(1));}c=c+d|0;while(c<0){c=c+86400000 +|0;e=CE(e,V(1));}while(c>=86400000){c=c-86400000|0;e=BU(e,V(1));}f=V(d);g=BU(b,f);h=Dro(a,e,g);i=a.bHq.data;i[6]=h;if(i[1]==a.bSP&&IH(a.b$q,g))h=h+a.b9j|0;j=h/32|0;k=AHN(a,i[1]);l=h-BCj(a,k,j)|0;if(l>AD9(a,k,j)){l=l-AD9(a,k,j)|0;j=j+1|0;}a.bHq.data[7]=Ox(a,CE(e,V(3)))+1|0;m=AZ1(a,b);i=a.bHq.data;if(i[1]>0)m=m-d|0;i[16]=m;if(!m)n=e;else{c=c+m|0;if(c<0){c=c+86400000|0;n=CE(e,V(1));}else if(c<86400000)n=e;else{c=c-86400000|0;n=BU(e,V(1));}if(D4(e,n)){b=BU(CE(b,f),V(m));d=Dro(a,n,b);i=a.bHq.data;i[6]=d;if(i[1]== +a.bSP&&IH(a.b$q,b))d=d+a.b9j|0;j=d/32|0;k=AHN(a,i[1]);l=d-BCj(a,k,j)|0;if(l>AD9(a,k,j)){l=l-AD9(a,k,j)|0;j=j+1|0;}a.bHq.data[7]=Ox(a,CE(n,V(3)))+1|0;}}i=a.bHq.data;i[14]=c%1000|0;c=c/1000|0;i[13]=c%60|0;c=c/60|0;i[12]=c%60|0;i[11]=(c/60|0)%24|0;i[9]=i[11]<=11?0:1;i[10]=i[11]%12|0;if(i[1]>0)i[0]=1;else{i[0]=0;i[1]=( -i[1]|0)+1|0;}i[2]=j;i[5]=l;d=l-1|0;i[8]=(d/7|0)+1|0;b=CE(CE(n,V(l)),V(2));o=a;i[4]=((d+Ox(a,CE(b,V(ALh(o)-1|0)))|0)/7|0)+1|0;p=Ox(a,CE(CE(CE(n,V(3)),V(a.bHq.data[6]-1|0)),V(ALh(o)-1|0)));q=(((a.bHq.data[6] +-1|0)+p|0)/7|0)+((7-p|0)=BpW(o))q=1;i.data[3]=q;}}},EDl=(a,b,c,d,e,f)=>{let g,h,i,j,k;a:{b:{g=a.bHq.data;h=g[16];if(a.bX_){i=a.cME;if(GR(c,i)){j=a.cS7;if(G5(c,j)){k=a.cE1.data;if(k[4]==f&&!(!h&&FE(d,i))){if(!h)break b;if(G5(d,j))break b;}}}}CU3(a,b,e,f);a.bX_=0;break a;}g[1]=k[0];g[2] +=k[1];g[5]=k[2];g[7]=k[3];g[0]=k[5];g[3]=k[6];g[4]=k[7];g[6]=k[8];g[8]=k[9];}},AZ1=(a,b)=>{return BZs(a.b39,b);},FfF=a=>{let b,c,d,e,f,g,h,i,j;b=AZ1(a,a.bLE);if(!a.bSf.data[15])a.bHq.data[15]=b;c=a.bLE;d=Cp(Fl(c,V(86400000)));e=a.bHq.data;f=e[16];g=b+f|0;h=BU(c,V(g));i=OT(c,BH);if(i>0&&GR(h,BH)&&g>0)h=O(4294967295, 2147483647);else if(i<0&&G5(h,BH)&&g<0)h=O(0, 2147483648);if(!a.bX_)CU3(a,c,d,b);else{i=((d>=0?d:d+86400000|0)+b|0)+f|0;if(i<0)i=i+86400000|0;else if(i>=86400000)i=i-86400000|0;e[14]=i%1000|0;g=i +/1000|0;e[13]=g%60|0;g=g/60|0;e[12]=g%60|0;e[11]=(g/60|0)%24|0;e[9]=e[11]<=11?0:1;e[10]=e[11]%12|0;g=OT(h,BH);EDl(a,c,h,g>0&&g<0&&!f?O(4294967295, 2147483647):g>=0?h:g<=0?h:f?O(0, 2147483648):h,d,b);}i=0;while(i<17){a.bSf.data[i]=1;i=i+1|0;}if(!a.bX_&&D4(h,O(4294967295, 2147483647))&&D4(h,O(0, 2147483648))){j=a.cE1.data;e=a.bHq.data;j[0]=e[1];j[1]=e[2];j[2]=e[5];j[3]=e[7];j[4]=b;j[5]=e[0];j[6]=e[3];j[7]=e[4];j[8]=e[6];j[9]=e[8];a.cME=BU(h,V(((0+((((23-e[11]|0)*60|0)*60|0)*1000|0)|0)+(((59-e[12]|0)*60|0)*1000 +|0)|0)+((59-e[13]|0)*1000|0)|0));a.cS7=CE(h,V(((((e[11]*60|0)*60|0)*1000|0)+((e[12]*60|0)*1000|0)|0)+(e[13]*1000|0)|0));a.bX_=1;}},CrI=a=>{let b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;a:{b:{c:{d:{e:{b=a;if(!BM5(b)){f:{c=a.bSf.data;if(!c[11]){if(!c[10])break f;d=a.bHq.data;if(d[10]<0)break a;if(d[10]<=11)break f;else break a;}d=a.bHq.data;if(!(d[11]>=0&&d[11]<=23))J(Ms());}if(c[12]){d=a.bHq.data;if(!(d[12]>=0&&d[12]<=59))J(Ms());}if(c[13]){d=a.bHq.data;if(!(d[13]>=0&&d[13]<=59))J(Ms());}if(c[14]){d=a.bHq.data;if(d[14]< +0)break b;if(d[14]>999)break b;}if(c[3]){d=a.bHq.data;if(d[3]<1)break c;if(d[3]>53)break c;}if(c[7]){d=a.bHq.data;if(!(d[7]>=1&&d[7]<=7))J(Ms());}if(c[8]){d=a.bHq.data;if(!(d[8]>=1&&d[8]<=6))J(Ms());}if(c[4]){d=a.bHq.data;if(!(d[4]>=1&&d[4]<=6))J(Ms());}if(c[9]){d=a.bHq.data;if(d[9]&&d[9]!=1)J(Ms());}if(c[10]){d=a.bHq.data;if(d[10]<0)break d;if(d[10]>11)break d;}if(c[1]){if(c[0]){d=a.bHq.data;if(!d[0]&&!(d[1]>=1&&d[1]<=292269054))J(Ms());}d=a.bHq.data;if(!(d[1]>=1&&d[1]<=292278994))J(Ms());}if(c[2]){c=a.bHq.data;if +(c[2]<0)break e;if(c[2]>11)break e;}}e=BH;c=a.bSf.data;if(c[11]&&a.cr$!=10)e=V(a.bHq.data[11]);else if(c[10]){d=a.bHq.data;e=V((d[9]*12|0)+d[10]|0);}f=CT(e,V(3600000));if(c[12])f=BU(f,CT(V(a.bHq.data[12]),V(60000)));if(c[13])f=BU(f,CT(V(a.bHq.data[13]),V(1000)));if(c[14])f=BU(f,V(a.bHq.data[14]));g=!c[1]?1970:a.bHq.data[1];if(c[0]){d=a.bHq.data;if(d[0]&&d[0]!=1)J(Ms());if(!d[0])g=1-g|0;}h=!(!c[4]&&!c[8])?1:0;i=!(!(!c[5]&&!c[2]&&!h)&&a.b28!=6)?0:1;if(i){j=a.b28;if(!(j!=7&&j!=3)){if(c[3]&&c[7])i=!(j!=3&&h&&c[7]) +?0:1;else if(c[6])i=!(c[5]&&c[2])?0:1;}}if(!i){k=!(c[3]&&a.b28!=6)?0:1;if(k&&c[6])k=c[7];l=B4W(a,g);if(k){m=!a.bSf.data[7]?ALh(b)-1|0:a.bHq.data[7]-1|0;e=CE(l,V(3));n=Ox(a,CE(e,V(ALh(b)-1|0)));l=BU(l,V((((a.bHq.data[3]-1|0)*7|0)+Ox(a,CE(V(n+m|0),e))|0)-n|0));if((7-n|0)=1&&c[6]<=(365+(!AHN(a,g)?0:1)|0)))J(Ms());}l=BU(l,V(a.bHq.data[6]-1|0));}else if(c[7])l=BU(l,V(Ox(a,CE(V(a.bHq.data[7]-1|0),CE(l,V(3))))));}}else{j=a.bHq.data[2];g +=g+(j/12|0)|0;j=j%12|0;if(j<0){g=g+(-1)|0;j=j+12|0;}o=AHN(a,g);l=BU(B4W(a,g),V(BCj(a,o,j)));c=a.bSf.data;p=c[5];if(p){m=a.b28;if(!(m!=7&&m!=4&&m!=8))p=!(c[7]&&h)?1:0;}if(p){if(!BM5(b)){c=a.bHq.data;if(!(c[5]>=1&&c[5]<=AD9(a,o,j)))J(Ms());}l=BU(l,V(a.bHq.data[5]-1|0));}else{m=!c[7]?ALh(b)-1|0:a.bHq.data[7]-1|0;c=a.bSf.data;if(c[4]&&a.b28!=8){e=CE(l,V(3));n=Ox(a,CE(e,V(ALh(b)-1|0)));l=BU(l,V((((a.bHq.data[4]-1|0)*7|0)+Ox(a,CE(V(n+m|0),e))|0)-n|0));}else if(c[8])l=a.bHq.data[8]>=0?BU(l,V(Ox(a,CE(V(m),CE(l,V(3)))) ++((a.bHq.data[8]-1|0)*7|0)|0)):BU(l,V((AD9(a,o,j)+Ox(a,CE(V(m),CE(BU(l,V(AD9(a,o,j))),V(3))))|0)+(a.bHq.data[8]*7|0)|0));else if(c[7]){e=CE(l,V(3));n=Ox(a,CE(e,V(ALh(b)-1|0)));l=BU(l,V(Ox(a,V(Ox(a,CE(V(n+m|0),e))-n|0))));}}}a.b28=0;e=BU(f,CT(l,V(86400000)));if(g==a.bSP&&FE(e,BU(a.b$q,CT(V(BVW(a)),V(86400000)))))e=CE(e,CT(V(BVW(a)),V(86400000)));a.bLE=CE(e,V(AZ1(a,e)));return;}J(Ms());}J(Ms());}J(Ms());}J(Ms());}J(Ms());},Dro=(a,b,c)=>{let d,e,f,g;d=1970;c=FE(c,a.b$q)?b:CE(b,V(a.ce6));while(true){e=Cp(CY(c,V(365)));if +(!e)break;d=d+e|0;c=CE(b,B4W(a,d));}if(GR(c,BH)){d=d-1|0;f=!AHN(a,d)?365:366;g=a.bSP;if(d==g)f=f-a.b9j|0;if(d==(g-1|0))f=f-a.cK6|0;c=BU(c,V(f));}a.bHq.data[1]=d;return Cp(c)+1|0;},B4W=(a,b)=>{let c,d,e;c=V(b);if(FE(c,V(1970))){d=BU(CT(CE(c,V(1970)),V(365)),CY(CE(c,V(1969)),V(4)));e=a.bSP;b=OT(c,V(e));return b>0?CE(d,CE(CY(CE(c,V(1901)),V(100)),CY(CE(c,V(1601)),V(400)))):!b?BU(d,V(a.b9j)):D4(c,V(e-1|0))?BU(d,V(a.ce6)):BU(d,V(a.cK6));}if(G5(c,V(a.bSP))){d=BU(CT(CE(c,V(1970)),V(365)),CY(CE(c,V(1972)),V(4)));c= +CE(c,V(2000));return BU(CE(d,CY(c,V(100))),CY(c,V(400)));}return BU(BU(CT(CE(c,V(1970)),V(365)),CY(CE(c,V(1972)),V(4))),V(a.ce6));},AD9=(a,b,c)=>{if(b&&c==1){Zo();return B6Y.data[c]+1|0;}Zo();return B6Y.data[c];},BCj=(a,b,c)=>{if(b&&c>1){Zo();return BJ3.data[c]+1|0;}Zo();return BJ3.data[c];},AHN=(a,b)=>{if(b>a.bSP){a:{b:{if(!(b%4|0)){if(b%100|0)break b;if(!(b%400|0))break b;}b=0;break a;}b=1;}return b;}return b%4|0?0:1;},BVW=a=>{let b;b=a.bSP;return ((b/100|0)-(b/400|0)|0)-2|0;},Ox=(a,b)=>{let c;c=Cp(Fl(b,V(7)));if +(GR(b,BH)&&c<0)return c+7|0;return c;},DwW=()=>{B6Y=IU([31,28,31,30,31,30,31,31,30,31,30,31]);BJ3=Ey([0,31,59,90,120,151,181,212,243,273,304,334]);E54=Ey([1,292278994,11,53,6,31,366,7,6,1,11,23,59,59,999,50400000,7200000]);Ezo=Ey([0,1,0,1,0,1,1,1,1,0,0,0,0,0,0,(-46800000),0]);ECH=Ey([1,292269054,11,50,3,28,355,7,3,1,11,23,59,59,999,50400000,1200000]);},BEK=N(M4),EOl=(a,b)=>{return 1;},BEJ=N(M4),Ev$=(a,b)=>{return b!=32?0:1;},BEI=N(M4),EDQ=(a,b)=>{return !(b!=34&&b!=8220&&b!=8221)?1:0;},BEH=N(M4),D_e=(a,b)=> +{return !(!(b>=97&&b<=122)&&!(b>=65&&b<=90)&&!(b>=48&&b<=57)&&b!=95)?1:0;},BEG=N(M4),DYC=(a,b)=>{return !(!(b>=48&&b<=57)&&b!=95)?1:0;},BEF=N(M4),D$7=(a,b)=>{return AOq(b);},BEM=N(M4),DB4=(a,b)=>{return AV2(b);}; +function BKY(){let a=this;AMh.call(a);a.cmz=null;a.b5C=null;a.bYP=null;a.bY0=null;} +let Cfd=null,BSI=0,A_g=()=>{A_g=Z(BKY);DC8();},D4e=a=>{a.bYP=null;a.bY0=null;Cy();a.b5C=PI;},EcC=(a,b)=>{a.bYP=null;a.bY0=null;U(a.bR3,b);return 1;},A6f=(a,b)=>{let c;A_g();c=UQ(D3(Cfd,b.p()),E(14));if(!CB(c,E(4480))){if(!CB(c,E(4481)))return !(!CB(c,E(864))&&!CB(c,E(865)))?1:0;return 0;}return 1;},Dpx=a=>{let b,c,d,e,f,g;if(a.bYP===null){a.bYP=Bk();b=0;while(true){c=a.bR3;if(b>=c.bGJ)break;a:{c=Be(c,b);d=a.bR3;if(b>0){e=d;if(b<(e.bGJ-1|0)&&!(Be(e,b)).bL()&&A6f(a,Be(e,b-1|0))&&A6f(a,Be(e,b+1|0))){f=1;break a;}}f +=A6f(a,Be(d,b));}if(f&&!(!c.bL()&&!a.bYP.bGJ)){g=CPN(c);c=a.cmz;if(!(c!==null&&c.et(g.bVA)))U(a.bYP,g);}b=b+1|0;}Cso(a,a.bYP);}return Ls(a.bYP);},Cpu=a=>{let b,c,d;if(a.bY0===null){a.bY0=Bk();b=Br(a.bR3);while(Bq(b)){c=Bm(b);d=a.b5C;Cy();if(d!==PI&&A6f(a,c)==1)continue;if(!c.bL()&&!a.bY0.bGJ)continue;d=CvB(c);c=a.cmz;if(!(c!==null&&c.et(d.bVA)))U(a.bY0,d);}Cso(a,a.bY0);}return Ls(a.bY0);},Cso=(a,b)=>{let c;b=b;while(true){c=b.bGJ;if(c<=0)break;if((ES(BEu(Be(b,c-1|0),0))).bGI.length)break;EJ(b,b.bGJ-1|0);}},B99 +=a=>{let b,c,d,e;b=Bk();c=Br(a.bR3);while(Bq(c)){d=Bm(c);e=!A6f(a,d)?CvB(d):CPN(d);if(!a.cmz.et(e.bVA))U(b,e);}return b;},D_0=(a,b,c,d,e,f,g)=>{let h,i,j,k,l;if(AJn(a.b5C)){h=Br(a.bR3);a:{b:{while(Bq(h)){g=Bm(h);if(Bim(g))break b;if(A8x(g.p()))break b;if(Bq1(g.p()))break b;if(AFV(g)!==null)break b;}i=0;break a;}i=1;}if(i){if(!c&&!d)return null;B3();g=CF;return BZ4(Q2(b,g),B99(a),b,e,a.b0k,f);}}if(a.b0k!==null){if(a.b5C!==PI){if(Df()){A_g();if(!BSI&&!AJn(a.b5C)){b=new C4;X(b);J(b);}}h=Cj9(Cpu(a),b,a.b0k,f);j +=Cj9(Dpx(a),b,a.b0k,f);if(d&&!c)return BpX(h);if(c&&!d)return BpX(j);if(!d&&!c)return E6(0.0,0.0);k=BpX(h);l=BpX(j);B3();return FT(k,l,CF);}if(d){B3();g=CF;return BZ4(Q2(b,g),B99(a),b,e,a.b0k,f);}return E6(0.0,0.0);}b=new BP;X(b);J(b);},DC8=()=>{BSI=0;Cfd=Dp(Bo1());}; +function CYC(){AMh.call(this);this.cNw=null;} +let D_M=a=>{let b;b=new BV;X(b);J(b);},ExD=(a,b)=>{B0J(a);a.cNw=b;},C5G=a=>{let b=new CYC();ExD(b,a);return b;},EQW=(a,b)=>{let c;c=CES(a.cNw.bH$,b);b=a.bR3;c=CWh(c);Ea(b,c);return 1;},EV6=a=>{let b;b=new BV;X(b);J(b);},Flj=a=>{let b;b=new BV;X(b);J(b);},DOg=(a,b,c,d,e,f,g)=>{B3();g=CF;return BZ4(Q2(b,g),a.bR3,b,e,a.b0k,f);},A4L=N(Bx),A4q=null,Bbu=null,A6g=null,A_M=null,Bjz=null,Fch=null,WD=()=>{WD=Z(A4L);Dv0();},Foy=(a,b,c)=>{WD();Ct(a,b,c);},Ba5=(a,b)=>{let c=new A4L();Foy(c,a,b);return c;},Dv0=()=>{let b, +c,d;A4q=Ba5(E(883),0);Bbu=Ba5(E(4217),1);A6g=Ba5(E(4216),2);A_M=Ba5(E(935),3);b=Ba5(E(4482),4);Bjz=b;c=K(A4L,5);d=c.data;d[0]=A4q;d[1]=Bbu;d[2]=A6g;d[3]=A_M;d[4]=b;Fch=c;}; +function CmQ(){let a=this;F.call(a);a.b82=0;a.cg2=null;a.b3c=null;} +let FkT=b=>{let c,d,e,f,g,h,i,j;if(!BO(b,E(1174))){c=new CmQ;c.cg2=UJ();c.b3c=UJ();d=0;a:{while(true){if(d>=b.bGI.length){if(!c.b82&&A$A(c.b3c)&&A$A(c.cg2))return null;return c;}e=Bn(b,d);if(e==37){if(Rl(b,E(893),d))c.b82=1;else if(Rl(b,E(895),d))CHZ(c,E(894));else{if(!Rl(b,E(897),d))return null;CHZ(c,E(896));}d=d+2|0;continue;}if(e==91)break a;if(Rl(b,E(3984),d))break a;if(e!=92)d=d+1|0;else{f=d+1|0;if(f>=b.bGI.length)return null;e=Bn(b,f);d=d+2|0;if(!(e!=115&&e!=110&&e!=116&&e!=114&&e!=102&&e!=48)){c.b82= +1;continue;}if(e==100){g=c.b3c;FY();h=Bm1;Ea(g,h);continue;}if(AWO(e))return null;}i=d+1|0;if(!(i=b.bGI.length)return null;j=Bn(b,d);d=d+1|0;if(AWO(j))return null;}if(j64)break;while(e<=j){Ctn(c,e);e=(e+1|0)&65535;}}return null;}return null;}return null;},CHZ=(a,b)=>{let c,d,e;c=0;while(c{let c,d;if(AWO(b)){c=a.cg2;d=AE5(C8O(b));KM(c,d);}else if +(AJj(b))a.b82=1;else{c=a.b3c;d=AE5(b);KM(c,d);}},Egg=N(),CxJ=()=>{let b;b=new CwE;ANm();b.cRZ=Bhc;return b;},CXO=N(); +function CD4(){F.call(this);this.ddJ=null;} +let Evx=0,A3w=()=>{A3w=Z(CD4);D73();},BWG=()=>{A3w();return null;},B3Y=b=>{A3w();if(b!==null)GP(b.ddJ);else Fw(Fm(),E(4483));},CEM=b=>{let c;A3w();a:{b:{if(b!==null){if(BG(b,E(13)))break b;if(Bj(b,E(360)))break b;}c=0;break a;}c=1;}return c;},D73=()=>{Evx=!(!CEM(A2k(E(4484)))&&!CEM(null))?1:0;},Cub=N(),D2g=a=>{return Bk();}; +function CwE(){F.call(this);this.cRZ=null;} +let CyR=(a,b)=>{let c,d,e,f;c=BD(b.bGI.length);d=c.data;e=0;f=d.length;while(e>24;e=e+1|0;}return CEC(c,a.cRZ);},GE=N(DR),BxZ=N(),D$b=null,BXe=()=>{BXe=Z(BxZ);DZ6();},DZ6=()=>{D$b=BWe(new Cl6);}; +function AA6(){let a=this;BxZ.call(a);a.bKO=0;a.bNr=0;a.bL8=0;} +let C2z=null,C1r=null,VD=()=>{VD=Z(AA6);DRE();},Bip=(b,c,d)=>{VD();GC();Jp(NJ,V(b));Gp(c,E(771));Jp(ACk,V(d));return B88(b,c,d);},AMm=(b,c,d)=>{VD();GC();Jp(NJ,V(b));Jp(AED,V(c));Jp(ACk,V(d));return B88(b,Bi6(c),d);},AGN=b=>{let c,d,e,f,g,h,i,j;VD();GC();Jp(AAe,b);b=CE(BU(b,V(719528)),V(60));c=BH;if(GR(b,BH)){d=CE(CY(BU(b,V(1)),V(146097)),V(1));c=CT(d,V(400));b=BU(b,CT(LF(d),V(146097)));}e=CY(BU(CT(V(400),b),V(591)),V(146097));f=CE(b,BU(CE(BU(CT(V(365),e),CY(e,V(4))),CY(e,V(100))),CY(e,V(400))));if(GR(f,BH)) +{e=CE(e,V(1));f=CE(b,BU(CE(BU(CT(V(365),e),CY(e,V(4))),CY(e,V(100))),CY(e,V(400))));}b=BU(e,c);g=Cp(f);h=((g*5|0)+2|0)/153|0;i=((h+2|0)%12|0)+1|0;j=(g-(((h*306|0)+5|0)/10|0)|0)+1|0;b=BU(b,V(h/10|0));return CKA(B6R(NJ,b),i,j);},AQV=b=>{let c,d,e;VD();c=b.Y6(AXd());if(c===null){c=new GE;d=BY(b);b=BN(Dg(b));e=new S;T(e);H(H(H(H(e,E(4485)),d),E(4302)),b);Bp(c,Q(e));J(c);}return c;},B88=(b,c,d)=>{let e,f,g;VD();if(d>28){Xp();if(d>BRN(c,Bbi(ADc,V(b)))){if(d!=29){e=new GE;f=c.bHx;c=new S;T(c);g=H(H(c,E(4486)),f);Bb(g, +32);BE(g,d);Bb(g,39);Bp(e,Q(c));J(e);}c=new GE;e=new S;T(e);g=H(e,E(4487));BE(g,b);H(g,E(4488));Bp(c,Q(e));J(c);}}return CKA(b,c.bGO+1|0,d);},Brh=(b,c,d)=>{VD();a:{b:{c:{switch(c){case 2:break b;case 4:case 6:case 9:case 11:break c;case 3:case 5:case 7:case 8:case 10:break;default:}break a;}d=DO(d,30);break a;}Xp();d=DO(d,!Bbi(ADc,V(b))?28:29);}return AMm(b,c,d);},D4P=(a,b,c,d)=>{VD();BXe();a.bKO=b;a.bNr=c<<16>>16;a.bL8=d<<16>>16;},CKA=(a,b,c)=>{let d=new AA6();D4P(d,a,b,c);return d;},Fc5=(a,b)=>{return b instanceof Mj +?BYz(b):!(b!==null&&a.QF(b))?0:1;},CRA=(a,b)=>{let c,d,e;if(b instanceof Mj){c=b;if(BYz(c)){AI8();switch(Bpx.data[c.bGO]){case 1:a:{b:{c:{switch(a.bNr){case 2:break b;case 3:case 5:case 7:case 8:case 10:break;case 4:case 6:case 9:case 11:break c;default:}d=31;break a;}d=30;break a;}d=!A4G(a)?28:29;}return HM(V(1),V(d));case 2:return HM(V(1),V(!A4G(a)?365:366));case 3:c=BR_(a);ASx();return HM(V(1),!(c===AO7&&!A4G(a))?V(5):V(4));case 4:return a.bKO>0?HM(V(1),V(999999999)):HM(V(1),V(1000000000));default:}return b.ZS();}c +=new Wh;b=BY(b);e=new S;T(e);H(H(e,E(4489)),b);Bp(c,Q(e));J(c);}return b.YW(a);},BkB=(a,b)=>{if(b instanceof Mj)return Cyw(a,b);return BZo(a,b);},WN=(a,b)=>{if(b instanceof Mj){GC();if(b!==AAe){if(b!==ATE)return V(Cyw(a,b));return BUz(a);}return Od(a);}return b.YX(a);},Cyw=(a,b)=>{let c,d,e;AI8();switch(Bpx.data[b.bGO]){case 1:break;case 2:return BgL(a);case 3:return ((a.bL8-1|0)/7|0)+1|0;case 4:c=a.bKO;if(c<1)c=1-c|0;return c;case 5:return ADT(BjR(a));case 6:return ((a.bL8-1|0)%7|0)+1|0;case 7:return ((BgL(a) +-1|0)%7|0)+1|0;case 8:d=new GE;b=BY(b);e=new S;T(e);H(H(e,E(4490)),b);Bp(d,Q(e));J(d);case 9:return ((BgL(a)-1|0)/7|0)+1|0;case 10:return a.bNr;case 11:d=new GE;b=BY(b);e=new S;T(e);H(H(e,E(4490)),b);Bp(d,Q(e));J(d);case 12:return a.bKO;case 13:return a.bKO<1?0:1;default:d=new Wh;b=BY(b);e=new S;T(e);H(H(e,E(4489)),b);Bp(d,Q(e));J(d);}return a.bL8;},BUz=a=>{return BU(CT(V(a.bKO),V(12)),V(a.bNr-1|0));},BR_=a=>{return Bi6(a.bNr);},BgL=a=>{return (BWl(BR_(a),A4G(a))+a.bL8|0)-1|0;},BjR=a=>{return C2D(AJk(BU(Od(a), +V(3)),7)+1|0);},A4G=a=>{Xp();return Bbi(ADc,V(a.bKO));},C3c=(a,b)=>{let c,d,e,f,g;if(!(b instanceof AA6)){b=b;GC();c=SJ;d=a;e=BkB(d,c);f=b.cX8;if(!(f<2&&e==b.coF)){if(f&1){e=b.coF-e|0;g=e<0?V( -e|0):V(7-e|0);MF();a=BKi(d,g,Ka);}else{e=e-b.coF|0;g=e<0?V( -e|0):V(7-e|0);MF();a=AK8(d,g,Ka);}}return a;}return b;},B1H=(a,b,c)=>{let d,e,f,g,h;if(b instanceof Mj){d=b;Jp(d,c);AI8();switch(Bpx.data[d.bGO]){case 1:e=Cp(c);if(a.bL8!=e)a=AMm(a.bKO,a.bNr,e);return a;case 2:e=Cp(c);if(BgL(a)!=e){f=a.bKO;b=NJ;c=V(f);Jp(b, +c);Jp(UK,V(e));Xp();g=Bbi(ADc,c);if(e==366&&!g){b=new GE;d=new S;T(d);h=H(d,E(4491));BE(h,f);H(h,E(4488));Bp(b,Q(d));J(b);}b=Bi6(((e-1|0)/31|0)+1|0);if(e>((BWl(b,g)+BRN(b,g)|0)-1|0))b=BIP.data[(b.bGO+13|0)%12|0];a=B88(f,b,(e-BWl(b,g)|0)+1|0);}return a;case 3:return BNa(a,CE(c,WN(a,A_D)));case 4:if(a.bKO<1)c=CE(V(1),c);return B2g(a,Cp(c));case 5:return Ep(a,CE(c,V(ADT(BjR(a)))));case 6:return Ep(a,CE(c,WN(a,A4Z)));case 7:return Ep(a,CE(c,WN(a,A1a)));case 8:break;case 9:return BNa(a,CE(c,WN(a,A$M)));case 10:e +=Cp(c);if(a.bNr!=e){Jp(AED,V(e));a=Brh(a.bKO,e,a.bL8);}return a;case 11:return CGQ(a,CE(c,WN(a,ATE)));case 12:return B2g(a,Cp(c));case 13:if(D4(WN(a,AAo),c))a=B2g(a,1-a.bKO|0);return a;default:d=new Wh;b=BY(b);h=new S;T(h);H(H(h,E(4489)),b);Bp(d,Q(h));J(d);}return AGN(c);}return a.QG(b,c);},B2g=(a,b)=>{if(a.bKO!=b){GC();Jp(NJ,V(b));return Brh(b,a.bNr,a.bL8);}return a;},AK8=(a,b,c)=>{let d,e;if(c instanceof AC3){d=c;AI8();switch(BLn.data[d.bGO]){case 1:break;case 2:return BNa(a,b);case 3:return CGQ(a,b);case 4:return BoY(a, +b);case 5:return BoY(a,S3(b,10));case 6:return BoY(a,S3(b,100));case 7:return BoY(a,S3(b,1000));case 8:GC();c=AAo;return B1H(a,c,QD(WN(a,c),b));default:d=new Wh;c=BY(c);e=new S;T(e);H(H(e,E(4478)),c);Bp(d,Q(e));J(d);}return Ep(a,b);}c=c;return AK8(a,b,c);},BoY=(a,b)=>{if(D4(b,BH)){GC();return Brh(B6R(NJ,BU(V(a.bKO),b)),a.bNr,a.bL8);}return a;},CGQ=(a,b)=>{let c;if(D4(b,BH)){c=BU(BU(CT(V(a.bKO),V(12)),V(a.bNr-1|0)),b);GC();return Brh(B6R(NJ,AEY(c,12)),AJk(c,12)+1|0,a.bL8);}return a;},BNa=(a,b)=>{return Ep(a, +S3(b,7));},Ep=(a,b)=>{if(D4(b,BH))return AGN(QD(Od(a),b));return a;},BKi=(a,b,c)=>{return D4(b,O(0, 2147483648))?AK8(a,LF(b),c):AK8(AK8(a,O(4294967295, 2147483647),c),V(1),c);},B6B=(a,b)=>{return D4(b,O(0, 2147483648))?Ep(a,LF(b)):Ep(Ep(a,O(4294967295, 2147483647)),V(1));},D8q=(a,b)=>{if(b!==AXd()){if(b===A_Q())b=BvP(a);else if(b===Bf7()){MF();b=Ka;}else b=b===AXd()?AGN(Od(a)):!(b!==Blp()&&b!==B0$()&&b!==Bo6()&&b!==BJY())?null:C$s(a,b);return b;}return a;},Cxj=(a,b,c)=>{let d;d=AQV(b);if(c instanceof AC3){AI8();switch +(BLn.data[c.bGO]){case 1:break;case 2:return CY(BPQ(a,d),V(7));case 3:return A89(a,d);case 4:return CY(A89(a,d),V(12));case 5:return CY(A89(a,d),V(120));case 6:return CY(A89(a,d),V(1200));case 7:return CY(A89(a,d),V(12000));case 8:GC();return CE(WN(d,AAo),WN(a,AAo));default:b=new Wh;c=BY(c);d=new S;T(d);H(H(d,E(4478)),c);Bp(b,Q(d));J(b);}return BPQ(a,d);}return a.QE(d,c);},BPQ=(a,b)=>{return CE(Od(b),Od(a));},A89=(a,b)=>{let c;c=BU(CT(BUz(a),V(32)),V(a.bL8));return CY(CE(BU(CT(BUz(b),V(32)),V(b.bL8)),c),V(32));},RK +=a=>{No();return Bbd(a,S4);},Od=a=>{let b,c,d,e;b=V(a.bKO);c=V(a.bNr);d=BU(BH,CT(V(365),b));e=BU(BU(GR(b,BH)?CE(d,BU(CE(CY(b,V(-4)),CY(b,V(-100))),CY(b,V(-400)))):BU(d,BU(CE(CY(BU(b,V(3)),V(4)),CY(BU(b,V(99)),V(100))),CY(BU(b,V(399)),V(400)))),CY(CE(CT(V(367),c),V(362)),V(12))),V(a.bL8-1|0));if(G5(c,V(2))){e=CE(e,V(1));if(!A4G(a))e=CE(e,V(1));}return CE(e,V(719528));},It=(a,b)=>{let c,d,e;if(!(b instanceof AA6)){c=a;d=Od(c);b=b;e=BAK(d,Od(b));if(!e)e=BR6(BvP(c),BvP(b));return e;}return A3R(a,b);},A3R=(a,b)=> +{let c;c=a.bKO-b.bKO|0;if(!c){c=a.bNr-b.bNr|0;if(!c)c=a.bL8-b.bL8|0;}return c;},CmL=(a,b)=>{if(!(b instanceof AA6))return FE(Od(a),Od(b))?0:1;return A3R(a,b)>=0?0:1;},AFy=(a,b)=>{if(a!==b){if(b instanceof AA6)return A3R(a,b)?0:1;return 0;}return 1;},C2U=a=>{let b;b=a.bKO;return b&(-2048)^(((b<<11)+(a.bNr<<6)|0)+a.bL8|0);},C29=a=>{let b,c,d,e,f;b=a.bKO;c=a.bNr;d=a.bL8;e=Kj(b);f=new S;JP(f,10);if(e>=1000){if(b>9999)Bb(f,43);BE(f,b);}else if(b>=0){BE(f,b+10000|0);BkF(f,0);}else{BE(f,b-10000|0);BkF(f,1);}L(f,c>= +10?E(1272):E(1284));BE(f,c);L(f,d>=10?E(1272):E(1284));BE(f,d);return Q(f);},BvP=a=>{Xp();return ADc;},EvB=(a,b,c)=>{return B1H(a,b,c);},EXo=(a,b)=>{return It(a,b);},DRE=()=>{C2z=AMm((-999999999),1,1);C1r=AMm(999999999,12,31);}; +function ATy(){let a=this;F.call(a);a.bJL=0;a.bMf=0;a.bMl=0;a.bLL=0;} +let DhJ=null,B5k=null,S4=null,EoH=null,DAm=null,A9S=null,No=()=>{No=Z(ATy);E3E();},C6w=(b,c)=>{No();GC();Jp(AK0,V(b));if(c){Jp(AK9,V(c));return A5a(b,c,0,0);}return A9S.data[b];},AZM=b=>{let c,d,e;No();GC();Jp(ACA,b);c=Cp(CY(b,O(817405952, 838)));b=CE(b,CT(V(c),O(817405952, 838)));d=Cp(CY(b,O(4165425152, 13)));b=CE(b,CT(V(d),O(4165425152, 13)));e=Cp(CY(b,V(1000000000)));return Z1(c,d,e,Cp(CE(b,CT(V(e),V(1000000000)))));},C1W=b=>{let c,d,e;No();c=b.Y6(Blp());if(c===null){c=new GE;d=BY(b);b=BN(Dg(b));e=new S;T(e);H(H(H(H(e, +E(4492)),d),E(4302)),b);Bp(c,Q(e));J(c);}return c;},Z1=(b,c,d,e)=>{No();if(!(c|d|e))return A9S.data[b];return A5a(b,c,d,e);},DQ$=(a,b,c,d,e)=>{No();a.bJL=b<<24>>24;a.bMf=c<<24>>24;a.bMl=d<<24>>24;a.bLL=e;},A5a=(a,b,c,d)=>{let e=new ATy();DQ$(e,a,b,c,d);return e;},AMC=(a,b)=>{if(!(b instanceof Mj))return !(b!==null&&b.Z6(a))?0:1;return b.YV();},B_X=(a,b)=>{let c,d;if(!(b instanceof Mj))b=b.YW(a);else{if(!AMC(a,b)){c=new Wh;b=BY(b);d=new S;T(d);H(H(d,E(4489)),b);Bp(c,Q(d));J(c);}b=b.ZS();}return b;},CLJ=(a,b)=> +{if(b instanceof Mj)return C7U(a,b);return BZo(a,b);},Dri=(a,b)=>{if(b instanceof Mj){GC();if(b!==ACA){if(b===A2J)return CY(Rt(a),V(1000));return V(C7U(a,b));}return Rt(a);}return b.YX(a);},C7U=(a,b)=>{let c,d,e;Bak();switch(BUB.data[b.bGO]){case 1:break;case 2:c=new GE;b=BY(b);d=new S;T(d);H(H(d,E(4490)),b);Bp(c,Q(d));J(c);case 3:return a.bLL/1000|0;case 4:c=new GE;b=BY(b);d=new S;T(d);H(H(d,E(4490)),b);Bp(c,Q(d));J(c);case 5:return a.bLL/1000000|0;case 6:return Cp(CY(Rt(a),V(1000000)));case 7:return a.bMl;case 8:return A5V(a);case 9:return a.bMf;case 10:return (a.bJL +*60|0)+a.bMf|0;case 11:return a.bJL%12|0;case 12:e=a.bJL%12|0;if(!(e%12|0))e=12;return e;case 13:return a.bJL;case 14:e=a.bJL;if(!e)e=24;return e;case 15:return a.bJL/12|0;default:c=new Wh;b=BY(b);d=new S;T(d);H(H(d,E(4489)),b);Bp(c,Q(d));J(c);}return a.bLL;},CXq=(a,b,c)=>{let d,e,f,g;if(b instanceof Mj){d=b;Jp(d,c);Bak();switch(BUB.data[d.bGO]){case 1:return BJC(a,Cp(c));case 2:break;case 3:return BJC(a,Cp(c)*1000|0);case 4:return AZM(CT(c,V(1000)));case 5:return BJC(a,Ev(Cp(c),1000000));case 6:return AZM(CT(c, +V(1000000)));case 7:e=Cp(c);if(a.bMl!=e){Jp(ATx,V(e));a=Z1(a.bJL,a.bMf,e,a.bLL);}return a;case 8:c=CE(c,V(A5V(a)));if(D4(c,BH)){e=((a.bJL*3600|0)+(a.bMf*60|0)|0)+a.bMl|0;f=((Cp(Fl(c,V(86400)))+e|0)+86400|0)%86400|0;if(e!=f)a=Z1(f/3600|0,(f/60|0)%60|0,f%60|0,a.bLL);}return a;case 9:e=Cp(c);if(a.bMf!=e){Jp(AK9,V(e));a=Z1(a.bJL,e,a.bMl,a.bLL);}return a;case 10:e=(a.bJL*60|0)+a.bMf|0;c=CE(c,V(e));if(D4(c,BH)){f=((Cp(Fl(c,V(1440)))+e|0)+1440|0)%1440|0;if(e!=f)a=Z1(f/60|0,f%60|0,a.bMl,a.bLL);}return a;case 11:return BEB(a, +CE(c,V(a.bJL%12|0)));case 12:if(DS(c,V(12)))c=BH;return BEB(a,CE(c,V(a.bJL%12|0)));case 13:return C5y(a,Cp(c));case 14:if(DS(c,V(24)))c=BH;return C5y(a,Cp(c));case 15:return BEB(a,CT(CE(c,V(a.bJL/12|0)),V(12)));default:d=new Wh;b=BY(b);g=new S;T(g);H(H(g,E(4489)),b);Bp(d,Q(g));J(d);}return AZM(c);}return a.QG(b,c);},C5y=(a,b)=>{if(a.bJL!=b){GC();Jp(AK0,V(b));return Z1(b,a.bMf,a.bMl,a.bLL);}return a;},BJC=(a,b)=>{if(a.bLL!=b){GC();Jp(WS,V(b));return Z1(a.bJL,a.bMf,a.bMl,b);}return a;},BEB=(a,b)=>{if(D4(b,BH))return Z1(((Cp(Fl(b, +V(24)))+a.bJL|0)+24|0)%24|0,a.bMf,a.bMl,a.bLL);return a;},EEp=(a,b)=>{if(b!==Bf7()){if(b!==Blp()){if(b!==A_Q()&&b!==Bo6()&&b!==B0$()&&b!==BJY()&&b!==AXd())return b.PE(a);return null;}return a;}MF();return ACQ;},ERJ=(a,b,c)=>{let d,e;d=C1W(b);if(c instanceof AC3){e=CE(Rt(d),Rt(a));Bak();switch(C2Q.data[c.bGO]){case 1:break;case 2:return CY(e,V(1000));case 3:return CY(e,V(1000000));case 4:return CY(e,V(1000000000));case 5:return CY(e,O(4165425152, 13));case 6:return CY(e,O(817405952, 838));case 7:return CY(e, +O(1218936832, 10058));default:b=new Wh;c=BY(c);d=new S;T(d);H(H(d,E(4478)),c);Bp(b,Q(d));J(b);}return e;}return a.QE(d,c);},A5V=a=>{return ((a.bJL*3600|0)+(a.bMf*60|0)|0)+a.bMl|0;},Rt=a=>{return BU(BU(BU(CT(V(a.bJL),O(817405952, 838)),CT(V(a.bMf),O(4165425152, 13))),CT(V(a.bMl),V(1000000000))),V(a.bLL));},AXN=(a,b)=>{let c;c=T1(a.bJL,b.bJL);if(!c){c=T1(a.bMf,b.bMf);if(!c){c=T1(a.bMl,b.bMl);if(!c)c=T1(a.bLL,b.bLL);}}return c;},BZd=(a,b)=>{return AXN(a,b)>=0?0:1;},AC8=(a,b)=>{let c;if(a!==b){if(b instanceof ATy) +{c=b;return !(a.bJL==c.bJL&&a.bMf==c.bMf&&a.bMl==c.bMl&&a.bLL==c.bLL)?0:1;}return 0;}return 1;},CZi=a=>{let b;b=Rt(a);return Cp(SW(b,GD(b,32)));},DsN=a=>{let b,c,d,e,f;b=new S;JP(b,18);c=a.bJL;d=a.bMf;e=a.bMl;f=a.bLL;L(b,c>=10?E(14):E(35));BE(b,c);L(b,d>=10?E(82):E(4439));BE(b,d);if(!(e<=0&&f<=0)){L(b,e>=10?E(82):E(4439));BE(b,e);if(f>0){Bb(b,46);if(!(f%1000000|0))L(b,CC(W7((f/1000000|0)+1000|0),1));else if(f%1000|0)L(b,CC(W7(f+1000000000|0),1));else L(b,CC(W7((f/1000|0)+1000000|0),1));}}return Q(b);},DDV=(a, +b,c)=>{return CXq(a,b,c);},EJ7=(a,b)=>{return AXN(a,b);},E3E=()=>{let b,c;DAm=new CtY;A9S=K(ATy,24);b=0;while(true){c=A9S.data;if(b>=c.length)break;c[b]=A5a(b,0,0,0);b=b+1|0;}S4=c[0];EoH=c[12];DhJ=c[0];B5k=A5a(23,59,59,999999999);},Cdb=N(),DCO=(a,b,c)=>{U(b,c);},Cdc=N(); +function B_y(){To.call(this);this.cnX=null;} +let Emc=(a,b)=>{return a.cnX.x8(b);},Fh9=(a,b)=>{return a.cnX.x7(b);},D09=a=>{return a.cnX.Z$();},CYo=N(),D4n=(a,b)=>{return b;}; +function AQF(){let a=this;AKL.call(a);a.cDw=null;a.c7H=null;} +let CB2=b=>{a:{b:{if(!(b>=65&&b<=90)){if(b<97)break b;if(b>122)break b;}b=1;break a;}b=0;}return b;},BdG=(a,b,c)=>{Dik(a);a.cDw=b;a.c7H=c;},BMI=(a,b)=>{let c=new AQF();BdG(c,a,b);return c;},EkR=a=>{return a.cDw;},Exs=a=>{let b;b=a.c7H;if(b===null)b=DnB(a.cDw,0);return b;},Biq=N(0); +function Mj(){let a=this;Bx.call(a);a.c0B=null;a.dao=null;a.c9L=null;a.b_A=null;} +let WS=null,ACA=null,BeE=null,A2J=null,Bu0=null,BtT=null,ATx=null,AR4=null,AK9=null,Bt_=null,Bye=null,Bsy=null,AK0=null,BAn=null,BeH=null,SJ=null,A4Z=null,A1a=null,ACk=null,UK=null,AAe=null,A_D=null,A$M=null,AED=null,ATE=null,BdN=null,NJ=null,AAo=null,BHU=null,BVn=null,Ciw=null,GC=()=>{GC=Z(Mj);FlK();},CJ$=()=>{GC();return Ciw.b2();},C2l=(a,b,c,d,e,f,g)=>{GC();Ct(a,b,c);a.c0B=d;a.dao=e;a.c9L=f;a.b_A=g;},II=(a,b,c,d,e,f)=>{let g=new Mj();C2l(g,a,b,c,d,e,f);return g;},D59=a=>{return a.b_A;},BYz=a=>{let b;b=a.bGO;GC();return !(b +>=SJ.bGO&&b<=AAo.bGO)?0:1;},Bkg=a=>{let b;b=a.bGO;GC();return b>=SJ.bGO?0:1;},Jp=(a,b)=>{let c,d,e,f;c=a.b_A;if(!CdR(c,b)){d=new GE;e=BY(a);c=BY(c);f=new S;T(f);QN(H(H(H(H(H(f,E(4493)),e),E(4494)),c),E(4495)),b);Bp(d,Q(f));J(d);}return b;},B6R=(a,b)=>{return COe(a.b_A,b,a);},DKN=(a,b)=>{return b.QF(a);},D4Q=(a,b)=>{return b.Pz(a);},E5X=(a,b)=>{return b.PA(a);},FgD=a=>{return a.c0B;},Ec3=()=>{let b,c;GC();b=K(Mj,30);c=b.data;c[0]=WS;c[1]=ACA;c[2]=BeE;c[3]=A2J;c[4]=Bu0;c[5]=BtT;c[6]=ATx;c[7]=AR4;c[8]=AK9;c[9] +=Bt_;c[10]=Bye;c[11]=Bsy;c[12]=AK0;c[13]=BAn;c[14]=BeH;c[15]=SJ;c[16]=A4Z;c[17]=A1a;c[18]=ACk;c[19]=UK;c[20]=AAe;c[21]=A_D;c[22]=A$M;c[23]=AED;c[24]=ATE;c[25]=BdN;c[26]=NJ;c[27]=AAo;c[28]=BHU;c[29]=BVn;return b;},FlK=()=>{let b;b=new Mj;MF();C2l(b,E(4496),0,E(4497),ACQ,Rx,HM(BH,V(999999999)));WS=b;ACA=II(E(4498),1,E(4499),ACQ,Ka,HM(BH,O(2437873663, 20116)));BeE=II(E(4500),2,E(4501),AKO,Rx,HM(BH,V(999999)));A2J=II(E(4502),3,E(4503),AKO,Ka,HM(BH,O(500654079, 20)));Bu0=II(E(4504),4,E(4505),AKP,Rx,HM(BH,V(999)));BtT +=II(E(4506),5,E(4507),AKP,Ka,HM(BH,V(86399999)));ATx=II(E(4508),6,E(4509),Rx,AH_,HM(BH,V(59)));AR4=II(E(4510),7,E(4511),Rx,Ka,HM(BH,V(86399)));AK9=II(E(4512),8,E(4513),AH_,ZL,HM(BH,V(59)));Bt_=II(E(4514),9,E(4515),AH_,Ka,HM(BH,V(1439)));Bye=II(E(4516),10,E(4517),ZL,AFW,HM(BH,V(11)));Bsy=II(E(4518),11,E(4519),ZL,AFW,HM(V(1),V(12)));AK0=II(E(4462),12,E(4520),ZL,Ka,HM(BH,V(23)));BAn=II(E(4521),13,E(4522),ZL,Ka,HM(V(1),V(24)));BeH=II(E(4523),14,E(4524),AFW,Ka,HM(BH,V(1)));SJ=II(E(4525),15,E(4526),Ka,Nd,HM(V(1), +V(7)));A4Z=II(E(4527),16,E(4528),Ka,Nd,HM(V(1),V(7)));A1a=II(E(4529),17,E(4530),Ka,Nd,HM(V(1),V(7)));ACk=II(E(4531),18,E(4532),Ka,Vf,BgS(V(1),V(28),V(31)));UK=II(E(4533),19,E(4534),Ka,S8,BgS(V(1),V(365),V(366)));AAe=II(E(4535),20,E(4536),Ka,TJ,HM(O(4123968294, 4294967210),O(169560311, 85)));A_D=II(E(4537),21,E(4538),Nd,Vf,BgS(V(1),V(4),V(5)));A$M=II(E(4539),22,E(4540),Nd,S8,HM(V(1),V(53)));AED=II(E(4541),23,E(4542),Vf,S8,HM(V(1),V(12)));ATE=II(E(4543),24,E(4544),Vf,TJ,HM(O(884901900, 4294967293),O(3410065407, 2)));BdN +=II(E(4545),25,E(4546),S8,TJ,BgS(V(1),V(999999999),V(1000000000)));NJ=II(E(4547),26,E(4548),S8,TJ,HM(V(-999999999),V(999999999)));AAo=II(E(4549),27,E(4550),A1K,TJ,HM(BH,V(1)));BHU=II(E(4551),28,E(4552),Rx,TJ,HM(O(0, 2147483648),O(4294967295, 2147483647)));BVn=II(E(4553),29,E(4554),Rx,TJ,HM(V(-64800),V(64800)));Ciw=Ec3();},CtY=N(); +function CZM(){let a=this;To.call(a);a.b32=null;a.b7o=null;a.b5M=null;a.bPM=null;} +let FnG=(a,b,c,d,e,f)=>{ASK(a,b);a.b32=c;a.b7o=d;a.b5M=e;a.bPM=f;},CGw=(a,b,c,d,e)=>{let f=new CZM();FnG(f,a,b,c,d,e);return f;},Dku=(a,b)=>{let c,d,e;c=a.b32;d=Bv9(c,b);if(d<0){c=c.data;d=d^(-1);if(d>=c.length){e=a.bPM;if(e===null)return a.b7o.data[d-1|0];return B7f(e,b);}if(d>0)return a.b7o.data[d-1|0];return 0;}return a.b7o.data[d];},B9Q=(a,b)=>{let c,d,e;c=a.b32;d=Bv9(c,b);if(d<0){c=c.data;d=d^(-1);if(d>=c.length){e=a.bPM;if(e===null)return a.b5M.data[d-1|0];return e.bXt;}if(d>0)return a.b5M.data[d-1|0];return 0;}return a.b5M.data[d];},CcH +=a=>{let b,c,d,e,f,g;if(a.bPM===null){b=a.b32.data;c=b.length;if(c>1){d=0.0;e=0;f=1;while(f0&&d/e/8.64E7>=25.0)return 1;return 0;}return 0;}return 1;},Dgh=a=>{let b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;b=Bk();c=Bk();d=PC(a.b5M.data[0]/1000|0);e=PC(a.b7o.data[0]/1000|0);f=O(0, 2147483648);g=1;h=d;i=e;while(true){j=a.b32.data;if(g>=j.length)break;f=j[g];k=BQ7(CY(f,V(1000)),0,ACi);j=a.b5M.data;l=j[g];m=g-1|0;if(l==j[m])n=h;else +{l=j[g]/1000|0;o=h.bI6;n=PC(l);p=BVH(AIN(k,V(o)),h,n);U(b,p);}j=a.b7o.data;if(j[g]!=j[m]){p=PC(j[g]/1000|0);h=BVH(AIN(k,V(i.bI6)),i,p);U(c,h);i=p;}g=g+1|0;h=n;}if(a.bPM===null)q=Gi();else{a:{if(D4(f,O(0, 2147483648))){r=0;while(true){if(r>=2)break a;f=C7Y(a.bPM,f);h=BQ7(CY(f,V(1000)),0,ACi);s=B7f(a.bPM,f)/1000|0;l=i.bI6;if(s!=l){p=BVH(AIN(h,V(l)),i,PC(s));U(c,p);r=r+1|0;i=PC(s);}}}}t=PC(a.bPM.bXt/1000|0);n=a.bPM;u=PC((n.bXt+n.caz.b7_|0)/1000|0);n=a.bPM;v=PC((n.bXt+n.b$j.b7_|0)/1000|0);i=C14(a,a.bPM.caz.ciP, +t,v,u);q=Bv(BB(A0R,[i,C14(a,a.bPM.b$j.ciP,t,u,v)]));}return Di_(d,e,b,c,q);},C14=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o;f=b.cgM;g=0;if(f==86400000){f=0;g=1;}a:{b:{c:{switch(b.cpI){case 115:APU();h=B6O;break a;case 116:case 118:break;case 117:break c;case 119:break b;default:}b=new Bt;X(b);J(b);}APU();h=BmN;break a;}APU();h=BzR;}i=Bi6(b.cbO);j=b.cj8;if(j<0&&i!==AO7){d:{e:{f:{switch(i.bGO){case 1:break;case 2:case 4:case 6:case 7:case 9:break f;case 3:case 5:case 8:case 10:break e;default:break f;}k=29;break d;}k +=31;break d;}k=30;}j=k-6|0;}k=b.caq;l=!k?null:C2D(k);m=V(f/1000|0);No();GC();Jp(AR4,m);f=Cp(CY(m,V(3600)));n=CE(m,V(f*3600|0));k=Cp(CY(n,V(60)));o=Z1(f,k,Cp(CE(n,V(k*60|0))),0);Gp(i,E(771));Gp(o,E(3404));Gp(h,E(4555));Gp(c,E(4556));Gp(d,E(4557));Gp(e,E(4558));if(j>=(-28)&&j<=31&&j){if(g&&!AC8(o,S4)){b=new Bt;Bp(b,E(4559));J(b);}b=new A0R;k=!g?0:1;b.bUv=i;b.bUB=j<<24>>24;b.b3i=l;b.b3k=o;b.b0r=k;b.b40=h;b.b8T=c;b.bW5=d;b.b0x=e;return b;}c=new Bt;Bp(c,E(4560));J(c);}; +function C$i(){let a=this;To.call(a);a.bXt=0;a.caz=null;a.b$j=null;a.caE=null;} +let DHP=(a,b,c,d,e)=>{ASK(a,b);a.caE=Bu9(BDW());a.bXt=c;a.caz=d;a.b$j=e;},Drf=(a,b,c,d)=>{let e=new C$i();DHP(e,a,b,c,d);return e;},B7f=(a,b)=>{let c,d,e,f,g,$$je;c=a.bXt;d=a.caz;e=a.b$j;a:{b:{try{f=AXW(d,b,c,Boy(e),a.caE);}catch($$e){$$je=P($$e);if($$je instanceof Bt){break b;}else if($$je instanceof KZ){break b;}else{throw $$e;}}break a;}f=b;}c:{d:{try{g=AXW(e,b,c,Boy(d),a.caE);}catch($$e){$$je=P($$e);if($$je instanceof Bt){break d;}else if($$je instanceof KZ){break d;}else{throw $$e;}}break c;}g=b;}if(G5(f, +g))e=d;return c+e.b7_|0;},D2m=(a,b)=>{return a.bXt;},C7Y=(a,b)=>{let c,d,e,f,g,$$je;c=a.bXt;d=a.caz;e=a.b$j;a:{b:{try{c:{try{f=AXW(d,b,c,Boy(e),a.caE);if(IH(b,BH))break c;if(FE(f,BH))break c;f=b;break c;}catch($$e){$$je=P($$e);if($$je instanceof Bt){break b;}else{throw $$e;}}}break a;}catch($$e){$$je=P($$e);if($$je instanceof KZ){break b;}else{throw $$e;}}}f=b;}d:{e:{try{f:{try{g=AXW(e,b,c,Boy(d),a.caE);if(IH(b,BH))break f;if(FE(g,BH))break f;g=b;break f;}catch($$e){$$je=P($$e);if($$je instanceof Bt){break e;} +else{throw $$e;}}}break d;}catch($$e){$$je=P($$e);if($$je instanceof KZ){break e;}else{throw $$e;}}}g=b;}if(G5(f,g))f=g;return f;},Cul=(b,c)=>{return Drf(b,Cp((UC(c))),BVY(c),BVY(c));},EI5=a=>{return null;}; +function Crz(){let a=this;To.call(a);a.cWU=null;a.caj=null;} +let B1q=a=>{let b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y;if(a.caj===null){b=a.cWU;c=a.cmB;if(c!==null){d=Bk();e=null;f=O(0, 2147483648);g=b.ceO.bGJ;h=Bu9(BDW());i=0;j=g-1|0;while(i0)break b;l=CB_(f,p);m=B7U(p);}break a;}l=CB_(f,p);break a;}d:{if(l===null){q=Br(k.bT$);e:{while(Bq(q)){p=Bm(q);if +(!CbS(p))break e;}break d;}l=CrH(f,p,k.bR9);}}if(l===null){l=new AWJ;m=k.bR9;B60(l,f,m,m);}}k.bT$=n;}if(l!==null){B4u(b,d,l);o=l.bRD;r=B7U(l);l=new Bh5;A9H();l.bR9=k.bR9;l.bT$=E2(k.bT$);l.cfI=k.cfI;l.b1M=k.b1M;l.ccg=k.ccg;f:{while(true){n=Cd0(l,o,r,h);if(n===null)break f;if(B4u(b,d,n)&&e!==null)break;o=n.bRD;r=B7U(n);if(e!==null)continue;if(i!=j)continue;g:{h:{e=l.bT$;if(e.bGJ==2){n=Be(e,0);p=Be(l.bT$,1);if(n.cbC==2147483647&&p.cbC==2147483647)break h;}e=null;break g;}e=Drf(c,l.bR9,n.cbf,p.cbf);}}}s=l.b1M;f +=s==2147483647?O(4294967295, 2147483647):C1V(l.ccg,s,l.bR9,r);}i=i+1|0;}i:{i=d.bGJ;if(!i){if(e===null)e=CTU(c,0,0);}else if(i==1&&e===null){b=Be(d,0);e=CTU(c,b.bSd,b.bWq);}else{if(i){t=Vu(i);u=t.data;v=Ca(i);w=v.data;x=Ca(i);y=x.data;b=null;m=0;while(true){if(m>=i){b=CGw(c,t,v,x,e);if(!CcH(b)){e=b;break i;}e=DeY(b);break i;}n=Be(d,m);if(!CC7(n,b))break;u[m]=n.bRD;w[m]=n.bSd;y[m]=n.bWq;m=m+1|0;b=n;}b=new Bt;Bp(b,c);J(b);}b=new Bt;X(b);J(b);}}a.caj=e;}else{b=new Bt;X(b);J(b);}}},ESg=(a,b)=>{B1q(a);return a.caj.x8(b);},Fw1 +=(a,b)=>{B1q(a);return a.caj.x7(b);},Ec$=a=>{B1q(a);return a.caj.Z$();},Cgf=N(); +function Dbu(){let a=this;F.call(a);a.b4m=BH;a.cCX=BH;a.cB_=BH;a.b5N=BH;} +let HM=(b,c)=>{let d;if(G5(b,c)){d=new Bt;Bp(d,E(4561));J(d);}return B92(b,b,c,c);},BgS=(b,c,d)=>{return BA_(b,b,c,d);},BA_=(b,c,d,e)=>{let f;if(IH(b,c)){if(IH(d,e)){if(G5(c,e)){f=new Bt;Bp(f,E(4561));J(f);}return B92(b,c,d,e);}f=new Bt;Bp(f,E(4562));J(f);}f=new Bt;Bp(f,E(4563));J(f);},Fjl=(a,b,c,d,e)=>{a.b4m=b;a.cCX=c;a.cB_=d;a.b5N=e;},B92=(a,b,c,d)=>{let e=new Dbu();Fjl(e,a,b,c,d);return e;},CdR=(a,b)=>{return !(FE(b,a.b4m)&&IH(b,a.b5N))?0:1;},COe=(a,b,c)=>{let d,e,f;d=!(FE(a.b4m,V(-2147483648))&&IH(a.b5N, +V(2147483647)))?0:1;if(!(!(d&&CdR(a,b))?0:1)){e=new GE;c=BY(c);f=new S;T(f);QN(H(H(H(f,E(4564)),c),E(7)),b);Bp(e,Q(f));J(e);}return Cp(b);},Fl3=a=>{let b;b=new S;T(b);QN(b,a.b4m);if(D4(a.b4m,a.cCX)){Bb(b,47);QN(b,a.cCX);}L(b,E(4565));QN(b,a.cB_);if(D4(a.cB_,a.b5N)){Bb(b,47);QN(b,a.b5N);}return Q(b);},AV$=N(0),Ced=N(),Cec=N(),AYY=N(Bx),Bb1=null,AO7=null,BAc=null,BtJ=null,BrH=null,BfJ=null,BfK=null,BlN=null,Br9=null,Bk9=null,Br3=null,BSi=null,Eq5=null,BIP=null,Dfk=null,ASx=()=>{ASx=Z(AYY);Ebs();},A5i=()=>{ASx();return Dfk.b2();},E_J +=(a,b,c)=>{ASx();Ct(a,b,c);},UB=(a,b)=>{let c=new AYY();E_J(c,a,b);return c;},Bi6=b=>{let c,d;ASx();if(b>=1&&b<=12)return BIP.data[b-1|0];c=new GE;d=new S;T(d);BE(H(d,E(4566)),b);Bp(c,Q(d));J(c);},BRN=(a,b)=>{switch(a.bGO){case 1:return !b?28:29;case 2:case 4:case 6:case 7:case 9:break;case 3:case 5:case 8:case 10:return 30;default:}return 31;},BWl=(a,b)=>{let c;c=!b?0:1;a:{switch(a.bGO){case 0:break;case 1:return 32;case 2:return 60+c|0;case 3:return 91+c|0;case 4:return 121+c|0;case 5:return 152+c|0;case 6:return 182 ++c|0;case 7:return 213+c|0;case 8:return 244+c|0;case 9:return 274+c|0;case 10:return 305+c|0;case 11:break a;default:break a;}return 1;}return 335+c|0;},Ebs=()=>{let b,c,d;Bb1=UB(E(4567),0);AO7=UB(E(4568),1);BAc=UB(E(4569),2);BtJ=UB(E(4570),3);BrH=UB(E(4571),4);BfJ=UB(E(4572),5);BfK=UB(E(4573),6);BlN=UB(E(4574),7);Br9=UB(E(4575),8);Bk9=UB(E(4576),9);Br3=UB(E(4577),10);b=UB(E(4578),11);BSi=b;c=K(AYY,12);d=c.data;d[0]=Bb1;d[1]=AO7;d[2]=BAc;d[3]=BtJ;d[4]=BrH;d[5]=BfJ;d[6]=BfK;d[7]=BlN;d[8]=Br9;d[9]=Bk9;d[10]= +Br3;d[11]=b;Dfk=c;Eq5=new C9S;BIP=A5i();},BYx=N(); +function A73(){let a=this;BYx.call(a);a.cDl=0;a.bV2=null;a.c6e=0.0;a.c5a=0;a.cdK=0;a.ccq=0;a.cWb=0;} +let EKc=null,Eh1=null,Bxw=()=>{Bxw=Z(A73);DXv();},B2M=a=>{let b,c;Bxw();a.ccq=(-1);a.cDl=0;b=K(Bsq,11);c=b.data;a.bV2=b;a.cdK=c.length;a.c6e=0.75;CZj(a);},Fx0=()=>{let a=new A73();B2M(a);return a;},CZj=a=>{a.c5a=a.bV2.data.length*a.c6e|0;},ESR=(a,b)=>{let c,d,e,f;Jl(a);try{c=FP(b);d=c&2147483647;e=a.bV2.data;f=e[d%e.length|0];while(f!==null){if(CWH(f,b,c))return f.bHe;f=f.cap;}return null;}finally{G2(a);}},AEo=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o;Jl(a);try{if(b!==null&&c!==null){d=b;e=FP(d);f=e&2147483647;g +=a.bV2.data;h=f%g.length|0;i=g[h];while(i!==null&&!CWH(i,b,e)){i=i.cap;}if(i===null){a.cWb=a.cWb+1|0;j=a.cDl+1|0;a.cDl=j;if(j>a.c5a){j=(a.bV2.data.length<<1)+1|0;if(!j)j=1;e=(-1);k=K(Bsq,j);l=k.data;m=a.ccq+1|0;n=j;while(true){m=m+(-1)|0;if(me)e=h;o=i.cap;i.cap=l[h];l[h]=i;i=o;}}a.cdK=n;a.ccq=e;a.bV2=k;CZj(a);h=f%a.bV2.data.length|0;}if(ha.ccq)a.ccq=h;Bxw();i=new Bsq;Blg(i,b,c);i.cL$=FP(d);g=a.bV2.data;i.cap +=g[h];g[h]=i;return null;}d=i.bHe;i.bHe=c;return d;}b=new F2;X(b);J(b);}finally{G2(a);}},DXv=()=>{EKc=new C9R;Eh1=new C9Q;}; +function BMR(){A73.call(this);this.cSi=null;} +let DdE=(a,b)=>{let c,d;c=ESR(a,b);d=!(c instanceof Bi)?null:c;if(d===null){c=a.cSi;if(c!==null)d=DdE(c,b);}return d;}; +function Bok(){let a=this;To.call(a);a.cbQ=null;a.cRk=null;} +let BKy=0,BqU=()=>{BqU=Z(Bok);EPC();},DeY=b=>{let c;BqU();if(!(b instanceof Bok)){c=new Bok;ASK(c,b.cmB);c.cRk=K(BQw,BKy+1|0);c.cbQ=b;return c;}return b;},Fos=(a,b)=>{return Dsa(CUw(a,b),b);},EQ9=(a,b)=>{return Dk2(CUw(a,b),b);},EG2=a=>{return Dgh(a.cbQ);},CUw=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=Sm(b);d=a.cRk.data;BqU();e=c&BKy;f=d[e];if(!(f!==null&&Sm(f.b5o)==c)){g=CN(b,O(0, 4294967295));f=C4b(a.cbQ,g);h=Gu(g,O(4294967295, 0));i=f;a:{while(true){j=a.cbQ;k=j.b32;l=Bv9(k,g);m=l<0?l^(-1):l+1|0;k=k.data;c=k.length;if +(m{BKy=511;}; +function COy(){let a=this;F.call(a);a.ciP=null;a.b7_=0;} +let AXW=(a,b,c,d,e)=>{let f,g,h,i;f=a.ciP;g=f.cpI;if(g==119)c=c+d|0;else if(g!=115)c=0;h=V(c);b=BU(b,h);i=e;Z7(i,b);KQ(i,2,f.cbO-1|0);KQ(i,5,1);KQ(i,11,0);KQ(i,12,0);KQ(i,13,0);KQ(i,14,0);AGC(e,14,f.cgM);B2J(f,e);if(f.caq){BBL(f,e);if(IH(ACr(i),b)){AGC(e,1,1);KQ(i,2,f.cbO-1|0);B2J(f,e);BBL(f,e);}}else if(IH(ACr(i),b)){AGC(e,1,1);B2J(f,e);}return CE(ACr(i),h);},Boy=a=>{return a.b7_;},BVY=b=>{let c,d;c=Cqn(b);d=Cp((UC(b)));b=new COy;b.ciP=c;b.b7_=d;return b;}; +function C7G(){F.call(this);this.ceO=null;} +let BSJ=null,CTU=(b,c,d)=>{return BuE(b,c,d);},BDW=()=>{if(BSJ===null)BSJ=B8C(E(4579));return BSJ;},B4u=(a,b,c)=>{let d,e,f,g,h,i;d=b.bGJ;if(d){e=d-1|0;f=Be(b,e);if(CC7(c,f)){g=0;if(d>=2)g=(Be(b,d-2|0)).bSd;h=f.bSd;i=BU(f.bRD,V(g));if(D4(BU(c.bRD,V(h)),i)){U(b,c);return 1;}EJ(b,e);return B4u(a,b,c);}return 0;}U(b,c);return 1;}; +function Bh5(){let a=this;F.call(a);a.bR9=0;a.bT$=null;a.cYt=null;a.cfI=0;a.b1M=0;a.ccg=null;} +let Dgx=0,A9H=()=>{A9H=Z(Bh5);EJg();},Cd0=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p;e=null;f=O(4294967295, 2147483647);g=2147483647;h=Br(a.bT$);i=OT(b,O(0, 2147483648));while(Bq(h)){j=Bm(h);if(j.ch5>g)continue;k=a.bR9;l=k+c|0;if(!i)m=(-2147483648);else{n=BU(b,V(l));o=d;Z7(o,n);m=NT(o,1);}if(m>j.cbC)p=b;else{if(m>=j.ch5)n=b;else{o=d;Z7(o,BH);KQ(o,1,j.ch5);n=CE(CE(ACr(o),V(l)),V(1));}p=AXW(j.cbf,n,k,c,d);if(G5(p,b)){n=BU(p,V(l));o=d;Z7(o,n);if(NT(o,1)>j.cbC)p=b;}}if(IH(p,b)){AQe(h);continue;}if(IH(p,f)){g=NT(d, +1);e=j;f=p;}}if(e!==null){d=d;Z7(d,f);l=NT(d,1);A9H();if(l{Dgx=NT(B$e(),1)+100|0;}; +function CJR(){let a=this;F.call(a);a.cbf=null;a.ch5=0;a.cbC=0;} +let CbS=a=>{return a.cbf.b7_;}; +function DhM(){let a=this;F.call(a);a.cpI=0;a.cbO=0;a.cj8=0;a.caq=0;a.cZG=0;a.cgM=0;} +let Cqn=b=>{let c,d,e,f,g,h,i,j,k,l,m,n;c=RB(b);d=!(c&1)?0:1;e=!(c&2)?0:1;a:{b:{c:{switch((c>>>2|0)&3){case 1:break c;case 2:break b;default:}f=117;break a;}f=119;break a;}f=115;}g=RB(b);h=AJ1(b);i=!e?0:AJ1(b);j=BH;k=V(1);while(true){l=b.cgh.data;c=b.bY2;b.bY2=c+1|0;c=CoR(l[c]);e=(c%2|0)!=1?0:1;j=BU(j,CT(k,V(c/2|0)));k=CT(k,V(46));if(!e)break;}m=Cp((D4(CN(j,V(1)),BH)?GD(j,1):CT(GD(j,1),V(1800000))));b=new DhM;if(f!=117&&f!=119&&f!=115){b=new Bt;n=new S;T(n);Bb(H(n,E(4580)),f);Bp(b,Q(n));J(b);}b.cpI=f;b.cbO= +g;b.cj8=h;b.caq=i;b.cZG=d;b.cgM=m;return b;},C1V=(a,b,c,d)=>{let e,f,g;e=a.cpI;if(e==119)c=c+d|0;else if(e!=115)c=0;f=BDW();AXZ();g=Bu9(f);Z7(g,BH);KQ(g,1,b);KQ(g,2,a.cbO-1|0);KQ(g,10,0);KQ(g,12,0);KQ(g,13,0);KQ(g,14,0);d=a.cgM;AGC(g,14,d);Ccn(a,g);if(a.caq)BBL(a,g);return CE(ACr(g),V(c));},B2J=(a,b)=>{let c;a:{c=b;if(NT(c,2)==1&&NT(c,5)==29)while(true){if(AHN(b,NT(c,1)))break a;AGC(b,1,1);}}Ccn(a,b);},Ccn=(a,b)=>{let c;c=a.cj8;if(c>=0)KQ(b,5,c);else{KQ(b,5,1);b=b;AGC(b,2,1);AGC(b,5,a.cj8);}},BBL=(a,b)=>{let c, +d;c=NT(b,7);d=(a.caq==7?1:c+1|0)-c|0;if(d){if(!a.cZG){if(d>0)d=d+(-7)|0;}else if(d<0)d=d+7|0;AGC(b,5,d);}},CEz=N(),CED=N(); +function CgG(){F.call(this);this.dc$=null;} +let A2F=N(),E6W=null,Egy=null,Btb=()=>{Btb=Z(A2F);DVb();},Bic=b=>{let c;Btb();Gp(b,E(4581));c=b.Y6(A_Q());if(c===null){Xp();c=ADc;}return c;},BR6=(a,b)=>{return J6(E(4582),E(4582));},DQd=(a,b)=>{if(a!==b){if(b instanceof A2F)return BR6(a,b)?0:1;return 0;}return 1;},DVb=()=>{E6W=Dy();Egy=Dy();},B7w=N(A2F),ADc=null,Xp=()=>{Xp=Z(B7w);EYx();},Bbi=(a,b)=>{let c;a:{b:{if(DS(CN(b,V(3)),BH)){if(D4(Fl(b,V(100)),BH))break b;if(DS(Fl(b,V(400)),BH))break b;}c=0;break a;}c=1;}return c;},EYx=()=>{let b;b=new B7w;Xp();Btb();ADc +=b;},Cl6=N(),C9S=N(); +function BQw(){let a=this;F.call(a);a.b5o=BH;a.cvM=null;a.cJJ=null;a.clw=0;a.cms=0;} +let FkH=(a,b,c)=>{a.clw=(-2147483648);a.cms=(-2147483648);a.b5o=c;a.cvM=b;},C4b=(a,b)=>{let c=new BQw();FkH(c,a,b);return c;},Dsa=(a,b)=>{let c;c=a.cJJ;if(c!==null&&FE(b,c.b5o))return Dsa(c,b);if(a.clw==(-2147483648)){c=a.cvM;b=a.b5o;a.clw=Dku(c,b);}return a.clw;},Dk2=(a,b)=>{let c;c=a.cJJ;if(c!==null&&FE(b,c.b5o))return Dk2(c,b);if(a.cms==(-2147483648)){c=a.cvM;b=a.b5o;a.cms=B9Q(c,b);}return a.cms;},C9R=N(),C9Q=N(); +function Bsq(){let a=this;AE_.call(a);a.cap=null;a.cL$=0;} +let CWH=(a,b,c)=>{return !(a.cL$==FP(b)&&a.bHt.cx(b))?0:1;},AON=N(0); +function CBZ(){let a=this;F.call(a);a.cNz=null;a.cNA=null;} +let BL7=(a,b)=>{a.cNz.a0H(a.cNA,b);return 1;}; +function CI8(){SF.call(this);this.cuX=null;} +let BtR=(a,b)=>{let c,d,e;c=new B$9;c.c58=b;while(true){b=a.cuX;if(b.ceZ===null)b.ceZ=b.czc.dX();if(!b.ceZ.dY())d=0;else{b=b.ceZ.dZ();e=c;e.cV_=e.c58.OH(b);d=1;}if(!d)return 0;if(c.cV_)continue;else break;}return 1;},CJu=N(AGP),Dv_=a=>{BII(a);return a.bXU.bHt;}; +function CUc(){let a=this;F.call(a);a.cpg=null;a.c9i=null;} +let EFi=a=>{return a.cpg.dY();},DPX=a=>{return (a.cpg.dZ()).d0();},DJr=a=>{a.cpg.ey();}; +function CZW(){let a=this;F.call(a);a.b9J=0;a.cii=0;a.b_B=null;} +let Z3=a=>{return a.b9J>=a.b_B.bVB.bPV.data.length?0:1;},CAo=a=>{let b,c;while(true){b=a.b9J;c=a.b_B.bVB.bO9.data;if(b>=c.length)break;if(c[b])break;a.b9J=b+1|0;}},DBR=a=>{let b,c,d,e;b=a.cii;if(b>=0){c=a.b_B.bVB;d=c.bO9.data;if(d[b]){c.bPV.data[b]=null;d[b]=0;c.bOM=c.bOM-1|0;}a.cii=(-1);return;}e=new BP;X(e);J(e);},YO=a=>{let b,c,d;b=a.b9J;c=a.b_B;if(b{C9N(a,b,c,d,0.0,0.0);},AKv=(a,b,c)=>{let d=new ACw();AP8(d,a,b,c);return d;},C9N=(a,b,c,d,e,f)=>{a.b$E=b;a.cT2=B$(c);a.cyZ=d;a.c6R=e;a.c6S=f;},Cya=(a,b,c,d,e)=>{let f=new ACw();C9N(f,a,b,c,d,e);return f;},CNw=a=>{return ClM(a.b$E);},CiM=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;c=Dg(b);if(a.c0a!==c){a.c0a=c;a.b_v=Bk();d=Br(a.b$E.b$V);while(Bq(d)){e=Bm(d);c=a.b_v;f=new CMj;g=a.cT2;f.b7y=e;f.c3c=B$(g);f=ET2(f,b);Ea(c,f);}a.b$O=E9();a.ciV=E9();a.cOT=E9();a.cp0=ALg(1);h=0.0;i=Br(a.b_v);while +(Bq(i)){e=Bm(i);if(!(e.a0J()).dV())continue;j=new Dif;j.bMN=E9();j.bWp=B$(b);d=(e.a0J()).dX();while(d.dY()){k=d.dZ();c=k.cF(j.bWp);f=A8M(j.cky,0.0,c);Es(j.bMN,k,f);j.cky=j.cky+c.bGE;}c=Vm(Ty(BLJ(j.bMN)));l=c;while(TS(l)){g=U6(c);f=g.bHe;g=g.bHt;f=AY_(f, -(g.cF(j.bWp)).bGF+g.a0M(j.bWp));Es(j.bMN,g,f);}if(b.gQ(E(902)))Ft_(j);m=h-Dbn(j);f=Vm(Ty(BLJ(j.bMN)));l=f;while(TS(l)){g=U6(f);c=g.bHe;g=g.bHt;d=j.bMN;c=AY_(c,m);Es(d,g,c);}n=j.cky;c=a.ciV;f=DL(n);Es(c,e,f);c=a.cp0;f=(Gc(j.bMN)).dX();while(f.dY()){g=f.dZ();m +=g.b1T;d=g.b03;c=V7(c,m+d.bGE,g.bR6+d.bGF);}a.cp0=c;o=Ftr(j)-Dbn(j);c=a.cOT;f=DL(o);Es(c,e,f);h=h+o;if(b.gQ(E(902)))E9N(j);c=a.b$O;f=j.bMN;AFQ(c,f);}m=0.0;b=(Gc(a.ciV)).dX();while(b.dY()){h=(b.dZ()).bG6;if(h>m)m=h;}b=G3(G8(a.ciV));e=b;while(Gl(e)){a:{f=GZ(b);p=m-f.bHe.bG6;if(p>0.0){g=f.bHt;q=!(g instanceof ALY)?B_w(a,a.b$E.cEq):B_w(a,g.bQ7);if(q>0){c=(g.a0J()).dX();while(true){if(!c.dY())break a;d=c.dZ();l=FW(a.b$O,d);f=a.b$O;h=p/q;g=A8M(l.b1T+h,l.bR6,l.b03);Es(f,d,g);}}}}}return;}},B_w=(a,b)=>{if(b!==null) +{BYu();switch(Cfz.data[b.bGO]){case 1:break;case 2:return 1;default:return 0;}return 2;}return 0;},EXW=(a,b)=>{let c,d;CiM(a,b);b=AQY(a.cp0);c=a.cyZ;d=c.bJU+c.bIl;return FO(b,d,d);},Dy9=(a,b,c)=>{return null;},CTD=(a,b)=>{let c,d,e,f,g;CiM(a,b.hE());c=a.cyZ;d=c.bIv;if(!(!(d>0.0)&&!(c.bIl>0.0)))b=b.h2(Bh(d,c.bIl));e=Br(a.b_v);while(Bq(e)){c=((Bm(e)).a0J()).dX();while(c.dY()){f=c.dZ();g=FW(a.b$O,f);f.cC(b.h2(Bh(g.b1T,g.bR6)));}}},Dur=(a,b)=>{return 0.0;},CWT=(a,b,c)=>{return -a.c6R;},B5h=(a,b,c)=>{return (De(a, +b)).bGE+a.c6S;},ElO=a=>{let b;b=new BV;X(b);J(b);}; +function CnG(){let a=this;F.call(a);a.c9Z=0;a.cPG=0;a.cBp=0;} +let FqO=a=>{let b,c,d;b=a.cPG;c=a.cBp;d=new S;T(d);BE(d,b);Bb(d,58);BE(d,c);return Q(d);},A2K=N(),Di_=(b,c,d,e,f)=>{Gp(b,E(4583));Gp(c,E(4584));Gp(d,E(4585));Gp(e,E(4586));Gp(f,E(4587));return D6G(b,c,d,e,f);},ABH=b=>{let c;Gp(b,E(3312));c=new Bog;c.bWk=b;return c;}; +function Dm7(){let a=this;F.call(a);a.c_r=null;a.c_s=null;} +let BLx=N(DR),BTT=N(0); +function Bl7(){let a=this;F.call(a);a.cxL=null;a.cUo=null;a.cYl=null;a.bZG=0;a.cXH=null;a.cm_=0.0;a.css=0;a.c2A=null;a.cto=null;a.cBW=0.0;a.cXS=0.0;} +let EnC=a=>{let b,c,d;b=a.cxL;c=a.bZG;d=new S;T(d);XU(H(H(d,b),E(4588)),c);return Q(d);},Bbg=a=>{if(a.bZG){if(a.cto.bPT%2|0?0:1)return 2.0;return (-2.0);}return 0.0;},C9Y=a=>{return a.cXH;},Cc$=a=>{let b;b=a.cUo;if(b===null)return a.cxL;return b;},A6W=a=>{a.bZG=0;}; +function CNk(){let a=this;F.call(a);a.bQx=null;a.cEz=null;a.ct5=null;a.cBk=null;a.cDn=null;a.bQL=null;a.cdE=null;a.c3F=null;a.cxB=0;} +let C_n=a=>{a.cxB=0;},BMH=(a,b)=>{if(BH0(a)){AHR(a,b,E(14));if(!b.bZG)C_n(a);}},BH0=a=>{return a.bQx.bHv?0:1;},Dn8=a=>{let b;b=a.bQx;if(b.bHv>0&&(((Gc(b)).dX()).dZ()).bGI.length>0)return ((Gc(a.bQx)).dX()).dZ();b=a.c3F;if(b===null)return E(14);return b;},Dha=(a,b)=>{let c,d,e,f;if(b===null)b=E(14);c=G3(G8(a.bQx));d=c;while(Gl(d)){e=GZ(c);if(!e.bHe.bGI.length){c=a.bQx;f=e.bHt;Es(c,f,b);return;}}},Boq=a=>{return ALw(AJ5(Z$(a.bQx)));},Bwu=(a,b,c)=>{let d;if(c!==null){if(c.bGI.length){c=Jt(c,E(50),E(1555));c=B4(a.cdE.bH$, +c);d=D0(B0(B1(a.cdE),Crf(a,b)),a.cdE.bGN);B3();return C_(c,d,CF,a.cdE);}return E6(0.0,0.0);}return null;},Crf=(a,b)=>{B8();return CG(Bmt,b);},E_U=(a,b,c,d,e)=>{let f,g,h,i,j,$$je;a:{f=e;g=B1(f);CV();h=AB8(B0(g,Crf(a,A7S)),f.bGN);if(a.cDn!==null){b:{try{g=h;h=CeU(h,DV(GK(f),a.cDn));g=h;break a;}catch($$e){$$je=P($$e);if($$je instanceof J1){break b;}else{throw $$e;}}}h=g;}}f=Bwu(a,A7S,a.cBk);i=a.cEz;e=E6(0.0,0.0);g=E6(0.0,0.0);B3();j=i.a0U(e,f,g,h,CO);e=new BWT;e.dbv=10.0;e.crc=b;e.chW=d;e.ccF=j;e.bVq=Boq(a);e.b7$ +=a;e.b6b=c;return e;},AHR=(a,b,c)=>{if(b!==null){if(c===null)c=E(14);if(!c.bGI.length&&NB(a.bQx,b))return;Es(a.bQx,b,c);c=a.bQL;if(c.bXr===null)CF$(c,b.cto);else if(Boq(a)!==b)CF$(a.bQL,b.c2A);return;}b=new Bt;X(b);J(b);},BEb=(a,b)=>{let c,d,e;c=b;if(DG(c,E(744))!==null)a.cBk=DG(c,E(744));if(DG(c,E(944))!==null)a.cDn=DG(c,E(944));if(DG(c,E(3292))!==null)a.c3F=DG(c,E(3292));c=DG(c,E(4097));if(c!==null){W9();d=AD2;ADa();b=BcH;AWN();e=A2e(c,d,b,AUG);if(e!==null)a.cEz=e;}},Eqp=a=>{return a.ct5;},CXU=(b,c)=>{return Dp$(b, +new Cce,c);},E78=(a,b,c,d)=>{a.bQx=E9();F$();a.cEz=AS1;a.cxB=1;a.cBk=b;a.ct5=b;a.bQL=c;a.cdE=d;},Dp$=(a,b,c)=>{let d=new CNk();E78(d,a,b,c);return d;},Fws=a=>{return a.bQL;},CcC=N(),BHd=null,CFM=null,DqB=null,Dnu=null,CH8=null,BIY=null,CaX=null,B4w=null,CmH=null,DeH=null,BwI=null,BVt=null,C2B=null,Cv4=null,CHu=null,BPp=null,C8s=null,BzF=null,BUV=null,CwK=null,BH1=null,A_N=null,C78=null,B56=null,AAP=null,Cpp=null,Bqi=null,AR7=null,Cu$=null,C85=null,CTL=null,BMo=null,AS1=null; +let CSB=null,CHQ=null,A8Z=null,A4y=null,F$=()=>{F$=Z(CcC);DY8();},Hk=(b,c)=>{let d;F$();d=BHd;b=J3(b);C9(d,b,c);return c;},A2e=(b,c,d,e)=>{F$();if(b!==null){if(!BG(b,E(2672))){if(!BG(b,E(709))){if(!BG(b,E(729))){if(!BG(b,E(749))){if(!BG(b,E(721))){e=BHd;b=J3(Ih(b,E(4589),E(14)));return DG(e,b);}return AAP;}return BUV;}return Blt(d);}return AH2(c);}return DfH(e);}return null;},Bu5=(b,c)=>{let d;F$();a:{d=null;if(BG(b,E(713))){d=CmH;break a;}if(BG(b,E(752))){d=BH1;break a;}if(BG(b,E(55))){d=CwK;break a;}if(BG(b, +E(2672))){d=AR7;break a;}if(BG(b,E(785))){d=AS1;break a;}if(BG(b,E(780))){d=C85;break a;}if(BG(b,E(758))){d=B56;break a;}if(BG(b,E(764))){d=Cpp;break a;}if(BG(b,E(728))){d=C2B;break a;}if(BG(b,E(774))){d=Bqi;break a;}if(BG(b,E(753))){d=A_N;break a;}if(BG(b,E(725))){d=BVt;break a;}if(BG(b,E(704))){d=CFM;break a;}if(BG(b,E(782))){d=CTL;break a;}if(BG(b,E(741))){d=BzF;break a;}if(BG(b,E(784))){d=BMo;break a;}if(BG(b,E(796))){d=CSB;break a;}if(BG(b,E(799))){d=CHQ;break a;}if(BG(b,E(710))){d=CaX;break a;}if(BG(b, +E(2939))){d=BIY;break a;}if(BG(b,E(709))){d=AH2(Vj(c));break a;}if(BG(b,E(729))){d=Blt(AKB(c));break a;}if(BG(b,E(715))){d=DeH;break a;}if(BG(b,E(740))){d=C8s;break a;}if(BG(b,E(749))){d=BUV;break a;}if(BG(b,E(719))){d=BwI;break a;}if(BG(b,E(2580))){d=AAP;break a;}if(!BG(b,E(2694)))break a;d=AAP;}return d;},DY8=()=>{let b,c;BHd=Dy();b=new Cf$;CV();b.cTJ=Bcy;CFM=Hk(E(4590),b);c=new BF3;W9();C_8(c,AOl);DqB=Hk(E(4591),c);Dnu=Hk(E(4592),C8n(APK));CH8=Hk(E(4593),C8n(AD2));c=new BZC;c.c0Z=ALJ;BIY=Hk(E(4594),c);CaX +=Hk(E(468),BsW(A_5));B4w=Hk(E(473),BsW(A4m));CmH=Hk(E(459),new Cte);DeH=Hk(E(465),new Cls);BwI=Hk(E(474),new CpT);BVt=Hk(E(460),new Dnc);C2B=Hk(E(4209),new Cl8);Cv4=Hk(E(4595),BsW(AAN));CHu=Hk(E(4596),new Dn5);BPp=Hk(E(4597),new Dn3);C8s=Hk(E(466),new Cup);BzF=Hk(E(476),new Cq7);BUV=Hk(E(4598),new CJz);c=new C2F;B3();c.c4q=CO;CwK=Hk(E(462),c);BH1=Hk(E(461),CzW(A65,0));A_N=Hk(E(463),B72(AYw));C78=Hk(E(2953),B72(PU));c=new BV1;c.dac=5.0;B56=Hk(E(471),c);AAP=Hk(E(452),new Dor);Cpp=Hk(E(470),new CcI);Bqi=Hk(E(475), +new CEL);AR7=Hk(E(456),CzW(Wk,1));Cu$=Hk(E(518),B72(AWV));C85=Hk(E(472),new Cha);c=new C9q;c.cWt=BtG;CTL=Hk(E(4599),c);c=new CT9;c.c$c=5.0;BMo=Hk(E(477),c);AS1=Hk(E(469),BsW(AIz));CSB=Hk(E(478),new C_7);CHQ=Hk(E(464),new C_Q);A8Z=Hk(E(494),CMF(0));A4y=Hk(E(4266),CMF(1));},A8i=N(Bx),AD2=null,ALJ=null,AOl=null,APK=null,Fo8=null,W9=()=>{W9=Z(A8i);Eo$();},Dx4=(a,b,c)=>{W9();Ct(a,b,c);},Blj=(a,b)=>{let c=new A8i();Dx4(c,a,b);return c;},AH2=a=>{let b;W9();if(a!==AD2){if(a!==AOl){if(a!==APK){if(a!==ALJ){b=new BP;X(b);J(b);}F$();return BIY;}F$();return Dnu;}F$();return DqB;}F$();return CH8;},B1n +=(a,b)=>{let c;W9();if(a!==AD2){if(a!==ALJ){if(a!==AOl){if(a===APK){c=new Dj3;c.c$y=9.0;c.c9a=25.0;c.c75=21.0;c.c9P=2.0;c.dbi=5.0;c.den=6.0;c.c$d=6.0;c.ch7=b;return c;}b=new BP;X(b);J(b);}c=new Cxk;c.c8x=32.0;c.dbz=54.0;c.c9h=16.0;c.c$Z=4.0;c.db7=8.0;c.dct=28.0;c.crO=b;return c;}return Djq(b,1);}return Djq(b,0);},Eo$=()=>{let b,c,d;AD2=Blj(E(4600),0);ALJ=Blj(E(4601),1);AOl=Blj(E(4602),2);b=Blj(E(4603),3);APK=b;c=K(A8i,4);d=c.data;d[0]=AD2;d[1]=ALJ;d[2]=AOl;d[3]=b;Fo8=c;}; +function CSx(){let a=this;F.call(a);a.bQ_=null;a.bTh=null;a.bV9=null;a.bSK=null;a.bYN=null;} +let Bx5=a=>{let b;b=new DdU;b.cJF=C1i(Big(a),B2f(a),Bmh(a),a.bQ_.bVr);return b;},B2f=a=>{return EA(a.bQ_.bKj);},Bmh=a=>{let b;b=a.bSK;return b.bS6.c7y*b.ct9;},Big=a=>{let b;b=CBW(a.bV9);B9();return (BJ(b,Ov)).oK()*1.6;}; +function CLA(){let a=this;Er.call(a);a.cyM=null;a.cll=null;a.bZx=null;a.caN=null;a.cbS=null;a.cm8=null;a.cvC=null;a.bXb=null;a.coX=null;} +let EjB=(a,b)=>{let c,d,e,f,g,h,i,j,$$je;a:{b:{try{c=B4Q(a.coX);EKo(a.coX,b,AZ9(a.bXb));b=b.h2(BM(c));d=B1(Ffo(a.cvC));B8();d=B0(d,B4x);B9();e=(BJ(d,CK)).cu(CBY(a.cvC));if(!e.gv()){f=Cro(a.bZx)+FmB(a.bZx);g=C2(f,Fo5(a.bZx));(b.h2(Cc(e))).hP(g);if(CPU(a.cm8)){h=C2(f,DIi(a.bZx));((b.h2(Cc(e))).h2(BW(AZ9(a.bXb)))).hP(h);}}a.cll.a07(b,AZ9(a.bXb));FkX(a,b,Fg$(a.cll));Fm7(a,b);Ei7(a,b,Cro(a.bZx),EjD(a.bZx));if(!FuX(a.cm8))FtV(a,b);if(CPU(a.cm8))a.cll.a1d(b.h2(BW(AZ9(a.bXb))));break a;}catch($$e){$$je=P($$e);if($$je instanceof Gt) +{i=$$je;break b;}else{throw $$e;}}}GP(i);j=Bg6();Clv(j,i,CHF(a.cyM));CRb(j);Xh(j);CNn(j);d=CHF(a.cyM);B9a();if(i!==null)BmQ(j,B9b(i));if(d!==null)Df()&&CUz;d=BdO(j);e=CSd();AEt();Dsv(Bqk(d,e,AOO),b);}},E2c=(a,b)=>{let c;c=B4Q(a.coX);b=a.bZx;return Cl(c+b.cvY+b.cs3+20.0,b.cYx);},Fm7=(a,b)=>{let c,d,e;c=(Td(a.caN)).dX();while(c.dY()){d=c.dZ();if(Bvu(a.cbS,d))continue;e=AD1(a.bXb,d);e.cC(b.h2(BW(CW(e.V7(b.hE())))));}},FkX=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m;d=(CxC(a.caN)).dX();a:{while(d.dY()){e=d.dZ();f=a.cbS;if +(f.bVr!==null){g=EA(f.bKj);f=BSX(a.cbS.bKW);if(Cbt(e,Z8(e.b8D),g,f)?1:!Cbt(e,Z8(e.b48),g,f)?0:1)continue;}g=a.bXb;f=e.cGH;B8();f=B0(f,CUL);B9();f=Wu(f,Cz,AKF(e));h=A9Q(e.bMK,Fi(f));if(h!==null){i=H1;j=h.bJw;k=new S;T(k);D6(k,j);k=Djg(f,i,Q(k));l=h.bU$;j=h.bWe;f=ABJ;h=new S;T(h);i=D6(h,j);Bb(i,45);D6(i,l);f=Djg(k,f,Q(h));}h=new CXJ;i=e.c7R;k=e.b8D;m=e.b48;h.c8K=e.cGH;h.cr2=g;h.cCF=f;h.cB6=i;h.c$o=c;h.c6p=k;h.cT9=m;g=k.bOw;Lf();f=Oq;if(g===f&&m.bOw===O1){if(!CIZ(k,m)){PW();g=AIu;}else{PW();g=P1;}h.bUh=g;PW();h.bS9 +=Qh;}else if(g===f&&m.bOw===f){PW();g=P1;h.bUh=g;h.bS9=g;}else{i=O1;if(g===i&&m.bOw===i){PW();g=Qh;h.bUh=g;h.bS9=g;}else{if(g!==i)break a;if(m.bOw!==f)break a;if(!CIZ(k,m)){PW();g=AFK;}else{PW();g=Qh;}h.bUh=g;PW();h.bS9=P1;}}Fu3(h,b);}return;}b=new Bt;X(b);J(b);},Ei7=(a,b,c,d)=>{let e,f,g,h,i,j;e=(Td(a.caN)).dX();while(e.dY()){f=e.dZ();if(Bvu(a.cbS,f))continue;g=AD1(a.bXb,f);h=BW(CW(g.V7(b.hE())));i=new CU5;ARc();f=Bhu;B3();j=CF;i.czl=f;i.c5t=j;g.a1n(b.h2(h),i,c,d);}},FtV=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n, +o,p,q,r,s;c=(CwP(a.caN)).dX();while(c.dY()){d=(c.dZ()).c7q;e=b.h2(BW(d.c5y));f=B4(C2I(d.cxT),d.ctM.b0t);Go();g=DqR(d,13,Hu);B3();g=C_(f,g,CF,new Sz);g.cC(e);h=DE(d.bYA.Ts(d.cyo)-d.bYA.Ts(d.csL));((e.h2(Hu)).h2(BW((g.cF(e.hE())).bGF))).hP(h);i=(-1.0);j=0;k=0;l=0;m=d.csL;while(Ko(m,d.cyo)<=0){n=d.bYA.a1p(m);h=d.c0W;f=d.ctM;o=0;h=(Td(h)).dX();while(h.dY()){p=h.dZ();if(p instanceof AVp)continue;p=p;if(!(CzP(Z$(p.bZa),f)&&Ko(m,BLe(p))>=0&&Ko(m,BOc(p))<=0))q=0;else{g=p.b5x;r=Jj(m);if(Dcw(g,r))q=1;else{s=P2(p.cdN);a: +{b:{while(OD(s)){g=Pr(s);if(AEP(m)===g)break b;}q=0;break a;}q=1;}q=!q?0:1;}if(q)q=0;else{r=Jj(m);q=ALW(f.bZy,r)?0:(FW(p.bZa,f)).bHl;}}o=o+q|0;}if(o>100)l=1;j=j+o|0;if(o>0)k=k+1|0;if(n){if(j>0){j=Cp((AGn(j/k)));f=d.cxT.b23.bH$;h=new S;T(h);BE(h,j);p=B4(f,Q(h));h=!l?Hu:AU8;f=C_(p,DqR(d,9,h),CF,new Sz);if(i===(-1.0))i=d.bYA.Ts(m);f.cC(e.h2(Bh((i+d.bYA.Ts(m)+d.bYA.a1s(m))/2.0-(f.cF(e.hE())).bGE/2.0,16.0)));}i=(-1.0);j=0;k=0;l=0;}else if(i===(-1.0))i=d.bYA.Ts(m);m=Qu(m);}}}; +function A3K(){let a=this;F.call(a);a.bIk=null;a.bN9=null;a.b1J=null;} +let DaL=(a,b,c)=>{let d,e;a.bIk=b;d=BVy(K6(b));a.bN9=d;e=BNp(null,b,d.bUr,c);a.b1J=BEW(a.bN9,e);},BWq=a=>{return a.bN9;}; +function Bjm(){let a=this;A3K.call(a);a.bZ$=null;a.cyy=null;a.czJ=null;a.b6H=null;a.b45=null;a.cWY=null;a.b6R=null;} +let C63=null,A_i=()=>{A_i=Z(Bjm);EuY();},Df_=(a,b,c)=>{A_i();DaL(a,b,c);a.bZ$=E9();a.cyy=E9();a.czJ=E9();a.b6H=E9();a.b45=E9();a.b6R=c;a.cWY=b.bGM.bNy;},EE$=(a,b)=>{let c=new Bjm();Df_(c,a,b);return c;},Bzu=a=>{return a.b6R===AOt(a.bIk)?0:1;},Cl_=(a,b)=>{let c,d,e;if(Bzu(a)){c=Bk();b=(Rk(b)).dX();while(b.dY()){d=b.dZ();e=HR(d);F7();if(e!==N2)U(c,d);}return c;}return Rk(b);},Dl7=a=>{let b,c,d;if(Bzu(a)){b=Bk();c=(K6(a.bIk)).dX();while(c.dY()){d=c.dZ();if(BLg(a.b6R,d))U(b,d);}return b;}return K6(a.bIk);},CZz= +(a,b)=>{let c,d,e;if(!Hh(b)){c=b.bHD;Cy();if(c===Ok){d=null;c=(K6(a.bIk)).dX();a:{b:{while(c.dY()){e=c.dZ();if(AG$(e))continue;if(!UY(e,b))continue;if(d!==null)break b;d=e;}break a;}d=null;}if(d!==null)return (ANk(d,b)).bHD===Ok?0:1;return 0;}return 0;}return 0;},CpU=(a,b,c)=>{let d,e,f;c=(Cl_(a,c)).dX();while(c.dY()){d=c.dZ();if(Qq(d))continue;a:{if(A3d(a.bIk,d)){e=HR(d);F7();if(e===Kw){Cy();C9f(d,APu);Caf(a,b,d);break a;}}e=HR(d);F7();if(e!==N2){if(!d.bYt){f=CT_(d,a.bIk,b);CxN(a.b1J,d,f);}Cw4(a,b,Pw(d));CpU(a, +b,d);if(!d.bYt)Cow(a.b1J);}}}},Cw4=(a,b,c)=>{let d;c=c.dX();while(c.dY()){d=c.dZ();if(Qq(d))continue;Caf(a,b,d);}},B85=(a,b,c,d)=>{let e;d=d.dX();while(d.dY()){e=d.dZ();if(Qq(e))continue;CGh(a,b,c,e);}},Cji=(a,b,c)=>{let d,e,f,g,h;d=FW(a.cyy,c);if(d===null){e=FW(a.b45,c);if(e!==null){f=new H2;g=c.bJn;d=new S;T(d);Bb(d,122);H(d,g);Me(f,Q(d));h=B3X(b,e,f,1);Jq(b,h,Co(E(4097)),Co(E(716)),Co(E(14)));Jq(b,h,Co(E(362)),Co(E(4604)),Co(E(14)));Jq(b,h,Co(E(363)),Co(E(4604)),Co(E(14)));Es(a.cyy,c,h);return h;}b=new BP;X(b);J(b);}return d;},CGh +=(a,b,c,d)=>{let e,f,g,h,i;e=L$(a.bN9,d);if(e!==null){f=B3X(b,c,Co(YG(e)),1);Jq(b,f,Co(E(4097)),Co(E(716)),Co(E(14)));g=d.bHD;Cy();if(!(g!==ACF&&g!==AIF))Jq(b,f,Co(E(764)),Co(E(14)),Co(E(14)));g=Cl(X8(e)/72.0,AAE(e)/72.0);h=g.bGE;c=new S;T(c);D6(c,h);i=Q(c);h=g.bGF;c=new S;T(c);D6(c,h);e=Q(c);Jq(b,f,Co(E(362)),Co(i),Co(E(14)));Jq(b,f,Co(E(363)),Co(e),Co(E(14)));Es(a.bZ$,d,f);return;}Fw(Fm(),E(4605));},Caf=(a,b,c)=>{let d,e,f,g;if(!Qq(c)){if(!Qq(c)){if(AQs(c)!==null)d=AQs(c);else{if(C8_(a.bIk.bGM))Fw(Fm(),E(4606));e +=a.bIk.a1M();f=a.bIk;d=BIm(c,e,f,a.bN9,null,K6(f));AWG(c);c.cE0=d;}g=Dk1(a.bN9,c,d,b);De7(a.b1J,g);return;}b=new BP;X(b);J(b);}b=new BP;X(b);J(b);},DrL=a=>{let b,c,d,e;b=Bk();c=(Bpj(a.bIk)).dX();while(c.dY()){d=c.dZ();if(a.b6R===Ja(d)){if(Bzu(a)){e=d.bHD;Cy();if(e===Xn)continue;}U(b,d);}}return b;},DPp=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o;b=a.bIk;d=Bdb(c,b.bGM,Cf(b));b=a.bIk;e=b.bM8;F8();if(e===RA)while(true){f=0;c=AOt(b);e=AAh();g=e;EQ(g,c);while(true){h=AFU(g);i=Br(E2(e));while(Bq(i)){c=Rk(Bm(i));j=Bk();c +=c.dX();while(c.dY()){k=c.dZ();Ik(j,0,k);}j=Br(j);while(Bq(j)){EQ(g,Bm(j));}}if(h!=AFU(g))continue;else break;}c=Bk();e=Ro(g);while(e.dY()){g=e.dZ();if(!KX(g))Ik(c,0,g);}l=Br(c);while(Bq(l)){m=Bm(l);if(BQB(m)){n=new CYq;n.cvm=b;n.bPe=m;n.cRN=d;if(!Hh(m)){b=new Bt;X(b);J(b);}if(!AUe(n.bPe)&&!(Rk(n.bPe)).dV())g=BhX(n.bPe);else{e=HR(n.bPe);F7();if(e===N2)g=B$j(BUC(n),6.0);else{if(HR(n.bPe)!==ZD){b=new BV;Bp(b,HT(HR(n.bPe)));J(b);}e=(Pw(n.bPe)).dX();a:{b:{while(e.dY()){g=(e.dZ()).bHD;Cy();if(g===Xn)break b;}f=0;break a;}f +=1;}if(!f)c=BUC(n);else{c=Bk();e=B$j(BUC(n),6.0);i=c;U(i,e);e=(Pw(n.bPe)).dX();while(e.dY()){g=e.dZ();k=g.bHD;Cy();if(k===Xn)U(i,AQs(g));}e=new Bht;g=n.bPe;BOd(e,c,g.b$o,n.cvm.bGM,g.bGZ);h=n.bPe.b$o;o=h!=124?0.0:8.0;c=De1(e,0.0,0.0,h!=45?0.0:8.0,o);}g=Cn8(c,n.bPe);}}c=HR(m);F7();if(c!==N2){Cy();c=VL;}else{Cy();c=Xn;}B2_(m,g,c);f=1;}}if(f)continue;else break;}return Cgc(a,d);},Cgc=(a,b)=>{let c,d,e,f,g,$$je;CpU(a,b,a.b6R);Cw4(a,b,DrL(a));c=(Dl7(a)).dX();while(c.dY()){d=c.dZ();if(Bev(d))continue;if(CZz(a,d.bHn)) +{e=L$(a.bN9,d.bHn);f=L$(a.bN9,d.bHo);if(f!==null){CKF(e.bNG,d,e,f,a.b6H);d.b90=1;}}else if(CZz(a,d.bHo)){e=L$(a.bN9,d.bHo);f=L$(a.bN9,d.bHn);if(f!==null){CKF(e.bNG,d,e,f,a.b6H);d.b90=1;}}}c=C63;Jl(c);try{g=CUk();a:{try{b=EIt(a,b,g);break a;}catch($$e){$$je=P($$e);b=$$je;}Con();J(b);}Con();G2(c);}catch($$e){$$je=P($$e);b=$$je;G2(c);J(b);}return b;},EIt=(a,b,c)=>{let d,e,f,g,h,i;d=BBM(c,Co(E(1695)),c.cgE,null);Jq(c,d,Co(E(4607)),Co(E(3724)),Co(E(14)));if(BwR(a.bIk.bGM)!==0.0)Jq(c,d,Co(E(1805)),Co(AHV(BwR(a.bIk.bGM))), +Co(E(14)));if(BAS(a.bIk.bGM)!==0.0)Jq(c,d,Co(E(1806)),Co(AHV(BAS(a.bIk.bGM))),Co(E(14)));B85(a,c,d,DrL(a));B0b(a,c,d,a.b6R);e=(Dl7(a)).dX();while(e.dY()){f=e.dZ();if(Bev(f))continue;g=DwM(a,b,c,d,f);if(g!==null)Es(a.czJ,f,g);}if((Gc(a.bZ$)).j()&&(Gc(a.b45)).j()){GO();return HD;}e=Cuu(c,K(F,0));Bf();b=a.cWY;Pf();if(b===AFF)Jq(c,d,Co(E(4608)),Co(E(4609)),Co(E(4609)));DoU(c,e,d);h=!Bzu(a)?6.0:0.0;i=new CYT;i.bNT=a;c=Bji(0);b=(Gc(a.bZ$)).dX();while(b.dY()){e=Djp(b.dZ());Bxi(c,e.ca4);Bxi(c,e.b2J);}b=(Gc(a.b45)).dX();while +(b.dY()){e=(b.dZ()).bGQ;if(!(e instanceof B0h)){Fw(Fm(),E(4610));continue;}e=Cgx(e);Bxi(c,e.ca4);Bxi(c,e.b2J);}i.cH3=c;b=new CCE;b.cy8=c.b2E+6.0;i.cme=b;i.cHd=h;return i;},B0b=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,$$je;e=(Cl_(a,d)).dX();a:{while(e.dY()){f=e.dZ();if(Qq(f))continue;b:{if(A3d(a.bIk,f)){d=HR(f);F7();if(d===Kw){CGh(a,b,c,f);break b;}}if(f.bYt){B85(a,b,c,Pw(f));B0b(a,b,c,f);}else{g=V1(a.bN9,f);if(g===null)Fw(Fm(),E(4611));else{d=ACR(g);h=new S;T(h);H(H(h,E(4612)),d);Q(h);JT();d=Co(ACR(g));Bf();try +{i=Ca(1);j=i.data;j[0]=0;h=BY(c);k=BY(d);l=CR();H(H(H(H(l,E(4613)),h),E(4614)),k);NS(CH(l));}catch($$e){$$je=P($$e);b=$$je;break a;}c:{d:{try{if(!AI_(b,c,0,d,i,0))break d;NS(E(4615));h=DlE(b,c,j[0]);if(h===null)break d;d=BY(h);k=CR();H(H(k,E(4616)),d);NS(CH(k));}catch($$e){$$je=P($$e);b=$$je;break a;}break c;}e:{try{if(AI_(b,c,0,d,i,1))break e;NS(E(4617));h=null;}catch($$e){$$je=P($$e);b=$$je;break a;}break c;}try{h=FuK(b,c,j[0]);BvR(b,c,0,h);d=BY(h);k=CR();H(H(k,E(4618)),d);NS(CH(k));}catch($$e){$$je=P($$e);b +=$$je;break a;}}if(BT7(g)){m=AJh(g);n=(AWT(g)-5|0)+8|0;Jq(b,h,Co(E(764)),BpI(a,m,n),Co(E(14)));}o=16;d=Mt(f);if(d!==null&&d.a2m()>0)o=DT(o,20);g=Co(E(4607));k=new H2;d=new S;T(d);BE(d,o);Me(k,Q(d));Jq(b,h,g,k,Co(E(14)));B85(a,b,h,Pw(f));Es(a.b45,f,h);B0b(a,b,h,f);}}}}return;}J(b);},BpI=(a,b,c)=>{let d,e,f,g,h;d=b|0;e=c|0;BX();f=new H2;g=new S;T(g);h=H(g,E(4098));BE(h,d);Bb(h,95);BE(h,e);Bb(h,95);Me(f,Q(g));return f;},ClP=a=>{let b;b=B1(a.bIk.bGM);B8();return B0(b,CG(AFI,N$(a.bIk.bM8)));},DiE=(a,b,c)=>{let d;B8();d +=CG(AFI,c);if(b!==null)d=Du(d,b);return d;},CyT=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n;d=a.bIk.bGM;e=d;f=e.bPb;g=N$(f);h=D0(B0(c.bU4,DiE(a,c.bPW,g)),e.bGN);if(FQ(XF(c))){GO();e=HD;i=A5c(c);M3();}else{if(f!==RA){B3();g=Q2(e,CO);}else{MY();g=BG$(e,AV0,null,0,null);}j=CRV(XF(c));k=GM(B0(c.bU4,DiE(a,c.bPW,N$(e.bPb))));if(!(Bco(k)>0.0))k=CtH(e);i=XF(c);Ed();l=Py(i,h,g,d,k,J0,null,null);g=Dgj(c);if(g!==null){i=AK6(Uu(),d,g.b6Y);g=KN(ASm(g,Qy(e),i,null,0),0.0,1.0,2.0,0.0);Fa();l=Vi(g,l,Hg);}e=Js(l,1.0,1.0);g=A5c(c);M3();}m +=c.b6v;if(m!==null){n=CKv(m.ced,m.cev,d,c.bU4);c=m.clj;K$();if(c!==Y0){if(c!==T_){if(c===Ku){B3();return FT(n,e,CO);}B3();return FT(e,n,CO);}Fa();return Vi(e,n,Hg);}Fa();return Vi(n,e,Hg);}if(!AHB(e,b))e=Js(e,1.0,1.0);return e;},BdE=(a,b,c,d)=>{let e,f,g,h,i;e=d!=1?ATs(c):ATc(c);if(e!==null){f=a.bIk.bGM;g=ClP(a);c=f;h=D0(g,c.bGN);e=B4(Cf(a.bIk),e);B3();i=C_(e,h,Q2(c,CO),f);if(!AHB(i,b))return Js(i,1.0,1.0);return i;}return null;},BgH=(a,b,c,d)=>{let e,f,g,h;e=d!=1?BuL(c):Bh3(c);if(e!==null){f=a.bIk.bGM;g=D0(ClP(a), +f.bGN);h=BHI(e,Cf(a.bIk),g,f);if(!AHB(h,b))return Js(h,1.0,1.0);return h;}return null;},C6i=(a,b)=>{let c,d,e,f,g,$$je;c=FW(a.bZ$,b);if(c===null){a:{b:{try{d=BnD(BWq(a),b);b=G3(G8(a.bZ$));}catch($$e){$$je=P($$e);if($$je instanceof BP){break b;}else{throw $$e;}}e=b;c:{try{while(Gl(e)){f=GZ(b);c=BWq(a);g=f;if(Bj(d,BnD(c,BcU(g))))break c;}break a;}catch($$e){$$je=P($$e);if($$je instanceof BP){break b;}else{throw $$e;}}}try{b=BeJ(g);}catch($$e){$$je=P($$e);if($$je instanceof BP){break b;}else{throw $$e;}}return b;}Fw(Fm(), +E(4619));}return null;}return c;},DwM=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p;f=!Hh(e.bHn)?C6i(a,e.bHn):Cji(a,c,e.bHn);g=!Hh(e.bHo)?C6i(a,e.bHo):Cji(a,c,e.bHo);if(f!==null&&g!==null){h=B8e(c,d,f,g,null,1);Jq(c,h,Co(E(4093)),Co(E(71)),Co(E(14)));Jq(c,h,Co(E(4094)),Co(E(71)),Co(E(14)));i=M2(e);d=Co(E(4620));j=new H2;i=i-1|0;k=new S;T(k);BE(k,i);Me(j,Q(k));Jq(c,h,d,j,Co(E(14)));j=CyT(a,b,e);if(!AHB(j,b)){l=j.cF(b);m=BpI(a,l.bGE,l.bGF);Jq(c,h,Co(E(764)),m,Co(E(14)));}k=BdE(a,b,e,1);n=BgH(a,b,e,1);if(k!==null)n= +k;if(n!==null){l=n.cF(b);m=BpI(a,l.bGE,l.bGF);Jq(c,h,Co(E(4621)),m,Co(E(14)));}o=BdE(a,b,e,2);p=BgH(a,b,e,2);if(o!==null)p=o;if(p!==null){l=p.cF(b);m=BpI(a,l.bGE,l.bGF);Jq(c,h,Co(E(4622)),m,Co(E(14)));}return h;}return null;},EuY=()=>{C63=new F;},BOD=N(A3K),EW0=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;c=c.cw5;AJb();b=A6h;d=c!==b?BMd():Ck3(b);a:{c=a.bIk;e=c.bM8;F8();if(e===Ry){ALk();f=AUY;b:while(true){g=0;h=Br(E2(B6$(c)));while(Bq(h)){i=Bm(h);if(BQB(i)){j=new CIM;j.c49=Uu();j.bVa=c;j.bQA=i;j.cWD=d;j.cPT= +f;if(!AUe(i))k=BhX(j.bQA);else{l=Bk();b=(K6(j.bVa)).dX();while(b.dY()){e=b.dZ();m=e.bHn;n=e.bHo;if(Ja(m)===j.bQA&&!Hh(m)&&Ja(n)===j.bQA&&!Hh(n))U(l,e);}o=j.bVa.bGM;p=BVy(l);b=new A8Q;e=j.bVa;k=j.bQA;q=Pw(k);m=new DhU;m.cyQ=j;BkH();BzJ(b,e,k,l,q,m,BOQ);e=BNp(j.bQA.bMi,j.bVa,p.bUr,BNC(b));k=BEW(p,e);q=new APV;n=j.bVa;BtY(q,p,e,n.bM8,n.bGM);e=new AUi;n=j.bVa;l=n.bU8;n=Cf(n);CV();A4W(e,b,l,n,ALv,j.cPT,q,k);b=HR(j.bQA);F7();if(b!==AWA)break b;q=j.bQA.bGZ;JN();b=Cue(j,Bom,q);n=j.bQA.bG_;CM();q=DQ(n,C6)===null?Cue(j, +AFk,q):DQ(j.bQA.bG_,C6);k=B1(o);B8();r=G1(B0(k,CXL));k=new Dih;k.cdy=APQ(e,j.cWD,null,K(Bi,0),0);k.cMK=q;k.cUs=b;k.cUZ=r;}Cy();B2_(i,k,AEE);g=1;}}if(g)continue;else break a;}b=new BV;Bp(b,HT(HR(j.bQA)));J(b);}else if(e===RA){e=new CcM;ALk();ERZ(e,c,d,AUY);}}e=new APV;b=a.bN9;q=a.b1J.b21;c=a.bIk;BtY(e,b,q,c.bM8,c.bGM);k=new A8Q;b=a.bIk;c=AOt(b);m=Bk();q=(K6(a.bIk)).dX();while(q.dY()){Fug(a,m,q.dZ());}q=Bpj(a.bIk);n=a.bIk;BzJ(k,b,c,m,q,n,n);q=new AUi;b=a.bIk;p=b.bU8;b=Cf(b);c=N$(a.bIk.bM8);ALk();A4W(q,k,p,b,c, +AUY,e,a.b1J);n=APQ(q,d,null,CZu(a.bIk),0);F0(n,PD)&&!n.a2L();if(n instanceof B2j){b=new AUi;c=a.bIk;A4W(b,k,c.bU8,Cf(c),N$(a.bIk.bM8),Bw$,e,a.b1J);n=APQ(b,d,null,CZu(a.bIk),0);}n.cF(d);return n;},Fug=(a,b,c)=>{let d,e;d=0;e=b;while(d{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;c=a.cag;d=c.bLJ;if(!APh(d.bPh)){e=d.bPh;f=new Xf;MN();g=A44;NV();XG(f,g,Yk);KM(e,f);}if(AKC((Bdh(d)).bJv)>0&&AKC((AXK(d)).bJv)<0){g=d.bPh;d=new Xf;e=A44;NV();XG(d,e,Yk);KM(g,d);}d=b.hE();h=BRM(c,d);f=(Gc(c.bPo)).dX();while(f.dY()){g=f.dZ();e=g.cSU;if(e!==null){i=b.h2(CmT(c,g,d));j=B3i(g,d)+(AN9(g)).UJ(d);((i.h2(e)).h2(Cc(e))).hP(C2(BYd(c,d),j));}}k=BM(h);if(!c.bV8){g=b.hE();i=Fg((B0r(c,g)).bHu);e=(b.h2(CFC(c))).h2(DrM(c));e.hP(i);(e.h2(BM(BYd(c,g)))).hP(i);}l +=b.h2(BM(5.0));m=l.h2(k);j=BiV(c,m.hE());f=Br(c.cml);while(Bq(f)){b=Bm(f);e=c.bLJ;g=m.h2(E4());n=b.cyI;CM();i=DQ(n,C6);if(i===null){i=BNZ(b);B9();i=(BJ(i,CK)).cu(b.cfN.bGN);}g=g.h2(Cc(i));o=Ll(e,b.ckZ);b=C2(Ll(e,b.cuh)-o,j);(g.h2(BM(o))).hP(b);}g=c.bLJ;f=l.h2(k);j=BiV(c,d);b=CXs(f,Cq1(g),g.bY4);e=Fg(j);p=C6p(g);q=0;while(q<=p){(b.h2(BM(Id(CT(g.bRQ,V(q)))))).hP(e);q=q+1|0;}b=(Gc(c.bPo)).dX();while(b.dY()){e=b.dZ();f=l.h2(Bqf(c,e,d));g=l.h2(CmT(c,e,d));if(!DTJ(e))E3a(c,g);Ekx(e,g);e=AN9(e);e.a2S(f,h);e.a2T(f.h2(k));}b +=l.h2(k);e=c.bLJ;d=b.h2(B0r(c,d));f=c.cB9;g=c.cn1;ANY();if(f!==AYA){i=Cb9(e);Cq1(e);B9();n=(BJ(i,Cz)).cu(e.bY4.bGN);d=(d.h2(Fi(i))).h2(n);if(f===A5Q)DHm(e,d);else{f=Fg(5.0);h=Bwp(e,Lq(CzT(e)));p=0;while(h+Id(CT(V(p),e.bRQ))<=PN(e)){p=p+1|0;}(d.h2(BM(h))).hP(DE(Id(CT(V(p-1|0),e.bRQ))));i=NA(e.bPh);while(i.dY()){n=i.dZ();(d.h2(BM(Ll(e,n)))).hP(f);k=Vm(Ty(g));r=k;a:{b:{while(true){if(!TS(r))break b;m=U6(k);if(BUK(n,BeJ(m)))break;}k=BcU(m);break a;}k=CkP(e.ceP,DGc(n));}if(!GB(k))continue;k=CqF(e,k);l=k.cF(d.hE());k.cC(d.h2(Bh(Ll(e, +n)-N4(l)/2.0,6.0)));}}}e=Br(c.cFO);while(Bq(e)){EJa(c,b,Bm(e));}Enu(c,b);},DJZ=(a,b)=>{let c,d,e;c=BRM(a.cag,b)+PN(a.cag.bLJ)+5.0+5.0;d=new LU;e=a.cag;MO(d,c,BiV(e,b)+((DdB(e.bLJ,BH)).cF(b)).bGF);return d;}; +function C$O(){let a=this;F.call(a);a.csf=null;a.c4K=null;} +let Fkf=(a,b)=>{b=b.h2(Bh(5.0,5.0));a.csf.cC(b.h2(a.c4K.cQ$));},DPK=(a,b)=>{return FO(De(a.csf,b),10.0,10.0);}; +function C1y(){F.call(this);this.bTi=null;} +let DPv=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n;c=0.0;d=0.0;e=Br(a.bTi.cpz);while(Bq(e)){f=De(Bm(e),b);c=c+a.bTi.b2S;d=BC(f.bGF,d);}g=0.0;h=0.0;i=Br(a.bTi.ccN);while(Bq(i)){j=Bm(i);k=0.0;l=0.0;j=j.dX();while(j.dY()){e=j.dZ();m=a.bTi;n=BFX(C_p(e,b,m.b2S,m.cj1),b);k=k+n.bGE;l=n.bGF;}g=BC(g,k);h=h+l;}return Cl(BC(c,g),d+h);},DDX=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n;c=0.0;d=0.0;e=Br(a.bTi.cpz);while(Bq(e)){f=Bm(e);CKU(f,b);b=b.h2(Bh(a.bTi.b2S,0.0));g=De(f,b.hE());c=c+a.bTi.b2S;d=BC(g.bGF,d);}b=b.h2(Bh( -c,d));h=Br(a.bTi.ccN);while +(Bq(h)){e=Bm(h);i=0.0;j=0.0;g=e.dX();while(g.dY()){k=g.dZ();l=b.hE();e=a.bTi;l=C_p(k,l,e.b2S,e.cj1);k=b.hE();m=l;n=BFX(m,k);i=i+n.bGE;j=n.bGF;e=BFX(m,b.hE());if(e.bGE!==0.0&&e.bGF!==0.0){k=MW(b,e);k=Ef(m.cnj,k);l=Ge(C2(e.bGE,e.bGF),m.cnj.bIR);l.bG1=m.cnj.bHm;k.hP(l);l=m.cMg;e=m.cXp;B3();(FT(FT(l,e,CO),m.c5I,CO)).cC(k.h2(Bh(0.0,10.0)));}b=b.h2(Bh(n.bGE,0.0));}b=b.h2(Bh( -i,j));}}; +function CWc(){F.call(this);this.cJC=null;} +let EHj=(a,b)=>{let c,d;c=Br(a.cJC.b8q);while(Bq(c)){d=Bm(c);DlT(d,b);b=b.h2(BW((De(d,b.hE())).bGF));}},EfB=(a,b)=>{let c,d,e,f;c=0.0;d=0.0;e=Br(a.cJC.b8q);while(Bq(e)){f=De(Bm(e),b);d=d+f.bGF;c=BC(c,f.bGE);}return Cl(c+10.0,d);}; +function CGd(){F.call(this);this.cDb=null;} +let DvI=(a,b)=>{D_9(Dec(a.cDb),b);},D95=(a,b)=>{let c,d,e,f;c=Dec(a.cDb);b=CVr(c,b);d=60.0+CX_(c)+(c.bWO===null?0.0:40.0)+20.0;e=410.0;f=c.bWK;if(f!==null&&!CQ(f))e=430.0;c=c.bUQ;SH();if(!(c!==Yq&&c!==AB7))d=d+b.bGE+10.0;else if(!(c!==AMF&&c!==A9E))e=e+b.bGF+10.0;return Cl(d,e);}; +function CDi(){let a=this;F.call(a);a.cr_=null;a.cgW=null;a.c0V=null;} +let D_8=(a,b,c,d)=>{a.c0V=b;a.cr_=c;a.cgW=d;},DNg=(a,b,c)=>{let d=new CDi();D_8(d,a,b,c);return d;},EsJ=(a,b)=>{let c,d,e;Go();c=b.h2(Hu);d=a.cr_;b=new LU;e=a.cgW;MO(b,e.bGE,e.bGF);d.a23(c,0,b);b=a.cr_;d=new LU;e=a.cgW;MO(d,e.bGE,e.bGF);b.a23(c,1,d);},DU2=(a,b)=>{return a.cgW;},EGl=a=>{return AF5(a.c0V.bGM);},B58=N(0); +function CLu(){let a=this;F.call(a);a.bJk=null;a.b_l=null;a.cgJ=null;a.cAw=null;a.bY1=null;a.c17=null;a.c6$=null;} +let DPz=a=>{let b,c,d,e;b=Fp(a.bJk);c=(Fp(a.bJk)).a25();d=new Bgy;e=new S;T(e);Bb(H(e,c),215);B4i(d,b,Q(e),AQ1(a.b_l,(-2.0)),a.bY1);b=!Bj(E(35),c)?d:BeS(d,a.bY1);EY(a.bJk,b);},ASZ=(b,c)=>{let d,e;d=K(KH,1);d.data[0]=E(4623);e=PB(d);B3();return C_(e,b,CF,c);}; +function CGa(){F.call(this);this.cJQ=null;} +let Fxu=(a,b)=>{CYD(a.cJQ,b);},E4O=(a,b)=>{let c,d;c=a.cJQ;d=new CGb;d.cWy=c;return AQY(ACo(d,b,1));},A6u=N(Bx),Nb=null,AKg=null,DCc=null,ML=()=>{ML=Z(A6u);DvC();},DXV=(a,b,c)=>{ML();Ct(a,b,c);},DpG=(a,b)=>{let c=new A6u();DXV(c,a,b);return c;},DvC=()=>{let b,c,d;Nb=DpG(E(4624),0);b=DpG(E(4625),1);AKg=b;c=K(A6u,2);d=c.data;d[0]=Nb;d[1]=b;DCc=c;}; +function Cjq(){let a=this;F.call(a);a.czs=null;a.cxt=null;a.cBB=null;a.cIy=null;} +let C7m=(b,c)=>{let d;d=new Cjq;d.czs=b;d.cxt=c;return d;},CS7=(a,b)=>{let c,d,e,f;c=b.hE();if(a.cBB===null){c=CT1(a.czs,c);a.cxt.cC(c);d=c.bNz;c=BDO();BvU(d.b25);e=null;f=Br(d.b25);while(Bq(f)){d=Bm(f);if(e!==null)Rq(c,e.bSj,d.bPU);e=d;}d=BDO();e=Br(c.b25);while(Bq(e)){c=Bm(e);if(CB5(c)<=10.0)continue;Rq(d,c.bPU+5.0,c.bSj-5.0);}c=new DaZ;c.cW$=d.b25;a.cBB=c;}e=a.cBB;c=a.cxt;d=a.czs;AZD();c.cC(BQ2(d,b,e,LR()));}; +function Db$(){let a=this;F.call(a);a.cHu=null;a.cqB=null;} +let FnE=(a,b)=>{let c,d;c=Drl(a,b.hE());d=a.cHu;b=b.h2(Bh( -c.bJ0+5.0, -c.bLa+5.0));CS7(d,b);},Drl=(a,b)=>{let c;if(a.cqB===null){c=a.cHu;if(c.cIy===null)c.cIy=ACo(c,b,0);c=c.cIy;a.cqB=ALO(c.bJ0,c.bLa,c.bNf+15.0,c.bN2+15.0);}return a.cqB;},Flv=(a,b)=>{return AQY(Drl(a,b));},Ezx=a=>{return null;}; +function Crm(){F.call(this);this.cHU=0.0;} +let Cgo=(a,b)=>{if(!(!(b<0.0)&&!(b>a.cHU)))Fw(Fm(),E(4626));return a.cHU-b;},AEB=(a,b)=>{return BA(Cgo(a,b.bGL),b.bGK);}; +function Cbm(){let a=this;F.call(a);a.c60=null;a.ctj=null;} +let CSC=N(0),ATp=N(0); +function CA(){F.call(this);this.db8=0;} +let CJ=a=>{a.db8=0;},Fx$=()=>{let a=new CA();CJ(a);return a;},Ehz=a=>{let b;b=new BV;Bp(b,ST(Dg(a)));J(b);},Brk=(a,b)=>{let c,d,e;c=Fm();d=a.p();e=new S;T(e);H(H(H(e,E(4627)),d),E(4628));d=Q(e);Fw(c,d);c=new BV;b=BY(b);d=ST(Dg(a));e=new S;T(e);b=H(e,b);Bb(b,32);H(b,d);Bp(c,Q(e));J(c);},ERd=(a,b)=>{b=new BV;Bp(b,ST(Dg(a)));J(b);},CYN=a=>{let b;b=new BV;Bp(b,ST(Dg(a)));J(b);}; +function AHa(){let a=this;CA.call(a);a.bHw=null;a.bGQ=null;} +let Bn_=a=>{let b;CJ(a);b=new BgJ;CJ(b);a.bHw=b;},Fyz=()=>{let a=new AHa();Bn_(a);return a;}; +function CXT(){let a=this;AHa.call(a);a.c33=null;a.c0C=null;a.bKd=null;a.cpm=null;a.ci3=null;a.bLM=null;a.bYR=null;} +let EKP=a=>{Bn_(a);a.bKd=a;a.cpm=ALM(a);a.ci3=ALM(a);},Bqe=()=>{let a=new CXT();EKP(a);return a;},BGi=(a,b)=>{let c;c=b;Bpn(a.bHw,c.bHw);a.bGQ=c.bGQ;CeK(a.cpm,c.cpm);CeK(a.ci3,c.ci3);a.bLM=c.bLM;},FoC=(a,b)=>{if(b!==null&&b.bQp){Wn();if(b!==AWd){if(b!==AVQ){b=new BV;X(b);J(b);}return a.cpm;}return a.ci3;}return a;},CpP=(a,b)=>{let c;if(b==1){c=a.c0C;if(c!==null)return c;}if(b==(-1)){c=a.c33;if(c!==null)return c;}c=new BV;X(c);J(c);}; +function Dqk(){let a=this;F.call(a);a.cXU=null;a.c_6=null;} +let Cds=N(0); +function Czf(){let a=this;F.call(a);a.cG9=null;a.c7A=null;a.cqE=null;} +let EDi=N(),Ba$=(b,c,d)=>{let e,f,g,h,i;e=Ce(E(4115));f=Ce(E(4116));g=Ce(E(4118));h=K(C7,5);i=h.data;i[0]=DZ(b,f);i[1]=g;i[2]=DZ(c,e);i[3]=g;i[4]=DZ(d,e);return DP(h);}; +function C0P(){let a=this;If.call(a);a.cp$=null;a.cYS=0;} +let DFg=a=>{return a.cp$.bHv;},AJ5=a=>{let b;b=new CXQ;Bpy(b,a.cp$,a.cYS);return b;},CzP=(a,b)=>{return NB(a.cp$,b);}; +function Cgt(){let a=this;F.call(a);a.cEH=null;a.chq=null;} +let Ca0=(a,b,c)=>{let d;U(a.cEH,b);b=a.chq;d=DL(c);U(b,d);}; +function Crb(){let a=this;FA.call(a);a.cpk=null;a.cOl=null;a.c0e=0;} +let Dqf=a=>{return JZ(a)!=117?0:1;},C$o=a=>{return !(JZ(a)==102&&BoL(a)==105)?0:1;}; +function C5U(){let a=this;FA.call(a);a.cm2=null;a.cQB=null;a.cR2=0;} +let Cl2=a=>{return JZ(a)!=117?0:1;},Djz=a=>{return !(JZ(a)==102&&BoL(a)==105)?0:1;}; +function CPf(){FA.call(this);this.cOi=null;} +function C3$(){FA.call(this);this.dcb=null;} +let CCM=N(0); +function Db0(){F.call(this);this.cWA=0;} +function C7L(){let a=this;ACW.call(a);a.cxU=null;a.cKI=null;a.cRm=null;} +let DSE=a=>{let b,c,d,e,f,g,h,i,j;b=new CtQ;c=a.b2A;d=a.bNw;e=a.bYU;f=AWs(a);g=a.cxU;h=a.cKI;i=a.cRm;j=null;AX8(b,c,d,e,f,null,j);b.cou=g;b.ca0=h;b.ccZ=i;return b;},D47=(a,b,c)=>{b=new BV;X(b);J(b);},FsZ=(a,b,c,d,e)=>{b=new BV;X(b);J(b);},Fpb=(a,b,c,d,e)=>{b=new BV;X(b);J(b);}; +function Cdq(){let a=this;F.call(a);a.ckZ=null;a.cuh=null;a.c61=null;a.cyI=null;a.cfN=null;} +let BNZ=a=>{let b;b=B1(a.cfN);B8();return B0(b,DlL);}; +function C1C(){let a=this;F.call(a);a.cQo=null;a.cQn=null;a.cR7=null;a.b_x=0.0;a.b_w=0.0;a.ciu=0.0;a.cit=0.0;} +let EmS=(a,b,c)=>{if(b===a.cQo){a.b_x=c.bGK;a.b_w=c.bGL;}else if(b===a.cQn){a.ciu=c.bGK;a.cit=c.bGL;}else{b=new Bt;X(b);J(b);}},ETL=(a,b,c)=>{let d,e,f;if(a.b_x===0.0&&a.b_w===0.0)return;if(a.ciu===0.0&&a.cit===0.0)return;Go();b=b.h2(Hu);d=EB(a.ciu-a.b_x,a.cit-a.b_w);b=b.h2(J$(3.0,3.0,1.0));(b.h2(Bh(a.b_x,a.b_w))).hP(d);e=a.cR7;Fs();d=Nu(c,ASd,null);B3();f=C_(e,d,CO,c);e=f.cF(b.hE());f.cC(b.h2(Bh((a.b_x+a.ciu)/2.0-e.bGE/2.0,(a.b_w+a.cit)/2.0-e.bGF/2.0)));}; +function CEP(){let a=this;ANs.call(a);a.cGJ=null;a.cGI=null;a.cKi=null;a.cZW=null;a.cny=null;} +let Cws=a=>{let b;b=a.cny;B8();return B0(b,BBI);},DtQ=a=>{return;}; +function CKG(){let a=this;F.call(a);a.cqQ=null;a.cEW=null;} +let ENK=(a,b,c)=>{a.cqQ=B$(b);a.cEW=c;},DlH=(a,b)=>{let c=new CKG();ENK(c,a,b);return c;}; +function ANS(){let a=this;ACW.call(a);a.b$h=null;a.cbl=null;a.cgb=null;a.clZ=null;a.cq9=null;a.c23=0.0;} +let BMM=(a,b,c,d,e,f,g,h,i)=>{Bqz(a,b,c,d,e,f,g,h,0);a.b$h=UJ();a.cbl=Bk();a.cgb=E9();a.c23=i;},DR2=(a,b,c,d,e)=>{let f,g;f=a.cbl;g=BRf(a.c23,b,c,d,a.bNw,e);U(f,g);},EMk=(a,b,c,d,e)=>{let f,g,h,i;f=0;while(true){g=e.data;if(f>=g.length)break;h=g[f];i=FW(a.cgb,h);if(i===null)i=h;g[f]=i;f=f+1|0;}if(b===null){a.clZ=g[0];a.cq9=d;}else{i=a.b$h;h=ETJ(b,c,d,e);KM(i,h);}},DWA=(a,b,c)=>{Es(a.cgb,b,c);},C$F=N(ANS),E6e=a=>{let b,c,d,e;b=new DcX;c=a.b2A;d=a.bNw;e=BPV(a);CPl(b,c,d,a.bYU,AWs(a),e,a.cbl);C1s(b,a.clZ,a.cq9);e +=NA(a.b$h);while(e.dY()){Cxg(b,e.dZ());}return b;},C8r=N(ANS),EHa=a=>{let b,c,d,e;b=new CZ3;c=a.b2A;d=a.bNw;e=BPV(a);CPl(b,c,d,a.bYU,AWs(a),e,a.cbl);C1s(b,a.clZ,a.cq9);e=NA(a.b$h);while(e.dY()){Cxg(b,e.dZ());}return b;},CLx=N(ANS),DwC=a=>{let b,c,d,e,f,g,h,i;b=new BNA;c=a.b2A;d=a.bNw;e=Gc(a.cgb);f=a.bYU;g=AWs(a);h=a.cbl;B9i();AX8(b,c,d,f,g,null,h);b.bJR=Bk();g=E2(e);b.bRq=g;BzY(g);i=a.clZ;b.bZd=i;if(i!==null&&!Nw(b.bRq,i))U(b.bRq,i);g=NA(a.b$h);while(g.dY()){h=g.dZ();U(b.bJR,h);if(!AFE(h)){h=Br(AKb(h));while +(Bq(h)){e=Bm(h);if(!Nw(b.bRq,e))U(b.bRq,e);}}}return b;}; +function BS$(){A6k.call(this);this.cH9=null;} +let ERu=(a,b,c,d)=>{let e,f;if(!(b instanceof ByE)){if(b instanceof Lp){e=new ByE;f=b.v1();Bxa();e.cSl=f;return CxI(a,e,c,d);}b=new Bt;X(b);J(b);}b=b;return CxI(a,b,c,d);},ElJ=(a,b)=>{BK2(a.cH9,b);}; +function Brq(){let a=this;BS$.call(a);a.c2j=null;a.cXC=null;a.c2m=null;a.ctW=null;} +let Fp3=(a,b)=>{BS9(a,b,ACH());},Fpm=a=>{let b=new Brq();Fp3(b,a);return b;},BS9=(a,b,c)=>{let d,e,f,g,h,i;d=CS1(c);a.cH9=B$e();e=CS1(d.bZZ);f=d.cax;if(f!==null)e.cax=MK(f,f.data.length);f=d.cec;if(f!==null)e.cec=MK(f,f.data.length);f=d.cbB;if(f!==null)e.cbB=MK(f,f.data.length);f=d.cex;if(f!==null)e.cex=MK(f,f.data.length);f=d.b5Q;if(f!==null){g=f.data;e.b5Q=MK(f.b2(),g.length);}f=d.b7P;if(f!==null)e.b7P=MK(f,f.data.length);a:{f=d.ckX;if(f!==null){e.ckX=K(Ib(Bi),f.data.length);h=0;while(true){f=d.ckX.data;if +(h>=f.length)break a;e.ckX.data[h]=MK(f[h],f[h].data.length);h=h+1|0;}}}a.c2j=e;i=ACH();a.ctW=i;a.c2m=b;b=new CVK;d=a.c2j;b.bJc=Bk();b.ca5=d;b.czi=i;D_P(b,a.c2m);b=b.bJc;f=K(Mu,0);a.cXC=WW(b,f);a.ctW=c;},FyI=(a,b)=>{let c=new Brq();BS9(c,a,b);return c;},CxI=(a,b,c,d)=>{let e,f,g,h;e=E6_(a.ctW);Z7(e,b.cSl);BK2(e,a.cH9.b39);f=a.cXC.data;g=f.length;h=0;while(h{let b,c,d,e,f,g,h,i;b=new CTC;c=a.b2A;d=a.bNw;e=a.bYU;f=AWs(a);g=a.cFo;h=a.cxd;i=a.cPc;AX8(b,c,d,e,f,BPV(a),h);b.cS2=g;b.cK0=i;return b;},DzT=(a,b,c)=>{b=new BV;X(b);J(b);},DOa=(a,b,c,d,e)=>{let f,g;e=e.data;f=new BR$;if(e.length==1){g=K(Bi,1);g.data[0]=BBJ(a,e[0]);}else g=BB(Bi,[BBJ(a,e[0]),BBJ(a,e[1])]);C7F(f,b,c,d,g);if(b===null)a.cPc=f;else Qm(a.cFo,b,f);},BBJ=(a,b)=>{if(!Bj(E(360),b)&&!BG(E(4629),b))return E(35);return E(360);},ETU=(a,b,c,d,e)=>{let f,g;f=a.cxd;g=BRf(2.5,b,c,d,a.bNw,e);U(f, +g);}; +function C$w(){let a=this;F.call(a);a.bUm=null;a.bSr=null;a.cfY=null;a.bTg=null;a.bIB=null;a.b3p=null;a.b8d=null;a.bWC=null;a.b9m=null;a.bJK=null;} +let FlR=(a,b,c,d,e,f,g)=>{let h,i;a.bJK=b;a.bUm=e;a.bSr=f;a.cfY=g;h=b;i=Ui(h,E(4145));g=e.bH4.bP$;h=g!==f.bH4.bP$?DA(b,1,E8(h,i)):AGF(g,i);e=B4(Cf(b),E(14));Cy();a.bTg=ED(b,c,h,e,ACF,null);},CCK=(a,b,c,d,e,f)=>{let g=new C$w();FlR(g,a,b,c,d,e,f);return g;},FmL=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n;f=B2x(a.bJK,a.bUm,a.bSr);a.bIB=f;if(f!==null)A3l(a.bJK,f);else{g=new NZ;f=a.bJK;h=B1(f.bGM);i=a.bUm;j=a.bSr;k=new H6;FU();l=Hf;Mo(k,l,l);O3(g,b,f,h,i,j,k,KY(2));a.bIB=g;}f=a.bIB;m=f.bHn;k=f.bHo;f=new NZ;h=a.bJK;O3(f, +b,h,B1(h.bGM),m,a.bTg,BEx(L1(a.bIB)),Xq(VF(AHE(XF(a.bIB),M2(a.bIB)),ATc(a.bIB),null),AVq(a.bIB),AVI(a.bIB)));a.b3p=f;f.bWG=A5c(a.bIB);h=new NZ;i=a.bJK;O3(h,b,i,B1(i.bGM),a.bTg,k,B0S(L1(a.bIB)),Xq(VF(KY(M2(a.bIB)),null,ATs(a.bIB)),AVq(a.bIB),AVI(a.bIB)));a.b8d=h;n=1;if(M2(a.bIB)==1&&a.bUm!==a.bSr)n=2;if(M2(a.bIB)==2&&a.bUm===a.bSr)n=2;if(n==1){f=a.b3p;h=a.bIB;AGz();B7$(f,h,A19);}else{f=a.b3p;h=a.bIB;AGz();B7$(f,h,A7h);B7$(a.b8d,a.bIB,A2M);}f=a.bJK;h=a.b3p;IS(f,h);f=a.bJK;h=a.b8d;IS(f,h);if(c!=1){h=new NZ;i=a.bJK;O3(h, +b,i,B1(i.bGM),a.cfY,a.bTg,d,AHE(e,n));a.bWC=h;}else{h=new NZ;i=a.bJK;O3(h,b,i,B1(i.bGM),a.bTg,a.cfY,d,AHE(e,n));a.bWC=h;}b=a.bJK;d=a.bWC;IS(b,d);},FdL=(a,b,c,d)=>{let e,f,g,h,i,j,k;e=B2x(a.bJK,a.bUm,a.bSr);a.bIB=e;if(e!==null)A3l(a.bJK,e);else{f=new NZ;g=a.bJK;e=B1(g.bGM);h=a.bUm;i=a.bSr;j=new H6;FU();k=Hf;Mo(j,k,k);O3(f,b,g,e,h,i,j,KY(2));a.bIB=f;}e=new NZ;h=a.bJK;O3(e,b,h,B1(h.bGM),a.bUm,a.bTg,BEx(L1(a.bIB)),Xq(VF(AHE(XF(a.bIB),2),ATc(a.bIB),null),AVq(a.bIB),AVI(a.bIB)));a.b3p=e;e=new NZ;h=a.bJK;O3(e,b,h, +B1(h.bGM),a.bTg,a.bSr,B0S(L1(a.bIB)),Xq(VF(KY(2),null,ATs(a.bIB)),AVq(a.bIB),AVI(a.bIB)));a.b8d=e;e=a.bJK;h=a.b3p;IS(e,h);e=a.bJK;h=a.b8d;IS(e,h);e=a.b9m.bWC;i=e.bHn.bHD;Cy();if(i===ACF){A3l(a.bJK,e);e=a.b9m;e.bWC=AA9(e.bWC);e=a.bJK;h=a.b9m.bWC;IS(e,h);}e=new NZ;h=a.bJK;O3(e,b,h,B1(h.bGM),a.bTg,a.cfY,c,AHE(d,1));a.bWC=e;IS(a.bJK,e);e=new NZ;c=a.bJK;d=B1(c.bGM);h=a.b9m.bTg;i=a.bTg;k=new H6;FU();j=Hf;Mo(k,j,j);O3(e,b,c,d,h,i,k,KY(1));e.cIN=1;IS(a.bJK,e);}; +function AX7(){F.call(this);this.cTg=null;} +let CJ_=a=>{a.cTg=a;},CC6=(a,b)=>{let c;c=b.bGI.length;BCI(a,b,0,c);}; +function CbM(){AX7.call(this);this.cg6=null;} +let DeI=(a,b,c,d)=>{let e,f;if(c>=0){e=b.data.length;if(c<=e&&d>=0&&d<=(e-c|0)){if(d){UP(a.cg6,b,c,d);return;}return;}}f=new EN;X(f);J(f);}; +function Bcv(){let a=this;F.call(a);a.cun=null;a.cui=null;a.b3d=null;} +let BzH=null,ANl=()=>{ANl=Z(Bcv);E_h();},IM=b=>{let c,d,e,f,g,h;ANl();c=Jt(b.bHx,E(840),E(14));d=new S;T(d);H(H(d,c),E(4630));e=Q(d);B9();d=CK;f=K(Cn,1);f.data[0]=b;CS(e,d,f);d=new S;T(d);H(H(d,c),E(4631));e=Q(d);d=Cz;f=K(Cn,1);f.data[0]=b;CS(e,d,f);d=new S;T(d);H(H(d,c),E(4632));e=Q(d);d=H1;f=K(Cn,1);f.data[0]=b;CS(e,d,f);d=new S;T(d);H(H(d,c),E(306));e=Q(d);d=Jm;f=K(Cn,1);f.data[0]=b;CS(e,d,f);d=new S;T(d);H(H(d,c),E(308));e=Q(d);d=ACK;f=K(Cn,1);f.data[0]=b;CS(e,d,f);d=new S;T(d);H(H(d,c),E(4633));e=Q(d);d +=ABJ;f=K(Cn,1);f.data[0]=b;CS(e,d,f);f=K(Cn,1);f.data[0]=b;LJ(c,f);d=new S;T(d);H(H(d,c),E(299));e=Q(d);d=AGY;f=K(Cn,1);f.data[0]=b;CS(e,d,f);d=new S;T(d);H(H(d,c),E(4634));g=Q(d);d=Ov;f=K(Cn,2);h=f.data;CV();h[0]=Nh;h[1]=b;CS(g,d,f);d=new S;T(d);H(H(d,c),E(4635));g=Q(d);d=V0;f=K(Cn,2);h=f.data;h[0]=Nh;h[1]=b;CS(g,d,f);d=new S;T(d);H(H(d,c),E(4636));g=Q(d);d=Lv;f=K(Cn,2);h=f.data;h[0]=Nh;h[1]=b;CS(g,d,f);d=new S;T(d);H(H(d,c),E(4637));e=Q(d);c=Vc;f=K(Cn,2);h=f.data;h[0]=Nh;h[1]=b;CS(e,c,f);},De$=(a,b)=>{let c;ANl();a.cun +=Bk();if(!CB(b,E(1775))){a.b3d=b;a.cui=null;}else{c=M0(b,E(4638));a.b3d=H5(c);a.cui=!JO(c)?null:Dk(H5(c));}},Fvv=a=>{let b=new Bcv();De$(b,a);return b;},CeT=(a,b,c)=>{let d,e,f,g,h;if(Dr(a.b3d,E(940))){if(BG(b,E(12)))b=E(35);else if(BG(b,E(13)))b=E(3497);}else if(Bj(a.b3d,E(1819))){if(BG(b,E(12)))b=E(35);if(BG(b,E(13)))b=E(360);}if(BG(b,E(4639)))b=E(1274);if(BG(b,E(2323)))b=E(4640);if(BG(b,E(2322)))b=E(4641);ANl();d=BzH;e=FS(a.b3d);d=DG(d,e);if(d!==null){if(CB(b,E(939))?1:!BO(b,E(4642))?0:1){if(CB(b,E(939))) +{if(BO(b,E(939))){e=new S;T(e);Bb(e,32);H(e,b);b=Q(e);}f=M0(b,E(939));b=H5(f);while(JO(f)){DqQ(a,H5(f),d,c);}}else{DqQ(a,b,d,c);return;}}a:{if(!Bj(E(344),b)){d=d.dX();while(true){if(!d.dY())break a;e=d.dZ();AND(a,e.cJe,AHW(b,c),e.b0_);}}}return;}if(BG(a.b3d,E(940))){B9();d=AGY;b=DjP(a,b,c);g=K(Cn,1);h=g.data;CV();h[0]=VB;AND(a,d,b,g);}else if(BG(a.b3d,E(945))){B9();d=AGY;c=DjP(a,b,c);g=K(Cn,2);h=g.data;CV();h[0]=VB;h[1]=O8;AND(a,d,c,g);}},DqQ=(a,b,c,d)=>{let e,f;a:{if(BO(b,E(4642))){e=(IW(b,E(82))).data[1];b +=c.dX();while(b.dY()){f=b.dZ();B9();AND(a,Lv,AHW(e,d),f.b0_);}}else if(BO(b,E(942))){e=c.dX();while(e.dY()){f=e.dZ();B9();AND(a,ABJ,AHW(E(4640),d),f.b0_);}}else if(BO(b,E(941))){b=c.dX();while(b.dY()){f=b.dZ();B9();AND(a,ABJ,AHW(E(4641),d),f.b0_);}}else if(CB(FS(b),E(350))){c=c.dX();while(true){if(!c.dY())break a;f=c.dZ();B9();AND(a,H1,AHW(E(2915),d),f.b0_);}}}},DjP=(a,b,c)=>{if(!BG(b,E(12))&&!BG(b,E(4643))){if(!BG(b,E(13))&&!BG(b,E(4644)))return AHW(b,c);return AHW(E(3497),c);}return AHW(E(35),c);},AND=(a, +b,c,d)=>{let e,f,g,h,i,j;e=Nq(Bo(RY));f=e;Po(f,b,c);g=BLK(d);b=a.cui;if(b!==null){d=(IW(b,E(4645))).data;h=d.length;AD8();e=Nq(Bo(RY));f=Zd(Yl(f));while(Z3(f)){c=YO(f);b=VX(c);c=Wt(c);i=new AXS;c=c.bNq;Bsw(i,ATQ(c.bOo,c.bVL,COb(c.bR0,h)));Po(e,b,i);}j=0;while(j{return a.cun;},CS=(b,c,d)=>{let e;ANl();b=FS(b);e=DG(BzH,b);if(e===null){e=Bk();C9(BzH,b,e);}b=new Cqu;b.cJe=c;b.b0_=d;e.g(b);},LJ=(b,c)=>{let d,e;ANl();d=new S;T(d);H(H(d,b),E(302));e=Q(d);B9();CS(e, +Ov,c);d=new S;T(d);H(H(d,b),E(303));CS(Q(d),V0,c);d=new S;T(d);H(H(d,b),E(301));CS(Q(d),Lv,c);d=new S;T(d);H(H(d,b),E(300));CS(Q(d),Vc,c);},E_h=()=>{let b,c,d;BzH=Dy();B9();b=CK;c=K(Cn,2);d=c.data;CV();d[0]=AIB;d[1]=AVA;CS(E(4646),b,c);b=Cz;c=K(Cn,2);d=c.data;d[0]=AIB;d[1]=AVA;CS(E(4647),b,c);IM(AIB);IM(ASw);IM(AVc);IM(AQy);IM(AIJ);IM(ASD);IM(AXp);c=K(Cn,2);d=c.data;d[0]=ACD;d[1]=ND;LJ(E(225),c);c=K(Cn,2);d=c.data;d[0]=ACD;d[1]=A0r;LJ(E(226),c);c=K(Cn,2);d=c.data;d[0]=ACD;d[1]=A4u;LJ(E(224),c);b=Ov;c=K(Cn,1);c.data[0] +=K_;CS(E(4648),b,c);b=Ov;c=K(Cn,1);c.data[0]=Nh;CS(E(4649),b,c);b=V0;c=K(Cn,1);c.data[0]=Nh;CS(E(4650),b,c);b=Lv;c=K(Cn,1);c.data[0]=Nh;CS(E(4651),b,c);b=Vc;c=K(Cn,1);c.data[0]=Nh;CS(E(4652),b,c);b=Cz;c=K(Cn,1);c.data[0]=AEf;CS(E(4653),b,c);b=Cz;c=K(Cn,1);c.data[0]=AOh;CS(E(4653),b,c);b=CK;c=K(Cn,1);c.data[0]=AEf;CS(E(4654),b,c);b=CK;c=K(Cn,1);c.data[0]=AOh;CS(E(4655),b,c);c=K(Cn,1);c.data[0]=AEf;LJ(E(4656),c);c=K(Cn,1);c.data[0]=AOh;LJ(E(4656),c);b=H1;c=K(Cn,1);c.data[0]=PU;CS(E(4657),b,c);b=Cz;c=K(Cn,1);c.data[0] +=PU;CS(E(4658),b,c);b=Cz;c=K(Cn,1);c.data[0]=AKe;CS(E(4658),b,c);b=CK;c=K(Cn,1);c.data[0]=AKe;CS(E(4659),b,c);c=K(Cn,1);c.data[0]=PU;LJ(E(4660),c);c=K(Cn,1);c.data[0]=AKe;LJ(E(4661),c);b=Cz;c=K(Cn,1);c.data[0]=ANB;CS(E(4662),b,c);b=CK;c=K(Cn,1);c.data[0]=ANB;CS(E(4663),b,c);b=Lv;c=K(Cn,1);c.data[0]=ANB;CS(E(4664),b,c);b=Cz;c=K(Cn,1);c.data[0]=AJ$;CS(E(4665),b,c);b=CK;c=K(Cn,1);c.data[0]=A2h;CS(E(4666),b,c);c=K(Cn,1);c.data[0]=ATg;LJ(E(4667),c);b=Cz;c=K(Cn,1);c.data[0]=ATg;CS(E(4668),b,c);b=CK;c=K(Cn,1);c.data[0] +=X0;CS(E(4669),b,c);b=Cz;c=K(Cn,1);c.data[0]=X0;CS(E(4670),b,c);c=K(Cn,1);c.data[0]=X0;LJ(E(4671),c);b=H1;c=K(Cn,1);c.data[0]=X0;CS(E(4672),b,c);b=Xs;c=K(Cn,1);c.data[0]=K1;CS(E(4673),b,c);c=K(Cn,1);c.data[0]=O8;LJ(E(584),c);b=H1;c=K(Cn,1);c.data[0]=O8;CS(E(4674),b,c);b=Cz;c=K(Cn,1);c.data[0]=O8;CS(E(4675),b,c);b=CK;c=K(Cn,1);c.data[0]=O8;CS(E(4676),b,c);b=CK;c=K(Cn,1);c.data[0]=PU;CS(E(4677),b,c);b=Cz;c=K(Cn,1);c.data[0]=PU;CS(E(4678),b,c);IM(Wk);b=Cz;c=K(Cn,1);c.data[0]=AF0;CS(E(4679),b,c);b=CK;c=K(Cn,1);c.data[0] +=AF0;CS(E(4680),b,c);c=K(Cn,1);c.data[0]=AF0;LJ(E(4681),c);b=AVV;c=K(Cn,1);c.data[0]=VB;CS(E(4682),b,c);b=CK;c=K(Cn,2);d=c.data;d[0]=Pm;d[1]=ASu;CS(E(4683),b,c);b=Cz;c=K(Cn,2);d=c.data;d[0]=Pm;d[1]=AXu;CS(E(4684),b,c);b=Cz;c=K(Cn,2);d=c.data;d[0]=Pm;d[1]=A5d;CS(E(4685),b,c);b=CK;c=K(Cn,1);c.data[0]=A5r;CS(E(4686),b,c);b=Cz;c=K(Cn,1);c.data[0]=Yy;CS(E(4687),b,c);b=H1;c=K(Cn,1);c.data[0]=Yy;CS(E(4688),b,c);b=CK;c=K(Cn,1);c.data[0]=Yy;CS(E(4689),b,c);c=K(Cn,1);c.data[0]=Yy;LJ(E(706),c);b=CK;c=K(Cn,1);c.data[0] +=AEC;CS(E(4690),b,c);b=Cz;c=K(Cn,1);c.data[0]=AEC;CS(E(4691),b,c);c=K(Cn,1);c.data[0]=AEC;LJ(E(4692),c);c=K(Cn,1);c.data[0]=K1;LJ(E(712),c);b=H1;c=K(Cn,1);c.data[0]=K1;CS(E(4693),b,c);b=Cz;c=K(Cn,1);c.data[0]=K1;CS(E(4694),b,c);b=ABJ;c=K(Cn,1);c.data[0]=K1;CS(E(4695),b,c);b=A2r;c=K(Cn,1);c.data[0]=K1;CS(E(4696),b,c);b=Xs;c=K(Cn,1);c.data[0]=VB;CS(E(1795),b,c);b=Vc;c=K(Cn,1);c.data[0]=VB;CS(E(4697),b,c);b=Lv;c=K(Cn,1);c.data[0]=VB;CS(E(4698),b,c);c=K(Cn,1);c.data[0]=AEH;LJ(E(4699),c);b=CK;c=K(Cn,1);c.data[0] +=AEH;CS(E(4700),b,c);b=Cz;c=K(Cn,1);c.data[0]=AEH;CS(E(4701),b,c);b=H1;c=K(Cn,1);c.data[0]=AEH;CS(E(4702),b,c);b=Jm;c=K(Cn,1);c.data[0]=VB;CS(E(4703),b,c);b=H1;c=K(Cn,1);c.data[0]=OO;CS(E(4704),b,c);b=Cz;c=K(Cn,1);c.data[0]=OO;CS(E(4705),b,c);b=CK;c=K(Cn,1);c.data[0]=OO;CS(E(4706),b,c);b=Jm;c=K(Cn,1);c.data[0]=OO;CS(E(4707),b,c);c=K(Cn,2);d=c.data;d[0]=ACD;d[1]=OO;LJ(E(222),c);b=H1;c=K(Cn,1);c.data[0]=Zi;CS(E(4708),b,c);b=Cz;c=K(Cn,1);c.data[0]=Zi;CS(E(4709),b,c);b=CK;c=K(Cn,1);c.data[0]=Zi;CS(E(4710),b,c);b +=Jm;c=K(Cn,1);c.data[0]=Zi;CS(E(4711),b,c);c=K(Cn,1);c.data[0]=Zi;LJ(E(220),c);b=Xs;c=K(Cn,1);c.data[0]=O8;CS(E(4712),b,c);b=CK;c=K(Cn,1);c.data[0]=ACD;CS(E(4630),b,c);b=CK;c=K(Cn,2);d=c.data;d[0]=K_;d[1]=KU;CS(E(4713),b,c);b=Cz;c=K(Cn,2);d=c.data;d[0]=K_;d[1]=KU;CS(E(4714),b,c);b=Ov;c=K(Cn,3);d=c.data;d[0]=K_;d[1]=KU;d[2]=ND;CS(E(4715),b,c);b=V0;c=K(Cn,3);d=c.data;d[0]=K_;d[1]=KU;d[2]=ND;CS(E(4716),b,c);b=Lv;c=K(Cn,3);d=c.data;d[0]=K_;d[1]=KU;d[2]=ND;CS(E(4717),b,c);b=Vc;c=K(Cn,3);d=c.data;d[0]=K_;d[1]=KU;d[2] +=ND;CS(E(4718),b,c);b=Ov;c=K(Cn,3);d=c.data;d[0]=K_;d[1]=KU;d[2]=Nh;CS(E(4719),b,c);b=V0;c=K(Cn,3);d=c.data;d[0]=K_;d[1]=KU;d[2]=Nh;CS(E(4720),b,c);b=Lv;c=K(Cn,3);d=c.data;d[0]=K_;d[1]=KU;d[2]=Nh;CS(E(4721),b,c);b=Vc;c=K(Cn,3);d=c.data;d[0]=K_;d[1]=KU;d[2]=Nh;CS(E(4722),b,c);b=Ov;c=K(Cn,2);d=c.data;d[0]=K_;d[1]=KU;CS(E(4723),b,c);b=V0;c=K(Cn,2);d=c.data;d[0]=K_;d[1]=KU;CS(E(4724),b,c);b=Lv;c=K(Cn,2);d=c.data;d[0]=K_;d[1]=KU;CS(E(4725),b,c);b=Vc;c=K(Cn,2);d=c.data;d[0]=K_;d[1]=KU;CS(E(4726),b,c);b=H1;c=K(Cn, +2);d=c.data;d[0]=K_;d[1]=KU;CS(E(4727),b,c);b=CK;c=K(Cn,3);d=c.data;d[0]=K_;d[1]=KU;d[2]=ND;CS(E(4728),b,c);b=CK;c=K(Cn,1);c.data[0]=XC;CS(E(4729),b,c);b=Cz;c=K(Cn,1);c.data[0]=XC;CS(E(4730),b,c);c=K(Cn,1);c.data[0]=XC;LJ(E(38),c);c=K(Cn,1);c.data[0]=XC;LJ(E(4731),c);b=H1;c=K(Cn,1);c.data[0]=XC;CS(E(4732),b,c);b=CK;c=K(Cn,1);c.data[0]=UH;CS(E(4733),b,c);b=Cz;c=K(Cn,1);c.data[0]=UH;CS(E(4734),b,c);c=K(Cn,1);c.data[0]=UH;LJ(E(606),c);c=K(Cn,1);c.data[0]=UH;LJ(E(4735),c);b=H1;c=K(Cn,1);c.data[0]=UH;CS(E(4736), +b,c);IM(A_5);IM(A$O);IM(AX4);IM(A9d);IM(A2y);IM(AAN);IM(A77);IM(A65);IM(AYw);IM(Bab);IM(L0);IM(A2b);IM(AUn);IM(AIz);IM(A4r);IM(A57);IM(AGJ);IM(ATS);IM(A4m);IM(Bba);IM(A7c);b=Cz;c=K(Cn,2);d=c.data;d[0]=PG;d[1]=ASf;CS(E(4737),b,c);b=CK;c=K(Cn,2);d=c.data;d[0]=PG;d[1]=ASf;CS(E(4738),b,c);b=Cz;c=K(Cn,2);d=c.data;d[0]=PG;d[1]=Wk;CS(E(4739),b,c);b=CK;c=K(Cn,2);d=c.data;d[0]=PG;d[1]=Wk;CS(E(4740),b,c);b=Cz;c=K(Cn,2);d=c.data;d[0]=PG;d[1]=AQ6;CS(E(4741),b,c);b=CK;c=K(Cn,2);d=c.data;d[0]=PG;d[1]=AQ6;CS(E(4742),b,c);b +=Cz;c=K(Cn,2);d=c.data;d[0]=PG;d[1]=AQz;CS(E(4743),b,c);b=CK;c=K(Cn,2);d=c.data;d[0]=PG;d[1]=AQz;CS(E(4744),b,c);CS(E(4745),Pt,K(Cn,0));b=A0L;c=K(Cn,1);c.data[0]=K_;CS(E(4746),b,c);b=A5D;c=K(Cn,1);c.data[0]=K_;CS(E(4747),b,c);b=Xs;c=K(Cn,1);c.data[0]=Nh;CS(E(4748),b,c);b=CK;c=K(Cn,1);c.data[0]=AUS;CS(E(4749),b,c);b=Cz;c=K(Cn,1);c.data[0]=AUS;CS(E(4750),b,c);b=CK;c=K(Cn,1);c.data[0]=AQO;CS(E(4751),b,c);b=Cz;c=K(Cn,1);c.data[0]=AQO;CS(E(4752),b,c);b=CK;c=K(Cn,1);c.data[0]=APP;CS(E(4753),b,c);b=Cz;c=K(Cn,1);c.data[0] +=APP;CS(E(4754),b,c);b=CK;c=K(Cn,1);c.data[0]=AXT;CS(E(4755),b,c);b=Cz;c=K(Cn,1);c.data[0]=AXT;CS(E(4756),b,c);b=CK;c=K(Cn,1);c.data[0]=AP5;CS(E(4757),b,c);b=Cz;c=K(Cn,1);c.data[0]=AP5;CS(E(4758),b,c);b=CK;c=K(Cn,1);c.data[0]=AW2;CS(E(4759),b,c);b=Cz;c=K(Cn,1);c.data[0]=AW2;CS(E(4760),b,c);b=CK;c=K(Cn,1);c.data[0]=ASg;CS(E(4761),b,c);b=Cz;c=K(Cn,1);c.data[0]=ASg;CS(E(4762),b,c);}; +function Bz2(){let a=this;F.call(a);a.cBZ=null;a.csv=null;a.ci$=null;a.c39=null;} +let EtY=null,BI2=()=>{BI2=Z(Bz2);D89();},Cmt=(a,b,c,d)=>{let e;BI2();e=new CN_;e.cTN=1.7976931348623157E308;e.cWG=(-1.7976931348623157E308);e.cTO=1.7976931348623157E308;e.cWF=(-1.7976931348623157E308);a.c39=e;b=Ye(b,E(1268));a.cBZ=b;if(c!==null)a.csv=c;else a.csv=b;if(!(d!==null&&d.bGI.length))a.ci$=b;else a.ci$=d;},A49=(a,b,c)=>{let d=new Bz2();Cmt(d,a,b,c);return d;},DMO=a=>{let b,c,d,e,f,g,h,i,j;b=JH(a);c=a.cBZ;d=a.c39;e=d.cTN;if(e===1.7976931348623157E308)d=E(4763);else{f=e*1.0|0;g=d.cTO*1.0|0;h=d.cWG*1.0 +|0;i=d.cWF*1.0|0;d=new S;T(d);BE(d,f);Bb(d,44);BE(d,g);Bb(d,44);BE(d,h);Bb(d,44);BE(d,i);d=Q(d);}j=new S;T(j);b=H(j,b);Bb(b,32);b=H(b,c);Bb(b,32);H(b,d);return Q(j);},D89=()=>{EtY=new CNr;},CxU=N(),Dja=null,BDA=()=>{BDA=Z(CxU);Du7();},Du7=()=>{let b,c;A55();b=Ca((CGC.b2()).data.length);c=b.data;Dja=b;c[BqE.bGO]=1;c[BQ$.bGO]=2;c[A_v.bGO]=3;},Eqe=N(),CpF=(b,c)=>{let d,e;d=0;while(d<144){b.data[d]=8;d=d+1|0;}d=144;while(d<256){b.data[d]=9;d=d+1|0;}d=256;while(d<280){b.data[d]=7;d=d+1|0;}d=280;while(d<288){b.data[d] +=8;d=d+1|0;}e=0;while(e<32){c.data[e]=5;e=e+1|0;}},CAF=(b,c,d,e,f,g)=>{let h,i,j,k,l,m,n,o,p,q,r,s,t;h=b.b$F;Bm4(h,d,DT(e-32768|0,0),e,f);i=0;j=0;k=b.cfQ;l=0;m=e;while(m=3&&n<258){l=1;break a;}}else if(p>=3&&n<258){l=1;break a;}if(p>=3)AXk(g,n&65535,o&65535);else{s=d.data;n +=1;AXk(g,s[m]&255&65535,0);}t=1;while(t{let k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,bd,be,bf;k=g-d|0;l=c!==null?c.cIT:null;a:{if(c!==null){m=l.data;if(!(m[k]&&!c.b87.data[k])){if(i!=258&&m[k]>i){if(j===null)break a;if(BQL(c,k)BQL(c,k))i=m[k];else{d=m[k];b.bUY=d;if(d>i)b.bUY=i;if(j===null)b.b62=c.b87.data[k];else{if(b.bUY>=3){d=BQL(c,k);g=0;h=8*k|0;i=h+8|0;b:{while(true){if(h>=i)break b;k=(c.b7x.data[h] +&255)+3|0;n=c.cbd.data[h];while(g<=k){j.data[g]=n;g=g+1|0;}if(k==d)break;g=k+1|0;h=h+1|0;}}}b.b62=j.data[b.bUY];}return;}}}}o=h-g|0;if(o>=3){if((g+i|0)<=h)o=i;p=0;q=1;n=g+o|0;r=8192;s=e.cjW;t=s.data;m=e.clS;u=e.cf2.data[e.cju];v=e.b38.data;w=v[u];x=e.cmh.data;y=x[u];z=t[u];ba=u-z|0;if(ba<=0)ba=ba+32768|0;u=g&32767;c:{d:{e:{f:{while(true){if(ba>=32768)break e;if(r<=0)break d;bb=f.data;bc=g-ba|0;if(bb[g+q|0]!=bb[bc+q|0])bc=q;else{bd=v[u];if(bd<=2)i=g;else if(bb[g]!=bb[bc])i=g;else{be=v[bc&32767];if(bdo)be=o;i=g+be|0;bc=bc+be|0;}while(i!=n&&bb[i]==bb[bc]){i=i+1|0;bc=bc+1|0;}bc=i-g|0;if(bc<=q)bc=q;else{g:{if(j!==null){bf=q+1|0;while(true){if(bf>bc)break g;j.data[bf]=ba&65535;bf=bf+1|0;}}}if(bc>=o)break;p=ba;}}if(s!==m&&bc>=w&&y==x[z])s=m;d=s.data[z];if(d==z)break f;h=z-d|0;if(h<=0)h=32768+h|0;ba=ba+h|0;r=r+(-1)|0;q=bc;z=d;}break c;}ba=p;break c;}ba=p;bc=q;break c;}ba=p;bc=q;}if(c!==null&&o==258&&j!==null){f=l.data;if(f[k]){l=c.b87.data;if(!l[k]){if(bc>=3){l[k]=ba&65535;f[k]=bc&65535;}else{l[k]=0;f[k]= +0;}FoK(c,j,k,bc);}}}b.b62=ba;b.bUY=bc;return;}b.bUY=0;b.b62=0;},ChE=(b,c,d,e,f,g,h)=>{let i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;i=b.czF;Dr5(i,g-f|0);AQv();j=A4V;k=Dcb(b,c.ctY,i,e,f,g);if(k.bOs>=1000)l=k;else{l=b.cgQ;BuO(l);Eim(b,i,e,f,g,b.cf6,b.czR);CMy(b,i,e,f,g,b.cf6,l);m=AB4(b,k.bPF,k.bPc,0,k.bOs);n=l.bPF;o=l.bPc;p=l.bOs;q=b.ci_;CpF(q,b.clD);g=3;Ol();r=Bde;s=AQZ;t=AEL;u=0;while(u=16385?13:w>=8193?12:11)|0;}u=u+1|0;}if((g+q.data[256]|0){let g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;g=b.ci_;Rc();Di(Mf,0,g,0,288);h=b.clD;Di(Mf,0,h,0,32);i=3;j=b.cyP;Di(Mf,0,j,0,288);k=b.clE;Di(Mf,0,k,0,32);Ol();l=AEL;m=ASt;n=AQZ;while(e3)i=i+((w/2|0)-1|0)|0;}e=e+1|0;}d +=j.data;d[256]=1;o=b.cyO;Di(j,0,o,0,288);Bw0(b,o);AWk(b,o,15,g);p=b.cX9;Di(k,0,p,0,32);Bw0(b,p);AWk(b,p,15,h);CxV(h);e=2147483647;q=0;while(q<8){f=C7M(b,g,h,!(q&1)?0:1,!(q&2)?0:1,!(q&4)?0:1);if(f{let f,g,h,i,j,k,l,m,n,o,p,q,r;f=0;while(true){g=d.data.length;if(f>=g)break;h=DO(f+b.cVQ|0,g);g=h!=g?0:1;a:{b:{c:{BGv();switch(Crq.data[c.c1s.bGO]){case 1:break b;case 2:break c;case 3:break;default:break a;}ChE(b, +c,g,d,f,h,e);break a;}i=b.czF;Dr5(i,h-f|0);j=Dcb(b,c.ctY,i,d,f,h);f=CMY(b,j.bPF,j.bPc,j.bOs);k=b.cgN;l=1;while(true){m=C5(l,f);if(m>0)break;n=k.data;o=n[l-1|0];p=n[l];AQv();Dby(b,A4V,!(!m&&g)?0:1,j.bPF,j.bPc,o,p,e);l=l+1|0;}break a;}i=b.cgQ;BuO(i);CAF(b,null,d,f,h,i);o=CMY(b,i.bPF,i.bPc,i.bOs);n=i.bPc;q=i.bPF;k=b.cgN.data;k[0]=f;m=0;p=1;while(p<=o){r=k[p];while(m0)break;ChE(b,c,!(!f&&g)?0:1,d,k[l-1|0],k[l],e);l=l+1|0;}}f +=h;}},CxV=b=>{let c,d;c=0;d=0;while(true){if(d>=30){if(!c){b=b.data;b[0]=1;b[1]=1;}else if(c==1){b=b.data;b[!b[0]?0:1]=1;}return;}if(b.data[d]){c=c+1|0;if(c==2)break;}d=d+1|0;}},DO1=(b,c,d,e,f,g,h)=>{let i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;i=29;j=29;a:{b:{while(i>0){if(c.data[256+i|0])break b;i=i+(-1)|0;}break a;}}while(j>0&&!d.data[j]){j=j+(-1)|0;}k=(i+258|0)+j|0;l=b.cqr;m=257+i|0;Di(c,0,l,0,m);Di(d,0,l,m,j+1|0);n=0;o=b.cqs;p=b.cJU;q=0;while(q2){if(g)while(r>10){u=r<=138?r:138;d=o.data;c=p.data;d[n]=18;m=n+1|0;c[n]=u-11|0;r=r-u|0;n=m;}if(f)while(r>2){u=r<=10?r:10;c=o.data;d=p.data;c[n]=17;m=n+1|0;d[n]=u-3|0;r=r-u|0;n=m;}}if(e&&r>3){c=o.data;d=p.data;r=r+(-1)|0;c[n]=s;m=n+1|0;d[n]=0;while(r>2){u=r<=6?r:6;c[m]=16;n=m+1|0;d[m]=u-3|0;r=r-u|0;m=n;}n=m;}while(r){c=o.data;d=p.data;c[n]=s;m=n+1|0;d[n]=0;r=r+(-1)|0;n=m;}q=t+1|0;}v=b.cBu;Rc();Di(Mf,0,v,0,19);t=0;while +(t0){c=y.data;if(v.data[c[z+3|0]])break;z=z+(-1)|0;}ADj(h,i,5);ADj(h,j,5);ADj(h,z,4);t=0;while(t<(z+4|0)){c=y.data;ADj(h,w.data[c[t]],3);t=t+1|0;}t=0;while(t{let h,i,j,k,l,m,n,o, +p,q,r,s,t,u,v;h=29;i=29;a:{b:{while(h>0){if(c.data[256+h|0])break b;h=h+(-1)|0;}break a;}}while(i>0&&!d.data[i]){i=i+(-1)|0;}j=(h+258|0)+i|0;k=b.cqr;h=257+h|0;Di(c,0,k,0,h);Di(d,0,k,h,i+1|0);l=b.cqs;m=0;n=0;while(n2){if(g)while(o>10){c=l.data;n=m+1|0;c[m]=18;o=o-(o<=138?o:138)|0;m=n;}if(f)while(o>2){c=l.data;n=m+1|0;c[m]=17;o=o-(o<=10?o:10)|0;m=n;}}if(e +&&o>3){c=l.data;o=o+(-1)|0;q=m+1|0;c[m]=p;while(o>2){n=q+1|0;c[q]=16;o=o-(o<=6?o:6)|0;q=n;}m=q;}while(o){c=l.data;n=m+1|0;c[m]=p;o=o+(-1)|0;m=n;}n=i+1|0;}r=b.cBu;Rc();Di(Mf,0,r,0,19);n=0;while(n0){c=t.data;if(r.data[c[u+3|0]])break;u=u+(-1)|0;}v=14+((u+4|0)*3|0)|0;n=0;while(n<19){c=r.data;v=v+Ev(d[n],c[n])|0;n=n+1|0;}return v;},Dby=(b,c,d,e, +f,g,h,i)=>{let j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,bd;j=b.ci_;Rc();Di(Mf,0,j,0,288);k=b.clD;Di(Mf,0,k,0,32);l=b.cyP;Di(Mf,0,l,0,288);m=b.clE;Di(Mf,0,m,0,32);AGe(i,!d?0:1,1);AQv();if(c!==A2o)AGe(i,1,2);else AGe(i,2,2);if(c===A2o)CpF(j,k);else{Ol();n=AEL;o=ASt;p=g;while(p=16385?13:d>=8193?12:11);}g=g+1|0;}e=n.data;f=j.data;AGe(i,e[256],f[256]);},BZi=(b,c,d,e,f,g)=>{let h,i,j,k,l,m;Rc();h=Mf;i=d+1|0;Di(h,0,f,0,i);Di(Mf,0,g,0,i);j=0;while(j{let d,e,f,g,h,i,j,k,l,m,n,o,p;c=c.data;d=b.cT0;e=c.length;a:{while(true){if(e<0)break a;if +(!e)break;if(c[e-1|0])break a;e=e+(-1)|0;}return;}Rc();f=Mf;g=e+1|0;Di(f,0,d,0,g);h=c[0];i=0;j=0;while(j=5)){if(!h)break b;if(i<7)break b;}l=0;while(true){if(l>=i)break b;d.data[(j-l|0)-1|0]=1;l=l+1|0;}}i=1;if(k)h=c[j];}j=j+1|0;}h=0;k=c[0];m=0;n=0;while(n=h)break c;c[(n-p|0)-1|0]=o;p=p+1|0;}}h +=0;m=0;k=n>=(e-3|0)?(l>=0?0:c[n]):((((c[n]+c[n+1|0]|0)+c[n+2|0]|0)+c[n+3|0]|0)+2|0)/4|0;}h=h+1|0;if(l)m=m+c[n]|0;n=n+1|0;}}; +function Cxw(){F.call(this);this.c_I=null;} +function Cxt(){let a=this;F.call(a);a.dd2=null;a.dd3=null;} +function AGU(){let a=this;T$.call(a);a.bUn=null;a.bWz=null;a.chy=null;} +let Eqn=(a,b,c,d,e,f,g,h)=>{Cp7(a,b,e,f,g,h);a.chy=Gi();a.bUn=c;a.bWz=d;},ChQ=(a,b,c,d,e,f,g)=>{let h=new AGU();Eqn(h,a,b,c,d,e,f,g);return h;},E7O=a=>{let b,c,d,e,f;b=JH(a);c=BY(a.bUn);d=BY(a.bWz);e=BY(a.coP);f=new S;T(f);b=H(f,b);Bb(b,32);b=H(H(H(b,c),E(3037)),d);Bb(b,32);H(b,e);return Q(f);},DXy=a=>{return a.bUn;},DB3=a=>{return a.bWz;},Eog=(a,b)=>{return !(b!==a.bUn&&b!==a.bWz)?1:0;},EQd=(a,b)=>{return !(a.bUn!==b&&a.bWz===b)?0:1;},Bd1=a=>{return a.bUn!==a.bWz?0:1;},EZe=(a,b)=>{a.chy=b;},Eno=N(),Lm=b=>{let c, +d,e,f,g,h;b=b.data;c=b.length;d=K(AZw,c);e=d.data;f=0;while(f{let c,d,e,f;b=b.data;c=b.length;d=K(AZw,c);e=d.data;f=0;while(f{let c,d,e,f,g;b=b.data;c=b.length;d=K(C7,c*2|0);e=d.data;f=0;while(f{let c,d,e,f;b=b.data;c=b.length;d=K(C7,(c*2|0)-1|0);e=d.data;f=0;while(f0)e[(f +*2|0)-1|0]=EW();e[f*2|0]=Ce(b[f]);f=f+1|0;}return DP(d);},ATk=b=>{return Ce(b);},CvL=N(C7); +function BMq(){let a=this;F.call(a);a.civ=null;a.c1N=null;} +let BR4=null,CIT=0,Bhd=()=>{Bhd=Z(BMq);EuI();},CHw=(a,b)=>{U(a.civ,b);},DRc=a=>{let b;b=a.civ;EJ(b,b.bGJ-1|0);},DBn=a=>{let b,c;b=new S;T(b);c=Br(a.civ);while(Bq(c)){L(b,Bm(c));}return Q(b);},EuI=()=>{CIT=0;BR4=Dm(E(4764));},A0z=N(Bx),AHt=null,UO=null,AMJ=null,DGg=null,SQ=()=>{SQ=Z(A0z);EUk();},EYi=(a,b,c)=>{SQ();Ct(a,b,c);},BWa=(a,b)=>{let c=new A0z();EYi(c,a,b);return c;},AEy=b=>{SQ();if(Bj(E(840),b))return UO;return AHt;},EUk=()=>{let b,c,d;AHt=BWa(E(4765),0);UO=BWa(E(3549),1);b=BWa(E(4766),2);AMJ=b;c=K(A0z, +3);d=c.data;d[0]=AHt;d[1]=UO;d[2]=b;DGg=c;}; +function ADB(){let a=this;F.call(a);a.clf=null;a.cbw=null;a.bSv=null;a.b2g=null;a.bTe=null;a.b0O=0;a.bO4=0;a.b1N=null;a.bLt=null;} +let A8W=(a,b,c,d)=>{a.clf=b;a.cbw=c;a.bSv=E2(d);a.b2g=null;a.b0O=0;a.bO4=0;QQ();a.b1N=ZJ;},Fx2=(a,b,c)=>{let d=new ADB();A8W(d,a,b,c);return d;},BLY=(a,b,c,d,e)=>{a.clf=b;a.cbw=c;a.b2g=E2(d);a.bSv=E2(e);a.b0O=0;a.bO4=0;QQ();a.b1N=ZJ;},Fx3=(a,b,c,d)=>{let e=new ADB();BLY(e,a,b,c,d);return e;},AU5=a=>{return a.cbw;},A0D=a=>{return a.bSv;},Yt=a=>{return a.b2g===null?0:1;},BK0=a=>{return a.bTe;},BIg=a=>{return a.b0O;},A95=N(Bx),AKo=null,ABg=null,APv=null,AEN=null,Dcp=null,Ru=()=>{Ru=Z(A95);Ejg();},E4P=(a,b,c)=> +{Ru();Ct(a,b,c);},BBa=(a,b)=>{let c=new A95();E4P(c,a,b);return c;},Ejg=()=>{let b,c,d;AKo=BBa(E(2838),0);ABg=BBa(E(560),1);APv=BBa(E(4767),2);b=BBa(E(4768),3);AEN=b;c=K(A95,4);d=c.data;d[0]=AKo;d[1]=ABg;d[2]=APv;d[3]=b;Dcp=c;},Eie=N(),BRh=(b,c,d)=>{let e,f,g,h,i,j;a:{b:{if(c!==null){IY();if(AB3(c,A0n))break b;}break a;}c=T6(c,A0n);if(c!==null&&(FS(Dk(c))).bGI.length){}}e=new S;T(e);f=Br(b);while(Bq(f)){g=Bm(f);if(d!==null){b=d;if(b.bHv>0){b=Vm(Ty(b));h=b;while(TS(h)){i=U6(b);j=i.bHt;c=new S;T(c);H(H(c,E(89)), +j);j=Q(c);i=i.bHe;c=new S;T(c);H(H(c,E(88)),i);g=Jt(g,j,Q(c));}}}L(e,g);}b=new B0F;d=Q(e);AFl();b.coO=Bk();b.cfz=999;b.b$_=(-1);b.cCA=d;return b;}; +function Bbz(){Pn.call(this);this.bRG=null;} +let Du6=(a,b,c,d)=>{let e,f,g,h,$$je;e=a.bRG;f=e.bGJ;a:{b:{try{g=f-1|0;e=b.fZ(Be(e,g),c,d);if(CuK(e) instanceof Bbz)break b;}catch($$e){$$je=P($$e);if($$je instanceof J1){break a;}else{throw $$e;}}return e;}c:{try{h=CuK(e);if(Ets(h)==2)break c;J(AFM());}catch($$e){$$je=P($$e);if($$je instanceof J1){break a;}else{throw $$e;}}}d:{try{if(Be(h.bRG,0)===Be(a.bRG,g))break d;J(AFM());}catch($$e){$$je=P($$e);if($$je instanceof J1){break a;}else{throw $$e;}}}try{b=a.bRG;c=Be(h.bRG,1);U(b,c);b=FuR(e,a);}catch($$e){$$je +=P($$e);if($$je instanceof J1){break a;}else{throw $$e;}}return b;}return APx();},Ets=a=>{return a.bRG.bGJ;},DwT=(a,b,c)=>{let d;d=Be(a.bRG,b);return Diy(d.cn(b,c),d,d.bGM,CU_(d),d.ce7);},EuK=a=>{let b;b=Br(a.bRG);while(Bq(b)){(Bm(b)).m6();}},EOi=a=>{let b,c;b=a.bRG.dX();while(true){if(!b.dY())return null;c=(b.dZ()).m5();if(c!==null)break;}return c;},DlN=N(),E4n=null,CG0=null,CG1=null,AUa=()=>{AUa=Z(DlN);E53();},EeW=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r;AUa();e=((d*4|0)+2|0)/3|0;f=Fd(((d+2|0)/3|0)*4|0);g +=f.data;h=c+d|0;i=0;while(c=h)m=0;else{c=k+1|0;m=j[k]&255;k=c;}if(k>=h)n=0;else{c=k+1|0;n=j[k]&255;k=c;}o=l>>>2|0;p=(l&3)<<4|(m>>>4|0);q=(m&15)<<2|(n>>>6|0);r=n&63;c=i+1|0;j=CG0.data;g[i]=j[o];d=c+1|0;g[c]=j[p];g[d]=d>=e?61:j[q];c=d+1|0;g[c]=c>=e?61:j[r];i=c+1|0;c=k;}return f;},BlL=b=>{let c;AUa();c=Q5(b);return E6d(c,0,c.data.length);},E6d=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;AUa();if(!(d%4|0)){while(d>0&&b.data[(c+d|0)-1|0]==61){d=d+(-1)|0;}e=(d*3|0)/4|0;f +=BD(e);g=f.data;h=c+d|0;i=0;a:{b:{while(c=h)m=65;else{d=c+1|0;m=j[c];c=d;}if(c>=h)n=65;else{d=c+1|0;n=j[c];c=d;}if(k>127)break a;if(l>127)break a;if(m>127)break a;if(n>127)break a;j=CG1.data;o=j[k];p=j[l];q=j[m];r=j[n];if(o<0)break b;if(p<0)break b;if(q<0)break b;if(r<0)break b;s=o<<2|(p>>>4|0);t=(p&15)<<4|(q>>>2|0);u=(q&3)<<6|r;d=i+1|0;g[i]=s<<24>>24;if(d>=e)k=d;else{k=d+1|0;g[d]=t<<24>>24;}if(k>=e)i=k;else{i=k+1|0;g[k]=u<<24>>24;}}return f;}v=new Bt;Bp(v,E(4769));J(v);}v +=new Bt;Bp(v,E(4769));J(v);}v=new Bt;Bp(v,E(4770));J(v);},E53=()=>{let b,c,d,e,f,g;E4n=A2k(E(83));b=Fd(64);c=b.data;CG0=b;d=0;e=65;while(e<=90){f=d+1|0;c[d]=e;e=(e+1|0)&65535;d=f;}f=97;while(f<=122){e=d+1|0;c[d]=f;f=(f+1|0)&65535;d=e;}f=48;while(f<=57){e=d+1|0;c[d]=f;f=(f+1|0)&65535;d=e;}f=d+1|0;c[d]=43;c[f]=47;b=BD(128);g=b.data;CG1=b;d=0;f=g.length;while(d>24;d=d+1|0;}},AWr=N(0); +function DrQ(){F.call(this);this.cg8=null;} +let DFz=(a,b)=>{let c,d,e;c=new NR;d=new WP;e=B$(b);WL();ACP(d,e,YW);ABW(c,d);a.cg8=c;},Bwm=a=>{let b=new DrQ();DFz(b,a);return b;},DMF=(a,b,c,d,e)=>{e=new C5c;e.cnx=a;e.c_A=c;e.c8L=b;e.cgS=d;return e;},BBG=b=>{return null;},A13=N(Bx),AXo=null,X6=null,ATw=null,AZU=null,CTB=null,Vp=()=>{Vp=Z(A13);E7I();},E8x=(a,b,c)=>{Vp();Ct(a,b,c);},Bgd=(a,b)=>{let c=new A13();E8x(c,a,b);return c;},Cv5=a=>{Vp();return !(a!==AXo&&a!==X6)?1:0;},E7I=()=>{let b,c,d;AXo=Bgd(E(2472),0);X6=Bgd(E(4771),1);ATw=Bgd(E(1898),2);b=Bgd(E(3239), +3);AZU=b;c=K(A13,4);d=c.data;d[0]=AXo;d[1]=X6;d[2]=ATw;d[3]=b;CTB=c;},A$S=N(Bx),BKt=null,A3c=null,Bho=null,FjY=null,APw=()=>{APw=Z(A$S);D1S();},Fbo=(a,b,c)=>{APw();Ct(a,b,c);},BU4=(a,b)=>{let c=new A$S();Fbo(c,a,b);return c;},D1S=()=>{let b,c,d;BKt=BU4(E(4772),0);A3c=BU4(E(4531),1);b=BU4(E(4773),2);Bho=b;c=K(A$S,3);d=c.data;d[0]=BKt;d[1]=A3c;d[2]=b;FjY=c;},A9V=N(Bx),ZJ=null,AHg=null,AL7=null,CBD=null,QQ=()=>{QQ=Z(A9V);EyS();},Dqb=()=>{QQ();return CBD.b2();},Fdn=(a,b,c)=>{QQ();Ct(a,b,c);},BLj=(a,b)=>{let c=new A9V();Fdn(c, +a,b);return c;},EyS=()=>{let b,c,d;ZJ=BLj(E(3886),0);AHg=BLj(E(3890),1);b=BLj(E(4774),2);AL7=b;c=K(A9V,3);d=c.data;d[0]=ZJ;d[1]=AHg;d[2]=b;CBD=c;}; +function Dfw(){let a=this;F.call(a);a.cc7=null;a.b8l=null;} +let AT7=b=>{return B$Z(b,b);},DCa=(a,b,c)=>{a.cc7=B$(b);a.b8l=B$(c);},B$Z=(a,b)=>{let c=new Dfw();DCa(c,a,b);return c;},D7v=a=>{return FP(a.cc7);},ETj=(a,b)=>{let c;c=b;return Bj(a.cc7,c.cc7);},AQM=N(Bx),Lr=null,OL=null,ARg=null,TX=null,A9n=null,BwM=null,ED2=null,HK=()=>{HK=Z(AQM);ExQ();},BUS=b=>{HK();return Ss(Bo(AQM),b);},ECa=(a,b,c)=>{HK();Ct(a,b,c);},AUH=(a,b)=>{let c=new AQM();ECa(c,a,b);return c;},CgL=b=>{HK();if(b!==null)return BUS(J3(b));return Lr;},ExQ=()=>{let b,c,d;Lr=AUH(E(420),0);OL=AUH(E(422), +1);ARg=AUH(E(4775),2);TX=AUH(E(4776),3);A9n=AUH(E(860),4);b=AUH(E(859),5);BwM=b;c=K(AQM,6);d=c.data;d[0]=Lr;d[1]=OL;d[2]=ARg;d[3]=TX;d[4]=A9n;d[5]=b;ED2=c;},AO_=N(Bx),A90=null,B2$=null,DVJ=null,ASa=()=>{ASa=Z(AO_);D9M();},EGJ=(a,b,c)=>{ASa();Ct(a,b,c);},C9w=(a,b)=>{let c=new AO_();EGJ(c,a,b);return c;},Cqw=b=>{ASa();if(b!==null)return Ss(Bo(AO_),KG(J3(b),32,95));return A90;},D9M=()=>{let b,c,d;A90=C9w(E(455),0);b=C9w(E(4777),1);B2$=b;c=K(AO_,2);d=c.data;d[0]=A90;d[1]=b;DVJ=c;}; +function AFn(){let a=this;F.call(a);a.bSF=null;a.cgs=null;a.cDH=null;} +let Cn7=(a,b,c)=>{CPj(a,b,c,null);},AZ2=(a,b)=>{let c=new AFn();Cn7(c,a,b);return c;},CPj=(a,b,c,d)=>{a.bSF=b;a.cgs=c;a.cDH=d;},Cz$=(a,b,c)=>{let d=new AFn();CPj(d,a,b,c);return d;},BX4=(a,b)=>{let c;if(BhY(a)){b=b.h2(Cc(a.bSF));c=a.cgs;return c!==null?b.h2(c):b.h2(a.bSF);}b=new BP;X(b);J(b);},BhY=a=>{return a.bSF===null?0:1;}; +function BFV(){let a=this;F.call(a);a.bYG=null;a.cHH=null;} +let CoN=null,BOA=()=>{BOA=Z(BFV);DtU();},COE=b=>{let c,d,e,f,g;BOA();c=D3(CoN,b);d=Bk();e=Bk();while(GW(c)){f=BhZ(c);g=Bn(f,0);if(!(!(g>=48&&g<=57)?0:1))U(e,f);else{b=CL(CZ(f));U(d,b);}}b=new BFV;b.bYG=d;b.cHH=e;return b;},Co2=(a,b)=>{let c,d,e;c=(Be(a.bYG,b)).bHl+1|0;d=b+1|0;while(true){e=a.bYG;if(d>=e.bGJ)break;GJ(e,d,CL(1));d=d+1|0;}GJ(e,b,CL(c));},DtU=()=>{CoN=Dp(E(4778));},A$a=N(Bx),AXr=null,A5n=null,ByP=null,DG4=null,AHn=()=>{AHn=Z(A$a);FsG();},DQ2=(a,b,c)=>{AHn();Ct(a,b,c);},BCt=(a,b)=>{let c=new A$a();DQ2(c, +a,b);return c;},FsG=()=>{let b,c,d;AXr=BCt(E(4779),0);A5n=BCt(E(4780),1);b=BCt(E(4781),2);ByP=b;c=K(A$a,3);d=c.data;d[0]=AXr;d[1]=A5n;d[2]=b;DG4=c;}; +function Ix(){let a=this;F.call(a);a.bV5=null;a.bL2=0.0;} +let BKR=null,Vh=null,EB6=null,Dz5=null,D02=null,E$o=null,E2_=null,EUh=null,Esk=null,FfH=null,DYy=null,FmA=null,D1X=null,EzW=null,Emn=null,Pg=0,B0K=0.0,B4D=0,K0=()=>{K0=Z(Ix);E3p();},R0=(a,b,c)=>{K0();a.bV5=b;a.bL2=c;U(BKR,a);},Fyj=a=>{return a.bL2;},EjV=a=>{let b,c;b=a.bV5;if(b!==null){c=new S;T(c);H(H(H(c,E(1775)),b),E(1776));return FD(Q(c));}return null;},DyV=(a,b,c,d,e,f)=>{let g;g=C2(c,d);g.bG1=e;b.hP(g);},Fx6=a=>{return a.bV5;},E3p=()=>{let b,c;BKR=Bk();b=new C1S;R0(b,null,0.0);Vh=b;c=new Clp;R0(c,E(4782), +10.0);EB6=c;c=new C89;R0(c,E(4783),10.0);Dz5=c;c=new CkX;R0(c,E(1725),0.0);D02=c;c=new Dr1;R0(c,E(4784),0.0);E$o=c;c=new Dsl;R0(c,E(4785),0.0);E2_=c;c=new CLT;R0(c,E(4786),0.0);EUh=c;c=new CJM;R0(c,E(801),0.0);Esk=c;c=new CnQ;R0(c,E(38),0.0);FfH=c;c=new Crs;R0(c,E(4787),10.0);DYy=c;c=new DlY;R0(c,E(4788),10.0);FmA=c;c=new C92;R0(c,E(4789),10.0);D1X=c;c=new DgD;R0(c,E(4790),10.0);EzW=c;c=new C9L;R0(c,E(4791),10.0);Emn=c;Pg=10;B0K=5.0;B4D=5;}; +function BUt(){F.call(this);this.ctQ=null;} +let Ccp=null,A$R=0,AF6=()=>{AF6=Z(BUt);D8_();},B2B=()=>{AF6();return Ccp;},BKK=(a,b)=>{let c,d,e,f,g;c=(AKd(b)).bKs;if(!(!(c!==null&&CyH(c))?0:1)){d=DbI(a.ctQ);c=d===null?null:AKd(d);d=null;if(c!==null){d=new AGw;e=c.bKs;A$Z(d,A3C(A5_(e)));d=B42(d,b);e=new DoV;e.dc1=c;e.dc2=d;Kh(e);if(ALl(d))return ASo(d);}e=(A3z(E(2009))).dX();while(true){if(!e.dY()){e=(A3z(E(4792))).dX();while(true){if(!e.dY()){if(c===null){AF6();if(!A$R&&d!==null){b=new C4;X(b);J(b);}return ASo(AKd(b));}AF6();if(!A$R&&d===null){b=new C4;X(b);J(b);}return d;}f +=e.dZ();AF6();if(!A$R&&!BQ9(f)){b=new C4;X(b);J(b);}g=B42(f,b);if(ALl(g))break;}return ASo(g);}f=e.dZ();AF6();if(!A$R&&!BQ9(f)){b=new C4;X(b);J(b);}g=B42(f,b);if(ALl(g))break;}return ASo(g);}e=AKd(b);b=new DoW;b.c_R=e;Kh(b);return ASo(e);},D8_=()=>{let b,c,d;A$R=0;b=new BUt;AF6();b.ctQ=Fr6();c=AKd(E(423));d=new CRY;d.c$2=c;Kh(d);EmB(b.ctQ,A5_(c.bKs));Ccp=b;}; +function CiX(){F.call(this);this.cY2=null;} +let D28=(a,b)=>{a.cY2=b;},Dcy=a=>{let b=new CiX();D28(b,a);return b;},DNO=(a,b,c,d,e)=>{let f;f=Dj$(a.cY2,d);b=new DcL;b.da$=a;b.cpQ=f;b.cw1=d;return b;}; +function DhT(){F.call(this);this.ca$=null;} +let B0u=null,ENS=(a,b)=>{a.ca$=b;},CNV=a=>{let b=new DhT();ENS(b,a);return b;},Ba6=()=>{if(B0u===null)B0u=CNV(null);return B0u;},Brl=b=>{return CNV(B$(b));},Bn6=b=>{return b===null?Ba6():Brl(b);},DkY=a=>{let b;b=a.ca$;if(b===null){b=new Kx;X(b);J(b);}return b;},B_z=a=>{return a.ca$===null?0:1;},BLf=(a,b)=>{let c;c=a.ca$;if(c!==null)a=Bn6(b.dT(c));return a;},Bzn=(a,b)=>{let c;c=a.ca$;if(c!==null)b=c;return b;},C7p=N(),EF2=(a,b)=>{return Vq(b);},DiR=N(),EZB=(a,b)=>{b=b;ZR();return CL(b.bHl+1|0);}; +function BtC(){let a=this;Ma.call(a);a.b4v=null;a.c$i=null;a.cQE=null;a.cxs=null;a.c3W=null;a.cDW=null;a.cOx=null;a.czP=null;} +let E7X=(a,b,c,d,e,f,g)=>{let h,i;a.czP=Bk();h=Bk();i=Br(b);while(Bq(i)){b=Bm(i);if(!Nw(h,b))U(h,b);}a.b4v=h;a.c$i=c;a.c3W=d;a.cQE=e;a.cxs=f;B8();a.cDW=B0(g,Dib);d=B0(g,C6U);b=B0(g,Dbf);if(d!==null){e=a.cDW;Pb();b=C82(d,b,e,Qv);}a.cOx=b;},C$6=(a,b,c,d,e,f)=>{let g=new BtC();E7X(g,a,b,c,d,e,f);return g;},Ei2=(a,b)=>{return Nw(a.b4v,b);},E4T=a=>{let b,c;b=new S;T(b);c=a.b4v.dX();while(c.dY()){L(b,(c.dZ()).bQo);if(!c.dY())continue;L(b,E(1272));}return Q(b);},EPs=(a,b)=>{let c,d,e,f;c=b.bJ_;HK();if(c!==Lr&&c!== +OL){b=new JK;d=K(Bi,1);e=d.data;f=F9(c.bHx);c=new S;T(c);H(H(H(c,E(4224)),f),E(4793));e[0]=Q(c);J2(b,d);return b;}U(a.czP,b);return null;}; +function CdQ(){let a=this;F.call(a);a.cV2=null;a.cxR=null;a.cxe=0.0;a.cVE=0;} +let DSS=a=>{return a.cV2;},DFX=a=>{return a.cxR;},DXc=a=>{return a.cxe;},EVW=a=>{return a.cVE;},QU=N(0); +function Fc(){let a=this;F.call(a);a.c$1=0;a.cpN=null;a.cj9=null;} +let Jd=(a,b)=>{a.c$1=0;a.cpN=b;},Cr=a=>{let b;b=a.cpN;if(b===null){b=new BP;X(b);J(b);}return b;},DcW=a=>{let b,c;b=JH(a);c=Qg(b,46);if(c!=(-1))return CC(b,c+1|0);return b;},J4=a=>{return a.cpN.ly();},DFr=a=>{return FF();},EAq=a=>{return FF();},BSj=(a,b,c)=>{let d;b=new BV;c=BY(Dg(a));d=new S;T(d);H(d,c);Bp(b,Q(d));J(b);},DAt=a=>{return Gi();},DFt=a=>{let b,c,d;b=new BV;c=BY(Dg(a));d=new S;T(d);H(d,c);Bp(b,Q(d));J(b);},EV2=a=>{let b;b=a.cpN;MY();return b.qV(Bt7,null,0,null);},Dj=(a,b)=>{if(a.cj9===null)a.cj9 +=a.a31(b);return a.cj9;},D5E=(a,b)=>{return Dj(a,b);}; +function CyM(){let a=this;Fc.call(a);a.daV=20.0;a.bTo=null;a.b$y=null;a.cnz=null;a.c1x=null;a.cYO=null;a.c5v=0.0;a.c5G=null;a.cNm=null;a.c7C=0.0;a.cGT=null;} +let EP8=a=>{return a.bTo.a33();},EyN=a=>{return a.bTo.Xm();},Fwy=a=>{return a.bTo.a34();},DOI=a=>{return a.bTo.a35();},Ecl=a=>{return a.bTo.a36();},BbV=(a,b)=>{return BC(25.0,(a.b$y.cF(b)).bGF+20.0);},Cv8=(a,b)=>{let c,d,e;c=De3(a,b);d=a.b$y.cF(b);e=BsZ(a.cnz,b);b=c;return ADF(b.bGE,d.bGE+20.0,e.bGE+20.0)-b.bGE;},De3=(a,b)=>{let c,d,e,f;if(a.cGT===null){c=a.bTo.a32(b);b=BAN(b,0);d=BM7(b);e=new B4Z;Zx(e,d);a.bTo.cC(e);BLb(e);f=(Bej(b)).bNf-c.bGE;if(f>0.0)c=Bor(c,f+5.0,0.0);a.cGT=c;}return a.cGT;},Eev=(a,b)=> +{let c,d,e,f,g,h;c=De3(a,b);d=Cv8(a,b);e=c;f=e.bGE+d;g=e.bGF+BbV(a,b)+20.0+BIS(a,b);h=BbV(a,b)+BIS(a,b);if(Ew(c))return Qt(f,g,c.bGY+d/2.0,c.bHi+h,c.bHH+h);return AZT(f,g,c.bGY+d/2.0,c.bHi+h);},BIS=(a,b)=>{return (BsZ(a.cnz,b)).bGF;},D5V=(a,b)=>{let c,d,e,f,g;c=b.hE();d=Dj(a,c);e=Bnc(AGc(BwX(AAA(a.cYO,a.c1x),a.c5v),a.c5G),a.c7C,0.0);f=a.bTo.Xs();MY();g=f.qV(AEQ,null,0,null);(a.cNm.a4d(a.b$y,g,E6(0.0,0.0),d.bGE,d.bGF,e,(Cr(a)).a4e())).cC(b);f=BsZ(a.cnz,c);b.h2(Bh(d.bGE-f.bGE-10.0,BbV(a,b.hE())-10.0));(b.h2(Bh(Cv8(a, +c)/2.0,BbV(a,c)+BIS(a,c)))).hP(a.bTo);}; +function ByE(){F.call(this);this.cSl=BH;} +let Bxa=()=>{Bxa=Z(ByE);E8M();},E8M=()=>{return;},CjU=N(FA); +function BBZ(){let a=this;F.call(a);a.cmr=null;a.coU=null;a.cZh=0.0;} +let DtO=(a,b)=>{let c,d,e,f,g,h,i,j,k;a.cmr=b;c=Ctj(3).data;c[0]=b.bJX/255.0;c[1]=b.bJz/255.0;c[2]=b.bJT/255.0;d=c[0];e=c[1];f=c[2];g=Ba7(d,Ba7(e,f));h=A99(d,A99(e,f));i=0.0;j=QE(h,g);if(!j)i=0.0;else if(h===d)i=(60.0*(e-f)/(h-g)+360.0)%360.0;else if(h===e)i=60.0*(f-d)/(h-g)+120.0;else if(h===f)i=60.0*(d-e)/(h-g)+240.0;d=h+g;e=d/2.0;f=!j?0.0:e<=0.5?(h-g)/d:(h-g)/(2.0-h-g);k=Ctj(3);c=k.data;c[0]=i;c[1]=f*100.0;c[2]=e*100.0;a.coU=k;a.cZh=b.bSl/255.0;},C$7=a=>{let b=new BBZ();DtO(b,a);return b;},DEv=(a,b,c,d,e)=> +{let f;f=CW5([b,c,d]);a.coU=f;a.cZh=e;a.cmr=C8$(f,e);},DjC=(a,b,c,d)=>{let e=new BBZ();DEv(e,a,b,c,d);return e;},C8$=(b,c)=>{let d,e,f,g,h,i;b=b.data;d=b[0];e=b[1];f=b[2];if(e<0.0)e=0.0;if(e>100.0)e=100.0;if(f<0.0)f=0.0;if(f>100.0)f=100.0;if(c<0.0)c=0.0;if(c>1.0)c=1.0;g=(d%360.0)/360.0;d=e/100.0;e=f/100.0;f=!(e<0.5)?e+d-d*e:e*(1.0+d);a:{e=2.0*e-f;d=A99(0.0,BIJ(e,f,g+0.3333333432674408));h=A99(0.0,BIJ(e,f,g));e=A99(0.0,BIJ(e,f,g-0.3333333432674408));d=Ba7(d,1.0);f=Ba7(h,1.0);g=Ba7(e,1.0);AG1();if(!(isFinite(d) +?1:0))break a;if(!(isFinite(f)?1:0))break a;if(!(isFinite(g)?1:0))break a;if(!(isFinite(c)?1:0))break a;if(d<0.0)break a;if(d>1.0)break a;if(f<0.0)break a;if(f>1.0)break a;if(g<0.0)break a;if(g>1.0)break a;if(c<0.0)break a;if(!(c>1.0))return AUg(BqY(d*255.0)&255,BqY(f*255.0)&255,BqY(g*255.0)&255,BqY(c*255.0)&255);}i=new Bt;X(i);J(i);},BIJ=(b,c,d)=>{if(d<0.0)d=d+1.0;if(d>1.0)d=d-1.0;if(!(6.0*d<1.0)){if(!(2.0*d<1.0)){if(3.0*d<2.0)return b+(c-b)*6.0*(0.6666666865348816-d);return b;}return c;}return b+(c-b)*6.0 +*d;},CGS=N(Dd); +function B_O(){QP.call(this);this.cs0=null;} +let D9m=a=>{return a.cs0.bHv;},Eg_=a=>{let b;b=new Dl2;Bti(b,a.cs0);return b;}; +function BG8(){Do.call(this);this.dd7=null;} +let Cmb=0,BsB=()=>{BsB=Z(BG8);E51();},EC7=(a,b,c,d)=>{let e;e=d;if(Df()){BsB();if(!Cmb&&b!==c){b=new C4;X(b);J(b);}}if((Td(b.bNU)).dV()>0)b=B5(E(4794));else{b.bPI.bKj=e;b=By();}return b;},E51=()=>{Cmb=0;}; +function BVv(){F.call(this);this.cAJ=null;} +let Bqg=null,Ff0=null,Cee=null,AYs=null,B1A=null,Bld=null,Bo2=null,EOy=null,CtN=null,AWa=null,B5O=null,AHi=null,DrI=null,BlM=null,DfO=null,Cit=null,A$w=null,C4z=null,AIU=null,Cfc=null,UI=()=>{UI=Z(BVv);FqS();},E2z=(a,b)=>{UI();a.cAJ=b;},MB=a=>{let b=new BVv();E2z(b,a);return b;},FqS=()=>{Bqg=MB(Ce(E(4795)));Ff0=MB(Ce(E(4796)));Cee=MB(Ce(E(4797)));AYs=MB(Ce(E(4798)));B1A=MB(Ce(E(4799)));Bld=MB(Ce(E(2512)));Bo2=MB(Ce(E(4800)));EOy=MB(Ce(E(4801)));CtN=MB(Ce(E(4802)));AWa=MB(Ce(E(4803)));B5O=MB(Ce(E(4804)));AHi +=MB(Ce(E(4805)));DrI=MB(Ce(E(4806)));BlM=MB(Ce(E(4807)));DfO=MB(Ce(E(4808)));Cit=MB(Ce(E(4809)));A$w=MB(Ce(E(4810)));C4z=MB(Ce(E(4811)));AIU=MB(Ce(E(4812)));Cfc=MB(Ce(E(4813)));}; +function Ct$(){Do.call(this);this.c8c=null;} +let DDg=(a,b,c,d)=>{let e;e=d;if(b.b0V===null)b.b0V=C_q();c=b.bJ8;b=b.b0V;d=e.bSF;C9(c.cJr,b,d);return By();},BQl=N(),EO2=a=>{return;},Fbw=()=>{let a=new BQl();EO2(a);return a;},DwQ=a=>{let b,c,d,e,f;b=K(C7,4);c=b.data;c[0]=Ce(E(1741));c[1]=EW();c[2]=DZ(E(4814),Ce(E(4815)));d=new LO;e=K(C7,2);f=e.data;f[0]=Ce(E(21));f[1]=DZ(E(4816),Ce(E(4815)));L6(d,DP(e));c[3]=d;return DP(b);},D0U=(a,b,c)=>{let d,e;b=b;d=c;c=Ek(d,E(4814));e=Ek(d,E(4816));return FV(AZ2(c===null?null:Eu(OY(b),c),e===null?null:Eu(OY(b),e)));}; +function Ct9(){Do.call(this);this.dae=null;} +let D13=(a,b,c,d)=>{b.b0V=EA(d);return By();}; +function B1$(){Do.call(this);this.c$x=null;} +let CaK=(a,b,c,d,e)=>{a.c$x=b;JY(a,c,d,e);},Fz2=(a,b,c,d)=>{let e=new B1$();CaK(e,a,b,c,d);return e;},FrQ=(a,b,c,d)=>{c.TM(d);return By();},Dbk=N(),ET8=a=>{return;},E6h=()=>{let a=new Dbk();ET8(a);return a;},Du_=a=>{let b,c,d,e,f;b=K(C7,2);c=b.data;c[0]=Cy9(E(35));d=new BiU;e=K(C7,2);f=e.data;f[0]=Ce(E(4817));f[1]=Cy9(E(360));B19(d,DP(e));c[1]=d;return DP(b);},Cy9=b=>{let c,d,e,f;c=K(C7,4);d=c.data;e=new W6;f=new S;T(f);H(H(f,E(4818)),b);Za(e,Q(f),Ce(E(3800)));d[0]=e;d[1]=EW();e=new W6;f=new S;T(f);H(H(f,E(4819)), +b);Za(e,Q(f),Ce(E(4820)));d[2]=e;d[3]=Ce(E(4821));return DP(c);},CFG=(b,c,d,e)=>{let f;a:{b:{c:{d:{e:{f=CZ(d);switch(Bn(e,0)){case 68:case 100:break;case 72:case 104:break e;case 77:case 109:if(e.bGI.length>=2&&!(Bn(e,1)!=105&&Bn(e,1)!=73)){c=c.data;c[2]=c[2]+f|0;break a;}c=c.data;c[0]=c[0]+(f*30|0)|0;break a;case 83:case 115:break d;case 87:case 119:break c;default:break b;}c=c.data;c[0]=c[0]+f|0;break a;}c=c.data;c[1]=c[1]+f|0;break a;}c=c.data;c[3]=c[3]+f|0;break a;}c=c.data;c[0]=c[0]+Ev(f,B8G(b))|0;break a;}b +=new Bt;d=new S;T(d);H(H(d,E(4822)),e);Bp(b,Q(d));J(b);}},DPe=(a,b,c)=>{let d,e,f,g,h,i,j,k;b=b;d=Ca(4);e=c;CFG(b,d,Ek(e,E(4823)),Ek(e,E(4824)));f=c;c=Zl(f,E(4825));g=Zl(f,E(4826));h=0;e=c;while(h{a.deA=b;JY(a,c,d,e);},D_T=(a,b,c,d)=>{let e=new Dac();Fq6(e,a,b,c,d);return e;},E5O=(a,b,c,d)=>{if(!AFy(AKN(b),AKE())){c.TI(d);return By();}return B5(E(4827));},Cqg=N(),C0k=()=>{return new Cqg;},EJh=a=>{let b,c,d,e,f,g,h;b=ZX(E(14));c=K(C7,2);d=c.data;d[0]=ATr(b);e=Ce(E(4115));f=new LO;g=K(C7,2);h=g.data;h[0]=Ce(E(82));h[1]=DZ(E(4828),e);L6(f,DP(g));h=K(C7,5);g=h.data;g[0]=Ce(E(4829));g[1]=DZ(E(3376),e);g[2]=Ce(E(82));g[3]=DZ(E(4830),e);g[4]=f;d[1]=DP(h);return DP(c);},EIL=(a,b,c)=>{let d, +e,f,g;b=A1n(ZX(E(14)),c);if(b!==null){d=c;e=CZ(Ek(d,E(3376)));f=CZ(Ek(d,E(4830)));g=Ek(d,E(4828))===null?0:CZ(Ek(d,E(4828)));No();GC();Jp(AK0,V(e));if(!(f|g))c=A9S.data[e];else{Jp(AK9,V(f));Jp(ATx,V(g));c=A5a(e,f,g,0);}return FV(B4$(Bbd(b,c)));}b=new BP;X(b);J(b);}; +function Dad(){Do.call(this);this.c$D=null;} +let Fux=(a,b,c,d)=>{a.c$D=b;Ke(a,c,d);},DHz=(a,b,c)=>{let d=new Dad();Fux(d,a,b,c);return d;},EOf=(a,b,c,d)=>{let e,f,g,h,i,j,k,l;e=c;f=d.data;g=f[0];h=f[1];e.TI(Z8(g));if(Bj8(g)){i=h.bSF;j=new AIr;k=OY(b);l=Vt(b);c=new ADe;Lf();ALU(c,e,O1);Bc1(j,k,l,g,c,i);d=h.cDH;U5(j,d);AVC(b,j);}return By();}; +function Cwf(){let a=this;F.call(a);a.cCj=null;a.dbc=null;} +let E6i=(a,b,c)=>{a.cCj=b;a.dbc=c;},EIK=(a,b)=>{let c=new Cwf();E6i(c,a,b);return c;},ERe=(a,b,c)=>{let d,e,f;d=DrW(a.cCj,b,c);b=b;e=c;c=Ek(e,E(608));f=Ek(e,E(2352));b=c===null?null:Eu(OY(b),c);b=FV(Cz$(b,b,f));if(!AAs(d)){if(!AAs(b))return FV(BB(F,[Mr(d),Mr(b)]));return b;}return d;},Dyz=a=>{let b,c,d,e,f,g,h,i,j;b=K(C7,3);c=b.data;c[0]=Dn6(a.cCj);c[1]=EW();d=new LO;e=K(C7,2);f=e.data;g=new W6;h=new Oy;i=K(C7,3);j=i.data;j[0]=Ce(E(2323));j[1]=Ce(E(350));j[2]=Ce(E(2322));QL(h,i);Za(g,E(2352),h);f[0]=g;f[1]= +EW();L6(d,DP(e));f=K(C7,7);e=f.data;e[0]=Ce(E(3306));e[1]=EW();e[2]=d;e[3]=DZ(E(608),Ce(E(4815)));e[4]=EW();e[5]=d;e[6]=Ce(E(1190));c[2]=DP(f);return DP(b);},A0s=N(),Cmn=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p;d=c;e=Ek(d,E(4831));f=Ek(d,E(4832));g=AF9(b,e);if(g===null){c=null;h=null;i=((AIH(b.bJ8)).dW()).dX();while(i.dY()){j=i.dZ();if(!BG(j.d1(),e))continue;k=j.d0();if(c===null)c=k;else if(Ko(c,k)>0)c=k;j=j.d0();if(h===null)h=j;else if(Ko(h,j)<0)h=j;}if(c!==null){g=new COn;h=Qu(h);g.cRt=c;g.cXs=h;}}if(g!==null) +{h=new ADe;Lf();ALU(h,g,Ss(Bo(AWw),Vq(f)));i=Ek(d,E(4833));if(i===null)b=h;else{l=!BO(Ek(d,E(4834)),E(992))?1:B8G(b);m=Ev(CZ(i),l);j=Ek(d,E(4835));n=0;if(j!==null){o=!BO(Ek(d,E(4836)),E(992))?1:B8G(b);n=Ev(CZ(j),o);}p=m+n|0;if(BG(E(3786),Ek(d,E(4837))))p= -p|0;if(!(!(Ek(d,E(4838))===null&&Ek(d,E(4839))===null)?1:0)){AIO();d=A0I;}else{AIO();d=BwN;}f=BqM(b.bJ8.bNx);b=EmD(h.bOq,h.bOw,p,d,f);}return FV(b);}b=new S;T(b);H(H(b,E(3200)),e);return ALG(Q(b));},BI9=N(A0s),DEA=a=>{return;},BiH=()=>{let a=new BI9();DEA(a);return a;},Dn6 +=a=>{let b,c,d,e,f,g,h,i,j,k,l;b=K(C7,8);c=b.data;c[0]=DZ(E(4833),Ce(E(3800)));c[1]=EW();d=new LO;e=K(C7,2);f=e.data;f[0]=DZ(E(4838),Ce(E(4840)));f[1]=EW();L6(d,DP(e));c[2]=d;c[3]=DZ(E(4834),Ce(E(4841)));c[4]=Ce(E(4821));d=new LO;g=K(C7,8);h=g.data;h[0]=EW();h[1]=Ce(E(3238));h[2]=EW();h[3]=DZ(E(4835),Ce(E(3800)));h[4]=EW();i=new LO;e=K(C7,2);f=e.data;f[0]=DZ(E(4839),Ce(E(4840)));f[1]=EW();L6(i,DP(e));h[5]=i;h[6]=DZ(E(4836),Ce(E(4841)));h[7]=Ce(E(4821));L6(d,DP(g));c[5]=d;c[6]=EW();c[7]=DZ(E(4837),BdX(BB(Bi, +[E(3786),E(3787)])));j=DP(b);b=K(C7,5);f=b.data;k=new LO;l=new Oy;c=K(C7,4);e=c.data;e[0]=Ce(E(3474));e[1]=Ce(E(3306));e[2]=Ce(E(3787));e[3]=j;QL(l,c);L6(k,l);f[0]=k;f[1]=QT();c=K(C7,2);e=c.data;e[0]=AC4(E(4831));e[1]=Ce(E(4842));f[2]=DP(c);f[3]=EW();f[4]=DZ(E(4832),BdX(BB(Bi,[E(230),E(581)])));return DP(b);},DrW=(a,b,c)=>{return Cmn(a,b,c);},C4V=N(),DTs=a=>{return;},Fmj=()=>{let a=new C4V();DTs(a);return a;}; +function Daa(){Do.call(this);this.db5=null;} +let EQ2=(a,b,c,d)=>{a.db5=b;Ke(a,c,d);},Eh6=(a,b,c)=>{let d=new Daa();EQ2(d,a,b,c);return d;},ExY=(a,b,c,d)=>{let e,f,g,h,i,j;e=c;f=null;g=d;e.TI(Z8(g));if(Bj8(g)){h=new AIr;i=OY(b);j=Vt(b);c=new ADe;Lf();ALU(c,e,O1);Bc1(h,i,j,g,c,f);AVC(b,h);}return By();}; +function Dab(){Do.call(this);this.dbX=null;} +let FiQ=(a,b,c,d,e)=>{a.dbX=b;JY(a,c,d,e);},Efr=(a,b,c,d)=>{let e=new Dab();FiQ(e,a,b,c,d);return e;},EVE=(a,b,c,d)=>{c.TI(EA(d));return By();}; +function Dag(){Do.call(this);this.c8V=null;} +let ErB=(a,b,c,d,e)=>{a.c8V=b;JY(a,c,d,e);},E3K=(a,b,c,d)=>{let e=new Dag();ErB(e,a,b,c,d);return e;},D8a=(a,b,c,d)=>{if(!AFy(AKN(b),AKE())){c.TI(EA(d));return By();}return B5(E(4827));}; +function Dah(){Do.call(this);this.dep=null;} +let DYd=(a,b,c,d)=>{a.dep=b;Ke(a,c,d);},FiO=(a,b,c)=>{let d=new Dah();DYd(d,a,b,c);return d;},DGB=(a,b,c,d)=>{let e,f,g;e=c;f=d;g=K(AFn,1);g.data[0]=f;e.KC(g);return By();}; +function Dae(){Do.call(this);this.c_9=null;} +let EXs=(a,b,c,d,e)=>{a.c_9=b;JY(a,c,d,e);},ETi=(a,b,c,d)=>{let e=new Dae();EXs(e,a,b,c,d);return e;},Edp=(a,b,c,d)=>{c.KC(d);return By();},CnR=N(),D54=a=>{return;},E1j=()=>{let a=new CnR();D54(a);return a;},D9j=a=>{let b,c,d,e,f,g;b=K(C7,9);c=b.data;c[0]=Ce(E(3319));c[1]=EW();c[2]=DZ(E(4843),Ce(E(4815)));d=new LO;e=K(C7,2);f=e.data;f[0]=Ce(E(21));f[1]=DZ(E(4844),Ce(E(4815)));L6(d,DP(e));c[3]=d;c[4]=EW();c[5]=Ce(E(3262));c[6]=EW();c[7]=DZ(E(4845),Ce(E(4815)));g=new LO;e=K(C7,2);f=e.data;f[0]=Ce(E(21));f[1]= +DZ(E(4846),Ce(E(4815)));L6(g,DP(e));c[8]=g;return DP(b);},Fo6=(a,b,c)=>{let d,e,f,g,h,i;b=b;d=c;c=Ek(d,E(4843));e=Ek(d,E(4844));f=Ek(d,E(4845));g=Ek(d,E(4846));c=c===null?null:Eu(OY(b),c);e=e===null?null:Eu(OY(b),e);f=f===null?null:Eu(OY(b),f);b=g===null?null:Eu(OY(b),g);h=K(AFn,2);i=h.data;i[0]=AZ2(c,e);i[1]=AZ2(f,b);return FV(h);}; +function Daf(){Do.call(this);this.dba=null;} +let DYJ=(a,b,c,d,e)=>{a.dba=b;JY(a,c,d,e);},Eyx=(a,b,c,d)=>{let e=new Daf();DYJ(e,a,b,c,d);return e;},ErO=(a,b,c,d)=>{let e;e=c;e.TM(A2d(Bla(V(1))));e.TI(EA(d));e.a4u(1);return By();}; +function C3P(){Do.call(this);this.c74=null;} +let Esn=(a,b,c,d,e)=>{a.c74=b;JY(a,c,d,e);},EKu=(a,b,c,d)=>{let e=new C3P();Esn(e,a,b,c,d);return e;},Fij=(a,b,c,d)=>{let e,f;e=c;e.TM(A2d(Bla(V(1))));e.a4u(1);f=d;c=f.bOw;Lf();if(c!==Oq)e.TI(Z8(f));else e.TI(AYB(Z8(f)));return By();}; +function C3Q(){Do.call(this);this.dcX=null;} +let ESw=(a,b,c,d)=>{a.dcX=b;Ke(a,c,d);},D5Z=(a,b,c)=>{let d=new C3Q();ESw(d,a,b,c);return d;},Fu0=(a,b,c,d)=>{let e,f,g,h,i,j;e=c;f=d;g=f.cMY;h=f.cMX;i=AF9(b,g);if(i!==null){j=AF9(b,h);if(j!==null){e.TI(i.Qk());e.a4w(j.Ql());f=new AIr;g=OY(b);h=Vt(b);c=new ADe;Lf();ALU(c,i,O1);BWx(f,g,h,c,Bq9(e,O1));AVC(b,f);AVC(b,Cs3(OY(b),Vt(b),Bq9(j,Oq),Bq9(e,Oq)));return By();}b=new S;T(b);H(H(H(b,E(4847)),h),E(4848));return B5(Q(b));}b=new S;T(b);H(H(H(b,E(4847)),g),E(4848));return B5(Q(b));},CEZ=N(),ECW=a=>{return;},FkB +=()=>{let a=new CEZ();ECW(a);return a;},Fa2=a=>{let b,c;b=K(C7,7);c=b.data;c[0]=Ce(E(3319));c[1]=EW();c[2]=AC4(E(4814));c[3]=EW();c[4]=Ce(E(3262));c[5]=EW();c[6]=AC4(E(4816));return DP(b);},EZT=(a,b,c)=>{let d;d=c;b=Ek(d,E(4814));c=Ek(d,E(4816));d=new Cf_;d.cMY=b;d.cMX=c;return FV(d);}; +function C3R(){Do.call(this);this.c_T=null;} +let EW8=(a,b,c,d,e)=>{a.c_T=b;JY(a,c,d,e);},D_7=(a,b,c,d)=>{let e=new C3R();EW8(e,a,b,c,d);return e;},FpD=(a,b,c,d)=>{if(!AFy(AKN(b),AKE())){c.a4w(d);return By();}return B5(E(4827));}; +function C3Z(){Do.call(this);this.ddl=null;} +let DPD=(a,b,c,d)=>{a.ddl=b;Ke(a,c,d);},DtL=(a,b,c)=>{let d=new C3Z();DPD(d,a,b,c);return d;},Fbn=(a,b,c,d)=>{let e,f,g,h,i;e=c;f=d;e.a4w(Z8(f));g=new AIr;h=OY(b);i=Vt(b);c=new ADe;Lf();ALU(c,e,Oq);BWx(g,h,i,f,c);AVC(b,g);return By();}; +function C30(){Do.call(this);this.c9v=null;} +let EyJ=(a,b,c,d,e)=>{a.c9v=b;JY(a,c,d,e);},EhF=(a,b,c,d)=>{let e=new C30();EyJ(e,a,b,c,d);return e;},Dwz=(a,b,c,d)=>{c.a4w(Qu(EA(d)));return By();}; +function C31(){Do.call(this);this.c85=null;} +let EjP=(a,b,c,d,e)=>{a.c85=b;JY(a,c,d,e);},Dua=(a,b,c,d)=>{let e=new C31();EjP(e,a,b,c,d);return e;},DMw=(a,b,c,d)=>{let e,f;e=c;f=d;if(!AFy(AKN(b),AKE())){e.a4w(Qu(EA(f)));return By();}return B5(E(4827));}; +function C33(){Do.call(this);this.dbQ=null;} +let ESW=(a,b,c,d)=>{a.dbQ=b;Ke(a,c,d);},DSp=(a,b,c)=>{let d=new C33();ESW(d,a,b,c);return d;},EXJ=(a,b,c,d)=>{let e,f;e=c;f=AF9(b,d);if(f===null){b=BY(f);c=new S;T(c);H(H(c,E(3200)),b);return B5(Q(c));}E8I(e,f);return By();},BOY=N(),E3B=a=>{return;},DNo=()=>{let a=new BOY();E3B(a);return a;},EcV=a=>{let b,c;b=K(C7,3);c=b.data;c[0]=Ce(E(842));c[1]=DZ(E(4849),Ce(E(3776)));c[2]=Ce(E(843));return DP(b);},FjU=(a,b,c)=>{return FV(Ek(c,E(4849)));}; +function C34(){Do.call(this);this.c_t=null;} +let D24=(a,b,c,d)=>{a.c_t=b;Ke(a,c,d);},Ehj=(a,b,c)=>{let d=new C34();D24(d,a,b,c);return d;},EEJ=(a,b,c,d)=>{let e,f,g;e=c;f=K(AFn,1);g=f.data;b=new AFn;Go();Cn7(b,K8,Hu);g[0]=b;e.KC(f);return By();},Cvx=N(),DMt=a=>{return;},Fio=()=>{let a=new Cvx();DMt(a);return a;},EHm=a=>{return Ce(E(4850));},Frv=(a,b,c)=>{return FV(new F);}; +function C35(){Do.call(this);this.deU=null;} +let Efa=(a,b,c,d)=>{a.deU=b;Ke(a,c,d);},DvD=(a,b,c)=>{let d=new C35();Efa(d,a,b,c);return d;},EDs=(a,b,c,d)=>{c.a4y(d.cYp);return By();},CQQ=N(),DVp=a=>{return;},EFf=()=>{let a=new CQQ();DVp(a);return a;},EY9=a=>{let b,c;b=K(C7,2);c=b.data;c[0]=DZ(E(4849),Ce(E(3800)));c[1]=Ce(E(4851));return DP(b);},EVP=(a,b,c)=>{b=Ek(c,E(4849));c=new CfL;c.cYp=CZ(b);return FV(c);}; +function C36(){Do.call(this);this.c8u=null;} +let Dw4=(a,b,c,d,e)=>{a.c8u=b;JY(a,c,d,e);},EPk=(a,b,c,d)=>{let e=new C36();Dw4(e,a,b,c,d);return e;},D3P=(a,b,c,d)=>{let e;e=c;c=AF8(d);while(AG4(c)){e.a4z(AH0(c));}return By();},BhU=N(),EwS=a=>{return;},Eaj=()=>{let a=new BhU();EwS(a);return a;},DSd=a=>{let b,c,d,e,f,g,h,i,j;b=new Oy;c=K(C7,2);d=c.data;e=ZX(E(360));f=ZX(E(2915));g=K(C7,5);h=g.data;h[0]=ATr(e);i=K(Bi,1);i.data[0]=E(3262);h[1]=AHX(i);i=K(Bi,1);i.data[0]=E(3774);h[2]=Lm(i);h[3]=EW();h[4]=ATr(f);d[0]=DP(g);h=K(C7,7);i=h.data;i[0]=Ce(E(3798));i[1] +=DZ(E(3799),Ce(E(3800)));j=K(Bi,1);j.data[0]=E(3262);i[2]=AHX(j);j=K(Bi,1);j.data[0]=E(3774);i[3]=Lm(j);i[4]=EW();i[5]=Ce(E(3798));i[6]=DZ(E(3801),Ce(E(3800)));d[1]=DP(h);QL(b,c);return b;},En8=(a,b,c)=>{let d,e,f;b=b;d=A1n(ZX(E(360)),c);if(d!==null)b=FV(Bgp(d,A1n(ZX(E(2915)),c)));else{e=c;if(Ek(e,E(3799))!==null){f=CZ(Ek(e,E(3799)));c=XB(BZZ(b),f);f=CZ(Ek(e,E(3801)));b=XB(BZZ(b),f);b=FV(Bgp(Jj(c),Jj(b)));}else{b=new BP;X(b);J(b);}}return b;}; +function C3V(){Do.call(this);this.c$4=null;} +let D7T=(a,b,c,d,e)=>{a.c$4=b;JY(a,c,d,e);},EUV=(a,b,c,d)=>{let e=new C3V();D7T(e,a,b,c,d);return e;},DW_=(a,b,c,d)=>{let e;e=c;c=AF8(d);while(AG4(c)){e.a4z(AH0(c));}return By();},CGq=N(A0s),EYF=a=>{return;},D4h=()=>{let a=new CGq();EYF(a);return a;},Ev9=a=>{let b,c,d,e,f,g,h,i,j,k;b=ZX(E(360));c=K(C7,8);d=c.data;d[0]=DZ(E(4833),Ce(E(3800)));d[1]=EW();e=new LO;f=K(C7,2);g=f.data;g[0]=DZ(E(4838),Ce(E(4840)));g[1]=EW();L6(e,DP(f));d[2]=e;d[3]=DZ(E(4834),Ce(E(4841)));d[4]=Ce(E(4821));h=new LO;i=K(C7,8);j=i.data;j[0] +=EW();j[1]=Ce(E(3238));j[2]=EW();j[3]=DZ(E(4835),Ce(E(3800)));j[4]=EW();e=new LO;f=K(C7,2);g=f.data;g[0]=DZ(E(4839),Ce(E(4840)));g[1]=EW();L6(e,DP(f));j[5]=e;j[6]=DZ(E(4836),Ce(E(4841)));j[7]=Ce(E(4821));L6(h,DP(i));d[5]=h;d[6]=EW();d[7]=DZ(E(4837),BdX(BB(Bi,[E(3786),E(3787)])));k=DP(c);c=K(C7,8);d=c.data;d[0]=ATr(b);f=K(Bi,1);f.data[0]=E(3262);d[1]=AHX(f);d[2]=QT();d[3]=AWQ(k);d[4]=QT();f=K(C7,2);g=f.data;g[0]=AC4(E(4831));g[1]=Ce(E(4842));d[5]=DP(f);d[6]=EW();d[7]=DZ(E(4832),BdX(BB(Bi,[E(230),E(581)])));return DP(c);},Ff1 +=(a,b,c)=>{let d,e;b=b;d=A1n(ZX(E(360)),c);b=Cmn(a,b,c);if(AAs(b))b=ALG(AL$(b));else{b=Mr(b);c=Z8(b);e=b.bOw;Lf();if(e===Oq)c=AYB(c);b=FV(Bgp(d,Jj(c)));}return b;}; +function C3W(){Do.call(this);this.dd0=null;} +let E$e=(a,b,c,d,e)=>{a.dd0=b;JY(a,c,d,e);},ER4=(a,b,c,d)=>{let e=new C3W();E$e(e,a,b,c,d);return e;},DKs=(a,b,c,d)=>{c.a4z(d);return By();}; +function C3X(){Do.call(this);this.c_o=null;} +let ERM=(a,b,c,d,e)=>{a.c_o=b;JY(a,c,d,e);},D5G=(a,b,c,d)=>{let e=new C3X();ERM(e,a,b,c,d);return e;},Fep=(a,b,c,d)=>{c.a4A(d);return By();},BB$=N(),EBd=a=>{return;},Eav=()=>{let a=new BB$();EBd(a);return a;},DTP=a=>{return DZ(E(4849),CS8());},EOM=(a,b,c)=>{return FV(B40(Ek(c,E(4849))));}; +function C3Y(){Do.call(this);this.ddM=null;} +let EJq=(a,b,c,d)=>{a.ddM=b;Ke(a,c,d);},Ea_=(a,b,c)=>{let d=new C3Y();EJq(d,a,b,c);return d;},ECp=(a,b,c,d)=>{c.Gb(d);return By();},Cwq=N(),EQA=a=>{return;},EnR=()=>{let a=new Cwq();EQA(a);return a;},Ff2=a=>{return DZ(E(4849),Ce(E(4852)));},Eoa=(a,b,c)=>{let d,e;d=Ek(c,E(4849));e=new B4S;FC();c=FI;BWW();e.cYm=E(14);e.cHb=c;b=AW5(e,C6t,d);if(AWX(e,b))b=APe(e,b);else{b=AW5(e,CvX,d);if(AWX(e,b))b=APe(e,b);else{b=AW5(e,C84,d);if(AWX(e,b))b=APe(e,b);else{b=AW5(e,DpN,d);if(AWX(e,b))b=APe(e,b);else{b=AW5(e,C4J,d);if +(AWX(e,b))b=APe(e,b);else{b=AW5(e,Dst,d);b=!AWX(e,b)?null:APe(e,b);}}}}}return FV(b);}; +function C39(){Do.call(this);this.c9K=null;} +let Ej_=(a,b,c,d)=>{a.c9K=b;Ke(a,c,d);},D40=(a,b,c)=>{let d=new C39();Ej_(d,a,b,c);return d;},FrP=(a,b,c,d)=>{let e,f;e=c;f=d;e.ces=f;return By();},CNS=N(),DQy=a=>{return;},DJ_=()=>{let a=new CNS();DQy(a);return a;},D$U=a=>{return DZ(E(4853),Ce(E(703)));},D4G=(a,b,c)=>{return FV(Ek(c,E(4853)));}; +function CbI(){Do.call(this);this.deV=null;} +let EqG=(a,b,c,d)=>{let e;e=c;d.Oe(e,100);return By();},CsZ=N(),FaU=a=>{return DZ(E(4849),AC4(E(2570)));},Eym=(a,b,c)=>{b=b;c=Ek(c,E(4849));b=AF9(b,c);if(b!==null)b=FV(b);else{b=new S;T(b);H(H(b,E(3200)),c);b=ALG(Q(b));}return b;}; +function CbH(){Do.call(this);this.c_i=null;} +let Ezl=(a,b,c,d)=>{let e,f;e=c;f=d;b=e.bZy;b.ceI=f;b.bR8=null;return By();}; +function CbK(){Do.call(this);this.dbS=null;} +let D7Q=(a,b,c,d)=>{let e,f;e=c;f=d;b=e.bZy;b.bXo=f;b.bR8=null;return By();}; +function CbJ(){Do.call(this);this.c9_=null;} +let DNV=(a,b,c,d)=>{let e;e=c;c=AF8(d);while(AG4(c)){C7V(e,AH0(c));}return By();}; +function Cby(){Do.call(this);this.c9j=null;} +let DXH=(a,b,c,d)=>{let e;e=c;b=d;CPA(e.bZy,b);return By();}; +function Cbx(){Do.call(this);this.ddw=null;} +let DQG=(a,b,c,d)=>{C7V(c,d);return By();}; +function CbA(){Do.call(this);this.daf=null;} +let Fgk=(a,b,c,d)=>{let e;e=c;c=AF8(d);while(AG4(c)){CkO(e,AH0(c));}return By();}; +function Cbz(){Do.call(this);this.dc3=null;} +let ECM=(a,b,c,d)=>{CkO(c,d);return By();}; +function CNb(){Do.call(this);this.ddI=null;} +let Fw0=(a,b,c,d)=>{let e;e=AF8(c);while(AG4(e)){Dji(b,AH0(e),d);}return By();},BmF=N(),Etf=a=>{let b,c,d,e,f,g;b=new W6;c=K(C7,2);d=c.data;d[0]=Ce(E(4854));e=new LO;f=K(C7,2);g=f.data;g[0]=Ce(E(4855));g[1]=AC4(E(2570));L6(e,DP(f));d[1]=e;Za(b,E(4856),DP(c));return b;},Du0=(a,b,c)=>{let d;b=Ek(c,E(4856));d=Eq(b,91);return d<=0?FV(E(14)):FV(B_(b,d+1|0,Qg(b,93)));}; +function CNc(){Do.call(this);this.c_x=null;} +let Ez8=(a,b,c,d)=>{let e;e=AF8(c);while(AG4(e)){CSe(b,AH0(e),d);}return By();},BjZ=N(),Dt7=a=>{let b,c,d,e,f,g;b=new W6;c=K(C7,2);d=c.data;d[0]=Ce(E(4857));e=new LO;f=K(C7,2);g=f.data;g[0]=Ce(E(4855));g[1]=AC4(E(2570));L6(e,DP(f));d[1]=e;Za(b,E(4858),DP(c));return b;},DKz=(a,b,c)=>{let d;b=Ek(c,E(4858));d=Eq(b,91);return d<=0?FV(E(14)):FV(B_(b,d+1|0,Qg(b,93)));}; +function CNd(){Do.call(this);this.dev=null;} +let Fd0=(a,b,c,d)=>{let e;e=d.bSF;d=AF8(c);while(AG4(d)){Dnt(b,AH0(d),e);}return By();},Bpp=N(),EOG=a=>{let b,c,d,e,f;b=K(C7,5);c=b.data;c[0]=Ce(E(4859));c[1]=EW();c[2]=AWQ(Ce(E(4860)));c[3]=DZ(E(4814),Ce(E(4861)));d=new LO;e=K(C7,2);f=e.data;f[0]=Ce(E(21));f[1]=DZ(E(4816),Ce(E(4861)));L6(d,DP(e));c[4]=d;return DP(b);},EqL=(a,b,c)=>{let d,e;b=b;d=c;c=Ek(d,E(4814));e=Ek(d,E(4816));return FV(AZ2(c===null?null:Eu(OY(b),c),e===null?null:Eu(OY(b),e)));}; +function CNe(){Do.call(this);this.c8M=null;} +let Fak=(a,b,c,d)=>{let e,f,g;e=d;d=AF8(c);while(AG4(d)){f=AH0(d);c=b.bJ8;g=EA(f);C9(c.coT,g,e);}return By();}; +function Cid(){Do.call(this);this.c_n=null;} +let EE4=(a,b,c,d)=>{let e;e=c;c=d;if(c.bGI.length)DpJ(Bss(b.bJ8,c),e);else DpJ(b.bJ8.bNx,e);return By();}; +function Cif(){Do.call(this);this.dbj=null;} +let Fd8=(a,b,c,d)=>{let e;e=c;CPA(b.bJ8.bNx,e);return By();}; +function Cie(){Do.call(this);this.c98=null;} +let DKF=(a,b,c,d)=>{let e,f;e=d.bSF;f=c;C9(b.bJ8.cz7,f,e);return By();}; +function Cfj(){Do.call(this);this.dal=null;} +let Enb=(a,b,c,d)=>{CSe(b,c,d);return By();}; +function Cfk(){Do.call(this);this.dd1=null;} +let D3y=(a,b,c,d)=>{Dji(b,c,d);return By();}; +function Cfi(){Do.call(this);this.dbV=null;} +let Ebw=(a,b,c,d)=>{let e;e=d.bSF;Dnt(b,c,e);return By();}; +function BYH(){Do.call(this);this.dan=null;} +let Di5=0,Bte=()=>{Bte=Z(BYH);EHu();},D9U=(a,b,c,d)=>{let e;e=d;if(Df()){Bte();if(!Di5&&b!==c){b=new C4;X(b);J(b);}}B5M(b,e);return By();},EHu=()=>{Di5=0;}; +function BYI(){Do.call(this);this.dcO=null;} +let Dbv=0,Btg=()=>{Btg=Z(BYI);Eub();},EWP=(a,b,c,d)=>{let e;e=d;if(Df()){Btg();if(!Dbv&&b!==c){b=new C4;X(b);J(b);}}B5M(b,Ep(e,V(1)));return By();},Eub=()=>{Dbv=0;}; +function BYJ(){Do.call(this);this.c8T=null;} +let DcC=0,Btf=()=>{Btf=Z(BYJ);Ej7();},ENU=(a,b,c,d)=>{let e;e=d;if(Df()){Btf();if(!DcC&&b!==c){b=new C4;X(b);J(b);}}B5M(b,Jj(Z8(e)));return By();},Ej7=()=>{DcC=0;}; +function Drr(){Do.call(this);this.det=null;} +let DAI=(a,b,c,d)=>{let e;e=c;b=b.bJ8;U(b.cak.b9r,e);U(b.bNx.ccV,e);return By();},CEg=N(),FuV=a=>{let b,c;b=K(C7,3);c=b.data;c[0]=Ce(E(4840));c[1]=EW();c[2]=Ce(E(4862));return DP(b);},Dzw=(a,b,c)=>{return FV(E(14));}; +function CmW(){let a=this;F.call(a);a.b_s=null;a.b04=0;a.b4s=0;a.cXX=null;} +let Bib=a=>{let b;b=a.b04+1|0;a.b04=b;if(b>=a.b_s.bGI.length)a.b4s=0;else a.b4s=Bn(a.b_s,a.b04);},ALX=(a,b)=>{let c;while(true){c=a.b4s;if(c!=32)break;Bib(a);}if(c==b){Bib(a);return 1;}return 0;},Cr0=a=>{let b;b=C9O(a);while(ALX(a,124)){ALX(a,124);b=b|C9O(a);}return b;},C9O=a=>{let b;b=BKV(a);while(ALX(a,38)){ALX(a,38);b=b&BKV(a);}return b;},BKV=a=>{let b,c,d,e;if(!ALX(a,33)){b=a.b04;if(ALX(a,40)){c=Cr0(a);ALX(a,41);}else if(CYM(a)){while(CYM(a)){Bib(a);}d=B_(a.b_s,b,a.b04);e=a.cXX;c=!(e.cRM.uf(d)===null&&!BXx(e.cPB, +d))?1:0;}else{d=new Bt;b=a.b4s;e=new S;T(e);Bb(H(e,E(1733)),b);Bp(d,Q(e));J(d);}return c;}return BKV(a)?0:1;},CYM=a=>{let b;b=a.b4s;return !(b!=95&&b!=36&&!AOq(b))?1:0;}; +function Cju(){let a=this;F.call(a);a.cRM=null;a.cPB=null;a.c$7=null;} +function CAp(){T5.call(this);this.b8P=null;} +let ENO=(a,b)=>{let c;A7e(a);if(b===null){c=new F2;Bp(c,E(1692));J(c);}a.b8P=b;},CoS=a=>{let b=new CAp();ENO(b,a);return b;},DP3=a=>{return a.b8P;},ECi=(a,b)=>{let c;c=a.b8P;CC6(b.bMO,c);},E4I=a=>{return 1;},EYz=a=>{return FP(a.b8P);},E$U=(a,b)=>{let c;if(a!==b){if(b!==null){if(Dg(a)===Dg(b)){c=b;return Bj(a.b8P,c.b8P);}return 0;}return 0;}return 1;}; +function DqV(){let a=this;F.call(a);a.cSw=null;a.cqp=0;} +function CCe(){let a=this;SF.call(a);a.cMq=null;a.cOW=0;} +let EBN=(a,b)=>{let c,d,$$je;a:{b:{if(!a.cOW){while(true){try{c=AZ5(a.cMq);if(c===null)break;if(!BL7(b,c))break b;continue;}catch($$e){$$je=P($$e);if($$je instanceof Dd){d=$$je;break a;}else{throw $$e;}}}a.cOW=1;}return 0;}try{}catch($$e){$$je=P($$e);if($$je instanceof Dd){d=$$je;break a;}else{throw $$e;}}return 1;}b=new BCV;YV(b,d);J(b);}; +function Bog(){A2K.call(this);this.bWk=null;} +let Dwj=(a,b)=>{return a.bWk;},ELY=(a,b)=>{let c,d,e;if(a!==b){if(!(b instanceof Bog)){if(b instanceof Beg){a:{b:{c=b;if(CAP(c)){d=a.bWk;ADJ();if(Yv(d,BED(c,AY2)))break b;}e=0;break a;}e=1;}return e;}return 0;}return Yv(a.bWk,b.bWk);}return 1;},EzC=a=>{return 31+a.bWk.bI6|0;},Ekt=a=>{let b,c;b=BY(a.bWk);c=new S;T(c);H(H(c,E(4863)),b);return Q(c);}; +function CFh(){let a=this;F.call(a);a.cvY=0.0;a.cs3=0.0;a.cl_=0.0;a.cYx=0.0;a.cLE=0.0;a.cAS=0.0;} +let Cro=a=>{return a.cvY;},EjD=a=>{return a.cs3;},FmB=a=>{return a.cl_;},Fo5=a=>{return a.cLE;},DIi=a=>{return a.cAS;}; +function CbT(){let a=this;F.call(a);a.cGm=null;a.cPQ=null;a.cAv=null;a.b9V=null;a.cxj=null;a.cz3=0.0;a.cty=null;a.cD9=null;a.b5E=null;} +let Fso=(a,b,c,d,e,f,g,h,i)=>{let j,k,l,m,n;a.cD9=i;a.cGm=b;a.cPQ=c;a.cAv=d;a.b9V=e;a.cz3=f;a.cxj=g;e=new CTs;j=AFy(c.bKj,AKE());b=c.bKj;e.ceR=g;e.cSf=j;e.cNq=b;a.cty=e;g=i;k=Hr(g.bGJ+1|0);l=k.data;a.b5E=k;l[0]=0.0;m=0;while(m{let i=new CbT();Fso(i,a,b,c,d,e,f,g,h);return i;},B4Q=a=>{let b;b=a.b5E.data;return b[b.length +-1|0];},EKo=(a,b,c)=>{let d,e,f,g,h,i,j,k,l;d=b.hE();e=b.h2(DaG(a.b9V));f=B4Q(a);e.hP(DE(f));(e.h2(BW(a.cz3))).hP(DE(f));(e.h2(BW(c))).hP(DE(f));g=a.b5E.data;h=g.length;i=0;while(i=j.bGJ)break;CgU(a,b,a.b5E.data[h],c,(Be(j,h)).a4S(a.cxj));h=h+1|0;}j=(Td(a.cGm)).dX();while(j.dY()){k=j.dZ();if(!CpG(a,k))continue;e=AD1(a.cAv,k);l=CW(e.V7(d))+e.V3(d)/2.0;h=0;while(true){e=a.cD9;if(h>=e.bGJ)break;CgU(a,b,a.b5E.data[h],l,(Be(e,h)).a4U(k, +a.cty));h=h+1|0;}}},CgU=(a,b,c,d,e)=>{let f,g,h;f=b.hE();g=C9o(a,e);h=g.cF(f);g.cC(b.h2(Bh(c+5.0,d-h.bGF/2.0)));},CpG=(a,b)=>{if(b instanceof BlI){if(!Bvu(a.cPQ,b)){if(AD1(a.cAv,b)===null)return 0;return 1;}return 0;}return 0;},C09=(a,b,c)=>{return ((C9o(a,c)).cF(b)).bGE;},C9o=(a,b)=>{let c,d;b=B4(C2I(a.b9V),b);c=B1(a.b9V.b23);B8();d=D0(B0(c,B4x),a.b9V.bSt);B3();return C_(b,d,CF,new Sz);},Cqz=N(0); +function DgG(){let a=this;F.call(a);a.b1a=null;a.ctr=null;a.chR=null;a.bVj=null;a.bZS=null;a.c4Y=null;a.cmO=null;a.cla=0.0;a.ck_=0.0;} +let DDZ=a=>{return a.b1a.bGM;},DDm=(a,b,c)=>{c=new Cgz;c.bPZ=a;c.crP=b;return c;},CHK=N(0); +function BOJ(){let a=this;F.call(a);a.cdq=0;a.ce4=null;} +let C5I=null,BN1=()=>{BN1=Z(BOJ);EIQ();},BkO=(a,b,c)=>{let d,e;b=Jt(Jt(Jt(ES(b),E(4159),E(2054)),E(4160),E(580)),E(4161),E(582));if(b.bGI.length>0){d=a.ce4;e=AE3(b,c);U(d,e);}},Jg=(a,b)=>{let c;c=a.ce4;b=a.cdq+b|0;return Be(c,b);},H_=a=>{let b,c;b=a.ce4;c=a.cdq;b=Be(b,c);a.cdq=a.cdq+1|0;return b;},EIQ=()=>{C5I=Dm(E(4864));},TG=N(0); +function TY(){let a=this;F.call(a);a.bIx=null;a.cqY=null;a.b4D=null;} +let AO5=(a,b,c)=>{a.cqY=Bk();a.bIx=b;a.b4D=c;},QM=(a,b)=>{U(a.cqY,b);},AF2=a=>{let b,c;b=Br(a.cqY);while(true){if(!Bq(b)){c=new BP;Bp(c,(Jg(a.bIx,0)).bHp);J(c);}c=Bm(b);if(c.Dl())break;}return c.Td();},Dr$=N(TY),FkA=a=>{let b,c,d,e,f,g,h,i,j,k,l;if(CFn(a)){H_(a.bIx);b=(H_(a.bIx)).bHp;ZE();c=AIM;if(b.bGI.length==2)c=BRE(Bn(b,1));d=Tc(12);e=new DcH;f=a.b4D;e.b15=Bk();e.c8b=10.0;e.c3T=d;e.c2J=f;e.c3S=c;g=1;h=0;while(!(h<=0&&Bj((Jg(a.bIx,0)).bHp,E(582)))){if(!g){i=AF2(a);c=i.bHp;b=e.b15;j=b.bGJ;if(j>0)U((Be(b,j +-1|0)).b98,c);b=i.bJD;R7();g=b!==AFm?0:1;continue;}k=H_(a.bIx);f=k.bHp;if(Bj(f,E(582)))h=h+(-1)|0;else if(BO(f,E(580)))h=h+1|0;g=0;while(BO(f,E(866))){g=g+1|0;f=CC(f,1);}b=new AXE;l=K(Bi,1);l.data[0]=ES(f);BhD(b,Bv(l),e.c3T,e.c2J);c=e.b15;d=new CnJ;d.b98=Bk();d.cJn=b;d.c3N=g;U(c,d);c=k.bJD;R7();g=c!==AFm?0:1;}i=H_(a.bIx);return AE3(e,i.bJD);}b=new BP;X(b);J(b);},CFn=a=>{if(Bj((Jg(a.bIx,0)).bHp,E(580)))return CX8((Jg(a.bIx,1)).bHp);return 0;},CX8=b=>{if(!Bj(b,E(3816))){if(b.bGI.length==2&&BO(b,E(3816)))return BRE(Bn(b, +1))===null?0:1;return 0;}return 1;},BSS=N(TY),Ctu=0,B1N=()=>{B1N=Z(BSS);FiR();},FbV=a=>{let b,c,d,e,f,g;if(CfV(a)){b=H_(a.bIx);c=b.bHp;if(Df()&&!Ctu&&!BO(c,E(580))){b=new C4;X(b);J(b);}d=null;ZE();e=AIM;if(c.bGI.length==2)e=BRE(Bn(c,1));if(e===AJK){c=b.bJD;R7();if(c===AFP)d=Ye((H_(a.bIx)).bHp,E(1268));}f=Ci0();while(!Bj((Jg(a.bIx,0)).bHp,E(582))){g=AF2(a);b=g.bHp;if(!(!(b instanceof AXE)?0:Bj(E(900),b.c0p)))Dj8(f,g);else{c=g.bJD;Dcm(f);R7();if(c===AFP)f.bY3=f.bY3+1|0;else{f.b8o=f.b8o+1|0;f.bY3=0;}b=f.c2a;b.bUA +=b.bUA+1|0;}}g=H_(a.bIx);return AE3(ERQ(f,e,d,a.b4D),g.bJD);}b=new BP;X(b);J(b);},CfV=a=>{let b,c;b=(Jg(a.bIx,0)).bHp;if(!Bj(b,E(580))&&!Bj(b,E(4865))&&!Bj(b,E(4866))&&!Bj(b,E(4867))&&!Bj(b,E(4868))&&!Bj(b,E(4869)))return 0;c=(Jg(a.bIx,1)).bHp;if(!Qc(c,E(4870))&&!CX8(c))return 1;return 0;},FiR=()=>{Ctu=0;},BNg=N(TY),CZy=0,BOT=()=>{BOT=Z(BNg);ELn();},DT_=a=>{let b,c,d,e,f,g;if(CHm(a)){b=(H_(a.bIx)).bHp;if(Df()&&!CZy&&!BO(b,E(580))){c=new C4;X(c);J(c);}d=Ci0();while(!Bj((Jg(a.bIx,0)).bHp,E(582))){Dj8(d,AF2(a));}e +=H_(a.bIx);f=new Ub;c=new CXM;g=a.b4D;AW0();b=Dr(b,E(1272))?A9A:!Dr(b,E(4871))?AQP:AUs;ZE();DpL(c,d,AJS,null,g);c.dcl=15.0;c.dcm=12.0;c.ci8=b;Wb(f,c,e.bJD);return f;}c=new BP;X(c);J(c);},CHm=a=>{let b;b=(Jg(a.bIx,0)).bHp;if(!Bj(b,E(4872))&&!Bj(b,E(4873))&&!Bj(b,E(4874)))return 0;return 1;},ELn=()=>{CZy=0;},BDz=N(TY),Drh=0,B1K=()=>{B1K=Z(BDz);Esb();},FmN=a=>{let b,c,d;if(CRG(a)){b=(H_(a.bIx)).bHp;if(Df()&&!Drh&&!BO(b,E(580))){b=new C4;X(b);J(b);}c=new CM2;c.b5_=new AR9;c.b7G=new AR9;c.b5j=new AR9;c.b3U=new AR9;c.cbj +=new AR9;a:while(true){if(Bj((Jg(a.bIx,0)).bHp,E(582))){d=H_(a.bIx);return AE3(c,d.bJD);}b:{c:{d:{e:{f:{switch(Bn((H_(a.bIx)).bHp,0)){case 67:break;case 69:break f;case 78:break e;case 83:break d;case 87:break c;default:break a;}c.cbj=(AF2(a)).bHp;break b;}c.b5j=(AF2(a)).bHp;break b;}c.b5_=(AF2(a)).bHp;break b;}c.b7G=(AF2(a)).bHp;break b;}c.b3U=(AF2(a)).bHp;}}b=new BP;X(b);J(b);}b=new BP;X(b);J(b);},CRG=a=>{let b;b=(Jg(a.bIx,0)).bHp;if(!Bj(b,E(580))&&!Bj(b,E(4865))&&!Bj(b,E(4867))&&!Bj(b,E(4868))&&!Bj(b,E(4869)))return 0;if +(Qc((Jg(a.bIx,1)).bHp,E(4870)))return 1;return 0;},Esb=()=>{Drh=0;}; +function CE8(){F.call(this);this.dak=null;} +let EmU=(a,b)=>{a.dak=b;},DBw=a=>{let b=new CE8();EmU(b,a);return b;},APN=N(0),Ql=a=>{return 0;}; +function CDg(){let a=this;F.call(a);a.cIO=null;a.cJx=null;} +let EuH=(a,b)=>{a.cIO.a23(b,0,a.cJx);a.cIO.a23(b,1,a.cJx);}; +function CR3(){let a=this;F.call(a);a.cX5=null;a.ct4=null;a.c0z=null;a.bUg=null;a.cOE=null;a.cOr=null;a.b$f=null;a.cxx=null;a.cgo=null;a.csH=null;a.cxu=null;a.cFm=null;a.cC3=null;a.chc=null;a.cDi=null;a.ctm=null;a.csd=null;a.cA0=null;a.cTE=0;a.cUH=0;a.cEO=null;a.cG1=null;a.cRC=null;a.cq3=null;a.c4t=null;a.c0E=null;a.c2s=null;a.cLu=null;a.c_5=null;a.cjy=0;a.ca7=0;a.cCy=0;a.cuD=0;a.cE3=0;a.da_=0.0;a.c3K=null;a.dco=null;a.bZu=null;a.c0g=null;a.cJ8=null;a.cV3=null;a.c8Q=null;a.daW=null;a.c1J=null;a.cMj=null;a.cP6 +=null;a.ddd=null;a.cD7=null;a.c0x=null;a.csO=null;a.c9I=null;a.cSC=null;a.ddX=null;a.cKr=null;a.c2Q=null;a.cQq=null;a.dcu=null;a.c_a=null;a.cFH=null;a.deL=null;a.deR=null;a.cGG=null;a.c_W=null;a.c$s=null;a.c_b=null;a.dbg=null;a.c_J=null;a.cJ6=null;a.c6l=null;a.c$w=null;a.c_m=null;a.cLq=null;a.cZ4=null;a.cPr=null;a.cP0=null;a.cQO=null;a.cVO=null;a.c$X=null;a.c7Y=null;a.c4U=null;a.cQF=null;a.cXZ=null;a.da9=null;a.c_k=null;a.c1$=null;a.c0H=null;a.c9o=null;a.cRB=null;a.c3L=null;a.cH_=null;a.cBL=null;a.cYA=null;a.cNj +=null;a.cQN=null;a.c7k=null;a.c4X=null;a.c6j=null;a.c2d=null;a.c94=null;a.bRw=0;a.cy0=0;a.b2q=0;a.b0A=0;a.bRi=0;a.cpU=0;a.bVg=null;a.bN4=null;a.b5W=null;a.cyD=0;a.cyK=0;a.b1b=0;a.cd0=0;a.ciT=0;a.b9i=null;a.ctL=0;a.cub=0;a.co4=0;a.bU5=null;a.csP=0;a.bIS=null;a.c3f=0;a.bUi=null;a.cnr=0;a.bRA=null;a.c4$=0;a.cYB=0.0;a.bLu=null;a.c1y=0;a.cN7=0;a.cwX=0;a.cIU=null;a.cjX=null;a.cmq=null;a.b5q=0;a.czw=0;a.bTH=0;a.bM0=null;a.cLv=0;a.bW7=0;a.b0b=null;a.b3_=null;a.ckO=null;a.czI=null;a.cfi=null;a.ckM=null;a.cCh=null;a.bNv +=null;a.cTr=0;a.c1R=null;a.cFe=null;a.bLT=null;a.cgE=null;a.bMk=null;a.c1_=null;a.cKb=null;a.crJ=0;a.b66=0;a.cg7=0;a.cdd=null;a.b_3=null;a.b93=0.0;a.b9c=0.0;a.c7c=0.0;a.c7d=0.0;a.cFv=0.0;a.c1Z=0.0;a.cMT=null;a.bPt=null;a.cbA=null;a.clC=0;a.cS8=0;a.cbR=null;a.c2S=0;a.cGz=0;a.cVn=null;a.cJZ=null;a.bMS=null;a.bSV=null;a.bNZ=0;a.cLL=0;a.c7x=0;a.bVe=null;a.bSI=null;a.bI8=null;a.cFZ=0;a.bSu=null;a.cgG=null;} +let CUk=()=>{return ErN();},Con=()=>{return;},Bny=(a,b,c,d)=>{let e;e=new BVj;CJ(e);e.cQm=b===null?null:Co(b);e.bQu=c;e.bUo=d;return e;},ABq=(b,c,d)=>{let e;e=new BBz;CJ(e);e.cQC=b;e.cQl=c;e.cYq=d;return e;},A2A=(b,c)=>{let d;d=new A5K;CJ(d);d.cgT=b===null?null:Co(b);d.cRb=c;return d;},Egi=a=>{let b,c,d,e,f,g,h,i,j,k;B0e(a);a.cX5=BkY();a.ct4=Dy();b=CtK();a.c0z=b;a.bUg=b;b=CtK();a.cOE=b;a.cOr=b;a.b$f=X_();a.cxx=CNi();a.csH=B4g();a.cxu=X_();a.cFm=X_();a.cC3=X_();a.chc=X_();a.cDi=DWo();a.ctm=Fa5();a.csd=X_();a.cA0 +=X_();a.cEO=X_();a.cG1=X_();c=K(A5K,1);c.data[0]=A2A(null,0);a.c4t=c;c=K(A5K,3);d=c.data;d[0]=A2A(E(72),1);d[1]=A2A(E(71),8);d[2]=A2A(null,0);a.c0E=c;c=K(A5K,1);c.data[0]=A2A(null,0);a.c2s=c;c=K(BBz,9);d=c.data;VS();d[0]=ABq(1,1.0,ChI);d[1]=ABq(2,1.0,Cr_);d[2]=ABq(3,0.5,Dli);d[3]=ABq(4,1.0,C1h);d[4]=ABq(5,1.2,Dd3);d[5]=ABq(6,0.8,C0C);d[6]=ABq(7,1.0,Dgf);d[7]=ABq(8,0.5,DfT);d[8]=ABq(0,0.0,null);a.cLu=c;a.bVg=EyB();a.bN4=A1J();a.b9i=EG();a.bRA=B3r(1000);a.ckO=Vw();a.czI=B4E();a.cfi=B4E();a.ckM=CbD();a.cCh=CbD();c +=K(BVj,4);d=c.data;d[0]=Bny(a,E(716),a.ckM,a.cfi);d[1]=Bny(a,E(4875),a.ckM,a.czI);d[2]=Bny(a,E(2583),a.cCh,null);d[3]=Bny(a,null,null,null);a.c1R=c;a.cFe=X_();a.bLT=DXJ();a.cgE=CNi();a.bMk=E9X();a.cdd=EG();a.cMT=EPG();a.cGz=1;a.cVn=BkY();a.cJZ=BRF();a.cgG=AH7();b=a.c0z;ADz();e=CzI;b.bYj=e;b.bWH=4;b=a.cOE;b.bYj=e;b.bWH=8;b=a.b$f;Wn();b.bP9=BrV;b.bQY=(-1);e=AW_;b.bQS=e;b.bOL=null;Ji();b.bON=C5s;b.bQn=null;b.bSU=null;b=a.cxx;b.b3h=1;b.b2W=0;b.b1m=1;b.bYl=0;b.b$a=1;b.cao=1;b=a.cxu;f=BeP;b.bP9=f;b.bQY=0;g=AWd;b.bQS +=g;b.bOL=null;b.bON=null;Lt();h=CP5;b.bQn=h;b.bSU=null;AJQ();i=B9f;b.bOA=i;b.bOb=null;b=a.cFm;b.bP9=f;b.bQY=0;j=Blc;b.bQS=j;b.bOL=null;b.bON=null;b.bQn=h;b.bSU=null;b.bOA=i;b.bOb=null;b=a.cC3;b.bP9=f;b.bQY=0;b.bQS=j;b.bOL=null;b.bON=null;h=CsF;b.bQn=h;b.bSU=null;b.bOA=i;b.bOb=null;b=a.chc;b.bP9=f;b.bQY=0;b.bQS=e;b.bOL=null;b.bON=null;Qp();b.bQn=DfU;b.bSU=null;b.bOA=i;b.bOb=null;b=a.cDi;Zg();b.c4P=CGj;b.cu$=Do2;b.c$g=CF_;b.deu=CLq;b.cxh=CLr;b.c70=Cjc;b.cQv=Di9;b=a.ctm;ATl();b.cXr=CRu;b.ctn=CFJ;b.c9b=CkF;b.dcC +=CWA;b.c_j=null;b=a.csd;b.bP9=f;b.bQY=0;k=AVQ;b.bQS=k;b.bOL=null;b.bON=null;Q8();b.bQn=DoA;b.bSU=null;b.bOA=i;b.bOb=null;b=a.cA0;b.bP9=f;b.bQY=0;b.bQS=g;b.bOL=null;b.bON=Dol;b.bQn=CEK;b.bSU=null;b.bOA=i;b.bOb=null;b=a.cEO;b.bP9=APj;b.bQY=(-1);b.bQS=f;b.bOL=null;b.bON=DqI;b.bQn=null;b.bSU=null;b.bOA=i;b.bOb=null;b=a.cG1;b.bP9=A0M;b.bQY=4;b.bQS=j;b.bOL=null;b.bON=null;Kf();b.bQn=Cbi;b.bSU=null;b.bOA=null;b.bOb=null;b=a.ckO;e=b.bHg;e.bGH=0.0;e.bGG=0.0;b.bMz=(-1.0);b.bQC=null;b.bIQ=0;b.bMm=0;b.bQb=1;b.bZl=0;b.bV7 +=0;b.bIG=0;b=a.czI;b.cjm=0;b.ccf=1;b.cbH=1;b.clX=0.0;b.ce5=0.0;b.cgX=0.0;b=a.cfi;b.cjm=0;b.ccf=1;b.cbH=4;b.clX=0.0;b.ce5=0.0;b.cgX=0.0;b=a.ckM;Jf();b.ci1=CGe;b.c1D=CTy;b.cfq=Cel;b.b2C=Dm4;b.clz=CFK;b.c62=CMt;b=a.cCh;b.ci1=DbX;b.c1D=B$A;b.cfq=COp;b.b2C=C7S;b.clz=Dcn;b.c62=Ctg;b=a.cFe;b.bP9=f;b.bQY=0;b.bQS=k;b.bOL=null;b.bON=null;b.bQn=h;b.bSU=null;b.bOA=i;b.bOb=null;b=a.cgE;b.b3h=1;b.b2W=0;b.b1m=0;b.bYl=1;b=a.bMk;Gd();b.cwz=CQN;b.b4M=DdC;a.bSu=null;a.cFZ=0;},ErN=()=>{let a=new CR3();Egi(a);return a;},Wy=N(),EPT +=(a,b)=>{b=new BV;Bp(b,ST(Dg(a)));J(b);}; +function H2(){let a=this;Wy.call(a);a.bLZ=null;a.bP0=0;a.cUL=0;a.cM1=null;} +let BVc=0,AV1=()=>{AV1=Z(H2);Fwj();},Me=(a,b)=>{AV1();BG2(a,null,0);L(a.bLZ,b);Bb(a.bLZ,0);},Co=a=>{let b=new H2();Me(b,a);return b;},BBp=a=>{return BKL(Lk(Q(a.bLZ)),a.bP0);},Bfd=a=>{return BBp(a);},BZr=b=>{AV1();return C8V(b);},C5h=(a,b)=>{let c;AV1();BG2(a,null,0);c=0;while(c{let b=new H2();C5h(b,a);return b;},BG2=(a,b,c)=>{AV1();if(b!==null)a.bLZ=b;else{b=new S;T(b);a.bLZ=b;}a.bP0=c;c=BVc;a.cUL=c;BVc=c+2|0;},BKL=(a,b)=>{let c=new H2();BG2(c,a,b);return c;},E52=a=>{let b;b +=a.cM1;if(b===null){b=new BV;X(b);J(b);}return b;},GL=(a,b)=>{return BKL(a.bLZ,a.bP0+b|0);},Bo$=(a,b)=>{let c;c=b;if(a.bLZ!==c.bLZ){b=new Bt;X(b);J(b);}return a.bP0-c.bP0|0;},DHI=a=>{let b,c;b=Cfv(a);c=new S;T(c);H(H(c,E(4876)),b);return Q(c);},Cfv=a=>{return CC(Q(a.bLZ),a.bP0);},AG7=a=>{let b,c;b=Cfv(a);c=Eq(b,0);if(c==(-1)){b=new BV;X(b);J(b);}return B_(b,0,c);},Dn=(a,b)=>{return Vx(a.bLZ,a.bP0+b|0);},O_=(a,b,c)=>{Clx(a.bLZ,a.bP0+b|0,c);return c;},O4=a=>{let b;b=0;while(Dn(a,b)){b=b+1|0;}return b;},BPM=(a, +b)=>{return Bj(AG7(a),AG7(b));},E4X=(a,b)=>{let c;b=BY(b);c=new S;T(c);H(H(c,E(4877)),b);Q(c);JT();b=BY(a);c=new S;T(c);H(H(c,E(4878)),b);Q(c);b=new BV;X(b);J(b);},Fwj=()=>{BVc=100;},CHz=N(),DfU=null,Qp=()=>{Qp=Z(CHz);D6r();},DVh=(b,c)=>{let d,e,f,g,h,i,j,$$je;Qp();Bf();try{a:{if(c!==null){d=c.cs1;if(d!==null)break a;}d=b.ctm;}b:{e=d.cXr;f=K(F,1);f.data[0]=c;g=Dvz(e,b,f);h=d.ctn;i=K(F,2);f=i.data;f[0]=g;j=new Oh;Ej();Pd(j,Blq);f[1]=j;e=CMq(h,b,i);h=e.caZ;h.cs1=d;e.cdr.cZj=g;if(c!==null){c=c.cld;if(c!==null)break b;}c +=b.cDi;}h.cld=c;e.cH$=1;}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},BBM=(b,c,d,e)=>{let f,g,h,i,j,k,l,$$je;Qp();f=Crg(d);Bf();try{g=Ca(1);h=DVh(b,e);i=h.caZ.cs1.ctn;j=K(F,2);k=j.data;k[0]=h.cdr.cZj;d=new Oh;Ej();Pd(d,ARl);k[1]=d;d=CMq(i,b,j);AC6(d,0);d.bQa=h;Clm(d.bOh,f);d.bOh.bYl=1;d.b2Z=d;l=d.bQa;f=l.cdr;l=l.caZ.cld.c4P;k=BB(F,[d,e]);f.cVx=E1c(l,b,k);if(AI_(b,d,0,c,g,1))AVd(d,g.data[0]);c=C5e(b,d);BvR(b,c,0,c);}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},C5e=(b,c)=>{let d,e,$$je;Qp();Bf();try{c.cf3 +=ABB(b,c,b.cA0,b.bUg);c.b8A=ABB(b,c,b.csd,b.bUg);c.bMM=ABB(b,c,c!==Hd(c)?b.cFm:b.cxu,b.bUg);c.b8p=ABB(b,c,c!==Hd(c)?b.cC3:b.cFe,b.bUg);c.b5w=ABB(b,c,b.chc,b.bUg);d=AMn(c);if(d!==null){AWD(c,BGl(d,0));e=d.b5w;e.bLG.a5q(b,e,c,1);}if(!(d!==null&&!d.bOh.bVh))DEk(b,c);BVB(c,c);}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},BGl=(b,c)=>{let d,e,$$je;Qp();Bf();try{d=b.bQa.cWO.data;e=d[c]+1|0;d[c]=e;}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},BVU=b=>{let c,$$je;Qp();Bf();try{c=AUy(b.b8A);}catch($$e){$$je=P($$e);b +=$$je;J(b);}return c;},Fen=(b,c)=>{let d,e,$$je;Qp();Bf();try{d=0;e=IV(b,c);while(e!==null){d=d+Ek4(b,c,e,0,1)|0;e=I4(b,c,e);}}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},BGS=b=>{let c,$$je;Qp();Bf();try{c=!b.bOh.b3h?0:1;}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},ClK=b=>{let c,$$je;Qp();Bf();try{c=BGS(b)?0:1;}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},CBM=b=>{let c,$$je;Qp();Bf();try{c=!b.bOh.b2W?0:1;}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},B9$=(b,c)=>{let d,$$je;Qp();Bf();try{X7(b,Bur(c));d +=AUy(b);BYl(c,AI3(b));}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},Ek4=(b,c,d,e,f)=>{let g,h,$$je;Qp();Bf();try{g=0;h=ADC(b,c,d);if(h!==null){if(f)g=g+B9$(c.bMM,C7X(h))|0;if(e)g=g+B9$(c.bMM,CD0(h))|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return g;},Cmw=(b,c,d,e)=>{let f,$$je;Qp();Bf();try{f=c.bHw.bKU-d.bHw.bKU|0;f=!f?0:f>=0?1:(-1);}catch($$e){$$je=P($$e);b=$$je;J(b);}return f;},D6r=()=>{let b;b=new CsP;E$(b,E(4879));DfU=b;},EUo=N(),Cuu=(b,c)=>{let d,$$je;Bf();try{SU(b,null,1,Co(E(764)),Co(E(4880)));d=FjJ(null, +1);d.deJ=0;E$A(d);DRz(d);}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},Drt=N(),BBA=null,Co_=null,Bxf=()=>{Bxf=Z(Drt);DSZ();},EdU=(b,c)=>{let d,e,f,$$je;Bxf();Bf();try{d=EdF();Bn3();d.cZB=BOs;e=Co(E(238));d.c93=e;d.dcN=0;c=Co_;d.daM=c;f=BBA;d.dbW=f;b=b.cia;b.dc8=e;b.cZZ=c;b.c8P=d.cZB;b.cX3=f;}catch($$e){$$je=P($$e);b=$$je;J(b);}return 300;},DoU=(b,c,d)=>{let e,f,g,h,$$je;Bxf();Bf();try{e=null;f=Co(E(4881));g=new Oh;Ej();Pd(g,A3V);AGL(b,d,f,g,1);DCR(d,c);if(d!==Hd(d))I(E(4882));EdU(c,e);f=c.cia.cZZ;if(f===null)I(E(4883));B9_(1);DEI(b, +d,!(c.cia.cX3.cSz&1)?0:1);CzL(Hd(d),PH(d));if(f!==null){c=f.c6t;if(c!==null){h=K(F,1);h.data[0]=d;EG0(c,b,h);if(f.csM!==null){if(ETE(d)!==null)Ef1(d,f.csM);else BwA(E(4884));}}}B9_(0);}catch($$e){$$je=P($$e);b=$$je;J(b);}return 0;},DSZ=()=>{let b;b=new C$3;CJ(b);BBA=b;b=new CMO;CJ(b);Co_=b;BBA.cSz=1;OP();b.c6t=C21;b.csM=C9d;}; +function Wi(){let a=this;CA.call(a);a.cpC=null;a.bVZ=null;} +function DbJ(){let a=this;Wi.call(a);a.c0N=null;a.c4I=null;a.ccm=null;a.ciH=0.0;a.b$D=0.0;a.cU2=0.0;a.cU9=0.0;a.cVu=0.0;a.c46=null;a.daR=null;a.cIS=null;a.c_N=0;a.c_B=0;a.c1A=0;a.cSb=0;a.cDE=0;a.cCJ=0;a.c4x=0;a.cMZ=0;a.cNs=null;a.cMR=null;a.czC=null;a.cEU=null;a.c1o=null;a.cOY=null;a.c43=null;a.cMn=null;a.cKG=0;a.cUm=null;a.c9Y=null;a.ddP=null;a.c4R=0;a.c7o=0;a.c5u=0.0;a.cvB=null;a.cI6=null;a.c1P=null;a.cUK=null;a.c1n=null;a.cZH=0;a.cZu=0;a.cMV=0;} +let DyE=a=>{let b;CJ(a);b=new FB;CJ(b);a.ccm=b;a.cIS=null;b=new TZ;CJ(b);a.czC=b;b=new TZ;CJ(b);a.cEU=b;b=new TZ;CJ(b);a.c1o=b;b=new TZ;CJ(b);a.cOY=b;b=new TZ;CJ(b);a.c43=b;b=new TZ;CJ(b);a.cvB=b;b=new TZ;CJ(b);a.cI6=b;b=new TZ;CJ(b);a.c1P=b;b=new TZ;CJ(b);a.cUK=b;},C2K=()=>{let a=new DbJ();DyE(a);return a;}; +function FB(){let a=this;CA.call(a);a.bGH=0.0;a.bGG=0.0;} +let ARx=a=>{CJ(a);},EG=()=>{let a=new FB();ARx(a);return a;},MM=(b,c)=>{let d;d=new FB;CJ(d);d.bGH=b;d.bGG=c;return d;},AS9=(b,c)=>{let d;d=new FB;CJ(d);d.bGH=b.bGH+c.bGH;d.bGG=b.bGG+c.bGG;return d;},FeK=a=>{let b,c,d,e;b=a.bGH;c=a.bGG;d=new S;T(d);Bb(d,91);e=D6(d,b);Bb(e,44);Bb(D6(e,c),93);return Q(d);},Fo=a=>{let b;b=new FB;CJ(b);b.bGH=a.bGH;b.bGG=a.bGG;return b;},Cd=(a,b)=>{let c;c=b;a.bGH=c.bGH;a.bGG=c.bGG;}; +function CuV(){let a=this;Er.call(a);a.bTf=null;a.bWP=null;a.da5=0.0;a.b_h=null;a.clP=null;a.bXe=null;} +let BIk=(a,b,c)=>{let d;if(b&&c!==null){B8();d=Du(CG(Cfa,a.bXe),c.b7K);}else if(c!==null){B8();d=Du(CG(BPZ,a.bXe),c.b7K);}else if(!b){B8();d=CG(Bzd,a.bXe);}else{B8();d=CG(CDr,a.bXe);}return B0(a.clP,d);},Cmz=(a,b,c)=>{let d;c=c.dX();while(true){if(!c.dY())return null;d=c.dZ();if(d.bSX.dV()==2&&Bj(d.bSX.cf(0),E(917))&&Bj(d.bSX.cf(1),b)?1:!(d.bSX.dV()==1&&Bj(d.bSX.cf(0),b))?0:1)break;}return d;},Cpv=(a,b)=>{if(!b.ui()){if(!b.gm()){if(!b.uj()){if(b.xg()){if(b.a5V())return E(4885);return E(4886);}return E(4887);}return b.p();}return E(4888);}return b.oB();},DIA +=(a,b)=>{let c,d,e;c=BWm(a,b)+BJ$(a,b);d=0.0;e=Br(a.bTf);while(Bq(e)){d=d+BnL(Bm(e),b);}if(d===0.0)d=15.0;return Cl(c,d);},BWm=(a,b)=>{let c,d;c=0.0;d=Br(a.bTf);while(Bq(d)){c=BC(c,((Bm(d)).co2.cF(b)).bGE);}return c;},BJ$=(a,b)=>{let c,d,e;c=0.0;d=Br(a.bTf);while(Bq(d)){e=(Bm(d)).cdL;if(e!==null)c=BC(c,(e.cF(b)).bGE);}return c;},E4W=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;c=b.hE();d=BC((De(a,c)).bGE,a.da5);e=BWm(a,c);f=BJ$(a,c);g=0.0;h=a.clP;B8();i=B0(h,CG(Bzd,a.bXe));j=AH6(i,b,a.bWP.bGN);k=Br(a.bTf);while +(Bq(k)){g=g+BnL(Bm(k),c);}if(g===0.0)g=15.0;if(d===0.0)d=30.0;B9();l=(BJ(i,Jm)).oK();m=Ge(C2(d,g),l);n=(BJ(i,CK)).cu(a.bWP.bGN);((j.h2(Cc(n))).h2(n)).hP(m);k=AH6(B0(B1(a.bWP),CG(CGN,a.bXe)),b,a.bWP.bGN);l=0.0;o=Br(a.bTf);while(Bq(o)){p=Bm(o);q=k.h2(BW(l));r=BnL(p,c);if(p.cq4!==null){s=Ge(C2(d-2.0,r),4.0);t=(BJ(B0(a.clP,Du(CG(BPZ,a.bXe),p.cq4.b7K)),CK)).cu(a.bWP.bGN);(((q.h2(t)).h2(Cc(t))).h2(Bh(1.5,0.0))).hP(s);}if(l>0.0)q.hP(DE(d));u=IR(i);A5$(u,q,p.co2,0.0,0.0,e);if(p.cdL!==null){v=q.h2(BM(e));A5$(u,v,p.cdL, +0.0,0.0,f);v.hP(Fg(r));}l=l+r;}j.hP(m);},B70=(a,b,c)=>{let d,e,f,g,h;d=B4(a.bWP.bH$,c);e=D0(b,a.bWP.bGN);f=GM(b);g=IR(b);h=a.bWP;Ed();return Js(Py(d,e,g,h,f,AJr,null,null),5.0,2.0);}; +function C95(){let a=this;Wi.call(a);a.b4y=null;a.b$l=null;a.b9y=null;a.cc2=null;a.b9t=null;a.b_t=null;a.cvb=null;a.cjJ=0;a.cfw=0;a.che=0;a.cmC=null;a.ciU=0.0;a.crA=0;a.chB=0;a.chH=0;a.cpE=0;a.cli=0;a.cnU=0;a.cmc=0;a.cmb=0;a.cnm=null;} +let EBA=a=>{CJ(a);a.b$l=Vw();a.b9y=Vw();},VE=()=>{let a=new C95();EBA(a);return a;},BBP=(a,b)=>{let c;c=b;a.cpC=c.cpC;a.bVZ=c.bVZ;a.b4y=c.b4y;AKQ(a.b$l,c.b$l);AKQ(a.b9y,c.b9y);a.cc2=c.cc2;a.b9t=c.b9t;a.b_t=c.b_t;a.cvb=c.cvb;a.cjJ=c.cjJ;a.cfw=c.cfw;a.che=c.che;a.cmC=c.cmC;a.ciU=c.ciU;a.crA=c.crA;a.chB=c.chB;a.chH=c.chH;a.cpE=c.cpE;a.cli=c.cli;a.cnU=c.cnU;a.cmc=c.cmc;a.cmb=c.cmb;a.cnm=c.cnm;}; +function CR_(){let a=this;F.call(a);a.bV4=null;a.c2l=0.0;a.c2k=0.0;a.bWF=null;a.cY7=0.0;a.cPP=null;a.cgk=null;} +let DPO=(a,b,c)=>{let d;d=Y((Y(b.bIY,0)).bK7,c);return BA(d.bGH,d.bGG);},D33=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o;d=EE();AMc(d,CMe(a));Wx(d,AEB(a.bWF,Be(a.bV4,0)));e=1;while(true){f=a.bV4;if(e>=f.bGJ)break;g=AEB(a.bWF,Be(f,e));h=a.bWF;f=a.bV4;i=e+1|0;f=AEB(h,Be(f,i));h=a.bWF;j=a.bV4;i=e+2|0;AXb(d,g,f,AEB(h,Be(j,i)));e=e+3|0;}c.hP(d);if(a.cgk!==null){d=a.bWF;f=a.bV4;j=AEB(d,Be(f,f.bGJ-1|0));k=AEB(a.bWF,a.cgk);d=new Cqx;d.b6y=j;d.ck$=k;b=(c.h2(Cc(b))).h2(GT());c=BDe(d.b6y,d.ck$);l=Jy(d.b6y,d.ck$);m=Nz(c.bT3, +c.bQB);c=d.b6y;n=m+1.5707963267948966;o=l*0.4;c=BXa(d,c,n,o);f=BXa(d,d.b6y,m-1.5707963267948966,o);h=BXa(d,d.b6y,m,l*0.3);j=EE();AMc(j,f);Wx(j,h);Wx(j,c);Wx(j,d.ck$);Wx(j,f);b.hP(j);}},Fk6=(a,b)=>{((b.h2(DJ(I3(CMe(a)),Bh((-3.0),(-3.0))))).h2(GT())).hP(Fz(6.0,6.0));},CMe=a=>{let b,c,d,e,f,g,h;b=AEB(a.bWF,Be(a.bV4,0));c=AEB(a.bWF,Be(a.bV4,1));d=a.cY7;e=Jy(b,c);f=b.bGK;g=(f-c.bGK)/e;h=b.bGL;return BA(f+g*d,h+(h-c.bGL)/e*d);},ECw=N(),CDT=()=>{let b,c,d,e,f,g,h,i,j,k,l,m,n,o;b=K(C7,(A5i()).data.length);c=b.data;d +=0;e=(A5i()).data;f=e.length;g=0;while(g{let c,d,e,f;b=B_(J3(b),0,3);c=(A5i()).data;d=c.length;e=0;while(true){if(e>=d){b=new Bt;X(b);J(b);}f=c[e];if(BO(f.bHx,b))break;e=e+1|0;}return f;}; +function SR(){let a=this;Ma.call(a);a.bLO=null;a.bSw=null;a.cBR=null;a.c6A=null;a.b1C=null;} +let DyI=a=>{let b,c,d;b=BY(a.bLO);c=BY(a.bSw);d=new S;T(d);b=H(H(d,E(4890)),b);Bb(b,32);H(b,c);return Q(d);},E_G=a=>{return a.bLO;},Cxa=(a,b)=>{return a.bLO!==b?0:1;},ADX=a=>{let b;b=a.bSw;Hy();return b!==Ri?0:1;},By3=a=>{let b;b=a.bSw;Hy();return !(b!==PX&&b!==Vs)?1:0;},BSe=a=>{let b;b=a.bSw;Hy();return b!==PX?0:1;}; +function CjK(){let a=this;F.call(a);a.bZZ=null;a.cax=null;a.cec=null;a.cbB=null;a.cex=null;a.b5Q=null;a.b7P=null;a.ckX=null;} +let Eyu=(a,b)=>{a.bZZ=b;},CS1=a=>{let b=new CjK();Eyu(b,a);return b;}; +function Csp(){let a=this;F.call(a);a.cb6=null;a.cPk=null;a.cWZ=null;a.cMd=null;} +let CdO=a=>{let b,c;b=a.cb6;if(b.bQs===null){c=new Cpn;c.cgn=b;b.bQs=c;}return b.bQs;},CgR=a=>{return UA(a.cb6);},ANq=a=>{let b,c;b=a.cPk;if(b===null){c=0.0;b=(CdO(a)).dX();while(b.dY()){c=Eh(c,(b.dZ()).bG6);}return c;}return b.bG6;},APq=a=>{let b,c;b=a.cWZ;if(b===null){c=0.0;b=(CdO(a)).dX();while(b.dY()){c=BC(c,(b.dZ()).bG6);}if(c===0.0)return 10.0;return c;}return b.bG6;},C3w=N(),Cr6=null,BtH=()=>{BtH=Z(C3w);DX3();},DX3=()=>{let b,c,d,e,f;BtH();b=Ca(256);c=b.data;d=0;while(d<256){e=0;f=d;while(e<8){f=(f&1) +!=1?f>>>1|0:(-306674912)^(f>>>1|0);e=e+1|0;}c[d]=f;d=d+1|0;}Cr6=b;}; +function C2q(){F.call(this);this.c2v=null;} +let DKj=(a,b,c)=>{b=b;c=c;return a.c2v.bRY.fc(b.d0(),c.d0());},C1k=N(),BUw=0,Bay=null,Bda=null,BuW=()=>{BuW=Z(C1k);DND();},Fp2=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q;BuW();Bo5();d=(isNaN(b)?1:0)?2143289344:Dye(b);c.cQT=!(d&(-2147483648))?0:1;e=d&8388607;f=d>>23&255;if(!e&&!f){c.cF3=0;c.cra=0;return;}if(f)d=e|8388608;else{d=e<<1;while(DS(CN(V(d),V(8388608)),BH)){d=d<<1;f=f+(-1)|0;}}g=C4O(Bda,f);if(g<0)g= -g|0;h=Bda.data;e=g+1|0;i=9+(f-h[e]|0)|0;j=Bsn(d,Bay.data[e],i);if(j=0)break;k=l;}q=AB_(o,k);d=q>0?Ev(UW(j,o),o):q<0?Ev(UW(j,k),k)+k|0:Ev(UW((j+(k/2|0)|0),k),k);if(Tx(V(d),V(1000000000))>=0)while(true){g=g+1|0;d=UW(d,10);if(AB_(d,1000000000)<0)break;}else if(AB_(d,100000000)<0){g=g+(-1)|0;d=d*10|0;}c.cF3 +=d;c.cra=g-50|0;},Bsn=(b,c,d)=>{BuW();return Cp(GD(CT(CN(V(b),O(4294967295, 0)),CN(V(c),O(4294967295, 0))),32-d|0));},DND=()=>{BUw=UW((-1),10);Bay=Ey([(-18543760),(-873828468),(-1558056233),(-2105438446),(-791721136),(-1492370368),(-2052889754),(-707643228),(-1425108042),(-1999079893),(-621547450),(-1356231419),(-1943978595),(-533385374),(-1285701758),(-1887554866),(-443107408),(-1213479385),(-1829776968),(-350662770),(-1139523676),(-1770612400),(-255999462),(-1063793029),(-1710027882),(-159064234),(-986244846), +(-1647989336),(-59802560),(-906835507),(-1584461865),(-2126562952),(-825520345),(-1519409735),(-2074521247),(-742253618),(-1452796353),(-2021230542),(-656988489),(-1384584251),(-1966660860),(-569676998),(-1314735058),(-1910781505),(-480270031),(-1243209484),(-1853561046),(-388717296),(-1169967296),(-1794967296),(-294967296),(-1094967296),(-1734967296),(-198967296),(-1018167296),(-1673527296),(-100663296),(-939524096),(-1610612736),(-2147483648),(-858993460),(-1546188227),(-2095944041),(-776530088),(-1480217529), +(-2043167483),(-692087595),(-1412663535),(-1989124287),(-605618482),(-1343488245),(-1933784055),(-517074110),(-1272652747),(-1877115657),(-426404674),(-1200117198),(-1819087218),(-333559171),(-1125840796),(-1759666096),(-238485376),(-1049781760),(-1698818867),(-141129810),(-971897307),(-1636511305),(-41437710),(-892143627),(-1572708361),(-2117160148),(-810475859),(-1507374147),(-2064892777),(-726848065),(-1440471911),(-2011370988),(-641213203),(-1371964022),(-1956564688)]);Bda=Ey([(-37),(-34),(-31),(-28),(-24), +(-21),(-18),(-14),(-11),(-8),(-4),(-1),2,6,9,12,16,19,22,26,29,32,36,39,42,46,49,52,56,59,62,65,69,72,75,79,82,85,89,92,95,99,102,105,109,112,115,119,122,125,129,132,135,139,142,145,149,152,155,158,162,165,168,172,175,178,182,185,188,192,195,198,202,205,208,212,215,218,222,225,228,232,235,238,242,245,248,252,255,258,261,265,268,271,275,278,281,285,288,291]);}; +function Tg(){let a=this;Ma.call(a);a.bSy=null;a.b1F=null;a.bP4=null;a.bJ_=null;a.cnY=null;a.bOz=null;a.bMc=null;a.b4_=null;a.b$A=null;a.b12=0;} +let ACt=a=>{let b,c,d,e,f,g,h,i,j,k;b=a.bOz;ACc();if(b===AEU){B8();c=CB6;}else if(b!==AM4){B8();c=BI7;}else{B8();c=CHP;}a:{b=a.b$A;if(b!==null){d=a.cnY;e=Bk();f=(BPh(b)).dX();while(true){if(!f.dY()){b=e.dX();while(b.dY()){c=CwW(c,(b.dZ()).bNc);}break a;}b=f.dZ();if(CB(b,E(900)))break;b=FS(b);g=AIV(CfR(),b);h=null;i=d.bTZ.b1e.dX();while(i.dY()){j=i.dZ();if(B5Q(j.bNc,g)){if(h!==null){Pb();j=Ux(h,j,Qv);}h=j;}}if(h===null)h=AII(g,Nq(Bo(RY)));Df()&&C6G;U(e,h);}b=new Bt;X(b);J(b);}}b=ZT(B0(a.cnY,c),a.bMc);k=K(Ob, +1);k.data[0]=b;return k;},Fbg=(a,b,c,d,e)=>{HK();Dff(a,b,c,TX,d,e);},Cgu=(a,b,c,d)=>{let e=new Tg();Fbg(e,a,b,c,d);return e;},Dff=(a,b,c,d,e,f)=>{ACc();a.bOz=A1m;a.bMc=Qd();a.b12=0;a.bSy=b;a.b1F=c;a.cnY=f;a.bJ_=d;a.bP4=e;},BFL=(a,b,c,d,e)=>{let f=new Tg();Dff(f,a,b,c,d,e);return f;},DH5=a=>{return a.bSy;},C9J=a=>{return a.b1F;},Fqd=a=>{return a.bJ_;},C4S=(a,b)=>{return !(a.bSy!==b&&a.b1F!==b)?1:0;},ADE=(a,b)=>{return AHL(a.bMc,b);},FjW=a=>{let b,c,d;b=JH(a);c=BY(a.bP4);d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},C4g +=a=>{a.b12=1;},DQq=a=>{return a.b12;},A1w=N(Bx),A1m=null,AEU=null,AM4=null,ENl=null,ACc=()=>{ACc=Z(A1w);DUJ();},DWI=(a,b,c)=>{ACc();Ct(a,b,c);},BG3=(a,b)=>{let c=new A1w();DWI(c,a,b);return c;},BdF=b=>{ACc();if(!BG(b,E(760))){if(BG(b,E(789)))return AM4;return A1m;}return AEU;},CB9=a=>{ACc();if(a!==AEU){if(a===AM4){FX();return AFX;}FX();return RQ;}FX();return AFq;},DUJ=()=>{let b,c,d;A1m=BG3(E(883),0);AEU=BG3(E(4891),1);b=BG3(E(4765),2);AM4=b;c=K(A1w,3);d=c.data;d[0]=A1m;d[1]=AEU;d[2]=b;ENl=c;},A25=N(Bx),Bni +=null,ATb=null,BcH=null,D53=null,ADa=()=>{ADa=Z(A25);DSM();},EyI=(a,b,c)=>{ADa();Ct(a,b,c);},BNP=(a,b)=>{let c=new A25();EyI(c,a,b);return c;},Blt=a=>{let b;switch(a.bGO){case 0:break;case 1:F$();return BPp;case 2:F$();return Cv4;default:b=new C4;X(b);J(b);}F$();return CHu;},DSM=()=>{let b,c,d;Bni=BNP(E(4892),0);ATb=BNP(E(4893),1);b=BNP(E(469),2);BcH=b;c=K(A25,3);d=c.data;d[0]=Bni;d[1]=ATb;d[2]=b;D53=c;},A6D=N(Bx),A1e=null,BoT=null,D56=null,ARW=()=>{ARW=Z(A6D);D0l();},Fi3=(a,b,c)=>{ARW();Ct(a,b,c);},Dm6=(a, +b)=>{let c=new A6D();Fi3(c,a,b);return c;},D0l=()=>{let b,c,d;A1e=Dm6(E(2557),0);b=Dm6(E(2559),1);BoT=b;c=K(A6D,2);d=c.data;d[0]=A1e;d[1]=b;D56=c;},CNB=N(0),DdI=N(0); +function B0F(){let a=this;F.call(a);a.coO=null;a.cfz=0;a.b$_=0;a.cCA=null;} +let CqS=null,Cjo=null,CfA=null,CvG=null,B$3=null,C_5=null,C_4=null,C$d=null,C$e=null,B3f=null,B3g=null,CJZ=null,Cvu=null,CDe=null,BJU=null,Dd8=null,Dd7=null,BL4=null,CzJ=null,BnH=null,CmU=null,Csu=null,Csv=null,CsI=null,C5l=null,Dsb=null,AFl=()=>{AFl=Z(B0F);DCg();},K5=(a,b,c)=>{let d;d=D3(b,c);if(GW(d))return El(d,1);return null;},Dqy=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;f=new DeB;f.cVv=d;f.clN=e;f.cDc=a;g=new BMm;d=Dkd(f);C$T(g,(b.h2(d)).h2(Cc(d)),f,CnX(c,0.0,0.0,c,0.0,0.0),0.0,c);h=Bk();i=U1();j +=(CCi(a)).dX();while(j.dY()){k=j.dZ();if(BO(k,E(4894))){b=Jt(k,E(4895),E(4896));d=A7u(a,BaS(a,g,b,i),b);l=IZ(b,E(4897))+3|0;e=B_o(B_(b,l,In(b,34,l)),LR());f=d.bWl;k=FtE(e,d.bSi);d=Br(k.bXc);a:{b:{while(Bq(d)){e=(Bm(d)).bO7;NQ();if(e!==Xw)break b;}l=1;break a;}l=0;}if(!l)f.hP(k);}else if(BO(k,E(4898))){g=EJ(h,0);Fp(i);}else if(BO(k,E(379))){Ik(h,0,g);EY(i,k);}else if(BO(k,E(380))){Ik(h,0,g);EY(i,k);g=A7u(a,BaS(a,g,k,i),k);}else if(BO(k,E(4899))){d=A7u(a,BaS(a,g,k,i),k);b=d.bSi;m=b.bMu;n=b.bMt;c=b.bOk;o=b.bOj;p +=DM(K5(a,B3f,k))*m;q=DM(K5(a,B3g,k))*n;m=DM(K5(a,BJU,k))*m;n=DM(K5(a,BJU,k))*n;CXj(AMe(d,Bh(c+p-m,o+q-n)),Fz(m*2.0,n*2.0));}else if(BO(k,E(4900))){d=A7u(a,BaS(a,g,k,i),k);r=DM(K5(a,B3f,k));s=DM(K5(a,B3g,k));n=DM(K5(a,Dd8,k));m=DM(K5(a,Dd7,k));b=EE();Ec(b,0.0,m);Mk(b,n,m,0.0,0.0,1.0,n,0.0);Mk(b,n,m,0.0,0.0,1.0,2.0*n,m);Mk(b,n,m,0.0,0.0,1.0,n,2.0*m);Mk(b,n,m,0.0,0.0,1.0,0.0,m);b=A6x(b,r-n,s-m);t=d.bSi;n=d.b1D;c=d.bZJ;e=A$4(b.cja,b.cgL);f=Br(b.bXc);while(Bq(f)){BnS(e,E9W(Bm(f),t,n,c));}CXj(d,e);}else if(BO(k,E(4901))) +{b=A7u(a,BaS(a,g,k,i),k);d=b.bSi;q=d.bMu;p=d.bMt;m=d.bOk;c=D3W(Eov(b));n=DM(K5(a,Csu,k))*q+m;c=DM(K5(a,Csv,k))*p+c;d=Bzq(a,k,i);l=DOD(a,k)*Eiw(b)|0;e=D3(Cjo,k);if(GW(e)){e=El(e,1);d=Eu(KI(),d);f=CRL(a,k,i);if(f===null)f=E(394);d=N1(e,UR(AI6(f,EO(),l),d,d,null));((DH2(b)).h2(Bh(n,c))).hP(d);}}}},CCi=a=>{let b,c;Jl(a);try{a:{if(HH(a.coO)){AFl();b=D3(CqS,a.cCA);while(true){if(!GW(b))break a;c=El(b,0);if(!(!BO(c,E(4902))&&!BO(c,E(380))&&!BO(c,E(379))&&!BO(c,E(4898))&&!BO(c,E(4899))&&!BO(c,E(4900))&&!BO(c,E(4901))))U(a.coO, +c);else !BO(c,E(371))&&!BO(c,E(4903));}}}return a.coO;}finally{G2(a);}},BaS=(a,b,c,d)=>{let e,f,g,h;e=Bzq(a,c,d);f=K5(a,BL4,c);g=K5(a,CzJ,c);if(g!==null)b=AMe(b,Dw(b.bZJ*DM(g)));if(f!==null){b=AMe(b,CSr(b,f));if(e===null)return AMe(b,Cc(CL7(b)));}if(Bj(E(71),e))b=AMe(b,Cc(E4()));else{h=e!==null?CSr(b,e):CL7(b);if(f===null)b=AMe(b,h);b=AMe(b,Cc(h));}return b;},CRL=(a,b,c)=>{let d,e;AFl();d=K5(a,Cvu,b);if(d===null){e=K5(a,BnH,b);if(e!==null)d=K5(a,Dsb,e);}a:{if(d===null&&c!==null){c=CzD(c);while(true){if(!C$Y(c))break a;d +=CRL(a,CwA(c),null);if(d!==null)break;}return d;}}return d;},Bzq=(a,b,c)=>{let d,e;AFl();d=K5(a,CJZ,b);if(d===null){e=K5(a,BnH,b);if(e!==null)d=K5(a,CsI,e);}a:{if(d===null&&c!==null){c=CzD(c);while(true){if(!C$Y(c))break a;d=Bzq(a,CwA(c),null);if(d!==null)break;}return d;}}return d;},DOD=(a,b)=>{let c,d;AFl();c=K5(a,CDe,b);if(c===null){d=K5(a,BnH,b);if(d!==null)c=K5(a,C5l,d);}if(c!==null){if(Kr(D3(CfA,c)))return CZ(Ih(c,E(4904),E(14)));return CZ(c);}return 14;},A7u=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q;AFl();d +=K5(a,CmU,c);if(d!==null){if(!CB(d,E(4905))){if(!CB(d,E(4906))){e=Hr(2).data;e[0]=1.0;e[1]=1.0;c=D3(C$d,d);if(GW(c)){e[0]=DM(El(c,1));e[1]=e[0];}else{c=D3(C$e,d);if(GW(c)){e[0]=DM(El(c,1));e[1]=DM(El(c,2));}}f=0.0;g=0.0;c=D3(C_5,d);if(GW(c)){f=DM(El(c,1));g=DM(El(c,2));}else{c=D3(C_4,d);if(GW(c)){f=DM(El(c,1));g=DM(El(c,1));}}h=Bh(f,g);g=h.bHj;f=h.bHu;c=Buj(b.bSi);BRg(c,g,f);d=A$Q(b.bWl,b.bYW,c,b.b1D,b.bZJ);f=e[0];g=e[1];if(f===g){b=Buj(d.bSi);b.bMu=b.bMu*f;b.bPi=b.bPi*f;b.bOk=b.bOk*f;b.bPg=b.bPg*g;b.bMt=b.bMt +*g;b.bOj=b.bOj*g;return A$Q(d.bWl,d.bYW,b,d.b1D,1.0*f);}b=new Bt;X(b);J(b);}c=D3(CvG,d);if(!GW(c)){c=Fm();h=new S;T(h);H(H(h,E(4907)),d);d=Q(h);Fw(c,d);}else{f=DM(El(c,1));g=DM(El(c,2));i=DM(El(c,3));j=DM(El(c,4));k=DM(El(c,5));l=DM(El(c,6));c=Buj(b.bSi);d=new Bpq;e=Hr(6).data;e[0]=f;e[1]=g;e[2]=i;e[3]=j;e[4]=k;e[5]=l;d.bMu=e[0];d.bPg=e[1];d.bPi=e[2];d.bMt=e[3];d.bOk=e[4];d.bOj=e[5];Emu(c,d);b=A$Q(b.bWl,b.bYW,c,b.b1D,b.bZJ);}return b;}c=D3(B$3,d);if(!GW(c)){c=Fm();h=new S;T(h);H(H(h,E(4907)),d);d=Q(h);Fw(c, +d);}else{f=DM(El(c,1));g=DM(El(c,2));i=DM(El(c,3));c=Buj(b.bSi);j=f*3.141592653589793/180.0;BRg(c,g,i);k=G4(j);j=H0(j);l=c.bMu;m=l*k;n=c.bPi;m=m+n*j;o= -j;l=l*o+n*k;n=c.bPg;p=n*k;q=c.bMt;j=p+q*j;k=n*o+q*k;c.bMu=m;c.bPi=l;c.bPg=j;c.bMt=k;BRg(c, -g, -i);b=A$Q(b.bWl,b.bYW,c,b.b1D+f,b.bZJ);}return b;}return b;},Fba=(a,b,c,d,e)=>{let f,g,h;f=Dj$(a.cCA,d);g=BnQ(f);h=Bt$(f);f=new C1e;f.c4Z=a;f.cv8=e;f.c5A=d;f.c2G=b;f.cOo=c;f.c2Y=g;f.c5V=h;return f;},CcF=a=>{let b,c,d;b=(CCi(a)).dX();while(b.dY()){c=b.dZ();if(!(!CB(c, +E(4894))&&!CB(c,E(380))&&!CB(c,E(4899))&&!CB(c,E(4900)))){d=Bzq(a,c,null);C$R(a,K5(a,BL4,c));C$R(a,d);}}},C$R=(a,b)=>{let c,d;if(b!==null){c=Eu(KI(),b);AAi();d=(A$c(c.gw(CQD))).bJz;a.cfz=DO(a.cfz,d);a.b$_=DT(a.b$_,d);}},DCg=()=>{let b,c;CqS=Dp(E(4908));Cjo=Dp(E(4909));CfA=Dp(E(4910));CvG=Dp(E(4911));B$3=Dp(E(4912));C_5=Dp(E(4913));C_4=Dp(E(4914));C$d=Dp(E(4915));C$e=Dp(E(4916));B3f=Dp(E(4917));B3g=Dp(E(4918));CJZ=Dp(E(4919));Cvu=Dp(E(4920));CDe=Dp(E(4921));BJU=Dp(E(4922));Dd8=Dp(E(4923));Dd7=Dp(E(4924));BL4 +=Dp(E(4925));CzJ=Dp(E(4926));BnH=Dp(E(4927));CmU=Dp(E(4928));Csu=Dp(E(4929));Csv=Dp(E(4930));b=A1d(E(4931));c=new S;T(c);H(H(c,b),E(4932));CsI=Dp(Q(c));b=A1d(E(4933));c=new S;T(c);H(H(c,b),E(4932));C5l=Dp(Q(c));b=A1d(E(4934));c=new S;T(c);H(H(c,b),E(4932));Dsb=Dp(Q(c));}; +function C4f(){let a=this;F.call(a);a.cFa=null;a.chC=null;a.cni=null;} +let Enn=a=>{let b,c,d;b=BY(a.chC);c=BY(a.cni);d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},E$8=(a,b,c,d)=>{a.chC=B$(b);if(d===null)d=b;a.cFa=d;a.cni=c;},C5u=(a,b,c)=>{let d=new C4f();E$8(d,a,b,c);return d;}; +function BJs(){let a=this;F.call(a);a.ced=null;a.clj=null;a.cev=null;a.cH6=null;} +let CRv=(a,b,c,d,e)=>{a.ced=b;a.clj=c;a.cev=d;a.cH6=e;},E7W=(a,b,c,d)=>{let e=new BJs();CRv(e,a,b,c,d);return e;},BH4=(b,c,d)=>{let e;e=new BJs;AGz();CRv(e,b,c,d,A19);return e;},ET6=a=>{return a.cH6;},D2u=N(),JR=b=>{let c;c=new C8E;c.cv3=b;return c;},Cn1=b=>{let c;c=new C8u;c.csg=b;return c;},C_N=b=>{let c;c=new C8v;c.cCv=b;return c;},BpT=(b,c)=>{let d;d=new C8x;d.cXi=b;d.cXh=c;return d;},BTh=()=>{return new C8y;},AKJ=N(Bx),A_s=null,AUG=null,Bu4=null,Bq7=null,Bym=null,Bpa=null,BRr=null,BOC=null,BMg=null,BMh +=null,BL5=null,BN3=null,DFq=null,AWN=()=>{AWN=Z(AKJ);Eh$();},EcA=(a,b,c)=>{AWN();Ct(a,b,c);},Uq=(a,b)=>{let c=new AKJ();EcA(c,a,b);return c;},DfH=a=>{AWN();if(a!==Bu4){if(a!==BN3){if(a!==Bpa){if(a!==Bym){if(a!==Bq7){if(a!==AUG){if(a===A_s){F$();return AR7;}return null;}F$();return AS1;}F$();return A_N;}F$();return BVt;}F$();return BzF;}F$();return BwI;}F$();return Bqi;},Eh$=()=>{let b,c,d;A_s=Uq(E(461),0);AUG=Uq(E(469),1);Bu4=Uq(E(475),2);Bq7=Uq(E(463),3);Bym=Uq(E(460),4);Bpa=Uq(E(476),5);BRr=Uq(E(468),6);BOC +=Uq(E(464),7);BMg=Uq(E(4596),8);BMh=Uq(E(4597),9);BL5=Uq(E(459),10);b=Uq(E(474),11);BN3=b;c=K(AKJ,12);d=c.data;d[0]=A_s;d[1]=AUG;d[2]=Bu4;d[3]=Bq7;d[4]=Bym;d[5]=Bpa;d[6]=BRr;d[7]=BOC;d[8]=BMg;d[9]=BMh;d[10]=BL5;d[11]=b;DFq=c;},F6=N(),EoV=a=>{return 0;},EKH=a=>{return 0;}; +function A60(){Bx.call(this);this.cWe=0;} +let ATT=null,Bbl=null,BA3=null,Dv7=null,EgM=0,AO4=()=>{AO4=Z(A60);Eho();},DPH=(a,b,c,d)=>{AO4();Ct(a,b,c);a.cWe=d;},BRK=(a,b,c)=>{let d=new A60();DPH(d,a,b,c);return d;},Dci=(a,b,c,d)=>{let e,f,g,h,i;AO4();if(a!==ATT){if(a!==Bbl){if(a===BA3){e=BfF(b,c,4);b=0;while(b{let b,c,d;EgM=0;ATT=BRK(E(4935),0,16);Bbl=BRK(E(4936),1,8);b=BRK(E(4937),2,4);BA3=b;c=K(A60,3);d=c.data;d[0]=ATT;d[1]=Bbl;d[2]=b;Dv7=c;},Dfv=N(),CjS=null,BE1=()=>{BE1 +=Z(Dfv);EB7();},EB7=()=>{let b;b=new BQ4;Byh();CjS=b;}; +function BYn(){let a=this;AAl.call(a);a.bZe=null;a.b6K=null;a.b20=0;a.b0l=0;a.cZr=0;} +let BIq=N(0); +function B5p(){let a=this;BYn.call(a);a.cYX=0;a.cwN=0;a.b6o=0;a.b3g=0;a.b2n=0;a.bOT=null;a.bLH=null;a.b_Y=null;a.ca_=null;a.c7v=null;} +let C2m=(a,b)=>{let c,d,$$je;c=new DiD;A3M(c,b);c.b95=b!==null?BD(512):null;c.bXd=512;d=new CAy;d.c1f=1;a:{b:{try{d.bXD=Ftu(1);break a;}catch($$e){$$je=P($$e);if($$je instanceof A$n){break b;}else{throw $$e;}}}}A3M(a,c);a.bZe=d;a.b6K=BD(512);a.bLH=BD(26);c=new Dao;c.ceM=Bpk();a.b_Y=c;a.ca_=BD(256);a.c7v=Fd(256);if(b===null){b=new F2;X(b);J(b);}},FzP=a=>{let b=new B5p();C2m(b,a);return b;},A8a=a=>{let b;if(!a.b0l){AXe(a);if(!a.b0l){b=a.bZe;b.b5t=0;b.cp1=0;b.bXD=null;a.b0l=1;a.cZr=1;B3b(a);}}},AXe=a=>{let b,c, +d,e,f,g,h,i,j,k,l,$$je;if(!a.b0l){if(a.bOT!==null){b=null;a:{b:{try{EMJ(a,O(4294967295, 2147483647));break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){b=$$je;break b;}else{throw $$e;}}}}if(a.bOT.cjG!=8){c=a.b3g;d=c;}else{e=a.bZe.bXD;if(e!==null){e=e;d=Cp(e.bG2);c=Cp(e.bOW);}else{b=new BP;X(b);J(b);}}c:{f=a.b6o-d|0;if(f){e=a.bKr;g=a.b6K;h=a.b20-f|0;i=e.bXd;if(f<=i){j=g.data.length;if(h<=j&&h>=0){if(f>=0&&f<=(j-h|0)){k=e.b95;if(k!==null){Di(g,h,k,i-f|0,f);e.bXd=e.bXd-f|0;break c;}b=new Dd;Bp(b,E(2120));J(b);}b +=new TB;e=new S;T(e);BE(H(e,E(4938)),f);Bp(b,Q(e));J(b);}b=new TB;e=new S;T(e);BE(H(e,E(4939)),h);Bp(b,Q(e));J(b);}b=new Dd;Bp(b,E(4940));J(b);}}d:{e:{try{EsH(a,d,c);e=b;break d;}catch($$e){$$je=P($$e);if($$je instanceof Dt){e=$$je;break e;}else{throw $$e;}}}if(b!==null)e=b;}b=a.bZe;l=b.bXD;if(l!==null){b.chn=0;b.b9Y=0;b.cp1=0;b.b5t=0;CfE(l,15,b.c1f);a.b2n=0;a.b3g=0;a.b6o=0;a.b20=0;b=a.b_Y;C2N(b.ceM);b.cv6=BH;a.bOT=null;if(e!==null){if(!(e instanceof Dd)){if(!(e instanceof DR))J(Dng(e));J(e);}J(e);}return;}b +=new F2;X(b);J(b);}return;}b=new Dd;X(b);J(b);},EsH=(a,b,c)=>{let d;if(a.cwN){a.bKr.BK(a.bLH,0,16);if(DS(AFT(a,a.bLH,0),V(134695760))){a.bOT.cpG=AFT(a,a.bLH,4);a.bOT.cip=AFT(a,a.bLH,8);a.bOT.b63=AFT(a,a.bLH,12);}else{d=new AMw;X(d);J(d);}}if(DS(a.bOT.cpG,Cn0(a.b_Y.ceM))){d=a.bOT;if(DS(d.cip,V(b))&&DS(d.b63,V(c)))return;d=new AMw;X(d);J(d);}d=new AMw;X(d);J(d);},Dlk=a=>{let b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,$$je;AXe(a);if(!a.cYX){b=0;while(true){if(b==4){c=AFT(a,a.bLH,0);if(D4(c,V(33639248))){if(DS(c,V(67324752))) +{d=0;while(true){if(d==26){if((AKh(a,a.bLH,0)&255)<=20){a.cwN=(AKh(a,a.bLH,2)&8)!=8?0:1;e=AKh(a,a.bLH,6);f=AKh(a,a.bLH,8);g=AKh(a,a.bLH,4);h=BH;i=BH;j=V(-1);if(!a.cwN){h=AFT(a,a.bLH,10);i=AFT(a,a.bLH,14);j=AFT(a,a.bLH,18);}k=AKh(a,a.bLH,22);if(k){l=AKh(a,a.bLH,24);m=0;if(k>a.ca_.data.length){a.ca_=BD(k);a.c7v=Fd(k);}while(true){if(m==k){n=new Bi;o=a.ca_;TU();p=Vb;Pu();q=CmV(o,0,k);a:{try{r=CVz(p);U0();q=FjK(DdV(Drb(r,WH),WH),q);break a;}catch($$e){$$je=P($$e);if($$je instanceof AMA){q=$$je;}else{throw $$e;}}r +=new C4;ABa(r,E(3),q);J(r);}d=q.cAF===null?0:1;if(d&&!q.bHS&&q.bLv==q.V())o=CKR(q);else{o=Fd(IL(q));BSz(q,o,0,o.data.length);}n.bGI=CDW(o.data);p=new B9s;p.cip=V(-1);p.cpG=V(-1);p.b63=V(-1);p.cjG=(-1);p.cOI=(-1);p.cLc=(-1);p.dcJ=(-1);p.c72=V(-1);if(n.bGI.length<=65535){p.cq6=n;a.bOT=p;p.cOI=e;p.cLc=f;if(g&&g!=8){p=new Bt;X(p);J(p);}p.cjG=g;if(D4(j,V(-1))){if(FE(h,BH)&&IH(h,O(4294967295, 0))){p.cpG=h;Dz_(p,j);Dun(a.bOT,i);}else J(Ms());}b:{if(l>0){d=0;o=BD(l);while(true){if(d==l){FpL(a.bOT,o);break b;}b=a.bKr.BK(o, +d,l-d|0);d=d+b|0;if(b==(-1))break;}J(E6o());}}return a.bOT;}p=new Bt;X(p);J(p);}d=a.bKr.BK(a.ca_,m,k-m|0);m=m+d|0;if(d==(-1))break;}p=new AA3;X(p);J(p);}p=new AMw;X(p);J(p);}p=new AMw;X(p);J(p);}b=a.bKr.BK(a.bLH,d,26-d|0);d=d+b|0;if(b==(-1))break;}p=new AA3;X(p);J(p);}return null;}a.cYX=1;return null;}d=a.bKr.BK(a.bLH,b,4-b|0);b=b+d|0;if(d==(-1))break;}return null;}return null;},CKw=(a,b,c,d)=>{let e,f,g,h,i,j,$$je;if(!a.b0l){e=a.bZe;if(!e.chn){f=a.bOT;if(f!==null){g=b.data.length;if(c<=g&&d>=0&&c>=0&&(g-c| +0)>=d){if(f.cjG){if(e.b5t!=e.cp1?0:1){e=a;if(!e.b0l){a:{g=e.bKr.D4(e.b6K);e.b20=g;if(g>0){f=e.bZe;h=e.b6K;e=f.bXD;if(e!==null){i=h.data.length;if(0<=i&&g>=0&&(i-0|0)>=g){f.b5t=0;f.cp1=g;CF4(e,h,0,g,0);break a;}e=new TB;X(e);J(e);}e=new BP;X(e);J(e);}}g=a.b20;if(g>0)a.b6o=a.b6o+g|0;}else{e=new Dd;X(e);J(e);}}b:{try{g=EJp(a.bZe,b,c,d);break b;}catch($$e){$$je=P($$e);if($$je instanceof Sg){e=$$je;}else{throw $$e;}}f=new AMw;Bp(f,e.bRf);J(f);}if(!g&&a.bZe.chn)return (-1);CV9(a.b_Y,b,c,g);return g;}i=Cp(f.b63);if +(a.b3g=a.b20){a.b2n=0;g=a.bKr.D4(a.b6K);a.b20=g;if(g!=(-1))a.b6o=a.b6o+g|0;else{a.cZr=1;return (-1);}}j=DO(d,a.b20-a.b2n|0);g=i-a.b3g|0;if(g>=j)g=j;Di(a.b6K,a.b2n,b,c,g);a.b2n=a.b2n+g|0;a.b3g=a.b3g+g|0;CV9(a.b_Y,b,c,g);return g;}return (-1);}e=new TB;X(e);J(e);}}return (-1);}e=new Dd;X(e);J(e);},EMJ=(a,b)=>{let c,d,e,f,g,h,i;if(FE(b,BH)){c=BH;d=V(2048);if(GR(b,d))d=b;e=BD(Cp(d));f=e.data;while(D4(c,b)){d=CE(b,c);g=V(f.length);if(G5(g,d))g=d;h=CKw(a,e,0,Cp(g));if(h==(-1))return c;c=BU(c,V(h));}return c;}i +=new Bt;X(i);J(i);},EWt=a=>{let b;if(!a.b0l){b=a.bOT;return !(b!==null&&FE(V(a.b3g),b.b63))?1:0;}b=new Dd;X(b);J(b);},AKh=(a,b,c)=>{b=b.data;return b[c]&255|(b[c+1|0]&255)<<8;},AFT=(a,b,c)=>{b=b.data;return Gu(Gu(Gu(Gu(BH,V(b[c]&255)),V((b[c+1|0]&255)<<8)),V((b[c+2|0]&255)<<16)),EU(V(b[c+3|0]&255),24));}; +function CYb(){F.call(this);this.bHV=null;} +let Feo=a=>{let b;b=Bk();a.bHV=b;U(b,E(4941));U(a.bHV,E(4942));U(a.bHV,E(4943));U(a.bHV,E(4944));U(a.bHV,E(4945));U(a.bHV,E(4946));U(a.bHV,E(4947));U(a.bHV,E(4948));U(a.bHV,E(4949));U(a.bHV,E(4950));U(a.bHV,E(4951));U(a.bHV,E(4952));U(a.bHV,E(4953));U(a.bHV,E(4954));U(a.bHV,E(4955));U(a.bHV,E(4956));U(a.bHV,E(4957));U(a.bHV,E(4958));U(a.bHV,E(4959));U(a.bHV,E(4960));U(a.bHV,E(4961));U(a.bHV,E(4962));U(a.bHV,E(4963));U(a.bHV,E(3999));U(a.bHV,E(4964));U(a.bHV,E(4965));U(a.bHV,E(4966));U(a.bHV,E(4967));U(a.bHV, +E(4968));U(a.bHV,E(4969));U(a.bHV,E(4970));U(a.bHV,E(4971));U(a.bHV,E(4972));U(a.bHV,E(4973));U(a.bHV,E(4974));U(a.bHV,E(4975));U(a.bHV,E(4976));U(a.bHV,E(4977));U(a.bHV,E(4978));U(a.bHV,E(4979));U(a.bHV,E(4980));U(a.bHV,E(4981));U(a.bHV,E(4982));U(a.bHV,E(4983));},DEj=()=>{let a=new CYb();Feo(a);return a;},Bjk=N(),ECc=null,EaD=null,DTo=null,ExI=null,EuM=null,En_=null,EoO=null,DNb=null,DV8=null,DIG=null,BlX=null,AF1=()=>{AF1=Z(Bjk);DtE();},U2=()=>{Jl(Bo(Bjk));try{AF1();if(BlX===null){AFS();BlX=AQn;}return BlX;} +finally{G2(Bo(Bjk));}},Cuy=b=>{let c;AF1();c=A2k(b);if(!TC(c)){c=null;if(!TC(c)){Vq(Jt(b,E(423),E(840)));return null;}return c;}return c;},A3z=b=>{let c,d,e,f,g,h,$$je;AF1();c=Bk();d=Cuy(b);if(d!==null){e=M0(Dl(d),A2k(E(81)));while(JO(e)){f=H5(e);a:{b:{try{g=ASo(AKd(f));if(BQ9(g))U(c,g);break a;}catch($$e){$$je=P($$e);if($$je instanceof Dd){h=$$je;break b;}else{throw $$e;}}}b=new CJV;b.c_Z=f;b.c_Y=h;Kh(b);}}return c;}return c;},DtE=()=>{let b;b=new BVD;B6M();ECc=b;EaD=new Ce1;DTo=new C10;ExI=new C0v;EuM=new Bh1;En_ +=new Cka;b=new CJy;b.dbs=new Bh1;EoO=b;b=new CZr;b.c8Z=new Bh1;DNb=b;DV8=new DqL;DIG=Dp(E(4984));BlX=null;},A2n=N(Bx),A8A=null,A7T=null,A76=null,A9Y=null,Brv=null,AQn=null,EJ9=null,AFS=()=>{AFS=Z(A2n);ELa();},Ee0=(a,b,c)=>{AFS();Ct(a,b,c);},AUu=(a,b)=>{let c=new A2n();Ee0(c,a,b);return c;},ELa=()=>{let b,c,d;A8A=AUu(E(4985),0);A7T=AUu(E(4986),1);A76=AUu(E(4987),2);A9Y=AUu(E(4988),3);Brv=AUu(E(4989),4);b=AUu(E(4990),5);AQn=b;c=K(A2n,6);d=c.data;d[0]=A8A;d[1]=A7T;d[2]=A76;d[3]=A9Y;d[4]=Brv;d[5]=b;EJ9=c;}; +function CN_(){let a=this;F.call(a);a.cTN=0.0;a.cWG=0.0;a.cTO=0.0;a.cWF=0.0;} +let BiU=N(C7),B19=(a,b)=>{AAG(a,CXf(b.bNX));},Fzm=a=>{let b=new BiU();B19(b,a);return b;}; +function Cf$(){F6.call(this);this.cTJ=null;} +let D$6=a=>{let b;b=K(Cn,1);b.data[0]=a.cTJ;return b;},DsD=(a,b,c,d,e,f,g)=>{let h;h=Fj();BQ(h,0.0,0.0);e=c-10.0;BQ(h,e,0.0);BQ(h,c,d/2.0);BQ(h,e,d);BQ(h,0.0,d);b.hP(h);},CHn=a=>{return MQ(10.0,20.0,10.0,10.0);},DOR=(a,b,c,d,e,f)=>{b=new CY3;b.cmn=a;b.cIb=e;b.cym=d;b.cwY=c;b.cMc=f;return b;},FxN=(a,b,c,d,e,f,g,h)=>{c=new CY4;c.cNi=a;c.cGU=g;c.csC=b;c.cfy=e;c.ctB=d;c.cSI=f;return c;},Sr=N(F6),BHg=(a,b,c,d,e,f)=>{let g;B$(d);g=a.a6B(e);b=new Cm4;b.ddT=a;b.cn9=c;b.co6=d;b.cjB=g;b.cJW=e;return b;},B6H=(a,b,c,d, +e,f,g,h)=>{b=new BV;X(b);J(b);}; +function BF3(){Sr.call(this);this.c6y=null;} +let C_8=(a,b)=>{a.c6y=b;},C8n=a=>{let b=new BF3();C_8(b,a);return b;},E8B=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=AIJ;return b;},EkG=(a,b)=>{return B1n(a.c6y,b);}; +function BZC(){Sr.call(this);this.c0Z=null;} +let EWh=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=AIt;return b;},EUg=(a,b)=>{return B1n(a.c0Z,b);},Fwp=(a,b,c,d,e,f,g,h)=>{return B6H(a,b,c,d,e,f,g,h);},DEB=(a,b,c,d,e,f)=>{return BHg(a,b,c,d,e,f);}; +function CHY(){F6.call(this);this.c5X=null;} +let D$O=(a,b)=>{a.c5X=b;},BsW=a=>{let b=new CHY();D$O(b,a);return b;},Fo7=a=>{let b;b=K(Cn,1);b.data[0]=a.c5X;return b;},CYm=(a,b,c,d,e,f,g)=>{let h,i;h=C2(c,d);i=!(g>0.0)?Ge(h,f):Cav(h,g);i.bG1=e;b.hP(i);},Bqw=a=>{return MQ(10.0,10.0,10.0,10.0);},DCX=(a,b,c,d,e,f)=>{b=new CAK;b.cik=a;b.cvp=e;b.cHC=d;b.cv7=c;b.c59=f;return b;},D0u=(a,b,c,d,e,f,g,h)=>{let i;i=new CAL;i.cnH=a;i.czf=g;i.ctp=d;i.cXz=h;i.b3V=e;i.cq$=b;i.c2U=c;i.cM9=f;return i;},Cte=N(F6),Exh=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=A$O;return b;},DdY +=(a,b,c,d,e,f)=>{let g,h,i;g=Ge(C2(c,d),f);g.bG1=e;b.hP(g);h=Fj();BQ(h,0.0,0.0);BQ(h,0.0,14.0);BQ(h,12.0,14.0);BQ(h,12.0,6.0);BQ(h,6.0,0.0);BQ(h,0.0,0.0);i=c-12.0-5.0;(b.h2(Bh(i,5.0))).hP(h);g=new FG;c=i+12.0;Hs(g,c-6.0,5.0);(b.h2(g)).hP(Fg(6.0));(b.h2(Bh(c,11.0))).hP(DE((-6.0)));},CKh=a=>{return MQ(10.0,20.0,13.0,10.0);},ESe=(a,b,c,d,e,f)=>{b=new Cw5;b.co5=a;b.cGF=e;b.cu1=d;b.cFR=c;return b;},Fvj=(a,b,c,d,e,f,g,h)=>{c=new Cw7;c.cUD=a;c.ctc=g;c.cI3=d;c.cfb=e;c.cu6=b;c.c5c=f;return c;},Cls=N(Sr),DwX=a=>{let b, +c;b=K(Cn,1);c=b.data;CV();c[0]=ASw;return b;},EHq=(a,b)=>{return CU0(Brj(b,!A$8(b)?0.0:4.0));},CpT=N(F6),DDD=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=AX4;return b;},Ddj=(a,b,c,d,e,f,g)=>{let h;h=Ge(C2(c,d),g);h.bG1=e;b.hP(h);if(f!==0.0)(b.h2(BW(f))).hP(DE(c));},CX5=a=>{return MQ(10.0,10.0,3.0,3.0);},E8u=(a,b,c,d,e,f)=>{b=new CYW;b.ciO=a;b.cFB=e;b.cFA=d;b.ctl=c;return b;},ElA=(a,b,c,d,e,f,g,h)=>{c=new CYU;c.c5E=a;c.cDP=g;c.cFx=d;c.czx=b;c.cfs=e;c.cJ9=f;return c;},Dnc=N(F6),Eiz=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0] +=A2y;return b;},CsH=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r;f=DiC(BU(Pc(c),CT(V(7919),Pc(d))));g=Bk();h=11.0;if(BC(c,d)/h>16.0)h=BC(c,d)/16.0;i=BA(8.0,8.0);j=new Jn;k=c-8.0;Kz(j,k,8.0);l=new Jn;m=d-8.0;Kz(l,k,m);n=BA(8.0,m);if(!(c>100.0&&d>100.0)){AEA(a,h,f,g,i,j);AEA(a,h,f,g,j,l);AEA(a,h,f,g,l,n);AEA(a,h,f,g,n,i);}else{AEA(a,h,f,g,ATP(i,7.0),ATP(j,(-7.0)));o=ASE(j,7.0);p=g;U(p,o);AEA(a,h,f,g,ASE(j,7.0),ASE(l,(-7.0)));U(p,ATP(l,(-7.0)));AEA(a,h,f,g,ATP(l,(-7.0)),ATP(n,7.0));U(p,ASE(n,(-7.0)));AEA(a,h,f, +g,ASE(n,(-7.0)),ASE(i,7.0));U(p,ATP(i,7.0));}l=g;U(l,Be(l,0));q=EE();AMc(q,Be(l,0));r=0;while(r<(l.bGJ-1|0)){n=Be(l,r);r=r+1|0;i=Be(l,r);o=BGc(n,i);h=o.cjh;c=Bjd(f,0.25,0.35);d=h*c;m= -h;AXb(q,Bi2(o,d,m*Bjd(f,0.4,0.55)),Bi2(o,h*(1.0-c),m*Bjd(f,0.4,0.55)),i);}q.bG1=e;(b.h2(BW(0.0))).hP(q);},ATP=(b,c)=>{return BA(b.bGK+c,b.bGL);},ASE=(b,c)=>{return BA(b.bGK,b.bGL+c);},AEA=(a,b,c,d,e,f)=>{let g,h;g=BGc(e,f);h=Bi2(g,g.cjh/2.0, -Bjd(c,1.0,1.0+Eh(12.0,b*0.8)));Cnu(a,c,d,e,h,b);Cnu(a,c,d,h,f,b);},Cnu=(a,b,c,d,e,f)=> +{let g,h,i,j,k,l;g=BGc(d,e);h=g.cjh;i=h/f|0;if(!i){f=h/2.0;i=h/f|0;}j=0;while(j{return Bad(b)*(d-c)+c;},CgD=a=>{return MQ(15.0,15.0,15.0,15.0);},DCl=(a,b,c,d,e,f)=>{b=new CRj;b.chA=a;b.cDu=e;b.cth=d;b.cwF=c;return b;},ERz=(a,b,c,d,e,f,g,h)=>{c=new CRi;c.cWC=a;c.cIV=g;c.cyv=d;c.cjL=e;c.cAu=b;c.cRL=f;return c;},Cl8=N(F6),DFx=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=AQy;return b;},DhE=(a,b,c,d,e,f)=>{let g, +h;g=Ge(C2(c-4.0,d-4.0),f);h=g;h.bG1=e;(b.h2(Bh(4.0,4.0))).hP(g);h.bG1=0.0;(b.h2(BW(0.0))).hP(g);},Byf=a=>{return MQ(10.0,10.0,10.0,10.0);},E5l=(a,b,c,d,e,f)=>{b=new DkL;b.cje=a;b.cy3=e;b.cya=d;b.cCf=c;b.c1L=f;return b;},DMB=(a,b,c,d,e,f,g,h)=>{c=new DkJ;c.cpx=a;c.cvt=g;c.cx6=d;c.c1G=h;c.b_9=e;c.cAz=b;c.cNL=f;return c;},Dn5=N(F6),Fxc=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=AAN;return b;},Djx=a=>{return MQ(10.0,10.0,10.0,10.0);},EZR=(a,b,c,d,e,f)=>{b=new CKo;b.cAn=a;b.cCV=e;b.cBt=d;b.cBA=c;return b;},Frz=(a, +b,c,d,e,f,g,h)=>{F$();return BPp.a4d(b,c,d,e,f,g,h);},Dn3=N(F6),DTK=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=AAN;return b;},CSs=(a,b,c,d,e,f)=>{let g,h,i;g=Ge(C2(c,d),f);g.bG1=e;h=C2(15.0,10.0);i=C2(4.0,2.0);b.hP(g);(b.h2(Bh(c-20.0,5.0))).hP(h);g=new FG;c=c-22.0;Hs(g,c,7.0);(b.h2(g)).hP(i);(b.h2(Bh(c,11.0))).hP(i);},Cr7=a=>{return MQ(15.0,25.0,20.0,10.0);},D0D=(a,b,c,d,e,f)=>{b=new Cbb;b.coI=a;b.cCN=e;b.cIn=d;b.cCU=c;return b;},E2r=(a,b,c,d,e,f,g,h)=>{c=new Cbc;c.cVV=a;c.crw=g;c.cD1=d;c.ciy=e;c.cwP=b;c.cQQ= +f;return c;}; +let Cup=N(Sr),Dym=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=AVc;return b;},ELh=(a,b)=>{return CO9(Brj(b,!A$8(b)?0.0:4.0));},Cq7=N(F6),D_4=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=ASD;return b;},CUM=(a,b,c,d,e)=>{let f,g,h;f=EE();f.bG1=e;Ec(f,0.0,10.0);e=c/2.0;HY(f,0.0,0.0,e,0.0,e,0.0);HY(f,e,0.0,c,0.0,c,10.0);g=d-10.0;B2(f,c,g);HY(f,c,d,e,d,e,d);HY(f,e,d,0.0,d,0.0,g);B2(f,0.0,10.0);b.hP(f);h=CWd(a,c);(b.h2(Cc(E4()))).hP(h);(b.h2(Bh(c,d))).hP(NX(10.0,10.0));},CWd=(a,b)=>{let c,d;c=EE();Ec(c,0.0,10.0);d=b/2.0;HY(c, +0.0,20.0,d,20.0,d,20.0);HY(c,d,20.0,b,20.0,b,10.0);return c;},Dd0=a=>{return MQ(10.0,10.0,24.0,5.0);},FvT=(a,b,c,d,e,f)=>{b=new CAh;b.cdx=a;b.cwL=e;b.csj=d;b.ctR=c;return b;},DQK=(a,b,c,d,e,f,g,h)=>{c=new CAg;c.c1i=a;c.cAA=g;c.crT=d;c.cmZ=e;c.cEI=b;c.cSE=f;return c;},EKL=a=>{return 15;},CJz=N(Sr),Em9=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=AXp;return b;},Dx$=(a,b)=>{return CrY(Brj(b,!A$8(b)?0.0:4.0));}; +function C2F(){F6.call(this);this.c4q=null;} +let FqQ=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=A77;return b;},CGG=(a,b,c,d,e,f)=>{let g,h,i,j,k;g=QE(f,0.0);if(!g){h=Fj();BQ(h,0.0,0.0);BQ(h,0.0,d);BQ(h,c,d);BQ(h,c,10.0);BQ(h,c-10.0,0.0);BQ(h,0.0,0.0);}else{h=EE();i=f/2.0;Ec(h,0.0,i);j=d-i;B2(h,0.0,j);HX(h,BA(i,d),i,0.0,0.0);B2(h,c-i,d);HX(h,BA(c,j),i,0.0,0.0);B2(h,c,10.0);B2(h,c-10.0,0.0);B2(h,i,0.0);HX(h,BA(0.0,i),i,0.0,0.0);}h.bG1=e;b.hP(h);k=EE();d=c-10.0;Ec(k,d,0.0);if(!g)B2(k,d,10.0);else{f=f/2.0;B2(k,d,10.0-f);HX(k,BA(d+f,10.0),f,0.0,0.0);}B2(k,c, +10.0);b.hP(k);},Buf=a=>{return MQ(10.0,10.0,10.0,10.0);},FkK=(a,b,c,d,e,f)=>{b=new Co5;b.ciK=a;b.cD_=e;b.cCG=d;b.cFz=c;return b;},EiD=(a,b,c,d,e,f,g,h)=>{c=new Co6;c.cpo=a;c.cAC=g;c.cCH=d;c.b9x=e;c.cs7=b;c.cL0=f;return c;}; +function CO1(){let a=this;F6.call(a);a.c5N=null;a.cle=0;} +let Fvs=(a,b,c)=>{a.cle=c;a.c5N=b;},CzW=(a,b)=>{let c=new CO1();Fvs(c,a,b);return c;},EB8=a=>{let b,c,d;b=JH(a);c=a.cle;d=new S;T(d);b=H(d,b);Bb(b,32);XU(b,c);return Q(d);},FjX=a=>{let b;b=K(Cn,1);b.data[0]=a.c5N;return b;},Czm=(a,b,c,d,e,f,g)=>{let h,i,j,k,l;h=BNV(a,c,e);i=By5(a,e);if(g===0.0){j=Fj();BQ(j,0.0,0.0);BQ(j,h,0.0);BQ(j,h+7.0,i);BQ(j,c,i);BQ(j,c,d);BQ(j,0.0,d);BQ(j,0.0,0.0);}else{j=EE();k=g/2.0;Ec(j,k,0.0);B2(j,h-k,0.0);HX(j,BA(h,k),k*1.5,0.0,1.0);B2(j,h+7.0,i);g=c-k;B2(j,g,i);HX(j,BA(c,i+k),k,0.0, +1.0);l=d-k;B2(j,c,l);HX(j,BA(g,d),k,0.0,1.0);B2(j,k,d);HX(j,BA(0.0,l),k,0.0,1.0);B2(j,0.0,k);HX(j,BA(k,0.0),k,0.0,1.0);}j.bG1=f;b.hP(j);(b.h2(BW(i))).hP(DE(h+7.0));},BNV=(a,b,c)=>{let d;d=c.bGE;return d!==0.0?d+3.0+3.0:BC(30.0,b/4.0);},By5=(a,b)=>{return b.bGE===0.0?10.0:b.bGF+3.0+3.0;},CXr=a=>{return MQ(10.0,20.0,13.0,10.0);},EHR=(a,b,c,d,e,f)=>{B$(b);f=new CIK;f.bYC=a;f.cr8=e;f.cIG=d;f.cy1=c;f.cFK=b;return f;},DvT=(a,b,c,d,e,f,g,h)=>{c=new CIJ;c.cdf=a;c.cEN=g;c.ciR=b;c.cEe=d;c.cyG=e;c.c1Y=f;return c;}; +function CiO(){F6.call(this);this.c3u=null;} +let EKq=a=>{let b;b=K(Cn,1);b.data[0]=a.c3u;return b;},EDN=(a,b)=>{a.c3u=b;},B72=a=>{let b=new CiO();EDN(b,a);return b;},C2$=(a,b,c,d,e,f,g)=>{let h,i,j,k,l;h=Buv(Ba_(Ge(C2(c,d),g)));h.bG1=f;b.hP(h);f=e.bGE;if(f!==0.0){i=f+10.0;j=10;}else{i=c/3.0;j=7;}k=CgW(a,e);l=EE();CTg(l);Ec(l,i,0.0);c=j;B2(l,i,k-c);B2(l,i-c,k);B2(l,0.0,k);(b.h2(Cc(E4()))).hP(l);},CgW=(a,b)=>{if(b.bGE!==0.0)return b.bGF+3.0;return 12.0;},C2r=a=>{return MQ(15.0,25.0,20.0,10.0);},Egv=(a,b,c,d,e,f)=>{b=new C_u;b.ce9=a;b.cJu=e;b.cDA=d;b.cAf +=c;return b;},DEP=(a,b,c,d,e,f,g,h)=>{c=new C_v;c.cwo=a;c.cuy=g;c.b9I=b;c.cH5=d;c.cy$=e;c.cLj=f;return c;}; +function BV1(){F6.call(this);this.dac=5.0;} +let E2O=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=Bab;return b;},D6C=(a,b,c,d,e,f)=>{b=new CBO;b.dc4=a;b.cIC=d;b.cqD=c;b.cYw=f;return b;},CrB=a=>{return MQ(10.0,10.0,10.0,10.0);},EAG=(a,b,c,d,e,f,g,h)=>{let i;i=new CBP;i.cuT=a;i.cuG=g;i.cuj=d;i.cY9=h;i.b44=e;i.cFp=b;i.cZ1=c;i.cNP=f;return i;},Dor=N(Sr),Eee=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=A9d;return b;},Fb2=(a,b)=>{let c,d,e,f;c=new C3l;d=b.bKT;e=b.bMx;f=!A$8(b)?0.0:4.0;c.dcY=1.0;c.ddH=8.0;c.c3$=d;c.cX0=e;c.cPs=f;return c;},D98=(a,b,c,d,e,f,g,h)=>{return B6H(a, +b,c,d,e,f,g,h);},EwO=(a,b,c,d,e,f)=>{return BHg(a,b,c,d,e,f);},CcI=N(F6),EgY=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=Bfv;return b;},Bc_=a=>{return MQ(10.0,10.0,10.0,10.0);},EUG=(a,b,c,d,e,f)=>{b=new CK0;b.cHS=a;b.cTX=e;b.cAI=d;b.cJb=c;b.cZv=f;return b;},Ewv=(a,b,c,d,e,f,g,h)=>{let i;i=new CK1;i.cxM=a;i.cO7=g;i.cBF=d;i.cSx=h;i.ceb=e;i.csS=b;i.cR$=c;i.c8w=f;return i;},CEL=N(F6),D5A=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=L0;return b;},CGf=(a,b,c,d,e)=>{let f,g;f=Fj();BQ(f,0.0,10.0);BQ(f,10.0,0.0);BQ(f,c,0.0);g +=d-10.0;BQ(f,c,g);c=c-10.0;BQ(f,c,d);BQ(f,0.0,d);BQ(f,0.0,10.0);f.bG1=e;b.hP(f);(b.h2(Bh(c,10.0))).hP(EB(10.0,(-10.0)));(b.h2(BW(10.0))).hP(DE(c));(b.h2(Bh(c,10.0))).hP(Fg(g));(b.h2(Bh(0.0,d))).hP(NX(10.0,10.0));},BX1=a=>{return MQ(15.0,25.0,20.0,10.0);},EQu=(a,b,c,d,e,f)=>{b=new CLi;b.b$p=a;b.cBw=e;b.ctT=d;b.cF6=c;b.c5w=f;return b;},Ek9=(a,b,c,d,e,f,g,h)=>{c=new CLj;c.cyL=a;c.csK=g;c.czp=d;c.c2x=h;c.b9U=e;c.cst=b;c.cNQ=f;return c;},EwT=a=>{return 5;},E5N=a=>{return 60;},Cha=N(F6),DWX=a=>{let b,c;b=K(Cn,1);c +=b.data;CV();c[0]=A2b;return b;},DgT=(a,b)=>{return Gs(b.bGE*b.bGF)*0.42;},C0F=a=>{return MQ(10.0,10.0,10.0,10.0);},D1K=(a,b,c,d,e,f)=>{b=new Dq8;b.b_5=a;b.ctb=e;b.cEr=d;b.cJh=c;b.c6L=f;return b;},DAq=(a,b,c,d,e,f,g,h)=>{b=new BV;X(b);J(b);}; +function C9q(){F6.call(this);this.cWt=null;} +let EuB=a=>{let b;b=K(Cn,1);b.data[0]=a.cWt;return b;},CXv=(a,b,c,d,e,f,g)=>{let h;h=Fj();BQ(h,0.0,0.0);e=c-10.0;BQ(h,e,0.0);f=d/2.0;BQ(h,c,f);BQ(h,e,d);BQ(h,0.0,d);BQ(h,10.0,f);b.hP(h);},DsH=a=>{return MQ(20.0,20.0,10.0,10.0);},Eq2=(a,b,c,d,e,f)=>{b=new CMg;b.cng=a;b.cxE=e;b.cBD=d;b.cJc=c;b.c2M=f;return b;},DXP=(a,b,c,d,e,f,g,h)=>{c=new CMh;c.cYI=a;c.ctI=g;c.cIi=b;c.cqk=e;c.cAR=d;c.cQJ=f;return c;}; +function CT9(){F6.call(this);this.c$c=5.0;} +let EO8=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=AUn;return b;},C1n=(a,b,c,d,e)=>{let f,g,h,i;f=EE();f.bG1=e;Ec(f,5.0,0.0);g=c-5.0;B2(f,g,0.0);h=d/2.0;HY(f,c,0.0,c,h,c,h);HY(f,c,h,c,d,g,d);B2(f,5.0,d);HY(f,0.0,d,0.0,h,0.0,h);HY(f,0.0,h,0.0,0.0,5.0,0.0);b.hP(f);i=EE();Ec(i,g,0.0);c=c-10.0;HY(i,c,0.0,c,h,c,h);HY(i,c,d,g,d,g,d);(b.h2(Cc(E4()))).hP(i);},Dkm=a=>{return MQ(5.0,15.0,5.0,5.0);},EEn=(a,b,c,d,e,f)=>{b=new C60;b.ccO=a;b.cEC=e;b.cs$=d;b.cGY=c;return b;},EFB=(a,b,c,d,e,f,g,h)=>{c=new C6Z;c.cZs=a;c.cxP=g;c.csZ +=d;c.cl7=e;c.cIx=b;c.cTf=f;return c;},C_7=N(F6),EaX=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=A4r;return b;},CkV=(a,b,c,d,e,f)=>{let g,h,i,j;g=Ge(C2(c-30.0,d),f);((b.h2(E4())).h2(BM(15.0))).hP(g);h=EE();if(f===0.0){Ec(h,0.0,0.0);B2(h,15.0,0.0);B2(h,15.0,d);f=c-15.0;B2(h,f,d);B2(h,f,0.0);B2(h,c,0.0);}else{Ec(h,0.0,0.0);f=f/2.0;B2(h,15.0-f,0.0);HX(h,BA(15.0,f),f,0.0,1.0);i=d-f;B2(h,15.0,i);HX(h,BA(15.0+f,d),f,0.0,0.0);j=c-15.0;B2(h,j-f,d);HX(h,BA(j,i),f,0.0,0.0);B2(h,j,f);HX(h,BA(j+f,0.0),f,0.0,1.0);B2(h,c,0.0);}h.bG1 +=e;(b.h2(Cc(E4()))).hP(h);},CQr=a=>{return MQ(25.0,25.0,10.0,10.0);},FaA=(a,b,c,d,e,f)=>{b=new C_j;b.cm4=a;b.ctd=e;b.cqI=d;b.csc=c;return b;},D9T=(a,b,c,d,e,f,g,h)=>{c=new C_i;c.cX7=a;c.cxw=g;c.cqH=d;c.chz=e;c.cw7=b;c.c6_=f;return c;},C_Q=N(F6),E1B=a=>{let b,c;b=K(Cn,1);c=b.data;CV();c[0]=A57;return b;},CRc=(a,b,c,d,e)=>{let f;f=Ge(C2(c,d),70.0);f.bG1=e;b.hP(f);},Ckb=a=>{return MQ(10.0,10.0,10.0,10.0);},EkP=(a,b,c,d,e,f)=>{b=new CJG;b.clh=a;b.cyF=e;b.cwx=d;b.cCt=c;return b;},EOo=(a,b,c,d,e,f,g,h)=>{c=new CJF;c.c36 +=a;c.cFS=g;c.cGO=d;c.ch$=e;c.cz_=b;c.cY6=f;return c;}; +function C9W(){F6.call(this);this.cid=0;} +let Fd_=(a,b)=>{a.cid=b;},CMF=a=>{let b=new C9W();Fd_(b,a);return b;},Fkc=a=>{let b,c;if(a.cid){b=K(Cn,2);c=b.data;CV();c[0]=AGJ;c[1]=AIt;return b;}b=K(Cn,1);c=b.data;CV();c[0]=AGJ;return b;},EWa=(a,b,c,d,e,f)=>{b=new COY;b.cDx=a;b.ddi=d;b.c8s=c;b.cKK=e;B3();c=FT(d,c,CO);b.dbw=c;if(b.cDx.cid)c=Js(c,7.0,0.0);b.cvV=c;return b;},D$Q=(a,b,c,d,e,f,g,h)=>{b=new BV;X(b);J(b);}; +function BO3(){F.call(this);this.c9r=null;} +let CjQ=null,Bfy=()=>{Bfy=Z(BO3);Fq8();},EEV=(a,b)=>{Bfy();a.c9r=b;},Ck3=a=>{let b=new BO3();EEV(b,a);return b;},EBm=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;Buw();Bvp(b,c,ByY);d=ZM(b);e=d/16.0;f=0.0;g=0;while(g=65535)i=16.0;else{j=h>>8&255;k=CjQ.data;if(j>=k.length)i=13.0;else{if(k[j]===null){b=new BB6;Bqy();l=BVd.data[j];m=l.data;n=m.length;if(!(n!=1&&n<256))b.cFC=l;else{o=BD(256);l=o.data;p=0;q=0;while(q{Bqy();CjQ=K(BB6,BVd.data.length);},B6S=N(0),BOc=a=>{return AYB(a.Ql());},AMS=N(0); +function CTs(){let a=this;F.call(a);a.ceR=null;a.cSf=0;a.cNq=null;} +let COQ=(a,b)=>{let c,d,e;if(a.cSf){a:{b:{c:{d:{e:{f:{g:{h:{c=a.ceR;d=Bd6(EA(a.cNq));d=(Bd6(b)-d|0)+1|0;c=c.bIP;e=(-1);switch(FP(c)){case 3201:break h;case 3246:break g;case 3276:break f;case 3383:break e;case 3428:break d;case 3651:break c;case 3886:break b;default:}break a;}if(!Bj(c,E(534)))break a;e=2;break a;}if(!Bj(c,E(4007)))break a;e=1;break a;}if(!Bj(c,E(530)))break a;e=0;break a;}if(!Bj(c,E(538)))break a;e=3;break a;}if(!Bj(c,E(540)))break a;e=4;break a;}if(!Bj(c,E(4008)))break a;e=5;break a;}if(Bj(c, +E(531)))e=6;}i:{j:{k:{l:{m:{n:{o:{p:{switch(e){case 0:break;case 1:break p;case 2:break o;case 3:break n;case 4:break m;case 5:break l;case 6:break j;default:break k;}b=new S;T(b);BE(H(b,E(4991)),d);b=Q(b);break i;}b=new S;T(b);BE(H(b,E(4992)),d);b=Q(b);break i;}b=new S;T(b);BE(H(b,E(4993)),d);b=Q(b);break i;}b=new S;T(b);BE(b,d);H(b,E(4994));b=Q(b);break i;}b=new S;T(b);BE(b,d);H(b,E(4995));b=Q(b);break i;}b=new S;T(b);BE(H(b,E(4996)),d);b=Q(b);break i;}b=new S;T(b);BE(H(b,E(4997)),d);b=Q(b);break i;}b=new S;T(b);Bb(b, +31532);BE(b,d);Bb(b,22825);b=Q(b);}return b;}c=a.ceR;KT();return ZV(B4a,b,c);},C8p=(a,b)=>{let c,d,e,f,g,h;c=COQ(a,b);d=b.bJ5;e=Ceq(d);f=Cgs(d);g=C3G(d);if(!e&&!f&&!g)return c;h=!g?Jv(E(4998),BB(F,[CL(e),CL(f)])):Jv(E(4999),BB(F,[CL(e),CL(f),CL(g)]));b=new S;T(b);c=H(b,c);Bb(c,32);H(c,h);return Q(b);}; +function C2o(){F.call(this);this.bY5=null;} +let SP=a=>{return Gc(a.bY5);},FsV=(a,b)=>{let c,d,e,f,g;c=null;d=(Gc(a.bY5)).dX();while(d.dY()){e=d.dZ();if(c!==null){f=CBR(c,b);g=C1f(e,b);c=EK(f,10.0);OC(g,c);}c=e;}},ClG=(a,b)=>{let c,d,e;c=null;d=(Gc(a.bY5)).dX();while(true){if(!d.dY())return null;e=d.dZ();if(e===b)break;c=e;}return c;},CCk=(a,b)=>{let c;c=(Gc(a.bY5)).dX();while(c.dY()){if(c.dZ()===b&&c.dY())return c.dZ();}return null;},EIv=(a,b,c)=>{Es(a.bY5,b,c);},K3=(a,b)=>{return FW(a.bY5,b);},Dne=(a,b,c,d)=>{let e,f,g,h,i,j,k,l;e=b.hE();f=BXs(a,e);g +=(SP(a)).dX();while(g.dY()){h=g.dZ();i=CW(h.bL$);j=0.0;Fa();if(d===Pe)j=f-(Bm2(h,e)).bGF;if(d!==NH){k=b.h2(Bh(i,j));B3();B8r(h,k,c,d,CF);}else{l=b.h2(Bh(i,j));B3();CG$(h,l,c,d,CF,h.bWm);}}},BXs=(a,b)=>{let c,d;c=0.0;d=(SP(a)).dX();while(d.dY()){c=BC(c,(Bm2(d.dZ(),b)).bGF);}return c;}; +function BMB(){let a=this;Er.call(a);a.bOJ=null;a.cc9=0;} +let Ccy=(a,b)=>{a.bOJ=B$(b);},Fx_=a=>{let b=new BMB();Ccy(b,a);return b;},DDc=(a,b)=>{let c,d,e;c=CW(a.bOJ.cz5)-CW(a.bOJ.ckA);d=CD5(a,C6c(a.bOJ,b))-CMN(a);e=a.bOJ;return Cl(c,d+(!e.cGc?1:2)*BXs(e.bYM,b));},CMN=a=>{let b,c;if(a.cc9){b=B0l(a.bOJ);c=a.cc9-1|0;return CW((Be(b,c)).b6f.bIp);}return 0.0;},CD5=(a,b)=>{let c,d,e;c=B0l(a.bOJ);d=a.cc9;c=c;if(d{return a.bOJ.ckA;},Cax=(a,b)=>{if(b!=a.cc9){a.cc9=b;BGX(a);}},AZG=N(Bx),AFm=null,AFP= +null,D2i=null,R7=()=>{R7=Z(AZG);D$D();},Ef7=(a,b,c)=>{R7();Ct(a,b,c);},ChH=(a,b)=>{let c=new AZG();Ef7(c,a,b);return c;},D$D=()=>{let b,c,d;AFm=ChH(E(5000),0);b=ChH(E(5001),1);AFP=b;c=K(AZG,2);d=c.data;d[0]=AFm;d[1]=b;D2i=c;},BV$=N(TY),Czk=0,B1f=()=>{B1f=Z(BV$);Dzi();},Ege=a=>{let b,c,d,e,f,g,h,i;if(DdL(a)){b=(H_(a.bIx)).bHp;if(Df()&&!Czk&&!BO(b,E(5002))){b=new C4;X(b);J(b);}c=Tc(12);d=new CGA;e=a.b4D;d.ceG=Bk();d.caK=Dy();d.cI1=c;d.cHO=e;e=null;a:while(true){if(Bj((Jg(a.bIx,0)).bHp,E(582))){f=H_(a.bIx);return AE3(d, +f.bJD);}g=H_(a.bIx);h=g.bHp;if(e===null){c=d.ceG;b=Cjk(h,d.cI1,d.cHO);U(c,b);}else if(!e.bGI.length)e=h;else{b=Br(d.ceG);while(true){if(!Bq(b))break a;f=Bm(b);if(Bj(f.cn2,e))break;}i=DG(d.caK,f);if(i===null){i=new C$U;b=d.cI1;c=d.cHO;i.ck0=Bk();i.cUO=b;i.cW2=c;C9(d.caK,f,i);}c=i.ck0;b=Cjk(h,i.cUO,i.cW2);U(c,b);}b=g.bJD;R7();if(b===AFm)e=E(14);}b=new Bt;X(b);J(b);}b=new BP;X(b);J(b);},DdL=a=>{if(Bj((Jg(a.bIx,0)).bHp,E(5002)))return 1;return 0;},Dzi=()=>{Czk=0;},BMp=N(TY),Coc=0,B1W=()=>{B1W=Z(BMp);D3Y();},Eem +=a=>{let b,c,d,e,f,g;if(B$y(a)){b=(H_(a.bIx)).bHp;if(Df()&&!Coc&&!BO(b,E(5003))){b=new C4;X(b);J(b);}c=Tc(12);d=new C0n;e=a.b4D;d.b4Y=Bk();d.c9e=2.0;d.c9d=3.0;d.c9c=10.0;d.cij=0;d.c4H=c;d.cKe=e;while(!Bj((Jg(a.bIx,0)).bHp,E(582))){e=H_(a.bIx);b=e.bHp;c=new AXE;f=K(Bi,1);f.data[0]=b;BhD(c,Bv(f),d.c4H,d.cKe);U(d.b4Y,c);c=e.bJD;R7();if(c===AFm)d.cij=1;}g=H_(a.bIx);return AE3(d,g.bJD);}b=new BP;X(b);J(b);},B$y=a=>{if(Bj((Jg(a.bIx,0)).bHp,E(5003)))return 1;return 0;},D3Y=()=>{Coc=0;}; +function Ci_(){F.call(this);this.czZ=null;} +let ExR=a=>{let b,c,d,e;if(Ci$(a)){b=H_(a.czZ);c=b.bHp;d=new Ub;e=new CR$;e.cV7=Bn(c,0);Wb(d,e,b.bJD);return d;}e=new BP;X(e);J(e);},Ci$=a=>{let b;b=(Jg(a.czZ,0)).bHp;if(!Bqc(a,b,45)){if(!Bqc(a,b,61)){if(!Bqc(a,b,126)){if(Bqc(a,b,46))return 1;return 0;}return 1;}return 1;}return 1;},Bqc=(a,b,c)=>{let d;d=new S;T(d);Bb(d,c);Bb(d,c);d=Q(d);return !(BO(b,d)&&Dr(b,d))?0:1;}; +function CTr(){let a=this;F.call(a);a.czL=null;a.cTI=null;} +let E$2=a=>{let b,c,d,e,f;if(CQE(a)){b=H_(a.czL);c=b.bHp;d=Tc(12);e=new Ub;f=new Dft;BY1(f,B_(c,1,c.bGI.length-1|0),d,1,a.cTI);Wb(e,f,b.bJD);return e;}f=new BP;X(f);J(f);},CQE=a=>{let b;b=(Jg(a.czL,0)).bHp;return !(BO(b,E(1268))&&Dr(b,E(1268)))?0:1;}; +function C_9(){let a=this;F.call(a);a.cvG=null;a.cL4=null;} +let DIq=a=>{let b,c,d,e,f,g,h;if(C$Q(a)){b=H_(a.cvG);c=b.bHp;d=Tc(12);e=new Ub;f=new AUr;g=Eq(c,93);h=K(Bi,1);h.data[0]=ES(CC(c,g+1|0));A6j(f,Bv(h),d,0,1,a.cL4);Wb(e,f,b.bJD);return e;}f=new BP;X(f);J(f);},C$Q=a=>{return BO((Jg(a.cvG,0)).bHp,E(5004));}; +function CDu(){let a=this;F.call(a);a.cIM=null;a.cRJ=null;} +let DZO=a=>{let b,c,d,e,f,g,h;if(Cn9(a)){b=H_(a.cIM);c=b.bHp;d=Tc(12);e=new Ub;f=new AUr;g=Eq(c,93);h=K(Bi,1);h.data[0]=ES(CC(c,g+1|0));A6j(f,Bv(h),d,0,0,a.cRJ);Wb(e,f,b.bJD);return e;}f=new BP;X(f);J(f);},Cn9=a=>{let b;b=(Jg(a.cIM,0)).bHp;return !(!BO(b,E(20))&&!BO(b,E(5005)))?1:0;}; +function CZ8(){let a=this;F.call(a);a.cyi=null;a.cOt=null;} +let EKw=a=>{let b,c,d,e,f;if(CBH(a)){b=H_(a.cyi);c=b.bHp;d=Tc(12);e=new Ub;f=new CcB;BY1(f,B_(c,1,c.bGI.length-1|0),d,1,a.cOt);f.ddk=2.5;f.c_M=2.0;f.c_L=2.0;Wb(e,f,b.bJD);return e;}f=new BP;X(f);J(f);},CBH=a=>{let b;b=(Jg(a.cyi,0)).bHp;if(!BO(b,E(404)))return !(BO(b,E(842))&&Dr(b,E(843)))?0:1;return 0;}; +function Cla(){let a=this;F.call(a);a.crq=null;a.cW8=null;} +let EUy=(a,b,c)=>{a.crq=b;a.cW8=c;},DDe=(a,b)=>{let c=new Cla();EUy(c,a,b);return c;},DRs=a=>{let b,c,d,e,f,g,h,i;if(CEN(a)){b=H_(a.crq);c=b.bHp;d=Tc(12);e=new Ub;f=new CF5;g=B_(c,1,c.bGI.length-1|0);c=a.cW8;h=Eq(g,94);BY1(f,h==(-1)?g:B_(g,0,h),d,1,c);f.c78=12;i=M0(g,E(1174));d=Bk();while(JO(i)){g=H5(i);U(d,g);}g=d;if(g.bGJ>0)EJ(g,0);if(!g.bGJ)f.ccM=null;else{d=Ls(d);i=f.cED;B3();f.ccM=C_(d,i,CF,c);}Wb(e,f,b.bJD);return e;}f=new BP;X(f);J(f);},CEN=a=>{let b;b=(Jg(a.crq,0)).bHp;return !(BO(b,E(1174))&&Dr(b,E(1174))) +?0:1;}; +function Da9(){let a=this;F.call(a);a.cyu=null;a.cWo=null;} +let FhX=(a,b,c)=>{a.cyu=b;a.cWo=c;},E9x=(a,b)=>{let c=new Da9();FhX(c,a,b);return c;},E8F=a=>{let b,c,d,e,f,g,h;if(COM(a)){b=H_(a.cyu);c=b.bHp;d=Tc(12);e=new Ub;f=new AUr;g=Eq(c,41);h=K(Bi,1);h.data[0]=ES(CC(c,g+1|0));A6j(f,Bv(h),d,1,1,a.cWo);Wb(e,f,b.bJD);return e;}f=new BP;X(f);J(f);},COM=a=>{return BO((Jg(a.cyu,0)).bHp,E(5006));}; +function CFp(){let a=this;F.call(a);a.cry=null;a.cUx=null;} +let DV6=(a,b,c)=>{a.cry=b;a.cUx=c;},EA$=(a,b)=>{let c=new CFp();DV6(c,a,b);return c;},EoM=a=>{let b,c,d,e,f,g,h;if(B$4(a)){b=H_(a.cry);c=b.bHp;d=Tc(12);e=new Ub;f=new AUr;g=Eq(c,41);h=K(Bi,1);h.data[0]=ES(CC(c,g+1|0));A6j(f,Bv(h),d,1,0,a.cUx);Wb(e,f,b.bJD);return e;}f=new BP;X(f);J(f);},B$4=a=>{let b;b=(Jg(a.cry,0)).bHp;return !(!BO(b,E(2694))&&!BO(b,E(5007)))?1:0;}; +function DkD(){let a=this;F.call(a);a.b7T=null;a.c0O=null;} +let EOL=(a,b,c)=>{a.b7T=b;a.c0O=c;},Erm=(a,b)=>{let c=new DkD();EOL(c,a,b);return c;},DH3=a=>{let b,c,d,e,f;if(B_T(a)){b=(H_(a.b7T)).bHp;c=b.bGI.length<=2?null:CC(b,2);d=Bk();while(!Bj((Jg(a.b7T,0)).bHp,E(1776))){b=(H_(a.b7T)).bHp;U(d,b);}e=H_(a.b7T);f=new CKC;f.b4F=d;if(c!==null)C9(a.c0O.crl,c,f);return AE3(f,e.bJD);}b=new BP;X(b);J(b);},B_T=a=>{let b;b=(Jg(a.b7T,0)).bHp;return !(!Bj(b,E(1775))&&!Qc(b,E(5008)))?1:0;}; +function CSz(){let a=this;F.call(a);a.cQb=null;a.cA6=null;} +let FnW=(a,b,c)=>{a.cA6=b;a.cQb=c;},DY4=(a,b)=>{let c=new CSz();FnW(c,a,b);return c;},FbE=a=>{let b,c,d,e;if(CCO(a)){b=H_(a.cA6);c=b.bHp;c=B_(c,2,c.bGI.length-2|0);d=a.cQb.crl;e=B$(c);d=B$(DG(d,e));e=new Ddc;e.cn4=d;return AE3(Gp(e,c),b.bJD);}b=new BP;X(b);J(b);},CCO=a=>{return Qc((Jg(a.cA6,0)).bHp,E(5009));}; +function Dbt(){let a=this;F.call(a);a.cxK=null;a.cSq=null;} +let DPR=(a,b,c)=>{a.cxK=b;a.cSq=c;},E5a=(a,b)=>{let c=new Dbt();DPR(c,a,b);return c;},DDw=a=>{let b,c,d,e,f,g;if(Dl_(a)){b=H_(a.cxK);c=b.bHp;d=Tc(12);e=new Ub;f=new AXE;g=K(Bi,1);g.data[0]=c;BhD(f,Bv(g),d,a.cSq);Wb(e,f,b.bJD);return e;}f=new BP;X(f);J(f);},Dl_=a=>{let b;b=(Jg(a.cxK,0)).bHp;if(!BO(b,E(580))&&!BO(b,E(582)))return (ES(b)).bGI.length<=0?0:1;return 0;}; +function Ub(){let a=this;F.call(a);a.bHp=null;a.bJD=null;} +let Wb=(a,b,c)=>{a.bHp=b;a.bJD=B$(c);},AE3=(a,b)=>{let c=new Ub();Wb(c,a,b);return c;},D6$=a=>{return a.bHp;},EQL=a=>{let b,c,d;b=a.bHp.p();c=BY(a.bJD);d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);}; +function Bjb(){let a=this;CA.call(a);a.b3h=0;a.b2W=0;a.b1m=0;a.bYl=0;a.b$a=0;a.cao=0;a.bVh=0;a.cf9=0;} +let EL8=a=>{CJ(a);},CNi=()=>{let a=new Bjb();EL8(a);return a;},Clm=(a,b)=>{let c;c=b;a.b3h=c.b3h;a.b2W=c.b2W;a.b1m=c.b1m;a.bYl=c.bYl;a.b$a=c.b$a;a.cao=c.cao;a.bVh=c.bVh;a.cf9=c.cf9;},Crg=a=>{let b;b=new Bjb;CJ(b);b.b3h=a.b3h;b.b2W=a.b2W;b.b1m=a.b1m;b.bYl=a.bYl;b.b$a=a.b$a;b.cao=a.cao;b.bVh=a.bVh;b.cf9=a.cf9;return b;},C8W=N(),CdD=null,Bf=()=>{Bf=Z(C8W);FpR();},NS=b=>{Bf();},N_=(b,c)=>{Bf();},Ee=(b,c)=>{Bf();},FpR=()=>{CdD=E9();},Ceh=N(),Bhn=null,A8K=null,C5s=null,Cra=null,Ji=()=>{Ji=Z(Ceh);FlQ();},A6X=(b,c)=> +{let d,e,$$je;Ji();Bf();a:{b:{c:{try{d=A2U(b,Bhn,0);if(d===null&&c)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return d;}try{e=K(F,1);e.data[0]=b;EQw(e);b=A2U(b,Bhn,0);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return b;},AQ9=(b,c)=>{let d,e,$$je;Ji();Bf();a:{b:{try{c:{d=A6X(b,0);if(d===null)e=null;else{d:{e:{switch(c){case 0:break;case 1:break e;case 2:case 3:break d;default:break b;}e=d.b14;break c;}e=d.b6F;break c;}e=d.b6E;}}}catch($$e){$$je=P($$e);b=$$je;break a;}return e;}try{b=Fm();d=CR();ZY(H(d, +E(5010)),c);d=CH(d);Fw(b,d);J(Gw());}catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);},BQA=(b,c,d,e,f,g)=>{let h,i,$$je;Ji();Bf();try{h=new Oh;Ej();Pd(h,BrF);i=A80(c,h);i.dbf=g;i.b_z=ABs(b,c,d);i.b09=ABs(b,c,e);i.bUx=f;}catch($$e){$$je=P($$e);b=$$je;J(b);}return i;},BLm=b=>{let c;Ji();I(E(5011));c=new BV;X(c);J(c);},ENg=(b,c)=>{let d,e,$$je;Ji();Bf();try{d=Bhn;e=new Oh;Ej();Pd(e,BqL);d=AGL(b,c,d,e,0);d.b6F=ABB(b,c,b.b$f,b.bUg);d.b6E=ABB(b,c,b.b$f,b.bUg);d.b14=ABB(b,c,b.b$f,b.bUg);e=AMn(c);if(e!==null){e=A6X(e, +0);AYl(d.b6F,e.b6F);AYl(d.b6E,e.b6E);AYl(d.b14,e.b14);}else{b=b.cgo;if(b!==null&&c!==b){e=A6X(b,0);BLm(BB(F,[e.b6F,d.b6F,c,CL(1)]));BLm(BB(F,[e.b6E,d.b6E,c,CL(2)]));BLm(BB(F,[e.b14,d.b14,c,CL(0)]));}}}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},Bdo=(b,c,d)=>{let e,$$je;Ji();Bf();try{e=B$f();e.b_z=d;b=A1u(b,c,e);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},Cwr=(b,c,d)=>{let e,f,$$je;Ji();Bf();try{e=AYl(c,null);f=Bdo(b,c,d);AYl(c,e);}catch($$e){$$je=P($$e);b=$$je;J(b);}return f;},DFT=(b,c,d)=>{let e,f,$$je;Ji();Bf();try +{e=AM3(c);f=e===null?null:Bdo(b,e.ccT,d);}catch($$e){$$je=P($$e);b=$$je;J(b);}return f;},DL4=b=>{let c,d,$$je;Ji();Bf();try{c=AQ9(Hd(H9(b)),b.bHw.bIE);d=c===null?0:AUy(c);}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},B2q=(b,c,d)=>{let e,f,g,h,i,j,k,$$je;Ji();Bf();try{a:{e=A8K;f=new Oh;Ej();Pd(f,ARG);e=AGL(b,d,e,f,0);f=AQ9(c,d.bHw.bIE);if(e.ccT===null){e.ccT=AQ9(Hd(c),d.bHw.bIE);g=DL4(d);if(g<4)g=4;e.bWD=Bk();h=0;while(h{let $$je;Ji();Bf();try{b=A2U(b,A8K,0);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},BYB=(b,c,d,e)=>{let f,g,h,$$je;Ji();Bf();try{f=AM3(d);if(e.bUx>=4){d=f.bWD;g=null;U(d,g);}d=f.bWD;h=e.bUx;b=ABs(b,c,e.b09);GJ(d,h,b);}catch($$e){$$je=P($$e);b=$$je;J(b);}},ECj=(b,c,d,e,f)=>{let g,h,i,j,k,l,m,$$je;Ji();Bf();try{g=Hd(c);A6X(c,1);h=AQ9(c,d);i=Cwr(b,h,e);if(i!==null){BLC(b,c,i.b09);i.b09 +=ABs(b,c,f);}else{j=Bdo(b,h,e);if(j!==null){i=BQA(b,c,e,f,j.bUx,d);Bed(b,h,i);}else a:{b:{c:{k=AQ9(g,d);i=BQA(b,c,e,f,AUy(k),d);Bed(b,k,i);switch(d){case 0:break;case 1:break c;case 2:case 3:break b;default:break a;}FsP(b,g,g.cwe,Cra,i,1);break a;}l=IV(b,g);while(true){if(l===null)break a;BYB(b,c,l,i);l=I4(b,g,l);}}l=IV(b,g);while(true){if(l===null)break a;m=Mx(b,g,l);while(m!==null){BYB(b,c,m,i);m=MU(b,g,m);}l=I4(b,g,l);}}}if(i!==null&&!d)CC1(b,c,i,f);C86(c,c,i);}catch($$e){$$je=P($$e);b=$$je;J(b);}return i;},E0M +=(b,c,d,e)=>{let f,g,$$je;Ji();Bf();try{f=null;g=AQ9(c,d);if(g!==null)f=Bdo(b,g,e);}catch($$e){$$je=P($$e);b=$$je;J(b);}return f;},SU=(b,c,d,e,f)=>{let g,$$je;Ji();Bf();try{if(c===null){if(b.cgo===null)b.cgo=BBM(b,null,Crg(b.cxx),null);c=b.cgo;}g=f===null?E0M(b,c,d,e):ECj(b,c,d,e,f);}catch($$e){$$je=P($$e);b=$$je;J(b);}return g;},DEk=(b,c)=>{let d,$$je;Ji();Bf();try{c.bOh.bVh=1;ENg(b,c);d=AMn(c);if(d===null)d=c;B2q(b,d,c);}catch($$e){$$je=P($$e);b=$$je;J(b);}},Eob=(b,c,d)=>{let e,$$je;Ji();Bf();try{e=AM3(d);if +(!(e!==null&&e.ccT!==null))B2q(b,c,d);}catch($$e){$$je=P($$e);b=$$je;J(b);}},Fst=(b,c,d)=>{let e,$$je;Ji();Bf();try{e=AM3(d);if(!(e!==null&&e.ccT!==null))B2q(b,c,d);}catch($$e){$$je=P($$e);b=$$je;J(b);}},GY=(b,c,d)=>{let e,f,$$je;Ji();Bf();try{e=DFT(b,c,d);if(e===null)b=null;else{b=(AM3(c)).bWD;f=e.bUx;b=Be(b,f);}}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},RS=(b,c)=>{let d,e,$$je;Ji();Bf();try{b=(AM3(b)).bWD;d=c.bUx;e=Be(b,d);}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},CC1=(b,c,d,e)=>{let f,g,h,i,$$je;Ji();Bf();try +{f=H9(c);g=AM3(c);h=g.bWD;i=d.bUx;BLC(b,f,Be(h,i));g=g.bWD;i=d.bUx;h=ABs(b,f,e);GJ(g,i,h);if(!c.bHw.bIE){h=(A6X(f,0)).b14;g=Cwr(b,h,d.b_z);if(g!==null){BLC(b,f,g.b09);g.b09=ABs(b,f,e);}else{e=BQA(b,f,d.b_z,e,d.bUx,c.bHw.bIE);h.bLG.a5q(b,h,e,1);}}C86(f,c,d);}catch($$e){$$je=P($$e);b=$$je;J(b);}return 0;},Jq=(b,c,d,e,f)=>{let g,h,$$je;Ji();Bf();try{g=SU(b,H9(c),c.bHw.bIE,d,null);if(g===null)g=SU(b,H9(c),c.bHw.bIE,d,f);h=CC1(b,c,g,e);}catch($$e){$$je=P($$e);b=$$je;J(b);}return h;},EQw=b=>{let c;Ji();I(E(5012));c +=new BV;X(c);J(c);},FlQ=()=>{let b;Bhn=Co(E(5013));A8K=Co(E(5014));b=new Cxo;E$(b,E(5015));C5s=b;b=new Cxp;E$(b,E(5016));Cra=b;},ER5=N(),FjJ=(b,c)=>{let d,e,$$je;Bf();try{d=Fbr();e=d.cUR;e.dbK=null;B13();e.c$z=Cz6;e.c$p=b;e.dbl=c;}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;}; +function CfW(){let a=this;CA.call(a);a.cUR=null;a.deJ=0;a.cia=null;} +let DAc=a=>{let b;CJ(a);b=new Ckq;CJ(b);a.cUR=b;b=new C8M;CJ(b);a.cia=b;},Fbr=()=>{let a=new CfW();DAc(a);return a;},DF8=N(),E$A=b=>{let $$je;Bf();try{BaY();if(FwP(b,Bvt,Co(E(5017)))!==null){I(E(5018));I(E(5019));I(E(5020));}}catch($$e){$$je=P($$e);b=$$je;J(b);}return 999;},ES6=N(),DRz=b=>{let $$je;Bf();try{b=null;}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;}; +function C8M(){let a=this;CA.call(a);a.cZZ=null;a.c8P=null;a.cX3=null;a.dc8=null;} +let DfK=N(),BrG=0.0,ERw=0.0,BmG=0.0,Dkq=null,CmJ=null,CEH=null,BX=()=>{BX=Z(DfK);EaW();},CcW=b=>{let c,d;BX();c=Fm();d=new S;T(d);H(H(d,E(5021)),b);b=Q(d);Fw(c,b);},I=b=>{let c,d,e,f,g,h,i;BX();Bf();c=0;d=AJ5(Z$(CdD));e=d;while(Gl(e)){f=ALw(d);g=Fm();h=new S;T(h);i=H(h,E(5022));BE(i,c);Bb(i,32);H(i,f);f=Q(h);Fw(g,f);c=c+1|0;}d=new BV;Bp(d,b);J(d);},AC6=(b,c)=>{BX();b.bHw.bIE=c;},AVd=(b,c)=>{BX();b.bHw.bKU=c;},AWD=(b,c)=>{BX();b.bHw.bMs=c;},EBn=(b,c)=>{BX();b.bGQ=c;},Dio=b=>{BX();return CpP(b,(-1));},Cb_=b=> +{BX();return CpP(b,1);},Dms=b=>{BX();return b.bHw.bIE!=3?Cb_(b):Dio(b);},A_X=b=>{BX();if(b.bHw.bIE!=2)b=Dio(b);return b;},Biv=b=>{BX();if(b.bHw.bIE!=3)b=Cb_(b);return b;},Bw_=b=>{BX();return (Biv(b)).bLM;},Bl9=b=>{BX();return (Biv(b)).bLM;},A2G=(b,c)=>{BX();(Biv(b)).bLM=c;},BrP=b=>{BX();return (A_X(b)).bLM;},BxD=(b,c)=>{BX();(A_X(b)).bLM=c;},Zj=b=>{BX();return (CD((A_X(b)).bLM)-CD(Bl9(b))|0)-RF(b)|0;},BvJ=(b,c,d)=>{BX();return !(b<=c&&c<=d)?0:1;},BaL=b=>{BX();return O$(b)<0?0:1;},EbR=b=>{BX();return b.bGQ.cW0;},Ey5 +=(b,c)=>{BX();b.bGQ.cW0=c;},PH=b=>{BX();return b.bGQ.cL7;},CzL=(b,c)=>{BX();b.bGQ.cL7=c;},JA=b=>{BX();return b.bGQ.cCb;},Fge=b=>{BX();return b.bGQ.cTh;},DCR=(b,c)=>{BX();b.bGQ.cTh=c;},ETE=b=>{BX();return b.bGQ.c00;},Ef1=(b,c)=>{BX();b.bGQ.c00=c;},PV=b=>{BX();return b.bGQ.cKE;},HC=b=>{BX();return b.bGQ.cQW;},Fmf=(b,c)=>{BX();b.bGQ.cQW=c;},E6N=b=>{BX();return b.bGQ.cTU;},FoV=(b,c)=>{BX();b.bGQ.cTU=c;},I_=b=>{BX();return b.bGQ.cX$;},Db7=b=>{BX();return b.bGQ.cYu;},DFp=(b,c)=>{BX();b.bGQ.cYu=c;},EWJ=b=>{BX();return b.bGQ.c21;},FbN +=(b,c)=>{BX();b.bGQ.c21=c;},ANE=b=>{BX();return b.bGQ.cRQ;},Csg=(b,c)=>{BX();b.bGQ.cRQ=c;},Duh=b=>{BX();return b.bGQ.cWI;},Eco=(b,c)=>{BX();b.bGQ.cWI=c;}; +let QJ=b=>{BX();return b.bGQ.c4a;},BlH=(b,c)=>{BX();b.bGQ.c4a=c;},Flx=b=>{BX();return b.bGQ.cWT;},Dq0=(b,c)=>{BX();b.bGQ.cWT=!c?0:1;},AAJ=b=>{BX();return b.bGQ.cSR;},Bhp=(b,c)=>{BX();b.bGQ.cSR=c;},AAd=b=>{BX();return b.bGQ.cSS;},BBj=(b,c)=>{BX();b.bGQ.cSS=c;},D6i=b=>{BX();return b.bGQ.cNp;},DOU=(b,c)=>{BX();b.bGQ.cNp=c;},Km=b=>{BX();return b.bGQ.c4w;},E7G=(b,c)=>{BX();b.bGQ.c4w=c;},A$E=b=>{BX();return b.bGQ.c2u;},Fqw=(b,c)=>{BX();b.bGQ.c2u=c;},Cbe=(b,c)=>{BX();b.bGQ.cw2=c;},ADs=b=>{BX();return b.bGQ.cw2&3;},KL +=b=>{BX();return !(ADs(b)&1)?0:1;},Dtr=b=>{BX();return b.bGQ.cw2>>2&1;},ADh=b=>{BX();return b.bGQ.cXK;},EVx=(b,c)=>{BX();b.bGQ.cXK=c;},D9=b=>{BX();return b.bGQ.cRR;},A4$=(b,c)=>{BX();b.bGQ.cRR=c;},DjJ=b=>{BX();return b.bGQ.ddV;},D5=b=>{BX();return b.bGQ.cVA;},ASk=(b,c)=>{BX();b.bGQ.cVA=c;},Dbc=b=>{BX();return b.bGQ.c9C;},GA=b=>{BX();return b.bGQ.c4T;},FqE=(b,c)=>{BX();b.bGQ.c4T=c;},Bbo=b=>{BX();return b.bGQ.c5o;},AQK=(b,c)=>{BX();b.bGQ.c5o=c;},GV=b=>{BX();return b.bGQ.cUc;},WA=(b,c)=>{BX();b.bGQ.cUc=c;},W1= +b=>{BX();return b.bGQ.cKX;},Fjw=(b,c)=>{BX();b.bGQ.cKX=c;},B7=b=>{BX();return b.bGQ.cQt;},CBt=(b,c)=>{BX();b.bGQ.cQt=c;},PQ=b=>{BX();return b.bGQ.c0w;},Ft2=(b,c)=>{BX();b.bGQ.c0w=c;},Bb6=b=>{BX();return b.bGQ.cKy;},CrV=(b,c)=>{BX();b.bGQ.cKy=c;},AGb=b=>{BX();return b.bGQ.cXL;},EJj=(b,c)=>{BX();b.bGQ.cXL=c;},Fjp=(b,c)=>{BX();b.bGQ.dcs=c;},AFG=b=>{BX();return b.bGQ.cS9;},Eu7=(b,c)=>{BX();b.bGQ.cS9=c;},DtY=(b,c)=>{BX();b.bGQ.c9t=c;},EOd=(b,c)=>{BX();b.bGQ.db4=c;},C3M=b=>{BX();return b.bGQ.c_N;},A_x=b=>{BX();return b.bGQ.cIS;},FaO +=(b,c)=>{BX();b.bGQ.cIS=c;}; +let ADb=b=>{BX();return b.bGQ.cUm;},AU7=(b,c)=>{BX();b.bGQ.cUm=c;},AEX=b=>{BX();return b.bGQ.cKG;},AA0=(b,c)=>{BX();b.bGQ.cKG=c;},GU=b=>{BX();return b.bGQ.cMn;},ABI=(b,c)=>{BX();b.bGQ.cMn=c;},Dh=b=>{BX();return b.bGQ.ccm;},YJ=b=>{BX();return b.bGQ.cOY;},H$=b=>{BX();return b.bGQ.c1o;},BHD=b=>{BX();return b.bGQ.c1A;},C9e=(b,c)=>{BX();b.bGQ.c1A=c;},AOg=b=>{BX();return b.bGQ.b$D;},BQ5=(b,c)=>{BX();b.bGQ.b$D=c;},Vn=b=>{BX();return b.bGQ.cU2;},ASN=(b,c)=>{BX();b.bGQ.cU2=c;},Gv=b=>{BX();return b.bGQ.czC;},DD6=(b,c)=> +{BX();AIa(b.bGQ.czC,c);},Cv2=b=>{BX();return b.bGQ.c9Y;},J8=b=>{BX();return b.bGQ.c46;},B4p=(b,c)=>{BX();b.bGQ.c46=c;},BCO=b=>{BX();return b.bGQ.daR;},Ln=b=>{BX();return b.bGQ.cZu;},E_t=(b,c)=>{BX();b.bGQ.cZu=c;},Rm=b=>{BX();return b.bGQ.cZH;},CaP=(b,c)=>{BX();b.bGQ.cZH=c;},Ng=b=>{BX();return b.bGQ.cU9;},AHe=(b,c)=>{BX();b.bGQ.cU9=c;},N0=b=>{BX();return b.bGQ.cDE;},PE=(b,c)=>{BX();b.bGQ.cDE=c;},CqE=(b,c)=>{BX();b.bGQ.cDE=!c?0:1;},YX=b=>{BX();return b.bGQ.c5u;},Zm=(b,c)=>{BX();b.bGQ.c5u=c;},GN=b=>{BX();return b.bGQ.cNs;},AR2 +=(b,c)=>{BX();b.bGQ.cNs=c;},FH=b=>{BX();return b.bGQ.cSb;},AVD=(b,c)=>{BX();b.bGQ.cSb=c;},C8b=b=>{BX();return !b.bGQ.cCJ?0:1;},Bng=(b,c)=>{BX();b.bGQ.cCJ=c;},DTc=(b,c)=>{BX();b.bGQ.cCJ=!c?0:1;},DN=b=>{BX();return b.bGQ.c7o;},Tu=(b,c)=>{BX();b.bGQ.c7o=c;},Mb=b=>{BX();return b.bGQ.c43;},D7=b=>{BX();return b.bGQ.cEU;},FnS=(b,c)=>{BX();AIa(b.bGQ.cEU,c);},CMQ=b=>{BX();return b.bGQ.ddP;},A1C=b=>{BX();return b.bGQ.c1n;},DMr=(b,c)=>{BX();b.bGQ.c1n=c;},BFi=b=>{BX();return b.bGQ.cMR;},AN8=(b,c)=>{BX();b.bGQ.cMR=c;},AZa +=b=>{BX();return b.bGQ.cMV;}; +let BJl=(b,c)=>{BX();b.bGQ.cMV=c;},CD=b=>{BX();return b.bGQ.c4R;},P4=(b,c)=>{BX();b.bGQ.c4R=c;},RJ=b=>{BX();return b.bGQ.c4x;},Bxk=(b,c)=>{BX();b.bGQ.c4x=c;},Kv=b=>{BX();return b.bGQ.cVu;},U$=(b,c)=>{BX();b.bGQ.cVu=c;},BK9=b=>{BX();return b.bGQ.cvB;},ECx=(b,c)=>{BX();AIa(b.bGQ.cvB,c);},Yh=b=>{BX();return b.bGQ.cI6;},DII=(b,c)=>{BX();AIa(b.bGQ.cI6,c);},JW=b=>{BX();return b.bGQ.c0N;},EGy=(b,c)=>{BX();b.bGQ.c0N=c;},Bzc=b=>{BX();return b.bGQ.c4I;},Ce5=(b,c)=>{BX();b.bGQ.c4I=c;},EM2=(b,c)=>{BX();b.bGQ.c_B=c;},Is +=b=>{BX();return b.bGQ.c1P;},IE=b=>{BX();return b.bGQ.cUK;},AYE=b=>{BX();return b.bGQ.cMZ;},CwR=(b,c)=>{BX();b.bGQ.cMZ=c;},ALC=b=>{BX();return b.bGQ.ciH;},B0s=(b,c)=>{BX();b.bGQ.ciH=c;},ErD=b=>{BX();return b.bGQ.chB;},E35=(b,c)=>{BX();b.bGQ.chB=c;},ADM=b=>{BX();return b.bGQ.cmc;},AHp=(b,c)=>{BX();b.bGQ.cmc=c;},W8=b=>{BX();return b.bGQ.cli;},AWR=(b,c)=>{BX();b.bGQ.cli=c;},Zu=b=>{BX();return b.bGQ.cfw;},CV2=(b,c)=>{BX();b.bGQ.cfw=c;},AWp=b=>{BX();return b.bGQ.b9t;},E7H=(b,c)=>{BX();b.bGQ.b9t=c;},E5=b=>{BX();return b.bGQ.b9y;},A6w +=(b,c)=>{BX();AKQ(b.bGQ.b9y,c);},DW=b=>{BX();return b.bGQ.cc2;},Cq3=(b,c)=>{BX();b.bGQ.cc2=c;},BYm=b=>{BX();return b.bGQ.cvb;},D0B=b=>{BX();return b.bGQ.che;},EAA=(b,c)=>{BX();b.bGQ.che=c;},RF=b=>{BX();return b.bGQ.cmb;},AKK=(b,c)=>{BX();b.bGQ.cmb=c;},FmX=(b,c)=>{BX();b.bGQ.crA=c;},K7=b=>{BX();return b.bGQ.b4y;},DUN=(b,c)=>{BX();b.bGQ.b4y=c;},AVt=b=>{BX();return b.bGQ.b_t;},FoO=(b,c)=>{BX();b.bGQ.b_t=c;},E7=b=>{BX();return b.bGQ.b$l;},AQi=(b,c)=>{BX();AKQ(b.bGQ.b$l,c);},I2=b=>{BX();return b.bGQ.cmC;},ARb=(b, +c)=>{BX();b.bGQ.cmC=c;}; +let H7=b=>{BX();return b.bGQ.cnm;},RP=(b,c)=>{BX();b.bGQ.cnm=c;},O$=b=>{BX();return b.bGQ.cnU;},ATt=(b,c)=>{BX();b.bGQ.cnU=c;},Rd=b=>{BX();return b.bGQ.chH;},AQ2=(b,c)=>{BX();b.bGQ.chH=c;},Ca8=b=>{BX();return b.bGQ.ciU;},BZY=(b,c)=>{BX();b.bGQ.ciU=c;},LA=b=>{BX();return b.bGQ.cpE;},AAU=(b,c)=>{BX();b.bGQ.cpE=c;},QH=b=>{BX();return b.bGQ.cjJ;},RM=(b,c)=>{BX();b.bGQ.cjJ=c;},E6C=(b,c)=>{let d,e,f,g;BX();if(c!==null){d=c.data;e=d.length;if(e<=b){f=Ca(b);c=f.data;g=0;while(g{let d,e,f,g;BX();d=c.bG8+2|0;e=c.bGS;Ej();f=Ur(d,e,Q_);c.bGS=f;g=c.bG8;c.bG8=g+1|0;E_(f,g,b);E_(c.bGS,c.bG8,null);},ACJ=(b,c)=>{BX();c.bG8=0;b=b+1|0;Ej();c.bGS=SE(b,Q_);},ASS=b=>{BX();},A4U=(b,c,d)=>{BX();return !(b<=c&&c<=d)?0:1;},PL=b=>{BX();return !(b>=0.0)?b-0.5|0:b+0.5|0;},AFb=(b,c)=>{let d;BX();Bf();d=b.bKd.bGQ;BBP(d,c.bKd.bGQ);BGi(b,c);b.bKd.bGQ=d;A2G(b,BrP(c));BxD(b,Bw_(c));AQi(b,E5(c));A6w(b,E7(c));RM(b,1);ARb(b,c);},B83=(b,c)=>{let d;BX();b=EL(b);c=EL(c);d=Eh(b,c);b=BC(b,c);c=d/b;return b +*Gs(1.0+c*c);},AOV=b=>{BX();return b*b;},BHl=(b,c,d)=>{BX();return !(AOJ(b,c){BX();return AOV(b)+AOV(c);},AOJ=(b,c)=>{BX();return Cvk(b.bGH-c.bGH,b.bGG-c.bGG);},Cpj=(b,c)=>{BX();return !(A4U(c.bGT.bGH,b.bGH,c.bGU.bGH)&&A4U(c.bGT.bGG,b.bGG,c.bGU.bGG))?0:1;},EFc=b=>{BX();return b/180.0*3.141592653589793;},CQV=(b,c)=>{let d,e;BX();d=b.bGH-c.bGH;d=d*d;e=b.bGG-c.bGG;return d+e*e;},EE2=(b,c)=>{let d,e,f;BX();d=D3(Dkq,c);if(!Kr(d)){b=new S;T(b);H(H(b,E(5023)),c);Q(b);JT();}else{e=DM(El(d, +1));f=DM(El(d,2));b.bGH=e;b.bGG=f;b=new S;T(b);D6(H(D6(H(b,E(5024)),e),E(5025)),f);Q(b);JT();}},FbS=(b,c)=>{BX();c.bGH=PL(b.bGH);c.bGG=PL(b.bGG);},Bed=(b,c,d)=>{BX();c.bLG.a5q(b,c,d,1);},A1u=(b,c,d)=>{BX();return c.bLG.a5q(b,c,d,4);},Bya=(b,c)=>{BX();return c.bLG.a5q(b,c,null,128);},Bup=(b,c,d)=>{BX();return c.bLG.a5q(b,c,d,8);},ESr=(b,c,d)=>{BX();return c.bLG.a5q(b,c,d,2);},A3s=(b,c)=>{BX();b.bIX=c.bJP;c.bJP=b;},CVo=(b,c)=>{BX();b.bJP=c.bIX;c.bIX=b;},A3H=(b,c)=>{BX();b.bIX=c;return c;},A7L=(b,c)=>{BX();b.bJP +=c;return c;},AB5=(b,c,d)=>{BX();return SU(b,c,0,Co(d),null);},IG=(b,c,d)=>{BX();return SU(b,c,1,Co(d),null);},Iq=(b,c,d)=>{BX();return SU(b,c,2,Co(d),null);},AP2=b=>{BX();return PL(b*72.0);},AIe=b=>{BX();return b*72.0;},Bna=b=>{BX();return b/72.0;},DiL=b=>{BX();b.bGH=b.bGH+16.0;b.bGG=b.bGG+8.0;},BJT=b=>{BX();if(b.bKn.bRV&4096)X7(b,null);},Bew=b=>{BX();return b.bQa.cdr.cVx;},AZl=b=>{BX();return b.bQa.caZ.cld;},Frw=(b,c,d)=>{BX();if(c!==null&&c.bQp)return b.a73(c);return b;},FgF=(b,c,d,e,f,g,h)=>{BX();if(g!== +null)h=g.a74(b,c,d,e,f);else{if(h>0){c=new BV;Bp(c,E(5026));J(c);}h=AFr(d,e);}return h;}; +let EaN=(b,c,d,e)=>{BX();return B8e(b,c,d,e,null,0);},EOS=(b,c)=>{BX();CaP(b,c);},FtS=(b,c)=>{let d;BX();d=Co(c);return !(Dn(b,0)==Dn(d,0)&&!AFr(b,d))?0:1;},EaW=()=>{BrG=0.001;ERw=1.0E-6;BmG=Gs(2.0);Dkq=Dp(E(5027));CmJ=Co(E(5028));CEH=Co(E(4095));},DNB=N(),Eol=(b,c)=>{let d,$$je;Bf();a:{b:{try{d=GY(b,c,Co(E(5029)));if(d!==null&&Dn(d,0))break b;b=GY(b,c,Co(E(5030)));if(b!==null&&Dn(b,0))break b;b=null;}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}try{I(E(5031));I(E(5032));I(E(5033));I(E(5034));I(E(5035));I(E(5036));I(E(5037));J(Gw());} +catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);},D7L=b=>{let c,d,$$je;Bf();a:{b:{try{c=CQ8(Y(b,0),Y(b,3),Y(b,1));d=CQ8(Y(b,0),Y(b,3),Y(b,2));if(c<4.0&&d<4.0)break b;}catch($$e){$$je=P($$e);b=$$je;break a;}return 0;}try{}catch($$e){$$je=P($$e);b=$$je;break a;}return 1;}J(b);},BJB=(b,c)=>{let d,e,f,g,$$je;Bf();try{a:{b:{if((Y(c,0)).bGH>b.bGU.bGH)break b;if((Y(c,0)).bGHb.bGU.bGG)break b;if((Y(c,0)).bGGb.bGU.bGH)break b;if((Y(c,1)).bGHb.bGU.bGG)break b;if((Y(c,1)).bGGb.bGU.bGH)break b;if((Y(c,2)).bGHb.bGU.bGG)break b;if((Y(c,2)).bGGb.bGU.bGH)break b;if((Y(c,3)).bGHb.bGU.bGG)break b;if(!((Y(c,3)).bGGe.bGH)e.bGH=(Y(c,f)).bGH;else{g=(Y(c,f)).bGH;e= +b.bGT;if(gd.bGG)d.bGG=(Y(c,f)).bGG;else{g=(Y(c,f)).bGG;d=b.bGT;if(g{Bf();}; +function C$3(){CA.call(this);this.cSz=0;} +let Cze=N(),DeC=null,B9X=null,Cpl=null,CM$=null,ANA=()=>{ANA=Z(Cze);DAz();},C3b=(b,c,d,e)=>{let $$je;ANA();Bf();try{if(GY(b,c,d)!==null){I(E(5038));I(E(5039));I(E(5040));I(E(5041));I(E(5042));I(E(5043));I(E(5044));I(E(5045));I(E(5046));I(E(5047));I(E(5048));I(E(5049));I(E(5050));I(E(5051));I(E(5044));}}catch($$e){$$je=P($$e);b=$$je;J(b);}return 0;},D2S=b=>{let $$je;ANA();Bf();try{}catch($$e){$$je=P($$e);b=$$je;J(b);}return 0;},Eeq=(b,c)=>{let $$je;ANA();Bf();try{b=GY(b,c,Co(E(5052)));if(b!==null&&Dn(b,0)){I(E(5053));I(E(5054));I(E(5055));I(E(5056));I(E(5057));I(E(5058));I(E(5059));I(E(5060));I(E(5057));I(E(5061));I(E(5062));I(E(5063));I(E(5057));I(E(5064));I(E(5065));I(E(5066));I(E(5057));I(E(5067));I(E(5068));I(E(5069));I(E(5070));I(E(5071));I(E(5051));I(E(5057));I(E(5044));I(E(5035));}} +catch($$e){$$je=P($$e);b=$$je;J(b);}},DEI=(b,c,d)=>{let e,f,g,$$je;ANA();N_(E(5072),E(5073));try{CzL(c,D8B());if(!(GY(b,c,Co(E(5074)))===null&&E81(Co(E(5075)))===null)){I(E(5076));I(E(5077));I(E(5078));I(E(5079));I(E(5080));I(E(5081));I(E(5082));}Eco(c,D2S(c));(PH(c)).cU5=XN(c,AB5(b,c,E(5083)),0.0,0.0);e=0;f=GY(b,c,Co(E(4608)));if(f!==null&&FtS(f,E(4609)))e=1;if(!d)Cbe(c,e<<2);else Cbe(c,e<<2|e);Fjw(c,AP2(XN(c,AB5(b,c,E(1805)),0.25,0.02)));f=Zy(c,AB5(b,c,E(1806)),null);if(f===null)g=0.5;else{g=Bph(f);if(g<0.02)g +=0.02;if(BPM(f,Co(E(5084))))DFp(c,1);}CrV(c,AP2(g));DtY(c,RN(c,AB5(b,c,E(5085)),0,0));EOd(c,BW$(Zy(c,AB5(b,c,E(5086)),null),Cpl,CM$));Eeq(b,c);(PH(c)).ded=C3b(b,c,Co(E(5087)),(PH(c)).c56);C3b(b,c,Co(E(3711)),(PH(c)).cUS);(PH(c)).daP=S6(GY(b,c,Co(E(3624))));f=GY(b,c,Co(E(3496)));if(f!==null)(PH(c)).cxD=BTA(f)!=90?0:1;else{f=GY(b,c,Co(E(679)));if(f===null){f=GY(b,c,Co(E(5088)));if(f!==null)(PH(c)).cxD=S6(f);}else (PH(c)).cxD=!(Dn(f,0)!=108&&Dn(f,0)!=76)?1:0;}a:{b.cjy=BW$(GY(b,c,Co(E(5089))),DeC,B9X);b.ca7=S6(GY(b, +c,Co(E(5090))));b.cuD=0;b.cE3=0;(PH(c)).cNy=0.0;f=GY(b,c,Co(E(2526)));if(!(f!==null&&Dn(f,0))){f=GY(b,c,Co(E(5091)));if(f===null)break a;if(!Dn(f,0))break a;}(PH(c)).cNy=Bph(f);}CXD(b,c);b.da_=1.0E37;b.c3K=AB5(b,c,E(5092));b.dco=AB5(b,c,E(5093));b.bZu=AB5(b,c,E(4607));b.c0g=IG(b,c,E(363));b.cJ8=IG(b,c,E(362));b.cV3=IG(b,c,E(4097));b.c8Q=IG(b,c,E(944));b.daW=IG(b,c,E(5094));b.c9I=IG(b,c,E(169));b.c1J=IG(b,c,E(1782));b.cMj=IG(b,c,E(1786));b.cP6=IG(b,c,E(1784));f=IG(b,c,E(764));b.cD7=f;if(f===null)b.cD7=SU(b,c, +1,Co(E(764)),Co(E(4880)));b.c0x=IG(b,c,E(5095));b.cSC=IG(b,c,E(5085));b.dbg=IG(b,c,E(5096));b.c2Q=IG(b,c,E(5092));b.ddd=IG(b,c,E(4607));b.ddX=IG(b,c,E(5097));b.cKr=IG(b,c,E(5098));b.dcu=IG(b,c,E(5099));b.cQq=IG(b,c,E(679));b.c_a=IG(b,c,E(5100));b.cFH=IG(b,c,E(5101));b.deL=IG(b,c,E(5102));b.csO=IG(b,c,E(5103));b.deR=IG(b,c,E(5104));b.cGG=IG(b,c,E(653));b.c_W=IG(b,c,E(5105));b.c$s=IG(b,c,E(5106));b.c_b=IG(b,c,E(5107));b.c_J=IG(b,c,E(5093));b.cJ6=Iq(b,c,E(5108));b.c$w=Iq(b,c,E(944));b.c_m=Iq(b,c,E(5094));b.cLq +=Iq(b,c,E(1782));b.cZ4=Iq(b,c,E(1786));b.cPr=Iq(b,c,E(1784));b.cP0=Iq(b,c,E(764));b.cQO=Iq(b,c,E(5095));b.c1$=Iq(b,c,E(5109));b.cVO=Iq(b,c,E(5110));b.cRB=Iq(b,c,E(4094));b.c3L=Iq(b,c,E(4093));b.cH_=Iq(b,c,E(4622));b.cBL=Iq(b,c,E(4621));b.cYA=Iq(b,c,E(5111));b.cNj=Iq(b,c,E(5112));b.cQN=Iq(b,c,E(5113));b.c7k=Iq(b,c,E(5114));b.c4X=Iq(b,c,E(5115));b.c6l=Iq(b,c,E(4620));b.c4U=Iq(b,c,E(5085));b.c$X=Iq(b,c,E(169));b.c7Y=Iq(b,c,E(5116));b.cQF=Iq(b,c,E(4091));b.cXZ=Iq(b,c,E(2816));b.da9=Iq(b,c,E(5104));b.c_k=Iq(b,c, +E(5105));b.c6j=Iq(b,c,E(5117));b.c2d=Iq(b,c,E(5118));b.c94=Iq(b,c,E(5096));(PH(c)).ddE=Eol(b,c);b=GY(b,c,Co(E(211)));if(b!==null&&Dn(b,0))(PH(c)).c9g=ElC(b,c);}catch($$e){$$je=P($$e);b=$$je;Ee(E(5072),E(5073));J(b);}Ee(E(5072),E(5073));},CXD=(b,c)=>{let d,e,f,g,h,i,$$je;ANA();Bf();a:{b:{try{d=GY(b,c,Co(E(764)));if(d===null)break b;if(!Dn(d,0))break b;e=0;f=EG();g=c.b2Z;BlH(g,QJ(g)|8);h=!Bbj(b,d)?0:2;E7G(c,ASn(b,c,d,h,XN(c,SU(b,c,0,Co(E(1782)),null),14.0,1.0),ADS(c,SU(b,c,0,Co(E(1786)),null),Co(E(5119))),ADS(c, +SU(b,c,0,Co(E(1784)),null),Co(E(443)))));g=GY(b,c,Co(E(5120)));if(c===Hd(c)){I(E(5121));I(E(5122));I(E(5123));I(E(5124));}else e=!(g!==null&&Dn(g,0)==98)?1:0;if(GY(b,c,Co(E(5125)))!==null){I(E(5126));I(E(5127));I(E(5128));I(E(5129));}}catch($$e){$$je=P($$e);b=$$je;break a;}c:{try{Eu7(c,e);if(c!==Hd(c))break c;}catch($$e){$$je=P($$e);b=$$je;break a;}return;}d:{try{Cd(f,(Km(c)).bHT);DiL(f);if(KL(Hd(c)))break d;i=!(AFG(c)&1)?0:2;Cd((PV(c)).data[i],f);break b;}catch($$e){$$je=P($$e);b=$$je;break a;}}e:{try{if(!(AFG(c) +&1)){i=3;break e;}i=1;break e;}catch($$e){$$je=P($$e);b=$$je;break a;}}try{(PV(c)).data[i].bGH=f.bGG;(PV(c)).data[i].bGG=f.bGH;break b;}catch($$e){$$je=P($$e);b=$$je;break a;}}return;}J(b);},DAz=()=>{let b,c;b=K(H2,4);c=b.data;c[0]=Co(E(1743));c[1]=Co(E(1744));c[2]=Co(E(71));c[3]=null;DeC=b;B9X=Ey([100,101,102,100]);b=K(H2,4);c=b.data;c[0]=Co(E(5130));c[1]=Co(E(5131));c[2]=Co(E(166));c[3]=null;Cpl=b;b=Ca(4);c=b.data;Bko();c[0]=Bqr.bGO;c[1]=BkA.bGO;c[2]=BF2.bGO;c[3]=(-1);CM$=b;},Ftd=N(),CvI=b=>{let c;I(E(5132));c +=new BV;X(c);J(c);},BVB=(b,c)=>{let d,$$je;Bf();try{d=b.bQa;if(d.cH$)ECf(b,c,d.cRF);else CiI(BB(F,[b,c,CL(100),null]));}catch($$e){$$je=P($$e);b=$$je;J(b);}},ECf=(b,c,d)=>{let $$je;Bf();a:{b:{try{if(d!==null)break b;}catch($$e){$$je=P($$e);b=$$je;break a;}return;}try{I(E(5133));I(E(5134));I(E(5135));I(E(5136));I(E(5137));I(E(5138));I(E(5139));I(E(5140));I(E(5138));I(E(5141));I(E(5142));I(E(5138));I(E(5035));I(E(5143));I(E(5144));I(E(5037));J(Gw());}catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);},C86=(b,c,d)=> +{let e,$$je;Bf();try{e=b.bQa;if(e.cH$)EP4(b,c,d,e.cRF);else CiI(BB(F,[b,c,CL(101),d]));}catch($$e){$$je=P($$e);b=$$je;J(b);}},EP4=(b,c,d,e)=>{let $$je;Bf();a:{b:{try{if(e!==null)break b;}catch($$e){$$je=P($$e);b=$$je;break a;}return;}try{I(E(5145));I(E(5146));I(E(5135));I(E(5136));I(E(5147));I(E(5138));I(E(5139));I(E(5148));I(E(5138));I(E(5141));I(E(5149));I(E(5138));I(E(5035));I(E(5143));I(E(5150));I(E(5037));J(Gw());}catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);},Hd=b=>{let $$je;Bf();a:{b:{c:{try{d:{switch +(b.bHw.bIE){case 0:break d;case 1:break c;case 2:case 3:break b;default:}J(ZF(E(5151)));}b=b.b2Z;}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}try{b=b.bWb;}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}try{b=b.bLM.bWb;}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}J(b);},H9=b=>{let $$je;Bf();a:{b:{c:{d:{e:{try{switch(b.bHw.bIE){case 0:break;case 1:break e;case 2:case 3:break d;default:break c;}b=b;}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}try{b=b.bWb;}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}try +{b=b.bLM.bWb;}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}try{Fw(Fm(),E(5152));b=null;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return b;},ABv=(b,c,d)=>{let e,$$je;Bf();a:{b:{c:{try{if(Hd(c)===Hd(d))break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}d:{e:{try{switch(d.bHw.bIE){case 0:break e;case 1:break d;default:}e=CNT(b,c,d,0)===null?0:1;}catch($$e){$$je=P($$e);b=$$je;break b;}return e;}try{I(E(5153));I(E(5154));I(E(5155));I(E(5156));I(E(5157));break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}f: +{try{if(E1C(b,c,d.bHw.bKU,0)===null){e=0;break f;}e=1;break f;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return e;},BQ6=b=>{let c,$$je;Bf();try{c=b.bHw.bIE;}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;}; +function CMO(){let a=this;CA.call(a);a.c6t=null;a.csM=null;} +let Cur=N(),BD0=0,JT=()=>{JT=Z(Cur);FfW();},AFr=(b,c)=>{let d,e;JT();d=0;while(true){if(d>=(b.bLZ.bG4-b.bP0|0)){b=new BP;X(b);J(b);}e=Dn(b,d)-Dn(c,d)|0;if(!Dn(b,d))break;if(e)break;d=d+1|0;}return e;},CPM=(b,c,d)=>{let e,f;JT();e=0;a:{b:{while(true){if(e>=(b.bLZ.bG4-b.bP0|0))break b;if(e>=d)break b;f=Dn(b,e)-Dn(c,e)|0;if(!Dn(b,e))break;if(f)break;e=e+1|0;}break a;}f=0;}return f;},Eo1=(b,c,d)=>{let e;JT();e=0;while(e<(O4(c)+1|0)&&e{let d,e;JT();d=b.bP0;a:{b:{while(true) +{e=b.bLZ;if(d>=e.bG4)break;if(Vx(e,d)==c)break b;d=d+1|0;}e=null;break a;}e=BKL(b.bLZ,d);}return e;},DJP=(b,c,d)=>{let e,f;JT();if(d==10){c=c.data;e=CZ(AG7(b));f=new S;T(f);BE(f,e);c[0]=GL(b,(Q(f)).bGI.length);return e;}b=new Bt;X(b);J(b);},D5R=(b,c)=>{JT();return DM(AG7(b));},Bph=b=>{JT();return DM(AG7(b));},FjQ=b=>{JT();return AVW(b);},BTA=b=>{JT();return CZ(AG7(b));},Bnj=b=>{JT();return LG(b);},E81=b=>{JT();return null;},BwA=b=>{JT();},EVK=(b,c)=>{JT();if(b!==c){if(b!==null&&c!==null)return BaQ(b,c)?0:1;return 0;}return 1;},A88 +=(b,c)=>{JT();if(b!==c){if(b!==null&&c!==null){if(b.bLZ===c.bLZ)return b.bP0!=c.bP0?0:1;b=new BV;X(b);J(b);}return 0;}return 1;},BKH=(b,c,d,e)=>{let f,g,h,i,j,k,l,$$je;JT();a:{try{f=0;}catch($$e){$$je=P($$e);g=$$je;break a;}h=d-1|0;b:{try{while(f0){i=1;E1f(c,j,l);}j=l;}if(!i)break b;f=f+1|0;}}catch($$e){$$je=P($$e);g=$$je;break a;}l=0;while(l0){b=new BP;X(b);J(b);}}return;}l=0;while +(l0){b=new BP;X(b);J(b);}}return;}l=0;d=d-1|0;while(l0){b=new BP;X(b);J(b);}}J(g);},DMC=(b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,$$je;JT();a:{try{f=0;}catch($$e){$$je=P($$e);g=$$je;break a;}h=d-1|0;b:{try{while(f0){i=1;n=k[j];k[j]=k[l];k[l]=n;}j=l;}if(!i)break b;f=f+1|0;}}catch($$e){$$je=P($$e);g=$$je;break a;}l +=0;while(l0){b=new BP;X(b);J(b);}}return;}l=0;while(l0){b=new BP;X(b);J(b);}}return;}l=0;d=d-1|0;while(l0){b=new BP;X(b);J(b);}}J(g);},BQC=b=>{JT();b.c$C=1;return 0;},FfW=()=>{BD0=65535;}; +function Oh(){F.call(this);this.cPX=null;} +let Pd=(a,b)=>{a.cPX=b;},CCL=a=>{let b=new Oh();Pd(b,a);return b;},CKW=a=>{return 1;},A_4=a=>{return B4X(a.cPX);},A2C=N(Bx),BsE=null,BrF=null,AZX=null,BBR=null,BA9=null,BbQ=null,A3V=null,ARG=null,BqL=null,Bhq=null,ARl=null,BrM=null,R$=null,Blq=null,G9=null,A3P=null,A_o=null,Bc6=null,BgZ=null,A$B=null,Q_=null,BaD=null,A6R=null,BtW=null,BJz=null,D4Z=null,Ej=()=>{Ej=Z(A2C);EVN();},Ee1=(a,b,c)=>{Ej();Ct(a,b,c);},Kd=(a,b)=>{let c=new A2C();Ee1(c,a,b);return c;},B4X=a=>{let b,c,d,e;switch(a.bGO){case 0:break;case 1:return B$f();case 2:b +=new BnC;BFj(b);b.ddN=b;return b;case 3:return CSI();case 4:return VE();case 5:return C2K();case 6:b=new B0h;CJ(b);b.cCb=Gm();c=K(FB,4);d=c.data;e=new FB;CJ(e);d[0]=e;e=new FB;CJ(e);d[1]=e;e=new FB;CJ(e);d[2]=e;e=new FB;CJ(e);d[3]=e;b.cKE=c;e=new BFS;CJ(e);b.cX$=e;return b;case 7:b=new CpL;CJ(b);return b;case 8:b=new CG7;CJ(b);return b;case 9:b=new CW_;CJ(b);b.cfO=null;return b;case 10:return C2Y();case 11:return BkY();case 12:return BRF();case 13:b=new CNH;CJ(b);e=new C1d;CJ(e);b.caZ=e;e=new CtS;CJ(e);b.cdr +=e;b.cWO=Ca(3);b.cNY=K(BYR,3);return b;case 14:b=new FB;CJ(b);return b;case 15:return Buy();case 16:b=new DjB;CJ(b);e=new FB;CJ(e);b.cgi=e;e=new FB;CJ(e);b.cgj=e;return b;case 17:b=new B6P;CJ(b);e=new FB;CJ(e);b.bIn=e;e=new FB;CJ(e);b.bI5=e;return b;case 18:b=new CDp;CJ(b);e=new FB;CJ(e);b.bLx=e;e=new FB;CJ(e);b.bIK=e;return b;case 19:b=new CJ7;CJ(b);c=K(AX9,3);d=c.data;e=new AX9;CJ(e);d[0]=e;e=new AX9;CJ(e);d[1]=e;e=new AX9;CJ(e);d[2]=e;b.bJq=c;return b;case 20:return Bqe();case 21:b=new CUi;CJ(b);c=K(FB,2);d +=c.data;e=new FB;CJ(e);d[0]=e;e=new FB;CJ(e);d[1]=e;b.bSa=c;return b;case 22:b=new CJh;CJ(b);return b;case 23:b=new CZG;CJ(b);e=new FB;CJ(e);b.cZ5=e;return b;case 24:return BC9();default:b=new BV;Bp(b,HT(a));J(b);}return V3();},EVN=()=>{let b,c,d;BsE=Kd(E(5158),0);BrF=Kd(E(5159),1);AZX=Kd(E(5160),2);BBR=Kd(E(5161),3);BA9=Kd(E(5162),4);BbQ=Kd(E(5163),5);A3V=Kd(E(5164),6);ARG=Kd(E(5165),7);BqL=Kd(E(5166),8);Bhq=Kd(E(5167),9);ARl=Kd(E(5168),10);BrM=Kd(E(5169),11);R$=Kd(E(5170),12);Blq=Kd(E(5171),13);G9=Kd(E(5172), +14);A3P=Kd(E(5173),15);A_o=Kd(E(5174),16);Bc6=Kd(E(5175),17);BgZ=Kd(E(5176),18);A$B=Kd(E(5177),19);Q_=Kd(E(5178),20);BaD=Kd(E(5179),21);A6R=Kd(E(5180),22);BtW=Kd(E(5181),23);b=Kd(E(5182),24);BJz=b;c=K(A2C,25);d=c.data;d[0]=BsE;d[1]=BrF;d[2]=AZX;d[3]=BBR;d[4]=BA9;d[5]=BbQ;d[6]=A3V;d[7]=ARG;d[8]=BqL;d[9]=Bhq;d[10]=ARl;d[11]=BrM;d[12]=R$;d[13]=Blq;d[14]=G9;d[15]=A3P;d[16]=A_o;d[17]=Bc6;d[18]=BgZ;d[19]=A$B;d[20]=Q_;d[21]=BaD;d[22]=A6R;d[23]=BtW;d[24]=b;D4Z=c;},EaO=N(),Cjw=(b,c,d)=>{let e,f,$$je;Bf();try{b.bGQ=c;e +=b.bHw;e.bW$=d;f=e.bIE;if(!(f!=3&&f!=2)){e=DT7(b);EBn(e,c);e.bKd.bHw.bW$=d;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},A2U=(b,c,d)=>{let e,f,g,$$je;Bf();try{e=b;f=e.bGQ;b=f;a:{b:{c:{while(b!==null){if(!AFr(c,b.cpC))break c;b=b.bVZ;if(b===f)break b;}break a;}break a;}b=null;}if(b!==null){g=e.bHw.bW$;if(g){if(d&&e.bGQ!==b)Fw(Fm(),E(5183));}else if(!(b===f&&d==(!g?0:1)))Cjw(e,b,!d?0:1);}}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},BY3=(b,c,d)=>{let e,$$je;Bf();try{e=c.bGQ;if(e===null)d.bVZ=d;else{b=e.bVZ;if(b!== +e){d.bVZ=b;e.bVZ=d;}else{e.bVZ=d;d.bVZ=e;}}if(!c.bHw.bW$)Cjw(c,d,0);}catch($$e){$$je=P($$e);b=$$je;J(b);}},AGL=(b,c,d,e,f)=>{let g,h,i,$$je;Bf();try{a:{g=c;h=H9(g);i=A2U(g,d,0);if(i===null&&CKW(e)){b:{c:{d:{i=A_4(e);i.cpC=ABs(b,h,d);switch(g.bHw.bIE){case 0:break d;case 1:break c;case 2:case 3:break b;default:}break a;}BY3(h,g,i);break a;}BY3(h,g,i);break a;}BY3(h,g,i);}}if(f)A2U(c,d,1);}catch($$e){$$je=P($$e);b=$$je;J(b);}return i;}; +function B$l(){let a=this;CA.call(a);a.bIY=null;a.bPl=0;} +let Es$=a=>{CJ(a);},EZd=()=>{let a=new B$l();Es$(a);return a;}; +function C$f(){let a=this;Wy.call(a);a.c42=null;a.bRz=null;a.b8L=0;} +let Ho=(b,c)=>{let d,e;d=BDs(K(F,b),0,c);e=0;while(e{let e,f,g,h;if(c!==null){if(b>c.bRz.data.length){if(!c.b8L){e=BDs(K(F,b),0,d);f=c.bRz;g=f.data;Di(f,0,e.bRz,0,g.length);h=c.bRz.data.length;while(true){f=e.bRz.data;if(h>=f.length)break;f[h]=B4X(d);h=h+1|0;}return e;}c=new BP;X(c);J(c);}return c;}return Ho(b,d);},E5e=(a,b,c,d)=>{a.bRz=b;a.b8L=c;a.c42=d;},BDs=(a,b,c)=>{let d=new C$f();E5e(d,a,b,c);return d;},IQ=(a,b)=>{return BDs(a.bRz,a.b8L+b|0,a.c42);},CY6 +=(a,b)=>{if(a.bRz!==b.bRz){b=new Bt;X(b);J(b);}return a.b8L-b.b8L|0;},Y=(a,b)=>{return a.bRz.data[b+a.b8L|0];}; +function Cb8(){let a=this;CA.call(a);a.bK7=null;a.bPR=0;a.bVo=0;a.bWc=0;a.bQt=null;a.bQq=null;} +let ES7=a=>{let b;CJ(a);b=new FB;CJ(b);a.bQt=b;b=new FB;CJ(b);a.bQq=b;},Buy=()=>{let a=new Cb8();ES7(a);return a;},A6l=(a,b)=>{let c;c=b;a.bK7=c.bK7;a.bPR=c.bPR;a.bVo=c.bVo;a.bWc=c.bWc;Cd(a.bQt,c.bQt);Cd(a.bQq,c.bQq);}; +function CI4(){let a=this;F.call(a);a.cf$=null;a.chw=null;a.czG=0;} +let Ca$=a=>{B8();return Z5;},CNr=N(),C5N=N(),Crq=null,BGv=()=>{BGv=Z(C5N);ESY();},ESY=()=>{let b,c;A72();b=Ca((CoH.b2()).data.length);c=b.data;Crq=b;c[A8m.bGO]=1;c[Bus.bGO]=2;c[BXR.bGO]=3;},A9L=N(Bx),A19=null,A7h=null,A2M=null,D7X=null,AGz=()=>{AGz=Z(A9L);DG1();},Dvc=(a,b,c)=>{AGz();Ct(a,b,c);},BUI=(a,b)=>{let c=new A9L();Dvc(c,a,b);return c;},DG1=()=>{let b,c,d;A19=BUI(E(883),0);A7h=BUI(E(5184),1);b=BUI(E(5185),2);A2M=b;c=K(A9L,3);d=c.data;d[0]=A19;d[1]=A7h;d[2]=b;D7X=c;},ZO=N(0),C8y=N(),DAh=(a,b)=>{return 1;},DO6 +=a=>{return null;}; +function C8x(){let a=this;F.call(a);a.cXi=null;a.cXh=null;} +let DM8=(a,b)=>{return !(a.cXi.IG(b)&&a.cXh.IG(b))?0:1;},Flb=a=>{return null;}; +function C8w(){F.call(this);this.cTn=null;} +let D4W=(a,b)=>{if(!KX(Ja(b))){if(a.cTn===Ja(b))return 1;return 0;}return 0;}; +function DfE(){let a=this;F.call(a);a.cAK=null;a.cx7=null;a.cso=0;} +function C8E(){F.call(this);this.cv3=null;} +let ETB=(a,b)=>{return b.bHD!==a.cv3?0:1;},Err=a=>{return a.cv3.bHx;}; +function C8v(){F.call(this);this.cCv=null;} +let Fid=(a,b)=>{let c;c=b.bGZ;if(c!==null){F_();b=(T0(c,Hl)).dX();while(b.dY()){if(Bj(b.dZ(),a.cCv))return 1;}return 0;}return 0;},Dwl=a=>{return a.cCv;}; +function C8B(){F.call(this);this.czD=null;} +let Etc=(a,b)=>{return Bj(a.czD,En(b));},D_J=a=>{return a.czD;}; +function C8u(){F.call(this);this.csg=null;} +let Ey$=(a,b)=>{return Bj(b.bJn,a.csg.bJn);},D6O=a=>{return a.csg.bJn;}; +function CMi(){let a=this;F.call(a);a.b6M=0;a.b8y=0;a.c4G=null;a.cCm=null;} +let EUJ=(a,b,c,d,e)=>{c=new DhC;c.cAT=a;c.cT$=b;c.cqV=d;return c;},BWo=N(Dd); +function C6S(){let a=this;F.call(a);a.bTB=0;a.bXi=0;a.b$W=0;a.cf5=null;} +let EAr=(a,b,c,d)=>{let e;if(d!=2&&d!=4&&d!=8&&d!=16){e=new Bt;X(e);J(e);}a.bTB=b;a.bXi=c;a.b$W=d;a.cf5=Bgv([b,c]);},BfF=(a,b,c)=>{let d=new C6S();EAr(d,a,b,c);return d;},AOI=(a,b,c,d)=>{let e,f,g;if(b>=0&&b=0&&c=0&&d{return a.bXi;},EdZ=a=>{return a.bTB;},DHL=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q;if(!(c!==null&&!c.gv())){Go();e=K8;c=Hu;c +=AFv(e,c);}if(!(d!==null&&!d.gv())){Go();d=Hu;e=K8;d=AFv(d,e);}e=Bt9(a.bTB,a.bXi,2);f=BJv(c,d,0);g=0.0;h=0;while(hg/4.0?255:255.0*l*4.0/g|0;if(l>1.0)break a;if(l<0.0)break a;c=f.b5r.gw(b);d=f.cxr.gw(b);n=d.bJX;o=c.bJX;n=n-o|0;h=d.bJz;p=c.bJz;h=h-p|0;q=d.bJT;i=c.bJT;q=q-i|0;n=l*n|0;h=l*h|0;q=l*q|0;n=Bod(AUg(o+n|0,p+h|0,i+q|0,m));Bmn(e, +j,k,n);k=k+1|0;}j=j+1|0;}c=new NR;d=new WP;WL();ACP(d,e,YW);ABW(c,d);return c;}b=new Bt;c=new S;T(c);D6(H(c,E(5188)),l);Bp(b,Q(c));J(b);},DIF=(a,b,c,d,e)=>{e=new CKI;e.cxQ=a;e.c2K=c;e.cLG=b;e.ct1=d;return e;},C1S=N(Ix),CZ$=(a,b,c,d,e,f)=>{let g;g=Ge(C2(c-a.bL2,d),f);g.bG1=e;b.hP(g);},Clp=N(Ix),D$M=(a,b,c,d,e,f)=>{let g;c=c-a.bL2;g=Fj();BQ(g,0.0,0.0);K0();BQ(g,c+Pg,0.0);BQ(g,c,d/2.0);BQ(g,c+Pg,d);BQ(g,0.0,d);g.bG1=e;b.hP(g);},C89=N(Ix),E9E=(a,b,c,d,e,f)=>{let g;c=c-a.bL2;g=Fj();BQ(g,0.0,0.0);BQ(g,c,0.0);K0();BQ(g, +c+Pg,d/2.0);BQ(g,c,d);BQ(g,0.0,d);g.bG1=e;b.hP(g);},CkX=N(Ix),DER=(a,b,c,d,e,f)=>{let g,h;c=c-a.bL2;g=C2(c,d);g.bG1=e;b.hP(g);h=Fg(d);K0();(b.h2(BM(B4D))).hP(h);(b.h2(BM(c-B4D))).hP(h);},Dr1=N(Ix),Eit=(a,b,c,d,e,f)=>{let g;c=c-a.bL2;g=Fj();BQ(g,0.0,0.0);K0();BQ(g,c-Pg,0.0);BQ(g,c,d);BQ(g,Pg,d);g.bG1=e;b.hP(g);},Dsl=N(Ix),End=(a,b,c,d,e,f)=>{let g;c=c-a.bL2;g=Fj();K0();BQ(g,Pg,0.0);BQ(g,c,0.0);BQ(g,c-Pg,d);BQ(g,0.0,d);g.bG1=e;b.hP(g);},CLT=N(Ix),FdD=(a,b,c,d,e,f)=>{let g,h,i,j,k;g=c-a.bL2;h=EE();i=Hr(2);j=i.data;K0();c +=B0K;j[0]=c;j[1]=0.0;j=Hr(2);k=j.data;k[0]=0.0;f=d/2.0;k[1]=f;k=Gh([c,d]);NQ();SI(h,i,Xw);SI(h,j,VJ);SI(h,k,VJ);i=Hr(2);j=i.data;c=g-B0K;j[0]=c;j[1]=0.0;j=Gh([g,f]);k=Gh([c,d]);SI(h,i,Xw);SI(h,j,VJ);SI(h,k,VJ);h.bG1=e;b.hP(h);},CJM=N(Ix),Epf=(a,b,c,d,e,f)=>{let g;g=C2(c-a.bL2,d);g.bG1=e;b.hP(g);},CnQ=N(Ix),Fft=(a,b,c,d,e,f)=>{let g;g=C2(c-a.bL2,d);g.bG1=e;b.hP(g);},Crs=N(Ix),Dxs=(a,b,c,d,e,f)=>{let g,h;g=c-a.bL2;h=Fj();K0();BQ(h, -Pg|0,0.0);BQ(h,g,0.0);f=g+Pg;c=d/2.0;BQ(h,f,c);BQ(h,g,d);BQ(h, -Pg|0,d);BQ(h, +0.0,c);h.bG1=e;b.hP(h);},DlY=N(Ix),DUu=(a,b,c,d,e,f)=>{let g;c=c-a.bL2;g=Fj();BQ(g,0.0,0.0);K0();BQ(g,c+Pg,0.0);BQ(g,c,d/2.0);BQ(g,c+Pg,d);BQ(g,0.0,d);g.bG1=e;b.hP(g);},C92=N(Ix),Dyl=(a,b,c,d,e,f)=>{let g;c=c-a.bL2;g=Fj();BQ(g,0.0,0.0);BQ(g,c,0.0);K0();BQ(g,c+Pg,d/2.0);BQ(g,c,d);BQ(g,0.0,d);g.bG1=e;b.hP(g);},DgD=N(Ix),DB_=(a,b,c,d,e,f)=>{let g,h;g=c-a.bL2;h=Fj();K0();BQ(h, -Pg|0,0.0);BQ(h,g,0.0);BQ(h,g,d);BQ(h, -Pg|0,d);BQ(h,0.0,d/2.0);h.bG1=e;b.hP(h);},C9L=N(Ix),DVO=(a,b,c,d,e,f)=>{let g,h;c=c-a.bL2;g=Fj();c +=c/2.0;f=d/3.0;h=c-f;BQ(g,h,f);c=c+f;BQ(g,c,f);BQ(g,h,d);BQ(g,c,d);g.bG1=e;b.hP(g);}; +function B9s(){let a=this;F.call(a);a.cq6=null;a.cip=BH;a.cpG=BH;a.b63=BH;a.cjG=0;a.cOI=0;a.cLc=0;a.c_X=null;a.dcJ=0;a.c72=BH;} +let Fpk=a=>{return a.cq6;},EK5=a=>{let b;b=a.cq6;return Bn(b,b.bGI.length-1|0)!=47?0:1;},Dun=(a,b)=>{a.cip=b;},FpL=(a,b)=>{let c;if(b!==null&&b.data.length>65535){c=new Bt;X(c);J(c);}a.c_X=b;},Dz_=(a,b)=>{let c;if(FE(b,BH)&&IH(b,O(4294967295, 0))){a.b63=b;return;}c=new Bt;X(c);J(c);}; +function DiD(){let a=this;AAl.call(a);a.b95=null;a.bXd=0;} +let DA3=a=>{let b,c;b=a.b95;if(b!==null)return (b.data.length-a.bXd|0)+a.bKr.Cq()|0;c=new Dd;X(c);J(c);},Fin=a=>{if(a.bKr!==null){a.bKr.tW();a.bKr=null;a.b95=null;}},DNI=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m;e=a.b95;if(e!==null){f=b.data.length;if(c<=f&&c>=0){if(d>=0&&d<=(f-c|0)){g=e.data;h=0;i=0;j=a.bXd;f=g.length;if(j=d)i=d;Di(e,j,b,c,i);c=c+i|0;h=h+i|0;a.bXd=a.bXd+i|0;}if(i!=d){f=a.bKr.BK(b,c,d-h|0);if(f<=0){if(!h)return f;return h;}return f+h|0;}return d;}k=new TB;l=new S;T(l);BE(H(l,E(4938)), +d);Bp(k,Q(l));J(k);}l=new TB;m=new S;T(m);BE(H(m,E(4939)),c);Bp(l,Q(m));J(l);}l=new Dd;Bp(l,E(2120));J(l);}; +function CAy(){let a=this;F.call(a);a.chn=0;a.c1f=0;a.cp1=0;a.b5t=0;a.b9Y=0;a.bXD=null;} +let EJp=(a,b,c,d)=>{let e,f,g,h,i,j,k;e=b.data.length;if(c<=e&&d>=0&&c>=0&&(e-c|0)>=d){f=a.bXD;if(f!==null){g=f.bG2;h=f.bOW;e=a.b9Y;a.b9Y=0;Cv6(f,b,c,d);i=a.bXD;f=i.cRn;if(f===null)j=(-2);else{j=FeU(f,0);if(j==1)i.cHD=1;}a:{b:{c:{switch(j){case 0:break a;case 1:break c;case 2:break b;default:}f=new Sg;i=new S;T(i);BE(H(i,E(5189)),j);Bp(f,Q(i));J(f);}a.chn=1;break a;}a.b9Y=1;}if(a.b9Y&&e){f=new Sg;X(f);J(f);}k=V(a.b5t);f=a.bXD;a.b5t=Cp(BU(k,CE(f.bG2,g)));return Cp(CE(f.bOW,h));}f=new BP;X(f);J(f);}f=new TB;X(f);J(f);},C1$ +=N(0); +function Dao(){let a=this;F.call(a);a.ceM=null;a.cv6=BH;} +let CV9=(a,b,c,d)=>{let e,f;e=b.data.length;if(c<=e&&d>=0&&c>=0&&(e-c|0)>=d){Cin(a.ceM,b,c,d);a.cv6=BU(a.cv6,V(d));return;}f=new TB;X(f);J(f);}; +function C3N(){F.call(this);this.cNH=null;} +let D8r=(a,b)=>{let c,$$je;b=b;c=a.cNH;ZR();a:{b:{try{b=CL(CZ(b));break a;}catch($$e){$$je=P($$e);if($$je instanceof Ex){break b;}else{throw $$e;}}}b=c;}return b;},A8P=N(Bx),Bfh=null,Qv=null,EIR=null,Pb=()=>{Pb=Z(A8P);DMs();},DP5=(a,b,c)=>{Pb();Ct(a,b,c);},CTI=(a,b)=>{let c=new A8P();DP5(c,a,b);return c;},DMs=()=>{let b,c,d;Bfh=CTI(E(5190),0);b=CTI(E(5191),1);Qv=b;c=K(A8P,2);d=c.data;d[0]=Bfh;d[1]=b;EIR=c;},B0k=N(0),BQG=(a,b,c)=>{return 0.0;}; +function Cog(){let a=this;F.call(a);a.ckE=null;a.b78=null;a.b_R=null;a.cyn=null;a.b_6=null;a.cZa=null;a.bUr=null;} +let D1z=(a,b)=>{a.ckE=Bk();a.b78=E9();a.b_R=Bk();a.cyn=Bk();a.b_6=Bk();a.cZa=b;b=new CE$;b.cNB=A6U(1);a.bUr=b;},BVy=a=>{let b=new Cog();D1z(b,a);return b;},Dk1=(a,b,c,d)=>{let e,f,g,h;e=new B8l;f=a.bUr;e.cDI=d;e.b1g=T7(b);e.bNG=c;e.bXI=c.a8$();g=ABQ(f);e.b3L=g;h=K(F,1);h.data[0]=CL(g);e.b2o=Jv(E(5192),h);e.bXs=b;Es(a.b78,b,e);return e;},V1=(a,b)=>{let c,d;c=Br(a.ckE);while(true){if(!Bq(c))return null;d=Bm(c);if(B7V(Dkv(d),b))break;}return d;},Eqr=(a,b)=>{let c,d;U(a.b_6,b);if(!(M2(b.bG7)!=1?0:1))U(a.cyn,b);else if +(!ADO(b))U(a.b_R,b);else{c=0;while(true){d=a.b_R;if(c>=d.bGJ)break;d=Be(d,c);if(!ADO(d)&&A1P(b.bG7,d.bG7)){Ik(a.b_R,c,b);return;}c=c+1|0;}U(d,b);}},L$=(a,b)=>{return FW(a.b78,b);},BnD=(a,b)=>{let c,d;c=L$(a,b);if(c!==null){d=YG(c);if(BJe(c)){b=new S;T(b);H(H(b,d),E(5193));d=Q(b);}return d;}if(!Hh(b)){b=new BP;X(b);J(b);}return BCi(b);},ELy=a=>{let b,c,d,e,f,g;b=Dy();c=G3(G8(a.b78));d=c;while(Gl(d)){e=GZ(c);f=e.bHe;g=f.bSh+X8(f);e=En(e.bHt);f=DL(g);C9(b,e,f);}return b;},AAg=a=>{return a.b_6;},DeG=a=>{return a.b_R;},Did +=a=>{return a.cyn;},A9_=a=>{return a.ckE;},AVB=a=>{return Gc(a.b78);},Cg9=(a,b)=>{let c,d;c=Br(a.b_6);while(true){if(!Bq(c)){b=new Bt;X(b);J(b);}d=Bm(c);if(d.bG7!==b?0:1)break;}return d;},CZv=(a,b)=>{let c,d,e;c=G3(G8(a.b78));d=c;while(true){if(!Gl(d)){b=new Bt;X(b);J(b);}e=GZ(c);if(e.bHe===b)break;}return e.bHt;}; +function B50(){let a=this;F.call(a);a.c5s=null;a.bHz=null;a.bVP=null;a.b0y=null;a.b1R=0;a.cUM=0;a.cCu=0;a.ctU=0;a.bJ2=null;a.bT_=null;a.bPO=null;a.b4C=null;a.ccl=null;a.cdl=null;a.bJO=null;a.dc0=null;a.cp6=0;} +let Ee6=a=>{let b,c,d;b=PZ(Bo(AD3));c=Br(a.bVP);while(Bq(c)){d=(Bm(c)).b1g;Jb();if(d!==LQ)OJ(b,d);}return b;},FlB=(a,b,c,d,e)=>{CNO(a,b,c,null,d,e);},BNp=(a,b,c,d)=>{let e=new B50();FlB(e,a,b,c,d);return e;},CNO=(a,b,c,d,e,f)=>{a.bVP=Bk();a.b0y=Bk();a.cp6=0;if(f!==null){a.dc0=b;a.c5s=d;a.bHz=f;a.bT_=c;a.b1R=ABQ(e);a.cUM=ABQ(e);a.cCu=ABQ(e);a.ctU=ABQ(e);a.bJ2=AHL(f.bG_,c.bGM);return;}b=new BP;X(b);J(b);},Fnf=(a,b,c,d,e)=>{let f=new B50();CNO(f,a,b,c,d,e);return f;},EFx=a=>{let b,c,d;b=JH(a);c=BY(a.bHz);d=new S;T(d);b +=H(d,b);Bb(b,32);H(b,c);return Q(d);},B8O=a=>{return a.bVP;},BOP=(a,b)=>{let c,d,e,f;c=Bk();d=Br(a.bVP);while(Bq(d)){e=Bm(d);f=e.b1g;if(OS(b,f))U(c,e);}return c;},BSk=(a,b)=>{let c;c=b.b1g;Jb();return c!==LQ?0:1;},Dkv=a=>{return HL(a.bHz);},Bvl=a=>{return a.bHz;},AJh=a=>{let b,c;b=DnL(a);B9();c=(BJ(b,Pt)).oK();return DT(a.bPO.ctC,Tt(c)|0);},AWT=a=>{return a.bPO.cCY;},BwV=a=>{return a.bJO;},Ct_=(a,b)=>{a.b4C=b;},EkK=(a,b)=>{a.ccl=b;},EjG=(a,b)=>{a.cdl=b;},Bo7=(b,c,d)=>{CV();if(b!==AC9){if(c===null){F7();if(d +===Kw){B8();return CG(Dij,b);}B8();return CG(B86,b);}B8();return AIf(CG(B86,b),c.JS());}B8();return Dg4;},CFi=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,$$je;if(!AT8(a.bHz)){c=Cf(a.bT_);IY();if(WV(c,VC)){if(a.ccl!==null){K$();BQe(BcC(a,Ku),b.h2(I3(a.ccl)));}if(a.cdl!==null){K$();BQe(BcC(a,M5),b.h2(I3(a.cdl)));}}d=En(a.bHz);if(!BO(d,E(1244))){c=new ACL;e=new S;T(e);H(H(e,E(5194)),d);API(c,Q(e));b.hP(c);}f=a.bT_.bM8;g=DnL(a);h=G1(g);c=a.bHz.bG_;CM();if(DQ(c,E1)!==null)i=DQ(a.bHz.bG_,E1);else{B9();i=(BJ(g,Cz)).cu(A9p(a.bJ2));}B9();j +=(BJ(g,Jm)).oK();if(Dgq(a.bJ2))j=0.0;k=(BJ(g,ACK)).oK();c=KV(a.bHz.bMi);Hb();Db(c,IO,E(5195));e=KF;l=new S;T(l);H(H(l,E(5196)),d);Db(c,e,Q(l));Db(c,OZ,En(a.bHz));Db(c,KD,a.bHz.bJn);Db(c,L8,a.bHz.bH4.bJ1);b.hH(c);m=a.bHz.bIa;if(m!==null)b.hF(m);a:{b:{c:{d:{try{if((Ee6(a)).dV()>0)CjA(a,b.hE());}catch($$e){$$je=P($$e);if($$je instanceof Dt){n=$$je;break d;}else{d=$$je;break c;}}e:{try{if(!ADx(a.bJ2,f))break e;DzL(a,b,i);}catch($$e){$$je=P($$e);if($$je instanceof Dt){n=$$je;break d;}else{d=$$je;break c;}}f:{try +{if(m===null)break f;}catch($$e){$$je=P($$e);if($$je instanceof Dt){n=$$je;break d;}else{d=$$je;break c;}}b.hG();}b.hI();return;}g:{try{h:{try{F8();if(f===RA)break h;o=0;break g;}catch($$e){$$je=P($$e);if($$je instanceof Dt){n=$$je;break d;}else{throw $$e;}}}try{o=1;break g;}catch($$e){$$je=P($$e);if($$je instanceof Dt){n=$$je;break d;}else{throw $$e;}}}catch($$e){$$je=P($$e);d=$$je;break c;}}i:{try{if(!o)break i;if(Mt(a.bHz)!==null)break i;ExE(a,b,f,j,h);}catch($$e){$$je=P($$e);if($$je instanceof Dt){n=$$je;break d;} +else{d=$$je;break c;}}j:{try{if(m===null)break j;}catch($$e){$$je=P($$e);if($$je instanceof Dt){n=$$je;break d;}else{d=$$je;break c;}}b.hG();}b.hI();return;}k:{try{l:{try{e=C5r(a.bHz);if(e===null)break l;break k;}catch($$e){$$je=P($$e);if($$je instanceof Dt){n=$$je;break d;}else{throw $$e;}}}try{e=BUL(a.bJ2);break k;}catch($$e){$$je=P($$e);if($$je instanceof Dt){n=$$je;break d;}else{throw $$e;}}}catch($$e){$$je=P($$e);d=$$je;break c;}}try{l=CWa(a.bHz,g);d=FsN(Enh(a,g),Tm(a.bHz),N$(f),Mt(a.bHz),ADg(a.bJ2),A9p(a.bJ2), +HR(a.bHz));CvQ(CUD(e,Mt(a.bHz),Ee_(a.bPO),Ew1(a.bPO),a.bJO,l),b,d,i,h,j,Bl$(a.bPO),BFb(a.bJ2),k);}catch($$e){$$je=P($$e);if($$je instanceof Dt){n=$$je;break d;}else{d=$$je;break c;}}m:{try{if(m===null)break m;}catch($$e){$$je=P($$e);if($$je instanceof Dt){n=$$je;break d;}else{d=$$je;break c;}}b.hG();}b.hI();break a;}try{AEM(n);break b;}catch($$e){$$je=P($$e);d=$$je;break c;}}if(m!==null)b.hG();b.hI();J(d);}if(m!==null)b.hG();b.hI();}return;}},DnL=a=>{let b,c;b=a.bT_.bM8;if(Mt(a.bHz)!==null)c=Mt(a.bHz);else{F$();c +=AR7;}return B0(ADg(a.bJ2),Du(Bo7(N$(b),c,HR(a.bHz)),a.bHz.bGZ));},BcC=(a,b)=>{let c,d,e;c=A$s(a.bHz,b);if(c.dV()){d=c.cf(0);b=new BRZ;e=d.ced;c=d.cev;d=a.bJ2;Cpd(b,e,c,d,ADg(d));return b;}return null;},CWa=(b,c)=>{let d;d=b.bG_;if(ACd(d)!==null)return ACd(d);return Fi(c);},CjA=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=Bk();d=Bk();e=Br(a.bVP);while(Bq(e)){f=Bm(e);if(BSk(a,f)){f=AHo(f);U(c,f);}else{f=AO$(AHo(f));U(d,f);}}e=Br(a.b0y);while(Bq(e)){g=Bm(e);h=g.bJO;if(h!==null)U(c,h);else{i=Fm();g=BY(g);f=new S;T(f);H(H(f, +E(5197)),g);h=Q(f);Fw(i,h);}}e=EZw(a.bJO,c,d,CyE(a.bJ2));if(AJh(a)>0&&AWT(a)>0){j=AJh(a)+10|0;c=e.bHE;k=c.bKo;l=c.bJh;m=k-l-j;if(m<0.0){j=m/2.0;m=l+j;j=k-j;l=m-e.cW1.bJh;if(l<0.0){m=m-l;j=j-l;}c=CCp(c,m);e.bHE=c;e.bHE=CJg(c,j);}}a.bJO=e.bHE;l=(a.bPO.bWV.cF(b)).bGE;b=a.bJO;m=b.bJh;j=b.bJ6;a.b4C=BA(m+(Bsp(b)-l)/2.0,j+5.0);},DzL=(a,b,c)=>{let d;a.bPO.bWV.cC(b.h2(BM(a.b4C.bGK)));d=Fg(CJv(a.bJO));b=b.h2(c);(b.h2(BM(a.bJO.bJh))).hP(d);(b.h2(BM(a.bJO.bKo))).hP(d);},ExE=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r;f +=a.bHz.bG_;CM();g=DQ(f,E1);h=ADg(a.bJ2);i=A9p(a.bJ2);if(g===null){c=AYW(a.bHz.bGZ,h);B9();g=(BJ(c,Cz)).cu(i);}j=DQ(a.bHz.bG_,C6);if(j!==null){k=j;l=j;}else{AI4();c=Se;CV();c=B0(h,Du(CG(c,AAt),a.bHz.bGZ));B9();k=(BJ(c,CK)).cu(i);l=(BJ(B0(h,Du(CG(Se,AJp),a.bHz.bGZ)),CK)).cu(i);j=(BJ(B0(h,Du(CG(Se,A2i),a.bHz.bGZ)),CK)).cu(i);}f=B1B(a.bHz,a.bJ2);m=(f.cF(b.hE())).bGF;if((DbL(a.bJO)).bGE!==0.0){n=ACd(a.bHz.bG_);if(n===null){o=ADg(a.bJ2);n=Fi(AYW(a.bHz.bGZ,o));}p=QE(m,0.0);q=m+(p<=0?0:5);r=(a.bPO.bWV.cF(b.hE())).bGF ++5.0;BCZ(BE6(g,DbL(a.bJO),r,q,k,l,j,n,d,e),b.h2(CbU(a.bJO)));A5$(Bl$(a.bPO),b.h2(Bh(a.bJO.bJh,a.b4C.bGL)),a.bPO.bWV,5.0,0.0,Bsp(a.bJO));if(p>0){c=new FG;n=a.bJO;Hs(c,n.bJh+5.0,n.bJ6+r+2.5);f.cC(b.h2(c));}k=a.bHz.bGZ;if(!(k!==null&&Bkz(k))?0:1){b=b.h2(g);c=a.bJO;B76(b,c.bKo,c.bLc);}return;}Fw(Fm(),E(5198));},Csi=(a,b,c)=>{a.bJO=Rf(Eh(b.bGK,c.bGK),Eh(b.bGL,c.bGL),BC(b.bGK,c.bGK),BC(b.bGL,c.bGL));},BOk=(a,b,c,d)=>{let e,f,g,h,i;e=Bk();f=Dy();g=Br(a.bVP);while(Bq(g)){h=Bm(g);i=YG(h);C9(f,i,h);}c=c.dX();while(c.dY()) +{g=c.dZ();if(CPg(g)){h=BhL(g);h=DG(f,h);if(h!==null&&BSk(a,h))Ik(e,0,h);}}if(e.bGJ){c=Br(e);while(Bq(c)){AOS(Bm(c),b,d);}return 1;}return 0;},CxR=(a,b,c,d,e,f,g,h,i,j)=>{let k,l,m,n,o;k=ACR(a);l=a.cp6;m=new S;T(m);n=H(H(m,E(5199)),k);Bb(n,116);BE(n,l);H(n,E(3828));L(d,Q(m));n=Br(e);while(Bq(n)){k=Bm(n);if(CDZ(k)===b)AOS(k,d,f);}n=Br(a.b0y);while(Bq(n)){o=Bm(n);if(o.bHz.b6t===b)BZe(o,d,g,f,h,i,j);}m=Ro(c);while(m.dY()){n=m.dZ();if(n.cl0===b)CxR(a,n,c,d,e,f,g,h,i,j);}L(d,E(3544));a.cp6=a.cp6+1|0;},BK_=(a,b,c, +d,e,f,g)=>{let h,i,j,k,l,m,n,o,p,q;h=null;i=AAh();j=E2(a.bVP);k=Dy();l=j;m=Br(l);while(Bq(m)){n=Bm(m);if(!BSk(a,n)){AQe(m);continue;}o=YG(n);C9(k,o,n);}n=c.dX();while(n.dY()){o=n.dZ();if(CPg(o)){o=BhL(o);o=DG(k,o);if(o!==null)AZx(j,o);}}o=Br(l);while(Bq(o)){h=Bm(o);n=CDZ(h);if(n!==null)CPm(i,n);else AOS(h,b,d);}n=Br(a.b0y);while(Bq(n)){k=(Bm(n)).bHz.b6t;if(k!==null)CPm(i,k);}o=Ro(i);while(o.dY()){n=o.dZ();if(n.cl0===null)CxR(a,n,i,b,j,d,c,e,f,g);}if(B$g(a.bJ2)){ALk();if(e!==Bw$&&!f.a9Q()){j=G$();l=c.dX();while +(l.dY()){a:{b:{c:{p=l.dZ();n=p.bG7;if(!Hh(n.bHn)){k=T7(n.bHn);Jb();if(k!==LQ)break c;}if(Hh(n.bHo))break b;n=T7(n.bHo);Jb();if(n===LQ)break b;}q=1;break a;}q=0;}if(q)continue;k=BhL(p);n=Cff(p);if(Dg1(a,k)&&Dg1(a,n)){n=p.chS;IY();if(!(!AB3(n,A82)&&M2(p.bG7)==1))k=null;else{n=BhL(p);o=Cff(p);p=new S;T(p);Bb(H(H(H(H(p,E(5200)),n),E(3064)),o),125);k=Q(p);}if(k!==null)EQ(j,k);}}k=Ro(j);while(k.dY()){L(b,k.dZ());Fu(b);}}}o=Br(a.b0y);while(Bq(o)){k=Bm(o);if(k.bHz.b6t===null)BZe(k,b,c,d,e,f,g);}return h;},CPm=(b,c)=> +{while(c!==null){EQ(b,c);c=c.cl0;}},C1g=(a,b,c,d,e,f,g)=>{let h,i;a:{Jb();h=BOP(a,Fv(LQ));if(h.dV()){h=h.dX();while(true){if(!h.dY())break a;AOS(h.dZ(),b,d);}}h=ACR(a);i=new S;T(i);H(H(i,h),E(5201));L(b,Q(i));Fu(b);}h=a.b0y.dX();while(h.dY()){BZe(h.dZ(),b,c,d,e,f,g);}},BZe=(a,b,c,d,e,f,g)=>{let h,i;h=new Dc2;i=a.bJ2;h.bJy=a;h.bYI=i;E8C(h,b,c,d,e,f,g);},Dg1=(a,b)=>{let c;c=Br(a.bVP);while(Bq(c)){if(Bj(YG(Bm(c)),b))return 1;}return 0;},ACR=a=>{let b,c;b=a.b1R;c=new S;T(c);BE(H(c,E(5195)),b);return Q(c);},BCi= +b=>{let c;c=b.bJn;b=new S;T(b);H(H(b,E(5202)),c);return Q(b);},C6m=(a,b)=>{let c;if(ADx(a.bJ2,b)){c=a.b1R;b=new S;T(b);BE(H(b,E(5203)),c);return Q(b);}return null;},COP=(a,b)=>{let c;if(ADx(a.bJ2,b)){c=a.b1R;b=new S;T(b);BE(H(b,E(5204)),c);return Q(b);}return null;},BT7=a=>{return !(AWT(a)<=0&&AJh(a)<=0)?1:0;},BBT=a=>{return a.b1R;},BQc=a=>{return a.cUM;},Enh=(a,b)=>{let c,d;if(!KX(a.bHz)){c=a.bHz.bG_;CM();d=DQ(c,C6);if(d===null){B9();return (BJ(b,CK)).cu(A9p(a.bJ2));}return d;}return null;},FsN=(b,c,d,e,f, +g,h)=>{let i;i=B0(f,Bo7(d,e,h));if(b===null){B9();b=(BJ(i,CK)).cu(g);}if(!(b!==null&&!b.cx(Qj())))b=Qj();return b;},D$g=a=>{return a.cCu;},E0E=a=>{return a.ctU;},E7V=(a,b)=>{return a.bPO.bWV.cF(b);},Bu$=a=>{let b,c,d,e,f,g,h;if(Mt(a.bHz)===null){b=HR(a.bHz);F7();if(b!==Kw)return new AZQ;}b=Mt(a.bHz);c=C5r(a.bHz);if(c===null)c=BUL(a.bJ2);F8();d=Wa;e=B0(ADg(a.bJ2),Du(Bo7(N$(d),b,HR(a.bHz)),a.bHz.bGZ));f=CWa(a.bHz,e);g=new B6a;b=Mt(a.bHz);d=a.bPO;CoC(g,c,b,d.bWV,d.ct6,a.bJO,f);Go();f=Hu;e=a.bJ2;MY();b=AEQ;c=null;d +=null;h=(CRN(g,f,f,0.0,0.0,Bhs(e,b,c,0,d),BFb(a.bJ2),0.0)).a9W();b=new CSM;b.cQ1=a;b.c6G=h;return b;}; +function CUR(){let a=this;F.call(a);a.cEp=null;a.b21=null;} +let FmZ=(a,b,c)=>{a.cEp=b;a.b21=c;},BEW=(a,b)=>{let c=new CUR();FmZ(c,a,b);return c;},De7=(a,b)=>{let c,d,e;c=a.b21;d=c.bVP;e=B$(b);U(d,e);b.c_4=c;},CxN=(a,b,c)=>{let d,e,f,g;d=a.b21;e=b.bMi;f=a.cEp.bUr;g=Fnf(e,d.bT_,d,f,b);g.bPO=c;U(d.b0y,g);a.b21=g;U(a.cEp.ckE,g);},Cow=a=>{let b;b=a.b21.c5s;if(b===null){b=new BP;X(b);J(b);}a.b21=b;},BL0=N(0); +function B9z(){let a=this;F.call(a);a.bJ$=null;a.bOY=null;a.cfK=null;a.bN0=null;a.bQJ=null;a.bNl=null;a.cIg=null;} +let FtI=(a,b,c,d,e,f,g)=>{a.bJ$=b;a.bOY=f;a.cfK=g;a.bN0=c;a.bQJ=d;a.bNl=e;},BHf=(a,b,c,d,e,f)=>{let g=new B9z();FtI(g,a,b,c,d,e,f);return g;},CJp=(a,b,c)=>{return BHf(a.bJ$,a.bN0,a.bQJ,D7i(a.bNl,b,c),a.bOY,a.cfK);},EcS=(a,b)=>{let c,d,e;c=new C61;d=a.bNl;e=b.cxs;b=b.cQE;Bs3(c,d);c.c0F=b;c.cMP=e;return BHf(a.bJ$,a.bN0,a.bQJ,c,a.bOY,a.cfK);},CXN=a=>{return a.bJ$;},BOS=(a,b)=>{return K3(a.bN0,b);},C7x=a=>{return ((SP(a.bN0)).dX()).dZ();},CW0=a=>{let b,c;b=null;c=(SP(a.bN0)).dX();while(c.dY()){b=c.dZ();}return b;},EBD +=(a,b)=>{a.cIg=b;},AW1=a=>{return CW(a.cIg.ckA);},BlV=a=>{return CW(a.cIg.cz5);}; +function CjC(){F.call(this);this.bQ1=null;} +let BIF=a=>{return a.bQ1.bHv;},DOl=(a,b)=>{let c,d,e;c=0.0;b=(Gc(a.bQ1)).dX();while(b.dY()){d=b.dZ();e=0.0;while(d!==null){e=e+C0Y(d);d=BI1(d);}if(e>c)c=e;}return c;}; +function CId(){let a=this;F.call(a);a.c_2=8.0;a.ckA=null;a.cz5=null;a.cGc=0;a.bUN=null;a.bYM=null;a.cUd=null;a.cWl=null;a.ddy=null;a.dam=null;} +let DyX=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o;a:{a.c_2=8.0;a.bUN=Bk();a.ddy=b;a.bYM=d.bN0;a.cUd=b.cIw;a.cWl=b.bGM;a.dam=d.bJ$;e=Bk();f=Bk();g=d.bOY;h=e;U(h,g);g=d.bOY;i=f;U(i,g);if(BIF(c)>0){j=d.bJ$;if(BIF(c)){g=Bk();k=(Gc(c.bQ1)).dX();while(k.dY()){l=CIC(k.dZ(),j);U(g,l);}U(h,ByK(g));k=d.bJ$;if(BIF(c)){m=Bk();l=(Gc(c.bQ1)).dX();while(l.dY()){g=EK(CgV(l.dZ(),k),10.0);U(m,g);}U(i,Bij(m));break a;}b=new BP;X(b);J(b);}b=new BP;X(b);J(b);}}k=AH9(EK(d.cfK,8.0),0.0);j=a.bUN;l=(Dl0(b)).dX();n=null;c=Bk();while(l.dY()) +{m=Br(Cr5(l,d,l.dZ(),n,k));while(Bq(m)){g=Bm(m);U(c,g);k=g.a94();}}Ea(j,c);k=Br(a.bUN);while(Bq(k)){g=Bm(k);U(h,g.a95());U(i,g.a96());}c=(SP(a.bYM)).dX();while(c.dY()){m=c.dZ();U(i,QC(m,d.bJ$));U(i,BaN(m,d.bJ$));}a.ckA=ByK(e);a.cz5=Bij(f);if(AIc(b.bGM))o=0;else{c=DF(b.bGM,E(571));o=c===null?b.cpR:!BG(c,E(2219))?1:0;}a.cGc=o;},EKG=(a,b,c)=>{let d=new CId();DyX(d,a,b,c);return d;},FpS=(a,b)=>{BWd(a,Bxt(b,0),0);},BWd=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;d=Im(b);e=Bk();f=Bk();CVj(d,a.bUN,e,f);e=Br(e);while +(Bq(e)){(Bm(e)).cC(b);}g=a.cUd.dX();while(g.dY()){h=g.dZ();i=CPa(a,f,h.cGN);j=CPa(a,f,h.cGM);if(i!==null&&j!==null){k=a.cWl;l=CW((i.a94()).bIp)+i.a$a();m=CW((j.a94()).bIp)+j.a$a();n=(i.a$b()+j.a$b())/2.0;o=Eh(l,m);l=BC(l,m);B8();d=BlP;p=k;d=B0(B1(p),d);B9();e=(BJ(d,Cz)).cu(p.bGN);d=XK(k,d);e=B5Y(e,null);i=B4(p.bH$,h.cEZ);B3();d=C_(i,d,CO,k);j=(MS(p)).a$d();q=(MS(p)).a$e();i=B0(B1(p),Bhx);r=new AFx;s=BPX(i,MS(p));Oc();AR$(r,k,j,e,q,s,AHc,null,Bk());d=Iv(r,d,CO);Ci(d,n,o+2.0);Ci(d,n,l-2.0);CBA(d,b);}}if(!HH(a.bUN)) +{b=a.bUN;return CW(((Be(b,b.bGJ-1|0)).a94()).bQ2);}return 8.0;},CPa=(a,b,c)=>{let d,e;d=Br(b);while(true){if(!Bq(d))return null;e=Bm(d);if(D2Q(e,c))break;}return e;},C6c=(a,b)=>{let c,d;c=BAN(b,1);d=BWd(a,Bxt(c,0),0);return BC((AQY(Bej(c))).bGF,d)+10.0;},EFS=a=>{let b,c,d,e,f,g,h,i,j,k;b=Br(a.bUN);while(Bq(b)){(Bm(b)).RS();}c=Bk();d=Br(a.bUN);while(Bq(d)){b=Bm(d);if(!C65(b)){e=c;TD(e);U(e,b);}else{f=Br(c);while(Bq(f)){e=Bm(f);g=e.a95();h=e.a96();i=b.a95();j=b.a96();if(g!==null&&h!==null&&i!==null&&j!==null) +{e=BQq(a,e);k=BQq(a,b);if(e!==null&&k!==null&&e!==k){if(!(e.bL$.RG()<=k.bL$.RG()))g.RO(j);else i.RO(h);}}}U(c,b);}}},BQq=(a,b)=>{let c,d;c=b.a$m();if(!(c instanceof AGU)){if(!(c instanceof AGO)){if(!(c instanceof Tg)){if(c instanceof ARr){c=ALf(c);if(Bq(c))return K3(a.bYM,(Bm(c)).bSy);}a:{if(b instanceof V9){c=Br(b.bMh);while(true){if(!Bq(c))break a;d=BQq(a,Bm(c));if(d!==null)break;}return d;}}return null;}return K3(a.bYM,c.bSy);}return K3(a.bYM,c.bVI);}return K3(a.bYM,c.bUn);},B0l=a=>{let b,c,d;b=Bk();c=Br(a.bUN);while +(Bq(c)){d=Bm(c);if(d instanceof V9)CiK(d,b);if(d instanceof BjN){d=d;U(b,d);}}return b;}; +function CVn(){let a=this;F.call(a);a.b4H=null;a.cwa=null;a.bRh=null;a.bWm=null;a.cmm=null;a.cA1=null;a.b4t=null;a.bL$=null;a.clI=null;a.clH=null;a.cb_=0;a.ccI=null;a.cTo=null;a.ckH=0.0;a.chM=0.0;} +let OF=(a,b,c)=>{return Cjv(a.b4t,b.a$m(),c);},AIx=(a,b,c)=>{let d,e,f,g,h,i,j;d=a.b4t;if(b.R0(d.bMv)){if(b instanceof SR&&BSe(b)){a:{b:{e=d.cmp;f=DL(c);e=e;if(f===null){g=0;c:while(true){h=e.bJV.data;if(g>=h.length)break b;i=h[g];while(i!==null){if(i.bHe===null)break c;i=i.bKN;}g=g+1|0;}g=1;break a;}g=0;d:{e:while(true){h=e.bJV.data;if(g>=h.length)break d;i=h[g];while(i!==null){j=i.bHe;if(C87(f,j))break e;i=i.bKN;}g=g+1|0;}g=1;break a;}}g=0;}if(g)c=c+5.0;}d=d.cmp;e=DL(c);C9(d,b,e);}},For=a=>{let b,c,d,e,f;b +=a.b4H.bQo;c=CW(a.bL$);d=CpE(a.clI);e=CpE(a.clH);f=new S;T(f);H(H(H(H(D6(H(H(f,b),E(5205)),c),E(5206)),d),E(5207)),e);return Q(f);},CpE=b=>{let c;if(b!==null){c=CW(b);b=new S;T(b);D6(b,c);return Q(b);}return null;},EfS=(a,b,c,d,e,f,g)=>{a:{a.cA1=Uu();a.cb_=0;a.ccI=AAk();a.b4H=b;a.cwa=e;a.cTo=c;a.bL$=f;f=b.cAd;ABp();if(f===AE1){FX();a.bRh=AVN;a.bWm=ASW;break a;}if(f===A$9){FX();a.bRh=Bae;a.bWm=AX$;break a;}if(f===A27){FX();a.bRh=A5A;a.bWm=A74;break a;}if(f===A0l){FX();a.bRh=A6J;a.bWm=A46;break a;}if(f===A9s) +{FX();a.bRh=AYR;a.bWm=A5f;break a;}if(f===A8D){FX();a.bRh=A6N;a.bWm=A0y;break a;}if(f===A7W){FX();a.bRh=A$C;a.bWm=A2g;break a;}if(f===BbL){FX();a.bRh=AYj;a.bWm=A7V;break a;}b=new Bt;X(b);J(b);}c=new CW3;c.cio=AAk();c.cuU=b;c.cYf=d;c.cZF=e;c.cUV=B1(e);a.cmm=c;c=new BHY;BlC();c.cb1=AAk();c.cmp=Dy();c.czy=(-1);c.bMv=b;c.bMp=g;c.cpB=d;c.cmY=e;a.b4t=c;},DKf=(a,b,c,d,e,f)=>{let g=new CVn();EfS(g,a,b,c,d,e,f);return g;},FpO=a=>{let b,c;b=Ta(UA(a.ccI));while(SD(b)){c=Tj(b);if(c.bI1.bOP)return c.bIu.bG6;}return 0.0;},B8r +=(a,b,c,d,e)=>{CG$(a,b,c,d,e,a.bRh);},CG$=(a,b,c,d,e,f)=>{let g,h,i,j,k,l;if(a.cb_){Fa();if(d===Pe)return;}g=a.cA1;h=a.b4H;i=null;j=a.cwa;h=CHX(g,h,f,i,j,BMu(h,B8F(j)));i=b.hE();k=h;i=F3(k,i);B3();if(e===Ft)b=b.h2(BM( -i.bGE));Fa();if(d===Hg)b=b.h2(BW( -i.bGF/2.0));j=AVv(i);h=a.b4H;g=h.cbn;if(!(f!==a.bRh?0:1)){l=KV(h.cm0);Hb();Db(l,IO,E(5208));Db(l,L8,h.bQo);Db(l,AV8,h.bQo);Db(l,ALN,h.bV_);d=KD;e=h.bV_;f=new S;T(f);H(H(f,e),E(5209));Db(l,d,Q(f));}else{l=KV(h.cm0);Hb();Db(l,IO,E(5210));Db(l,L8,h.bQo);Db(l,AV8, +h.bQo);Db(l,ALN,h.bV_);i=KD;d=h.bV_;e=new S;T(e);H(H(e,d),E(5211));Db(l,i,Q(e));}b.hH(l);if(g!==null)b.hF(g);MT(k,b,j,c);if(g!==null)b.hG();b.hI();},Bm2=(a,b)=>{let c,d,e,f,g;c=a.cA1;d=a.b4H;e=a.bRh;f=null;g=a.cwa;return F3(CHX(c,d,e,f,g,BMu(d,B8F(g))),b);},CSm=(a,b)=>{return (Bm2(a,b)).bGE;},Gz=(a,b)=>{let c,d;if(a.clI===null){c=a.bL$;d=CSm(a,b)/2.0;a.clI=EK(c,d);}return a.clI;},BaN=(a,b)=>{let c,d,e,f,g,h;c=a.b4t;d=0;e=0;f=c.bMp.dX();while(f.dY()){g=f.dZ();if(g instanceof SR){g=g;if(g.bLO===c.bMv&&ADX(g))e +=e+1|0;if(e>d)d=e;if(g.bLO===c.bMv&&By3(g))e=e+(-1)|0;}}h=B78(BQg(Bcg(1),c.cpB,c.cmY,c.cb1,c.bMv.bRB),b)/2.0*d;return EK(Gz(a,b),h);},QC=(a,b)=>{let c,d;if(a.clH===null){c=a.bL$;d=CSm(a,b);a.clH=EK(c,d);}return a.clH;},Bl1=(a,b)=>{let c;if(b<0.0){c=new Bt;X(c);J(c);}a.ckH=BC(a.ckH,b);},BqQ=(a,b)=>{let c;if(b<0.0){c=new Bt;X(c);J(c);}a.chM=BC(a.chM,b);},C1f=(a,b)=>{let c;b=a.bL$;c= -a.ckH;return EK(b,c);},CBR=(a,b)=>{let c;b=QC(a,b);c=a.chM;return EK(b,c);},CGX=(a,b)=>{let c;c=a.bL$;b=new Csz;b.cVU=a;return C7Q(c, +b);}; +function AGq(){let a=this;CA.call(a);a.cTk=null;a.cWM=null;a.bRj=null;a.coZ=null;a.c65=null;a.b8K=null;a.b4c=null;} +let EIr=a=>{CJ(a);a.cTk=ALM(a);a.cWM=ALM(a);},BkY=()=>{let a=new AGq();EIr(a);return a;},EXf=a=>{let b;b=new Dnm;b.cGe=a;return ARE(b);},Fj6=a=>{let b;b=new Dnn;b.cva=a;return ARE(b);},CD0=a=>{let b;b=new Dno;b.cxl=a;return ARE(b);},C7X=a=>{let b;b=new Dnp;b.cIF=a;return ARE(b);},D6T=(a,b)=>{if(b!==null&&b.bQp){Wn();if(b!==AVQ){if(b!==AWd){b=new BV;X(b);J(b);}return a.cTk;}return a.cWM;}return a;},D4v=(a,b)=>{let c,d,e;if(b!==Bo(AGq)){c=Fm();d=BY(b);e=new S;T(e);H(H(e,E(5212)),d);d=Q(e);Fw(c,d);return Brk(a, +b);}return a;}; +function Dg5(){let a=this;CA.call(a);a.bYj=null;a.bWH=0;} +let FxF=a=>{CJ(a);},CtK=()=>{let a=new Dg5();FxF(a);return a;}; +function Cm9(){let a=this;CA.call(a);a.bP9=null;a.bQY=0;a.bQS=null;a.bOL=null;a.bON=null;a.bQn=null;a.bSU=null;a.bOA=null;a.bOb=null;} +let FlP=a=>{CJ(a);},X_=()=>{let a=new Cm9();FlP(a);return a;}; +function BgJ(){let a=this;CA.call(a);a.bIE=0;a.bW$=0;a.ciN=0;a.bMs=0;a.bKU=0;} +let DTQ=a=>{CJ(a);},B4g=()=>{let a=new BgJ();DTQ(a);return a;},Bpn=(a,b)=>{let c;c=b;a.bIE=c.bIE;a.bW$=c.bW$;a.ciN=c.ciN;a.bMs=c.bMs;a.bKU=c.bKU;}; +function Cb$(){let a=this;CA.call(a);a.c4P=null;a.cu$=null;a.c$g=null;a.deu=null;a.cxh=null;a.c70=null;a.cQv=null;} +let EG6=a=>{CJ(a);},DWo=()=>{let a=new Cb$();EG6(a);return a;}; +function Cnw(){let a=this;CA.call(a);a.cXr=null;a.ctn=null;a.c9b=null;a.dcC=null;a.c_j=null;} +let Eur=a=>{CJ(a);},Fa5=()=>{let a=new Cnw();Eur(a);return a;}; +function A5K(){let a=this;CA.call(a);a.cgT=null;a.cRb=0;} +function BBz(){let a=this;CA.call(a);a.cQC=0;a.cQl=0.0;a.cYq=null;} +let Cry=N(),BBU=null,ChI=null,Cr_=null,DfT=null,Dli=null,C1h=null,Dd3=null,C0C=null,Dgf=null,VS=()=>{VS=Z(Cry);EY_();},BKO=(b,c,d)=>{let e,f,g,$$je;VS();Bf();try{e=0;a:{b:{while(true){f=c.data;if(f[e].cgT===null)break;g=O4(f[e].cgT);if(!CPM(b,f[e].cgT,g))break b;e=e+1|0;}break a;}c=d.data;c[0]=c[0]|f[e].cRb;b=GL(b,g);}}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},E1L=(b,c,d)=>{let e,f,g,$$je;VS();Bf();try{e=Ca(1);f=e.data;f[0]=0;g=BKO(c,b.c4t,e);if(A88(g,c)){while(true){c=BKO(g,b.c2s,e);if(A88(g,c))break;g +=c;}g=BKO(c,b.c0E,e);}if(f[0]&&!(f[0]&15))I(E(5213));d=d.data;d[0]=d[0]|f[0];}catch($$e){$$je=P($$e);b=$$je;J(b);}return g;},Cyc=(b,c,d)=>{let e,f,$$je;VS();Bf();a:{try{e=d.data;f=Ca(1);d=f.data;d[0]=0;e[0]=0;}catch($$e){$$je=P($$e);b=$$je;break a;}b:{try{while(Dn(c,0)){d[0]=0;c=E1L(b,c,f);if(!d[0])break b;if(d[0]==8&&!Dn(c,0))d[0]=0;if(!d[0])continue;e[0]=e[0]|d[0];}}catch($$e){$$je=P($$e);b=$$je;break a;}return;}try{Fw(Fm(),E(5214));}catch($$e){$$je=P($$e);b=$$je;break a;}return;}J(b);},DFu=(b,c,d,e)=>{let f, +g,h,i,$$je;VS();Bf();try{f=d.data;f[0]=0;g=!BGS(H9(c))?0:1;h=e.data;h[0]=g;f[0]=1;h[0]=1;i=b.cVO;if(i!==null&&Dn(RS(c,i),0)){I(E(5215));I(E(5216));I(E(5217));I(E(5218));I(E(5219));I(E(5051));I(E(5044));}i=b.cRB;if(i!==null&&h[0]==1){i=RS(c,i);if(Dn(i,0))Cyc(b,i,e);}i=b.c3L;if(i!==null&&f[0]==1){i=RS(c,i);if(Dn(i,0))Cyc(b,i,d);}if(ErD(c)){I(E(5220));I(E(5221));I(E(5222));I(E(5223));I(E(5224));I(E(5225));I(E(5226));}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Cj7=(b,c,d)=>{let e,f,g,h,i,j,$$je;VS();Bf();try{e=0.0;f +=0;while(f<4){g=d>>(f*8|0)&15;h=0;a:{b:{while(true){i=b.cLu.data;if(i[h].cYq===null)break;if(g==i[h].cQC)break b;h=h+1|0;}break a;}e=e+i[h].cQl;}f=f+1|0;}j=10.0*e*XN(c,b.cQF,1.0,0.0);}catch($$e){$$je=P($$e);b=$$je;J(b);}return j;},D4N=(b,c,d,e,f,g,h)=>{let i,j,k,l,m,n,o,$$je;VS();Bf();try{i=B0R();Ej();j=Ho(4,G9);k=Hr(1);l=k.data;l[0]=0.0;m=Cj7(b,c,h);l[0]=m*m;g.bWc=h;n=g.bQq;h=f+3|0;Cd(n,Y(d,h));if(f>e&&AOJ(Y(d,f),Y(d,h)){let i,j,k,l,m,n,o,p,$$je;VS();Bf();try{i=B0R();Ej();j=Ho(4,G9);k=Hr(1);l=k.data;l[0]=0.0;m=Cj7(b,c,h);l[0]=m*m;g.bVo=h;Cd(g.bQt,Y(d,e));if(f<=e)f=e;else{c=Y(d,e);f=e+3|0;if(!(AOJ(c,Y(d,f)){let b;b=new Dm1;E$(b,E(5227));BBU=b;b=new Dm0;E$(b,E(5228));ChI=b;b=new DmZ;E$(b,E(5229));Cr_=b;b=new DmY;E$(b,E(5230));DfT=b;b=new DmX;E$(b,E(5231));Dli=b;b=new DmW;E$(b,E(5232));C1h=b;b=new DmV;E$(b,E(5233));Dd3=b;b=new DmU;E$(b,E(5234));C0C=b;b=new DmT;E$(b,E(5235));Dgf=b;}; +function BFS(){let a=this;CA.call(a);a.bK6=null;a.bKy=0;} +let Fjg=a=>{CJ(a);},EyB=()=>{let a=new BFS();Fjg(a);return a;}; +function TZ(){let a=this;CA.call(a);a.bG8=0;a.bGS=null;} +let Fif=a=>{CJ(a);},A1J=()=>{let a=new TZ();Fif(a);return a;},AIa=(a,b)=>{let c;c=b;a.bG8=c.bG8;a.bGS=c.bGS;},B17=a=>{let b;b=new TZ;CJ(b);b.bG8=a.bG8;b.bGS=a.bGS;return b;}; +function AUO(){let a=this;CA.call(a);a.bGT=null;a.bGU=null;} +let BPr=a=>{let b;CJ(a);b=new FB;CJ(b);a.bGT=b;b=new FB;CJ(b);a.bGU=b;},Gm=()=>{let a=new AUO();BPr(a);return a;},ErC=a=>{let b,c,d;b=BY(a.bGT);c=BY(a.bGU);d=new S;T(d);H(H(H(H(d,E(5236)),b),E(5237)),c);return Q(d);},B3r=b=>{let c,d,e;c=K(AUO,b);d=c.data;e=0;while(e{let b;b=Gm();Cd(b.bGT,a.bGT);Cd(b.bGU,a.bGU);return b;},FM=(a,b)=>{let c;c=b;Cd(a.bGT,c.bGT);Cd(a.bGU,c.bGU);}; +function Cbv(){let a=this;CA.call(a);a.bHg=null;a.bMz=0.0;a.bQC=null;a.bIQ=0;a.bMm=0;a.bQb=0;a.bZl=0;a.bV7=0;a.bIG=0;a.bUX=null;} +let D6Z=a=>{let b;CJ(a);b=new FB;CJ(b);a.bHg=b;},Vw=()=>{let a=new Cbv();D6Z(a);return a;},AKQ=(a,b)=>{let c;c=b;Cd(a.bHg,c.bHg);a.bMz=c.bMz;a.bQC=c.bQC;a.bIQ=c.bIQ;a.bMm=c.bMm;a.bQb=c.bQb;a.bZl=c.bZl;a.bV7=c.bV7;a.bIG=c.bIG;a.bUX=c.bUX;},AXY=a=>{let b;b=Vw();Cd(b.bHg,a.bHg);b.bMz=a.bMz;b.bQC=a.bQC;b.bIQ=a.bIQ;b.bMm=a.bMm;b.bQb=a.bQb;b.bZl=a.bZl;b.bV7=a.bV7;b.bIG=a.bIG;b.bUX=a.bUX;return b;},BT8=N(0); +function CIq(){let a=this;CA.call(a);a.cjm=0;a.ccf=0;a.cbH=0;a.clX=0.0;a.ce5=0.0;a.cgX=0.0;a.b9p=0;a.coA=null;} +let Du5=a=>{CJ(a);},B4E=()=>{let a=new CIq();Du5(a);return a;}; +function Dr_(){let a=this;CA.call(a);a.ci1=null;a.c1D=null;a.cfq=null;a.b2C=null;a.clz=null;a.c62=null;} +let EX7=a=>{CJ(a);},CbD=()=>{let a=new Dr_();EX7(a);return a;}; +function BVj(){let a=this;CA.call(a);a.cQm=null;a.bQu=null;a.bUo=null;a.c$v=0;} +function Cqd(){let a=this;CA.call(a);a.bOQ=null;a.cHF=0;a.bWn=0;a.bTI=0;a.b2h=0;} +let Fe_=a=>{CJ(a);},DXJ=()=>{let a=new Cqd();Fe_(a);return a;},EU1=(a,b)=>{a.bOQ=K(AIg,b);return 1;},Fw8=(a,b)=>{let c,d,e,f,g;c=a.bOQ.data;d=c.length;if(d{CJ(a);},E9X=()=>{let a=new CGY();EeP(a);return a;}; +function CFA(){let a=this;CA.call(a);a.c8h=null;a.dcc=0.0;} +let DAw=a=>{CJ(a);},EPG=()=>{let a=new CFA();DAw(a);return a;}; +function Dnl(){let a=this;AHa.call(a);a.cfX=null;a.bWb=null;a.cA7=null;a.cBy=null;} +let EIH=a=>{Bn_(a);a.cfX=a;a.cA7=BkY();},BRF=()=>{let a=new Dnl();EIH(a);return a;},Cg6=N(),CzI=null,ADz=()=>{ADz=Z(Cg6);EhI();},B$z=(b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,$$je;ADz();N_(E(5238),E(5239));a:{b:{c:{try{f=Fu$();g=null;EH_(c);h=c.bXy;i=h.bP9;j=h.bQY;k=h.bQS;l=h.bQn;c.b7e=c.b7e&(-32769);m=c.bKn.bSn;if(d!==null)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}d:{try{if(m!==null&&e&448)break d;b=null;}catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(5238),E(5239));return b;}e:{try{if(e&64)break e;if +(!(e&256))while(true){b=m.bIX;if(b===null)break;A3s(m,b);m=b;}else while(true){b=m.bJP;if(b===null)break;CVo(m,b);m=b;}c.bKn.bSn=m;b=AIv(m,k);}catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(5238),E(5239));return b;}f:{try{if(h.bON===null&&Bnp(k)>=0)break f;while(true){d=m.bIX;if(d!==null){A3s(m,d);m=d;continue;}d=m.bJP;if(h.bON!==null)break;if(Bnp(h.bQS)<0)c.bVY.a5e(b,BB(F,[c,m,null,h]));if(d===null)break f;m=d;}J(Gw());}catch($$e){$$je=P($$e);b=$$je;break b;}}try{b=c.bKn;b.bML=0;b.bSn=null;b=null;}catch($$e){$$je +=P($$e);b=$$je;break b;}Ee(E(5238),E(5239));return b;}g:{try{n=0;if(c.bNo.bWH!=8)break g;if(!(e&4098))break g;J(Gw());}catch($$e){$$je=P($$e);b=$$je;break b;}}h:{try{o=0;if(!(e&2565)){if(!(e&32)){if(m===null)break h;if(AIv(m,k)===d)break h;g=A5z(d,i);o=1;break h;}J(Gw());}g=!(e&512)?A5z(d,i):d;if(m===null)break h;o=1;break h;}catch($$e){$$je=P($$e);b=$$je;break b;}}i:{try{if(!o){p=f;q=f;break i;}if(c.bNo.bWH!=4){p=f;q=f;}else if(!c.bKn.cLo){p=f;q=f;}else if(!(e&516)){p=f;q=f;}else J(ZF(E(5240)));j:{k:{l:{m: +{n:{o:{p:{q:{while(true){o=BHV(b,c,g,A5z(AIv(m,k),i),h,l,j);if(!o)break;if(o>=0){r=m.bJP;if(r===null)break k;o=BHV(b,c,g,A5z(AIv(r,k),i),h,l,j);if(o>0){CVo(m,r);q=A7L(q,r);m=r.bJP;if(m===null)break o;continue;}if(!o)break j;p=A3H(p,r);q=A7L(q,m);m=r.bIX;if(m===null)break n;continue;}r=m.bIX;if(r===null)break m;o=BHV(b,c,g,A5z(AIv(r,k),i),h,l,j);if(o<0){A3s(m,r);p=A3H(p,r);m=r.bIX;if(m===null)break q;continue;}if(!o)break l;q=A7L(q,r);p=A3H(p,m);m=r.bJP;if(m===null)break p;}break i;}break i;}break i;}break i;}break i;}p +=A3H(p,m);m=null;break i;}p=A3H(p,m);m=r;break i;}q=A7L(q,m);m=null;break i;}q=A7L(q,m);m=r;break i;}catch($$e){$$je=P($$e);b=$$je;break b;}}r:{try{if(m===null){p.bIX=null;q.bJP=null;if(e&8){m=f.bIX;if(m===null){n=2;break r;}while(true){b=m.bIX;if(b===null)break;A3s(m,b);m=b;}f.bIX=m.bJP;n=1;break r;}if(!(e&16)){if(e&516){n=2;break r;}if(e&2049){r=h.bOL;if(r!==null&&e&1)d=r.a5e(b,BB(F,[c,d,h]));if(d!==null){if(Bnp(k)>=0)m=CGB(d,k);else{s=c.bVY;t=K(F,4);u=t.data;u[0]=c;u[1]=null;g=new Oh;Ej();Pd(g,AZX);u[2]= +g;u[3]=h;m=BE3(s.a5e(b,t),Bo(WT));if(m!==null)m.ctu=d;else if(h.bOL!==null&&h.bON!==null&&e&1)I(E(5241));}}if(m!==null){b=c.bKn;o=b.bML;if(o>=0)b.bML=o+1|0;n=1;break r;}J(ZF(E(5242)));}if(e&32){b=c.bKn;b.bML=b.bML+1|0;J(ZF(E(5243)));}J(ZF(E(5242)));}J(ZF(E(5244)));}c.b7e=c.b7e|32768;q.bJP=m.bIX;p.bIX=m.bJP;if(e&516){n=1;break r;}if(e&8){m.bIX=f.bJP;m.bJP=null;f.bJP=m;m=f.bIX;if(m===null){n=2;break r;}while(true){b=m.bIX;if(b===null)break;A3s(m,b);m=b;}f.bIX=m.bJP;n=1;break r;}if(!(e&16)){if(e&4098){d=AIv(m, +k);b=c.bKn;o=b.bML-1|0;b.bML=o;if(o<0)I(E(5245));n=2;break r;}if(!(e&2049)){if(!(e&32))break r;J(Gw());}if(c.bNo.bWH&4){n=1;break r;}m.bIX=null;m.bJP=f.bIX;f.bIX=m;r=h.bOL;if(r!==null&&e&1)d=r.a5e(b,BB(F,[c,d,h]));if(d!==null){if(Bnp(k)>=0)m=CGB(d,k);else{r=c.bVY;t=K(F,4);u=t.data;u[0]=c;u[1]=null;s=new Oh;Ej();Pd(s,AZX);u[2]=s;u[3]=h;m=BE3(r.a5e(b,t),Bo(WT));if(m!==null)m.ctu=d;else if(h.bOL!==null&&h.bON!==null&&e&1)I(E(5241));}}if(m!==null){b=c.bKn;o=b.bML;if(o>=0)b.bML=o+1|0;n=1;break r;}J(ZF(E(5242)));}J(Gw());} +catch($$e){$$je=P($$e);b=$$je;break b;}}s:{try{if(n!=1)break s;m.bIX=f.bJP;m.bJP=f.bIX;if(c.bNo.bWH&8&&e&516)J(Gw());c.bKn.bSn=m;b=AIv(m,k);}catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(5238),E(5239));return b;}t:{try{if(n==2)break t;J(Gw());}catch($$e){$$je=P($$e);b=$$je;break b;}}while(true){try{b=p.bIX;if(b===null)break;p=b;continue;}catch($$e){$$je=P($$e);b=$$je;break b;}}u:{try{p.bIX=f.bJP;c.bKn.bSn=f.bIX;if(e&2)break u;d=null;break u;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break a;}catch($$e){$$je +=P($$e);b=$$je;break b;}}Ee(E(5238),E(5239));J(b);}Ee(E(5238),E(5239));return d;},CGB=(b,c)=>{ADz();return (b.a73(c)).a$C(Bo(WT));},BHV=(b,c,d,e,f,g,h)=>{ADz();if(g===null){if(h>0){b=new BV;Bp(b,E(5246));J(b);}return AFr(d,e);}return g.a74(b,c,d,e,f);},AIv=(b,c)=>{ADz();if(c.bQp<0)return b.ctu;return b.a73(c);},A5z=(b,c)=>{ADz();if(c!==null&&c.bQp)return b.a73(c);return b;},EH_=b=>{ADz();if(b.bKn.bRV&4096)X7(b,null);},EhI=()=>{let b;b=new Ckz;E$(b,E(5239));CzI=b;}; +function AZb(){Bx.call(this);this.bQp=0;} +let BeP=null,Blc=null,AW_=null,AVQ=null,APj=null,A0M=null,AWd=null,BrV=null,Ff$=null,Wn=()=>{Wn=Z(AZb);DFG();},Eiu=(a,b,c,d)=>{Wn();Ct(a,b,c);a.bQp=d;},AEp=(a,b,c)=>{let d=new AZb();Eiu(d,a,b,c);return d;},Bnp=a=>{return a.bQp;},DFG=()=>{let b,c,d;BeP=AEp(E(5247),0,0);Blc=AEp(E(5248),1,(-1));AW_=AEp(E(1190),2,1);AVQ=AEp(E(5249),3,1);APj=AEp(E(994),4,1);A0M=AEp(E(5250),5,1);AWd=AEp(E(5251),6,1);b=AEp(E(772),7,1);BrV=b;c=K(AZb,8);d=c.data;d[0]=BeP;d[1]=Blc;d[2]=AW_;d[3]=AVQ;d[4]=APj;d[5]=A0M;d[6]=AWd;d[7]=b;Ff$ +=c;},C2E=N(),CsF=null,CP5=null,Lt=()=>{Lt=Z(C2E);DQP();},Mx=(b,c,d)=>{let e,f,$$je;Lt();Bf();try{e=null;f=ADC(b,c,d);if(f!==null){X7(c.bMM,f.b4c);e=Bya(b,c.bMM);f.b4c=AI3(c.bMM);}}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},MU=(b,c,d)=>{let e,f,$$je;Lt();Bf();try{e=null;f=ADC(b,c,Bw_(d));if(f!==null){X7(c.bMM,f.b4c);e=Bup(b,c.bMM,d);f.b4c=AI3(c.bMM);}}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},DaV=(b,c,d)=>{let e,f,$$je;Lt();Bf();try{e=null;f=ADC(b,c,d);if(f!==null){X7(c.bMM,f.b8K);e=Bya(b,c.bMM);f.b8K +=AI3(c.bMM);}}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},COf=(b,c,d)=>{let e,f,$$je;Lt();Bf();try{e=null;f=ADC(b,c,BrP(d));if(f!==null){X7(c.bMM,f.b8K);e=Bup(b,c.bMM,d);f.b8K=AI3(c.bMM);}}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},Eu1=(b,c,d)=>{let e,$$je;Lt();Bf();try{e=Mx(b,c,d);if(e===null)e=DaV(b,c,d);}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},D5j=(b,c,d,e)=>{let $$je;Lt();Bf();try{a:{if(d.bHw.bIE!=2)b:{while(true){d=COf(b,c,d);if(d===null)break;if(d.bLM!==e)break b;}break a;}else{d=MU(b,c, +d);if(d===null)c:{while(true){d=d!==null?COf(b,c,d):DaV(b,c,e);if(d===null)break;if(d.bLM!==e)break c;}break a;}}}}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},AMD=(b,c,d,e,f)=>{let g,$$je;Lt();g=new BgJ;CJ(g);g.bIE=f.bIE;g.bW$=f.bW$;g.ciN=f.ciN;g.bMs=f.bMs;g.bKU=f.bKU;Bf();a:{b:{c:{d:{try{f=Bqe();if(d!==null&&e!==null)break d;b=null;}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}e:{try{Bpn(f.bKd.bHw,g);f.bLM=d;d=ADC(b,c,e);if(d===null){b=null;break e;}X7(c.b8p,d.coZ);b=A1u(b,c.b8p,f);d.coZ=AI3(c.b8p);break e;} +catch($$e){$$je=P($$e);b=$$je;break c;}}try{break b;}catch($$e){$$je=P($$e);b=$$je;break c;}}J(b);}}return b;},ADC=(b,c,d)=>{let e,f,$$je;Lt();Bf();try{if(c===d.bWb)e=d.cA7;else{f=b.cX5;f.bRj=d;e=A1u(b,c.b8A,f);f.bRj=null;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},Bt5=(b,c,d,e)=>{let $$je;Lt();Bf();try{X7(c,Bur(d));Bed(b,c,e);BYl(d,AI3(c));}catch($$e){$$je=P($$e);b=$$je;J(b);}},Cnb=(b,c,d)=>{let e,f,g,h,i,j,$$je;Lt();Bf();try{e=A_X(d);f=Biv(d);g=Cg(d);h=BZ(d);a:{while(true){if(c===null)break a;if(AMD(b, +c,g,h,d.bHw)!==null)break;i=ADC(b,c,g);Bt5(b,c.bMM,C7X(i),e);Bt5(b,c.b8p,Fj6(i),e);j=ADC(b,c,h);Bt5(b,c.bMM,CD0(j),f);Bt5(b,c.b8p,EXf(j),f);c=AMn(c);}}}catch($$e){$$je=P($$e);b=$$je;J(b);}},EAu=b=>{let c;Lt();I(E(5252));I(E(5253));I(E(5254));I(E(5255));I(E(5037));c=new BV;X(c);J(c);},E3H=(b,c,d,e,f)=>{let g,h,i,j,$$je;Lt();Bf();try{AWu(b,c,d,1);AWu(b,c,e,1);g=new Oh;Ej();Pd(g,BsE);h=A80(c,g);g=h.cdc;i=h.bHO;j=BGl(c,2);AC6(g,3);AC6(i,2);AVd(i,f);AVd(g,f);AWD(g,j);AWD(i,j);g.bLM=d;i.bLM=e;Cnb(b,c,i);if(c.bOh.bVh) +{Ji();AGL(b,i,A8K,CCL(ARG),0);Fst(b,c,i);}BVB(c,i);}catch($$e){$$je=P($$e);b=$$je;J(b);}return i;},E7l=(b,c,d,e)=>{let f,$$je;Lt();Bf();a:{b:{c:{d:{try{f=B4g();if(!CBM(c))break d;}catch($$e){$$je=P($$e);b=$$je;break b;}e:{try{if(!c.bOh.b1m)break e;if(d!==e)break e;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}try{Bpn(f,b.csH);f.bIE=0;if(AMD(b,c,d,e,f)===null)break d;else break c;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}try{break a;}catch($$e){$$je=P($$e);b +=$$je;break b;}}J(b);}return 0;},B8e=(b,c,d,e,f,g)=>{let h,i,j,k,$$je;Lt();Bf();a:{b:{c:{try{h=Ca(1);i=AI_(b,c,2,f,h,0);if(!i){if(f!==null)break c;if(g&&!CBM(c))break c;}j=B4g();Bpn(j,b.csH);if(!i){j.bKU=0;j.bIE=0;}else{j.bKU=h.data[0];j.bIE=2;}k=AMD(b,c,d,e,j);if(k===null&&ClK(c))k=AMD(b,c,e,d,j);}catch($$e){$$je=P($$e);b=$$je;break b;}d:{try{if(k===null)break d;}catch($$e){$$je=P($$e);b=$$je;break b;}return k;}try{if(!g)break c;k=AMD(b,Hd(c),d,e,j);if(k===null&&ClK(c))k=AMD(b,Hd(c),e,d,j);if(k===null)break c;EAu(BB(F, +[c,k]));}catch($$e){$$je=P($$e);b=$$je;break b;}return k;}e:{try{if(!(g&&E7l(b,c,d,e)&&AI_(b,c,2,f,h,1))){k=null;break e;}k=E3H(b,c,d,e,h.data[0]);BvR(b,c,2,k);break e;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return k;},CNT=(b,c,d,e)=>{let f,g,h,$$je;Lt();Bf();try{f=null;g=AWu(b,c,Bw_(d),e);h=AWu(b,c,BrP(d),e);if(g!==null&&h!==null){f=AMD(b,c,g,h,d.bHw);if(e&&f===null){Cnb(b,c,d);f=d;}if(f!==null&&f.bHw.bIE!=d.bHw.bIE)f=Dms(f);}}catch($$e){$$je=P($$e);b +=$$je;J(b);}return f;},Cfo=(b,c,d,e)=>{let f,$$je;Lt();Bf();try{a:{f=c.bLM.bHw.bKU-d.bLM.bHw.bKU|0;if(!f){b:{b=c.bHw;if(b.bIE){c=d.bHw;if(c.bIE)break b;}f=0;break a;}f=b.bKU-c.bKU|0;}}f=!f?0:f>=0?1:(-1);}catch($$e){$$je=P($$e);b=$$je;J(b);}return f;},C_2=(b,c,d,e)=>{let f,$$je;Lt();Bf();try{b=c.bLM;e=d.bLM;f=b===e?c.bHw.bMs-d.bHw.bMs|0:b.bHw.bMs-e.bHw.bMs|0;f=!f?0:f>=0?1:(-1);}catch($$e){$$je=P($$e);b=$$je;J(b);}return f;},Cg=b=>{let $$je;Lt();Bf();try{b=Bw_(b);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},BZ +=b=>{let $$je;Lt();Bf();try{b=BrP(b);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},DT7=b=>{let $$je;Lt();Bf();try{b=Dms(b);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},DQP=()=>{let b;b=new C5S;E$(b,E(5256));CsF=b;b=new C5T;E$(b,E(5257));CP5=b;},Cd4=N(),B9f=null,DqI=null,AJQ=()=>{AJQ=Z(Cd4);EyW();},ABB=(b,c,d,e)=>{let f,g,$$je;AJQ();Bf();try{f=d.bOA;d.bOA=B9f;b.cq3=c;g=C_$(b,d,e);d.bOA=f;b.cq3=null;}catch($$e){$$je=P($$e);b=$$je;J(b);}return g;},D2T=(b,c,d,e)=>{let $$je;AJQ();Bf();try{b.cq3=c;b=ESr(b,d, +e);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},DtF=(b,c,d,e)=>{let $$je;AJQ();Bf();try{if(e!==null&&BSm(b,d,null,0)!==e)BSm(b,d,e,0);}catch($$e){$$je=P($$e);b=$$je;J(b);}},EyW=()=>{let b;b=new Cu_;E$(b,E(5258));B9f=b;b=new Cva;E$(b,E(5259));DqI=b;},Cpf=N(),CGj=null,Do2=null; +let CF_=null,CLq=null,CLr=null,Cjc=null,Di9=null,Zg=()=>{Zg=Z(Cpf);DH$();},AI_=(b,c,d,e,f,g)=>{let h,i,j,k,l,$$je;Zg();Bf();a:{b:{c:{try{if(e===null)break c;if(Dn(e,0)==37)break c;h=(AZl(c)).cu$;i=K(F,5);j=i.data;j[0]=Bew(c);j[1]=CL(d);j[2]=e;j[3]=f;j[4]=Tr(g);k=FJ(CR1(h,b,i));if(!k)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return k;}d:{try{if(e===null){k=0;break d;}}catch($$e){$$je=P($$e);b=$$je;break b;}e:{try{k=D8X(c,d,e,f);if(!k)break e;}catch($$e){$$je=P($$e);b=$$je;break b;}return k;}}f:{try{if(!g)break f;l +=(AZl(c)).cu$;j=BB(F,[Bew(c),CL(d),null,f,Tr(g)]);k=FJ(CR1(l,b,j));if(!k)break f;if(e===null)break f;f=f.data;i=K(F,4);j=i.data;j[0]=c;j[1]=CL(d);j[2]=e;j[3]=CL(f[0]);E2H(i);break f;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return k;},ABl=(b,c)=>{let d,e,f,g,h,$$je;Zg();Bf();a:{b:{c:{try{d=H9(c);e=c.bHw;e=EYK(d,e.bIE,e.bKU);if(e===null)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return e;}d:{try{if((AZl(d)).cxh===null)break d;e=(AZl(d)).cxh;f=K(F, +3);g=f.data;g[0]=Bew(d);g[1]=CL(c.bHw.bIE);g[2]=CL(c.bHw.bKU);b=FjN(e,b,f);if(b===null)break d;}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}e:{try{b=c.bHw;if(b.bIE==2){c=null;break e;}c=new H2;h=b.bKU;b=CR();ZY(Et(b,37),h);Me(c,CH(b));break e;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return c;},BvR=(b,c,d,e)=>{let f,g,$$je;Zg();Bf();try{f=(AZl(c)).cQv;g=BB(F,[Bew(c),CL(d),e]);FlC(f,b,g);}catch($$e){$$je=P($$e);b=$$je;J(b);}},DH$=()=>{let b;b=new CyB;E$(b, +E(5260));CGj=b;b=new CyA;E$(b,E(5261));Do2=b;b=new Cyz;E$(b,E(5262));CF_=b;b=new Cyy;E$(b,E(5263));CLq=b;b=new Cyx;E$(b,E(5264));CLr=b;b=new Cyv;E$(b,E(5265));Cjc=b;b=new Cyu;E$(b,E(5266));Di9=b;},DdK=N(),CRu=null,CFJ=null,CkF=null,CWA=null,ATl=()=>{ATl=Z(DdK);DTn();},A80=(b,c)=>{let $$je;ATl();Bf();try{b=A_4(c);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},DTn=()=>{let b;b=new Df1;E$(b,E(5267));CRu=b;b=new Df0;E$(b,E(5268));CFJ=b;b=new Df3;E$(b,E(5269));CkF=b;b=new Df2;E$(b,E(5270));CWA=b;},CDs=N(),DoA=null,CEK +=null,Dol=null,Q8=()=>{Q8=Z(CDs);EkW();},BxC=(b,c,d)=>{let e,f,$$je;Q8();Bf();try{e=b.cJZ;e.cfX.bHw.bKU=d;f=b.cVn;f.bRj=e;e=A1u(b,c.b8A,f);b=e===null?null:e.bRj;}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},IV=(b,c)=>{let d,$$je;Q8();Bf();try{d=Bya(b,c.cf3);b=d===null?null:d.bRj;}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},I4=(b,c,d)=>{let e,$$je;Q8();Bf();try{e=ADC(b,c,d);if(e!==null)e=Bup(b,c.cf3,e);b=e===null?null:e.bRj;}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},E2$=(b,c,d,e)=>{let f,g,$$je;Q8();Bf();try +{f=new Oh;Ej();Pd(f,R$);g=A80(c,f);AC6(g,1);AVd(g,d);AWD(g,e);g.bWb=Hd(c);if((Hd(c)).bOh.bVh){Ji();AGL(b,g,A8K,CCL(ARG),0);}}catch($$e){$$je=P($$e);b=$$je;J(b);}return g;},C2H=(b,c,d)=>{let e,f,$$je;Q8();Bf();try{AUy(c.b8A);if(c===Hd(c))e=d.cA7;else{f=new Oh;Ej();Pd(f,BrM);e=(A80(c,f)).a$C(Bo(AGq));}e.bRj=d;d=c.b8A;d.bLG.a5q(b,d,e,1);c=c.cf3;c.bLG.a5q(b,c,e,1);}catch($$e){$$je=P($$e);b=$$je;J(b);}},Cyq=(b,c,d)=>{let $$je;Q8();Bf();try{C2H(b,c,d);c=AMn(c);if(c!==null)Cyq(b,c,d);}catch($$e){$$je=P($$e);b=$$je;J(b);}},Edj +=(b,c,d)=>{let $$je;Q8();Bf();try{if((Hd(c)).bOh.bVh)Eob(b,c,d);BVB(c,d);}catch($$e){$$je=P($$e);b=$$je;J(b);}},E1C=(b,c,d,e)=>{let f,$$je;Q8();Bf();try{f=BxC(b,c,d);if(f===null&&e){I(E(5271));I(E(5272));I(E(5273));I(E(5045));I(E(5274));I(E(5275));I(E(5276));I(E(5277));I(E(5278));I(E(5279));I(E(5044));}}catch($$e){$$je=P($$e);b=$$je;J(b);}return f;},B3X=(b,c,d,e)=>{let f,g,h,i,$$je;Q8();Bf();a:{b:{c:{try{f=Ca(1);g=Hd(c);if(!AI_(b,c,1,d,f,0))break c;}catch($$e){$$je=P($$e);b=$$je;break b;}d:{try{h=f.data;i=BxC(b, +c,h[0]);if(i===null)break d;}catch($$e){$$je=P($$e);b=$$je;break b;}return i;}try{if(!e)break c;if(c===g)break c;i=BxC(b,g,h[0]);if(i===null)break c;b=AWu(b,c,i,1);}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}e:{try{if(e&&AI_(b,c,1,d,f,1))break e;b=null;}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}try{i=E2$(b,c,f.data[0],BGl(c,1));Cyq(b,c,i);Edj(b,c,i);BvR(b,c,1,i);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return i;},AWu=(b,c,d,e)=>{let f,g,$$je;Q8();Bf();a:{b:{c:{try{if(Hd(c)===d.bWb)break c;b +=null;}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}d:{try{f=BxC(b,c,d.bHw.bKU);if(f!==null)break d;if(!e)break d;g=AMn(c);if(g===null)break d;f=AWu(b,g,d,e);C2H(b,c,f);break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return f;},DaQ=(b,c,d,e)=>{let f,g,h,$$je;Q8();Bf();try{f=c.a$C(Bo(AGq));g=d.a$C(Bo(AGq));h=f.bRj.bHw.bKU-g.bRj.bHw.bKU|0;h=!h?0:h>=0?1:(-1);}catch($$e){$$je=P($$e);b=$$je;J(b);}return h;},DnD=(b,c,d,e)=>{let f,g,h,$$je;Q8();Bf();try +{f=c.a$C(Bo(AGq));g=d.a$C(Bo(AGq));h=f.bRj.bHw.bMs-g.bRj.bHw.bMs|0;h=!h?0:h>=0?1:(-1);}catch($$e){$$je=P($$e);b=$$je;J(b);}return h;},EkW=()=>{let b;b=new CFX;E$(b,E(5280));DoA=b;b=new CFW;E$(b,E(5281));CEK=b;b=new CFV;E$(b,E(5282));Dol=b;},C3v=N(),Cbi=null,CZm=0,Kf=()=>{Kf=Z(C3v);Fqf();},EXV=(b,c,d,e,f,g)=>{let h,$$je;Kf();Bf();try{h=DJv();b=C_$(b,b.cG1,b.cOr);h.ccA=b;if(b===null){I(E(5283));I(E(5284));}b=DIZ();h.caD=b;if(b===null){I(E(5283));I(E(5284));}h.b1v=c;h.csJ=d;h.dbr=e;h.c_0=f;h.c1V=g;}catch($$e){$$je +=P($$e);b=$$je;J(b);}return h;},Fg3=b=>{let $$je;Kf();Bf();try{DBL(b.caD);Gq(b);}catch($$e){$$je=P($$e);b=$$je;J(b);}},D2j=b=>{let c,d,$$je;Kf();Bf();a:{b:{c:{try{c=0;if(b)break c;}catch($$e){$$je=P($$e);d=$$je;break b;}return (-1);}d:{try{if(b<65536)break d;b=b>>16;c=16;break d;}catch($$e){$$je=P($$e);d=$$je;break b;}}e:{try{if(b<256)break e;b=b>>8;c=c+8|0;break e;}catch($$e){$$je=P($$e);d=$$je;break b;}}f:{try{if(b<16)break f;b=b>>4;c=c+4|0;break f;}catch($$e){$$je=P($$e);d=$$je;break b;}}g:{try{if(b<4)break g;b +=b>>2;c=c+2|0;break g;}catch($$e){$$je=P($$e);d=$$je;break b;}}h:{try{if(b<2)break h;c=c+1|0;break h;}catch($$e){$$je=P($$e);d=$$je;break b;}}try{break a;}catch($$e){$$je=P($$e);d=$$je;break b;}}J(d);}return c;},En4=b=>{let c,d,e,$$je;Kf();Bf();try{b=b.c1V.cHn.bGU;c=b.bGH;d=b.bGG;e=D2j(!(c>d)?d|0:c|0)+1|0;}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},FbT=(b,c)=>{let $$je;Kf();Bf();try{c=Ee9(BcG(b),c);}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},Ee9=(b,c)=>{let d,e,f,g,h,i;Kf();d=b.bLU;e=b.bLA;f=0;g=c-1 +|0;while(g>=0){h=d>>g&1;i=e>>g&1;f=((4*f|0)+(2*h|0)|0)+(h^i)|0;c=d^e;d=i-1|0;e=e^c&d;c=c^e;i=( -h|0)&d;d=c^i;e=e^i;g=g+(-1)|0;}return f;},APB=(b,c)=>{let d,e,f,g,h,i,j,$$je;Kf();Bf();a:{b:{c:{try{d=b.bI9.data;e=d[2];f=c.bI9.data;if(e>=f[0]&&d[0]<=f[2])break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0.0;}d:{try{if(d[3]>=f[1]&&d[1]<=f[3])break d;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0.0;}e:{try{if(d[0]<=f[0]){g=f[0];break e;}g=d[0];break e;}catch($$e){$$je=P($$e);b=$$je;break b;}}f:{try{if(d[1] +<=f[1]){h=f[1];break f;}h=d[1];break f;}catch($$e){$$je=P($$e);b=$$je;break b;}}g:{try{if(d[2]>=f[2]){i=f[2];break g;}i=d[2];break g;}catch($$e){$$je=P($$e);b=$$je;break b;}}h:{try{if(d[3]>=f[3]){j=f[3];break h;}j=d[3];break h;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{g=(i-g)*(j-h);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return g;},BCR=(b,c)=>{let d,e,f,$$je;Kf();Bf();try{d=c.bI9.data;c=b.bIn;e=c.bGH;d[0]=e|0;f=c.bGG;d[1]=f|0;b=b.bI5;d[2]=e+b.bGH|0;d[3]=f+b.bGG|0;}catch($$e){$$je=P($$e);b= +$$je;J(b);}},Bl5=(b,c)=>{let d,$$je;Kf();Bf();try{d=b.bLK;c.bI9.data[0]=(Y(d,0)).bIK.bGH|0;c.bI9.data[1]=(Y(d,0)).bIK.bGG|0;c.bI9.data[2]=(Y(d,0)).bIK.bGH+(Y(d,0)).bLx.bGH|0;c.bI9.data[3]=(Y(d,0)).bIK.bGG+(Y(d,0)).bLx.bGG|0;}catch($$e){$$je=P($$e);b=$$je;J(b);}},EjU=(b,c)=>{let d,e,$$je;Kf();Bf();try{d=Q4();e=EG();e.bGH=0.0;e.bGG=0.0;b=c.bLK;if(b!==null)Cd(e,(Y(b,0)).bLx);d.bI9.data[0]=AAC(c.bIn.bGH-e.bGH)|0;d.bI9.data[1]=AAC(c.bIn.bGG-e.bGG)|0;d.bI9.data[2]=Tt(c.bIn.bGH+c.bI5.bGH+e.bGH)|0;d.bI9.data[3]=Tt(c.bIn.bGG ++c.bI5.bGG+e.bGG)|0;}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;}; +let DoY=(b,c,d)=>{let e,f,$$je;Kf();Bf();a:{try{e=c.bLK;f=d.bLK;if(!CZm&&e===f)J(Jk());}catch($$e){$$je=P($$e);b=$$je;break a;}b:{try{if((Y(e,0)).bZq&&(Y(f,0)).bZq)break b;}catch($$e){$$je=P($$e);b=$$je;break a;}return (-1);}try{I(E(5285));I(E(5286));I(E(5287));I(E(5288));I(E(5289));I(E(5290));I(E(5291));I(E(5292));I(E(5293));I(E(5294));I(E(5295));I(E(5289));I(E(5296));I(E(5291));I(E(5297));I(E(5293));I(E(5298));I(E(5299));I(E(5300));I(E(5301));I(E(5302));I(E(5303));I(E(5037));J(Gw());}catch($$e){$$je=P($$e);b +=$$je;break a;}}J(b);},E8h=(b,c,d,e,f,g)=>{let h,i,j,k,$$je;Kf();Bf();a:{b:{try{h=DoY(b,c,d);if(h<0)h=5;}catch($$e){$$je=P($$e);b=$$je;break b;}c:{try{g=g.data;if(g[h]!==null)break c;g[h]=d;}catch($$e){$$je=P($$e);b=$$je;break b;}return f;}d:{try{i=Q4();BCR(g[h],i);j=APB(e,i);if(!(j>f)){j=0.0;break d;}break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}e:{try{if(g[h].bLK===null)break e;Bl5(g[h],i);k=APB(e,i);if(!(k>f))break e;if(k>j)j=k;break e;}catch($$e){$$je=P($$e);b=$$je;break b;}}f:{try{if(!(j>0.0))break f;} +catch($$e){$$je=P($$e);b=$$je;break b;}return j;}try{g[h]=d;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return f;},AAM=(b,c,d)=>{let $$je;Kf();Bf();try{b=Cc8(Er8(b,c,d));}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},Er8=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,$$je;Kf();e=Q4();f=Q4();g=A5p();g.bKS=0;g.bJx=0.0;Cd(g.bTk,(Y(c.bLK,0)).bIK);h=0;a:while(true){if(h>=b.csJ){Bl5(c,e);i=b.caD;i=CCz(i,i.b4o,e);if(i!==null){j=i;b:while(true){if(j===null){Bf();try{while(true){b=i.b3G;if(b===null)break;Gq(i);i +=b;}Gq(i);}catch($$e){$$je=P($$e);b=$$je;J(b);}return g;}k=j.cMF.bKv;if(k!==c){BCR(k,f);l=APB(e,f);if(l>0.0){Bf();c:{try{m=DoY(b,c,k);if(m>=0)break c;m=5;break c;}catch($$e){$$je=P($$e);b=$$je;break b;}}d:{e:{try{n=d.data;if(n[m]!==null)break e;n[m]=k;}catch($$e){$$je=P($$e);b=$$je;break b;}o=l;break d;}f:{try{p=Q4();BCR(n[m],p);o=APB(e,p);if(!(o>l)){o=0.0;break f;}break f;}catch($$e){$$je=P($$e);b=$$je;break b;}}g:{try{if(n[m].bLK===null)break g;Bl5(n[m],p);q=APB(e,p);if(!(q>l))break g;if(q>o)o=q;break g;} +catch($$e){$$je=P($$e);b=$$je;break b;}}h:{try{if(!(o>0.0))break h;}catch($$e){$$je=P($$e);b=$$je;break b;}break d;}try{n[m]=k;}catch($$e){$$je=P($$e);b=$$je;break b;}o=l;}g.bKS=g.bKS+1|0;g.bJx=g.bJx+o;}r=k.bLK;if(r!==null&&(Y(r,0)).bZq){Bl5(k,f);l=APB(e,f);if(l>0.0){l=E8h(b,c,k,e,l,d);g.bKS=g.bKS+1|0;g.bJx=g.bJx+l;}}}j=j.b3G;}J(b);}return g;}if(c!==Y(b.b1v,h)&&!((Y(b.b1v,h)).bI5.bGH>0.0&&(Y(b.b1v,h)).bI5.bGG>0.0)){i=Y(b.b1v,h);Bf();i:{j:{try{j=c.bLK;if(j!==null)break j;m=0;}catch($$e){$$je=P($$e);b=$$je;break a;}break i;}k: +{try{if(!(i.bIn.bGH>(Y(j,0)).bIK.bGH&&i.bIn.bGH<(Y(j,0)).bIK.bGH+(Y(j,0)).bLx.bGG&&i.bIn.bGG>(Y(j,0)).bIK.bGG&&i.bIn.bGG<(Y(j,0)).bIK.bGG+(Y(j,0)).bLx.bGG)){m=0;break k;}m=1;break k;}catch($$e){$$je=P($$e);b=$$je;break a;}}}if(m)g.bKS=g.bKS+1|0;}h=h+1|0;}J(b);},EMM=(b,c)=>{let $$je;Kf();Bf();try{b=Cc8(Eoe(b,c));}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},Eoe=(b,c)=>{let d,e,f,g,h,i;Kf();d=c.bLK;e=(2.0*(Y(d,0)).bLx.bGH+c.bI5.bGH)/8.0;Y(d,0);f=K(B6P,9);g=A5p();h=A5p();(Y(d,0)).bIK.bGH=c.bIn.bGH-(Y(d,0)).bLx.bGH;(Y(d, +0)).bIK.bGG=c.bIn.bGG+c.bI5.bGG;NL(g,AAM(b,c,f));if(g.bKS){(Y(d,0)).bIK.bGG=c.bIn.bGG;NL(h,AAM(b,c,f));if(h.bKS){if(h.bJx=c.bIn.bGH-(Y(d,0)).bLx.bGH))break a;NL(h,AAM(b,c,f));if(!h.bKS)break;if(h.bJx{let d,e,f,g,h,i,$$je;Kf();Bf();a:{try{d=En4(c);e=0;}catch($$e){$$je=P($$e);b=$$je;break a;}b:{try{while(e{Kf();Bf();},D1D=(b,c)=>{let d,e,f,g,h,$$je;Kf();Bf();try +{d=c.ccA;e=d.bLG.a5q(b,d,null,128);while(e!==null){f=K(A1t,1);g=f.data;d=c.caD;g[0]=d.b4o;h=e.b9K;D4$(d,h.bJo,h.bKv,f,0);c.caD.b4o=g[0];d=c.ccA;e=d.bLG.a5q(b,d,e,8);}}catch($$e){$$je=P($$e);b=$$je;J(b);}return 0;},E8A=(b,c)=>{let d,$$je;Kf();Bf();a:{b:{c:{try{d=FcL(b,c);if(d>=0)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return d;}d:{try{d=D1D(b,c);if(d>=0)break d;}catch($$e){$$je=P($$e);b=$$je;break b;}return d;}try{FrB(c);d=EoT(b,c.ccA);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return d;},ERi +=(b,c,d,e,f,g)=>{let h,i,j,k,$$je;Kf();Bf();a:{b:{c:{try{h=A5p();i=EXV(b,c,d,e,f,g);f=E8A(b,i);if(f>=0)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return f;}try{j=0;k=0;while(k{let b;CZm=0;b=new C_T;E$(b,E(5324));Cbi=b;},CN2=N(),CGe=null,CTy=null,Dm4=null,CFK=null,Cel=null,CMt=null,DbX=null,B$A=null,COp=null,C7S=null,Dcn=null,Ctg=null,Cgq=null,Jf=()=>{Jf=Z(CN2);DPI();},BcQ=(b,c,d,e)=>{let f,g,h,i,j,$$je;Jf();b=Fo(b);c=Fo(c);d=Fo(d);e=Fo(e);Bf();try{f=e.bGG;g=d.bGG;f= -(f-g);h=e.bGH;i=d.bGH;h=h-i;g=f*i+h*g;j=(!(f*b.bGH+h*b.bGG-g>=0.0)?0:1)!=(!(f*c.bGH+h*c.bGG-g>=0.0)?0:1)?0:1;}catch($$e){$$je +=P($$e);b=$$je;J(b);}return j;},Fcs=b=>{let c,$$je;Jf();Bf();a:{b:{try{if(JW(b)!==null)break b;AJf();b=Btd;}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}c:{try{c=(JW(b)).bQu.ci1;if(!Bj(DnT(c),E(5325)))break c;AJf();b=Bg2;}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}d:{try{if(!Bj(DnT(c),E(5326)))break d;AJf();b=A08;}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}try{I(E(5327));I(E(5328));I(E(5329));I(E(5330));I(E(5331));I(E(5332));I(E(5037));J(Gw());}catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);},E6m +=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,$$je;Jf();N_(E(5333),E(5325));try{d=EG();e=EG();f=EG();g=Bsm();h=EG();ARx(new FB);i=EG();j=0.0;k=0.0;l=0.0;m=0.0;n=B4E();o=(JW(c)).bUo.cjm;p=(JW(c)).bUo.ccf;q=(JW(c)).bUo.cbH;r=(JW(c)).bUo.clX;s=(JW(c)).bUo.cgX;t=(JW(c)).bUo.ce5;u=o|S6(GY(b,c,Co(E(5334))));if(!u){l=AP2(ALC(c));m=AP2(AOg(c));}else{I(E(5335));I(E(5336));I(E(5337));I(E(5045));I(E(5338));I(E(5339));I(E(5340));I(E(5044));}p=RN(c,b.cKr,p,0);r=r+XN(c,b.cQq, +0.0,(-360.0));if(!q){I(E(5341));I(E(5342));I(E(5343));}Cd(d,(J8(c)).bHT);if(!(!PL(EL(d.bGH))&&!PL(EL(d.bGG)))){if(GY(b,c,Co(E(4607)))===null)DiL(d);else{I(E(5344));I(E(5345));I(E(5346));I(E(5347));I(E(5348));I(E(5349));I(E(5350));I(E(5351));I(E(5352));I(E(5353));I(E(5354));I(E(5355));I(E(5278));I(E(5356));}}v=d.bGH-(J8(c)).bHT.bGH;if((PH(H9(c))).cU5>0.0){I(E(5357));I(E(5358));I(E(5359));}g.bLA=0;g.bLU=0;if((JW(c)).c$v){I(E(5360));I(E(5361));I(E(5362));I(E(5363));I(E(5364));I(E(5365));I(E(5366));I(E(5367));I(E(5368));I(E(5369));I(E(5370));I(E(5371));I(E(5051));I(E(5044));} +else{w=GY(b,c,Co(E(5372)));if(w!==null&&Dn(w,0)){I(E(5373));I(E(5374));I(E(5375));I(E(5376));I(E(5377));I(E(5378));I(E(5379));I(E(5380));I(E(5381));I(E(5382));I(E(5044));}}f.bGH=BC(d.bGH,g.bLU);f.bGG=BC(d.bGG,g.bLA);if(q<=2&&!(t===0.0&&s===0.0))q=120;a:{b:{x=GY(b,c,Co(E(5120)));if(x!==null){if(Dn(x,0)==116)break b;if(Dn(x,0)==98)break b;}(J8(c)).cxo=99;break a;}(J8(c)).cxo=Dn(x,0);}y=!(q==4&&!(PL(r)%90|0)&&t===0.0&&s===0.0)?0:1;if(!y){if((JW(c)).bUo.coA!==null){I(E(5383));I(E(5384));}else{z=f.bGG*BmG;if(!(m +>z&&(J8(c)).cxo==99)){f.bGH=f.bGH*BmG;f.bGG=z;}else f.bGH=f.bGH*Gs(1.0/(1.0-AOV(f.bGG/m)));if(q>2){z=G4(3.141592653589793/q);f.bGH=f.bGH/z;f.bGG=f.bGG/z;}}}Cd(e,f);w=Zy(c,b.cFH,Co(E(12)));if(Dn(w,0)==115&&!AFr(w,Co(E(4097)))){f.bGH=l;f.bGG=m;n.b9p=n.b9p|2048;}else if(!S6(w)){l=BC(l,f.bGH);f.bGH=l;m=BC(m,f.bGG);f.bGG=m;}else{if(!(!(l<(J8(c)).bHT.bGH)&&!(m<(J8(c)).bHT.bGG)))Fw(Fm(),E(5385));f.bGH=l;f.bGG=m;}if(u){l=BC(f.bGH,f.bGG);f.bGG=l;f.bGH=l;m=l;}if(S6(Zy(c,b.csO,Co(E(12)))))(J8(c)).bZV.bGH=d.bGH-v;else if +(y)(J8(c)).bZV.bGH=BC(d.bGH,f.bGH)-v;else{z=d.bGG;if(!(z=0?p:1;if(q<3){q=2;bc=Ev(bc,q);Ej();w=Ho(bc,G9);h.bGH=f.bGH/2.0;h.bGG=f.bGG/2.0;(Y(w,0)).bGH= -h.bGH;(Y(w,0)).bGG= -h.bGG;Cd(Y(w,1),h);if(o>0){I(E(5386));I(E(5387));I(E(5388));I(E(5389));I(E(5390));I(E(5391));I(E(5392));I(E(5393));I(E(5391));I(E(5051));I(E(5394));I(E(5395));}} +else{c:{bc=Ev(bc,q);Ej();w=Ho(bc,G9);if((JW(c)).bUo.coA!==null){I(E(5396));I(E(5397));I(E(5398));I(E(5399));}else{bd=6.283185307179586/q;z=bd/2.0;be=H0(z);bf=B83(EL(t)+EL(s),1.0);bg=t*BmG/G4(z);bh=s/2.0;bi=(bd-3.141592653589793)/2.0;bj=H0(bi);i.bGH=0.5*G4(bi);i.bGG=0.5*bj;k=0.0;v=bi+(3.141592653589793-bd)/2.0;bk=0;j=k;d:{while(bk0){I(E(5400));I(E(5401));I(E(5402));I(E(5403));I(E(5404));I(E(5405));I(E(5406));I(E(5407));I(E(5408));I(E(5409));I(E(5410));I(E(5411));I(E(5412));I(E(5413));I(E(5414));I(E(5415));I(E(5416));I(E(5417));I(E(5418));I(E(5419));I(E(5420));I(E(5421));I(E(5422));I(E(5423));I(E(5424));I(E(5051));I(E(5403));I(E(5425));I(E(5426));I(E(5427));I(E(5051));}}n.cjm +=u;n.ccf=p;n.cbH=q;n.clX=r;n.cgX=s;n.ce5=t;n.coA=w;if(n.b9p&2048){I(E(5428));I(E(5429));}else{B0s(c,Bna(f.bGH));BQ5(c,Bna(f.bGG));}Ce5(c,n);}catch($$e){$$je=P($$e);b=$$je;Ee(E(5333),E(5325));J(b);}Ee(E(5333),E(5325));},Eqs=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,$$je;Jf();Bf();a:{b:{c:{try{e=EG();f=EG();g=EG();h=c.cm$;i=c.ckU;Cd(e,A_0(d,90*ADs(H9(i))|0));if(h===null)break c;j=Gm();FM(j,h);k=Cpj(e,j);}catch($$e){$$je=P($$e);b=$$je;break b;}return k;}d:{try{if(i===b.c1_)break d;l=0.0;m=0.0;c=Bzc(i);b.cKb=c;b.b_3 +=c.coA;b.cg7=c.cbH;if(c.b9p&2048){I(E(5430));I(E(5431));I(E(5432));I(E(5433));I(E(5434));I(E(5435));I(E(5436));I(E(5368));I(E(5437));I(E(5438));I(E(5051));}else{if(!KL(H9(i))){b.b93=Ng(i)+Kv(i);b.b9c=Vn(i);}else{b.b9c=Ng(i)+Kv(i);b.b93=Vn(i);}l=PL(ALC(i)*72.0);m=PL(AOg(i)*72.0);}if(b.b93===0.0)b.b93=1.0;if(b.b9c===0.0)b.b9c=1.0;b.c7c=l/b.b93;b.c7d=m/b.b9c;b.cFv=l/2.0;b.c1Z=m/2.0;k=Ev(b.cKb.ccf-1|0,b.cg7);b.b66=k;if(k<0)b.b66=0;b.c1_=i;break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}e:{try{l=e.bGH*b.c7c;e.bGH +=l;e.bGG=e.bGG*b.c7d;if(!(EL(l)>b.cFv)){l=EL(e.bGG);m=b.c1Z;if(!(l>m))break e;}}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}f:{try{k=b.cg7;if(k>2)break f;k=!(B83(e.bGH/b.cFv,e.bGG/m)<1.0)?0:1;}catch($$e){$$je=P($$e);b=$$je;break b;}return k;}g:{try{n=b.crJ%k|0;k=(n+1|0)%k|0;Cd(f,Y(b.b_3,n+b.b66|0));Cd(g,Y(b.b_3,k+b.b66|0));if(BcQ(e,b.cdd,f,g))break g;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}h:{try{o=BcQ(e,f,g,b.cdd);if(!o)break h;if(!BcQ(e,g,b.cdd,f))break h;}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}try +{p=1;}catch($$e){$$je=P($$e);b=$$je;break b;}i:{try{while(true){q=b.cg7;if(p>=q)break;if(o)n=(k+1|0)%q|0;else k=((n+q|0)-1|0)%q|0;if(!BcQ(e,b.cdd,Y(b.b_3,k+b.b66|0),Y(b.b_3,n+b.b66|0)))break i;p=p+1|0;q=n;n=k;k=q;}b.crJ=n;}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}try{b.crJ=k;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return 0;},DLK=(b,c)=>{Jf();a:{b:{c:{d:{switch(c){case 0:break;case 1:break c;case 2:break d;case 3:break b;default:break a;}break a;}I(E(5439));I(E(5440));I(E(5441));I(E(5057));I(E(5442));I(E(5443));I(E(5057));I(E(5067));I(E(5057));I(E(5044));I(E(5138));}I(E(5439));I(E(5440));I(E(5444));I(E(5057));I(E(5442));I(E(5445));I(E(5057));I(E(5446));I(E(5443));I(E(5057));I(E(5447));I(E(5441));I(E(5057));I(E(5044));I(E(5138));}I(E(5439));I(E(5440));I(E(5444));I(E(5057));I(E(5442));I(E(5445));I(E(5057));I(E(5446));I(E(5441));I(E(5057));I(E(5447));I(E(5443));I(E(5057));I(E(5044));I(E(5138));}return b;},DzF +=(b,c)=>{Jf();a:{b:{c:{d:{switch(c){case 0:break;case 1:break c;case 2:break d;case 3:break b;default:break a;}break a;}I(E(5448));I(E(5138));}I(E(5449));I(E(5138));}I(E(5450));I(E(5451));I(E(5452));I(E(5453));I(E(5454));I(E(5455));I(E(5456));I(E(5457));I(E(5458));I(E(5459));I(E(5460));I(E(5461));I(E(5462));I(E(5463));I(E(5464));I(E(5465));I(E(5456));I(E(5466));I(E(5458));I(E(5459));I(E(5138));}return b;},Bi8=(b,c,d,e,f,g)=>{let h,i,j,k,l,m,n,o,p,q,r,s,t,u;Jf();h=Gm();i=EG();j=EG();k=0;l=0.0;m=0;n=0;o=0;p=1;if +(c!==null){FM(h,c);q=h.bGT;r=q.bGH;s=h.bGU;Cd(i,MM((r+s.bGH)/2.0,(q.bGG+s.bGG)/2.0));t=1;}else{i.bGG=0.0;i.bGH=0.0;if(KL(H9(b))){I(E(5467));I(E(5468));I(E(5469));I(E(5470));}else{h.bGU.bGG=Vn(b)/2.0;q=h.bGT;s=h.bGU;q.bGG= -s.bGG;s.bGH=Ng(b);h.bGT.bGH= -h.bGU.bGH;}t=0;}a:{q=h.bGU;BC(q.bGH,q.bGG);Cd(j,i);if(e===null)f=o;else if(!Dn(e,0))f=o;else{b:{c:{d:{e:{f:{g:{u=Dn(e,0);e=GL(e,1);switch(u){case 95:break;case 99:break g;case 101:break d;case 110:break b;case 115:break c;case 119:break e;default:break f;}n=1;break a;}I(E(5057));}k +=1;f=o;break a;}if(Dn(e,0)){k=1;f=o;break a;}if(g!==null)I(E(5471));else i.bGH=h.bGT.bGH;l=3.141592653589793;m=1;t=1;p=0;f=f&8;break a;}if(Dn(e,0)){I(E(5472));f=o;break a;}if(g!==null)I(E(5473));else i.bGH=h.bGU.bGH;l=0.0;m=1;t=1;p=0;f=f&2;break a;}h:{i:{j:{k:{i.bGG=h.bGT.bGG;m=1;p=0;switch(Dn(e,0)){case 0:break i;case 101:break k;case 119:break j;default:}break h;}I(E(5474));I(E(5475));I(E(5476));I(E(5477));I(E(5354));I(E(5478));I(E(5479));I(E(5219));}I(E(5480));I(E(5475));I(E(5476));I(E(5481));I(E(5354));I(E(5482));I(E(5483));I(E(5219));I(E(5484));I(E(5485));I(E(5486));I(E(5487));I(E(5472));I(E(5219));break h;}l +=(-1.5707963267948966);t=1;if(g===null)i.bGH=j.bGH;else I(E(5488));o=f&1;}f=o;break a;}l:{m:{n:{i.bGG=h.bGU.bGG;m=1;p=0;switch(Dn(e,0)){case 0:break l;case 101:break;case 119:break n;default:break m;}I(E(5475));I(E(5489));I(E(5476));I(E(5490));I(E(5354));I(E(5478));I(E(5491));I(E(5219));}I(E(5475));I(E(5492));I(E(5476));I(E(5493));I(E(5354));I(E(5482));I(E(5494));I(E(5219));}I(E(5485));I(E(5486));I(E(5487));I(E(5472));I(E(5219));f=o;break a;}t=1;l=1.5707963267948966;if(g===null)i.bGH=j.bGH;else I(E(5495));f +=f&4;}}Cd(i,B3y(i,90*ADs(H9(b))|0));if(n)d.bIG=f;else d.bIG=DLK(f,ADs(H9(b)));d.bQC=c;FbS(i,d.bHg);d.bMz=DzF(l,ADs(H9(b)));r=i.bGH;if(r===0.0&&i.bGG===0.0)d.bV7=128;else{r=Nz(i.bGG,r)+4.71238898038469;if(r>=6.283185307179586)r=r-6.283185307179586;d.bV7=256.0*r/6.283185307179586|0;}d.bMm=m;d.bIQ=t;d.bQb=p;d.bZl=n;return !k?0:1;},ClN=(b,c)=>{let d,$$je;Jf();Bf();try{b=Fm();c=BY(c);d=CR();H(H(d,E(5496)),c);c=CH(d);Fw(b,c);}catch($$e){$$je=P($$e);b=$$je;J(b);}},D52=(b,c)=>{Jf();return (JW(c)).bUo!==b.cfi?0:1;},CRD +=(b,c,d,e,f)=>{let g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,$$je;Jf();N_(E(5497),E(5498));a:{try{g=BC9();h=null;i=null;j=null;k=J8(c);l=null;m=1;n=0;o=b.bI8;b:{c:{while(Dn(o,0)){if(Dn(o,0)==92){o=GL(o,1);if(Dn(o,0)&&!(Dn(o,0)!=123&&Dn(o,0)!=125&&Dn(o,0)!=124&&Dn(o,0)!=92))I(E(5499));}if(Dn(o,0)==123)n=n+1|0;else if(Dn(o,0)==125)n=n+(-1)|0;else if(Dn(o,0)==124&&!n)m=m+1|0;if(n<0)break c;o=GL(o,1);}break b;}}Ej();g.bPD=SE(m,BJz);g.b1x=d;p=0;q=0;r=1;s=f;o=f;}catch($$e){$$je=P($$e);b=$$je;break a;}d:{try{e:while(r){if(Dn(b.bI8, +0)<32&&Dn(b.bI8,0)){b.bI8=GL(b.bI8,1);continue;}f:{g:{h:{i:{j:{switch(Dn(b.bI8,0)){case 0:case 124:case 125:break f;case 60:break;case 62:break i;case 92:break h;case 123:break j;default:break g;}if(p&6)I(E(5500));if(k.bZw)I(E(5501));p=p|18;b.bI8=GL(b.bI8,1);h=f;i=f;continue e;}t=GL(b.bI8,1);b.bI8=t;if(!(!p&&Dn(t,0)))I(E(5500));p=4;t=g.bPD;u=d?0:1;E_(t,q,CRD(b,c,u,0,f));t=g.bPD;u=q+1|0;if(Bz(t,q)!==null){q=u;continue e;}I(E(5500));q=u;continue e;}if(k.bZw)I(E(5501));if(!(p&16))I(E(5500));if(Bo$(h,GL(f,1))>0 +&&Bo$(GL(h,(-1)),i)&&Dn(h,(-1))==32)I(E(5502));O_(h,0,0);j=Bfd(f);p=p&(-17);b.bI8=GL(b.bI8,1);continue e;}I(E(5503));I(E(5504));I(E(5505));I(E(5506));I(E(5507));I(E(5508));I(E(5509));I(E(5510));I(E(5505));I(E(5424));I(E(5051));I(E(5511));}if(p&4&&Dn(b.bI8,0)!=32)I(E(5500));if(!(p&24)&&Dn(b.bI8,0)!=32)p=p|9;if(p&8){if(!(Dn(b.bI8,0)==32&&Dn(s,(-1))==32&&!k.bZw)){O_(s,0,Dn(b.bI8,0));s=GL(s,1);}}else if(p&16)k:{if(Dn(b.bI8,0)==32){if(h===f)break k;if(Dn(h,(-1))==32)break k;}O_(h,0,Dn(b.bI8,0));h=GL(h,1);}b.bI8= +GL(b.bI8,1);while(Dn(b.bI8,0)&128){I(E(5512));}continue e;}if(!(!(!Dn(b.bI8,0)&&!e)&&!(p&16)))I(E(5500));if(p&4)m=q;else{l=BC9();t=g.bPD;m=q+1|0;E_(t,q,l);}if(j!==null){l.cz6=j;j=null;}if(!(p&5)){p=p|1;O_(s,0,32);s=GL(s,1);}if(p&1){if(Bo$(s,GL(f,1))>0&&Bo$(GL(s,(-1)),o)&&Dn(s,(-1))==32)s=GL(s,(-1));O_(s,0,0);l.cj_=ASn(b,c,Bfd(f),!k.bZw?0:2,k.cwj,k.cHL,k.cSn);l.b1x=1;s=f;o=f;}if(!Dn(b.bI8,0)){r=0;q=m;continue;}if(Dn(b.bI8,0)==125)break d;p=0;b.bI8=GL(b.bI8,1);q=m;}g.bWa=q;}catch($$e){$$je=P($$e);b=$$je;break a;}Ee(E(5497), +E(5325));return g;}try{b.bI8=GL(b.bI8,1);g.bWa=m;}catch($$e){$$je=P($$e);b=$$je;break a;}Ee(E(5497),E(5325));return g;}Ee(E(5497),E(5325));J(b);},CCb=(b,c,d)=>{let e,f,g,h,i,$$je;Jf();Bf();a:{b:{try{c:{e=EG();f=EG();g=EG();h=d.cj_;if(h===null){e.bGG=0.0;e.bGH=0.0;i=0;while(true){if(i>=d.bWa)break c;Cd(f,CCb(b,c,Bz(d.bPD,i)));if(!d.b1x){e.bGG=e.bGG+f.bGG;e.bGH=BC(e.bGH,f.bGH);}else{e.bGH=e.bGH+f.bGH;e.bGG=BC(e.bGG,f.bGG);}i=i+1|0;}}Cd(g,h.bHT);if(!(!(g.bGH>0.0)&&!(g.bGG>0.0))&&GY(b,c,Co(E(4607)))!==null){I(E(5513));I(E(5514));I(E(5515));I(E(5516));I(E(5517));I(E(5518));I(E(5517));I(E(5519));I(E(5520));}Cd(e, +g);}Cd(d.bO_,e);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return Fo(e);},CLN=(b,c,d)=>{let e,f,g,h,i,j,k,$$je;Jf();c=Fo(c);Bf();try{e=EG();f=EG();g=c.bGH;h=b.bO_;e.bGH=g-h.bGH;e.bGG=c.bGG-h.bGG;Cd(h,c);h=b.cj_;if(h!==null&&!d){h=h.bZV;h.bGH=h.bGH+e.bGH;h.bGG=h.bGG+e.bGG;}a:{i=b.bWa;if(i){g=!b.b1x?e.bGG/i:e.bGH/i;i=0;while(true){if(i>=b.bWa)break a;e=Bz(b.bPD,i);j=i+1|0;k=(j*g|0)-(i*g|0)|0;if(!b.b1x)Cd(f,MM(c.bGH,e.bO_.bGG+k));else Cd(f,MM(e.bO_.bGH+k,c.bGG));CLN(e,f,d);i=j;}}}}catch($$e){$$je=P($$e);b +=$$je;J(b);}},CKO=(b,c,d)=>{let e,f,g,h;Jf();c=Fo(c);e=0;b.cyf=d;Cd(b.bYe.bGT,MM(c.bGH,c.bGG-b.bO_.bGG));Cd(b.bYe.bGU,MM(c.bGH+b.bO_.bGH,c.bGG));f=b.bWa-1|0;g=0;while(true){h=C5(g,f);if(h>0)break;if(!d)e=0;else if(b.b1x)e=g?(h?5:7):h?13:15;else if(g)e=h?10:11;else if(h)e=14;else I(E(5521));CKO(Bz(b.bPD,g),c,d&e);if(!b.b1x)c.bGG=c.bGG-(Bz(b.bPD,g)).bO_.bGG;else c.bGH=c.bGH+(Bz(b.bPD,g)).bO_.bGH;g=g+1|0;}},EWp=(b,c)=>{let d,e,f,g,h,i,$$je;Jf();Bf();try{d=EG();e=EG();f=Dtr(H9(c))?0:1;g=(J8(c)).bSb;b.bI8=g;h=BZr(DT(O4(g), +1)+1|0);i=CRD(b,c,f,1,h);if(i===null){I(E(5522));I(E(5523));I(E(5524));}Gq(h);CCb(b,c,i);e.bGH=AP2(ALC(c));e.bGG=AP2(AOg(c));if(!S6(Zy(c,b.cFH,Co(E(12))))){e.bGH=BC(i.bO_.bGH,e.bGH);e.bGG=BC(i.bO_.bGG,e.bGG);}else{I(E(5525));I(E(5526));I(E(5527));I(E(5528));I(E(5044));}CLN(i,e,S6(Zy(c,b.csO,Co(E(12)))));Cd(d,MM( -e.bGH/2.0,e.bGG/2.0));CKO(i,d,15);B0s(c,Bna(i.bO_.bGH));BQ5(c,Bna(i.bO_.bGG+1.0));Ce5(c,i);}catch($$e){$$je=P($$e);b=$$je;J(b);}},CB0=(b,c)=>{let d,e;Jf();a:{d=b.cz6;if(!(d!==null&&BPM(d,c))){d=null;e +=0;b:{while(e{let e,f,g,h,i,$$je;Jf();Bf();try{e=null;if(DVN(GY(b,d,Co(E(5529))))!==null&&I(E(5530))!==null)c=Co(E(5531));a:{if(Dn(c,0)==99&&!AFr(c,Co(E(5531))))f=e;else{g=b.c1R.data;h=g.length;i=0;b:{while(i{let d,e;Jf();a:{b:{c:{d:{b=Fo(b);d=new FB;CJ(d);e=new AR5;CJ(e);switch +(c){case 0:break;case 1:break c;case 2:break d;case 3:break b;default:break a;}Cd(d,b);break a;}I(E(5533));I(E(5534));I(E(5138));}I(E(5535));I(E(5536));I(E(5138));}I(E(5535));I(E(5537));I(E(5138));}BX();e.bLU=PL(d.bGH);e.bLA=PL(d.bGG);return BcG(e);},DYT=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o;Jf();e=Gm();f=ADs((H9(b)).b2Z);g=new AR5;CJ(g);h=CYe(Dh(b),f);i=CYe(Dh(c),f);j=d.bIG;k=null;l=0;if(j&&j!=15){b=d.bQC;if(b!==null)FM(e,b);else{I(E(5538));I(E(5539));I(E(5468));I(E(5469));I(E(5470));I(E(5379));I(E(5540));I(E(5470));I(E(5541));I(E(5468));I(E(5044));}m +=0;while(m<4){if(j&1<=l)){k=Cgq.data[m];l=n;}}m=m+1|0;}return k;}return k;},DhB=(b, +c,d)=>{let e,f,$$je;Jf();Bf();a:{try{e=Vw();f=DYT(b,c,d);e.bUX=d.bUX;Bi8(b,d.bQC,e,f,d.bIG,null);break a;}catch($$e){$$je=P($$e);b=$$je;}J(b);}return AXY(e);},DPI=()=>{let b,c,d;b=new CDL;E$(b,E(5325));CGe=b;b=new CDI;E$(b,E(5542));CTy=b;b=new CDK;E$(b,E(5543));Dm4=b;b=new CDO;E$(b,E(5544));CFK=b;b=new CDP;E$(b,E(5545));Cel=b;b=new CDM;E$(b,E(5546));CMt=b;b=new CDN;E$(b,E(5326));DbX=b;b=new CEd;E$(b,E(5547));B$A=b;b=new CEe;E$(b,E(5548));COp=b;b=new CnP;E$(b,E(5549));C7S=b;b=new CnN;E$(b,E(5550));Dcn=b;b=new CnM;E$(b, +E(5551));Ctg=b;c=K(H2,4);d=c.data;d[0]=Co(E(994));d[1]=Co(E(5552));d[2]=Co(E(5553));d[3]=Co(E(992));Cgq=c;},Czz=N(),DdC=null,CQN=null; +let C$D=null,Cmd=null,C5d=0,Gd=()=>{Gd=Z(Czz);D__();},Cui=(b,c,d,e)=>{let f,g,$$je;Gd();Bf();a:{try{f=Gm();g=f.bGT;g.bGH=b;g.bGG=c;g=f.bGU;g.bGH=d;g.bGG=e;break a;}catch($$e){$$je=P($$e);f=$$je;}J(f);}return PK(f);},A7C=b=>{let $$je;Gd();Bf();try{while(H7(b)!==null){b=H7(b);}while(I2(b)!==null){b=I2(b);}}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},AZq=b=>{let c,$$je;Gd();Bf();try{a:{b:{if(FH(b)==1){if((Gv(b)).bG8>1)break b;if((D7(b)).bG8>1)break b;}c=0;break a;}c=1;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},Byd +=(b,c)=>{let d,e,$$je;Gd();b=AXY(b);c=AXY(c);Bf();a:{b:{c:{d:{try{if(c.bIQ)break d;d=!b.bIQ?0:1;}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}e:{try{if(b.bIQ)break e;d=(-1);}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}f:{try{b=b.bHg;e=b.bGH;c=c.bHg;d=e-c.bGH|0;if(d)break f;d=b.bGG-c.bGG|0;break f;}catch($$e){$$je=P($$e);b=$$je;break c;}}try{break b;}catch($$e){$$je=P($$e);b=$$je;break c;}}J(b);}}return d;},EFw=(b,c)=>{let d,e,f,g,h,$$je;Gd();Bf();try{d=(Y(b,0)).bPR;Ej();e=Ho(d,G9);f=IQ((Y(b,0)).bK7,d +-1|0);g=0;h=e;while(g{let c,d,e,f,g,$$je;Gd();Bf();try{c=b.bPl;Ej();d=Ho(c,A3P);e=IQ(b.bIY,c-1|0);f=0;g=d;while(f +{let d,e,f,g,$$je;Gd();Bf();try{d=IV(b,c);while(d!==null){e=Mx(b,c,d);while(e!==null){f=b.bMk.cwz;g=K(F,1);g.data[0]=e;if(Wp(C_y(f,b,g))&&K7(e)!==null)DY2(K7(e));e=MU(b,c,e);}d=I4(b,c,d);}}catch($$e){$$je=P($$e);b=$$je;J(b);}},FbU=b=>{let c;Gd();I(E(5554));I(E(5555));I(E(5253));I(E(5556));I(E(5557));I(E(5558));I(E(5559));I(E(5560));I(E(5561));I(E(5044));I(E(5035));I(E(5037));c=new BV;X(c);J(c);},EYL=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,bd,be,bf,$$je;Gd();N_(E(5562),E(5563));a:{b: +{c:{try{e=VE();f=VE();g=V3();h=V3();i=DPx();j=ANE(c)&14;g.bHO.bKd.bGQ=e;h.bHO.bKd.bGQ=f;if(j)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(5562),E(5563));return;}d:{try{k=C5(j,4);if(k)break d;l=K(F,1);l.data[0]=c;FbU(l);if(QJ(c)&1)I(E(5564));m=IV(b,c);while(m!==null){n=Mx(b,c,m);while(n!==null){l=K(F,4);o=l.data;o[0]=c;o[1]=n;o[2]=CL(j);o[3]=b.bMk;DXn(l);n=MU(b,c,n);}m=I4(b,c,m);}I(E(5565));break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}e:{try{BWc(b,c);if(!Fjk(b))break e;}catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(5562), +E(5563));return;}try{p=CSI();i.b_I=W1(c)/4|0;i.cd7=W1(c);Ej();q=SE(128,Q_);i.b27=0;i.bZ_=0;r=0;s=D5(c);t=r;f:while(true){if(s>D9(c)){m=CR();ZY(H(m,E(5566)),r);m=CH(m);g:{BwA(m);BKH(b,q,r,C$D);p.bT1=B3r(t+360|0);i.cow=B3r(s);if(j==2){m=GV(c);while(true){if(m===null)break g;if(FH(m)==1&&J8(m)!==null)Cn3(m);m=GN(m);}}}u=0;while(u=r)break h;n=Bz(q,v);ba +=A7C(n);if(w!==ba)break j;if(!Zu(m)){if(!(!(E7(n)).bIQ&&!(E5(n)).bIQ)){if(!x)break i;ba=n;}else if(x)break k;if(O$(ba)&32){AFb(h.bHO,ba);ba=h.bHO;}if(Byd(E7(y),E7(ba)))break l;if(Byd(E5(y),E5(ba)))break m;if((O$(m)&15)==2&&DW(m)!==DW(n))break n;if(O$(Bz(q,v))&64)break;}z=z+1|0;v=v+1|0;}break h;}break h;}break h;}break h;}break h;}break h;}}if(Cg(m)!==BZ(m)){if(CD(Cg(m))!=CD(BZ(m)))DJs(b,c,i,p,q,u,z,j);else Eq3(b,c,i,p,q,u,z,j);}else{m=Cg(m);bb=CD(m);bc=bb==D9(c)?(bb<=0?Vn(m)|0:(Dh(Bz((Y(B7(c),bb-1|0)).bG3,0))).bGG +-(Dh(m)).bGG|0):bb==D5(c)?(Dh(m)).bGG-(Dh(Bz((Y(B7(c),bb+1|0)).bG3,0))).bGG|0:DO((Dh(Bz((Y(B7(c),bb-1|0)).bG3,0))).bGG-(Dh(m)).bGG|0,(Dh(m)).bGG-(Dh(Bz((Y(B7(c),bb+1|0)).bG3,0))).bGG|0);E4l(b,p,q,u,z,i.cd7,bc/2|0,b.bMk);t=0;while(t{let $$je;Gd();Bf();try{EYL(b,c,1);}catch($$e){$$je=P($$e);b=$$je;J(b);}},Cn3=b=>{let c,d,e,$$je;Gd();Bf();a:{b:{c:{try{c=EG();if((Gv(b)).bG8)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}try{d=Bz((D7(b)).bGS,0);while(QH(d)){d=I2(d);}Cd(c,(DW(d)).bHT);e=!KL(H9(b))?c.bGH:c.bGG;(DW(d)).bJJ.bGH=(Dh(b)).bGH+e/2.0;(DW(d)).bJJ.bGG=(Dh(b)).bGG;(DW(d)).bKX +=1;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}},BLq=(b,c,d,e)=>{let $$je;Gd();Bf();try{if(!c)c=Cg(b)!==BZ(b)?(CD(Cg(b))!=CD(BZ(b))?1:2):!(!(E7(b)).bIQ&&!(E5(b)).bIQ)?4:8;if(!d)d=c==1?(CD(Cg(b))>=CD(BZ(b))?32:16):c!=2?16:DN(Cg(b))>=DN(BZ(b))?32:16;ATt(b,c|d|e);}catch($$e){$$je=P($$e);b=$$je;J(b);}},D67=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,$$je;Gd();Bf();a:{b:{c:{try{d=Bz(b,0);e=Bz(c,0);f=O$(d)&15;g=O$(e)&15;if(f==g)break c;f=g-f|0;}catch($$e){$$je=P($$e);b=$$je;break b;}return f;}d:{try{h=A7C(d);i +=A7C(e);j=CD(Cg(h))-CD(BZ(h))|0;k=CD(Cg(i))-CD(BZ(i))|0;l=Kj(j|0);m=Kj(k|0);if(l==m)break d;f=l-m|0;}catch($$e){$$je=P($$e);b=$$je;break b;}return f;}e:{try{j=(Dh(Cg(h))).bGH-(Dh(BZ(h))).bGH;k=(Dh(Cg(i))).bGH-(Dh(BZ(i))).bGH;f=Kj(j|0);g=Kj(k|0);if(f==g)break e;f=f-g|0;}catch($$e){$$je=P($$e);b=$$je;break b;}return f;}f:{try{l=h.bHw.bMs;f=i.bHw.bMs;if(l==f)break f;f=l-f|0;}catch($$e){$$je=P($$e);b=$$je;break b;}return f;}g:{try{if(!(E7(d)).bIQ&&!(E5(d)).bIQ)break g;h=d;break g;}catch($$e){$$je=P($$e);b=$$je;break b;}}h: +{try{if(!(O$(h)&32))break h;n=V3();n.bHO.bKd.bGQ=VE();AFb(n.bHO,h);h=n.bHO;break h;}catch($$e){$$je=P($$e);b=$$je;break b;}}i:{try{if(!(E7(e)).bIQ&&!(E5(e)).bIQ)break i;i=e;break i;}catch($$e){$$je=P($$e);b=$$je;break b;}}j:{try{if(!(O$(i)&32))break j;o=V3();o.bHO.bKd.bGQ=VE();AFb(o.bHO,i);i=o.bHO;break j;}catch($$e){$$je=P($$e);b=$$je;break b;}}k:{try{f=Byd(E7(h),E7(i));if(!f)break k;}catch($$e){$$je=P($$e);b=$$je;break b;}return f;}l:{try{f=Byd(E5(h),E5(i));if(!f)break l;}catch($$e){$$je=P($$e);b=$$je;break b;}return f;}m: +{try{f=O$(d)&192;g=O$(e)&192;if(f==g)break m;f=f-g|0;}catch($$e){$$je=P($$e);b=$$je;break b;}return f;}n:{try{if(f!=2)break n;if(DW(d)===DW(e))break n;I(E(5579));break n;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{f=d.bHw.bMs-e.bHw.bMs|0;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return f;},DK$=(b,c,d,e,f,g,h,i)=>{let j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,bd,be,bf,$$je;Gd();N_(E(5580),E(5581));a:{b:{try{j=AKR();k=Ca(1);l=Bz(e,f);Ej();m=Ho(10,G9);n=EG();o=EG();p=0.0;q=0.0;r=SE(g,Q_);s=0;while +(s=i)break c;e=Bz(r,ba);if(!(ba +%2|0)){Cd(Y(m,0),n);(Y(m,1)).bGH=y;(Y(m,1)).bGG=n.bGG;(Y(m,2)).bGH=y;(Y(m,2)).bGG=x;(Y(m,3)).bGH=z;(Y(m,3)).bGG=x;(Y(m,4)).bGH=z;(Y(m,4)).bGG=o.bGG;(Y(m,5)).bGH=o.bGH;(Y(m,5)).bGG=o.bGG;(Y(m,6)).bGH=o.bGH;c=Y(m,6);bc=x+6.0;c.bGG=bc;(Y(m,7)).bGH=n.bGH;(Y(m,7)).bGG=bc;bd=x+(DW(e)).bHT.bGG/2.0+6.0;x=x+(DW(e)).bHT.bGG+6.0;}else{if(ba==1){p=v-(DW(e)).bHT.bGH/2.0;q=v+(DW(e)).bHT.bGH/2.0;}w=w-(6.0+(DW(e)).bHT.bGG);Cd(Y(m,0),n);(Y(m,1)).bGH=n.bGH;(Y(m,1)).bGG=w-6.0;(Y(m,2)).bGH=o.bGH;(Y(m,2)).bGG=(Y(m,1)).bGG;Cd(Y(m, +3),o);(Y(m,4)).bGH=q;(Y(m,4)).bGG=o.bGG;(Y(m,5)).bGH=q;(Y(m,5)).bGG=w;(Y(m,6)).bGH=p;(Y(m,6)).bGG=w;(Y(m,7)).bGH=p;(Y(m,7)).bGG=n.bGG;bd=w+(DW(e)).bHT.bGG/2.0;}j.bIb=8;j.bIg=m;be=Cgd(b,n,o,j,k,h?0:1);if(!bb[0])break;(DW(e)).bJJ.bGH=v;(DW(e)).bJJ.bGG=bd;(DW(e)).bKX=1;ZP(b,e,BZ(e),be,bb[0],b.bMk);ba=ba+1|0;}}catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(5580),E(5581));return;}bf=(2.0*t+u)/3.0;t=(t+2.0*u)/3.0;d:{try{while(true){if(ba>=g)break d;e=Bz(r,ba);if(!(ba%2|0)){Cd(Y(m,0),n);(Y(m,1)).bGH=y;(Y(m,1)).bGG=n.bGG;(Y(m, +2)).bGH=y;(Y(m,2)).bGG=x;(Y(m,3)).bGH=z;(Y(m,3)).bGG=x;(Y(m,4)).bGH=z;(Y(m,4)).bGG=o.bGG;(Y(m,5)).bGH=o.bGH;(Y(m,5)).bGG=o.bGG;(Y(m,6)).bGH=o.bGH;c=Y(m,6);x=x+6.0;c.bGG=x;(Y(m,7)).bGH=n.bGH;(Y(m,7)).bGG=x;}else{if(ba==1){p=bf;q=t;}w=w-6.0;Cd(Y(m,0),n);(Y(m,1)).bGH=n.bGH;(Y(m,1)).bGG=w-6.0;(Y(m,2)).bGH=o.bGH;(Y(m,2)).bGG=(Y(m,1)).bGG;Cd(Y(m,3),o);(Y(m,4)).bGH=q;(Y(m,4)).bGG=o.bGG;(Y(m,5)).bGH=q;(Y(m,5)).bGG=w;(Y(m,6)).bGH=p;(Y(m,6)).bGG=w;(Y(m,7)).bGH=p;(Y(m,7)).bGG=n.bGG;}j.bIb=8;j.bIg=m;be=Cgd(b,n,o,j,k,h? +0:1);if(!bb[0])break;ZP(b,e,BZ(e),be,bb[0],b.bMk);ba=ba+1|0;}}catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(5580),E(5581));return;}try{Gq(r);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}Ee(E(5580),E(5581));J(b);}Ee(E(5580),E(5581));},Co8=(b,c,d,e,f,g,h)=>{let i,j,k,l,m,n,o,p,q,r,$$je;Gd();Bf();a:{try{i=Bz(e,f);Ej();j=Ho(10,G9);k=EG();l=EG();Cd(k,AS9(Dh(c),(E7(i)).bHg));Cd(l,AS9(Dh(d),(E5(i)).bHg));m=C5(g,1);n=m<=0?0.0:Vn(c)/(g-1|0);o=k.bGG-(m<=0?0.0:Vn(c)/2.0);p=0;}catch($$e){$$je=P($$e);b=$$je;break a;}q +=C5(h,10);m=C5(h,2);while(true){try{if(p>=g)break;d=Bz(e,f+p|0);r=0;if(q&&m){I(E(5582));I(E(5582));I(E(5583));I(E(5583));I(E(5583));I(E(5584));I(E(5584));I(E(5584));I(E(5585));I(E(5585));}else{Cd(Y(j,r),k);Cd(Y(j,1),MM((2.0*k.bGH+l.bGH)/3.0,o));Cd(Y(j,2),MM((2.0*l.bGH+k.bGH)/3.0,o));r=4;Cd(Y(j,3),l);}o=o+n;ZP(b,d,BZ(d),j,r,b.bMk);p=p+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}return;}J(b);},DSi=(b,c,d,e,f,g,h,i)=>{let j,k,l,m,n,o,$$je;Gd();Bf();a:{try{j=0;k=0;ARx(new FB);l=Cg(h);m=BZ(h);n=0;while +(n{let j,k,l,m,$$je;Gd();Bf();try{j=Gm();FM(j,APL(c,d,f,null,g));FM(h.bSO,j);h.bNN=4;if(!i)BCE(b,e,g,2,h,0);else BYa(b,e,g,2,h,0);b=j.bGU;k=h.bIC.data;l=h.bI$.data;b.bGG=k[l[0]-1|0].bGU.bGG;j.bGT.bGG=k[l[0]-1|0].bGT.bGG;FM(j,A4x(j,4,(Dh(f)).bGG+(Y(B7(c),CD(f))).bKQ));b=j.bGT;m=b.bGH;c=j.bGU;if(m{let d,e,f,g,h;Gd();d=CD(Cg(c))-1|0;if(d>=D5(b)){e=(Y(B7(b),d)).bG3;f +=(Y(B7(b),d)).bG$;g=0;while(true){if(g>=f)return null;h=Bz(e,g);if(h!==null&&A_x(h)===c)break;g=g+1|0;}return h;}return null;},Fev=(b,c,d,e,f,g)=>{let h,i,j,k,l,m,n,o,p,q,r,s,t,u,$$je;Gd();N_(E(5665),E(5666));a:{b:{try{h=null;i=ARn();j=ARn();k=Gm();l=Ca(1);Ej();Ho(7,G9);m=Cg(f);n=BZ(f);o=D$1(c,f);if(o===null){p=H7(f);while(H7(p)!==null){p=H7(p);}o=Cg(p);}}catch($$e){$$je=P($$e);b=$$je;break b;}c:{try{Cd((DW(f)).bJJ,Dh(o));(DW(f)).bKX=1;if(g==2){I(E(5667));I(E(5668));I(E(5669));I(E(5670));I(E(5671));I(E(5672));I(E(5673));I(E(5674));I(E(5675));I(E(5676));break c;}k.bGT.bGH +=(Dh(o)).bGH-Ng(o);k.bGU.bGH=(Dh(o)).bGH+Kv(o);k.bGU.bGG=(Dh(o)).bGG+Vn(o)/2.0;q=((Dh(o)).bGG-(Y(B7(c),CD(m))).bLf-(Dh(m)).bGG+(Y(B7(c),CD(m))).bKQ|0)/6.0|0;k.bGT.bGG=k.bGU.bGG-BC(5.0,q);Bge(b,c,d,e,m,f,i,1);Bge(b,c,d,e,n,f,j,0);r=b.bRA.data;d=r[0].bGT;s=i.bIC.data;t=i.bI$.data;d.bGH=s[t[0]-1|0].bGT.bGH;r[0].bGT.bGG=s[t[0]-1|0].bGU.bGG;c=r[0].bGU;d=k.bGT;c.bGH=d.bGH;r[0].bGU.bGG=d.bGG;r[1].bGT.bGH=s[t[0]-1|0].bGT.bGH;r[1].bGT.bGG=d.bGG;h=r[1].bGU;t=j.bIC.data;s=j.bI$.data;h.bGH=t[s[0]-1|0].bGU.bGH;c=r[1].bGU;h +=k.bGU;c.bGG=h.bGG;r[2].bGT.bGH=h.bGH;r[2].bGU.bGG=d.bGG;r[2].bGT.bGG=t[s[0]-1|0].bGU.bGG;r[2].bGU.bGH=t[s[0]-1|0].bGU.bGH;u=0;while(u=0){AAQ(e,j.bIC.data[q]);q=q+(-1)|0;}h=g!=10?BX8(b,e,l):BfL(b,e,l);}catch($$e){$$je=P($$e);b=$$je;break b;}d:{try{if(l.data[0])break d;}catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(5665),E(5666));return;}}try{t=l.data;ZP(b,f,BZ(f),h,t[0],b.bMk);break a;}catch($$e) +{$$je=P($$e);b=$$je;break b;}}Ee(E(5665),E(5666));J(b);}Ee(E(5665),E(5666));},EkJ=b=>{let c;Gd();I(E(5554));I(E(5677));I(E(5678));I(E(5253));I(E(5679));I(E(5680));I(E(5681));I(E(5682));I(E(5683));I(E(5684));I(E(5685));I(E(5686));I(E(5687));I(E(5688));I(E(5689));I(E(5690));I(E(5691));I(E(5692));I(E(5035));I(E(5636));I(E(5693));I(E(5035));I(E(5694));I(E(5695));I(E(5696));I(E(5697));I(E(5600));I(E(5698));I(E(5699));I(E(5601));I(E(5700));I(E(5701));I(E(5702));I(E(5703));I(E(5704));I(E(5705));I(E(5706));I(E(5707));I(E(5708));I(E(5709));I(E(5710));I(E(5706));I(E(5711));I(E(5712));I(E(5713));I(E(5714));I(E(5715));I(E(5706));I(E(5716));I(E(5717));I(E(5718));I(E(5719));I(E(5720));I(E(5721));I(E(5722));I(E(5723));I(E(5724));I(E(5035));I(E(5037));c +=new BV;X(c);J(c);},Eq3=(b,c,d,e,f,g,h,i)=>{let j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,$$je;Gd();N_(E(5725),E(5726));a:{b:{try{j=VE();k=V3();l=Ca(1);m=l.data;m[0]=0;n=ARn();o=ARn();k.bHO.bKd.bGQ=j;p=Bz(f,g);q=Zu(p);if(O$(p)&32){AFb(k.bHO,p);p=k.bHO;}r=1;c:{d:{while(r=h)break;bh=Gm();p=Bz(f,g+bg|0);FM(bh,n.bIC.data[n.bI$.data[0]-1|0]);v=b.bRA.data;v[0].bGT.bGH=bh.bGT.bGH;c=v[0].bGT;d=bh.bGU;c.bGG=d.bGG;c=v[0].bGU;bc +=d.bGH;bg=bg+1|0;bd=bg;ba=bd*be;c.bGH=bc+ba;v[0].bGU.bGG=d.bGG+bd*bf;v[1].bGT.bGH=n.bIC.data[n.bI$.data[0]-1|0].bGT.bGH;v[1].bGT.bGG=v[0].bGU.bGG;c=v[1].bGU;bi=o.bIC.data;w=o.bI$.data;c.bGH=bi[w[0]-1|0].bGU.bGH;v[1].bGU.bGG=v[1].bGT.bGG+bf;FM(bh,bi[w[0]-1|0]);v=b.bRA.data;c=v[2].bGU;d=bh.bGU;c.bGH=d.bGH;v[2].bGT.bGG=d.bGG;v[2].bGT.bGH=bh.bGT.bGH-ba;v[2].bGU.bGG=v[1].bGT.bGG;s=0;while(s=0){AAQ(e, +o.bIC.data[i]);i=i+(-1)|0;}bj=z?BX8(b,e,l):BfL(b,e,l);if(!m[0])break a;ZP(b,p,BZ(p),bj,m[0],b.bMk);e.bRs=0;continue;}catch($$e){$$je=P($$e);b=$$je;break b;}}Ee(E(5725),E(5726));return;}Ee(E(5725),E(5726));J(b);}Ee(E(5725),E(5726));},EVv=(b,c,d,e)=>{let $$je;Gd();Bf();try{I(E(5727));I(E(5728));I(E(5253));I(E(5729));I(E(5730));I(E(5731));I(E(5732));I(E(5733));I(E(5734));I(E(5735));I(E(5736));I(E(5737));I(E(5687));I(E(5686));I(E(5738));I(E(5739));I(E(5157));I(E(5740));I(E(5741));I(E(5668));I(E(5669));I(E(5035));I(E(5636));I(E(5742));I(E(5743));I(E(5744));I(E(5035));I(E(5745));I(E(5746));I(E(5747));I(E(5748));I(E(5749));I(E(5044));I(E(5045));I(E(5750));I(E(5751));I(E(5044));I(E(5752));I(E(5753));I(E(5754));I(E(5755));I(E(5756));I(E(5045));I(E(5757));I(E(5758));I(E(5044));I(E(5672));I(E(5673));I(E(5674));I(E(5676));I(E(5035));I(E(5636));I(E(5672));I(E(5759));I(E(5760));I(E(5035));I(E(5761));I(E(5037));J(Gw());} +catch($$e){$$je=P($$e);b=$$je;}J(b);},DJs=(b,c,d,e,f,g,h,i)=>{let j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,$$je;Gd();N_(E(5762),E(5763));a:{try{j=null;k=VE();l=VE();m=VE();n=V3();o=V3();p=V3();q=null;r=ARn();s=ARn();t=Gm();u=Ca(1);v=u.data;v[0]=0;w=Ca(1);x=w.data;x[0]=0;n.bHO.bKd.bGQ=k;o.bHO.bKd.bGQ=l;p.bHO.bKd.bGQ=m;if(b.bPt===null){Ej();b.bPt=Ho(2000,G9);b.cbA=Ho(2000,G9);b.clC=2000;b.cS8=2000;}y=0;z=Bz(f,g);ba=0;if(Kj(CD(Cg(z))-CD(BZ(z))|0)>1){BBP(k,z.bKd.bGQ);BGi(n.bHO, +z);n.bHO.bKd.bGQ=k;if(O$(z)&32){AFb(o.bHO,z);A2G(n.bHO,BZ(z));AQi(n.bHO,E5(z));}else{BBP(l,z.bKd.bGQ);BGi(o.bHO,z);o.bHO.bKd.bGQ=l;A2G(n.bHO,Cg(z));}bb=A7C(z);while(H7(bb)!==null){bb=H7(bb);}BxD(n.bHO,BZ(bb));(E5(n.bHO)).bIQ=0;RM(n.bHO,1);k=(E5(n.bHO)).bHg;(E5(n.bHO)).bHg.bGG=0.0;k.bGH=0.0;ARb(n.bHO,z);z=n.bHO;ba=1;}else if(O$(z)&32){AFb(n.bHO,z);z=n.bHO;}}catch($$e){$$je=P($$e);b=$$je;break a;}b:{try{bc=C5(i,2);if(!bc){bd=EVv(c,z,b.bPt,Ehz(j));x[0]=bd;if(bd)break b;}be=i!=10?0:1;bf=0;x[0]=0;bg=Cg(z);m=BZ(z);FM(t, +APL(c,d,bg,null,z));FM(r.bSO,t);BYa(b,e,z,1,r,AZq(bg));k=t.bGU;bh=r.bIC.data;bi=r.bI$.data;k.bGG=bh[bi[0]-1|0].bGU.bGG;t.bGT.bGG=bh[bi[0]-1|0].bGT.bGG;FM(t,A4x(t,1,(Dh(bg)).bGG-(Y(B7(c),CD(bg))).bLf));k=t.bGT;bj=k.bGH;l=t.bGU;if(bj=(!(QJ(c)&1)?3:5)){bl=1;bm=1;y=y+(-2)|0;}}if(!(bl&&bm<=0)){bm=bm+(-1)|0;bi=b.bRA.data;bf=bn+1|0;FM(bi[bn],APL(c,d,m,j,Bz((D7(m)).bGS,0)));j=Bz((D7(m)).bGS,0);bg=Cg(j);m=BZ(j);continue;}FM(s.bSO,APL(c,d,m,j,Bz((D7(m)).bGS,0)));BCE(b,e,j,1,s,AZq(BZ(j)));FM(t,A4x(s.bIC.data[s.bI$.data[0]-1|0],4,(Dh(m)).bGG+(Y(B7(c),CD(m))).bKQ));k=t.bGT;bj=k.bGH;l=t.bGU;if(bjb.clC){I(E(5770));I(E(5771));}bk=0;while(bk=(x[0]-1|0))break;(Y(b.bPt,bk)).bGH=(Y(b.bPt,bk)).bGH-bo;bk=bk+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}k:{try +{if(b.clC<=b.cS8)break k;I(E(5778));I(E(5779));break k;}catch($$e){$$je=P($$e);b=$$je;break a;}}try{i=0;while(i{let j,k,l,m,$$je;Gd();Bf();a:{b:{c:{try{j=CgH(c,(-1));k=CgH(c,1);if(j===null)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}d:{try{j=AVO(j);if(j!==null)break d;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}try{Y(j.bIY,0);Y(j.bIY,0);break c;}catch($$e){$$je=P($$e);b=$$je;break b;}}e:{try{if(k===null)break e;}catch($$e){$$je=P($$e);b=$$je;break b;}f:{try{c=AVO(k);if(c!==null)break f;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}try{Y(c.bIY,0);Y(c.bIY,0);break e;}catch($$e){$$je=P($$e);b +=$$je;break b;}}g:{try{c=Cri(d,(-1));j=Cri(d,1);if(c===null)break g;}catch($$e){$$je=P($$e);b=$$je;break b;}h:{try{c=AVO(c);if(c!==null)break h;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}try{Y(c.bIY,c.bPl-1|0);Y(c.bIY,c.bPl-1|0);break g;}catch($$e){$$je=P($$e);b=$$je;break b;}}i:{try{if(j===null)break i;}catch($$e){$$je=P($$e);b=$$je;break b;}j:{try{c=AVO(j);if(c!==null)break j;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}try{Y(c.bIY,c.bPl-1|0);Y(c.bIY,c.bPl-1|0);break i;}catch($$e){$$je=P($$e);b=$$je;break b;}}try +{l=0;while(l=0){AAQ(b,f.bIC.data[h]);h=h+(-1)|0;}FgN(b,i,l);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}},A4x=(b,c,d)=>{let e,f,g,$$je;Gd();b=PK(b);Bf();a:{b:{try{c:{d:{e=Gm();switch(c){case 1:break;case 4:break d;default:break c;}f=b.bGT;FM(e,Cui(f.bGH,d,b.bGU.bGH,f.bGG));break c;}g=b.bGT.bGH;b=b.bGU;FM(e,Cui(g,b.bGG,b.bGH,d));}break a;}catch($$e){$$je=P($$e);b +=$$je;break b;}}J(b);}return PK(e);},FgN=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,$$je;Gd();Bf();a:{try{e=c-1|0;}catch($$e){$$je=P($$e);b=$$je;break a;}f=d+1|0;while(true){try{if(e>=f)break;g=b.bT1.data[e];if(!((e-c|0)%2|0)){h=g.bGT;i=h.bGH;g=g.bGU;j=g.bGH;if(i>=j){k=(i+j)/2.0|0;h.bGH=k-8|0;g.bGH=k+8|0;}}else{h=g.bGT;i=h.bGH;j=i+16.0;g=g.bGU;l=g.bGH;if(j>l){k=(i+l)/2.0|0;h.bGH=k-8|0;g.bGH=k+8|0;}}e=e+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}try{k=0;while(k<(b.bRs-1|0)){m=b.bT1.data;g=m[k];e=k+1|0;h=m[e];if +(k>=c&&k<=d&&!((k-c|0)%2|0)){i=g.bGT.bGH+16.0;n=h.bGU;if(i>n.bGH)n.bGH=i;i=g.bGU.bGH-16.0;g=h.bGT;if(i=c&&kj)n.bGH=j-16.0;g=g.bGU;i=g.bGH-16.0;j=h.bGT.bGH;if(i{let e,f,g,h,i,$$je;Gd();Bf();a:{b:{try{e=Gm();FM(e,b.cow.data[d]);if(e.bGT.bGH===e.bGU.bGH){f=Bz((Y(B7(c),d)).bG3,0);g=B7(c);h=d+1|0;g=Bz((Y(g,h)).bG3,0);i=e.bGT;i.bGH=b.bZ_;i.bGG +=(Dh(g)).bGG+(Y(B7(c),h)).bKQ;g=e.bGU;g.bGH=b.b27;g.bGG=(Dh(f)).bGG-(Y(B7(c),d)).bLf;FM(b.cow.data[d],e);}break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return PK(e);},FkR=b=>{let c,d,$$je;Gd();Bf();try{c=0;d=b;a:{b:{c:{while(true){d=BZ(Bz((D7(d)).bGS,0));if(FH(d)!=1)break;if((D7(d)).bG8!=1)break a;if((Gv(d)).bG8!=1)break b;if((Dh(d)).bGH!==(Dh(b)).bGH)break c;c=c+1|0;}break a;}break a;}}}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},ElN=(b,c,d,e)=>{let f,g,h,i,$$je;Gd();Bf();try{e=e.data;f=e[0];while +(true){g=c+(-1)|0;if(!c)break;b=Bz((D7(BZ(b))).bGS,0);c=g;}h=e[0];e[0]=h+1|0;i=Y(d,h);c=f-1|0;Cd(i,Y(d,c));f=e[0];e[0]=f+1|0;Cd(Y(d,f),Y(d,c));Cd(Y(d,e[0]),Dh(Cg(b)));}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},CI9=(b,c,d)=>{let e,f,g,$$je;Gd();Bf();try{e=0;f=BZ(c);a:{while(true){if(FH(f)!=1)break a;c=b.bMk.b4M;g=K(F,1);g.data[0]=f;if(Wp(A_Z(c,b,g)))break a;while(e(Dh(f)).bGG){e=e+1|0;}if(e>=d.bRs)break;if(!(d.bT1.data[e].bGU.bGG<(Dh(f)).bGG)){if(J8(f)!==null){g=d.bT1.data;CCU(f, +g[e].bGT.bGH|0,g[e].bGU.bGH|0,g[e].bGU.bGH+Kv(f)|0);}else{g=d.bT1.data;CCU(f,g[e].bGT.bGH|0,(g[e].bGT.bGH+g[e].bGU.bGH)/2.0|0,g[e].bGU.bGH|0);}}f=BZ(Bz((D7(f)).bGS,0));}}}catch($$e){$$je=P($$e);b=$$je;J(b);}},CCU=(b,c,d,e)=>{let $$je;Gd();Bf();try{(Dh(b)).bGH=d;AHe(b,d-c|0);U$(b,e-d|0);}catch($$e){$$je=P($$e);b=$$je;J(b);}},CgH=(b,c)=>{let d,e,f,$$je;Gd();Bf();try{d=null;e=0;while(true){f=Bz((D7(Cg(b))).bGS,e);if(f===null)break;a:{if(Ev(c,DN(BZ(f))-DN(BZ(b))|0)>0){if(K7(f)===null){if(I2(f)===null)break a;if +(K7(I2(f))===null)break a;}if(!(d!==null&&Ev(c,DN(BZ(d))-DN(BZ(f))|0)<=0))d=f;}}e=e+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},Cri=(b,c)=>{let d,e,f,$$je;Gd();Bf();try{d=null;e=0;while(true){f=Bz((Gv(BZ(b))).bGS,e);if(f===null)break;a:{if(Ev(c,DN(Cg(f))-DN(Cg(b))|0)>0){if(K7(f)===null){if(I2(f)===null)break a;if(K7(I2(f))===null)break a;}if(!(d!==null&&Ev(c,DN(Cg(d))-DN(Cg(f))|0)<=0))d=f;}}e=e+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},CWP=(b,c)=>{let d,$$je;Gd();Bf();try{d=!(A4U((JA(b)).bGT.bGH, +(Dh(c)).bGH,(JA(b)).bGU.bGH)&&A4U((JA(b)).bGT.bGG,(Dh(c)).bGG,(JA(b)).bGU.bGG))?0:1;}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},Cnl=(b,c,d)=>{let e,f,g,h,i,$$je;Gd();Bf();try{e=null;if(!FH(c)){f=GU(c);g=f;}else{h=I2(Bz((D7(c)).bGS,0));f=GU(Cg(h));g=GU(BZ(h));}if(!FH(d)){i=GU(d)!==b?GU(d):null;if(i===null)i=e;else if(i===f)i=e;else if(i===g)i=e;}else{h=I2(Bz((D7(d)).bGS,0));i=GU(Cg(h))===b?null:GU(Cg(h));if(!(i!==null&&i!==f&&i!==g&&CWP(i,d))){i=GU(BZ(h))===b?null:GU(BZ(h));if(i===null)i=e;else if(i===f)i +=e;else if(i===g)i=e;else if(!CWP(i,d))i=e;}}}catch($$e){$$je=P($$e);b=$$je;J(b);}return i;},APL=(b,c,d,e,f)=>{Gd();return PK(EVD(b,c,d,e,f));},EVD=(b,c,d,e,f)=>{let g,h,i,j,k,l,$$je;Gd();Bf();try{g=Gm();h=(Dh(d)).bGH-Ng(d)-4.0;i=COO(b,d,e,f,(-1));if(i===null)g.bGT.bGH=DO(PL(h),c.bZ_);else{j=Cnl(b,d,i);if(j!==null)k=(JA(j)).bGU.bGH+c.b_I;else{k=(Dh(i)).bGH+YX(i);k=FH(i)?k+c.b_I:k+W1(b)/2.0;}if(!(kl))k=l;g.bGU.bGH=PL(k);}if(FH(d)==1&&J8(d)!==null){c=g.bGU;c.bGH=c.bGH-Kv(d);c=g.bGU;if(c.bGH{let g,h,i,j,$$je;Gd();Bf();try{g=null;h=IQ(B7(b),CD(c));i=DN(c)+f|0;a:{b:{c:{d:{e:{while(i>= +0){if(i>=(Y(h,0)).bG$)break e;j=Bz((Y(h,0)).bG3,i);if(FH(j)==1&&J8(j)!==null)break b;if(!FH(j))break c;if(!D4l(j,c,d,e))break d;i=i+f|0;}j=g;break a;}j=g;break a;}break a;}break a;}}}catch($$e){$$je=P($$e);b=$$je;J(b);}return j;},D4l=(b,c,d,e)=>{let f,g,h,i,$$je;Gd();Bf();a:{b:{try{f=DN(b)<=DN(c)?0:1;}catch($$e){$$je=P($$e);b=$$je;break b;}c:{try{if((D7(b)).bG8==1)break c;if((D7(b)).bG8==1)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}d:{try{if((D7(b)).bG8!=1)break d;if(e===null)break d;g=Bz((D7(b)).bGS, +0);h=0;}catch($$e){$$je=P($$e);b=$$je;break b;}e:{f:{g:{try{while(true){if(h>=2)break d;c=BZ(g);e=BZ(e);if(c===e)break e;if(f!=(DN(c)<=DN(e)?0:1))break;if((D7(c)).bG8!=1)break d;if(!FH(c))break f;g=Bz((D7(c)).bGS,0);if((D7(e)).bG8!=1)break d;if(!FH(e))break g;e=Bz((D7(e)).bGS,0);h=h+1|0;}}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}try{break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}h:{try{if((Gv(b)).bG8 +!=1)break h;if(d===null)break h;g=Bz((Gv(b)).bGS,0);i=0;}catch($$e){$$je=P($$e);b=$$je;break b;}i:{j:{k:{try{while(true){if(i>=2)break h;c=Cg(g);b=Cg(d);if(c===b)break i;if(f!=(DN(c)<=DN(b)?0:1))break;if((Gv(c)).bG8!=1)break h;if(!FH(c))break j;g=Bz((Gv(c)).bGS,0);if((Gv(b)).bG8!=1)break h;if(!FH(b))break k;d=Bz((Gv(b)).bGS,0);i=i+1|0;}}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}try{break h;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break h;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break h;}catch +($$e){$$je=P($$e);b=$$je;break b;}}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return 0;},D__=()=>{let b,c;C5d=0;b=new CK7;E$(b,E(5780));DdC=b;c=new CK6;E$(c,E(5781));CQN=c;c=new CK5;E$(c,E(5782));C$D=c;c=new CK4;E$(c,E(5783));Cmd=c;},C$q=N(0); +function C$(){Wy.call(this);this.cS6=null;} +let E$=(a,b)=>{a.cS6=b;},DnT=a=>{return a.cS6;},D_O=(a,b,c,d,e,f)=>{return (a.a5e(b,BB(F,[c,d,e,f]))).bHl;},Ekq=(a,b,c,d,e)=>{let f,g;f=K(F,3);g=f.data;g[0]=c;g[1]=d;g[2]=CL(e);return a.a5e(b,f);},CsP=N(C$),E1n=(a,b,c)=>{c=c.data;return CL(Cmw(c[0],c[1],c[2],c[3]));},EfE=(a,b,c,d,e,f)=>{return Cmw(c,d,e,f);}; +function CNH(){let a=this;CA.call(a);a.caZ=null;a.cdr=null;a.cNg=null;a.cWO=null;a.cRF=null;a.cH$=0;a.cNY=null;} +function C1d(){let a=this;CA.call(a);a.cs1=null;a.cld=null;} +function CtS(){let a=this;CA.call(a);a.cZj=null;a.cVx=null;} +function BPD(){let a=this;AHa.call(a);a.cwe=null;a.bOh=null;a.cQi=null;a.cf3=null;a.b8A=null;a.bMM=null;a.b8p=null;a.b5w=null;a.cUq=null;a.b2Z=null;a.bQa=null;a.dez=null;} +let Bnx=0,B66=()=>{B66=Z(BPD);FeS();},Frk=a=>{let b,c,d;B66();Bn_(a);a.cwe=a;b=new Bjb;CJ(b);a.bOh=b;a.cQi=ALM(a);c=Bnx;b=new S;T(b);Bb(b,71);BE(b,c);a.dez=Q(b);Bnx=Bnx+1|0;b=BY(a);d=new S;T(d);H(H(d,E(5784)),b);Q(d);Bf();},C2Y=()=>{let a=new BPD();Frk(a);return a;},DMq=(a,b)=>{if(b!==null&&b.bQp){Wn();if(b!==AW_){b=new BV;X(b);J(b);}return a.cQi;}return a;},FeS=()=>{Bnx=0;}; +function Com(){let a=this;F.call(a);a.bZv=null;a.bXF=null;} +function Cum(){let a=this;F.call(a);a.co2=null;a.cdL=null;a.cq4=null;} +let DCo=(a,b,c,d)=>{a.co2=b;a.cdL=c;a.cq4=d;},CuQ=(a,b,c)=>{let d=new Cum();DCo(d,a,b,c);return d;},BnL=(a,b)=>{let c,d;c=(a.co2.cF(b)).bGF;d=a.cdL;if(d!==null)return BC(c,(d.cF(b)).bGF);return c;}; +function Ckq(){let a=this;CA.call(a);a.dbK=null;a.c$z=null;a.c$p=null;a.dbl=0;} +let Do3=N(),Cz6=null,B13=()=>{B13=Z(Do3);Es5();},Es5=()=>{let b;b=new CcT;E$(b,E(5785));Cz6=b;},AZo=N(Bx),BNy=null,BTo=null,Bvt=null,BvO=null,BvA=null,COZ=null,E88=null,BaY=()=>{BaY=Z(AZo);DHe();},E2i=(a,b,c)=>{BaY();Ct(a,b,c);},ARY=(a,b)=>{let c=new AZo();E2i(c,a,b);return c;},DHe=()=>{let b,c,d;BNy=ARY(E(5786),0);BTo=ARY(E(5787),1);Bvt=ARY(E(5788),2);BvO=ARY(E(5789),3);BvA=ARY(E(5790),4);b=ARY(E(5791),5);COZ=b;c=K(AZo,6);d=c.data;d[0]=BNy;d[1]=BTo;d[2]=Bvt;d[3]=BvO;d[4]=BvA;d[5]=b;E88=c;},Fh7=N(),FwP=(b,c, +d)=>{let e,$$je;Bf();a:{try{e=C8V(64);C5h(new H2,64);BaY();c!==BvO&&c!==BvA;Eo1(e,d,63);if(DgQ(e,58)!==null){I(E(5792));I(E(5793));I(E(5794));I(E(5795));}}catch($$e){$$je=P($$e);b=$$je;break a;}b:{try{if(b===null)break b;b=null;}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}try{I(E(5796));I(E(5797));I(E(5798));I(E(5799));I(E(5800));I(E(5801));I(E(5802));I(E(5803));I(E(5804));I(E(5805));I(E(5806));I(E(5807));I(E(5808));I(E(5809));I(E(5810));I(E(5658));I(E(5035));I(E(5811));I(E(5812));I(E(5813));I(E(5814));I(E(5815));I(E(5816));I(E(5817));I(E(5818));I(E(5819));I(E(5820));I(E(5821));I(E(5822));I(E(5823));I(E(5824));I(E(5658));I(E(5035));I(E(5825));I(E(5826));I(E(5827));I(E(5828));I(E(5829));I(E(5830));I(E(5831));I(E(5037));J(Gw());} +catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);},C42=N(),C9d=null,C21=null,OP=()=>{OP=Z(C42);ES_();},C11=(b,c,d)=>{let e,f,g,$$je;OP();Bf();try{if(c!==Hd(c)){e=Co(E(4881));f=new Oh;Ej();Pd(f,A3V);AGL(b,c,e,f,1);}if(c===d)FoV(Hd(c),d);g=BSZ(b,c);while(g!==null){C11(b,g,d);g=BVm(b,g);}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Fj8=(b,c)=>{let d,e,$$je;OP();Bf();try{d=Co(E(5832));e=new Oh;Ej();Pd(e,BbQ);AGL(b,c,d,e,1);DxQ(b,c);CG8(c,KL(H9(c)));ACJ(4,Gv(c));ACJ(4,D7(c));ACJ(2,YJ(c));ACJ(2,H$(c));ACJ(2,Mb(c));AA0(c,1);} +catch($$e){$$je=P($$e);b=$$je;J(b);}},DBd=(b,c)=>{let d,e,f,$$je;OP();Bf();try{d=Co(E(5833));e=new Oh;Ej();Pd(e,BA9);AGL(b,c,d,e,1);ESH(b,c);AAU(c,RN(c,b.cJ6,1,0));d=Zy(Cg(c),b.cGG,Co(E(14)));f=Zy(BZ(c),b.cGG,Co(E(14)));AHp(c,1);AQ2(c,1);if(Dn(d,0)&&BPM(d,f)){I(E(5834));I(E(5835));}if(Cuf(b,c)){I(E(5836));I(E(5837));}FmX(c,RN(c,b.c4U,0,0));AKK(c,RN(c,b.c6l,1,0));}catch($$e){$$je=P($$e);b=$$je;J(b);}},D8f=(b,c)=>{let d,e,$$je;OP();Bf();try{d=IV(b,c);while(d!==null){Fj8(b,d);d=I4(b,c,d);}d=IV(b,c);while(d!==null) +{e=Mx(b,c,d);while(e!==null){DBd(b,e);e=MU(b,c,e);}d=I4(b,c,d);}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Fb_=b=>{let c;OP();I(E(5554));I(E(5838));I(E(5253));I(E(5839));I(E(5840));I(E(5841));I(E(5842));I(E(5843));I(E(5844));I(E(5845));I(E(5846));I(E(5847));I(E(5848));I(E(5035));I(E(5849));I(E(5037));c=new BV;X(c);J(c);},B0c=b=>{let c;OP();I(E(5554));I(E(5850));I(E(5253));I(E(5851));I(E(5852));I(E(5839));I(E(5853));I(E(5557));I(E(5854));I(E(5855));I(E(5856));I(E(5044));I(E(5857));I(E(5858));I(E(5859));I(E(5044));I(E(5035));I(E(5037));c +=new BV;X(c);J(c);},E41=(b,c)=>{let d,e,f,g,h,i,j,k,$$je;OP();Bf();a:{try{d=D6H();e=RN(c,AB5(b,c,E(5860)),(-1),1);DE2(b,c,10);f=DM9(b,c,d);C11(b,c,c);D8f(b,c);}catch($$e){$$je=P($$e);b=$$je;break a;}g=C5(e,1);h=C5(e,2);i=C5(e,3);b:{c:{d:{try{while(true){ER0(b,c,f);if(!g)break;if(d.cN2){I(E(5861));I(E(5862));I(E(5863));}DRv(b,c,f===null?0:1);if(!h)break c;EAf(b,c,f);if(!i)break d;e=d.cOX-1|0;d.cOX=e;if(!d.cPw)break b;if(e)continue;else break b;}j=K(F,2);k=j.data;k[0]=c;k[1]=CL(1);B0c(j);}catch($$e){$$je=P($$e);b +=$$je;break a;}return;}try{j=K(F,2);k=j.data;k[0]=c;k[1]=CL(2);B0c(j);}catch($$e){$$je=P($$e);b=$$je;break a;}return;}try{j=K(F,2);k=j.data;k[0]=c;k[1]=CL(2);B0c(j);}catch($$e){$$je=P($$e);b=$$je;break a;}return;}e:{try{if(!(ANE(c)&16))break e;j=K(F,1);j.data[0]=c;Fb_(j);break e;}catch($$e){$$je=P($$e);b=$$je;break a;}}f:{try{EfP(b,c);EKl(b,c);if(!S6(GY(b,c,Co(E(5864)))))break f;j=K(F,1);j.data[0]=c;DKR(j);break f;}catch($$e){$$je=P($$e);b=$$je;break a;}}return;}J(b);},DJh=(b,c)=>{let d,e,f,$$je;OP();Bf();try +{d=ECD();e=CIx(b,c,(-1),8);BtV();f=CpM(b,c,A3T,d);E38(b,c,BfA,8,d);if(f===A3T&&e<0)E41(b,c);else{I(E(5865));I(E(5866));I(E(5867));I(E(5868));I(E(5869));I(E(5870));I(E(5871));I(E(5872));I(E(5873));I(E(5874));I(E(5875));I(E(5876));I(E(5877));I(E(5878));I(E(5879));I(E(5880));I(E(5881));I(E(5051));I(E(5882));I(E(5883));I(E(5884));I(E(5379));I(E(5885));I(E(5886));I(E(5887));I(E(5888));I(E(5889));I(E(5875));I(E(5044));I(E(5890));I(E(5891));I(E(5892));I(E(5044));I(E(5893));}}catch($$e){$$je=P($$e);b=$$je;J(b);}},HP +=b=>{let $$je;OP();Bf();try{b=E6N(Hd(b));}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},Eip=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r;OP();if(B7(c)!==null){e=Bk();Dmo(c,e);f=G$();e=Br(e);while(Bq(e)){g=Bm(e);h=BMx(AH7());BwD(g,h);i=D5(g);while(i<=D9(g)){a:{if(i>=D5(c)&&i<=D9(c)){j=Y(B7(c),i);k=0;l=0;m=new S;T(m);n=0;while(n1){o=CL(i);p=f;if(!PT(p,o)){EQ(p,CL(i));r=0;while +(true){if(r>=j.bG$)break a;o=Bz(j.bG3,r);if(o!==null)GU(o);r=r+1|0;}}}}}i=i+1|0;}}Dpq(b,c,c,d);return;}},Dpq=(b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;OP();f=1;while(f<=GA(d)){Dpq(b,c,Bz(HC(d),f),e);f=f+1|0;}g=1;while(g<=GA(d)){f=g+1|0;h=f;while(h<=GA(d)){a:{i=Bz(HC(d),g);j=Bz(HC(d),h);if(D5(i)<=D9(j)&&D5(j)<=D9(i)){k=BMx(AH7());BwD(i,k);l=BMx(AH7());BwD(j,l);m=DT(DT(D5(i),D5(j)),D5(c));n=DO(DO(D9(i),D9(j)),D9(c));o=0;while(true){if(m>n)break a;p=Y(B7(c),m);q=(-1);r=(-1);s=0;while(s=0&&r>=0){v=q>=r?(-1):1;if(!o)o=v;}m=m+1|0;}}}h=h+1|0;}g=f;}},Dmo=(b,c)=>{let d,e;OP();d=1;while(d<=GA(b)){e=Bz(HC(b),d);U(c,e);Dmo(e,c);d=d+1|0;}},BwD=(b,c)=>{let d,e,f;OP();d=c.cvy;Rr();e=AES;ADl(d,b,e);f=1;while(f<=GA(b)){BwD(Bz(HC(b),f),c);f=f+1|0;}},ES_=()=>{let b;b=new CfZ;E$(b,E(5894));C9d=b;b=new Cf0;E$(b,E(5895));C21=b;}; +function C3S(){let a=this;CA.call(a);a.cZB=null;a.c93=null;a.dcN=0;a.daM=null;a.dbW=null;} +let DJW=a=>{CJ(a);},EdF=()=>{let a=new C3S();DJW(a);return a;},A7m=N(Bx),BOs=null,D$v=null,Bn3=()=>{Bn3=Z(A7m);Fxh();},Fxh=()=>{let b,c;b=new A7m;Bn3();Ct(b,E(5896),0);BOs=b;c=K(A7m,1);c.data[0]=b;D$v=c;},Cb5=N(),Ce_=0,Hz=()=>{Hz=Z(Cb5);DJb();},CpO=b=>{let c,d,$$je;Hz();Bf();try{c=DM$();if(b<=1)b=2;Ej();d=SE(b,R$);c.cl8=d;c.b5m=d;c.b8Q=d;c.cFV=L5(d,b);}catch($$e){$$je=P($$e);d=$$je;J(d);}return c;},CjO=b=>{let $$je;Hz();Bf();try{Gq(b.cl8);Gq(b);}catch($$e){$$je=P($$e);b=$$je;J(b);}},A$m=(b,c)=>{let $$je;Hz();Bf();try +{E_(b.b5m,0,c);c=L5(b.b5m,1);b.b5m=c;if(BaQ(c,b.cFV)>=0)b.b5m=b.cl8;}catch($$e){$$je=P($$e);b=$$je;J(b);}},B3t=b=>{let c,d,$$je;Hz();Bf();try{if(EVK(b.b8Q,b.b5m))c=null;else{c=Bz(b.b8Q,0);d=L5(b.b8Q,1);b.b8Q=d;if(BaQ(d,b.cFV)>=0)b.b8Q=b.cl8;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},RN=(b,c,d,e)=>{let f,g,h,i,$$je;Hz();Bf();a:{b:{c:{try{f=K(H2,1);if(c!==null)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return d;}d:{try{g=RS(b,c);if(g!==null&&O4(g))break d;}catch($$e){$$je=P($$e);b=$$je;break b;}return d;}e: +{try{h=f.data;i=DJP(g,f,10);if(!A88(g,h[0]))break e;}catch($$e){$$je=P($$e);b=$$je;break b;}return d;}f:{try{if(i{let f,g,h,i,$$je;Hz();Bf();a:{b:{c:{try{f=K(H2,1);if(c!==null&&b!==null)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return d;}d:{try{g=RS(b,c);if(g!==null&&Dn(g,0))break d;}catch($$e){$$je=P($$e);b=$$je;break b;}return d;}e:{try{h=f.data;i=D5R(g,f);if +(g!==h[0])break e;}catch($$e){$$je=P($$e);b=$$je;break b;}return d;}f:{try{if(i{let $$je;Hz();Bf();a:{b:{c:{try{if(c!==null&&b!==null)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return d;}try{b=RS(b,c);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return b;},ADS=(b,c,d)=>{let e,$$je;Hz();Bf();try{e=Zy(b,c,d);if(e!==null&&Dn(e,0))d=e;}catch($$e){$$je=P($$e);b +=$$je;J(b);}return d;},Ehw=(b,c,d)=>{let $$je;Hz();Bf();try{if(c!==null){I(E(5897));I(E(5037));J(Gw());}d=!d?0:1;}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},Ti=b=>{let $$je;Hz();Bf();try{while(ADb(b)!==null&&ADb(b)!==b){if(ADb(ADb(b))!==null)AU7(b,ADb(ADb(b)));b=ADb(b);}}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},Fjc=(b,c)=>{let $$je;Hz();Bf();a:{b:{c:{try{if(b!==c)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}d:{try{if(ADb(b)!==null){I(E(5898));break d;}AU7(b,b);AA0(b,1);break d;}catch($$e) +{$$je=P($$e);b=$$je;break b;}}e:{try{if(ADb(c)!==null){c=Ti(c);break e;}AU7(c,c);AA0(c,1);break e;}catch($$e){$$je=P($$e);b=$$je;break b;}}f:{try{if(C3M(b)<=C3M(c)){AU7(c,b);AA0(b,AEX(b)+AEX(c)|0);break f;}I(E(5899));I(E(5900));b=c;break f;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return b;},Dej=b=>{let $$je;Hz();Bf();try{AA0(b,1);AU7(b,null);Bxk(b,0);}catch($$e){$$je=P($$e);b=$$je;J(b);}},DRQ=(b,c)=>{let $$je;Hz();Bf();try{if(!Ce_&&b!==Ti(b))J(Jk());AU7(b, +c);AA0(c,AEX(c)+AEX(b)|0);}catch($$e){$$je=P($$e);b=$$je;J(b);}},BVZ=(b,c,d,e,f)=>{Hz();return Fo(EVk(b,c,d,e,f));},EVk=(b,c,d,e,f)=>{let g,h,i,j,k,l,m,n,o,p,q,r,$$je;Hz();Bf();a:{try{g=Hr(36);h=Hr(36);i=0;}catch($$e){$$je=P($$e);b=$$je;break a;}g=g.data;h=h.data;while(true){try{if(i>c)break;j=Y(b,i);g[i]=j.bGH;h[i]=j.bGG;i=i+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}try{k=1;}catch($$e){$$je=P($$e);b=$$je;break a;}l=1.0-d;while(true){try{if(k>c)break;i=0;while(i<=(c-k|0)){m=(k*6|0)+i|0;n=((k-1|0) +*6|0)+i|0;o=l*g[n];p=n+1|0;g[m]=o+d*g[p];h[m]=l*h[n]+d*h[p];i=i+1|0;}k=k+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}b:{try{if(e===null)break b;i=0;while(true){if(i>c)break b;q=Y(e,i);m=i*6|0;q.bGH=g[m];q.bGG=h[m];i=i+1|0;}}catch($$e){$$je=P($$e);b=$$je;break a;}}c:{try{if(f===null)break c;i=0;while(true){if(i>c)break c;q=Y(f,i);m=((c-i|0)*6|0)+i|0;q.bGH=g[m];q.bGG=h[m];i=i+1|0;}}catch($$e){$$je=P($$e);b=$$je;break a;}}try{r=EG();c=c*6|0;r.bGH=g[c];r.bGG=h[c];}catch($$e){$$je=P($$e);b=$$je;break a;}return r;}J(b);},DVN +=b=>{let $$je;Hz();Bf();try{b=null;}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},BW$=(b,c,d)=>{let e,f,$$je;Hz();Bf();try{e=0;a:{while(true){f=c.data[e];if(f===null)break a;if(b!==null&&!AFr(b,f))break;e=e+1|0;}}e=d.data[e];}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},DIS=(b,c)=>{let $$je;Hz();Bf();a:{b:{c:{try{if(b!==null&&Dn(b,0))break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return c;}d:{try{if(Bd0(b,Co(E(12))))break d;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}e:{try{if(Bd0(b,Co(E(4643))))break e;} +catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}f:{try{if(Bd0(b,Co(E(13))))break f;}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}g:{try{if(Bd0(b,Co(E(4644))))break g;}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}h:{try{if(FjQ(Dn(b,0)))break h;}catch($$e){$$je=P($$e);b=$$je;break b;}return c;}i:{try{if(!BTA(b)){c=0;break i;}c=1;break i;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return c;},S6=b=>{let c,$$je;Hz();Bf();try{c=DIS(b,0);}catch($$e){$$je +=P($$e);b=$$je;J(b);}return c;},Fr5=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,n;Hz();Ej();d=Ho(4,G9);e=new FB;CJ(e);f=Buy();g=(-1);h=1.0E38;i=0;j=g;while(i{let d,e,f,g,h,i,$$je;Hz();Bf();try{d=BOG();B0s(c,XN(c,b.cJ8,0.75,0.01));BQ5(c,XN(c,b.c0g,0.5,0.02));EGy(c,EUj(b,ADS(c,b.cV3,Co(E(4875))),c));e=RS(c,b.cD7);d.bYn=XN(c,b.c1J,14.0,1.0);d.bSA=ADS(c,b.cMj,Co(E(5119)));d.bXn=ADS(c,b.cP6,Co(E(443)));f=!Bbj(b,e)?0:2;g=Fcs(c);AJf();h=g!==A08?0:4;B4p(c,ASn(b,c,e,f|h,d.bYn, +d.bSA,d.bXn));e=b.c0x;if(e!==null){e=RS(c,e);if(e!==null&&Dn(e,0)){I(E(5906));I(E(5907));I(E(5908));}}EM2(c,RN(c,b.cSC,0,0));e=(JW(c)).bQu.ci1;i=K(F,1);i.data[0]=c;e.a5e(b,i);}catch($$e){$$je=P($$e);b=$$je;J(b);}},CVW=(b,c,d)=>{let $$je;Hz();Bf();try{d.bYn=XN(c,b.cLq,14.0,1.0);d.bSA=ADS(c,b.cZ4,Co(E(5119)));d.bXn=ADS(c,b.cPr,Co(E(443)));}catch($$e){$$je=P($$e);b=$$je;J(b);}},CUF=(b,c,d,e)=>{let $$je;Hz();Bf();try{if(d.bSA===null)CVW(b,c,d);e.bYn=XN(c,b.cYA,d.bYn,1.0);e.bSA=ADS(c,b.cNj,d.bSA);e.bXn=ADS(c,b.cQN, +d.bXn);}catch($$e){$$je=P($$e);b=$$je;J(b);}},CwS=(b,c)=>{let d,e,$$je;Hz();Bf();try{d=0;if(c!==null){e=RS(b,c);d=!(e!==null&&Dn(e,0))?0:S6(e)?0:1;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},CZf=(b,c,d,e)=>{let f,g,h,$$je;Hz();Bf();a:{b:{try{f=Vw();g=null;if(e!==null)g=DgQ(e,58);if(g!==null){I(E(5909));I(E(5910));I(E(5911));I(E(5912));}else{h=BB(F,[d,e,null]);AKQ(f,c.a5e(b,h));}f.bUX=e;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return AXY(f);},ESH=(b,c)=>{let d,e,f,g,h,i,$$je;Hz();Bf();try{d +=0;e=BOG();f=BOG();g=H9(Cg(c));e.bSA=null;f.bSA=null;h=b.cP0;if(h!==null){h=RS(c,h);if(h!==null&&Dn(h,0)){d=1;CVW(b,c,e);Cq3(c,ASn(b,c,h,!Bbj(b,h)?0:2,e.bYn,e.bSA,e.bXn));BlH(g,QJ(g)|1);EAA(c,S6(Zy(c,b.c1$,Co(E(12)))));}}h=b.cQO;if(h!==null){h=RS(c,h);if(h!==null&&Dn(h,0)){I(E(5913));I(E(5914));I(E(5915));I(E(5907));I(E(5916));}}h=b.cH_;if(h!==null){h=RS(c,h);if(h!==null&&Dn(h,0)){CUF(b,c,e,f);E7H(c,ASn(b,c,h,!Bbj(b,h)?0:2,f.bYn,f.bSA,f.bXn));BlH(g,QJ(g)|2);}}h=b.cBL;if(h!==null){h=RS(c,h);if(h!==null&&Dn(h, +0)){CUF(b,c,e,f);FoO(c,ASn(b,c,h,!Bbj(b,h)?0:2,f.bYn,f.bSA,f.bXn));BlH(g,QJ(g)|4);}}BX();i=GY(b,c,CEH);if(i===null)i=Co(E(14));if(Dn(i,0))C9e(Cg(c),1);AQi(c,CZf(b,(JW(Cg(c))).bQu.cfq,Cg(c),i));if(CwS(c,b.c6j))I(E(5917));h=GY(b,c,CmJ);if(h===null)h=Co(E(14));if(Dn(h,0))C9e(BZ(c),1);A6w(c,CZf(b,(JW(BZ(c))).bQu.cfq,BZ(c),h));if(CwS(c,b.c2d))I(E(5918));}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},El3=(b,c,d)=>{let e,f,g,h,i,j,$$je;Hz();b=PK(b);Bf();a:{b:{try{e=EG();Cd(e,c.bJJ);if(!d){c=c.bHT;f=c.bGH;g=c.bGG;} +else{c=c.bHT;g=c.bGH;f=c.bGG;}h=e.bGH;i=f/2.0;f=h-i;i=h+i;c=b.bGT;if(fj.bGH)j.bGH=i;i=e.bGG;f=g/2.0;g=i-f;i=i+f;if(gj.bGG)j.bGG=i;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return PK(b);},BUk=(b,c)=>{let $$je;Hz();Bf();try{FM(JA(b),El3(JA(b),c,KL(b)));}catch($$e){$$je=P($$e);b=$$je;J(b);}},D5w=(b,c)=>{let $$je;Hz();Bf();a:{b:{try{if(b===null)break b;b=BBp(b);}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}try{I(E(5919));I(E(5253));I(E(5920));I(E(5921));I(E(5922));I(E(5923));I(E(5924));I(E(5925));I(E(5926));I(E(5927));I(E(5928));I(E(5929));I(E(5930));I(E(5931));I(E(5932));I(E(5933));I(E(5035));I(E(5934));I(E(5935));I(E(5936));I(E(5937));I(E(5938));I(E(5939));I(E(5940));I(E(5941));I(E(5942));I(E(5943));I(E(5944));I(E(5945));I(E(5946));I(E(5947));I(E(5948));I(E(5949));I(E(5950));I(E(5951));I(E(5952));I(E(5953));I(E(5954));I(E(5822));I(E(5955));I(E(5658));I(E(5956));I(E(5957));I(E(5958));I(E(5959));I(E(5960));I(E(5961));I(E(5962));I(E(5963));I(E(5964));I(E(5965));I(E(5573));I(E(5966));I(E(5967));I(E(5968));I(E(5965));I(E(5573));I(E(5573));I(E(5658));I(E(5969));I(E(5970));I(E(5971));I(E(5972));I(E(5973));I(E(5821));I(E(5974));I(E(5975));I(E(5976));I(E(5977));I(E(5978));I(E(5979));I(E(5980));I(E(5981));I(E(5982));I(E(5035));I(E(5983));I(E(5984));I(E(5985));I(E(5037));J(Gw());} +catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);},ENn=(b,c)=>{let $$je;Hz();Bf();try{I(E(5986));I(E(5253));I(E(5987));I(E(5988));I(E(5989));I(E(5990));I(E(5991));I(E(5992));I(E(5138));I(E(5993));I(E(5994));I(E(5995));I(E(5996));I(E(5997));I(E(5998));I(E(5999));I(E(6000));I(E(6001));I(E(6002));I(E(5138));I(E(6003));I(E(6004));I(E(6005));I(E(6006));I(E(6007));I(E(6008));I(E(5138));I(E(6009));I(E(6010));I(E(6011));I(E(6012));I(E(5138));I(E(6013));I(E(6014));I(E(6015));I(E(6012));I(E(5138));I(E(6016));I(E(6017));I(E(6018));I(E(6019));I(E(5138));I(E(6020));I(E(6021));I(E(6022));I(E(6023));I(E(5138));I(E(6024));I(E(6025));I(E(6026));I(E(6027));I(E(5138));I(E(6028));I(E(6029));I(E(6030));I(E(6031));I(E(5138));I(E(6032));I(E(6033));I(E(6034));I(E(6031));I(E(5138));I(E(6035));I(E(6036));I(E(6037));I(E(6031));I(E(5138));I(E(5035));I(E(6038));I(E(6039));I(E(6040));I(E(5035));I(E(6041));I(E(5037));J(Gw());} +catch($$e){$$je=P($$e);b=$$je;}J(b);},DE2=(b,c,d)=>{let e,$$je;Hz();Bf();try{e=GY(b,c,Co(E(6042)));if(e!==null)d=Dn(e,0)?ENn(e,d):0;Csg(c,ANE(c)|d);}catch($$e){$$je=P($$e);b=$$je;J(b);}},CG8=(b,c)=>{let d,$$je;Hz();Bf();try{if(!c){d=AIe(ALC(b))/2.0;U$(b,d);AHe(b,d);ASN(b,AIe(AOg(b)));}else{d=AIe(AOg(b))/2.0;U$(b,d);AHe(b,d);ASN(b,AIe(ALC(b)));}}catch($$e){$$je=P($$e);b=$$je;J(b);}},DJb=()=>{Ce_=0;}; +function Cdn(){let a=this;CA.call(a);a.cU5=0.0;a.cNy=0.0;a.ddu=null;a.cUS=null;a.c56=null;a.ded=0;a.cxD=0;a.daP=0;a.cF1=null;a.ddE=null;a.c9g=null;} +let Fiy=a=>{let b;CJ(a);b=new FB;CJ(b);a.ddu=b;b=new FB;CJ(b);a.cUS=b;b=new FB;CJ(b);a.c56=b;AWj();a.cF1=A_n;},D8B=()=>{let a=new Cdn();Fiy(a);return a;},FpP=N(),BIu=(b,c,d,e,f)=>{let g,h,i,j,k,$$je;Bf();try{g=EG();h=(d.cfT+1|0)+1|0;i=d.c2$;Ej();c=UX(h,i,BtW);d.c2$=c;j=Y(c,d.cfT);j.c9l=e;j.dcL=f;b=b.cMT;b.c8h=d.cHL;k=d.cwj;b.dcc=k;g.bGH=0.0;g.bGG=k*1.2|0;EE2(g,AG7(e));b=AG7(e);c=BY(g);e=CR();H(H(H(H(e,E(6043)),b),E(6044)),c);NS(CH(e));j.cZ5.bGG=g.bGG|0;d.cfT=d.cfT+1|0;b=d.bHT;b.bGH=BC(b.bGH,g.bGH);b=d.bHT;b.bGG +=b.bGG+g.bGG;b=BY(d);c=CR();H(H(c,E(6045)),b);NS(CH(c));}catch($$e){$$je=P($$e);b=$$je;J(b);}},DO5=(b,c,d)=>{let e,f,g,h,i,$$je;Bf();a:{b:{c:{try{e=d.bSb;f=d.bHT;f.bGG=0.0;f.bGH=0.0;if(Dn(e,0))break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}try{g=BZr(O4(e)+1|0);O_(g,0,0);f=g;while(true){h=Dn(e,0);if(!h)break;e=GL(e,1);if(d.cFw==2&&161<=h&&h<=254){I(E(6046));I(E(6047));I(E(6046));I(E(6048));I(E(5219));continue;}if(h!=92){if(h!=10){O_(f,0,h);f=GL(f,1);continue;}O_(f,0,0);i=GL(f,1);BIu(b,c,d,g,110);f=i;g +=i;continue;}d:{e:{switch(Dn(e,0)){case 108:case 110:case 114:break e;default:}O_(f,0,Dn(e,0));f=GL(f,1);i=g;break d;}O_(f,0,0);i=GL(f,1);BIu(b,c,d,g,Dn(e,0));f=i;}if(!Dn(e,0)){g=i;continue;}e=GL(e,1);g=i;}if(!A88(g,f)){O_(f,0,0);GL(f,1);BIu(b,c,d,g,110);}Cd(d.bZV,d.bHT);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}},ASn=(b,c,d,e,f,g,h)=>{let i,j,k,$$je;Bf();try{a:{b:{c:{d:{i=D_g();j=null;k=null;switch(BQ6(c)){case 0:break d;case 1:break c;case 2:break b;default:}break a;}j=c.b2Z;break a;}j=Hd(H9(c));break a;}j +=Hd(H9(BZ(c)));}i.cHL=g;i.cSn=h;i.cwj=f;i.cFw=Duh(j);if(e&4){i.bSb=Bfd(d);if(e&2)i.bZw=1;}else if(e!=2){e:{f:{c=DJQ(b,d,c,0);i.bSb=c;switch(i.cFw){case 1:break f;default:}k=D5w(c,j);break e;}I(E(6049));}Gq(i.bSb);i.bSb=k;DO5(b,Fge(j),i);}else{i.bSb=Bfd(d);i.bZw=1;if(DF_(c,i))g:{h:{i:{switch(BQ6(c)){case 0:break;case 1:break i;case 2:break h;default:break g;}I(E(6050));break g;}I(E(6051));break g;}I(E(6052));}}}catch($$e){$$je=P($$e);b=$$je;J(b);}return i;},DJQ=(b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u, +$$je;Bf();try{a:{b:{c:{d:{Me(new H2,E(14));Me(new H2,E(14));Me(new H2,E(6053));f=Co(E(4880));Me(new H2,E(391));Me(new H2,E(6054));Me(new H2,E(6055));Me(new H2,E(6056));g=2;h=2;i=2;j=2;k=2;l=2;m=0;n=0;o=0;p=Vw();switch(BQ6(d)){case 0:break d;case 1:break c;case 2:break b;default:}break a;}d=d;g=O4(ABl(b,d));q=Km(d);if(q===null)break a;b=q.bSb;if(c===null)break a;l=O4(b);break a;}g=O4(ABl(b,H9(d)));f=ABl(b,d);h=O4(f);q=J8(d);if(q===null)break a;b=q.bSb;if(c===null)break a;l=O4(b);break a;}r=d;g=O4(ABl(b,Hd(H9(Bl9(r)))));k +=O4(ABl(b,Bl9(r)));AKQ(p,E7(r));q=p.bUX;if(q!==null)m=O4(q);d=ABl(b,BZ(d));O4(d);AKQ(p,E5(r));b=p.bUX;if(b!==null)n=O4(b);j=O4(d);q=DW(r);if(q!==null){b=q.bSb;if(c!==null)l=O4(b);}if(!BGS(Hd(H9(Bl9(r)))))Me(new H2,E(658));else Me(new H2,E(3037));i=(((k+(!m?0:m+1|0)|0)+2|0)+j|0)+(!n?0:n+1|0)|0;}r=c;e:while(true){s=Dn(r,0);r=GL(r,1);if(!s)break;if(s!=92){o=o+1|0;continue;}f:{g:{h:{i:{j:{k:{l:{m:{s=Dn(r,0);r=GL(r,1);switch(s){case 69:break;case 70:case 73:case 74:case 75:case 77:case 79:case 80:case 81:case 82:case 83:case 85:case 86:case 87:case 88:case 89:case 90:case 91:break g;case 71:break m;case 72:break l;case 76:break k;case 78:break j;case 84:break i;case 92:break h;default:break g;}o +=o+i|0;continue e;}o=o+g|0;continue e;}o=o+j|0;continue e;}o=o+l|0;continue e;}o=o+h|0;continue e;}o=o+k|0;continue e;}if(e)break f;}o=o+2|0;continue e;}o=o+1|0;}t=BZr(o+1|0);b=t;n:while(true){e=Dn(c,0);c=GL(c,1);if(!e)break;if(e!=92){O_(b,0,e);b=GL(b,1);continue;}o:{p:{q:{r:{s:{t:{u:{s=Dn(c,0);c=GL(c,1);switch(s){case 69:break;case 70:case 73:case 74:case 75:case 77:case 79:case 80:case 81:case 82:case 83:case 85:case 86:case 87:case 88:case 89:case 90:case 91:break p;case 71:break u;case 72:break t;case 76:break s;case 78:break o;case 84:break r;case 92:break q;default:break p;}I(E(6057));continue n;}I(E(6058));continue n;}I(E(6059));continue n;}I(E(6060));continue n;}I(E(6061));continue n;}I(E(6062));}O_(b, +0,92);b=GL(b,1);O_(b,0,s);b=GL(b,1);continue n;}u=f;while(true){O_(b,0,Dn(u,0));u=GL(u,1);if(!Dn(b,0))break;b=GL(b,1);}}O_(b,0,0);GL(b,1);}catch($$e){$$je=P($$e);b=$$je;J(b);}return t;},ElC=(b,c)=>{let $$je;Bf();try{I(E(6063));I(E(5253));I(E(6064));I(E(5037));J(Gw());}catch($$e){$$je=P($$e);b=$$je;}J(b);}; +function B0h(){let a=this;Wi.call(a);a.cL7=null;a.c4w=null;a.cCb=null;a.cKE=null;a.c4a=0;a.cWI=0;a.cw2=0;a.cSR=0.0;a.cSS=0.0;a.cRQ=0;a.cTh=null;a.c00=null;a.c4T=0;a.cQW=null;a.cTU=null;a.cUc=null;a.cQt=null;a.cW0=null;a.cX$=null;a.c9C=null;a.ddV=null;a.c5o=0;a.cVA=0;a.cRR=0;a.cWT=0;a.c9t=0;a.db4=0;a.cKX=0;a.cKy=0;a.cXK=null;a.cXL=null;a.c2u=null;a.c0w=null;a.c21=0;a.cNp=0;a.dcs=0;a.cS9=0;a.cYu=0;} +let E8T=N(),B9k=(b,c)=>{let d,$$je;Bf();try{d=c===null?ARE(Fd5(b)):ARE(EjN(c));if(Bur(d)===null){BYl(d,ABB(b,c,b.cEO,b.bUg));b.cTE=(-2147483648);b.cUH=2147483647;}b=Bur(d);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},B3s=(b,c,d)=>{let e,f,$$je;Bf();try{e=CIk();CUC(e,d);f=A1u(b,c,e);}catch($$e){$$je=P($$e);b=$$je;J(b);}return f;},DLr=(b,c,d)=>{let e,$$je;Bf();a:{b:{try{e=B3s(b,c,d);if(e!==null)break b;b=null;}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}try{b=e.b69;}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}J(b);},FmQ +=(b,c,d)=>{let $$je;Bf();try{b=DLr(b,B9k(b,c),d);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},ABs=(b,c,d)=>{let e,f,$$je;Bf();a:{b:{c:{try{if(d!==null)break c;b=null;}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}d:{try{e=B9k(b,c);f=B3s(b,e,d);if(f!==null){f.b7b=f.b7b+1|0;break d;}f=CIk();f.b7b=1;CUC(f,BBp(d));Bed(b,e,f);break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{b=f.b69;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return b;},BLC=(b,c,d)=>{let e,f,g,$$je;Bf();a:{b:{c:{try{if(d!==null)break c;} +catch($$e){$$je=P($$e);b=$$je;break b;}return (-1);}d:{try{e=B9k(b,c);f=B3s(b,e,d);if(f===null)break d;if(!A88(f.b69,d))break d;g=f.b7b-1|0;f.b7b=g;if(!(g&&b.cUH)?0:1)break d;D2T(b,c,e,f);break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}e:{try{if(f===null)break e;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return (-1);},Bbj=(b,c)=>{let d,$$je;Bf();a:{b:{c:{try{if(c!==null)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}try{d=(E52(c)).b7b +&b.cTE;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return d;}; +function Cqu(){let a=this;F.call(a);a.b0_=null;a.cJe=null;} +let EXP=a=>{let b,c,d,e;b=new S;T(b);L(b,E(842));c=a.b0_.data;d=c.length;e=0;while(e{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;f=b.cgN;g=f.data;h=b.cP9;i=h.data;g[0]=0;i[0]=AB4(b,c,d,0,e);g[1]=e;i[1]=(-1);j=1;B$(b);if(e>=10){k=0;l=0;a:{b:{c:{while(j<15){m=k+1|0;if((e-m|0)<1024){n=2147483647;o=m;p=m;while(pp)break e;if(q)t=r.data[q-1|0];if(q!=8)u=r.data[q+1|0];o=r.data[q];p=z;}break d;}}}p=AB4(b,c,d,k,o);u=AB4(b,c,d,o,e);if(!((p+u|0)<=i[l]&&o!=m&&o!=e))i[l]=(-1);else{i[l]=p;j=j+1|0;l=l+1|0;n=l+1|0;p=j-l|0;Di(f,l,f,n,p);Di(h,l,h,n,p);g[l]=o;i[l]=u;}q=0;z=0;v=0;while(v +q){z=1;k=w;e=t;q=n;l=v;}}v=m;}if(!z)break b;if((e-k|0)<10)break c;}break a;}break a;}}return j;}return j;},D4j=N(),Dcb=(b,c,d,e,f,g)=>{let h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc;h=b.cgQ;BuO(h);i=b.cPb;CAF(b,d,e,f,g,h);j=b.c6C;k=b.cXm;l=b.cPq;CXw(j,h);m=b.cf6;n=b.czR;o=2147483647;p=0;q=(-1);r=0;while(r5&&u==p){B2Z(j,k);q=b.cx5;s=j.bVJ.data;x=s.length;bb=0;while(bb>>4|0)%3|0)){q +=2147483647&(Ev(1103515245,q)+12345|0);bc=q%x|0;if(s[bb]>>4|0)%3|0)){q=2147483647&(Ev(1103515245,q)+12345|0);bb=q%bc|0;if(s[x]{let i,j,k,l,m,n,o,p,q,r,s;i=b.cUX;j=0;k=f-e|0;while(true){l=i.data;m=g.data[k];n=j+1|0;l[j]=m;k=k-m|0;if(!k)break;j=n;}o=DT(e-32768|0,0);p=b.b$F;Bm4(p,d,o,e,f);q=e;while +(true){ADL(p,d,q,f);n=n+(-1)|0;r=l[n];if(r>=3){Bry(b,c,e,p,d,q,f,r,null);AXk(h,r&65535,b.b62&65535);}else{g=d.data;r=1;AXk(h,g[q]&255&65535,0);}s=1;while(s{let d;if(c){if(c<4097){Ol();c=Bde.data[c];}else c=c>=16385?13:c>=8193?12:11;c=12+c|0;Ol();d=V(c+AQZ.data[b]|0);if(AEL.data[b]>279)return BU(d,V(1));return d;}if(b<=143)return V(8);return V(9);},EXY=(b,c,d,e,f,g,h,i,j,k)=>{let l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,bd;l=k.data;m=j.data;n=DT(f +-32768|0,0);o=b.b$F;Bm4(o,e,n,f,g);DnC(k,(g-f|0)+1|0);l[0]=BH;m[0]=0;p=o.b38;q=b.cfQ;Di(Bgz,0,q,0,259);r=i.cde;s=i.b61.data;t=i.b3y.data;u=BU(s[258],t[0]);Ol();v=ASt;w=0;n=f+259|0;while(f=g)x=f;else if(j[(f-258|0)&32767]<=258)x=f;else{y=0;while(y<258){z=w+258|0;l[z]=BU(l[w],u);m[z]=258;f=f+1|0;w=w+1|0;ADL(o,e,f,g);y=y+1|0;}x=f;}Bry(b,c,d,o,e,x,g,258,q);ba=l[w];f=x+1|0;if(f<=g){j=e.data;bb=BU(ba,r.data[j[x]&255]);z=w+1|0;if(GR(bb, +l[z])){l[z]=bb;m[z]=1;}}z=b.bUY;bc=BU(h,ba);y=g-x|0;if(z<=y)y=z;x=w+3|0;bd=3;while(bd<=y){if(G5(l[x],bc)){k=q.data;j=v.data;bb=BU(ba,BU(s[bd],t[j[k[bd]]]));if(G5(l[x],bb)){l[x]=bb;m[x]=bd;}}bd=(bd+1|0)&65535;x=x+1|0;}w=w+1|0;}},Eim=(b,c,d,e,f,g,h)=>{let i,j,k,l,m,n,o,p,q,r,s,t,u,v;i=h.data;j=g.data;k=DT(e-32768|0,0);l=b.b$F;Bm4(l,d,k,e,f);DnC(h,(f-e|0)+1|0);i[0]=BH;j[0]=0;m=b.cfQ;n=(e+258|0)+1|0;o=e;while(o= +f)q=o;else if(g[(o-258|0)&32767]<=258)q=o;else{r=BX9(258,1);q=0;while(q<258){k=p+258|0;i[k]=BU(i[p],r);j[k]=258;o=o+1|0;p=p+1|0;ADL(l,d,o,f);q=q+1|0;}q=o;}Bry(b,c,e,l,d,q,f,258,m);o=q+1|0;if(o<=f){g=d.data;s=BU(i[p],BX9(g[q]&255,0));k=p+1|0;if(GR(s,i[k])){i[k]=s;j[k]=1;}}t=b.bUY;u=3;while(u<=t&&(q+u|0)<=f){v=p+u|0;if(!(Id(CE(i[v],i[p]))<=12.0)){g=m.data;s=BU(i[p],BX9(u,g[u]));if(GR(s,i[v])){i[v]=s;j[v]=u;}}u=(u+1|0)&65535;}}},BaP=N(Bx),A4V=null,A2o=null,DDs=null,AQv=()=>{AQv=Z(BaP);D51();},EA1=(a,b,c)=>{AQv();Ct(a, +b,c);},Dl4=(a,b)=>{let c=new BaP();EA1(c,a,b);return c;},D51=()=>{let b,c,d;A4V=Dl4(E(6065),0);b=Dl4(E(6066),1);A2o=b;c=K(BaP,2);d=c.data;d[0]=A4V;d[1]=b;DDs=c;},C8z=N(),D42=(a,b)=>{return I6(b.bKL.ZH())?0:1;},C8A=N(),FlI=(a,b)=>{return I6(b.bKL.ZG())?0:1;},BQ4=N(),C7E=0,Byh=()=>{Byh=Z(BQ4);Fga();},B2t=(a,b)=>{let c;a:{if(Df()){Byh();if(!C7E){if(b<0)break a;if(b>15)break a;}}return (b*16|0)+b|0;}c=new C4;X(c);J(c);},Fga=()=>{C7E=0;}; +function Ddi(){let a=this;F.call(a);a.c7b=null;a.dc7=0;} +let DVl=b=>{let c,d,e;c=b.data;d=new Ddi;e=c.length;d.c7b=b;d.dc7=e;return d;},DSU=(a,b)=>{return a.c7b.data[b];}; +function Bbw(){let a=this;F.call(a);a.bZ2=null;a.cD0=0;a.cJv=null;} +let Beh=null,Blx=()=>{Blx=Z(Bbw);Dv5();},DrY=a=>{Blx();},Fr6=()=>{let a=new Bbw();DrY(a);return a;},EiL=a=>{return null;},DbI=a=>{let b,c,d,e,f,g;if(!C1_()){a:{b=(R4()).cKC;Csa(a);c=a.bZ2;BPY(c);if(b===null){c=c.bRo.data[0];b:{while(c!==null){if(c.cg3)break b;c=c.bRL;}c=null;break a;}c=c.b_c;}else{d=b.dp()&2147483647;e=c.bRo.data;c=e[d%e.length|0];c:{while(c!==null){if(b.cx(DfN(c)))break c;c=c.bRL;}c=null;break a;}c=c.b_c;}}if(c===null){c=a.bdn();f=a.bZ2;g=c!==null?c:Beh;B$7(f,b,g);}else if(c===Beh)c=null;BoW(a);return c;}if +(!a.cD0){a.cJv=a.bdn();a.cD0=1;}BoW(a);return a.cJv;},EmB=(a,b)=>{let c,d;if(C1_()){a.cD0=1;a.cJv=b;BoW(a);}else{Csa(a);c=a.bZ2;d=(R4()).cKC;if(b===null)b=Beh;B$7(c,d,b);BoW(a);}},Csa=a=>{let b;if(a.bZ2===null){b=new Cqo;b.b4I=0;b.bRo=K(BjE,16);b.cYP=7500;Dc_(b);b.cs5=EF_();a.bZ2=b;}},BoW=a=>{let b;b=a.bZ2;if(b!==null){b=b;BPY(b);if(b.b4I?0:1)a.bZ2=null;}},C1_=()=>{Blx();return R4()!==Cx4?0:1;},Dv5=()=>{Beh=new F;}; +function Ck2(){ASs.call(this);this.cHD=0;} +let Fkg=(a,b)=>{let c,d;B1c(a);a.cHD=0;b=CfE(a,15,b);if(b){c=new A$n;d=new S;T(d);BE(d,b);L(d,E(7));L(d,a.bIj);Bp(c,Q(d));J(c);}},Ftu=a=>{let b=new Ck2();Fkg(b,a);return b;},CfE=(a,b,c)=>{let d,e,f;a.cHD=0;d=new BUn;BPy();d.cHB=V(-1);d.b0W=(-1);d.cuA=BD(4);d.bMZ=null;d.bO0=null;d.bIm=a;a.cRn=d;if(c)b= -b|0;a.bIj=null;d.chk=null;d.bQ0=0;if(b<0)b= -b|0;else if(b&1073741824){d.bQ0=4;b=b&(-1073741825);if(b<48)b=b&15;}else if(b&(-32)){d.bQ0=4;b=b&15;}else{d.bQ0=(b>>4)+1|0;if(b<48)b=b&15;}if(!(b>=8&&b<=15))b=(-2);else +{d.cVB=b;e=new BZp;c=1<{B6M=Z(BVD);FmW();},FmW +=()=>{Ekz=A1A();},A1f=N(0),Ce1=N(),C10=N(),C0v=N(),Bh1=N(),Cka=N(),AZ8=N(); +function CJy(){AZ8.call(this);this.dbs=null;} +function CZr(){AZ8.call(this);this.c8Z=null;} +let DqL=N(),CUu=N(),BVd=null,Bqy=()=>{Bqy=Z(CUu);DWv();},DWv=()=>{let b,c,d;b=K(Ib(BEs),255);c=b.data;c[0]=IU([120,120,120,120,120,120,120,120,120,0,0,0,0,0,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,0,120,120,0,44,57,89,89,(-114),107,31,53,53,62,94,44,53,44,44,89,89,89,89,89,89,89,89,89,89,44,44,94,94,94,89,(-93),107,107,116,116,107,98,124,116,44,80,107,89,(-123),116,124,107,124,116,107,98,116,107,(-105),107,107,98,44,44,44,75,89,53,89,89,80,89,89,44,89,89,36,36,80,36,(-123),89,89,89,89,53, +80,44,89,80,116,80,80,80,53,42,53,94,80,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,44,53,89,89,89,89,42,89,53,118,59,89,94,0,118,88,64,88,53,53,53,92,86,53,53,53,58,89,(-122),(-122),(-122),98,107,107,107,107,107,107,(-96),116,107,107,107,107,44,44,44,44,116,116,124,124,124,124,124,94,124,116,116,116,116,107,107,98,89,89,89,89,89,89,(-114),80,89,89,89,89,44,44,44,44,89,89,89,89,89,89,89,88,98,89,89,89,89,80,89,80]);c[1]=IU([107, +89,107,89,107,89,116,80,116,80,116,80,116,80,116,98,116,89,107,89,107,89,107,89,107,89,107,89,124,89,124,89,124,89,124,89,116,89,116,89,44,44,44,44,44,44,44,36,44,44,118,71,80,36,107,80,80,89,36,89,36,89,47,89,53,89,36,116,89,116,89,116,89,97,116,89,124,89,124,89,124,89,(-96),(-105),116,53,116,53,116,53,107,80,107,80,107,80,107,80,98,44,98,60,98,44,116,89,116,89,116,89,116,89,116,89,116,89,(-105),116,107,80,107,98,80,98,80,98,80,36,89,121,105,89,105,89,116,116,80,116,(-126),105,89,89,107,121,97,98,89,124,100, +(-115),36,44,107,80,36,80,(-113),116,89,124,(-119),105,(-117),107,121,89,107,107,80,99,61,44,98,44,98,(-119),107,120,116,124,80,98,80,98,98,87,87,89,89,73,78,89,42,66,94,44,(-43),(-60),(-88),(-86),(-123),72,(-60),(-105),123,107,89,44,36,124,89,116,89,116,89,116,89,116,89,116,89,89,107,89,107,89,(-96),(-114),124,89,124,89,107,80,124,89,124,89,98,87,36,(-43),(-60),(-88),124,89,(-91),99,116,89,107,89,(-96),(-114),124,98]);c[2]=IU([107,89,107,89,107,89,107,89,44,44,44,44,124,89,124,89,116,53,116,53,116,89,116,89, +107,80,98,44,87,70,116,89,113,109,97,91,98,80,107,89,107,89,124,89,124,89,124,89,124,89,107,80,56,110,59,36,(-114),(-114),107,116,80,89,98,80,80,93,73,107,116,107,107,89,80,36,118,89,116,53,107,80,89,89,89,89,80,80,89,89,89,89,118,73,73,101,81,44,89,89,89,80,99,89,89,89,36,36,57,52,49,36,91,(-123),(-123),(-123),89,89,89,89,126,125,88,53,53,53,53,53,53,53,87,87,80,36,42,36,56,44,44,89,91,88,80,116,80,83,80,87,87,87,80,80,80,80,124,85,81,89,88,64,80,65,89,80,80,(-102),(-111),(-95),114,69,115,122,106,101,78,84, +110,110,61,61,25,38,38,38,58,77,51,31,57,36,36,36,53,53,56,56,94,94,94,94,53,53,53,53,53,53,53,53,53,53,44,44,53,53,53,53,53,53,53,53,53,53,53,53,0,53,52,25,54,53,56,61,61,61,61,61,53,53,53,53,53,53,53,53,53,53,53,53,53,53,44,53,53,53,53,64,64,53]);c[3]=IU([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,76,98,73,53,53,115,94,120,120, +53,80,80,80,44,80,120,120,120,120,53,53,107,44,126,(-122),62,120,124,120,(-119),121,36,107,107,88,107,107,98,116,124,44,107,107,(-123),116,104,124,116,107,120,99,98,107,(-128),107,(-122),120,44,107,93,71,89,36,88,93,92,80,89,71,71,89,89,36,80,80,92,80,72,89,111,91,77,99,63,88,104,84,114,125,36,88,89,88,125,107,92,88,124,(-103),124,90,125,96,124,89,116,80,98,65,100,85,121,92,(-113),(-123),108,89,108,80,107,107,98,96,118,89,74,66,96,92,80,36,124,71,71,107,89,116,(-123),110,91,116,116,116]);c[4]=IU([107,107,(-118), +87,115,107,44,44,80,(-87),(-94),(-119),93,115,102,115,107,105,107,87,108,107,(-108),97,115,115,93,105,(-123),116,124,115,107,116,98,102,122,107,118,107,(-109),(-106),127,(-114),105,115,(-94),116,89,92,85,58,93,89,107,73,89,89,70,93,110,88,89,87,89,80,73,80,(-124),80,92,83,(-128),(-124),100,115,83,82,120,87,89,89,89,58,82,80,36,44,36,(-111),(-126),89,70,89,80,88,(-42),100,124,98,(-104),114,107,80,(-112),111,(-123),110,(-87),(-117),97,73,(-128),110,124,89,(-127),101,(-127),101,(-84),(-112),(-123),98,(-65),(-120), +(-42),100,116,80,81,0,0,0,0,0,0,0,115,89,105,83,107,89,78,66,87,58,107,88,(-108),107,97,73,93,70,93,70,93,70,119,86,116,88,(-115),104,(-74),(-117),121,83,116,80,98,73,89,80,89,80,107,80,(-108),111,107,83,107,83,107,89,(-118),107,(-118),107,44,(-108),107,107,88,105,93,116,88,116,88,107,83,(-123),110,36,107,89,107,89,(-96),(-114),107,89,121,89,121,89,(-108),107,97,73,97,87,115,89,115,89,124,89,124,89,124,89,115,82,102,80,102,80,102,80,107,83,87,58,(-114),115,87,58,107,80,107,80]);c[5]=IU([105,89,(-101),(-116), +(-103),(-125),106,81,(-101),(-110),(-91),(-115),124,89,119,106,97,73,105,93,(-102),122,126,115,(-103),(-119),124,89,(-105),116,107,80,(-85),(-115),(-75),(-120),116,87,113,89,116,88,(-43),(-85),107,91,105,93,120,118,116,115,115,116,114,96,116,(-127),115,106,84,(-108),123,111,99,113,115,112,121,115,113,112,116,112,127,118,122,116,112,106,109,108,83,122,110,125,122,120,120,44,36,27,32,43,37,82,(-123),(-123),88,93,93,89,88,79,88,107,93,88,35,(-122),87,89,88,84,89,89,88,35,89,73,88,56,(-123),83,90,88,88,(-123),88, +89,63,(-123),88,89,119,114,35,44,52,(-128),45,(-96),(-96),116,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,0,44,0,0,44,0,0,57,0,120,120,120,120,120,120,120,120,90,87,64,81,96,40,61,96,94,40,81,74,74,96,96,40,57,92,85,91,88,74,77,88,81,111,103,120,120,120,120,79,79,79,79,38,67,120,120,120,120,120,120,120,120,120,120,120]);c[6]=IU([1,(-106),1,(-48),1,70,1,(-52),1,(-48),1,0,2,99,1,121,1,97,1,118,1,42,1,51,1,38,1,105,1,87,11,0,1,51,1,0,1,90,1,46,1,57,1,102,1,66, +2,33,1,69,1,33,1,102,1,33,1,114,1,45,2,114,3,90,2,54,2,78,2,(-125),2,(-80),2,93,2,87,2,(-126),3,102,1,33,1,126,1,93,1,96,1,81,1,54,1,84,1,45,1,69,2,102,21,0,11,84,2,51,1,84,1,114,1,93,1,0,3,33,1,0,1,33,2,69,1,102,8,114,7,90,9,54,9,78,3,(-125),2,(-80),1,93,1,87,6,126,2,93,1,(-126),1,(-71),1,(-126),3,96,6,(-126),4,81,5,84,1,72,1,90,4,45,8,69,3,102,1,69,2,102,2,(-126),1,33,1,45,7,0,1,(-76),1,(-82),6,0,1,31,1,59,2,0,1,96,4,0,1,54,1,78,10,84,1,(-125),1,(-80),1,87,1,66,1,54,1,72]);d=BD(1);d.data[0]=81;c[7]=d;c[8] +=IU([1,(-108),1,124,1,127,1,105,1,(-119),1,(-108),1,(-115),1,(-105),1,(-103),1,(-81),1,118,1,97,1,(-110),1,116,1,123,1,(-112),1,121,1,(-84),1,116,1,114,1,(-121),1,(-106),4,0,1,65,9,0,1,37,3,0,1,40,5,0,2,120,2,58,1,95,2,(-116),1,93,1,107,1,(-46),1,(-84),2,(-86),1,80,1,99,1,(-127),1,68,1,120,1,86,1,(-113),1,76,1,106,1,(-112),1,66,1,40,1,125,1,108,1,71,1,107,1,74,1,(-97),1,94,1,(-97),1,(-119),1,115,1,(-92),1,(-118),1,(-123),1,(-110),1,103,1,122,1,(-75),1,76,3,95,2,120,1,89,65,120,2,114,1,90,1,93,1,126,1,93,1,81, +1,54,2,102,1,74,1,69,1,68,1,27,1,54,1,(-80),1,(-126),1,45,1,78,1,87,1,96,1,120,3,114,1,78,1,102,1,126,1,93,1,84,22,120,14,0,1,77,29,0]);d=BD(1);d.data[0]=114;c[9]=d;d=BD(1);d.data[0]=116;c[10]=d;d=BD(1);d.data[0]=(-120);c[11]=d;d=BD(1);d.data[0]=(-118);c[12]=d;d=BD(1);d.data[0]=(-90);c[13]=d;c[14]=IU([120,95,98,105,99,99,108,79,89,99,100,110,(-118),(-123),99,99,89,(-127),(-116),(-120),99,99,94,115,86,98,101,101,101,101,113,112,99,96,93,69,91,99,99,78,99,119,97,107,114,95,95,85,72,0,78,78,0,0,0,0,0,0,0,120,120, +120,120,94,53,95,79,71,82,78,80,0,0,0,0,0,0,0,0,96,96,101,110,110,117,117,103,124,124,114,111,(-86),120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,110,100,120,103,120,(-105),74,98,101,96,120,102,101,(-117),114,98,(-100),(-92),(-115),102,118,110,111,97,106,105,105,118,118,121,121,123,110,101,99,120,99,120,99,126,120,101,112,94,99,100,73,61,0,68,68,0,0,0,0,0,0,0,0,0,66,120,120,60,114,61,63,49,120,81,120,0,0,0, +0,0,0,0,120,102,102,85,101,97,97,118,107,103,(-127),120,120,(-75),(-75),124,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120]);d=BD(1);d.data[0]=82;c[15]=d;d=BD(1);d.data[0]=116;c[16]=d;d=BD(1);d.data[0]=(-96);c[17]=d;d=BD(1);d.data[0]=121;c[18]=d;d=BD(1);d.data[0]=113;c[19]=d;d=BD(1);d.data[0]=109;c[20]=d;d=BD(1);d.data[0]=113;c[21]=d;d=BD(1);d.data[0]=104;c[22]=d;d=BD(1);d.data[0]=119;c[23]=d;d=BD(1);d.data[0]=80;c[24]=d;d= +BD(1);d.data[0]=111;c[25]=d;d=BD(1);d.data[0]=95;c[26]=d;d=BD(1);d.data[0]=(-115);c[27]=d;d=BD(1);d.data[0]=103;c[28]=d;d=BD(1);d.data[0]=54;c[29]=d;d=BD(1);d.data[0]=97;c[30]=d;d=BD(1);d.data[0]=105;c[31]=d;c[32]=IU([80,(-96),80,(-96),53,40,27,89,44,32,13,0,0,0,0,0,53,53,89,89,(-96),(-96),66,88,36,36,36,36,53,53,53,53,89,89,56,56,53,107,(-96),40,44,44,0,0,0,0,0,32,(-96),(-44),30,57,57,35,67,67,50,53,53,(-96),80,89,53,(-103),(-103),52,(-106),53,27,53,53,(-120),108,107,78,73,73,73,80,44,(-103),80,80,87,(-103), +80,80,89,99,102,44,(-115),102,44,44,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,27,120,120,53,53,53,53,53,53,54,54,54,32,32,58,48,48,48,48,48,48,48,48,48,48,54,54,54,32,32,120,60,59,61,53,59,48,48,27,75,48,48,37,27,120,120,120,89,116,116,89,89,(-123),116,(-81),(-70),(-105),(-125),82,89,107,98,(-96),83,107,124,107,89,116,89,107,98,89,89,(-123),126,89,127,107,89,89,120,120,120,120,120,120,120,120,120,120,120,120,120,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120]);c[33]=IU([(-123),(-126),107,(-92),98,(-114),(-115),80,107,(-110),82,(-111),(-98),116,80,80,110,89,113,52,124,116,(-84),118,119,89,116,(-108),127,107,107,107,(-111),(-64),(-96),116,98,71,123,119,112,43,107,107,(-108),103,96,62,99,110,89,(-77),65,95,90,66,83,52,(-110),(-67),88,71,93,116,114,124,89,89,107,116,80,71,44,44,102,124,124,(-105),78,(-88),120,120,(-94),(-122),(-122),120,120,120,120,120,120,(-122),(-122),(-122),(-122),74,53,104,(-102),(-88),116,(-88),(-38),12,(-87),116,(-88), +(-38),98,107,116,(-114),44,84,123,118,80,122,(-95),(-55),123,80,121,(-95),44,71,80,124,(-76),116,(-76),107,80,117,110,116,(-76),120,80,80,120,120,120,120,(-96),80,(-96),80,(-96),80,117,117,117,117,(-96),(-96),(-114),(-114),(-106),78,(-106),78,(-118),(-118),(-116),75,(-116),75,80,(-118),(-118),(-113),(-113),(-65),(-96),93,91,91,91,91,102,91,(-127),(-127),106,(-111),125,125,(-122),(-122),69,69,(-122),(-122),69,69,(-122),126,(-122),(-122),(-128),(-122),(-128),(-122),(-122),(-116),(-83),(-116),(-117),94,(-117), +94,(-90),94,117,117,117,117,(-114),(-114),(-99),(-99),78,78,(-115),75,(-115),75,(-118),(-118),(-118),95,(-118),95,95,98,98,98,98,99,(-114),124,124,98,(-105),126,(-118),(-122),(-122),(-104),(-114),(-114),(-96),(-113),(-113),(-85)]);c[34]=IU([101,84,79,94,97,101,98,95,100,103,89,100,100,89,125,(-124),(-126),114,94,120,120,27,89,77,71,44,88,102,102,113,114,(-99),105,105,108,47,60,74,87,94,94,115,109,44,(-108),(-54),96,(-104),(-50),101,101,104,92,92,49,95,116,(-106),124,118,114,118,(-127),110,59,114,120,120,120, +120,120,120,88,88,120,118,120,119,120,120,120,120,120,120,(-106),(-106),120,120,120,120,120,120,120,(-122),120,120,88,93,93,120,88,88,120,120,120,120,(-113),(-113),77,120,94,94,88,88,120,120,120,120,120,120,120,120,117,117,117,117,118,118,117,117,120,120,120,120,120,120,120,120,120,120,97,97,97,120,120,120,120,114,114,(-97),(-97),(-97),(-97),(-97),(-97),(-97),(-97),(-97),(-100),(-100),(-100),(-100),108,106,106,106,83,83,115,121,(-114),(-111),115,115,(-126),(-111),89,89,116,116,116,116,(-92),(-92),(-111),116, +65,94,94,94,111,112,106,106,123,123,72,45,83,92,(-123),121,121,114,114,116,94,94,115,115,122,122,110,104,120,120,(-58),(-58),120,120,120,120,117,117,117,117,120,120,120,120,120,120,118,118,118,118,120,121,50,(-119),99,99,117,100,89,100,100,89,100,100,117,100,89,101,89,117]);d=BD(1);d.data[0]=(-126);c[35]=d;c[36]=IU([11,(-96),1,(-114),23,(-96),1,51,1,(-96),1,(-128),1,72,25,120,11,80,21,120,98,(-96),1,(-118),60,(-96),1,(-43)]);c[37]=IU([1,113,1,(-96),1,100,9,(-96),1,113,3,(-96),1,113,3,(-96),1,113,3,(-96),1,113, +3,(-96),1,113,7,(-96),1,113,7,(-96),1,113,7,(-96),1,113,7,(-96),1,113,19,(-96),29,113,19,(-96),1,113,1,123,2,(-96),1,113,3,(-96),1,113,3,(-96),1,113,3,(-96),3,113,1,117,2,(-96),10,123,2,97,8,(-122),2,57,1,(-96),5,(-101),1,(-98),3,(-122),1,(-118),3,(-122),1,(-98),1,(-122),1,(-98),3,(-122),1,(-118),3,(-122),1,(-98),5,(-122),1,79,1,97,1,95,2,(-122),1,97,8,(-122),2,97,12,(-122),1,57,8,(-122),1,(-82),11,(-122),2,(-118),2,(-36),1,(-122)]);c[38]=IU([(-121),(-117),123,113,(-110),(-123),(-123),79,125,(-121),122,122, +81,105,(-96),(-96),(-118),(-118),(-118),114,(-36),(-36),121,121,(-128),(-111),(-120),(-120),(-120),(-36),(-120),80,(-96),116,(-125),(-112),77,82,98,97,98,(-119),(-118),121,121,122,(-118),(-118),(-112),(-112),(-112),(-112),(-112),(-112),(-112),(-112),(-118),(-96),(-93),(-88),(-109),91,91,88,120,88,120,123,86,114,(-124),90,(-36),(-36),(-36),(-36),(-36),(-36),(-36),(-36),(-36),(-36),(-36),(-36),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),85,110,110,105,110,95,82,110,(-118),63,80,120, +(-111),72,66,80,98,98,(-113),(-115),(-115),(-115),(-115),(-115),(-115),(-115),(-115),(-115),(-125),(-125),(-125),(-36),121,121,121,121,121,121,(-121),(-121),(-121),(-121),(-112),(-112),(-112),(-112),(-112),(-112),115,115,124,(-36),122,77,(-106),119,85,(-121),92,(-125),(-115),(-125),(-96),(-96),(-118),(-36),(-128),(-116),(-116),111,111,124,88,(-121),(-36),(-36),76,106,(-107),(-82),(-96),87,88,88,88,88,(-101),88,88,109,109,109,109,(-36),(-36),(-96),(-96),(-96),(-96),(-96),(-36),(-36),(-96),(-96),(-96),(-96),(-96), +(-96),(-96),(-96),(-36),(-96),(-96),(-96),(-96),(-96),(-36),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-36),(-96),(-96),(-96),(-96),(-96),(-96),(-96),(-36),(-36),(-96),(-36),(-118),(-96),(-96),(-36),(-36),(-96),(-96),(-36),(-96),(-96)]);c[39]=IU([4,(-96),1,(-86),1,(-36),1,(-117),1,(-125),1,(-96),1,(-97),4,(-36),5,(-96),1,120,1,(-128),4,(-125),4,(-117),1,98,1,109,1,114,1,(-115),1,111,4,(-114),2,(-125),1,(-36),7,(-125),1,(-122), +27,(-114),1,(-36),1,(-125),1,(-36),4,(-114),3,(-36),1,(-114),1,(-36),1,40,1,50,1,71,2,49,2,83,1,49,1,83,1,91,2,79,1,(-100),1,110,1,120,1,(-112),2,48,2,50,2,49,2,82,2,70,2,48,2,58,30,(-125),1,(-96),3,(-36),1,122,1,(-96),1,122,1,(-118),6,(-96),2,(-102),3,(-96),1,97,5,(-96),2,122,1,(-96),1,(-36),1,(-96),1,(-125),12,(-96),1,(-36),1,114,1,(-100),1,122,2,120,1,82,1,86,1,94,2,(-103),1,67,1,114,1,92,1,114,2,(-96),1,119,1,94,1,109,2,114,2,(-93),1,(-72),2,122,1,(-60),1,(-68),3,(-111),1,69,1,86,1,109,2,122,2,(-121),2, +71,2,58,2,92,2,57,2,60,2,(-99),2,(-103),1,(-57),11,(-67)]);d=BD(1);d.data[0]=121;c[40]=d;d=BD(1);d.data[0]=116;c[41]=d;d=BD(1);d.data[0]=120;c[42]=d;d=BD(1);d.data[0]=(-124);c[43]=d;d=BD(1);d.data[0]=100;c[44]=d;d=BD(1);d.data[0]=102;c[45]=d;c[46]=IU([6,53,2,69,3,67,3,70,1,(-122),3,0,1,38,1,80,2,98,1,90,1,53,1,71,1,80,1,53,1,87,2,70,2,87,6,53,2,119,2,82,2,99,2,102,1,71,1,53,1,57,1,53,3,40,1,44,4,80,1,64,1,(-32),1,40,2,44,1,107,1,53,1,40,1,71,1,(-110),1,49,4,58,1,51,1,57,1,60,1,45,1,78,1,47,1,58,2,125,1,79,1, +81,1,86,4,50,4,48,1,64,34,120,26,(-96),1,120,89,(-96),12,120]);d=BD(1);d.data[0]=(-100);c[47]=d;c[48]=IU([46,(-96),2,(-108),16,(-96),1,120,86,(-96),2,120,2,0,101,(-96)]);d=BD(1);d.data[0]=(-100);c[49]=d;c[50]=IU([31,(-96),1,120,40,(-96),8,(-118),(-80),(-96)]);d=BD(1);d.data[0]=(-96);c[51]=d;d=BD(1);d.data[0]=(-96);c[52]=d;d=BD(1);d.data[0]=(-96);c[53]=d;d=BD(1);d.data[0]=(-96);c[54]=d;d=BD(1);d.data[0]=(-96);c[55]=d;d=BD(1);d.data[0]=(-96);c[56]=d;d=BD(1);d.data[0]=(-96);c[57]=d;d=BD(1);d.data[0]=(-96);c[58] +=d;d=BD(1);d.data[0]=(-96);c[59]=d;d=BD(1);d.data[0]=(-96);c[60]=d;d=BD(1);d.data[0]=(-96);c[61]=d;d=BD(1);d.data[0]=(-96);c[62]=d;d=BD(1);d.data[0]=(-96);c[63]=d;d=BD(1);d.data[0]=(-96);c[64]=d;d=BD(1);d.data[0]=(-96);c[65]=d;d=BD(1);d.data[0]=(-96);c[66]=d;d=BD(1);d.data[0]=(-96);c[67]=d;d=BD(1);d.data[0]=(-96);c[68]=d;d=BD(1);d.data[0]=(-96);c[69]=d;d=BD(1);d.data[0]=(-96);c[70]=d;d=BD(1);d.data[0]=(-96);c[71]=d;d=BD(1);d.data[0]=(-96);c[72]=d;d=BD(1);d.data[0]=(-96);c[73]=d;d=BD(1);d.data[0]=(-96);c[74] +=d;d=BD(1);d.data[0]=(-96);c[75]=d;d=BD(1);d.data[0]=(-96);c[76]=d;d=BD(1);d.data[0]=(-100);c[77]=d;d=BD(1);d.data[0]=(-96);c[78]=d;d=BD(1);d.data[0]=(-96);c[79]=d;d=BD(1);d.data[0]=(-96);c[80]=d;d=BD(1);d.data[0]=(-96);c[81]=d;d=BD(1);d.data[0]=(-96);c[82]=d;d=BD(1);d.data[0]=(-96);c[83]=d;d=BD(1);d.data[0]=(-96);c[84]=d;d=BD(1);d.data[0]=(-96);c[85]=d;d=BD(1);d.data[0]=(-96);c[86]=d;d=BD(1);d.data[0]=(-96);c[87]=d;d=BD(1);d.data[0]=(-96);c[88]=d;d=BD(1);d.data[0]=(-96);c[89]=d;d=BD(1);d.data[0]=(-96);c[90] +=d;d=BD(1);d.data[0]=(-96);c[91]=d;d=BD(1);d.data[0]=(-96);c[92]=d;d=BD(1);d.data[0]=(-96);c[93]=d;d=BD(1);d.data[0]=(-96);c[94]=d;d=BD(1);d.data[0]=(-96);c[95]=d;d=BD(1);d.data[0]=(-96);c[96]=d;d=BD(1);d.data[0]=(-96);c[97]=d;d=BD(1);d.data[0]=(-96);c[98]=d;d=BD(1);d.data[0]=(-96);c[99]=d;d=BD(1);d.data[0]=(-96);c[100]=d;d=BD(1);d.data[0]=(-96);c[101]=d;d=BD(1);d.data[0]=(-96);c[102]=d;d=BD(1);d.data[0]=(-96);c[103]=d;d=BD(1);d.data[0]=(-96);c[104]=d;d=BD(1);d.data[0]=(-96);c[105]=d;d=BD(1);d.data[0]=(-96);c[106] +=d;d=BD(1);d.data[0]=(-96);c[107]=d;d=BD(1);d.data[0]=(-96);c[108]=d;d=BD(1);d.data[0]=(-96);c[109]=d;d=BD(1);d.data[0]=(-96);c[110]=d;d=BD(1);d.data[0]=(-96);c[111]=d;d=BD(1);d.data[0]=(-96);c[112]=d;d=BD(1);d.data[0]=(-96);c[113]=d;d=BD(1);d.data[0]=(-96);c[114]=d;d=BD(1);d.data[0]=(-96);c[115]=d;d=BD(1);d.data[0]=(-96);c[116]=d;d=BD(1);d.data[0]=(-96);c[117]=d;d=BD(1);d.data[0]=(-96);c[118]=d;d=BD(1);d.data[0]=(-96);c[119]=d;d=BD(1);d.data[0]=(-96);c[120]=d;d=BD(1);d.data[0]=(-96);c[121]=d;d=BD(1);d.data[0] +=(-96);c[122]=d;d=BD(1);d.data[0]=(-96);c[123]=d;d=BD(1);d.data[0]=(-96);c[124]=d;d=BD(1);d.data[0]=(-96);c[125]=d;d=BD(1);d.data[0]=(-96);c[126]=d;d=BD(1);d.data[0]=(-96);c[127]=d;d=BD(1);d.data[0]=(-96);c[128]=d;d=BD(1);d.data[0]=(-96);c[129]=d;d=BD(1);d.data[0]=(-96);c[130]=d;d=BD(1);d.data[0]=(-96);c[131]=d;d=BD(1);d.data[0]=(-96);c[132]=d;d=BD(1);d.data[0]=(-96);c[133]=d;d=BD(1);d.data[0]=(-96);c[134]=d;d=BD(1);d.data[0]=(-96);c[135]=d;d=BD(1);d.data[0]=(-96);c[136]=d;d=BD(1);d.data[0]=(-96);c[137]=d;d +=BD(1);d.data[0]=(-96);c[138]=d;d=BD(1);d.data[0]=(-96);c[139]=d;d=BD(1);d.data[0]=(-96);c[140]=d;d=BD(1);d.data[0]=(-96);c[141]=d;d=BD(1);d.data[0]=(-96);c[142]=d;d=BD(1);d.data[0]=(-96);c[143]=d;d=BD(1);d.data[0]=(-96);c[144]=d;d=BD(1);d.data[0]=(-96);c[145]=d;d=BD(1);d.data[0]=(-96);c[146]=d;d=BD(1);d.data[0]=(-96);c[147]=d;d=BD(1);d.data[0]=(-96);c[148]=d;d=BD(1);d.data[0]=(-96);c[149]=d;d=BD(1);d.data[0]=(-96);c[150]=d;d=BD(1);d.data[0]=(-96);c[151]=d;d=BD(1);d.data[0]=(-96);c[152]=d;d=BD(1);d.data[0]= +(-96);c[153]=d;d=BD(1);d.data[0]=(-96);c[154]=d;d=BD(1);d.data[0]=(-96);c[155]=d;d=BD(1);d.data[0]=(-96);c[156]=d;d=BD(1);d.data[0]=(-96);c[157]=d;d=BD(1);d.data[0]=(-96);c[158]=d;d=BD(1);d.data[0]=(-96);c[159]=d;d=BD(1);d.data[0]=109;c[160]=d;d=BD(1);d.data[0]=109;c[161]=d;d=BD(1);d.data[0]=109;c[162]=d;d=BD(1);d.data[0]=109;c[163]=d;d=BD(1);d.data[0]=106;c[164]=d;d=BD(1);d.data[0]=(-123);c[165]=d;d=BD(1);d.data[0]=106;c[166]=d;d=BD(1);d.data[0]=95;c[167]=d;d=BD(1);d.data[0]=115;c[168]=d;d=BD(1);d.data[0]= +(-125);c[169]=d;d=BD(1);d.data[0]=(-124);c[170]=d;d=BD(1);d.data[0]=106;c[171]=d;d=BD(1);d.data[0]=(-96);c[172]=d;d=BD(1);d.data[0]=(-96);c[173]=d;d=BD(1);d.data[0]=(-96);c[174]=d;d=BD(1);d.data[0]=(-96);c[175]=d;d=BD(1);d.data[0]=(-96);c[176]=d;d=BD(1);d.data[0]=(-96);c[177]=d;d=BD(1);d.data[0]=(-96);c[178]=d;d=BD(1);d.data[0]=(-96);c[179]=d;d=BD(1);d.data[0]=(-96);c[180]=d;d=BD(1);d.data[0]=(-96);c[181]=d;d=BD(1);d.data[0]=(-96);c[182]=d;d=BD(1);d.data[0]=(-96);c[183]=d;d=BD(1);d.data[0]=(-96);c[184]=d;d= +BD(1);d.data[0]=(-96);c[185]=d;d=BD(1);d.data[0]=(-96);c[186]=d;d=BD(1);d.data[0]=(-96);c[187]=d;d=BD(1);d.data[0]=(-96);c[188]=d;d=BD(1);d.data[0]=(-96);c[189]=d;d=BD(1);d.data[0]=(-96);c[190]=d;d=BD(1);d.data[0]=(-96);c[191]=d;d=BD(1);d.data[0]=(-96);c[192]=d;d=BD(1);d.data[0]=(-96);c[193]=d;d=BD(1);d.data[0]=(-96);c[194]=d;d=BD(1);d.data[0]=(-96);c[195]=d;d=BD(1);d.data[0]=(-96);c[196]=d;d=BD(1);d.data[0]=(-96);c[197]=d;d=BD(1);d.data[0]=(-96);c[198]=d;d=BD(1);d.data[0]=(-96);c[199]=d;d=BD(1);d.data[0]=(-96);c[200] +=d;d=BD(1);d.data[0]=(-96);c[201]=d;d=BD(1);d.data[0]=(-96);c[202]=d;d=BD(1);d.data[0]=(-96);c[203]=d;d=BD(1);d.data[0]=(-96);c[204]=d;d=BD(1);d.data[0]=(-96);c[205]=d;d=BD(1);d.data[0]=(-96);c[206]=d;d=BD(1);d.data[0]=(-96);c[207]=d;d=BD(1);d.data[0]=(-96);c[208]=d;d=BD(1);d.data[0]=(-96);c[209]=d;d=BD(1);d.data[0]=(-96);c[210]=d;d=BD(1);d.data[0]=(-96);c[211]=d;d=BD(1);d.data[0]=(-96);c[212]=d;d=BD(1);d.data[0]=(-96);c[213]=d;d=BD(1);d.data[0]=(-96);c[214]=d;d=BD(1);d.data[0]=(-99);c[215]=d;d=BD(1);d.data[0] +=(-100);c[216]=d;d=BD(1);d.data[0]=(-100);c[217]=d;d=BD(1);d.data[0]=(-100);c[218]=d;d=BD(1);d.data[0]=(-100);c[219]=d;d=BD(1);d.data[0]=(-100);c[220]=d;d=BD(1);d.data[0]=(-100);c[221]=d;d=BD(1);d.data[0]=(-100);c[222]=d;d=BD(1);d.data[0]=(-100);c[223]=d;d=BD(1);d.data[0]=120;c[224]=d;d=BD(1);d.data[0]=120;c[225]=d;d=BD(1);d.data[0]=120;c[226]=d;d=BD(1);d.data[0]=120;c[227]=d;d=BD(1);d.data[0]=120;c[228]=d;d=BD(1);d.data[0]=120;c[229]=d;d=BD(1);d.data[0]=120;c[230]=d;d=BD(1);d.data[0]=120;c[231]=d;d=BD(1);d.data[0] +=120;c[232]=d;d=BD(1);d.data[0]=120;c[233]=d;d=BD(1);d.data[0]=120;c[234]=d;d=BD(1);d.data[0]=120;c[235]=d;d=BD(1);d.data[0]=120;c[236]=d;d=BD(1);d.data[0]=120;c[237]=d;d=BD(1);d.data[0]=120;c[238]=d;d=BD(1);d.data[0]=120;c[239]=d;d=BD(1);d.data[0]=120;c[240]=d;d=BD(1);d.data[0]=120;c[241]=d;d=BD(1);d.data[0]=120;c[242]=d;d=BD(1);d.data[0]=120;c[243]=d;d=BD(1);d.data[0]=120;c[244]=d;d=BD(1);d.data[0]=120;c[245]=d;d=BD(1);d.data[0]=120;c[246]=d;d=BD(1);d.data[0]=120;c[247]=d;d=BD(1);d.data[0]=120;c[248]=d;d= +BD(1);d.data[0]=(-96);c[249]=d;d=BD(1);d.data[0]=(-119);c[250]=d;d=BD(1);d.data[0]=87;c[251]=d;d=BD(1);d.data[0]=116;c[252]=d;d=BD(1);d.data[0]=122;c[253]=d;d=BD(1);d.data[0]=90;c[254]=d;BVd=b;}; +function BB6(){F.call(this);this.cFC=null;} +function AGW(){let a=this;F.call(a);a.bRF=null;a.ceX=null;a.b2d=null;a.ces=null;a.cqg=null;} +let B39=(a,b,c)=>{a.ceX=b;a.bRF=c;},E8I=(a,b)=>{if(a!==b)a.b2d=b;},Fyi=a=>{return a.b2d;},Fy3=a=>{return a.bRF;},Cyf=a=>{return a.ceX;},Fzu=(a,b)=>{a.ces=b;},Fy1=a=>{return a.ces;},Fzs=a=>{return a.cqg;},Fyo=(a,b)=>{a.cqg=b;}; +function BlI(){let a=this;AGW.call(a);a.b5x=null;a.cdN=null;a.b6G=null;a.bZa=null;a.cuK=0;a.c1F=null;a.cby=null;a.cDT=null;a.cHR=null;a.cma=0;a.cXW=null;a.c3B=null;a.cWs=null;a.cK7=null;} +let Fll=(a,b)=>{a.cWs=b;},BTL=a=>{let b,c,d,e,f;b=a.c1F;c=a.bRF.cc7;b=b.bJ8;d=b.bNx;b=Bss(b,c);c=BtD();e=c.bRt;f=d.bRt;AYo(e,f);e=c.bTX;f=d.bTX;AFQ(e,f);c.ceI=d.ceI;c.bXo=d.bXo;e=c.ccV;d=d.ccV;Ea(e,d);if(b!==null){d=c.bRt;e=b.bRt;AYo(d,e);d=c.bTX;b=b.bTX;AFQ(d,b);}return BqM(c);},CqP=a=>{let b,c,d,e,f;RT();b=C9u(ADi);c=P2(a.cdN);while(OD(c)){b=Cp_(b,Pr(c),S2);}if(!A$A(a.b5x)){d=Dy();e=NA(a.b5x);while(e.dY()){f=e.dZ();c=S2;C9(d,f,c);}b=XX(BB(Sb,[b,B0w(ADi,d)]));}return b;},BUT=a=>{let b,c,d,e,f,g,h,i,j,k,l,m;b +=a.cby;if(b===null){if(a.bZa.bHv<=0)a.cby=XX(BB(Sb,[BTL(a),CqP(a)]));else{c=K(Sb,2);d=c.data;d[0]=BTL(a);e=Bk();f=G3(G8(a.bZa));g=f;while(Gl(g)){h=GZ(f);i=BqM(h.bHt.bZy);b=XX(BB(Sb,[i,DlZ(AEl(V(h.bHe.bHl),V(100)),A1A())]));U(e,b);}j=K(Sb,2);k=j.data;k[0]=CqP(a);l=K(Sb,0);l=WW(e,l);m=l.data;if(m.length==1)b=m[0];else{b=new Bh9;RT();BJS(b,C$l,l);}k[1]=b;d[1]=XX(j);a.cby=XX(c);}return a.cby;}return b;},Ffq=(a,b)=>{KM(a.b5x,b);APr(a);},D$N=(a,b)=>{OJ(a.cdN,b);APr(a);},EpD=a=>{let b,c,d,e,f,g;if(a.bZa.bHv>0){b=Lk(a.bRF.b8l);L(b, +E(344));c=G3(G8(a.bZa));d=c;while(Gl(d)){e=GZ(c);L(b,E(580));f=e;L(b,f.bHt.b0t);g=f.bHe.bHl;if(g!=100){e=new S;T(e);Bb(e,58);BE(e,g);Bb(e,37);L(b,Q(e));}L(b,E(582));if(Gl(d))L(b,E(344));}return Q(b);}return a.bRF.b8l;},ETI=a=>{return JH(a.bRF);},BLe=a=>{let b,c,d;b=a.cDT;if(b===null){c=CN8(BUT(a));d=a.b6G;Lf();b=CNX(d,c,O1);if(!a.cuK){d=BUT(a);while(BoD(d,Jj(b))){b=Qu(b);}}a.cDT=b;return b;}return b;},D0I=a=>{let b,c,d;b=a.cHR;if(b===null){c=CN8(BUT(a));d=a.b6G;Lf();b=CNX(d,c,Oq);a.cHR=b;return b;}return b;},Coj +=(a,b)=>{let c;c=a.b6G;Lf();BWR(c,AZ6,b);APr(a);},Cl4=(a,b)=>{let c;c=a.b6G;Lf();BWR(c,O1,b);APr(a);},DtR=(a,b)=>{let c;c=a.b6G;Lf();BWR(c,Oq,b);APr(a);},ExV=(a,b)=>{a.cK7=b;},DUo=(a,b,c)=>{let d,e;d=a.bZa;e=CL(c);Es(d,b,e);APr(a);},APr=a=>{a.cby=null;a.cDT=null;a.cHR=null;},FrA=(a,b)=>{a.cuK=b;},Fie=(a,b)=>{a.cma=b;},Ekk=a=>{return a.cWs;},DJE=a=>{let b,c,d,e;b=a.cK7;if(b!==null){b=b.data;if(b.length!=1){c=b[0];d=b[1];e=a.cma;return Cz$(Bwe(c.bSF,d.bSF,e),Bwe(c.cgs,d.cgs,e),c.cDH);}return b[0];}return null;},EgE +=a=>{return a.cma;},EGp=(a,b,c)=>{a.cXW=b;a.c3B=c;},EYN=a=>{return a.cXW;},DxY=a=>{return a.c3B;}; +function CE$(){F.call(this);this.cNB=null;} +let ABQ=a=>{return Bfr(a.cNB,1);}; +function CI3(){let a=this;F.call(a);a.cgD=null;a.cbo=null;a.cvx=null;a.c5f=null;} +let EZx=a=>{return YE(a.cbo);},ErP=(a,b,c,d,e)=>{a.cgD=b;a.cbo=c;a.cvx=d;a.c5f=e;},Di6=(a,b,c,d)=>{let e=new CI3();ErP(e,a,b,c,d);return e;}; +function AAD(){let a=this;F.call(a);a.bIp=null;a.bQ2=null;a.bUO=null;a.bVd=null;a.c18=null;} +let EJz=(a,b,c)=>{B1b(a,b,c,null,null,null);},BYs=(a,b)=>{let c=new AAD();EJz(c,a,b);return c;},AVi=(a,b,c,d,e)=>{B1b(a,b,c,d,e,null);},B1R=(a,b,c,d)=>{let e=new AAD();AVi(e,a,b,c,d);return e;},B1b=(a,b,c,d,e,f)=>{a.bIp=b;a.bQ2=c;a.bUO=d;a.bVd=e;a.c18=f;},ENw=(a,b,c,d,e)=>{let f=new AAD();B1b(f,a,b,c,d,e);return f;},B2F=(a,b)=>{return ENw(a.bIp,a.bQ2,a.bUO,a.bVd,b);},AH9=(b,c)=>{if(c<0.0){b=new Bt;X(b);J(b);}return BYs(b,N8(b,c));},A2z=(b,c,d)=>{let e,f,g,h;if(!(d<0.0)&&!(c<0.0)){e=b.bQ2;f=N8(e,c);g= -c;h=EK(f, +g);c=d-c;return B1R(h,N8(f,c),f,e);}b=new Bt;X(b);J(b);},BzQ=(b,c,d)=>{let e,f,g,h,i,j;e=b.bUO;f=b.bVd;if(e!==null&&f!==null){g=EK(f,c);h=e;OC(h,g);i= -c;g=EK(e,i);h=N8(h,d-c);j=b.bQ2;OC(h,j);return B1R(g,h,e,f);}return AH9(b.bIp,d);},BCx=(b,c)=>{let d;if(!(c<0.0)){d=b.bQ2;return B1R(d,N8(d,c),b.bUO,b.bVd);}b=new Bt;X(b);J(b);},E_7=N(),Cr5=(b,c,d,e,f)=>{let g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;a:{g=c.bJ$;h=c.bQJ;i=c.bNl;j=c.bN0;k=Bk();if(!(d instanceof AGU)){if(d instanceof AGO){l=d;m=K3(j,l.bVI);b=FsF(m, +l,h,i,c,f);d=Br(l.caH);while(Bq(d)){n=Bm(d);o=Fqd(Be(Dx_(l),0));HK();b=o===Lr?CM3(b,l,h,i,m,n,f):o!==OL?b:Dsg(b,l,h,i,m,n,f);}U(k,b);break a;}if(d instanceof Tg){p=d;m=K3(j,DH5(p));q=C9J(p)===null?null:K3(j,C9J(p));if(m===null&&q===null){m=C7x(c);q=CW0(c);}b=DM2(CXN(c),m,q,p,h,i,f);U(k,b);break a;}if(d instanceof ARr){r=d;b=D8V(CXN(c),j,r,h,i,f);U(k,b);break a;}if(d instanceof B80){b=Ewp(d,c,f);U(k,b);break a;}if(d instanceof B5a){s=d;d=CKb(s);Vp();t=d!==X6?Dug(b,s,CJp(c,C3s(s),BRQ(s)),c,f):FvE(b,s,CJp(c,C3s(s), +BRQ(s)),c,f);U(k,t);break a;}if(d instanceof AYJ){b=d;q=CKb(b);Vp();if(q===ATw){c=DuR(b,h,i,e,f);U(k,c);break a;}}if(d instanceof BtC){u=d;b=DT1(u,EcS(c,u),f);U(k,b);break a;}if(d instanceof BW0){b=DLy(d,c,f);U(k,b);break a;}if(d instanceof BmY){b=EdM(d,c,f);U(k,b);break a;}if(d instanceof SR){v=d;b=EC6(v,c,K3(j,E_G(v)),h,i,f);U(k,b);break a;}if(d instanceof BSO){b=Fxs(d,c,f);U(k,b);break a;}b=Fm();c=BY(Dg(d));d=CR();H(H(d,E(6067)),c);c=CH(d);Fw(b,c);}else{w=d;m=K3(j,w.bUn);q=K3(j,w.bWz);x=0;if(Bd1(w))b=EpS(c.bJ$, +m,w,h,i,j,f);else{b=new Div;CUl(b,c.bJ$,i,f);b.cqh=K(BKo,2);b.b2v=K3(j,w.bUn);b.bNR=K3(j,w.bWz);b.c0y=j;b.bMB=w;b.crz=h;b.coM=i;if(A4O(w))b.bNR.cb_=1;y=(AJO(b,b.bGW)).bd0(b.bGW);z=CEm(b);if(!w.b2c)b.cat=A2z(f,y,z);else b.cat=BzQ(f,y,z);x=AEO(b,g);}c=Br(w.caH);while(Bq(c)){n=Bm(c);o=n.bJ_;HK();if(o===Lr&&Bd1(w))d=DLw(b,w,h,i,n,f);else if(o===Lr)d=CM3(b,w,h,i,!x?m:q,n,f);else if(o===OL&&Bd1(w))d=DxF(b,w,h,i,n,f);else if(o===OL)d=Dsg(b,w,h,i,!x?q:m,n,f);else if(o===A9n){d=new Dkn;DhQ(d,b,w,h,i,n,f);}else if(o!== +BwM)d=b;else{d=new C4_;DhQ(d,b,w,h,i,n,f);}b=d;}U(k,b);}}return k;},AAj=N(0),LN=a=>{return a.a95();},Lw=a=>{return a.a96();},Bac=N(Bx),BuZ=null,Bae=null,AX$=null,A5A=null,A74=null,A6J=null,A46=null,AYR=null,A5f=null,A6N=null,A0y=null,A$C=null,A2g=null,AYj=null,A7V=null,AA_=null,AQr=null,ATD=null,ATK=null,AMX=null,WG=null,AO1=null,AW4=null,Blh=null,A7Z=null,BuQ=null,A$d=null,A4n=null,AQB=null,RQ=null,AFq=null,AFX=null,ALB=null; +let AZs=null,AHu=null,AVN=null,ASW=null,EZO=null,FX=()=>{FX=Z(Bac);EFt();},E24=(a,b,c)=>{FX();Ct(a,b,c);},Ha=(a,b)=>{let c=new Bac();E24(c,a,b);return c;},XD=a=>{let b;FX();if(a!==AVN&&a!==ASW){if(a!==AW4){if(a!==AA_&&a!==AQr&&a!==ATD&&a!==ATK){if(a!==WG){if(a!==ALB){if(a!==AHu){if(a!==AQB){if(a!==RQ){if(a!==AMX){if(a!==AO1){b=new BV;Bp(b,HT(a));J(b);}B8();return B7G;}B8();return B7G;}B8();return BI7;}B8();return CKk;}B8();return Dcv;}B8();return Cre;}Hy();b=Vs;if(b!==b){b=new BV;X(b);J(b);}B8();return CSk;}B8();return Csf;}B8();return CVC;}B8();return BKd;},FaQ +=()=>{let b,c;FX();b=K(Bac,37);c=b.data;c[0]=BuZ;c[1]=Bae;c[2]=AX$;c[3]=A5A;c[4]=A74;c[5]=A6J;c[6]=A46;c[7]=AYR;c[8]=A5f;c[9]=A6N;c[10]=A0y;c[11]=A$C;c[12]=A2g;c[13]=AYj;c[14]=A7V;c[15]=AA_;c[16]=AQr;c[17]=ATD;c[18]=ATK;c[19]=AMX;c[20]=WG;c[21]=AO1;c[22]=AW4;c[23]=Blh;c[24]=A7Z;c[25]=BuQ;c[26]=A$d;c[27]=A4n;c[28]=AQB;c[29]=RQ;c[30]=AFq;c[31]=AFX;c[32]=ALB;c[33]=AZs;c[34]=AHu;c[35]=AVN;c[36]=ASW;return b;},EFt=()=>{BuZ=Ha(E(445),0);Bae=Ha(E(6068),1);AX$=Ha(E(6069),2);A5A=Ha(E(6070),3);A74=Ha(E(6071),4);A6J=Ha(E(6072), +5);A46=Ha(E(6073),6);AYR=Ha(E(6074),7);A5f=Ha(E(6075),8);A6N=Ha(E(6076),9);A0y=Ha(E(6077),10);A$C=Ha(E(6078),11);A2g=Ha(E(6079),12);AYj=Ha(E(6080),13);A7V=Ha(E(6081),14);AA_=Ha(E(6082),15);AQr=Ha(E(6083),16);ATD=Ha(E(6084),17);ATK=Ha(E(6085),18);AMX=Ha(E(6086),19);WG=Ha(E(4215),20);AO1=Ha(E(6087),21);AW4=Ha(E(6088),22);Blh=Ha(E(6089),23);A7Z=Ha(E(6090),24);BuQ=Ha(E(6091),25);A$d=Ha(E(6092),26);A4n=Ha(E(6093),27);AQB=Ha(E(6094),28);RQ=Ha(E(455),29);AFq=Ha(E(6095),30);AFX=Ha(E(6096),31);ALB=Ha(E(6097),32);AZs +=Ha(E(6098),33);AHu=Ha(E(6099),34);AVN=Ha(E(6100),35);ASW=Ha(E(6101),36);EZO=FaQ();}; +function CW3(){let a=this;F.call(a);a.cYf=null;a.cZF=null;a.cio=null;a.cUV=null;a.cuU=null;} +let COq=(a,b,c,d,e)=>{let f,g,h,i,j;FX();f=AW4;if(APY(a.cio)<=0)BfH(a,b,c,d,e,f);else{g=Ta(UA(a.cio));h=d;while(SD(g)){i=Tj(g);j=i.bIu.bG6;if(j>=d&&j+i.bI1.bG6<=e){BfH(a,b,c,h,j,f);h=i.bIu.bG6;BfH(a,b,c,h,h+i.bI1.bG6,AO1);h=i.bIu.bG6+i.bI1.bG6;}}BfH(a,b,c,h,e,f);}},BfH=(a,b,c,d,e,f)=>{let g,h,i,j,k;if(e!==d){if(!(e{BlC=Z(BHY);Ebh();},Cjv=(a,b,c)=>{return EvY(a,b,c);},BSt=a=>{let b,c,d,e,f,g,h;if(a.b0f!==null&&a.czy==a.bMp.dV())return;a.b0f=AH7();a.czy=a.bMp.dV();b=0;c=0;while(c=0){f=a.bMp.cf(c);if(f instanceof SR)a.b4g.data[c]=c;else if(!(f instanceof Tg) +&&!(f instanceof T$))a.b4g.data[c]=(-1);else{g=a.b4g.data;g[c]=g[c+1|0];}c=c+(-1)|0;}},EvY=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n;BSt(a);d=BAW(a.b0f,b);if(d!==null){a:{d=d.data;e=d[0];f=d[1];if(b instanceof T$){g=0;h=0;i=a.b4g.data[e+1|0];b:{c:{while(i!=(-1)){d:{e:{j=a.bMp.cf(i);k=b;l=j.b1C;if(k!==l){if(l===null)break e;if(!Bzw(l,k))break e;}m=1;break d;}m=0;}if(m){Na();if(c!==AAm&&ADX(j)&&k.R0(a.bMv)&&j.bLO===a.bMv){g=1;if(h)break c;f=f+1|0;}if(c===ATh&&By3(j)&&k.R0(a.bMv)&&j.bLO===a.bMv){h=1;if(g)break b;f=DT(0, +f-1|0);}}i=a.b4g.data[i+1|0];}break a;}break a;}}}f:{if(b instanceof Tg){l=a.bMp.ew(e+1|0);g:{while(l.dY()){h:{i:{while(true){if(!l.dY())break i;n=l.dZ();if(!(n instanceof Tg))break;}break h;}n=null;}if(!(n instanceof SR))break g;j=n;if(j.bLO!==a.bMv)continue;if(j.b1C===null)continue;Na();if(c!==AAm&&ADX(j))f=f+1|0;if(c===ATh&&By3(j))f=DT(0,f-1|0);}break f;}}}if(f<0)return 0;return f;}b=new Bt;X(b);J(b);},Eud=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;d=new CD8;d.b_E=Bk();e=0;f=null;g=null;h=0;i=0;j +=a.bMp.dX();while(j.dY()){k=j.dZ();if(k instanceof Tg){f=null;h=0;i=0;}l=DG(a.cmp,k);if(g!==null&&f!==null&&k instanceof SR){m=k;if(!Cxa(m,a.bMv))continue;a:{n=m.b1C;if(n!==null&&Bzw(n,f)){b:{if(!(ADX(m)&&i)){if(!BSe(m)){l=g;break a;}if(!h)break b;}break a;}l=g;}}h=h|ADX(m);i=i|BSe(m);}o=k instanceof T$;if(!o)m=f;else{m=k;if(Bzw(m,f)){g=l;continue;}h=0;i=0;}if(l!==null){if(Df()){BlC();if(!Cw6&&!(l.bG6<=c)){m=new C4;n=new S;T(n);D6(H(H(H(n,E(6102)),l),E(6103)),c);AT_(m,Q(n));J(m);}}c:{Na();e=Cjv(a,k,ATh);p=k instanceof SR;if +(p){n=k;if(ADX(n)){n=n.cBR;break c;}}d:{BSt(a);q=BAW(a.b0f,k);if(q!==null){if(k instanceof AGU)break d;if(k instanceof AGO)break d;}n=null;break c;}r=q.data[0]+1|0;e:{f:{while(r{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;f=Eud(a,d,e);g=(-2147483648);h=Br(f.b_E);while(Bq(h)){i=(Bm(h)).b96;if(i>g)g=i;}j=1;while(j<=g){k=BQg(c,a.cpB,a.cmY,a.cb1,a.bMv.bRB);l=b.h2(BM((j-1|0)*B78(k,b.hE()) +/2.0));m=1;h=(Dbp(f)).dX();while(h.dY()){n=h.dZ();i=n.b96;if(m&&i==j){d=n.b31;o=n.c7l;p=n.c6u;k.cyA=d;k.cm1=o;k.c22=p;m=0;}else if(!m&&!(h.dY()&&i>=j)){d=n.b31;p=B_J(AMs(k.cyA,d),k.cJE);FX();q=AA_;if(p.dV()>1)q=AQr;r=p.dX();while(r.dY()){p=r.dZ();if(!r.dY()&&q!==AA_)q=ATD;s=p.bJM;d=p.bOx;e=B78(k,l.hE());p=KJ(e,d-s);o=new AV3;t=k.cBi;u=k.cm1;CAl(o,t,u===null?null:u.bKT);t=k.c22;if(t===null)t=B1(k.cBi);t=B0(t,Du(XD(q),k.cPp));if(t===null){u=k.cm1;if(u!==null){JN();v=Bzf;w=u.bMx;Po(o.cvu,v,w);}}else{u=k.cm1;if +(u!==null){v=u.bKT;if(v!==null){B9();t=Wu(t,CK,v);}}}u=k.cUN;x=K(Ob,1);x.data[0]=t;(SK(u,x,q,null,o,null)).a$w(l.h2(Bh( -e/2.0,s)),p,k.cqK);q=ATK;}k.cyA=1.7976931348623157E308;if(i>0)DbR(k,l,n);m=1;}}j=j+1|0;}l=BQg(c,a.cpB,a.cmY,a.cb1,a.bMv.bRB);c=(Dbp(f)).dX();while(c.dY()){h=c.dZ();if(!h.b96)DbR(l,b,h);}},Ebh=()=>{Cw6=0;}; +function WT(){let a=this;CA.call(a);a.bJP=null;a.bIX=null;a.cdj=null;} +let CeK=(a,b)=>{let c;c=b;a.bJP=c.bJP;a.bIX=c.bIX;},BFj=a=>{Djn(a,null);},Fu$=()=>{let a=new WT();BFj(a);return a;},Djn=(a,b)=>{CJ(a);a.cdj=b;},ALM=a=>{let b=new WT();Djn(b,a);return b;},Fzt=a=>{return a.cdj;},BE3=(a,b)=>{let c,d,e;if(b!==Bo(WT)){if(b===Bo(BnC)){c=a.cdj;if(c instanceof BnC)return c;}c=Fm();d=BY(b);e=new S;T(e);H(H(e,E(5212)),d);d=Q(e);Fw(c,d);return Brk(a,b);}return a;},EXe=(a,b)=>{if(b!==null&&b.bQp){Wn();if(b===APj){b=a.cdj;if(b instanceof BPK)return b.b69;}return a.cdj;}return a;},D$h=N(),DlE +=(b,c,d)=>{let e,$$je;Bf();try{e=C2Y();DtF(b,c,c.b5w,b.chc);AVd(e,d);c=c.b5w;b=c.bLG.a5q(b,c,e,4);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},FuK=(b,c,d)=>{let e,f,$$je;Bf();a:{b:{c:{try{e=DlE(b,c,d);if(e===null)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return e;}try{f=new Oh;Ej();Pd(f,ARl);f=A80(c,f);f.bQa=c.bQa;Clm(f.bOh,c.bOh);f.bOh.bYl=0;f.cUq=c;f.b2Z=c.b2Z;AVd(f,d);b=C5e(b,f);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return b;},BSZ=(b,c)=>{let $$je;Bf();try{b=Bya(b,c.b5w);}catch($$e) +{$$je=P($$e);b=$$je;J(b);}return b;},BVm=(b,c)=>{let d,$$je;Bf();try{d=AMn(c);b=d===null?null:Bup(b,d.b5w,c);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},AMn=b=>{let $$je;Bf();try{b=b.cUq;}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;}; +function BYR(){let a=this;CA.call(a);a.bLG=null;a.bXy=null;a.bKn=null;a.bVY=null;a.bNo=null;a.b7e=0;a.b5J=0;a.bWW=null;a.cmD=null;a.ddh=null;} +let DvU=a=>{CJ(a);},E7s=()=>{let a=new BYR();DvU(a);return a;},E12=N(),D8X=(b,c,d,e)=>{let $$je;Bf();try{I(E(6104));I(E(6105));I(E(5253));I(E(6106));I(E(6107));I(E(6108));I(E(6109));I(E(6110));I(E(6111));I(E(6112));I(E(6113));I(E(6114));I(E(6115));I(E(6116));I(E(6117));I(E(5051));I(E(5044));I(E(5035));I(E(6118));I(E(5037));J(Gw());}catch($$e){$$je=P($$e);b=$$je;}J(b);},E2H=b=>{let c;I(E(6119));c=new BV;X(c);J(c);},DNK=(b,c,d)=>{let e,$$je;Bf();try{CXy(new B5b);if(c==3)c=2;if(b.bQa.cNY.data[c]===null)e=null;else +{I(E(6120));e=I(E(6121));}}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},EYK=(b,c,d)=>{let $$je;Bf();a:{b:{try{b=DNK(b,c,d);if(b!==null)break b;b=null;}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}try{b=b.cRU;}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}J(b);},Cxo=N(C$),Cxp=N(C$),C5q=(a,b,c)=>{c=c.data;BYB(b,c[0],c[1],c[2]);return null;}; +function ClF(){let a=this;CA.call(a);a.cMD=null;a.b_z=null;a.b09=null;a.bUx=0;a.dbf=0;} +let Fbb=a=>{CJ(a);a.cMD=ALM(a);},B$f=()=>{let a=new ClF();Fbb(a);return a;},Dt8=(a,b)=>{if(b!==null&&b.bQp){Wn();if(b!==BrV){if(b!==AW_){b=new BV;X(b);J(b);}return a.cMD;}return a.b_z;}return a;},E_j=N(),BQR=b=>{let c,$$je;Bf();try{c=b===null?0:(BQR(b.bIX)+BQR(b.bJP)|0)+1|0;}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},AUy=b=>{let c,d,e,$$je;Bf();try{BJT(b);c=b.bKn;if(c.bML<0){d=c.bRV;if(d&12)c.bML=BQR(c.bSn);else if(d&112){d=0;e=c.cfO;while(e!==null){d=d+1|0;e=e.bJP;}c.bML=d;}}d=b.bKn.bML;}catch($$e){$$je +=P($$e);b=$$je;J(b);}return d;},CnD=N(),CWS=null,AZg=()=>{AZg=Z(CnD);Esr();},Cts=(b,c,d,e,f,g,h)=>{let i,j,k,$$je;AZg();Bf();try{if(h){i=BB(F,[c,d,f]);C5q(e,b,i);}j=BSZ(b,c);while(j!==null){i=BB(F,[j,d]);k=DaX(g,b,i);if(k!==null)Cts(b,j,k,e,f,g,h);j=BVm(b,j);}if(!h){i=BB(F,[c,d,f]);C5q(e,b,i);}}catch($$e){$$je=P($$e);b=$$je;J(b);}},FsP=(b,c,d,e,f,g)=>{let h,i,$$je;AZg();Bf();a:{try{b:{c:{d:{e:{h=null;switch(d.bHw.bIE){case 0:break;case 1:break e;case 2:case 3:break d;default:break c;}h=CWS;break b;}I(E(6122));break b;}I(E(6123));break b;}I(E(6124));I(E(6125));}} +catch($$e){$$je=P($$e);b=$$je;break a;}f:{try{i=BB(F,[c,d]);d=DaX(h,b,i);if(d===null)break f;Cts(b,c,d,e,f,h,g);}catch($$e){$$je=P($$e);b=$$je;break a;}return 0;}try{I(E(6125));I(E(5037));J(Gw());}catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);},Esr=()=>{let b;b=new CcZ;E$(b,E(6126));CWS=b;},A3G=N(Bx),Bqr=null,BkA=null,BF2=null,Evj=null,Bko=()=>{Bko=Z(A3G);Ez4();},Duk=(a,b,c)=>{Bko();Ct(a,b,c);},BUG=(a,b)=>{let c=new A3G();Duk(c,a,b);return c;},Ez4=()=>{let b,c,d;Bqr=BUG(E(6127),0);BkA=BUG(E(6128),1);b=BUG(E(6129), +2);BF2=b;c=K(A3G,3);d=c.data;d[0]=Bqr;d[1]=BkA;d[2]=b;Evj=c;}; +function CpL(){let a=this;Wi.call(a);a.ccT=null;a.bWD=null;} +function CYl(){let a=this;CA.call(a);a.bSb=null;a.cHL=null;a.cSn=null;a.cFw=0;a.cwj=0.0;a.bHT=null;a.bZV=null;a.bJJ=null;a.c2$=null;a.cfT=0;a.ddF=null;a.cxo=0;a.bKX=0;a.bZw=0;} +let EIG=a=>{let b;CJ(a);b=new FB;CJ(b);a.bHT=b;b=new FB;CJ(b);a.bZV=b;b=new FB;CJ(b);a.bJJ=b;a.ddF=null;},D_g=()=>{let a=new CYl();EIG(a);return a;},Eh3=a=>{let b,c,d;b=BY(a.bSb);c=BY(a.bHT);d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},A1F=N(Bx),A_n=null,BGw=null,BCb=null,BjV=null,BHJ=null,Dei=null,EOg=null,AWj=()=>{AWj=Z(A1F);FhG();},DEX=(a,b,c)=>{AWj();Ct(a,b,c);},AWl=(a,b)=>{let c=new A1F();DEX(c,a,b);return c;},FhG=()=>{let b,c,d;A_n=AWl(E(6130),0);BGw=AWl(E(6131),1);BCb=AWl(E(6132),2);BjV=AWl(E(6133), +3);BHJ=AWl(E(6134),4);b=AWl(E(6135),5);Dei=b;c=K(A1F,6);d=c.data;d[0]=A_n;d[1]=BGw;d[2]=BCb;d[3]=BjV;d[4]=BHJ;d[5]=b;EOg=c;}; +function BPK(){let a=this;WT.call(a);a.b7b=0;a.b69=null;} +let E7o=a=>{BFj(a);},CIk=()=>{let a=new BPK();E7o(a);return a;},Fp8=(a,b)=>{if(b!==null&&b.bQp){Wn();if(b!==APj){b=new BV;X(b);J(b);}return a.b69;}return a;},CUC=(a,b)=>{a.b69=b;b.cM1=a;},EII=N(),AWk=(b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;f=c.data;b.cyx=0;g=f.length;h=0;i=b.cQj;j=0;while(j=0){c=e.data;t=k[r].b_j;c[t]=c[t]+1|0;r=r+(-1)|0;}s=s.cu_;}return;}c=i.data;e.data[c[0].b_j]=1;return;}},BVQ=(b,c,d,e,f,g,h)=>{let i,j,k,l,m;i=e.data;j=i[g].b_j;if(!g&&j>=f)return;a:{k=d.data;k[g]=i[g];if(!g)i[g]=ARH(b,c.data[j].bP_,j+1|0,null);else{l=g-1|0;m=k[l].bP_+i[l].bP_|0;if(jk[j].bP_){i[g]=ARH(b,k[j].bP_,j+1|0,i[g].cu_);break a;}}i[g]=ARH(b, +m,j,i[l]);if(!h){BVQ(b,c,d,e,f,l,0);BVQ(b,c,d,e,f,l,0);}}}},BWP=(b,c,d,e)=>{let f,g,h,i,j,k,l,m;if((e-d|0)>=7){f=(d+e|0)>>>1|0;BWP(c,b,d,f);BWP(c,b,f,e);g=d;h=f;while(g=f)break b;i=b.data;if(i[d].bP_>i[h].bP_)break b;}j=c.data;i=b.data;k=d+1|0;j[g]=i[d];break a;}j=c.data;i=b.data;k=h+1|0;j[g]=i[h];h=k;k=d;}g=g+1|0;d=k;}return;}k=d+1|0;while(kd){b=c.data;if(b[l].bP_<=b[f].bP_)break;m=b[f];b[f]=b[l];b[l]=m;f=f+(-1)|0;l=l+(-1)|0;}k=k+1|0;}},C2x=N(),AEL=null,AQZ=null,Cf4 +=null,B2b=null,ASt=null,Bde=null,Ol=()=>{Ol=Z(C2x);Fao();},Eb4=()=>{let b,c,d;Ol();b=Ca(32768);c=b.data;d=0;while(d<32768){c[d]=E5Y(d);d=d+1|0;}return b;},E5Y=b=>{Ol();if(b>=193){if(b>=2049){if(b>=3073){if(b>=4097){if(b>=6145){if(b>=8193){if(b>=12289){if(b>=16385){if(b<24577)return 28;return 29;}return 27;}return 26;}return 25;}return 24;}return 23;}return 22;}if(b>=257){if(b>=385){if(b>=513){if(b>=769){if(b>=1025){if(b<1537)return 20;return 21;}return 19;}return 18;}return 17;}return 16;}return 15;}if(b>=13) +{if(b>=17){if(b>=25){if(b>=33){if(b>=49){if(b>=65){if(b>=97){if(b<129)return 13;return 14;}return 12;}return 11;}return 10;}return 9;}return 8;}return 7;}if(b>=5){if(b>=7){if(b<9)return 5;return 6;}return 4;}return b-1|0;},FrU=()=>{let b,c,d,e,f;Ol();b=Ca(4097);c=b.data;d=0;while(true){e=C5(d,4097);if(e>=0)break;a:{if(d<5){f=0;break a;}if(d<9){f=1;break a;}if(d<17){f=2;break a;}if(d<33){f=3;break a;}if(d<65){f=4;break a;}if(d<129){f=5;break a;}if(d<257){f=6;break a;}if(d<513){f=7;break a;}if(d<1025){f=8;break a;}if +(d<2049){f=9;break a;}if(e<0){f=10;break a;}if(d<8193){f=11;break a;}if(d>=16385){f=13;break a;}f=12;}c[d]=f;d=d+1|0;}return b;},EYX=b=>{Ol();if(b>=5){if(b>=9){if(b>=17){if(b>=33){if(b>=65){if(b>=129){if(b>=257){if(b>=513){if(b>=1025){if(b>=2049){if(b>=4097){if(b>=8193){if(b<16385)return (b-8193|0)&4095;return (b-16385|0)&8191;}return (b-4097|0)&2047;}return (b-2049|0)&1023;}return (b-1025|0)&511;}return (b-513|0)&255;}return (b-257|0)&127;}return (b-129|0)&63;}return (b-65|0)&31;}return (b-33|0)&15;}return (b +-17|0)&7;}return (b-9|0)&3;}return (b-5|0)&1;}return 0;},Fao=()=>{AEL=Ey([0,0,0,257,258,259,260,261,262,263,264,265,265,266,266,267,267,268,268,269,269,269,269,270,270,270,270,271,271,271,271,272,272,272,272,273,273,273,273,273,273,273,273,274,274,274,274,274,274,274,274,275,275,275,275,275,275,275,275,276,276,276,276,276,276,276,276,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,279,279,279,279,279,279,279,279,279,279,279,279, +279,279,279,279,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,284,284,284,284,284,284,284,284,284,284,284,284, +284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,285]);AQZ=Ey([0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0]);Cf4=Ey([0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, +15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,0]);B2b=Ey([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);ASt=Eb4();Bde=FrU();}; +function CGm(){let a=this;F.call(a);a.ccR=null;a.c2i=null;a.b0p=null;a.cYo=null;a.bOl=null;} +let Cu7=a=>{let b,c,d;b=a.cYo;FX();b=B0(b,Du(XD(AHu),a.b0p.c5f));c=a.b0p.cvx;if(b!==null){B9();b=Wu(b,CK,c);}d=K(Ob,1);d.data[0]=b;return d;},CyI=a=>{let b,c,d,e,f;b=a.b0p;c=b.cvx;d=c===null?a.bOl.bNl:Fxt(a.bOl.bNl,c);e=a.bOl.bQJ;f=Cu7(a);FX();return SK(e,f,AHu,null,d,b.cbo);},C0Y=a=>{let b,c;b=a.bOl.bQJ;c=Cu7(a);FX();return (SK(b,c,AHu,null,a.bOl.bNl,a.b0p.cbo)).a61(a.bOl.bJ$);},CIC=(a,b)=>{return C1f(A$T(a),b);},CgV=(a,b)=>{return CBR(A7x(a),b);},A$T=a=>{return BOS(a.bOl,Be(a.ccR,0));},A7x=a=>{let b,c;b=a.bOl;c +=a.ccR;return BOS(b,Be(c,c.bGJ-1|0));},Esv=a=>{let b,c,d;b=YE(a.b0p.cbo);c=BY(a.ccR);d=new S;T(d);b=H(H(d,E(6136)),b);Bb(b,32);H(b,c);return Q(d);},BI1=a=>{let b;b=a.b0p.cgD;if(b!==null)return FW(a.c2i,b);return null;},EA3=(a,b)=>{let c,d,e,f,g;c=CCk(a.bOl.bN0,A7x(a));if(c!==null){d=CUX(a);c=CGX(c,b);e=A7x(a);b=QC(e,b);f=new CDh;f.cQ5=e;b=C7Q(b,f);g=20.0+d.bIv+d.bKJ;b=EK(b,g);B3_(c,b);return;}},CUX=a=>{let b;b=a.bOl.bNl;Brc();return b.bev(BCS);}; +function DpR(){let a=this;AJY.call(a);a.cjN=null;a.cyJ=0.0;} +let D_v=(a,b)=>{let c;BUe(a,CYs(b));c=Bk();a.cjN=c;a.cyJ=1.7976931348623157E308;Ea(c,b);},CSG=a=>{let b=new DpR();D_v(b,a);return b;},FkS=a=>{let b,c,d,e;b=a.cyJ;if(b===1.7976931348623157E308){c=CW(Be(a.cjN,0));d=1;while(true){e=a.cjN;if(d>=e.bGJ)break;b=CW(Be(e,d));if(b{return A79(a,b);},Ed1=(a,b)=>{let c;c=new BV;X(c);J(c);},Fv3=(a,b)=>{let c;c=Br(a.cjN);while(Bq(c)){(Bm(c)).RO(b);}}; +function B7e(){let a=this;AJY.call(a);a.cfZ=null;a.cLz=null;a.cF$=0.0;} +let CBX=null,A$l=()=>{A$l=Z(B7e);ETN();},Dzj=(a,b)=>{let c;A$l();BUe(a,CYs(b));c=Bk();a.cfZ=c;a.cF$=1.7976931348623157E308;Ea(c,b);a.cLz=BWG();},C5k=a=>{let b=new B7e();Dzj(b,a);return b;},CYs=b=>{A$l();return (Bm(Br(b))).bQz;},ECu=a=>{let b,c,d,e,f,$$je;b=a.cF$;if(b===1.7976931348623157E308){A$l();c=(DbI(CBX)).data;c[0]=c[0]+1|0;try{if(c[0]>1000){Fw(Fm(),E(6137));DbG(a);J(BTQ(E(6138)));}d=CW(Be(a.cfZ,0));e=1;while(ed)d=b;e=e+1|0;}a.cF$=d;}catch($$e){$$je=P($$e);f=$$je;c[0] +=c[0]-1|0;J(f);}c[0]=c[0]-1|0;return d;}return b;},CSl=(a,b)=>{return A79(a,b);},FvA=(a,b)=>{let c;c=new BV;X(c);J(c);},EQZ=(a,b)=>{b=new BV;X(b);J(b);},DbG=a=>{B3Y(a.cLz);},ETN=()=>{let b;b=new CWC;DrY(b);CBX=b;},Dm1=N(C$),FcX=(a,b,c)=>{let d,e,$$je;c=c.data;b=c[0];d=c[1];VS();d=Fo(d);Bf();a:{b:{try{e=!(AOJ(d,Y(b.cHm,0))<=b.cHl.data[0])?0:1;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return Tr(e);},Dm0=N(C$),DmZ=N(C$),DmY=N(C$),DmX=N(C$),DmW=N(C$),DmV=N(C$),DmU=N(C$),DmT=N(C$),Ckz=N(C$),Efv=(a,b, +c)=>{c=c.data;return B$z(b,c[0],c[1],c[2].bHl);},A$5=(a,b,c,d,e)=>{return B$z(b,c,d,e);},C5S=N(C$),D3r=(a,b,c)=>{c=c.data;return CL(Cfo(c[0],c[1],c[2],c[3]));},Fok=(a,b,c,d,e,f)=>{return Cfo(c,d,e,f);},C5T=N(C$),DKV=(a,b,c)=>{c=c.data;return CL(C_2(c[0],c[1],c[2],c[3]));},D_j=(a,b,c,d,e,f)=>{return C_2(c,d,e,f);},Cu_=N(C$),DZI=(a,b,c)=>{let $$je;b=c.data[2];AJQ();Bf();try{b=A_4(b);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},Cva=N(C$),CyB=N(C$),E1c=(a,b,c)=>{b=c.data[0];Zg();Bf();return b;J(b);},CyA=N(C$),CR1 +=(a,b,c)=>{let d,e,f,g,h,$$je;c=c.data;d=c[0];e=c[2];f=c[3];g=c[4].bOP;Zg();Bf();a:{b:{try{if(e===null){c=f.data;h=b.cGz;c[0]=h;b.cGz=h+2|0;}else{d=d;f.data[0]=EXR(b,!g?FmQ(b,d,e):ABs(b,d,e));}break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return CL(1);},Cyz=N(C$),Cyy=N(C$),Cyx=N(C$),FjN=(a,b,c)=>{let d,$$je;d=c.data[2].bHl;Zg();Bf();a:{b:{c:{d:{try{if(!(d%2|0))break d;b=null;}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}try{b=Eqy(b,d);break b;}catch($$e){$$je=P($$e);b=$$je;break c;}}J(b);}}return b;},Cyv +=N(C$),Cyu=N(C$),FlC=(a,b,c)=>{Zg();Bf();return null;},Df1=N(C$),Dvz=(a,b,c)=>{let $$je;ATl();Bf();try{b=null;}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},Df0=N(C$),CMq=(a,b,c)=>{let $$je;b=c.data[1];ATl();Bf();try{b=A_4(b);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},Df3=N(C$),Df2=N(C$); +let CFX=N(C$),ENE=(a,b,c)=>{c=c.data;return CL(DaQ(c[0],c[1],c[2],c[3]));},FrW=(a,b,c,d,e,f)=>{return DaQ(c,d,e,f);},CFW=N(C$),Es8=(a,b,c)=>{c=c.data;return CL(DnD(c[0],c[1],c[2],c[3]));},Dy3=(a,b,c,d,e,f)=>{return DnD(c,d,e,f);},CFV=N(C$),C_T=N(C$),EKs=(a,b,c)=>{let d,e,$$je;c=c.data;b=c[1];d=c[2];Kf();Bf();a:{try{b=b;d=d;e=FJ(b)-FJ(d)|0;break a;}catch($$e){$$je=P($$e);b=$$je;}J(b);}return CL(e);},CDL=N(C$),EqQ=(a,b,c)=>{E6m(b,c.data[0]);return null;},CDI=N(C$),CDK=N(C$),D$p=(a,b,c)=>{let d,e;c=c.data;d=c[0];e +=c[1];Jf();return Tr(Eqs(b,d,Fo(e)));},CDO=N(C$),D69=(a,b,c)=>{let $$je;b=c.data[0];Jf();Bf();a:{b:{try{if((J8(b)).bZw&&BHD(b))I(E(6139));break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return CL(0);},CDP=N(C$),ERb=(a,b,c)=>{let d,e,f,g,h,$$je;c=c.data;d=c[0];e=c[1];f=c[2];Jf();Bf();a:{b:{c:{d:{try{g=Vw();h=Ca(1);if(Dn(e,0))break d;g=b.ckO;}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}e:{try{if(f!==null)break e;Me(new H2,E(840));break e;}catch($$e){$$je=P($$e);b=$$je;break c;}}f:{try{c=h.data;c[0] +=15;if((J8(d)).bZw&&FkY(d,e,h)!==null){I(E(6140));I(E(5375));I(E(6141));I(E(6142));I(E(5044));break f;}f=null;CDz(new B71);if(D52(b,d))f=null;else{I(E(6143));I(E(6144));I(E(6145));}if(!Bi8(d,null,g,e,c[0],f))break f;ClN(d,e);break f;}catch($$e){$$je=P($$e);b=$$je;break c;}}try{break b;}catch($$e){$$je=P($$e);b=$$je;break c;}}J(b);}}return AXY(g);},CDM=N(C$),CDN=N(C$),EOU=(a,b,c)=>{EWp(b,c.data[0]);return null;},CEd=N(C$),CEe=N(C$),FjI=(a,b,c)=>{let d,e,f,g,h;c=c.data;d=c[0];e=c[1];f=c[2];Jf();g=Vw();if(!Dn(e, +0))g=b.ckO;else{if(f===null)f=Co(E(840));b=Bzc(d);h=CB0(b,e);if(h===null){if(Bi8(d,b.bYe,g,e,15,null))ClN(d,e);}else if(Bi8(d,h.bYe,g,f,h.cyf,null)){I(E(5375));I(E(6141));I(E(6142));}}return g;},CnP=N(C$),Dxg=(a,b,c)=>{let d,e,f,g,$$je;c=c.data;b=c[0];d=c[1];Jf();d=Fo(d);Bf();a:{b:{try{e=b.cm$;b=b.ckU;f=Gm();Cd(d,A_0(d,90*ADs(H9(b))|0));if(e!==null)FM(f,e);else FM(f,(Bzc(b)).bYe);g=Cpj(d,f);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return Tr(g);},CnN=N(C$),EqI=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m, +n;c=c.data;b=c[0];d=c[1];e=c[2].bHl;f=c[3];c=c[4];Jf();g=0;h=0;i=new FB;CJ(i);if(!d.bIQ)e=0;else{Cd(i,d.bHg);j=Bzc(b);k=0;a:{while(true){if(k>=j.bWa)break a;if(KL(H9(b))){I(E(6146));I(E(6147));}else{g=(Bz(j.bPD,k)).bYe.bGT.bGH|0;h=(Bz(j.bPD,k)).bYe.bGU.bGH|0;}l=g;m=i.bGH;n=h;if(A4U(l,m,n))break;k=k+1|0;}if(KL(H9(b)))I(E(6148));else{f.bGT.bGH=(Dh(b)).bGH+l;f.bGT.bGG=(Dh(b)).bGG-Vn(b)/2.0;f.bGU.bGH=(Dh(b)).bGH+n;}c=c.data;f.bGU.bGG=(Dh(b)).bGG+Vn(b)/2.0;c[0]=1;}}return CL(e);},CnM=N(C$),CK7=N(C$),A_Z=(a,b,c)=> +{return Tr(AZq(c.data[0]));},CK6=N(C$),C_y=(a,b,c)=>{let d,$$je;b=c.data[0];Gd();Bf();a:{b:{c:{try{while(I2(b)!==null){b=I2(b);}}catch($$e){$$je=P($$e);b=$$je;break c;}d:{try{if(CD(BZ(b))<=CD(Cg(b)))break d;d=0;}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}e:{try{if(CD(BZ(b))>=CD(Cg(b)))break e;d=1;}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}f:{try{if(DN(BZ(b))>=DN(Cg(b)))break f;d=1;}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}try{d=0;break b;}catch($$e){$$je=P($$e);b=$$je;break c;}}J(b);}}return Tr(d);},CK5 +=N(C$),ELb=(a,b,c)=>{c=c.data;return CL(D67(c[0],c[1]));},CK4=N(C$),EuD=(a,b,c)=>{let d,e,f,g,h,i,$$je;c=c.data;b=c[0];d=c[1];Gd();Bf();a:{b:{c:{d:{try{e=EG();f=EG();b=Bz(b,0);d=Bz(d,0);if(DW(b)!==null)break d;}catch($$e){$$je=P($$e);b=$$je;break c;}e:{try{if(DW(d)!==null)break e;g=0;}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}try{g=1;}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}f:{try{if(DW(d)!==null)break f;g=(-1);}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}g:{try{Cd(e,(DW(b)).bHT);Cd(f,(DW(d)).bHT);h +=e.bGH;i=f.bGH;if(!(h>i))break g;g=(-1);}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}h:{try{if(!(hi))break i;g=(-1);}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}j:{try{if(h{let e,f,g,h,i,$$je;Bf();a:{b:{try{if(c!==null&&d!==null)break b;b=null;} +catch($$e){$$je=P($$e);b=$$je;break a;}return b;}try{e=E7s();e.bLG=null;e.bNo=null;e.bXy=null;BSm(b,e,c,0);e.b7e=0;e.b5J=0;e.bWW=null;e.cmD=null;e.ddh=null;if(c.bOb!==null)J(Gw());}catch($$e){$$je=P($$e);b=$$je;break a;}c:{try{f=e.bVY;g=K(F,4);h=g.data;h[0]=e;h[1]=null;i=new Oh;Ej();Pd(i,Bhq);h[2]=i;h[3]=c;b=f.a5e(b,g);if(b!==null)break c;Gq(e);b=null;}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}d:{try{b.bRV=d.bWH;b.bSn=null;b.c87=null;b.cZ_=0;b.bML=0;b.dck=0;b.cLo=0;e.bKn=b;e.bLG=d.bYj;e.bNo=d;if(c.bOb +!==null)break d;}catch($$e){$$je=P($$e);b=$$je;break a;}return e;}try{J(Gw());}catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);},DAD=N(),CiI=b=>{let c;I(E(6149));c=new BV;X(c);J(c);}; +function CG7(){let a=this;Wi.call(a);a.b6F=null;a.b6E=null;a.b14=null;} +function CkZ(){let a=this;CA.call(a);a.bHO=null;a.cdc=null;} +let EwE=a=>{let b,c;CJ(a);a.bHO=Bqe();b=Bqe();a.cdc=b;c=a.bHO;c.c0C=b;b.c33=c;},V3=()=>{let a=new CkZ();EwE(a);return a;}; +function CW_(){let a=this;CA.call(a);a.bRV=0;a.bSn=null;a.c87=null;a.cfO=null;a.cZ_=0;a.bML=0;a.dck=0;a.cLo=0;} +let E7p=N(),X7=(b,c)=>{let d,e,f,g,$$je;Bf();a:{b:{c:{d:{try{d=b.bKn;e=d.bRV;f=e&4096;if(c!==null)break d;}catch($$e){$$je=P($$e);b=$$je;break b;}e:{try{if(f)break e;}catch($$e){$$je=P($$e);b=$$je;break b;}return (-1);}try{c=d.bSn;break c;}catch($$e){$$je=P($$e);b=$$je;break b;}}f:{try{if(!d.bML)break f;}catch($$e){$$je=P($$e);b=$$je;break b;}return (-1);}try{f=0;break c;}catch($$e){$$je=P($$e);b=$$je;break b;}}g:{try{g=e&(-4097);d.bRV=g;if(g&3){I(E(6150));I(E(6151));I(E(6152));I(E(6153));I(E(6154));I(E(6155));I(E(6156));I(E(6157));I(E(5424));I(E(6158));I(E(6159));I(E(6160));I(E(6161));I(E(6162));I(E(6163));I(E(6157));I(E(5424));break g;}if +(g&12)d.bSn=c;else{I(E(6164));I(E(6165));}if(f)break g;b.bKn.bML=(-1);break g;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return 0;},EKk=N(),AI3=b=>{let c,d,e,$$je;Bf();try{c=null;d=b.bKn;e=d.bRV;if(e&12)c=d.bSn;else if(!(e&3)){c=d.cfO;d.cfO=null;}else{I(E(6166));I(E(6167));I(E(6168));}b=b.bKn;b.bRV=b.bRV&(-4097);b.bML=0;b.bSn=null;}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},C8N=N(),DhF=null,Bjn=()=>{Bjn=Z(C8N);DZR();},E$c=(b,c,d,e)=>{let f,g,h,i,j, +k,l,m,n,o,p,q,$$je;Bjn();Bf();a:{b:{c:{try{f=null;if(!(e&99))break c;b=A$5(c.bNo.bYj,b,c,d,e);}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}d:{try{if(!(e&516)){if(!(e&384))break d;if(c.bNo.bWH&12)break d;}g=c;e:{f:{while(g!==null){f=A$5(g.bNo.bYj,b,g,d,e);if(f!==null)break f;g=g.bWW;}break e;}}c.cmD=g;}catch($$e){$$je=P($$e);b=$$je;break b;}return f;}g:{try{if(c.bNo.bWH&12)break g;I(E(6169));I(E(6170));I(E(6171));I(E(6172));I(E(6173));I(E(6174));I(E(6175));I(E(6176));I(E(6177));I(E(5044));I(E(6178));I(E(6179));I(E(6180));I(E(6181));I(E(6182));I(E(6183));I(E(6184));I(E(6157));I(E(6185));I(E(5424));I(E(6186));I(E(6177));I(E(6187));I(E(6188));I(E(6189));I(E(5044));I(E(5037));J(Gw());} +catch($$e){$$je=P($$e);b=$$je;break b;}}h:{try{if(e&408)break h;b=null;}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}try{h=null;i=null;}catch($$e){$$je=P($$e);b=$$je;break b;}j=e&136;k=e&272;g=c;f=h;while(true){try{if(g===null)break;i:{l=A$5(g.bNo.bYj,b,g,d,e);if(l!==null){m=g.bXy;n=m.bP9;o=m.bQY;m=m.bQn;p=Frw(l,n,o);if(f===null){i=g;f=l;h=p;}else{q=FgF(b,g,p,h,g.bXy,m,o);if(!(j&&q<0)){if(!k)break i;if(q<=0)break i;}i=g;f=l;h=p;}}}g=g.bWW;continue;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{c.cmD=i;break a;} +catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return f;},AYl=(b,c)=>{let d,e,$$je;Bjn();Bf();a:{b:{try{BJT(b);if(c!==null){BJT(c);if(c.bNo!==b.bNo)I(E(6190));}d=c;}catch($$e){$$je=P($$e);b=$$je;break b;}c:{try{while(true){if(d===null)break c;if(d===b)break;d=d.bWW;}b=null;}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}d:{try{e=b.bWW;if(e===null)break d;e.b5J=e.b5J-1|0;break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}e:{try{d=null;b.cmD=d;b.bWW=d;if(c!==null)break e;b.bLG=b.bNo.bYj;}catch($$e){$$je=P($$e);b +=$$je;break b;}return e;}try{b.bWW=c;b.bLG=DhF;c.b5J=c.b5J+1|0;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return c;},DZR=()=>{let b;b=new B$L;E$(b,E(6191));DhF=b;},CcT=N(C$),CfZ=N(C$),Cf0=N(C$),EG0=(a,b,c)=>{let d,$$je;d=c.data[0];OP();Bf();a:{b:{try{if(BVU(d))DJh(b,d);EBY(b,d);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return null;},E64=N(),Bd0=(b,c)=>{let d,$$je;Bf();try{while(Dn(b,0)&&Bnj(Dn(b,0))==Bnj(Dn(c,0))){b=GL(b,1);c=GL(c,1);}d=Bnj(Dn(b,0))-Bnj(Dn(c,0))|0;}catch($$e){$$je=P($$e);b +=$$je;J(b);}return d;},EOQ=N(),FkY=(b,c,d)=>{let $$je;Bf();try{I(E(6192));I(E(6193));I(E(6194));I(E(6195));I(E(6196));I(E(6197));I(E(6198));I(E(6199));I(E(5035));I(E(5831));I(E(5037));J(Gw());}catch($$e){$$je=P($$e);b=$$je;}J(b);},DF_=(b,c)=>{let $$je;Bf();try{I(E(6200));J(Gw());}catch($$e){$$je=P($$e);b=$$je;}J(b);},Eeh=N(),Gq=b=>{return;},EXR=(b,c)=>{let d,e;if(c!==null){d=c.cUL;b=b.ct4;e=CL(d);C9(b,e,c);return d;}return 0;},Eqy=(b,c)=>{let d;if(!(c%2|0)){b=b.ct4;d=CL(c);d=DG(b,d);if(d===null){b=new BV;X(b);J(b);}return d;}b +=new Bt;X(b);J(b);}; +function BnC(){let a=this;WT.call(a);a.ddN=null;a.ctu=null;} +function DhW(){let a=this;CA.call(a);a.bJt=null;a.bKR=null;a.bRs=0;a.bT1=null;a.cZe=null;} +let E0I=a=>{CJ(a);a.bJt=Vw();a.bKR=Vw();},CSI=()=>{let a=new DhW();E0I(a);return a;}; +function DjB(){let a=this;CA.call(a);a.cgi=null;a.cgj=null;} +let BGJ=N(0); +function B6P(){let a=this;CA.call(a);a.bIn=null;a.bI5=null;a.bLK=null;} +function CDp(){let a=this;CA.call(a);a.bLx=null;a.bIK=null;a.c54=null;a.bZq=0;} +function CJ7(){let a=this;CA.call(a);a.bZ7=0;a.bJq=null;} +function CUi(){let a=this;CA.call(a);a.bR_=0.0;a.bSa=null;} +function CJh(){let a=this;CA.call(a);a.bG$=0;a.bG3=null;a.bUy=0;a.b3e=null;a.bLf=0.0;a.bKQ=0.0;a.b5K=0.0;a.b5L=0.0;a.bZH=0;a.bNS=0;a.cp4=0;a.bZC=null;} +let ESE=a=>{let b,c,d,e,f,g;b=a.bG$;c=BY(a.bG3);d=a.bUy;e=BY(a.b3e);f=new S;T(f);g=H(f,E(6201));BE(g,b);c=H(H(H(g,E(6202)),c),E(6203));BE(c,d);H(H(c,E(6204)),e);return Q(f);},DFc=(a,b)=>{let c;c=b;a.bG$=c.bG$;a.bG3=c.bG3;a.bUy=c.bUy;a.b3e=c.b3e;a.bLf=c.bLf;a.bKQ=c.bKQ;a.b5K=c.b5K;a.b5L=c.b5L;a.bZH=c.bZH;a.bNS=c.bNS;a.cp4=c.cp4;a.bZC=c.bZC;}; +function CZG(){let a=this;CA.call(a);a.c9l=null;a.cZ5=null;a.dcL=0;} +function BW6(){let a=this;CA.call(a);a.bO_=null;a.bYe=null;a.bWa=0;a.cj_=null;a.bPD=null;a.cz6=null;a.b1x=0;a.cyf=0;} +let DQo=a=>{let b;CJ(a);b=new FB;CJ(b);a.bO_=b;a.bYe=Gm();},BC9=()=>{let a=new BW6();DQo(a);return a;},DwB=a=>{let b,c,d,e,f,g;b=BY(a.cz6);c=a.cyf;d=a.bWa;e=BY(a.cj_);f=BY(a.bPD);g=new S;T(g);b=H(H(g,b),E(6205));BE(b,c);b=H(b,E(6206));BE(b,d);H(H(H(H(b,E(6207)),e),E(6208)),f);return Q(g);},D0K=(a,b)=>{if(b!==Bo(BW6))a=Brk(a,b);return a;},AKi=N(0); +function Cx1(){F.call(this);this.cvE=null;} +let EN$=(a,b)=>{a.cvE=b;},Fd5=a=>{let b=new Cx1();EN$(b,a);return b;},Fm_=(a,b)=>{b=b;a.cvE.cRC=b;},EPw=a=>{return a.cvE.cRC;}; +function CHB(){Wy.call(this);this.cAO=null;} +let ARE=b=>{let c;c=new CHB;c.cAO=b;return c;},Bur=a=>{return a.cAO.pS();},BYl=(a,b)=>{a.cAO.a3Z(b);}; +function CxY(){F.call(this);this.ct0=null;} +let DS4=(a,b)=>{a.ct0=b;},EjN=a=>{let b=new CxY();DS4(b,a);return b;},EfD=(a,b)=>{b=b;a.ct0.bQa.cNg=b;},EJW=a=>{return a.ct0.bQa.cNg;}; +function B28(){F.call(this);this.bGW=null;} +let DGR=a=>{return;},CRq=a=>{let b;b=CW(a.a96());return (CW(a.a95())+b)/2.0;},Hp=N(B28),CWg=0,B6T=()=>{B6T=Z(Hp);EH6();},OV=(a,b,c)=>{B6T();a.bGW=b;},EUq=a=>{return (-1.0);},Egk=a=>{let b,c;b=a.a64()-a.a$a();if(Df()&&!CWg&&!(b>=0.0)){c=new C4;X(c);J(c);}return b;},D2Q=(a,b)=>{let c;c=a.a$m();if(c instanceof T$&&Bj(b,c.cwq))return 1;return 0;},EH6=()=>{CWg=0;}; +function A6b(){Hp.call(this);this.cUg=null;} +let CUl=(a,b,c,d)=>{OV(a,b,d);a.cUg=c;},CS4=a=>{let b;b=a.cUg.gs();IY();return WV(b,Brd);}; +function Div(){let a=this;A6b.call(a);a.b2v=null;a.bNR=null;a.c0y=null;a.bMB=null;a.crz=null;a.coM=null;a.cat=null;a.cqh=null;} +let EsI=a=>{return a.bMB;},Fj3=a=>{let b,c,d;b=JH(a);c=BY(a.bMB);d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},DXG=a=>{return a.cat;},AEO=(a,b)=>{let c,d;c=Gz(a.b2v,b);d=Gz(a.bNR,b);if(c.RG()>d.RG())return 1;return 0;},BEd=a=>{return A4O(a.bMB);},B_9=a=>{let b,c;b=a.coM;YZ();c=b.beU(BeA,null);if(c!==null)return c.bJw;return 1.0;},AJO=(a,b)=>{let c,d,e;c=AEO(a,b);d=!c?0:1;if(a.cqh.data[d]===null){e=a.bMB.bWj;if(c)e=BMW(e);b=BU_(e,B_9(a));a.cqh.data[d]=AZE(a.crz,BgW(a.bMB),b,a.coM,BZ7(a.bMB));}return a.cqh.data[d];},EiX +=a=>{return (AJO(a,a.bGW)).bd0(a.bGW);},DVm=a=>{let b,c,d,e,f,g;b=CW(a.cat.bIp);if(A4O(a.bMB)){c=a.bNR;d=c.ccI;e=DL(b);Rr();f=AES;Qm(d,e,f);c.cb_=1;}c=AJO(a,a.bGW);f=F3(c,a.bGW);g=(c.beZ(a.bGW,f)).bGL;c=a.b2v;f=a.bMB;b=b+g;AIx(c,f,b);AIx(a.bNR,a.bMB,b);},EsW=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;c=BW(CW(a.cat.bIp));b=EX(b,c);c=a.bMB;d=c.cxq;e=c.cSs;if(d===null&&e===null){c=Im(b);f=AJO(a,c);g=f;h=F3(g,c);i=CW(AWt(a,c));j=CW(AYZ(a,c));f=BW(f.be3(c));k=b;l=EX(k,f);if(a.bMB.chy.dV()){m=Im(l);n=CW(AWt(a, +m));o=2.0;b=a.bMB.chy.dX();while(b.dY()){f=b.dZ();p=CW(Gz(K3(a.c0y,f),m));q=!(p0)t=t-2|0;o=i+5.0*q;r=KJ(j+5.0*t-o,h.bGF);b=EX(k,BM(o));if(BEd(a)){c=a.bNR;f=BM(r.bJb.bGE);f=EX(b,f);h=b;Fa();e=NH;B3();B8r(c,f,h,e,CF);}}else{b=a.b2v;Na();u=OF(b,a,RZ);t=OF(a.bNR, +a,RZ);if(u==1)i=i-5.0;else if(u>2)i=i+5.0*(u-2|0);o=j+5.0*t;r=KJ(i-o,h.bGF);b=EX(k,BM(o));if(BEd(a)){c=a.bNR;f=b;Fa();h=NH;B3();B8r(c,b,f,h,Ft);}}c=BJp(a.bMB);f=b;BxS(f,c);MT(g,b,r,b);Bf4(f);return;}},CEm=a=>{let b,c,d;b=AJO(a,a.bGW);c=a.bGW;d=(F3(b,c)).bGF;if(BEd(a))d=BC(d,(Bm2(a.bNR,a.bGW)).bGF);return d;},EWk=a=>{let b,c,d,e,f,g,h,i;if(!CS4(a)){b=AJO(a,a.bGW);c=a.bGW;d=(F3(b,c)).bGE;e=AWt(a,a.bGW);f=AYZ(a,a.bGW);if(!AEO(a,a.bGW)){c=a.bNR;Na();if(OF(c,a,RZ)>0)f=EK(f,(-5.0));f.RO(EK(e,d));}else{b=a.b2v;Na();g +=OF(b,a,RZ);h=OF(a.bNR,a,RZ);if(g>0)e=EK(e,(-5.0));i=h*5.0;b=EK(EK(f,i),d);OC(e,b);}return;}},AWt=(a,b)=>{return Gz(a.b2v,b);},AYZ=(a,b)=>{if(A4O(a.bMB)){if(!AEO(a,b))return a.bNR.bL$;return QC(a.bNR,b);}return Gz(a.bNR,b);},DO4=a=>{let b;b=a.bGW;if(AEO(a,b))return AYZ(a,b);return AWt(a,b);},DV4=a=>{let b,c,d,e,f,g;b=a.bGW;c=(F3(AJO(a,b),b)).bGE;d=!AEO(a,b)?AWt(a,b):AYZ(a,b);e=!AEO(a,b)?AYZ(a,b):AWt(a,b);f=K(Yb,2);g=f.data;g[0]=e;g[1]=EK(d,c);return BFU(f);}; +function Bmj(){let a=this;A6b.call(a);a.bKp=null;a.bO2=null;a.c5L=null;a.cTD=null;a.cI2=null;a.b2u=null;a.cua=null;} +let D9B=a=>{return a.bO2;},A4s=a=>{return (AVf(a,a.bGW)).bd0(a.bGW);},Fii=(a,b,c,d,e,f,g,h)=>{CUl(a,b,f,h);a.bKp=c;a.cI2=g;a.bO2=d;a.c5L=e;a.cTD=f;if(!d.b2c)a.b2u=A2z(h,A4s(a),AZy(a));else a.b2u=BzQ(h,A4s(a),AZy(a));},EpS=(a,b,c,d,e,f,g)=>{let h=new Bmj();Fii(h,a,b,c,d,e,f,g);return h;},DD9=a=>{return a.b2u;},AVf=(a,b)=>{let c,d;if(a.cua===null){c=a.bO2.bWj;d=Si(c.bM6,c.bKu,c.bKc,c.bLV,c.bLW,c.bMT,1,c.bMo,c.bLo,c.bMD);a.cua=AZE(a.c5L,BgW(a.bO2),d,a.cTD,BZ7(a.bO2));}return a.cua;},BFv=a=>{let b,c,d,e,f;b=AVf(a, +a.bGW);c=a.bGW;d=F3(b,c);c=b.beZ(a.bGW,d);e=b.be8(a.bGW,d);f=CW(a.b2u.bIp);if(C5_(a.bO2))AIx(a.bKp,a.bO2,f+e.bGL);else{d=a.bO2.b0v;Hy();b=PX;if(OS(d,b))AIx(a.bKp,a.bO2,f+c.bGL);else{d=a.bO2.b0v;b=Vs;if(OS(d,b))AIx(a.bKp,a.bO2,f+e.bGL);}}},BXL=(a,b)=>{let c,d,e,f,g,h,i,j;c=BW(CW(a.b2u.bIp));c=EX(b,c);d=Im(c);e=AVf(a,d);f=F3(e,d);g=CW(AUN(a));d=a.bKp;Na();h=OF(d,a,AAm);i=OF(a.bKp,a,ATh);b=new CPu;b.dbq=h;b.dbp=i;Kh(b);if(!AI0(a)){g=g+5.0*h;if(h{let b,c;b=AVf(a,a.bGW);c=a.bGW;return (F3(b,c)).bGF;},B3H=a=>{let b,c,d,e;if(!CS4(a)){if(!AI0(a)){b=(SP(a.cI2)).dX();a:{b:{while(b.dY()){if(b.dZ()===a.bKp&&b.dY())break b;}b=null;break a;}b=b.dZ();}if(b!==null){b=Gz(b,a.bGW);c=ASM(a);OC(b,c);}C7J(a);}else{c=null;b=(SP(a.cI2)).dX();c:{d:{while(true){if(!b.dY())break d;d=b.dZ();if(d===a.bKp)break;c=d;}break c;}c=null;}if(c!==null){b=Gz(a.bKp,a.bGW);c=BaN(c,a.bGW);e=B2G(a);c=EK(c,e);OC(b, +c);}C7J(a);}return;}},C7J=a=>{let b,c,d;b=a.bGW;if(!AI0(a)){c=CW(ASM(a))-CW(QC(a.bKp,b));if(c>0.0)BqQ(a.bKp,c);}else{d=CW(a.bKp.bL$)-CW(AUN(a));if(d>0.0)Bl1(a.bKp,d);}},AI0=a=>{return a.bO2.bWj.bLo;},AUN=a=>{let b,c,d;if(AI0(a)){b=a.bKp;Na();c=OF(b,a,AAm)<=0?0.0:5.0;d=Gz(a.bKp,a.bGW);c= -B2G(a)-c;return EK(d,c);}d=a.bGW;return Gz(a.bKp,d);},ASM=a=>{let b,c;if(!AI0(a)){b=BaN(a.bKp,a.bGW);c=B2G(a);return EK(b,c);}return BaN(a.bKp,a.bGW);},B2G=a=>{let b,c;b=AVf(a,a.bGW);c=a.bGW;return (F3(b,c)).bGE;},BM9=a=>{let b, +c,d;if(AI0(a)){b=a.bKp;Na();c=OF(b,a,AAm)<=0?0.0:5.0;d=Gz(a.bKp,a.bGW);c= -CRr(a)-c;return EK(d,c);}return AUN(a);},BYe=a=>{let b,c;if(!AI0(a)){b=BaN(a.bKp,a.bGW);c=CRr(a);return EK(b,c);}return ASM(a);},CRr=a=>{let b,c,d;b=AVf(a,a.bGW);c=a.bGW;d=A2E(b,c);return BC(42.0,d===0.0?0.0:R2(b)+d);}; +function BGu(){let a=this;Hp.call(a);a.bSk=null;a.c6z=null;a.cND=null;a.c2p=null;a.cmV=null;a.cEv=null;} +let DW6=a=>{return a.c6z;},E8X=a=>{return A4s(a.bSk);},Epy=(a,b,c,d,e,f,g)=>{let h,i;OV(a,b.bGW,g);a.bSk=b;a.c6z=c;a.cND=d;a.c2p=e;a.cmV=f;h=b.b2u;b=new AAD;e=h.bIp;i=Cdz(a);AVi(b,e,N8(e,i),h.bUO,h.bVd);a.cEv=b;},DLw=(a,b,c,d,e,f)=>{let g=new BGu();Epy(g,a,b,c,d,e,f);return g;},DNU=a=>{return a.cEv;},DDA=a=>{BFv(a.bSk);},Bvo=(a,b)=>{let c,d,e,f;c=a.cND;d=ACt(a.cmV);FX();b=RQ;e=ADE(a.cmV,a.c2p);f=a.cmV;return AFY(c,d,b,e,f.bP4,f.bMc);},CCj=(a,b)=>{let c,d;c=F3(Bvo(a,b),b);b=AUN(a.bSk);d= -c.bGE;return EK(b,d);},DCU +=(a,b)=>{let c,d,e,f,g;c=Im(b);d=Bvo(a,c);e=F3(d,c);f=KJ(e.bGE,e.bGF);BXL(a.bSk,b);g=CCj(a,c);c=BW(CW(a.cEv.bIp));b=EX(b,c);c=BM(CW(g));MT(d,EX(b,c),f,b);},Cdz=a=>{let b,c;b=Bvo(a,a.bGW);c=a.bGW;c=F3(b,c);return BC(AZy(a.bSk),c.bGF);},Dtg=a=>{let b,c;B3H(a.bSk);b=a.bSk.bKp;c=CW(b.bL$)-CW(Ddg(a));if(c>0.0)Bl1(b,c);},Ddg=a=>{return CCj(a,a.bGW);},Fh3=a=>{return ASM(a.bSk);},DLf=a=>{let b,c,d;b=Bvo(a,a.bGW);c=a.bGW;d=(F3(b,c)).bGE;b=BM9(a.bSk);d= -d;return EK(b,d);},D$r=a=>{return BYe(a.bSk);}; +function B5t(){let a=this;Hp.call(a);a.b1r=null;a.cLe=null;a.c12=null;a.cLa=null;a.c45=null;a.cci=null;a.cCx=null;} +let EcL=a=>{return a.cLe;},DQL=a=>{return a.b1r.a$a();},FcU=(a,b,c,d,e,f,g,h)=>{let i,j;OV(a,b.bGW,h);a.b1r=b;a.cLe=c;a.c12=d;a.cLa=e;a.cci=g;a.c45=f;i=b.a94();b=new AAD;e=i.bIp;j=CeO(a);AVi(b,e,N8(e,j),i.bUO,i.bVd);a.cCx=b;},CM3=(a,b,c,d,e,f,g)=>{let h=new B5t();FcU(h,a,b,c,d,e,f,g);return h;},DFA=a=>{return a.cCx;},D0v=a=>{a.b1r.bfd();},BOI=(a,b)=>{let c,d,e,f;b=a.c12;c=ACt(a.cci);d=BYG(a.cci.bOz);e=ADE(a.cci,a.cLa);f=a.cci;return AFY(b,c,d,e,f.bP4,f.bMc);},COF=(a,b)=>{let c,d;c=F3(BOI(a,b),b);b=Gz(a.c45, +b);d= -c.bGE;return EK(b,d);},Dt_=(a,b)=>{let c,d,e,f,g;c=Im(b);d=BOI(a,c);e=F3(d,c);f=KJ(e.bGE,e.bGF);a.b1r.cC(b);g=COF(a,c);c=BW(CW(a.cCx.bIp));b=EX(b,c);c=BM(CW(g));MT(d,EX(b,c),f,b);},CeO=a=>{let b,c;b=BOI(a,a.bGW);c=a.bGW;c=F3(b,c);return BC(a.b1r.a64(),c.bGF);},EEA=a=>{a.b1r.RS();},EAE=a=>{return COF(a,a.bGW);},EZ6=a=>{return a.b1r.a96();}; +function B27(){let a=this;Hp.call(a);a.bRn=null;a.cVN=null;a.c4u=null;a.cYZ=null;a.cmF=null;a.cwd=null;} +let Emi=a=>{return a.cVN;},E$D=a=>{return A4s(a.bRn);},FrX=(a,b,c,d,e,f,g)=>{let h,i;OV(a,b.bGW,g);a.bRn=b;a.cVN=c;a.c4u=d;a.cYZ=e;a.cmF=f;h=b.b2u;b=new AAD;e=h.bIp;i=Cpb(a);AVi(b,e,N8(e,i),h.bUO,h.bVd);a.cwd=b;},DxF=(a,b,c,d,e,f)=>{let g=new B27();FrX(g,a,b,c,d,e,f);return g;},EPQ=a=>{return a.cwd;},D86=a=>{BFv(a.bRn);},BbW=(a,b)=>{let c,d,e,f;c=a.c4u;d=ACt(a.cmF);FX();b=RQ;e=ADE(a.cmF,a.cYZ);f=a.cmF;return AFY(c,d,b,e,f.bP4,f.bMc);},Ddl=(a,b)=>{return ASM(a.bRn);},Ef6=(a,b)=>{let c,d,e,f,g;c=Im(b);d=BbW(a, +c);e=F3(d,c);f=KJ(e.bGE,e.bGF);BXL(a.bRn,b);g=Ddl(a,c);c=BW(CW(a.cwd.bIp));b=EX(b,c);c=BM(CW(g));MT(d,EX(b,c),f,b);},Cpb=a=>{let b,c;b=BbW(a,a.bGW);c=a.bGW;c=F3(b,c);return BC(AZy(a.bRn),c.bGF);},DHo=a=>{let b,c,d;B3H(a.bRn);b=a.bGW;c=a.bRn.bKp;d=CW(C3K(a))-CW(QC(c,b));if(d>0.0)BqQ(c,d);},EXh=a=>{return AUN(a.bRn);},C3K=a=>{let b,c,d;b=BbW(a,a.bGW);c=a.bGW;c=F3(b,c);b=Ddl(a,a.bGW);d=c.bGE;return EK(b,d);},E7x=a=>{return BM9(a.bRn);},EZF=a=>{let b,c,d;b=BbW(a,a.bGW);c=a.bGW;d=(F3(b,c)).bGE;return EK(BYe(a.bRn), +d);}; +function BDp(){let a=this;Hp.call(a);a.b0c=null;a.cuM=null;a.cWR=null;a.cXe=null;a.ckI=null;a.caL=null;a.cEE=null;} +let EOZ=a=>{return a.cuM;},ETs=a=>{return a.b0c.a$a();},ElS=(a,b,c,d,e,f,g,h)=>{let i,j;OV(a,b.bGW,h);a.b0c=b;a.cuM=c;a.cWR=d;a.cXe=e;a.caL=g;a.ckI=f;i=b.a94();b=new AAD;e=i.bIp;j=Czl(a);AVi(b,e,N8(e,j),i.bUO,i.bVd);a.cEE=b;},Dsg=(a,b,c,d,e,f,g)=>{let h=new BDp();ElS(h,a,b,c,d,e,f,g);return h;},E91=a=>{return a.cEE;},D3D=a=>{a.b0c.bfd();},BTG=(a,b)=>{let c,d,e,f;b=a.cWR;c=ACt(a.caL);d=BYG(a.caL.bOz);e=ADE(a.caL,a.cXe);f=a.caL;return AFY(b,c,d,e,f.bP4,f.bMc);},Ci8=(a,b)=>{let c,d,e;if(!A4O(a.cuM)){c=a.ckI;Na();d +=OF(c,a,RZ);b=Gz(a.ckI,b);e=d*5.0;return EK(b,e);}return QC(a.ckI,b);},D_c=(a,b)=>{let c,d,e,f,g;c=Im(b);d=BTG(a,c);e=F3(d,c);f=KJ(e.bGE,e.bGF);a.b0c.cC(b);g=Ci8(a,c);c=BW(CW(a.cEE.bIp));b=EX(b,c);c=BM(CW(g));MT(d,EX(b,c),f,b);},Czl=a=>{let b,c;b=BTG(a,a.bGW);c=a.bGW;c=F3(b,c);return BC(a.b0c.a64(),c.bGF);},EQM=a=>{a.b0c.RS();},D3f=a=>{return a.b0c.a95();},EsZ=a=>{let b,c,d;b=BTG(a,a.bGW);c=a.bGW;c=F3(b,c);b=Ci8(a,a.bGW);d=c.bGE;return EK(b,d);}; +function A7w(){let a=this;Hp.call(a);a.bNe=null;a.cSF=null;a.cVf=null;a.chV=null;a.ce3=null;a.chj=null;a.dbn=10.0;} +let Eh_=a=>{return a.cSF;},EjS=a=>{return a.bNe.a$a();},DhQ=(a,b,c,d,e,f,g)=>{let h,i;OV(a,b.bGW,g);a.dbn=10.0;a.bNe=b;a.cSF=c;a.cVf=d;a.chV=e;a.ce3=f;h=b.a94();b=new AAD;e=h.bIp;i=C8L(a);AVi(b,e,N8(e,i),h.bUO,h.bVd);a.chj=b;},DYK=a=>{return a.chj;},ELz=a=>{a.bNe.bfd();},BAP=(a,b)=>{let c,d,e,f;c=a.cVf;d=ACt(a.ce3);FX();b=RQ;e=ADE(a.ce3,a.chV);f=a.ce3;return AFY(c,d,b,e,f.bP4,f.bMc);},C0m=(a,b)=>{return a.bNe.a95();},Ded=(a,b,c,d,e,f)=>{let g,h,i,j;g=a.chV.cp();B8();g=B0(g,Jc);B9();h=(BJ(g,Cz)).cu(a.chV.ly());i +=e-c;j=f-d;g=Bh(c,d);b=EX(EX(b,g),h);h=J$(2.0,2.0,1.0);b=EX(b,h);h=EB(i,j);BmB(b,h);},C8L=a=>{let b,c;b=BAP(a,a.bGW);c=a.bGW;c=F3(b,c);return a.bNe.a64()+c.bGF+10.0;},Fmg=a=>{a.bNe.RS();},Eqh=a=>{return a.bNe.a95();},D2L=a=>{let b,c,d,e;b=a.bNe.a96();c=BAP(a,a.bGW);d=a.bGW;d=F3(c,d);c=a.bNe.a95();e=d.bGE;return BFU(BB(Yb,[b,EK(c,e)]));},CVs=a=>{return (CW(a.bNe.a95())+CW(a.bNe.a96()))/2.0;},Dkn=N(A7w),ELt=(a,b)=>{let c,d,e,f,g,h,i,j;c=Im(b);d=BAP(a,c);e=F3(d,c);f=KJ(e.bGE,e.bGF);a.bNe.cC(b);g=BW(CW(a.chj.bIp));b +=EX(b,g);h=CVs(a);i=CW(C0m(a,c));j=a.bNe.a64();c=new FG;j=j+10.0;Hs(c,i,j);MT(d,EX(b,c),f,b);Ded(a,b,h,a.bNe.a$a(),i+e.bGE/2.0,j+5.0);},C4_=N(A7w),DxC=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=Im(b);d=BAP(a,c);e=F3(d,c);f=KJ(e.bGE,e.bGF);g=a.bNe;h=BW(e.bGF+10.0);i=b;g.cC(EX(i,h));b=EX(i,BW(CW(a.chj.bIp)));j=CVs(a);k=CW(C0m(a,c));c=BM(k);MT(d,EX(b,c),f,b);l=a.bNe.a$a();m=e.bGF;Ded(a,b,j,l+m+10.0,k+e.bGE/2.0,m-10.0);}; +function CYu(){let a=this;Hp.call(a);a.b3j=null;a.bNI=null;a.cOn=null;a.cUW=null;a.ceT=null;a.caX=null;a.cq2=null;} +let Du1=a=>{return a.bNI;},ES2=(a,b,c,d,e,f,g)=>{OV(a,f.bJ$,g);a.ceT=f;a.b3j=b;a.bNI=c;a.cOn=d;a.cUW=e;if(!c.b2c)a.caX=A2z(g,BK6(a),BL3(a));else a.caX=BzQ(g,BK6(a),BL3(a));},FsF=(a,b,c,d,e,f)=>{let g=new CYu();ES2(g,a,b,c,d,e,f);return g;},DTV=a=>{return a.caX;},BK6=a=>{return (ARF(a,a.bGW)).bd0(a.bGW);},ARF=(a,b)=>{let c;if(a.cq2===null){b=a.bNI;c=b.bWj;if(BVI(b.bRm)==(-1))c=BMW(c);a.cq2=AZE(a.cOn,BgW(a.bNI),c,a.cUW,BZ7(a.bNI));}return a.cq2;},DW5=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=BW(CW(a.caX.bIp));b=EX(b, +c);c=Im(b);d=ARF(a,c);e=F3(d,c);f=Cml(a,c);g=Dde(a,c);h=Bk6(a)?CW(Bqm(a,c))-f:!DkP(a)?0.0:CW(BI6(a,c))-g;c=a.b3j;Na();i=OF(c,a,RZ);if(i>0){if(Bx1(a.bNI.bRm))f=f+5.0*i;else g=g+5.0*(i-2|0);}c=a.bNI;j=c.bWj;k=c.bRm;l=j.bLV;OG();c=PA;if(l===c){KK();if(k===Xk)f=f+6.0;}j=j.bLW;if(j===c){KK();if(k===Ug)f=f+6.0;}if(j===c){KK();if(k===WE)g=g-6.0;}if(l===c){KK();if(k===Xa)g=g-6.0;}l=KJ(g-f,e.bGF);l.b_S=h;c=BM(f);b=EX(b,c);c=BJp(a.bNI);m=b;BxS(m,c);MT(d,b,l,b);Bf4(m);},Cjs=a=>{return a.bNI.c6w;},BL3=a=>{let b,c;b=ARF(a, +a.bGW);c=a.bGW;return (F3(b,c)).bGF;},B48=(a,b)=>{return (F3(ARF(a,b),b)).bGE;},E6p=a=>{let b,c,d;b=ARF(a,a.bGW);c=a.bGW;d=(F3(b,c)).bGE;if(!Bx1(a.bNI.bRm)){b=Gz(a.b3j,a.bGW);c=EK(a.ceT.bOY,d);OC(b,c);}},FbK=a=>{let b,c,d,e;b=ARF(a,a.bGW);c=a.bGW;d=F3(b,c);e=(b.beZ(a.bGW,d)).bGL;AIx(a.b3j,a.bNI,CW(a.caX.bIp)+e);},Bqm=(a,b)=>{let c,d;if(!Bx1(a.bNI.bRm)){c=Gz(a.b3j,b);d= -B48(a,b);return EK(c,d);}return Gz(a.b3j,b);},BI6=(a,b)=>{let c,d;if(!C6a(a.bNI.bRm)){c=Bqm(a,b);d=B48(a,b);return EK(c,d);}return Gz(a.b3j, +b);},Cml=(a,b)=>{if(!Bk6(a))return CW(Bqm(a,b));return AW1(a.ceT);},Dde=(a,b)=>{if(!DkP(a))return CW(BI6(a,b));return BlV(a.ceT);},DIO=a=>{return Bqm(a,a.bGW);},DSc=a=>{return BI6(a,a.bGW);},DAL=a=>{let b;if(Bk6(a)){b=Cml(a,a.bGW);return (b+(!Bk6(a)?Dde(a,a.bGW):b+B48(a,a.bGW)))/2.0;}return CRq(a);},DkP=a=>{return !(Bx1(a.bNI.bRm)&&!Cjs(a))?0:1;},Bk6=a=>{return !(C6a(a.bNI.bRm)&&!Cjs(a))?0:1;}; +function ARr(){Ma.call(this);this.b7M=null;} +let DGe=(a,b)=>{let c;c=Br(a.b7M);while(Bq(c)){if(C4S(Bm(c),b))return 1;}return 0;},ALf=a=>{return Br(a.b7M);}; +function A3W(){let a=this;Hp.call(a);a.bO6=null;a.b4k=null;a.c0D=null;a.cNZ=null;a.bOp=null;a.ccK=null;a.cxn=null;} +let Few=a=>{return a.bOp;},CzV=a=>{return (BiX(a,a.bGW)).a61(a.bGW)/2.0;},ExN=(a,b,c,d,e,f,g,h)=>{let i,j,k,l,m,n;OV(a,b,h);a.bO6=c;a.b4k=d;a.bOp=e;a.c0D=f;a.cNZ=g;i=CzV(a);j=C_V(a);k=Bv(BB(F,[c,e.bJ_]));l=h.c18;if(e.b12&&l!==null&&PT(l,k))a.ccK=B2F(BCx(h,j),l);else if(!e.b12){m=G$();EQ(m,k);a.ccK=B2F(A2z(h,i,j),m);}else{n=l!==null?ABx(l):G$();EQ(n,k);a.ccK=B2F(BzQ(h,i,j),n);}},DM2=(a,b,c,d,e,f,g)=>{let h=new A3W();ExN(h,a,b,c,d,e,f,g);return h;},E4Y=a=>{return a.ccK;},BiX=(a,b)=>{let c,d,e,f;if(a.cxn===null) +{b=a.c0D;c=ACt(a.bOp);d=BYG(a.bOp.bOz);e=ADE(a.bOp,a.cNZ);f=a.bOp;a.cxn=BBr(b,c,d,e,f.bP4,f.bMc,f.bJ_);}return a.cxn;},BYG=b=>{ACc();if(b!==AEU){if(b===AM4){FX();return AFX;}FX();return RQ;}FX();return AFq;},D7M=(a,b)=>{let c,d,e,f,g;c=BW(CW(a.ccK.bIp));b=EX(b,c);c=Im(b);d=BiX(a,c);e=F3(d,c);f=CW(A8J(a,c));g=KJ(AU3(a,c),e.bGF);c=BM(f);b=EX(b,c);MT(d,b,g,b);},AU3=(a,b)=>{let c,d,e,f;c=(F3(BiX(a,b),b)).bGE;d=a.bOp.bJ_;HK();if(d===TX){e=CW(a.bO6.bL$);f=CW(QC(a.b4k,b))-e;if(c{let c, +d,e,f;c=a.bOp.bJ_;d=AU3(a,b);HK();if(c!==Lr){if(c!==OL){if(c!==TX){if(c===ARg){b=Gz(a.bO6,b);d= -d/2.0;return EK(b,d);}b=new BV;Bp(b,HT(c));J(b);}b=BNT(Gz(a.bO6,b),Gz(a.b4k,b));d= -d/2.0;return EK(b,d);}e=a.bO6;Na();f=OF(e,a,RZ)*5.0;return EK(Gz(a.bO6,b),f);}b=Gz(a.bO6,b);d= -d;return EK(b,d);},C_V=a=>{let b,c;b=BiX(a,a.bGW);c=a.bGW;return (F3(b,c)).bGF;},Eag=a=>{let b,c,d,e;b=a.bGW;c=CW(a.bO6.bL$)-CW(C7_(a));if(c>0.0)Bl1(a.bO6,c);d=a.bOp.bJ_;HK();e=d!==TX?a.bO6:a.b4k;c=CW(Dce(a))-CW(QC(e,b));if(c>0.0)BqQ(e, +c);},C7_=a=>{let b,c,d;b=A8J(a,a.bGW);c=a.bOp.bJ_;HK();if(c===TX){d=BB(Yb,[b,a.bO6.bL$]);return CSG(Bv(d));}return b;},Dce=a=>{let b,c,d;b=A8J(a,a.bGW);c=AU3(a,a.bGW);b=EK(b,c);d=a.bOp.bJ_;HK();if(d===TX)return BFU(BB(Yb,[b,QC(a.b4k,a.bGW)]));return b;}; +function B80(){let a=this;Ma.call(a);a.c19=null;a.cWg=null;} +let DWV=(a,b)=>{return 0;},Eww=(a,b)=>{return 1;}; +function Dk8(){let a=this;Hp.call(a);a.ckK=null;a.cKD=null;a.cMo=null;a.bXJ=null;a.cro=null;} +let Fpq=a=>{return a.bXJ;},Da$=a=>{return BWB(a)/2.0;},Fuz=(a,b,c,d,e,f,g)=>{OV(a,b,g);a.ckK=c;a.bXJ=d;a.cKD=e;a.cMo=f;a.cro=A2z(g,Da$(a),BWB(a));},D8V=(a,b,c,d,e,f)=>{let g=new Dk8();Fuz(g,a,b,c,d,e,f);return g;},D22=a=>{return a.cro;},BYD=(a,b,c)=>{let d,e;b=a.cKD;d=ACt(c);e=c.bOz;ACc();if(e===AEU){FX();e=AFq;}else if(e!==AM4){FX();e=RQ;}else{FX();e=AFX;}return BBr(b,d,e,ADE(c,a.cMo),c.bP4,c.bMc,c.bJ_);},Fg6=(a,b)=>{let c,d,e,f,g,h,i,j;c=BW(CW(a.cro.bIp));b=EX(b,c);c=Im(b);d=ALf(a.bXJ);while(Bq(d)){e=Bm(d);f +=BYD(a,c,e);g=F3(f,c);h=CW(BaK(a,c,e));i=KJ(BAZ(a,c,e),g.bGF);j=BM(h);j=EX(b,j);MT(f,j,i,j);}},BAZ=(a,b,c)=>{return (F3(BYD(a,b,c),b)).bGE;},Dso=(a,b,c)=>{return Gz(K3(a.ckK,c.bSy),b);},BaK=(a,b,c)=>{let d,e,f,g,h;d=K3(a.ckK,c.bSy);e=c.bJ_;f=BAZ(a,b,c);HK();if(e!==Lr){if(e!==OL){if(e!==TX){if(e!==ARg){b=new BV;Bp(b,HT(e));J(b);}b=Gz(d,b);f= -f/2.0;return EK(b,f);}g=K3(a.ckK,c.b1F);b=BNT(Gz(d,b),Gz(g,b));f= -f/2.0;return EK(b,f);}Na();h=OF(d,a,RZ)*5.0;d=Gz(d,b);f=h+CKg(a,b,c);return EK(d,f);}d=Gz(d,b);f= -f- +CKg(a,b,c);return EK(d,f);},CKg=(a,b,c)=>{let d,e,f;d=0.0;e=ALf(a.bXJ);while(Bq(e)){f=Bm(e);if(f===c)return d;if(f.bJ_===c.bJ_&&f.bSy===c.bSy)d=d+BAZ(a,b,f);}return d;},BWB=a=>{let b,c,d,e,f;b=0.0;c=ALf(a.bXJ);while(Bq(c)){d=Bm(c);e=BYD(a,a.bGW,d);f=a.bGW;b=BC(b,(F3(e,f)).bGF);}return b;},ET5=a=>{let b,c,d,e,f,g,h,i,j;b=a.bXJ.b7M;c=0;while(c<(b.dV()-1|0)){d=c+1|0;e=d;while(e{let b,c,d;b=Bk();c=ALf(a.bXJ);while(Bq(c)){d=Bm(c);d=BaK(a,a.bGW,d);U(b,d);}return ByK(b);},BOq=(a,b,c)=>{let d,e;d=BaK(a,b,c);e=BAZ(a,b,c);return EK(d,e);},FjA=a=>{let b,c,d;b=Bk();c=ALf(a.bXJ);while(Bq(c)){d=Bm(c);d=BOq(a,a.bGW,d);U(b,d);}return Bij(b);}; +function A58(){let a=this;Ma.call(a);a.cai=null;a.bZz=null;a.cbJ=null;a.cf4=null;a.czK=null;a.cLt=null;} +let Ea6=a=>{let b;b=a.bZz;Vp();if(b===X6){B8();return CBf;}B8();return Dqh;},CU8=a=>{let b,c,d,e,f;b=K(Ob,2);c=a.czK;if(c===null)d=null;else{B9();d=Wu(c,CK,a.bdO());}e=b.data;e[0]=d;f=a.cLt;if(f===null)d=null;else{B9();d=Wu(f,CK,a.cf4);}e[1]=d;return b;},CRz=(a,b,c,d,e,f)=>{a.cai=b;a.cbJ=c;a.bZz=d;a.cf4=e;a.czK=B0(f,Ea6(a));c=a.bZz;Vp();if(c!==X6){B8();b=C2Z;}else{B8();b=CuT;}b=B0(f,b);if(a.bZz!==X6){B8();d=B0(f,CbQ);if(b===null)b=d;else{e=a.czK;Pb();b=C82(b,d,e,Qv);}}a.cLt=b;},DQk=a=>{let b,c,d,e;b=JH(a);c +=BY(a.bZz);d=a.cai;e=new S;T(e);b=H(e,b);Bb(b,32);b=H(b,c);Bb(b,32);H(b,d);return Q(e);},CKb=a=>{return a.bZz;},C3s=a=>{return a.cf4;}; +function B5a(){let a=this;A58.call(a);a.c3O=null;a.cpw=null;a.dbm=null;a.cvR=0;} +let Bhl=a=>{let b,c,d;b=CU8(a);c=b.data;if(c[0]!==null){d=c[0];B9();c[0]=Wu(d,CK,a.cpw);}return b;},BRQ=a=>{return a.cpw;},E_c=(a,b)=>{return 0;},DrJ=a=>{return !(!a.cvR&&!Di0(a))?1:0;},Di0=a=>{return Bj(a.cai,E(2416));}; +function B6v(){let a=this;Hp.call(a);a.cOC=null;a.cL5=null;a.cJK=null;a.ch0=null;a.cji=null;a.cyS=null;} +let Fdw=a=>{return a.cJK;},D7j=(a,b,c,d)=>{OV(a,c.bJ$,d);a.cji=c;a.cJK=b;a.cOC=c.bQJ;a.cL5=c.bNl;a.ch0=c.bOY;a.cyS=AH9(d.bQ2,Cig(a));},Ewp=(a,b,c)=>{let d=new B6v();D7j(d,a,b,c);return d;},ESs=a=>{return a.cyS;},BIl=(a,b)=>{let c,d,e;c=a.cOC;d=a.cJK;e=K(Ob,1);e.data[0]=d.cWg;FX();return SK(c,e,ALB,null,a.cL5,d.c19);},Elt=(a,b)=>{let c,d,e,f;c=BW(CW(a.cyS.bIp));b=EX(b,c);c=Im(b);d=BIl(a,c);e=d.a$u(c);f=KJ(BlV(a.cji)-AW1(a.cji)-CW(a.ch0),e.bGF);c=BM(AW1(a.cji));b=EX(b,c);d.a$w(b,f,b);},Cig=a=>{return ((BIl(a, +a.bGW)).a$u(a.bGW)).bGF;},Eiv=a=>{return;},DVv=a=>{return a.ch0;},DNx=a=>{let b,c,d;b=(BIl(a,a.bGW)).a$u(a.bGW);c=a.ch0;d=b.bGE;return EK(c,d);}; +function AYJ(){let a=this;A58.call(a);a.cAy=null;a.c3b=null;a.cDY=null;} +let B41=a=>{let b;b=a.c3b;if(b===null)return a.cAy.cpw;return b;},ERf=(a,b)=>{return 0;},Eta=a=>{return Di0(a.cAy);},Fk7=(a,b)=>{return 1;},EEN=(a,b)=>{let c,d,e,f;U(a.cDY,b);c=b.bJ_;HK();if(c!==Lr&&c!==OL){b=new JK;d=K(Bi,1);e=d.data;c=F9(c.bHx);f=new S;T(f);H(H(H(f,E(4224)),c),E(6209));e[0]=Q(f);J2(b,d);return b;}return null;}; +function V9(){let a=this;Hp.call(a);a.bMh=null;a.bW6=null;a.b9g=null;a.b26=null;a.cIA=null;a.cnw=null;a.cqL=null;a.bZ9=null;a.cRw=null;a.cHW=0.0;a.b$u=null;} +let EYa=a=>{return a.b26;},D3I=a=>{return 0.0;},EI3=a=>{return a.cnw;},CLh=(a,b,c,d,e,f)=>{let g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;OV(a,d.bJ$,f);a.bMh=Bk();a.b$u=e;g=e.bJ$;a.b26=c;if(Bj(c.cai,E(653))){h=K(KH,1);h.data[0]=c.cbJ;i=PB(h);}else i=PB(BB(KH,[c.cai,c.cbJ]));a.cRw=i;a.cqL=e.bQJ;a.bZ9=d.bNl;j=Bk();k=Bk();l=Bk();m=Bh$(a,g);n=f.bQ2;o=DrJ(c);p=!o?n:f.bIp;q=m.bGF+10.0+4.0;f=p;c=AH9(N8(f,q),0.0);a:{while(true){if(!b.dY())break a;r=b.dZ();if(r instanceof AYJ){i=r.bZz;Vp();if(i===AZU)break;}d=Br(Cr5(b,e,r,a,c));while +(Bq(d)){i=Bm(d);U(a.bMh,i);c=i.a94();}}a.cIA=r;}b=a.bMh;q=0.0;c=Bk();s=0;i=Br(b);while(Bq(i)){b=Bm(i);if(C65(b)){s=1;U(c,b);}else if(b instanceof AYT)U(c,b);else{q=q+DiN(c,s);s=0;U(c,b);}}a.cHW=q+DiN(c,s);d=Br(a.bMh);while(Bq(d)){i=Bm(d);r=i.a$m();if(r instanceof AYJ){c=r.bZz;Vp();if(c===ATw){U(l,i);continue;}}if(r instanceof BmY)continue;b=(i.bfi()).RN((-16.0));U(j,b);b=(i.bfj()).RN(16.0);U(k,b);}t=m.bGE;c=j;if(!c.bGJ)U(c,e.bOY);a.bW6=ByK(j);c=Br(l);while(Bq(c)){b=(Bm(c)).a96();U(k,b);}b=a.bW6;q=t+16.0;b=BPS(b, +q);U(k,b);a.b9g=Bij(k);if(!o)a.cnw=BYs(p,N8(f,BEh(a)));else{u=N8(f,BEh(a));OC(u,n);a.cnw=BYs(p,u);}},Dug=(a,b,c,d,e)=>{let f=new V9();CLh(f,a,b,c,d,e);return f;},BxY=a=>{return CW(a.cnw.bIp)+4.0;},Eh9=(a,b)=>{let c,d;c=a.cqL;d=Bhl(a.b26);FX();return SK(c,d,A$d,null,a.bZ9,a.cRw);},Bh$=(a,b)=>{return (a.bfg(b)).a$u(b);},DGM=(a,b)=>{let c,d,e,f,g,h,i,j;c=Im(b);d=a.bfK(c);e=a.bfg(c);f=b;if(f.b_2){c=(Bhl(a.b26)).data[0];B9();g=(BJ(c,CK)).cu(a.bZ9.ly());h=(BJ(c,Jm)).oK();c=BW(BxY(a));a.bfM(EX(b,c),d,g,h);}c=Bh(a.bfN(), +BxY(a));g=b;e.a$w(EX(g,c),d,f);c=EX(g,BW(BxY(a)));g=Im(c);h=CW(a.b9g);HK();d=(BOW(a,OL)).dX();while(d.dY()){i=d.dZ();j=F3(i,g);e=BM(h);MT(i,EX(c,e),KJ(j.bGE,j.bGF),c);h=h+j.bGE;}h=CW(a.bW6);d=(BOW(a,Lr)).dX();while(d.dY()){i=d.dZ();j=F3(i,g);e=BM(h-j.bGE);MT(i,EX(c,e),KJ(j.bGE,j.bGF),c);h=h-j.bGE;}d=Br(a.bMh);while(Bq(d)){(Bm(d)).cC(b);}},DYu=(a,b)=>{return KJ(CW(a.b9g)-CW(a.bW6),B9L(a,b));},EXC=a=>{return CW(a.bW6);},EcW=(a,b,c,d,e)=>{let f,g,h,i,j,k,l;f=c.bJb;g=new Cjz;g.b7s=AAk();c=d===null?Qj():d;g.bQc= +e;g.cuH=f;g.cJM=c;g.cDG=c;c=Br(a.bMh);while(Bq(c)){h=Bm(c);if(h instanceof BBs){i=h;j=CW(i.cpd.bIp)-BxY(a);k=B41(i.b6r);if(k===null)k=d;e=j+1.0;if(k===null)k=Qj();if(!k.cx(g.cDG)){f=g.b7s;h=DL(e);Qm(f,h,k);g.cDG=k;}}}c=g.b7s;d=DL(g.cuH.bGF);f=g.cJM;Qm(c,d,f);c=BM(CW(a.bW6));f=EX(b,c);c=g.cJM;j=0.0;l=0;d=Ta(UA(g.b7s));while(SD(d)){h=Tj(d);if(!c.gv()){i=Fgm(g,l,h.bIu.bG6-j);b=EX(f,c);c=Cc(c);b=EX(b,c);c=BW(j);BmB(EX(b,c),i);}b=h;j=b.bIu.bG6;c=b.bI1;l=l+1|0;}},B9L=(a,b)=>{let c;c=Bh$(a,b);return a.cHW+c.bGF+10.0;},BEh +=a=>{return (Bh$(a,a.bGW)).bGF+a.cHW+20.0+8.0;},DKi=a=>{let b,c,d,e,f,g;b=Br(a.bMh);while(Bq(b)){(Bm(b)).RS();}c=a.b$u.bN0;d=G$();Btv(a.bMh,c,d);e=null;b=(SP(c)).dX();while(b.dY()){f=b.dZ();if(PT(d,f))e=f;}if(e!==null){d=CCk(c,e);if(d!==null){d=Gz(d,a.bGW);b=EK(Gz(e,a.bGW),25.0);OC(d,b);CAI(a,a,d,25.0,c);}}g=a.b$u.bN0;d=G$();Btv(a.bMh,g,d);e=(SP(g)).dX();a:{b:{while(true){if(!e.dY())break b;b=e.dZ();if(PT(d,b))break;}break a;}b=null;}if(b!==null){d=ClG(g,b);if(d!==null){d=Gz(d,a.bGW);b=Gz(b,a.bGW);e=EK(d,25.0);OC(b, +e);DpF(a,a,d,25.0);}}},DpF=(a,b,c,d)=>{let e,f,g,h,i,j;e=Br(b.bMh);f=d+16.0+9.0;while(Bq(e)){g=Bm(e);if(g instanceof V9){h=g;i=a.bGW;HK();DpF(a,h,c,f+Bql(h,i,Lr));continue;}if(g instanceof A3W){h=g;b=Bk();i=A8J(h,h.bGW);j=b;U(j,i);i=h.bOp.bJ_;HK();if(i===TX)U(j,h.bO6.bL$);}else b=!(g instanceof Bmj)&&!(g instanceof B5t)&&!(g instanceof BGu)&&!(g instanceof AYT)&&!(g instanceof BAU)?Gi():IN(g.bfi());b=b.dX();while(b.dY()){(b.dZ()).RO(EK(c,d));}}},CAI=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m;f=G$();Btv(b.bMh,e,f);g= +null;h=(SP(e)).dX();a:{b:{while(true){if(!h.dY())break b;i=h.dZ();if(PT(f,i))break;}break a;}i=g;}if(i!==null){j=0.0;k=Br(b.bMh);while(Bq(k)){h=Bm(k);if(h instanceof A3W){h=h;if(h.bO6===i){g=h.bOp.bJ_;HK();j=BC(j,g===Lr?AU3(h,h.bGW):g!==ARg?0.0:AU3(h,h.bGW)/2.0);}}}l=(Bh$(b,a.bGW)).bGE;h=Gz(i,a.bGW);j=l+16.0-16.0-16.0-j+d;h=EK(h,j);OC(c,h);}f=Br(b.bMh);m=d+16.0+9.0;while(Bq(f)){h=Bm(f);if(h instanceof V9){k=h;h=a.bGW;HK();CAI(a,k,c,m+Bql(k,h,OL),e);continue;}if(h instanceof A3W){k=h;b=Bk();i=A8J(k,k.bGW);j= +AU3(k,k.bGW);h=EK(i,j);i=b;U(i,h);h=k.bOp.bJ_;HK();if(h===TX)U(i,QC(k.b4k,k.bGW));}else b=!(h instanceof Bmj)&&!(h instanceof BDp)&&!(h instanceof B27)&&!(h instanceof AYT)&&!(h instanceof BAU)&&!(h instanceof B6v)?Gi():IN(h.bfj());b=b.dX();while(b.dY()){h=(b.dZ()).RN(d);OC(c,h);}}},BF1=(b,c,d)=>{let e;if(d!==null){e=K3(c,d);if(e!==null)EQ(b,e);return;}},CuY=(b,c,d)=>{let e,f;e=d.bSy;if(e===null&&d.b1F===null){c=(SP(c)).dX();while(c.dY()){f=c.dZ();EQ(b,f);}return;}BF1(b,c,e);BF1(b,c,d.b1F);},Btv=(b,c,d)=>{let e, +f,g,h,i,j,k;e=Br(b);while(Bq(e)){a:{f=Bm(e);g=f.a$m();if(g instanceof AGU){b=g;h=K3(c,b.bUn);i=K3(c,b.bWz);b=d;EQ(b,h);EQ(b,i);}else if(g instanceof AGO){b=K3(c,g.bVI);EQ(d,b);}else if(g instanceof SR){b=K3(c,g.bLO);EQ(d,b);}else if(g instanceof Tg)CuY(d,c,g);else if(g instanceof ARr){j=ALf(g);while(Bq(j)){CuY(d,c,Bm(j));}}else if(g instanceof BtC){k=g.b4v.dX();while(true){if(!k.dY())break a;BF1(d,c,k.dZ());}}}if(f instanceof V9)Btv(f.bMh,c,d);}},CJd=a=>{let b,c,d;b=a.bW6;c=a.bGW;HK();d=(-3.0)-Bql(a,c,Lr);return BPS(b, +d);},Ec9=a=>{let b,c,d;b=a.b9g;c=a.bGW;HK();d=9.0+Bql(a,c,OL);return CSl(b,d);},Bql=(a,b,c)=>{let d;d=0.0;c=(BOW(a,c)).dX();while(c.dY()){d=d+(F3(c.dZ(),b)).bGE;}return d;},BOW=(a,b)=>{let c,d,e,f,g;if(a.cIA!==null){c=Bk();d=Br(a.cIA.cDY);while(Bq(d)){e=Bm(d);f=e.bJ_;HK();g=Lr;if((f!==g?0:1)!=(b!==g?0:1))continue;f=ADE(e,a.bZ9);f=AFY(a.cqL,ACt(e),CB9(e.bOz),f,e.bP4,e.bMc);U(c,f);}return c;}return Gi();},CVj=(b,c,d,e)=>{let f,g,h;f=Br(c);while(Bq(f)){g=Bm(f);g.bfd();c=g;U(d,c);U(e,c);if(g instanceof V9){c=g;h +=Bk();CVj(b,c.bMh,h,e);}}},DiN=(b,c)=>{let d,e,f,g,h;if(!HH(b)){d=0.0;if(!c){e=Br(b);while(Bq(e)){d=d+(Bm(e)).a64();}}else{f=0.0;g=0.0;e=Br(b);while(Bq(e)){h=Bm(e);f=BC(f,h.a$a());g=BC(g,Egk(h));}d=f+g;}TD(b);return d;}return 0.0;},C65=b=>{return (b.a$m()).bfI();},CiK=(a,b)=>{let c,d;c=Br(a.bMh);while(Bq(c)){d=Bm(c);if(d instanceof V9)CiK(d,b);if(d instanceof BjN){d=d;U(b,d);}}},FzH=a=>{return a.bMh;},Dgc=N(V9),EbX=(a,b,c,d,e,f)=>{CLh(a,b,c,d,e,f);},FvE=(a,b,c,d,e)=>{let f=new Dgc();EbX(f,a,b,c,d,e);return f;},CLg +=a=>{let b,c,d,e;b=a;c=(Bhl(b.b26)).data[1];d=K(KH,1);d.data[0]=b.b26.cbJ;e=PB(d);c=D0(c,b.bZ9.ly());B3();return C_(e,c,CF,b.bZ9);},E9i=(a,b)=>{let c;c=new DkN;c.b1n=a;c.cKk=b;return c;},FxJ=(a,b)=>{return KJ(DhV(a),B9L(a,b));},DhV=a=>{return BlV(a.b$u)-BGB(a);},BGB=a=>{return AW1(a.b$u);},Fuj=a=>{return 0.0;},E0n=(a,b,c,d,e)=>{let f;f=Ge(M6(c.bJb),e);c=BM(BGB(a));b=EX(b,c);c=Cc(d);BmB(EX(b,c),f);}; +function BBs(){let a=this;Hp.call(a);a.cWj=null;a.cQ_=null;a.b6r=null;a.cG3=null;a.cpd=null;} +let E7A=a=>{return a.b6r;},DKl=a=>{return 0.0;},Euj=(a,b,c,d,e,f)=>{OV(a,e.bGW,f);a.b6r=b;a.cWj=c;a.cQ_=d;a.cG3=e;a.cpd=AH9(f.bQ2,CXb(a));},DuR=(a,b,c,d,e)=>{let f=new BBs();Euj(f,a,b,c,d,e);return f;},FuJ=a=>{return a.cpd;},B8L=(a,b)=>{let c,d,e;c=new AV3;b=a.cQ_;d=a.b6r;C02(c,b,d.cf4,B41(d));e=K(KH,1);e.data[0]=a.b6r.cbJ;d=PB(e);b=a.cWj;e=CU8(a.b6r);FX();return SK(b,e,A7Z,null,c,d);},E2E=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=BW(CW(a.cpd.bIp));b=EX(b,c);c=Im(b);d=B8L(a,c);e=d.a$u(c);c=a.cG3;f=c.bW6;g=c.b9g;h=b;i +=e.bGF;j=CW(g);c=f;k=KJ(j-CW(c),i);e=Bh(CW(c),0.0);d.a$w(EX(b,e),k,h);},CXb=a=>{return ((B8L(a,a.bGW)).a$u(a.bGW)).bGF;},DBF=a=>{return;},Dd6=a=>{return CJd(a.cG3);},FgY=a=>{let b,c,d;b=(B8L(a,a.bGW)).a$u(a.bGW);c=Dd6(a);d=b.bGE;return EK(c,d);}; +function BW0(){let a=this;Ma.call(a);a.cUB=null;a.cQ7=null;} +let EPp=(a,b)=>{return 0;}; +function BAU(){let a=this;Hp.call(a);a.b5R=null;a.chI=null;a.bTs=null;a.bTa=null;a.cFf=null;a.cba=null;a.cdD=null;} +let DUg=a=>{return a.b5R;},EKE=(a,b,c,d)=>{let e,f,g;OV(a,c.bJ$,d);a.b5R=b;a.chI=c;a.cFf=AH9(d.bQ2,CDx(a));d=Br(b.czP);while(Bq(d)){e=Bm(d);f=ADE(e,c.bNl);g=AFY(c.bQJ,ACt(e),CB9(e.bOz),f,e.bP4,e.bMc);e=e.bJ_;HK();if(e!==OL)a.cba=g;else a.cdD=g;}},DT1=(a,b,c)=>{let d=new BAU();EKE(d,a,b,c);return d;},EOr=a=>{return a.cFf;},B3v=(a,b)=>{let c,d,e,f,g,h;if(a.bTs===null){c=a.b5R.b4v.dX();while(c.dY()){d=c.dZ();e=BOS(a.chI,d);f=Gz(e,b);if(!(a.bTs!==null&&!(CW(f) +CW(a.bTa))))a.bTa=QC(e,b);}g=(BQT(a,b)).a$u(b);if(a.b5R.b4v.dV()==1)a.bTa=N8(a.bTa,0.0);b=a.bTa;c=a.bTs;h=g.bGE;c=EK(c,h);OC(b,c);return;}},BQT=(a,b)=>{let c,d,e,f,g;c=BZg(Us(Yu(),E(2458)),a.b5R.c3W);d=a.chI.bQJ;b=a.b5R;e=K(Ob,2);f=e.data;f[0]=b.cDW;g=b.cOx;if(g!==null){B9();g=Wu(g,CK,b.cxs);}f[1]=g;FX();return SK(d,e,AZs,null,a.chI.bNl,c);},D6P=(a,b)=>{let c,d,e,f,g,h,i;c=BW(CW(a.cFf.bIp));b=EX(b,c);c=Im(b);B3v(a,c);d=BQT(a,c);e=d.a$u(c);f=KJ(CW(a.bTa)-CW(a.bTs),e.bGF);e=BM(CW(a.bTs));g=b;e=EX(g,e);b=b;d.a$w(e, +f,b);d=a.cba;if(d!==null){h=d.RE(c);i=a.cba.a61(c);d=a.cba;f=EX(g,BM(CW(a.bTs)-h));e=AVv(Cl(h,i));MT(d,f,e,b);}d=a.cdD;if(d!==null){h=d.RE(c);i=a.cdD.a61(c);d=a.cdD;g=EX(g,BM(CW(a.bTa)));f=AVv(Cl(h,i));MT(d,g,f,b);}},CDx=a=>{return ((BQT(a,a.bGW)).a$u(a.bGW)).bGF;},DUy=a=>{return;},Dy$=a=>{let b,c;B3v(a,a.bGW);b=a.cba;if(b!==null){c=b.RE(a.bGW);b=a.bTs;c= -c;return EK(b,c);}return a.bTs;},DH1=a=>{let b,c;B3v(a,a.bGW);b=a.cdD;if(b!==null){c=b.RE(a.bGW);return EK(a.bTa,c);}return a.bTa;}; +function BmY(){Ma.call(this);this.c3I=0;} +let D6F=(a,b)=>{a.c3I=b;},Cs_=a=>{let b=new BmY();D6F(b,a);return b;},DMm=(a,b)=>{return 0;}; +function Cii(){let a=this;Hp.call(a);a.cqU=null;a.can=null;a.cnZ=null;a.cDL=null;} +let Ful=a=>{return a.cqU;},DCC=(a,b,c,d)=>{OV(a,c.bJ$,d);a.cqU=b;a.can=c;a.cDL=AH9(d.bQ2,CH$(a));},DLy=(a,b,c)=>{let d=new Cii();DCC(d,a,b,c);return d;},EH3=a=>{return a.cDL;},BPl=(a,b)=>{let c;if(a.cnZ===null){c=Gz(C7x(a.can),b);BBc(a,b);a.cnZ=BNT(c,Gz(CW0(a.can),b));return;}},BBc=(a,b)=>{let c,d,e;b=a.can;c=b.bQJ;d=a.cqU;e=K(Ob,1);e.data[0]=d.cQ7;FX();return SK(c,e,AMX,null,b.bNl,d.cUB);},BI8=(a,b)=>{return ((BBc(a,b)).a$u(b)).bGE;},ES0=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=Im(b);BPl(a,c);d=BBc(a,c);e=d.a$u(c);f +=KJ(BI8(a,c),e.bGF);g=CW(a.cDL.bIp);c=BW(g);b=EX(b,c);c=a.can.bN0;h=e.bGF;c=(SP(c)).dX();while(c.dY()){e=c.dZ();i=e.cmm.cio;j=DL(g);k=DL(h);Qm(i,j,k);e=e.b4t.cb1;i=DL(g);j=DL(h);Qm(e,i,j);}c=BM(CW(CUv(a)));b=EX(b,c);d.a$w(b,f,b);},CH$=a=>{return ((BBc(a,a.bGW)).a$u(a.bGW)).bGF;},DvP=a=>{return;},CUv=a=>{let b,c;BPl(a,a.bGW);b=a.cnZ;c= -BI8(a,a.bGW)/2.0;return EK(b,c);},EAt=a=>{let b,c;BPl(a,a.bGW);b=a.cnZ;c=BI8(a,a.bGW)/2.0;return EK(b,c);}; +function CnU(){let a=this;Hp.call(a);a.czB=null;a.cCZ=null;a.cUt=null;} +let EMI=a=>{return a.czB;},Fmp=(a,b,c,d)=>{OV(a,c.bJ$,d);a.czB=b;a.cCZ=c.bOY;a.cUt=BCx(d,C_g(a));},EdM=(a,b,c)=>{let d=new CnU();Fmp(d,a,b,c);return d;},EQS=a=>{return a.cUt;},ErX=(a,b)=>{return;},C_g=a=>{return a.czB.c3I;},DLz=a=>{return;},EEL=a=>{return a.cCZ;},Ef8=a=>{return EK(a.cCZ,10.0);}; +function BSO(){Ma.call(this);this.cN9=null;} +let D0W=(a,b)=>{return 0;}; +function AYT(){let a=this;Hp.call(a);a.b9P=null;a.c$q=null;a.bX5=null;a.cBn=null;a.cj3=null;a.cod=null;} +let DHJ=a=>{let b,c,d,e;b=CW(a.cod.bIp);AIx(a.bX5,a.b9P,b);c=a.b9P.bSw;Hy();if(c===Vs){d=a.bX5.ccI;e=DL(b);Rr();c=BDK;Qm(d,e,c);}},D1c=a=>{return a.b9P;},EOW=a=>{return 0.0;},DGF=(a,b,c,d,e,f,g)=>{OV(a,c.bJ$,g);a.b9P=b;a.c$q=c;a.bX5=d;a.cBn=e;a.cj3=f;a.cod=BCx(g,CwB(a));},EC6=(a,b,c,d,e,f)=>{let g=new AYT();DGF(g,a,b,c,d,e,f);return g;},DtN=a=>{return a.cod;},DlM=a=>{let b,c;b=a.cj3.cp();FX();b=B0(b,XD(WG));c=K(Ob,1);c.data[0]=b;return c;},DwH=(a,b)=>{let c,d,e,f,g;c=BW(CW(a.cod.bIp));d=EX(b,c);if(CNh(a)){e +=a.cBn;f=DlM(a);FX();c=SK(e,f,WG,null,a.cj3,null);e=d;g=c.a$u(Im(e));b=BM(CW(Gz(a.bX5,Im(e)))-g.bGE/2.0);c.a$w(EX(d,b),null,d);}},CNh=a=>{let b,c,d;a:{b:{b=a.b9P;if(b.b1C===null){c=b.bSw;Hy();if(c===Vs)break b;}d=0;break a;}d=1;}return d;},CwB=a=>{let b,c;if(CNh(a)){b=a.cBn;c=DlM(a);FX();return ((SK(b,c,WG,null,a.cj3,null)).a$u(a.bGW)).bGF;}return 0.0;},DRg=a=>{return;},Eik=a=>{let b,c,d;b=a.bX5;Na();c=OF(b,a,AAm)<=0?0.0:5.0;d=Gz(a.bX5,a.bGW);c= -c;return EK(d,c);},Er2=a=>{let b,c,d;b=a.bX5;Na();c=OF(b,a,AAm);d +=c<=0?0.0:c*5.0;return EK(Gz(a.bX5,a.bGW),d);}; +function BjN(){let a=this;Hp.call(a);a.cz1=null;a.bZp=null;a.b6f=null;} +let DYz=a=>{return 0.0;},DOe=(a,b,c,d)=>{OV(a,c.bJ$,d);a.cz1=b;a.bZp=c;a.b6f=AH9(d.bQ2,BB4(a));},Fxs=(a,b,c)=>{let d=new BjN();DOe(d,a,b,c);return d;},Fk3=a=>{return a.b6f;},C0D=a=>{let b,c,d,e;b=a.bZp;c=b.bQJ;d=a.cz1;e=K(Ob,1).data;e[0]=d.cN9;b=b.bNl;AUJ(c);c=new DeV;AQN(c,e[0],b);c.c7E=AL0(c);return c;},DzA=(a,b)=>{let c,d,e;if(!b.b_2){c=BW(CW(a.b6f.bIp));b=EX(b,c);c=C0D(a);d=KJ(BlV(a.bZp)-AW1(a.bZp)-CW(a.bZp.bOY),1.0);e=Bh(AW1(a.bZp),10.0);b=EX(b,e);e=b;MT(c,b,d,e);return;}},BB4=a=>{C0D(a);return 21.0;},E9I +=a=>{return;},D3L=a=>{return a.bZp.bOY;},D_E=a=>{return a.bZp.bOY;},E3e=a=>{return a.cz1;},Dmb=N(),BFe=null,Brs=()=>{Brs=Z(Dmb);ERF();},BSm=(b,c,d,e)=>{let f,g,h,i,j,$$je;Brs();Bf();a:{b:{try{f=c.bXy;if(f!==null)break b;c.bXy=d;b=d.bOA;c.bVY=b;if(b===null)c.bVY=BFe;}catch($$e){$$je=P($$e);b=$$je;break a;}return d;}c:{try{if(d!==null)break c;}catch($$e){$$je=P($$e);b=$$je;break a;}return f;}d:{try{if(!(c.bKn.bRV&4096))break d;X7(c,null);break d;}catch($$e){$$je=P($$e);b=$$je;break a;}}e:{try{g=f.bOb;if(g===null)break e;h +=K(F,4);i=h.data;i[0]=c;i[1]=CL(3);i[2]=d;i[3]=f;if((g.a5e(b,h)).pB()>=0)break e;b=null;}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}f:{try{c.bXy=d;b=d.bOA;c.bVY=b;if(b!==null)break f;c.bVY=BFe;break f;}catch($$e){$$je=P($$e);b=$$je;break a;}}g:{try{j=c.bKn.bRV;if(j&112){I(E(6210));break g;}if(j&2){I(E(6211));I(E(6212));I(E(6213));break g;}if(j&3){I(E(6214));I(E(6212));I(E(6213));break g;}if(e&1)I(E(6212));DOv(c);I(E(6215));I(E(6216));I(E(6217));I(E(6218));I(E(6219));I(E(6220));I(E(6221));I(E(6222));I(E(5424));I(E(6223));I(E(6224));I(E(6225));I(E(6226));I(E(6227));I(E(6228));I(E(6229));I(E(6157));I(E(6230));I(E(6231));I(E(5424));I(E(5044));I(E(6232));I(E(6233));break g;} +catch($$e){$$je=P($$e);b=$$je;break a;}}try{J(Gw());}catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);},ERF=()=>{let b;b=new Czy;E$(b,E(6234));BFe=b;},CcZ=N(C$),DaX=(a,b,c)=>{let $$je;b=c.data[0];AZg();Bf();try{b=b.cwe;}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;}; +function AX9(){let a=this;CA.call(a);a.bSQ=null;a.bQ8=null;a.dcf=null;a.bQj=null;} +function BUn(){let a=this;F.call(a);a.bId=0;a.ddx=0;a.cHB=BH;a.bIh=BH;a.cbD=0;a.bQ0=0;a.cVB=0;a.chk=null;a.bIm=null;a.bP8=0;a.b0W=0;a.cuA=null;a.bMZ=null;a.bO0=null;} +let DOH=null,BPy=()=>{BPy=Z(BUn);Em0();},FeU=(a,b)=>{let c,d,e,f,g,h,i,j,k,$$je;c=a.bIm;if(c!==null&&c.bIr!==null){d=b!=4?0:(-5);e=(-5);a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:while(true){n:{o:{p:{q:{r:{s:{t:{u:{v:{w:{x:{y:{z:{ba:{bb:{bc:{bd:{be:{bf:{bg:{bh:{bi:{bj:{bk:{bl:{bm:{switch(a.bId){case 6:a.bId=13;a.bIm.bIj=E(3986);a.cbD=0;return (-2);case 7:break bf;case 12:break i;case 13:return (-3);case 14:break z;case 23:break u;case 2:break f;case 3:break g;case 4:break h;case 5:d=e;break a;case 8:break bh;case 9:break bi;case 10:break bj;case 11:break bk;case 15:break bm;case 16:break v;case 17:break w;case 18:break x;case 19:break y;case 20:break bg;case 21:break bl;case 22:break;default:return (-2);}break n;}break ba;}break o;}break bb;}break bc;}break bd;}break be;}break p;}e +=E4C(a.chk,e);if(e==(-3)){a.bId=13;a.cbD=0;continue m;}if(!e)e=d;if(e!=1)break m;a.cHB=a.bIm.bK8.P6();Bqq(a.chk);if(!a.bQ0){a.bId=12;e=d;continue m;}a.bId=8;e=d;}c=a.bIm;b=c.bHa;if(!b)return e;c.bHa=b-1|0;c.bG2=BU(c.bG2,V(1));f=c.bIr.data;b=c.bG0;c.bG0=b+1|0;a.bIh=CN(V((f[b]&255)<<24),O(4278190080, 0));a.bId=9;e=d;}c=a.bIm;b=c.bHa;if(!b)return e;c.bHa=b-1|0;c.bG2=BU(c.bG2,V(1));g=a.bIh;f=c.bIr.data;b=c.bG0;c.bG0=b+1|0;a.bIh=BU(g,CN(V((f[b]&255)<<16),V(16711680)));a.bId=10;e=d;}c=a.bIm;b=c.bHa;if(!b)return e;c.bHa +=b-1|0;c.bG2=BU(c.bG2,V(1));g=a.bIh;f=c.bIr.data;b=c.bG0;c.bG0=b+1|0;a.bIh=BU(g,CN(V((f[b]&255)<<8),V(65280)));a.bId=11;e=d;}c=a.bIm;b=c.bHa;if(!b)return e;c.bHa=b-1|0;c.bG2=BU(c.bG2,V(1));g=a.bIh;f=c.bIr.data;b=c.bG0;c.bG0=b+1|0;g=BU(g,CN(V(f[b]),V(255)));a.bIh=g;b=a.bP8;if(b)a.bIh=CN(Gu(Gu(Gu(GS(CN(g,V(-16777216)),24),GS(CN(g,V(16711680)),8)),EU(CN(g,V(65280)),8)),EU(CN(g,V(65535)),24)),O(4294967295, 0));e=Cp(a.cHB);g=a.bIh;if(e!=Cp(g))c.bIj=E(6235);else if(b){c=a.bMZ;if(c!==null)c.cNx=g;}a.bId=15;e=d;}if +(!(a.bQ0&&a.bP8)){c=a.bIm.bIj;if(c===null)break j;if(!Bj(c,E(6235)))break j;a.bId=13;a.cbD=5;continue m;}try{e=AKG(a,4,e,d);}catch($$e){$$je=P($$e);if($$je instanceof Sc){c=$$je;return c.bRr;}else{throw $$e;}}c=a.bIm.bIj;if(c!==null&&Bj(c,E(6235))){a.bId=13;a.cbD=5;continue m;}g=a.bIh;c=a.bIm;if(DS(g,CN(c.bOW,O(4294967295, 0)))){c.bIj=null;break j;}c.bIj=E(6236);a.bId=13;continue m;}if(!a.bQ0){a.bId=7;continue m;}try{e=AKG(a,2,e,d);}catch($$e){$$je=P($$e);if($$je instanceof Sc){c=$$je;return c.bRr;}else{throw $$e;}}b +=a.bQ0;h=C5(b,4);if(!(h&&!(b&2))&&DS(a.bIh,V(35615))){if(!h)a.bQ0=2;a.bIm.bK8=Bpk();A_6(a,2,a.bIh);if(a.bMZ===null)a.bMZ=CKm();a.bId=23;continue m;}if(b&2){a.bId=13;a.bIm.bIj=E(6237);continue m;}a.bP8=0;g=a.bIh;i=Cp(g)&255;a.ddx=i;j=Cp(GS(g,8))&255;if(!(b&1&&!(((i<<8)+j|0)%31|0))&&(i&15)!=8){if(h){a.bId=13;a.bIm.bIj=E(6237);continue m;}c=a.bIm;c.bG0=c.bG0-2|0;c.bHa=c.bHa+2|0;c.bG2=CE(c.bG2,V(2));a.bQ0=0;a.bId=7;continue m;}if((i&15)!=8){a.bId=13;a.bIm.bIj=E(6238);continue m;}if(!h)a.bQ0=1;if(((i>>4)+8|0)>a.cVB) +{a.bId=13;a.bIm.bIj=E(6239);continue m;}a.bIm.bK8=C6I();if(j&32)break e;a.bId=7;continue m;}break q;}break r;}break s;}break t;}try{e=AKG(a,2,e,d);}catch($$e){$$je=P($$e);if($$je instanceof Sc){c=$$je;return c.bRr;}else{throw $$e;}}g=a.bIh;b=Cp(g)&65535;a.bP8=b;if((b&255)!=8){a.bIm.bIj=E(6238);a.bId=13;continue m;}if(b&57344){a.bIm.bIj=E(6240);a.bId=13;continue m;}if(b&512)A_6(a,2,g);a.bId=16;}try{e=AKG(a,4,e,d);}catch($$e){$$je=P($$e);if($$je instanceof Sc){c=$$je;return c.bRr;}else{throw $$e;}}c=a.bMZ;if(c +!==null)c.c_p=a.bIh;if(a.bP8&512)A_6(a,4,a.bIh);a.bId=17;}try{e=AKG(a,2,e,d);}catch($$e){$$je=P($$e);if($$je instanceof Sc){c=$$je;return c.bRr;}else{throw $$e;}}c=a.bMZ;if(c!==null){b=Cp(a.bIh);c.c9R=b&255;c.cHc=b>>8&255;}if(a.bP8&512)A_6(a,2,a.bIh);a.bId=18;}if(!(a.bP8&1024)){c=a.bMZ;if(c!==null)c.bXv=null;}else{try{e=AKG(a,2,e,d);}catch($$e){$$je=P($$e);if($$je instanceof Sc){c=$$je;return c.bRr;}else{throw $$e;}}c=a.bMZ;if(c!==null)c.bXv=BD(Cp(a.bIh)&65535);if(a.bP8&512)A_6(a,2,a.bIh);}a.bId=19;}if(!(a.bP8 +&1024)){c=a.bMZ;if(c!==null)c.bXv=null;}else bn:{try{e=DQV(a,e,d);if(a.bMZ===null)break bn;f=AWH(a.bO0);k=f.data;a.bO0=null;b=k.length;k=a.bMZ.bXv;if(b!=k.data.length){a.bIm.bIj=E(6241);a.bId=13;continue m;}Di(f,0,k,0,b);break bn;}catch($$e){$$je=P($$e);if($$je instanceof Sc){c=$$je;return c.bRr;}else{throw $$e;}}}a.bId=20;}bo:{if(!(a.bP8&2048)){c=a.bMZ;if(c!==null)c.ckG=null;}else{bp:{try{e=B_M(a,e,d);c=a.bMZ;if(c===null)break bp;c.ckG=AWH(a.bO0);break bp;}catch($$e){$$je=P($$e);if($$je instanceof Sc){c=$$je;break l;} +else{throw $$e;}}}try{a.bO0=null;break bo;}catch($$e){$$je=P($$e);if($$je instanceof Sc){c=$$je;break l;}else{throw $$e;}}}}a.bId=21;}bq:{if(!(a.bP8&4096)){c=a.bMZ;if(c!==null)c.cfp=null;}else{br:{try{e=B_M(a,e,d);c=a.bMZ;if(c===null)break br;c.cfp=AWH(a.bO0);break br;}catch($$e){$$je=P($$e);if($$je instanceof Sc){c=$$je;break k;}else{throw $$e;}}}try{a.bO0=null;break bq;}catch($$e){$$je=P($$e);if($$je instanceof Sc){c=$$je;break k;}else{throw $$e;}}}}a.bId=22;}if(a.bP8&512){try{e=AKG(a,2,e,d);}catch($$e){$$je +=P($$e);if($$je instanceof Sc){c=$$je;return c.bRr;}else{throw $$e;}}c=a.bMZ;if(c!==null)c.de4=Cp(CN(a.bIh,V(65535)));if(D4(a.bIh,CN(a.bIm.bK8.P6(),V(65535)))){a.bId=13;a.bIm.bIj=E(6242);a.cbD=5;continue;}}a.bIm.bK8=Bpk();a.bId=7;}return e;}return c.bRr;}return c.bRr;}a.bId=12;}return 1;}break b;}break c;}break d;}a.bId=2;}c=a.bIm;i=c.bHa;if(i){c.bHa=i-1|0;c.bG2=BU(c.bG2,V(1));f=c.bIr.data;e=c.bG0;c.bG0=e+1|0;a.bIh=CN(V((f[e]&255)<<24),O(4278190080, 0));a.bId=3;e=d;}else return e;}c=a.bIm;b=c.bHa;if(b){c.bHa +=b-1|0;c.bG2=BU(c.bG2,V(1));g=a.bIh;f=c.bIr.data;e=c.bG0;c.bG0=e+1|0;a.bIh=BU(g,CN(V((f[e]&255)<<16),V(16711680)));a.bId=4;e=d;}else return e;}c=a.bIm;b=c.bHa;if(b){c.bHa=b-1|0;c.bG2=BU(c.bG2,V(1));g=a.bIh;f=c.bIr.data;b=c.bG0;c.bG0=b+1|0;a.bIh=BU(g,CN(V((f[b]&255)<<8),V(65280)));a.bId=5;}else return e;}c=a.bIm;b=c.bHa;if(b){c.bHa=b-1|0;c.bG2=BU(c.bG2,V(1));g=a.bIh;f=c.bIr.data;b=c.bG0;c.bG0=b+1|0;g=BU(g,CN(V(f[b]),V(255)));a.bIh=g;c.bK8.bf9(g);a.bId=6;return 2;}return d;}if(b==4&&a.bId==14)return 0;return (-2);},AKG +=(a,b,c,d)=>{let e,f,g,h,i;if(a.b0W==(-1)){a.b0W=b;a.bIh=BH;}while(true){e=a.b0W;if(e<=0){if(b==2)a.bIh=CN(a.bIh,V(65535));else if(b==4)a.bIh=CN(a.bIh,O(4294967295, 0));a.b0W=(-1);return c;}f=a.bIm;g=f.bHa;if(!g)break;f.bHa=g-1|0;f.bG2=BU(f.bG2,V(1));h=a.bIh;i=f.bIr.data;g=f.bG0;f.bG0=g+1|0;a.bIh=Gu(h,V((i[g]&255)<<((b-e|0)*8|0)));a.b0W=e-1|0;c=d;}J(BNE(a,c));},B_M=(a,b,c)=>{let d,e,f,g,h;if(a.bO0===null)a.bO0=BaB();while(true){d=a.bIm;e=d.bHa;if(!e)J(BNE(a,b));d.bHa=e-1|0;d.bG2=BU(d.bG2,V(1));f=d.bIr;g=f.data;e +=d.bG0;h=g[e];if(h)AY$(a.bO0,f,e,1);d=a.bIm;d.bK8.P0(d.bIr,d.bG0,1);d=a.bIm;d.bG0=d.bG0+1|0;if(!h)break;b=c;}return c;},DQV=(a,b,c)=>{let d,e;if(a.bO0===null)a.bO0=BaB();while(G5(a.bIh,BH)){d=a.bIm;e=d.bHa;if(!e)J(BNE(a,b));d.bHa=e-1|0;d.bG2=BU(d.bG2,V(1));AY$(a.bO0,d.bIr,d.bG0,1);d=a.bIm;d.bK8.P0(d.bIr,d.bG0,1);d=a.bIm;d.bG0=d.bG0+1|0;a.bIh=CE(a.bIh,V(1));b=c;}return b;},A_6=(a,b,c)=>{let d;d=0;while(d>24;c=GS(c,8);d=d+1|0;}a.bIm.bK8.P0(a.cuA,0,b);},Em0=()=>{DOH=IU([0, +0,(-1),(-1)]);},A8s=N(0),BKo=N(0),CWC=N(Bbw),ErK=a=>{return Ca(1);},Fd1=N(),DOv=b=>{I(E(6243));I(E(5253));I(E(6244));I(E(6245));I(E(6246));I(E(6247));I(E(6248));I(E(6249));I(E(6250));I(E(6251));I(E(6252));I(E(6253));I(E(6254));I(E(6255));I(E(6256));I(E(6257));I(E(6157));I(E(5424));I(E(5044));I(E(6258));I(E(6259));I(E(6260));I(E(6261));I(E(6262));I(E(6263));I(E(6264));I(E(6265));I(E(6266));I(E(6267));I(E(6157));I(E(5424));I(E(5044));I(E(6268));I(E(6269));I(E(6270));I(E(5037));b=new BV;X(b);J(b);}; +function Dnp(){F.call(this);this.cIF=null;} +let ENJ=(a,b)=>{b=b;a.cIF.b4c=b;},E4h=a=>{return a.cIF.b4c;}; +function Dnn(){F.call(this);this.cva=null;} +let E8v=(a,b)=>{b=b;a.cva.c65=b;},EV_=a=>{return a.cva.c65;}; +function Dno(){F.call(this);this.cxl=null;} +let ErR=(a,b)=>{b=b;a.cxl.b8K=b;},Ewg=a=>{return a.cxl.b8K;}; +function Dnm(){F.call(this);this.cGe=null;} +let EFo=(a,b)=>{b=b;a.cGe.coZ=b;},Eo2=a=>{return a.cGe.coZ;},B$L=N(C$),FfP=(a,b,c)=>{c=c.data;return E$c(b,c[0],c[1],c[2].bHl);}; +function BZp(){let a=this;F.call(a);a.bKP=0;a.cmI=0;a.cvg=0;a.bVw=0;a.bQU=null;a.cDN=null;a.coQ=null;a.cb3=null;a.cb0=null;a.cG_=null;a.cHa=null;a.cCe=null;a.cCk=null;a.cad=null;a.cnt=0;a.bH7=0;a.bH6=0;a.b4P=null;a.bME=null;a.bLs=0;a.bNh=0;a.bHA=0;a.clJ=0;a.ctV=null;a.bIi=null;} +let C3g=null,BWC=null,APW=()=>{APW=Z(BZp);FgP();},Bqq=a=>{let b;b=a.bKP;b!=4&&b!=5;a.bKP=0;a.bH7=0;a.bH6=0;a.bHA=0;a.bNh=0;if(a.clJ)a.bIi.bK8.rP();},E4C=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;c=a.bIi;d=c.bG0;e=c.bHa;f=a.bH6;g=a.bH7;h=a.bHA;i=a.bNh;j=h>=i?a.bLs-h|0:(i-h|0)-1|0;a:{b:{c:{d:{e:{f:{g:while(true){h:{i:{j:{k:{l:{m:{n:{o:{p:{switch(a.bKP){case 2:break h;case 9:a.bH6=f;a.bH7=g;c=a.bIi;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;a.bHA=h;return Hj(a,(-3));case 0:break p;case 1:break;case 3:break l;case 4:break m;case 5:break n;case 6:break o;case 7:break b;case 8:break a;default:a.bH6 +=f;a.bH7=g;c=a.bIi;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;a.bHA=h;return Hj(a,(-2));}while(g<32){if(!e){a.bH6=f;a.bH7=g;c=a.bIi;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;a.bHA=h;return Hj(a,b);}b=0;e=e+(-1)|0;k=a.bIi.bIr.data;i=d+1|0;f=f|(k[d]&255)<>>16|0)&65535;l=f&65535;if(i!=l)break f;a.cmI=l;g=0;a.bKP=l?2:!a.cnt?0:7;f=g;continue g;}while(g<3){if(!e){a.bH6=f;a.bH7=g;c=a.bIi;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;a.bHA=h;return Hj(a,b);}b=0;e=e+(-1)|0;k=a.bIi.bIr.data;i +=d+1|0;f=f|(k[d]&255)<>>1|0){case 0:break s;case 1:break r;case 2:break t;case 3:b=f>>>3|0;i=g+(-3)|0;a.bKP=9;c=a.bIi;c.bIj=E(6271);a.bH6=b;a.bH7=i;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;a.bHA=h;return Hj(a,(-3));default:}break q;}f=f>>>3|0;g=g+(-3)|0;a.bKP=3;break q;}i=f>>>3|0;l=g+(-3)|0;n=l&7;f=i>>>n|0;g=l-n|0;a.bKP=1;break q;}Fbd(a.cb3,a.cb0,a.cG_,a.cHa,a.bIi);C75(a.cad,a.cb3.data[0],a.cb0.data[0],a.cG_.data[0],0,a.cHa.data[0],0);f=f>>>3|0;g=g+(-3) +|0;a.bKP=6;}continue g;}break i;}break j;}break k;}while(g<14){if(!e){a.bH6=f;a.bH7=g;c=a.bIi;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;a.bHA=h;return Hj(a,b);}b=0;e=e+(-1)|0;k=a.bIi.bIr.data;i=d+1|0;f=f|(k[d]&255)<29)break e;i=i>>5&31;if(i>29)break e;u:{v:{i=(258+l|0)+i|0;k=a.bQU;if(k!==null){k=k.data;if(k.length>=i)break v;}a.bQU=Ca(i);break u;}l=0;while(true){if(l>=i)break u;k[l]=0;l=l+1|0;}}f=f>>>14|0;g=g+(-14)|0;a.bVw=0;a.bKP=4;}while(true){i=a.bVw;if(i>= +(4+(a.cvg>>>10|0)|0))break;while(g<3){if(!e){a.bH6=f;a.bH7=g;c=a.bIi;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;a.bHA=h;return Hj(a,b);}b=0;e=e+(-1)|0;k=a.bIi.bIr.data;l=d+1|0;f=f|(k[d]&255)<>>3|0;g=g+(-3)|0;}while(true){i=a.bVw;if(i>=19)break;o=a.bQU.data;APW();k=BWC.data;a.bVw=i+1|0;o[k[i]]=0;}k=a.cDN;k.data[0]=7;i=Fs8(a.ctV,a.bQU,k,a.coQ,a.b4P,a.bIi);if(i){if(i==(-3)){a.bQU=null;a.bKP=9;}a.bH6=f;a.bH7=g;c=a.bIi;c.bHa=e;c.bG2=BU(c.bG2, +V(d-c.bG0|0));c.bG0=d;a.bHA=h;return Hj(a,i);}a.bVw=0;a.bKP=5;}while(true){i=a.cvg;l=a.bVw;n=i&31;j=258+n|0;i=i>>5&31;j=j+i|0;if(l>=j)break;m=a.cDN.data[0];while(g>>q|0;g=g-q|0;k=a.bQU.data;a.bVw=l+1|0;k[l] +=n;}else{i=C5(n,18);r=!i?7:n-14|0;s=i?3:11;while(g<(q+r|0)){if(!e){a.bH6=f;a.bH7=g;c=a.bIi;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;a.bHA=h;return Hj(a,b);}b=0;e=e+(-1)|0;k=a.bIi.bIr.data;i=d+1|0;f=f|(k[d]&255)<>>q|0;g=g-q|0;i=s+(n&o[r])|0;f=n>>>r|0;g=g-r|0;if((l+i|0)>j)break d;if(!m&&l<1)break d;j=m?0:a.bQU.data[l-1|0];while(true){k=a.bQU.data;n=l+1|0;k[l]=j;i=i+(-1)|0;if(!i)break;l=n;}a.bVw=n;}}a.coQ.data[0]=(-1);k=a.cb3;k.data[0]=9;o=a.cb0;o.data[0]=6;i=Dup(a.ctV,257+n|0,1+i|0,a.bQU, +k,o,a.cCe,a.cCk,a.b4P,a.bIi);if(i){if(i==(-3)){a.bQU=null;a.bKP=9;}a.bH6=f;a.bH7=g;c=a.bIi;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;a.bHA=h;return Hj(a,i);}c=a.cad;i=a.cb3.data[0];l=a.cb0.data[0];k=a.b4P;C75(c,i,l,k,a.cCe.data[0],k,a.cCk.data[0]);a.bKP=6;}a.bH6=f;a.bH7=g;c=a.bIi;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;a.bHA=h;b=Ezu(a.cad,b);if(b!=1)break g;b=0;Eyb(a.cad,a.bIi);c=a.bIi;d=c.bG0;e=c.bHa;f=a.bH6;g=a.bH7;h=a.bHA;i=a.bNh;j=h>=i?a.bLs-h|0:(i-h|0)-1|0;if(a.cnt)break c;a.bKP=0;continue g;}if +(!e){a.bH6=f;a.bH7=g;c=a.bIi;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;a.bHA=h;return Hj(a,b);}if(!j){n=a.bLs;if(h==n){i=a.bNh;if(i){h=0;j=h>=i?n-h|0:(i-h|0)-1|0;}}if(!j){a.bHA=h;l=Hj(a,b);h=a.bHA;i=a.bNh;j=h>=i?a.bLs-h|0:(i-h|0)-1|0;n=a.bLs;if(h==n&&i){h=0;j=h>=i?n-h|0:(i-h|0)-1|0;}if(!j){a.bH6=f;a.bH7=g;c=a.bIi;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;a.bHA=h;return Hj(a,l);}}}b=0;i=a.cmI;if(i>e)i=e;if(i>j)i=j;Di(a.bIi.bIr,d,a.bME,h,i);d=d+i|0;e=e-i|0;h=h+i|0;j=j-i|0;i=a.cmI-i|0;a.cmI=i;if(i)continue;a.bKP +=!a.cnt?0:7;}return Hj(a,b);}a.bKP=9;c=a.bIi;c.bIj=E(6272);a.bH6=f;a.bH7=g;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;a.bHA=h;return Hj(a,(-3));}a.bKP=9;c=a.bIi;c.bIj=E(6273);a.bH6=f;a.bH7=g;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;a.bHA=h;return Hj(a,(-3));}a.bQU=null;a.bKP=9;c=a.bIi;c.bIj=E(6274);a.bH6=f;a.bH7=g;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;a.bHA=h;return Hj(a,(-3));}a.bKP=7;}a.bHA=h;b=Hj(a,b);h=a.bHA;i=a.bNh;if(i==h)a.bKP=8;else{a.bH6=f;a.bH7=g;c=a.bIi;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0 +|0));c.bG0=d;a.bHA=h;return Hj(a,b);}}a.bH6=f;a.bH7=g;c=a.bIi;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;a.bHA=h;return Hj(a,1);},FzN=a=>{Bqq(a);a.bME=null;a.b4P=null;},Hj=(a,b)=>{let c,d,e,f,g,h;c=a.bIi;d=c.b2t;e=a.bNh;f=a.bHA;if(e>f)f=a.bLs;g=f-e|0;f=c.bLj;if(g>f)g=f;if(g&&b==(-5))b=0;c.bLj=f-g|0;c.bOW=BU(c.bOW,V(g));if(a.clJ&&g>0)c.bK8.P0(a.bME,e,g);Di(a.bME,e,a.bIi.b5k,d,g);f=d+g|0;h=e+g|0;d=a.bLs;if(h==d){if(a.bHA==d)a.bHA=0;d=a.bHA-0|0;c=a.bIi;e=c.bLj;if(d>e)d=e;if(d&&b==(-5))b=0;c.bLj=e-d|0;c.bOW=BU(c.bOW, +V(d));if(a.clJ&&d>0)c.bK8.P0(a.bME,0,d);Di(a.bME,0,a.bIi.b5k,f,d);f=f+d|0;h=0+d|0;}a.bIi.b2t=f;a.bNh=h;return b;},FgP=()=>{C3g=Ey([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535]);BWC=Ey([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);},Czy=N(C$),Evn=(a,b,c)=>{let d,$$je;c=c.data;b=c[1];d=c[2];Brs();Bf();a:{b:{c:{d:{try{if(b===null)break d;}catch($$e){$$je=P($$e);b=$$je;break c;}e:{try{if(d!==null)break e;Gq(b);b=null;}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}try{I(E(6275));J(Gw());} +catch($$e){$$je=P($$e);b=$$je;break c;}}f:{try{if(!CKW(d)){b=null;break f;}b=A_4(d);break f;}catch($$e){$$je=P($$e);b=$$je;break c;}}try{break b;}catch($$e){$$je=P($$e);b=$$je;break c;}}J(b);}}return b;}; +function B5b(){CA.call(this);this.cRU=null;} +let CXy=a=>{CJ(a);a.cRU=null;},FzJ=()=>{let a=new B5b();CXy(a);return a;}; +function BOi(){let a=this;F.call(a);a.b5I=null;a.bYg=null;a.bYf=null;a.b5O=null;a.cac=null;a.b5P=null;} +let CHb=null,CHc=null,Dpz=null,DkZ=null,CPS=null,CUA=null,BuB=()=>{BuB=Z(BOi);Emt();},BHZ=(a,b,c,d,e,f,g,h,i,j,k,l)=>{let m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,bd;m=0;n=d;while(true){o=b.data;p=a.bYf.data;q=o[c+m|0];p[q]=p[q]+1|0;m=m+1|0;n=n+(-1)|0;if(!n)break;}if(p[0]!=d){b=i.data;r=b[0];s=1;a:{while(true){if(s>15)break a;if(p[s])break;s=s+1|0;}}if(rm)r=m;b[0]=r;t=1<=m){n=t-p[m]|0;if(n>=0){p[m]=p[m]+n|0;b=a.b5P.data;v +=0;b[1]=v;w=1;u=2;x=m;while(true){x=x+(-1)|0;if(!x)break;v=v+p[w]|0;b[u]=v;u=u+1|0;w=w+1|0;}q=0;u=0;while(true){x=o[c+u|0];if(x){i=l.data;w=b[x];b[x]=w+1|0;i[w]=q;}u=u+1|0;q=q+1|0;if(q>=d)break;}u=b[m];y=0;b[0]=y;z=0;ba=(-1);w= -r|0;a.cac.data[0]=0;bb=0;bc=0;c:while(true){if(s>m)return !(n&&m!=1)?0:(-5);q=a.bYf.data[s];while(true){bd=q+(-1)|0;if(!q)break;t=bd+1|0;while(true){x=w+r|0;if(s<=x)break;ba=ba+1|0;v=m-x|0;if(v>r)v=r;d:{w=s-x|0;c=1<t){c=c-t|0;if(w=v)break;c +=c<<1;b=a.bYf.data;d=d+1|0;if(c<=b[d])break e;c=c-b[d]|0;}break d;}}}}i=k.data;bc=1<1440)break c;b=a.cac.data;bb=i[0];b[ba]=bb;i[0]=i[0]+bc|0;if(!ba){h.data[0]=bb;w=x;continue;}a.b5P.data[ba]=y;i=a.b5O;p=i.data;p[0]=w<<24>>24;p[1]=r<<24>>24;v=y>>>(x-r|0)|0;d=ba-1|0;p[2]=(bb-b[d]|0)-v|0;Di(i,0,j,(b[d]+v|0)*3|0,3);w=x;}p=a.b5O.data;x=s-w|0;p[1]=x<<24>>24;if(z>=u)p[0]=192;else{o=l.data;if(o[z]>=e){b=g.data;i=f.data;p[0]=((b[o[z]-e|0]+16|0)+64|0)<<24>>24;d=z+1|0;p[2]=i[o[z]-e|0];z=d;}else{p[0] +=(o[z]>=256?96:0)<<24>>24;d=z+1|0;p[2]=o[z];z=d;}}x=1<>>w|0;while(c>>1|0;}y=y^c;v=(1<{let g,h;B5R(a,19);g=a.b5I;g.data[0]=0;h=BHZ(a,b,0,19,19,null,null,d,c,e,g,a.bYg);if(h==(-3))f.bIj=E(6276);else if +(!(h!=(-5)&&c.data[0])){f.bIj=E(6277);h=(-3);}return h;},Dup=(a,b,c,d,e,f,g,h,i,j)=>{let k,l;B5R(a,288);k=a.b5I;k.data[0]=0;l=BHZ(a,d,0,b,257,Dpz,DkZ,g,e,i,k,a.bYg);if(!l&&e.data[0]){B5R(a,288);c=BHZ(a,d,b,c,0,CPS,CUA,h,f,i,a.b5I,a.bYg);if(!c&&!(!f.data[0]&&b>257))return 0;if(c==(-3))j.bIj=E(6278);else if(c==(-5)){j.bIj=E(6279);c=(-3);}else if(c!=(-4)){j.bIj=E(6280);c=(-3);}return c;}if(l==(-3))j.bIj=E(6281);else if(l!=(-4)){j.bIj=E(6282);l=(-3);}return l;},Fbd=(b,c,d,e,f)=>{BuB();e=e.data;d=d.data;c=c.data;b.data[0] +=9;c[0]=5;d[0]=CHb;e[0]=CHc;return 0;},B5R=(a,b)=>{let c;if(a.b5I===null){a.b5I=Ca(1);a.bYg=Ca(b);a.bYf=Ca(16);a.b5O=Ca(3);a.cac=Ca(15);a.b5P=Ca(16);}if(a.bYg.data.length{CHb=Ey([96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24, +0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58, +0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8, +41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8, +75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8, +20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0, +8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101, +0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0, +8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255]);CHc=Ey([80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577]);Dpz=Ey([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163, +195,227,258,0,0]);DkZ=Ey([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112]);CPS=Ey([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577]);CUA=Ey([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);}; +function BT6(){let a=this;F.call(a);a.bNu=0;a.b6h=0;a.b_U=null;a.b2b=0;a.b6B=0;a.cWw=0;a.cmH=0;a.ce$=0;a.cBN=0;a.cF5=0;a.cJP=null;a.cHo=0;a.cvi=null;a.cx2=0;a.bLl=null;a.bKB=null;} +let AHF=null,AGj=()=>{AGj=Z(BT6);EzB();},C75=(a,b,c,d,e,f,g)=>{a.bNu=0;a.cBN=b<<24>>24;a.cF5=c<<24>>24;a.cJP=d;a.cHo=e;a.cvi=f;a.cx2=g;a.b_U=null;},Ezu=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o;c=a.bLl;d=c.bG0;e=c.bHa;c=a.bKB;f=c.bH6;g=c.bH7;h=c.bHA;i=c.bNh;j=h>=i?c.bLs-h|0:(i-h|0)-1|0;a:{b:{c:while(true){d:{e:{f:{g:{h:{i:{j:{k:{l:{switch(a.bNu){case 0:break i;case 2:break k;case 4:break e;case 6:break g;case 7:if(g>7){g=g+(-8)|0;e=e+1|0;d=d+(-1)|0;}c=a.bKB;c.bHA=h;b=Hj(c,b);c=a.bKB;h=c.bHA;i=c.bNh;if(i==h){a.bNu +=8;break a;}c.bH6=f;c.bH7=g;k=a.bLl;k.bHa=e;k.bG2=BU(k.bG2,V(d-k.bG0|0));k.bG0=d;c.bHA=h;return Hj(c,b);case 9:c=a.bKB;c.bH6=f;c.bH7=g;k=a.bLl;k.bHa=e;k.bG2=BU(k.bG2,V(d-k.bG0|0));k.bG0=d;c.bHA=h;return Hj(c,(-3));case 1:break l;case 3:break;case 5:break f;case 8:break a;default:c=a.bKB;c.bH6=f;c.bH7=g;k=a.bLl;k.bHa=e;k.bG2=BU(k.bG2,V(d-k.bG0|0));k.bG0=d;c.bHA=h;return Hj(c,(-2));}break j;}break h;}i=a.cmH;while(g>i;g=g-i|0;a.b6B=a.cF5;a.b_U=a.cvi;a.b2b=a.cx2;a.bNu=3;}i=a.b6B;while(g>l[m];g=g-l[m]|0;m=l[i];if(m&16){a.cmH=m&15;a.ce$=l[i+2|0];a.bNu=4;continue c;}if +(m&64){a.bNu=9;c=a.bLl;c.bIj=E(6283);k=a.bKB;k.bH6=f;k.bH7=g;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;k.bHA=h;return Hj(k,(-3));}a.b6B=m;a.b2b=(i/3|0)+l[i+2|0]|0;continue c;}if(j>=258&&e>=10){c=a.bKB;c.bH6=f;c.bH7=g;k=a.bLl;k.bHa=e;k.bG2=BU(k.bG2,V(d-k.bG0|0));k.bG0=d;c.bHA=h;b=ERY(a,a.cBN,a.cF5,a.cJP,a.cHo,a.cvi,a.cx2,c,k);c=a.bLl;d=c.bG0;e=c.bHa;c=a.bKB;f=c.bH6;g=c.bH7;h=c.bHA;i=c.bNh;j=h>=i?c.bLs-h|0:(i-h|0)-1|0;if(b){a.bNu=b!=1?9:7;continue c;}}a.b6B=a.cBN;a.b_U=a.cJP;a.b2b=a.cHo;a.bNu=1;}m=a.b6B;while +(g>>l[i]|0;g=g-l[i]|0;o=l[n];if(!o){a.cWw=l[n+2|0];a.bNu=6;continue c;}if(o&16){a.cmH=o&15;a.b6h=l[n+2|0];a.bNu=2;continue c;}if(!(o&64)){a.b6B=o;a.b2b=(n/3|0)+l[n+2|0]|0;continue c;}if(!(o&32))break b;a.bNu=7;continue c;}if(j)i=h;else{c=a.bKB;m=c.bLs;if(h!=m)i= +h;else{n=c.bNh;if(!n)i=h;else{i=0;j=i>=n?m-i|0:(n-i|0)-1|0;}}if(!j){c.bHA=i;b=Hj(c,b);c=a.bKB;i=c.bHA;m=c.bNh;j=i>=m?c.bLs-i|0:(m-i|0)-1|0;n=c.bLs;if(i==n&&m){i=0;j=i>=m?n-i|0:(m-i|0)-1|0;}if(!j){c.bH6=f;c.bH7=g;k=a.bLl;k.bHa=e;k.bG2=BU(k.bG2,V(d-k.bG0|0));k.bG0=d;c.bHA=i;return Hj(c,b);}}}b=0;l=a.bKB.bME.data;h=i+1|0;l[i]=a.cWw<<24>>24;j=j+(-1)|0;a.bNu=0;continue c;}break d;}m=a.cmH;while(g>m;g=g-m|0;a.bNu=5;}i=h-a.ce$|0;while(i<0){i=i+a.bKB.bLs|0;}while(a.b6h){if(j)m=h;else{c=a.bKB;n=c.bLs;if(h!=n)m=h;else{o=c.bNh;if(!o)m=h;else{m=0;j=m>=o?n-m|0:(o-m|0)-1|0;}}if(!j){c.bHA=m;b=Hj(c,b);c=a.bKB;m=c.bHA;n=c.bNh;j=m>=n?c.bLs-m|0:(n-m|0)-1|0;o=c.bLs;if(m==o&&n){m=0;j=m>=n?o-m|0:(n-m|0)-1|0;}if(!j)break c;}}c=a.bKB;l=c.bME.data;h=m+1|0;n=i+1|0;l[m]=l[i];j=j+(-1)|0;i=n==c.bLs?0:n;a.b6h=a.b6h- +1|0;}a.bNu=0;}c.bH6=f;c.bH7=g;k=a.bLl;k.bHa=e;k.bG2=BU(k.bG2,V(d-k.bG0|0));k.bG0=d;c.bHA=m;return Hj(c,b);}a.bNu=9;c=a.bLl;c.bIj=E(6284);k=a.bKB;k.bH6=f;k.bH7=g;c.bHa=e;c.bG2=BU(c.bG2,V(d-c.bG0|0));c.bG0=d;k.bHA=h;return Hj(k,(-3));}c=a.bKB;c.bH6=f;c.bH7=g;k=a.bLl;k.bHa=e;k.bG2=BU(k.bG2,V(d-k.bG0|0));k.bG0=d;c.bHA=h;return Hj(c,1);},Eyb=(a,b)=>{return;},ERY=(a,b,c,d,e,f,g,h,i)=>{let j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y;j=i.bG0;k=i.bHa;l=h.bH6;m=h.bH7;n=h.bHA;o=h.bNh;p=n>=o?h.bLs-n|0:(o-n|0)-1|0;AGj();q=AHF.data;r +=q[b];s=q[c];while(true){if(m<20){k=k+(-1)|0;q=i.bIr.data;b=j+1|0;l=l|(q[j]&255)<>t[b];m=m-t[b]|0;q=h.bME.data;w=n+1|0;q[n]=t[v+2|0]<<24>>24;p=p+(-1)|0;}else{b:{while(true){b=v+1|0;l=l>>t[b];m=m-t[b]|0;if(c&16)break b;if(c&64){if(!(c&32)){i.bIj=E(6284);x=i.bHa-k|0;b=m>>3;if(b>3;if(b>t[b];m=m-t[b]|0;q=h.bME.data;w=n+1|0;q[n]=t[v+2|0]<<24>>24;p=p+(-1)|0;break a;}c=c&15;b=t[v+2|0];y=AHF.data;x=b+(l&y[c])|0;b=l>>c;c=m-c|0;while(c<15){k=k+(-1)|0;q=i.bIr.data;o=j+1|0;b=b|(q[j]&255)<>q[m];c=c-q[m]|0;if(l&16)break;if(l&64){i.bIj=E(6283);e +=i.bHa-k|0;g=c>>3;if(g>o;m=c-o|0;p=p-x|0;if(n>=w){o=n-w|0;b=n-o|0;if(!(b>0&&2>b)){q=h.bME;Di(q,o,q,n,2);n=n+2|0;o=o+2|0;x=x+(-2)|0;}else{q=h.bME.data;b=n+1|0;c=o+1|0;q[n]=q[o];n=b+1|0;o=c+1|0;q[b]=q[c];x=x+(-2)|0;}}else{o=n-w|0;while(true) +{b=h.bLs;o=o+b|0;if(o>=0)break;}b=b-o|0;if(x>b){x=x-b|0;c=n-o|0;if(!(c>0&&b>c)){q=h.bME;Di(q,o,q,n,b);n=n+b|0;}else{c=n;while(true){q=h.bME.data;n=c+1|0;w=o+1|0;q[c]=q[o];b=b+(-1)|0;if(!b)break;c=n;o=w;}}o=0;}}b=n-o|0;if(!(b>0&&x>b)){q=h.bME;Di(q,o,q,n,x);w=n+x|0;}else while(true){q=h.bME.data;w=n+1|0;b=o+1|0;q[n]=q[o];x=x+(-1)|0;if(!x)break;n=w;o=b;}}}if(p<258)break;if(k<10)break;n=w;}x=i.bHa-k|0;b=m>>3;if(b{AHF=Ey([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535]);},A5C=N(Bx),BNX=null,BUD=null,BVe=null,B20=null,BE8=null,BW4=null,B6u=null,BXB=null,BeA=null,A8$=null,B8U=null,BTl=null,B57=null,BY6=null,BTe=null,BQi=null,B8o=null,BM_=null,BNm=null,BIc=null,BZX=null,BUR=null,BZJ=null,B2u=null,BRw=null,BPG=null,B69=null,BxM=null,Ble=null,BcF=null,BNo=null,DHM=null,YZ=()=>{YZ=Z(A5C);DQE();},DOd=(a,b,c)=>{YZ();Ct(a,b,c);},Ic=(a,b)=>{let c=new A5C();DOd(c,a,b);return c;},DQE=()=> +{let b,c,d;BNX=Ic(E(6285),0);BUD=Ic(E(6286),1);BVe=Ic(E(2170),2);B20=Ic(E(6287),3);BE8=Ic(E(2163),4);BW4=Ic(E(6288),5);B6u=Ic(E(6289),6);BXB=Ic(E(6290),7);BeA=Ic(E(6291),8);A8$=Ic(E(712),9);B8U=Ic(E(2159),10);BTl=Ic(E(6292),11);B57=Ic(E(6293),12);BY6=Ic(E(6294),13);BTe=Ic(E(6295),14);BQi=Ic(E(6296),15);B8o=Ic(E(2157),16);BM_=Ic(E(6297),17);BNm=Ic(E(2164),18);BIc=Ic(E(6298),19);BZX=Ic(E(6299),20);BUR=Ic(E(6300),21);BZJ=Ic(E(6301),22);B2u=Ic(E(6302),23);BRw=Ic(E(6303),24);BPG=Ic(E(6304),25);B69=Ic(E(6305),26);BxM +=Ic(E(2190),27);Ble=Ic(E(6306),28);BcF=Ic(E(2184),29);b=Ic(E(2186),30);BNo=b;c=K(A5C,31);d=c.data;d[0]=BNX;d[1]=BUD;d[2]=BVe;d[3]=B20;d[4]=BE8;d[5]=BW4;d[6]=B6u;d[7]=BXB;d[8]=BeA;d[9]=A8$;d[10]=B8U;d[11]=BTl;d[12]=B57;d[13]=BY6;d[14]=BTe;d[15]=BQi;d[16]=B8o;d[17]=BM_;d[18]=BNm;d[19]=BIc;d[20]=BZX;d[21]=BUR;d[22]=BZJ;d[23]=B2u;d[24]=BRw;d[25]=BPG;d[26]=B69;d[27]=BxM;d[28]=Ble;d[29]=BcF;d[30]=b;DHM=c;}; +function BWZ(){F.call(this);this.ca1=null;} +let DK6=a=>{return a.ca1;},EkM=(a,b)=>{return Bn(a.ca1,b);},E3P=a=>{return a.ca1.bGI.length;},EQY=(a,b,c)=>{return B_(a.ca1,b,c);}; +function CLp(){let a=this;SF.call(a);a.dav=null;a.cAD=null;a.cEB=0;} +let EL7=(a,b)=>{let c,d,e;a:{while(true){c=a.cEB;d=a.cAD.data;if(c>=d.length)break a;a.cEB=c+1|0;e=d[c];if(BSN(b,e))continue;else break;}}return a.cEB>=a.cAD.data.length?0:1;},TM=N(0); +function C3a(){let a=this;F.call(a);a.b1T=0.0;a.bR6=0.0;a.b03=null;} +let DS8=(a,b,c,d)=>{a.b1T=b;a.bR6=c;a.b03=d;},A8M=(a,b,c)=>{let d=new C3a();DS8(d,a,b,c);return d;},Eh0=a=>{let b,c,d,e;b=a.b1T;c=a.bR6;d=BY(a.b03);e=new S;T(e);H(H(D6(H(D6(H(e,E(6307)),b),E(6308)),c),E(6309)),d);return Q(e);},CLO=a=>{return a.bR6+BMc(a);},AY_=(a,b)=>{return A8M(a.b1T,a.bR6+b,a.b03);},BMc=a=>{return a.b03.bGF;},CzU=a=>{return Bh(a.b1T,a.bR6);},C$M=N(0); +function Ch2(){let a=this;F.call(a);a.ccr=0;a.cog=null;} +let Dp8=a=>{return a.cog.bMr.cf(a.ccr);},A38=a=>{let b,c;if(Bqa(a)){b=a.cog.bMr;c=a.ccr;a.ccr=c+1|0;return b.cf(c);}return null;},Bqa=a=>{return a.ccr>=a.cog.bMr.dV()?0:1;}; +function AX3(){let a=this;F.call(a);a.bHC=null;a.bQh=null;a.b9L=null;a.bYd=null;a.bHN=null;a.cdo=null;a.cWf=null;} +let AKk=(a,b,c,d,e,f,g)=>{a.cWf=Dy();a.cdo=c;a.bQh=d;a.b9L=e;a.bYd=f;a.bHN=g;a.bHC=b;},EG$=(a,b)=>{let c,d;c=a.bQh;d=DG(c.cJr,b);if(d===null)d=DG(c.cl3,b);return d;},EDO=(a,b)=>{return DG(a.bQh.cz7,b);},CTJ=(a,b)=>{return PT(a.bQh.cCl,b);},LM=a=>{return a.b9L.bKj;},HS=a=>{return a.b9L.bKW;},CgF=a=>{let b,c,d;b=a.bHN;c=b.bT6;CV();d=Bat;d=AYt(c,d);B9();return (BJ(d,CK)).cu(b.bSt);},Drn=a=>{let b,c,d;b=a.bHN;c=b.bT6;CV();d=Bat;d=AYt(c,d);B9();return (BJ(d,Lv)).cu(b.bSt);},Tl=a=>{let b,c,d;b=a.bHN;c=b.bT6;CV();d +=Wv;d=AYt(c,d);B9();return (BJ(d,Lv)).cu(b.bSt);},NY=a=>{return DaG(a.bHN);},Fg$=a=>{return a.bHC;},Lo=(a,b,c)=>{let d,e;d=a.bHC.Ts(EA(a.b9L.bKj));e=DE(a.bHC.Ts(XB(EA(a.b9L.bKW),1))-d);((b.h2(NY(a))).h2(BW(c))).hP(e);},NM=(a,b,c,d,e)=>{let f;f=Fg(e-d);(b.h2(Bh(c,d))).hP(f);},CIy=(a,b,c,d)=>{if(c)b=AHY(b,SC());return UR(b,d,d,null);},CrX=(a,b,c)=>{let d,e,f,g,h,i,j,k;d=c-a.TA(b.hE());e=null;f=LM(a);while(It(f,HS(a))<=0){g=EA(f);h=a.bHC.Ts(g);i=a.bHC.Ts(g)+a.bHC.a1s(g);j=EG$(a,g);k=EDO(a,AEP(g));if(k===null)k +=j;if(k===null&&a.bgm(g))k=CgF(a);if(k===null){if(e!==null)BO$(e,b,d);e=null;}else{if(e!==null&&!e.cuw.cx(k)){BO$(e,b,d);e=null;}if(e!==null)e.crh=i;else{e=new Cza;e.cQ8=a;e.cKS=h;e.crh=i;e.cuw=k;}}f=Ep(f,V(1));}if(e!==null)BO$(e,b,d);},BNi=(a,b,c)=>{let d,e,f;d=new BRB;d.cy5=b;d.cD4=c;d.c5K=ME(BB(F,[b,c]));e=a.cWf;f=new CH7;f.ddj=a;f.c3n=b;f.c3m=c;return AN$(e,d,f);},R9=(a,b,c,d)=>{return CIy(a,Chs(a.bHN,b),c,d);},UT=(a,b,c,d,e,f,g,h)=>{let i,j,k,l;h=h.data;i=e-d;j=h.length-1|0;a:{while(j>=0){k=BNi(a,ZV(h[j], +f,E4t(a)),g);l=(k.cF(b.hE())).bGE;if(!j&&!c)break a;if(l<=i)break a;j=j+(-1)|0;}return;}k.cC(b.h2(BM(d+BC(0.0,i-l)/2.0)));},A7t=(a,b,c)=>{let d;b=Dg6(a.bHN,b);d=LM(a);while(It(d,HS(a))<=0){if(CTJ(a,d))NM(a,b,a.bHC.Ts(EA(d)),a.TA(b.hE()),c);d=Ep(d,V(1));}},Fy_=a=>{return ACU();}; +function CNv(){let a=this;F.call(a);a.dfa=null;a.dfj=null;} +let CUz=0,B9a=()=>{B9a=Z(CNv);FnX();},FnX=()=>{CUz=0;},D$9=N(),A5X=N(Bx),AUY=null,Bw$=null,DIv=null,ALk=()=>{ALk=Z(A5X);FtA();},Fk5=(a,b,c)=>{ALk();Ct(a,b,c);},CvO=(a,b)=>{let c=new A5X();Fk5(c,a,b);return c;},FtA=()=>{let b,c,d;AUY=CvO(E(883),0);b=CvO(E(6310),1);Bw$=b;c=K(A5X,2);d=c.data;d[0]=AUY;d[1]=b;DIv=c;}; +function APV(){let a=this;F.call(a);a.b2K=null;a.bX$=null;a.bJf=null;a.bYZ=null;} +let DaY=null,Bfu=()=>{Bfu=Z(APV);D7U();},BtY=(a,b,c,d,e)=>{Bfu();a.bJf=b;a.bX$=e;a.b2K=d;a.bYZ=c;},Fym=(a,b,c,d)=>{let e=new APV();BtY(e,a,b,c,d);return e;},XR=a=>{return a.bJf;},D8e=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o;e=new S;T(e);f=0.0;g=(AAg(a.bJf)).dX();while(g.dY()){h=g.dZ();if(BRm(h.b13,h.b3v))i=BqW(h);else if(!CIU(h))i=0.0;else{j=new BGx;if(ADO(h)){i=(h.bRU.cF(b)).bGE;AU4(j,i);}k=h.bR5;if(k!==null){i=(k.cF(b)).bGE;AU4(j,i);}k=h.bRk;if(k!==null){i=(k.cF(b)).bGE;AU4(j,i);}i=j.cjV+BqW(h);}if(i>f)f=i;}i +=f/10.0;if(if)f=i;}h=Cf(a.bYZ.bT_);IY();m=!WV(h,VC)?f/10.0:f/100.0;if(m{let c,d,e,f,g,h;c=Bk();d=Bk();e=(A9_(a.bJf)).dX();while(e.dY()){f=e.dZ();g=C6m(f,a.b2K);if(g!==null)U(c,g);h=COP(f,a.b2K);if(h!==null)U(d,h);}if(c.bGJ>0){L(b,E(6320));c=Br(c);while(Bq(c)){L(b,Bm(c));L(b,E(6321));L(b,E(939));}L(b,E(582));Fu(b);}if(d.bGJ>0){L(b,E(6322));d=Br(d);while(Bq(d)){L(b,Bm(d));L(b,E(6321));L(b,E(939));}L(b,E(582));Fu(b);}},CEB=a=>{let b,c;b=a.b2K;F8();if(b!==Ry){c=Cf(a.bYZ.bT_);IY();if(WV(c,VC))return 40;return 60;}return 40;},CRs +=a=>{let b;b=a.b2K;F8();if(b===Ry)return 20;return 35;},AEs=a=>{return null;},Ena=(a,b,c,d,e)=>{let f,g,$$je;f=D8e(a,b,c,e);try{b=EWv(f);}catch($$e){$$je=P($$e);if($$je instanceof DR){g=$$je;b=new Dd;ABa(b,g.bW(),g);J(b);}else{throw $$e;}}return b;},DQH=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p;if(b.bGI.length){Bfu();c=D3(DaY,b);if(GW(c)){d=CZ(El(c,2));e=new C8Y;f=d;e.c6M=f;e.cV8=1.0;g=B0v(b,e);h=(AVB(a.bJf)).dX();while(true){if(!h.dY()){c=(A9_(a.bJf)).dX();while(c.dY()){h=c.dZ();if(Ew2(Bvl(h)))continue;i=VA(Sx(g, +BhO(a,b,BBT(h))),E(6323));Csi(h,AGB(i),Eef(i));if(!AJh(h))continue;if(!AWT(h))continue;Ct_(h,AGB(VA(Sx(g,BhO(a,b,BQc(h))),E(6323))));e=Cf(a.bYZ.bT_);IY();if(WV(e,VC)){e=Bvl(h);K$();if((A$s(e,Ku)).dV()>0)EkK(h,AGB(VA(Sx(g,BhO(a,b,D$g(h))),E(6323))));if((A$s(Bvl(h),M5)).dV()>0)EjG(h,AGB(VA(Sx(g,BhO(a,b,E0E(h))),E(6323))));}}b=(AAg(XR(a))).dX();while(b.dY()){D9R(b.dZ(),g);}b=Dak(a.bX$);AHk();if(b===APM)Ffz(a);b=(AAg(XR(a))).dX();while(b.dY()){FmF(b.dZ(),AVB(XR(a)));}return;}j=h.dZ();i=YG(j);c=new S;T(c);H(H(H(c, +E(6324)),i),E(6325));k=IZ(b,Q(c));c=j.bXI;E0();if(!(c!==Ir&&c!==WC&&c!==AGM&&c!==AM1&&c!==AFH&&c!==AIl)){l=AGB(VA(Sx(g,k),E(6323)));AVy(j,l.bGK,l.bGL);}else if(c!==Zr){if(!(c!==AK$&&Bof(j)!==AJ_)){i=VA(Sx(g,Sy(b,E(6323),k+1|0)),E(6323));l=AGB(i);AVy(j,l.bGK,LW(l));Dud(j,LD(l),LW(l),i);}else{if(Bof(j)!==Yr&&Bof(j)!==AC7)break;m=BcB(b,k,E(6326));n=BcB(b,k,E(6327))+f;AVy(j,m-BcB(b,k,E(6328)),n-BcB(b,k,E(6329)));}}else{d=k+1|0;o=Sy(b,E(4897),d);d=Sy(b,E(6323),d);if(o!=(-1)&&!(d!=(-1)&&o>=d))i=VA(Sx(g,o),E(4897));else +{i=VA(Sx(g,d),E(6323));p=0;while(p<3){d=Sy(b,E(6323),d+1|0);c=VA(Sx(g,d),E(6323));Ea(i,c);p=p+1|0;}}l=AGB(i);AVy(j,l.bGK,l.bGL);}}b=new BP;c=HT(Bof(j));e=YG(j);i=CR();H(Et(H(i,c),32),e);BZA(b,CH(i));J(b);}b=new BP;X(b);J(b);}b=new BQF;X(b);J(b);},Ffz=a=>{let b,c,d,e,f,g,h,i,j,k;b=Bk();c=(AVB(a.bJf)).dX();while(c.dY()){d=c.dZ();e=CZv(a.bJf,d);if(e!==null&&En(e)!==null&&BO(En(e),E(2999)))U(b,d);}d=Br(b);while(Bq(d)){c=Bm(d);e=CZv(a.bJf,c);if(e!==null){f=a.bJf;b=Bk();g=Br(f.b_6);while(Bq(g)){f=Bm(g);if(Boi(f,e))U(b, +f);}if(b.dV()==2){h=b.cf(0);g=b.cf(1);if(AKH(h)!==null&&AKH(g)!==null){i=c.bOB+AAE(c)/2.0;j=(Jz(AKH(h))).bGL;k=(ID(AKH(h))).bGL;if(EL(j-i)30.0)){b=Dba(a,b,c,i,j,1);if(b!==null)C_A(g,b);b=Dba(a,e,f,i,j,0);if(b!==null)C_A(h,b);}}}}}}},Dba=(a,b,c,d,e,f)=>{let g,h,i,j,k,l;g=b.bGK;h=b.bGL;i=c.bGK;j=c.bGL;if(EL(g-d)<1.0&&EL(i-d)<1.0)return null;k +=Bk();if(!f){l=h+20.0;b=Sn(d,h,d,h,d,l,d,l);c=k;U(c,b);U(c,Sn(d,l,d,l,i,l,i,l));U(c,Sn(i,l,i,l,i,j,i,j));}else{l=j-20.0;b=Sn(g,h,g,h,g,l,g,l);c=k;U(c,b);U(c,Sn(g,l,g,l,d,l,d,l));U(c,Sn(d,l,d,l,d,j,d,j));}return Byk(k);},BhO=(a,b,c)=>{let d,e,f;d=F9(R8(c));e=new S;T(e);Bb(H(H(e,E(6330)),d),34);f=IZ(b,Q(e));if(f==(-1)){e=new S;T(e);Bb(H(H(e,E(6331)),d),59);f=IZ(b,Q(e));}if(f==(-1)){b=new BP;e=new S;T(e);H(H(e,E(6332)),d);Bp(b,Q(e));J(b);}return f;},D7U=()=>{DaY=Dp(E(6333));}; +function A8Q(){let a=this;F.call(a);a.b7z=null;a.b5l=null;a.cxp=null;a.cCn=null;a.cTm=null;a.b9$=null;} +let BNC=a=>{return AOt(a.b7z);},CAW=(a,b)=>{return !(!(B6$(a.b7z)).dV()&&!(ARe(a)).dV()&&(BfN(a)).dV()==b)?0:1;},C05=a=>{return a.b7z.a1M();},CV$=a=>{return a.b7z.bM8;},Tk=a=>{return a.b7z.bGM;},BzJ=(a,b,c,d,e,f,g)=>{a.cTm=B$(c);a.b5l=d;a.cxp=e;a.cCn=f;a.b9$=g;a.b7z=b;},Fyr=(a,b,c,d,e,f)=>{let g=new A8Q();BzJ(g,a,b,c,d,e,f);return g;},ARe=a=>{return a.b5l;},BfN=a=>{return a.cxp;},D3j=a=>{let b,c,d,e,f,g,h,i,j,k,l,m;b=Dy();c=Br(a.b5l);while(Bq(c)){d=Bm(c);e=(L1(d)).bJi;FU();if(!(e!==AGv&&e!==A3i&&e!==A4H)?1: +0)d.b2B=d.bHn.bJn;f=d.b2B;if(f===null)continue;d=b;g=DG(d,f);C9(d,f,CL(g===null?1:g.bHl+1|0));}h=G$();i=AFi(Tk(a),E(6334),2147483647);if(i<=1)i=2147483647;b=Vm(Ty(b));c=b;while(TS(c)){d=U6(b);j=d.bHt;if(d.bHe.bHl{a.bIV=b;a.cPt=f;a.cvH=e;a.cg1=c;a.cwS=d;a.bOG=g;a.ciY=h;},FyZ=(a,b,c,d,e,f,g)=>{let h=new AUi();A4W(h,a,b,c,d,e,f,g);return h;},DHX=(a,b)=>{let c;B8();c=CG(AFI,a.cvH);if(b!==null)c=Du(c,b);return c;},CAq=(a,b)=>{let c;B8();c=CG(CyK,a.cvH);if(b!==null)c=Du(c,b);return c;},CmK=(a,b)=>{let c,d,e;if(!AIc(Tk(a.bIV))){if(!Hh(b)){c=b.bHD;Cy();if(c===Ok){d=null;c=(ARe(a.bIV)).dX();a:{b:{while(c.dY()){e=c.dZ();if(AG$(e))continue;if(!UY(e,b))continue;if(d!==null)break b;d=e;}break a;}d=null;}if +(d!==null)return (ANk(d,b)).bHD===Ok?0:1;return 0;}return 0;}return 0;}return 0;},APQ=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,$$je;if(!CAW(a.bIV,0)){if(CAW(a.bIV,1)){f=CV$(a.bIV);F8();if(f!==RA){f=((BfN(a.bIV)).dX()).dZ();if(KX(Ja(f))&&!(Mt(f) instanceof BV1)){e=C05(a.bIV);b=a.bIV;g=BIm(f,e,b.b9$,null,null,ARe(b));b=new Dhi;f=B1(Tk(a.bIV));B8();c=B0(f,ZH);B9();c=(BJ(c,CK)).cu((Tk(a.bIV)).bGN);b.c$N=7.0;b.bY_=g;b.cOO=c;return b;}}}D3j(a.bIV);CcJ(a,b,BNC(a.bIV));f=Bk();h=(BfN(a.bIV)).dX();while(h.dY()){i +=h.dZ();if(a.bIV.cTm===Ja(i))U(f,i);}B9m(a,b,f);i=(ARe(a.bIV)).dX();while(i.dY()){j=i.dZ();if(Bev(j))continue;if(!(Bh3(j)===null&&BuL(j)===null)){Tk(a.bIV);D0(B0(j.bU4,CAq(a,j.bPW)),(Tk(a.bIV)).bGN);AQ7();}}h=(ARe(a.bIV)).dX();while(h.dY()){i=h.dZ();if(Bev(i))continue;a:{b:{try{k=Tk(a.bIV);l=B0(Dcj(i),DHX(a,Cq8(i)));f=k;m=DKY(i,k,b,D0(l,GK(f)),D0(B0(Dcj(i),CAq(a,Cq8(i))),GK(f)),XR(a.bOG),a.cwS,AEs(a.bOG));Eqr(XR(a.bOG),m);if(CmK(a,AF4(i))){n=L$(XR(a.bOG),AF4(i));o=L$(XR(a.bOG),AJg(i));if(o!==null){CuG(CgO(n), +m,n,o);BFk(m,1);}}else if(CmK(a,AJg(i))){n=L$(XR(a.bOG),AJg(i));o=L$(XR(a.bOG),AF4(i));if(o!==null){CuG(CgO(n),m,n,o);BFk(m,1);}}break a;}catch($$e){$$je=P($$e);if($$je instanceof BP){p=$$je;break b;}else{throw $$e;}}}GP(p);}}c:{if(c===null){if(!e){h=a.cwS;IY();f=T6(h,BxH);if(!(!(!BG(E(13),f)&&!BG(E(1842),f))?1:0))break c;}f=U2();AFS();if(!(f!==AQn&&U2()!==Brv&&U2()!==A8A)){c=new CGx;c.ddf=null;c.das=null;}}}d:{try{q=Ena(a.bOG,b,a.cPt,c,d);break d;}catch($$e){$$je=P($$e);if($$je instanceof Dd){p=$$je;}else{throw $$e;}}return Ch$(Bv7(a.cg1, +Dlo()),0,p);}if(GB(q)){r=FtQ(a,q);try{DQH(a.bOG,q);s=DKG(a.bIV,a.bOG);a.c_U=ELy(XR(a.bOG));}catch($$e){$$je=P($$e);if($$je instanceof Dt){p=$$je;b=BY(p);c=CR();H(H(c,E(6335)),b);AJZ(CH(c));J(E0S(p,r,q,Bv7(a.cg1,Dlo())));}else{throw $$e;}}return s;}return Ch$(Bv7(a.cg1,E(15)),0,DxM());}b=new CTO;b.cPS=AF5(Tk(a.bIV));return b;},FtQ=(a,b)=>{let c;c=D3(Dp(E(6336)),b);if(GW(c))return ES(El(c,1));return null;},B9m=(a,b,c)=>{let d;c=c.dX();while(c.dY()){d=c.dZ();if(Qq(d))continue;C0E(a,b,d);}},C0E=(a,b,c)=>{let d, +e,f,g,h,i,j;if(!Qq(c)){if(!Qq(c)){if(AQs(c)!==null)d=AQs(c);else{d=Tk(a.bIV);if(C8_(d)){e=0.0;f=(BfN(a.bIV)).dX();while(f.dY()){g=f.dZ();if(!AJn(g.bHD))continue;h=(De(Cvv(g,a.bIV.b9$),b)).bGE;if(h>e)e=h;}d.cLn=e;}i=C05(a.bIV);j=a.bIV.b9$;d=a.bOG;d=BIm(c,i,j,d.bJf,AEs(d),ARe(a.bIV));}f=Dk1(a.bOG.bJf,c,d,b);De7(a.ciY,f);return;}b=new BP;X(b);J(b);}b=new BP;Bp(b,Cmo(c));J(b);},CcJ=(a,b,c)=>{let d,e,f;c=(a.bIV.cCn.a1y(c)).dX();while(c.dY()){d=c.dZ();if(Qq(d))continue;a:{if(a.bIV.cCn.a1z(d)){e=HR(d);F7();if(e=== +Kw){Cy();C9f(d,APu);C0E(a,b,d);break a;}}e=HR(d);F7();if(e!==N2){f=CT_(d,a.bIV.b9$,b);CxN(a.ciY,d,f);B9m(a,b,Pw(d));CcJ(a,b,d);Cow(a.ciY);}}}}; +function B2j(){let a=this;Er.call(a);a.cZO=null;a.cLT=null;a.cHw=null;a.cQ0=0;} +let Ch$=(b,c,d)=>{let e,f,g;e=new B2j;e.cLT=b;e.cQ0=0;e.cHw=null;b=Bg6();Clv(b,null,e.cLT);MH(b,E(6337));Xh(b);f=BY(d);g=new S;T(g);H(H(g,E(6338)),f);MH(b,Q(g));if(d!==null)BmQ(b,B9b(d));Xh(b);CRb(b);Xh(b);Xh(b);MH(b,E(6339));Xh(b);CNn(b);if(e.cHw!==null){Xh(b);MH(b,E(6340));}b=BdO(b);d=CSd();AEt();e.cZO=Bqk(b,d,AOO);return e;},D3Z=a=>{return 0;},DG5=a=>{Go();return K8;},EXI=(a,b)=>{return (Dqv(a)).cF(b);},DZj=(a,b)=>{(Dqv(a)).cC(b);},Dqv=a=>{let b,c,d,e,f;b=a.cZO;c=a.cHw;if(c!==null){d=new NR;e=new WP;WL();ACP(e, +c,Bcn);ABW(d,e);c=A9h(d,3.0);B3();b=FT(b,c,CF);}if(a.cQ0){c=Bk();e=c;U(e,E(344));U(e,E(6341));U(e,E(6342));U(e,E(6343));d=Cln(c);B3();c=FT(b,d,CF);e=new NR;d=new WP;f=B7o(E(6344));WL();ACP(d,f,YW);ABW(e,d);b=FT(c,e,CF);c=Bk();e=c;U(e,E(344));U(e,E(6345));b=FT(FT(b,Cln(c),CF),DKX(Ex3(B7o(E(6346)),YW)),CF);}return b;},EOB=a=>{E0();return Ir;},FvU=(a,b)=>{Qa();return RW;},Ev3=a=>{return 1;},CcM=N(),ERZ=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o;while(true){e=0;f=AOt(b);g=AAh();h=g;EQ(h,f);while(true){i=AFU(h);j=Br(E2(g));while +(Bq(j)){f=Rk(Bm(j));k=Bk();f=f.dX();while(f.dY()){l=f.dZ();Ik(k,0,l);}k=Br(k);while(Bq(k)){EQ(h,Bm(k));}}if(i!=AFU(h))continue;else break;}f=Bk();g=Ro(h);while(g.dY()){h=g.dZ();if(!KX(h))Ik(f,0,h);}l=Br(f);while(Bq(l)){m=Bm(l);if(BQB(m)){j=new Cg8;j.bYa=b;j.cfg=c;j.bL_=m;j.cW6=d;if(!Hh(m)){b=new Bt;X(b);J(b);}n=j.bYa.bGM;if(!AUe(j.bL_)&&!(Rk(j.bL_)).dV())g=BhX(j.bL_);else{f=HR(j.bL_);F7();if(f===N2)g=APQ(BFg(j,Pw(j.bL_)),j.cfg,null,K(Bi,0),0);else{if(HR(j.bL_)!==ZD){b=new BV;Bp(b,HT(HR(j.bL_)));J(b);}g=(Pw(j.bL_)).dX();a: +{b:{while(g.dY()){h=(g.dZ()).bHD;Cy();if(h===Xn)break b;}e=0;break a;}e=1;}if(!e)f=APQ(BFg(j,Dkc(j,Pw(j.bL_))),j.cfg,null,K(Bi,0),0);else{g=Bk();f=APQ(BFg(j,Dkc(j,Pw(j.bL_))),j.cfg,null,K(Bi,0),0);h=g;U(h,f);f=(Pw(j.bL_)).dX();while(f.dY()){k=f.dZ();o=k.bHD;Cy();if(o===Xn)U(h,AQs(k));}f=new Bht;h=j.bL_;BOd(f,g,h.b$o,n,h.bGZ);}g=Cn8(f,j.bL_);}}f=HR(m);F7();if(f!==N2){Cy();f=VL;}else{Cy();f=Xn;}B2_(m,g,f);e=1;}}if(e)continue;else break;}}; +function Ccw(){let a=this;Er.call(a);a.cI9=0;a.cOf=0;a.cVm=null;a.crn=null;a.cnK=null;} +let CKU=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=Cr8(a);d=c.cF(b.hE());e=a.cI9;f=!e?16.0:0.0;g=!e?16.0:32.0;if(a.cOf){h=!e?16.0:0.0;c.cC(b.h2(Bh( -d.bGE/2.0,h)));}c=a.crn;i=(AB8(c,a.cnK.bGN)).bMx;c=Fi(c);j=new CNK;j.cTS=c;j.cXg=g;j.c4W=i;j.cPA=f;b=b.h2(BW(d.bGF));c=j;b=(b.h2(c.c4W)).h2(c.cTS);d=new BiK;k=c.cPA;Dps(d,k,k+c.cXg,SY());Bgm(d,b);},E3I=(a,b)=>{return JM((Cr8(a)).cF(b),Cl(0.0,!a.cI9?16.0:32.0));},Cr8=a=>{let b,c,d,e,f,g;b=D0(a.crn,a.cnK.bGN);c=a.cnK;d=K(KH,1);d.data[0]=a.cVm;e=PB(d);B3();f=CF;Ed();g=AJr;Jo();return WB(e, +b,f,c,g,JJ);}; +function AGg(){let a=this;F.call(a);a.cg$=0;a.caY=0;a.b5c=null;a.b2Y=null;a.cDJ=0;a.cqb=0;} +let DXe=null,Bx7=()=>{Bx7=Z(AGg);FkF();},CIs=(a,b)=>{return a.cg$*b;},BHL=a=>{let b;b=B1(a.b2Y);B8();return B0(b,Dfz);},Cj8=(a,b)=>{let c,d,e,f;b=B4(a.b2Y.bH$,b);c=D0(BHL(a),a.b2Y.bGN);B3();d=CO;e=a.b2Y;Ed();f=J0;Jo();return WB(b,c,d,e,f,JJ);},C_p=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o;e=CIs(a,c);f=AB8(BHL(a),a.b2Y.bGN);g=A9u(BHL(a));h=b.gS(g,E(1218));i=b.gS(g,a.b5c);c=CIs(a,c);if(i.bGE{DXe=J$(5.0,5.0,1.0);},CwD=N(0); +function Cwa(){let a=this;F.call(a);a.czc=null;a.ceZ=null;} +let CXQ=N(AEa),ALw=a=>{B46(a);return a.b1s.bHt;}; +function CIi(){let a=this;F.call(a);a.co9=null;a.cHQ=null;a.cw4=null;a.cmf=null;a.c67=null;a.cLD=null;a.cvl=0.0;} +let EfW=(a,b,c,d,e,f,g)=>{a.cvl=b;a.co9=B$(c);a.cHQ=B$(d);c=f;a.cw4=B4(c.bH$,e);a.cmf=f;a.c67=B1(c);a.cLD=g;},BRf=(a,b,c,d,e,f)=>{let g=new CIi();EfW(g,a,b,c,d,e,f);return g;},CFT=(a,b)=>{let c;c=D0(BUa(a),a.cmf.bGN);B3();return C_(b,c,CF,a.cmf);},Dot=(a,b,c,d)=>{((b.h2(BM(c))).h2(Fi(BUa(a)))).hP(DE(d-c));},BUa=a=>{let b;b=a.c67;B8();return B0(b,Cld);},DaK=(a,b)=>{return ((CFT(a,a.cw4)).cF(b)).bGF+5.0;},BfV=(a,b,c)=>{let d,e,f;DC();if(b!==Gy){d=R5(c,8.0,4.0);e=R5(c,8.0,(-4.0));}else{d=R5(c,(-8.0),4.0);e=R5(c, +(-8.0),(-4.0));}f=Fj();ADG(f,d);ADG(f,e);ADG(f,c);return f;}; +function BR$(){let a=this;F.call(a);a.bQK=null;a.b6a=null;a.coR=null;a.b_o=null;} +let C7F=(a,b,c,d,e)=>{if(!e.data.length){b=new Bt;X(b);J(b);}a.bQK=b;a.b6a=e;a.coR=c;a.b_o=d;},ETJ=(a,b,c,d)=>{let e=new BR$();C7F(e,a,b,c,d);return e;},AI1=a=>{return a.b6a.data[0];},AKb=a=>{return Bv(a.b6a);},CjN=(a,b,c)=>{let d;d=a.b_o;if(d!==null){CM();if(DQ(d,C6)!==null)return DQ(a.b_o,C6);}B9();return (BJ(c,CK)).cu(b.bGN);},AS3=(a,b,c)=>{let d,e,f;a:{d=new BbK;e=CjN(a,b,c);f=a.b_o;if(f!==null){CM();if(DQ(f,E1)!==null){b=DQ(a.b_o,E1);break a;}}B9();b=(BJ(c,Cz)).cu(b.bGN);}CXe(d,e,b);return AGc(d,Fi(c));},AFE +=a=>{return Bj(a.b6a.data[0],E(6347));},BU8=a=>{return Bwt(a.b6a.data[0]);},Bwt=b=>{return Bj(b,E(6348));},DZ3=(a,b)=>{b=b;return AOB(a.bQK,b.bQK);}; +function CL3(){let a=this;F.call(a);a.cIl=null;a.c8g=null;} +let AAZ=a=>{return Bq(a.cIl);},AAW=a=>{return Bm(a.cIl);},Dl2=N(AGP),D$j=a=>{BII(a);return a.bXU.bHe;}; +function CT3(){let a=this;AX7.call(a);a.ceW=null;a.bS1=null;a.bN7=0;} +let Ww=(a,b)=>{let c,d;if(a.bN7>(a.bS1.data.length-1|0))Bui(a);c=a.bS1.data;d=a.bN7;a.bN7=d+1|0;c[d]=b&65535;},BCI=(a,b,c,d)=>{let e;if(a.bN7>(a.bS1.data.length-d|0)){Bui(a);if(d>a.bS1.data.length){e=a.ceW;b=B_(b,c,c+d|0);L(e.cg6,b);return;}}ANC(b,c,c+d|0,a.bS1,a.bN7);a.bN7=a.bN7+d|0;},Bui=a=>{let b,c,d;b=a.ceW;c=a.bS1;d=a.bN7;DeI(b,c,0,d);a.bN7=0;}; +function Cgz(){let a=this;F.call(a);a.crP=0;a.bPZ=null;} +let DLb=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;b=b.h2(Bh(5.0,5.0));Cax(a.bPZ.bZS,a.crP);b=b.h2(BM( -CW(a.bPZ.c4Y)));c=a.bPZ;d=c.chR;e=(De(c.bZS,c.bVj)).bGF;c=a.bPZ;f=e+c.cla+c.ck_/2.0;c=Bcg(1);d=(Gc(d.bQ1)).dX();while(d.dY()){g=d.dZ();h=BI1(g);i=b.hE();j=CW(CIC(g,i))-4.0;e=CW(CgV(g,i))+4.0;i=b;k=f;while(h!==null){l=C0Y(h);i=i.h2(BW(l));k=k-l;h=BI1(h);}h=Cl(e-j,k);(CyI(g)).a$w(i.h2(Bh(j,1.0)),AVv(h),c);}b=b.h2(BW(a.bPZ.cla));m=a.bPZ.bZS;c=b.hE();n=Bcg(0);o=m.bOJ.bYM;j=BXs(o,c);k=C6c(m.bOJ,c);l=CMN(m);p +=CD5(m,k)-l;q=b.h2(BW(j-l));h=m.bOJ;c=Bk();d=DL(0.0);g=c;U(g,d);c=Br(B0l(h));while(Bq(c)){U(g,DL(CW((Bm(c)).b6f.bIp)));}U(g,DL(1.7976931348623157E308));if((g.bGJ-1|0)>1)q=q.h2(B4I((-1000.0),l,1.7976931348623157E308,p+1.0));BWd(m.bOJ,Bxt(q,1),0);r=(SP(o)).dX();while(r.dY()){s=r.dZ();t=q.h2(BM(CW(Gz(s,q.hE()))));u=s.b4H;c=KV(u.cm0);Hb();Db(c,IO,E(6349));d=KD;g=u.bV_;h=new S;T(h);H(H(h,g),E(6350));Db(c,d,Q(h));Db(c,L8,u.bQo);Db(c,AV8,u.bQo);Db(c,ALN,u.bV_);t.hH(c);v=s.cb_?0:1;f=0.0;h=Ta(UA(s.ccI));while(SD(h)) +{a:{d=Tj(h);if(!v){g=d;if(g.bI1.bOP){f=g.bIu.bG6;break a;}}if(v){g=d;if(!g.bI1.bOP)COq(s.cmm,t,n,f,g.bIu.bG6);}}v=d.bI1.bOP;}if(v)COq(s.cmm,t,n,f,k);t.hI();Du$(s.b4t,t,n,FpO(s),k);}Fa();Dne(o,b,n,Pe);if(m.bOJ.cGc)Dne(o,b.h2(BW(p+j)),n,NH);FpS(m.bOJ,q);c=a.bPZ;(b.h2(BW((De(c.bZS,c.bVj)).bGF))).h2(BW(a.bPZ.ck_));},EoB=(a,b)=>{let c,d;Cax(a.bPZ.bZS,a.crP);c=(De(a.bPZ.bZS,b)).bGE;d=(De(a.bPZ.bZS,b)).bGF;b=a.bPZ;return Cl(c+10.0,d+b.cla+b.ck_+10.0);},FbI=a=>{return null;}; +function Cqx(){let a=this;F.call(a);a.b6y=null;a.ck$=null;} +let BXa=(a,b,c,d)=>{return BA(b.bGK+d*H0(c),b.bGL+d*G4(c));}; +function CTe(){F.call(this);this.cGV=0;} +let DVf=a=>{a.cGV=0;},EOD=()=>{let a=new CTe();DVf(a);return a;},Ecd=a=>{let b;b=a.cGV+1|0;a.cGV=b;return b;}; +function DoW(){F.call(this);this.c_R=null;} +function DoV(){let a=this;F.call(a);a.dc1=null;a.dc2=null;} +function Cdm(){let a=this;F.call(a);a.bWQ=null;a.bZW=null;a.bW0=null;a.bWN=0;a.clr=0;a.b0o=null;} +let E4N=(a,b,c,d,e)=>{a.b0o=b;a.clr=b.bHh;a.bWQ=c;a.bZW=d;a.bWN=e;},B5X=(a,b,c,d)=>{let e=new Cdm();E4N(e,a,b,c,d);return e;},B2T=a=>{return a.bWQ===null?0:1;},A2v=a=>{let b,c;Bj_(a);b=a.bWQ;if(b!==null){c=b.bZk;a.bW0=b;a.bZW=b;a.bWQ=b.bPS;a.bWN=a.bWN+1|0;return c;}b=new Kx;X(b);J(b);},CXm=a=>{let b,c,d,e;b=a.bW0;if(b!==null){c=a.b0o;d=b.bRv;if(d===null)c.bWo=b.bPS;else d.bPS=b.bPS;e=b.bPS;if(e===null)c.bUj=d;else e.bRv=d;c.bO$=c.bO$-1|0;c.bHh=c.bHh+1|0;c=a.bZW;if(b===c){a.bZW=!B2T(a)?null:a.bWQ.bRv;a.bWN=a.bWN +-1|0;}else if(b===a.bWQ)a.bWQ=!(c===null?0:1)?null:c.bPS;a.clr=a.b0o.bHh;a.bW0=null;return;}b=new BP;X(b);J(b);},E2v=a=>{let b,c;Bj_(a);b=a.bZW;if(b!==null){a.bW0=b;c=b.bZk;a.bWQ=b;a.bZW=b.bRv;a.bWN=a.bWN-1|0;return c;}b=new Kx;X(b);J(b);},DXb=a=>{return a.bWN;},EzP=a=>{return a.bWN-1|0;},Cw3=(a,b)=>{let c,d,e;Bj_(a);c=new BdD;c.bZk=b;b=a.bZW;c.bRv=b;d=a.bWQ;c.bPS=d;if(b!==null)b.bPS=c;else a.b0o.bWo=c;if(d!==null)d.bRv=c;else a.b0o.bUj=c;a.bZW=c;b=a.b0o;b.bO$=b.bO$+1|0;e=b.bHh+1|0;b.bHh=e;a.clr=e;a.bW0=null;},Bj_ +=a=>{let b;if(a.clr{Bmp(a,b.bQz);a.cen=b;a.clG=c;},A79=(a,b)=>{let c=new C8R();D0A(c,a,b);return c;},EQ_=a=>{return CW(a.cen)+a.clG;},N8=(a,b)=>{return A79(a.cen.Rv(b),a.clG);},OC=(a,b)=>{a.cen.RO(A79(b, -a.clG));},BEo=(a,b)=>{a.cen.YA(b);}; +function AD_(){F.call(this);this.bIL=null;} +let Bs3=(a,b)=>{a.bIL=b;},FzI=a=>{let b=new AD_();Bs3(b,a);return b;},Dwb=a=>{return a.bIL.lu();},COA=a=>{return a.bIL.a24();},E0P=(a,b,c,d)=>{return a.bIL.o6(b,0,d);},DcF=(a,b,c)=>{return a.bIL.lt(b,c);},A4J=(a,b,c,d)=>{return a.bIL.qS(b,c,d);},DxZ=a=>{return a.bIL.H_();},Bhs=(a,b,c,d,e)=>{return a.bIL.qV(b,c,d,e);},Cd1=(a,b)=>{return a.bIL.qQ(b);},BUL=a=>{return a.bIL.HH();},FwI=(a,b)=>{return a.bIL.Bk(b);},ADx=(a,b)=>{return a.bIL.a9h(b);},DZm=(a,b,c)=>{return a.bIL.beU(b,c);},Ejv=a=>{return a.bIL.rg();},Dgq +=a=>{return a.bIL.ri();},CyE=a=>{return a.bIL.a9A();},A9p=a=>{return a.bIL.ly();},D85=a=>{return a.bIL.lv();},CkS=(a,b)=>{return a.bIL.AZ(b);},CTh=a=>{return a.bIL.hr();},Fsw=a=>{return a.bIL.lw();},EJU=(a,b)=>{return a.bIL.bev(b);},B$g=a=>{return a.bIL.a9P();},DVA=a=>{return a.bIL.rj();},BFb=a=>{return a.bIL.a4e();},DPh=a=>{return a.bIL.bh4();},ADg=a=>{return a.bIL.cp();},C3T=(a,b,c,d)=>{return a.bIL.E0(b,c,d);},Dus=(a,b,c,d,e)=>{return a.bIL.l_(b,c,d,e);},FcR=a=>{return a.bIL.a$c();},EB9=a=>{return a.bIL.gs();},DwD +=a=>{return a.bIL.Vx();}; +function AJC(){AD_.call(this);this.b3P=null;} +let D4b=0,Bhz=()=>{Bhz=Z(AJC);ETz();},BC4=(a,b,c)=>{Bhz();Bs3(a,b);a.b3P=c;},D9E=(a,b)=>{let c=new AJC();BC4(c,a,b);return c;},E_m=(a,b)=>{let c;c=a.b3P.cc3;if(c!==null)return c.bOP;return Cd1(a,b);},EbH=(a,b,c)=>{let d,e;d=a.b3P;CM();e=DQ(d,YD);if(e===null)return DcF(a,b,c);return e;},ETh=(a,b,c,d)=>{let e,f;e=b.cb$;if(e!==null){f=DQ(a.b3P,e);if(f===null){if(Df())Bhz();return A4J(a,b,c,d);}return f;}return A4J(a,b,c,d);},ETz=()=>{D4b=0;},A5y=N(Bx),W2=null,Xc=null,A3$=null,ADW=null,DY$=null,QG=()=>{QG=Z(A5y);EQP();},FhI +=(a,b,c)=>{QG();Ct(a,b,c);},Bp6=(a,b)=>{let c=new A5y();FhI(c,a,b);return c;},EQP=()=>{let b,c,d;W2=Bp6(E(6351),0);Xc=Bp6(E(6352),1);A3$=Bp6(E(6353),2);b=Bp6(E(6354),3);ADW=b;c=K(A5y,4);d=c.data;d[0]=W2;d[1]=Xc;d[2]=A3$;d[3]=b;DY$=c;}; +function S_(){let a=this;F.call(a);a.bPC=null;a.cwn=null;} +let AQN=(a,b,c)=>{a.bPC=b;a.cwn=c;},WM=a=>{return a.cwn.ly();},Zv=a=>{return AB8(a.bPC,WM(a));},BLk=(a,b)=>{return CFz(a.bPC,WM(a),b);},C$G=(a,b)=>{return (BJ(a.bPC,b)).cu(WM(a));},AL0=a=>{B9();return C$G(a,Cz);},BZz=a=>{B9();return C$G(a,CK);},ANi=a=>{let b;b=a.bPC;B9();return (BJ(b,Jm)).oX();},AGS=a=>{return Fi(a.bPC);},B5x=a=>{return IR(a.bPC);},ErL=(a,b,c)=>{return;},MT=(a,b,c,d)=>{b=b.h2(Bh(a.bh6(),a.bh7()));if(!d.bh8())a.bh9(b,c);else a.bh$(b,c);},Fmv=a=>{return 0.0;},EsF=a=>{return 0.0;},F3=(a,b)=>{return Cl(a.RE(b), +a.a61(b));}; +function Hx(){let a=this;S_.call(a);a.bJQ=null;a.b$I=null;} +let DhH=(a,b,c,d,e,f)=>{PM(a,b,b,c,d,e,B4(e.gs(),f!==null?f.p():E(14)),0);},PM=(a,b,c,d,e,f,g,h)=>{let i,j,k,l,m;AQN(a,b,f);a.b$I=e;i=D0(a.bPC,WM(a));j=B5x(a);k=A9u(c);B9();l=(BJ(c,Lv)).cu(WM(a));HW();m=Lu;if(g!==m){c=BJ(b,BsX);m=!(!(c instanceof AZN)&&!c.bh_())?g:AEj(0,g,g.bMn);}if(I6(m)==1&&!(Ne(m,0)).bL())a.bJQ=BhM();else if(h)a.bJQ=A$j(m,f,j,i,d,b);else{Ed();a.bJQ=C$Z(m,i,j,f,d,FR,k,l,e.bIv,e.bKJ);}},Ftp=a=>{return a.bJQ;},A2E=(a,b)=>{return ((a.yv()).cF(b)).bGE;},Iz=(a,b)=>{return a.bfb(b)+R2(a)+BFZ(a);},He +=(a,b)=>{let c;c=((a.yv()).cF(b)).bGF;b=a.b$I;return c+b.bIl+b.bJU;},R2=a=>{return a.b$I.bIv;},BFZ=a=>{return a.b$I.bKJ;},RR=a=>{return a.b$I.bIl;}; +function A4E(){let a=this;Hx.call(a);a.deg=10;a.deh=4;a.bX9=null;a.ciI=null;a.bOS=null;} +let CyW=(a,b,c,d,e,f)=>{PM(a,b,b,f,OE(1.0,7.0,1.0,7.0),e,c,0);a.deg=10;a.deh=4;a.bX9=AL0(a);a.ciI=BZz(a);a.bOS=BU_(d,(AGS(a)).bJw);},A4_=a=>{let b,c,d;b=a.cwn.bh4();c=a.bJQ;AP4();if(b===Bdy)d=c;else{d=new CX1;d.bYh=b;d.cn8=c;}return d;},AFp=a=>{return a.bX9;},Bn8=a=>{return a.ciI;},IC=a=>{return 10;},APb=a=>{return 4;},Exp=a=>{return 4.0;},Hm=a=>{return a.bOS;}; +function CQY(){let a=this;A4E.call(a);a.dcy=45.0;a.c8W=42.0;a.cQR=0;} +let E0N=(a,b,c)=>{let d,e,f,g,h;if(!CVv(a.bOS)){d=b.hE();e=He(a,d);f=COg(a,d);g=b.h2(a.bX9);d=a.bOS;h=!Bds(d)?g.h2(Dw(d.bMo)):g.h2(J$(2.0,2.0,d.bMo));if(!a.bOS.bLo)DwA(a,g,h,c,13.0,e);else Fhm(a,g,h,c,13.0,e,f);(A4_(a)).cC(g.h2(BM(R2(a))));return;}},DwA=(a,b,c,d,e,f)=>{let g,h,i,j,k,l,m;g=!(A_P(d)<0.0)?0.0:A_P(d);h=!(A_P(d)>0.0)?1.0: -A_P(d);i=Fz(8.0,8.0);j=CLQ(Hm(a));OG();if(j===PA){((((c.h2(Dw(1.5))).h2(AFp(a))).h2(Cc(Bn8(a)))).h2(Bh(g+1.0-4.0-1.5,f-4.0-0.75))).hP(i);k=g+6.5;d=QZ(AQt(Hm(a)));GQ();g=k-(d!== +Th?0.0:2.5);}if(Dez(Hm(a))===PA){((((c.h2(Dw(1.5))).h2(AFp(a))).h2(Cc(Bn8(a)))).h2(Bh(h-4.0-1.5,f+e-4.0-0.75))).hP(i);h=h+5.5;}d=QZ(AQt(Hm(a)));GQ();l=d!==L7?0:1;if(l)g=g+12.0;m=QZ(Wg(Hm(a)))!==L7?0:1;if(m)h=h+12.0;if(QZ(Wg(Hm(a)))===P6)h=h-1.0;(c.h2(Bh(g,f))).hP(DE(42.0-g));(c.h2(Bh(42.0,f))).hP(Fg(e));d=new FG;k=f+e;Hs(d,h,k);(c.h2(d)).hP(DE(42.0-h));if(QZ(Wg(Hm(a)))===P6)h=h+1.0;if(l){((b.h2(Dw(2.0))).h2(Bh(6.0,f-IC(a)/2.0))).hP(EB(IC(a),IC(a)));((b.h2(Dw(2.0))).h2(Bh(6.0,f+IC(a)/2.0))).hP(EB(IC(a), -IC(a) +|0));}else if(D6c(Hm(a))){c=AF_(Hm(a));MP();if(c!==SO)((YB(Hm(a),b)).h2(Bh(g,f))).hP(EB(IC(a),APb(a)));if(AF_(Hm(a))!==RG)((YB(Hm(a),b)).h2(Bh(g,f))).hP(EB(IC(a), -APb(a)|0));}else if(QZ(AQt(Hm(a)))===MG){j=Xz(Bdg(a),0.0,f);((b.h2(Cc(AFp(a)))).h2(BM(g))).hP(j);}if(m){((b.h2(Dw(2.0))).h2(Bh(6.0,f-IC(a)/2.0+e))).hP(EB(IC(a),IC(a)));((b.h2(Dw(2.0))).h2(Bh(6.0,f+IC(a)/2.0+e))).hP(EB(IC(a), -IC(a)|0));}else if(Dhm(Hm(a))){c=AF_(Hm(a));MP();if(c!==SO)((YB(Hm(a),b)).h2(Bh(h,k))).hP(EB(IC(a), -APb(a)|0));if(AF_(Hm(a)) +!==RG)((YB(Hm(a),b)).h2(Bh(h,k))).hP(EB(IC(a),APb(a)));}else if(QZ(Wg(Hm(a)))===MG){j=Xz(Bdg(a),0.0,k);((b.h2(Cc(AFp(a)))).h2(BM(h))).hP(j);}},Fhm=(a,b,c,d,e,f,g)=>{let h,i,j,k,l,m,n,o,p,q,r,s;h=Fol(d);i=A_P(d);j=Eni(d);k=0.0;l=1.0;m=j*h;if(i<0.0){k=0.0;if(j>0)h= -m;l=l+h;}else if(i>0.0){n=C5(j,1);k=k+(n<=0?0.0:h-m);l=l+(n?0.0: -h);}else if(j>1){o=m-h;k=k-o;l=l-o;}p=Fz(8.0,8.0);d=CLQ(Hm(a));OG();if(d===PA){((((c.h2(Dw(1.5))).h2(AFp(a))).h2(Cc(Bn8(a)))).h2(Bh(g-k+1.0-4.0-1.5,f-4.0-0.75))).hP(p);o=k+2.5;d=QZ(AQt(Hm(a)));GQ();k +=o+(d!==Th?0.0:1.5);}if(Dez(Hm(a))===PA){((((c.h2(Dw(1.5))).h2(AFp(a))).h2(Cc(Bn8(a)))).h2(Bh(g-l+2.0-4.0-1.5,f+e-4.0-0.75))).hP(p);l=l+5.5;}d=QZ(AQt(Hm(a)));GQ();n=d!==L7?0:1;if(n)k=k+6.0+(j<=0?6.0:m);q=QZ(Wg(Hm(a)))!==L7?0:1;if(q){if(j<=0)m=6.0;l=l+6.0+m;}r=0.0;d=DjX(Wg(Hm(a)));MP();if(d===AFD&&QZ(Wg(Hm(a)))===MG)r=1.0;o=k+1.0;d=new FG;h=g-42.0;Hs(d,h,f);(c.h2(d)).hP(DE(42.0-o));(c.h2(Bh(h,f))).hP(Fg(e));d=new FG;i=f+e;Hs(d,h,i);(c.h2(d)).hP(DE(42.0-l-r));if(DjX(Wg(Hm(a)))===AFD&&QZ(Wg(Hm(a)))===MG)l=l+1.0;if +(QZ(Wg(Hm(a)))===P6)l=l+1.0;if(n){c=b.h2(Dw(2.0));d=new FG;h=g-o-3.0;Hs(d,h,f-IC(a)/2.0);(c.h2(d)).hP(EB(IC(a),IC(a)));((b.h2(Dw(2.0))).h2(Bh(h,f+IC(a)/2.0))).hP(EB(IC(a), -IC(a)|0));}else if(QZ(AQt(Hm(a)))===MG){s=Xz(Bdg(a),g-o,f);((b.h2(Cc(AFp(a)))).h2(BM(o))).hP(s);}if(q){c=b.h2(Dw(2.0));d=new FG;g=g-l-3.0;Hs(d,g,f-IC(a)/2.0+e);(c.h2(d)).hP(EB(IC(a),IC(a)));((b.h2(Dw(2.0))).h2(Bh(g,f+IC(a)/2.0+e))).hP(EB(IC(a), -IC(a)|0));}else if(Dhm(Hm(a))){if(AF_(Hm(a))!==SO)((YB(Hm(a),b)).h2(Bh(g-l,i))).hP(EB( -IC(a) +|0, -APb(a)|0));if(AF_(Hm(a))!==RG)((YB(Hm(a),b)).h2(Bh(g-l,i))).hP(EB( -IC(a)|0,APb(a)));}else if(QZ(Wg(Hm(a)))===MG){s=Xz(Bdg(a),0.0,i);((b.h2(Cc(AFp(a)))).h2(BM(g-l))).hP(s);}},Bdg=a=>{let b,c,d,e;b=Fj();c=a.bOS;d=!c.bLo?1.0:(-1.0);e=d*10.0;c=AF_(c);MP();if(c===RG){d=e-1.0;BQ(b,d,(-4.0));BQ(b,(-1.0),0.0);BQ(b,d,0.0);}else if(AF_(a.bOS)===SO){d=e-1.0;BQ(b,d,0.0);BQ(b,(-1.0),0.0);BQ(b,d,4.0);}else{BQ(b,e,(-4.0));BQ(b,0.0,0.0);BQ(b,e,4.0);if(a.cQR)BQ(b,e-d*4.0,0.0);}return b;},D3a=(a,b,c)=>{return BA(0.0,He(a, +b)+4.0);},DNi=(a,b,c)=>{return BA(0.0,He(a,b)+13.0+4.0);},DJy=(a,b)=>{let c;c=He(a,b);return (c+c+13.0)/2.0+0.0;},EXX=(a,b)=>{return He(a,b)+4.0+13.0+8.0;},COg=(a,b)=>{return BC(Iz(a,b),50.0);},DIt=(a,b)=>{b=new BV;X(b);J(b);}; +function Dlw(){let a=this;A4E.call(a);a.c5S=null;a.cz$=0;a.c0k=0;a.bX0=0;a.bRH=0;} +let EgT=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;d=a.bOS;if(!CVv(d)){e=c.bJb;f=b.hE();g=b.h2(a.bX9);h=d.bKu;i=d.bKc;j=0.0;k=e.bGE;l=k-1.0;m=l-1.0;n=d.bLW;OG();b=PA;if(n===b){o=i.bJ9;GQ();n=Th;if(o===n)l=l-4.0;if(o!==n)l=l-5.5;}if(d.bLV===b){n=h.bJ9;GQ();if(n===Th){j=4.0;l=l-4.0;}if(n===P6){j=j+5.5;l=l-5.5;}if(n===MG){j=j+5.5;l=l-5.5;}}n=i.bPp;MP();b=AFD;if(n===b){o=i.bJ9;GQ();if(o===MG)l=l-5.0;}if(h.bPp===b){n=h.bJ9;GQ();if(n===MG){j=j+5.0;l=l-5.0;}}n=i.bJ9;GQ();b=L7;if(n===b)l=l-12.0;if(h.bJ9===b){j=j ++12.0;l=l-12.0;}if(!BJu(a)){p=He(a,f);q=0.0;}else{p=0.0;q=RR(a);}FaK(a,g.h2(Bh(1.0,p+a.bX0)),h,d.bLV,k);FgK(a,g.h2(Bh(m,p+a.bRH)),i,d.bLW,k);r=a.bX0;if(!r&&!a.bRH)((B5D(d,g,a.bPC)).h2(Bh(j,p))).hP(EB(l,0.0));else if(r)COs(a,B5D(d,g,a.bPC),j+l,p,0.0,p+a.bX0);else if(a.bRH)COs(a,B5D(d,g,a.bPC),j,p,m,p+a.bRH);n=BVK(a);b=a.c5S;B3();if(b===CO){s=((A4_(a)).cF(f)).bGE;k=(e.bGE-EL(c.b_S)-s)/2.0;}else if(b===Ft){s=((A4_(a)).cF(f)).bGE;m=e.bGE-EL(c.b_S)-s-BFZ(a);QG();k=m-(n!==W2?0:10);}else{m=R2(a);QG();k=m+(n!==Xc&& +n!==ADW?0:10);}(A4_(a)).cC(g.h2(Bh(k+BC(0.0,c.b_S),q)));return;}},COs=(a,b,c,d,e,f)=>{(b.h2(Bh(c,d))).hP(EB(e-c,f-d));},DTA=(a,b)=>{if(!BJu(a))return He(a,b)-2.0*RR(a);return 0.0;},BJu=a=>{return !(a.c0k&&a.bOS.bLo)?0:1;},FaK=(a,b,c,d,e)=>{let f,g,h;OG();if(d===PA){f=Fz(8.0,8.0);((((b.h2(Dw(1.5))).h2(a.bX9)).h2(Cc(a.ciI))).h2(Bh((-5.5),(-4.75)))).hP(f);f=c.bJ9;GQ();if(f!==L7)b=b.h2(BM(5.5));}d=c.bJ9;GQ();if(d===P6){d=c.bPp;MP();if(d!==SO)(YB(a.bOS,b)).hP(BtI(EB(10.0,(-4.0)),Nz( -a.bX0|0,e)));if(c.bPp!==RG)(YB(a.bOS, +b)).hP(BtI(EB(10.0,4.0),Nz( -a.bX0|0,e)));}else if(d===L7){b=b.h2(Dw(2.0));(b.h2(Bh(6.0,(-5.0)))).hP(EB(10.0,10.0));(b.h2(Bh(6.0,5.0))).hP(EB(10.0,(-10.0)));}else if(d===MG){d=c.bPp;g=Fj();MP();if(d===RG){BQ(g,10.0,(-4.0));BQ(g,0.0,0.0);BQ(g,10.0,0.0);}else if(d===SO){BQ(g,10.0,0.0);BQ(g,0.0,0.0);BQ(g,10.0,4.0);}else{BQ(g,10.0,(-4.0));BQ(g,0.0,0.0);BQ(g,10.0,4.0);if(a.cz$)BQ(g,6.0,0.0);}h=a.bX0;if(h)ADm(g,Nz( -h|0,e));(b.h2(Cc(a.bX9))).hP(g);}},FgK=(a,b,c,d,e)=>{let f,g,h;OG();if(d===PA){b=((b.h2(Dw(1.5))).h2(a.bX9)).h2(Cc(a.ciI));f +=Fz(8.0,8.0);(b.h2(Bh((-2.5),(-4.75)))).hP(f);b=(b.h2(GT())).h2(BM((-5.5)));}d=c.bJ9;GQ();if(d===P6){d=c.bPp;MP();if(d!==SO)(YB(a.bOS,b)).hP(BtI(EB((-10.0),(-4.0)),Nz(a.bRH,e)));if(c.bPp!==RG)(YB(a.bOS,b)).hP(BtI(EB((-10.0),4.0),Nz(a.bRH,e)));}else if(d===L7){b=b.h2(Dw(2.0));(b.h2(Bh((-16.0),(-5.0)))).hP(EB(10.0,10.0));(b.h2(Bh((-16.0),5.0))).hP(EB(10.0,(-10.0)));}else if(d===MG){d=c.bPp;g=Fj();MP();if(d===RG){BQ(g,(-10.0),(-4.0));BQ(g,0.0,0.0);BQ(g,(-10.0),0.0);}else if(d===SO){BQ(g,(-10.0),0.0);BQ(g,0.0,0.0);BQ(g, +(-10.0),4.0);}else{BQ(g,(-10.0),(-4.0));BQ(g,0.0,0.0);BQ(g,(-10.0),4.0);if(a.cz$)BQ(g,(-6.0),0.0);}h=a.bRH;if(h)ADm(g,Nz(h,e));(b.h2(Cc(a.bX9))).hP(g);}},Fi7=(a,b,c)=>{let d;d=BCy(a,b);b=BVK(a);QG();if(b!==W2)return BA(c.bGE+0.0,d+a.bRH);return BA(0.0,d+a.bRH);},Dxy=(a,b,c)=>{let d;d=BCy(a,b);b=BVK(a);QG();if(b===W2)return BA(c.bGE+0.0,d);return BA(0.0,d);},BCy=(a,b)=>{if(!BJu(a))return He(a,b)+4.0;return 4.0;},BVK=a=>{return BJh(a.bOS);},D7l=(a,b)=>{return He(a,b)+4.0+8.0+a.bX0+a.bRH;},Eap=(a,b)=>{return Iz(a, +b)+10.0;}; +function DkN(){let a=this;F.call(a);a.cKk=null;a.b1n=null;} +let Fw4=(a,b)=>{let c;c=(CLg(a.b1n)).cF(b);return Cl(c.bGE,c.bGF+8.0);},DET=(a,b,c,d)=>{let e,f,g,h,i,j;e=(Bhl(a.b1n.b26)).data[0];f=CLg(a.b1n);g=BGB(a.b1n);h=(DhV(a.b1n)-(f.cF(a.cKk)).bGE)/2.0;d=Bh(g+h,4.0);f.cC(EX(b,d));B9();i=(BJ(e,Jm)).oK();j=Ge(M6(c.bJb),i);((AH6(e,b,a.b1n.bZ9.ly())).h2(BM(g))).hP(j);},A16=N(Bx),BYS=null,ByY=null,BZy=null,B2e=null,Dfx=null,EHg=null,Buw=()=>{Buw=Z(A16);Eqg();},DBD=(a,b,c)=>{Buw();Ct(a,b,c);},A_j=(a,b)=>{let c=new A16();DBD(c,a,b);return c;},Eqg=()=>{let b,c,d;BYS=A_j(E(101), +0);ByY=A_j(E(37),1);BZy=A_j(E(6355),2);B2e=A_j(E(902),3);b=A_j(E(129),4);Dfx=b;c=K(A16,5);d=c.data;d[0]=BYS;d[1]=ByY;d[2]=BZy;d[3]=B2e;d[4]=b;EHg=c;}; +function CMB(){F.call(this);this.cnp=null;} +let D8o=a=>{a.cnp=Bk();},CIR=()=>{let a=new CMB();D8o(a);return a;},CL5=(a,b)=>{U(a.cnp,b);}; +function C8S(){let a=this;F.call(a);a.cey=null;a.bTL=null;a.caa=null;} +let CnO=a=>{let b;b=Ja(Be(a.bTL,0));if(b===null)return null;return Ja(b);},CUK=a=>{return Be(a.bTL,0);},FoY=a=>{let b,c,d,e;b=BY(Ja(Be(a.bTL,0)));c=AFN(a.bTL);d=CnO(a);e=d===null?0:AUe(d)!=a.bTL.bGJ?0:1;d=new S;T(d);b=H(d,b);Bb(b,32);b=H(b,c);Bb(b,32);XU(b,e);return Q(d);},B7A=N(0); +function Cce(){let a=this;F.call(a);a.cb2=null;a.bXr=null;a.bYD=null;} +let DBK=a=>{let b,c,d;b=BY(a.bXr);c=BY(a.bYD);d=new S;T(d);H(H(H(d,b),E(3037)),c);return Q(d);},EYe=a=>{return a.bXr;},Eah=a=>{return a.bYD;},CF$=(a,b)=>{let c;B$(b);c=a.bXr;if(c===null&&a.bYD===null){a.bXr=b;a.bYD=b;}else{a.bXr=CTt(c,b);a.bYD=C1Y(a.bYD,b);}},EWV=a=>{return 1;}; +function CcG(){let a=this;F.call(a);a.b2m=null;a.cgP=null;} +let D7e=a=>{a.b2m=Bk();a.cgP=Cft();},CQI=()=>{let a=new CcG();D7e(a);return a;},Dpp=(a,b)=>{if(!Nw(a.b2m,b)){U(a.b2m,b);Dnb(a.cgP,b);return;}},EPR=a=>{let b,c,d;b=(Be(a.b2m,0)).bXr;c=1;while(true){d=a.b2m;if(c>=d.bGJ)break;b=CTt(b,(Be(d,c)).bXr);c=c+1|0;}return b;},EQI=a=>{let b,c,d;b=(Be(a.b2m,0)).bYD;c=1;while(true){d=a.b2m;if(c>=d.bGJ)break;b=C1Y(b,(Be(d,c)).bYD);c=c+1|0;}return b;},Epr=a=>{let b,c,d,e;b=a.cgP;c=0;b=G3(G8(b.ciW));d=b;while(Gl(d)){e=GZ(b);c=DT(c,e.bHe.bHl+e.bHt.biH()|0);}return c;}; +function Cnn(){AX3.call(this);this.bSJ=0;} +let DZk=(a,b)=>{return COR(a,b)+0.0;},COR=(a,b)=>{return Tb(a.bHN)+6.0;},EaY=(a,b)=>{return Tb(a.bHN)+6.0;},Cef=(a,b)=>{let c,d,e,f;if(!a.bSJ){c=a.bYd.bS6;Xg();if(c!==AAr)a.bSJ=1;else{d=a.bHC.Ts(EA(b));e=b;while(true){a.bSJ=a.bSJ+1|0;e=Ep(e,V(1));if(!(a.bHC.Ts(EA(e)){let c,d,e,f,g,h,i,j,k,l,m;c=a.bHN;CV();c=CIy(a,Chs(c,Vr),0,Tl(a));d=LM(a);while(It(d,Ep(HS(a),V(1)))<=0){e=EA(d);f=a.bYd.bS6;Xg();g +=f!==Ys?Bd6(e)+1|0:(Bd6(e)/7|0)+1|0;h=ACU();f=new S;T(f);BE(f,g);f=B4(h,Q(f));B3();i=C_(f,c,CF,new Sz);j=a.bHC.Ts(e);h=a.bYd.bS6;if(h===Ys)k=a.bHC.Ts(XB(e,6))+a.bHC.a1s(XB(e,6));else{l=a.bHC;if(!a.bSJ){if(h!==AAr)a.bSJ=1;else{m=l.Ts(e);f=e;while(true){a.bSJ=a.bSJ+1|0;f=Qu(f);if(!(a.bHC.Ts(f){return 0;},E08=(a,b,c)=> +{let d,e,f,g;CrX(a,b,c);d=(b.h2(NY(a))).h2(BW(6.0));e=Fg(c+2.0);f=LM(a);while(It(f,Ep(HS(a),V(1)))<=0){g=EA(f);(d.h2(BM(a.bHC.Ts(g)))).hP(e);f=Cef(a,f);}A7t(a,b,c);Cn2(a,b);},Fqy=(a,b)=>{Cn2(a,b.h2(BW(3.0)));},CbL=N(),CVH=null,BNr=()=>{BNr=Z(CbL);Fcj();},Fcj=()=>{let b,c;Xg();b=Ca((C68.b2()).data.length);c=b.data;CVH=b;c[AAr.bGO]=1;c[Ys.bGO]=2;c[A_A.bGO]=3;c[A8V.bGO]=4;c[Bjs.bGO]=5;},Sp=N(AX3),E4t=a=>{return a.cdo.cg_;},BMN=(a,b)=>{return BoD(BqM(a.bQh.bNx),Jj(b));},DPG=(a,b,c)=>{CrX(a,b,c);a.biO(b,c);},BO7 +=(a,b)=>{let c,d,e,f,g,h;a:{if((AIH(a.bQh)).dV()>0){c=null;CV();d=R9(a,Y3,0,Tl(a));e=LM(a);while(true){if(It(e,HS(a))>0)break a;f=EA(e);g=DG(a.bQh.coT,f);if(g!==null&&!Bj(g,c)){h=a.bHC.Ts(f);(BNi(a,g,d)).cC(b.h2(Bh(h,a.Tw(b.hE()))));}e=Ep(e,V(1));c=g;}}}}; +function CL8(){let a=this;Sp.call(a);a.c01=null;a.cq0=null;a.cqZ=null;} +let E5s=(a,b)=>{return B3F(a)+0.0;},B6J=a=>{return R3(a.bHN)+2.0;},CC_=a=>{return B6J(a)+Tb(a.bHN)+2.0;},B3F=a=>{return CC_(a)+Tb(a.bHN)+3.0;},DwK=(a,b)=>{return B3F(a);},E4D=(a,b)=>{return 0.0;},DPW=(a,b)=>{b.h2(BW(3.0));},Cy6=(a,b)=>{if(BMN(a,b)){if(a.cq0===null){CV();a.cq0=R9(a,Vr,0,Drn(a));}return a.cq0;}if(a.cqZ===null){CV();a.cqZ=R9(a,Vr,0,Tl(a));}return a.cqZ;},BYE=(a,b)=>{if(a.bYd.cjC&&ALW(a.bQh.bNx,Jj(b)))return 1;return 0;},EkI=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m;d=CgF(a);d=((b.h2(d)).h2(Cc(d))).h2(BW(B3F(a)));e +=LM(a);while(It(e,HS(a))<=0){f=EA(e);g=a.bHC.Ts(f);f=a.c01;h=d.h2(BM(g));No();g=AX_(f,S4);i=B4T(f.chT);while(i.dY()){j=i.dZ();k=AX_(f,j.bRC);(h.h2(BM(g))).hP(C2(k-g,c));g=AX_(f,j.bRM);}k=AX_(f,B5k);(h.h2(BM(g))).hP(C2(k-g,c));e=Ep(e,V(1));}CV();d=R9(a,Y3,1,Tl(a));e=null;k=(-1.0);i=LM(a);while(It(i,HS(a))<=0){j=EA(i);if(!BYE(a,j)){g=a.bHC.Ts(j);if(!(e!==null&&BfS(QS(j),QS(e)))){if(e!==null)CPx(a,b,e,k,g,d);k=g;e=j;}}i=Ep(i,V(1));}g=a.bHC.Ts(EA(Ep(HS(a),V(1))));if(g>k)CPx(a,b,e,k,g,d);i=b.h2(BW(B6J(a)));e=LM(a);while +(It(e,HS(a))<=0){f=EA(e);if(!BYE(a,f)){g=a.bHC.Ts(f);k=a.bHC.Ts(Qu(f));h=Cy6(a,f);l=K(O6,2);m=l.data;KT();m[0]=A$e;m[1]=Bmu;UT(a,i,0,g,k,f,h,l);}e=Ep(e,V(1));}f=b.h2(BW(CC_(a)));h=LM(a);while(It(h,HS(a))<=0){i=EA(h);if(!BYE(a,i)){g=a.bHC.Ts(i);k=a.bHC.Ts(Qu(i));d=Cy6(a,i);l=K(O6,1);m=l.data;KT();m[0]=A21;UT(a,f,0,g,k,i,d,l);}h=Ep(h,V(1));}b=(b.h2(BW(B6J(a)))).h2(NY(a));d=Fg(c);e=LM(a);while(It(e,Ep(HS(a),V(1)))<=0){f=EA(e);(b.h2(BM(a.bHC.Ts(f)))).hP(d);e=Ep(e,V(1));}},CPx=(a,b,c,d,e,f)=>{let g,h;g=K(O6,3);h +=g.data;KT();h[0]=Q$;h[1]=ANf;h[2]=Bbm;UT(a,b,0,d,e,c,f,g);},AUf=N(0); +function CCh(){let a=this;F.call(a);a.cO4=null;a.c9F=null;a.ce0=null;a.czX=null;} +let Dwv=(a,b)=>{let c,d,e,f;c=b.bJ5;d=Jj(b);e=0.0;f=a.cO4;while(CmL(f,d)){e=e+CpW(a.ce0,ALW(a.czX,f));f=Ep(f,V(1));}return e+AX_(a.ce0,c.bH8);},DP$=(a,b)=>{let c;c=ALW(a.czX,Jj(b));return CpW(a.ce0,c);},FgV=(a,b)=>{return 0;}; +function Cwt(){let a=this;Sp.call(a);a.cup=null;a.cuo=null;} +let CBp=a=>{return R3(a.bHN)+2.0;},DeR=a=>{return CBp(a)+Tb(a.bHN)+2.0;},Cpe=(a,b)=>{return DeR(a)+Tb(a.bHN)+3.0;},EP$=(a,b)=>{return Tb(a.bHN)+Tb(a.bHN)+R3(a.bHN)+8.0;},AY4=(a,b)=>{return Cpe(a,b)+((AIH(a.bQh)).dV()<=0?0.0:Tb(a.bHN)+6.0);},DTU=(a,b,c)=>{let d,e,f,g;Cb7(a,b);Ch3(a,b.h2(BW(CBp(a))));CYk(a,b.h2(BW(DeR(a))));d=Dg6(a.bHN,b);e=b.h2(NY(a));f=LM(a);while(It(f,HS(a))<=0){g=EA(f);if(!(!CTJ(a,f)&&a.bHC.a1s(AYB(g))!==0.0))NM(a,d,a.bHC.Ts(g),AY4(a,b.hE()),c);else NM(a,e,a.bHC.Ts(g),AY4(a,b.hE()),c);f=Ep(f, +V(1));}NM(a,e,a.bHC.Ts(EA(Ep(HS(a),V(1)))),AY4(a,b.hE()),c);BO7(a,b);Lo(a,b,AY4(a,b.hE()));Lo(a,b,c);},DTg=(a,b)=>{let c;c=Tb(a.bHN)+2.0;Ch3(a,b);CYk(a,b.h2(BW(c+2.0)));Cb7(a,b.h2(BW(2.0*c+3.0)));},Ch3=(a,b)=>{let c,d,e,f,g,h,i;c=LM(a);while(It(c,HS(a))<=0){d=EA(c);if(!BLZ(a,d)){e=a.bHC.Ts(d);f=a.bHC.Ts(Qu(d));g=Clw(a,d);h=K(O6,1);i=h.data;KT();i[0]=A$e;UT(a,b,0,e,f,d,g,h);}c=Ep(c,V(1));}},CYk=(a,b)=>{let c,d,e,f,g,h,i;c=LM(a);while(It(c,HS(a))<=0){d=EA(c);if(!BLZ(a,d)){e=a.bHC.Ts(d);f=a.bHC.Ts(Qu(d));g=Clw(a, +d);h=K(O6,1);i=h.data;KT();i[0]=A21;UT(a,b,0,e,f,d,g,h);}c=Ep(c,V(1));}},BLZ=(a,b)=>{if(a.bYd.cjC&&ALW(a.bQh.bNx,Jj(b)))return 1;return 0;},Clw=(a,b)=>{if(BMN(a,b)){if(a.cup===null){CV();a.cup=R9(a,Vr,0,Drn(a));}return a.cup;}if(a.cuo===null){CV();a.cuo=R9(a,Vr,0,Tl(a));}return a.cuo;},Cb7=(a,b)=>{let c,d,e,f,g,h;CV();c=R9(a,Y3,1,Tl(a));d=null;e=(-1.0);f=LM(a);while(It(f,HS(a))<=0){g=EA(f);if(!BLZ(a,g)){h=a.bHC.Ts(g);if(!(d!==null&&BfS(QS(g),QS(d)))){if(d!==null)CIh(a,b,d,e,h,c);e=h;d=g;}}f=Ep(f,V(1));}h=a.bHC.Ts(EA(Ep(HS(a), +V(1))));if(h>e)CIh(a,b,d,e,h,c);},CIh=(a,b,c,d,e,f)=>{let g,h;g=K(O6,3);h=g.data;KT();h[0]=Q$;h[1]=ANf;h[2]=Bbm;UT(a,b,0,d,e,c,f,g);},CFH=N(Sp),AMf=a=>{return R3(a.bHN)+4.0;},Df5=(a,b)=>{let c;c=Tb(a.bHN)+1.0;return AMf(a)+c;},Cex=(a,b)=>{return R3(a.bHN)+4.0;},CQ4=(a,b)=>{return Df5(a,b)+((AIH(a.bQh)).dV()<=0?0.0:Tb(a.bHN)+6.0);},Fk9=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m;CV();d=R9(a,Vr,0,Tl(a));e=a.cdo.cV$;f=LM(a);while(It(f,Ep(HS(a),V(-1)))<0){g=EA(f);h=AEP(g);i=a.cdo;j=i.cqm;k=j.cEk;if(h===k){h=i.c1w;APw();if +(h===Bho){l=e+1|0;h=new S;T(h);BE(h,e);h=Q(h);}else if(h===A3c){l=XS(g);h=new S;T(h);BE(h,l);h=Q(h);l=e;}else{h=CZ0(k,j.cR9);l=BkB(g.bJ5.bHU,h.cKs);h=new S;T(h);BE(h,l);h=Q(h);l=e;}(BNi(a,h,d)).cC((b.h2(BW(AMf(a)))).h2(BM(a.bHC.Ts(g)+5.0)));e=l;}f=Ep(f,V(1));}k=LM(a);while(It(k,HS(a))<=0){d=EA(k);if(AEP(d)===a.cdo.cqm.cEk)NM(a,b.h2(NY(a)),a.bHC.Ts(d),AMf(a),c);k=Ep(k,V(1));}m=a.bHC.Ts(EA(Ep(HS(a),V(1))));NM(a,b.h2(NY(a)),m,AMf(a),c);A7t(a,b,c);CrG(a,b);BO7(a,b);Lo(a,b,0.0);Lo(a,b,AMf(a));Lo(a,b,CQ4(a,b.hE()));},E11 +=(a,b)=>{Lo(a,b,0.0);CrG(a,b);Lo(a,b,Cex(a,b.hE()));},CrG=(a,b)=>{let c,d,e,f,g,h,i;CV();c=R9(a,Y3,1,Tl(a));d=null;e=(-1.0);f=LM(a);while(It(f,HS(a))<=0){g=EA(f);h=a.bHC.Ts(g);if(!(d!==null&&BfS(QS(g),QS(d)))){NM(a,b.h2(NY(a)),h,0.0,AMf(a));if(d!==null)C6s(a,b,d,e,h,c);e=h;d=g;}f=Ep(f,V(1));}i=a.bHC.Ts(EA(Ep(HS(a),V(1))));NM(a,b.h2(NY(a)),i,0.0,AMf(a));if(d!==null&&i>e)C6s(a,b,d,e,i,c);},C6s=(a,b,c,d,e,f)=>{let g,h;g=K(O6,2);h=g.data;KT();h[0]=Q$;h[1]=Bo9;UT(a,b,0,d,e,c,f,g);},C53=N(Sp),DjG=a=>{return Uf(a.bHN) ++2.0;},BMb=a=>{let b;b=R3(a.bHN)+2.0;return DjG(a)+b;},D0O=(a,b)=>{return BMb(a);},EwV=(a,b)=>{return Uf(a.bHN)+R3(a.bHN)+5.0;},DwJ=(a,b)=>{return BMb(a)+((AIH(a.bQh)).dV()<=0?0.0:Tb(a.bHN)+6.0);},ECJ=(a,b,c)=>{let d,e;CNm(a,b);d=DjG(a);e=BMb(a);CdZ(a,b.h2(BW(d)));A7t(a,b,c);BO7(a,b);Lo(a,b,0.0);Lo(a,b,d);Lo(a,b,e);},Eds=(a,b)=>{let c,d,e;c=Uf(a.bHN);d=R3(a.bHN);CdZ(a,b);e=d+2.0;CNm(a,b.h2(BW(e)));Lo(a,b,0.0);Lo(a,b,e);Lo(a,b,c+2.0+d+2.0);},CNm=(a,b)=>{let c,d,e,f,g,h,i,j;CV();c=R9(a,Y3,1,Tl(a));d=Uf(a.bHN);e +=null;f=(-1.0);g=LM(a);d=d+2.0;while(It(g,HS(a))<0){h=EA(g);i=a.bHC.Ts(h);if(!(e!==null&&(QS(h)).bTn==(QS(e)).bTn)){NM(a,b.h2(NY(a)),i,0.0,d);if(e!==null)Dqu(a,b,e,f,i,c);f=i;e=h;}g=Ep(g,V(1));}j=a.bHC.Ts(EA(Ep(HS(a),V(1))));if(j>f)Dqu(a,b,e,f,j,c);NM(a,b.h2(NY(a)),j,0.0,d);},CdZ=(a,b)=>{let c,d,e,f,g,h,i,j;CV();c=R9(a,Vr,0,Tl(a));d=R3(a.bHN);e=null;f=(-1.0);g=LM(a);d=d+2.0;while(It(g,HS(a))<0){h=EA(g);i=a.bHC.Ts(h);if(!(e!==null&&BfS(QS(h),QS(e)))){NM(a,b.h2(NY(a)),i,0.0,d);if(e!==null)CWy(a,b,e,f,i,c);f=i;e +=h;}g=Ep(g,V(1));}j=a.bHC.Ts(EA(Ep(HS(a),V(1))));if(j>f)CWy(a,b,e,f,j,c);NM(a,b.h2(NY(a)),j,0.0,d);},Dqu=(a,b,c,d,e,f)=>{let g,h;g=K(O6,1);h=g.data;KT();h[0]=AXf;UT(a,b,0,d,e,c,f,g);},CWy=(a,b,c,d,e,f)=>{let g,h;g=K(O6,2);h=g.data;KT();h[0]=Q$;h[1]=ANf;UT(a,b,0,d,e,c,f,g);},CTq=N(Sp),CD2=(a,b)=>{return Uf(a.bHN)+R3(a.bHN)+5.0;},EI0=(a,b)=>{return Uf(a.bHN)+R3(a.bHN)+5.0;},FhC=(a,b)=>{return CD2(a,b);},Efm=(a,b,c)=>{let d,e,f;DaW(a,b);d=Uf(a.bHN);e=R3(a.bHN);f=d+2.0;Cot(a,b.h2(BW(f)));A7t(a,b,c);Lo(a,b,0.0);Lo(a, +b,f);Lo(a,b,f+e+2.0);},Dy8=(a,b)=>{let c,d,e;c=Uf(a.bHN);d=R3(a.bHN);Cot(a,b);e=d+2.0;DaW(a,b.h2(BW(e)));Lo(a,b,0.0);Lo(a,b,e);Lo(a,b,c+2.0+d+2.0);},DaW=(a,b)=>{let c,d,e,f,g,h,i,j;CV();c=R9(a,Y3,1,Tl(a));d=Uf(a.bHN);e=null;f=(-1.0);g=LM(a);d=d+2.0;while(It(g,HS(a))<0){h=EA(g);i=a.bHC.Ts(h);if(!(e!==null&&(QS(h)).bTn==(QS(e)).bTn)){NM(a,b.h2(NY(a)),i,0.0,d);if(e!==null)COa(a,b,e,f,i,c);f=i;e=h;}g=Ep(g,V(1));}j=a.bHC.Ts(EA(Ep(HS(a),V(1))));if(j>f)COa(a,b,e,f,j,c);NM(a,b.h2(NY(a)),j,0.0,d);},Cot=(a,b)=>{let c, +d,e,f,g,h,i,j;c=R3(a.bHN);CV();d=R9(a,Vr,0,Tl(a));e=null;f=(-1.0);g=LM(a);h=c+2.0;while(It(g,HS(a))<0){i=EA(g);j=a.bHC.Ts(i);if(!(e!==null&&Bj(BJ7(i),BJ7(e)))){NM(a,b.h2(NY(a)),j,0.0,h);if(e!==null)Ck7(a,b,e,f,j,d);f=j;e=i;}g=Ep(g,V(1));}j=a.bHC.Ts(EA(Ep(HS(a),V(1))));if(j>f)Ck7(a,b,e,f,j,d);NM(a,b.h2(NY(a)),j,0.0,h);},COa=(a,b,c,d,e,f)=>{let g,h;g=K(O6,1);h=g.data;KT();h[0]=AXf;UT(a,b,0,d,e,c,f,g);},Ck7=(a,b,c,d,e,f)=>{let g,h;g=K(O6,1);h=g.data;KT();h[0]=BgV;UT(a,b,0,d,e,c,f,g);},CMJ=N(Sp),BRk=(a,b)=>{return Uf(a.bHN) ++3.0;},DmM=(a,b)=>{return Uf(a.bHN)+3.0;},Fnm=(a,b)=>{return BRk(a,b);},EzK=(a,b,c)=>{Chc(a,b);A7t(a,b,c);Lo(a,b,0.0);Lo(a,b,BRk(a,b.hE()));},D9Y=(a,b)=>{Chc(a,b);Lo(a,b,0.0);Lo(a,b,DmM(a,b.hE()));}; +let Chc=(a,b)=>{let c,d,e,f,g,h,i,j;c=Uf(a.bHN);CV();d=R9(a,BaC,1,Tl(a));e=null;f=(-1.0);g=LM(a);h=c+2.0;while(It(g,HS(a))<=0){i=EA(g);j=a.bHC.Ts(i);if(!(e!==null&&(QS(i)).bTn==(QS(e)).bTn)){NM(a,b.h2(NY(a)),j,0.0,h);if(e!==null)C3x(a,b,e,f,j,d);f=j;e=i;}g=Ep(g,V(1));}j=a.bHC.Ts(EA(Ep(HS(a),V(1))));if(j>f)C3x(a,b,e,f,j,d);NM(a,b.h2(NY(a)),j,0.0,h);},C3x=(a,b,c,d,e,f)=>{let g,h;g=K(O6,1);h=g.data;KT();h[0]=AXf;UT(a,b,1,d,e,c,f,g);},EGM=N(); +function CC3(){QP.call(this);this.cI4=null;} +let Ee5=a=>{return a.cI4.bOM;},Fdj=a=>{let b,c;b=Zd(Yl(a.cI4));c=new CYp;c.deP=a;c.cD3=b;return c;},BFa=N(0),BXy=N(0),Ek=(a,b)=>{b=Zl(a,b);if(b.bGJ)return Be(b,0);return null;}; +function Clt(){let a=this;F.call(a);a.cyB=null;a.b2x=null;a.cPh=0;a.cVb=null;a.dcW=null;} +let AVR=a=>{if(BUN(a))return (a.cPh+a.b2x.bJS|0)!=Jh(a.cVb)?0:1;return 0;},Va=a=>{return a.cyB.p();},BUN=a=>{return a.b2x.bJS<0?0:1;},Zl=(a,b)=>{return ClE(a.b2x.bQ5,b);},Dbz=(a,b)=>{let c,d,e,f,g;c=a.b2x.bQ5;SL();d=Xe.bR4;c=BiJ(c.bR4);while(c.dY()){e=c.dZ();f=e.bWB;g=new S;T(g);Bb(H(g,b),47);g=!BO(f,Q(g))?null:Cz4(CC(e.bWB,b.bGI.length+1|0),e.b4q);if(g!==null)d=B4s(d,g);}return BHc(d);}; +function Ow(){Tv.call(this);this.bVm=null;} +let AFR=(a,b)=>{AS6(a);a.bVm=b;}; +function C_P(){Ow.call(this);this.cLW=null;} +let E3V=(a,b)=>{let c;c=new Dr7;A0U(c,F4(b),a.bVm);return c;},EBT=a=>{return 0;},D7t=a=>{return a.cLW;},Fcb=a=>{return 1;},Fe2=(a,b,c,d,e,f,g)=>{return S7(a,b,c,d,e,f,g);}; +function CzE(){let a=this;Ow.call(a);a.cNk=null;a.cUP=null;} +let Ehy=a=>{return 0;},D0N=(a,b)=>{let c,d,e;c=a.bVm;d=a.cUP;e=CQy(b,c,d);c=e.b_$;Fa();return ALD(a,b,e,c,Hg);},D3O=a=>{return 0;},EMV=a=>{return a.cNk;},E5Q=(a,b,c,d,e,f,g)=>{return S7(a,b,c,d,e,f,g);}; +function AUk(){let a=this;Tv.call(a);a.bTG=null;a.bNL=null;a.cg0=0;a.ddQ=null;a.c6B=null;a.cWS=null;a.bRK=null;a.cIQ=null;a.cHk=null;a.b6C=null;a.b8h=null;a.c1k=null;} +let EJZ=a=>{let b,c;b=Br(a.bTG);while(true){if(!Bq(b)){c=a.bNL;if(c!==null)return B4o(c);return 0;}if(B4o(Bm(b)))break;}return 1;},DtP=(a,b)=>{return Cz5(a.bRK,b);},E1Z=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=Br(a.bTG);while(Bq(c)){BLV(Bm(c),b);}if(a.bNL===null){d=new AYm;c=a.b8h;e=FF();HW();BzC(d,c,e,Lu,null,FF(),a.b6C);a.bNL=d;}BLV(a.bNL,b);d=a.b8h;c=a.bTG;e=a.bNL;f=a.cHk;g=a.cIQ;h=a.c6B;i=A0Z(a);j=a.b6C;k=a.c1k;d=DoE(b,d,c,e,f,g,h,i,j,k);c=Bk();f=Br(a.bTG);while(Bq(f)){b=CWG(Bm(f));Ea(c,b);}b=CWG(a.bNL);Ea(c,b);return c.bGJ +<=0?d:CAs(d,c);},EW3=a=>{let b;if(a.cg0){b=Br(a.bTG);if(Bq(b)){b=Bm(b);if(AK2(b)!==null&&!(AK2(b)).Ks())return 0;b=a.bNL;if(b!==null&&AK2(b)!==null&&!(AK2(a.bNL)).Ks())return 0;return 1;}}return C$g(a.bRK);},EbZ=a=>{return a.cIQ;},EPK=(a,b,c,d,e,f,g)=>{if(!a.cg0&&!R1(a.bRK))return C49(a.bRK,b,c,d,e,f,g);return S7(a,b,c,d,e,f,g);},FcA=a=>{let b;b=a.bNL;if(b===null){b=a.bTG;return AK2(Be(b,b.bGJ-1|0));}return AK2(b);}; +function B5w(){let a=this;F.call(a);a.cuW=null;a.cpO=null;a.b34=0;a.bWy=null;a.cib=null;a.cd4=null;a.chp=null;a.b_i=null;a.b2i=null;a.cz9=null;a.czd=null;} +let DrO=(a,b)=>{let c,d;if(b){c=a.b2i;SQ();if(c===UO&&BGN(a)){B8();return Q1(Du(C0Z,a.bWy),b);}if(!BGN(a)){if(a.b2i===UO){B8();return Q1(Du(DhN,a.bWy),b);}B8();return Q1(Du(Diq,a.bWy),b);}B8();return Q1(Du(CMp,a.bWy),b);}d=a.b2i;SQ();if(d===UO){B8();return Q1(Du(DaU,a.bWy),b);}B8();return Q1(Du(Cf2,a.bWy),b);},BBV=(a,b)=>{let c,d;if(a.cuW!==null){c=new AJC;d=Qd();CM();BC4(c,b,Lg(d,C6,a.cuW));return c;}return b;},AYk=a=>{let b,c,d,e,f;b=0;c=BrT(a.cd4,DrO(a,a.b34),b);d=a.cib;while(d!==null){e=Bva(DrO(d,a.b34));b +=b+(-1)|0;f=BrT(a.cd4,e,b);Pb();c=Ux(c,f,Qv);d=d.cib;}return c;},CfS=(a,b,c,d,e,f,g,h)=>{a.chp=Bk();a.b_i=Bk();a.cpO=d;a.cuW=b;a.b34=c;a.cib=f;a.b2i=g;a.cd4=h;a.bWy=e;},Ez2=(a,b,c,d,e,f,g)=>{let h=new B5w();CfS(h,a,b,c,d,e,f,g);return h;},BGN=a=>{return !(!a.chp.bGJ&&!a.b_i.bGJ)?0:1;},DmE=(a,b,c,d,e,f,g,h)=>{let i;i=Ez2(b,c,d,e,a,g,h);DC();if(f===FL&&c==1)Ik(a.b_i,0,i);if(f!==FL)U(a.b_i,i);else U(a.chp,i);return i;},Em5=a=>{return YE(a.cpO);},BRa=a=>{return a.b34;},BQU=(a,b)=>{DC();if(b===FL)return a.chp;return a.b_i;},CHl +=(a,b,c)=>{a.cz9=b;a.czd=c;}; +function CNW(){let a=this;F.call(a);a.cSV=null;a.cSW=null;a.c5e=null;} +let DWx=N(),EYr=b=>{let c,d,e,f,g,h,i,j;c=Bk();d=b;while(true){e=Da(d,0);if(!e)break;a:{f=Da(d,0);if(!(f!=94&&f!=36))f=1;else{b:{if(f==92){f=Da(d,1);if(f==65)break b;if(f==90)break b;if(f==122)break b;if(f==71)break b;if(f==98)break b;if(f==66)break b;}f=0;break a;}f=1;}}c:{if(f){f=Da(d,0);if(!(f!=94&&f!=36)){Dx(d);g=new S;T(g);Bb(g,f);g=Q(g);}else{if(f!=92){b=new BP;X(b);J(b);}Dx(d);e=Da(d,0);g=new S;T(g);Bb(g,f);Bb(g,e);g=Q(g);Dx(d);}h=new Ml;JQ();MA(h,ASY,g);U(c,h);break c;}if(D8g(b)){g=new Ml;JQ();h=ARZ;e +=Da(d,1);i=new S;T(i);Bb(i,e);MA(g,h,Q(i));U(c,g);Dx(d);Dx(d);break c;}if(e==124){g=new Ml;JQ();MA(g,AIX,E(2054));U(c,g);Dx(d);break c;}if(EHl(b)){g=E$3(b);h=new Ml;JQ();MA(h,Y4,g);U(c,h);break c;}if(e==91){g=DH7(b);h=new Ml;JQ();MA(h,ARt,g);U(c,h);break c;}if(E3r(b)){EGf(b);break c;}if(FiI(b)){h=DSx(b);j=c;U(j,h);g=new Ml;JQ();MA(g,Yp,E(864));U(j,g);break c;}if(DYo(b)){h=DLB(b);j=c;U(j,h);g=new Ml;JQ();MA(g,Yp,E(864));U(j,g);break c;}if(DE7(b)){h=DJg(b);j=c;U(j,h);g=new Ml;JQ();MA(g,Yp,E(864));U(j,g);break c;}if +(EIV(b)){h=EAL(b);U(c,h);break c;}if(e==41){g=new Ml;JQ();MA(g,AUX,E(865));U(c,g);Dx(d);break c;}if(DZQ(b)){g=ELe(b);h=new Ml;JQ();MA(h,Ze,g);U(c,h);break c;}if(ETZ(b)){g=CZk(b,4);h=new Ml;JQ();MA(h,Y4,g);U(c,h);break c;}if(Ecs(b)){g=CZk(b,5);h=new Ml;JQ();MA(h,Y4,g);U(c,h);break c;}if(FoL(b)){g=DY1(b);h=new Ml;JQ();MA(h,Y4,g);U(c,h);break c;}if(DZZ(b)){g=E67(b);h=new Ml;JQ();MA(h,Y4,g);U(c,h);break c;}if(!Fag(e)){b=new BP;X(b);J(b);}h=new Ml;JQ();g=AVz;i=new S;T(i);Bb(i,e);MA(h,g,CH(i));U(c,h);Dx(d);}}return c;},FiI +=b=>{a:{b=b;if(Da(b,0)==40&&Da(b,1)==63){if(Da(b,2)==61)break a;if(Da(b,2)==33)break a;}return 0;}return 1;},DYo=b=>{a:{b=b;if(Da(b,0)==40&&Da(b,1)==63&&Da(b,2)==60){if(Da(b,3)==61)break a;if(Da(b,3)==33)break a;}return 0;}return 1;},EIV=b=>{if(Da(b,0)==40)return 1;return 0;},EHl=b=>{b=b;if(Da(b,0)==91&&Da(b,1)==91&&Da(b,2)==58)return 1;return 0;},DE7=b=>{let c;a:{b=b;if(Da(b,0)==40&&Da(b,1)==63&&Da(b,2)==60){c=3;while(true){if(!Da(b,c))break a;if(Da(b,c)==62&&c==3)return 0;if(Da(b,c)==62)return 1;if(!AV2(Da(b, +c)))return 0;c=c+1|0;}}}return 0;},E3r=b=>{b=b;if(Da(b,0)==40&&Da(b,1)==63&&Da(b,2)==35)return 1;return 0;},EGf=b=>{let c;b=b;Dx(b);Dx(b);Dx(b);c=new S;T(c);while(true){if(!Da(b,0)){b=new Zz;Bp(b,E(6356));J(b);}if(Da(b,0)==41)break;Bb(c,Da(b,0));Dx(b);}Dx(b);},DSx=b=>{let c,d,e;b=b;Dx(b);Dx(b);c=Da(b,0);Dx(b);d=new Ml;JQ();b=APC;e=new S;T(e);Bb(e,63);Bb(e,c);MA(d,b,Q(e));return d;},DLB=b=>{let c,d,e;b=b;Dx(b);Dx(b);Dx(b);c=Da(b,0);Dx(b);d=new Ml;JQ();b=AXx;e=new S;T(e);Bb(H(e,E(6357)),c);MA(d,b,Q(e));return d;},DJg +=b=>{let c;b=b;Dx(b);Dx(b);Dx(b);c=new S;T(c);while(Da(b,0)){if(Da(b,0)==62){Dx(b);b=new Ml;JQ();MA(b,AVH,Q(c));return b;}Bb(c,Da(b,0));Dx(b);}b=new Zz;Bp(b,E(6358));J(b);},EAL=b=>{let c,d,e;c=b;d=Da(c,0);Dx(c);e=new S;T(e);Bb(e,d);if(Da(c,0)==63&&Da(c,1)==58){Dx(c);Dx(c);L(e,E(2053));}if(Da(c,0)==63&&Da(c,1)==33){Dx(c);Dx(c);L(e,E(6359));}c=new Ml;JQ();MA(c,Yp,Q(e));return c;},DZQ=b=>{let c;c=Da(b,0);if(c!=42&&c!=43&&c!=63&&c!=123)return 0;return 1;},ELe=b=>{let c,d,e,f;a:{b=b;c=Da(b,0);Dx(b);d=new S;T(d);Bb(d, +c);if(c==123)while(true){if(!Da(b,0))break a;e=Da(b,0);Bb(d,e);Dx(b);if(e==125)break;}}if(Da(b,0)==63){Bb(d,63);Dx(b);}f=Q(d);if(BO(f,E(580))&&!Qc(f,E(6360))){b=new Zz;d=new S;T(d);H(H(d,E(6361)),f);Bp(b,Q(d));J(b);}return f;},D8g=b=>{let c;a:{b=b;if(Da(b,0)==92){c=Da(b,1);if(c==46)break a;if(c==42)break a;if(c==92)break a;if(c==63)break a;if(c==94)break a;if(c==36)break a;if(c==124)break a;if(c==40)break a;if(c==41)break a;if(c==91)break a;if(c==93)break a;if(c==123)break a;if(c==125)break a;if(c==60)break a;if +(c==62)break a;}return 0;}return 1;},E$3=b=>{let c,d,e;c=b;Dx(c);Dx(c);Dx(c);d=Lk(E(82));a:{while(true){if(!Da(c,0))break a;e=Da(c,0);Dx(c);Bb(d,e);if(e==58)break;}}Dx(c);Dx(c);return Q(d);},DH7=b=>{let c,d,e;b=b;if(Da(b,0)==91){Dx(b);c=new S;T(c);a:{while(true){if(!Da(b,0))break a;d=Da(b,0);Dx(b);if(d==93)break;Bb(c,d);if(d==92){e=Da(b,0);Dx(b);Bb(c,e);}}}return Q(c);}b=new BP;X(b);J(b);},DY1=b=>{let c,d,e;b=b;c=Da(b,0);if(c==92){Dx(b);d=new S;T(d);Bb(d,c);while(true){if(!Da(b,0)){d=new Zz;Bp(d,E(6362));J(d);}e +=Da(b,0);Dx(b);Bb(d,e);if(e==125)break;}return Q(d);}b=new BP;X(b);J(b);},CZk=(b,c)=>{let d,e,f,g;b=b;d=Da(b,0);if(d==92){Dx(b);e=new S;T(e);Bb(e,d);f=0;while(f{let c,d,e;b=b;c=Da(b,0);if(c!=46){if(c==92){Dx(b);d=Da(b,0);e=new S;T(e);Bb(e,c);Bb(e,d);e=Q(e);Dx(b);return e;}b=new BP;X(b);J(b);}Dx(b);b=new S;T(b);Bb(b,c);return Q(b);},DZZ=b=>{let c;c=Da(b,0);if(c!=46){if(c==92)return 1;return 0;}return 1;},FoL +=b=>{b=b;if(Da(b,0)==92&&Da(b,1)==112&&Da(b,2)==123)return 1;if(Da(b,0)==92&&Da(b,1)==120&&Da(b,2)==123)return 1;return 0;},Ecs=b=>{b=b;if(Da(b,0)==92&&Da(b,1)==117)return 1;return 0;},ETZ=b=>{b=b;if(Da(b,0)==92&&Da(b,1)==48)return 1;return 0;},Fag=b=>{if(b!=92&&b!=46)return 1;return 0;}; +function Dkw(){let a=this;F.call(a);a.bP2=null;a.bNg=null;} +let DRt=(a,b)=>{let c,d,e;a.bP2=Bk();a.bNg=U1();c=b;a:while(true){if(!Bq(c)){while(!RL(a.bNg)){d=Fp(a.bNg);U(a.bP2,d);}return;}b:{d=Bm(c);e=d.bTd;JQ();if(e===AVz){U(a.bP2,d);break b;}if(e===ARZ){U(a.bP2,d);break b;}if(e===ARt){U(a.bP2,d);break b;}if(B1t(e)){EY(a.bNg,d);break b;}e=d.bTd;if(e===Y4){U(a.bP2,d);break b;}if(e===ASY){U(a.bP2,d);break b;}if(e===Ze){U(a.bP2,d);break b;}if(e===AW9){EY(a.bNg,d);break b;}if(e===AIX){while(true){b=JX(a.bNg);if(!(!(b!==null&&b.bTd===AW9)?0:1))break;b=a.bP2;e=Fp(a.bNg);U(b, +e);}EY(a.bNg,d);break b;}if(e===Yp){EY(a.bNg,d);break b;}if(e!==AUX)break a;while(JX(a.bNg)!==null&&(JX(a.bNg)).bTd!==Yp){b=a.bP2;d=Fp(a.bNg);U(b,d);}Fp(a.bNg);if(JX(a.bNg)!==null&&B1t((JX(a.bNg)).bTd)){b=a.bP2;d=Fp(a.bNg);U(b,d);}}}b=new BV;Bp(b,BPI(d));J(b);},DGf=a=>{let b=new Dkw();DRt(b,a);return b;},EQz=a=>{return a.bP2;},Zz=N(Dt),DRO=(a,b)=>{Bp(a,b);},E9j=a=>{let b=new Zz();DRO(b,a);return b;}; +function Ml(){let a=this;F.call(a);a.bTd=null;a.cbI=null;} +let MA=(a,b,c)=>{a.bTd=b;a.cbI=c;},Fro=(a,b)=>{let c=new Ml();MA(c,a,b);return c;},BPI=a=>{let b,c,d;b=HT(a.bTd);c=a.cbI;d=new S;T(d);b=H(d,b);Bb(b,91);Bb(H(b,c),93);return Q(d);},R_=a=>{return a.bTd;},AGh=a=>{return a.cbI;},A1$=N(Bx),AVz=null,ARZ=null,Y4=null,Ze=null,ASY=null,ARt=null,AVH=null,APC=null,AXx=null,AIX=null,Yp=null,AUX=null,AW9=null,E6Z=null,JQ=()=>{JQ=Z(A1$);Dyr();},Fcm=(a,b,c)=>{JQ();Ct(a,b,c);},S1=(a,b)=>{let c=new A1$();Fcm(c,a,b);return c;},B1t=a=>{JQ();return !(a!==AVH&&a!==APC&&a!==AXx) +?1:0;},Dyr=()=>{let b,c,d;AVz=S1(E(6363),0);ARZ=S1(E(6364),1);Y4=S1(E(262),2);Ze=S1(E(6365),3);ASY=S1(E(2259),4);ARt=S1(E(2953),5);AVH=S1(E(6366),6);APC=S1(E(6367),7);AXx=S1(E(6368),8);AIX=S1(E(3958),9);Yp=S1(E(6369),10);AUX=S1(E(6370),11);b=S1(E(6371),12);AW9=b;c=K(A1$,13);d=c.data;d[0]=AVz;d[1]=ARZ;d[2]=Y4;d[3]=Ze;d[4]=ASY;d[5]=ARt;d[6]=AVH;d[7]=APC;d[8]=AXx;d[9]=AIX;d[10]=Yp;d[11]=AUX;d[12]=b;E6Z=c;},A7_=N(Bx),AHU=null,AYx=null,AKz=null,BVg=null,AUj=null,A41=null,Bbp=null,AN6=null,AR8=null,A6H=null,A5j=null,A_e +=null,AEz=null,ATG=null,AOH=null,A9O=null,YU=null,ALu=null,AA4=null,AXh=null,A4b=null,AIA=null,AUU=null,Cck=null; +let E8K=null,HF=()=>{HF=Z(A7_);Fqj();},Eqj=(a,b,c)=>{HF();Ct(a,b,c);},KC=(a,b)=>{let c=new A7_();Eqj(c,a,b);return c;},C6R=a=>{let b;switch(a.bGO){case 2:break;case 4:return 1;case 8:return 3;default:b=new BV;X(b);J(b);}return 2;},BCp=a=>{HF();return !(a!==AKz&&a!==AUj&&a!==AR8)?1:0;},Fqj=()=>{let b,c,d;AHU=KC(E(6372),0);AYx=KC(E(277),1);AKz=KC(E(6373),2);BVg=KC(E(6374),3);AUj=KC(E(6375),4);A41=KC(E(6376),5);Bbp=KC(E(6377),6);AN6=KC(E(6378),7);AR8=KC(E(6379),8);A6H=KC(E(6380),9);A5j=KC(E(6381),10);A_e=KC(E(6382), +11);AEz=KC(E(6383),12);ATG=KC(E(6384),13);AOH=KC(E(6385),14);A9O=KC(E(6386),15);YU=KC(E(6387),16);ALu=KC(E(6388),17);AA4=KC(E(6389),18);AXh=KC(E(6390),19);A4b=KC(E(6391),20);AIA=KC(E(6392),21);AUU=KC(E(6393),22);b=KC(E(6394),23);Cck=b;c=K(A7_,24);d=c.data;d[0]=AHU;d[1]=AYx;d[2]=AKz;d[3]=BVg;d[4]=AUj;d[5]=A41;d[6]=Bbp;d[7]=AN6;d[8]=AR8;d[9]=A6H;d[10]=A5j;d[11]=A_e;d[12]=AEz;d[13]=ATG;d[14]=AOH;d[15]=A9O;d[16]=YU;d[17]=ALu;d[18]=AA4;d[19]=AXh;d[20]=A4b;d[21]=AIA;d[22]=AUU;d[23]=b;E8K=c;}; +function Bfs(){let a=this;Tv.call(a);a.b8v=null;a.cNK=null;a.b2L=null;a.cuv=null;a.c6N=null;a.c7i=null;a.ck1=null;a.cLM=null;a.cXt=null;} +let D9g=a=>{let b;b=Br(a.b8v);while(Bq(b)){if(B4o(Bm(b)))return 1;}return 0;},EAw=(a,b)=>{let c;c=a.b2L;if(c===null)return B5(E(6395));return Cz5(c,b);},D2q=(a,b)=>{let c,d,e,f,g,h,i;c=Br(a.b8v);while(Bq(c)){BLV(Bm(c),b);}d=a.ck1;e=a.b8v;f=a.c6N;g=a.cuv;c=a.c7i;h=a.cLM;i=BoG(h,a.cXt);d=Cwc(b,d,e,f,g,c,h,i);c=a.ck1;Fa();return ALD(a,b,d,c,NH);},DXC=a=>{return C$g(a.b2L);},DJL=a=>{return a.cuv;},DKH=a=>{let b;b=a.b8v;return AK2(Be(b,b.bGJ-1|0));},E5K=(a,b,c,d,e,f,g)=>{let h;h=a.b2L;if(h!==null&&!R1(h))return C49(a.b2L, +b,c,d,e,f,g);return S7(a,b,c,d,e,f,g);}; +function BbZ(){let a=this;ADD.call(a);a.b$5=null;a.cXF=null;a.cY4=null;a.cGW=null;a.cRT=null;a.c2c=null;} +let Fxr=a=>{let b;b=Br(a.b$5);while(Bq(b)){if(AOi(Bm(b)))return 1;}return 0;},A1Z=a=>{let b;b=a.b$5;return Be(b,b.bGJ-1|0);},EST=(a,b)=>{return AJU(A1Z(a),b);},EYB=(a,b)=>{let c,d,e,f,g,h;c=Bk();d=Br(a.b$5);while(Bq(d)){e=ACX(Bm(d),b);U(c,e);}AHn();e=A5n;f=null;d=a.cGW;g=a.c2c;h=a.cRT;return BlY(b,c,e,f,d,g,h);},DVS=a=>{return ANO(A1Z(a));},E57=a=>{return a.cY4;},Fjh=(a,b,c,d,e,f,g)=>{return AGs(A1Z(a),b,c,d,e,f,g);}; +function Dnh(){Ow.call(this);this.cLV=null;} +let DN3=(a,b)=>{let c,d,e;c=new BXM;b=F4(b);d=a.bVm;e=a.cLV;A0U(c,b,d);c.cSM=e;return c;},Eqx=a=>{return 0;},DYs=a=>{return FF();},DIn=a=>{return 0;},EGB=(a,b,c,d,e,f,g)=>{return S7(a,b,c,d,e,f,g);}; +function Bcj(){let a=this;Tv.call(a);a.b7v=null;a.cYT=null;a.cYE=null;a.c0L=null;a.chf=null;a.ctZ=null;a.cXq=null;a.cza=0;a.c1c=null;} +let EcH=a=>{let b;b=Br(a.b7v);while(Bq(b)){if(AOi(Bm(b)))return 1;}return 0;},AQb=a=>{let b;b=a.b7v;return Be(b,b.bGJ-1|0);},EuS=(a,b)=>{return AJU(AQb(a),b);},E10=(a,b)=>{let c,d,e,f,g,h;c=Bk();d=Br(a.b7v);while(Bq(d)){e=ACX(Bm(d),b);U(c,e);}e=a.ctZ;d=a.cXq;f=a.c0L;g=a.chf;h=a.c1c;e=BlY(b,c,e,d,f,g,h);if((A0Z(a)).dV()>0){c=A0Z(a);Fa();e=BLE(e,c,0,Hg);}return e;},Fxy=a=>{return ANO(AQb(a));},DVg=a=>{return a.cYE;},EVi=(a,b,c,d,e,f,g)=>{if(!a.cza){if(WI(AQb(a))===null)return AGs(AQb(a),b,c,d,e,f,g);return AGs(AQb(a), +b,c,d,e,f,g);}return S7(a,b,c,d,e,f,g);},CFR=(a,b,c)=>{if(c)a.cza=1;if(b!==null){(AQb(a)).caV=b;return;}}; +function BeW(){let a=this;F.call(a);a.b9A=null;a.cJ2=null;a.cRl=null;a.cs8=null;a.cfP=null;} +let Dzy=a=>{let b,c,d,e;b=a.cJ2;c=BY(a.b9A);d=BY(a.cfP);e=new S;T(e);b=H(H(e,E(6396)),b);Bb(b,32);b=H(b,c);Bb(b,32);H(b,d);return Q(e);},BTH=(a,b)=>{let c,d;c=a.b9A;d=b.ct5;return PT(c,d);},Fvk=(a,b,c)=>{let d;d=CLB(a,c);if(d!==null)return (d.cF(b)).bGF;return 0.0;},ChL=a=>{B8();return C9n;},E2Z=(a,b,c,d)=>{let e,f,g,h,i,j;e=d;f=B0(B1(e),ChL(a));g=CLB(a,d);if(g!==null){h=g.cF(b.hE());i=c.bLa-h.bGF;c=V7(c,c.bJ0,i);}j=a.cRl;if(j===null){B9();j=(BJ(f,CK)).cu(e.bGN);}B9();(((b.h2((BJ(f,Cz)).cu(e.bGN))).h2(Cc(j))).h2(Bh(c.bJ0, +c.bLa))).hP(C2(BXn(c),CJY(c)));if(g!==null)g.cC(b.h2(Bh(c.bJ0+5.0,c.bLa)));},CLB=(a,b)=>{let c,d,e;if(a.cs8!==null){c=b;d=B0(B1(c),ChL(a));e=B4(c.bH$,a.cs8);d=D0(d,c.bGN);B3();return C_(e,d,CF,b);}return null;}; +function Dkb(){let a=this;F.call(a);a.bKV=null;a.c_e=0;a.cwT=null;a.cH7=null;} +let Egc=(a,b,c,d,e)=>{let f,g,h,i;a.bKV=Bk();a.c_e=c;a.cwT=d;a.cH7=e;e=b;a:{b:while(true){c:{f=Da(e,0);if(Z0(f))break c;if(f==45){d=a.bKV;g=new Nv;HF();NF(g,AUU,null);U(d,g);break c;}if(CHs(a,f)){d=new S;T(d);while(true){c=Da(e,0);if(!CHs(a,c))break;Bb(d,c);Dx(e);}h=Q(d);d=a.bKV;g=new Nv;HF();NF(g,AHU,h);U(d,g);continue b;}if(f==42){d=a.bKV;g=new Nv;HF();NF(g,AR8,null);U(d,g);break c;}c=C5(f,40);if(!c&&Da(e,1)==42){d=new S;T(d);Dx(e);Dx(e);d:{e:{while(true){c=Da(e,0);if(!c)break;if(c==42&&Da(e,1)==41)break e;Bb(d, +c);Dx(e);}i=Q(d);break d;}Dx(e);Dx(e);i=Q(d);}if((Dk(i)).bGI.length<=0)continue b;d=a.bKV;g=new Nv;HF();NF(g,AA4,i);U(d,g);continue b;}if(f==44){d=a.bKV;g=new Nv;HF();NF(g,AKz,null);U(d,g);break c;}if(f==124){d=a.bKV;g=new Nv;HF();NF(g,AUj,null);U(d,g);break c;}if(f==61){d=a.bKV;g=new Nv;HF();NF(g,AYx,null);U(d,g);break c;}if(!c){d=a.bKV;g=new Nv;HF();NF(g,AOH,null);U(d,g);break c;}if(f==41){d=a.bKV;g=new Nv;HF();NF(g,A9O,null);U(d,g);break c;}if(f==91){d=a.bKV;g=new Nv;HF();NF(g,A41,null);U(d,g);break c;}if +(f==93){d=a.bKV;g=new Nv;HF();NF(g,Bbp,null);U(d,g);break c;}if(f==123){d=a.bKV;g=new Nv;HF();NF(g,A6H,null);U(d,g);break c;}c=C5(f,125);if(!c&&Da(e,1)==45){d=a.bKV;g=new Nv;HF();NF(g,A_e,null);U(d,g);Dx(e);break c;}if(!c){d=a.bKV;g=new Nv;HF();NF(g,A5j,null);U(d,g);break c;}if(f==59)break a;if(!f)break b;if(f==34){g=BKc(a,b);d=a.bKV;i=new Nv;HF();NF(i,YU,BPO(g));U(d,i);break c;}if(f==39){g=BKc(a,b);d=a.bKV;i=new Nv;HF();NF(i,ALu,BPO(g));U(d,i);break c;}if(f!=63){TD(a.bKV);return;}g=BKc(a,b);i=a.bKV;h=new Nv;HF();NF(h, +AIA,BPO(g));U(i,h);}Dx(e);}}},Ebo=(a,b,c,d)=>{let e=new Dkb();Egc(e,a,b,c,d);return e;},BPO=b=>{if(!b.bGI.length)b=E(344);return b;},Epk=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,$$je;d=b;e=B0(B1(d),Byg());f=D0(e,d.bGN);g=a.bKV;if(g.bGJ){a:{b:{try{h=Br(g);i=h;g=Bm(i);j=ABC(Bm(i));HF();if(j===AYx)break b;c=ASZ(f,b);}catch($$e){$$je=P($$e);if($$je instanceof Dt){k=$$je;break a;}else{throw $$e;}}return c;}c:{try{if(!Bq(i)){B9();i=(BJ(e,Cz)).cu(GK(d));j=Cpw(EcM(),i);break c;}}catch($$e){$$je=P($$e);if($$je instanceof Dt) +{k=$$je;break a;}else{throw $$e;}}d:{try{l=DCF(EaR(h));if(l.dV())break d;c=ASZ(f,b);}catch($$e){$$je=P($$e);if($$je instanceof Dt){k=$$je;break a;}else{throw $$e;}}return c;}try{j=FsQ(a,b,D2C(c),l.dX());break c;}catch($$e){$$je=P($$e);if($$je instanceof Dt){k=$$je;break a;}else{throw $$e;}}}e:{try{d=Ds6(DmG(g),f);if(a.cwT===null)break e;c=DHs(a,b);B3();d=FT(c,d,CO);break e;}catch($$e){$$je=P($$e);if($$je instanceof Dt){k=$$je;break a;}else{throw $$e;}}}f:{try{if(a.cH7===null)break f;c=Eoo(a,b);B3();d=FT(d,c, +CO);break f;}catch($$e){$$je=P($$e);if($$je instanceof Dt){k=$$je;break a;}else{throw $$e;}}}try{c=KN(j,0.0,0.0,10.0,15.0);B3();c=FT(d,c,CF);}catch($$e){$$je=P($$e);if($$je instanceof Dt){k=$$je;break a;}else{throw $$e;}}return c;}AEM(k);return ASZ(f,b);}return ASZ(f,b);},DHs=(a,b)=>{let c,d;c=a.cwT;if(c!==null){d=B4(b.bH$,c);CV();return A0Q(d,b,Uk);}return null;},Eoo=(a,b)=>{let c,d;c=a.cH7;if(c!==null){d=B4(b.bH$,c);CV();return A0Q(d,b,Uk);}return null;},FsQ=(a,b,c,d)=>{let e,f,g,h,i,j;e=new CLu;e.bJk=U1();e.bY1 +=b;e.c17=c;f=b;b=B0(B1(f),Byg());e.cgJ=b;e.b_l=D0(b,f.bGN);e.cAw=f.bGN;b=e.cgJ;B9();e.c6$=(BJ(b,Cz)).cu(f.bGN);a:while(true){if(!d.dY())return A87(e.bJk)!=1?ASZ(e.b_l,e.bY1):Cpw(JX(e.bJk),e.c6$);b:{f=d.dZ();c=f.bMF;HF();if(!(c!==YU&&c!==ALu&&c!==AHU&&c!==AIA)){g=e.bJk;b=Cdv(f.bWh,c,e.b_l,e.cgJ,e.cAw,e.bY1,e.c17);EY(g,b);break b;}if(c===A4b){c=f.bWh;b=JX(e.bJk);if(b===null)break a;b.bj1(c);break b;}if(c===AXh){c=f.bWh;b=JX(e.bJk);if(b===null){b=new BP;X(b);J(b);}b.bj2(c);break b;}if(c===AUj){b=Fp(e.bJk);c=Fp(e.bJk);if +(b instanceof AVr){b.Vj(c);EY(e.bJk,b);}else if(c instanceof AVr){c.Vj(b);EY(e.bJk,c);}else{f=B$S();g=f;A9o(g,b);A9o(g,c);EY(e.bJk,f);}break b;}if(c===AKz){b=Fp(e.bJk);c=Fp(e.bJk);if(b instanceof A0c){b.Vj(c);EY(e.bJk,b);}else if(c instanceof A0c){U(c.bSD,b);EY(e.bJk,c);}else{g=Ci9();f=g;A3r(f,b);A3r(f,c);EY(e.bJk,g);}break b;}if(c===AN6){c=Fp(e.bJk);f=e.bJk;b=BeS(c,e.bY1);EY(f,b);break b;}if(c===AUU){c=Fp(e.bJk);f=e.bJk;b=new B$i;g=e.b_l;h=e.cgJ;i=e.cAw;j=e.bY1;Vo(b);b.dbF=j;b.cb5=c;b.deF=h;b.deE=i;b.c77=g;b.b92 +=N1(E(6393),g);EY(f,b);break b;}if(c===AEz){c=Fp(e.bJk);f=e.bJk;b=Ddz(c,e.bY1);EY(f,b);break b;}if(c!==ATG){if(c!==AR8){b=new BV;Bp(b,BWF(f));J(b);}DPz(e);break b;}c=Fp(e.bJk);f=e.bJk;b=B09(c);EY(f,b);}}b=new BP;X(b);J(b);},BKc=(a,b)=>{let c,d,e;b=b;c=Da(b,0);Dx(b);d=new S;T(d);while(true){e=Da(b,0);if(e==c)break;Bb(d,e);Dx(b);}return Q(d);},CHs=(a,b)=>{return !(b!=45&&b!=95&&!AOq(b))?1:0;}; +function AVp(){AGW.call(this);this.cMt=null;} +let E1t=a=>{let b;b=new BV;X(b);J(b);},Fth=a=>{let b;b=new BV;X(b);J(b);},EVY=(a,b)=>{b=new BV;X(b);J(b);},EN3=(a,b)=>{b=new BV;X(b);J(b);},Ess=(a,b)=>{let c;c=new BV;X(c);J(c);},Fnp=(a,b,c)=>{b=new BV;X(b);J(b);},Fs3=(a,b)=>{b=new BV;X(b);J(b);},EIB=(a,b)=>{let c;c=new BV;X(c);J(c);},DNf=(a,b)=>{let c;c=new BV;X(c);J(c);},EEH=(a,b)=>{b=new BV;X(b);J(b);},Elg=(a,b)=>{b=new BV;X(b);J(b);},DTI=(a,b)=>{b=new BV;X(b);J(b);},E4G=(a,b,c)=>{return;}; +function BCQ(){let a=this;Ow.call(a);a.cKY=null;a.c1v=null;} +let Fb9=a=>{return 0;},Eq7=(a,b)=>{let c,d;c=b.bj4(a.bVm,a.c1v);d=c.b$M;Fa();return ALD(a,b,c,d,Hg);},DAM=a=>{return 0;},DFj=a=>{return a.cKY;},Edc=(a,b,c,d,e,f,g)=>{return S7(a,b,c,d,e,f,g);}; +function BX0(){let a=this;Ow.call(a);a.coB=0;a.c6a=null;a.c4l=null;a.cOk=null;a.cV6=null;a.cYV=null;a.c7u=null;a.c2r=null;} +let EG8=a=>{return 0;},FeM=(a,b)=>{let c,d,e,f,g,h,i;c=a.c6a;d=a.bVm;e=a.cV6;f=a.c4l;g=a.c7u;h=a.c2r;i=b;c=A$v(i,c,d,e,f,g,h);e=a.cYV;if(e!==null)c=C8X(i,c,e);e=c.a35();Fa();b=ALD(a,b,c,e,Hg);if(a.coB)return A2L(b);return b;},D1Y=a=>{a.coB=1;return 1;},Ei9=a=>{return a.cOk;},EkS=(a,b,c,d,e,f,g)=>{return S7(a,b,c,d,e,f,g);}; +function Cet(){let a=this;F.call(a);a.cGN=null;a.cGM=null;a.cEZ=null;} +let EZm=a=>{let b,c,d,e;b=a.cGN;c=a.cGM;d=a.cEZ;e=new S;T(e);b=H(H(H(e,b),E(6397)),c);Bb(b,32);H(b,d);return Q(e);},CK$=N(),DaN=null,BXw=()=>{BXw=Z(CK$);E4b();},E4b=()=>{let b,c;Vp();b=Ca((CTB.b2()).data.length);c=b.data;DaN=b;c[X6.bGO]=1;c[AXo.bGO]=2;}; +function AKt(){let a=this;Tv.call(a);a.bYb=null;a.cZ3=null;a.cTe=null;a.cOv=null;a.cAL=0;a.cLZ=null;a.cJl=null;a.cI0=0;a.b6I=null;a.cEJ=null;a.cCB=null;a.c0G=null;a.cjI=null;a.cZg=null;a.cfD=null;a.cfC=null;a.cKa=0;a.c53=null;} +let E_i=(a,b)=>{return AJU(a.bYb,b);},DvF=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;if(FQ(a.cjI))c=null;else{d=a.cjI;e=a.cEJ;f=a.c0G;c=Qd();g=a.cZg;h=null;c=A$v(b,d,e,f,c,g,h);}i=ACX(a.bYb,b);j=a.b6I;k=a.cEJ;h=a.cLZ;d=a.cJl;e=a.cOv;f=a.cCB;g=a.cfD;l=a.cfC;m=a.c53;b=DhX(b,j,k,i,h,d,e,f,c,g,l,m);if((A0Z(a)).dV()>0){h=A0Z(a);Fa();b=BLE(b,h,0,Hg);}if(!a.cAL&&a.cCB===null)return b;return A2L(b);},DAJ=a=>{if(a.cI0){a.cAL=1;return 1;}return ANO(a.bYb);},Esh=a=>{return a.cTe;},DC3=(a,b,c,d,e,f,g)=>{if(!B0i(a.bYb))return AGs(a.bYb, +b,c,d,e,f,g);return S7(a,b,c,d,e,f,g);},DmP=a=>{return WI(a.bYb);},Cua=a=>{return AOi(a.bYb);}; +function CVB(){Ow.call(this);this.c14=null;} +let Fas=(a,b)=>{let c,d,e;c=new BS7;b=F4(b);d=a.bVm;e=a.c14;A0U(c,b,d);c.cTH=e;return c;},FiY=a=>{return 0;},ESQ=a=>{return FF();},ELp=a=>{return 0;},EJx=(a,b,c,d,e,f,g)=>{return S7(a,b,c,d,e,f,g);}; +function BQ_(){let a=this;Ow.call(a);a.ctk=0;a.c5b=null;a.cZR=null;a.c1g=null;} +let Elx=a=>{return 0;},ETr=(a,b)=>{let c,d,e,f;c=a.bVm;d=a.cZR;e=a.c1g;e=CdX(b,c,d,e);f=e.cbE;Fa();b=ALD(a,b,e,f,Hg);if(a.ctk)return A2L(b);return b;},Fwi=a=>{a.ctk=1;return 1;},EOh=a=>{return a.c5b;},Fc8=(a,b,c,d,e,f,g)=>{return S7(a,b,c,d,e,f,g);}; +function BKn(){let a=this;Ow.call(a);a.cUi=null;a.c3z=null;} +let E9d=(a,b)=>{let c,d;c=b.bj$(a.bVm,a.c3z);d=c.b9Q;Fa();return ALD(a,b,c,d,Hg);},DZx=a=>{return 0;},Eir=a=>{return a.cUi;},EVU=a=>{return 0;},FqK=(a,b,c,d,e,f,g)=>{return S7(a,b,c,d,e,f,g);}; +function BFP(){let a=this;ADD.call(a);a.bYp=null;a.cKl=null;a.cPV=null;a.cWH=null;a.cOQ=null;a.cYG=null;a.cw9=null;a.cYF=null;} +let ESl=a=>{return AOi(a.bYp);},D_G=(a,b)=>{return AJU(a.bYp,b);},DUx=(a,b)=>{let c,d,e,f,g,h,i;c=ACX(a.bYp,b);d=a.cw9;if(d===null)e=c;else{e=new B3z;d=HL(d);Fa();CHy(e,c,d,Hg);}c=a.cYG;d=a.cPV;f=a.cOQ;g=a.cYF;b=b;h=new CyM;i=F4(b);Jd(h,e.Xs());h.daV=20.0;h.cNm=f;h.bTo=AJL(e,10.0);e=D0(g,J4(h));h.c5v=G1(g);if(d===null){B9();d=(BJ(g,CK)).cu(J4(h));}h.cYO=d;B9();h.c1x=(BJ(g,Cz)).cu(i.bGN);h.c7C=(BJ(g,Jm)).oK();if(c!==null){B3();h.b$y=C_(c,e,CF,i);}else h.b$y=E6(0.0,0.0);h.cnz=E6(0.0,0.0);h.c5G=Fi(g);return h;},DGC +=a=>{return ANO(a.bYp);},FbQ=a=>{return a.cWH;},D0C=(a,b,c,d,e,f,g)=>{if(B0i(a.bYp)){a.cw9=B7H(b,c,d,f,e,g);return 1;}return AGs(a.bYp,b,c,d,e,f,g);},D2f=a=>{return WI(a.bYp);},A7I=N(Bx),A5P=null,B1r=null,FvK=null,APZ=()=>{APZ=Z(A7I);DuI();},EpC=(a,b,c)=>{APZ();Ct(a,b,c);},Dsm=(a,b)=>{let c=new A7I();EpC(c,a,b);return c;},DuI=()=>{let b,c,d;A5P=Dsm(E(6398),0);b=Dsm(E(6399),1);B1r=b;c=K(A7I,2);d=c.data;d[0]=A5P;d[1]=b;FvK=c;}; +function ADe(){let a=this;F.call(a);a.bOq=null;a.bOw=null;a.ccu=0;a.cVC=null;a.c4b=null;} +let ALU=(a,b,c)=>{AIO();CtM(a,b,c,0,A0I,null);},Bq9=(a,b)=>{let c=new ADe();ALU(c,a,b);return c;},CtM=(a,b,c,d,e,f)=>{a.bOq=b;a.bOw=c;a.ccu=d;a.cVC=e;a.c4b=f;Lf();if(c!==O1&&c!==Oq){b=new Bt;X(b);J(b);}},EmD=(a,b,c,d,e)=>{let f=new ADe();CtM(f,a,b,c,d,e);return f;},C8g=(a,b)=>{let c,d,e;if(a.ccu>0){c=0;while(c{let b,c;b=a.bOw;Lf();if(b!==O1){if(b!==Oq){c=new BP;X(c);J(c);}return C8g(a, +a.bOq.Ql());}return C8g(a,a.bOq.Qk());},B5T=a=>{let b,c,d;b=HT(a.bOw);c=BY(a.bOq);d=new S;T(d);H(H(H(d,b),E(2457)),c);return Q(d);},Bj8=a=>{return a.bOq instanceof AGW;},CIZ=(a,b)=>{let c,d;a:{if(Bj8(a)&&Bj8(b)){c=a.bOq;d=b.bOq;if(c===d.b2d)break a;if(d===c.b2d)break a;}return 0;}return 1;},AWw=N(Bx),O1=null,Oq=null,AZ6=null,Eny=null,Lf=()=>{Lf=Z(AWw);EWS();},EKX=(a,b,c)=>{Lf();Ct(a,b,c);},BX3=(a,b)=>{let c=new AWw();EKX(c,a,b);return c;},EWS=()=>{let b,c,d;O1=BX3(E(2472),0);Oq=BX3(E(3239),1);b=BX3(E(6400), +2);AZ6=b;c=K(AWw,3);d=c.data;d[0]=O1;d[1]=Oq;d[2]=b;Eny=c;}; +function AIr(){let a=this;ANs.call(a);a.b8D=null;a.b48=null;a.cGH=null;a.c7R=null;} +let Bc1=(a,b,c,d,e,f)=>{BJy(a);a.cGH=c;a.c7R=b;a.b8D=d;a.b48=e;c=new H6;FU();b=Hf;Mo(c,b,b);a.bMK=c;CQO(a,f);},Fy9=(a,b,c,d,e)=>{let f=new AIr();Bc1(f,a,b,c,d,e);return f;},BWx=(a,b,c,d,e)=>{Bc1(a,b,c,d,e,null);},Cs3=(a,b,c,d)=>{let e=new AIr();BWx(e,a,b,c,d);return e;},DRd=(a,b)=>{return !(a.b8D.bOq!==b&&a.b48.bOq!==b)?1:0;},Ebq=a=>{let b,c,d;b=B5T(a.b8D);c=B5T(a.b48);d=new S;T(d);H(H(H(d,b),E(6401)),c);return Q(d);},Cbt=(a,b,c,d)=>{if(Ko(b,c)>=0){if(Ko(b,d)>0)return 1;return 0;}return 1;},DMA=a=>{return;}; +function Ch0(){let a=this;F.call(a);a.bQk=null;a.cfG=0;} +let DwR=a=>{let b,c,d;b=a.bQk;c=a.cfG;d=new S;T(d);Bb(XU(H(H(d,b),E(3994)),c),41);return Q(d);},CA_=a=>{return BG(a.bQk,E(6402));},CEp=(a,b,c)=>{if(b!==null){b=(CEE(b)).dX();while(b.dY()){if(B6Z(a,b.dZ(),c))return 1;}return 0;}return 0;},B6Z=(a,b,c)=>{let d,e;d=AID(b,E(4132));if(d!=(-1))b=CC(b,d+1|0);if(CB(c,E(900))){c=Jt(c,E(900),E(649));e=new S;T(e);Bb(e,94);Bb(H(e,c),36);return Qc(b,Q(e));}return Bj(b,c);},FwM=(a,b,c)=>{a.bQk=b;a.cfG=c;},C4i=(a,b)=>{let c=new Ch0();FwM(c,a,b);return c;},B6V=(a,b,c)=>{let d, +e;if(!KX(c)){if(BO(a.bQk,E(1497))){d=CC(a.bQk,1);c=c.cA8.dX();a:{b:{while(c.dY()){if(B6Z(a,(c.dZ()).b7c,d))break b;}e=0;break a;}e=1;}}else if(BO(a.bQk,E(1775))&&Dr(a.bQk,E(1776))){d=c.bGZ;c=a.bQk;e=CEp(a,d,Dk(B_(c,2,c.bGI.length-2|0)));}else e=!CA_(a)?B6Z(a,c.bH4.bJ1,a.bQk):!Ctz(c)?0:1;if(e)return a.cfG?0:1;return b;}c=new Bt;X(c);J(c);}; +function BsD(){let a=this;ADD.call(a);a.b8f=null;a.csY=null;a.cVa=null;a.ctx=null;a.cYQ=null;a.cLr=null;a.ct2=null;a.cLF=null;a.cyU=0;a.cKP=null;a.cam=null;a.cU4=null;a.cP2=null;a.b7Z=null;a.cGr=null;a.cEX=null;a.cAr=null;a.cGu=null;a.cFb=null;a.cX6=null;a.cjU=0;a.cCa=null;a.c25=null;a.cwr=null;} +let D6s=a=>{return AOi(a.b8f);},Fxp=(a,b)=>{return AJU(a.b8f,b);},EFD=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n;if(FQ(a.cam))c=null;else{d=a.cam;e=a.ct2;f=a.cLF;c=Qd();g=a.cP2;h=null;i=b;c=A$v(i,d,e,f,c,g,h);h=a.cEX;if(h.bGJ>0){d=a.ct2;Fa();c=CvZ(i,c,d,h,Hg);}}h=ACX(a.b8f,b);d=a.cCa;j=b;b=Bri(j,h,d);if(!a.cjU&&B5e(a.b7Z))a.b7Z=a.cYQ.cim;k=a.cU4;l=a.cwr;m=a.cKP;n=a.ctx;h=a.cLr;d=a.cX6;e=a.cAr;f=a.cGu;g=a.cFb;i=a.csY;b=C4Z(j,k,l,m,n,h,d,b,e,f,g,c,!(i instanceof BrW)?0:WI(i)!==a?0:1,a.b7Z,a.cGr,a.c25);c=a.ctx;h=new CBc;d +=b.a36();V5(h,b);h.cSJ=c;h.cQ4=d;if(a.cyU)return A2L(h);return h;},E0R=a=>{if(a.cjU){a.cyU=1;return 1;}return ANO(a.b8f);},FqA=a=>{return a.cVa;},EU5=(a,b,c,d,e,f,g)=>{let h,i;if(!FQ(a.cam)){h=a.cEX;i=B7H(b,c,d,f,e,g);U(h,i);return 1;}return AGs(a.b8f,b,c,d,e,f,g);}; +function Dch(){let a=this;F.call(a);a.b_p=0;a.cpn=0;a.dcz=0;a.cgR=0;a.clt=null;a.c9k=0;} +let Fkq=(a,b,c,d,e,f)=>{a.b_p=b;a.cpn=c;a.dcz=d;a.cgR=e;if(f===null)f=E(14);a.clt=f;},DjM=(a,b,c,d,e)=>{let f=new Dch();Fkq(f,a,b,c,d,e);return f;},B8n=(a,b,c,d,e)=>{let f,g,h,i;f=new AGg;g=DO(b,a.b_p);h=a.cpn;i=a.clt;Bx7();f.cDJ=0;f.cqb=0;f.cg$=g;f.caY=h;f.b5c=i;f.b2Y=e;f.cDJ=c;f.cqb=d;return f;}; +function BbP(){let a=this;AGW.call(a);a.c20=null;a.cm7=null;} +let Eo_=a=>{let b,c,d;b=null;c=Br(a.cm7);while(Bq(c)){d=Bm(c);if(!(b!==null&&Ko(b,d.Qk())<=0))b=d.Qk();}if(b===null){b=new BV;X(b);J(b);}return b;},EsR=a=>{let b,c,d;b=null;c=Br(a.cm7);while(Bq(c)){d=Bm(c);if(!(b!==null&&Ko(b,d.Ql())>=0))b=d.Ql();}if(b===null){b=new BV;X(b);J(b);}return b;},EwP=(a,b)=>{b=new BV;X(b);J(b);},EFK=(a,b)=>{b=new BV;X(b);J(b);},DBr=(a,b)=>{let c;c=new BV;X(c);J(c);},EN4=(a,b,c)=>{b=new BV;X(b);J(b);},ExA=(a,b)=>{b=new BV;X(b);J(b);},DXA=(a,b)=>{let c;c=new BV;X(c);J(c);},EyC=(a,b)=> +{let c;c=new BV;X(c);J(c);},DJF=(a,b)=>{b=new BV;X(b);J(b);},D57=(a,b)=>{b=new BV;X(b);J(b);},DAd=(a,b)=>{b=new BV;X(b);J(b);},Evf=(a,b,c)=>{return;},Dd4=(a,b)=>{U(a.cm7,b);},Ffv=N(),DrG=b=>{return (((b.bJX*299|0)+(b.bJz*587|0)|0)+(b.bJT*114|0)|0)/1000|0;},A$c=b=>{let c;c=DrG(b);return Oe(c,c,c);},ARC=b=>{let c;c=255.0*b|0;if(c>=0){if(c>255)return 255;return c;}return 0;},A0E=N(Bx),BqF=null,BqP=null,BuS=null,Bt8=null,Bv0=null,B2s=null,ELP=null,Bxb=()=>{Bxb=Z(A0E);FjR();},EGw=(a,b,c)=>{Bxb();Ct(a,b,c);},AUd= +(a,b)=>{let c=new A0E();EGw(c,a,b);return c;},FjR=()=>{let b,c,d;BqF=AUd(E(6403),0);BqP=AUd(E(6404),1);BuS=AUd(E(6405),2);Bt8=AUd(E(6406),3);Bv0=AUd(E(6407),4);b=AUd(E(6408),5);B2s=b;c=K(A0E,6);d=c.data;d[0]=BqF;d[1]=BqP;d[2]=BuS;d[3]=Bt8;d[4]=Bv0;d[5]=b;ELP=c;},DnK=N(0); +function B2p(){let a=this;F.call(a);a.bUK=null;a.b7C=null;a.bS8=0;a.cmd=0;a.b3F=null;a.b3T=null;} +let C19=0,B2Y=()=>{B2Y=Z(B2p);FaL();},Db4=(b,c,d)=>{let e,f;B2Y();e=new B2p;e.cmd=1;e.b3F=Bk();e.b3T=null;e.bUK=b;e.b7C=c;e.bS8=!d?(-1):1;f=(Dgt(b)).dX();while(f.dY()){b=Db4(f.dZ(),c,d);U(e.b3F,b);}return e;},AB$=a=>{let b;b=a.b7C.bNy;Pf();return b!==AAK?0:1;},A_c=a=>{return My(CDB(a));},Cg5=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;c=b.hE();d=BaV(a);e=d.cF(c);if(a.cmd){if(AB$(a)){f= -BgB(a,c)/2.0;g=a.bS8==1?0.0: -e.bGF;}else{f=a.bS8==1?0.0: -e.bGE;g= -BgB(a,c)/2.0;}d.cC(b.h2(Bh(f,g)));}h=!AB$(a)?BA(a.bS8 +*e.bGE,0.0):BA(0.0,a.bS8*e.bGF);i=0;while(true){j=a.b3F;if(i>=j.bGJ)break;j=Be(j,i);k=(B1D(a,c)).b2T.cf(i);l=!AB$(a)?BA(a.bS8*(e.bGE+BY0(a)),k.bMw):BA(k.bMw,a.bS8*(e.bGF+BY0(a)));Cg5(j,b.h2(I3(l)));k=Dfq(a);B9();m=(BJ(k,Cz)).cu(a.b7C.bGN);if(!m.gv()){j=(b.h2(m)).h2(Fi(Dfq(a)));k=EE();AMc(k,h);if(!AB$(a)){n=a.bS8;f=n*10|0;g=n*25|0;B2(k,h.bGK+f,h.bGL);o=h.bGK+g;p=h.bGL;q=l.bGK;g=q-g;r=l.bGL;HY(k,o,p,g,r,q-f,r);}else{n=a.bS8;f=n*3|0;g=n*10|0;B2(k,h.bGK,h.bGL+f);p=h.bGK;o=h.bGL+g;q=l.bGK;r=l.bGL;HY(k,p,o,q,r-g, +q,r-f);}Wx(k,l);j.hP(k);}i=i+1|0;}},B1D=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;a:{if(a.b3T===null){c=new BLM;d=YE(a.bUK.cav);A5S();e=new BSC;B3c();f=UJ();e.bXT=f;g=By_((-1.7976931348623157E308),1.7976931348623157E308,(-1.7976931348623157E308));KM(f,g);c.b6Z=e;c.b2T=Bk();c.b4T=1.7976931348623157E308;c.b9S=(-1.7976931348623157E308);c.da6=d;a.b3T=c;f=Br(a.b3F);while(true){if(!Bq(f)){b=a.b3T;c=b.b2T;if(c.bGJ){if(b.b4T===1.7976931348623157E308){d=Br(c);while(Bq(d)){c=Bm(d);h=b.b4T;i=c.bMw;e=c.bRR;b.b4T=Eh(h,i-BC(e.b7W +/2.0,e.b7V/2.0));h=b.b9S;j=c.bMw;c=c.bRR;b.b9S=BC(h,j+BC(c.b7W/2.0,c.b7V/2.0));}h=(b.b4T+b.b9S)/2.0;b=Br(b.b2T);h= -h;while(Bq(b)){c=Bm(b);c.bMw=c.bMw+h;}}else{b=new BP;X(b);J(b);}}break a;}c=Bm(f);e=a.b3T;k=BgB(c,b);l=CFP(c,b);if(!c.b3F.bGJ)d=CgN(k,l,0.0,0.0);else{h=CmO(c,b);j=CDl(c,b);d=CgN(k,l+CaG(c),h,CXi(c)+j);}if(APh(e.b6Z.bXT)!=1?0:1)CaC(e,BQH(d));else{h=CUP(e.b6Z,0.0,d.bV3);c=e.b6Z;i=d.bV3;j=CUP(c,i,i+d.b6u);c=BQH(d);g=new ASA;l=c.bMw;m=c.bRR;k=l-m.b7W/2.0;A8o(g,0.0,k,m.bV3,k);k=g.bM_;c.bMw=c.bMw+h- +k;g=BQH(d);d=new ASA;m=g.bRR;l=m.bV3;h=g.bMw-m.b7V/2.0;A8o(d,l,h,l+m.b6u,h);i=d.bM_;j=g.bMw+j-i;g.bMw=j;if(c.bRR!==g.bRR)break;if(j>c.bMw)c=g;CaC(e,c);}}b=new Bt;X(b);J(b);}}return a.b3T;},CaG=a=>{if(AB$(a))return (A_c(a)).bIl;return (A_c(a)).bIv;},CXi=a=>{if(AB$(a))return (A_c(a)).bJU+5.0;return (A_c(a)).bKJ+30.0;},BY0=a=>{return CaG(a)+CXi(a);},BgB=(a,b)=>{if(AB$(a))return ((BaV(a)).cF(b)).bGE;return ((BaV(a)).cF(b)).bGF;},CFP=(a,b)=>{if(AB$(a))return ((BaV(a)).cF(b)).bGF;return ((BaV(a)).cF(b)).bGE;},BaV +=a=>{let b,c,d,e,f,g,h,i;if(a.cmd){b=CDB(a);c=a.bUK.cbY;SQ();if(c!==AHt){if(Df()&&!C19&&a.bUK.cbY!==UO){d=new C4;X(d);J(d);}e=a.bUK.cav;f=D0(b,a.b7C.bGN);g=IR(b);h=a.b7C;i=GM(b);Ed();d=Py(e,f,g,h,i,FR,null,null);if(a.bS8==1)return KN(d,3.0,0.0,1.0,1.0);return KN(d,0.0,3.0,1.0,1.0);}c=new AJC;d=a.b7C;f=Qd();CM();BC4(c,d,Lg(f,C6,a.bUK.cMe));h=a.bUK.cav;g=new A8O;d=null;K0();B24(g,c,h,d,Vh,b,b);f=A_c(a);if(AB$(a))return KN(g,f.bIv,f.bKJ,0.0,0.0);return KN(g,0.0,0.0,f.bIl,f.bJU);}return E6(0.0,0.0);},CDB=a=>{let b, +c,d,e,f;if(a.b3F.bGJ==(Dgt(a.bUK)).dV()){b=a.bUK;c=0;d=BrT(b.cps,CJ8(b,b.b9F),c);e=b.cmK;while(e!==null){f=Bva(CJ8(e,b.b9F));c=c+(-1)|0;f=BrT(b.cps,f,c);Pb();d=Ux(d,f,Qv);e=e.cmK;}return d;}b=new BP;X(b);J(b);},Dfq=a=>{let b,c;b=a.bUK;B8();c=Q1(Du(CZp,b.bXh),b.b9F);return B0(b.cps,c);},CmO=(a,b)=>{b=B1D(a,b);return !b.b2T.bGJ?0.0:b.b9S-b.b4T;},CDl=(a,b)=>{let c,d;b=B1D(a,b);c=0.0;d=Br(b.b2T);while(Bq(d)){b=(Bm(d)).bRR;c=BC(c,b.bV3+b.b6u);}return c;},FaL=()=>{C19=0;},Bi5=N(0); +function CA8(){F.call(this);this.cVt=null;} +let D37=(a,b)=>{let c,d,e,f,g,h;b=b;c=a.cVt;if(c.cxi){d=BEi(b);e=new CQC;d=B0z(d,e);e=new CQB;d=d;f=new C$B;f.dau=e;e=new Dre;g=null;e.ddv=f;e.b_e=g;e.cGR=0;d=d;while(CSO(d,e)){}h=(Bzn(Bn6(e.b_e),CL(1))).bHl;d=new CQA;d.c1I=h;b.UO(d);}d=c.b4L;AF7();if(d===BrY)BzY(b);},CWe=N(),BY4=N(0),CpS=N(),EHy=(a,b)=>{AN_();return b+1|0;},DsE=N(0),CU9=(b,c)=>{let d,e;d=new Cgw;e=new C_a;d.cyT=b;d.dbC=e;d.cSQ=c;return d;},B30=N(0); +function CpQ(){let a=this;F.call(a);a.cP4=null;a.cP3=0;} +let CpR=N(),EJM=(a,b)=>{AN_();return b-1|0;}; +function A9M(){Bx.call(this);this.c0$=0;} +let AIM=null,AJS=null,AJK=null,A8C=null,A1Y=null,AOA=null,C9D=null,ZE=()=>{ZE=Z(A9M);Frx();},EHo=(a,b,c,d)=>{ZE();Ct(a,b,c);a.c0$=d;},AV7=(a,b,c)=>{let d=new A9M();EHo(d,a,b,c);return d;},BRE=b=>{let c,d,e,f;ZE();c=(C9D.b2()).data;d=c.length;e=0;while(true){if(e>=d)return null;f=c[e];if(b==f.c0$)break;e=e+1|0;}return f;},Frx=()=>{let b,c,d;AIM=AV7(E(6409),0,32);AJS=AV7(E(6410),1,43);AJK=AV7(E(6411),2,94);A8C=AV7(E(6412),3,45);A1Y=AV7(E(6413),4,33);b=AV7(E(6414),5,35);AOA=b;c=K(A9M,6);d=c.data;d[0]=AIM;d[1]= +AJS;d[2]=AJK;d[3]=A8C;d[4]=A1Y;d[5]=b;C9D=c;},JC=N(),QW=a=>{let b,c;Go();b=Hu;c=K8;return AFv(b,c);},Dra=a=>{return A14(a,E(6415),E(6416));},BRj=a=>{return A14(a,E(6417),E(6418));},A14=(a,b,c)=>{return (Eu(KI(),b)).lm(Eu(KI(),c));}; +function DcH(){let a=this;JC.call(a);a.b15=null;a.c3T=null;a.c2J=null;a.c8b=10.0;a.c3S=null;} +let E5T=(a,b,c,d)=>{let e,f,g,h,i;e=0.0;f=0.0;g=Br(a.b15);while(Bq(g)){h=Bm(g);e=BC(e,(B5P(h,b)).bGE);f=f+C5n(h,b);}b=CLe(a,b);i=0.0;h=Br(b.b0J);while(Bq(h)){b=Bm(h);if(i>0.0)i=i+10.0;i=i+b.bG6;}if(i>0.0)i=i+10.0;return Cl(e+i+2.0,f);},CLe=(a,b)=>{let c,d,e,f,g,h;c=BMG();d=Br(a.b15);while(Bq(d)){e=Bm(d);f=BMG();g=Br(e.b98);while(Bq(g)){Cis(f,((Bm(g)).Te(b,0.0,0.0)).bGE);}g=BMG();h=0;while(!(h>=c.b0J.bGJ&&h>=f.b0J.bGJ)){Cis(g,BC(Czx(c,h),Czx(f,h)));h=h+1|0;}c=g;}return c;},FdN=(a,b,c,d)=>{let e,f,g,h,i,j,k,l, +m,n,o,p,q,r,s,t,u,v;if(!c){b=b.h2(QW(a));e=b.hE();f=0.0;g=Br(a.b15);while(Bq(g)){f=BC(f,(B5P(Bm(g),e)).bGE);}h=CLe(a,e);i=Bk();j=0.0;k=Bk();l=Bk();d=DL(j);m=k;U(m,d);d=DL(0.0);g=l;U(g,d);n=0.0+f+5.0;U(g,DL(n));d=DjO(h);while(Bq(d)){n=n+(Bm(d)).bG6+10.0;U(g,DL(n));}d=Br(a.b15);o=f+10.0;while(Bq(d)){p=Bm(d);q=p.cJn;g=b.h2(Bh(0.0+B2a(p),j));r=null;Def(q,g,0,r);q=DjO(h);s=Br(p.b98);f=o;while(Bq(s)){(Bm(s)).a23(b.h2(Bh(f,j)),0,null);f=f+(Bm(q)).bG6+10.0;}t=C5n(p,e);f=B2a(p)-7.0;n=j+t/2.0-1.0;g=new CFa;g.bYS=f;g.b$s +=n;U(i,g);j=j+t;U(m,DL(j));}d=b.h2(A14(a,E(6419),E(6419)));u=0;q=i;while(uf)(d.h2(Bh(f,e.b$s))).hP(C2(2.0,2.0));}b=null;c=0;while(c{let e,f,g,h;e=0.0;f=0.0;g=Br(a.ceG);while(Bq(g)){h=ATV(Bm(g),b,c,d);e=e+h.bGE+10.0;f=BC(f,h.bGF);}return Cl(e,f);},DAK=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m;e=Dbs(a,b.hE(),0.0,0.0);f=b.h2(QW(a));g=0.0;if(c){a:{if(c==1){h=(AUM(a.caK)).dX();while(h.dY()){(h.dZ()).cAk=A14(a,E(6420),E(6421));}i=e.bGF;b=Vm(Ty(a.caK));j=b;while(true){if(!TS(j))break a;d=U6(b);k=d.bHe;l=d.bHt.cKt;De2(k,f.h2(Bh(l,i)),c,Dmy(k,f.hE(),l,i));}}}return;}(f.h2(Cc(Dra(a)))).hP(C2(d.bGE,d.bGF));e=Br(a.ceG);while(Bq(e)){j=Bm(e);B5L(j, +f.h2(BM(g)),c,d);m=(ATV(j,f.hE(),g,0.0)).bGE;j.cKt=g;g=g+m+10.0;}}; +function C0n(){let a=this;JC.call(a);a.b4Y=null;a.c4H=null;a.cKe=null;a.c9e=2.0;a.c9d=3.0;a.c9c=10.0;a.cij=0;} +let CpZ=(a,b,c,d)=>{let e,f,g,h,i,j;if(a.cij){e=0.0;f=0.0;g=Br(a.b4Y);while(Bq(g)){h=(Bm(g)).Te(b,c,d);f=f+h.bGF+2.0+3.0+10.0;e=BC(e,h.bGE);}return Cl(e,f);}i=0.0;j=0.0;g=Br(a.b4Y);while(Bq(g)){h=(Bm(g)).Te(b,c,d);i=i+h.bGE+2.0+3.0+10.0;j=BC(j,h.bGF);}return Cl(i,j);},Fns=(a,b,c,d)=>{let e,f,g,h,i,j,k;if(!c){e=b.h2(QW(a));if(!a.cij){f=0.0;b=Br(a.b4Y);while(Bq(b)){g=Bm(b);g.a23(e.h2(Bh(f+2.0,0.0)),c,d);h=g.Te(e.hE(),f,0.0);i=h.bGE;(e.h2(Bh(f,0.0))).hP(Fg(h.bGF));g=e.h2(Bh(f,0.0));j=i+2.0+3.0;g.hP(DE(j));g=new FG;i +=f+i+2.0+3.0;Hs(g,i,0.0);(e.h2(g)).hP(Fg(h.bGF));(e.h2(Bh(i,0.0+h.bGF))).hP(DE(10.0));f=f+j+10.0;}}else{b=CpZ(a,e.hE(),0.0,0.0);e=e.h2(Bh(0.0,0.0));k=Br(a.b4Y);i=0.0;while(Bq(k)){h=Bm(k);h.a23(e.h2(BW(i+2.0)),c,d);j=(h.Te(e.hE(),0.0,i)).bGF;(e.h2(BW(i))).hP(DE(b.bGE));h=e.h2(BW(i));f=j+2.0+3.0;h.hP(Fg(f));j=i+j+2.0+3.0;(e.h2(BW(j))).hP(DE(b.bGE));(e.h2(Bh(b.bGE,j))).hP(Fg(10.0));i=i+f+10.0;}}return;}}; +function CR$(){JC.call(this);this.cV7=0;} +let D2b=(a,b,c,d)=>{return Cl(10.0,6.0);},D5z=(a,b,c,d)=>{let e,f,g;if(!c){b=b.h2(A14(a,E(6422),E(6423)));e=d.bGF/2.0;c=a.cV7;f=C5(c,61);if(!f)e=e-1.0;g=d.bGE;if(!f){((b.h2(GT())).h2(Bh(0.0,e))).hP(DE(g));((b.h2(GT())).h2(Bh(0.0,e+2.0))).hP(DE(g));}else if(c==46)((b.h2(J$(1.0,2.0,1.0))).h2(Bh(0.0,e))).hP(DE(g));else if(c==45)((b.h2(GT())).h2(Bh(0.0,e))).hP(DE(g));else ((b.h2(Dw(1.5))).h2(Bh(0.0,e))).hP(DE(g));return;}}; +function ANh(){let a=this;JC.call(a);a.clq=null;a.cED=null;a.cFn=0;} +let BY1=(a,b,c,d,e)=>{let f,g;a.cED=U9(c);if(!d)a.cFn=0;else{c=Ih(b,E(6424),E(1591));BQt();a.cFn=(Ih(c,Cus,E(14))).bGI.length;b=ES(b);}f=K(KH,1);f.data[0]=b;c=PB(f);g=a.cED;B3();a.clq=C_(c,g,CF,e);},BTs=(a,b,c,d)=>{a.clq.cC(b.h2(Bh(c,d)));},CIY=(a,b)=>{return a.clq.cF(b);},Bt2=(a,b,c)=>{let d,e;d=a.clq.cF(b);e=a.cFn;if(e)return Cl(BC(d.bGE,e*8.0),d.bGF);return d;},Dft=N(ANh),CJB=(a,b,c,d)=>{return FO(Bt2(a,b,c),6.0,2.0);},DB7=(a,b,c,d)=>{let e,f,g;if(!c){e=a;BTs(e,b,3.0,0.0);f=CJB(a,b.hE(),0.0,0.0);e=Bt2(e, +b.hE(),0.0);(b.h2(Bh(1.0,e.bGF))).hP(DE(f.bGE-3.0));g=e.bGF-3.0;(b.h2(Bh(1.0,g))).hP(Fg(2.0));(b.h2(Bh(3.0+e.bGE+1.0,g))).hP(Fg(2.0));return;}}; +function AUr(){let a=this;JC.call(a);a.cHi=null;a.c8o=20;a.c83=1.5;a.cZq=0;a.ctg=0;} +let A6j=(a,b,c,d,e,f)=>{let g;a.c8o=20;a.c83=1.5;g=U9(c);b=Ls(b);B3();a.cHi=C_(b,g,CF,f);a.cZq=d;a.ctg=e;},FzQ=(a,b,c,d,e)=>{let f=new AUr();A6j(f,a,b,c,d,e);return f;},DpH=(a,b,c,d)=>{return FO(a.cHi.cF(b),20.0,0.0);},EJR=(a,b,c,d)=>{let e;if(!c){b=b.h2(QW(a));a.cHi.cC(b.h2(BM(20.0)));e=(DpH(a,b.hE(),0.0,0.0)).bGF;b=b.h2(Dw(1.5));if(a.cZq){(b.h2(Bh(2.0,(e-10.0)/2.0))).hP(Fz(10.0,10.0));if(a.ctg)((b.h2(AET(b))).h2(Bh(5.0,(e-4.0)/2.0))).hP(Fz(4.0,4.0));}else{(b.h2(Bh(2.0,(e-10.0)/2.0))).hP(C2(10.0,10.0));if(a.ctg) +{d=Fj();BQ(d,0.0,0.0);BQ(d,3.0,3.0);BQ(d,10.0,(-6.0));BQ(d,3.0,1.0);((b.h2(AET(b))).h2(Bh(3.0,6.0))).hP(d);}}return;}}; +function CcB(){let a=this;ANh.call(a);a.ddk=2.5;a.c_M=2.0;a.c_L=2.0;} +let C71=(a,b,c,d)=>{c=c+2.5+2.0;return FO(FO(Bt2(a,b,c),4.0,4.0),5.0,5.0);},EL9=(a,b,c,d)=>{let e,f,g;if(!c){e=C71(a,b.hE(),0.0,0.0);b=((b.h2(Dw(2.5))).h2(Cc(BRj(a)))).h2(QW(a));(b.h2(Bh(2.5,2.5))).hP(Ge(C2(e.bGE-5.0,e.bGF-5.0),10.0));d=b.hE();f=a;g=CIY(f,d);BTs(f,b,(e.bGE-g.bGE)/2.0,4.5);return;}}; +function CF5(){let a=this;ANh.call(a);a.c78=12;a.ccM=null;} +let DzG=a=>{return a.ccM===null?0:1;},CJq=(a,b,c,d)=>{c=c+2.0;return FO(Bt2(a,b,c),16.0,4.0);},Eu4=(a,b,c,d)=>{let e,f,g,h,i,j;e=CJq(a,b.hE(),0.0,0.0);f=b.h2(QW(a));if(!c){(f.h2(Cc(BRj(a)))).hP(C2(e.bGE-1.0,e.bGF-1.0));g=a;BTs(g,f,2.0,2.0);h=e.bGE-12.0;(f.h2(BM(h))).hP(Fg(e.bGF-1.0));i=Fj();BQ(i,0.0,0.0);BQ(i,6.0,0.0);BQ(i,3.0,(CIY(g,f.hE())).bGF-8.0);((f.h2(AET(f))).h2(Bh(h+3.0,6.0))).hP(i);}b=a.ccM;if(b!==null&&c==1){j=W$(b.cF(f.hE()),e.bGE-1.0,0.0);b=f.h2(BW(e.bGF-1.0));(b.h2(Cc(BRj(a)))).hP(C2(j.bGE-1.0, +j.bGF-1.0));a.ccM.cC(b);}}; +function CKC(){JC.call(this);this.b4F=null;} +let DWY=(a,b,c,d)=>{return Cl((Be(a.b4F,0)).bGI.length,a.b4F.bGJ);},FbZ=(a,b,c,d)=>{let e,f,g,h;if(!c){b=b.h2(QW(a));e=(Be(a.b4F,0)).bGI.length;f=a.b4F.bGJ;g=0;while(g{let e,f;e=U9(c);f=Ls(b);B3();a.cu4=C_(f,e,CF,d);d=b;a.cO8=Bj(UF(d,0),E(423))?0:1;a.c0p=UF(d,0);},FyQ=(a,b,c)=>{let d=new AXE();BhD(d,a,b,c);return d;},CFe=(a,b,c,d)=>{return a.cu4.cF(b);},Def=(a,b,c,d)=>{if(!c){if(a.cO8)a.cu4.cC(b);return;}},AMw=N(Dd),EmC=N(); +function AWJ(){let a=this;F.call(a);a.bRD=BH;a.bSd=0;a.bWq=0;} +let E7n=(a,b,c)=>{a.bRD=b;a.bSd=c.bSd;a.bWq=c.bWq;},CB_=(a,b)=>{let c=new AWJ();E7n(c,a,b);return c;},DLe=(a,b,c,d)=>{a.bRD=b;a.bSd=d+CbS(c)|0;a.bWq=d;},CrH=(a,b,c)=>{let d=new AWJ();DLe(d,a,b,c);return d;},B60=(a,b,c,d)=>{a.bRD=b;a.bSd=c;a.bWq=d;},Fzh=(a,b,c)=>{let d=new AWJ();B60(d,a,b,c);return d;},B7U=a=>{return a.bSd-a.bWq|0;},CC7=(a,b)=>{let c;if(b!==null){a:{b:{if(G5(a.bRD,b.bRD)){if(a.bSd!=b.bSd)break b;if(a.bWq!=b.bWq)break b;}c=0;break a;}c=1;}return c;}return 1;}; +function Co7(){let a=this;F.call(a);a.cgt=null;a.clu=null;a.cUJ=null;a.cx9=null;a.cYJ=null;a.cSt=null;a.cfH=null;a.cZJ=null;} +let DMZ=(a,b,c,d,e)=>{let f,g,h,i;f=Of(ADo(a));g=My(ADo(a));h=g.bIv+f.bIv;i=g.bIl+f.bIl;if(!BPm(c))d=0.0;(BOK(a)).cC(b.h2(Bh(d+h,i)));},ADo=a=>{let b;b=a.cSt;B8();return B0(b,CXo);},BOK=a=>{let b,c;b=a.cYJ;if(b!==null){b=B4(a.cZJ.bH$,b);c=D0(ADo(a),a.cfH);B3();return C_(b,c,CF,new Sz);}return E6(0.0,0.0);},Fe1=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n;c=b.hE();d=((BOK(a)).cF(c)).bGE;e=a.cgt.Ts(EA(a.cUJ));f=a.cgt.Ts(EA(Ep(a.cx9,V(1))));g=Of(ADo(a));h=My(ADo(a));i=b.h2(Bh(0.0,h.bIl));b=ADo(a);B9();j=(BJ(b,CK)).cu(a.cfH);if +(!j.gv()){k=g.bIl+BZD(a,c)+g.bJU;if(k>0.0){l=C2(f-e,k);(i.h2(Cc(j))).hP(l);}}b=(i.h2((BJ(ADo(a),Cz)).cu(a.cfH))).h2(BW(g.bIl+BZD(a,c)/2.0));if(d===0.0)b.hP(DE(f-e));else{e=g.bIv;if(e>1.0)b.hP(DE(e));m=g.bIv+h.bIv+d+h.bKJ;n=DE(f-1.0-m);(b.h2(BM(m))).hP(n);}},D5H=(a,b)=>{let c,d;c=BQM(a,b);d=a.cgt.Ts(EA(Ep(a.cx9,V(1))));return A7Q(0.0,CW(a.clu),d,CW(a.clu)+c);},Fg8=(a,b)=>{return null;},BQM=(a,b)=>{let c,d;c=Of(ADo(a));d=My(ADo(a));return d.bIl+c.bIl+BZD(a,b)+c.bJU+d.bJU;},BZD=(a,b)=>{return ((BOK(a)).cF(b)).bGF;},E7D +=(a,b)=>{return a.clu;},D9L=a=>{return null;},Fwe=(a,b,c)=>{b=new BV;X(b);J(b);},ESF=(a,b)=>{return BQM(a,b);},ES1=(a,b,c,d)=>{b=new BV;X(b);J(b);}; +function AME(){let a=this;F.call(a);a.ce2=null;a.b$T=0;a.b16=null;a.bX7=null;a.cKj=null;a.bHk=null;a.cN$=null;a.cix=null;a.bH_=null;a.bR1=null;a.bZs=null;a.cPn=null;a.cHg=null;a.bTK=null;} +let Fuk=a=>{let b,c,d;b=JH(a);c=BY(a.bZs);d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},FlF=(a,b,c,d,e,f)=>{a.ce2=b;a.b$T=c;a.b16=d;a.bX7=e;a.cKj=f;},BMe=(a,b,c,d,e,f,g,h,i,j)=>{a.b$T=100;a.bTK=b;a.cN$=d;a.cHg=j;a.bR1=i;a.cPn=h;a.bH_=f;a.cix=e;a.bHk=c;a.bZs=g;},CLz=a=>{B8();return CYA;},BF7=a=>{let b;b=B0(a.bR1,CLz(a));B9();return Bwe((BJ(b,Cz)).cu(a.bTK),(BJ(TH(a),Cz)).cu(a.bTK),a.b$T);},B2m=a=>{let b;b=B0(a.bR1,CLz(a));B9();return Bwe((BJ(b,CK)).cu(a.bTK),(BJ(TH(a),CK)).cu(a.bTK),a.b$T);},A84=a=>{return D0(TH(a), +a.bTK);},TH=a=>{return B0(a.bR1,a.oi());},ABc=(a,b)=>{let c;c=My(TH(a));return c.bIl+a.bkE(b)+c.bJU;},CkC=a=>{return AD1(a.cPn,a.bZs.b2d);},AGV=(a,b)=>{if(a.bZs.b2d!==null)return (CkC(a)).V7(b);return a.cN$;},EaH=(a,b,c)=>{let d,e;d=(My(TH(a))).bIl+CW(AGV(a,b));e=d+a.bkE(b);PW();if(!(!(c!==ALy&&c!==AJV)?1:0)){if(!B07(c))return (d+e)/2.0;return e;}return d;},Bcc=a=>{return a.cHg.bH$;},ASe=a=>{let b,c,d,e,f,g,h,i;b=a.bR1;B8();c=B0(b,Du(Cx9,a.cKj));b=D0(c,a.bTK);B9();d=(BJ(c,Xs)).oV();e=a.cHg;Ed();f=FR;f=ARN(e, +b,d,f);b=a.bX7;f=S0(f,b);e=Of(c);g=new ACw;Jo();AP8(g,f,JJ,e);h=(BJ(c,CK)).cu(a.bTK);i=(BJ(c,Cz)).cu(a.bTK);return XJ(G1(c),i,h,g,0,Fi(c));},CvF=(a,b)=>{if(a.bX7!==null){ADH(ASe(a),b);return;}}; +function C6E(){let a=this;AME.call(a);a.bM7=null;a.dcD=10.0;} +let Fs6=(a,b)=>{let c,d,e;Of(TH(a));c=a.bHk.Ts(a.bH_)+6.0;d=a.bHk.Ts(a.bM7)+a.bHk.a1s(a.bM7)-6.0;e=(BHs(a)).cF(b);if(d-c>e.bGE)return e.bGF+2.0;return e.bGF;},FjS=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m;f=BHs(a);g=b.hE();h=f.cF(g);i=B0(a.bR1,BUJ(a));My(i);Of(i);j=a.bHk.Ts(a.bH_)+6.0;k=a.bHk.Ts(a.bM7)+a.bHk.a1s(a.bM7)-6.0;d=k-j;e=h.bGE;if(!(d>e)){l=k+6.0;m=ABc(a,g)-h.bGF;}else{l=j+(d-e)/2.0;m=0.0;}f.cC(b.h2(Bh(l,m)));},BHs=a=>{let b,c;b=B4(Bcc(a),a.cix);c=A84(a);B3();return C_(b,c,CF,new Sz);},Fpr=(a,b,c)=>{let d, +e,f,g;d=(BHs(a)).cF(b);e=a.bHk.Ts(a.bH_)+6.0;f=a.bHk.Ts(a.bM7)+a.bHk.a1s(a.bM7)-6.0;e=f-e;g=d.bGE;if(!(e>g)){g=f+6.0+g;if(g>c)return g-c;return 0.0;}return 0.0;},BUJ=a=>{B8();return B2r;},Er3=(a,b)=>{let c,d,e,f,g;c=a.ce2;b=c!==null&&BhY(c)?BX4(c,b):(b.h2(BF7(a))).h2(Cc(B2m(a)));c=My(B0(a.bR1,BUJ(a)));d=a.bHk.Ts(a.bH_)+c.bIv;e=a.bHk.Ts(a.bM7)+a.bHk.a1s(a.bM7)-c.bKJ;c=a.b16;if(c!==null)b.hF(c);b=b.h2(BW(ABc(a,b.hE())-10.0));Go();b=(b.h2(Hu)).h2(Cc(Hu));c=EE();Ec(c,d,0.0);f=d+6.0;B2(c,f,4.0);g=e-6.0;B2(c,g,4.0);B2(c, +e,0.0);B2(c,e,10.0);B2(c,g,6.0);B2(c,f,6.0);B2(c,d,10.0);B2(c,d,0.0);b.hP(c);if(a.b16!==null)b.hG();},E2N=(a,b)=>{return ABc(a,b);},EqA=(a,b)=>{let c,d,e;c=ABc(a,b);d=a.bHk.Ts(a.bH_);e=a.bHk.Ts(a.bM7)+a.bHk.a1s(a.bM7);return A7Q(d,CW(AGV(a,b)),e-d,c);},D_b=(a,b)=>{return null;},DP4=(a,b,c,d)=>{let e;PW();if(c===Qh)e=a.bHk.Ts(a.bH_);else if(c===P1)e=a.bHk.Ts(a.bM7)+a.bHk.a1s(a.bM7);else if(!(c!==ALy&&c!==AFK))e=(a.bHk.Ts(a.bH_)+a.bHk.Ts(a.bH_)+a.bHk.a1s(a.bH_))/2.0;else{if(c!==AJV&&c!==AIu){b=new Bt;X(b);J(b);}e +=(a.bHk.Ts(a.bM7)+a.bHk.Ts(a.bM7)+a.bHk.a1s(a.bM7))/2.0;}return e;},C44=N(AME),EPh=(a,b,c,d,e,f,g,h,i,j)=>{BMe(a,b,c,d,e,f,g,h,i,j);},EXg=(a,b,c,d,e,f,g,h,i)=>{let j=new C44();EPh(j,a,b,c,d,e,f,g,h,i);return j;},EmG=a=>{B8();return C9I;},CE6=(a,b)=>{let c;c=My(TH(a));return c.bIl+BA4(a,b)+c.bJU;},FgJ=(a,b)=>{if(a.bX7!==null)return CE6(a,b)+(De(ASe(a),b)).bGF;return ABc(a,b);},BA4=(a,b)=>{return BC(((BSs(a)).cF(b)).bGF,AKD(a));},AKD=a=>{let b;b=ZM(Gk(A84(a)))|0;if((b%2|0)==1)b=b+(-1)|0;return b;},Fay=(a,b,c, +d,e)=>{let f,g,h,i,j,k,l,m,n,o;f=TH(a);g=My(f);h=Of(f);i=BSs(a);f=b.h2(BW(g.bIl));j=f.hE();k=i.cF(j);l=(BA4(a,j)-k.bGF)/2.0;if(BPm(c))m=!C$E(c)?g.bIv:d-k.bGE-g.bKJ;else if(CoO(c))m=e+g.bIv;else{n=a.bHk.Ts(a.bH_);o=a.bHk.Ts(a.bH_)+a.bHk.a1s(a.bH_);m=o-(o-n-AKD(a))/2.0+h.bIv;}i.cC(f.h2(Bh(m,l)));},BSs=a=>{let b,c;b=B4(Bcc(a),a.cix);c=A84(a);B3();return C_(b,c,CF,new Sz);},E_n=(a,b,c)=>{let d,e,f,g,h,i;d=(BSs(a)).cF(b);e=Of(TH(a));f=a.bHk.Ts(a.bH_)+a.bHk.a1s(a.bH_);g=AKD(a);h=f-(f-a.bHk.Ts(a.bH_)-g)/2.0+e.bIv+ +d.bGE;i=0.0;if(h>c)i=h-c;if(a.bX7===null)c=i;else{c=a.bHk.Ts(a.bH_)+(De(ASe(a),b)).bGE-c;if(!(c>i))c=i;}return c;},Eps=(a,b)=>{let c,d,e,f,g,h;c=a.bHk.Ts(a.bH_);d=b.h2(Bh(c,CE6(a,b.hE())));e=a;CvF(e,d);d=a.b16;if(d!==null)b.hF(d);f=a.bZs.ces;b=(b.h2(BW((My(TH(a))).bIl))).h2(BM(c));if(f!==null){d=B4(Bcc(e),f);g=A84(a);B3();(C_(d,g,CF,new Sz)).cC(b);}else{b=b.h2(BM((a.bHk.Ts(a.bH_)+a.bHk.a1s(a.bH_)-c-AKD(a))/2.0));d=e.ce2;d=d!==null&&BhY(d)?BX4(d,b):(b.h2(BF7(a))).h2(Cc(B2m(a)));h=AKD(a);g=Fj();c=h/2.0;BQ(g,c, +0.0);BQ(g,h,c);BQ(g,c,h);BQ(g,0.0,c);d.hP(g);}if(a.b16!==null)b.hG();},EyP=(a,b)=>{return null;},DRK=(a,b)=>{let c,d;c=ABc(a,b);d=a.bHk.Ts(a.bH_);return A7Q(d,CW(AGV(a,b)),d+c,CW(AGV(a,b))+c);},EU0=(a,b,c,d)=>{let e,f;PW();e=c===Qh?a.bHk.Ts(a.bH_):c===P1?a.bHk.Ts(a.bH_)+a.bHk.a1s(a.bH_):(a.bHk.Ts(a.bH_)+a.bHk.Ts(a.bH_)+a.bHk.a1s(a.bH_))/2.0;ARq();if(d===ARp){f=AKD(a);if(c===Qh)e=e+f/2.0;else if(c===P1)e=e-f/2.0;}return e;},E9m=(a,b,c)=>{let d,e;d=(My(TH(a))).bIl+CW(AGV(a,b));e=d+BA4(a,b);if(a.bZs.ces===null)return d ++AKD(a)/2.0;return (d+e)/2.0;},C91=N(0); +function CV0(){let a=this;F.call(a);a.ctq=null;a.cdJ=0;a.b3r=0;} +let Bgc=a=>{let b,c,d;a:{if(a.cdJ==(-1))b=(-1);else{if(!a.b3r){c=AEG(a.ctq);a.cdJ=c;if(c==(-1)){b=(-1);break a;}a.b3r=8;}b=a.b3r;if(b>0){c=b-1|0;a.b3r=c;b=(a.cdJ>>>(7-c|0)|0)&1;}else{d=new BP;X(d);J(d);}}}if(b==(-1)){d=new AA3;X(d);J(d);}return b;}; +function BET(){let a=this;F.call(a);a.b10=null;a.cmX=null;a.cpF=null;} +let DlS=null,Cno=null,BTM=()=>{BTM=Z(BET);DMn();},Fk1=b=>{let c,d,e,f,g,h,i,j;BTM();c=new CQF;c.cv5=BaB();c.ceV=0;d=new BET;d.b10=B$(b);d.cmX=B$(c);e=new CyX;e.cop=BD(32768);e.cfJ=0;d.cpF=e;e=b;a:{while(true){f=Bgc(e)!=1?0:1;g=P7(d,2);if(g){if(g==1)CvS(d,DlS,Cno);else{if(g!=2){if(g!=3){b=new BP;Bp(b,E(6425));J(b);}b=new Sg;Bp(b,E(6426));J(b);}h=(Emz(d)).data;CvS(d,h[0],h[1]);}}else{while(true){b=d.b10;g=b.b3r;if(g<0)break a;if(g>7)break a;if(!((8-g|0)%8|0))break;Bgc(b);}g=P7(d,16);if((g^65535)!=P7(d,16)){c= +new Sg;Bp(c,E(6427));J(c);}i=0;while(i{let b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,$$je;b=P7(a,5)+257|0;c=P7(a,5)+1|0;d=P7(a,4)+4|0;e=Ca(19);f=e.data;f[16]=P7(a,3);f[17]=P7(a,3);f[18]=P7(a,3);f[0]=P7(a,3);g=0;d=d-4|0;while(g=g){k=A7$(f,b);b:{try{l=A29(k);break b;}catch($$e){$$je=P($$e);if($$je instanceof Bt){i=$$je;}else{throw $$e;}}h=new Sg;Bp(h,i.bW());J(h);}c=C5(b,g);if(c<=0){if(b>=0&&c<=0){m=Ca(g-b|0);f=m.data;g=DO(g,g);c=b;while(c0)p=p+1|0;b=b+1|0;}if(o==1&&!p){m=A7$(m,32);m.data[31]=1;}c:{try{n +=A29(m);break c;}catch($$e){$$je=P($$e);if($$je instanceof Bt){i=$$je;}else{throw $$e;}}h=new Sg;Bp(h,i.bW());J(h);}}return BB(BJE,[l,n]);}h=new TB;X(h);J(h);}h=new Bt;l=new S;T(l);BE(l,b);BE(H(l,E(2117)),g);Bp(h,Q(l));J(h);}q=BPa(h,a.b10);if(0<=q&&q<=15){e[j]=q;j=j+1|0;}else{r=0;if(q==16){if(!j){h=new Sg;Bp(h,E(6428));J(h);}s=P7(a,2)+3|0;r=e[j-1|0];}else if(q==17)s=P7(a,3)+3|0;else{if(q!=18){h=new BP;Bp(h,E(6429));J(h);}s=P7(a,7)+11|0;}t=j+s|0;if(t>g)break;AOk(f,j,t,r);j=t;}}h=new Sg;Bp(h,E(6430));J(h);},CvS +=(a,b,c)=>{let d,e,f,g,h,i,j;B$(b);a:{b:{c:{d:{e:{f:{while(true){d=BPa(b,a.b10);e=C5(d,256);if(!e)break;if(e<0){BP0(a.cmX,d);BUE(a.cpF,d);}else{if(d<257)break a;if(d>287)break a;if(d<=264)e=d-254|0;else if(d<=284){e=(d-261|0)/4|0;e=(((((d-265|0)%4|0)+4|0)<258)break c;if(c===null){b=new Sg;Bp(b,E(6432));J(b);}f=BPa(c,a.b10);if(f<0)break b;if(f>31)break b;if(f<=3)g=f+1|0;else{if(f>29){b=new Sg;c +=new S;T(c);BE(H(c,E(6433)),f);Bp(b,Q(c));J(b);}d=(f/2|0)-1|0;g=((((f%2|0)+2|0)<32768)break d;h=a.cpF;i=a.cmX;B$(i);if(e<0)break e;if(f<0)break e;f=h.cop.data.length;if(g>f)break e;d=((h.cfJ-g|0)+f|0)%f|0;if(d<0)break f;if(d>=f)break f;f=0;while(f{let c,d,e;if(b>=0&&b<=31){c=0;d=0;while(d{let b,c;b=Ca(288);AOk(b,0,144,8);AOk(b,144,256,9);AOk(b,256,280,7);AOk(b,280,288,8);DlS=A29(b);c=Ca(32);Wm(c,5);Cno=A29(c);}; +function CV3(){let a=this;F.call(a);a.ceB=null;a.clA=null;a.cHP=0.0;a.deI=0;a.c3q=null;} +let EWM=(a,b,c,d)=>{a.deI=0;if(b===c){b=new Bt;X(b);J(b);}a.ceB=b;a.clA=c;a.cHP=d;a.c3q=BWG();},BYf=(a,b,c)=>{let d=new CV3();EWM(d,a,b,c);return d;},DYe=a=>{let b,c,d,e;b=BY(a.ceB);c=BY(a.clA);d=a.cHP;e=new S;T(e);D6(H(H(H(H(H(e,E(6438)),b),E(6439)),c),E(6440)),d);return Q(e);}; +function ChC(){let a=this;F.call(a);a.cBH=null;a.cSZ=null;a.daN=null;} +let ABF=a=>{return Bq(a.cBH);},ABA=a=>{let b,c,d;b=Bm(a.cBH);c=Bm(a.cSZ);d=new Com;d.bZv=b;d.bXF=c;return d;}; +function AV3(){let a=this;AD_.call(a);a.cVK=null;a.c1t=null;a.c3s=0;a.cvu=null;} +let CAl=(a,b,c)=>{BQ3(a,b,c,null,0);},Fxt=(a,b)=>{let c=new AV3();CAl(c,a,b);return c;},C02=(a,b,c,d)=>{BQ3(a,b,c,d,0);},D7i=(a,b,c)=>{let d=new AV3();C02(d,a,b,c);return d;},BQ3=(a,b,c,d,e)=>{Bs3(a,b);a.cvu=Nq(Bo(Kc));a.c3s=e;a.cVK=c;a.c1t=d;},FyC=(a,b,c,d)=>{let e=new AV3();BQ3(e,a,b,c,d);return e;},D5p=a=>{let b;b=a.c1t;if(b===null)return COA(a);return b;},Fdi=(a,b,c,d)=>{let e,f;if(b.cKc){e=a.cVK;if(e!==null)return e;}if(a.c3s){f=A4J(a,b,c,1);if(f!==null)return f;}e=M7(a.cvu,b);if(e===null)return A4J(a, +b,c,d);return e;}; +function C61(){let a=this;AD_.call(a);a.cMP=null;a.c0F=null;} +let EI2=(a,b,c,d)=>{let e;JN();if(b===Bsa){e=a.cMP;if(e!==null)return e;}if(b===Bvx){e=a.c0F;if(e!==null)return e;}return A4J(a,b,c,d);}; +function CJf(){let a=this;F.call(a);a.b8o=0;a.bY3=0;a.cx4=0;a.csa=0;a.cr6=null;a.c2a=null;} +let Ftj=a=>{a.cr6=E9();},Ci0=()=>{let a=new CJf();Ftj(a);return a;},Dj8=(a,b)=>{let c,d,e,f;c=b.bHp;d=new Ck4;e=a.b8o;f=a.bY3;d.bTq=e;d.bZc=e;d.bY8=f;d.bUA=f;a.c2a=d;Es(a.cr6,c,d);Dcm(a);c=b.bJD;R7();if(c===AFP)a.bY3=a.bY3+1|0;else{a.b8o=a.b8o+1|0;a.bY3=0;}},Dcm=a=>{let b;b=a.b8o;if(b>a.cx4)a.cx4=b;b=a.bY3;if(b>a.csa)a.csa=b;}; +function BuU(){let a=this;JC.call(a);a.coe=0;a.cpf=0;a.b8x=null;a.cVS=null;a.b_J=null;a.ciM=null;a.b73=null;a.cdY=null;} +let DpL=(a,b,c,d,e)=>{let f,g,h,i;a.ciM=Dy();f=b.cr6;a.b_J=f;g=(f.dW()).dX();while(g.dY()){f=g.dZ();h=a.ciM;i=f.d1();f=f.d0();C9(h,i,f);}if(d===null)a.b8x=E6(0.0,0.0);else{h=U9(Tc(10));d=B4(ACU(),d);B3();a.b8x=C_(d,h,CF,e);}a.coe=b.cx4+1|0;a.cpf=b.csa+1|0;a.cVS=c;b=(a.b_J.ve()).dX();while(b.dY()){g=b.dZ();a.coe=DT(a.coe,g.bZc);a.cpf=DT(a.cpf,g.bUA);}},ERQ=(a,b,c,d)=>{let e=new BuU();DpL(e,a,b,c,d);return e;},BUM=(a,b,c,d)=>{let e,f,g;CSv(a,b);e=new LU;f=a.cdY.data;g=f[f.length-1|0];f=a.b73.data;MO(e,g,f[f.length +-1|0]+(a.b8x.cF(b)).bGF);return e;},CCd=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;b=b.h2(QW(a));CSv(a,b.hE());e=(a.b8x.cF(b.hE())).bGF;f=new CCC;g=a.b73;h=a.cdY;d=a.cVS;i=a.b8x;f.b37=G$();f.b8w=G$();f.ctD=i;f.cvF=g;f.cuP=h;f.cA9=d;ZE();if(!(d!==AJS&&d!==AJK&&d!==AOA)){h=h.data;j=g.data.length;k=h.length;l=0;k=k-1|0;m=j-1|0;while(lo.bUA)break a;i=f.b37;u=AD4(o.bTq,l);EQ(i,u);i=f.b37;u=AD4(o.bZc+1|0,l);EQ(i,u);l=l+1|0;}}b:{u=f.cA9;if(!(u!==A1Y&&u!==AOA)){k=o.bTq;while(true){if(k>o.bZc)break b;i=f.b8w;u=AD4(k,o.bY8);EQ(i,u);i=f.b8w;u=AD4(k,o.bUA+1|0);EQ(i,u);k=k+1|0;}}}}n.a23(b.h2(Bh(p+1.0,r+1.0)),c,Cl(s,t));}if +(!c){Go();d=K8;i=Hu;E06(f,b,0.0,0.0,AFv(d,i));}},CSv=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p;if(a.b73===null){c=(a.b8x.cF(b)).bGF;d=a.coe+1|0;e=Hr(d);f=e.data;a.b73=e;g=c/2.0;f[0]=g;h=1;while(h0.0)while(true){if(n>=f.length)break a;f[n]=f[n]+o;n=n+1|0;}}}ARQ(i,new DpU);i=Br(j);while(Bq(i)){p=Bm(i);k=DG(a.ciM, +p);o=p.bTq?0.0:g;b:{j=k.Te(b,0.0,0.0);n=p.bTq;d=p.bZc+1|0;o=j.bGF+o+2.0;f=a.b73.data;o=o-(f[d]-f[n]);if(o>0.0)while(true){if(d>=f.length)break b;f[d]=f[d]+o;d=d+1|0;}}}return;}},ENi=a=>{let b;b=(a.b_J.p3()).dX();while(b.dY()){if((b.dZ()).Tf())return 1;}return 0;}; +function CXM(){let a=this;BuU.call(a);a.dcl=15.0;a.dcm=12.0;a.ci8=null;} +let Fq9=(a,b,c,d)=>{let e;e=BUM(a,b,c,d);b=a.ci8;AW0();if(b!==A9A){if(b===AUs)return FO(e,30.0,0.0);return FO(e,30.0,30.0);}return FO(e,0.0,30.0);},EXA=(a,b,c,d)=>{let e,f,g,h,i,j;CCd(a,b,c,d);b=b.h2(QW(a));e=BUM(a,b.hE(),0.0,0.0);d=a.ci8;AW0();if(!(d!==AQP&&d!==AUs)){d=b.h2(BM(e.bGE+4.0));f=e.bGF;d.hP(C2(15.0,f));(d.h2(BW(12.0))).hP(DE(15.0));g=f-12.0;(d.h2(BW(g))).hP(DE(15.0));h=(d.h2(Bh(4.0,4.0))).h2(Cc(QW(a)));i=EE();Ec(i,3.0,0.0);B2(i,6.0,5.0);B2(i,0.0,5.0);B2(i,3.0,0.0);h.hP(i);d=(d.h2(Bh(4.0,g+4.0))).h2(Cc(QW(a)));h +=EE();Ec(h,3.0,5.0);B2(h,6.0,0.0);B2(h,0.0,0.0);B2(h,3.0,5.0);d.hP(h);}d=a.ci8;if(!(d!==AQP&&d!==A9A)){b=b.h2(BW(e.bGF+4.0));g=e.bGE;b.hP(C2(g,15.0));(b.h2(BM(12.0))).hP(Fg(15.0));j=g-12.0;(b.h2(BM(j))).hP(Fg(15.0));d=(b.h2(Bh(4.0,4.0))).h2(Cc(QW(a)));e=EE();Ec(e,0.0,3.0);B2(e,5.0,6.0);B2(e,5.0,0.0);B2(e,0.0,3.0);d.hP(e);b=(b.h2(Bh(j+4.0,4.0))).h2(Cc(QW(a)));d=EE();Ec(d,5.0,3.0);B2(d,0.0,6.0);B2(d,0.0,0.0);B2(d,5.0,3.0);b.hP(d);}},A_d=N(Bx),AQP=null,AUs=null,A9A=null,E_K=null,AW0=()=>{AW0=Z(A_d);EKa();},Esl +=(a,b,c)=>{AW0();Ct(a,b,c);},B1d=(a,b)=>{let c=new A_d();Esl(c,a,b);return c;},EKa=()=>{let b,c,d;AQP=B1d(E(3547),0);AUs=B1d(E(6441),1);b=B1d(E(6442),2);A9A=b;c=K(A_d,3);d=c.data;d[0]=AQP;d[1]=AUs;d[2]=b;E_K=c;}; +function CM2(){let a=this;JC.call(a);a.b5_=null;a.b7G=null;a.b5j=null;a.b3U=null;a.cbj=null;} +let ETq=(a,b,c,d)=>{let e,f,g,h,i,j,k,l;e=b.hE();f=a.b5_.Te(e,0.0,0.0);g=a.b7G.Te(e,0.0,0.0);h=a.b5j.Te(e,0.0,0.0);i=a.b3U.Te(e,0.0,0.0);j=BA(i.bGE,f.bGF);k=BA(d.bGE-h.bGE,f.bGF);l=BA(i.bGE,d.bGF-g.bGF);a.b5_.a23(b,c,d);a.b7G.a23(b.h2(BW(l.bGL)),c,d);a.b3U.a23(b.h2(BW(j.bGL)),c,d);a.b5j.a23(b.h2(Bh(k.bGK,k.bGL)),c,d);a.cbj.a23(b.h2(Bh(j.bGK,j.bGL)),c,d);},Edd=(a,b,c,d)=>{let e,f,g,h,i;e=a.b5_.Te(b,c,d);f=a.b7G.Te(b,c,d);g=a.b5j.Te(b,c,d);h=a.b3U.Te(b,c,d);i=a.cbj.Te(b,c,d);return Cl(ADF(e.bGE,f.bGE,h.bGE+i.bGE ++g.bGE),e.bGF+ADF(h.bGF,i.bGF,g.bGF)+f.bGF);},Eb1=a=>{return !(!a.b5_.Tf()&&!a.b7G.Tf()&&!a.b5j.Tf()&&!a.b3U.Tf()&&!a.cbj.Tf())?1:0;},AZ3=N(Bx),RZ=null,AAm=null,ATh=null,Ebp=null,Na=()=>{Na=Z(AZ3);Ft8();},ETb=(a,b,c)=>{Na();Ct(a,b,c);},BHr=(a,b)=>{let c=new AZ3();ETb(c,a,b);return c;},Ft8=()=>{let b,c,d;RZ=BHr(E(6443),0);AAm=BHr(E(6444),1);b=BHr(E(6445),2);ATh=b;c=K(AZ3,3);d=c.data;d[0]=RZ;d[1]=AAm;d[2]=b;Ebp=c;},EiG=N(); +function CMj(){let a=this;F.call(a);a.b7y=null;a.c3c=null;} +let ET2=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;c=EL(Bco(a.c3c));if(c!==0.0){d=Bk();e=C43(0,b,a.b7y.bkX());f=d;U(f,e);g=U1();h=a.b7y.a0J();if(a.b7y.bkX()!==null){i=h.dV();h=LV(h,1,i);}j=h.dX();while(j.dY()){k=Br((j.dZ()).bkY());while(Bq(k)){l=Bm(k);BJR(g,l);}}m=g;if(RL(m))j=null;else{n=m.bLY.data;j=n[CXH(m.bUs,n.length)];}j=j.bNp;P_();if(j!==Ra)BJR(m,BUx());a:while(true){if(A87(m)<=0){g=Br(d);while(Bq(g)){DPB(Bm(g));}while(f.bGJ>1&&EsV(Be(f,Hn(f)-1|0))){EJ(f,Hn(f)-1|0);}return El0(d);}b:{k=Fp(m);g=k.bNp;h +=Ra;if(g===h){o=e.bZ0;if(o===(-1.0)){b=new BP;X(b);J(b);}if(o>c){EY(m,k);p=e.bL4.bGJ;if(!p){b=new BP;X(b);J(b);}i=p-1|0;c:{d:{while(true){if(i<0)break d;if((Be(e.bL4,i)).bNp===Ra)break;i=i+(-1)|0;}break c;}i=(-1);}if(i==(-1))h=Gi();else{e.bZ0=(-1.0);h=new Tp;j=e.bL4;p=j.bGJ;Zs(h,LV(j,i,p));while(true){j=e.bL4;q=j.bGJ;if(q<=i)break;EJ(j,q-1|0);}}p=h.dV()-1|0;while(p>=0){EY(m,h.cf(p));p=p+(-1)|0;}e=C43(1,b,D4O(a.b7y.bkX()));U(f,e);break b;}}if(e.bZ0===(-1.0))break a;if(!(g===h&&!e.bL4.bGJ)&&!(g===h&&e.bL4.bGJ +>0&&(BUF(e)).bNp===Ra)&&!(e.cxO&&!e.bL4.bGJ&&k.bNp===ZU)){U(e.bL4,k);r=e.bZ0;j=e.cT4;e.bZ0=r+(k.bNp===Ra?0.0:(De(k.cCw,j)).bGE);}}}b=new BP;X(b);J(b);}n=K(TM,1);n.data[0]=a.b7y;return Bv(n);},D4O=b=>{let c;if(b!==null){c=new CKd;c.cvW=b;return c;}return null;}; +function Dif(){let a=this;F.call(a);a.cky=0.0;a.bMN=null;a.bWp=null;} +let C4L=a=>{let b,c,d,e;b=AJ5(Z$(a.bMN));c=b;while(true){if(!Gl(c))return null;d=ALw(b);if(!(d instanceof Qf))continue;e=d;if(!CQ(Dk(e.bNd)))break;}return e;},Ft_=a=>{let b,c,d,e,f,g,h,i;b=C4L(a);if(b!==null){c=FW(a.bMN,b);d=B6I(b,a.bWp);e=G3(G8(Cxh(a.bMN)));f=e;while(Gl(f)){b=GZ(e);g=b.bHt;if(g instanceof Qf)continue;h=b.bHe;i=c.bR6-(BMc(h)-d)/2.0-h.bR6;if(i!==0.0){b=a.bMN;h=AY_(h,i);Es(b,g,h);}}return;}},E9N=a=>{let b,c,d,e,f,g,h,i;b=C4L(a);if(b!==null){c=B6I(b,a.bWp);d=G3(G8(Cxh(a.bMN)));e=d;while(Gl(e)) +{f=GZ(d);g=f.bHt;if(!(g instanceof Qf))continue;h=c-B6I(g,a.bWp);if(h!==0.0){i=a.bMN;f=AY_(f.bHe,h);Es(i,g,f);}}e=a.bMN;if(e.bHv==1){h=(10.0-c)/2.0;if(h>0.0){e=e;Es(e,b,AY_(FW(e,b),h));}}return;}},Dbn=a=>{let b,c,d;b=a.bMN;if(b.bHv){c=1.7976931348623157E308;b=(Gc(b)).dX();while(b.dY()){d=(b.dZ()).bR6;if(c>d)c=d;}return c;}b=new BP;X(b);J(b);},Ftr=a=>{let b,c,d,e,f,g,h;b=a.bMN;if(b.bHv){c=null;d=(-1.7976931348623157E308);b=G3(G8(b));e=b;while(Gl(e)){f=GZ(b);g=f.bHe;if(d{let b;b=a.czl;ARc();return b!==BtZ?0:1;},CoO=a=>{let b;b=a.czl;ARc();return b!==BBq?0:1;},C$E=a=>{let b;b=a.c5t;B3();return b!==Ft?0:1;},A26=N(Bx),Bhu=null,BtZ=null,BBq=null,DRo=null,ARc=()=>{ARc=Z(A26);EX$();},EMg=(a,b,c)=>{ARc();Ct(a,b,c);},BQK=(a,b)=>{let c=new A26();EMg(c,a,b);return c;},EX$=()=>{let b,c,d;Bhu=BQK(E(4989),0);BtZ=BQK(E(6446),1);b=BQK(E(6447),2);BBq=b;c=K(A26,3);d=c.data;d[0]=Bhu;d[1]=BtZ;d[2]=b;DRo=c;}; +function CjD(){let a=this;F.call(a);a.b0t=null;a.c7q=null;a.bZy=null;} +let DGs=a=>{return FP(a.b0t);},FmV=(a,b)=>{let c;c=b;return Bj(a.b0t,c.b0t);},Evi=a=>{return a.b0t;},C7V=(a,b)=>{BM8(a.bZy,b);},CkO=(a,b)=>{BIW(a.bZy,b);},BVS=N(),BZ3=null,ALe=null,BKD=()=>{BKD=Z(BVS);D8L();},CSd=()=>{let b,c,d,e,f,g,h,i,j,$$je;BKD();b=ALe;Jl(b);a:{b:{try{if(!Hn(b)){c=0;while(c<31){d=ALe;e=K(F,1);e.data[0]=CL(c);f=Jv(E(6448),e);g=CR();H(H(H(g,E(3714)),f),E(6449));f=CH(g);U(d,f);c=c+1|0;}CbY(ALe);}c=Hn(ALe);d=ALe;h=c-1|0;d=Be(d,h);EJ(ALe,h);G2(b);break a;}catch($$e){$$je=P($$e);d=$$je;break b;}}G2(b);J(d);}f +=CD_(BZ3,d);if(f===null){c:{d:{try{b=BqS(Bo(BVS),d);if(b===null){f=null;break c;}f=BXW(b);BLu(b);break c;}catch($$e){$$je=P($$e);if($$je instanceof Dd){b=$$je;break d;}else{throw $$e;}}}GP(b);f=null;}if(f!==null)CQc(BZ3,d,f);}if(f===null)b=null;else{b=Bt9(f.g_(),f.ha(),3);c=0;while(c{BZ3=AOG();ALe=Bk();}; +function CIM(){let a=this;F.call(a);a.bVa=null;a.bQA=null;a.cWD=null;a.cPT=null;a.c49=null;} +let Cue=(a,b,c)=>{let d,e,f;d=a.bVa.bGM;e=a.c49;f=K(Kc,1);f.data[0]=b;return B4j(e,d,c,f);}; +function CTO(){F.call(this);this.cPS=null;} +let Ewj=a=>{return 0;},DQh=a=>{return a.cPS;},DCm=(a,b)=>{return Cl(10.0,10.0);},Ffn=(a,b,c)=>{return null;},E$K=(a,b)=>{return;},Fw_=a=>{E0();return Ir;},Eo0=(a,b)=>{Qa();return RW;},FrC=a=>{return new AZQ;},EzO=N(),BIm=(b,c,d,e,f,g)=>{return DIM(b,c,d,e,f,g);},DIM=(b,c,d,e,f,g)=>{let h,i;if(!Qq(b)){if(!AJn(Ga(b))){if(Ga(b)!==Ok){if(Ga(b)!==AEE){if(Ga(b)!==YI&&Ga(b)!==AEq){if(Ga(b)!==VL){if(Ga(b)!==AGi&&Ga(b)!==AIF){if(Ga(b)!==AFJ){if(Ga(b)!==AOF&&Ga(b)!==ASH){if(Ga(b)!==AMG&&Ga(b)!==Yg){if(Ga(b)!==ASb){if +(Ga(b)!==O9){if(Ga(b)!==Wd){if(Ga(b)!==Y8){if(Ga(b)!==PI){if(Ga(b)!==ACO){if(Ga(b)!==ANr){if(Ga(b)!==AIC&&Ga(b)!==A6s){if(Ga(b)!==BxP){if(Ga(b)!==ACF){if(!Hh(b)){if(Ga(b)!==APu){if(Ga(b)!==A9k){if(Ga(b)!==AE4){if(Ga(b)!==AWe){if(Ga(b)!==AE$){if(Ga(b)!==A30){if(Ga(b)!==BiB){if(Ga(b)!==BmW){if(Ga(b)!==Bec){if(Ga(b)!==ByO){if(Ga(b)===Yo&&Tm(b)!==null&&DGO(Tm(b)))return DLv(b);if(Ga(b)===Yo&&Tm(b)!==null&&EXq(Tm(b)))return Fqh(b);if(Ga(b)!==A78){if(Ga(b)===Yo&&Tm(b)!==null&&Fql(Tm(b)))return BfR(b,88);if(Ga(b)=== +Yo&&Tm(b)!==null&&D2J(Tm(b)))return BfR(b,67);if(Ga(b)===Yo&&Tm(b)!==null&&EhH(Tm(b)))return BfR(b,66);if(Ga(b)!==Yo)J(ZF(HT(Ga(b))));return BfR(b,80);}return EWX(b);}return DXi(b);}return Frc(b);}return ELU(b);}return E0r(b);}return DLa(b,e);}return D74(b);}return D9Q(b);}return Foc(b);}return Ed7(b);}if(Mt(b)!==null)return A3f(b,d,g,e);return Fv5(b,d);}return DRm(b);}return EMT(b);}return Ent(b);}return EV3(b);}return Epb(b,d);}return Fnb(b,d);}return Fsq(b,d);}return A3f(b,d,g,e);}return A3f(b,d,g,e);}return A3f(b, +d,g,e);}return A3f(b,d,g,e);}return ECZ(b);}return EVd(b);}return DIo(b);}return EKC(b);}d=T7(b);Jb();if(d===LQ){if(c&&!((DM5(b)).W0()).dV())return DOT(b);if(Tm(b)!==null){e=Tm(b);F_();if(Bj(E(6450),I7(e,Hl)))return EAs(b);}return BhX(b);}return Ewo(b,V1(e,Ja(b)),e);}return EYf(b,V1(e,Ja(b)),e);}return DOG(b,e);}return Dtq(b);}h=Cvv(b,d);i=EjZ(b);if(i!==null)return ENv(h,20.0,i,e);return h;}J(AFM());}; +function Dhi(){let a=this;F.call(a);a.bY_=null;a.c$N=7.0;a.cOO=null;} +let EHJ=a=>{return a.bY_.g4();},ERG=a=>{return a.cOO;},B_g=(a,b)=>{return FO(a.bY_.cF(b),14.0,14.0);},EVy=(a,b,c)=>{return a.bY_.yz(b,c);},ErI=(a,b)=>{let c;a.bY_.cC(b.h2(Bh(7.0,7.0)));c=B_g(a,b.hE());(b.h2(Bh(c.bGE-7.0,c.bGF-7.0))).hP(NX(7.0,7.0));},E3N=a=>{let b;b=new CSh;b.cNG=a;return b;},Fc6=a=>{return a.bY_.a8$();},ER9=(a,b)=>{return a.bY_.blh(b);},BN8=N(0),BkM=N(0); +function A_L(){let a=this;F.call(a);a.bG7=null;a.bVc=null;a.bSc=null;} +let Di4=(a,b,c,d)=>{a.bG7=B$(b);a.bVc=B$(c);a.bSc=B$(d);},BWj=a=>{return a.bVc.bPb;}; +function BJf(){let a=this;A_L.call(a);a.b6g=null;a.b4e=null;a.b13=null;a.b3v=null;a.bR5=null;a.bRk=null;a.bWS=null;a.bVW=null;a.bRU=null;a.cw6=0;a.b8E=0;a.cww=0;a.cg4=0;a.coN=0;a.bPv=null;a.bHJ=null;a.ccv=null;a.bYm=null;a.bW4=null;a.b4z=null;a.bVs=null;a.bTt=null;a.bPz=0.0;a.bPy=0.0;a.czT=0;a.cFi=null;a.chS=null;a.bT8=null;a.cMb=0;a.cTp=null;a.cGx=null;a.ceo=0.0;a.ca8=null;a.ca9=null;a.cW9=null;} +let B2l=null,AQ7=()=>{AQ7=Z(BJf);EnL();},Fo9=a=>{let b,c,d;b=JH(a);c=a.b8E;d=new S;T(d);BE(H(H(d,b),E(6451)),c);return Q(d);},BDd=a=>{return CE4(a.bG7);},CAT=a=>{let b;b=B3n(a);M3();if(b===AHT)return 3.141592653589793+Ddn(a);return Ddn(a);},Ddn=a=>{let b,c;b=a.bG7;if(!(b.bHn!==b.bHo?0:1)){b=ID(a.bHJ);c=Jz(a.bHJ);return Nz(c.bGK-b.bGK,c.bGL-b.bGL);}return AL5(a.bHJ);},Ccl=(a,b,c)=>{let d;b=(A9_(b)).dX();while(true){if(!b.dY()){b=new Bt;X(b);J(b);}d=b.dZ();if(B7V(Dkv(d),c))break;}return d;},E84=(a,b,c,d,e,f,g, +h,i)=>{let j,k,l,m,n,o,p,q,r;AQ7();Di4(a,b,c,g);a.cw6=0;j=b.bLP.b1y;if(j!==null)a.ca8=CTl(a,j,c,b.bHn,b,d);j=b.bLP.b1z;if(j!==null)a.ca9=CTl(a,j,c,b.bHo,b,d);a.cMb=0;a.b13=CMv(b,b.bHn,b.cqe,g);a.b3v=CMv(b,b.bHo,b.cqf,g);k=null;if(ClL(a.b13,E(5202)))k=Ccl(a,g,b.bHn);j=null;if(ClL(a.b3v,E(5202)))j=Ccl(a,g,b.bHo);i=b.bQT;if(i!==null){c=AHL(i,c);l=B$(b.bQT);CM();i=DQ(l,YD);if(i!==null)e=ARo(e,i);}a.bT8=c.a24();YZ();a.cTp=c.beU(A8$,null);JN();i=c.qS(Bzh,null,0);a.cGx=i;if(i===null)a.cGx=a.bT8;a.chS=h;a.bPv=d;a.b6g +=k;a.b4e=j;a.b8E=ABQ(g.bUr);a.cww=ABQ(g.bUr);a.cg4=ABQ(g.bUr);a.coN=ABQ(g.bUr);if(FQ(XF(b))){GO();m=HD;d=B3n(a);M3();if(d!==Xr)m=Crx(m,a,e);}else{d=BWj(a);F8();if(d!==RA){B3();l=c.AZ(CO);}else{MY();l=c.qV(AV0,null,0,null);}n=CRV(XF(b));o=GM(B0(c.cp(),CG3(a,b.bPW)));if(!(Bco(o)>0.0))o=c.rg();if(n)p=Fwd(XF(b),a,e,l,c);else{i=XF(b);Ed();p=Py(i,e,l,c,o,J0,null,null);}m=E7k(a,p,b,c);d=B3n(a);M3();if(d!==Xr&&!n)m=Crx(m,a,e);}q=b.b6v;if(q===null)a.bRU=m;else{r=CKv(q.ced,q.cev,c,b.bU4);e=q.cH6;AGz();if(!(e!==A2M&&e +!==A7h))a.cw6=1;e=q.clj;K$();if(e===Y0){Fa();a.bRU=Vi(r,m,Hg);}else if(e===T_){Fa();a.bRU=Vi(m,r,Hg);}else if(e!==Ku){B3();a.bRU=FT(m,r,CO);}else{B3();a.bRU=FT(r,m,CO);}}if(ATc(b)===null)a.bR5=null;else{d=B4(c.gs(),ATc(b));B3();a.bR5=C_(d,f,CO,c);}if(ATs(b)===null)a.bRk=null;else{d=B4(c.gs(),ATs(b));B3();a.bRk=C_(d,f,CO,c);}if(Bh3(b)===null)a.bWS=null;else a.bWS=BHI(Bh3(b),c.gs(),f,c);if(BuL(b)===null)a.bVW=null;else a.bVW=BHI(BuL(b),c.gs(),f,c);c=(L1(b)).bO5;UM();if(c!==AWM)a.ceo=7.0;else a.ceo=0.0;},DKY=(a, +b,c,d,e,f,g,h)=>{let i=new BJf();E84(i,a,b,c,d,e,f,g,h);return i;},E7k=(a,b,c,d)=>{let e,f,g;e=Dgj(c);if(e!==null){f=AK6(Uu(),d,e.b6Y);c=KN(ASm(e,d.H_(),f,null,0),0.0,1.0,2.0,0.0);Fa();b=Vi(c,b,Hg);}g=!BRm(a.b13,a.b3v)?1.0:6.0;return Js(b,g,g);},ADO=a=>{let b,c;a:{b:{b=a.bRU;if(b!==null){GO();if(b!==HD)break b;}c=0;break a;}c=1;}return c;},B3n=a=>{return A5c(a.bG7);},BkQ=(a,b,c,d,e)=>{let f,g,h,i,j,k,l;L(c,Ckd(a.b13));L(c,E(3037));L(c,Ckd(a.b3v));L(c,E(842));f=a.bG7;d=L1(f);if(!CBx(f,f.bHn))g=d;else{g=new H6;h +=d.bJG;FU();WF(g,h,Hf,d.bO5,d.bN3);}if(!CBx(f,f.bHo))i=g;else{i=new H6;FU();WF(i,Hf,g.bJi,g.bO5,g.bN3);}f=FcY(i,BDd(a));if(f.bGI.length>0&&!Dr(f,E(349))){d=new S;T(d);Bb(H(d,f),44);f=Q(d);}L(c,f);j=M2(a.bG7);if(!a.cMb){k=j-1|0;d=new S;T(d);BE(H(d,E(6452)),k);L(c,Q(d));L(c,E(349));}else{d=a.chS;IY();if(!(!AB3(d,A82)&&!AG$(a.bG7)&&j==1)){k=j-1|0;d=new S;T(d);BE(H(d,E(6452)),k);L(c,Q(d));L(c,E(349));}}h=R8(a.b8E);d=new S;T(d);Bb(H(H(d,E(6453)),h),34);L(c,Q(d));if(!(!ADO(a)&&a.bG7.b3$===null)){L(c,E(349));L(c,E(6454));h +=!ADO(a)?B2l:a.bRU.cF(a.bPv);l=2.0*a.ceo;d=FO(h,l,l);if(a.cw6)d=Cl(d.bGE/2.0,d.bGF);A9x(c,d,a.cww,b);L(c,E(372));}if(a.bR5!==null){L(c,E(349));L(c,E(6455));A9x(c,a.bR5.cF(a.bPv),a.cg4,b);L(c,E(372));}else if(a.bWS!==null){L(c,E(349));L(c,E(6455));A9x(c,a.bWS.cF(a.bPv),a.cg4,b);L(c,E(372));}if(a.bRk!==null){L(c,E(349));L(c,E(6456));A9x(c,a.bRk.cF(a.bPv),a.coN,b);L(c,E(372));}else if(a.bVW!==null){L(c,E(349));L(c,E(6456));A9x(c,a.bVW.cF(a.bPv),a.coN,b);L(c,E(372));}if(AG$(a.bG7)){L(c,E(349));L(c,E(6457));}b=a.bG7;if +(!(b.caM&&!EIj(b)))L(c,E(6458));e=a.bG7.b2B;if(e!==null){b=new S;T(b);H(H(b,E(6459)),e);L(c,Q(b));}L(c,E(6460));Fu(c);},A9x=(b,c,d,e)=>{AQ7();A5F(b,c.bGE|0,c.bGF|0,d);},A5F=(b,c,d,e)=>{let f,g;AQ7();L(b,E(6461));f=R8(e);g=new S;T(g);H(H(H(g,E(6462)),f),E(6463));L(b,Q(g));f=new S;T(f);g=H(f,E(6464));BE(g,c);g=H(g,E(6465));BE(g,d);H(g,E(6466));L(b,Q(f));L(b,E(6467));L(b,E(372));L(b,E(6468));L(b,E(372));L(b,E(6469));L(b,E(6470));L(b,E(6471));},BhL=a=>{return Cfw(a.b13);},Cff=a=>{return Cfw(a.b3v);},DgO=(a,b,c, +d,e,f)=>{return (A$G(c,a.bT8)).blB(b,d,null);},C9B=(a,b,c,d,e,f,g,h)=>{let i,j,k,l;if(c!==null){i=null;if(f!==null)i=Dn1(AHo(f),b);if(h===null)j=Bh(0.0,0.0);else{a:{b:{c:{d:{Bxu();switch(BP_.data[h.b1I.bGO]){case 1:j=BM(h.bMA.bGE);break a;case 2:break c;case 3:break d;case 4:break b;default:}b=new BP;X(b);J(b);}j=BW(h.bMA.bGF);break a;}j=BM( -h.bMA.bGE);break a;}j=BW( -h.bMA.bGF);}b=Cs(j,b);}k=c.blB(b,d,i);l=k.blE();if(!g)A4A(a.bHJ,DJ(j,Bc5(Bh(l,0.0),d-3.141592653589793)));else A2W(a.bHJ,DJ(j,Bc5(Bh(l,0.0), +d-3.141592653589793)));return k;}return null;},Be1=(a,b,c,d,e,f,g)=>{let h,i,j,k,l,m,n,o,p,q,r;h=A$G(c,a.bT8);if(f===null){if(h===null){f=Hf;if(c===f){i=Bqo(A4D(Cli(d)));j=0;a:{b:{while(true){c=i.bMy;if(j>=(c.bGJ-1|0))break;f=Be(c,j);c=i.bMy;k=j+1|0;c=Be(c,k);if(Jy(BA((f.bGK+c.bGK)/2.0,(f.bGL+c.bGL)/2.0),b)<1.0)break b;j=k;}l=null;break a;}c=i.bMy;m=c.bGJ;l=Be(c,((j+m|0)-1|0)%m|0);}if(l!==null){c=new Cbq;c.c8y=a;c.cSj=l;c.cDF=b;return c;}}else if(c!==f){i=Bqo(A4D(d));b=new Dnz;b.csG=i;return b;}return null;}n +=A4D(d);if(n.dV()){o=n.cf(0);p=n.cf(1);q=n.cf(2);r=null;if(g!==null)r=Dn1(AHo(g),p);return h.blJ(o,p,q,r);}return null;}if(h===null){if(c===AGv){c=a.bT8;d=new CXX;e=e-1.5707963267948966;d.bU7=Fj();d.cY1=c;d.c1E=BA(b.bGK,b.bGL);e=Qr(d,e);BQ(d.bU7,0.0,0.0);BQ(d.bU7,(-19.0),(-7.0));BQ(d.bU7,(-19.0),7.0);BQ(d.bU7,0.0,0.0);ADm(d.bU7,e+1.5707963267948966);d.bU7=Xz(d.bU7,b.bGK,b.bGL);return d;}return null;}return h.blB(b,e,null);},D9R=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y;if(!AG$(a.bG7)){c=B7J(b, +a.b8E);if(c!=(-1)){d=ATz(b,E(4897),c);if(d!=(-1)){c=d+3|0;d=ATz(b,E(1268),c);e=BIO(b,c,d);if(Cpm(e)){f=Eod(e);a.bHJ=f;g=ID(f);h=Jz(a.bHJ);i=BoB(a);j=Boc(a);if(i!==null&&j!==null){k=AO$(AHo(i));l=AO$(AHo(j));m=Jy(g,k)+Jy(h,l);if(Jy(g,l)+Jy(h,k)u&&w>v){f=C2k(o,a.b8E);a.bTt=Be1(a,Jz(a.bHJ),A2X(p),f,AWU(a.bHJ),a.b4e,j);a.bVs=Be1(a,ID(a.bHJ),A7i(p),f,AL5(a.bHJ)+3.141592653589793,a.b6g,i);}}}}if(!(!ADO(a)&&BkV(a.bG7)===null)){x=BWU(a,b,a.cww);if(x!==null)a.b4z=!ADO(a)?D1u(B2l,a.bPv,x):BC_(a.bRU,a.bPv,x);}if +(!(a.bR5===null&&a.bWS===null)){x=BWU(a,b,a.cg4);if(x!==null){y=a.bR5;if(y===null)y=a.bWS;a.bYm=BC_(y,a.bPv,x);}}if(!(a.bRk===null&&a.bVW===null)){x=BWU(a,b,a.coN);if(x!==null){y=a.bRk;if(y===null)y=a.bVW;a.bW4=BC_(y,a.bPv,x);}}if(!DW$(a))BFk(a,0);return;}return;}J(AFM());}return;}},Edw=(a,b)=>{return !(A$G(b.bJi,a.bT8)!==null&&A$G(b.bJG,a.bT8)!==null)?0:1;},Ejs=(a,b)=>{let c;c=0;b=b;while(b.bTb==(-2)?0:1){A4D(b);c=c+1|0;}return c;},Boc=a=>{return L$(a.bSc,a.bG7.bHo);},BoB=a=>{return L$(a.bSc,a.bG7.bHn);},C8I +=a=>{return V1(a.bSc,a.bG7.bHn);},CMM=a=>{return V1(a.bSc,a.bG7.bHo);},DW$=a=>{return (BP8(a.bHJ)).dV()>1?0:1;},BWU=(a,b,c)=>{let d;d=B7J(b,c);if(d!=(-1))return AGB(VA(Sx(b,d),E(6323)));return null;},CG3=(a,b)=>{B8();return Du(CG(AFI,N$(BWj(a))),b);},Eet=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,bd,be,bf,bg,bh,$$je;if(!a.czT){if(!AG$(a.bG7)){if(a.bHJ!==null){b.hP(E9Y(a.bG7));c=KV(EVf(a.bG7));Hb();Db(c,KD,DOj(a.bG7));Db(c,IO,E(1190));d=KF;e=En(AF4(a.bG7));f=En(AJg(a.bG7));g=CR();H(Et(H(H(g, +E(6472)),e),95),f);Db(c,d,CH(g));Db(c,A1r,En(AF4(a.bG7)));Db(c,A1s,En(AJg(a.bG7)));Db(c,AUv,Cvd(AF4(a.bG7)));Db(c,AUb,Cvd(AJg(a.bG7)));d=Db9(L1(a.bG7));if(d!==null)Db(c,AYM,d);b.hH(c);h=0.0;e=EA2(a.bG7);if(e!==null)b.hF(e);if(DKK(a.bG7)){f=V1(a.bSc,AF4(a.bG7));if(f!==null)h=h+Bsp(BwV(f))-(LD(ID(a.bHJ))-AEx(BwV(f)));}i=h+a.bPz;j=0.0+a.bPy;k=B0(FrZ(a),CG3(a,E2b(a)));l=Fi(k);m=LY(k,GK(a.bVc));n=Cpx(m);o=ATO(m);if(AXa(a.bG7)===null){if(AKF(a.bG7)===null)p=n;else{p=AKF(a.bG7);o=p;}}else{c=AXa(a.bG7);CM();p=CWR(c, +A2s,E1);if(p!==null)o=p;else p=n;}c=(b.h2(Cc(E4()))).h2(o);q=L1(a.bG7);r=l!==null&&A6r(Eb_(q))?A9Q(q,l):A9Q(q,a.cTp);if(AXa(a.bG7)!==null&&ACd(AXa(a.bG7))!==null)r=ACd(AXa(a.bG7));a:{f=c.h2(r);s=BuC(a.bHJ);c=a.chS;IY();t=T6(c,BzZ);if(t!==null)b:{try{u=DM(t);if(u>0.0)D8H(s,u);break a;}catch($$e){$$je=P($$e);if($$je instanceof Ex){break b;}else{throw $$e;}}}}v=LR();if(BoB(a)!==null){w=Bcs(BoB(a));c=f.hE();d=R5(ID(s),a.bPz,a.bPy);v=Br7(w,c,d);A2W(s,v);}else if(C8I(a)!==null){v=(Bu$(C8I(a))).bmi(f.hE(),R5(ID(s), +a.bPz,a.bPy));A2W(s,v);}x=LR();if(Boc(a)!==null){g=Bcs(Boc(a));c=f.hE();d=R5(Jz(s),a.bPz,a.bPy);x=Br7(g,c,d);A4A(s,x);}else if(CMM(a)!==null){x=(Bu$(CMM(a))).bmi(f.hE(),R5(Jz(s),a.bPz,a.bPy));A4A(s,x);}c:{Ejk(s,DID(a,a.cW9,Ecj(a.bG7)),DYr(a.bG7));Elo(a,f.h2(Bh(i,j)),o,p,s,ETT(a.bG7),r,v,x);o=(f.h2(GT())).h2(o);if(ADO(a)&&a.b4z!==null){if(CPP(a.bG7)!==null){b=ET6(CPP(a.bG7));AGz();if(b===A2M)break c;}a.bRU.cC(o.h2(Bh(i+LD(TP(a.b4z))+a.ceo,j+LW(TP(a.b4z))+a.ceo)));}}b=a.bYm;if(b!==null&&TP(b)!==null){y=i+LD(TP(a.bYm));z +=j+LW(TP(a.bYm));c=a.bR5;if(c===null){c=a.bWS;if(c!==null)c.cC(o.h2(Bh(y,z)));}else{c.cC(o.h2(Bh(y,z)));b=a.bWS;if(b!==null)Co3(a,o,b,a.bR5,TP(a.bYm),ID(a.bHJ),Jz(a.bHJ),A75(a.bHJ),i,j);}}b=a.bW4;if(b!==null&&TP(b)!==null){y=i+LD(TP(a.bW4));z=j+LW(TP(a.bW4));b=a.bRk;if(b===null){b=a.bVW;if(b!==null)b.cC(o.h2(Bh(y,z)));}else{b.cC(o.h2(Bh(y,z)));c=a.bVW;if(c!==null)Co3(a,o,c,a.bRk,TP(a.bW4),Jz(a.bHJ),ID(a.bHJ),A75(a.bHJ),i,j);}}b=Dmg(q);UM();if(b!==AWM){ba=DzQ(a.bHJ);bb= -DGx(ba)*180.0/3.141592653589793;((D1a(Dmg(q), +a.cGx,a.bT8)).bmA(bb-45.0)).cC(o.h2(Bh(i+DFo(ba),j+Eu$(ba))));}if(e!==null)o.hG();if(BkV(a.bG7)!==null){bc=E8c(a,i+LD(TP(a.b4z)),j+LW(TP(a.b4z)));bd=A75(s);be=null;bf=1.7976931348623157E308;d=Br(bc);while(Bq(d)){bg=Bm(d);b=bd.dX();while(b.dY()){bh=Jy(b.dZ(),bg);if(!(be!==null&&!(bh{let k,l,m,n,o,p;k=d.cF(a.bPv);l +=c.cF(a.bPv);d=Bk();m=K(B8l,2).data;m[0]=BoB(a);m[1]=Boc(a);n=m.length;o=0;while(o{let d,e,f,g,h,i;d=Bk();e=BA(b,c);f=d;U(f,e);e=new Jn;g=b+5.0;Kz(e,g,c);U(f,e);e=new Jn;h=b+10.0;Kz(e,h,c);U(f,e);e=new Jn;i=c+5.0;Kz(e,b,i);U(f,e);U(f,BA(h,i));e=new Jn;c=c+10.0;Kz(e,b,c);U(f,e);U(f,BA(g,c));U(f,BA(h,c));return d;},DID=(a,b,c)=>{let d,e,f;d=b;if(!EQ(d,c)){e=1;while(true){b +=new S;T(b);f=H(b,c);Bb(f,45);BE(f,e);b=Q(b);if(EQ(d,b))break;e=e+1|0;}return b;}return c;},Elo=(a,b,c,d,e,f,g,h,i)=>{let j,k,l,m,n,o;b.hP(e);j=L1(a.bG7);if(d.gv()){if(a.bVs instanceof A_9){k=(b.h2(c)).h2(Bjj(g));CPn(a.bVs,k.h2(h));}}else if(a.bVs!==null){k=(b.h2(d)).h2(Bjj(g));l=j.bJi.cgZ?k.h2(Cc(c)):k.h2(Cc(E4()));a.bVs.cC(l.h2(h));}if(d.gv()){if(a.bTt instanceof A_9){l=(b.h2(c)).h2(Bjj(g));CPn(a.bTt,l.h2(i));}}else if(a.bTt!==null){l=(b.h2(d)).h2(Bjj(g));c=j.bJG.cgZ?l.h2(Cc(c)):l.h2(Cc(E4()));a.bTt.cC(c.h2(i));}m +=0;c=f.dX();while(c.dY()){n=c.dZ();d=new FG;m=m+1|0;o=2*m|0;Hs(d,o,o);d=b.h2(d);CM();(d.h2(DQ(n,E1))).hP(e);}},CPg=a=>{return a.bG7.b3A;},BqW=a=>{let b;b=L1(a.bG7);return b.bJG.cuF+b.bJi.cuF|0;},CIU=a=>{return M2(a.bG7)!=1?0:1;},DWP=(a,b)=>{let c,d,e;if(!BRm(a.b13,a.b3v)){if(!CIU(a)){c=new BGx;if(ADO(a)){d=(a.bRU.cF(b)).bGF;AU4(c,d);}e=a.bR5;if(e!==null){d=(e.cF(b)).bGF;AU4(c,d);}e=a.bRk;if(e!==null){d=(e.cF(b)).bGF;AU4(c,d);}return c.cjV+BqW(a);}return 0.0;}return BqW(a);},FmF=(a,b)=>{let c,d;b=b.dX();while +(b.dY()){c=b.dZ();AAz();d=new CA9;d.cGo=c;d.cy7=8.0;d.cBx=8.0;if(!(a.bR5===null&&a.bWS===null)){c=a.bYm;if(c!==null&&BPg(d,c))a.bYm=Dsc(d,a.bYm);}if(!(a.bRk===null&&a.bVW===null)){c=a.bW4;if(c!==null&&BPg(d,c))a.bW4=Dsc(d,a.bW4);}}},AKH=a=>{let b;b=BuC(a.bHJ);COz(b,a.bPz,a.bPy);return b;},BFk=(a,b)=>{a.bG7.b90=b;a.czT=b;},Boi=(a,b)=>{let c;c=a.bG7;return !(c.bHn!==b&&c.bHo!==b)?1:0;},D$K=(a,b)=>{a.cFi=b;},B$q=a=>{let b;b=a.bHJ;if(b!==null){b=ID(b);if(b!==null)return Cs(Bh(a.bPz,a.bPy),b);return null;}return null;},FrZ +=a=>{return a.bG7.bU4;},E2b=a=>{return a.bG7.bPW;},C_A=(a,b)=>{a.bHJ=b;a.ccv=BuC(b);},EnL=()=>{B2l=Cl(10.0,10.0);}; +function Ez(){let a=this;Er.call(a);a.bGV=null;a.bGR=null;} +let HZ=(a,b)=>{a.bGV=B$(b);a.bGR=TF(b);},ClR=a=>{return AT8(a.bGV);},S$=a=>{return a.bGR;},CyS=a=>{return AF5(a.bGR);},N9=a=>{return a.bGV.bGZ;},E70=(a,b)=>{Qa();return RW;},Ve=a=>{return N$(a.bGV.bOU.bM8);}; +function DlK(){let a=this;Ez.call(a);a.b8Z=null;a.cpA=null;a.coG=0.0;a.c8G=6;a.c8H=15;a.daC=5;a.bTv=null;a.b0G=null;a.cGa=null;a.cGb=null;a.cnJ=null;a.cno=null;a.c0J=null;} +let EGU=(a,b)=>{let c,d,e;HZ(a,b);a.c8G=6;a.c8H=15;a.daC=5;c=b.bH1;d=B1(a.bGR);B8();a.bTv=B0(d,Du(CG(By2,Ve(a)),N9(a)));e=b.bG_;CM();if(DQ(e,C6)!==null)a.b8Z=DQ(b.bG_,C6);else{b=a.bTv;B9();a.b8Z=(BJ(b,CK)).cu(a.bGR.bGN);}b=a.bTv;B9();a.cpA=(BJ(b,Cz)).cu(a.bGR.bGN);a.coG=G1(a.bTv);d=D0(a.bTv,a.bGR.bGN);e=IR(a.bTv);if(I6(c)==1&&!(Ne(c,0)).bL())a.b0G=BhM();else a.b0G=A$j(c,a.bGR,e,d,GM(a.bTv),a.bTv);},Dtq=a=>{let b=new DlK();EGU(b,a);return b;},Bzx=(a,b)=>{return (a.b0G.cF(b)).bGF+10.0;},A56=(a,b)=>{return (a.b0G.cF(b)).bGE ++6.0+15.0;},DE5=(a,b)=>{let c;c=Bzx(a,b);return Cl(A56(a,b),c);},ENj=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;c=a.bGV;d=c.bIa;e=KV(c.bMi);Hb();Db(e,IO,E(749));c=KF;f=En(a.bGV);g=new S;T(g);H(H(g,E(6473)),f);Db(e,c,Q(g));Db(e,OZ,En(a.bGV));Db(e,KD,a.bGV.bJn);Db(e,L8,a.bGV.bH4.bJ1);b.hH(e);if(d!==null)b.hF(d);h=AMo(b,a,GT());if(a.cGb!==null){i=b.hE();c=a.c0J;f=a.cGb;j=FW(c,f);k=new FG;c=a.cnJ;Hs(k, -c.bSh, -c.bOB);l=Cs(k,DiW(j));m=Cs(k,CaU(j));BK(a);DiW(j);n=LR();c=Bcs(a.cno);f=CaU(j);o=Br7(c,i,f);p +=A56(a,i);q=Bzx(a,i);r=BA(p/2.0,q/2.0);f=Cs(o,l);g=Cs(n,m);if(Jy(f,r)Jy(Jz(t),r))t=CKu(t);c=Cix(a,u,v,ID(t));f=Cs(n,ID(t));g=Cs(o,Jz(t));s=XJ(a.coG,a.cpA,a.b8Z,a.b0G,1,CYh(a));s.bHX=Bf2(a);AV4(s,c,f,g);ADH(s,CNp(BCG(a,h),a.bGV.bG_));}}if(d!==null)b.hG();b.hI();},Bf2=a=>{let b,c,d;b=a.bGR;AR1();c=ANJ;d=null;return BHB(b,c,d);},BCG=(a,b)=>{let c;c=Fi(a.bTv);return Jw(b,c);},CYh=a=>{return Fi(a.bTv);},Cix=(a,b,c,d)=>{let e,f,g,h;e=BdI(ADU(b,0.0,b,c),d);f=BdI(ADU(0.0,c,b,c),d);g=BdI(ADU(0.0,0.0,0.0,c),d);h=BdI(ADU(0.0, +0.0,b,0.0),d);if(g<=e&&g<=f&&g<=h){DC();return FL;}if(e<=f&&e<=g&&e<=h){DC();return Gy;}if(h<=e&&h<=f&&h<=g){DC();return HG;}if(f<=e&&f<=g&&f<=h){DC();return G_;}return null;},BdI=(b,c)=>{if(!((BoS(b)).bGL!==(Clu(b)).bGL?0:1)){if((BoS(b)).bGK!==(Clu(b)).bGK?0:1)return EL((BoS(b)).bGK-c.bGK);b=new Bt;X(b);J(b);}return EL((BoS(b)).bGL-c.bGL);},DAa=a=>{E0();return Ir;},CuG=(a,b,c,d)=>{a.cGa=b;a.cnJ=c;a.cno=B$(d);},CKF=(a,b,c,d,e)=>{a.cGb=b;a.cnJ=c;a.cno=B$(d);a.c0J=e;},EDS=(a,b,c)=>{return 0.0;},DG6=(a,b,c)=>{return (De(a, +b)).bGE;}; +function CGx(){let a=this;F.call(a);a.das=null;a.ddf=null;} +let FxT=b=>{let c;c=Qg(b,46);if(c!=(-1))return B_(b,0,c);return b;},BQF=N(DR),D_3=a=>{X(a);},DxM=()=>{let a=new BQF();D_3(a);return a;}; +function C9M(){let a=this;F.call(a);a.b5Y=null;a.bZ8=null;a.cqP=null;} +let Ebm=(a,b,c)=>{a.b5Y=b;a.bZ8=c;},DKG=(a,b)=>{let c=new C9M();Ebm(c,a,b);return c;},Dzx=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o;c=(A9_(a.bZ8.bJf)).dX();while(c.dY()){d=c.dZ();if(!d.bHz.bYt)CFi(d,b);}e=B1(Tk(a.b5Y));c=null;B8();c=B0(e,Du(CG(AFI,N$(CV$(a.b5Y))),c));B9();e=(BJ(c,Cz)).cu((Tk(a.b5Y)).bGN);Go();if(e instanceof APg)e=e.b5r;else if(e instanceof CB3)e=e.bmT();f=(AVB(a.bZ8.bJf)).dX();a:while(true){if(!f.dY()){g=G$();c=(AAg(a.bZ8.bJf)).dX();while(c.dY()){e=c.dZ();if(e.ca8!==null)e.ca8.b9E=DJ(I3(ID(e.ccv)), +Bh(e.bPz,e.bPy));if(e.ca9!==null)e.ca9.b9E=DJ(I3(Jz(e.ccv)),Bh(e.bPz,e.bPy));}c=(AVB(a.bZ8.bJf)).dX();while(c.dY()){e=c.dZ();h=e.bXs;if(h instanceof AB2){DC();CD9(e,BuA(h,G_));CD9(e,BuA(e.bXs,HG));}}c=(AAg(a.bZ8.bJf)).dX();while(c.dY()){i=c.dZ();if(!Dfa(i.bG7))h=b;else{AJo();h=b.h2(ATI);}i.cW9=g;Eet(i,h);}return;}j=f.dZ();k=j.bSh;l=j.bOB;if(!Dgp(j))h=b;else{AJo();h=b.h2(ATI);}m=j.bNG;m.cC(h.h2(Bh(k,l)));if(F0(m,BCD)){c=m;j=b.h2(e);c=c;h=c.bTx;m=j.hE();h=De(h,m);m=c.cTq;n=c.b$r;k=k+n;n=l+n;c=c.cWi;g=G$();o=Br(m.cZP);while +(Bq(o)){i=B$q(Cg9(c,Bm(o)));EQ(g,i);}i=AOd(k,n,h.bGE,h.bGF);h=BA(BVP(i),By1(i));g=Ro(g);while(g.dY()){d=g.dZ();o=Df8(i,h,d);if(o===null){if(!Df())continue;if(CSg)continue;else break a;}Doc(m,j,Ega(m,j,o,Nz(h.bGK-d.bGK, -(h.bGL-d.bGL))),d);}o=Br(m.cYW);while(Bq(o)){g=Bm(o);d=Cg9(c,g);if(g.bHn===m.cYn)g=B$q(d);else{g=d.bHJ;if(g===null)g=null;else{g=Jz(g);g=g===null?null:Cs(Bh(d.bPz,d.bPy),g);}}if(g===null)continue;d=Df8(i,h,g);if(d===null)continue;Doc(m,j,d,g);}}}b=new C4;X(b);J(b);},EKb=a=>{let b,c;b=B1(Tk(a.b5Y));B8();c +=B0(b,ZH);B9();return (BJ(c,CK)).cu((Tk(a.b5Y)).bGN);},DAX=(a,b)=>{let c,d,e,f;if(a.cqP===null){b=ACo(a,b,0);a.cqP=b;c=a.bZ8;d=6.0-b.bJ0;e=6.0-b.bLa;b=(AVB(c.bJf)).dX();while(b.dY()){AVy(b.dZ(),d,e);}b=(AAg(c.bJf)).dX();while(b.dY()){f=b.dZ();f.bPz=f.bPz+d;f.bPy=f.bPy+e;}b=(A9_(c.bJf)).dX();while(b.dY()){c=b.dZ();f=c.ccl;if(f!==null)c.ccl=R5(f,d,e);f=c.cdl;if(f!==null)c.cdl=R5(f,d,e);f=c.b4C;if(f!==null)c.b4C=R5(f,d,e);f=c.bJO;if(f!==null)c.bJO=CVF(f,d,e);}}return FO(AQY(a.cqP),15.0,15.0);},FgX=a=>{E0();return Ir;},Efl +=(a,b)=>{Qa();return RW;},D$y=a=>{return 0;}; +function CU$(){let a=this;DR.call(a);a.c_w=null;a.dca=null;a.c9U=null;} +let DEY=(a,b,c,d,e)=>{YV(a,b);a.c_w=c;a.dca=d;a.c9U=e;},E0S=(a,b,c,d)=>{let e=new CU$();DEY(e,a,b,c,d);return e;}; +function Cg8(){let a=this;F.call(a);a.bYa=null;a.bL_=null;a.cfg=null;a.cW6=null;} +let BFg=(a,b)=>{let c,d,e,f,g,h,i;c=Bk();d=(K6(a.bYa)).dX();while(d.dY()){e=d.dZ();if(BLg(a.bL_,e))U(c,e);}e=BVy(c);f=new A8Q;g=a.bYa;h=a.bL_;d=new Dfu;d.cIt=a;BkH();BzJ(f,g,h,c,b,d,BOQ);d=BNp(a.bL_.bMi,a.bYa,e.bUr,BNC(f));g=BEW(e,d);h=new APV;b=a.bYa;BtY(h,e,d,b.bM8,b.bGM);b=new AUi;d=a.bYa;i=d.bU8;d=Cf(d);CV();A4W(b,f,i,d,AC9,a.cW6,h,g);return b;},Dkc=(a,b)=>{let c,d,e;c=Bk();b=b.dX();while(b.dY()){d=b.dZ();e=d.bHD;Cy();if(e!==Xn)U(c,d);}return c;}; +function B77(){let a=this;F.call(a);a.bG9=null;a.bLg=null;a.bWK=null;a.b0F=null;a.ci4=null;a.bPk=null;a.bL0=null;a.bJu=null;a.bWO=null;a.bUQ=null;a.cl4=null;a.b7F=null;a.cO2=null;a.bZK=null;a.czE=null;} +let B9I=(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)=>{a.bG9=b;a.bZK=o;RE();if(o!==Vd){a.bLg=c;a.bWK=d;a.b0F=e;a.ci4=f;a.bL0=h;a.bJu=i;a.bWO=j;a.cl4=l;a.b7F=m;}else{a.bLg=c;a.bWK=d;a.b0F=e;a.ci4=f;a.bL0=h;a.bJu=i;a.bWO=j;a.cl4=l;a.b7F=m;}a.bPk=g;a.bUQ=k;a.cO2=n;a.czE=p;},DuQ=(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)=>{let p=new B77();B9I(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o);return p;},D_9=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,$$je;c=b.hE();d=B0(B1(a.bG9),Cam(a));B9();e=(BJ(d,Cz)).cu(a.bG9.bGN);f=(BJ(d,Lv)).cu(a.bG9.bGN);g +=(b.h2(e)).h2(Dw(1.0));h=CVr(a,c);i=60.0;j=50.0;k=CX_(a);b=a.bUQ;SH();if(b===Yq)i=i+h.bGE+10.0;else if(b===AMF)j=j+h.bGF+10.0;l=j+300.0;c=a.bZK;RE();d=Vd;if(c===d)m=l;else{b=a.bJu;if(b===null)m=l;else{m=b.bIt;if(!(m<=0.0))m=l;else{n=b.bID;m=!(n>=0.0)?l:j+300.0*(1.0-(0.0-m)/(n-m));}}}if(c===d)o=i;else{b=a.bL0;o=b===null?i:!(b.bIt<=0.0)?i:!(b.bID>=0.0)?i:i+ARv(b,0.0,0.0,k);}if(a.bZK!==Vd){Dqt(a,g.h2(DJ(BM(o),BW(j))),300.0,k,a.bJu,1,e,f);if(a.bWO!==null)Dqt(a,g.h2(DJ(BM(i+k),BW(j))),300.0,k,a.bWO,0,e,f);C54(a, +g.h2(DJ(BM(i),BW(m))),k,300.0,e,f);}else{C54(a,g.h2(DJ(BM(i),BW(j))),300.0,300.0,e,f);p=g.h2(DJ(BM(i),BW(l)));h=a.bJu;p.hP(DE(k));q=UR(We(10),f,f,null);a:{b:{try{DV(GK(a.bG9),E(6474));break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break b;}else{throw $$e;}}}}l=h.bID-h.bIt;r=0;while(r<=5){s=h.bIt;o=r;n=s+o*l/5.0;m=k*o/5.0;(p.h2(BM(m))).hP(Fg(5.0));t=K(F,1);t.data[0]=DL(n);b=Jv(E(6475),t);b=B4(a.bG9.bH$,b);B3();b=C_(b,q,CO,a.bG9);b.cC(p.h2(DJ(BM(m-(b.cF(p.hE())).bGE/2.0),BW(10.0))));r=r+1|0;}b=h.bST;if +(b!==null&&!CQ(b)){b=B4(a.bG9.bH$,h.bST);B3();b=C_(b,q,CO,a.bG9);b.cC(p.h2(DJ(BM(k/2.0-(b.cF(p.hE())).bGE/2.0),BW(30.0))));}}p=g.h2(DJ(BM(i),BW(j)));D9A(a,p,k,300.0,e,f);Eqt(a,p,k,300.0);DLA(a,p,k,300.0,e,f);Fta(a,g,i,j,k,300.0,e,f);},Dqt=(a,b,c,d,e,f,g,h)=>{let i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,$$je;i=B0(B1(a.bG9),DnR(a,0));B9();j=(BJ(i,Cz)).cu(GK(a.bG9));k=(BJ(i,H1)).oK();l=D0(i,GK(a.bG9));if(j===null)j=g;a:{i=(b.h2(j)).h2(Dw(k));i.hP(Fg(c));m=B0(B1(a.bG9),BDX(a));n=(BJ(m,Cz)).cu(GK(a.bG9));if(n +===null){b:{try{n=DV(GK(a.bG9),E(6474));break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break b;}else{throw $$e;}}}n=g;}}c:{o=Dw((BJ(m,H1)).oK());p=i.hE();if(FiX(e)){m=G3(G8(EOx(e)));g=m;while(Gl(g)){b=GZ(m);q=Oj(BcU(b));r=BeJ(b);s=c*(1.0-(q-Pa(e))/(Uo(e)-Pa(e)));if(s<0.0)continue;if(s>c)continue;if(f){b=a.b7F;VR();if(b!==Zf&&a.bL0===null){t=DE(d);(((i.h2(n)).h2(o)).h2(BW(s))).hP(t);}}if(!f)(i.h2(BW(s))).hP(DE(5.0));else (i.h2(BW(s))).hP(DE((-5.0)));b=B4(PJ(a.bG9),r);B3();u=C_(b,l,Ft,a.bG9);v=Pz(u.cF(p));if +(!f)u.cC(i.h2(DJ(BM(10.0),BW(s-v/2.0))));else u.cC(i.h2(DJ(BM((-5.0)-N4(u.cF(p))-5.0),BW(s-v/2.0))));}}else{if(!CjX(e)){w=0;while(true){if(w>5)break c;x=w;s=c*(1.0-x/5.0);q=Pa(e)+(Uo(e)-Pa(e))*x/5.0;if(f){b=a.b7F;VR();if(b!==Zf&&a.bL0===null){t=DE(d);(((i.h2(n)).h2(o)).h2(BW(s))).hP(t);}}if(!f)(i.h2(BW(s))).hP(DE(5.0));else (i.h2(BW(s))).hP(DE((-5.0)));y=CI6(a,q);b=B4(PJ(a.bG9),y);B3();u=C_(b,l,Ft,a.bG9);v=Pz(u.cF(p));if(!f)u.cC(i.h2(DJ(BM(10.0),BW(s-v/2.0))));else u.cC(i.h2(DJ(BM((-5.0)-N4(u.cF(p))-5.0),BW(s +-v/2.0))));w=w+1|0;}}z=Oj(Fco(e));ba=Uo(e)-Pa(e);bb=Tt(Pa(e)/z)*z;bc=z*0.01;d:{while(true){if(!(bb<=Uo(e)))break d;if(bb>Uo(e)+bc)break;s=c*(1.0-(bb-Pa(e))/ba);if(f){b=a.b7F;VR();if(b!==Zf&&a.bL0===null){t=DE(d);(((i.h2(n)).h2(o)).h2(BW(s))).hP(t);}}if(!f)(i.h2(BW(s))).hP(DE(5.0));else (i.h2(BW(s))).hP(DE((-5.0)));y=CI6(a,bb);b=B4(PJ(a.bG9),y);B3();u=C_(b,l,Ft,a.bG9);v=Pz(u.cF(p));if(!f)u.cC(i.h2(DJ(BM(10.0),BW(s-v/2.0))));else u.cC(i.h2(DJ(BM((-5.0)-N4(u.cF(p))-5.0),BW(s-v/2.0))));bb=bb+z;}}}}if(BnA(e)!==null +&&!CQ(BnA(e))){b=FeW(e);VP();if(b!==ARO)EWr(a,i,BnA(e),c,f,h,l);else FuL(a,i,BnA(e),c,f,h,1,l);}},EWr=(a,b,c,d,e,f,g)=>{let h,i,j,k,l,m,n;h=!e?270:90;f=N1(c,g);i=DrP(f.bPs,f.bVn,h);j=Gk(g);k=((b.hE()).gS(j,c)).bGE;l=((b.hE()).gS(j,c)).bGF;m=!e?40.0-l/2.0+10.0:(-40.0)+l/2.0-10.0;n=!e?d/2.0-k/2.0:d/2.0+k/2.0;(b.h2(DJ(BM(m),BW(n)))).hP(i);},FuL=(a,b,c,d,e,f,g,h)=>{let i,j,k,l,m;f=B4(a.bG9.bH$,c);B3();i=C_(f,h,CO,a.bG9);j=(i.cF(b.hE())).bGE;k=(i.cF(b.hE())).bGF;if(!g){l=d+10.0;m= -k/2.0;i.cC(b.h2(DJ(BM(l),BW(m))));} +else{l=!e?20.0-j/2.0:(-20.0)-j/2.0;m= -k-15.0;i.cC(b.h2(DJ(BM(l),BW(m))));}},C54=(a,b,c,d,e,f)=>{let g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,bd,be,bf,$$je;g=a.bZK;RE();if(g!==Vd){h=B0(B1(a.bG9),DnR(a,1));B9();i=(BJ(h,Cz)).cu(GK(a.bG9));j=(BJ(h,H1)).oK();k=D0(h,GK(a.bG9));if(i===null)i=e;h=(b.h2(i)).h2(Dw(j));h.hP(DE(c));l=h.hE();if(HH(a.bLg)){b=a.bL0;if(b!==null){m=Uo(b)-Pa(a.bL0);b=a.b0F;n=!(b!==null&&FJ(b)>0)?m/10.0:FJ(a.b0F);o=AAC(Pa(a.bL0)/n)*n;while(true){p=Uo(a.bL0);q=n*0.01;if(!(o<=p+q))break;if +(!(oUo(a.bL0)+q)){r=ARv(a.bL0,o,0.0,c);(h.h2(BM(r))).hP(Fg(5.0));s=Exj(a,o);b=B4(PJ(a.bG9),s);B3();t=C_(b,k,CO,a.bG9);t.cC(h.h2(DJ(BM(r-N4(t.cF(l))/2.0),BW(10.0))));}o=o+n;}b=a.bWK;if(b!==null&&!CQ(b)){b=a.ci4;VP();if(b===A8N){b=B4(PJ(a.bG9),a.bWK);B3();u=C_(b,k,CF,a.bG9);v=Pz(u.cF(l));u.cC(h.h2(DJ(BM(c+10.0),BW( -v/2.0))));}else{b=B4(PJ(a.bG9),a.bWK);B3();u=C_(b,k,CO,a.bG9);u.cC(h.h2(DJ(BM(c/2.0-N4(u.cF(l))/2.0),BW(30.0))));}}}}else{a:{w=c/Hn(a.bLg);x=B0(B1(a.bG9),BDX(a));y=(BJ(x,Cz)).cu(GK(a.bG9));if +(y===null){b:{try{y=DV(GK(a.bG9),E(6474));break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break b;}else{throw $$e;}}}y=e;}}z=Dw((BJ(x,H1)).oK());b=a.b0F;ba=!(b!==null&&FJ(b)>0)?1:FJ(a.b0F);c:{b=a.cl4;VR();if(b!==Zf){b=a.bJu;if(!(b!==null&&Pa(b)<=0.0&&Uo(a.bJu)>=0.0))bb=0.0;else{bc=(0.0-Pa(a.bJu))/(Uo(a.bJu)-Pa(a.bJu));q=d*(1.0-bc);bb=d*bc;d=q;}bd=0;while(true){if(bd>=Hn(a.bLg))break c;p=(bd+0.5)*w;if(d>0.0){g=Fg( -d);(((h.h2(y)).h2(z)).h2(BM(p))).hP(g);}if(bb>0.0){be=Fg(bb);(((h.h2(y)).h2(z)).h2(BM(p))).hP(be);}bd +=bd+1|0;}}}bd=0;while(bd{let f, +g,h,i,j,k;b.hP(Fg(c));if(!HH(a.bLg)){f=UR(We(10),e,e,null);g=c/a.bLg.bGJ;h=0;while(h{let g,h,i,j,k,l,m,n,o,p,q,$$je;if(a.bL0!==null&&a.bJu!==null){a:{g=B0(B1(a.bG9),BDX(a));B9();h=(BJ(g,Cz)).cu(a.bG9.bGN);if(h===null){b:{try{h=DV(GK(a.bG9),E(6474));break a;}catch($$e){$$je= +P($$e);if($$je instanceof Dt){break b;}else{throw $$e;}}}h=e;}}c:{i=Dw((BJ(g,H1)).oK());e=a.cl4;VR();if(e!==Zf){e=a.bL0;if(e!==null){d:{e:{j=e.bID;k=e.bIt;l=j-k;e=a.b0F;if(e!==null){m=e.bHl;if(m>0)break e;}n=l/10.0;break d;}n=m;}k=AAC(k/n)*n;while(true){e=a.bL0;j=e.bID;l=n*0.01;o=j+l;if(!(k<=o))break c;if(!(ko)){p=ARv(e,k,0.0,c);q=Fg(d);(((b.h2(h)).h2(i)).h2(BM(p))).hP(q);}k=k+n;}}}}f:{if(a.b7F!==Zf){e=a.bJu;if(e!==null){l=e.bID-e.bIt;n=!CjX(e)?l/10.0:a.bJu.b8e.bG6;k=Tt(a.bJu.bIt/n)*n;while(true) +{e=a.bJu;o=e.bID;j=n*0.01;l=o+j;if(!(k<=l))break f;p=e.bIt;if(!(kl)){o=d*(1.0-(k-p)/(o-p));q=DE(c);(((b.h2(h)).h2(i)).h2(BW(o))).hP(q);}k=k+n;}}}}return;}},Eqt=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;e=!(!HH(a.bPk)&&Yt(Be(a.bPk,0)))?0:1;if(!(HH(a.bLg)&&!e)&&!HH(a.bPk)){f=Bk();g=Bk();h=Br(a.bPk);while(Bq(h)){i=Bm(h);j=AU5(i);Ru();if(j===AKo){U(f,i);k=CZO(a,i);j=BK0(i);if(j===null){B9();j=(BJ(k,CK)).cu(GK(a.bG9));if(j===null)j=Bvm(a,Rv(a.bPk,i));}U(g,j);}}if(!HH(f)){a:{h=f;if(BIg(Be(h, +0))){l=a.bWO;if(l!==null)break a;}l=a.bJu;}j=a.bZK;RE();m=j!==Vd?0:1;n=Fkr(a.bG9,c,d,Hn(a.bLg),l,m);if(Hn(h)==1)E$1(n,b,Be(h,0),Be(g,0));else{j=a.cO2;AIq();if(j!==BlA)Fg9(n,b,f,g);else ELl(n,b,f,g);}}o=Bk();p=Bk();n=Br(a.bPk);while(Bq(n)){i=Bm(n);j=AU5(i);Ru();if(j===APv){U(o,i);q=CA7(a,i);j=BK0(i);if(j===null){B9();j=(BJ(q,CK)).cu(GK(a.bG9));if(j===null)j=(BJ(q,Cz)).cu(GK(a.bG9));if(j===null)j=Bvm(a,Rv(a.bPk,i));}U(p,j);}else if(AU5(i)!==AKo){b:{if(BIg(i)){l=a.bWO;if(l!==null)break b;}l=a.bJu;}c:{d:{e:{A6G();switch +(B_I.data[CVX(AU5(i))]){case 1:break;case 2:break e;default:break d;}r=CMa(a,i);break c;}r=Dru(a,i);break c;}r=B0(B1(a.bG9),Cam(a));}j=BK0(i);if(j===null){B9();j=(BJ(r,Cz)).cu(GK(a.bG9));if(j===null)j=Bvm(a,Rv(a.bPk,i));}if(AU5(i)===ABg)Eq8(EwW(a.bG9,c,d,Hn(a.bLg),l,a.bL0),b,i,j);else if(AU5(i)===AEN)DKa(D7S(a.bG9,c,d,Hn(a.bLg),l,a.bL0),b,i,j);}}f:{if(!HH(o)){g:{h=o;if(BIg(Be(h,0))){l=a.bWO;if(l!==null)break g;}l=a.bJu;}s=D1N(a.bG9,c,d,Hn(a.bLg),l);t=null;u=0;while(true){if(u>=Hn(h))break f;v=Be(h,u);FdB(s, +b,v,Be(p,u),t);if(t===null)t=E2(A0D(v));else{w=0;while(true){m=Hn(A0D(v));x=t;if(w>=DO(m,Hn(x)))break;GJ(x,w,DL(Oj(Be(x,w))+Oj(Be(A0D(v),w))));w=w+1|0;}w=Hn(x);while(w{return DT(400,a.bLg.bGJ*60|0);},CI6=(a,b)=>{let c,d;if(EL(b)<0.01&&b!==0.0){c=K(F,1);c.data[0]=DL(b);return Jv(E(6476),c);}d=Pc(b);if(b===Id(d)){c=K(F,1);c.data[0]=TT(d);return Jv(E(6477),c);}c=K(F,1);c.data[0]=DL(b);return Jv(E(6478),c);},Bvm=(a,b)=>{let c,d,$$je;c=K(Bi,10).data;c[0] +=E(6479);c[1]=E(6480);c[2]=E(6481);c[3]=E(6482);c[4]=E(6483);c[5]=E(6484);c[6]=E(6485);c[7]=E(6486);c[8]=E(6487);c[9]=E(6488);try{d=DV(GK(a.bG9),c[b%c.length|0]);}catch($$e){$$je=P($$e);if($$je instanceof Dt){return null;}else{throw $$e;}}return d;},Cam=a=>{B8();return ABV;},CZO=(a,b)=>{let c,d,e;B8();c=BUU;if(b.bLt!==null){d=B0(B1(a.bG9),Du(c,b.bLt));e=B0(B1(a.bG9),AHZ(c,b.bLt));if(d!==null){Pb();e=Ux(d,e,Qv);}return e;}return B0(B1(a.bG9),c);},CMa=(a,b)=>{let c,d,e;B8();c=CPr;if(b.bLt!==null){d=B0(B1(a.bG9), +Du(c,b.bLt));e=B0(B1(a.bG9),AHZ(c,b.bLt));if(d!==null){Pb();e=Ux(d,e,Qv);}return e;}return B0(B1(a.bG9),c);},CA7=(a,b)=>{let c,d,e;B8();c=CEY;if(b.bLt!==null){d=B0(B1(a.bG9),Du(c,b.bLt));e=B0(B1(a.bG9),AHZ(c,b.bLt));if(d!==null){Pb();e=Ux(d,e,Qv);}return e;}return B0(B1(a.bG9),c);},Exj=(a,b)=>{let c,d;if(EL(b)<0.01&&b!==0.0){c=K(F,1);c.data[0]=DL(b);return Jv(E(6476),c);}d=Pc(b);if(b===Id(d)){c=K(F,1);c.data[0]=TT(d);return Jv(E(6477),c);}c=K(F,1);c.data[0]=DL(b);return Jv(E(6489),c);},Dru=(a,b)=>{let c,d,e;B8();c +=BEe;if(b.bLt!==null){d=B0(B1(a.bG9),Du(c,b.bLt));e=B0(B1(a.bG9),AHZ(c,b.bLt));if(d!==null){Pb();e=Ux(d,e,Qv);}return e;}return B0(B1(a.bG9),c);},DnR=(a,b)=>{let c;if(!b){CV();c=BAy;}else{CV();c=BjK;}B8();return CG(Cw8,c);},BDX=a=>{B8();return C1j;},C0d=a=>{B8();return CSH;},CVr=(a,b)=>{let c,d,e,f,g,h,i;c=a.bUQ;SH();if(c!==AVn&&!HH(a.bPk)){c=D0(B0(B1(a.bG9),C0d(a)),a.bG9.bGN);d=0.0;e=0.0;f=Br(a.bPk);while(Bq(f)){g=Bm(f);h=B4(a.bG9.bH$,g.clf);B3();i=(C_(h,c,CF,a.bG9)).cF(b);h=a.bUQ;if(!(h!==Yq&&h!==AB7)){d= +BC(d,i.bGE);e=e+i.bGF+15.0;}else{d=d+i.bGE+12.0+5.0+15.0;e=BC(e,i.bGF);}}h=a.bUQ;if(h!==Yq&&h!==AB7)return Cl(d,e+20.0);return Cl(d+12.0+5.0+20.0,e);}return Cl(0.0,0.0);},Fta=(a,b,c,d,e,f,g,h)=>{let i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,$$je;h=a.bUQ;SH();if(h!==AVn&&!HH(a.bPk)){a:{b:{c:{d:{i=D0(B0(B1(a.bG9),C0d(a)),a.bG9.bGN);A6G();switch(Cjx.data[a.bUQ.bGO]){case 1:c=20.0;break a;case 2:break b;case 3:break d;case 4:break c;default:}return;}d=20.0;break a;}d=d+f+40.0+10.0;break a;}c=c+e+(a.bWO===null?0.0:40.0) ++10.0;}j=0;while(true){g=a.bPk;if(j>=g.bGJ)break;k=Be(g,j);l=k.bTe;if(l===null)l=Bvm(a,j);g=k.cbw;Ru();if(g===AKo){if(k.bTe!==null)m=l;else{n=CZO(a,k);B9();m=(BJ(n,CK)).cu(a.bG9.bGN);if(m===null)m=l;}o=C2(12.0,12.0);(((b.h2(m)).h2(Cc(m))).h2(DJ(BM(c),BW(d)))).hP(o);}else if(g===ABg){if(k.bTe!==null)m=l;else{p=CMa(a,k);B9();m=(BJ(p,Cz)).cu(a.bG9.bGN);if(m===null)m=l;}q=DE(12.0);(((b.h2(m)).h2(Dw(2.0))).h2(DJ(BM(c),BW(d+6.0)))).hP(q);}else if(g===APv){if(k.bTe!==null)m=l;else{r=CA7(a,k);B9();m=(BJ(r,CK)).cu(a.bG9.bGN);if +(m===null)m=l;}o=C2(12.0,12.0);(((b.h2(m)).h2(Cc(m))).h2(DJ(BM(c),BW(d)))).hP(o);}else if(g===AEN){s=Dru(a,k);B9();t=(BJ(s,A5N)).cu(a.bG9.bGN);if(t===null){if(k.bTe!==null)t=l;else{t=(BJ(s,Cz)).cu(a.bG9.bGN);if(t===null)t=l;}}u=k.b1N;e:{f:{try{g:{h=u;v=(BJ(s,A3Y)).oB();if(v!==null){h=u;if(!CQ(v)){h:{i:{j:{k:{h=u;g=FS(v);w=(-1);switch(FP(g)){case -1360216880:break k;case -894674659:break j;case 1497762312:break i;default:}break h;}h=u;if(!Bj(g,E(721)))break h;h=u;w=0;break h;}h=u;if(!Bj(g,E(3464)))break h;h= +u;w=1;break h;}h=u;if(Bj(g,E(3465))){h=u;w=2;}}l:{m:{n:{h=u;switch(w){case 0:break n;case 1:break m;case 2:break l;default:}break g;}h=u;QQ();u=ZJ;h=u;break g;}h=u;QQ();u=AHg;h=u;break g;}h=u;QQ();u=AL7;h=u;}}}break e;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break f;}else{throw $$e;}}}u=h;}FcO(a,b,t,c+6.0,d+6.0,8.399999999999999,u);}g=B4(a.bG9.bH$,k.clf);B3();x=C_(g,i,CF,a.bG9);y=x.cF(b.hE());x.cC(b.h2(DJ(BM(c+12.0+5.0),BW(d))));g=a.bUQ;if(!(g!==Yq&&g!==AB7))d=d+y.bGF+15.0;else c=c+17.0+y.bGE+15.0;j=j ++1|0;}return;}},FcO=(a,b,c,d,e,f,g)=>{let h,i,j,k;a:{b:{c:{A6G();switch(Det.data[g.bGO]){case 1:break;case 2:break c;case 3:break b;default:break a;}h=Fz(f,f);b=(b.h2(c)).h2(Cc(c));f=f/2.0;(b.h2(DJ(BM(d-f),BW(e-f)))).hP(h);break a;}i=C2(f,f);b=(b.h2(c)).h2(Cc(c));f=f/2.0;(b.h2(DJ(BM(d-f),BW(e-f)))).hP(i);break a;}j=Fj();k= -f/2.0;BQ(j,0.0,k);f=f/2.0;BQ(j,k,f);BQ(j,f,f);(((b.h2(c)).h2(Cc(c))).h2(DJ(BM(d),BW(e)))).hP(j);}},DLA=(a,b,c,d,e,f)=>{let g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$$je;f=a.czE;if(f!==null +&&!HH(f)){a:{f=B1(a.bG9);B8();g=B0(f,CJX);h=D0(g,a.bG9.bGN);B9();i=(BJ(g,Cz)).cu(a.bG9.bGN);if(i===null){b:{try{i=DV(GK(a.bG9),E(66));break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break b;}else{throw $$e;}}}i=e;}}j=(BJ(g,H1)).oK();k=Br(a.czE);while(Bq(k)){l=Bm(k);m=0.0;n=0.0;e=l.cxR;if(e instanceof ASF){o=e.bG6;e=a.bZK;RE();if(e!==Vd){e=a.bJu;p=e.bIt;m=c*(o-p)/(e.bID-p);}else{e=a.bJu;n=e.bIt;n=d*(1.0-(o-n)/(e.bID-n));}}else if(e instanceof Bi){q=DFX(l);r=Rv(a.bLg,q);if(r<0)continue;e=a.bZK;RE();if(e +!==Vd)m=c*(r+0.5)/Hn(a.bLg);else n=d*(r+0.5)/Hn(a.bLg);}e=a.bZK;RE();if(e===Vd)m=c*(DXc(l)-Pa(a.bJu))/(Uo(a.bJu)-Pa(a.bJu));else n=d*(1.0-(l.cxe-Pa(a.bJu))/(Uo(a.bJu)-Pa(a.bJu)));e=B4(PJ(a.bG9),DSS(l));B3();s=C_(e,h,CF,a.bG9);t=s.cF(b.hE());if(!EVW(l))s.cC(b.h2(DJ(BM(m-N4(t)/2.0),BW(n-Pz(t)-5.0))));else if(!(!(n>Pz(t)+40.0)?0:1)){u=m-N4(t)/2.0;p=n+40.0;s.cC(b.h2(DJ(BM(u),BW(p))));v=p-5.0;w=n+5.0;x=v-w;if(x>0.0){y=EB(0.0, -x);(((b.h2(i)).h2(Dw(j))).h2(DJ(BM(m),BW(v)))).hP(y);z=Fj();BQ(z,0.0,0.0);BQ(z,(-5.0), +8.0);BQ(z,5.0,8.0);(((b.h2(i)).h2(Cc(i))).h2(DJ(BM(m),BW(w)))).hP(z);}}else{u=m-N4(t)/2.0;p=n-Pz(t)-40.0;s.cC(b.h2(DJ(BM(u),BW(p))));v=p+Pz(t)+5.0;w=n-5.0;x=w-v;if(x>0.0){y=EB(0.0,x);(((b.h2(i)).h2(Dw(j))).h2(DJ(BM(m),BW(v)))).hP(y);z=Fj();BQ(z,0.0,0.0);BQ(z,(-5.0),(-8.0));BQ(z,5.0,(-8.0));(((b.h2(i)).h2(Cc(i))).h2(DJ(BM(m),BW(w)))).hP(z);}}}return;}}; +function CGb(){F.call(this);this.cWy=null;} +let EI9=(a,b)=>{CYD(a.cWy,b);}; +function AZR(){let a=this;Er.call(a);a.b7E=null;a.cNO=null;a.cZ8=null;a.c3t=0;a.b3Y=null;} +let C1T=(a,b,c)=>{a.b3Y=c;a.b7E=b;a.cZ8=c.cd4;a.c3t=c.b34;a.cNO=c.bWy;},Cfb=a=>{let b;b=AYk(a.b3Y);B9();return BG(E(4184),(BJ(b,B2I)).oB());},AHm=(a,b,c,d,e,f)=>{let g,h;B8();g=Du(Q1(B8V,a.c3t),a.cNO);b=AH6(B0(a.cZ8,g),b,a.b7E.ly());g=BA(Eh(c,e),d);h=BDe(g,BA(BC(c,e),f));(b.h2(I3(g))).hP(h);},Cia=(a,b)=>{let c,d,e,f,g;c=b.cpO;d=AYk(b);e=b.b2i;SQ();if(e!==AMJ){if(e!==AHt){b=D0(d,a.b7E.ly());f=IR(d);e=a.b7E;g=GM(d);Ed();return KN(Py(c,b,f,e,g,FR,null,null),0.0,3.0,1.0,1.0);}return Dr3(d,BBV(b,a.b7E),c);}GO();return HD;}; +function BMX(){let a=this;AZR.call(a);a.ccX=null;a.bZA=null;a.cZy=0;a.c_y=20.0;a.c$l=40.0;} +let Cd3=0,BP7=()=>{BP7=Z(BMX);Fbq();},CdF=(a,b)=>{let c,d;if(!a.cZy){a.cZy=1;if(Cfb(a)){c=0.0;d=Br(a.bZA);while(Bq(d)){c=BC(c,(Bm(d)).bnI(b));}d=Br(a.bZA);while(Bq(d)){(Bm(d)).bnJ(c);}BGX(a);return;}return;}},DGP=(a,b)=>{let c,d,e,f,g;CdF(a,b);c=0.0;d=0.0;e=Br(a.bZA);while(Bq(e)){f=(Bm(e)).cF(b);d=BC(d,f.bGF);c=c+f.bGE;}g=a.bZA.bGJ;if(g>1)c=c+(g-1|0)*20.0;e=a.ccX.cF(b);d=d+e.bGF+40.0;return Cl(BC(c,e.bGE),d);},Fbq=()=>{Cd3=0;}; +function CJV(){let a=this;F.call(a);a.c_Z=null;a.c_Y=null;} +let EPE=N(),U_=(b,c)=>{let d,$$je;c=Fo(c);Bf();a:{try{Cd(c,A_0(c,b.cd0*90|0));d=c.bGH;b=b.b9i;c.bGH=d-b.bGH;c.bGG=c.bGG-b.bGG;break a;}catch($$e){$$je=P($$e);b=$$je;}J(b);}return Fo(c);},D5$=(b,c)=>{let d,e,f,g,$$je;Bf();a:{b:{try{d=Buy();if(K7(c)!==null)break b;if(!b.ca7&&QH(c)!=6){d=Fm();e=BY(ABl(b,Cg(c)));b=BY(ABl(b,BZ(c)));c=CR();H(H(H(c,E(6490)),e),b);b=CH(c);Fw(d,b);}}catch($$e){$$je=P($$e);b=$$je;break a;}return;}try{f=0;while(f<(K7(c)).bPl){A6l(d,Y((K7(c)).bIY,f));g=0;while(g{let e,f,g,h,i,$$je;Bf();try{e=Gm();f=Gm();FM(e,JA(c));if(d!=1&&d!=2){g=f.bGT;h=e.bGT;Cd(g,U_(b,MM(h.bGH, +h.bGG)));g=f.bGU;h=e.bGU;Cd(g,U_(b,MM(h.bGH,h.bGG)));}else{Cd(f.bGT,U_(b,MM(e.bGT.bGH,e.bGU.bGG)));Cd(f.bGU,U_(b,MM(e.bGU.bGH,e.bGT.bGG)));}FM(JA(c),f);if(Km(c)!==null)Cd((Km(c)).bJJ,U_(b,(Km(c)).bJJ));i=1;while(i<=GA(c)){CBU(b,Bz(HC(c),i),d);i=i+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Ez7=(b,c)=>{let d,e,f,$$je;Bf();a:{b:{try{d=b.b9i;e=!(d.bGH===0.0&&d.bGG===0.0)?1:0;}catch($$e){$$je=P($$e);b=$$je;break b;}c:{try{if(e)break c;if(b.cd0)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}try{d=IV(b,c);while +(d!==null){if(b.cd0)CG8(d,0);Cd(Dh(d),U_(b,Dh(d)));if(BCO(d)!==null)I(E(6492));d:{if(b.cuD==1){f=Mx(b,c,d);while(true){if(f===null)break d;D5$(b,f);f=MU(b,c,f);}}}d=I4(b,c,d);}CBU(b,c,ADs(c));break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}},En6=b=>{let c,$$je;Bf();try{c=EG();Cd(c,(Y(b,0)).bIK);c.bGH=c.bGH+(Y(b,0)).bLx.bGH/2.0;c.bGG=c.bGG+(Y(b,0)).bLx.bGG/2.0;}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},EZ2=b=>{let $$je;Bf();try{b=Fo(EYV(b));}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},EYV=b=>{let c, +d;c=AVO(b);if(c===null){I(E(6493));I(E(6494));I(E(6495));}d=Y(c.bIY,0);if(!d.bVo)return Y(d.bK7,0);return d.bQt;},D14=b=>{let $$je;Bf();try{b=Fo(DVs(b));}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},DVs=b=>{let c,d;c=AVO(b);if(c===null){I(E(6493));I(E(6494));I(E(6495));}d=Y(c.bIY,c.bPl-1|0);if(!d.bWc)return Y(d.bK7,d.bPR-1|0);return d.bQq;},DcI=(b,c)=>{let $$je;Bf();try{b=PK(FhP(b,PK(c)));}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},FhP=(b,c)=>{let d,e;d=new FB;CJ(d);e=c.bGT;e.bGH=Eh(e.bGH,(Y(b,0)).bIn.bGH);e +=c.bGT;e.bGG=Eh(e.bGG,(Y(b,0)).bIn.bGG);d.bGH=(Y(b,0)).bIn.bGH+(Y(b,0)).bI5.bGH;d.bGG=(Y(b,0)).bIn.bGG+(Y(b,0)).bI5.bGG;b=c.bGU;b.bGH=BC(b.bGH,d.bGH);b=c.bGU;b.bGG=BC(b.bGG,d.bGG);return c;},BHo=(b,c,d,e,f,g)=>{let $$je;Bf();try{DRG(b,c,d,e,f,Fo(g));}catch($$e){$$je=P($$e);b=$$je;J(b);}},DRG=(b,c,d,e,f,g)=>{if(f){(Y(d,0)).bI5.bGH=0.0;(Y(d,0)).bI5.bGG=0.0;Cd((Y(d,0)).bIn,g);}if(!b.ciT)Cd((Y(e,0)).bLx,c.bHT);else{(Y(e,0)).bLx.bGH=c.bHT.bGG;(Y(e,0)).bLx.bGG=c.bHT.bGH;}(Y(e,0)).c54=c;(Y(e,0)).bZq=0;(Y(d,0)).bLK +=e;},B_l=(b,c,d,e)=>{let $$je;e=PK(e);Bf();a:{b:{try{if(!b.ciT){(Y(d,0)).bI5.bGH=c.bHT.bGH;(Y(d,0)).bI5.bGG=c.bHT.bGG;}else{(Y(d,0)).bI5.bGH=c.bHT.bGG;(Y(d,0)).bI5.bGG=c.bHT.bGH;}Cd((Y(d,0)).bIn,c.bJJ);b=(Y(d,0)).bIn;b.bGH=b.bGH-(Y(d,0)).bI5.bGH/2.0;b=(Y(d,0)).bIn;b.bGG=b.bGG-(Y(d,0)).bI5.bGG/2.0;b=DcI(d,e);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return PK(b);},EvJ=(b,c,d,e)=>{let $$je;e=PK(e);Bf();a:{b:{try{if(!b.ciT){(Y(d,0)).bI5.bGH=AIe(ALC(c));(Y(d,0)).bI5.bGG=AIe(AOg(c));}else{(Y(d,0)).bI5.bGH +=AIe(AOg(c));(Y(d,0)).bI5.bGG=AIe(ALC(c));}Cd((Y(d,0)).bIn,Dh(c));b=(Y(d,0)).bIn;b.bGH=b.bGH-(Y(d,0)).bI5.bGH/2.0;b=(Y(d,0)).bIn;b.bGG=b.bGG-(Y(d,0)).bI5.bGG/2.0;b=DcI(d,e);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return PK(b);},Ckh=(b,c,d)=>{let $$je;Bf();try{b=CVE(Fq1(b,c,CVE(d)));}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},Fq1=(b,c,d)=>{let e,f;e=1;while(e<=GA(c)){CSj(d,Ckh(b,Bz(HC(c),e),d));e=e+1|0;}if(c!==Hd(c)&&Km(c)!==null&&(Km(c)).bKX){f=d.bXG;FM(d.bU_,B_l(b,Km(c),f,d.bU_));d.bXG=IQ(d.bXG, +1);}return d;},CgC=b=>{let c,d,$$je;Bf();try{c=0;if(b!==Hd(b)&&Km(b)!==null&&(Km(b)).bKX)c=1;d=1;while(d<=GA(b)){c=c+CgC(Bz(HC(b),d))|0;d=d+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},AUz=(b,c)=>{return !(c&&K7(b)!==null)?0:1;},EBO=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,$$je;N_(E(6496),E(6497));a:{b:{c:{try{d=0;e=0;f=0;g=Gm();ARx(new FB);h=D0k();i=ANE(c)&14;if(QJ(c)&16)break c;if(QJ(c)&32)break c;if(QJ(c)&4)break c;if(QJ(c)&2)break c;if(QJ(c)&1&&!b.cE3)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(6496), +E(6497));return;}try{j=IV(b,c);while(j!==null){if(BCO(j)!==null){I(E(6498));I(E(6499));I(E(5123));I(E(6500));}k=Mx(b,c,j);while(k!==null){if(BYm(k)!==null){I(E(6501));I(E(6502));I(E(6503));I(E(6504));}if(AWp(k)!==null){if((AWp(k)).bKX)e=e+1|0;else if(AUz(k,i))d=d+1|0;}if(AVt(k)!==null){if((AVt(k)).bKX)e=e+1|0;else if(AUz(k,i))d=d+1|0;}if(DW(k)!==null){if((DW(k)).bKX)e=e+1|0;else if(AUz(k,i))d=d+1|0;}k=MU(b,c,k);}j=I4(b,c,j);}if(QJ(c)&8)f=CgC(c);}catch($$e){$$je=P($$e);b=$$je;break b;}d:{try{l=0+d|0;if(l)break d;} +catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(6496),E(6497));return;}try{m=((BVU(c)+e|0)+f|0)+d|0;Ej();n=Ho(m,Bc6);o=Ho(l,BgZ);Cd(g.bGT,MM(2.147483647E9,2.147483647E9));Cd(g.bGU,MM((-2.147483647E9),(-2.147483647E9)));j=IV(b,c);p=n;q=o;while(j!==null){FM(g,EvJ(b,j,p,g));if(BCO(j)!==null){I(E(6505));I(E(6506));I(E(6507));I(E(5051));I(E(6508));I(E(6509));I(E(6510));I(E(5051));}p=IQ(p,1);k=Mx(b,c,j);while(k!==null){r=DW(k);if(r!==null){if(r.bKX)FM(g,B_l(b,r,p,g));else if(AUz(k,i)){BHo(b,r,p,q,1,EUK(c,k));q=IQ(q,1);} +else{I(E(6511));I(E(6512));I(E(6513));}p=IQ(p,1);}r=AVt(k);if(r!==null){if(r.bKX)I(E(6514));else if(AUz(k,i)){BHo(b,r,p,q,1,EZ2(k));q=IQ(q,1);}else{I(E(6515));I(E(6516));I(E(6513));}p=IQ(p,1);}r=AWp(k);if(r!==null){if(r.bKX)I(E(6514));else if(AUz(k,i)){BHo(b,r,p,q,1,D14(k));q=IQ(q,1);}else{I(E(6517));I(E(6518));I(E(6513));}p=IQ(p,1);}if(BYm(k)!==null){I(E(6519));I(E(6514));I(E(5424));I(E(6520));I(E(6521));I(E(6522));I(E(5424));I(E(5508));I(E(6523));I(E(6524));I(E(6513));I(E(5424));I(E(6506));}k=MU(b,c,k);}j +=I4(b,c,j);}if(f){r=CQM();FM(r.bU_,g);r.bXG=p;CSj(r,Ckh(b,c,r));FM(g,r.bU_);}h.c5i=Ehw(c,SU(b,c,0,Co(E(6525)),null),1);FM(h.cHn,g);ERi(b,n,m,o,l,h);s=0;t=0;b=o;while(t{let e,$$je;Bf();try{ARx(new FB);b.cd0=ADs(c);e=KL(c);b.ciT=e;if(!e)DnI(c);else CeY(c);EBO(b,c);if(Km(c)!== +null&&!(Km(c)).bKX){I(E(6527));I(E(6528));I(E(6529));I(E(6530));I(E(6531));I(E(5368));I(E(6532));I(E(5051));I(E(6533));I(E(6534));I(E(6535));I(E(6536));I(E(6537));I(E(5051));I(E(5379));I(E(6530));I(E(6538));I(E(6539));I(E(5354));I(E(6540));I(E(5368));I(E(6538));I(E(6540));I(E(5354));I(E(6539));I(E(5051));I(E(6541));I(E(6542));I(E(6535));I(E(6543));I(E(6544));I(E(5051));I(E(5044));}if(d){a:{b:{c:{d:{switch(b.cd0){case 0:break c;case 1:break b;case 2:break;case 3:break d;default:break a;}I(E(6545));break a;}I(E(6546));break a;}Cd(b.b9i, +(JA(c)).bGT);break a;}Cd(b.b9i,MM( -(JA(c)).bGU.bGG,(JA(c)).bGT.bGH));}Ez7(b,c);}if(Km(c)!==null&&!(Km(c)).bKX)I(E(6547));if(b.c_5!==null){I(E(6548));I(E(6549));I(E(6550));I(E(5293));I(E(6551));I(E(6552));I(E(6553));}}catch($$e){$$je=P($$e);b=$$je;J(b);}},EBY=(b,c)=>{let $$je;Bf();try{EpR(b,c,1);}catch($$e){$$je=P($$e);b=$$je;J(b);}},CeY=b=>{let c,d,e,$$je;Bf();try{c=EG();d=EG();if(b!==Hd(b)&&Km(b)!==null&&!(Km(b)).bKX){if(!(AFG(b)&1)){Cd(d,(PV(b)).data[3]);c.bGH=(JA(b)).bGT.bGH+d.bGH/2.0;}else{Cd(d,(PV(b)).data[1]);c.bGH +=(JA(b)).bGU.bGH-d.bGH/2.0;}if(AFG(b)&4)c.bGG=(JA(b)).bGT.bGG+d.bGG/2.0;else if(AFG(b)&2)c.bGG=(JA(b)).bGU.bGG-d.bGG/2.0;else c.bGG=((JA(b)).bGT.bGG+(JA(b)).bGU.bGG)/2.0;Cd((Km(b)).bJJ,c);(Km(b)).bKX=1;}e=1;while(e<=GA(b)){CeY(Bz(HC(b),e));e=e+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},DnI=b=>{let c,d,e,$$je;Bf();try{c=EG();d=EG();if(b!==Hd(b)&&Km(b)!==null&&!(Km(b)).bKX){if(!(AFG(b)&1)){I(E(6554));I(E(6555));}else{Cd(d,(PV(b)).data[2]);c.bGG=(JA(b)).bGU.bGG-d.bGG/2.0;}if(AFG(b)&4)I(E(6556));else if(AFG(b) +&2)I(E(6557));else c.bGH=((JA(b)).bGT.bGH+(JA(b)).bGU.bGH)/2.0;Cd((Km(b)).bJJ,c);(Km(b)).bKX=1;}e=1;while(e<=GA(b)){DnI(Bz(HC(b),e));e=e+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}}; +function Cwg(){let a=this;F.call(a);a.ciW=null;a.cz4=null;} +let DA6=a=>{let b;a.ciW=E9();b=new Cao;b.cGA=G$();a.cz4=b;},Cft=()=>{let a=new Cwg();DA6(a);return a;},Dnb=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=0;while(true){d=a.cz4;e=(b.bod()).bPT;f=(c+b.biH()|0)-1|0;g=(b.boe()).bPT;CJs(d,c,e,f,g);h=c;a:{b:{while(h<=f){i=e;while(i<=g){j=d.cGA;k=CL(C6b(d,h,i));if(PT(j,k))break b;i=i+1|0;}h=h+1|0;}f=0;break a;}f=1;}if(!f?1:0){d=a.ciW;j=CL(c);Es(d,b,j);j=a.cz4;i=(b.bod()).bPT;l=(c+b.biH()|0)-1|0;h=(b.boe()).bPT;CJs(j,c,i,l,h);while(c<=l){g=i;while(g<=h){d=j.cGA;b=CL(C6b(j,c,g));if +(!EQ(d,b)){b=new Bt;Bp(b,E(6558));J(b);}g=g+1|0;}c=c+1|0;}return;}c=c+1|0;if(c>100)break;}b=new BP;X(b);J(b);},C$n=a=>{return a.ciW;}; +function BVM(){let a=this;F.call(a);a.cgO=0.0;a.cZA=null;} +let Cc2=(a,b,c,d)=>{a.cgO=b*c;a.cZA=d;},DKr=(a,b,c)=>{let d=new BVM();Cc2(d,a,b,c);return d;},Bpd=(a,b)=>{return Id(BEQ(b))*a.cgO/8.64E7;},Frj=(a,b)=>{return a.cgO;},EHW=(a,b)=>{let c;c=a.cZA;Xg();if(c===Ys)return D4(Fl(CY(BEQ(b),V(86400000)),V(7)),V(6))?0:1;return 1;}; +function CsA(){let a=this;F.call(a);a.cJq=null;a.cCg=0.0;} +let Fa9=(a,b,c,d,e)=>{let f;f=new BVM;Xg();Cc2(f,b,d,AAr);a.cJq=f;if(e===null)a.cCg=Bpd(f,c);else a.cCg=Bpd(f,EA(e));},C1i=(a,b,c,d)=>{let e=new CsA();Fa9(e,a,b,c,d);return e;},C4U=(a,b)=>{return Bpd(a.cJq,b)-a.cCg;},CC8=(a,b)=>{return a.cJq.cgO;},EUC=(a,b)=>{return 1;}; +function CL0(){let a=this;F.call(a);a.csV=0.0;a.cL3=null;a.cuL=null;a.cU8=null;a.cql=null;} +let DHU=(a,b)=>{let c,d,e,f;if(Ko(b,a.cL3)>=0){if(Ko(b,a.cuL)>0){c=a.cuL;d=(DG(a.cql,c)).bHl;while(true){if(CdL(a,c)>0.0)d=d+1|0;c=Qu(c);e=a.cql;f=CL(d);C9(e,c,f);if(Ko(c,b)>=0)break;}}return (DG(a.cql,b)).bHl*a.csV;}b=new Bt;X(b);J(b);},CdL=(a,b)=>{if(ALW(a.cU8,Jj(b)))return 0.0;return a.csV;},Fs2=(a,b)=>{return 1;}; +function DdU(){F.call(this);this.cJF=null;} +let Fvr=(a,b)=>{return C4U(a.cJF,b);},Fn1=(a,b)=>{return CC8(a.cJF,b);},E_O=(a,b)=>{let c;c=AEP(b);AEg();return c!==A8H?0:1;}; +function CYq(){let a=this;F.call(a);a.cvm=null;a.bPe=null;a.cRN=null;} +let BUC=a=>{let b,c;b=Cgc(EE$(a.cvm,a.bPe),a.cRN);c=new CMI;c.ciw=B$(b);return c;}; +function AGu(){let a=this;F.call(a);a.bTF=null;a.cB$=null;a.clc=null;} +let AUC=(a,b,c,d)=>{a.bTF=b;a.clc=B$(c);a.cB$=d;},A85=(a,b,c)=>{let d=new AGu();AUC(d,a,b,c);return d;},CHA=a=>{return a.bTF.b$E.cEq;},DN$=a=>{return CNw(a.bTF);},ACE=(a,b)=>{return De(a.bTF,b);},AE6=(a,b)=>{let c,d,e;c=a.clc;if(c!==null)b=AMo(b,c,a.cB$);d=CHA(a);B3();if(d===CO&&a.bTF.caR>0.0){e=(ACE(a,b.hE())).bGE;b=b.h2(BM((a.bTF.caR-e)/2.0));}else if(CHA(a)===Ft&&a.bTF.caR>0.0){e=(ACE(a,b.hE())).bGE;b=b.h2(BM(a.bTF.caR-e));}CTD(a.bTF,b);},Dz4=(a,b)=>{return 0.0;},Ed0=(a,b,c)=>{return null;},EYM=(a,b)=>{return Ya();},Dve +=a=>{let b;b=new BV;X(b);J(b);}; +function BWI(){let a=this;F.call(a);a.cKd=null;a.c3D=null;a.cUr=null;a.cQy=null;a.c6X=null;a.cir=0.0;} +let C6u=(a,b,c,d,e,f,g)=>{let h;h=new S;T(h);Bb(h,b);a.cKd=Q(h);a.cir=c;a.c3D=d;a.cUr=e;a.cQy=f;a.c6X=g.lF(e);},CHe=(a,b,c,d,e,f)=>{let g=new BWI();C6u(g,a,b,c,d,e,f);return g;},EBU=(a,b)=>{let c,d;c=a.cQy;if(c!==null)b=b.h2(c);b=b.h2(Cc(a.cUr));d=a.cir*2.0;b.hP(Fz(d,d));b=b.h2(a.c6X);c=new FG;d=a.cir;Hs(c,d,d);(b.h2(c)).hP(BF5(Bn(a.cKd,0),a.c3D));},EJF=(a,b)=>{let c;b=new LU;c=2.0*a.cir;MO(b,c,c);return b;}; +function Ck$(){let a=this;F.call(a);a.cvn=null;a.cgc=null;} +let Ekf=(a,b)=>{let c,d,e;c=Da1(a,b);d=(a.cgc.cF(b)).bGF;e=ACE(a.cvn,b);return Cl(e.bGE+c,BC(d,e.bGF));},Da1=(a,b)=>{return (a.cgc.cF(b)).bGE+6.0;},DJm=(a,b)=>{let c,d;c=b.hE();a.cgc.cC(b);d=Da1(a,c);c=a.cvn;b=b.h2(BM(d));AE6(c,b);}; +function C8d(){let a=this;F.call(a);a.b2G=null;a.cDo=null;} +let EL0=a=>{let b,c;b=a.b2G;c=new S;T(c);H(H(c,E(6559)),b);return Q(c);}; +function Be8(){let a=this;F.call(a);a.bJS=0;a.bQ5=null;} +let MD=null,ALF=null,Bhh=null,H8=()=>{H8=Z(Be8);EA9();},DYt=(a,b)=>{H8();SL();CMH(a,b,Xe);},BqZ=a=>{let b=new Be8();DYt(b,a);return b;},CMH=(a,b,c)=>{H8();a.bJS=b;a.bQ5=c;},AIT=(a,b)=>{let c=new Be8();CMH(c,a,b);return c;},EA9=()=>{MD=BqZ((-2147483648));ALF=BqZ(0);Bhh=BqZ(1);}; +function AYm(){let a=this;F.call(a);a.bVF=null;a.cpT=null;a.ckV=null;a.cnB=null;a.cFd=null;a.b9_=null;a.c6q=null;a.cr0=null;a.bKi=null;a.c_u=null;} +let B4o=a=>{return AOi(a.bVF);},BzC=(a,b,c,d,e,f,g)=>{a.cnB=FF();a.cFd=B$(f);a.cpT=B$(d);a.ckV=B$(c);a.c6q=e;a.bVF=AQc(b);},BXA=(a,b,c,d,e,f)=>{let g=new AYm();BzC(g,a,b,c,d,e,f);return g;},CWG=a=>{return B3J(a.bKi);},Cz5=(a,b)=>{AJU(a.bVF,b);return By();},C$g=a=>{return ANO(a.bVF);},C49=(a,b,c,d,e,f,g)=>{return AGs(a.bVF,b,c,d,e,f,g);},Cru=(a,b)=>{a.cnB=B$(b);},BLV=(a,b)=>{let c,d;c=ACX(a.bVF,b);d=a.cnB;a.bKi=Bri(b,c,d);},Xy=a=>{let b;b=a.b9_;if(b===null){b=a.cnB;if(b!==null)return b.bLD;return null;}return b.bLD;},Bk1 +=(a,b)=>{let c;if(!R1(a)){if(NN(a.ckV.bLD)<=0){c=Lj(AV9(a.bKi),b);if(!NN(c))return b;return c;}return a.ckV.bLD;}return Lj(a.bKi.b22,b);},AXJ=a=>{return a.cFd.bJa;},DQs=(a,b)=>{return Lj(a.cFd,b);},AC0=a=>{let b;b=a.c_u;if(b===null)return Mn(a.bKi);return b.Xs();},ZQ=a=>{let b;b=a.cr0;if(b!==null){CM();if(DQ(b,C6)!==null)return DQ(a.cr0,C6);}return a.c6q;},R1=a=>{return B0i(a.bVF);},AK2=a=>{return WI(a.bVF);},A4z=a=>{let b,c;b=a.bVF;if(b.bTW.bGJ!=1)c=0;else{b=WI(b);c=b instanceof BX0?b.coB:b instanceof BQ_? +1:b instanceof BCQ?(DiP(b)?0:1):!(b instanceof BKn)?0:DiP(b)?0:1;}return c;},AZJ=(a,b,c)=>{a.b9_=b;a.cr0=c;},Bmv=a=>{return a.b9_;},AXq=a=>{let b;b=a.bKi;if(b!==null){b=AV9(b);if(b!==null&&!FQ(b.bJa))return b.bJa;}return a.ckV.bJa;},CZI=(a,b)=>{let c,d,e,f;if(b!==null){c=(AC0(a)).cp();B8();c=B0(c,AHM);d=GM(c);e=D0(c,(AC0(a)).ly());B3();c=CF;f=AC0(a);Ed();return Py(b,e,c,f,d,J0,null,null);}GO();return HD;},APf=a=>{return CZI(a,AXq(a));},Bw3=a=>{let b;b=a.b9_;return CZI(a,!(b!==null&&!FQ(b.bJa))?null:a.b9_.bJa);}; +function A_t(){let a=this;J9.call(a);a.cep=null;a.cw0=null;a.cfa=null;a.czV=null;a.ch2=null;a.cnI=null;a.b54=null;a.cEo=null;a.c32=null;a.cUU=null;} +let Xu=null,BWg=()=>{BWg=Z(A_t);D6J();},CqO=(a,b)=>{let c,d,e;c=new A_t;d=a.cep;b=b.cep;e=new S;T(e);H(H(e,d),b);Cgh(c,Q(e),a.cnI,a.cw0,a.cfa,a.ch2,a.b54,a.cEo);return c;},Cgh=(a,b,c,d,e,f,g,h)=>{BWg();Vo(a);a.cnI=c;a.b54=g;a.cEo=h;VO();if(BGW(Bs6(h,BAd))&&NB(Xu,b)){Bs6(a.cEo,BcD);c=DG(Xu,b);g=new S;T(g);H(H(g,E(6560)),c);Q(g);}a.cep=b;a.cw0=d;a.czV=N1(b,d);a.cfa=e;a.ch2=f;},Cdv=(a,b,c,d,e,f,g)=>{let h=new A_t();Cgh(h,a,b,c,d,e,f,g);return h;},CIE=(a,b)=>{return ((BnB(a,b)).bGF+10.0)/2.0;},BWk=(a,b)=>{let c, +d;c=CIE(a,b);d=BO4(a,b);GO();if(d!==HD)c=c+(d.cF(b)).bGF+20.0;return c;},EKY=(a,b)=>{let c,d;c=CIE(a,b);d=BOO(a,b);GO();if(d!==HD)c=c+(d.cF(b)).bGF+20.0;return c;},EvP=(a,b)=>{let c,d,e;c=(BnB(a,b)).bGE+10.0;d=BO4(a,b);GO();if(d!==HD)c=BC(c,(d.cF(b)).bGE);e=BOO(a,b);if(e!==HD)c=BC(c,(e.cF(b)).bGE);return c;},BnB=(a,b)=>{return b.gS(Gk(a.cw0),a.cep);},ELT=(a,b)=>{a.c32=b;},DXw=(a,b)=>{a.cUU=b;},DvM=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=b.hE();d=De(a,c);e=BnB(a,c);f=FO(BnB(a,c),10.0,10.0);g=a.cfa;B9();h=(BJ(g,Cz)).cu(a.ch2);i +=(BJ(a.cfa,CK)).cu(a.ch2);g=BO4(a,c);j=BOO(a,c);GO();k=g===HD?0.0:(g.cF(c)).bGF+20.0;l=(d.bGE-f.bGE)/2.0;m=a.cnI;HF();if(!(m!==YU&&m!==ALu)){m=M6(f);(((b.h2(Bh(l,k))).h2(h)).h2(Dw(0.5))).hP(m);}else if(m===AIA){m=M6(f);(((b.h2(Bh(l,k))).h2(h)).h2(J$(5.0,5.0,1.0))).hP(m);}else{m=Ge(M6(f),10.0);((((b.h2(Bh(l,k))).h2(h)).h2(Cc(i))).h2(Dw(1.5))).hP(m);}(b.h2(Bh(5.0+l,k+5.0+e.bGF-AIj(a.czV,c)))).hP(a.czV);if(g!==HD)g.cC(b.h2(Bh((d.bGE-(g.cF(c)).bGE)/2.0,0.0)));if(j!==HD)j.cC(b.h2(Bh((d.bGE-(j.cF(c)).bGE)/2.0,d.bGF +-(j.cF(c)).bGF)));if(l>0.0){Xd(a,b,BWk(a,c),0.0,l,0.5,25.0);Xd(a,b,BWk(a,c),l+f.bGE,d.bGE,0.5,25.0);}},BO4=(a,b)=>{let c,d,e,f,g;c=a.c32;if(c!==null){c=B4(a.b54.bH$,c);d=a.b54;CV();c=Cx$(c,d,Uk);e=BUW(c,b);f=e.bGE*0.5;d=BA(f,e.bGF);g=BA(f,20.0+e.bGF);DC();CLF(c,G_,d,g);return c;}GO();return HD;},BOO=(a,b)=>{let c,d,e,f;c=a.cUU;if(c!==null){c=B4(a.b54.bH$,c);d=a.b54;CV();c=Cx$(c,d,Uk);e=(BUW(c,b)).bGE*0.5;d=BA(e,0.0);f=BA(e,(-20.0));DC();CLF(c,HG,d,f);return c;}GO();return HD;},Fky=(a,b)=>{b=new BV;X(b);J(b);},D$F +=a=>{return a.cep;},D6J=()=>{let b;b=Dy();Xu=b;C9(b,E(638),E(6561));C9(Xu,E(6562),E(6563));C9(Xu,E(6564),E(1754));C9(Xu,E(6565),E(6566));C9(Xu,E(6567),E(6568));C9(Xu,E(4589),E(6569));C9(Xu,E(6570),E(6571));C9(Xu,E(6572),E(6573));C9(Xu,E(423),E(6574));},D4a=N(); +function CL$(){let a=this;J9.call(a);a.cHr=null;a.cu7=null;a.cCL=null;a.cIE=null;a.dek=null;} +let Bx4=(a,b)=>{return (Br1(a,b)).bGF/2.0;},DNk=(a,b)=>{return Bx4(a,b);},D1Z=(a,b)=>{return Bx4(a,b);},EOF=(a,b)=>{return (Br1(a,b)).bGE+10.0;},Br1=(a,b)=>{let c,d,e,f,g;c=0.0;d=0.0;e=a.cHr.dX();while(e.dY()){f=e.dZ();g=b.gS(Gk(a.cu7),f);c=BC(c,g.bGE);d=d+g.bGF;}return Cl(c,d);},Ecu=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=b.hE();d=De(a,c);Br1(a,c);e=FO(Br1(a,c),10.0,0.0);f=a.cCL;B9();f=(BJ(f,Cz)).cu(a.cIE);(BJ(a.cCL,CK)).cu(a.cIE);g=(d.bGE-e.bGE)/2.0;h=M6(e);(((b.h2(Bh(g,0.0))).h2(f)).h2(J$(5.0,5.0,1.0))).hP(h);i +=0.0;f=a.cHr.dX();j=5.0+g;while(f.dY()){k=N1(f.dZ(),a.cu7);l=AGp(k,c);(b.h2(Bh(j,i+l.bGF-AIj(k,c)))).hP(k);if(i>0.0)ABi(a,b.h2(Dw(0.3)),i,0.0,e.bGE);i=i+l.bGF;}if(g>0.0){Xd(a,b,Bx4(a,c),0.0,g,0.5,25.0);Xd(a,b,Bx4(a,c),g+e.bGE,d.bGE,0.5,25.0);}},Fv0=(a,b)=>{b=new BV;X(b);J(b);}; +function CNC(){let a=this;J9.call(a);a.b5X=null;a.caf=null;a.cD2=null;a.c0R=null;a.cPf=null;} +let CFd=(a,b)=>{return BC((AJ8(a,a.b5X,b)).bGF,(AJ8(a,a.caf,b)).bGF)/2.0;},ELG=(a,b)=>{return CFd(a,b);},D3d=(a,b)=>{return CFd(a,b);},Fem=(a,b)=>{return (AJ8(a,a.b5X,b)).bGE+(AJ8(a,a.caf,b)).bGE+20.0;},AJ8=(a,b,c)=>{let d,e,f,g,h;d=0.0;e=0.0;f=A6v(b);while(A5t(f)){g=A18(f);h=c.gS(Gk(a.cD2),g);d=BC(d,h.bGE);e=e+h.bGF;}return Cl(d,e);},E6j=(a,b)=>{let c,d,e,f,g;c=b.hE();d=De(a,c);e=AJ8(a,a.b5X,c);f=AJ8(a,a.caf,c);g=a.c0R;B9();c=b.h2((BJ(g,Cz)).cu(a.cPf));g=FO(e,10.0,0.0);f=FO(f,10.0,0.0);c=c.h2(J$(5.0,5.0,1.0));(c.h2(BM(g.bGE))).hP(M6(f));f +=EE();Ec(f,g.bGE,0.0);B2(f,0.0,0.0);B2(f,0.0,g.bGF);B2(f,g.bGE,g.bGF);(c.h2(BW((d.bGF-g.bGF)/2.0))).hP(f);C1z(a,b.h2(BW((d.bGF-e.bGF)/2.0)),a.b5X);C1z(a,b.h2(BM(10.0+e.bGE)),a.caf);},C1z=(a,b,c)=>{let d,e,f,g,h,i;d=b.hE();e=10.0+(AJ8(a,a.b5X,d)).bGE;f=0.0;g=A6v(c);while(A5t(g)){h=N1(A18(g),a.cD2);i=AGp(h,d);(b.h2(Bh(5.0,f+i.bGF-AIj(h,d)))).hP(h);if(f>0.0)ABi(a,b.h2(Dw(0.3)),f,0.0,e);f=f+i.bGF;}},DMJ=(a,b)=>{b=new BV;X(b);J(b);}; +function CkM(){let a=this;J9.call(a);a.cer=null;a.cKT=null;a.c9V=4.0;a.c9W=8.0;a.c8F=6.0;a.cMu=null;a.cck=null;a.db_=null;} +let Cvz=(a,b)=>{return 6.0+a.cer.Wy(b);},FrJ=(a,b)=>{return a.cer.Wz(b)+6.0;},EEc=(a,b)=>{return a.cer.Wx(b)+4.0+8.0+(AGp(a.cck,b)).bGE;},Fkn=(a,b)=>{let c,d,e,f;c=b.hE();d=De(a,c);e=a.cMu;B9();f=(BJ(e,Cz)).cu(a.cKT);e=Ge(M6(d),30.0);((b.h2(f)).h2(J$(2.0,3.0,1.0))).hP(e);(b.h2(Bh(4.0,2.0+Cvz(a,c)+AIj(a.cck,c)))).hP(a.cck);a.cer.cC(b.h2(Bh(4.0+(AGp(a.cck,c)).bGE,6.0)));},EVB=(a,b)=>{b=new BV;X(b);J(b);}; +function CZ6(){let a=this;J9.call(a);a.ccb=null;a.c9S=null;a.cMS=null;a.c90=10.0;a.daY=10.0;a.daZ=10.0;a.cFq=null;a.c1W=null;} +let DpD=(a,b)=>{return 10.0+a.ccb.Wy(b);},Eqc=(a,b)=>{return a.ccb.Wz(b)+10.0;},EFa=(a,b)=>{return a.ccb.Wx(b)+20.0;},DIw=(a,b)=>{let c,d,e,f,g,h,i,j,$$je;c=b.hE();d=De(a,c);a:{b:{try{e=DV(a.cMS,E(6575));f=(b.h2(e)).h2(Cc(e));f.hP(M6(d));g=c.gS(Gk(a.c1W),DA4(a.cFq));(f.h2(BW( -Pz(g)))).hP(M6(FO(g,10.0,0.0)));break a;}catch($$e){$$je=P($$e);if($$je instanceof J1){h=$$je;break b;}else{throw $$e;}}}AEM(h);}i=DpD(a,c);ABi(a,b,i,0.0,10.0);j=d.bGE;ABi(a,b,i,j-10.0,j);a.ccb.cC(b.h2(Bh(10.0,10.0)));(b.h2(BM(5.0))).hP(a.cFq);},Epi +=(a,b)=>{b=new BV;X(b);J(b);}; +function A0c(){let a=this;J9.call(a);a.c$6=20.0;a.bSD=null;} +let DRT=a=>{Vo(a);a.c$6=20.0;a.bSD=Bk();},Ci9=()=>{let a=new A0c();DRT(a);return a;},A3r=(a,b)=>{Ik(a.bSD,0,b);},EKT=(a,b)=>{let c,d,e,f,g,h;c=b.hE();d=C5$(a,c);e=0.0;ABi(a,b,d,0.0,e);f=0;while(true){g=a.bSD;if(f>=g.bGJ)break;g=Be(g,f);g.cC(b.h2(Bh(e,d-g.Wy(c))));h=e+(De(g,c)).bGE;if(f==(a.bSD.bGJ-1|0))e=h;else{e=h+20.0;Xd(a,b,d,h,e,0.5,25.0);}f=f+1|0;}},C5$=(a,b)=>{let c,d;c=0.0;d=Br(a.bSD);while(Bq(d)){c=BC(c,(Bm(d)).Wy(b));}return c;},DLo=(a,b)=>{let c,d;c=0.0;d=Br(a.bSD);while(Bq(d)){c=BC(c,(Bm(d)).Wz(b));}return c;},Fdf +=(a,b)=>{let c,d,e;c=0.0;d=0;while(true){e=a.bSD;if(d>=e.bGJ)break;c=c+(Be(e,d)).Wx(b);if(d!=(a.bSD.bGJ-1|0))c=c+20.0;d=d+1|0;}return c;},Cpq=a=>{return Be(a.bSD,0);}; +function AVr(){let a=this;J9.call(a);a.bTC=null;a.dcM=12.0;a.c9T=0;} +let FkN=a=>{Vo(a);a.bTC=Bk();a.dcM=12.0;},B$S=()=>{let a=new AVr();FkN(a);return a;},A9o=(a,b)=>{Ik(a.bTC,0,b);},C9k=(a,b)=>{return (Be(a.bTC,0)).Wy(b);},ErA=(a,b)=>{let c,d,e;c=(Be(a.bTC,0)).Wz(b);d=1;while(true){e=a.bTC;if(d>=e.bGJ)break;e=Be(e,d);c=c+e.Wy(b)+e.Wz(b)+10.0;d=d+1|0;}return c;},EKy=(a,b)=>{let c,d;c=0.0;d=Br(a.bTC);while(Bq(d)){c=BC(c,(De(Bm(d),b)).bGE);}return c+48.0;},FaR=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p;c=b.hE();d=0.0;e=0.0;f=(De(a,c)).bGE;g=f-12.0;h=g-12.0;i=C9k(a,c);if(a.c9T){j=0;while +(true){k=a.bTC;if(j>=k.bGJ)break;k=Be(k,j);l=De(k,c);e=d+k.Wy(c);k.cC(b.h2(Bh(24.0,d)));k=A9T(12.0);m=b.h2(Bh(12.0,e));Pv(k,m);Xd(a,b,e,24.0+l.bGE,h,0.3,25.0);k=Bav(12.0);m=b.h2(Bh(g,e));Pv(k,m);d=d+l.bGF+10.0;j=j+1|0;}n=e-12.0;AVT(a,b,12.0,0.0,n);AVT(a,b,g,0.0,n);}else{j=0;while(true){k=a.bTC;if(j>=k.bGJ)break;k=Be(k,j);l=De(k,c);e=d+k.Wy(c);k.cC(b.h2(Bh(24.0,d)));if(!j){ABi(a,b,e,0.0,24.0);ABi(a,b,e,24.0+l.bGE,f);}else if(j>0&&j<(a.bTC.bGJ-1|0)){k=A9T(12.0);m=b.h2(Bh(12.0,e));Pv(k,m);Xd(a,b,e,24.0+l.bGE,h, +0.5,25.0);k=Bav(12.0);m=b.h2(Bh(g,e));Pv(k,m);}else if(j==(a.bTC.bGJ-1|0))Xd(a,b,e,24.0+l.bGE,h,0.5,25.0);d=d+l.bGF+10.0;j=j+1|0;}n=e-i;o=b.h2(Bh(12.0,i));p=b.h2(Bh(g,i));b=A9T(12.0);c=o.h2(BW(n));Pv(b,c);i=n-12.0;AVT(a,o,0.0,12.0,i);Pv(BGZ(12.0),o);b=Bav(12.0);c=p.h2(BW(n));Pv(b,c);AVT(a,p,0.0,12.0,i);Pv(BTy(12.0),p);}}; +function BlK(){let a=this;J9.call(a);a.dcU=24.0;a.dcV=20.0;a.b4J=null;a.b_k=null;a.cOL=null;a.c0U=null;} +let DlV=(a,b,c)=>{Vo(a);a.dcU=24.0;a.dcV=20.0;a.b_k=c;a.b4J=b;},BeS=(a,b)=>{let c=new BlK();DlV(c,a,b);return c;},DaH=(a,b)=>{return 10.0+((BDC(a,b)).cF(b)).bGF;},C0S=(a,b)=>{return 20.0+((BDC(a,b)).cF(b)).bGF;},EAz=(a,b)=>{let c;c=CXR(a,b);return 10.0+a.b4J.Wy(b)+a.b4J.Wz(b)+(c.cF(b)).bGF;},E3d=(a,b)=>{return a.b4J.Wx(b)+48.0;},Fr9=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=b.hE();d=De(a,c);e=DaH(a,c);Xd(a,b,e,0.0,d.bGE,0.4,25.0);f=C0S(a,c)+a.b4J.Wy(c)-e;g=b.h2(Bh(0.0,e));h=EE();i=f/2.0;Ec(h,0.0,0.0);j=i-9.0;HY(h,9.0, +0.0,12.0,j,12.0,i);k=i+9.0;HY(h,12.0,k,15.0,f,24.0,f);g.hP(h);h=b.h2(Bh(d.bGE-24.0,e));g=EE();Ec(g,0.0,f);HY(g,9.0,f,12.0,k,12.0,i);HY(g,12.0,j,15.0,0.0,24.0,0.0);h.hP(g);a.b4J.cC(b.h2(Bh(24.0,C0S(a,c))));h=BDC(a,c);GO();if(h!==HD)h.cC(b.h2(BM((d.bGE-(h.cF(c)).bGE)/2.0)));g=CXR(a,c);if(g!==HD){l=g.cF(c);g.cC(b.h2(Bh((d.bGE-l.bGE)/2.0,d.bGF-l.bGF)));}},FlY=(a,b)=>{b=new BV;X(b);J(b);},DP6=(a,b)=>{a.cOL=b;},EEz=(a,b)=>{a.c0U=b;},BDC=(a,b)=>{let c;b=a.cOL;if(b!==null){b=B4(a.b_k.bH$,b);c=a.b_k;CV();return KN(A0Q(b, +c,Uk),0.0,0.0,0.0,10.0);}GO();return HD;},CXR=(a,b)=>{let c;b=a.c0U;if(b!==null){b=B4(a.b_k.bH$,b);c=a.b_k;CV();return KN(A0Q(b,c,Uk),0.0,0.0,10.0,0.0);}GO();return HD;},CAw=N(BlK),Eyh=(a,b,c)=>{DlV(a,B09(b),c);},Ddz=(a,b)=>{let c=new CAw();Eyh(c,a,b);return c;}; +function Bgy(){let a=this;J9.call(a);a.c9p=15.0;a.c9q=12.0;a.ceE=null;a.b0Z=null;a.cHG=null;} +let B4i=(a,b,c,d,e)=>{Vo(a);a.c9p=15.0;a.c9q=12.0;a.ceE=b;a.cHG=d;a.b0Z=c!==null?N1(c,d):null;},CJJ=(a,b,c,d)=>{let e=new Bgy();B4i(e,a,b,c,d);return e;},Emb=(a,b)=>{B4i(a,b,null,null,null);},B09=a=>{let b=new Bgy();Emb(b,a);return b;},Cx_=(a,b)=>{let c;c=12.0+a.ceE.Wy(b);if(a.b0Z!==null)c=c+AMM(a);return c;},AMM=a=>{if(a.b0Z===null)return 0.0;return 15.0;},EAe=(a,b)=>{return a.ceE.Wz(b);},Fsf=(a,b)=>{return a.ceE.Wx(b)+30.0;},E3_=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n;c=b.hE();d=De(a,c);e=Cx_(a,c);f=A9T(8.0);g +=b.h2(Bh(8.0,e));Pv(f,g);h=13.0+AMM(a);i=e-8.0;AVT(a,b,8.0,h,i);g=BTy(8.0);f=b.h2(Bh(8.0,5.0+AMM(a)));Pv(g,f);h=5.0+AMM(a);j=d.bGE-15.0;(b.h2(Bh(15.0,h))).hP(DE(j-15.0));g=(b.h2(new VH)).h2(Bh(6.0+j*0.6-2.0,h));f=EE();Ec(f,0.0,0.0);B2(f,0.0,(-3.0));B2(f,(-6.0),0.0);B2(f,0.0,3.0);B2(f,0.0,0.0);g.hP(f);g=Bav(8.0);f=b.h2(Bh(d.bGE-8.0,e));Pv(g,f);AVT(a,b,d.bGE-8.0,13.0+AMM(a),i);g=BGZ(8.0);f=b.h2(Bh(d.bGE-8.0,5.0+AMM(a)));Pv(g,f);ABi(a,b,e,0.0,15.0);k=d.bGE;ABi(a,b,e,k-15.0,k);a.ceE.cC(b.h2(Bh(15.0,12.0+AMM(a))));if +(a.b0Z!==null){e=d.bGE;l=(b.h2(Bh(0.0,10.0))).h2(Dw(0.5));Pv(BTy(5.0),l);m=Bav(5.0);g=new FG;n=e/2.0;Hs(g,n,0.0);f=l.h2(g);Pv(m,f);f=A9T(5.0);g=l.h2(Bh(n,0.0));Pv(f,g);g=BGZ(5.0);f=l.h2(Bh(e,0.0));Pv(g,f);g=l.h2(Bh(5.0,0.0));f=new SA;k=n-10.0;A$K(f,k,0.0);g.hP(f);(l.h2(Bh(5.0+n,0.0))).hP(EB(k,0.0));g=c.gS(Gk(a.cHG),a.b0Z.bPs);k=c.jm(Gk(a.cHG),a.b0Z.bPs);(b.h2(Bh((d.bGE-g.bGE)/2.0,k))).hP(a.b0Z);}},EHf=(a,b)=>{b=new BV;X(b);J(b);}; +function B3j(){F.call(this);this.bT7=null;} +let C_L=0,BBd=()=>{BBd=Z(B3j);EkC();},BWR=(a,b,c)=>{let d;d=CAz(a.bT7,b);if(d===null)d=c;else{Lf();if(b!==O1)d=c;else if(Ko(d,c)<=0)d=c;}Es(a.bT7,b,d);b=a.bT7;if(b.bHv>2){b=G3(G8(b));GZ(b);CRR(b);}if(Df()){BBd();if(!C_L&&a.bT7.bHv>2){b=new C4;X(b);J(b);}}},CNX=(a,b,c)=>{let d,e,f;d=FW(a.bT7,c);if(d===null){Lf();d=Oq;if(c!==d){if(c===O1){c=FW(a.bT7,d);d=a.bT7;e=AZ6;d=FW(d,e);b=Deu(b,c.bJ5,d);f=c.bJ5;b=b;b.csT=f;c=CJC(b.c6o.cGp,b.cNc);QX();c=C8C(c,f,Bf9);b.cUe=c;return B4$(c);}return A2d(Bla(V(1)));}d=a.bT7;c +=O1;c=FW(d,c);d=a.bT7;e=AZ6;d=FW(d,e);return B4$((Deu(b,c.bJ5,d)).csT);}return d;},EkC=()=>{C_L=0;}; +function BIw(){F.call(this);this.cdS=null;} +let A2d=b=>{let c,d;c=new BIw;if(FE(b.bN6,BH)?0:1){c=new Bt;b=BY(b);d=new S;T(d);H(H(d,E(6576)),b);Bp(c,Q(d));J(c);}c.cdS=b;return c;},Dte=(a,b)=>{let c,d;if(a!==b){if(b instanceof BIw){c=b;b=a.cdS;c=c.cdS;if(b===c)d=1;else if(!(c instanceof BkI))d=0;else{c=c;d=!(DS(b.bN6,c.bN6)&&b.bSe==c.bSe)?0:1;}return d;}return 0;}return 1;},EHQ=a=>{return CdM(a.cdS);},A6d=N(Bx),A0I=null,BwN=null,Etb=null,AIO=()=>{AIO=Z(A6d);D2w();},DQu=(a,b,c)=>{AIO();Ct(a,b,c);},CuC=(a,b)=>{let c=new A6d();DQu(c,a,b);return c;},D2w=()=> +{let b,c,d;A0I=CuC(E(6577),0);b=CuC(E(6578),1);BwN=b;c=K(A6d,2);d=c.data;d[0]=A0I;d[1]=b;Etb=c;},Cik=N(),AZW=null,Bx0=null,A6T=0.0,BTO=0.0,BTP=0.0,BBe=0.0,BB8=0.0,AGa=()=>{AGa=Z(Cik);Ef3();},CvY=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p;AGa();d=c/360.0*3.141592653589793*2.0;e=Bk();f=VT(b+16.0,3.0)/1560896.0;if(!(f>BB8))f=b/BBe;g=0;while(g<3){h=AZW.data;i=h[g].data[0];j=h[g].data[1];k=h[g].data[2];l=0;m=284517.0*i-94839.0*k;c=(838422.0*k+769860.0*j+731718.0*i)*b;k=632260.0*k-126452.0*j;while(l<2){n=m*f;i=c*f-Ev(769860, +l)*b;j=k*f+(126452*l|0);h=Hr(2);o=h.data;o[0]=n/j;o[1]=i/j;U(e,h);l=l+1|0;}g=g+1|0;}i=1.7976931348623157E308;p=Br(e);while(Bq(p)){h=(Bm(p)).data;b=h[1]/(H0(d)-h[0]*G4(d));if(!(b>=0.0)?0:1)i=Eh(i,b);}return i;},AXt=(b,c)=>{let d,e,f,g;AGa();d=0.0;e=0;while(true){f=b.data;if(e>=f.length)break;g=c.data;d=d+f[e]*g[e];e=e+1|0;}return d;},B4O=b=>{AGa();if(!(b<=0.0031308))return 1.055*VT(b,0.4166666666666667)-0.055;return 12.92*b;},BRt=b=>{AGa();if(b>0.04045)return VT((b+0.055)/1.055,2.4);return b/12.92;},CqL=b=>{let c, +d,e,f,g,h,i,j;AGa();b=b.data;c=b[0];d=b[1];e=b[2];b=(e>99.9999999?Gh([100.0,0.0,c]):e<1.0E-8?Gh([0.0,0.0,c]):Gh([e,CvY(e,c)/100.0*d,c])).data;c=b[0];f=b[1];d=b[2]/360.0*2.0*3.141592653589793;e=G4(d)*f;f=H0(d)*f;b=Hr(3).data;b[0]=c;b[1]=e;b[2]=f;c=b[0];g=b[1];e=b[2];if(c===0.0)b=Gh([0.0,0.0,0.0]);else{d=13.0*c;f=g/d+BTO;d=e/d+BTP;c=c<=8.0?A6T*c/BBe:A6T*VT((c+16.0)/116.0,3.0);h=9.0*c;e=0.0-h*f/((f-4.0)*d-f*d);b=Gh([e,c,(h-15.0*d*c-d*e)/(3.0*d)]);}i=Hr(3);j=i.data;j[0]=B4O(AXt(AZW.data[0],b));j[1]=B4O(AXt(AZW.data[1], +b));j[2]=B4O(AXt(AZW.data[2],b));return i;},CtL=b=>{let c,d,e,f,g,h;AGa();b=b.data;c=Gh([BRt(b[0]),BRt(b[1]),BRt(b[2])]);b=Hr(3).data;b[0]=AXt(Bx0.data[0],c);b[1]=AXt(Bx0.data[1],c);b[2]=AXt(Bx0.data[2],c);d=b[0];e=b[1];f=b[2];g=4.0*d;d=d+15.0*e+3.0*f;h=g/d;d=9.0*e/d;e=e<=BB8?e/A6T*BBe:116.0*VT(e/A6T,0.3333333333333333)-16.0;if(e===0.0)b=Gh([0.0,0.0,0.0]);else{f=13.0*e;h=f*(h-BTO);b=Gh([e,h,f*(d-BTP)]);}b=b.data;e=b[0];d=b[1];f=b[2];h=Gs(d*d+f*f);if(h<1.0E-8)d=0.0;else{d=Nz(f,d)*180.0/3.141592653589793;if(d +<0.0)d=360.0+d;}b=Hr(3).data;b[0]=e;b[1]=h;b[2]=d;e=b[0];f=b[1];h=b[2];return e>99.9999999?Gh([h,0.0,100.0]):e<1.0E-8?Gh([h,0.0,0.0]):Gh([h,f/CvY(e,h)*100.0,e]);},Ef3=()=>{let b,c;b=K(Ib(AUQ),3);c=b.data;c[0]=Gh([3.240969941904521,(-1.537383177570093),(-0.498610760293)]);c[1]=Gh([(-0.96924363628087),1.87596750150772,0.041555057407175]);c[2]=Gh([0.055630079696993,(-0.20397695888897),1.056971514242878]);AZW=b;b=K(Ib(AUQ),3);c=b.data;c[0]=Gh([0.41239079926595,0.35758433938387,0.18048078840183]);c[1]=Gh([0.21263900587151, +0.71516867876775,0.072192315360733]);c[2]=Gh([0.019330818715591,0.11919477979462,0.95053215224966]);Bx0=b;A6T=1.0;BTO=0.19783000664283;BTP=0.46831999493879;BBe=903.2962962;BB8=0.0088564516;},ALV=N(),C1a=(a,b)=>{let c,d;c=new DfV;d=Cp(b);c.cJS=a;c.dcK=d;c.b_G=d;return c;}; +function Cgw(){let a=this;ALV.call(a);a.cyT=0;a.dbC=null;a.cSQ=null;} +function Do7(){let a=this;F.call(a);a.cav=null;a.b9F=0;a.cmK=null;a.b4K=null;a.cbY=null;a.cMe=null;a.cps=null;a.bXh=null;} +let CJ8=(a,b)=>{let c,d;if(b){c=a.cbY;SQ();d=UO;if(c===d&&!a.b4K.bGJ){B8();return Q1(Du(Djs,a.bXh),b);}if(c!==d){if(!a.b4K.bGJ){B8();return Q1(Du(Dai,a.bXh),b);}B8();return Q1(Du(CSt,a.bXh),b);}B8();return Q1(Du(Czj,a.bXh),b);}d=a.cbY;SQ();if(d===UO){B8();return Q1(Du(CNG,a.bXh),b);}B8();return Q1(Du(C6d,a.bXh),b);},Dnf=(a,b,c,d,e,f,g)=>{let h;h=DsI(b,c,d,a,e,f,g);U(a.b4K,h);return h;},Eix=(a,b,c,d,e,f,g,h)=>{a.b4K=Bk();a.cMe=c;a.cps=b;a.cav=f;a.b9F=d;a.cmK=e;a.cbY=g;a.bXh=h;},DsI=(a,b,c,d,e,f,g)=>{let h=new Do7();Eix(h, +a,b,c,d,e,f,g);return h;},DPN=a=>{return YE(a.cav);},Dgt=a=>{return a.b4K;},CjR=N(0); +function DqC(){let a=this;F.call(a);a.ctM=null;a.bYA=null;a.c5y=0.0;a.csL=null;a.cyo=null;a.c0W=null;a.cxT=null;} +let DqR=(a,b,c)=>{return UR(Cgm(b),c,c,null);}; +function BVE(){let a=this;AME.call(a);a.bUS=null;a.cM2=0;a.c5h=0;a.cG8=null;a.cWV=null;} +let CvK=(a,b,c,d,e,f,g,h,i,j,k,l,m,n)=>{let o;BMe(a,b,c,d,e,f,k,l,n,j);a.cWV=m;a.bUS=g;a.cM2=h;a.c5h=i;j=new AUp;k=k;b=new AUp;c=k.b5x;AQx();d=new A_7;c=c;ByD(d,c.bNW.c38);b.bNW=d;c=NA(c);while(c.dY()){Qm(b.bNW,c.dZ(),A_E);}d=P2(k.cdN);while(OD(d)){c=Pr(d);e=BLe(k);l=BOc(k);while(Ko(e,l)<=0){if(AEP(e)===c){m=Jj(e);KM(b,m);}e=Qu(e);}}j.bNW=AAk();b=b.dX();while(b.dY()){Qm(j.bNW,b.dZ(),A_E);}a.cG8=j;o=BTL(k);while(Ko(f,g)<=0){if(BoD(o,Jj(f))){b=a.cG8;c=Jj(f);KM(b,c);}f=Qu(f);}},Fx4=(a,b,c,d,e,f,g,h,i,j,k,l,m)=> +{let n=new BVE();CvK(n,a,b,c,d,e,f,g,h,i,j,k,l,m);return n;},BOh=(a,b)=>{let c;c=Of(TH(a));return c.bIl+((BRv(a)).cF(b)).bGF+c.bJU;},E23=(a,b,c,d,e)=>{let f,g,h,i,j,k,l;f=BRv(a);g=f.cF(b.hE());h=B0(a.bR1,Bit(a));i=My(h);j=Of(h);b=b.h2(BW(i.bIl+j.bIl));if(!BPm(c)){if(!CoO(c)){k=a.bHk.Ts(a.bH_)+6.0;l=a.bHk.Ts(a.bUS)-6.0;if(!(l-k>g.bGE))k=Ch4(a,l);f.cC(b.h2(BM(k)));return;}f.cC(b.h2(BM(e+i.bIv)));return;}if(!C$E(c))f.cC(b.h2(BM(i.bIv)));else f.cC(b.h2(BM(d-g.bGE-i.bKJ)));},BRv=a=>{let b,c;b=B4(Bcc(a),a.cix);c= +A84(a);B3();return C_(b,c,CF,new Sz);},Ch4=(a,b)=>{let c,d,e,f,g,h,i;c=a.cWV.dX();a:{b:{while(c.dY()){c:{d=c.dZ();e=a.bZs;f=d.b48;if(f.bOq===e){g=f.bOw;Lf();if(g===Oq){h=1;break c;}}d:{i=d.b8D;if(i.bOq===e){d=f.bOw;Lf();f=Oq;if(d===f&&i.bOw===f)break d;}h=0;break c;}h=1;}if(h)break b;}h=0;break a;}h=1;}if(h)return b+18.0;return b+8.0;},DIN=(a,b,c)=>{let d,e,f,g,h;d=0.0;e=(BRv(a)).cF(b);f=a.bHk.Ts(a.bH_)+6.0;g=a.bHk.Ts(a.bUS)-6.0;if(g-f<=e.bGE){h=Ch4(a,g)+e.bGE;if(h>c)d=h-c;}if(a.bX7===null)c=d;else{c=a.bHk.Ts(a.bH_) ++(De(ASe(a),b)).bGE-c;if(!(c>d))c=d;}return c;},Bit=a=>{B8();return Du(B2r,a.bZs.cqg);},DZH=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n;c=b.h2(Bh(a.bHk.Ts(a.bH_),B47(a,b.hE())));d=a;CvF(d,c);c=d.ce2;b=c!==null&&BhY(c)?BX4(c,b):(b.h2(BF7(a))).h2(Cc(B2m(a)));c=B0(a.bR1,Bit(a));e=My(c);f=a.bHk.Ts(a.bH_)+e.bIv;g=a.bHk.Ts(a.bUS)-e.bKJ;h=a.b16;if(h!==null)b.hF(h);b=b.h2(BW(e.bIl));h=b.hE();B9();i=(BJ(c,Jm)).oK();e=Bk();j=NA(a.cG8);while(j.dY()){c=EA(j.dZ());k=a.bHk.Ts(c);l=a.bHk.Ts(c)+a.bHk.a1s(c);c=AMs(k,l);U(e,c);}c=a.bR1;B8();m +=(BJ(B0(c,Cqk),CK)).cu(a.bTK);j=new BEc;n=d.b$T;AV5();j.bTY=i;j.b65=n;if(!(f{let c;c=My(TH(a));return c.bIl+BOh(a,b)+c.bJU;},Eq6=(a,b)=>{if(a.bX7!==null)return B47(a,b)+(De(ASe(a),b)).bGF;return ABc(a,b);},ESM=(a,b)=>{let c,d,e;c=ABc(a,b);d=a.bHk.Ts(a.bH_);e=a.bHk.Ts(a.bUS);return A7Q(d,CW(AGV(a,b)),e-d,c);},Fdt=(a,b)=>{let c;if(a.bX7!==null){c=De(ASe(a),b);return A7Q(a.bHk.Ts(a.bH_), +CW(AGV(a,b))+B47(a,b),c.bGE,c.bGF);}return null;},EM4=(a,b,c,d)=>{let e,f;PW();if(c===Qh)e=a.bHk.Ts(a.bH_);else if(c===P1)e=a.bHk.Ts(a.bUS);else if(!(c!==ALy&&c!==AFK)){e=a.bHk.Ts(a.bH_)+8.0;if(e>a.bHk.Ts(a.bUS))e=(a.bHk.Ts(a.bH_)+a.bHk.Ts(a.bH_)+a.bHk.a1s(a.bH_))/2.0;}else{if(c!==AJV&&c!==AIu){b=new Bt;X(b);J(b);}e=a.bHk.Ts(a.bUS)-8.0;if(e{let c,d,e,f,g;TD(a.bJc);a.bWY=b;a.bKa=0;while(a.bKa3?0:1);U(d,e);break a;}f=LE(a);if(f>3){b=new Bt;c=a.bKa;d=CR();ZY(H(d,E(6579)),c);CNM(b,CH(d));J(b);}d=a.bJc;e=FwF(f);U(d,e);break a;}f=LE(a);if(f==2){d=a.bJc;e=DXz(1);U(d,e);break a;}d=a.bJc;e=Wo(1,f,8);U(d,e);break a;}f=LE(a);if(f<=2){d=a.bJc;e=EN5(f);U(d, +e);break a;}d=a.bJc;e=Flr(a.ca5,f!=3?0:1);U(d,e);break a;}if(B_t(a,c)){LE(a);break a;}d=CR();while(a.bKa=a.bWY.bGI.length)break;if(Bn(a.bWY,a.bKa)!=39)break;Bb(d,39);a.bKa=a.bKa+1|0;}}e=a.bJc;g=Chb(Q(d));U(e,g);}}},B_t=(a,b)=>{a:{b:{if(b!=39&&!(b>=97&&b<=122)){if(b<65)break b;if(b>90)break b;}b +=1;break a;}b=0;}return b;},LE=a=>{let b,c,d,e;b=1;c=a.bWY;d=a.bKa;a.bKa=d+1|0;e=Bn(c,d);while(a.bKa{let c,d,e;a.ceV=a.ceV+1|0;c=a.cv5;CzN(c,c.b1K+1|0);d=c.b0Q.data;e=c.b1K;c.b1K=e+1|0;d[e]=b<<24>>24;if(a.ceV>1048576){c=new Dd;Bp(c,E(6580));J(c);}},AR9=N(JC),Esw=(a,b,c,d)=>{return Cl(1.0,1.0);},E7d=(a,b,c,d)=>{return;}; +function Ck4(){let a=this;F.call(a);a.bTq=0;a.bZc=0;a.bY8=0;a.bUA=0;} +let DiU=a=>{return (a.bZc-a.bTq|0)+1|0;},Ctx=a=>{return (a.bUA-a.bY8|0)+1|0;},DAj=a=>{let b,c,d,e,f,g;b=a.bTq;c=a.bY8;d=a.bZc;e=a.bUA;f=new S;T(f);Bb(f,40);BE(f,b);Bb(f,44);BE(f,c);g=H(f,E(6581));BE(g,d);Bb(g,44);BE(g,e);Bb(g,41);return Q(f);}; +function BWJ(){let a=this;F.call(a);a.b$V=null;a.cEq=null;} +let CyN=(a,b)=>{a.b$V=Bk();a.cEq=b;},DPk=a=>{let b=new BWJ();CyN(b,a);return b;},ClM=a=>{return AFN(a.b$V);},CFk=(a,b)=>{U(a.b$V,b);},Dqq=(a,b)=>{b=b.dX();while(b.dY()){CFk(a,b.dZ());}},Cw2=a=>{let b,c;b=a.b$V;c=b.bGJ;if(c)return Be(b,c-1|0);return null;}; +function ALY(){let a=this;F.call(a);a.cXl=null;a.bOc=null;a.cIY=null;a.bQ7=null;a.bIo=null;a.cTv=null;a.bRd=null;} +let DIJ=a=>{let b,c,d;b=JH(a);c=AFN(a.bOc);d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},Exa=a=>{return a.cXl;},BJZ=(a,b,c,d,e,f)=>{let g,h,i;a.bOc=Bk();B3();a.bQ7=CF;a.bIo=b;a.cTv=c;a.bRd=e;Ed();if(f!==FR){AXA();a.cIY=Chw.ci5;}else{AXA();a.cIY=CrJ.ci5;}f=c.cu0;Ou();if(f===ARX){d=new COK;g=c.cei;d.cJ1=b;d.cnE=g;}else if(f!==Ba0)d=null;else{g=c.cei;while(true){f=d.cfm;if(f.bGJ>g)break;U(f,CL(0));}h=g+1|0;while(true){e=d.cfm;if(e.bGJ<=h)break;EJ(e,h);}i=(Be(e,g)).bHl;d=d.cfm;h=i+1|0;e=CL(h);GJ(d,g,e);g= +c.cei;AGo();c=new CYH;c.c0j=b;c.cNV=g;e=new CYG;e.cRA=b;d=new Qf;f=new S;T(f);BE(f,h);Bb(f,46);ATF(d,Q(f),b,null,c,e,1);}a.cXl=d;if(d!==null)U(a.bOc,d);},DV$=(a,b,c,d,e)=>{let f=new ALY();BJZ(f,a,b,c,d,e);return f;},FsL=a=>{let b;b=a.bOc;if(!b.bGJ)U(b,AKA(E(344),a.bIo));return a.bOc;},BMK=(a,b)=>{a.bIo=b;},VK=(a,b)=>{let c,d,e,f,g;if(Eq(b,57600)==(-1)){if(BO(b,E(1198))){if(BO(b,E(6582))){B3();a.bQ7=CF;b=CC(b,E(6582).bGI.length);}else if(BO(b,E(6583))){B3();a.bQ7=CF;b=CC(b,E(6583).bGI.length);}else if(BO(b,E(6584))) +{B3();a.bQ7=CO;b=CC(b,E(6584).bGI.length);}else if(BO(b,E(6585))){B3();a.bQ7=CO;b=CC(b,E(6585).bGI.length);}else if(BO(b,E(6586))){B3();a.bQ7=Ft;b=CC(b,E(6586).bGI.length);}else if(BO(b,E(6587))){B3();a.bQ7=Ft;b=CC(b,E(6587).bGI.length);}}b=CCY(b);c=a.cTv;d=c.cu0;Ou();if(d!==A7j){if(d!==AG6)CpB(a,b);else{e=a.bOc;d=a.bIo;f=c.cWK;c=a.bRd;g=new DjE;g.cQM=d;g.cdk=b;g.cxz=f;g.cjY=c;U(e,g);}}else{a:{b:{c:{d:{e=a.bIo;switch(c.cei){case 0:break d;case 1:break c;case 2:break b;default:}c=A69(e);break a;}c=AGT(AQ1(e, +4.0));break a;}c=AGT(AQ1(e,2.0));break a;}c=AGT(AQ1(e,1.0));}a.bIo=c;CpB(a,b);}return;}c=new Bt;Bp(c,b);J(c);},CpB=(a,b)=>{let c,d,e,f,g,h;c=new S;T(c);d=0;while(df){g=a.cIY;h=B_(b,d,f);g=DG(g,h);if(g!==null){g=g.dX();while(true){if(!g.dY())break b;h=g.dZ();if(h.boV(b,d))break;}break a;}}}h=null;}if(h!==null){B_s(a,c);d=d+h.boX(a.bRd,b,d,a)|0;}else{Bb(c,Bn(b,d));d=d+1|0;}}B_s(a,c);},B_s=(a,b)=>{let c,d;if(b.bG4){c=a.bOc;d=AKA(Q(b),a.bIo);U(c,d);b.bG4=0;return;}},Fxa +=N(),BdS=(b,c)=>{if(Hh(b)){if(Hh(b)){while(!KX(b)){if(b===c)return 1;b=Ja(b);if(!Hh(b))return 0;}return 0;}b=new Bt;X(b);J(b);}return 0;},BLg=(b,c)=>{let d,e,f,g;if(Hh(b)){d=c.bHn;e=c.bHo;f=Ja(d);g=Ja(e);if(BdS(f,b)&&BdS(g,b))return 1;return 0;}b=new Bt;X(b);J(b);}; +function DhU(){F.call(this);this.cyQ=null;} +let DDt=(a,b)=>{if(KX(b))return Rk(a.cyQ.bQA);return Rk(b);},EjX=(a,b)=>{return A3d(a.cyQ.bVa,b);}; +function ASG(){let a=this;Ez.call(a);a.b2k=null;a.cbZ=null;a.cef=null;} +let Se=null,AI4=()=>{AI4=Z(ASG);DZK();},CkN=(a,b)=>{let c,d,e,f;AI4();HZ(a,b);a.cef=b;c=Yz(DgU(b.bGZ,B1(a.bGR)),a.bGR.bGN,b.bG_);d=IR(AYW(b.bGZ,B1(a.bGR)));e=b.bH1;f=a.bGR;Ed();a.b2k=WB(e,c,d,f,FR,GM(ABP(a)));a.cbZ=b.bIa;},DgU=(b,c)=>{let d;AI4();d=Se;CV();return B0(c,Du(CG(d,AAt),b));},Dcu=(b,c)=>{let d;AI4();d=Se;CV();return B0(c,Du(CG(d,AJp),b));},AYW=(b,c)=>{AI4();return B0(c,Du(Se,b));},ABP=a=>{return AYW(a.bGV.bGZ,B1(a.bGR));},EyH=a=>{E0();return Zr;},Dcg=(a,b)=>{let c,d,e,f;c=ABP(a);B9();d=(BJ(c,Jm)).oK();e +=G1(ABP(a));f=Ge(M6(b),d);f.bG1=e;return f;},CgA=(a,b,c)=>{let d;b=b.h2(Cmq(a));d=a.cef.bG_;CM();d=DQ(d,C6);if(d===null){B9();d=(BJ(c,CK)).cu(a.bGR.bGN);}return b.h2(Cc(d));},Cmq=a=>{let b,c;b=a.cef.bG_;CM();c=DQ(b,E1);if(c===null){c=ABP(a);B9();c=(BJ(c,Cz)).cu(a.bGR.bGN);}return c;},DZK=()=>{B8();Se=BBi;}; +function DfF(){let a=this;ASG.call(a);a.crs=null;a.cH0=0;a.cZi=null;a.cgw=null;a.cJX=null;} +let EjO=(a,b)=>{let c,d,e,f,g;CkN(a,b);c=b.bGZ;a.cH0=!(c!==null&&Bkz(c))?0:1;d=Ls(b.bKL.W0());e=B1(a.bGR);a.cJX=B0(e,Du(Se,a.bGV.bGZ));b=Se;CV();a.cZi=B0(e,Du(CG(b,AAt),a.bGV.bGZ));b=B0(e,Du(CG(Se,AJp),a.bGV.bGZ));a.cgw=b;f=D0(b,a.bGR.bGN);e=IR(a.cgw);g=a.bGR;Ed();a.crs=WB(d,f,e,g,FR,GM(ABP(a)));},BhX=a=>{let b=new DfF();EjO(b,a);return b;},ENQ=(a,b)=>{let c,d;c=JM(a.b2k.cF(b),a.crs.cF(b));d=0.0;if(a.cH0)d=10.0;d=20.0+d;return W$(FO(c,d,d),50.0,50.0);},Ecn=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p;c=KV(a.bGV.bMi);Hb();Db(c, +IO,E(749));d=KF;e=En(a.bGV);f=new S;T(f);H(H(f,E(6473)),e);Db(c,d,Q(f));Db(c,OZ,En(a.bGV));Db(c,KD,a.bGV.bJn);Db(c,L8,a.bGV.bH4.bJ1);b.hH(c);c=a.cbZ;if(c!==null)b.hF(c);d=b.hE();e=De(a,d);g=a.b2k.cF(d);h=Y1(a.cJX,a.cef.bG_);d=(CgA(a,b,ABP(a))).h2(h);i=a.bGR.bGN;j=5.0+g.bGF+5.0;b=a.cZi;B9();k=(BJ(b,CK)).cu(i);l=(BJ(a.cgw,CK)).cu(i);if(k.cx(l))d.hP(Dcg(a,e));else{m=(BJ(ABP(a),Jm)).oK();n=G1(ABP(a));BCZ(BE6(Cmq(a),e,j,0.0,k,l,l,h,m,n),d);}(d.h2(BW(j))).hP(DE(e.bGE));if(a.cH0)B76(d,e.bGE,e.bGF);o=(e.bGE-g.bGE)/ +2.0;a.b2k.cC(d.h2(Bh(o,5.0)));p=j+5.0;A5$(IR(a.cgw),d,a.crs,5.0,p,e.bGE);if(a.cbZ!==null)d.hG();d.hI();},B76=(b,c,d)=>{let e;c=c-22.0;d=d-10.0;e=Fz(6.0,6.0);(b.h2(Bh(c,d))).hP(e);(b.h2(Bh(c+3.0+6.0,d))).hP(e);(b.h2(Bh(c+6.0,d+3.0))).hP(DE(3.0));}; +function Dih(){let a=this;F.call(a);a.cdy=null;a.cUs=null;a.cUZ=0.0;a.cMK=null;} +let DLZ=(a,b)=>{let c,d,e;c=CQ5(a,b.hE());b=((b.h2(Cc(a.cMK))).h2(a.cUs)).h2(Dw(1.5));d=Ge(C2(c.bGE,c.bGF),25.0);e=a.cUZ;d.bG1=e;b.hP(d);b=b.h2(GT());a.cdy.cC(b);},EHK=a=>{return a.cdy.co();},CQ5=(a,b)=>{return a.cdy.cF(b);},EKW=a=>{E0();return Zr;},EW6=(a,b)=>{Qa();return RW;},EGZ=a=>{return a.cdy.g4();}; +function BKM(){let a=this;F.call(a);a.cYn=null;a.cZP=null;a.cYW=null;} +let CSg=0,A7A=()=>{A7A=Z(BKM);DS1();},Ega=(a,b,c,d)=>{let e,f,g,h;e=Fj();BQ(e,0.0,0.0);BQ(e,7.0,20.0);BQ(e,(-7.0),20.0);ADm(e,d);f=I3(c);(b.h2(f)).hP(e);g=Cs(f,Be(e.bMy,1));h=Cs(f,Be(e.bMy,2));return BA((g.bGK+h.bGK)/2.0,(g.bGL+h.bGL)/2.0);},Df8=(b,c,d)=>{let e;A7A();e=BiT(BA(b.bMI,b.bM$),BA(A1W(b),b.bM$),c,d);if(e===null){e=BiT(BA(b.bMI,Bsc(b)),BA(A1W(b),Bsc(b)),c,d);if(e===null){e=BiT(BA(b.bMI,b.bM$),BA(b.bMI,Bsc(b)),c,d);if(e===null){b=BiT(BA(A1W(b),b.bM$),BA(A1W(b),Bsc(b)),c,d);if(b===null)return null;return b;}return e;}return e;}return e;},BiT +=(b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;A7A();a:{f=b.bGK;g=b.bGL;h=c.bGK;i=c.bGL;j=d.bGK;k=d.bGL;l=e.bGK;m=e.bGL;n=f-h;o=k-m;p=n*o;q=g-i;r=j-l;p=p-q*r;if(p===0.0)b=null;else{b:{s=f*i-g*h;t=r*s;r=j*m-k*l;n=(t-n*r)/p;q=(o*s-q*r)/p;b=BA(n,q);p=n+0.001;if(!(pBC(f,h)))break b;}b=null;break a;}if(!(!(pBC(j,l))))b=null;else{c:{f=q+0.001;if(!(fBC(g,i)))break c;}b=null;break a;}if(!(!(fBC(k,m))))b=null;}}}return b;},Doc=(a,b, +c,d)=>{let e,f,g,h;e=c.bGK;f=c.bGL;g=d.bGK;h=d.bGL;c=EB(g-e,h-f);(b.h2(Bh(e,f))).hP(c);},DS1=()=>{CSg=0;}; +function DrE(){let a=this;F.call(a);a.c55=null;a.b1I=null;a.bMA=null;a.b9E=null;a.cVc=null;a.c7S=null;a.c3p=null;a.crD=null;a.cCW=null;} +let Ekg=(a,b,c,d,e,f,g)=>{let h,i,j;a.cVc=b;a.c7S=e;a.c3p=f;a.crD=d;b=d;h=B1(b);B8();i=B0(h,AWo(Du(DdA,e.bGZ),e.bYu));a.cCW=i;j=D0(i,b.bGN);c=B4(b.bH$,c);B3();i=CF;Ed();b=Vy(c,j,i,d,J0);a.c55=b;a.bMA=FO(b.cF(g),4.0,2.0);if(M2(f)==1&&f.bHn===e){DC();a.b1I=Gy;Bvv(e,AQR(0.0,a.bMA.bGE,0.0,0.0));}else if(M2(f)==1&&f.bHo===e){DC();a.b1I=FL;Bvv(e,AQR(a.bMA.bGE,0.0,0.0,0.0));}else if(f.bHn===e){DC();a.b1I=G_;Bvv(e,AQR(0.0,0.0,0.0,a.bMA.bGF));}else if(f.bHo===e){DC();a.b1I=HG;Bvv(e,AQR(0.0,0.0,a.bMA.bGF,0.0));}else{b +=new BP;X(b);J(b);}c=a.b1I;b=M7(e.cmN,c);if(b===null){b=Bk();Po(e.cmN,c,b);}b.g(a);},CTl=(a,b,c,d,e,f)=>{let g=new DrE();Ekg(g,a,b,c,d,e,f);return g;},CQg=(a,b)=>{let c,d,e;c=M6(a.bMA);d=a.cCW;B9();e=(BJ(d,CK)).cu(a.crD.bGN);d=(BJ(a.cCW,Cz)).cu(a.crD.bGN);b=b.h2(CfK(a));(((b.h2(Cc(e))).h2(d)).h2(Dw(0.5))).hP(c);a.c55.cC(b.h2(Bh(2.0,1.0)));},CfK=a=>{let b,c;a:{b:{c:{d:{Bxu();switch(BP_.data[a.b1I.bGO]){case 1:b=BW( -a.bMA.bGF/2.0);break a;case 2:break c;case 3:break d;case 4:break b;default:}b=new BP;X(b);J(b);}b +=BM( -a.bMA.bGE/2.0);break a;}b=new FG;c=a.bMA;Hs(b, -c.bGE+0.5, -c.bGF/2.0);break a;}b=new FG;c=a.bMA;Hs(b, -c.bGE/2.0, -c.bGF+0.5);}return DJ(b,a.b9E);},BKm=a=>{return (CfK(a)).bHj-5.0;}; +function BRZ(){Er.call(this);this.cgI=null;} +let Cpd=(a,b,c,d,e)=>{let f,g,h;f=Uu();g=K(Ob,1);h=g.data;FX();h[0]=B0(e,XD(RQ));a.cgI=AFY(f,g,RQ,d,b,c);},CKv=(a,b,c,d)=>{let e=new BRZ();Cpd(e,a,b,c,d);return e;},DBC=(a,b)=>{let c;c=a.cgI.a61(b);return Cl(a.cgI.RE(b),c);},BQe=(a,b)=>{let c,d,e;c=a.cgI;d=AVv(De(a,b.hE()));e=Bcg(0);MT(c,b,d,e);},Erf=a=>{return null;},Eh4=a=>{return 0;},Eg7=N(),BHI=(b,c,d,e)=>{let f,g,h;f=null;if(e.H_()>0){f=ASq(b,1);if(f!==null)b=Dk(CC(b,1));}c=B4(c,b);B3();g=C_(c,d,e.AZ(CO),e);if(f!==null){h=AK6(Uu(),e,f.b6Y);b=KN(ASm(f,e.H_(), +h,null,0),0.0,1.0,2.0,0.0);Fa();g=Vi(b,g,Hg);}return g;},Cu1=(b,c,d,e,f,g,h)=>{let i,j,k,l,m,n,o,p,q,r,s,t,u,v;if(g===null){g=Bk();i=DT(1,Tt(Jy(e,f)/2.0)|0);j=0;k=i;while(j<=i){l=j/k;m=new Jn;n=e.bGK;o=n+(f.bGK-n)*l;p=e.bGL;Kz(m,o,p+(f.bGL-p)*l);U(g,m);j=j+1|0;}}o=1.7976931348623157E308;q=g.dX();while(q.dY()){m=q.dZ();l=Jy(m,e);if(l>=15.0&&l=s)){b=BA(u,k);if(Cpg(b,c,q,g)){t=b;s=l;}}k=k+2.0;}u=u+2.0;}if(t!==null)m=t;return m;}return m;}return BA(d.bGK,d.bGL+b.bGF);},Elr=(b,c,d,e,f,g,h)=>{let i,j,k,l,m,n,o;if(EL(g)>=EL(f)){i=d.bGL;j= +d.bGK+b.bGE/2.0;k=e.bGK;if(j=f&&g<=i+c.bGF+2.0)l=BC(l,m.bGK+2.0);}}else{l=k-c.bGE-2.0;b=h.dX();f=i-2.0;while(b.dY()){m=b.dZ();n=m.bGL;if(n>=f&&n<=i+c.bGF+2.0)l=Eh(l,m.bGK-c.bGE-2.0);}}return BA(l,i);}l=d.bGK;o=d.bGL+b.bGF/2.0;n=e.bGL;if(o=f&&n<=l+c.bGE+2.0)i=BC(i,m.bGL+2.0);}}else{i=n-c.bGF-2.0;b=h.dX();f=l-2.0;while(b.dY()){m=b.dZ();n=m.bGK;if(n>=f&&n<=l+c.bGE+2.0)i=Eh(i,m.bGL-c.bGF +-2.0);}}return BA(l,i);},Cpg=(b,c,d,e)=>{let f,g,h,i,j,k,l;f=b.bGK;g=b.bGL;h=f+c.bGE;i=g+c.bGF;c=Br(d);while(true){if(!Bq(c)){a:{if(e!==null){b=e.dX();f=f-2.0;h=h+2.0;g=g-2.0;i=i+2.0;while(true){if(!b.dY())break a;j=b.dZ();k=j.bGK;if(k>=f&&k<=h){k=j.bGL;if(k>=g&&k<=i)return 0;}}}}return 1;}l=Bm(c);if(fl.bJh&&gl.bJ6)break;}return 0;},ByS=N(0),CWF=N(0); +function B8l(){let a=this;F.call(a);a.bXI=null;a.cEl=null;a.b2o=null;a.b3L=0;a.bSh=0.0;a.bOB=0.0;a.cET=null;a.b1g=null;a.bNG=null;a.cDI=null;a.c_4=null;a.bXs=null;a.cq7=null;} +let Fbz=a=>{let b,c,d,e;b=JH(a);c=BY(a.bNG);d=BY(a.bXI);e=new S;T(e);b=H(e,b);Bb(b,32);b=H(b,c);Bb(b,32);H(b,d);return Q(e);},CDZ=a=>{let b;b=a.bXs;if(b!==null)return b.b6t;return null;},BOV=a=>{if(a.cEl===null)a.cEl=a.bNG.cF(a.cDI);return a.cEl;},Bof=a=>{return a.bXI;},X8=a=>{return (BOV(a)).bGE;},AAE=a=>{return (BOV(a)).bGF;},AOS=(a,b,c)=>{let d,e,f,g,h,i;d=a.bXI;E0();if(d!==WC){if(d===AIl){X8(a);e=a.bNG;if(e instanceof B1h)f=((Buh(e)).cF(c)).bGE;else if(e instanceof BHm)f=((Buh(e)).cF(c)).bGE;else{b=new BV;X(b);J(b);}g +=f|0;if(g>40)Dvb(a,b,c,g-40|0);else{L(b,a.b2o);L(b,E(6588));L(b,E(6589));L(b,E(349));L(b,E(6590));L(b,E(349));c=AHV(X8(a));e=new S;T(e);H(H(e,E(347)),c);L(b,Q(e));L(b,E(349));c=AHV(AAE(a));e=new S;T(e);H(H(e,E(348)),c);L(b,Q(e));L(b,E(349));c=R8(a.b3L);e=new S;T(e);Bb(H(H(e,E(6453)),c),34);L(b,Q(e));L(b,E(6460));}Fu(b);return;}if(d!==AGM){if(d===Ir&&BJe(a)){Dnj(a,b);Fu(b);return;}L(b,a.b2o);L(b,E(6588));EL3(a,b);L(b,E(349));L(b,E(6590));L(b,E(349));c=AHV(X8(a));e=new S;T(e);H(H(e,E(347)),c);L(b,Q(e));L(b,E(349));c +=AHV(AAE(a));e=new S;T(e);H(H(e,E(348)),c);L(b,Q(e));L(b,E(349));c=R8(a.b3L);e=new S;T(e);Bb(H(H(e,E(6453)),c),34);L(b,Q(e));L(b,E(6460));Fu(b);return;}Dnj(a,b);Fu(b);return;}c=a.bNG.yC(c);L(b,a.b2o);L(b,E(6588));L(b,E(6591));L(b,E(6454));e=R8(a.b3L);d=new S;T(d);H(H(H(d,E(6592)),e),E(6593));L(b,Q(d));h=0;e=E2(Bf8(c.bVK));BvU(e);c=e.dX();while(c.dY()){e=c.dZ();i=e.cAG;g=e.b3D-h|0;h=h+g|0;BCM(a,b,null,g);g=e.chJ|0;BCM(a,b,i,g);h=h+g|0;}BCM(a,b,null,AAE(a)-h|0);L(b,E(6471));L(b,E(372));L(b,E(6460));Fu(b);Fu(b);},Dvb +=(a,b,c,d)=>{let e,f,g,h;if(d<10)d=10;L(b,a.b2o);L(b,E(6588));L(b,E(6594));L(b,E(349));L(b,E(6454));L(b,E(6595));c=new S;T(c);e=H(c,E(6596));BE(e,d);H(e,E(6597));L(b,Q(c));c=R8(a.b3L);f=X8(a)|0;g=AAE(a)|0;h=new S;T(h);e=H(H(H(h,E(6598)),c),E(6599));BE(e,f);c=H(e,E(6465));BE(c,g);H(c,E(6600));L(b,Q(h));c=new S;T(c);e=H(c,E(6596));BE(e,d);H(e,E(6597));L(b,Q(c));L(b,E(6471));L(b,E(6601));},A_R=a=>{let b;if(a.cET===null){b=a.bNG.blh(a.cDI);a.cET=b;if(!Ce0(b)){b=a.bXI;E0();if(b!==Ir&&b!==WC&&b!==AGM){b=new BP;X(b);J(b);}}}return a.cET;},Dnj +=(a,b)=>{let c,d,e,f;L(b,a.b2o);L(b,E(6588));L(b,E(6591));L(b,E(6454));L(b,E(6595));L(b,E(6602));BvW(a,b);BuF(a,b,1.0,(A_R(a)).cbt);BvW(a,b);L(b,E(6470));L(b,E(6602));BuF(a,b,(A_R(a)).cbr,1.0);c=R8(a.b3L);d=new S;T(d);Bb(H(H(d,E(6603)),c),34);L(b,Q(d));e=X8(a);f=AAE(a);c=new S;T(c);Bb(D6(H(D6(H(c,E(6604)),e),E(6465)),f),34);L(b,Q(c));L(b,E(6605));L(b,E(6469));BuF(a,b,(A_R(a)).cbs,1.0);L(b,E(6470));L(b,E(6602));BvW(a,b);BuF(a,b,1.0,(A_R(a)).cbu);BvW(a,b);L(b,E(6470));L(b,E(6471));L(b,E(372));L(b,E(6460));Fu(b);},BCM +=(a,b,c,d)=>{let e,f,g;if(d>0){L(b,E(6602));L(b,E(6606));e=X8(a);f=new S;T(f);g=H(D6(H(f,E(6604)),e),E(6465));BE(g,d);Bb(g,34);L(b,Q(f));if(c!==null){g=new S;T(g);Bb(H(H(g,E(6607)),c),34);L(b,Q(g));}L(b,E(372));L(b,E(6469));L(b,E(6470));return;}},BuF=(a,b,c,d)=>{let e;L(b,E(6468));e=new S;T(e);Bb(D6(H(D6(H(e,E(6604)),c),E(6465)),d),34);L(b,Q(e));L(b,E(372));L(b,E(6469));},BvW=(a,b)=>{L(b,E(6608));L(b,E(6469));},EL3=(a,b)=>{let c,d;c=a.bXI;E0();if(c===Ir&&BJe(a)){b=new BV;X(b);J(b);}d=a.bXI;if(!(d!==Ir&&d!== +AGM&&d!==AM1))L(b,E(6589));else if(d!==WC){if(d===AK$)L(b,E(6609));else if(d===AJ_)L(b,E(6610));else if(d===AFH)L(b,E(6611));else if(d===Yr)L(b,E(6612));else if(d===AC7)L(b,E(6613));else{if(d!==Zr){b=new BP;Bp(b,HT(d));J(b);}L(b,E(6614));}}else{b=new BV;X(b);J(b);}},YG=a=>{let b;b=a.b2o;if(b===null){b=new BP;X(b);J(b);}return b;},CgO=a=>{return a.bNG;},B4J=a=>{return BA(a.bSh,a.bOB);},AHo=a=>{let b,c;b=new Bwh;c=a.bSh;BXC(b,c,a.bOB,c+X8(a),a.bOB+AAE(a));return b;},BJe=a=>{let b,c,d;b=(K6(a.bXs.bOU)).dX();while +(true){if(!b.dY())return Ce0(A_R(a))?0:1;c=b.dZ();if(a.bXs===c.bHn){d=c.bLP.b1y;if(!(d!==null&&!CQ(d))?0:1)break;}if(a.bXs===c.bHo){c=c.bLP.b1z;if(!(c!==null&&!CQ(c))?0:1)break;}}return 1;},AVy=(a,b,c)=>{a.bSh=a.bSh+b;a.bOB=a.bOB+c;},Dgp=a=>{return a.bNG.g4();},Dud=(a,b,c,d)=>{a.cq7=Xz(Bqo(d), -b, -c);},CYB=(a,b)=>{a.bNG.c3G=180.0-b*180.0/3.141592653589793;},CD9=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=new DeU;c.bSE=Bk();d=b.dX();while(d.dY()){e=d.dZ();f=BKm(e);g=BKm(e)+e.bMA.bGE+10.0;h=c.bSE;e=new Cvw;h=h;e.cYL +=h.bGJ;e.bVb=(f+g)/2.0;e.chY=(g-f)/2.0;U(h,e);}a:{f=DfD(c);d=c.bSE;if(d.bGJ>=2){BvU(d);i=0;b:{c:while(true){j=c.bSE.bGJ;if(i>=j)break a;j=j-2|0;d:{e:{while(j>=0){d=Be(c.bSE,j);e=c.bSE;k=j+1|0;e=Be(e,k);l=e.bVb-d.bVb;if(l<0.0)break c;l=l-d.chY-e.chY;l=!(l>0.0)? -l:0.0;if(l>0.0)break e;j=j+(-1)|0;}k=0;break d;}while(true){d=c.bSE;if(k>=d.bGJ)break;Chh(Be(d,k),l);k=k+1|0;}k=1;}if(!k)break b;i=i+1|0;}b=new Bt;X(b);J(b);}}}f:{f=f-DfD(c);if(f!==0.0){e=Br(c.bSE);while(true){if(!Bq(e))break f;Chh(Bm(e),f);}}}c=c.bSE;m +=Hr(c.bGJ).data;d=Br(c);while(Bq(d)){c=Bm(d);m[c.cYL]=c.bVb-c.chY;}i=0;while(i{let b;b=new CLV;b.cxb=a;return b;},C4Q=N(0); +function C8Y(){let a=this;F.call(a);a.c6M=0.0;a.cV8=0.0;} +function Drp(){let a=this;F.call(a);a.bUF=null;a.ciD=null;} +let Fgn=(a,b,c)=>{a.bUF=b;a.ciD=c;},B0v=(a,b)=>{let c=new Drp();Fgn(c,a,b);return c;},C2k=(a,b)=>{let c;c=CiF(a);if(B7J(a,b)==(-1))c.bTb=(-1);return c;},VA=(a,b)=>{let c,d;c=ATz(a,b,0);if(c!=(-1)){d=ATz(a,E(1268),c+b.bGI.length|0);if(d!=(-1))return CPp(BIO(a,c+b.bGI.length|0,d),E(6615));return Gi();}return Gi();},B7J=(a,b)=>{let c,d,e;c=F9(R8(b));d=new S;T(d);Bb(H(H(d,E(6616)),c),34);d=Q(d);e=IZ(a.bUF,d);if(e==(-1)){c=F9(R8(b));d=new S;T(d);Bb(H(H(d,E(6617)),c),59);d=Q(d);e=IZ(a.bUF,d);if(e==(-1)){c=F9(R8(b));d +=new S;T(d);Bb(H(H(d,E(6618)),c),34);d=Q(d);b=IZ(a.bUF,d);if(b==(-1))return (-1);return b;}return e;}return e;},CPp=(a,b)=>{let c,d,$$je;try{c=M0(a.bUF,b);d=Bk();while(JO(c)){b=DiH(a,H5(c));U(d,b);}}catch($$e){$$je=P($$e);if($$je instanceof Ex){return Gi();}else{throw $$e;}}return d;},DiH=(a,b)=>{let c,d,e;c=M0(b,E(349));d=DM(H5(c));e=DM(H5(c));b=a.ciD;c=BA(d,e);b=b;return BA(c.bGK,c.bGL*b.cV8+b.c6M);},ATz=(a,b,c)=>{return Sy(a.bUF,b,c);},Sx=(a,b)=>{return B0v(CC(a.bUF,b),a.ciD);},BIO=(a,b,c)=>{return B0v(B_(a.bUF, +b,c),a.ciD);},Eod=a=>{let b,c,d,e,f,g,h,i,j,k,l;if(Cpm(a)){b=Bk();c=ATz(a,E(358),0);if(c!=(-1)){d=BIO(a,1,c);e=DiH(d,d.bUF);d=Bk();f=(CPp(Sx(a,c+1|0),E(344))).dX();while(f.dY()){g=f.dZ();h=f.dZ();i=f.dZ();j=new Dmc;j.cLQ=g.bGK;j.cLN=g.bGL;j.cLR=h.bGK;j.cLO=h.bGL;j.cI_=i.bGK;j.cJa=i.bGL;U(d,j);}k=e.bGK;l=e.bGL;d=Br(d);while(Bq(d)){i=Bm(d);j=Sn(k,l,i.cLQ,i.cLN,i.cLR,i.cLO,i.cI_,i.cJa);U(b,j);k=i.cI_;l=i.cJa;}return Byk(b);}b=new Bt;X(b);J(b);}b=new Bt;X(b);J(b);},Cpm=a=>{if(!BO(a.bUF,E(355)))return 0;return 1;},A0a +=N(Bx),Ir=null,AIl=null,AGM=null,WC=null,Zr=null,Yr=null,AC7=null,AFH=null,AK$=null,AM1=null,AJ_=null,CEo=null,ES8=null,E0=()=>{E0=Z(A0a);D_U();},EDt=(a,b,c)=>{E0();Ct(a,b,c);},T8=(a,b)=>{let c=new A0a();EDt(c,a,b);return c;},D_U=()=>{let b,c,d;Ir=T8(E(469),0);AIl=T8(E(6619),1);AGM=T8(E(6620),2);WC=T8(E(6621),3);Zr=T8(E(6622),4);Yr=T8(E(3886),5);AC7=T8(E(6623),6);AFH=T8(E(4251),7);AK$=T8(E(6624),8);AM1=T8(E(461),9);AJ_=T8(E(471),10);b=T8(E(6625),11);CEo=b;c=K(A0a,12);d=c.data;d[0]=Ir;d[1]=AIl;d[2]=AGM;d[3]= +WC;d[4]=Zr;d[5]=Yr;d[6]=AC7;d[7]=AFH;d[8]=AK$;d[9]=AM1;d[10]=AJ_;d[11]=b;ES8=c;},EY8=N(),BcB=(b,c,d)=>{let e,f;e=new S;T(e);H(H(e,d),E(6330));d=Q(e);f=Sy(b,d,c);if(f!=(-1)){c=f+d.bGI.length|0;return DM(B_(b,c,In(b,34,c)));}b=new BP;X(b);J(b);},AGB=b=>{let c,d,e;c=(b.cf(0)).bGK;d=(b.cf(0)).bGL;e=1;while(e{let c,d,e;c=(b.cf(0)).bGK;d=(b.cf(0)).bGL;e=1;while(ec)c=(b.cf(e)).bGK;if +((b.cf(e)).bGL>d)d=(b.cf(e)).bGL;e=e+1|0;}return BA(c,d);},Fu=b=>{Bb(b,10);},AHV=b=>{let c,d,e;c=b/72.0;RX();d=AVF;e=K(F,1);e.data[0]=DL(c);return Dq_(d,E(6626),e);},BaT=N(Bx),Baf=null,APM=null,BTz=null,Em4=null,AHk=()=>{AHk=Z(BaT);Et8();},DE4=(a,b,c)=>{AHk();Ct(a,b,c);},B0G=(a,b)=>{let c=new BaT();DE4(c,a,b);return c;},Et8=()=>{let b,c,d;Baf=B0G(E(6627),0);APM=B0G(E(6628),1);b=B0G(E(6629),2);BTz=b;c=K(BaT,3);d=c.data;d[0]=Baf;d[1]=APM;d[2]=b;Em4=c;}; +function Bht(){let a=this;Er.call(a);a.chl=null;a.cgV=null;a.ciZ=null;a.c8Y=null;} +let BOd=(a,b,c,d,e)=>{let f;ATf();if(c==124)f=AOE;else if(c==45)f=BIs;else{b=new Bt;X(b);J(b);}a.cgV=f;a.ciZ=d;a.c8Y=e;a.chl=b;},FxU=(a,b,c,d)=>{let e=new Bht();BOd(e,a,b,c,d);return e;},EEQ=(a,b)=>{let c,d,e,f,g,h;c=B1(a.ciZ);B8();d=B0(c,BBi);B9();c=(BJ(d,Cz)).cu(a.ciZ.bGN);e=b.hE();f=De(a,e);g=0;while(true){d=a.chl;if(g>=d.bGJ)break;d=Be(d,g);d.cC(b);h=d.cF(e);d=a.cgV;ATf();b=b.h2(d!==AOE?BW(h.bGF):BM(h.bGE));if(g<(a.chl.bGJ-1|0)){d=a.cgV;h=(b.h2(c)).h2(J$(8.0,10.0,1.5));if(d!==AOE)h.hP(DE(f.bGE+8.0));else h.hP(Fg(f.bGF ++8.0));}g=g+1|0;}},DZr=(a,b)=>{let c,d,e,f;c=Cl(0.0,0.0);d=Br(a.chl);while(Bq(d)){e=(Bm(d)).cF(b);f=a.cgV;ATf();c=f!==AOE?Cl(BC(c.bGE,e.bGE),c.bGF+e.bGF):Cl(c.bGE+e.bGE,BC(c.bGF,e.bGF));}return c;},DtA=a=>{return AF5(a.ciZ);},EC9=a=>{return 0;},D9W=(a,b)=>{Qa();return RW;},EK6=a=>{E0();return Ir;}; +function C00(){let a=this;Er.call(a);a.b79=null;a.cpt=null;a.b9k=null;a.cch=null;a.cfk=null;a.crC=null;a.cN5=0;a.czq=null;a.cZk=0.0;a.cWE=0.0;a.c7j=null;a.cEw=null;a.cFc=null;a.cr4=null;} +let ENW=(a,b,c)=>{let d,e,f,g,h,i;a.cpt=B$(b);a.b79=c;d=TF(c);e=d;f=B1(e);g=DgU(c.bGZ,f);h=AYW(c.bGZ,f);a.c7j=Dcu(c.bGZ,f);B9();a.cZk=(BJ(h,Jm)).oK();a.cWE=G1(h);i=e.bGN;e=D0(g,i);a.b9k=C_(c.bH1,e,IR(g),d);a.cch=B1B(c,d);b=c.bGZ;a.cN5=!(b!==null&&Bkz(b))?0:1;a.crC=c.bIa;b=ACd(c.bG_);a.czq=b;if(b===null)a.czq=Fi(h);d=c.bG_;CM();b=DQ(d,E1);a.cfk=b;if(b===null)a.cfk=(BJ(h,Cz)).cu(i);b=DQ(c.bG_,C6);a.cEw=b;a.cFc=b;a.cr4=b;if(b===null){b=Se;CV();a.cEw=(BJ(B0(f,Du(CG(b,AAt),c.bGZ)),CK)).cu(i);a.cFc=(BJ(B0(f,Du(CG(Se, +AJp),c.bGZ)),CK)).cu(i);a.cr4=(BJ(B0(f,Du(CG(Se,A2i),c.bGZ)),CK)).cu(i);}},Cn8=(a,b)=>{let c=new C00();ENW(c,a,b);return c;},ETV=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=a.b9k.cF(b.hE());d=a.cch.cF(b.hE());e=De(a,b.hE());f=d.bGF;g=!(f>0.0)?0.0:5.0;h=5.0+c.bGF+5.0;i=f+g;j=BE6(a.cfk,e,h,i,a.cEw,a.cFc,a.cr4,a.czq,a.cZk,a.cWE);k=KV(a.b79.bMi);Hb();Db(k,IO,E(749));d=KF;l=En(a.b79);m=new S;T(m);H(H(m,E(6473)),l);Db(k,d,Q(m));Db(k,OZ,En(a.b79));Db(k,KD,a.b79.bJn);Db(k,L8,a.b79.bH4.bJ1);b.hH(k);l=a.crC;if(l!==null)b.hF(l);BCZ(j, +b);a.b9k.cC(b.h2(Bh((e.bGE-c.bGE)/2.0,5.0)));A5$(IR(a.c7j),b,a.cch,5.0,5.0+c.bGF+5.0,e.bGE);c=b.hE();l=a.b9k.cF(c);i=(a.cch.cF(c)).bGF;g=!(i>0.0)?0.0:5.0;f=5.0+l.bGF+5.0+g+i+5.0;a.cpt.cC(b.h2(Bh(5.0,f)));if(a.cN5)B76(b.h2(a.cfk),e.bGE,e.bGF);if(a.crC!==null)b.hG();b.hI();},Fgt=a=>{return null;},Dwx=(a,b)=>{let c,d,e,f,g;c=a.cpt.cF(b);d=a.b9k.cF(b);e=a.cch.cF(b);f=CYO(d,e,c);g=20.0+(!(e.bGF>0.0)?0.0:5.0);return FO(f,g,g);},DIb=a=>{E0();return Zr;},Eml=(a,b)=>{Qa();return RW;},Fnd=a=>{return a.cpt.g4();}; +function C9Z(){let a=this;F.call(a);a.b4X=null;a.bZo=null;a.c6h=null;a.cA_=null;a.cQZ=null;a.cmt=null;} +let Faa=(a,b,c,d,e,f)=>{a.b4X=b;a.cmt=f;a.bZo=c;a.c6h=d;a.cA_=e;a.cQZ=B1(e);},Bd9=(a,b,c,d,e)=>{let f=new C9Z();Faa(f,a,b,c,d,e);return f;},B87=(b,c)=>{if(CpV(b){return Jy(a.b4X,a.bZo);},Cjy=(b,c)=>{return BA(b.bGK-H0(c)*8.0,b.bGL-G4(c)*8.0);}; +function BEk(){let a=this;Er.call(a);a.bJE=null;a.b1p=null;} +let DWl=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;c=a;d=Br(c.cN0);while(Bq(d)){e=Bm(d);f=c.b1p;g=b.hE();h=null;i=0.0;j=0;while(j{let d,e;d=0.0;e=0;while(e{let d,e;d=50.0;e=0;while(e{let c,d,e,f;if(AF3(a.bJE)){c=0.0;d=0;while(d{a.bJE.b8N.data[b].data[c]=d;}; +function CUn(){let a=this;BEk.call(a);a.cN0=null;a.c3R=null;} +let C9r=(a,b)=>{B8();return CG(Bmt,b);},BFl=N(0),B$v=(a,b)=>{return (a.cF(b)).bGE;}; +function CbO(){let a=this;AZR.call(a);a.b3I=null;a.ccY=null;a.bWI=null;a.da0=10.0;a.b8Y=0.0;a.cZm=0;} +let ERn=(a,b)=>{return (a.bWI.cF(b)).bGE;},DyY=(a,b)=>{let c;c=a.bWI;if(c instanceof A8O)CtW(c,b);},Cwd=(a,b)=>{let c,d,e,f;if(!a.cZm){a.cZm=1;if(Cfb(a)){c=Bk();d=a.b3I;e=c;Ea(e,d);Ea(e,a.ccY);f=0.0;d=c;e=Br(d);while(Bq(e)){f=BC(f,(Bm(e)).bnI(b));}c=Br(d);while(Bq(c)){(Bm(c)).bnJ(f);}BGX(a);return;}return;}},BRV=(b,c)=>{let d,e,f,g,h,i,j;if(!BGN(c)){d=Bk();e=Bk();DC();f=(BQU(c,FL)).dX();while(f.dY()){g=BRV(b,f.dZ());U(d,g);}f=(BQU(c,Gy)).dX();while(f.dY()){g=BRV(b,f.dZ());U(e,g);}f=new CbO;C1T(f,b,c);f.da0= +10.0;f.b3I=d;f.ccY=e;f.bWI=Cia(f,c);b=AYk(c);d=c.b2i;SQ();f.b8Y=d===AMJ?0.0:(My(b)).bJU;return f;}d=new CHh;b=BBV(c,b);f=c.b2i;e=AYk(c);h=c.cpO;d.c6k=c;SQ();if(f===AMJ){d.b33=null;GO();d.b3u=HD;}else if(f===AHt){b=Dr3(e,b,h);d.b33=b;d.b3u=b;}else{d.b33=null;g=D0(e,b.ly());i=IR(e);j=GM(e);Ed();d.b3u=KN(Py(h,g,i,b,j,FR,null,null),0.0,3.0,1.0,1.0);}return d;},A1v=(a,b)=>{return BC((a.bWI.cF(b)).bGE/2.0,10.0+B4C(a,b,a.b3I));},E3Y=(a,b)=>{return BA(A1v(a,b),0.0);},Euz=(a,b)=>{let c;c=a.bWI.cF(b);return BA(A1v(a, +b)-c.bGE/2.0,c.bGF/2.0);},Eyd=(a,b)=>{let c;c=a.bWI.cF(b);return BA(A1v(a,b)+c.bGE/2.0,c.bGF/2.0);},EMm=(a,b)=>{let c,d,e,f;Cwd(a,b);c=a.bWI.cF(b);d=c.bGE;e=c.bGF+BC(CJD(a,b,a.b3I,a.b8Y),CJD(a,b,a.ccY,a.b8Y));f=d/2.0;return Cl(BC(f,10.0+B4C(a,b,a.b3I))+BC(f,10.0+B4C(a,b,a.ccY)),e);},D9a=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p;Cwd(a,b.hE());c=b.hE();d=a.bWI.cF(c);if(b instanceof AWC){e=b.bSM;CHl(a.b3Y,e,d);}f=A1v(a,c)-d.bGE/2.0;a.bWI.cC(b.h2(BM(f)));g=A1v(a,c);h=d.bGF;i=Du((AYk(a.b3Y)).bNc,a.b3Y.bWy);i=B0(a.b3Y.cd4, +i);B9();j=(BJ(i,Cz)).cu(a.b7E.ly());k=Br(a.b3I);f=h;while(Bq(k)){i=Bm(k);f=f+a.b8Y;l=i.cF(c);h=f+(i.bpE(c)).bGL;AHm(a,b.h2(j),g-l.bGE-10.0+(i.bpE(c)).bGK,h,g,h);i.cC(b.h2(Bh(g-l.bGE-10.0,f)));f=f+l.bGF;}m=d.bGF;i=Br(a.ccY);n=g+10.0;f=m;while(Bq(i)){o=Bm(i);p=f+a.b8Y;l=o.cF(c);m=p+(o.bpF(c)).bGL;AHm(a,b.h2(j),g,m,n+(o.bpF(c)).bGK,m);o.cC(b.h2(Bh(n,p)));f=p+l.bGF;}AHm(a,b.h2(j),g,d.bGF,g,BC(h,m));},B4C=(a,b,c)=>{let d,e;d=0.0;e=Br(c);while(Bq(e)){d=BC(d,((Bm(e)).cF(b)).bGE);}return d;},CJD=(a,b,c,d)=>{let e;e +=0.0;c=Br(c);while(Bq(c)){e=e+d+((Bm(c)).cF(b)).bGF;}return e;}; +function DpK(){let a=this;CA.call(a);a.ddn=0;a.dd4=0;a.c_d=0;a.cvj=null;a.dej=null;a.dcQ=null;a.del=0;} +let ESk=a=>{CJ(a);},ECD=()=>{let a=new DpK();ESk(a);return a;},ECN=N(),FuU=(b,c,d)=>{let $$je;Bf();try{d.del=0;d.cvj=c;d.ddn=0;d.dcQ=null;if(b!==null&&Dn(b,0)){I(E(6630));I(E(5054));I(E(6631));I(E(6632));I(E(6633));I(E(6634));I(E(6635));I(E(6636));I(E(5051));I(E(6637));I(E(6638));I(E(6639));I(E(6640));I(E(5354));I(E(6641));I(E(5051));I(E(5057));I(E(5058));I(E(6642));I(E(6643));I(E(5057));I(E(6644));I(E(6645));I(E(6646));I(E(5057));I(E(6647));I(E(6648));I(E(6649));I(E(5057));I(E(5044));}b=d.cvj;}catch($$e){$$je +=P($$e);b=$$je;J(b);}return b;},CpM=(b,c,d,e)=>{let $$je;Bf();try{b=FuU(GY(b,c,Co(E(6650))),d,e);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},CIx=(b,c,d,e)=>{let $$je;Bf();try{if(GY(b,c,Co(E(6651)))!==null){I(E(6652));I(E(6653));I(E(6654));I(E(6655));}}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},E38=(b,c,d,e,f)=>{let $$je;Bf();try{f.dd4=CIx(b,c,e,e);f.c_d=0;f.dej=null;CpM(b,c,d,f);b=f.cvj;}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},A3N=N(Bx),A3T=null,BZK=null,BfA=null,B6h=null,BIX=null,CKp=null,DEJ +=null,BtV=()=>{BtV=Z(A3N);Ejc();},Elq=(a,b,c)=>{BtV();Ct(a,b,c);},AVY=(a,b)=>{let c=new A3N();Elq(c,a,b);return c;},Ejc=()=>{let b,c,d;A3T=AVY(E(6656),0);BZK=AVY(E(6657),1);BfA=AVY(E(6658),2);B6h=AVY(E(6659),3);BIX=AVY(E(6660),4);b=AVY(E(6661),5);CKp=b;c=K(A3N,6);d=c.data;d[0]=A3T;d[1]=BZK;d[2]=BfA;d[3]=B6h;d[4]=BIX;d[5]=b;DEJ=c;}; +function Cao(){F.call(this);this.cGA=null;} +let C6b=(a,b,c)=>{return b+(c<<16)|0;},CJs=(a,b,c,d,e)=>{let f;if(b>=0&&c>=0&&d>=0&&e>=0){if(d>=b){if(e{let b,c;b=new FG;c=a.cHd;Hs(b,c,c-a.cH3.b2R);return b;},Di8=(a,b)=>{let c,d;if(a.cEi===null){c=Dbh(a);d=new C$y;d.cNT=a;d.cNS=c;a.cEi=ACo(d,b,0);}return a.cEi;},EUP=(a,b)=>{let c,d,e,f;c=Di8(a,b.hE());d=BC(0.0, -c.bJ0);e=BC(0.0, -c.bLa);f=b.h2(Dbh(a));if(!(d===0.0&&e===0.0))f=f.h2(Bh(d,e));CdN(a,f);},CdN=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,$$je;APR(a.bNT.b6H);c=G3(G8(a.bNT.czJ));d=c;while(Gl(d)){e=GZ(c);f=e.bHt;if(AG$(f))continue;g=e.bHe;h=BdE(a.bNT,b.hE(),f,1);i=BdE(a.bNT,b.hE(),f,2);j +=BgH(a.bNT,b.hE(),f,1);k=BgH(a.bNT,b.hE(),f,2);l=h===null?j:h;m=i===null?k:i;if(h===null)j=null;if(i===null)k=null;n=new Cab;o=a.cme;e=CyT(a.bNT,b.hE(),f);h=a.bNT;i=h.bN9;Di4(n,f,h.bIk.bGM,i);n.cw$=g;n.b4Z=o;n.cSG=e;n.cAW=l;n.cy2=m;n.cHv=j;n.ctF=k;Es(a.bNT.b6H,f,n);}c=G3(G8(a.bNT.b45));f=c;while(Gl(f)){e=GZ(c);h=a.bNT;d=a.cme;i=e;e=i.bHt;i=i.bHe;JT();a:{b:{try{i=Cgx(i.bGQ);g=ADK(d,DKv(i));d=ADK(d,E7r(i));e=V1(BWq(h),e);Csi(e,g,d);h=E7V(e,b.hE());if(h!==null)Ct_(e,BA((LD(g)+LD(d))/2.0-N4(h)/2.0,Eh(LW(g),LW(d))));h +=BY(e);d=CR();H(H(d,E(6662)),h);BwA(CH(d));CFi(e,b);break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break b;}else{throw $$e;}}}Fw(Fm(),E(6663));}}c=G3(G8(a.bNT.bZ$));h=c;while(Gl(h)){e=GZ(c);d=e.bHt;e=Djp(e.bHe);p=ADK(a.cme,e.b2J);e=a.bNT;A_i();q=L$(e.bN9,d);q.bSh=0.0;q.bOB=0.0;AVy(q,p.bGK,p.bGL);r=q.bNG;if(!Dgp(q))s=b;else{AJo();s=b.h2(ATI);}r.cC(s.h2(I3(p)));}c=G3(G8(a.bNT.b6H));d=c;while(Gl(d)){h=GZ(c);if(!h.bHt.b90)Fud(h.bHe,b);}},Dxm=(a,b)=>{let c,d,e,f,g,h;c=Di8(a,b);b=a.cH3;d=Cl(b.b7t-b.b7L,b.b2E +-b.b2R);e=a.cHd;d=FO(d,2.0*e+4.0,e+16.0);f=BC(0.0, -c.bJ0);e=BC(0.0, -c.bLa);g=BC(0.0,c.bNf-d.bGE);h=BC(0.0,c.bN2-d.bGF);return Cl(d.bGE+f+g,d.bGF+e+h);},Fau=a=>{return null;}; +function CJt(){let a=this;F.call(a);a.b0m=null;a.cue=0.0;a.cIs=0.0;a.cMz=0.0;a.cWd=0.0;} +let Eo4=(a,b,c,d,e,f)=>{a.b0m=b;a.cue=c;a.cIs=d;a.cMz=e;a.cWd=f;},De1=(a,b,c,d,e)=>{let f=new CJt();Eo4(f,a,b,c,d,e);return f;},B$j=(b,c)=>{return De1(b,c,c,c,c);},EUF=(a,b)=>{a.b0m.cC(b.h2(Bh(a.cue,a.cIs)));},EIq=(a,b)=>{let c;c=a.b0m.cF(b);return Cl(c.bGE+a.cue+a.cMz,c.bGF+a.cIs+a.cWd);},DUt=a=>{return a.b0m.co();},D04=a=>{return a.b0m.a8$();},EGV=(a,b)=>{return a.b0m.blh(b);},Ffr=a=>{return a.b0m.g4();}; +function CiL(){let a=this;Er.call(a);a.cew=null;a.cZn=null;} +let E00=(a,b)=>{let c,d,e;c=(Be(a.cew,0)).cF(b);d=1;while(true){e=a.cew;if(d>=e.bGJ)break;c=AZV(c,(Be(e,d)).cF(b));d=d+1|0;}return c;},E0w=(a,b)=>{let c,d,e,f,g,h;c=0.0;d=De(a,b.hE());e=Br(a.cew);while(Bq(e)){f=Bm(e);g=f.cF(b.hE());h=a.cZn;Fa();f.cC(b.h2(Bh(c,h===Hg?(d.bGF-g.bGF)/2.0:h!==Pe?0.0:d.bGF-g.bGF)));c=c+g.bGE;}}; +function Nv(){let a=this;F.call(a);a.bMF=null;a.bWh=null;} +let NF=(a,b,c)=>{a.bMF=b;a.bWh=c;if(c!==null&&!c.bGI.length){b=new Bt;X(b);J(b);}},AMq=(a,b)=>{let c=new Nv();NF(c,a,b);return c;},BWF=a=>{let b,c,d;if(a.bWh!==null){b=HT(a.bMF);c=a.bWh;d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);}return HT(a.bMF);},ABC=a=>{return a.bMF;},DmG=a=>{return a.bWh;},A48=N(0),C_a=N(); +function C8l(){let a=this;F.call(a);a.cAa=0.0;a.cAb=0.0;a.cB4=0.0;a.cFY=0.0;} +let ESc=(a,b,c,d,e)=>{a.cAa=b;a.cAb=c;a.cB4=d;a.cFY=e;},A7Q=(a,b,c,d)=>{let e=new C8l();ESc(e,a,b,c,d);return e;},Eha=N(),BoD=(b,c)=>{let d,e,f;d=RK(c);e=RK(Ep(c,V(1)));QX();c=Sw;c=B9N(b,d,c);while(true){f=C0s(c);if(!VG(f.bSx,e))break;if(!(D4(f.b8_.bL5,BH)?0:1))return 0;}return 1;}; +function BJE(){let a=this;F.call(a);a.cE_=null;a.cp3=null;} +let DZD=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o;c=b.data;B$(b);d=c.length;e=0;while(true){if(e>=d){b=Ca(d);f=b.data;a.cE_=b;g=Ca(d);h=g.data;a.cp3=g;i=0;j=0;k=1;a:while(true){if(k>15){if(j!=32768){l=new Bt;Bp(l,E(6664));J(l);}a.cE_=A7$(b,i);a.cp3=A7$(a.cp3,i);return;}j=j<<1;m=1<=m)break a;f[i]=m|j;h[i]=n;i=i+1|0;j=j+1|0;}n=n+1|0;}k=k+1|0;}l=new Bt;Bp(l,E(6665));J(l);}o=c[e];if(o<0){l=new Bt;Bp(l,E(6666));J(l);}if(o>15)break;e=e+1|0;}l=new Bt;Bp(l,E(6667));J(l);},A29=a=>{let b +=new BJE();DZD(b,a);return b;},BPa=(a,b)=>{let c,d;B$(b);c=1;b=b;while(true){c=c<<1|Bgc(b);d=C4O(a.cE_,c);if(d>=0)break;}return a.cp3.data[d];}; +function BFI(){let a=this;ADA.call(a);a.cHN=null;a.cHM=null;} +let CPi=0,B3k=()=>{B3k=Z(BFI);DU8();},Dwn=a=>{return (CW(a.cHN)+CW(a.cHM))/2.0;},Fdd=(a,b)=>{let c;c=new BV;X(c);J(c);},EG_=(a,b)=>{B74(a.bQz,BYf(b,a,0.0));},Euh=(a,b)=>{let c;c=a.cHN;b=b/2.0;BEo(c,b);BEo(a.cHM,b);},DU8=()=>{CPi=0;},CfJ=N(),Cfz=null,BYu=()=>{BYu=Z(CfJ);DHC();},DHC=()=>{let b,c;B3();b=Ca((CUr.b2()).data.length);c=b.data;Cfz=b;c[CO.bGO]=1;c[Ft.bGO]=2;}; +function CA6(){F.call(this);this.cwt=null;} +let C7c=(b,c,d,e,f)=>{let g,h,i,j;g=0;while(true){h=b.cIP;if(g>=h.bGJ)break;a:{i=Be(h,g);h=i.cT7;AVe();if(BtA(h)){if(!BtA(e)){j=0;break a;}if(DS(CN(!BtA(h)?V(-1):!h.bOH?EU(V(1),h.bQ4):EU(V(-1),h.bQ4),EU(V(1),e.bQ4)),BH)){j=0;break a;}}if(!(e.bOH&&!h.bOH))j=1;else j=0;}if(j){h=i.c3Q;U(f,h);}g=g+1|0;}while(d{let e,f,g,h,i,j,k,l,m,n,o,p;a.ctC=0;a.cCY=0;e=TF(b);a.bKf=b;f=b.bH1;if(f===null)g=E6(0.0,0.0);else{h=B9Y(a);g=C_(f,Yz(h,(TF(a.bKf)).bGN,a.bKf.bG_),IR(h),TF(a.bKf));i=a.bKf.cb7;if(i!==null){h=Uu();j=AK6(h,TF(a.bKf),i.cxS);h=AK6(h,TF(a.bKf),i.b6Y);h=KN(ASm(i,Qy(TF(a.bKf)),h,j,0),0.0,0.0,4.0,0.0);Fa();g=Vi(h,g,Hg);}}a.bWV=g;h=a.bKf;f=h.bGZ;if(f===null)i=E6(0.0,0.0);else{j=TF(h);g=j;k=g.bPb;F8();if(k===RA&&Mt(a.bKf)===null)i=E6(0.0,0.0);else{i=ATW(f,j);if(i===null){if(T0(f,WR(g))===null)i=E6(0.0, +0.0);else{c=c.bpS(a.bKf);if(!(c!==null&&!c.j()))i=E6(0.0,0.0);else{h=D0(B0(B1(g),AHZ(Bo7(N$(g.bPb),Mt(a.bKf),HR(a.bKf)),a.bKf.bGZ)),g.bGN);k=Bl$(a);i=C_(Ls(c),h,k,j);}}}}}j=a.bKf.cgF;if(j!==null&&!AA7(j))i=C6A(null,BKB(j.bQv,TF(a.bKf)),i,j.bXz,j.b4E);a.ct6=i;j=(FT(i,a.bWV,Bl$(a))).cF(d);if(j.bGE>0.0){k=(B1B(b,e)).cF(d);l=k.bGF;m=k.bGE;n=!(l>0.0)?0.0:5.0;f=Mt(b);o=f!==null?f.bpT():0;p=f!==null?f.a2m():0;a.ctC=(BC(j.bGE,m)|0)+p|0;a.cCY=j.bGF+l+n+o|0;}},CT_=(a,b,c)=>{let d=new CXc();EnH(d,a,b,c);return d;},Ee_ +=a=>{return a.bWV;},Ew1=a=>{return a.ct6;},B9Y=a=>{let b,c,d;b=N$((TF(a.bKf)).bPb);c=Mt(a.bKf);d=HR(a.bKf);F7();if(d===ZD){B8();c=Czu;}else if(c!==null){B8();c=AIf(CG(BPv,b),c.JS());}else if(HR(a.bKf)!==Kw){B8();c=CG(BPv,b);}else{B8();c=CG(B5d,b);}return B0(B1(TF(a.bKf)),AWo(Du(c,a.bKf.bGZ),a.bKf.bYu));},Bl$=a=>{return IR(B9Y(a));}; +function C4T(){let a=this;Ez.call(a);a.b7R=null;a.b6p=null;a.cHX=null;a.b5T=0.0;a.cqx=null;} +let Esz=(a,b,c)=>{let d,e,f;HZ(a,b);a.cqx=b;d=AIn(a);B9();a.b5T=(BJ(d,Jm)).oK();HN();e=c.bpU(Q0,b);f=c.bpU(QA,b);a.b7R=b.bKL.bpV(a.bGR,e,f,b.bGZ,AIn(a),null);a.b6p=Fwb(b,c);a.cHX=b.bIa;},Cvv=(a,b)=>{let c=new C4T();Esz(c,a,b);return c;},Fh6=(a,b)=>{let c,d,e,f,g,h;c=De(a.b6p,b);d=a.b7R;d=d!==null?d.cF(b):Cl(0.0,0.0);e=BC(d.bGE,c.bGE);b=AIn(a);B9();f=(BJ(b,Pt)).oK();if(!(e{let d;d=a.b7R.yz(b,c);if(d!==null)return A_W(BW((De(a.b6p,c)).bGF),d);return d;},CnC=(a,b)=>{let c,d,e,f;c=new ACL;d=En(a.bGV);e=new S;T(e);H(H(e,E(6668)),d);API(c,Q(e));b.hP(c);c=a.cHX;if(c!==null)b.hF(c);c=KV(a.bGV.bMi);Hb();Db(c,IO,E(749));d=KF;f=En(a.bGV);e=new S;T(e);H(H(e,E(6473)),f);Db(c,d,Q(e));Db(c,OZ,En(a.bGV));Db(c,KD,a.bGV.bJn);Db(c,L8,a.bGV.bH4.bJ1);b.hH(c);DWi(a,b);b.hI();if(a.cHX!==null)b.hG();},AIn +=a=>{let b;b=A2O(a.bGV);B8();return B0(b,AWo(Du(BoC,a.bGV.bGZ),a.bGV.bYu));},DWi=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;c=b.hE();d=De(a,c);e=De(a.b6p,c);f=d.bGE;g=d.bGF;h=a.bGV.bMi;i=Ge(C2(f,g),a.b5T);j=En(a.bGV);if(h===null)c=null;else{h=BY(h);c=new S;T(c);H(c,h);c=Q(c);}k=Dhp(i,j,c);h=a.cqx.bG_;CM();l=DQ(h,E1);j=DQ(a.bGV.bG_,AKr);i=DQ(a.bGV.bG_,C6);g=G1(AIn(a));if(l===null){c=AIn(a);B9();l=(BJ(c,Cz)).cu(a.bGR.bGN);}if(j===null){if(i!==null)j=i;else{h=A2O(a.bGV);B8();h=B0(h,AWo(Du(BSW,a.bGV.bGZ),a.bGV.bYu));B9();j +=(BJ(h,CK)).cu(a.bGR.bGN);}}if(i===null){c=AIn(a);B9();i=(BJ(c,CK)).cu(a.bGR.bGN);}c=k;c.bG1=g;h=(b.h2(l)).h2(Cc(i));m=Y1(AIn(a),a.cqx.bG_);if(a.b5T===0.0&&j!==null&&!i.cx(j)){(h.h2(m)).hP(k);n=C2(f,e.bGF);n.bG1=0.0;b=h.h2(Cc(j));(b.h2(m)).hP(n);}else if(!(a.b5T!==0.0&&j!==null&&!i.cx(j))){(h.h2(m)).hP(k);b=h;}else{(h.h2(m)).hP(k);n=Ge(C2(f,e.bGF),a.b5T);o=C2(f,a.b5T/2.0);n.bG1=0.0;o.bG1=0.0;b=(h.h2(Cc(j))).h2(j);(b.h2(m)).hP(n);((b.h2(m)).h2(BW(e.bGF-o.bKg))).hP(o);c.bG1=0.0;((h.h2(m)).h2(Cc(E4()))).hP(k);}c +=a.b6p;f=d.bGE;g=e.bGF;FoQ(c.cvL,b,f,g);if(a.b7R!==null){p=AMo(h,a,m);q=BW(e.bGF);a.b7R.cC(Jw(p,q));}},Cqi=(a,b)=>{let c,d;c=De(a.b6p,b);d=a.b7R;if(F0(d,Oa))return AWB(d.yC(b),c.bGF);return Ya();},DmQ=a=>{if((BWf(a.bGV)).dV()>0){E0();return WC;}E0();return Ir;},CNQ=(a,b)=>{b=a.bGV;AWG(b);return b.ci7;},ED9=(a,b,c)=>{return 0.0;},EI4=(a,b,c)=>{return (De(a,b)).bGE;},BCD=N(0); +function Cj5(){let a=this;F.call(a);a.bTx=null;a.b$r=0.0;a.cWi=null;a.cTq=null;} +let FoZ=(a,b,c)=>{let d,e,f;d=CnB(a.bTx,b,c);b=new BI3;e=d.bMI;f=a.b$r;CNl(b,e+f,d.bM$+f,d.bTE,d.bTA);return b;},EYS=(a,b,c,d,e)=>{a.bTx=b;a.b$r=c;a.cWi=e;a.cTq=d;},ENv=(a,b,c,d)=>{let e=new Cj5();EYS(e,a,b,c,d);return e;},Eiq=a=>{return ClR(a.bTx);},DRY=a=>{return CyS(a.bTx);},EJY=(a,b)=>{let c;b=De(a.bTx,b);c=2.0*a.b$r;return FO(b,c,c);},Ejx=(a,b)=>{let c,d,e;c=a.bTx;d=new FG;e=a.b$r;Hs(d,e,e);b=b.h2(d);CnC(c,b);},E0J=a=>{return DmQ(a.bTx);},ELA=(a,b)=>{return CNQ(a.bTx,b);},Fg1=(a,b)=>{return Cqi(a.bTx,b);}; +function C9T(){let a=this;Ez.call(a);a.co0=0.0;a.clY=null;a.czu=null;a.cS0=null;} +let EHd=(a,b,c)=>{let d,e,f;HZ(a,b);a.co0=0.0;a.cS0=c;d=B0(B1(a.bGR),BS2(a));e=D0(d,a.bGR.bGN);f=IR(d);a.co0=G1(d);a.clY=C_(b.bH1,e,f,a.bGR);a.czu=b.bIa;},DOG=(a,b)=>{let c=new C9T();EHd(c,a,b);return c;},DBv=(a,b)=>{return FO(a.clY.cF(b),20.0,20.0);},EsA=(a,b)=>{let c,d;c=a.czu;if(c!==null)b.hF(c);d=BNb(a);E0();if(d===Zr)b=C0a(a,b);else if(BNb(a)===AK$){d=(L$(a.cS0,a.bGV)).cq7;if(d===null)b=C0a(a,b);else{d.bG1=a.co0;b=CTN(a,b);(b.h2(Dw(1.5))).hP(d);a.clY.cC(b.h2(Bh(10.0,10.0)));}}else{b=new BV;X(b);J(b);}if +(a.czu!==null)b.hG();},C0a=(a,b)=>{let c,d,e;c=De(a,b.hE());d=Ge(C2(c.bGE,c.bGF),25.0);e=a.co0;d.bG1=e;b=CTN(a,b);(b.h2(Fi(B0(B1(a.bGR),BS2(a))))).hP(d);a.clY.cC(b.h2(Bh(10.0,10.0)));return b;},BS2=a=>{B8();return Du(AUo,N9(a));},CTN=(a,b)=>{let c,d,e;c=B0(B1(a.bGR),BS2(a));B9();d=(BJ(c,Cz)).cu(a.bGR.bGN);e=a.bGV.bG_;CM();e=DQ(e,C6);if(e===null)e=(BJ(c,CK)).cu(a.bGR.bGN);return (b.h2(d)).h2(Cc(e));},BNb=a=>{let b,c,d,e;b=N9(a);c=a.bGR;d=DF(c,E(6669));if(b===null)b=d;else{F_();b=I7(b,Hl);e=new S;T(e);H(H(e,E(6669)), +b);b=DF(c,Q(e));if(b===null)b=d;}if(BG(E(6670),b)?0:!BG(E(6671),b)?0:1){E0();return AK$;}E0();return Zr;}; +function A1p(){let a=this;Ez.call(a);a.cf8=null;a.cJB=null;a.cvI=null;a.cIX=null;} +let BWb=a=>{let b;b=a.bGV.bGZ;return B0(B1(a.bGR),Du(a.oi(),b));},Cyl=(a,b,c,d,e)=>{HZ(a,b);a.cJB=c;a.cvI=d;b=T7(b);a.cf8=b;a.cIX=a.bGR.bNy;Jb();if(b===LQ){b=new Bt;X(b);J(b);}},Buh=a=>{let b,c;b=a.bGV;c=XK(a.bGR,BWb(a));b=b.bH1;B3();return C_(b,c,CO,a.bGR);},E8D=(a,b)=>{let c;b=a.cf8;c=a.cIX;Jb();if(b!==ANX&&b!==ANb)b=Cl(12.0,12.0);else{Pf();b=c!==AAK?Cl(12.0,48.0):Cl(48.0,12.0);}return b;},DJf=a=>{let b;b=a.cf8;Jb();if(b!==LQ){if(!(b!==AHz&&b!==AAY)){E0();b=AIl;}else{E0();b=Ir;}return b;}b=new BP;X(b);J(b);},B1h +=N(A1p),EcB=(a,b,c,d)=>{Fs();Cyl(a,b,c,d,BlG);},EYf=(a,b,c)=>{let d=new B1h();EcB(d,a,b,c);return d;},Eyo=a=>{B8();return CG(Dbr,Ve(a));},Elu=(a,b)=>{return Cl(12.0,12.0);},EPN=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=Buh(a);d=c.cF(b.hE());e=0.0-(d.bGE-12.0)/2.0;f=a.cJB;if(f===null)g=0;else{f=AO$(f.bJO);g=!((L$(a.cvI,a.bGV)).bOB{E0();return AIl;},BHm=N(A1p),EtR=(a,b,c,d)=>{Fs();Cyl(a,b,c,d,A8L);},Ewo=(a,b,c)=>{let d=new BHm();EtR(d,a,b,c);return d;},ElR=a=>{B8();return BBi;},Duq=(a,b)=>{let c,d,e,f,g,h,i,j;c=Buh(a);d=c.cF(b.hE());e=0.0-(d.bGE-12.0)/2.0;f=a.cJB;if(f===null)g=0;else{f=AO$(f.bJO);g=!((L$(a.cvI,a.bGV)).bOB +{CkN(a,b);},DOT=a=>{let b=new DeF();EIu(b,a);return b;},Dwa=(a,b)=>{return W$(FO(a.b2k.cF(b),10.0,10.0),50.0,40.0);},E5A=(a,b)=>{let c,d,e,f,g,h,i;c=a.cbZ;if(c!==null)b.hF(c);c=b.hE();d +=De(a,c);e=a.b2k.cF(c);f=Y1(ABP(a),a.cef.bG_);g=B1(a.bGR);c=Se;CV();b=(CgA(a,b,B0(g,Du(CG(c,AAt),a.bGV.bGZ)))).h2(f);b.hP(Dcg(a,d));h=(d.bGE-e.bGE)/2.0;i=(d.bGF-e.bGF)/2.0;a.b2k.cC(b.h2(Bh(h,i)));if(a.cbZ!==null)b.hG();}; +function Dq9(){let a=this;Ez.call(a);a.cqX=null;a.cDr=null;} +let DvB=(a,b)=>{let c,d,e,f,g,h;HZ(a,b);c=b.bGZ;F$();d=A_N;e=AB8(CeS(a),a.bGR.bGN);a.cqX=b.bIa;f=E6(0.0,0.0);g=a.bGR;B3();h=CO;a.cDr=d.a0U(null,BOu(Q2(g,h),b.bH1,a.bGR,c,b,CeS(a)),f,e,BS_(a.bGR));},EAs=a=>{let b=new Dq9();DvB(b,a);return b;},CeS=a=>{let b;b=B1(a.bGR);B8();return B0(b,CG(Cc0,Ve(a)));},D8k=a=>{E0();return Ir;},EYA=(a,b)=>{return a.cDr.cF(b);},Dvw=(a,b)=>{let c;c=a.cqX;if(c!==null)b.hF(c);a.cDr.cC(b);if(a.cqX!==null)b.hG();}; +function Car(){Ez.call(this);this.cJA=null;} +let E_P=(a,b)=>{let c,d,e;HZ(a,b);c=B1(a.bGR);B8();c=B0(c,CG(CNy,N$(a.bGR.bPb)));d=b.bHD;Cy();e=d!==AIF?0:1;a.cJA=Cey(a.bGR,c,b.bG_,e);},EKC=a=>{let b=new Car();E_P(b,a);return b;},Emq=(a,b)=>{return Dmm(a.cJA,b);},E9k=(a,b)=>{let c,d,e,f;c=KV(a.bGV.bMi);Hb();Db(c,IO,E(6672));d=KF;e=En(a.bGV);f=new S;T(f);H(H(f,E(6473)),e);Db(c,d,Q(f));Db(c,OZ,En(a.bGV));Db(c,KD,a.bGV.bJn);Db(c,L8,a.bGV.bH4.bJ1);b.hH(c);Czt(a.cJA,b);b.hI();},E1H=a=>{E0();return Yr;}; +function C2J(){Ez.call(this);this.cPR=null;} +let Ebu=(a,b)=>{let c;HZ(a,b);c=B1(a.bGR);B8();c=B0(c,CG(Di2,N$(a.bGR.bPb)));a.cPR=Dfl(a.bGR,c,b.bG_);},DIo=a=>{let b=new C2J();Ebu(b,a);return b;},Ew9=(a,b)=>{return Cl(22.0,22.0);},EfF=(a,b)=>{let c,d,e,f;c=KV(a.bGV.bMi);Hb();Db(c,IO,E(6673));d=KF;e=En(a.bGV);f=new S;T(f);H(H(f,E(6473)),e);Db(c,d,Q(f));Db(c,OZ,En(a.bGV));Db(c,KD,a.bGV.bJn);Db(c,L8,a.bGV.bH4.bJ1);b.hH(c);CuP(a.cPR,b);b.hI();},DKM=a=>{E0();return Yr;},C8Z=N(Ez),FwY=(a,b)=>{HZ(a,b);},EVd=a=>{let b=new C8Z();FwY(b,a);return b;},ESG=(a,b)=>{return Cl(24.0, +24.0);},Ft$=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=Fj();BQ(c,12.0,0.0);BQ(c,24.0,12.0);BQ(c,12.0,24.0);BQ(c,0.0,12.0);BQ(c,12.0,0.0);d=B1(a.bGR);B8();d=B0(d,A3J);B9();e=(BJ(d,Cz)).cu(a.bGR.bGN);f=(BJ(d,CK)).cu(a.bGR.bGN);g=Fi(d);h=G1(d);c.bG1=h;i=BgD();Hb();Db(i,IO,E(749));j=KF;k=En(a.bGV);d=new S;T(d);H(H(d,E(6473)),k);Db(i,j,Q(d));Db(i,OZ,En(a.bGV));Db(i,KD,a.bGV.bJn);Db(i,L8,a.bGV.bH4.bJ1);b.hH(i);(((b.h2(e)).h2(Cc(f))).h2(g)).hP(c);b.hI();},DTZ=a=>{E0();return AFH;}; +function Dfe(){let a=this;Ez.call(a);a.cDB=null;a.cEj=null;a.c3G=0.0;} +let DfB=a=>{B8();return Du(CG(DmJ,Ve(a)),N9(a));},EGi=(a,b)=>{let c,d,e;HZ(a,b);c=a.bGR;d=XK(c,B0(B1(c),DfB(a)));e=b.bH1;B3();a.cDB=C_(e,d,CO,a.bGR);a.cEj=b.bIa;},ECZ=a=>{let b=new Dfe();EGi(b,a);return b;},DW0=(a,b)=>{return Cl(10.0,10.0);},ENe=(a,b)=>{let c,d,e,f,g,h,i,j;c=B0(B1(a.bGR),DfB(a));B9();d=(BJ(c,CK)).cu(a.bGR.bGN);e=(BJ(c,Cz)).cu(a.bGR.bGN);f=G1(c);g=a.bGV.bHD;Cy();if(g===Yg)g=ALP(10.0,10.0,a.c3G-90.0,180.0);else{g=Fz(10.0,10.0);h=a.bGR;i=a.bGV.bGZ;if(BNN(h,i))g.bG1=f;}b=(b.h2(Cc(d))).h2(e);c=a.cEj;if +(c!==null)b.hF(c);i=KV(a.bGV.bMi);Hb();Db(i,IO,E(749));c=KF;d=En(a.bGV);e=new S;T(e);H(H(e,E(6473)),d);Db(i,c,Q(e));Db(i,OZ,En(a.bGV));Db(i,KD,a.bGV.bJn);Db(i,L8,a.bGV.bH4.bJ1);b.hH(i);(b.h2(Dw(1.5))).hP(g);b.hI();j=5.0-(a.cDB.cF(b.hE())).bGE/2.0;a.cDB.cC(b.h2(Bh(j,10.0)));if(a.cEj!==null)b.hG();},EYZ=a=>{E0();return Yr;}; +function B2R(){let a=this;Ez.call(a);a.bZR=null;a.cAq=null;a.b3a=null;a.cYc=null;a.b0d=null;a.b0C=null;a.cgq=0;a.cmw=null;a.c8_=0;a.c4A=0;a.c6r=null;a.b$J=null;a.bX3=null;} +let CST=0,BVR=()=>{BVR=Z(B2R);D91();},Fhv=a=>{B8();return AIf(CG(DK,Ve(a)),a.bX3.JS());},EbJ=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;BVR();HZ(a,b);a.c8_=0;a.c6r=e;a.c4A=CYd(a.bGR);a.cmw=d;e=B$(Mt(b)!==null?Mt(b):Blt(AKB(a.bGR)));a.bX3=e;F$();if(!(e!==BH1&&e!==AR7)){E0();a.bZR=AM1;}else if(e===B56){E0();a.bZR=AJ_;}else if(!(e!==A8Z&&e!==A4y)){E0();a.bZR=AC7;}else if(e!==AAP){E0();a.bZR=Ir;}else{if(!CYd(S$(a))){E0();d=Ir;}else{E0();d=AGM;}a.bZR=d;}d=a.bX3;a.cgq=d!==AAP?0:1;a.cAq=b.bIa;f=b.bG_;if +(d instanceof BZC){B8();g=CG(CJi,Ve(a));}else{B8();d=AIf(CG(DK,Ve(a)),a.bX3.JS());CV();g=CG(d,OO);}h=b.bGZ;i=ZT(B0(A2O(a.bGV),Du(g,h)),f);d=A2O(a.bGV);B8();j=B0(d,AHZ(AIf(CG(CBG,Ve(a)),a.bX3.JS()),h));k=ZT(B0(A2O(a.bGV),Du(Fhv(a),h)),f);B9();l=(BJ(i,Cz)).cu(GK(a.bGR));CM();m=DQ(f,C6);if(m===null)m=(BJ(i,CK)).cu(GK(S$(a)));n=(BJ(i,Jm)).oK();o=(BJ(i,ACK)).oK();p=G1(i);q=Y1(i,f);r=D0(i,GK(S$(a)));s=D0(k,GK(S$(a)));t=D0(j,GK(S$(a)));u=IR(i);if(Df()&&!CST&&N9(a)!==h)J(Jk());a:{b:{c:{a.b$J=Bnc(BwX(AGc(AAA(m,l),q), +p),n,o);v=B4(PJ(S$(a)),En(b));if(DnA(A7f(b),v)){d=(a.bX3.JS()).data[0];CV();if(d===Wk)break c;}if(!ATq(A7f(b)))break b;}a.b0d=E6((BJ(k,Pt)).oK(),0.0);break a;}if(!DnA(A7f(b),v))a.b0d=A$j(A7f(b),S$(a),u,s,GM(k),k);else a.b0d=A$j(A7f(b),S$(a),u,r,GM(k),i);}d:{w=c.bpS(b);if(h!==null&&ATW(h,S$(a))!==null)a.b0C=ATW(h,S$(a));else{e:{if(h!==null){F_();if(I7(h,Hl)!==null&&!w.j())break e;}a.b0C=E6(0.0,0.0);break d;}c=Ls(w);B3();a.b0C=Js(C_(c,t,CO,S$(a)),1.0,0.0);}}c=S$(a);B3();d=CO;a.cYc=BOu(Q2(c,d),v,S$(a),h,b,i);x +=IR(j);if(!a.cgq)a.b3a=a.bX3.a0U(a.cYc,a.b0d,a.b0C,a.b$J,x);else a.b3a=a.bX3.a0U(E6(0.0,0.0),E6(0.0,0.0),E6(0.0,0.0),a.b$J,x);},A3f=(a,b,c,d)=>{let e=new B2R();EbJ(e,a,b,c,d);return e;},EsD=(a,b)=>{return a.b3a.cF(b);},DPY=(a,b)=>{let c,d,e,f,g,h,i,j,k;if(a.cgq){c=a.bGV;d=a.cmw;e=G$();d=d.dX();a:{b:{while(d.dY()){f=d.dZ();if(UY(f,c)){f=ANk(f,c);if(!EQ(e,f))break b;}}g=0;break a;}g=1;}if(!g){if(!a.c4A){f=a.bGV;d=a.cmw.dX();c:{d:{while(d.dY()){e=d.dZ();if(M2(e)==1&&UY(e,f)&&!AG$(e))break d;}g=0;break c;}g=1;}if +(g){Qa();return RW;}}c=a.bGV;d=a.cmw.dX();e:{f:{while(d.dY()){e=d.dZ();if(M2(e)==1&&UY(e,c)){e=L1(e);h=e.bJG;FU();f=Hf;if(!(h!==f&&e.bJi!==f)?0:1)break f;}}g=0;break e;}g=1;}if(!g){d=a.b0C.cF(b);e=a.b0d.cF(b);f=a.b3a.cF(b);i=BC(d.bGE,e.bGE)-f.bGE;if(i<1.0)i=1.0;j=ADF(1.0,e.bGF,d.bGF);b=new BpG;k=i/2.0;CIX(b,k,k,j,j);return b;}Qa();return RW;}Qa();return RW;}Qa();return RW;},FiG=(a,b)=>{let c,d,e,f,g,h;c=new ACL;d=En(a.bGV);e=new S;T(e);H(H(e,E(6674)),d);API(c,Q(e));b.hP(c);f=KV(a.bGV.bMi);Hb();Db(f,IO,E(749));c +=KF;d=En(a.bGV);e=new S;T(e);H(H(e,E(6473)),d);Db(f,c,Q(e));Db(f,OZ,En(a.bGV));Db(f,KD,a.bGV.bJn);Db(f,L8,a.bGV.bH4.bJ1);b.hH(f);c=a.cAq;if(c!==null)b.hF(c);c=a.bZR;E0();if(c===AJ_){c=Ef(a.b$J,b);d=a.c6r;if(d!==null){e=(L$(d,a.bGV)).cq7;if(e!==null){e.bG1=a.b$J.bHm;c.hP(e);}}else{b=new BP;X(b);J(b);}}a.b3a.cC(b);if(a.cgq){d=a.b3a.cF(b.hE());e=a.b0d.cF(b.hE());c=MW(b.h2(Bh((d.bGE-e.bGE)/2.0,8.0+d.bGF)),e);a.b0d.cC(c);g=a.b0C.cF(b.hE());h=(d.bGE-g.bGE)/2.0;a.b0C.cC(b.h2(Bh(h,(-8.0)-g.bGF)));}if(a.cAq!==null)b.hG();b.hI();},Fcw +=a=>{return a.bZR;},E9r=a=>{let b;b=a.bZR;E0();if(b!==AM1)return new AZQ;return a.b3a.a9W();},D91=()=>{CST=0;}; +function Cak(){let a=this;Ez.call(a);a.cxJ=null;a.cil=null;a.b7j=null;a.cD$=null;a.cJd=0.0;a.cp2=0;a.ddc=null;a.cPg=0;a.cRa=0;} +let EH7=(a,b,c)=>{let d,e,f,g,h,i,j,k,l;HZ(a,b);a.cPg=13;a.cRa=5;a.ddc=b;d=b.bGZ;e=ATe(a);B9();a.cJd=(BJ(e,Jm)).oK();f=D0(C73(a),a.bGR.bGN);if(!AIc(a.bGR))e=b.bH1;else{g=b.bH1;h=Bk();i=Br(g.bIc);while(Bq(i)){e=Bm(i);j=h;if(j.bGJ){e=BY(e);k=new S;T(k);H(H(k,E(4210)),e);U(j,Q(k));}else{HW();k=D3(Dmx,e);if(!Kr(k)){e=BY(e);k=new S;T(k);H(H(k,E(4210)),e);U(j,Q(k));}else{e=El(k,1);k=El(k,2);l=new S;T(l);H(H(H(H(l,E(4210)),e),E(6675)),k);U(j,Q(l));}}}e=AVM(g.bMJ,h,g.bSH,g.bNJ,g.bMn);}a:{b:{B3();a.cxJ=CA$(C_(e,f,CO, +a.bGR),Of(ATe(a)));if(d!==null){F_();if(I7(d,Hl)!==null){HN();if(c.bpU(AAT,b))break b;}}a.cil=null;break a;}f=Ls(T0(d,WR(a.bGR)));h=a.bGR;Fs();a.cil=C_(f,Nu(h,AWZ,d),CO,a.bGR);}HN();a.cp2=c.bpU(QA,b);if(!I6(b.bKL.ZG())&&a.cp2)a.b7j=DtX((BJ(ATe(a),H1)).oK(),EWE(10.0,16.0));else a.b7j=b.bKL.bpV(a.bGR,0,a.cp2,b.bGZ,ATe(a),null);a.cD$=b.bIa;},Fsq=(a,b)=>{let c=new Cak();EH7(c,a,b);return c;},ATe=a=>{let b;b=B1(a.bGR);B8();return B0(b,Du(CvC,a.bGV.bGZ));},C73=a=>{let b;b=B1(a.bGR);B8();return B0(b,Du(CLo,a.bGV.bGZ));},DCr +=(a,b)=>{let c,d,e,f,g;c=Bll(a,b);d=a.b7j.cF(b);e=BC(d.bGE,c.bGE+(2*a.cRa|0));b=ATe(a);B9();f=(BJ(b,Pt)).oK();if(!(e{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;c=b.hE();d=De(a,c);e=Bll(a,c);f=d.bGE;g=Ge(C2(f,d.bGF),a.cJd);h=a.bGV.bG_;CM();i=DQ(h,C6);j=DQ(a.bGV.bG_,AKr);k=ATe(a);B9();l=(BJ(k,Cz)).cu(a.bGR.bGN);if(j===null)j=i!==null?i:(BJ(C73(a),CK)).cu(a.bGR.bGN);if(i===null)i=(BJ(k,CK)).cu(a.bGR.bGN);g.bG1=G1(k);m=Fi(k);h=(b.h2(l)).h2(Cc(i));b +=a.cD$;if(b!==null)h.hF(b);n=KV(a.bGV.bMi);Hb();Db(n,IO,E(749));o=KF;b=En(a.bGV);p=new S;T(p);H(H(p,E(6473)),b);Db(n,o,Q(p));Db(n,OZ,En(a.bGV));Db(n,KD,a.bGV.bJn);Db(n,L8,a.bGV.bH4.bJ1);h.hH(n);(h.h2(m)).hP(g);if(j!==null&&!i.cx(j)){p=BBY(C2(f,e.bGF),a.cJd);((h.h2(Cc(j))).h2(m)).hP(p);}q=new ABz;b=new AFw;Ts(b,c);AHd(q,b);b=a.cil;if(b!==null)Sv(q,b);Sv(q,a.cxJ);AGX(q,h,d.bGE,e.bGF);o=AMo(h,a,m);b=a.b7j;c=BW(e.bGF);b.cC(Jw(o,c));if(a.cD$!==null)h.hG();h.hI();},Bll=(a,b)=>{let c,d;c=BE5(a.cxJ,b);d=a.cil;d=d!== +null?d.cF(b):Cl(0.0,0.0);return Cl(BC(c.bGE,d.bGE),c.bGF+d.bGF);},FqW=a=>{if((BWf(a.bGV)).dV()>0){E0();return WC;}E0();return Ir;},Dxh=(a,b,c)=>{return 0.0;},Evb=(a,b,c)=>{return (De(a,b)).bGE;},E$q=(a,b)=>{let c,d;c=Bll(a,b);d=a.b7j;if(F0(d,Oa))return AWB(d.yC(b),c.bGF);return Ya();},EGx=(a,b,c)=>{return A_W(BW((Bll(a,c)).bGF),a.b7j.yz(b,c));}; +function Cx2(){let a=this;Ez.call(a);a.cEb=null;a.clR=null;a.ciA=null;a.cwZ=null;a.cse=0.0;a.c26=null;a.cUQ=0;a.cLk=0;} +let EsE=(a,b,c)=>{let d,e,f,g;a:{b:{HZ(a,b);a.cUQ=13;a.cLk=5;a.c26=b;d=b.bGZ;e=AQH(a);B9();a.cse=(BJ(e,Jm)).oK();f=D0(CS_(a),a.bGR.bGN);g=b.bH1;B3();a.cEb=Js(C_(g,f,CO,a.bGR),2.0,2.0);if(d!==null){F_();if(I7(d,Hl)!==null){HN();if(c.bpU(AAT,b))break b;}}a.clR=null;break a;}c=Ls(T0(d,WR(a.bGR)));e=a.bGR;Fs();a.clR=C_(c,Nu(e,AWZ,d),CO,a.bGR);}e=D0(AQH(a),a.bGR.bGN);a.ciA=b.bKL.bpV(a.bGR,0,0,b.bGZ,AQH(a),e);a.cwZ=b.bIa;},Fnb=(a,b)=>{let c=new Cx2();EsE(c,a,b);return c;},DDx=(a,b)=>{let c;c=BNh(a,b);return AWB(a.ciA.yC(b), +c.bGF);},EVT=(a,b)=>{let c,d,e,f;c=BNh(a,b);d=a.ciA.cF(b);e=BC(d.bGE,c.bGE+(2*a.cLk|0));b=AQH(a);B9();f=(BJ(b,Pt)).oK();if(!(e{let b;b=B1(a.bGR);B8();return B0(b,Du(B9u,a.bGV.bGZ));},CS_=a=>{let b;b=B1(a.bGR);B8();return B0(b,Du(CNs,a.bGV.bGZ));},E5m=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;c=b.hE();d=De(a,c);e=BNh(a,c);f=d.bGE;g=Ge(C2(f,d.bGF),a.cse);c=a.c26.bG_;CM();h=DQ(c,E1);i=DQ(a.bGV.bG_, +C6);j=DQ(a.bGV.bG_,AKr);k=AQH(a);if(h===null){c=AQH(a);B9();h=(BJ(c,Cz)).cu(a.bGR.bGN);}if(j===null){if(i!==null)j=i;else{c=CS_(a);B9();j=(BJ(c,CK)).cu(a.bGR.bGN);}}if(i===null){B9();i=(BJ(k,CK)).cu(a.bGR.bGN);}B3();l=CO;g.bG1=G1(k);m=Fi(k);h=(b.h2(h)).h2(Cc(i));b=a.cwZ;if(b!==null)h.hF(b);n=KV(a.bGV.bMi);Hb();Db(n,IO,E(749));o=KF;p=En(a.bGV);b=new S;T(b);H(H(b,E(6473)),p);Db(n,o,Q(b));Db(n,OZ,En(a.bGV));Db(n,KD,a.bGV.bJn);Db(n,L8,a.bGV.bH4.bJ1);h.hH(n);(h.h2(m)).hP(g);if(j!==null&&!i.cx(j)){o=BBY(C2(f,e.bGF), +a.cse);((h.h2(Cc(j))).h2(m)).hP(o);}c=h.hE();if(l===Ft){q=new BXd;Ts(q,c);}else if(l!==CO){q=new BUo;Ts(q,c);}else{q=new AFw;Ts(q,c);}r=Dsi(q);b=a.clR;if(b!==null)Sv(r,b);Sv(r,a.cEb);AGX(r,h,d.bGE,e.bGF);s=AMo(h,a,m);b=a.ciA;b.cTz=d.bGE;c=BW(e.bGF);b.cC(Jw(s,c));if(a.cwZ!==null)h.hG();h.hI();},BNh=(a,b)=>{let c,d;c=a.cEb.cF(b);d=a.clR;b=d!==null?d.cF(b):Cl(0.0,0.0);return Cl(BC(c.bGE,b.bGE),c.bGF+b.bGF);},EEh=a=>{E0();return WC;},DyR=(a,b,c)=>{return 0.0;},EGo=(a,b,c)=>{return (De(a,b)).bGE;}; +function C3C(){let a=this;Ez.call(a);a.cyh=null;a.ckz=null;a.cmo=null;a.crX=null;a.cyR=0.0;a.c$P=null;a.cTF=0;a.cNX=0;} +let EDP=(a,b,c)=>{let d,e,f,g;a:{b:{HZ(a,b);a.cTF=13;a.cNX=5;a.c$P=b;d=b.bGZ;e=AZj(a);B9();a.cyR=(BJ(e,Jm)).oK();f=D0(Cd7(a),a.bGR.bGN);g=b.bH1;B3();a.cyh=Js(C_(g,f,CO,a.bGR),2.0,2.0);if(d!==null){F_();if(I7(d,Hl)!==null){HN();if(c.bpU(AAT,b))break b;}}a.ckz=null;break a;}c=Ls(T0(d,WR(a.bGR)));e=a.bGR;Fs();a.ckz=C_(c,Nu(e,AWZ,d),CO,a.bGR);}e=D0(AZj(a),a.bGR.bGN);a.cmo=b.bKL.bpV(a.bGR,0,0,b.bGZ,AZj(a),e);a.crX=b.bIa;},Epb=(a,b)=>{let c=new C3C();EDP(c,a,b);return c;},EXt=(a,b)=>{let c;c=BSg(a,b);return AWB(a.cmo.yC(b), +c.bGF);},DFH=(a,b)=>{let c,d,e,f,g;c=BSg(a,b);d=a.cmo.cF(b);e=BC(d.bGE,c.bGE+(2*a.cNX|0));f=AZj(a);B9();g=(BJ(f,Pt)).oK();if(!(e{let b;b=B1(a.bGR);B8();return B0(b,Du(CI0,a.bGV.bGZ));},Cd7=a=>{let b;b=B1(a.bGR);B8();return B0(b,Du(CUG,a.bGV.bGZ));},D7x=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p;c=b.hE();d=De(a,c);e=BSg(a,c);f=d.bGE;g=Ge(C2(f,d.bGF),a.cyR);c=a.bGV.bG_;CM();h=DQ(c,AKr);i=DQ(a.bGV.bG_, +C6);j=AZj(a);B9();k=(BJ(j,Cz)).cu(a.bGR.bGN);if(h===null)h=i!==null?i:(BJ(Cd7(a),CK)).cu(a.bGR.bGN);if(i===null)i=(BJ(j,CK)).cu(a.bGR.bGN);g.bG1=G1(j);l=Fi(j);j=(b.h2(k)).h2(Cc(i));b=a.crX;if(b!==null)j.hF(b);m=KV(a.bGV.bMi);Hb();Db(m,IO,E(749));k=KF;n=En(a.bGV);b=new S;T(b);H(H(b,E(6473)),n);Db(m,k,Q(b));Db(m,OZ,En(a.bGV));Db(m,KD,a.bGV.bJn);Db(m,L8,a.bGV.bH4.bJ1);j.hH(m);(j.h2(l)).hP(g);if(h!==null&&!i.cx(h)){o=BBY(C2(f,e.bGF),a.cyR);((j.h2(Cc(h))).h2(l)).hP(o);}n=new ABz;b=new AFw;Ts(b,j.hE());AHd(n,b);b +=a.ckz;if(b!==null)Sv(n,b);Sv(n,a.cyh);AGX(n,j,d.bGE,e.bGF);p=AMo(j,a,l);b=a.cmo;b.cws=d.bGE;c=BW(e.bGF);b.cC(Jw(p,c));j.hI();if(a.crX!==null)j.hG();},BSg=(a,b)=>{let c,d;c=a.cyh.cF(b);d=a.ckz;b=d!==null?d.cF(b):Cl(0.0,0.0);return Cl(BC(c.bGE,b.bGE),c.bGF+b.bGF);},DMU=a=>{E0();return WC;},DQ0=(a,b,c)=>{return 0.0;},ECF=(a,b,c)=>{return (De(a,b)).bGE;},CpA=N(Ez),D1U=(a,b)=>{HZ(a,b);},EV3=a=>{let b=new CpA();D1U(b,a);return b;},Fsp=(a,b)=>{let c;c=a.bGR.bNy;Pf();if(c===AFF)return Cl(8.0,80.0);return Cl(80.0,8.0);},DSW +=(a,b)=>{let c,d,e,f,g;c=De(a,b.hE());d=C2(c.bGE,c.bGF);c=B1(a.bGR);B8();e=B0(c,Du(B6w,a.bGV.bGZ));B9();f=(BJ(e,CK)).cu(a.bGR.bGN);g=G1(e);d.bG1=g;((b.h2(E4())).h2(Cc(f))).hP(d);},DwI=a=>{E0();return Ir;}; +function CWj(){let a=this;Ez.call(a);a.cpK=null;a.cka=null;} +let EuO=(a,b)=>{let c,d,e;a:{b:{HZ(a,b);c=b.bGZ;d=b.bH1;e=a.bGR;Fs();b=Nu(e,Bv3,c);B3();a.cpK=C_(d,b,CO,a.bGR);if(c!==null){F_();if(I7(c,Hl)!==null)break b;}a.cka=null;break a;}b=a.bGR;a.cka=C_(B4(b.bH$,I7(c,WR(b))),Nu(a.bGR,Bz7,c),CO,a.bGR);}},Ent=a=>{let b=new CWj();EuO(b,a);return b;},ERp=(a,b)=>{let c;c=a.cpK.cF(b);return JM(DgY(a,b),c);},DgY=(a,b)=>{let c;c=a.cka;if(c===null)return Cl(0.0,0.0);return c.cF(b);},Fox=(a,b)=>{let c,d,e,f,g,h;c=b.hE();d=DgY(a,c);e=De(a,c);f=a.cpK.cF(c);g=(e.bGE-f.bGE)/2.0;h +=d.bGF;a.cpK.cC(b.h2(Bh(g,h)));c=a.cka;if(c!==null)c.cC(b.h2(BM((e.bGE-d.bGE)/2.0)));},E15=a=>{E0();return Ir;},CiS=N(Ez),DFP=(a,b)=>{HZ(a,b);},EMT=a=>{let b=new CiS();DFP(b,a);return b;},Fwa=(a,b)=>{return Cl(4.0,4.0);},Fwl=(a,b)=>{let c,d,e;c=Fz(4.0,4.0);d=B1(a.bGR);B8();e=B0(d,Du(Cxv,N9(a)));B9();((b.h2((BJ(e,Cz)).cu(a.bGR.bGN))).h2(new VH)).hP(c);},EyZ=a=>{E0();return Yr;},CcD=N(Ez),DCu=(a,b)=>{HZ(a,b);},DRm=a=>{let b=new CcD();DCu(b,a);return b;},EIA=(a,b)=>{return Cl(30.0,30.0);},D1d=(a,b)=>{return;},EZE +=a=>{E0();return Ir;}; +function CJS(){let a=this;Ez.call(a);a.coH=null;a.caW=null;a.b$9=null;a.cII=null;a.cO0=0.0;a.cXO=null;a.c2b=null;a.c5m=0.0;a.cJ3=0.0;a.cG7=null;} +let EpM=(a,b,c)=>{let d,e,f,g,h,i;HZ(a,b);d=b.bG_;CM();e=DQ(d,C6);a.caW=b.bGZ;a.cII=b.bIa;f=B1(a.bGR);B8();g=ZT(B0(f,Du(CG(B5d,Ve(a)),a.caW)),d);B9();a.cXO=(BJ(g,Cz)).cu(a.bGR.bGN);a.cO0=G1(g);a.c2b=Y1(g,d);a.c5m=(BJ(g,Jm)).oK();a.cJ3=(BJ(g,ACK)).oK();if(e!==null)a.cG7=e;else a.cG7=(BJ(g,CK)).cu(a.bGR.bGN);a:{h=D0(g,a.bGR.bGN);i=IR(g);a.coH=C_(b.bH1,h,i,a.bGR);f=b.cgF;if(f!==null)a.b$9=BKB(f.bQv,a.bGR);else{b:{f=a.caW;if(f!==null){F_();if(I7(f,Hl)!==null){HN();if(c.bpU(AAT,b))break b;}}a.b$9=E6(0.0,0.0);break a;}b +=Ls(T0(a.caW,WR(a.bGR)));g=a.bGR;Fs();a.b$9=Js(C_(b,Nu(g,Btr,a.caW),i,a.bGR),1.0,0.0);}}},Fv5=(a,b)=>{let c=new CJS();EpM(c,a,b);return c;},FlM=(a,b)=>{let c,d,e;c=a.coH.cF(b);d=a.coH;e=a.b$9;B3();return FO(W$((FT(d,e,CF)).cF(b),0.0,2.0*c.bGF),20.0,20.0);},DJI=(a,b)=>{let c,d,e,f,g,h;c=a.cII;if(c!==null)b.hF(c);d=De(a,b.hE());e=Rf(0.0,0.0,d.bGE,d.bGF);f=CUD(AWx(a.bGR),null,a.coH,a.b$9,e,a.c2b);g=a.bGR;MY();c=AEQ;h=null;d=null;c=BG$(g,c,h,0,d);h=BS_(a.bGR);CvQ(f,b,a.cG7,a.cXO,a.cO0,a.c5m,c,h,a.cJ3);if(a.cII!== +null)b.hG();},Fce=a=>{E0();return Ir;},Dbm=N(Ez),DEt=(a,b)=>{HZ(a,b);},Ed7=a=>{let b=new Dbm();DEt(b,a);return b;},EcP=(a,b)=>{return Cl(24.0,24.0);},D4i=(a,b)=>{let c,d,e,f,g,h,i;c=Fj();BQ(c,12.0,0.0);BQ(c,24.0,12.0);BQ(c,12.0,24.0);BQ(c,0.0,12.0);BQ(c,12.0,0.0);d=B1(a.bGR);B8();e=B0(d,CG(BBw,Ve(a)));B9();f=(BJ(e,Cz)).cu(a.bGR.bGN);g=(BJ(e,CK)).cu(a.bGR.bGN);h=G1(e);i=Fi(e);c.bG1=h;(((b.h2(f)).h2(Cc(g))).h2(i)).hP(c);},Ffd=a=>{E0();return AFH;}; +function A5m(){let a=this;Ez.call(a);a.crL=null;a.b9f=null;a.cf0=null;} +let D0V=(a,b)=>{B45(a,b,E(6676));},Foc=a=>{let b=new A5m();D0V(b,a);return b;},Fq3=a=>{B8();return CG(BBw,Ve(a));},D3G=a=>{let b;b=K(Bi,1);b.data[0]=E(3911);return b;},B45=(a,b,c)=>{let d,e,f,g,h,i;HZ(a,b);d=b.bGZ;e=Du(Fq3(a),d);f=(a.bqf()).data;g=f.length;h=0;while(h{let c=new A5m();B45(c,a,b);return c;},ENB=(a,b)=>{return Cl(22.0,22.0);},DK7=(a,b)=> +{let c,d,e,f,g,h,i,j,k,l;c=Fz(22.0,22.0);d=a.cf0;e=a.b9f;B9();d=UD(d,e,Cz,a.bGR.bGN);e=UD(a.cf0,a.b9f,CK,a.bGR.bGN);f=G1(a.b9f);g=Y1(a.b9f,a.cf0);c.bG1=f;b=((b.h2(g)).h2(Cc(e))).h2(d);b.hP(c);h=a.crL.cF(b.hE());i=h.bGE;j=h.bGF;k=(22.0-i)/2.0;l=(22.0-j)/2.0;a.crL.cC(b.h2(Bh(k,l)));},DVy=a=>{E0();return Yr;}; +function Ch5(){Ez.call(this);this.cd3=null;} +let ESx=(a,b)=>{let c,d,e,f;HZ(a,b);c=b.bGZ;d=a.bGR;Fs();d=Nu(d,ASd,c);e=a.bGV.bH1;if(e!==null&&!FQ(e)){B3();a.cd3=C_(e,d,CO,a.bGR);}else{f=K(KH,1);f.data[0]=En(a.bGV);b=PB(f);B3();a.cd3=C_(b,d,CO,a.bGR);}},D9Q=a=>{let b=new Ch5();ESx(b,a);return b;},DZl=(a,b)=>{let $$je;try{b=FO(a.cd3.cF(b),8.0,8.0);}catch($$e){$$je=P($$e);if($$je instanceof Dt){return Cl(20.0,20.0);}else{throw $$e;}}return b;},DHZ=(a,b)=>{let c,d,e,f,g;c=b.hE();d=De(a,c);e=a.cd3.cF(c);b.hP(Ge(C2(d.bGE,d.bGF),5.0));f=(d.bGE-e.bGE)/2.0;g=(d.bGF +-e.bGF)/2.0;a.cd3.cC(b.h2(Bh(f,g)));},Ftt=a=>{E0();return Ir;},CFY=N(A5m),E5L=(a,b)=>{B45(a,b,E(6677));},D74=a=>{let b=new CFY();E5L(b,a);return b;},Efs=a=>{return BB(Bi,[E(3911),E(6678)]);}; +function Can(){let a=this;Ez.call(a);a.b$Q=null;a.c9y=10.0;} +let Fl4=(a,b,c)=>{HZ(a,b);a.c9y=10.0;a.b$Q=c;},DLa=(a,b)=>{let c=new Can();Fl4(c,a,b);return c;},Etw=a=>{E0();return Ir;},ERX=(a,b)=>{let c,d,e,f;c=0.0;d=0.0;e=((CEb(a.bGV)).dW()).dX();while(e.dY()){f=De(Ddt(a,(e.dZ()).d1()),b);d=d+f.bGF+10.0;c=BC(c,f.bGE);}return Cl(c,d);},FdA=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;c=b.hE();d=a.bGV;e=a.b$Q.cZa.dX();a:{b:{while(true){if(!e.dY())break b;f=e.dZ();if(UY(f,d)){g=ANk(f,d);if(g!==null)break;}}break a;}g=null;}if(g!==null){h=L$(a.b$Q,a.bGV);i=L$(a.b$Q,g);if +(i!==null){j=B4J(i);L$(a.b$Q,a.bGV);f=En(a.bGV);K$();e=!Dr(f,T_.bHx)?Y0:T_;if(e===Y0){DC();f=Gy;}else if(e===T_){DC();f=FL;}else{b=new BV;X(b);J(b);}k=B4J(h);l=0.0;g=((CEb(a.bGV)).dW()).dX();while(g.dY()){m=g.dZ();n=m.d1();o=m.d0();e=i.bXs.bKL.bqi(o);if(e===null)return;p=i.bNG.yz(e.p(),c);if(p===null)return;q=Ddt(a,n);r=De(q,c);s=BA(0.0,r.bGF/2.0);t=j.bGK-k.bGK;DC();if(f===Gy&&t<0.0)f=CKi(f);AV4(q,f,s,BA(f===FL?t+A1W(p):t+p.bMI,j.bGL-k.bGL-l+By1(p)));ADH(q,MW(b,r));b=b.h2(BW(r.bGF+10.0));l=l+r.bGF+10.0;}return;}Fw(Fm(), +E(6679));return;}Fw(Fm(),E(6680));},Ddt=(a,b)=>{let c,d,e,f,g,h,i,j;c=B1(a.bGR);d=b.cWa;B8();e=B0(c,Du(CG(By2,Ve(a)),d));f=b.cOP;CM();c=DQ(f,C6);if(c===null){B9();c=(BJ(e,CK)).cu(a.bGR.bGN);}B9();f=(BJ(e,Cz)).cu(a.bGR.bGN);g=G1(e);d=D0(e,a.bGR.bGN);h=Fi(e);i=b.cOe;j=a.bGR;B3();return XJ(g,f,c,A$j(i,j,CF,d,GM(e),e),1,h);}; +function CKL(){let a=this;Ez.call(a);a.cZ6=0;a.cis=null;a.cve=null;} +let FcK=(a,b)=>{let c,d,e,f;HZ(a,b);c=a.bGV.bGZ;a.cZ6=!(c!==null&&CB(AG_(c),E(6681)))?0:1;c=B1(a.bGR);B8();d=Yz(B0(c,Du(CXp,b.bGZ)),a.bGR.bGN,b.bG_);e=b.bH1;B3();f=CO;c=a.bGR;Ed();a.cis=WB(e,d,f,c,FR,GM(Bp8(a)));a.cve=b.bIa;},E0r=a=>{let b=new CKL();FcK(b,a);return b;},Bp8=a=>{let b,c;b=a.bGV;c=B1(a.bGR);B8();return B0(c,Du(CqK,b.bGZ));},D1l=a=>{E0();return Ir;},DGT=(a,b)=>{return FO(a.cis.cF(b),20.0,20.0);},EZW=(a,b)=>{let c,d,e,f,g,h;Hb();b.hH(AU$(KF,AYN(a.bGV.bH4)));c=a.cve;if(c!==null)b.hF(c);c=De(a,b.hE());d +=a.cis.cF(b.hE());e=Y1(Bp8(a),a.bGV.bG_);f=a.bGV.bG_;CM();g=DQ(f,E1);if(g===null){g=Bp8(a);B9();g=(BJ(g,Cz)).cu(a.bGR.bGN);}b=b.h2(g);g=DQ(f,C6);if(g===null){g=Bp8(a);B9();g=(BJ(g,CK)).cu(a.bGR.bGN);}b=(b.h2(Cc(g))).h2(e);b.hP(M6(c));if(a.cZ6)(b.h2(Bh(3.0,3.0))).hP(M6(FO(c,(-6.0),(-6.0))));h=(c.bGE-d.bGE)/2.0;a.cis.cC(b.h2(Bh(h,10.0)));if(a.cve!==null)b.hG();b.hI();}; +function CRt(){let a=this;Ez.call(a);a.cPK=0;a.cnS=null;a.cux=null;} +let DA$=(a,b)=>{let c,d,e,f;HZ(a,b);c=a.bGV.bGZ;a.cPK=!(c!==null&&CB(AG_(c),E(6682)))?0:1;c=B1(a.bGR);B8();d=Yz(B0(c,Du(C01,b.bGZ)),a.bGR.bGN,b.bG_);e=b.bH1;B3();f=CO;c=a.bGR;Ed();a.cnS=WB(e,d,f,c,FR,GM(Bop(a)));a.cux=b.bIa;},ELU=a=>{let b=new CRt();DA$(b,a);return b;},Bop=a=>{let b,c;b=a.bGV;c=B1(a.bGR);B8();return B0(c,Du(C2g,b.bGZ));},FdP=a=>{E0();return AFH;},Edg=(a,b)=>{let c,d;c=a.cnS.cF(b);d=(c.bGE+2.0*c.bGF)/Gs(5.0)+10.0;return Cl(d*Gs(5.0),d*Gs(5.0)/2.0);},D8M=(a,b)=>{let c,d,e,f,g,h,i;Hb();b.hH(AU$(KF, +AYN(a.bGV.bH4)));c=a.cux;if(c!==null)b.hF(c);c=De(a,b.hE());d=a.cnS.cF(b.hE());e=Y1(Bop(a),a.bGV.bG_);f=a.bGV.bG_;CM();g=DQ(f,E1);if(g===null){g=Bop(a);B9();g=(BJ(g,Cz)).cu(a.bGR.bGN);}b=b.h2(g);g=DQ(f,C6);if(g===null){g=Bop(a);B9();g=(BJ(g,CK)).cu(a.bGR.bGN);}b=(b.h2(Cc(g))).h2(e);b.hP(CbX(a,c));if(a.cPK)(b.h2(Bh(10.0,5.0))).hP(CbX(a,FO(c,(-20.0),(-10.0))));h=(c.bGE-d.bGE)/2.0;i=(c.bGF-d.bGF)/2.0;a.cnS.cC(b.h2(Bh(h,i)));if(a.cux!==null)b.hG();b.hI();},CbX=(a,b)=>{let c,d,e,f,g,h,i,j;c=b.bGE;d=b.bGF;e=new Jn;f +=d/2.0;Kz(e,0.0,f);g=new Jn;h=c/2.0;Kz(g,h,0.0);i=BA(c,f);j=BA(h,d);return Bqo(Bv(BB(Jn,[e,g,i,j])));}; +function CaJ(){let a=this;Ez.call(a);a.cUn=0;a.cU3=0;a.cOd=0;a.ciF=null;a.cEY=null;} +let Fqb=(a,b)=>{let c,d,e,f,g;HZ(a,b);a.cUn=BFx(a,E(6683));a.cU3=BFx(a,E(6684));a.cOd=BFx(a,E(6685));c=B1(a.bGR);B8();d=Yz(B0(c,Du(Dpy,b.bGZ)),a.bGR.bGN,b.bG_);if(a.cUn)d=B8s(d);e=b.bH1;B3();f=CO;g=a.bGR;Ed();a.ciF=WB(e,d,f,g,FR,GM(Bzz(a)));a.cEY=b.bIa;},Frc=a=>{let b=new CaJ();Fqb(b,a);return b;},BFx=(a,b)=>{let c;c=a.bGV.bGZ;return !(c!==null&&CB(AG_(c),b))?0:1;},Bzz=a=>{let b,c;b=a.bGV;c=B1(a.bGR);B8();return B0(c,Du(ClH,b.bGZ));},EmO=a=>{E0();return AC7;},EkH=(a,b)=>{return De(A$U(a.ciF,b),b);},DK8=(a,b)=> +{let c,d,e,f,g,h;Hb();b.hH(AU$(KF,AYN(a.bGV.bH4)));c=a.cEY;if(c!==null)b.hF(c);c=De(a,b.hE());d=a.ciF.cF(b.hE());e=Y1(Bzz(a),a.bGV.bG_);f=!a.cOd?e:J$(10.0,10.0,e.bJw);g=a.bGV.bG_;CM();e=DQ(g,E1);if(e===null){e=Bzz(a);B9();e=(BJ(e,Cz)).cu(a.bGR.bGN);}e=b.h2(e);b=DQ(g,C6);if(b===null){b=Bzz(a);B9();b=(BJ(b,CK)).cu(a.bGR.bGN);}b=(e.h2(Cc(b))).h2(f);b.hP(CJr(a,c));if(a.cU3)(b.h2(Bh(3.0,3.0))).hP(CJr(a,FO(c,(-6.0),(-6.0))));h=(c.bGE-d.bGE)/2.0;a.ciF.cC(b.h2(Bh(h,6.0)));if(a.cEY!==null)b.hG();b.hI();},CJr=(a,b)=> +{return Fz(b.bGE,b.bGF);}; +function Coy(){let a=this;Ez.call(a);a.cUw=0;a.c6E=0;a.c66=0;a.cx1=null;a.cF_=null;} +let DHK=(a,b)=>{let c,d,e,f,g;HZ(a,b);a.cUw=BQv(a,E(6683));a.c6E=BQv(a,E(6684));a.c66=BQv(a,E(6685));c=B1(a.bGR);B8();d=Yz(B0(c,Du(Diz,b.bGZ)),a.bGR.bGN,b.bG_);if(a.cUw)d=B8s(d);e=b.bH1;B3();f=CO;g=a.bGR;Ed();a.cx1=WB(e,d,f,g,FR,GM(Bex(a)));a.cF_=b.bIa;},DXi=a=>{let b=new Coy();DHK(b,a);return b;},BQv=(a,b)=>{let c;c=a.bGV.bGZ;return !(c!==null&&CB(AG_(c),b))?0:1;},Bex=a=>{let b,c;b=a.bGV;c=B1(a.bGR);B8();return B0(c,Du(CeQ,b.bGZ));},Dth=a=>{E0();return AC7;},Ejn=(a,b)=>{return Cl(25.0,25.0);},DYG=(a,b)=>{let c, +d,e,f,g,h,i;Hb();b.hH(AU$(KF,AYN(a.bGV.bH4)));c=a.cF_;if(c!==null)b.hF(c);c=De(a,b.hE());d=a.cx1.cF(b.hE());e=Y1(Bex(a),a.bGV.bG_);f=!a.c66?e:J$(10.0,10.0,e.bJw);g=a.bGV.bG_;CM();e=DQ(g,E1);if(e===null){e=Bex(a);B9();e=(BJ(e,Cz)).cu(a.bGR.bGN);}e=b.h2(e);b=DQ(g,C6);if(b===null){b=Bex(a);B9();b=(BJ(b,CK)).cu(a.bGR.bGN);}b=(e.h2(Cc(b))).h2(f);b.hP(CVb(a,c));if(a.c6E)(b.h2(Bh(3.0,3.0))).hP(CVb(a,FO(c,(-6.0),(-6.0))));h=(c.bGE-d.bGE)/2.0;i=(c.bGF-d.bGF)/2.0;a.cx1.cC(b.h2(Bh(h,i)));if(a.cF_!==null)b.hG();b.hI();},CVb +=(a,b)=>{return Fz(b.bGE,b.bGF);}; +function Dee(){let a=this;Ez.call(a);a.csb=null;a.cyE=null;a.cHZ=null;} +let EGv=(a,b)=>{let c,d,e,f;a:{b:{HZ(a,b);c=b.bGZ;d=b.bH1;e=a.bGR;Fs();f=Nu(e,Bsj,c);B3();a.csb=Js(C_(d,f,CO,a.bGR),2.0,2.0);if(c!==null){F_();if(I7(c,Hl)!==null)break b;}a.cyE=null;break a;}a.cyE=C_(Ls(T0(c,WR(a.bGR))),Nu(a.bGR,Bdp,c),CO,a.bGR);}a.cHZ=b.bIa;},DLv=a=>{let b=new Dee();EGv(b,a);return b;},C1B=(a,b)=>{let c,d;c=a.csb.cF(b);d=a.cyE;b=d!==null?d.cF(b):Cl(0.0,0.0);return Cl(BC(c.bGE,b.bGE),c.bGF+b.bGF);},DGo=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o;c=b.hE();d=De(a,c);e=C1B(a,c);f=d.bGE;g=d.bGF;h=C2(f, +g);i=C2(4.0,g);j=a.bGR;k=N9(a);l=K(Kc,1);m=l.data;JN();m[0]=BnI;k=b.h2(AFs(j,k,l));b=a.bGV.bG_;CM();n=DQ(b,C6);if(n===null){j=a.bGR;b=N9(a);l=K(Kc,1);l.data[0]=Bxh;n=AFs(j,b,l);}k=k.h2(Cc(n));b=a.cHZ;if(b!==null)k.hF(b);j=a.bGR;YZ();b=BcF;c=N9(a);j=AWK(j,b,c);if(j===null)j=Dw(1.5);(k.h2(j)).hP(h);((k.h2(BM(4.0))).h2(j)).hP(i);o=new ABz;b=new AFw;Ts(b,k.hE());AHd(o,b);Sv(o,a.csb);AGX(o,k.h2(BM(5.0)),d.bGE,e.bGF);if(a.cHZ!==null)k.hG();},DTY=a=>{E0();return Ir;},EhJ=(a,b)=>{let c;c=C1B(a,b);return Cl(c.bGE+10.0, +c.bGF);}; +function Cj1(){let a=this;Ez.call(a);a.cBQ=null;a.czj=null;a.crV=null;} +let Ftl=(a,b)=>{let c,d,e,f;a:{b:{HZ(a,b);c=b.bGZ;d=b.bH1;e=a.bGR;Fs();f=Nu(e,A7a,c);B3();a.cBQ=Js(C_(d,f,CO,a.bGR),2.0,2.0);if(c!==null){F_();if(I7(c,Hl)!==null)break b;}a.czj=null;break a;}a.czj=C_(Ls(T0(c,WR(a.bGR))),Nu(a.bGR,A47,c),CO,a.bGR);}a.crV=b.bIa;},Fqh=a=>{let b=new Cj1();Ftl(b,a);return b;},CdI=(a,b)=>{let c,d;c=a.cBQ.cF(b);d=a.czj;b=d!==null?d.cF(b):Cl(0.0,0.0);return Cl(BC(c.bGE,b.bGE),c.bGF+b.bGF);},DXl=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o;c=b.hE();d=De(a,c);e=CdI(a,c);f=d.bGE;g=d.bGF;h=C2(f, +g);i=C2(4.0,g);j=a.bGR;k=N9(a);l=K(Kc,1);m=l.data;JN();m[0]=BwZ;k=b.h2(AFs(j,k,l));b=a.bGV.bG_;CM();n=DQ(b,C6);if(n===null){j=a.bGR;b=N9(a);l=K(Kc,1);l.data[0]=ByQ;n=AFs(j,b,l);}k=k.h2(Cc(n));b=a.crV;if(b!==null)k.hF(b);j=a.bGR;YZ();b=Ble;c=N9(a);j=AWK(j,b,c);if(j===null)j=Dw(1.5);(k.h2(j)).hP(h);(k.h2(j)).hP(i);o=new ABz;b=new AFw;Ts(b,k.hE());AHd(o,b);Sv(o,a.cBQ);AGX(o,k.h2(BM(4.0)),d.bGE,e.bGF);if(a.crV!==null)k.hG();},EFE=a=>{E0();return Ir;},FwK=(a,b)=>{let c;c=CdI(a,b);return Cl(c.bGE+5.0,c.bGF);}; +function CMX(){let a=this;Ez.call(a);a.cnV=null;a.ctA=null;} +let E1K=(a,b)=>{let c,d,e,f,g,h;a:{b:{HZ(a,b);c=b.bGZ;d=a.bGR;B3();e=CO;e=Q2(d,e);f=b.bH1;g=a.bGR;h=B1(g);B8();e=BOu(e,f,g,c,b,B0(h,Du(C2T,a.bGV.bGZ)));if(c!==null){F_();if(I7(c,Hl)!==null)break b;}a.cnV=e;break a;}d=a.bGR;d=B4(d.bH$,I7(c,WR(d)));g=a.bGR;Fs();a.cnV=FT(C_(d,Nu(g,Bca,c),CO,a.bGR),e,CO);}a.ctA=b.bIa;},EWX=a=>{let b=new CMX();E1K(b,a);return b;},E82=(a,b)=>{return De(A$U(a.cnV,b),b);},Ei_=(a,b)=>{let c,d,e,f,g,h;c=b.hE();d=A$U(a.cnV,c);c=a.ctA;if(c!==null)b.hF(c);e=a.bGR;YZ();c=BNo;f=N9(a);c=AWK(e, +c,f);if(c===null)c=J$(7.0,7.0,1.5);c=b.h2(c);b=a.bGV.bG_;CM();e=DQ(b,E1);if(e===null){e=a.bGR;b=N9(a);g=K(Kc,1);h=g.data;JN();h[0]=BoF;e=AFs(e,b,g);}c=c.h2(e);f=DQ(a.bGV.bG_,C6);if(f===null){e=a.bGR;b=N9(a);g=K(Kc,1);h=g.data;JN();h[0]=Byi;f=AFs(e,b,g);}b=c.h2(Cc(f));Cp8(d,CbW(b,0.0,0.0,A7N(d)));if(a.ctA!==null)b.hG();},E$F=a=>{E0();return AC7;}; +function DlP(){let a=this;Ez.call(a);a.cHh=null;a.cDU=null;a.cqM=null;a.cDK=null;} +let EA6=(a,b,c)=>{let d,e,f,g,h,i;a:{b:{HZ(a,b);d=b.bGZ;e=a.bGR;Fs();f=Nu(e,A7a,d);g=b.bH1;B3();a.cHh=Js(C_(g,f,CO,a.bGR),2.0,2.0);if(d!==null){F_();if(I7(d,Hl)!==null)break b;}a.cqM=null;break a;}a.cqM=C_(Ls(T0(d,WR(a.bGR))),Nu(a.bGR,A47,d),CO,a.bGR);}h=new Czn;e=Tc(8);g=Bby(d);i=null;d=f.bI2;f=new S;T(f);Bb(f,c);h.c3V=Q(f);h.cUh=e;h.cLy=g;h.c2n=i;h.c2O=d;h.cpJ=8.0;a.cDU=h;a.cDK=b.bIa;},BfR=(a,b)=>{let c=new DlP();EA6(c,a,b);return c;},Cay=(a,b)=>{let c,d;c=a.cHh.cF(b);d=a.cqM;b=d!==null?d.cF(b):Cl(0.0,0.0);return Cl(BC(c.bGE, +b.bGE),c.bGF+b.bGF);},DNH=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=b.hE();d=De(a,c);e=Cay(a,c);f=C$8(a,c);g=C2(d.bGE,d.bGF);h=a.bGR;i=N9(a);j=K(Kc,1);k=j.data;JN();k[0]=Bn5;h=b.h2(AFs(h,i,j));b=a.bGV.bG_;CM();i=DQ(b,C6);if(i===null){c=a.bGR;i=N9(a);k=K(Kc,1);k.data[0]=Btl;i=AFs(c,i,k);}i=h.h2(Cc(i));b=a.cDK;if(b!==null)i.hF(b);h=a.bGR;YZ();b=BxM;c=N9(a);h=AWK(h,b,c);if(h===null)h=Dw(1.5);(i.h2(h)).hP(g);l=new ABz;b=new AFw;Ts(b,i.hE());AHd(l,b);Sv(l,a.cHh);AGX(l,i,d.bGE,e.bGF);m=new ABz;b=new AFw;Ts(b,i.hE());AHd(m, +b);Sv(m,a.cDU);AGX(m,i.h2(Bh(d.bGE-f.bGE,e.bGF)),f.bGE,f.bGF);if(a.cDK!==null)i.hG();},C$8=(a,b)=>{let c;c=a.cDU;if(c===null)return Cl(0.0,0.0);return ChP(c,b);},Fdu=a=>{E0();return Ir;},D0M=(a,b)=>{let c,d,e,f;c=Cay(a,b);d=c.bGE;e=c.bGF;f=C$8(a,b);return Cl(d,e+f.bGF);}; +function CqH(){let a=this;F.call(a);a.bVp=null;a.c0m=null;} +let FwG=(a,b,c)=>{a.bVp=b;a.c0m=c;},CY_=(a,b)=>{let c=new CqH();FwG(c,a,b);return c;},Ckd=a=>{let b,c,d;b=a.c0m;if(b!==null){c=a.bVp;d=new S;T(d);c=H(d,c);Bb(c,58);H(c,b);return Q(d);}return a.bVp;},Cfw=a=>{let b;if(Dr(a.bVp,E(5193))){b=a.bVp;return B_(b,0,b.bGI.length-2|0);}return a.bVp;},ClL=(a,b)=>{return BO(a.bVp,b);},BRm=(a,b)=>{return Bj(a.bVp,b.bVp);}; +function AQm(){Bx.call(this);this.cNa=null;} +let Bt7=null,AV0=null,ATH=null,BcA=null,BOn=null,AEQ=null,AEb=null,CrZ=null,MY=()=>{MY=Z(AQm);Dvh();},C6X=(a,b,c,d)=>{MY();Ct(a,b,c);a.cNa=d;},AP0=(a,b,c)=>{let d=new AQm();C6X(d,a,b,c);return d;},Dvh=()=>{let b,c,d;b=new AQm;B3();C6X(b,E(6686),0,CF);Bt7=b;AV0=AP0(E(6687),1,CO);ATH=AP0(E(6688),2,CF);BcA=AP0(E(6689),3,CF);BOn=AP0(E(6690),4,CO);AEQ=AP0(E(6691),5,CO);b=AP0(E(4712),6,CF);AEb=b;c=K(AQm,7);d=c.data;d[0]=Bt7;d[1]=AV0;d[2]=ATH;d[3]=BcA;d[4]=BOn;d[5]=AEQ;d[6]=b;CrZ=c;}; +function Dek(){let a=this;F.call(a);a.cp8=0.0;a.caU=null;a.cF4=null;} +let D7F=(a,b,c)=>{a.caU=B$(b);a.cp8=ZM(Gk(c));a.cF4=c.bI2;},CVl=(a,b)=>{let c=new Dek();D7F(c,a,b);return c;},Eu8=(a,b)=>{let c,d,e,f;c=a.cp8*0.8|0;b=(b.h2(a.cF4)).h2(Cc(a.cF4));d=new FG;e=c/2|0;Hs(d,e,a.cp8/2.0);b=b.h2(d);f=Fj();ADG(f,BpU(a,e,a.caU.bqv()));ADG(f,BpU(a,e,a.caU.bqv()+2.5132741228718345));ADG(f,BpU(a,e,a.caU.bqv()-2.5132741228718345));ADG(f,BpU(a,e,a.caU.bqv()));b.hP(f);},BpU=(a,b,c)=>{return BA(b*H0(c),b*G4(c));},Fjd=(a,b)=>{let c;b=new LU;c=a.cp8;MO(b,c,c);return b;}; +function Dfu(){F.call(this);this.cIt=null;} +let DYW=(a,b)=>{if(KX(b))return CDE(a,Rk(a.cIt.bL_));return CDE(a,Rk(b));},CDE=(a,b)=>{let c,d,e;c=Bk();b=b.dX();while(b.dY()){d=b.dZ();e=HR(d);F7();if(e!==N2)U(c,d);}return c;},DCb=(a,b)=>{return A3d(a.cIt.bYa,b);},Ba1=N(Bx),AOE=null,BIs=null,Fdx=null,ATf=()=>{ATf=Z(Ba1);DUl();},FjH=(a,b,c)=>{ATf();Ct(a,b,c);},CLw=(a,b)=>{let c=new Ba1();FjH(c,a,b);return c;},DUl=()=>{let b,c,d;AOE=CLw(E(4192),0);b=CLw(E(4193),1);BIs=b;c=K(Ba1,2);d=c.data;d[0]=AOE;d[1]=b;Fdx=c;}; +function CeA(){let a=this;F.call(a);a.b6_=null;a.b7a=null;} +let EOq=(a,b,c)=>{a.b6_=b;a.b7a=c;},AEv=(a,b)=>{let c=new CeA();EOq(c,a,b);return c;},C_s=(a,b)=>{return AEv(Cs(b,a.b6_),Cs(b,a.b7a));}; +function A8O(){let a=this;Fc.call(a);a.b6P=null;a.cu9=0.0;a.cR6=0.0;a.cvk=null;a.b43=0.0;a.c$b=null;a.dd6=null;a.cB7=null;a.cVY=null;a.cQg=null;a.cJT=null;a.dce=null;} +let CtW=(a,b)=>{a.b43=BC(a.b43,b);a.cj9=null;},Dr3=(b,c,d)=>{let e,f;e=new A8O;f=null;K0();B24(e,c,d,f,Vh,b,b);return e;},B24=(a,b,c,d,e,f,g)=>{let h,i,j,k;Jd(a,b);a.cu9=25.0;a.b43=0.0;h=null;if(b instanceof AJC)h=b.b3P;f=ZT(f,h);a.cJT=f;a.cB7=e;a.dd6=d;a.c$b=AM6(LY(g,J4(a)));B9();a.cVY=(BJ(f,Cz)).cu(J4(a));a.cQg=(BJ(f,CK)).cu(J4(a));i=D0(f,J4(a));a.cvk=IR(f);a.cu9=(BJ(f,Jm)).oK();a.cR6=G1(f);j=GM(f);a.b43=(BJ(f,Pt)).oK();d=a.cvk;Ed();k=S0(b.E0(i,d,FR),c);b=new AGu;d=Cya(k,j,Of(f),0.0,0.0);d.caR=(BJ(f,Pt)).oK();e +=new CdK;e.cMB=a;AUC(b,d,e,Dw(1.0));a.b6P=b;a.dce=YE(c);},FzV=(a,b,c,d,e,f)=>{let g=new A8O();B24(g,a,b,c,d,e,f);return g;},FhF=(a,b)=>{let c,d,e,f,g,h,i,j;c=b.hE();d=Dj(a,c);e=d.bGE;f=d.bGF;g=Fi(a.cJT);h=a.cVY;h=h!==null?b.h2(h):b.h2(E4());b=a.cQg;b=(b!==null?h.h2(Cc(b)):h.h2(Cc(E4()))).h2(g);g=a.cB7;i=a.cR6;j=a.cu9;CZ$(g,b,e,f,i,j);g=a.cvk;B3();if(g===CF)AE6(a.b6P,b);else if(g===Ft){g=a.b6P;b=b.h2(Bh(d.bGE-CxP(a,c),0.0));AE6(g,b);}else if(g===CO){g=a.b6P;b=b.h2(Bh((d.bGE-CxP(a,c))/2.0,0.0));AE6(g,b);}},CxP +=(a,b)=>{return BC(a.b43,(ACE(a.b6P,b)).bGE);},DUB=(a,b)=>{let c,d,e,f;b=W$(ACE(a.b6P,b),a.b43,0.0);c=new JD;d=b.bGE;e=d+a.cB7.bL2;f=b.bGF;MZ(c,e,f,d/2.0,0.0,f);return c;}; +function CHh(){let a=this;F.call(a);a.b3u=null;a.b33=null;a.c6k=null;a.cjg=0.0;} +let Eaq=(a,b)=>{let c;a.cjg=b;c=a.b33;if(c!==null)CtW(c,b);},AX1=(a,b)=>{let c,d;c=a.b3u.cF(b);if(a.b33===null){d=a.cjg;if(d>c.bGE)return Cl(d,c.bGF);}return c;},DUn=(a,b)=>{let c,d,e,f;if(b instanceof AWC){c=b.bSM;CHl(a.c6k,c,AX1(a,b.hE()));}if(a.b33===null&&a.cjg>0.0){d=a.b3u.cF(b.hE());e=a.cjg;f=d.bGE;if(e>f){e=(e-f)/2.0;a.b3u.cC(b.h2(BM(e)));return;}}a.b3u.cC(b);},Fd9=(a,b)=>{let c;c=AX1(a,b);return BA(c.bGE/2.0,0.0);},DK2=(a,b)=>{let c;c=AX1(a,b);return BA(0.0,c.bGF/2.0);},DGX=(a,b)=>{let c;c=AX1(a,b);return BA(c.bGE, +c.bGF/2.0);}; +function CuH(){let a=this;CA.call(a);a.cPw=0;a.cOX=0;a.cN2=0;} +let DYp=a=>{CJ(a);},D6H=()=>{let a=new CuH();DYp(a);return a;},CUs=N(),CJ3=null,C9y=null,Dmu=null,YQ=0,Ff=()=>{Ff=Z(CUs);EYJ();},DRv=(b,c,d)=>{let e,f,g,h,$$je;Ff();Bf();try{E3l(b,c);e=0;f=e;while(e<(I_(c)).bKy){Eif(c,e);f=f+B2A(b,c,0,2,d)|0;e=e+1|0;}D9e(b,c);BSG(b,c,E(6692));g=1;while(g<=GA(c)){f=f+CpN(b,c,Bz(HC(c),g),d)|0;h=CR();ZY(H(h,E(6693)),g);BSG(b,c,CH(h));g=g+1|0;}if(GA(c)>0){h=GY(b,c,Co(E(6694)));if(!(h!==null&&!S6(h))){BWc(b,c);b.cwX=1;f=B2A(b,c,2,2,d);BSG(b,c,E(6695));}}ECY(b,c,f);}catch($$e){$$je +=P($$e);b=$$je;J(b);}},D31=(b,c)=>{let d,$$je;Ff();Bf();try{d=FrF();d.cv9=b;d.cvc=c;d.b$K=Bgv([DT(b,c)+8|0,DT(b,c)+8|0]);}catch($$e){$$je=P($$e);d=$$je;J(d);}return d;},E6l=b=>{let $$je;Ff();Bf();try{if(b!==null){Gq(b.b$K);Gq(b);}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Eif=(b,c)=>{let d,$$je;Ff();Bf();try{a:{WA(b,Bz((I_(b)).bK6,c));if(c>0){d=D5(b);while(true){if(d>D9(b))break a;(Y(B7(b),d)).bG3=L5((Y(B7(b),d)).bG3,(Y(B7(b),d)).bG$);(Y(B7(b),d)).bG$=0;d=d+1|0;}}}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Czp=(b,c)=> +{let $$je;Ff();Bf();a:{b:{try{if(b.c3K!==null)break b;if(b.c2Q!==null)break b;}catch($$e){$$je=P($$e);b=$$je;break a;}return;}try{I(E(6696));I(E(6697));I(E(6698));I(E(6699));I(E(6700));I(E(6701));I(E(6702));I(E(5035));I(E(5331));I(E(6703));I(E(6704));I(E(6705));I(E(6706));I(E(6707));I(E(6708));I(E(5044));I(E(6709));I(E(5035));I(E(5037));J(Gw());}catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);},CpN=(b,c,d,e)=>{let f,g,$$je;Ff();Bf();try{EMa(b,d);Czp(b,d);Dbw(b,d);C56(b,d);f=B2A(b,d,2,2,e);g=1;while(g<=GA(d)){f +=f+CpN(b,d,Bz(HC(d),g),e)|0;g=g+1|0;}CrR(d);}catch($$e){$$je=P($$e);b=$$je;J(b);}return f;},CkE=(b,c,d,e)=>{let f,g,$$je;Ff();Bf();a:{b:{c:{d:{try{if(!b.cwX)break d;if(GU(d)===GU(e))break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}try{if(GU(d)===GU(e))break c;if(GU(d)===null)break c;if(GU(e)===null)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}e:{try{if(RJ(d)!=7)break e;if(FH(d)!=1)break e;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}f:{try{if(RJ(e)==7&&FH(e)==1)break f;}catch($$e){$$je=P($$e);b +=$$je;break b;}return 1;}try{}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}g:{try{f=(Y(B7(c),CD(d))).bZC;if(f===null){g=0;break g;}if(!KL(c)){b=e;e=d;d=b;}g=!f.b$K.data[Rm(e)].data[Rm(d)]?0:1;break g;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return g;},C9m=(b,c)=>{let d,e,f,g,h,i,j,k,l,$$je;Ff();Bf();try{d=(Gv(c)).bGS;e=(Gv(b)).bGS;f=0;g=0;while(true){b=Bz(d,g);if(b===null)break;h=Rd(b);i=DN(Cg(b));j=(E7(b)).bHg.bGH;k=0;while(true){c=Bz(e,k);if(c +===null)break;a:{l=DN(Cg(c))-i|0;if(l<=0){if(l)break a;if(!((E7(c)).bHg.bGH>j))break a;}f=f+Ev(Rd(c),h)|0;}k=k+1|0;}g=g+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return f;},CzS=(b,c)=>{let d,e,f,g,h,i,j,k,l,$$je;Ff();Bf();try{d=(D7(c)).bGS;e=(D7(b)).bGS;f=0;g=0;while(true){b=Bz(d,g);if(b===null)break;h=Rd(b);i=DN(BZ(b));j=(E5(b)).bHg.bGH;k=0;while(true){c=Bz(e,k);if(c===null)break;a:{l=DN(BZ(c))-i|0;if(l<=0){if(l)break a;if(!((E5(c)).bHg.bGH>j))break a;}f=f+Ev(Rd(c),h)|0;}k=k+1|0;}g=g+1|0;}}catch($$e){$$je= +P($$e);b=$$je;J(b);}return f;},B6D=(b,c,d)=>{let e,f,g,$$je;Ff();Bf();try{e=CD(c);f=DN(c);g=DN(d);Tu(c,g);E_((Y(B7(b.bLu),e)).bG3,g,c);Tu(d,f);E_((Y(B7(b.bLu),e)).bG3,f,d);}catch($$e){$$je=P($$e);b=$$je;J(b);}},EXO=b=>{let c;Ff();I(E(6710));I(E(5253));I(E(6711));I(E(6712));I(E(6713));I(E(6714));I(E(6715));I(E(6716));I(E(6717));I(E(6718));I(E(6719));I(E(6720));I(E(6721));I(E(5499));I(E(6722));I(E(6723));I(E(6724));I(E(6725));I(E(5051));I(E(6726));I(E(6727));I(E(6728));I(E(5051));I(E(6729));I(E(6730));I(E(5051));I(E(5044));I(E(5035));I(E(5831));I(E(5037));c +=new BV;X(c);J(c);},EkB=(b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,$$je;Ff();Bf();a:{try{f=0;(Y(B7(c),d)).bZH=0;g=0;}catch($$e){$$je=P($$e);b=$$je;break a;}h=d+1|0;i=d-1|0;while(true){try{if(g>=((Y(B7(c),d)).bG$-1|0))break;b:{j=Bz((Y(B7(c),d)).bG3,g);k=(Y(B7(c),d)).bG3;g=g+1|0;k=Bz(k,g);if(!CkE(b,c,j,k)){l=0;if(d<=0)m=l;else{m=l+C9m(j,k)|0;l=l+C9m(k,j)|0;}if((Y(B7(c),h)).bG$>0){m=m+CzS(j,k)|0;l=l+CzS(k,j)|0;}n=C5(l,m);if(n>=0){if(m<=0)break b;if(!e)break b;if(n)break b;}RJ(j)==7&&RJ(k)!=7;B6D(b,j,k);f=f+(m-l|0)|0;(Y(B7(b.bLu), +d)).bNS=0;(Y(B7(c),d)).bZH=1;if(d>D5(c)){(Y(B7(b.bLu),i)).bNS=0;(Y(B7(c),i)).bZH=1;}if(d{let e,f,$$je;Ff();Bf();a:{b:{try{e=D5(c);while(e<=D9(c)){(Y(B7(c),e)).bZH=1;e=e+1|0;}while(true){f=0;e=D5(c);while(e<=D9(c)){if((Y(B7(c),e)).bZH)f=f+EkB(b,c,e,d)|0;e=e+1|0;}if(f>=1)continue;else break a;}}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}},B2A=(b,c,d,e,f)=>{let g,h,i,j,k,l,m,$$je;Ff();Bf();try +{g=0;if(d<=1){h=2147483647;i=h;}else{h=A9q(b,c);B6L(b,c);i=h;}a:{b:{while(d<=e){if(d>1){g=b.cCy;if(h>i)B$W(b,c);h=i;}else{g=DO(4,b.cCy);if(c===HP(c))CJ1(b,c,d);if(!d)Dbw(b,c);C56(b,c);h=A9q(b,c);if(h<=i){B6L(b,c);i=h;}}j=0;k=0;c:{d:{while(true){if(k>=g)break c;l=j+1|0;if(j>=b.c4$)break d;if(!h)break;Eln(b,c,k);h=A9q(b,c);if(h>i)j=l;else{B6L(b,c);j=!(hi)B$W(b,c);if(i>0){BNz(b,c,0);i=A9q(b,c);}e:{if(f){k=0;while(true){if(k>=g)break e;m +=K(F,1);m.data[0]=c;EXO(m);k=k+1|0;}}}}catch($$e){$$je=P($$e);b=$$je;J(b);}return i;},B$W=(b,c)=>{let d,e,f,$$je;Ff();Bf();try{d=D5(c);while(d<=D9(c)){e=0;while(e<(Y(B7(c),d)).bG$){f=Bz((Y(B7(c),d)).bG3,e);Tu(f,(Dh(f)).bGH|0);e=e+1|0;}d=d+1|0;}d=D5(c);while(d<=D9(c)){(Y(B7(b.bLu),d)).bNS=0;BKH(b,(Y(B7(c),d)).bG3,(Y(B7(c),d)).bG$,C9y);d=d+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},B6L=(b,c)=>{let d,e,f,$$je;Ff();Bf();try{d=D5(c);while(d<=D9(c)){e=0;while(e<(Y(B7(c),d)).bG$){f=Bz((Y(B7(c),d)).bG3,e);(Dh(f)).bGH +=DN(f);e=e+1|0;}d=d+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Fcr=(b,c)=>{let d,e,f,$$je;Ff();Bf();a:{b:{c:{try{if((I_(c)).bKy>1)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}try{d=null;e=0;while(e<(I_(c)).bKy){f=Bz((I_(c)).bK6,e);if(d!==null)AR2(d,f);AN8(f,d);while(GN(f)!==null){f=GN(f);}e=e+1|0;d=f;}(I_(c)).bKy=1;WA(c,Bz((I_(c)).bK6,0));ASk(c,b.c1y);A4$(c,b.cN7);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}},D9e=(b,c)=>{let d,e,f,$$je;Ff();Bf();try{Fcr(b,c);d=D5(c);while(d<=D9(c)){(Y(B7(c), +d)).bG$=(Y(B7(c),d)).bUy;(Y(B7(c),d)).bG3=(Y(B7(c),d)).b3e;e=0;a:{while(true){if(e>=(Y(B7(c),d)).bG$)break a;f=Bz((Y(B7(c),d)).bG3,e);if(f===null)break;Tu(f,e);e=e+1|0;}(Y(B7(c),d)).bG$=e;}d=d+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},ECY=(b,c,d)=>{let e,f,g,h,i,j,$$je;Ff();Bf();try{e=b.cjX;if(e!==null){Gq(e);b.cjX=null;}f=b.cIU;if(f!==null){Gq(f);b.cIU=null;}g=1;while(g<=GA(c)){BS4(b,Bz(HC(c),g));g=g+1|0;}h=D5(c);while(h<=D9(c)){i=0;while(i<(Y(B7(c),h)).bG$){a:{f=Bz((Y(B7(c),h)).bG3,i);Tu(f,i);if((H$(f)).bGS +!==null){j=0;while(true){b=Bz((H$(f)).bGS,j);if(b===null)break a;if(QH(b)==4){BD2(b);Gq(b.bKd.bGQ);Gq(b);j=j+(-1)|0;}j=j+1|0;}}}i=i+1|0;}E6l((Y(B7(c),h)).bZC);h=h+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},DHf=(b,c,d)=>{let e,$$je;Ff();Bf();a:{try{e=null;if(!YQ&&c===null)J(Jk());if(d>=0)e=Bz((Y(B7(b.bLu),CD(c))).bG3,DN(c)+1|0);else if(DN(c)>0)e=Bz((Y(B7(b.bLu),CD(c))).bG3,DN(c)-1|0);}catch($$e){$$je=P($$e);b=$$je;break a;}b:{try{if(!YQ&&e!==null&&Ev(DN(e)-DN(c)|0,d)<=0)break b;}catch($$e){$$je=P($$e);b=$$je;break a;}return e;}try +{J(Jk());}catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);},CRZ=(b,c,d)=>{let e,$$je;Ff();Bf();try{e=!(!FH(d)&&ABv(b,c,d))?0:1;}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},Dqg=(b,c,d)=>{let e,$$je;Ff();Bf();a:{b:{try{if(FH(d)==1&&(Gv(d)).bG8==1&&(D7(d)).bG8==1){e=Bz((D7(d)).bGS,0);while(QH(e)){e=I2(e);}if(ABv(b,c,e))break b;}}catch($$e){$$je=P($$e);b=$$je;break a;}return 0;}try{}catch($$e){$$je=P($$e);b=$$je;break a;}return 1;}J(b);},CKY=(b,c,d)=>{let e,$$je;Ff();Bf();try{e=CRZ(b,c,d)|Dqg(b,c,d);}catch($$e) +{$$je=P($$e);b=$$je;J(b);}return e;},CG5=(b,c,d,e)=>{let f,g,$$je;Ff();Bf();try{f=d;while(true){g=DHf(b,f,e);if(g===null)break;if(CRZ(b,c,g)){f=g;d=g;continue;}if(!Dqg(b,c,g)){f=g;continue;}f=g;d=g;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},CrR=b=>{let c,$$je;Ff();Bf();try{a:{if(PQ(b)!==null){c=D5(b);while(true){if(c>D9(b))break a;E_(PQ(b),c,Bz((Y(B7(b),c)).bG3,0));c=c+1|0;}}}}catch($$e){$$je=P($$e);b=$$je;J(b);}},CEj=b=>{let c,$$je;Ff();Bf();try{CrR(b);c=1;while(c<=GA(b)){CEj(Bz(HC(b),c));c=c+1|0;}}catch +($$e){$$je=P($$e);b=$$je;J(b);}},BS4=(b,c)=>{let d,e,f,g,h,$$je;Ff();Bf();try{d=1;while(d<=GA(c)){BS4(b,Bz(HC(c),d));d=d+1|0;}a:{if(PQ(c)!==null){e=D5(c);while(true){if(e>D9(c))break a;f=Bz(PQ(c),e);g=CG5(b,c,f,(-1));h=CG5(b,c,f,1);E_(PQ(c),e,g);(Y(B7(c),e)).bG3=L5((Y(B7(HP(c)),e)).bG3,DN(g));(Y(B7(c),e)).bG$=(DN(h)-DN(g)|0)+1|0;e=e+1|0;}}}}catch($$e){$$je=P($$e);b=$$je;J(b);}},EOw=(b,c,d,e)=>{let $$je;Ff();Bf();try{I(E(6731));I(E(6732));I(E(5253));I(E(6733));I(E(6734));I(E(5839));I(E(6735));I(E(6736));I(E(6737));I(E(6738));I(E(6739));I(E(5557));I(E(6740));I(E(6741));I(E(6742));I(E(6743));I(E(5044));I(E(5035));I(E(6744));I(E(6745));I(E(6746));I(E(6747));I(E(5051));I(E(6748));I(E(6749));I(E(6750));I(E(6751));I(E(6752));I(E(6753));I(E(6754));I(E(6755));I(E(6756));I(E(5044));I(E(5035));I(E(6757));I(E(5037));J(Gw());} +catch($$e){$$je=P($$e);b=$$je;}J(b);},Ene=b=>{let c,d,$$je;Ff();Bf();try{c=D9(b)+2|0;d=Ca(c);EOw(b,d,c,null);Gq(d);}catch($$e){$$je=P($$e);b=$$je;J(b);}},E3l=(b,c)=>{let d,$$je;Ff();Bf();try{b.cwX=0;b.bLu=c;d=Fen(b,HP(c))+1|0;Ej();b.cIU=SE(d,Q_);b.cjX=Ca(d);DwS(b,c);if(ANE(c)&16)Ene(c);CMc(b,c);CLZ(b,c,1);CCN(b,c);Czp(b,c);b.c1y=D5(c);b.cN7=D9(c);}catch($$e){$$je=P($$e);b=$$je;J(b);}},DsB=(b,c)=>{let d,e,$$je;Ff();Bf();try{a:{if((H$(BZ(c))).bGS===null)d=null;else{e=0;b:{while(true){d=Bz((H$(BZ(c))).bGS,e);if +(d===null)break;if(BZ(d)===Cg(c))break b;e=e+1|0;}break a;}}}if(d===null){d=C5a(BZ(c),Cg(c),c);if(QH(c)!=4)RM(d,3);else RM(d,4);Cq3(d,DW(c));BZ2(b,d);}else{AMQ(c,d);if(H7(c)===null)RP(c,d);if(QH(d)==4&&I2(d)===null)ARb(d,c);AMT(c,Mb(Cg(c)));}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Cm2=(b,c,d)=>{let e,f,g,h,$$je;Ff();Bf();try{e=(Y(B7(c),CD(d))).bZC;CqE(d,1);DTc(d,1);f=GA(HP(c))<=0?0:1;a:{if((H$(d)).bGS!==null){g=0;b:while(true){h=Bz((H$(d)).bGS,g);if(h===null)break a;c:{if(f){if(!ABv(b,c,Cg(h)))break c;if(!ABv(b, +c,BZ(h)))break c;}if(LA(h)){if(C8b(BZ(h))!=1){if(!YQ&&Rm(BZ(h))>=e.cv9)J(Jk());if(!YQ&&Rm(Cg(h))>=e.cvc)break b;e.b$K.data[Rm(Cg(h))].data[Rm(BZ(h))]=1;if(!N0(BZ(h)))Cm2(b,c,BZ(h));}else{if(!YQ&&Rm(BZ(h))>=e.cv9)J(Jk());if(!YQ&&Rm(Cg(h))>=e.cvc)J(Jk());e.b$K.data[Rm(BZ(h))].data[Rm(Cg(h))]=1;BD2(h);g=g+(-1)|0;if(QH(h)!=4)DsB(c,h);}}}g=g+1|0;}J(Jk());}}Bng(d,0);}catch($$e){$$je=P($$e);b=$$je;J(b);}},Dbw=(b,c)=>{let d,e,f,g,h,$$je;Ff();Bf();try{d=D5(c);while(d<=D9(c)){e=0;f=0;while(f<(Y(B7(c),d)).bG$){g=Bz((Y(B7(c), +d)).bG3,f);PE(g,0);Bng(g,0);EOS(g,f);if((H$(g)).bG8>0&&!e){(Y(B7(c),d)).bZC=D31((Y(B7(c),d)).bG$,(Y(B7(c),d)).bG$);e=1;}f=f+1|0;}a:{if(e){h=0;while(true){if(h>=(Y(B7(c),d)).bG$)break a;g=Bz((Y(B7(c),d)).bG3,h);if(!N0(g))Cm2(b,c,g);h=h+1|0;}}}d=d+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},CCN=(b,c)=>{let d,e,f,g,h,i,j,k,$$je;Ff();Bf();a:{try{d=Ca(D9(c)+2|0);e=IV(b,c);}catch($$e){$$je=P($$e);b=$$je;break a;}f=d.data;while(true){try{if(e===null)break;g=CD(e);f[g]=f[g]+1|0;h=Mx(b,c,e);while(h!==null){i=CD(Cg(h));j +=CD(BZ(h));if(i<=j){g=j;j=i;i=g;}g=j+1|0;while(g{let e,f,g,$$je;Ff();Bf();a:{b:{c:{try{e=CD(d);f=(Y(B7(c),e)).bG$;if((Y(B7(c),e)).bUy>0)break c;I(E(6758));I(E(6759));} +catch($$e){$$je=P($$e);b=$$je;break b;}return;}d:{try{E_((Y(B7(c),e)).bG3,f,d);Tu(d,f);g=Y(B7(c),e);g.bG$=g.bG$+1|0;if(YQ)break d;if((Y(B7(c),e)).bG$<=(Y(B7(c),e)).bUy)break d;J(Jk());}catch($$e){$$je=P($$e);b=$$je;break b;}}e:{try{if(DN(d)<=(Y(B7(b.bLu),e)).bUy)break e;I(E(6760));I(E(6761));}catch($$e){$$je=P($$e);b=$$je;break b;}return;}f:{try{if(e>=D5(c)&&e<=D9(c))break f;I(E(6762));I(E(6763));}catch($$e){$$je=P($$e);b=$$je;break b;}return;}g:{try{if(BaQ(L5((Y(B7(c),e)).bG3,DN(d)),L5((Y(B7(c),e)).b3e,(Y(B7(b.bLu), +e)).bUy))>0)break g;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}try{I(E(6764));I(E(6765));break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}},CJ1=(b,c,d)=>{let e,f,g,h,i,j,k,l,$$je;Ff();Bf();try{e=CpO(Bbo(c));f=GV(c);while(f!==null){PE(f,0);f=GN(f);}g=D5(c);while(g<=D9(c)){(Y(B7(c),g)).bG$=0;g=g+1|0;}f=GV(c);while(f!==null){h=d?(D7(f)).bGS:(Gv(f)).bGS;a:{if(Bz(h,0)===null&&!N0(f)){PE(f,1);A$m(e,f);while(true){h=B3t(e);if(h===null)break a;if(RJ(h)==7){D25(b,c,h,d,e);continue;}CZg(b,c,h);DhO(e,h,d);}}}f +=GN(f);}if(B3t(e)!==null)I(E(6766));d=D5(c);while(d<=D9(c)){b:{(Y(B7(b.bLu),d)).bNS=0;if(KL(c)&&(Y(B7(c),d)).bG$>0){i=(Y(B7(c),d)).bG3;j=(Y(B7(c),d)).bG$-1|0;k=j/2|0;l=0;while(true){if(l>k)break b;B6D(b,Bz(i,l),Bz(i,j-l|0));l=l+1|0;}}}d=d+1|0;}if(c===HP(c)&&A9q(b,c)>0)BNz(b,c,0);CjO(e);}catch($$e){$$je=P($$e);b=$$je;J(b);}},DhO=(b,c,d)=>{let e,f,g,$$je;Ff();Bf();try{a:{if(d){e=0;while(true){if(e>=(Gv(c)).bG8)break a;f=Bz((Gv(c)).bGS,e);if(!N0(Cg(f))){PE(Cg(f),1);A$m(b,Cg(f));}e=e+1|0;}}e=0;while(true){if(e>= +(D7(c)).bG8)break a;g=Bz((D7(c)).bGS,e);if(!N0(BZ(g))){PE(BZ(g),1);A$m(b,BZ(g));}e=e+1|0;}}}catch($$e){$$je=P($$e);b=$$je;J(b);}},BdM=(b,c,d,e)=>{let $$je;Ff();Bf();a:{b:{c:{try{if(LA(e))break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}d:{try{if(CKY(b,c,Cg(e)))break d;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}e:{try{if(!CKY(b,c,BZ(e)))break e;}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return 0;},CXx=(b,c,d,e,f)=>{let g,h,i,$$je;Ff();Bf();try +{g=0;CqE(d,1);if((H$(d)).bG8>0){h=0;while(true){i=Bz((H$(d)).bGS,h);if(i===null)break;if(BdM(b,c,d,i)&&!N0(BZ(i)))g=g+CXx(b,c,BZ(i),L5(e,g),f)|0;h=h+1|0;}}if(!YQ&&CD(d)!=f)J(Jk());f=g+1|0;E_(e,g,d);}catch($$e){$$je=P($$e);b=$$je;J(b);}return f;},C56=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,$$je;Ff();Bf();a:{b:{try{d=null;if(Flx(c))break b;}catch($$e){$$je=P($$e);b=$$je;break a;}return;}try{e=D5(c);c:{d:while(true){if(e>D9(c))break c;if((Y(B7(c),e)).bG$){f=DN(Bz((Y(B7(c),e)).bG3,0));g=0;while(g<(Y(B7(c),e)).bG$){PE(Bz((Y(B7(c), +e)).bG3,g),0);g=g+1|0;}g=g+1|0;Ej();d=Ur(g,d,R$);h=0;g=0;while(g<(Y(B7(c),e)).bG$){i=KL(c)?Bz((Y(B7(c),e)).bG3,g):Bz((Y(B7(c),e)).bG3,((Y(B7(c),e)).bG$-g|0)-1|0);j=0;k=0;l=j;while(k<(YJ(i)).bG8){if(BdM(b,c,i,Bz((YJ(i)).bGS,k)))l=l+1|0;k=k+1|0;}k=0;while(k<(H$(i)).bG8){if(BdM(b,c,i,Bz((H$(i)).bGS,k)))j=j+1|0;k=k+1|0;}if(!l&&!j){j=h+1|0;E_(d,h,i);}else j=N0(i)?h:l?h:h+CXx(b,c,i,L5(d,h),e)|0;g=g+1|0;h=j;}e:{if(h){f:{if(!KL(c)){m=L5(d,h-1|0);i=d;while(true){if(BaQ(i,m)>=0)break f;n=Bz(i,0);E_(i,0,Bz(m,0));E_(m, +0,n);i=L5(i,1);m=L5(m,(-1));}}}g=0;while(g<(Y(B7(c),e)).bG$){i=Bz(d,g);E_((Y(B7(c),e)).bG3,g,i);Tu(i,g+f|0);g=g+1|0;}f=0;while(true){if(f>=(Y(B7(c),e)).bG$)break e;g:{i=Bz((Y(B7(c),e)).bG3,f);if((H$(i)).bGS!==null){k=0;while(true){o=Bz((H$(i)).bGS,k);if(o===null)break g;h:{if(!(!KL(c)&&DN(BZ(o)){let g,h,i,j,k,l,m,n,o,$$je;Ff();Bf();try{g=0;h=(Y(B7(c),d)).bG3;i=(Y(B7(c),d)).bG$;j=(Y(B7(c),d)).bG$-1|0;while(j>=0){k=0;a:{b:{while(true){if(k>=i)break a;l=k;while(true){k=C5(l,i);if(k>=0)break;if(!(YX(Bz(h,l))<0.0))break;l=l+1|0;}if(k>=0)break b;m=0;k=l+1|0;n=m;c:{d:{e:{while(true){o=C5(k,i);if(o>=0)break;if(!(n&&GU(Bz(h,k))!==null)){if(CkE(b,c,Bz(h,l),Bz(h,k)))break d;if(YX(Bz(h,k))>=0.0)break e;if(GU(Bz(h,k))!==null)n=1;}k=k+1|0;}break c;}break c;}m +=1;}if(o>=0)break;f:{if(!m){m=C5(YX(Bz(h,l))|0,YX(Bz(h,k))|0);if(m<=0){if(m)break f;if(!e)break f;}B6D(b,Bz(h,l),Bz(h,k));g=1;}}}break a;}}if(!f&&!e)i=i-1|0;j=j+(-1)|0;}if(g){(Y(B7(b.bLu),d)).bNS=0;if(d>0)(Y(B7(b.bLu),d-1|0)).bNS=0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Eln=(b,c,d)=>{let e,f,g,$$je;Ff();Bf();try{e=(d%4|0)>=2?0:1;d=d%2|0;if(d)D9(c);if(d){f=D9(c)-1|0;g=D5(c);if(D9(c)D5(b.bLu))f=f+(-1)|0;g=D9(c);d=1;}while(f!=(g+d|0)){E2l(b,c,f,e,EI$(b,c,f, +f-d|0));f=f+d|0;}BNz(b,c,e?0:1);}catch($$e){$$je=P($$e);b=$$je;J(b);}}; +let Dh3=(b,c)=>{let d,e,f,g,$$je;Ff();b=B17(b);Bf();try{c=c<=0?0:1;d=0;while(true){e=Bz(b.bGS,d);if(e===null)break;a:{if(!c){f=d+1|0;while(true){if(Bz(b.bGS,f)===null)break a;I(E(6767));I(E(6768));I(E(6769));f=f+1|0;}}f=d+1|0;while(true){g=Bz(b.bGS,f);if(g===null)break a;if((DN(BZ(g))-DN(BZ(e))|0)*((E7(g)).bHg.bGH-(E7(e)).bHg.bGH)<0.0)I(E(6769));f=f+1|0;}}d=d+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return 0;},DA5=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,$$je;Ff();Bf();try{e=0;f=0;g=(Y(B7(c),d)).bG3;h=b.c2S;i +=B7(b.bLu);j=d+1|0;if(h<=(Y(i,j)).bG$){k=(Y(B7(b.bLu),j)).bG$+1|0;b.c2S=k;b.cbR=E6C(k,b.cbR);}k=0;while(k<(Y(B7(c),j)).bG$){b.cbR.data[k]=0;k=k+1|0;}l=(Y(B7(c),d)).bG$;m=0;while(m0){k=0;while(true){n=Bz(i,k);if(n===null)break;o=DN(BZ(n))+1|0;while(o<=f){e=e+Ev(b.cbR.data[o],Rd(n))|0;o=o+1|0;}k=k+1|0;}}k=0;while(true){n=Bz(i,k);if(n===null)break;h=DN(BZ(n));if(h>f)f=h;p=b.cbR.data;p[h]=p[h]+Rd(n)|0;k=k+1|0;}m=m+1|0;}h=0;while(h<(Y(B7(c),d)).bG$){n=Bz((Y(B7(c),d)).bG3,h);if(BHD(n))e +=e+Dh3(D7(n),1)|0;h=h+1|0;}q=0;while(q<(Y(B7(c),j)).bG$){n=Bz((Y(B7(c),j)).bG3,q);if(BHD(n))e=e+Dh3(Gv(n),(-1))|0;q=q+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},A9q=(b,c)=>{let d,e,f,$$je;Ff();Bf();try{c=b.bLu;d=0;e=D5(c);while(e{let c,d,e,f,$$je;Ff();Bf();a:{b:{c:{d:{e:{try{if((YJ(b)).bG8<=0)break e;c=(YJ(b)).bGS;d=Cg(Bz(c, +0));e=1;while(true){f=Bz(c,e);if(f===null)break;if(DN(Cg(f))>DN(d))d=Cg(f);e=e+1|0;}if(!(YX(d)>=0.0))break d;Zm(b,YX(d)+1.0);}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}try{if((H$(b)).bG8<=0)break d;c=(H$(b)).bGS;d=BZ(Bz(c,0));e=1;while(true){f=Bz(c,e);if(f===null)break;if(DN(BZ(f))0.0))break d;else break c;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}try{Zm(b,YX(d)-1.0);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return 0;},EI$ +=(b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,$$je;Ff();Bf();a:{try{f=0;g=b.cjX;h=(Y(B7(c),d)).bG3;i=0;}catch($$e){$$je=P($$e);b=$$je;break a;}j=C5(e,d);while(true){try{if(i>=(Y(B7(c),d)).bG$)break;k=Bz(h,i);l=0;if(j<=0){m=0;while(true){n=Bz((Gv(k)).bGS,m);if(n===null)break;if(Rd(n)>0){o=g.data;p=l+1|0;o[l]=(256*DN(Cg(n))|0)+(E7(n)).bV7|0;l=p;}m=m+1|0;}}else{m=0;while(true){n=Bz((D7(k)).bGS,m);if(n===null)break;if(Rd(n)>0){o=g.data;q=l+1|0;o[l]=(256*DN(BZ(n))|0)+(E5(n)).bV7|0;l=q;}m=m+1|0;}}b:{c:{d:{e:{switch +(l){case 0:break;case 1:break e;case 2:break d;default:break c;}Zm(k,(-1.0));break b;}Zm(k,g.data[0]);break b;}o=g.data;Zm(k,(o[0]+o[1]|0)/2|0);break b;}DMC(b,g,l,CJ3);if(l%2|0)Zm(k,g.data[l/2|0]);else{o=g.data;q=l/2|0;p=q-1|0;r=o[l-1|0]-o[q]|0;s=o[p]-o[0]|0;if(s==r)Zm(k,(o[p]+o[q]|0)/2|0);else Zm(k,(Ev(o[p],r)+Ev(o[q],s)|0)/(s+r|0)|0);}}i=i+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}try{l=0;while(l<(Y(B7(c),d)).bG$){k=Bz(h,l);if(!(D7(k)).bG8&&!(Gv(k)).bG8)f=f|E3y(k);l=l+1|0;}}catch($$e){$$je=P($$e);b +=$$je;break a;}return f;}J(b);},CPs=b=>{let $$je;Ff();Bf();a:{b:{c:{try{if(FH(b)!=1)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return 2;}d:{try{if(AYE(b)<=1)break d;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return 1;},ENu=b=>{let c,$$je;Ff();Bf();try{c=Dmu.data[CPs(Cg(b))].data[CPs(BZ(b))];AAU(b,Ev(LA(b),c));}catch($$e){$$je=P($$e);b=$$je;J(b);}},DwS=(b,c)=>{let d,$$je;Ff();Bf();try{b.c4$=8;b.cCy=24;b.cYB=0.995;d=GY(b,c,Co(E(6770)));if(d +!==null&&Bph(d)>0.0){I(E(6771));I(E(6772));}}catch($$e){$$je=P($$e);b=$$je;J(b);}},BSG=(b,c,d)=>{Ff();},EYJ=()=>{let b,c,d,e;YQ=0;b=new DbC;E$(b,E(6773));CJ3=b;c=new DbB;E$(c,E(6774));C9y=c;d=K(Ib(AGK),3);e=d.data;e[0]=Ey([1,1,1]);e[1]=Ey([1,2,2]);e[2]=Ey([1,2,4]);Dmu=d;},Dt4=N(),C0K=b=>{let c,$$je;Bf();try{I(E(6775));I(E(6776));I(E(5253));I(E(6777));I(E(6778));I(E(5037));J(Gw());}catch($$e){$$je=P($$e);c=$$je;}J(c);},Dub=b=>{let c,d,e,f,g,h,i,j,k,$$je;Bf();try{c=D5(b);while(c<=D9(b)){d=IQ(B7(b),c);e=0;f=null;g +=0;a:{b:{c:{while(g<(Y(d,0)).bG$){f=Bz((Y(d,0)).bG3,g);if((Yh(f)).bGS!==null){h=0;d:{e:{while(true){i=Bz((Yh(f)).bGS,h);if(i===null)break;if(CD(BZ(i))>c)break e;if(CD(Cg(i))>c)break e;h=h+1|0;}break d;}e=1;}if(e)break b;}if((BK9(f)).bGS!==null){h=0;f:{g:{while(true){i=Bz((BK9(f)).bGS,h);if(i===null)break;if(CD(Cg(i))>c)break g;if(CD(BZ(i))>c)break g;h=h+1|0;}break f;}e=1;}if(e)break c;}g=g+1|0;}break a;}break a;}}if(!e&&f!==null){i=Bz((Y(d,0)).bG3,0);j=c>=D9(b)?Bz((Y(d,(-1))).bG3,0):Bz((Y(d,1)).bG3,0);k=Z6(b);AVD(k, +2);Ny(k,i,0.0,0);Ny(k,j,0.0,0);P4(k,DO(CD(i),CD(j)));}c=c+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},EAf=(b,c,d)=>{let e,$$je;Bf();a:{b:{c:{try{if(GV(c)!==null)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}d:{try{BWc(b,c);Eip(b,c,E(6779));CNE(b,c);if(!b.ca7)break d;e=K(F,1);e.data[0]=c;E5_(e);break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}e:{try{E55(c);if(!FtF(b,c))break e;CNE(b,c);break e;}catch($$e){$$je=P($$e);b=$$je;break b;}}f:{try{D6S(b,c);DLq(b,c,E(6780));if(!CP6(b,c,2,Dvk(b,c)))break f;Dub(c);break f;} +catch($$e){$$je=P($$e);b=$$je;break b;}}try{E7m(b);DAo(c);E98(b,c);E0H(c,d);EZP(c);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}},Dvk=(b,c)=>{let d,$$je;Bf();try{d=2147483647;b=GY(b,c,Co(E(6781)));if(b!==null)d=Bph(b)*BVU(c)|0;}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},Ny=(b,c,d,e)=>{let f,g,$$je;Bf();try{f=V3();AC6(f.cdc,3);AC6(f.bHO,2);f.bHO.bKd.bGQ=VE();g=f.bHO;A2G(g,b);BxD(g,c);JT();if(d>BD0)d=C0K(d);AKK(g,PL(d));AAU(g,e);BKf(g);}catch($$e){$$je=P($$e);b=$$je;J(b);}return g;},DT$=b=>{let c, +d,e,$$je;Bf();try{c=GV(b);while(c!==null){ECx(c,Gv(c));DII(c,D7(c));d=0;while(Bz((D7(c)).bGS,d)!==null){d=d+1|0;}e=0;while(Bz((Gv(c)).bGS,e)!==null){e=e+1|0;}ACJ((d+e|0)+3|0,Gv(c));ACJ(3,D7(c));c=GN(c);}}catch($$e){$$je=P($$e);b=$$je;J(b);}},DNm=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$$je;Bf();a:{try{d=Ca(2);e=B7(c);f=Bk();if(!(QJ(c)&1)){g=d.data;h=W1(c);g[0]=h;g[1]=h;}else{g=d.data;g[0]=W1(c);g[1]=5;}i=D5(c);}catch($$e){$$je=P($$e);b=$$je;break a;}d=d.data;while(true){try{if(i>D9(c))break;P4(Bz((Y(e, +i)).bG3,0),0);j=0.0;k=d[i&1];l=0;}catch($$e){$$je=P($$e);b=$$je;break a;}m=k;while(true){try{if(l>=(Y(e,i)).bG$)break;n=Bz((Y(e,i)).bG3,l);Zm(n,Kv(n));if((Mb(n)).bG8>0){o=0;h=0;while(true){p=Bz((Mb(n)).bGS,h);if(p===null)break;if(Cg(p)===BZ(p))o=o+Eva(p)|0;h=h+1|0;}U$(n,Kv(n)+o);}p=(Y(e,i)).bG3;l=l+1|0;q=Bz(p,l);if(q!==null){r=Kv(n)+Ng(q)+m;Ny(n,q,r,0);o=j+r|0;P4(q,o);j=o;}if(A_x(n)!==null)U(f,n);s=0;while(s<(H$(n)).bG8){t=Bz((H$(n)).bGS,s);if(DN(Cg(t))>=DN(BZ(t))){p=BZ(t);u=Cg(t);}else{p=Cg(t);u=BZ(t);}r=Kv(p) ++Ng(u);v=Ev(RF(t),W1(c))+r|0;q=AKs(p,u);if(q!==null){o=DT(v,r+W1(c)+PL(Ca8(t))|0);JT();if(o>BD0)o=C0K(o)|0;AKK(q,DT(RF(q),o));AAU(q,DT(LA(q),LA(t)));}else if(DW(t)===null)Ny(p,u,v,LA(t));s=s+1|0;}continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}try{i=i+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}try{e=Br(f);}catch($$e){$$je=P($$e);b=$$je;break a;}u=e;while(true){try{if(!Bq(u))break;w=Bm(u);t=A_x(w);x=Bz((Yh(w)).bGS,0);y=Bz((Yh(w)).bGS,1);if(DN(BZ(x))<=DN(BZ(y))){e=y;y=x;x=e;}v=Ev(RF(t),W1(c))/2|0;z +=v+(Kv(BZ(y))+Ng(Cg(y))|0)|0;if(DoX(b,Cg(y),BZ(y),null)){e=b.cgG;Rr();f=AES;ADl(e,w,f);}else Ny(BZ(y),Cg(y),z,LA(t));i=v+(Kv(Cg(x))+Ng(BZ(x))|0)|0;if(DoX(b,BZ(x),Cg(x),null)){e=b.cgG;Rr();f=AES;ADl(e,w,f);}else Ny(Cg(x),BZ(x),i,LA(t));continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}return;}J(b);},DoX=(b,c,d,e)=>{let f,g,h,i,j,k;if(c!==d){f=AH7();g=AH7();h=U1();Rr();ADl(f,c,AES);EY(h,c);while(!RL(h)){i=Fp(h);j=0;while(Bz((D7(i)).bGS,j)!==null){k=BZ(Bz((D7(i)).bGS,j));if(k===d){ADl(g,k,i);return 1;}if(!Bhv(f, +k)){ADl(f,k,AES);ADl(g,k,i);EY(h,k);}j=j+1|0;}}return 0;}return 1;},EGT=b=>{let c,d,e,f,g,h,$$je;Bf();try{c=GV(b);while(c!==null){a:{if((Yh(c)).bGS!==null){d=0;while(true){e=Bz((Yh(c)).bGS,d);if(e===null)break a;f=Z6(b);AVD(f,2);g=(E5(e)).bHg.bGH-(E7(e)).bHg.bGH|0;if(g>0)h=0;else{h= -g|0;g=0;}Ny(f,Cg(e),g+1|0,LA(e));Ny(f,BZ(e),h+1|0,LA(e));P4(f,DO((CD(Cg(e))-g|0)-1|0,(CD(BZ(e))-h|0)-1|0));d=d+1|0;}}}c=GN(c);}}catch($$e){$$je=P($$e);b=$$je;J(b);}},DgV=(b,c)=>{let d,e,$$je;Bf();try{if(c!==HP(c)){DT0(b,c);d=AKs(ADh(c), +AGb(c));if(d!==null)AAU(d,LA(d)+128|0);else Ny(ADh(c),AGb(c),1.0,128);}e=1;while(e<=GA(c)){DgV(b,Bz(HC(c),e));e=e+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},DgX=(b,c,d)=>{let e,$$je;Bf();a:{b:{c:{try{if(FH(d)==1)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}try{e=Bz((Yh(d)).bGS,0);while(I2(e)!==null){e=I2(e);}}catch($$e){$$je=P($$e);b=$$je;break b;}d:{try{if(!ABv(b,c,Cg(e)))break d;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}e:{try{if(ABv(b,c,BZ(e)))break e;}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}try +{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return 0;},CUj=(b,c)=>{let d,e,f,g,h,i,j,$$je;Bf();a:{try{d=RN(c,b.bZu,8,0);e=D5(c);}catch($$e){$$je=P($$e);b=$$je;break a;}f=d;while(true){try{if(e>D9(c))break;b:{if((Y(B7(c),e)).bG$){g=Bz((Y(B7(c),e)).bG3,0);if(g!==null){h=DN(g)-1|0;c:{while(true){if(h<0)break c;i=Bz((Y(B7(HP(c)),e)).bG3,h);if(!FH(i))break;if(DgX(b,c,i))break;h=h+(-1)|0;}Ny(i,ADh(c),f+Kv(i),0);}d=DN(g)+(Y(B7(c),e)).bG$|0;while(true){if(d>=(Y(B7(HP(c)),e)).bG$)break b;i=Bz((Y(B7(HP(c)), +e)).bG3,d);if(!FH(i))break;if(DgX(b,c,i))break;d=d+1|0;}Ny(AGb(c),i,f+Ng(i),0);}}}e=e+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}try{j=1;while(j<=GA(c)){CUj(b,Bz(HC(c),j));j=j+1|0;}}catch($$e){$$je=P($$e);b=$$je;break a;}return;}J(b);},C9_=(b,c)=>{let d,e,f,g,$$je;Bf();a:{try{d=RN(c,b.bZu,8,0);Brf(c);e=1;}catch($$e){$$je=P($$e);b=$$je;break a;}f=d;while(true){try{if(e>GA(c))break;g=Bz(HC(c),e);Brf(g);Ny(ADh(c),ADh(g),f+(PV(c)).data[3].bGH,0);Ny(AGb(g),AGb(c),f+(PV(c)).data[1].bGH,0);C9_(b,g);e=e+ +1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}return;}J(b);},Czc=(b,c)=>{let d,e,f,g,h,i,j,k,$$je;Bf();a:{try{d=RN(c,b.bZu,8,0);e=1;while(e<=GA(c)){Brf(Bz(HC(c),e));e=e+1|0;}f=1;}catch($$e){$$je=P($$e);b=$$je;break a;}g=d;while(true){try{if(f>GA(c))break;e=f+1|0;h=e;while(h<=GA(c)){i=Bz(HC(c),f);j=Bz(HC(c),h);if(D5(i)<=D5(j)){k=j;j=i;i=k;}if(D9(j)>=D5(i)){if(DN(Bz((Y(B7(j),D5(i))).bG3,0)){let $$je;Bf();try{if(GA(c)>0){DgV(b,c);CUj(b,c);C9_(b,c);Czc(b,c);}}catch($$e){$$je=P($$e);b=$$je;J(b);}},ETc=b=>{let $$je;Bf();a:{b:{try{ARx(new FB);b=(PH(b)).cF1;AWj();if(b===BjV)break b;}catch($$e){$$je=P($$e);b=$$je;break a;}return;}try{I(E(6782));I(E(6783));I(E(6784));I(E(6785));I(E(6786));I(E(6787));I(E(5331));I(E(6788));I(E(6789));I(E(6790));I(E(6791));I(E(6792));I(E(6793));I(E(6794));I(E(5037));J(Gw());}catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);},D6S +=(b,c)=>{let $$je;Bf();try{DT$(c);DNm(b,c);EGT(c);Equ(b,c);ETc(c);}catch($$e){$$je=P($$e);b=$$je;J(b);}},EZP=b=>{let c,d,e,f,$$je;Bf();try{c=GV(b);while(c!==null){d=0;while(true){e=Bz((D7(c)).bGS,d);if(e===null)break;Gq(e.bKd.bGQ);Gq(e);d=d+1|0;}ASS(D7(c));ASS(Gv(c));FnS(c,Yh(c));DD6(c,BK9(c));c=GN(c);}e=null;c=GV(b);while(c!==null){f=GN(c);if(FH(c)==2){if(e===null)WA(b,f);else AR2(e,f);Gq(c.cfX.bGQ);Gq(c);c=e;}e=c;c=f;}AN8(GV(b),null);}catch($$e){$$je=P($$e);b=$$je;J(b);}},DAo=b=>{let c,d,e,f,$$je;Bf();try +{c=B7(b);d=D5(b);while(d<=D9(b)){e=0;while(e<(Y(c,d)).bG$){f=Bz((Y(c,d)).bG3,e);(Dh(f)).bGH=CD(f);P4(f,d);e=e+1|0;}d=d+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},E98=(b,c)=>{let d,e,f,g,h,i,j,k;b=b.cgG;if(b.bQd===null){c=new Cqs;c.cpV=b;b.bQd=c;}b=b.bQd.dX();while(b.dY()){d=b.dZ();e=Bz((Yh(d)).bGS,0);f=Bz((Yh(d)).bGS,1);if(e===null)continue;if(f===null)continue;g=BZ(e);h=BZ(f);i=Eh((Dh(g)).bGH,(Dh(h)).bGH);j=BC((Dh(g)).bGH,(Dh(h)).bGH);k=(Dh(d)).bGH;if(!(!(kj)))(Dh(d)).bGH=BC(i,Eh(j,k));}},EU7=(b, +c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,$$je;Bf();a:{b:{try{e=HP(b);f=B7(e);g=D9(b);h=D5(b);i=(c+1|0)/2|0;j=AAJ(b);k=i;l=j+k;j=(Y(f,g)).bLf;m=d;n=l-(j-m)|0;if(n<=0){o=AAd(b)+(c-i|0)-((Y(f,h)).bKQ-m)|0;break b;}}catch($$e){$$je=P($$e);b=$$je;break a;}l=n;while(true){try{if(g0){p=Dh(Bz((Y(f,g)).bG3,0));p.bGG=p.bGG+l;}g=g+(-1)|0;continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}try{o=AAd(b)+(c-i|0)+l-((Y(f,h)).bKQ-m)|0;break b;}catch($$e){$$je=P($$e);b=$$je;break a;}}c:{try{if(o<=0)break c;g +=h-1|0;while(true){if(g0){p=Dh(Bz((Y(f,g)).bG3,0));p.bGG=p.bGG+o;}g=g+(-1)|0;}}catch($$e){$$je=P($$e);b=$$je;break a;}}try{BBj(b,AAd(b)+(c-i|0));Bhp(b,AAJ(b)+k);}catch($$e){$$je=P($$e);b=$$je;break a;}return;}J(b);},CL1=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,$$je;Bf();try{e=B7(HP(c));f=c===HP(c)?0:RN(c,b.bZu,8,0);g=AAJ(c);h=AAd(c);i=1;while(i<=GA(c)){j=Bz(HC(c),i);CL1(b,j,f+d|0);if(D9(j)==D9(c))g=BC(g,AAJ(j)+f);if(D5(j)==D5(c))h=BC(h,AAd(j)+f);i=i+1|0;}Bhp(c,g);BBj(c,h);if(c!==HP(c)&& +Km(c)!==null){k=BC((PV(c)).data[3].bGG,(PV(c)).data[1].bGG);l=D9(c);m=k-((Dh(Bz((Y(e,D5(c))).bG3,0))).bGG-(Dh(Bz((Y(e,l)).bG3,0))).bGG+g+h);if(m>0.0)EU7(c,m|0,d);}if(c!==HP(c)){(Y(e,D5(c))).bKQ=BC((Y(e,D5(c))).bKQ,AAd(c));(Y(e,D9(c))).bLf=BC((Y(e,D9(c))).bLf,AAJ(c));}}catch($$e){$$je=P($$e);b=$$je;J(b);}},C0b=(b,c)=>{let d,e,f,g,h,i,j,$$je;Bf();try{d=B7(HP(c));e=0;f=c===HP(c)?8:RN(c,b.bZu,8,0);g=AAJ(c);h=AAd(c);i=1;while(i<=GA(c)){j=Bz(HC(c),i);e=e|C0b(b,j);if(D9(j)==D9(c))g=BC(g,AAJ(j)+f);if(D5(j)==D5(c))h +=BC(h,AAd(j)+f);i=i+1|0;}if(c!==HP(c)&&Km(c)!==null){e=1;if(!KL(Hd(c))){g=g+(PV(c)).data[0].bGG;h=h+(PV(c)).data[2].bGG;}}Bhp(c,g);BBj(c,h);if(c!==HP(c)){(Y(d,D5(c))).bKQ=BC((Y(d,D5(c))).bKQ,h);(Y(d,D9(c))).bLf=BC((Y(d,D9(c))).bLf,g);}}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},CNE=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,$$je;Bf();try{d=B7(c);e=D5(c);while(e<=D9(c)){f=0;while(f<(Y(d,e)).bG$){g=Bz((Y(d,e)).bG3,f);h=Vn(g)/2.0;if((Mb(g)).bGS!==null){i=0;while(true){j=Bz((Mb(g)).bGS,i);if(j===null)break;if(Cg(j) +===BZ(j)&&DW(j)!==null)h=BC(h,(DW(j)).bHT.bGG/2.0);i=i+1|0;}}if((Y(d,e)).b5L0)(Dh(Bz((Y(d, +e)).bG3,0))).bGG=(Dh(Bz((Y(d,f)).bG3,0))).bGG+o;n=BC(n,o);}a:{if(m&&KL(c)){CL1(b,c,0);if(Db7(c)){h=0.0;l=D9(c);n=(Dh(Bz((Y(d,l)).bG3,0))).bGG;while(true){l=l+(-1)|0;if(l{let d,e,f,g,h,i,j,$$je;Bf();try{a:{d=EG();e=EG();if(b!==HP(b)){d.bGH=CD(ADh(b));e.bGH=CD(AGb(b));} +else{d.bGH=2.147483647E9;e.bGH=(-2.147483647E9);f=D5(b);while(f<=D9(b)){g=(Y(B7(b),f)).bG$;if(g){h=Bz((Y(B7(b),f)).bG3,0);if(h!==null){i=1;while(FH(h)&&iGA(b))break a;j=(JA(Bz(HC(b),i))).bGT.bGH-8.0;d.bGH=Eh(d.bGH,j);j=(JA(Bz(HC(b),i))).bGU.bGH+8.0;e.bGH=BC(e.bGH,j);i +=i+1|0;}}}d.bGG=(Dh(Bz((Y(B7(c),D9(b))).bG3,0))).bGG-AAJ(b);e.bGG=(Dh(Bz((Y(B7(c),D5(b))).bG3,0))).bGG+AAd(b);Cd((JA(b)).bGT,d);Cd((JA(b)).bGU,e);}catch($$e){$$je=P($$e);b=$$je;J(b);}},CaB=(b,c)=>{let d,$$je;Bf();try{d=1;while(d<=GA(b)){CaB(Bz(HC(b),d),c);d=d+1|0;}FgG(b,c);}catch($$e){$$je=P($$e);b=$$je;J(b);}},EcD=b=>{let c;I(E(6799));I(E(5253));I(E(6800));I(E(6801));I(E(6802));I(E(6803));I(E(5035));I(E(6804));I(E(6805));I(E(5035));I(E(6806));I(E(6807));I(E(6808));I(E(6809));I(E(5035));I(E(5636));I(E(6810));I(E(5035));I(E(6811));I(E(6812));I(E(5037));c +=new BV;X(c);J(c);},E0H=(b,c)=>{let d,$$je;Bf();try{Dgg(new AR5);CaB(b,b);if(D9(b)>0){d=(PH(b)).cF1;AWj();if(d!==A_n){I(E(6813));I(E(6814));I(E(6815));I(E(6816));I(E(6817));I(E(6818));I(E(5044));I(E(6819));I(E(6820));I(E(6821));I(E(5293));I(E(6822));I(E(6823));I(E(6824));I(E(6825));I(E(6826));I(E(6508));I(E(6827));I(E(6828));I(E(6829));I(E(6830));I(E(6831));I(E(6832));I(E(6833));I(E(6834));I(E(6835));I(E(5573));I(E(5424));I(E(5051));I(E(6836));I(E(6825));I(E(6826));I(E(6508));I(E(6837));I(E(6838));I(E(6839));I(E(6840));I(E(6841));I(E(6842));I(E(6843));I(E(5519));I(E(6844));I(E(5051));I(E(6845));I(E(6846));I(E(6847));I(E(6848));I(E(6849));I(E(6850));I(E(5368));I(E(6851));I(E(6852));I(E(5051));I(E(6853));I(E(6854));I(E(6855));I(E(6856));I(E(6857));I(E(6858));I(E(6859));I(E(5051));I(E(6860));I(E(6861));I(E(6862));I(E(5051));I(E(6863));I(E(5044));}}if +(c!==null)EcD(BB(F,[b,c]));}catch($$e){$$je=P($$e);b=$$je;J(b);}},EPj=b=>{let c,d,e,f,g,h,$$je;Bf();try{c=D5(b);while(c<=D9(b)){d=0;e=0;while(e<(Y(B7(b),c)).bG$){f=Bz((Y(B7(b),c)).bG3,e);Tu(f,d);d=RJ(f)!=6?d+1|0:d+AEX(f)|0;e=e+1|0;}if(d>(Y(B7(b),c)).bG$){f=Y(B7(b),c);g=d+1|0;h=(Y(B7(b),c)).bG3;Ej();f.bG3=Ur(g,h,R$);g=(Y(B7(b),c)).bG$-1|0;while(g>=0){f=Bz((Y(B7(b),c)).bG3,g);E_((Y(B7(b),c)).bG3,DN(f),f);g=g+(-1)|0;}(Y(B7(b),c)).bG$=d;E_((Y(B7(b),c)).bG3,d,null);}c=c+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},C$S +=b=>{let c;I(E(6864));I(E(5253));I(E(6865));I(E(6866));I(E(6867));I(E(6868));I(E(6869));I(E(6784));I(E(6870));I(E(6871));I(E(6872));I(E(6873));I(E(6874));I(E(6875));I(E(6876));I(E(6877));I(E(6878));I(E(6879));I(E(6880));I(E(6881));I(E(5051));I(E(5044));I(E(6882));I(E(6883));I(E(6875));I(E(6884));I(E(6885));I(E(6886));I(E(6887));I(E(6888));I(E(5051));I(E(5044));I(E(5035));I(E(5037));c=new BV;X(c);J(c);},ASO=(b,c)=>{let d,$$je;Bf();try{a:{b:{if((E5(b)).bIQ==(E5(c)).bIQ&&!(!((E5(b)).bHg.bGH===(E5(c)).bHg.bGH&& +(E5(b)).bHg.bGG===(E5(c)).bHg.bGG)&&(E5(b)).bIQ)){if((E7(b)).bHg.bGH===(E7(c)).bHg.bGH&&(E7(b)).bHg.bGG===(E7(c)).bHg.bGG)break b;if(!(E7(b)).bIQ)break b;}d=0;break a;}d=1;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},E55=b=>{let c,d,e,f,$$je;Bf();try{EPj(b);c=GV(b);while(c!==null){if(Cv2(c)!==null)C$S(BB(F,[b,Cv2(c)]));if(CMQ(c)!==null)C$S(BB(F,[b,CMQ(c)]));a:{if((Mb(c)).bGS!==null){d=0;while(true){e=Bz((Mb(c)).bGS,d);if(e===null)break a;f=CD(BZ(e))-CD(BZ(e))|0;if(f&&!ASO(e,I2(e))){CcW(E(6889));A7M(Mb(c), +e);if(f==1)BKf(e);d=d+(-1)|0;}d=d+1|0;}}}c=GN(c);}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Brf=b=>{let c,d,$$je;Bf();a:{b:{c:{try{if(ADh(b)===null)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}d:{try{c=Z6(HP(b));AVD(c,2);d=Z6(HP(b));AVD(d,2);if(Km(b)===null)break d;if(b===HP(b))break d;if(KL(Hd(b)))break d;Ny(c,d,DT((PV(b)).data[0].bGH|0,(PV(b)).data[2].bGH|0),0);break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{EVx(b,c);EJj(b,d);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}},DT0=(b,c)=> +{let d,e,f,g,h,i,$$je;Bf();a:{try{d=RN(c,b.bZu,8,0);Brf(c);e=ADh(c);f=AGb(c);g=D5(c);}catch($$e){$$je=P($$e);b=$$je;break a;}h=d;while(true){try{if(g>D9(c))break;if((Y(B7(c),g)).bG$){i=Bz((Y(B7(c),g)).bG3,0);if(i===null){I(E(6890));I(E(6891));I(E(6892));}Ny(e,i,Ng(i)+h+(PV(c)).data[3].bGH,0);b=Bz((Y(B7(c),g)).bG3,(Y(B7(c),g)).bG$-1|0);Ny(b,f,Kv(b)+h+(PV(c)).data[1].bGH,0);}g=g+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}return;}J(b);},DLq=(b,c,d)=>{return;},DeL=N(),CHC=0,LS=()=>{LS=Z(DeL);Frg();},CIe +=b=>{let c,$$je;LS();Bf();try{c=b.bG8;while(c>=0){E_(b.bGS,c,null);c=c+(-1)|0;}b.bG8=0;}catch($$e){$$je=P($$e);b=$$je;J(b);}}; +let FtL=(b,c)=>{let d,e,f,g,h,i,j,$$je;LS();Bf();try{d=0;while(d<(I_(c)).bKy){WA(c,Bz((I_(c)).bK6,d));e=GV(c);while(e!==null){CIe(Gv(e));CIe(D7(e));PE(e,0);e=GN(e);}d=d+1|0;}e=IV(b,c);while(e!==null){f=Mx(b,c,e);while(f!==null){g=H7(f);if(g!==null&&f===I2(g)){h=IV(b,c);while(h!==null){i=Mx(b,c,h);while(i!==null){if(f!==i){j=H7(i);if(j!==null&&g===j)RP(i,null);}i=MU(b,c,i);}h=I4(b,c,h);}Gq(g.bKd.bGQ);Gq(g);}RP(f,null);f=MU(b,c,f);}e=I4(b,c,e);}Gq((I_(c)).bK6);(I_(c)).bK6=null;(I_(c)).bKy=0;}catch($$e){$$je=P($$e);b +=$$je;J(b);}},D5O=(b,c)=>{let d,e,$$je;LS();Bf();try{if(QJ(c)&1){d=IV(b,c);while(d!==null){e=Mx(b,c,d);while(e!==null){AKK(e,RF(e)*2|0);e=MU(b,c,e);}d=I4(b,c,d);}CrV(c,(Bb6(c)+1|0)/2|0);}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Feu=b=>{let c;LS();I(E(6893));I(E(6894));I(E(5253));I(E(6895));I(E(6896));I(E(6897));I(E(6898));I(E(6899));I(E(6900));I(E(6901));I(E(5044));I(E(6902));I(E(6903));I(E(6904));I(E(6905));I(E(6906));I(E(5123));I(E(6907));I(E(5057));I(E(6908));I(E(6909));I(E(6910));I(E(6911));I(E(5123));I(E(6912));I(E(5057));I(E(5044));I(E(6902));I(E(6904));I(E(6913));I(E(5057));I(E(6909));I(E(6914));I(E(5057));I(E(5044));I(E(5035));I(E(5037));c +=new BV;X(c);J(c);},EO4=(b,c)=>{let d,e,f,$$je;LS();Bf();a:{b:{c:{try{d=K(H2,6);e=d.data;e[0]=Co(E(3485));e[1]=Co(E(6915));e[2]=Co(E(6916));e[3]=Co(E(1971));e[4]=Co(E(6917));e[5]=null;e=Ey([1,2,3,4,5,0]);if(!FxA(b,c))break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return 7;}try{f=BW$(GY(b,c,Co(E(6918))),d,e);Fjp(c,f);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return f;},DDK=(b,c,d)=>{let e,f,g,$$je;LS();Bf();try{FqE(c,GA(c)+1|0);e=GA(c);f=e+1|0;g=HC(c);Ej();Fmf(c,Ur(f,g,ARl));E_(HC(c),e,d);CXD(b, +d);}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},DTD=(b,c,d)=>{let e,f,g,h,$$je;LS();Bf();try{e=IV(b,d);while(e!==null){f=I4(b,d,e);if(RJ(e))CvI(BB(F,[d,e]));else{g=1;a:{while(true){if(g>=GA(c))break a;if(ABv(b,Bz(HC(c),g),e))break;g=g+1|0;}}if(g{let d,e,f,$$je;LS();Bf();try{d=0;e=null;f=GV(c);while +(f!==null){if(!CD(f)&&!FH(f))e=f;if(d{let $$je;LS();Bf();a:{b:{try{if(EbR(d)===null)break b;}catch($$e){$$je=P($$e);b=$$je;break a;}return;}c:{try{Ey5(d,c);DTD(b,c,d);if(IV(b,d)!==null)break c;}catch($$e){$$je=P($$e);b=$$je;break a;}return;}d:{try{DDK(b,c,d);if(b.cjy!=100){I(E(6919));break d;}Cs0(b,d,null);EMN(b,d);break d;}catch($$e){$$je=P($$e);b +=$$je;break a;}}return;}J(b);},C0w=(b,c,d)=>{let e,f,$$je;LS();Bf();try{e=BSZ(b,d);while(e!==null){f=EO4(b,e);if(!f)C0w(b,c,e);else if(f==7&&b.cjy==100)Eg8(b,c,e);else Feu(BB(F,[c,e,CL(f)]));e=BVm(b,e);}}catch($$e){$$je=P($$e);b=$$je;J(b);}},EK3=b=>{let c;LS();I(E(6893));I(E(6920));I(E(5253));I(E(6921));I(E(6922));I(E(6923));I(E(6924));I(E(5035));I(E(5037));c=new BV;X(c);J(c);},CMw=b=>{let c,$$je;LS();Bf();try{ASk(b,D5(b)+CD(A$E(b))|0);A4$(b,D9(b)+CD(A$E(b))|0);c=1;while(c<=GA(b)){CMw(Bz(HC(b),c));c=c+1|0;}} +catch($$e){$$je=P($$e);b=$$je;J(b);}},D99=b=>{let c,$$je;LS();Bf();a:{b:{try{c=Bsm();c.bLA=0;c.bLU=0;if(DjJ(b)!==null)break b;if(Dbc(b)!==null)break b;}catch($$e){$$je=P($$e);b=$$je;break a;}return BcG(c);}try{I(E(6925));I(E(6926));I(E(6927));I(E(6928));I(E(6929));I(E(6930));I(E(6931));I(E(6932));I(E(6933));I(E(5044));I(E(5035));I(E(6934));I(E(6935));I(E(6936));I(E(6937));I(E(6933));I(E(5044));I(E(5035));I(E(6938));I(E(5037));J(Gw());}catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);},EMw=(b,c)=>{let $$je;LS();BcG(c);Bf();try +{if(!(DjJ(b)===null&&Dbc(b)===null)){I(E(5567));I(E(6939));I(E(5499));I(E(6940));I(E(6941));I(E(6942));I(E(6943));I(E(5051));I(E(6944));I(E(6945));I(E(6946));I(E(6943));I(E(5051));I(E(5044));}}catch($$e){$$je=P($$e);b=$$je;J(b);}return 0;},D4Y=(b,c)=>{let d,$$je;LS();Bf();try{if(GY(b,c,Co(E(6947)))!==null)I(E(6948));d=0;while(d<(I_(c)).bKy){WA(c,Bz((I_(c)).bK6,d));CP6(b,c,GA(c)?0:1,2147483647);d=d+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},D7z=(b,c,d)=>{let e,f,g,h,$$je;LS();Bf();try{a:{e=IV(b,c);if(e===null) +{A4$(c,0);ASk(c,0);}else{ASk(c,32767);A4$(c,(-1));while(e!==null){f=Ti(e);if(f!==e&&!(d!==null&&CD(e)))P4(e,CD(e)+CD(f)|0);if(D9(c)CD(e))ASk(c,CD(e));if(RJ(e)&&RJ(e)!=6)Dej(e);e=I4(b,c,e);}if(c===HP(c)){if(b.cjy!=100){g=K(F,1);g.data[0]=c;EK3(g);}else{h=1;while(true){if(h>GA(c))break a;CMw(Bz(HC(c),h));h=h+1|0;}}}}}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Cs0=(b,c,d)=>{let e,$$je;LS();Bf();try{e=Bsm();D5O(b,c);if(d!==null){I(E(6949));I(E(6950));}C0w(b,c,c);Dx0(b,c);Fjx(e,D99(c));CLZ(b, +c,0);if(d!==null&&!((I_(c)).bKy<=1&&GA(c)<=0)){I(E(6951));I(E(6952));}Fqz(c);if(EMw(c,e))I(E(6953));if(d===null)D4Y(b,c);else EWo(BB(F,[c,d]));D7z(b,c,d);FtL(b,c);}catch($$e){$$je=P($$e);b=$$je;J(b);}},ER0=(b,c,d)=>{let $$je;LS();Bf();try{if(GY(b,c,Co(E(6954)))===null)Cs0(b,c,d);else{Csg(c,ANE(c)|16);FbM(BB(F,[c,d]));}}catch($$e){$$je=P($$e);b=$$je;J(b);}},FxA=(b,c)=>{let d,$$je;LS();Bf();try{d=CPM(ABl(b,c),Co(E(5195)),7)?0:1;}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},FbM=b=>{let c;LS();I(E(6955));I(E(5253));I(E(6956));I(E(6957));I(E(6958));I(E(6959));I(E(6960));I(E(6961));I(E(6962));I(E(6963));I(E(6964));I(E(6965));I(E(6948));I(E(5331));I(E(6966));I(E(6967));I(E(6968));I(E(6969));I(E(6970));I(E(6971));I(E(6972));I(E(6973));I(E(6974));I(E(6975));I(E(6976));I(E(5035));I(E(6977));I(E(6978));I(E(5331));I(E(6979));I(E(6980));I(E(6981));I(E(6982));I(E(6983));I(E(5037));c +=new BV;X(c);J(c);},Frg=()=>{CHC=0;},DZs=N(),EfP=(b,c)=>{let $$je;Bf();a:{b:{try{b.c0H=SU(b,c,2,Co(E(6984)),null);c=SU(b,c,2,Co(E(6985)),null);b.c9o=c;if(b.c0H!==null)break b;if(c!==null)break b;}catch($$e){$$je=P($$e);b=$$je;break a;}return;}try{I(E(6986));I(E(6987));I(E(6988));I(E(6989));I(E(6990));I(E(6991));I(E(6992));I(E(6993));I(E(6994));I(E(6995));I(E(5044));I(E(6996));I(E(6997));I(E(6998));I(E(6999));I(E(7000));I(E(5044));I(E(7001));I(E(7002));I(E(7003));I(E(7004));I(E(7000));I(E(5044));I(E(5035));I(E(5037));J(Gw());} +catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);},DWJ=N(),DKR=b=>{let c;I(E(7005));I(E(5253));I(E(6868));I(E(6867));I(E(7006));I(E(6986));I(E(6884));I(E(7007));I(E(5044));I(E(5035));I(E(7008));I(E(5037));c=new BV;X(c);J(c);},Fts=N(),EWo=b=>{let c;I(E(7009));c=new BV;X(c);J(c);},DM9=(b,c,d)=>{let $$je;Bf();a:{b:{try{if(GY(b,c,Co(E(7010)))!==null&&I(E(7011))!==null)break b;d.cPw=0;d.cN2=0;b=null;}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}try{I(E(7012));I(E(7013));I(E(7014));I(E(7015));I(E(7016));I(E(7017));I(E(7018));I(E(7019));I(E(7020));I(E(7014));I(E(7021));I(E(7022));I(E(7023));I(E(5037));J(Gw());} +catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);}; +function CCE(){F.call(this);this.cy8=0.0;} +let ADK=(a,b)=>{return BA(b.bGK,a.cy8-b.bGL);},DgS=(a,b)=>{let c,d;c=ARD();b=(BP8(b)).dX();while(b.dY()){d=b.dZ();c=B3d(c,ADK(a,P3(d)),ADK(a,BAQ(d)),ADK(a,BjW(d)),ADK(a,Mc(d)));}return c;}; +function Dm5(){let a=this;F.call(a);a.cVT=0;a.c31=0;a.c_p=BH;a.c9R=0;a.cHc=0;a.bXv=null;a.ckG=null;a.cfp=null;a.de4=0;a.cNx=BH;a.c$S=0;a.cd8=BH;} +let DSB=a=>{a.cVT=0;a.c31=0;a.cHc=255;a.c$S=0;a.cd8=BH;},CKm=()=>{let a=new Dm5();DSB(a);return a;},Eg3=(a,b)=>{a.cNx=b;},DvQ=(a,b)=>{let c,d,e,f;c=0;if(a.cVT)c=1;if(a.c31)c=c|2;if(a.bXv!==null)c=c|4;if(a.ckG!==null)c=c|8;if(a.cfp!==null)c=c|16;d=0;e=b.b24;if(e==1)d=4;else if(e==9)d=2;APH(b,(-29921));JS(b,8);JS(b,c<<24>>24);JS(b,Cp(a.cd8)<<24>>24);JS(b,Cp(GS(a.cd8,8))<<24>>24);JS(b,Cp(GS(a.cd8,16))<<24>>24);JS(b,Cp(GS(a.cd8,24))<<24>>24);JS(b,d<<24>>24);JS(b,a.cHc<<24>>24);f=a.bXv;if(f!==null){JS(b,f.data.length +<<24>>24);JS(b,a.bXv.data.length>>8<<24>>24);f=a.bXv;Bdf(b,f,0,f.data.length);}f=a.ckG;if(f!==null){Bdf(b,f,0,f.data.length);JS(b,0);}f=a.cfp;if(f!==null){Bdf(b,f,0,f.data.length);JS(b,0);}},ESv=N(),CSL=N(),Cus=null,D5P=null,BQt=()=>{BQt=Z(CSL);E1g();},E1g=()=>{let b,c,d;b=new S;T(b);c=P2(AQ8(Bo(AIL)));while(OD(c)){d=Pr(c);Lx();L(b,d===WU?E(7024):d===Os?E(7025):d===OK?E(7026):d===Qn?E(7027):d===RH?E(7028):d===Wz?E(7029):d!==SN?null:E(927));Bb(b,124);L(b,d===WU?E(7030):d===Os?E(7031):d===OK?E(7032):d===Qn?E(7033) +:d===RH?E(7034):d===Wz?E(7035):d!==SN?null:E(7036));Bb(b,124);}L(b,E(7037));Bb(b,124);L(b,E(7038));Bb(b,124);L(b,E(7039));Bb(b,124);L(b,E(7040));Bb(b,124);L(b,E(7041));Bb(b,124);L(b,E(7042));Bb(b,124);L(b,E(7043));Bb(b,124);L(b,E(7044));Bb(b,124);L(b,E(7045));Bb(b,124);L(b,E(7046));Bb(b,124);L(b,E(7047));Bb(b,124);L(b,E(7048));Bb(b,124);L(b,E(7049));c=Q(b);Cus=c;b=new S;T(b);H(H(H(H(b,c),E(7050)),c),E(7051));D5P=Dm(Q(b));},A9U=N(Bx),Sw=null,Bf9=null,FgU=null,QX=()=>{QX=Z(A9U);DY0();},DFB=(a,b,c)=>{QX();Ct(a, +b,c);},CJc=(a,b)=>{let c=new A9U();DFB(c,a,b);return c;},DY0=()=>{let b,c,d;Sw=CJc(E(7052),0);b=CJc(E(4349),1);Bf9=b;c=K(A9U,2);d=c.data;d[0]=Sw;d[1]=b;FgU=c;}; +function A7z(){let a=this;F.call(a);a.bSx=null;a.bTl=null;a.b8_=null;a.cmi=null;} +let BFc=(a,b,c,d,e)=>{B$(e);a.cmi=b;a.bSx=c;a.bTl=d;a.b8_=e;},Fyb=(a,b,c,d)=>{let e=new A7z();BFc(e,a,b,c,d);return e;},ALq=(b,c,d)=>{let e;if(!VG(b,c)){b=new Bt;Bp(b,E(7053));J(b);}e=new A7z;QX();BFc(e,Sw,b,c,d);return e;},AEd=(b,c,d)=>{let e;if(!VG(c,b)){b=new Bt;Bp(b,E(7054));J(b);}e=new A7z;QX();BFc(e,Bf9,b,c,d);return e;}; +function A$7(){let a=this;F.call(a);a.bL5=BH;a.bMX=BH;} +let B9G=null,C$l=null,Fek=null,Dgd=null,S2=null,ADi=null,RT=()=>{RT=Z(A$7);DuV();},C50=(a,b,c)=>{let d,e,f,g,h;RT();d=OT(c,BH);if(d){if(d<0){b=LF(b);c=LF(c);}e=AOc(b);f=c;while(D4(f,BH)){g=Fl(e,f);e=f;f=g;}a.bL5=CY(b,e);a.bMX=CY(c,e);return;}h=new Bt;Bp(h,E(7055));J(h);},AEl=(a,b)=>{let c=new A$7();C50(c,a,b);return c;},CE_=(a,b)=>{return AEl(CT(a.bL5,b.bL5),CT(a.bMX,b.bMX));},DzB=a=>{let b,c,d,e;b=a.bMX;if(D4(b,V(1))){c=a.bL5;d=new S;T(d);e=QN(d,c);Bb(e,47);QN(e,b);return Q(d);}return BU0(a.bL5);},BQu=(a,b)=> +{Gp(b,E(7056));return BAK(CT(a.bL5,b.bMX),CT(b.bL5,a.bMX));},BQm=(a,b)=>{let c;if(a!==b){if(b instanceof A$7){c=b;return !(DS(a.bL5,c.bL5)&&DS(a.bMX,c.bMX))?0:1;}return 0;}return 1;},Eoq=a=>{return (31*Bjt(a.bL5)|0)+Bjt(a.bMX)|0;},EQb=(a,b)=>{return BQu(a,b);},DuV=()=>{B9G=new CCR;C$l=new CCS;Fek=new CCP;Dgd=new CCQ;S2=AEl(BH,V(1));ADi=AEl(V(1),V(1));}; +function CyX(){let a=this;F.call(a);a.cop=null;a.cfJ=0;} +let BUE=(a,b)=>{let c,d,e,f;c=a.cfJ;if(c>=0){d=a.cop.data;e=d.length;if(c>24;a.cfJ=(c+1|0)%e|0;return;}}f=new BP;X(f);J(f);},Sg=N(Dt),C32=N(),EHn=(a,b,c)=>{return 1;},Ef_=(a,b)=>{return Gi();}; +function BGP(){Ez.call(this);this.cvL=null;} +let C59=0,BAv=()=>{BAv=Z(BGP);E1q();},C1b=(a,b)=>{let c,d;c=B1(a.bGR);B8();d=BoC;CV();return D0(B0(c,AHZ(CG(d,Nh),b)),a.bGR.bGN);},FvY=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;BAv();HZ(a,b);d=b.bHD;Cy();e=!(d!==VI&&d!==SZ)?1:0;f=b.bGZ;g=AUx(a.bGR,E(7057),E(7058));h=!g?BD_(b):null;i=B1(a.bGR);B8();j=B0(i,AWo(Du(BSW,f),b.bYu));k=BIE(a.bGR,j,b.bG_);if(e)k=A69(k);l=b.bH1;if(!g)d=l;else if(BD_(b)===null)d=l;else{m=BD_(b);d=AEj(l.bMJ,l,l.bMn);i=l.bIc;e=i.bGJ;if(!e){i=d.bIc;m=BY(m);n=new S;T(n);Bb(n,60);Bb(H(n, +m),62);m=Q(n);U(i,m);}else{n=d.bIc;e=e-1|0;i=BY(Be(i,e));m=BY(m);o=new S;T(o);i=H(o,i);Bb(i,60);Bb(H(i,m),62);m=Q(o);GJ(n,e,m);}}B3();n=CO;m=a.bGR;Ed();p=WB(d,k,n,m,BkL,GM(j));q=b.cb7;if(q===null)i=KN(p,3.0,3.0,0.0,0.0);else{r=Uu();i=AK6(r,a.bGR,q.cxS);d=AK6(r,a.bGR,q.b6Y);m=KN(ASm(q,Qy(a.bGR),d,i,0),0.0,0.0,4.0,0.0);Fa();i=KN(Vi(m,p,Hg),3.0,3.0,0.0,0.0);}a:{b:{n=c.bpS(b);if(f!==null){F_();if(I7(f,Hl)!==null&&!n.j())break b;}o=null;break a;}o=Js(C_(Ls(n),C1b(a,f),CO,a.bGR),1.0,0.0);}if(h===null)s=null;else{t +=B0(B1(a.bGR),AWo(Du(CeD,f),b.bYu));m=Js(C_(B4(a.bGR.bH$,h),C1b(a,f),CO,a.bGR),1.0,1.0);B9();u=(BJ(t,CK)).cu(a.bGR.bGN);v=(BJ(t,Cz)).cu(a.bGR.bGN);d=new DqH;d.crI=m;d.cSP=v;d.cPN=u;s=Js(d,1.0,1.0);}HN();w=!c.bpU(ASl,a.bGV)?null:KN(EJk(a,b,a.bGR),4.0,0.0,5.0,5.0);b=new BDm;ANW();b.cnO=BzG(w);b.cj5=BzG(o);b.cko=BzG(i);b.ceL=BzG(s);a.cvL=b;},Fwb=(a,b)=>{let c=new BGP();FvY(c,a,b);return c;},EJk=(a,b,c)=>{let d,e,f,g,h,i,j,k,l;d=b.bGZ;if(d!==null&&ATW(d,c)!==null)return ATW(d,c);a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k: +{l:{m:{e=a.bGR;Fs();f=CDC(e,KB,null);g=b.bHD;h=c;b=B1(h);B6X();switch(BKb.data[g.bGO]){case 1:B8();c=Dr6;break a;case 2:break m;case 3:break l;case 4:break k;case 5:break j;case 6:break i;case 7:break h;case 8:break g;case 9:break f;case 10:break e;case 11:break d;case 12:break c;case 13:break b;default:}b=new BP;X(b);J(b);}B8();c=CoT;break a;}B8();c=C0e;break a;}B8();c=Cyp;break a;}B8();c=C6x;break a;}B8();c=Cuq;break a;}B8();c=CbP;break a;}B8();c=DoD;break a;}B8();c=CqN;break a;}B8();c=Cnr;break a;}B8();c +=DpV;break a;}B8();c=Ci5;break a;}B8();c=Dhf;}i=B0(b,c);B9();e=(BJ(i,Cz)).cu(h.bGN);j=(BJ(i,CK)).cu(h.bGN);h=(BJ(i,Lv)).cu(h.bGN);if(d!==null&&BLI(d)){b=new BWI;k=BLI(d);l=Lc(a.bGR);if(Bby(d)!==null)j=Bby(d);C6u(b,k,l,f,j,e,h);return b;}k=0;if(d!==null){b=a.bGR;i=B$(d);F_();c=I7(i,Hl);i=new S;T(i);H(H(i,E(7059)),c);b=DF(b,Q(i));k=!(b!==null&&b.bGI.length>0)?0:Bn(b,0);}if(!k)n:{o:{p:{q:{r:{s:{t:{u:{v:{w:{x:{y:{z:{ba:{switch(BKb.data[g.bGO]){case 1:break;case 2:break ba;case 3:break z;case 4:break y;case 5:break x;case 6:break w;case 7:break v;case 8:break u;case 9:break t;case 10:break s;case 11:break r;case 12:break q;case 13:break p;default:break o;}k +=64;break n;}k=65;break n;}k=67;break n;}k=73;break n;}k=69;break n;}k=69;break n;}k=80;break n;}k=83;break n;}k=88;break n;}k=77;break n;}k=83;break n;}k=68;break n;}k=82;break n;}BAv();if(C59)k=63;else{b=new C4;X(b);J(b);}}return CHe(k,Lc(a.bGR),f,j,e,h);},EBg=(a,b)=>{let c,d,e,f;c=a.cvL;d=c.cko.cF(b);e=c.ceL.cF(b);f=c.cj5.cF(b);b=c.cnO.cF(b);return Cl(b.bGE+BC(f.bGE,d.bGE)+e.bGE,ADF(b.bGF,f.bGF+d.bGF+10.0,e.bGF));},E1q=()=>{C59=0;}; +function BQf(){let a=this;F.call(a);a.cSp=0.0;a.c7L=0.0;} +let CbE=(a,b,c)=>{a.cSp=b;a.c7L=c;},EWE=(a,b)=>{let c=new BQf();CbE(c,a,b);return c;},Fpw=a=>{CbE(a,0.0,0.0);},BhM=()=>{let a=new BQf();Fpw(a);return a;},EZH=(a,b)=>{return Cl(a.cSp,a.c7L);},Fp5=(a,b)=>{return;}; +function CrP(){let a=this;F.call(a);a.crG=null;a.b8X=null;a.czH=null;a.crf=0;} +let Fqv=(a,b,c,d,e)=>{a.b8X=c;a.czH=d;a.crG=b;a.crf=!e?20:12;},Cey=(a,b,c,d)=>{let e=new CrP();Fqv(e,a,b,c,d);return e;},Dmm=(a,b)=>{let c;b=new LU;c=a.crf;MO(b,c,c);return b;},Czt=(a,b)=>{let c,d,e,f;c=a.crf;d=Fz(c,c);e=a.czH;f=a.b8X;B9();e=UD(e,f,CK,a.crG.bGN);f=UD(a.czH,a.b8X,Cz,a.crG.bGN);c=G1(a.b8X);d.bG1=c;(((b.h2(f)).h2(Cc(e))).h2(Fi(a.b8X))).hP(d);}; +function DkE(){let a=this;F.call(a);a.cqT=null;a.b$x=null;a.cG4=null;} +let Ejd=(a,b,c,d)=>{a.b$x=c;a.cG4=d;a.cqT=b;},Dfl=(a,b,c)=>{let d=new DkE();Ejd(d,a,b,c);return d;},CuP=(a,b)=>{let c,d,e,f,g;c=Fz(22.0,22.0);d=a.cG4;e=a.b$x;B9();e=UD(d,e,CK,a.cqT.bGN);f=UD(a.cG4,a.b$x,Cz,a.cqT.bGN);c.bG1=G1(a.b$x);(((b.h2(Cc(E4()))).h2(f)).h2(Fi(a.b$x))).hP(c);d=Fz(12.0,12.0);if(!f.cx(e))b=(b.h2(Cc(e))).h2(f);else{g=new ClU;g.cOF=f;g.cOG=e;b=(b.h2(Cc(e))).h2(g);}(b.h2(Bh(5.0,5.0))).hP(d);}; +function A0o(){let a=this;F.call(a);a.b_H=null;a.cxZ=0;a.ciQ=null;a.cq_=0.0;} +let CKB=(a,b,c,d,e)=>{a.b_H=c;a.cxZ=d;a.ciQ=e;a.cq_=b;},Fmd=(a,b,c,d)=>{let e=new A0o();CKB(e,a,b,c,d);return e;},CLy=(a,b,c,d)=>{CKB(a,b,c,d,null);},EMO=(a,b,c)=>{let d=new A0o();CLy(d,a,b,c);return d;},CCA=(a,b,c)=>{CLy(a,b,c,0);},DtX=(a,b)=>{let c=new A0o();CCA(c,a,b);return c;},EVJ=(a,b)=>{let c,d;c=a.b_H.cF(b);d=a.ciQ;if(d!==null){d=d.cF(b);return W$(c,d.bGE+8.0,d.bGF);}return c;},FqI=(a,b)=>{let c;c=(b.gy()).gz();if(a.ciQ===null)b.hP(DjY(a.cq_,1.0,1.0,a.cxZ));a.b_H.cC(b);b=c!==null?b.h2(c):b.h2(E4());c +=a.ciQ;if(c!==null)b.hP(DmH(a.cq_,1.0,1.0,c,a.cxZ));},EET=(a,b,c)=>{return a.b_H.yz(b,c);},DOW=(a,b)=>{let c;c=a.b_H;if(F0(c,Oa))return c.yC(b);return Ya();}; +function Czn(){let a=this;F.call(a);a.c3V=null;a.cUh=null;a.cLy=null;a.c2n=null;a.c2O=null;a.cpJ=0.0;} +let EAk=(a,b)=>{let c,d;c=a.c2n;if(c!==null)b=b.h2(c);c=a.cLy;b=c!==null?b.h2(Cc(c)):b.h2(Cc(E4()));d=2.0*a.cpJ;b.hP(C2(d,d));b=b.h2(a.c2O);c=new FG;d=a.cpJ;Hs(c,d,d);(b.h2(c)).hP(BF5(Bn(a.c3V,0),a.cUh));},ChP=(a,b)=>{let c;b=new LU;c=2.0*a.cpJ;MO(b,c,c);return b;}; +function CrS(){let a=this;F.call(a);a.cfr=0;a.cYe=0;a.c5B=null;a.cYk=null;a.cWr=null;} +let CGI=(a,b)=>{let c;b=new LU;c=a.cfr+1|0;MO(b,c,c);return b;},D1n=(a,b,c)=>{return null;},DgK=(a,b)=>{let c,d,e,f,g,h;if(a.cYe){c=b.h2(E4());d=a.cfr;c.hP(C2(d*2|0,d));}c=a.cWr;d=a.cfr;e=a.c5B;f=a.cYk;g=BgD();Hb();Db(g,Bao,c.bHx);b.hH(g);h=(f!==null?b.h2(Cc(f)):b.h2(Cc(E4()))).h2(e);OM();if((d%2|0)==1)d=d+(-1)|0;a:{b:{c:{d:{e:{f:{g:{h:{i:{switch(c.bGO){case 0:break;case 1:break i;case 2:break h;case 3:break g;case 4:break f;case 5:break e;case 6:break d;case 7:break c;case 8:break b;default:b=new BP;X(b);J(b);}CRM(c, +h,0,d,0.0,0.0);break a;}C25(c,h,0,d,0.0,0.0);break a;}CqD(c,h,0,d,0.0,0.0);break a;}BSA(c,h,0,d,0.0,0.0);break a;}CRM(c,h,1,d,0.0,0.0);break a;}C25(c,h,1,d,0.0,0.0);break a;}CqD(c,h,1,d,0.0,0.0);break a;}BSA(c,h,1,d,0.0,0.0);break a;}BSA(c,h,1,d,0.0,0.0);}b.hI();}; +function Cy$(){let a=this;F.call(a);a.cVW=null;a.c8B=null;} +let DKp=a=>{return 3.141592653589793+CAT(a.cVW);}; +function Dph(){F.call(this);this.b8N=null;} +let AF3=a=>{return a.b8N.data.length;},A37=a=>{return a.b8N.data[0].data.length;},YM=(a,b,c)=>{return a.b8N.data[b].data[c];}; +function Ct4(){let a=this;Wy.call(a);a.bR$=null;a.bVS=0;} +let Dt0=a=>{let b,c,d,e,f,g;b=a.bVS;c=a.bR$;d=c.data.length;e=BY(c);f=new S;T(f);g=H(f,E(7060));BE(g,b);g=H(g,E(6588));BE(g,d);Bb(g,93);H(g,e);return Q(f);},DWk=(a,b,c)=>{a.bR$=b;a.bVS=c;},Cvp=(a,b)=>{let c=new Ct4();DWk(c,a,b);return c;},SE=(b,c)=>{return Cvp(K(F,b),0);},Ur=(b,c,d)=>{let e,f,g;if(c!==null){if(b>c.bR$.data.length){if(!c.bVS){e=SE(b,d);f=c.bR$;g=f.data;Di(f,0,e.bR$,0,g.length);return e;}c=new BP;X(c);J(c);}return c;}return SE(b,d);},BaQ=(a,b)=>{if(a.bR$!==b.bR$){b=new Bt;X(b);J(b);}return a.bVS +-b.bVS|0;},Bz=(a,b)=>{return a.bR$.data[b+a.bVS|0];},E_=(a,b,c)=>{a.bR$.data[b+a.bVS|0]=c;},L5=(a,b)=>{return Cvp(a.bR$,a.bVS+b|0);},E1f=(a,b,c)=>{let d,e,f;d=a.bR$.data;e=a.bVS;b=b+e|0;f=d[b];c=c+e|0;d[b]=d[c];d[c]=f;},B$p=N(),Cb0=0,LP=()=>{LP=Z(B$p);Dtc();},E3o=(b,c,d,e,f,g,h,i)=>{let j,k,l,m,n,o,p,q,r,$$je;LP();Bf();try{j=Ca(1);k=j.data;k[0]=0;l=Ca(1);m=l.data;m[0]=0;n=c;while(I2(n)!==null){n=I2(n);}if(i.cZN)o=0;else{p=i.cwz;q=K(F,1);q.data[0]=n;o=Wp(C_y(p,b,q));}DFu(b,n,j,l);p=i.b4M;l=K(F,1);l.data[0]=d;if +(Wp(A_Z(p,b,l)))m[0]=0;d=i.b4M;l=K(F,1);l.data[0]=Cg(c);if(Wp(A_Z(d,b,l)))k[0]=0;if(o){r=k[0];k[0]=m[0];m[0]=r;}if(i.ddU){I(E(7061));I(E(7062));}else{if(k[0]){l=f.data;q=g.data;l[0]=EVs(b,n,e,l[0],q[0],h,k[0]);}if(m[0]){f=f.data;g=g.data;g[0]=D4N(b,n,e,f[0],g[0],h,m[0]);}}}catch($$e){$$je=P($$e);b=$$je;J(b);}},B5g=(b,c,d,e,f)=>{let g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,$$je;LP();Bf();a:{try{Ej();g=Ho(4,G9);h=Ho(4,G9);i=EG();j=EG();k=Hr(1);l=k.data;l[0]=0.0;m=Hr(1);n=m.data;n[0]=0.0;if(!f){o=null;Cd(i,Y(e,3));p=g;}else +{p=null;Cd(i,Y(e,0));o=g;q=m;m=k;k=q;}r=0;l[0]=0.0;n[0]=1.0;}catch($$e){$$je=P($$e);b=$$je;break a;}s=d;while(true){try{Cd(j,i);t=(n[0]+l[0])/2.0;Cd(i,BVZ(e,3,t,p,o));if(Wp(s.a5e(b,BB(F,[c,i]))))m.data[0]=t;else{u=0;while(u<4){Cd(Y(h,u),Y(g,u));u=u+1|0;}q=k.data;r=1;q[0]=t;}if(EL(j.bGH-i.bGH)>0.5)continue;if(!(EL(j.bGG-i.bGG)>0.5))break;continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}b:{try{if(!r){u=0;while(true){if(u>=4)break b;Cd(Y(e,u),Y(g,u));u=u+1|0;}}u=0;while(true){if(u>=4)break b;Cd(Y(e,u),Y(h,u));u +=u+1|0;}}catch($$e){$$je=P($$e);b=$$je;break a;}}return;}J(b);},CiD=(b,c,d,e,f)=>{let g,h,i,j,$$je;LP();Bf();try{Ej();g=Ho(4,G9);h=Kv(d);i=0;while(i<4){(Y(g,i)).bGH=(Y(e,i)).bGH-(Dh(d)).bGH;(Y(g,i)).bGG=(Y(e,i)).bGG-(Dh(d)).bGG;i=i+1|0;}B5g(b,c,(JW(d)).bQu.b2C,g,f);j=0;while(j<4){(Y(e,j)).bGH=(Y(g,j)).bGH+(Dh(d)).bGH;(Y(e,j)).bGG=(Y(g,j)).bGG+(Dh(d)).bGG;j=j+1|0;}U$(d,h);}catch($$e){$$je=P($$e);b=$$je;J(b);}},Eki=(b,c)=>{let d,e,f,g,h,$$je;LP();Bf();try{while(QH(b)){b=I2(b);}if(K7(b)===null)DUN(b,EZd());d=K7(b);e +=(K7(b)).bPl+1|0;f=(K7(b)).bIY;Ej();d.bIY=UX(e,f,A3P);g=(K7(b)).bIY;b=K7(b);h=b.bPl;b.bPl=h+1|0;g=Y(g,h);g.bK7=Ho(c,G9);g.bPR=c;g.bVo=0;g.bWc=0;b=g.bQt;b.bGH=0.0;b.bGG=0.0;b=g.bQq;b.bGH=0.0;b.bGG=0.0;}catch($$e){$$je=P($$e);b=$$je;J(b);}return g;},ZP=(b,c,d,e,f,g)=>{let h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,$$je;LP();N_(E(7063),E(7064));a:{try{h=EG();i=Ca(1);j=i.data;j[0]=0;k=Ca(1);l=k.data;l[0]=0;m=B0R();n=Cg(c);o=H9(n);p=Eki(c,f);q=c;while(QH(q)){q=I2(q);}if(g.cZN){r=n;n=d;d=r;}else if(CD(n)!=CD(d)){r=n;n=d;d=r;} +else if(DN(n)<=DN(d)){r=n;n=d;d=r;}if(d!==Cg(q)){s=(E5(q)).bQb;t=(E7(q)).bQb;u=(E7(q)).bQC;r=(E5(q)).bQC;}else{s=(E7(q)).bQb;t=(E5(q)).bQb;r=(E7(q)).bQC;u=(E5(q)).bQC;}}catch($$e){$$je=P($$e);b=$$je;break a;}b:{try{if(!(s&&JW(d)!==null&&(JW(d)).bQu.b2C!==null)){j[0]=0;break b;}m.ckU=d;m.cm$=r;j[0]=0;}catch($$e){$$je=P($$e);b=$$je;break a;}v=f-4|0;c:{try{while(true){if(j[0]>=v)break c;h.bGH=(Y(e,j[0]+3|0)).bGH-(Dh(d)).bGH;h.bGG=(Y(e,j[0]+3|0)).bGG-(Dh(d)).bGG;if(!Wp((JW(d)).bQu.b2C.a5e(b,BB(F,[m,h]))))break;j[0] +=j[0]+3|0;}break c;}catch($$e){$$je=P($$e);b=$$je;break a;}}try{CiD(b,m,d,IQ(e,j[0]),1);break b;}catch($$e){$$je=P($$e);b=$$je;break a;}}d:{try{if(!(t&&JW(n)!==null&&(JW(n)).bQu.b2C!==null)){l[0]=f-4|0;break d;}m.ckU=n;m.cm$=u;l[0]=f-4|0;e:{while(true){if(l[0]<=0)break e;h.bGH=(Y(e,l[0])).bGH-(Dh(n)).bGH;h.bGG=(Y(e,l[0])).bGG-(Dh(n)).bGG;if(!Wp((JW(n)).bQu.b2C.a5e(b,BB(F,[m,h]))))break;l[0]=l[0]-3|0;}}CiD(b,m,n,IQ(e,l[0]),0);break d;}catch($$e){$$je=P($$e);b=$$je;break a;}}w=f-4|0;f:{try{while(true){if(j[0] +>=w)break f;if(!BHl(Y(e,j[0]),Y(e,j[0]+3|0),BrG))break;j[0]=j[0]+3|0;}break f;}catch($$e){$$je=P($$e);b=$$je;break a;}}g:{try{while(true){if(l[0]<=0)break g;if(!BHl(Y(e,l[0]),Y(e,l[0]+3|0),BrG))break;l[0]=l[0]-3|0;}break g;}catch($$e){$$je=P($$e);b=$$je;break a;}}try{E3o(b,c,n,e,i,k,p,g);s=j[0];h:{while(true){if(s>=(l[0]+4|0))break h;Ej();r=Ho(4,G9);Cd(Y(p.bK7,s-j[0]|0),Y(e,s));Cd(Y(r,0),Y(e,s));f=s+1|0;if(f>=(l[0]+4|0))break;Cd(Y(p.bK7,f-j[0]|0),Y(e,f));Cd(Y(r,1),Y(e,f));f=f+1|0;Cd(Y(p.bK7,f-j[0]|0),Y(e,f));Cd(Y(r, +2),Y(e,f));s=f+1|0;Cd(Y(r,3),Y(e,s));BJB(JA(o),r);}}p.bPR=(l[0]-j[0]|0)+4|0;}catch($$e){$$je=P($$e);b=$$je;break a;}Ee(E(7063),E(7064));return;}Ee(E(7063),E(7064));J(b);},Ewq=b=>{let $$je;LP();Bf();try{I(E(7065));I(E(7066));I(E(5253));I(E(7067));I(E(7068));I(E(7069));I(E(6868));I(E(7070));I(E(7071));I(E(7072));I(E(7073));I(E(7074));I(E(7075));I(E(7076));I(E(7077));I(E(7078));I(E(7079));I(E(7080));I(E(7081));I(E(5037));J(Gw());}catch($$e){$$je=P($$e);b=$$je;}J(b);},AAQ=(b,c)=>{let d,e,f,$$je;LP();c=PK(c);Bf();try +{d=c.bGT;e=d.bGH;f=c.bGU;if(e{let h,i,j,k,l,$$je;LP();N_(E(7082),E(7083));a:{try{h=Cg(d);if((E7(d)).bZl)AQi(d,DhB(Cg(d),BZ(d),E7(d)));i=JW(h)===null?null:(JW(h)).bQu.clz;Cd(c.bJt.bHg,AS9(Dh(h),(E7(d)).bHg));if(g){c.bJt.bMz=Ewq(Cg(d));c.bJt.bMm=1;}else if(!(E7(d)).bMm)c.bJt.bMm=0;else{c.bJt.bMz=(E7(d)).bMz;c.bJt.bMm=1;}}catch($$e){$$je=P($$e);b=$$je;break a;}b:{try{c.bRs=0;c.cZe=d;Cd(f.cqN, +c.bJt.bHg);g=C5(e,1);if(g)break b;if(FH(h))break b;j=(E7(d)).bIG;if(!j)break b;BPr(new AUO);k=PK(f.bSO);if(j&4){I(E(7084));I(E(7085));I(E(7086));I(E(7087));I(E(7088));I(E(7089));I(E(7090));I(E(7091));I(E(7092));I(E(7093));I(E(7094));I(E(7095));I(E(7096));I(E(5051));I(E(6508));I(E(7097));I(E(7088));I(E(7087));I(E(7098));I(E(7090));I(E(7099));I(E(7092));I(E(7093));I(E(7100));I(E(7095));I(E(7096));I(E(7101));I(E(7102));I(E(7103));}else if(j&1){f.bNN=1;b=k.bGU;b.bGG=BC(b.bGG,c.bJt.bHg.bGG);FM(f.bIC.data[0],k);f.bI$.data[0] +=1;b=c.bJt.bHg;b.bGG=b.bGG-1.0;}else if(!(j&8)){f.bNN=2;b=k.bGT;b.bGH=c.bJt.bHg.bGH;b.bGG=(Dh(h)).bGG-B4M(h);k.bGU.bGG=c.bJt.bHg.bGG;FM(f.bIC.data[0],k);f.bI$.data[0]=1;b=c.bJt.bHg;b.bGH=b.bGH+1.0;}else{f.bNN=8;k.bGU.bGH=c.bJt.bHg.bGH;k.bGT.bGG=(Dh(h)).bGG-B4M(h);k.bGU.bGG=c.bJt.bHg.bGG;FM(f.bIC.data[0],k);f.bI$.data[0]=1;b=c.bJt.bHg;b.bGH=b.bGH-1.0;}while(QH(d)){d=I2(d);}if(h!==Cg(d))I(E(7104));else (E7(d)).bQb=0;}catch($$e){$$je=P($$e);b=$$je;break a;}Ee(E(7082),E(7083));return;}c:{try{if(e!=2)break c;if(!(E7(d)).bIG)break c;I(E(7105));I(E(7106));I(E(7107));I(E(7108));I(E(7109));I(E(7110));I(E(7102));I(E(5044));I(E(7111));I(E(7112));I(E(7113));I(E(7098));I(E(7114));I(E(7115));I(E(7099));I(E(7116));I(E(7117));I(E(7100));I(E(7095));I(E(7096));I(E(7118));I(E(5051));I(E(6508));I(E(7119));I(E(7120));I(E(7121));I(E(5051));I(E(7122));I(E(5044));I(E(7123));I(E(7124));I(E(7112));I(E(7117));I(E(7125));I(E(5051));I(E(6508));I(E(7093));I(E(7126));I(E(5051));I(E(7109));I(E(7110));I(E(7127));I(E(5044));I(E(5045));I(E(7128));I(E(7112));I(E(7117));I(E(7129));I(E(5051));I(E(6508));I(E(7093));I(E(7126));I(E(5051));I(E(7109));I(E(7110));I(E(7130));I(E(5044));I(E(7131));I(E(7132));I(E(7133));I(E(5293));I(E(7104));I(E(7134));I(E(6784));break c;} +catch($$e){$$je=P($$e);b=$$je;break a;}}d:{try{if(g){j=f.bNN;break d;}j=1;break d;}catch($$e){$$je=P($$e);b=$$je;break a;}}e:{try{if(i!==null){l=BB(F,[h,E7(d),CL(j),f.bIC.data[0],f.bI$]);g=FJ(i.a5e(b,l));if(g){f.bNN=g;break e;}}f:{g:{FM(f.bIC.data[0],f.bSO);f.bI$.data[0]=1;switch(e){case 1:break g;case 2:break f;case 8:break;default:break e;}I(E(7135));I(E(7136));I(E(7137));break e;}d=f.bIC.data[0].bGU;b=c.bJt.bHg;d.bGG=b.bGG;f.bNN=1;b.bGG=b.bGG-1.0;break e;}if(f.bNN!=4){f.bIC.data[0].bGU.bGG=c.bJt.bHg.bGG;break e;}f.bIC.data[0].bGT.bGG +=c.bJt.bHg.bGG;break e;}catch($$e){$$je=P($$e);b=$$je;break a;}}Ee(E(7082),E(7083));return;}Ee(E(7082),E(7083));J(b);},B4M=b=>{LP();return Vn(b)/2.0;},BCE=(b,c,d,e,f,g)=>{let h,i,j,k,l,$$je;LP();N_(E(7138),E(7139));a:{try{h=BZ(d);if((E5(d)).bZl)A6w(d,DhB(BZ(d),Cg(d),E5(d)));i=JW(h)===null?null:(JW(h)).bQu.clz;Cd(c.bKR.bHg,AS9(Dh(h),(E5(d)).bHg));if(g){I(E(7140));I(E(7141));I(E(7142));I(E(7143));}else if(!(E5(d)).bMm)c.bKR.bMm=0;else{c.bKR.bMz=(E5(d)).bMz;c.bKR.bMm=1;}}catch($$e){$$je=P($$e);b=$$je;break a;}b: +{try{Cd(f.cqN,c.bKR.bHg);g=C5(e,1);if(g)break b;if(FH(h))break b;j=(E5(d)).bIG;if(!j)break b;BPr(new AUO);k=PK(f.bSO);if(j&4){f.bNN=4;b=k.bGT;b.bGG=Eh(b.bGG,c.bKR.bHg.bGG);FM(f.bIC.data[0],k);f.bI$.data[0]=1;b=c.bKR.bHg;b.bGG=b.bGG+1.0;}else if(j&1){I(E(7137));I(E(7144));I(E(7145));I(E(7146));I(E(7147));I(E(7089));I(E(7148));I(E(7091));I(E(7116));I(E(7117));I(E(7094));I(E(7095));I(E(7096));I(E(5051));I(E(6508));I(E(7097));I(E(7147));I(E(7146));I(E(7098));I(E(7148));I(E(7099));I(E(7116));I(E(7117));I(E(7100));I(E(7095));I(E(7096));I(E(7101));I(E(7103));I(E(7149));} +else if(j&8){I(E(7150));I(E(7151));I(E(7152));I(E(7153));I(E(7109));I(E(7110));I(E(7154));}else{f.bNN=2;k.bGT.bGH=c.bKR.bHg.bGH;k.bGU.bGG=(Dh(h)).bGG+B4M(h);k.bGT.bGG=c.bKR.bHg.bGG;FM(f.bIC.data[0],k);f.bI$.data[0]=1;b=c.bKR.bHg;b.bGH=b.bGH+1.0;}while(QH(d)){d=I2(d);}if(h!==BZ(d))I(E(7133));else (E5(d)).bQb=0;f.bNN=j;}catch($$e){$$je=P($$e);b=$$je;break a;}Ee(E(7138),E(7139));return;}c:{try{if(e!=2)break c;if(!(E5(d)).bIG)break c;I(E(7105));I(E(7106));I(E(7107));I(E(7155));I(E(7109));I(E(7110));I(E(7156));I(E(5044));I(E(7111));I(E(7112));I(E(7145));I(E(7113));I(E(7157));I(E(7115));I(E(7158));I(E(7116));I(E(7117));I(E(7094));I(E(7095));I(E(7096));I(E(7118));I(E(5051));I(E(6508));I(E(7119));I(E(7120));I(E(7121));I(E(5051));I(E(7149));I(E(5044));I(E(7123));I(E(7159));I(E(7112));I(E(7117));I(E(7160));I(E(5051));I(E(6508));I(E(7093));I(E(7161));I(E(5051));I(E(7109));I(E(7110));I(E(7154));I(E(5044));I(E(5045));I(E(7162));I(E(7112));I(E(7117));I(E(7160));I(E(5051));I(E(6508));I(E(7093));I(E(7163));I(E(5051));I(E(7109));I(E(7110));I(E(7164));I(E(5044));I(E(7131));I(E(7165));I(E(7104));I(E(5293));I(E(7133));I(E(7134));I(E(6784));break c;} +catch($$e){$$je=P($$e);b=$$je;break a;}}d:{try{if(g){j=f.bNN;break d;}j=4;break d;}catch($$e){$$je=P($$e);b=$$je;break a;}}e:{try{if(i!==null){l=BB(F,[h,E5(d),CL(j),f.bIC.data[0],f.bI$]);g=FJ(i.a5e(b,l));if(g){f.bNN=g;break e;}}f:{g:{FM(f.bIC.data[0],f.bSO);f.bI$.data[0]=1;switch(e){case 1:break;case 2:break f;case 8:break g;default:break e;}b=f.bIC.data[0].bGT;c=c.bKR.bHg;b.bGG=c.bGG;f.bNN=4;c.bGG=c.bGG+1.0;break e;}I(E(7166));I(E(7167));I(E(7084));I(E(5057));}if(f.bNN!=4){f.bIC.data[0].bGU.bGG=c.bKR.bHg.bGG;break e;}f.bIC.data[0].bGT.bGG +=c.bKR.bHg.bGG;break e;}catch($$e){$$je=P($$e);b=$$je;break a;}}Ee(E(7138),E(7139));return;}Ee(E(7138),E(7139));J(b);},EaU=(b,c)=>{let d,e,f,g,$$je;LP();N_(E(7168),E(7169));d=Ca(8).data;d[0]=12;d[1]=4;d[2]=6;d[3]=2;d[4]=3;d[5]=1;d[6]=9;d[7]=8;e=K(Ib(AGK),8).data;e[0]=Ey([11,12,13,14,15,16,17,18]);e[1]=Ey([21,22,23,24,25,26,27,28]);e[2]=Ey([31,32,33,34,35,36,37,38]);e[3]=Ey([41,42,43,44,45,46,47,48]);e[4]=Ey([51,52,53,54,55,56,57,58]);e[5]=Ey([61,62,63,64,65,66,67,68]);e[6]=Ey([71,72,73,74,75,76,77,78]);e[7] +=Ey([81,82,83,84,85,86,87,88]);a:{b:{try{f=0;c:{d:{while(f<8){if(c==d[f])break d;f=f+1|0;}f=(-1);break c;}}c=0;e:{f:{while(c<8){if(b==d[c])break f;c=c+1|0;}c=(-1);break e;}}}catch($$e){$$je=P($$e);g=$$je;break b;}g:{try{if(c>=0&&f>=0)break g;}catch($$e){$$je=P($$e);g=$$je;break b;}Ee(E(7168),E(7169));return 0;}try{b=e[c].data[f];break a;}catch($$e){$$je=P($$e);g=$$je;break b;}}Ee(E(7168),E(7169));J(g);}Ee(E(7168),E(7169));return b;},FpY=b=>{let c;LP();I(E(7170));I(E(7171));I(E(5253));I(E(7172));I(E(6867));I(E(6868));I(E(7173));I(E(7174));I(E(7175));I(E(7176));I(E(7177));I(E(7178));I(E(7179));I(E(7180));I(E(7181));I(E(7182));I(E(7183));I(E(7184));I(E(7185));I(E(7186));I(E(7187));I(E(7188));I(E(7189));I(E(7190));I(E(7191));I(E(7192));I(E(7193));I(E(7194));I(E(7195));I(E(7196));I(E(5219));I(E(7197));I(E(5219));I(E(5035));I(E(7198));I(E(7199));I(E(5600));I(E(7200));I(E(7201));I(E(7202));I(E(7203));I(E(7204));I(E(7205));I(E(7206));I(E(7207));I(E(7208));I(E(7209));I(E(7210));I(E(7211));I(E(7212));I(E(7213));I(E(7214));I(E(7215));I(E(7216));I(E(7217));I(E(7218));I(E(7219));I(E(7220));I(E(7221));I(E(7222));I(E(5658));I(E(7223));I(E(5035));I(E(5037));c +=new BV;X(c);J(c);},ClW=b=>{let c;LP();I(E(5554));I(E(7224));I(E(7225));I(E(5253));I(E(7173));I(E(7226));I(E(7172));I(E(6867));I(E(6868));I(E(7175));I(E(7176));I(E(7177));I(E(7178));I(E(7179));I(E(7227));I(E(7181));I(E(7182));I(E(7183));I(E(7184));I(E(7185));I(E(7186));I(E(7187));I(E(7188));I(E(7189));I(E(7190));I(E(7191));I(E(7192));I(E(7193));I(E(7194));I(E(7195));I(E(7228));I(E(7229));I(E(5219));I(E(7230));I(E(7231));I(E(5219));I(E(7232));I(E(7233));I(E(5219));I(E(7234));I(E(7233));I(E(5219));I(E(7235));I(E(7236));I(E(7237));I(E(7238));I(E(7239));I(E(7240));I(E(7241));I(E(5219));I(E(7242));I(E(7243));I(E(5219));I(E(7244));I(E(7245));I(E(5219));I(E(7246));I(E(7247));I(E(5219));I(E(7248));I(E(7249));I(E(7250));I(E(7251));I(E(5219));I(E(5067));I(E(5219));I(E(5035));I(E(7252));I(E(7253));I(E(5600));I(E(7200));I(E(7201));I(E(7202));I(E(7203));I(E(7254));I(E(7255));I(E(7256));I(E(7257));I(E(7258));I(E(7209));I(E(7210));I(E(7259));I(E(7260));I(E(7261));I(E(5368));I(E(7262));I(E(7263));I(E(5051));I(E(7264));I(E(7265));I(E(5661));I(E(7266));I(E(7267));I(E(5658));I(E(7268));I(E(5035));I(E(7269));I(E(5037));c +=new BV;X(c);J(c);},EO0=(b,c,d,e,f,g,h)=>{let i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,$$je;LP();Bf();try{i=EG();j=EG();k=EG();Ej();l=Ho(1000,G9);m=Bz(c,d);n=Cg(m);o=BC(g/2.0/e,2.0);Cd(k,Dh(n));Cd(i,(E7(m)).bHg);i.bGH=i.bGH+k.bGH;i.bGG=i.bGG+k.bGG;Cd(j,(E5(m)).bHg);j.bGH=j.bGH+k.bGH;g=j.bGG+k.bGG;j.bGG=g;p=!(i.bGG>=g)?(-1):1;a:{b:{q=Kv(n);r=0.0;switch(EaU((E7(m)).bIG,(E5(m)).bIG)){case 32:case 65:break b;default:}break a;}if(i.bGG===j.bGG)p= -p|0;}s=Eh(q,3.0*(k.bGH+q-i.bGH));t=Eh(q,3.0*(k.bGH+q-j.bGH));u=0;while(uf)q=q+x-f;}ZP(b,w,BZ(w),l,7,h);u=u+1|0;d=v;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Dwu=b=>{let c;LP();I(E(5554));I(E(7270));I(E(7271));I(E(5253));I(E(7272));I(E(7273));I(E(7172));I(E(6867));I(E(6868));I(E(7175));I(E(7176));I(E(7177));I(E(7178));I(E(7274));I(E(7275));I(E(7181));I(E(7182));I(E(7183));I(E(7184));I(E(7185));I(E(7186));I(E(7187));I(E(7188));I(E(7276));I(E(7190));I(E(7277));I(E(7192));I(E(7193));I(E(7194));I(E(7195));I(E(7278));I(E(7279));I(E(7280));I(E(7281));I(E(5219));I(E(7197));I(E(5219));I(E(5035));I(E(7282));I(E(7283));I(E(5600));I(E(7200));I(E(7284));I(E(7202));I(E(7203));I(E(7285));I(E(7286));I(E(7287));I(E(7288));I(E(7289));I(E(7209));I(E(7210));I(E(7290));I(E(7212));I(E(7213));I(E(7214));I(E(7215));I(E(7216));I(E(7217));I(E(7291));I(E(7292));I(E(7220));I(E(7293));I(E(7294));I(E(5658));I(E(7223));I(E(5035));I(E(5037));c +=new BV;X(c);J(c);},Eva=b=>{let c,d,$$je;LP();Bf();try{a:{b:{c=DW(b);if(!(!(E7(b)).bIQ&&!(E5(b)).bIQ)){if(!((E7(b)).bIG&8)&&!((E5(b)).bIG&8)){if((E7(b)).bIG!=(E5(b)).bIG)break b;if(!((E7(b)).bIG&5))break b;}d=0;break a;}}d=18;if(c!==null)d=18.0+(!KL(H9(BZ(b)))?c.bHT.bGH:c.bHT.bGG)|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},E4l=(b,c,d,e,f,g,h,i)=>{let j,$$je;LP();Bf();try{a:{b:{j=Bz(d,e);if(!(!(E7(j)).bIQ&&!(E5(j)).bIQ)){if((E7(j)).bIG&8)break b;if((E5(j)).bIG&8)break b;if((E7(j)).bIG==(E5(j)).bIG&&(E7(j)).bIG +&5)break b;}EO0(b,d,e,f,g,h,i);break a;}if(!((E7(j)).bIG&8)&&!((E5(j)).bIG&8)){if((E7(j)).bIG&4){ClW(BB(F,[d,CL(e),CL(f),DL(g),DL(h),i]));break a;}if((E7(j)).bIG&1){FpY(BB(F,[d,CL(e),CL(f),DL(g),DL(h),i]));break a;}if(Cb0)break a;J(Jk());}if(!(!((E7(j)).bIG&2)&&!((E5(j)).bIG&2)))ClW(BB(F,[d,CL(e),CL(f),DL(g),DL(h),i]));else Dwu(BB(F,[d,CL(e),CL(f),DL(g),DL(h),i]));}}catch($$e){$$je=P($$e);b=$$je;J(b);}},EUK=(b,c)=>{let $$je;LP();Bf();try{b=Fo(FoF(b,c));}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},FoF=(b, +c)=>{let d,e,f,g,h,i,j,$$je;LP();d=ANE(b)&14;e=new FB;CJ(e);f=new FB;CJ(f);g=new FB;CJ(g);h=new FB;CJ(h);i=K7(c);Bf();a:{b:{try{j=Buy();A6l(j,Y(i.bIY,0));if(j.bVo)I(E(7295));else Cd(g,Y(j.bK7,0));A6l(j,Y(i.bIY,i.bPl-1|0));if(j.bWc){I(E(7296));break a;}Cd(h,Y(j.bK7,j.bPR-1|0));break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}if(BHl(g,h,BrG))I(E(7297));else if(d!=10&&d!=4)I(E(7298));else{e.bGH=(h.bGH+g.bGH)/2.0;e.bGG=(g.bGG+h.bGG)/2.0;b=K7(c);Hz();c:{try{b=Fo(Fr5(b,Fo(e)));break c;}catch($$e){$$je=P($$e);b +=$$je;}J(b);}Cd(f,b);}return f;},AVO=b=>{let c,$$je;LP();Bf();try{while(true){c=K7(b);if(c!==null)break;if(!QH(b))break;b=I2(b);}if(c===null)I(E(7299));}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},Dtc=()=>{Cb0=0;}; +function CDV(){let a=this;CA.call(a);a.cHn=null;a.c5i=0;} +let Fqa=a=>{CJ(a);a.cHn=Gm();},D0k=()=>{let a=new CDV();Fqa(a);return a;}; +function C8H(){let a=this;CA.call(a);a.bU_=null;a.bXG=null;} +let E_D=a=>{CJ(a);a.bU_=Gm();},CQM=()=>{let a=new C8H();E_D(a);return a;},CSj=(a,b)=>{let c;c=b;FM(a.bU_,c.bU_);a.bXG=c.bXG;},CVE=a=>{let b;b=CQM();FM(b.bU_,a.bU_);b.bXG=a.bXG;return b;},CAb=N(),CR7=0,Pq=()=>{Pq=Z(CAb);DKw();},C0B=b=>{let $$je;Pq();Bf();try{if(GU(b)!==null&&!EWJ(GU(b)))b=Bz(PQ(GU(b)),CD(b));}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},Cxm=(b,c,d,e)=>{let f,g,h,i,$$je;Pq();Bf();a:{b:{c:{try{f=(Y(B7(b),c)).bG3;if(e<=0)break c;g=(Y(B7(b),c)).bG$-1|0;while(g>d){h=Bz(f,g);Tu(h,(g+e|0)-1|0);E_(f, +DN(h),h);g=g+(-1)|0;}i=d+1|0;}catch($$e){$$je=P($$e);b=$$je;break a;}d=d+e|0;while(true){try{if(i>=d)break b;E_(f,i,null);i=i+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}}try{i=(d-e|0)+1|0;while(i<(Y(B7(b),c)).bG$){h=Bz(f,i);Tu(h,(i+e|0)-1|0);E_(f,DN(h),h);i=i+1|0;}d=((Y(B7(b),c)).bG$+e|0)-1|0;while(true){if(d>=(Y(B7(b),c)).bG$)break b;E_(f,d,null);d=d+1|0;}}catch($$e){$$je=P($$e);b=$$je;break a;}}try{(Y(B7(b),c)).bG$=((Y(B7(b),c)).bG$+e|0)-1|0;}catch($$e){$$je=P($$e);b=$$je;break a;}return;}J(b);},EbQ +=(b,c)=>{let d,$$je;Pq();Bf();try{Cxm(b,CD(c),DN(c),2);d=Z6(b);AHe(d,Ng(c));U$(d,Kv(c));P4(d,CD(c));I(E(7300));I(E(5831));I(E(5037));J(Gw());}catch($$e){$$je=P($$e);b=$$je;}J(b);},DUc=(b,c,d,e,f)=>{let g,h,i,$$je;Pq();Bf();a:{try{if(!CR7&&CD(b)>=CD(c))J(Jk());}catch($$e){$$je=P($$e);b=$$je;break a;}b:{try{if(Cg(e)!==b)break b;if(BZ(e)!==c)break b;}catch($$e){$$je=P($$e);b=$$je;break a;}return;}c:{d:{try{if(ADM(e)<=1)break d;}catch($$e){$$je=P($$e);b=$$je;break a;}e:{try{RP(d,null);if((CD(c)-CD(b)|0)!=1)break e;g +=AKs(b,c);if(g===null)break e;if(!ASO(d,g))break e;AMQ(d,g);if(!FH(b)&&!FH(c))AE0(d);}catch($$e){$$je=P($$e);b=$$je;break a;}return;}try{h=CD(b);g=b;while(true){if(h>=CD(c))break c;i=h>=(CD(c)-1|0)?c:EbQ(HP(b),BZ(e));RM(YN(g,i,d),f);AHp(e,ADM(e)-1|0);e=Bz((D7(BZ(e))).bGS,0);h=h+1|0;g=i;}}catch($$e){$$je=P($$e);b=$$je;break a;}}f:{try{if((CD(c)-CD(b)|0)!=1)break f;e=AKs(b,c);if(!(e!==null&&ASO(d,e))){RP(d,null);e=YN(b,c,d);RM(e,f);break f;}RP(d,e);RM(e,f);AHp(e,ADM(e)+1|0);if(FH(b))break f;if(FH(c))break f;AE0(d);break f;} +catch($$e){$$je=P($$e);b=$$je;break a;}}try{if((CD(c)-CD(b)|0)<=1)break c;if(Cg(e)!==b){RP(d,null);b=YN(b,BZ(e),d);RP(d,b);A67(e);e=b;}while(CD(BZ(e))!=CD(c)){e=Bz((D7(BZ(e))).bGS,0);}if(BZ(e)===c)break c;RM(YN(Cg(e),c,d),f);A67(e);break c;}catch($$e){$$je=P($$e);b=$$je;break a;}}return;}J(b);},CSV=(b,c,d,e)=>{let f,g,h,$$je;Pq();Bf();try{f=C0B(c);g=C0B(d);h=!(f===c&&g===d)?5:1;DUc(f,g,e,H7(e),h);}catch($$e){$$je=P($$e);b=$$je;J(b);}},DGj=(b,c)=>{let d,e,f,g,h,i,$$je;Pq();Bf();try{d=HP(c);e=IV(b,c);while(e!== +null){f=null;g=Eu1(b,d,e);while(g!==null){h=D5j(b,d,g,e);if(!ABv(b,c,g)){i=A_X(g);if(Cfq(f,i)){if(CD(Cg(i))==CD(BZ(i)))RP(i,f);else RP(i,null);if(H7(f)!==null){AZK(c,i,H7(f),0);CEh(i);}}else if(CD(Cg(i))!=CD(BZ(i))){if(CD(BZ(i))<=CD(Cg(i))){CSV(d,BZ(i),Cg(i),i);f=i;}else{CSV(d,Cg(i),BZ(i),i);f=i;}}else{g=Dyo(Cg(i),BZ(i));if(g===null){BZ2(d,i);f=i;}else if(i!==g){CEh(i);if(H7(i)===null)AMQ(i,g);}}}g=h;}e=I4(b,c,e);}}catch($$e){$$je=P($$e);b=$$je;J(b);}},EmQ=b=>{let c,d,e,f,g,h,i,$$je;Pq();Bf();try{c=HP(b);if +(D5(b)>0)(Y(B7(c),D5(b)-1|0)).bNS=0;d=D5(b);while(d<=D9(b)){e=(Y(B7(b),d)).bG$;f=DN(Bz(PQ(b),d));Cxm(c,d,f,e);g=0;h=f;while(g<(Y(B7(b),d)).bG$){i=Bz((Y(B7(b),d)).bG3,g);E_((Y(B7(c),d)).bG3,h,i);e=h+1|0;Tu(i,h);if(FH(i)==1)i.bWb=Hd(c);CLS(b,i);BSc(c,i);AQK(c,Bbo(c)+1|0);g=g+1|0;h=e;}(Y(B7(b),d)).bG3=L5((Y(B7(c),d)).bG3,f);(Y(B7(c),d)).bNS=0;d=d+1|0;}if(d{let c,d,e,$$je;Pq();Bf();try{c=D5(b);while(c<=D9(b)){d=Bz(PQ(b),c);while(true) +{e=Bz((D7(d)).bGS,0);if(e===null)break;A67(e);}while(true){e=Bz((Gv(d)).bGS,0);if(e===null)break;A67(e);}CLS(HP(b),d);E_(PQ(b),c,null);c=c+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},EMa=(b,c)=>{let $$je;Pq();Bf();try{CMc(b,c);(I_(c)).bKy=1;E_((I_(c)).bK6,0,GV(c));CCN(b,c);CJ1(b,c,0);EmQ(c);DGj(b,c);E3u(c);}catch($$e){$$je=P($$e);b=$$je;J(b);}},C7I=(b,c)=>{let d,e,f,g,h,i,$$je;Pq();Bf();try{d=IV(b,c);while(d!==null){if(RJ(d)==7)Dej(d);ABI(d,null);d=I4(b,c,d);}e=1;while(e<=GA(c)){f=Bz(HC(c),e);g=IV(b,f);while +(g!==null){d=I4(b,f,g);if(RJ(g)){I(E(5364));I(E(7301));I(E(7302));I(E(7303));I(E(5499));}DRQ(g,A$E(f));ABI(g,f);Bxk(g,7);h=Mx(b,f,g);while(h!==null){a:{g=H7(h);if(g!==null)while(true){if(g===null)break a;i=BZ(g);if(FH(i)!=1)break a;ABI(i,f);g=Bz((D7(BZ(g))).bGS,0);}}h=MU(b,f,h);}g=d;}e=e+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},D2X=(b,c,d)=>{let e,f,g,h,i,$$je;Pq();Bf();try{e=null;f=D9(d)+2|0;Ej();Ft2(d,SE(f,R$));f=D5(d);while(f<=D9(d)){g=Z6(c);E_(PQ(d),f,g);P4(g,f);Bxk(g,7);ABI(g,d);if(e!==null){h=YN(e, +g,null);AQ2(h,Rd(h)*1000|0);}f=f+1|0;e=g;}g=IV(b,d);while(g!==null){i=Bz(PQ(d),CD(g));AA0(i,AEX(i)+1|0);h=Mx(b,d,g);while(h!==null){f=CD(Cg(h));while(f1)AA0(i,AEX(i)-1|0);f=f+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},D25=(b,c,d,e,f)=>{let g,h,i,j,$$je;Pq();Bf();try{g=GU(d);h=D6i(g);i=e+1|0;if(h!=i){h=D5(g);while(h<=D9(g)){CZg(b,c,Bz(PQ(g),h));h=h+1|0;}j=D5(g);while +(j<=D9(g)){DhO(f,Bz(PQ(g),j),e);j=j+1|0;}DOU(g,i);}}catch($$e){$$je=P($$e);b=$$je;J(b);}},BWc=(b,c)=>{let d,e,f,g,$$je;Pq();Bf();try{d=IV(b,c);while(d!==null){ABI(d,null);e=Mx(b,c,d);while(e!==null){a:{f=H7(e);if(f!==null)while(true){if(f===null)break a;g=BZ(f);if(FH(g)!=1)break a;ABI(g,null);f=Bz((D7(BZ(f))).bGS,0);}}e=MU(b,c,e);}d=I4(b,c,d);}Cr9(b,c);}catch($$e){$$je=P($$e);b=$$je;J(b);}},Cr9=(b,c)=>{let d,e,f,g,h,$$je;Pq();Bf();try{d=1;while(d<=GA(c)){Cr9(b,Bz(HC(c),d));d=d+1|0;}e=IV(b,c);while(e!==null) +{if(GU(e)===null)ABI(e,c);f=Mx(b,c,e);while(f!==null){a:{g=H7(f);if(g!==null)while(true){if(g===null)break a;h=BZ(g);if(FH(h)!=1)break a;if(GU(h)===null)ABI(h,c);g=Bz((D7(BZ(g))).bGS,0);}}f=MU(b,c,f);}e=I4(b,c,e);}}catch($$e){$$je=P($$e);b=$$je;J(b);}},DKw=()=>{CR7=0;},B9F=N(),B4B=0,YP=()=>{YP=Z(B9F);EO_();},Duy=(b,c,d)=>{let e,f,g,h,$$je;YP();Bf();try{e=(Y(B7(b),c)).bG$+2|0;f=(Y(B7(b),c)).bG3;Ej();g=Ur(e,f,R$);(Y(B7(b),c)).bG3=g;h=(Y(B7(b),c)).bG$;while(h>d){E_(g,h,Bz(g,h-1|0));Tu(Bz(g,h),DN(Bz(g,h))+1|0);h +=h+(-1)|0;}f=Z6(b);E_(g,d,f);Tu(f,d);P4(f,c);b=Y(B7(b),c);c=b.bG$+1|0;b.bG$=c;E_(g,c,null);b=Bz(g,d);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},CvT=(b,c,d,e)=>{let f,g,h,$$je;YP();Bf();try{f=DN(b);g=DN(c);if(f<=g){h=g;g=f;f=h;}d=d.data;e=e.data;d[0]=g;e[0]=f;}catch($$e){$$je=P($$e);b=$$je;J(b);}},CfP=(b,c,d,e)=>{let f,g,h,i,j,k,l,m,$$je;YP();Bf();try{a:{f=Ca(1);g=Ca(1);if(FH(b)==1){h=DN(b);if((Gv(b)).bG8){i=0;j=0;k=i;while(true){l=Bz((D7(b)).bGS,j);if(l===null)break;f=d.data;if(DN(BZ(l))<=f[0])k=1;else +{f=e.data;if(DN(BZ(l))>=f[0])i=1;}j=j+1|0;}if(k&&!i)c.data[0]=h+1|0;if(i&&!k)c.data[1]=h-1|0;}else{if(!B4B&&(D7(b)).bG8!=2)J(Jk());m=g.data;d=d.data;CvT(BZ(Bz((D7(b)).bGS,0)),BZ(Bz((D7(b)).bGS,1)),f,g);if(m[0]<=d[0]){c=c.data;c[0]=h;c[2]=h;}else{f=f.data;e=e.data;if(f[0]>=e[0]){c=c.data;c[1]=h;c[3]=h;}else if(!(f[0]e[0])){b:{if(f[0]>=d[0]){if(f[0]!=d[0])break b;if(m[0]>=e[0])break b;}c.data[2]=h;}if(m[0]<=e[0]){if(m[0]!=e[0])break a;if(f[0]<=d[0])break a;}c.data[3]=h;}}}}}}catch($$e){$$je=P($$e);b +=$$je;J(b);}},Dy4=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,$$je;YP();Bf();try{d=Ca(1);e=Ca(1);f=Ca(4);g=CD(Cg(c))-1|0;if(g<0){h=CR();ZY(H(h,E(7304)),g);NS(CH(h));}i=f.data;h=(Y(B7(b),g)).bG3;j=0;k=(Y(B7(b),g)).bG$-1|0;i[2]=(-1);i[0]=(-1);l=k+1|0;i[3]=l;i[1]=l;CvT(Cg(c),BZ(c),d,e);a:{while(true){g=C5(j,k);if(g>0)break a;CfP(Bz(h,j),f,d,e);if(g)CfP(Bz(h,k),f,d,e);j=j+1|0;k=k+(-1)|0;if((i[1]-i[0]|0)<=1)break;}}m=i[0]>i[1]?((i[2]+i[3]|0)+1|0)/2|0:((i[0]+i[1]|0)+1|0)/2|0;}catch($$e){$$je=P($$e);b=$$je;J(b);}return m;},Cf5 +=b=>{let c,d,e,f,g,h,i,j,k,l,m,$$je;YP();Bf();a:{b:{try{c=EG();d=b.bYR;e=CR();H(H(e,E(7305)),d);d=CH(e);}catch($$e){$$je=P($$e);b=$$je;break b;}c:{try{NS(d);if(DW(b)!==null)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}d:{try{d=HP(Cg(b));f=CD(Cg(b));g=Dy4(d,b);e=B7(d);h=f-1|0;e=Bz((Y(e,h)).bG3,0);if(e!==null){i=(Dh(e)).bGG-(Y(B7(d),h)).bLf|0;break d;}i=(Dh(Bz((Y(B7(d),f)).bG3,0))).bGG+(Y(B7(d),f)).bKQ+Bb6(d)|0;break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}e:{try{j=Duy(d,h,g);Cd(c,(DW(b)).bHT);if +(!KL(d))break e;k=c.bGH;c.bGH=c.bGG;c.bGG=k;break e;}catch($$e){$$je=P($$e);b=$$je;break b;}}f:{try{ASN(j,c.bGG);l=Vn(j)/2.0|0;U$(j,c.bGH/2.0);AHe(j,c.bGH/2.0);B4p(j,DW(b));(Dh(j)).bGG=i+l|0;e=YN(j,Cg(b),b);(E7(e)).bHg.bGH= -Ng(j);(E5(e)).bHg.bGH=Kv(Cg(b));RM(e,4);c=YN(j,BZ(b),b);(E7(c)).bHg.bGH=Kv(j);(E5(c)).bHg.bGH=Ng(BZ(b));RM(c,4);k=(Y(B7(d),h)).bLf;m=l;if(!(k{let c,d,e,$$je;YP();Bf();try{if(!B4B&&D5(b))J(Jk());c=D9(b)+3|0;d=B7(b);Ej();CBt(b,IQ(UX(c,d,A6R),1));e=D9(b);while(e>=0){DFc(Y(B7(b),e),Y(B7(b),e-1|0));e=e+(-1)|0;}(Y(B7(b),e)).bG$=0;(Y(B7(b),e)).bUy=0;(Y(B7(b),e)).bG3=SE(2,R$);(Y(B7(b),e)).b3e=(Y(B7(b),e)).bG3;(Y(B7(b),e)).bZC=null;(Y(B7(b),e)).bLf=1.0;(Y(B7(b),e)).bKQ=1.0;(Y(B7(b),e)).b5K=1.0;(Y(B7(b),e)).b5L=1.0;ASk(b,D5(b)-1|0);}catch($$e) +{$$je=P($$e);b=$$je;J(b);}},CsV=b=>{let c,d,e,f,g,h,i,j,$$je;YP();Bf();try{c=b.bYR;d=CR();H(H(d,E(7306)),c);NS(CH(d));c=Cg(b);d=BZ(b);if(DN(c)>=DN(d)){e=DN(d);f=DN(c);}else{e=DN(c);f=DN(d);}g=IQ(B7(HP(c)),CD(c));h=e+1|0;a:{while(true){i=C5(h,f);if(i>=0)break a;j=Bz((Y(g,0)).bG3,h);if(FH(j)==1&&J8(j)!==null)break a;if(!FH(j))break;h=h+1|0;}}b:{if(!i)while(true){CV2(b,1);b=H7(b);if(b===null)break b;}}}catch($$e){$$je=P($$e);b=$$je;J(b);}},FtF=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,$$je;YP();Bf();a:{try{d=0;e=0;f=GV(c);while +(f!==null){b:{if((H$(f)).bGS!==null){g=0;while(true){h=Bz((H$(f)).bGS,g);if(h===null)break b;CsV(h);g=g+1|0;}}}g=0;while(g<(Mb(f)).bG8){h=Bz((Mb(f)).bGS,g);if(CD(BZ(h))==CD(Cg(h)))CsV(h);g=g+1|0;}f=GN(f);}c:{if(!((Y(B7(c),0)).bZC===null&&GA(c)<=0)){i=0;d:{while(true){f=Bz((Y(B7(c),0)).bG3,i);if(f===null)break c;g=0;e:{f:{while(true){h=Bz((YJ(f)).bGS,g);if(h===null)break;if(DW(h)!==null&&!Zu(h))break f;g=g+1|0;}break e;}DlX(c);e=1;}if(e)break d;g=0;g:{h:{while(g<(Mb(f)).bG8){h=Bz((Mb(f)).bGS,g);if(Cg(h)!==BZ(h) +&&CD(Cg(h))==CD(BZ(h))&&DW(h)!==null&&!Zu(h))break h;g=g+1|0;}break g;}DlX(c);e=1;}if(e)break;i=i+1|0;}break c;}}}CEj(c);f=GV(c);}catch($$e){$$je=P($$e);b=$$je;break a;}while(true){try{if(f===null)break;i:{if((H$(f)).bGS!==null){j=0;while(true){if(Bz((H$(f)).bGS,j)===null)break i;Bz((H$(f)).bGS,j);j=j+1|0;}}}j=0;while(j<(Mb(f)).bG8){Bz((Mb(f)).bGS,j);j=j+1|0;}if((H$(f)).bGS!==null){i=0;while(true){h=Bz((H$(f)).bGS,i);if(h===null)break;if(DW(h)!==null){k=h.bYR;g=Zu(h);l=CR();ZY(Et(H(H(l,E(7307)),k),32),g);NS(CH(l));if +(!Zu(h)){NS(E(7308));d=1;Cf5(h);}else if(!KL(c))BZY(h,(DW(h)).bHT.bGH);else BZY(h,(DW(h)).bHT.bGG);}i=i+1|0;}g=0;while(g<(Mb(f)).bG8){l=Bz((Mb(f)).bGS,g);h=l.bYR;k=CR();H(H(k,E(7309)),h);NS(CH(k));if(CD(Cg(l))==CD(BZ(l))&&Cg(l)!==BZ(l)){m=l;while(H7(m)!==null){m=H7(m);}CV2(l,Zu(m));if(DW(l)!==null){h=l.bYR;j=Zu(l);k=CR();ZY(Et(H(H(k,E(7310)),h),32),j);NS(CH(k));n=m.bYR;h=CR();H(H(h,E(7311)),n);NS(CH(h));n=m.bYR;h=CR();H(H(h,E(7312)),n);NS(CH(h));if(!Zu(l)){NS(E(7313));d=1;Cf5(l);}else BZY(m,BC(!KL(c)?(DW(l)).bHT.bGH +:(DW(l)).bHT.bGG,Ca8(m)));}}g=g+1|0;}}f=GN(f);continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}j:{try{if(!d)break j;BS4(b,c);break j;}catch($$e){$$je=P($$e);b=$$je;break a;}}return d;}J(b);},EO_=()=>{B4B=0;},Cgi=N(),Fkx=null,BZV=()=>{BZV=Z(Cgi);EdT();},E5_=b=>{let c;BZV();I(E(7314));I(E(5253));I(E(7315));I(E(7316));I(E(7317));I(E(6784));I(E(7318));I(E(7319));I(E(7320));I(E(7321));I(E(7322));I(E(5499));I(E(7323));I(E(7324));I(E(7325));I(E(7326));I(E(7327));I(E(5051));I(E(7328));I(E(7329));I(E(5044));I(E(5035));I(E(7330));I(E(7331));I(E(7320));I(E(7321));I(E(7332));I(E(5499));I(E(7323));I(E(7324));I(E(7325));I(E(7333));I(E(7327));I(E(5051));I(E(7328));I(E(7334));I(E(5044));I(E(7335));I(E(5035));I(E(7336));I(E(7337));I(E(6784));I(E(5035));I(E(6735));I(E(7338));I(E(5037));c +=new BV;X(c);J(c);},EdT=()=>{Fkx=new A5Y;},Dp1=N(),Dbd=null,IK=()=>{IK=Z(Dp1);EAH();},Czb=(b,c)=>{let d,e,f,g,$$je;IK();Bf();try{if(BaL(c)){I(E(7339));I(E(7340));}ATt(c,b.bN4.bG8);d=b.bN4;e=d.bGS;f=d.bG8;d.bG8=f+1|0;E_(e,f,c);if(!N0(Cg(c))){d=b.bVg;e=d.bK6;g=d.bKy;d.bKy=g+1|0;E_(e,g,Cg(c));}if(!N0(BZ(c))){b=b.bVg;d=b.bK6;g=b.bKy;b.bKy=g+1|0;E_(d,g,BZ(c));}d=Cg(c);PE(d,1);b=(IE(d)).bGS;e=IE(d);g=e.bG8;e.bG8=g+1|0;E_(b,g,c);E_((IE(d)).bGS,(IE(d)).bG8,null);if(Bz((D7(d)).bGS,(IE(d)).bG8-1|0)===null){I(E(7341));I(E(7340));}b +=BZ(c);PE(b,1);d=(Is(b)).bGS;e=Is(b);g=e.bG8;e.bG8=g+1|0;E_(d,g,c);E_((Is(b)).bGS,(Is(b)).bG8,null);if(Bz((Gv(b)).bGS,(Is(b)).bG8-1|0)===null){I(E(7342));I(E(7340));}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Ede=(b,c,d)=>{let e,f,g,h,$$je;IK();Bf();try{ATt(d,O$(c));E_(b.bN4.bGS,O$(c),d);ATt(c,(-1));e=Cg(c);(IE(e)).bG8=(IE(e)).bG8-1|0;f=(IE(e)).bG8;g=0;a:{while(true){if(g>f)break a;if(Bz((IE(e)).bGS,g)===c)break;g=g+1|0;}}E_((IE(e)).bGS,g,Bz((IE(e)).bGS,f));E_((IE(e)).bGS,f,null);b=BZ(c);(Is(b)).bG8=(Is(b)).bG8 +-1|0;f=(Is(b)).bG8;h=0;b:{while(true){if(h>f)break b;if(Bz((Is(b)).bGS,h)===c)break;h=h+1|0;}}E_((Is(b)).bGS,h,Bz((Is(b)).bGS,f));E_((Is(b)).bGS,f,null);b=Cg(d);E_((IE(b)).bGS,(IE(b)).bG8,d);(IE(b)).bG8=(IE(b)).bG8+1|0;E_((IE(b)).bGS,(IE(b)).bG8,null);b=BZ(d);E_((Is(b)).bGS,(Is(b)).bG8,d);(Is(b)).bG8=(Is(b)).bG8+1|0;E_((Is(b)).bGS,(Is(b)).bG8,null);}catch($$e){$$je=P($$e);b=$$je;J(b);}},EeV=b=>{let c,d,e,f,g,h,$$je;IK();Bf();try{c=CpO(b.bRw);d=0;e=GV(b.bMS);while(e!==null){if(!AZa(e))A$m(c,e);e=GN(e);}while +(true){f=B3t(c);if(f===null)break;P4(f,0);d=d+1|0;g=0;while(true){e=Bz((Gv(f)).bGS,g);if(e===null)break;P4(f,DT(CD(f),CD(Cg(e))+RF(e)|0));g=g+1|0;}h=0;while(true){e=Bz((D7(f)).bGS,h);if(e===null)break;BJl(BZ(e),AZa(BZ(e))-1|0);if(AZa(BZ(e))<=0)A$m(c,BZ(e));h=h+1|0;}}a:{if(d!=b.bRw){NS(E(7343));b=GV(b.bMS);while(true){if(b===null)break a;AZa(b);b=GN(b);}}}CjO(c);}catch($$e){$$je=P($$e);b=$$je;J(b);}},Doj=b=>{let $$je;IK();Bf();a:{b:{c:{d:{try{if(N0(Cg(b)))break d;if(!N0(BZ(b)))break c;b=BZ(b);}catch($$e){$$je +=P($$e);b=$$je;break a;}return b;}try{if(N0(BZ(b)))break c;else break b;}catch($$e){$$je=P($$e);b=$$je;break a;}}try{b=null;}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}try{b=Cg(b);}catch($$e){$$je=P($$e);b=$$je;break a;}return b;}J(b);},E0O=b=>{let c,d,e,f,g,$$je;IK();Bf();a:{b:{try{c=null;d=0;e=b.bRi;}catch($$e){$$je=P($$e);b=$$je;break b;}c:{try{while(true){f=b.bRi;g=b.bN4;if(f>=g.bG8)break c;g=Bz(g.bGS,f);if(W8(g)<0){if(c===null)g=Bz(b.bN4.bGS,b.bRi);else if(W8(c)<=W8(g))g=c;d=d+1|0;if(d>=b.cpU)break;c +=g;}b.bRi=b.bRi+1|0;}}catch($$e){$$je=P($$e);b=$$je;break b;}return g;}d:{try{if(e<=0)break d;b.bRi=0;}catch($$e){$$je=P($$e);b=$$je;break b;}e:{try{while(true){f=b.bRi;if(f>=e)break e;g=Bz(b.bN4.bGS,f);if(W8(g)<0){if(c===null)g=Bz(b.bN4.bGS,b.bRi);else if(W8(c)<=W8(g))g=c;d=d+1|0;if(d>=b.cpU)break;c=g;}b.bRi=b.bRi+1|0;}}catch($$e){$$je=P($$e);b=$$je;break b;}return g;}}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return c;},BU1=(b,c)=>{let d,e,f,g,$$je;IK();Bf();try{d=0;while(true){e=Bz((D7(c)).bGS, +d);if(e===null)break;if(BaL(e)){if(Ln(BZ(e))=b.b1b&&b.b5W!==null)){b.b5W=e;b.b1b=f;}}d=d+1|0;}d=0;while(true){g=Bz((Is(c)).bGS,d);if(g===null)break;if(b.b1b<=0)break;if(Ln(Cg(g)){let d,e,f,g,$$je;IK();Bf();try{d=0;while(true){e=Bz((Gv(c)).bGS,d);if(e===null)break;if(BaL(e)){if(Ln(Cg(e))= +b.b1b&&b.b5W!==null)){b.b5W=e;b.b1b=f;}}d=d+1|0;}d=0;while(true){g=Bz((IE(c)).bGS,d);if(g===null)break;if(b.b1b<=0)break;if(Ln(BZ(g)){let d,e,$$je;IK();Bf();try{if(Ln(Cg(c))>=Ln(BZ(c))){d=BZ(c);e=1;}else{d=Cg(c);e=0;}b.b5W=null;b.b1b=2147483647;b.cyD=Rm(d);b.cyK=Ln(d);if(!e)BV2(b,d);else BU1(b,d);b=b.b5W;}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;}; +let BWD=(b,c)=>{let d,e,f,$$je;IK();Bf();a:{b:{try{d=0;}catch($$e){$$je=P($$e);b=$$je;break b;}c:{try{while(true){e=Bz((D7(c)).bGS,d);if(e===null)break c;if(!N0(BZ(e))&&!Zj(e)){Czb(b,e);if(b.bN4.bG8==(b.bRw-1|0))break;if(BWD(b,BZ(e)))break;}d=d+1|0;}}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}try{f=0;}catch($$e){$$je=P($$e);b=$$je;break b;}d:{try{while(true){e=Bz((Gv(c)).bGS,f);if(e===null)break;if(!N0(Cg(e))&&!Zj(e)){Czb(b,e);if(b.bN4.bG8==(b.bRw-1|0))break d;if(BWD(b,Cg(e)))break d;}f=f+1|0;}}catch($$e) +{$$je=P($$e);b=$$je;break b;}return 0;}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return 1;},DuA=b=>{let c,d,e,$$je;IK();Bf();try{c=GV(b.bMS);while(c!==null){PE(c,0);E_((Is(c)).bGS,0,null);E_((IE(c)).bGS,0,null);d=Is(c);(IE(c)).bG8=0;d.bG8=0;c=GN(c);}e=0;while(true){c=b.bN4;if(e>=c.bG8)break;ATt(Bz(c.bGS,e),(-1));e=e+1|0;}d=b.bVg;c.bG8=0;d.bKy=0;c=GV(b.bMS);while(c!==null&&!b.bN4.bG8){BWD(b,c);c=GN(c);}e=b.bVg.bKy;}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},FqV=b=>{let $$je;IK();Bf();try +{BrN(GV(b.bMS),null,1);BTa(GV(b.bMS),null);}catch($$e){$$je=P($$e);b=$$je;J(b);}},Fqg=b=>{let c,d,e,f,g,$$je;IK();Bf();a:{b:{c:{try{if(b.bRw>1)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}d:{try{e:while(true){if(DuA(b)>=b.bRw)break d;c=null;d=GV(b.bMS);while(d!==null){e=0;while(true){f=Bz((D7(d)).bGS,e);if(f===null)break;if(!BaL(f)&&Doj(f)!==null&&!(c!==null&&Zj(f)>=Zj(c)))c=f;e=e+1|0;}d=GN(d);}if(c===null)break;g=Zj(c);if(!g)continue;if(Doj(c)===BZ(c))g= -g|0;e=0;while(true){c=b.bVg;if(e>=c.bKy)continue e;P4(Bz(c.bK6, +e),CD(Bz(b.bVg.bK6,e))+g|0);e=e+1|0;}}}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}try{FqV(b);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return 0;},C1I=(b,c,d,e)=>{let f,$$je;IK();Bf();try{while(!BvJ(Rm(b),Ln(c),Ln(b))){f=A1C(b);if(!(b===Cg(f)?e:e?0:1))AWR(f,W8(f)-d|0);else AWR(f,W8(f)+d|0);if(Ln(Cg(f))<=Ln(BZ(f))){b=BZ(f);continue;}b=Cg(f);}}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},AG5=(b,c)=>{let d,e,$$je;IK();Bf();try{P4(b,CD(b)-c|0);d=0;while(true){e=Bz((IE(b)).bGS,d);if(e===null)break;if +(e!==A1C(b))AG5(BZ(e),c);d=d+1|0;}d=0;while(true){e=Bz((Is(b)).bGS,d);if(e===null)break;if(e!==A1C(b))AG5(Cg(e),c);d=d+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},E$S=(b,c,d)=>{let e,f,g,$$je;IK();Bf();try{e=Zj(d);if(e>0){if(((Is(Cg(c))).bG8+(IE(Cg(c))).bG8|0)==1)AG5(Cg(c),e);else if(((Is(BZ(c))).bG8+(IE(BZ(c))).bG8|0)==1)AG5(BZ(c), -e|0);else if(Ln(Cg(c)){let c,$$je;IK();Bf();try{b.b2q=2147483647;b.b0A=(-2147483647);c=GV(b.bMS);while(c!==null){if(!FH(c)){b.b2q=DO(b.b2q,CD(c));b.b0A=DT(b.b0A,CD(c));}c=GN(c);}if(b.b2q){c=GV(b.bMS);while(c!==null){P4(c,CD(c)-b.b2q|0);c=GN(c);}b.b0A=b.b0A-b.b2q|0;b.b2q=0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Bmb=(b,c)=>{let d,$$je;IK();Bf();try{d=GV(b.bMS);while(d!==null){ASS(Is(d));ASS(IE(d));PE(d,0);d=GN(d);}}catch($$e){$$je=P($$e);b=$$je;J(b);}},DVM=b=> +{let c,d,e,f,$$je;IK();Bf();try{c=0;while(true){d=b.bN4;if(c>=d.bG8)break;d=Bz(d.bGS,c);if(!W8(d)){e=DbN(b,d);if(e!==null){f=Zj(e);if(f>1){if(Ln(Cg(d)){let c,d,e,f,g,h,i,j,k,l,$$je;IK();Bf();a:{try{CPI(b);c=b.b0A;d=Ca(c+1|0);e=0;}catch($$e){$$je=P($$e);b=$$je;break a;}f=d.data;while(true){try{if(e>c)break;f[e]=0;e=e+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}try{g=GV(b.bMS);while +(g!==null){if(!FH(g)){e=CD(g);f[e]=f[e]+1|0;}g=GN(g);}g=GV(b.bMS);while(g!==null){if(!FH(g)){c=0;h=0;i=b.b0A;j=0;k=c;while(true){l=Bz((Gv(g)).bGS,j);if(l===null)break;k=k+LA(l)|0;h=DT(h,CD(Cg(l))+RF(l)|0);j=j+1|0;}j=0;while(true){l=Bz((D7(g)).bGS,j);if(l===null)break;c=c+LA(l)|0;i=DO(i,CD(BZ(l))-RF(l)|0);j=j+1|0;}if(h<0)h=0;if(k==c){c=h+1|0;while(c<=i){if(f[c]{let d,e,f,g,$$je;IK();Bf();try{b.bMS=c;b.bRi=0;b.cy0=0;b.bRw=0;d=GV(c);while(d!==null){PE(d,0);b.bRw=b.bRw+1|0;e=0;while(Bz((D7(d)).bGS,e)!==null){b.cy0=b.cy0+1|0;e=e+1|0;}d=GN(d);}d=b.bVg;e=b.bRw;f=d.bK6;Ej();d.bK6=Ur(e,f,R$);b.bVg.bKy=0;d=b.bN4;d.bGS=Ur(b.bRw,d.bGS,Q_);b.bN4.bG8=0;g=1;b=GV(c);while(b!==null){BJl(b,0);e=0;while(true){c=Bz((Gv(b)).bGS,e);if(c===null)break;BJl(b,AZa(b)+1|0);AWR(c,0);ATt(c,(-1));if(g&&(CD(BZ(c))-CD(Cg(c))|0){let g,$$je;IK();Bf();a:{b:{try{g=0;Me(new H2,E(7345));if(!Fa8(b,c))EeV(b);}catch($$e){$$je=P($$e);b=$$je;break b;}c:{try{if(e>0)break c;Bmb(b,c);}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}d:{try{if(f>=0){b.cpU=f;break d;}b.cpU=30;break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}e:{try{if(!BQC(Dbd))break e;}catch($$e){$$je=P($$e);b=$$je;break b;}return 2;}f: +{try{if(!Fqg(b))break f;Bmb(b,c);}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}g:{try{while(true){c=E0O(b);if(c===null)break g;E$S(b,c,DbN(b,c));g=g+1|0;if(g>=e)break;}break g;}catch($$e){$$je=P($$e);b=$$je;break b;}}h:{try{i:{j:{switch(d){case 1:break;case 2:break j;default:break i;}EuW(b);break h;}DVM(b);break h;}CPI(b);Bmb(b,b.bMS);break h;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return 0;},CP6=(b,c,d,e)=>{let f,$$je;IK();Bf();try{f=GY(b,c,Co(E(7346)));d +=D8l(b,c,d,e,f===null?30:BTA(f));}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},EH9=b=>{let c,d,e,f,g,h,$$je;IK();Bf();try{if(A1C(Cg(b))!==b){c=BZ(b);d=(-1);}else{c=Cg(b);d=1;}e=0;f=0;while(true){g=Bz((D7(c)).bGS,f);if(g===null)break;e=e+C$m(g,c,d)|0;f=f+1|0;}h=0;while(true){g=Bz((Gv(c)).bGS,h);if(g===null)break;e=e+C$m(g,c,d)|0;h=h+1|0;}AWR(b,e);}catch($$e){$$je=P($$e);b=$$je;J(b);}},C$m=(b,c,d)=>{let e,f,g,$$je;IK();Bf();try{e=Cg(b)!==c?Cg(b):BZ(b);if(!BvJ(Rm(c),Ln(e),Ln(c))){f=1;g=LA(b);}else{f=0;g=(!BaL(b) +?0:W8(b))-LA(b)|0;}d=d<=0?(Cg(b)!==c?(-1):1):BZ(b)!==c?(-1):1;if(f)d= -d|0;if(d<0)g= -g|0;}catch($$e){$$je=P($$e);b=$$je;J(b);}return g;},BTa=(b,c)=>{let d,e,$$je;IK();Bf();try{d=0;while(true){e=Bz((IE(b)).bGS,d);if(e===null)break;if(e!==c)BTa(BZ(e),e);d=d+1|0;}d=0;while(true){e=Bz((Is(b)).bGS,d);if(e===null)break;if(e!==c)BTa(Cg(e),e);d=d+1|0;}if(c!==null)EH9(c);}catch($$e){$$je=P($$e);b=$$je;J(b);}},BrN=(b,c,d)=>{let e,f,$$je;IK();Bf();try{DMr(b,c);CaP(b,d);e=0;while(true){f=Bz((IE(b)).bGS,e);if(f===null)break;if +(f!==c)d=BrN(BZ(f),f,d);e=e+1|0;}e=0;while(true){f=Bz((Is(b)).bGS,e);if(f===null)break;if(f!==c)d=BrN(Cg(f),f,d);e=e+1|0;}E_t(b,d);d=d+1|0;}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},E7m=b=>{let c,d;IK();c=GV(b.bMS);while(c!==null){d=0;while(Bz((D7(c)).bGS,d)!==null){if(Zj(Bz((D7(c)).bGS,d))<0)return 1;d=d+1|0;}c=GN(c);}return 0;},EAH=()=>{Dbd=new A5Y;}; +function C6k(){let a=this;F.call(a);a.ca4=null;a.b2J=null;} +let Fqc=(a,b,c)=>{a.ca4=b;a.b2J=c;},BRn=(a,b)=>{let c=new C6k();Fqc(c,a,b);return c;},Djp=b=>{let c,d,e,f,g,h,i,j;c=b.bGQ;d=c.ciH*72.0;e=c.b$D*72.0;b=c.ccm;f=b.bGH;g=b.bGG;h=new Jn;i=d/2.0;j=f+i;d=e/2.0;Kz(h,j,g-d);return BRn(h,BA(f-i,g+d));},Cgx=b=>{let c,d,e;c=b.cCb;b=c.bGT;d=b.bGH;e=b.bGG;b=c.bGU;return BRn(BA(b.bGH,b.bGG),BA(d,e));},DKv=a=>{return a.ca4;},E7r=a=>{return a.b2J;}; +function A9a(){F.call(this);this.bR4=null;} +let Xe=null,SL=()=>{SL=Z(A9a);Exm();},B0a=(a,b)=>{SL();a.bR4=b;},BHc=a=>{let b=new A9a();B0a(b,a);return b;},DUU=a=>{return B7M(CkA(a.bR4));},AOf=(a,b)=>{let c,d,e,f,g;SL();c=Xe;if(b!==c){if(a!==c){c=new A9a;d=a.bR4;b=b.bR4;e=b.bPu;if(e){if(!d.bPu)d=b;else if(e!=1){f=BY$(b);d=BiR(d.bPu+b.bPu|0,d,null,f);}else{g=b.cf_;if(g===null)g=b.cga.data[0];d=B4s(d,g);}}B0a(c,d);return c;}return b;}return a;},ClE=(a,b)=>{let c,d,e,f;c=Bk();d=BiJ(a.bR4);while(d.dY()){e=d.dZ();if(Bj(e.bWB,b)){f=e.b4q;U(c,f);}}return c;},E0g +=(a,b)=>{let c,d;c=BiJ(a.bR4);while(c.dY()){d=c.dZ();if(Bj(d.bWB,b))return d.b4q;}return null;},Exm=()=>{Xe=BHc(Cbp());}; +function Fjf(){let a=this;F.call(a);a.dfc=0;a.dfm=0.0;} +function Dj7(){let a=this;F.call(a);a.cpi=null;a.cIP=null;} +let Dyb=a=>{a.cpi=Dy();a.cIP=Bk();},CXC=()=>{let a=new Dj7();Dyb(a);return a;}; +function Cu3(){let a=this;F.call(a);a.cT7=null;a.c3Q=null;} +function DqH(){let a=this;F.call(a);a.crI=null;a.cPN=null;a.cSP=null;} +let ClA=(a,b)=>{return a.crI.cF(b);},D3U=(a,b)=>{let c;b=(b.h2(Cc(a.cPN))).h2(a.cSP);c=ClA(a,b.hE());(b.h2(J$(2.0,2.0,1.0))).hP(C2(c.bGE,c.bGF));a.crI.cC(b);}; +function BDm(){let a=this;F.call(a);a.cko=null;a.cj5=null;a.ceL=null;a.cnO=null;} +let Btw=0,ANW=()=>{ANW=Z(BDm);Dta();},BzG=b=>{ANW();if(b===null)return BhM();return b;},FoQ=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;e=b.hE();f=a.cko.cF(e);g=a.ceL.cF(e);h=a.cj5.cF(e);i=a.cnO.cF(e);j=BC(h.bGE,f.bGE);k=BC(0.0,c-i.bGE-j-g.bGE);if(Df()){ANW();if(!Btw&&!(k>=0.0)){b=new C4;X(b);J(b);}}l=Eh(i.bGE/4.0,k*0.1);m=(k-l)/2.0;if(Df()){ANW();if(!Btw&&!(m>=0.0)){b=new C4;X(b);J(b);}}if(Df()){ANW();if(!Btw&&!(l>=0.0)){b=new C4;X(b);J(b);}}n=(d-i.bGF)/2.0;a.cnO.cC(b.h2(Bh(m,n)));o=d-h.bGF-f.bGF;p=i.bGE ++(j-h.bGE)/2.0+m+l;q=o/2.0;a.cj5.cC(b.h2(Bh(p,q)));r=i.bGE+(j-f.bGE)/2.0+m+l;s=q+h.bGF;a.cko.cC(b.h2(Bh(r,s)));l=g.bGE;if(l>0.0){t=c-l+4.0;a.ceL.cC(b.h2(Bh(t,(-4.0))));}},Dta=()=>{Btw=0;}; +function AYK(){let a=this;F.call(a);a.bXa=null;a.csr=null;a.bP7=null;a.cCM=null;} +let BRL=(a,b,c,d)=>{a.bXa=b;a.csr=c;a.cCM=d;},Bim=b=>{let c;c=b.p();if(BO(c,E(658))&&Dr(c,E(658)))return 1;if(BO(c,E(2451))&&Dr(c,E(2451)))return 1;if(BO(c,E(4180))&&Dr(c,E(4180))&&!Bj(c,E(1218)))return 1;if(BO(c,E(920))&&Dr(c,E(920)))return 1;return 0;},DZ2=(a,b)=>{return (a.bvk(b)).cF(b);},E9U=(a,b)=>{(a.bvk(b.hE())).cC(b);},C7K=(a,b,c)=>{let d;if(b.bGI.length>4){b=ES(B_(b,2,b.bGI.length-2|0));b=B4(c.gs(),b);d=a.csr;B3();return C_(b,d,CF,c);}return null;},BYh=(a,b,c,d,e)=>{let f,g;f=a.bvl();if(c){if(d!==null) +{g=d.cF(e);return KN(Fmd(Cuo(a),KN(b,f,6.0,g.bGF/2.0,4.0),c,d),0.0,0.0,g.bGF/2.0,0.0);}return EMO(Cuo(a),Js(b,f,4.0),c);}return Js(b,f,0.0);},Cuo=a=>{let b;b=a.cCM;B9();return (BJ(b,H1)).oK();}; +function Cxb(){let a=this;AYK.call(a);a.cYs=null;a.ctP=null;a.cLB=null;} +let Fw2=a=>{return 0.0;},DUT=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=a.bP7;if(c===null){c=Bk();d=0;e=null;f=Yu();g=Xo(a.cYs);while(g.dY()){h=g.dZ();if(AFV(h)===null){if(!Bim(h.p()))f=Us(f,h);else{i=BYh(a,CM7(a,f),d,e,b);U(c,i);d=h.u(0);e=C7K(a,h.p(),a.ctP);f=Yu();}}else{f=Us(f,h);j=1;a:{b:{while(g.dY()){h=g.dZ();f=Us(f,h);if(AFV(h)!==null)j=j+1|0;else if((A0W(h)).cx(E(548))){j=j+(-1)|0;if(!j)break b;}}break a;}}}}h=BYh(a,CM7(a,f),d,e,b);b=c;U(b,h);if(b.bGJ!=1)a.bP7=CiE(c,a.bXa);else a.bP7=Be(b,0);c=a.cCM;B9();k=(BJ(c, +Pt)).oK();if(k>0.0)a.bP7=CSW(a.bP7,k,a.bXa);return a.bP7;}return c;},CM7=(a,b)=>{return BJN(b,a.csr,a.bXa,a.ctP,a.cLB);}; +function Bjo(){let a=this;AYK.call(a);a.cr3=null;a.b4l=null;a.cyd=0;a.co_=null;a.cGC=null;a.cEy=0;a.b_r=null;} +let Chj=null,ARi=()=>{ARi=Z(Bjo);DYU();},Et_=a=>{return 6.0;},CQZ=b=>{ARi();b=A0W(b);return !(!Bq1(b)&&!A8x(b))?1:0;},BD8=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n;c=a.bP7;if(c===null){TD(a.co_);c=Bk();d=!a.cyd?0:95;e=null;f=null;g=Xo(a.cr3);while(g.dY()){h=g.dZ();i=h.p();if(Bim(i)){if(f===null)f=Yu();j=BHv(a,f,d,e,b);U(c,j);d=Bn(i,0);e=C7K(a,i,a.b4l);f=null;}else if(!CQZ(i)){if(f===null)f=Yu();f=Us(f,h);if(h instanceof AJJ){k=h.b2l;if(k!==null)U(a.co_,k);}}else{l=A8x(i);if(f===null)f=Yu();j=BHv(a,f,d,e,b);m=c;U(m, +j);d=0;e=null;f=null;h=Bk();j=D3(Chj,i);k=E(14);if(GW(j))k=El(j,1);j=CTP(i,k);i=h;U(i,j);a:{b:{while(g.dY()){j=(g.dZ()).p();if(!CQZ(j))break b;U(i,CTP(j,k));}break a;}g.EP();}j=D0(a.b_r,a.b4l.bGN);k=Ls(h);i=a.bXa;h=a.b4l;Ed();k=Vy(k,j,i,h,FR);if(l)k=KN(k,10.0,10.0,0.0,5.0);U(m,k);}}if(f===null)f=Yu();if(a.cEy&&!I6(f))f=Us(f,E(14));b=BHv(a,f,d,e,b);j=c;U(j,b);if(j.bGJ!=1)a.bP7=CiE(c,a.bXa);else a.bP7=Be(j,0);b=a.b_r;B9();n=(BJ(b,Pt)).oK();if(n>0.0)a.bP7=CSW(a.bP7,n,a.bXa);return a.bP7;}return c;},BHv=(a,b,c, +d,e)=>{return BYh(a,ErZ(b,a.b4l,a.bXa,a.cGC,a.b_r),c,d,e);},CTP=(b,c)=>{ARi();if(BO(b,c))return CC(b,c.bGI.length);return b;},Ehf=(a,b)=>{let c;c=BD8(a,b);if(F0(c,Oa))return c.yC(b);return Ya();},D9c=(a,b,c)=>{return (BD8(a,c)).yz(b,c);},DYU=()=>{Chj=Dp(E(7347));}; +function BWT(){let a=this;F.call(a);a.ccF=null;a.bVq=null;a.b7$=null;a.b6b=null;a.chW=null;a.crc=0.0;a.dbv=10.0;} +let EE_=(a,b,c,d)=>{let e,f,g,h,i,j,k;e=c/2.0;f=d/2.0;g=a.ccF.cF(b);c=g.bGE/2.0;h=e-c;d=g.bGF/2.0;i=f-d;j=e+c;k=f+d;return V7(V7(ALg(0),h-5.0,i-5.0),j+5.0,k+5.0);},FvJ=(a,b,c,d)=>{let e,f;e=c/2.0;f=d/2.0;BSQ(a,b,a.ccF,e,f);},Eji=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;b=b.h2(BM(c));f=a.bVq.cm_;g=e/2.0;h=b.hE();i=a.ccF.cF(h);j=g-i.bGF/2.0;k=(j-a.crc+15.0)/2.0;l=d/2.0;m=UJ();n=Br(a.chW);d=c+l;while(Bq(n)){o=Bm(n);if(d>o.cBW&&d2)?p:p-(u.cF(h)).bGE/2.0)-Bbg(n.bHt),t-d);p=p+9.0;q=0;}},BQN=a=>{let b,c,d,e;b=a.b7$;CV();c=K1;d=a.b6b;e=a.bVq;return Bwu(b,c,FW(d,e));},CQx=a=>{let b,c,d,e,f;b=a.chW;c=a.bVq;d=Rv(b, +c);e=a.chW;if(d!=(e.bGJ-1|0)){b=a.b7$;CV();c=K1;f=a.b6b;e=Be(e,d+1|0);return Bwu(b,c,FW(f,e));}return null;},BSQ=(a,b,c,d,e)=>{let f;if(c!==null){f=c.cF(b.hE());c.cC(b.h2(Bh(d-f.bGE/2.0,e-f.bGF/2.0)));return;}},Dg7=(a,b)=>{let c,d,e;c=BQN(a)!==null?(BQN(a)).cF(b):Cl(0.0,0.0);d=a.ccF.cF(b);e=CQx(a)!==null?(CQx(a)).cF(b):Cl(0.0,0.0);return Cl(ADF(c.bGE+20.0,d.bGE+30.0,e.bGE+20.0),c.bGF+20.0+2.0*a.crc+d.bGF+e.bGF+20.0);}; +function CdK(){F.call(this);this.cMB=null;} +let DX6=(a,b,c)=>{return 0.0;},ESo=(a,b,c)=>{return (Dj(a.cMB,b)).bGE;}; +function Cmp(){let a=this;CA.call(a);a.bKS=0;a.bJx=0.0;a.bTk=null;} +let Elk=a=>{let b;CJ(a);b=new FB;CJ(b);a.bTk=b;},A5p=()=>{let a=new Cmp();Elk(a);return a;},Cc8=a=>{let b;b=A5p();b.bKS=a.bKS;b.bJx=a.bJx;Cd(b.bTk,a.bTk);return b;},NL=(a,b)=>{let c;c=b;a.bKS=c.bKS;a.bJx=c.bJx;Cd(a.bTk,c.bTk);},DbC=N(C$),Bi4=(a,b,c)=>{let d,e,$$je;c=c.data;b=c[0];d=c[1];Ff();Bf();a:{try{e=FJ(b)-FJ(d)|0;break a;}catch($$e){$$je=P($$e);b=$$je;}J(b);}return CL(e);},DbB=N(C$),Es4=(a,b,c)=>{let d,$$je;c=c.data;b=c[0];d=c[1];Ff();Bf();try{b=CL(DN(Bz(b,0))-DN(Bz(d,0))|0);}catch($$e){$$je=P($$e);b= +$$je;J(b);}return b;},Cj$=N(),Bm$=0,L4=()=>{L4=Z(Cj$);EfH();},CsN=(b,c,d,e)=>{let f,g,h,$$je;L4();c=B17(c);e=B17(e);Bf();try{a:{b:{f=c.bG8;if(f>0){g=e.bG8;if(g>0)break b;}h=null;break a;}if(f>=g){f=0;c:{while(true){h=Bz(e.bGS,f);if(h===null)break;if(Cg(h)===b)break c;f=f+1|0;}break a;}}else{f=0;d:{while(true){h=Bz(c.bGS,f);if(h===null)break;if(BZ(h)===d)break d;f=f+1|0;}break a;}}}}catch($$e){$$je=P($$e);b=$$je;J(b);}return h;},AKs=(b,c)=>{let $$je;L4();Bf();try{b=CsN(b,D7(b),c,Gv(c));}catch($$e){$$je=P($$e);b +=$$je;J(b);}return b;},D8N=(b,c)=>{let d,$$je;L4();Bf();try{d=GV(b);a:{while(true){if(d===null)break a;if(d===c)break;d=GN(d);}}}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},Dyo=(b,c)=>{let $$je;L4();Bf();try{b=CsN(b,H$(b),c,YJ(c));}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},DQM=(b,c)=>{let d,$$je;L4();Bf();a:{b:{try{d=0;}catch($$e){$$je=P($$e);b=$$je;break b;}c:{try{while(true){if(d>=c.bG8)break c;if(b===Bz(c.bGS,d))break;d=d+1|0;}}catch($$e){$$je=P($$e);b=$$je;break b;}return;}try{AMT(b,c);break a;} +catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}},BKf=b=>{let $$je;L4();Bf();try{AMT(b,D7(Cg(b)));AMT(b,Gv(BZ(b)));}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},A7M=(b,c)=>{let d,e,$$je;L4();Bf();try{d=0;a:{while(true){if(d>=b.bG8)break a;if(Bz(b.bGS,d)===c)break;d=d+1|0;}e=b.bG8-1|0;b.bG8=e;c=b.bGS;E_(c,d,Bz(c,e));E_(b.bGS,b.bG8,null);}}catch($$e){$$je=P($$e);b=$$je;J(b);}},A67=b=>{let $$je;L4();Bf();try{A7M(D7(Cg(b)),b);A7M(Gv(BZ(b)),b);}catch($$e){$$je=P($$e);b=$$je;J(b);}},AE0=b=>{let $$je;L4();Bf();try +{AMT(b,Mb(Cg(b)));}catch($$e){$$je=P($$e);b=$$je;J(b);}},CEh=b=>{let $$je;L4();Bf();try{CcW(E(7348));DQM(b,Mb(Cg(b)));}catch($$e){$$je=P($$e);b=$$je;J(b);}},C5a=(b,c,d)=>{let e,f,$$je;L4();Bf();try{e=V3();AC6(e.cdc,3);AC6(e.bHO,2);e.bHO.bKd.bGQ=VE();f=e.bHO;A2G(f,b);BxD(f,c);RM(f,1);if(d===null){AKK(f,1);AHp(f,1);AQ2(f,1);AAU(f,1);}else{AWD(f,d.bHw.bMs);AWD(e.cdc,d.bHw.bMs);AHp(f,ADM(d));AQ2(f,Rd(d));AAU(f,LA(d));AKK(f,RF(d));if(Cg(f)===Cg(d))AQi(f,E7(d));else if(Cg(f)===BZ(d))AQi(f,E5(d));if(BZ(f)===BZ(d))A6w(f, +E5(d));else if(BZ(f)===Cg(d))A6w(f,E7(d));if(H7(d)===null)RP(d,f);ARb(f,d);}}catch($$e){$$je=P($$e);b=$$je;J(b);}return f;},YN=(b,c,d)=>{let $$je;L4();Bf();try{b=BKf(C5a(b,c,d));}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},BSc=(b,c)=>{let $$je;L4();Bf();a:{try{AR2(c,GV(b));if(GN(c)!==null)AN8(GN(c),c);}catch($$e){$$je=P($$e);b=$$je;break a;}b:{try{WA(b,c);AN8(c,null);if(!Bm$&&c===GN(c))break b;}catch($$e){$$je=P($$e);b=$$je;break a;}return;}try{J(Jk());}catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);},CLS= +(b,c)=>{let $$je;L4();Bf();try{if(!Bm$&&D8N(b,c)===null)J(Jk());if(GN(c)!==null)AN8(GN(c),BFi(c));if(BFi(c)===null)WA(b,GN(c));else AR2(BFi(c),GN(c));}catch($$e){$$je=P($$e);b=$$je;J(b);}},Z6=b=>{let c,$$je;L4();Bf();try{c=BRF();AC6(c,1);c.cfX.bGQ=C2K();c.bWb=Hd(b);AVD(c,1);U$(c,1.0);AHe(c,1.0);ASN(c,1.0);AA0(c,1);ACJ(4,Gv(c));ACJ(4,D7(c));BSc(b,c);AQK(b,Bbo(b)+1|0);}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},BZ2=(b,c)=>{let $$je;L4();Bf();try{AMT(c,H$(Cg(c)));AMT(c,YJ(BZ(c)));Dq0(b,1);Dq0(HP(b),1);}catch +($$e){$$je=P($$e);b=$$je;J(b);}},BD2=b=>{let $$je;L4();Bf();try{if(!Bm$&&b===null)J(Jk());if(I2(b)!==null&&H7(I2(b))===b)RP(I2(b),null);A7M(H$(Cg(b)),b);A7M(YJ(BZ(b)),b);}catch($$e){$$je=P($$e);b=$$je;J(b);}},DQO=(b,c)=>{let $$je;L4();Bf();try{if(RF(c){let $$je;L4();Bf();try{if(c===H7(b)){I(E(7349));I(E(6784));}RP(b,c);DQO(b,c);}catch($$e){$$je=P($$e);b +=$$je;J(b);}},EfH=()=>{Bm$=0;},E4d=N(),EdS=(b,c)=>{let d,e,$$je;Bf();try{d=EG();Cd(d,(DW(c)).bHT);e=Z6(b);B4p(e,DW(c));AHe(e,W1(Hd(e)));if(!D0B(c)){if(!KL(Hd(b))){ASN(e,d.bGG);U$(e,d.bGH);}else{ASN(e,d.bGH);U$(e,d.bGG);}}}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},CRn=(b,c)=>{let d,e,f,$$je;Bf();try{d=W1(b)/2|0;e=Ng(c);f=d;AHe(c,e+f);U$(c,Kv(c)+f);}catch($$e){$$je=P($$e);b=$$je;J(b);}},EDu=(b,c)=>{let d,$$je;Bf();try{d=Z6(b);CRn(b,d);}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},Ciq=(b,c)=>{let d,$$je;Bf();try +{d=RJ(c)!=7?Ti(c):Bz(PQ(GU(c)),CD(c));}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},Bnq=(b,c,d,e)=>{let f,g,h,$$je;Bf();try{f=DW(e)===null?(-1):(CD(c)+CD(d)|0)/2|0;g=CD(c)+1|0;while(g<=CD(d)){if(g>=CD(d))h=d;else{h=g!=f?EDu(b,e):EdS(b,e);P4(h,g);}ENu(YN(c,h,e));g=g+1|0;c=h;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},DWr=(b,c)=>{let d,e,f,$$je;Bf();a:{try{d=Ciq(b,Cg(c));e=Ciq(b,BZ(c));if(CD(d)<=CD(e)){f=e;e=d;d=f;}}catch($$e){$$je=P($$e);b=$$je;break a;}b:{try{if(GU(e)===GU(d))break b;}catch($$e){$$je=P($$e);b +=$$je;break a;}c:{try{f=AKs(e,d);if(f===null)break c;AZK(b,c,f,1);}catch($$e){$$je=P($$e);b=$$je;break a;}return;}d:{try{if(CD(e)!=CD(d))break d;}catch($$e){$$je=P($$e);b=$$je;break a;}return;}try{Bnq(b,e,d,c);b=H7(c);while(true){if(b===null)break b;if(CD(BZ(b))>CD(d))break b;RM(b,5);b=Bz((D7(BZ(b))).bGS,0);}}catch($$e){$$je=P($$e);b=$$je;break a;}}return;}J(b);},Ftq=b=>{let c,$$je;Bf();try{c=!(RJ(Cg(b))!=7&&RJ(BZ(b))!=7)?1:0;}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},AZK=(b,c,d,e)=>{let f,$$je;Bf();try +{f=DT(CD(Cg(c)),CD(BZ(c)));RP(c,d);a:{while(true){if(e)AHp(d,ADM(d)+ADM(c)|0);AQ2(d,Rd(d)+Rd(c)|0);AAU(d,LA(d)+LA(c)|0);if(CD(BZ(d))==f)break;CRn(b,BZ(d));d=Bz((D7(BZ(d))).bGS,0);if(d===null)break a;}}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Cfq=(b,c)=>{let $$je;Bf();a:{b:{try{if(b!==null&&c!==null&&Cg(b)===Cg(c)&&BZ(b)===BZ(c)&&DW(b)===DW(c)&&ASO(b,c))break b;}catch($$e){$$je=P($$e);b=$$je;break a;}return 0;}try{}catch($$e){$$je=P($$e);b=$$je;break a;}return 1;}J(b);},CMc=(b,c)=>{let d,e,f,g,h,i,$$je;Bf();try +{WA(c,null);AQK(c,0);C7I(b,c);d=1;while(d<=GA(c)){D2X(b,c,Bz(HC(c),d));d=d+1|0;}e=IV(b,c);while(e!==null){f=Mx(b,c,e);while(f!==null){if(AYE(BZ(f))<=2)CwR(BZ(f),AYE(BZ(f))+1|0);if(AYE(Cg(f))<=2)CwR(Cg(f),AYE(Cg(f))+1|0);f=MU(b,c,f);}e=I4(b,c,e);}e=IV(b,c);while(e!==null){if(GU(e)===null&&e===Ti(e)){BSc(c,e);AQK(c,Bbo(c)+1|0);}g=null;f=Mx(b,c,e);while(f!==null){a:{if(H7(f)!==null){g=f;break a;}if(Ftq(f)){if(!Cfq(g,f)){DWr(c,f);g=f;break a;}if(H7(g)!==null){AZK(c,f,H7(g),0);AE0(f);break a;}if(CD(Cg(f))!=CD(BZ(f)))break a;AMQ(f, +g);AE0(f);break a;}if(g!==null&&Cg(f)===Cg(g)&&BZ(f)===BZ(g)){if(CD(Cg(f))==CD(BZ(f))){AMQ(f,g);AE0(f);break a;}if(DW(f)===null&&DW(g)===null&&ASO(f,g)){if(b.ca7){RM(f,6);break a;}AZK(c,f,H7(g),1);AE0(f);break a;}}if(Cg(f)===BZ(f)){AE0(f);g=f;break a;}h=Ti(Cg(f));i=Ti(BZ(f));if(Cg(f)!==h)break a;if(BZ(f)!==i)break a;if(CD(Cg(f))==CD(BZ(f))){BZ2(c,f);g=f;break a;}if(CD(BZ(f))>CD(Cg(f))){Bnq(c,Cg(f),BZ(f),f);g=f;break a;}b:{h=EaN(b,c,BZ(f),Cg(f));if(h!==null&&BZ(h)!==BZ(f)){if(H7(h)===null)Bnq(c,Cg(h),BZ(h),h);if +(DW(f)===null&&DW(h)===null&&ASO(f,h))break b;}Bnq(c,BZ(f),Cg(f),f);g=f;break a;}if(!b.ca7){AE0(f);AZK(c,f,H7(h),1);break a;}RM(f,6);E35(h,1);}f=MU(b,c,f);}e=I4(b,c,e);}if(c!==HP(c)){e=I_(c);f=(I_(c)).bK6;Ej();e.bK6=Ur(1,f,R$);E_((I_(c)).bK6,0,GV(c));}}catch($$e){$$je=P($$e);b=$$je;J(b);}},EBr=N(),EbE=b=>{let $$je;Bf();try{WA(b.bSV,null);b.cmq=null;}catch($$e){$$je=P($$e);b=$$je;J(b);}},DWN=(b,c)=>{let d,$$je;Bf();try{d=b.bSV;AQK(d,Bbo(d)+1|0);PE(c,b.b5q);d=b.cmq;if(d!==null){AN8(c,d);AR2(b.cmq,c);}else{AN8(c, +null);WA(b.bSV,c);}b.cmq=c;AR2(c,null);}catch($$e){$$je=P($$e);b=$$je;J(b);}},DD0=b=>{let c,d,e,f,$$je;Bf();try{c=I_(b.bSV);d=c.bKy;c.bKy=d+1|0;c=I_(b.bSV);e=(I_(b.bSV)).bKy;f=(I_(b.bSV)).bK6;Ej();c.bK6=Ur(e,f,R$);E_((I_(b.bSV)).bK6,d,GV(b.bSV));}catch($$e){$$je=P($$e);b=$$je;J(b);}},Ch7=(b,c,d)=>{let e,f,g,h,i,$$je;Bf();try{e=K(TZ,4).data;e[0]=A1J();e[1]=A1J();e[2]=A1J();e[3]=A1J();DWN(b,d);AIa(e[0],D7(d));AIa(e[1],Gv(d));AIa(e[2],H$(d));AIa(e[3],YJ(d));f=0;while(f<=3){a:{if(e[f].bGS!==null){g=0;while(true) +{h=Bz(e[f].bGS,g);if(h===null)break a;i=BZ(h);if(i===d)i=Cg(h);if(N0(i)!=b.b5q&&i===Ti(i))Ch7(b,c,i);g=g+1|0;}}}f=f+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},CLZ=(b,c,d)=>{let e,f,g,$$je;Bf();try{b.bSV=c;e=(b.b5q+1|0)&65535;b.b5q=e;if(!e)b.b5q=1;(I_(c)).bKy=0;AQK(c,0);f=IV(b,c);while(f!==null){a:{b:{if(d>0){g=GU(f);if(g!==null){g=Bz(PQ(g),CD(f));break b;}}if(f!==Ti(f))break a;g=f;}if(N0(g)!=b.b5q){EbE(b);Ch7(b,c,g);DD0(b);}}f=I4(b,c,f);}}catch($$e){$$je=P($$e);b=$$je;J(b);}}; +function AR5(){let a=this;CA.call(a);a.bLU=0;a.bLA=0;} +let Dgg=a=>{CJ(a);},Bsm=()=>{let a=new AR5();Dgg(a);return a;},BcG=a=>{let b;b=new AR5;CJ(b);b.bLU=a.bLU;b.bLA=a.bLA;return b;},Fjx=(a,b)=>{let c;c=b;a.bLU=c.bLU;a.bLA=c.bLA;},D5I=N(),Cuf=(b,c)=>{let $$je;Bf();a:{b:{try{b=b.cXZ;if(b!==null){b=RS(c,b);if(b!==null&&Dn(b,0)&&!S6(b))break b;}}catch($$e){$$je=P($$e);b=$$je;break a;}return 0;}try{}catch($$e){$$je=P($$e);b=$$je;break a;}return 1;}J(b);},DD2=(b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,$$je;Bf();try{f=GU(Cg(e))===null?0:CD(Cg(e))-CD(A$E(GU(Cg(e))))|0;g=GU(BZ(e)) +===null?0:CD(BZ(e))-CD(A$E(GU(BZ(e))))|0;h=(RF(e)+f|0)-g|0;if(h<=0){i= -h|0;h=0;}else i=0;j=Z6(b);AVD(j,2);k=Ti(c);l=Ti(d);m=Ny(j,k,i,10*LA(e)|0);n=Ny(j,l,h,LA(e));ARb(m,e);ARb(n,e);}catch($$e){$$je=P($$e);b=$$je;J(b);}},Dx0=(b,c)=>{let d,e,f,g,h,$$je;Bf();try{C7I(b,c);d=IV(b,c);while(d!==null){e=Mx(b,c,d);while(e!==null){if(H7(e)===null&&!Cuf(b,e)){f=Ti(Cg(e));g=Ti(BZ(e));if(f!==g){if(!(GU(f)===null&&GU(g)===null))DD2(c,Cg(e),BZ(e),e);else{h=AKs(f,g);if(h===null)YN(f,g,e);else AMQ(e,h);}}}e=MU(b,c,e);}d=I4(b, +c,d);}}catch($$e){$$je=P($$e);b=$$je;J(b);}},DyS=N(),Fwq=b=>{let c,$$je;Bf();try{A67(b);c=AKs(BZ(b),Cg(b));if(c!==null)AMQ(b,c);else YN(BZ(b),Cg(b),b);}catch($$e){$$je=P($$e);b=$$je;J(b);}},Dok=b=>{let c,d,e,$$je;Bf();a:{b:{c:{try{if(!N0(b))break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}try{PE(b,1);Bng(b,1);c=0;while(true){d=Bz((D7(b)).bGS,c);if(d===null)break;e=BZ(d);if(C8b(e)){Fwq(d);c=c+(-1)|0;}else if(!N0(e))Dok(e);c=c+1|0;}Bng(b,0);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}},Fqz=b=> +{let c,d,$$je;Bf();try{c=0;while(c<(I_(b)).bKy){WA(b,Bz((I_(b)).bK6,c));d=GV(b);while(d!==null){PE(d,0);d=GN(d);}d=GV(b);while(d!==null){Dok(d);d=GN(d);}c=c+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},FtT=N(),Cgd=(b,c,d,e,f,g)=>{return DXK(b,Fo(c),Fo(d),BBu(e),f,g);},DXK=(b,c,d,e,f,g)=>{let h,i,j,k,l,$$je;Bf();a:{b:{c:{try{h=AKR();i=AKR();Ej();j=Ho(2,G9);k=Ho(2,G9);(Y(j,0)).bGH=c.bGH;(Y(j,0)).bGG=c.bGG;(Y(j,1)).bGH=d.bGH;(Y(j,1)).bGG=d.bGG;if(C$2(b,e,j,h)>=0)break c;b=null;}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}d: +{try{if(g){BWY(b,h,i);break d;}g=e.bIb;if(g>b.cnr){b.bUi=UX(g,b.bUi,A_o);b.cnr=e.bIb;}l=0;while(l=0)break d;b=null;}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}e:{try{if(!Ch_(b,i.bIb))break e;b=null;}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}try{l=0;while(true){g=i.bIb;if(l>=g)break;Cd(Y(b.bU5,l),Y(i.bIg,l));l +=l+1|0;}f.data[0]=g;b=b.bU5;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return b;},Fjk=b=>{let c,d,$$je;Bf();a:{b:{c:{try{c=b.co4+1|0;b.co4=c;if(c<=1)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}d:{try{Ej();d=Ho(300,G9);b.bU5=d;if(d!==null)break d;I(E(7350));I(E(7351));break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{b.csP=300;b.ctL=0;b.cub=0;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return 0;},E9_=b=>{let c,$$je;Bf();a:{b:{c:{try{c=b.co4-1|0;b.co4=c;if(c<=0)break c;} +catch($$e){$$je=P($$e);b=$$je;break b;}return;}try{Gq(b.bU5);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}},DdF=(b,c,d,e,f)=>{let g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,$$je;Bf();a:{try{Ej();g=Ho(4,G9);h=Y(g,0);i=Y(g,1);j=Y(g,2);k=Y(g,3);l=Ev(f,c);m=0;}catch($$e){$$je=P($$e);d=$$je;break a;}n=l;while(true){try{o=m+3|0;if(o>=e)break;p=0;while(p<=l){q=p/n;Cd(h,Y(d,m));Cd(i,Y(d,m+1|0));Cd(j,Y(d,m+2|0));Cd(k,Y(d,o));r=h.bGH;h.bGH=r+q*(i.bGH-r);r=h.bGG;h.bGG=r+q*(i.bGG-r);s=i.bGH;i.bGH=s+q*(j.bGH-s);r=i.bGG;i.bGG +=r+q*(j.bGG-r);r=j.bGH;j.bGH=r+q*(k.bGH-r);r=j.bGG;j.bGG=r+q*(k.bGG-r);r=h.bGH;h.bGH=r+q*(i.bGH-r);r=h.bGG;h.bGG=r+q*(i.bGG-r);r=i.bGH;r=r+q*(j.bGH-r);i.bGH=r;s=i.bGG;s=s+q*(j.bGG-s);i.bGG=s;t=h.bGH;h.bGH=t+q*(r-t);r=h.bGG;r=r+q*(s-r);h.bGG=r;u=0;while(u=v[u].bGT.bGG-1.0E-4){s=v[u].bGT.bGH;q=h.bGH;if(s>q)v[u].bGT.bGH=q;s=v[u].bGU.bGH;q=h.bGH;if(s{let f, +g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,$$je;N_(E(7352),E(7353));a:{b:{try{f=AKR();g=AKR();h=AKR();Ej();i=Ho(2,G9);j=Ho(2,G9);k=0;l=10;b.ctL=b.ctL+1|0;b.cub=b.cub+c.bRs|0;m=c.cZe;while(m!==null&&QH(m)){m=I2(m);}}catch($$e){$$je=P($$e);b=$$je;break b;}c:{try{if(m!==null)break c;I(E(7354));b=null;}catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(7352),E(7353));return b;}d:{try{n=c.bT1;o=c.bRs;if(!DyM(o,n,c))break d;b=null;}catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(7352),E(7353));return b;}e:{try{p=o*8|0;if +(p<=b.c3f)break e;b.bIS=UX(p,b.bIS,G9);b.c3f=p;break e;}catch($$e){$$je=P($$e);b=$$je;break b;}}f:{try{g:{if(o>1){q=n.data;if(q[0].bGT.bGG>q[1].bGT.bGG)break g;}r=0;break f;}r=1;p=0;while(p=o)break;u=0;if(p<=0)v=u;else{q=n.data;v=!(q[p].bGT.bGG>q[p-1|0].bGT.bGG) +?1:(-1);}if(pq[p].bGT.bGG)?(-1):1;}if(v==u){if(!v){I(E(7356));I(E(7357));I(E(7356));I(E(7358));}else if(!(v==(-1)&&u==(-1))){I(E(7359));I(E(7360));}}else if(!(u!=(-1)&&v!=1)){q=n.data;(Y(b.bIS,k)).bGH=q[p].bGT.bGH;w=b.bIS;u=k+1|0;(Y(w,k)).bGG=q[p].bGU.bGG;(Y(b.bIS,u)).bGH=q[p].bGT.bGH;w=b.bIS;k=u+1|0;(Y(w,u)).bGG=q[p].bGT.bGG;}else{q=n.data;(Y(b.bIS,k)).bGH=q[p].bGU.bGH;w=b.bIS;u=k+1|0;(Y(w,k)).bGG=q[p].bGT.bGG;(Y(b.bIS,u)).bGH=q[p].bGU.bGH;w=b.bIS;k=u+1|0;(Y(w,u)).bGG=q[p].bGU.bGG;}p +=p+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{v=t;while(v>=0){u=0;if(v>=t)x=u;else{q=n.data;x=!(q[v].bGT.bGG>q[v+1|0].bGT.bGG)?1:(-1);}if(v>0){q=n.data;u=!(q[v-1|0].bGT.bGG>q[v].bGT.bGG)?(-1):1;}if(x!=u){if(!(u!=(-1)&&x!=1)){q=n.data;(Y(b.bIS,k)).bGH=q[v].bGT.bGH;w=b.bIS;p=k+1|0;(Y(w,k)).bGG=q[v].bGU.bGG;(Y(b.bIS,p)).bGH=q[v].bGT.bGH;w=b.bIS;k=p+1|0;(Y(w,p)).bGG=q[v].bGT.bGG;}else{q=n.data;(Y(b.bIS,k)).bGH=q[v].bGU.bGH;w=b.bIS;p=k+1|0;(Y(w,k)).bGG=q[v].bGT.bGG;(Y(b.bIS,p)).bGH=q[v].bGU.bGH;w= +b.bIS;k=p+1|0;(Y(w,p)).bGG=q[v].bGU.bGG;}}else if(!x){I(E(7361));I(E(7358));I(E(7361));I(E(7357));}else{if(!(x==(-1)&&u==(-1))){I(E(7362));I(E(7363));I(E(7364));}q=n.data;(Y(b.bIS,k)).bGH=q[v].bGU.bGH;w=b.bIS;p=k+1|0;(Y(w,k)).bGG=q[v].bGT.bGG;(Y(b.bIS,p)).bGH=q[v].bGU.bGH;w=b.bIS;u=p+1|0;(Y(w,p)).bGG=q[v].bGU.bGG;(Y(b.bIS,u)).bGH=q[v].bGT.bGH;w=b.bIS;x=u+1|0;(Y(w,u)).bGG=q[v].bGU.bGG;(Y(b.bIS,x)).bGH=q[v].bGT.bGH;w=b.bIS;k=x+1|0;(Y(w,x)).bGG=q[v].bGT.bGG;}v=v+(-1)|0;}break h;}catch($$e){$$je=P($$e);b=$$je;break b;}}i: +{try{if(!r)break i;p=0;while(p=k)break i;(Y(b.bIS,z)).bGG=(-1.0)*(Y(b.bIS,z)).bGG;z=z+1|0;}}catch($$e){$$je=P($$e);b=$$je;break b;}}try{ba=0;while(ba=0)break j;Fw(Fm(),E(7365));b=null;}catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(7352),E(7353));return b;}k:{try{if(e){BWY(b,g,h);break k;}e=f.bIb;if(e>b.cnr){b.bUi=UX(e,b.bUi,A_o);b.cnr=f.bIb;}bb=0;while(bb=0)break k;I(E(7366));I(E(7367));break k;}catch($$e){$$je=P($$e);b=$$je;break b;}}l:{try{if(!Ch_(b,h.bIb))break l;I(E(7368));break l;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{e=0;while(e=0)break;q=n.data;if(q[e].bGT.bGH===2.147483647E9)break n;if +(q[e].bGU.bGH===(-2.147483648E9))break n;e=e+1|0;}break m;}l=l*2|0;if(l>(2147483647/o|0))x=15;}if(!p)v=0;x=x+1|0;}if(v){w=AKR();Fw(Fm(),E(7369));BWY(b,g,w);DdF(n,o,w.bIg,w.bIb,10);Gq(w.bIg);}d.data[0]=h.bIb;b=b.bU5;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}Ee(E(7352),E(7353));J(b);}Ee(E(7352),E(7353));return b;},BfL=(b,c,d)=>{let $$je;Bf();try{b=CIO(b,c,d,0);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},BX8=(b,c,d)=>{let $$je;Bf();try{b=CIO(b,c,d,1);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},CCw +=(b,c,d,e)=>{let f,g,h,i,j,k,$$je;f=b|0;g=c|0;h=d|0;i=e|0;Bf();a:{b:{c:{d:{try{if(g>h)break d;f=0;}catch($$e){$$je=P($$e);j=$$je;break c;}break a;}e:{try{k=C5(f,i);if(k<0)break e;f=0;}catch($$e){$$je=P($$e);j=$$je;break c;}break a;}f:{try{if(h>f)break f;if(k>0)break f;f=i-f|0;}catch($$e){$$je=P($$e);j=$$je;break c;}break a;}g:{try{if(h>g)break g;if(g>i)break g;f=g-h|0;}catch($$e){$$je=P($$e);j=$$je;break c;}break a;}try{f=DO(g-f|0,i-h|0);break b;}catch($$e){$$je=P($$e);j=$$je;break c;}}J(j);}}return f;},DyM +=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,$$je;N_(E(7370),E(7371));a:{try{e=0;f=0;while(fh.bGH)&&!(i.bGG>h.bGG))){I(E(7372));I(E(7373));I(E(7351));}f=0;}catch($$e){$$je=P($$e);d=$$je;break a;}while(true){try{k=e-1|0;if(f>=k)break;l=c[f];f=f+1|0;m=c[f];h=m.bGT;n=h.bGH;i=m.bGU;if(!(!(n>i.bGH)&&!(h.bGG>i.bGG))) +{I(E(7374));I(E(7375));I(E(7376));I(E(7377));}h=l.bGU;j=h.bGH;i=m.bGT;n=i.bGH;k=!(jr)?0:1;t=h.bGG;u=i.bGG;v=!(tx)?0:1;}catch($$e){$$je=P($$e);d=$$je;break a;}b:{try{z=((k+s|0)+v|0)+y|0;if(z<=0)break b;if(k==1){ba=j|0;h.bGH=n;i.bGH=ba;k=0;}else if(s==1){ba=p|0;o.bGH=r;q.bGH=ba;s=0;}else if(v==1){ba=t|0;h.bGG=u;i.bGG=ba;v=0;}else if(y==1){ba=w|0;o.bGG=x;q.bGG=ba;y=0;}bb=0;}catch($$e){$$je=P($$e);d=$$je;break a;}z=z-1|0;while(true){try +{if(bb>=z)break b;if(k==1){j=(h.bGH+i.bGH)/2.0+0.5|0;h.bGH=j;i.bGH=j;k=0;}else if(s==1){j=(o.bGH+q.bGH)/2.0+0.5|0;o.bGH=j;q.bGH=j;s=0;}else if(v==1){j=(h.bGG+i.bGG)/2.0+0.5|0;h.bGG=j;i.bGG=j;v=0;}else if(y==1){j=(o.bGG+q.bGG)/2.0+0.5|0;o.bGG=j;q.bGG=j;y=0;}bb=bb+1|0;continue;}catch($$e){$$je=P($$e);d=$$je;break a;}}}c:{try{bb=CCw(o.bGH,h.bGH,i.bGH,q.bGH);bc=CCw(l.bGT.bGG,l.bGU.bGG,m.bGT.bGG,m.bGU.bGG);if(!bb)break c;if(!bc)break c;if(bbr-i.bGH) +{I(E(7378));I(E(7379));I(E(5518));I(E(7380));break c;}if(!(jr-t)){if(!(jc[0].bGU.bGH)){n=h.bGG;if(!(nc[0].bGU.bGG))break d;}if(jc[0].bGU.bGH)h.bGH=c[0].bGU.bGH;if(h.bGGc[0].bGU.bGG))break d;h.bGG=c[0].bGU.bGG;break d;}catch($$e){$$je=P($$e);d=$$je;break a;}}e:{try{d=d.bKR.bHg;j=d.bGH;if(!(jc[k].bGU.bGH)){n=d.bGG;if(!(nc[k].bGU.bGG))break e;}if(jc[k].bGU.bGH)d.bGH=c[k].bGU.bGH;if(d.bGGc[k].bGU.bGG))break e;d.bGG=c[k].bGU.bGG;break e;}catch($$e) +{$$je=P($$e);d=$$je;break a;}}try{}catch($$e){$$je=P($$e);d=$$je;break a;}Ee(E(7370),E(7371));return 0;}Ee(E(7370),E(7371));J(d);},Ch_=(b,c)=>{let d,e,f,g,$$je;Bf();try{d=b.csP;if(c>d){e=d+(((c/300|0)+1|0)*300|0)|0;f=b.bU5;Ej();g=UX(e,f,G9);b.bU5=g;if(g===null){I(E(7381));I(E(7377));}b.csP=e;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return 0;},DXn=b=>{let c;I(E(7382));I(E(7383));I(E(5253));I(E(7384));I(E(7385));I(E(7386));I(E(7387));I(E(7388));I(E(7389));I(E(7390));I(E(7391));I(E(7392));I(E(5331));I(E(7393));I(E(7389));I(E(7394));I(E(7395));I(E(7396));I(E(5035));I(E(7397));I(E(7398));I(E(5037));c +=new BV;X(c);J(c);}; +function CGo(){let a=this;CA.call(a);a.bZ_=0;a.b27=0;a.b_I=0;a.cd7=0;a.cow=null;} +let DIx=a=>{CJ(a);},DPx=()=>{let a=new CGo();DIx(a);return a;},CCR=N(),DTm=(a,b,c)=>{return CE_(b,c);},CCS=N(),D4V=(a,b,c)=>{let d,e,f,g;b=b;c=c;d=b.bL5;e=c.bMX;d=CT(d,e);f=c.bL5;g=b.bMX;return AEl(BU(d,CT(f,g)),CT(g,e));},CCP=N(),CCQ=N(),DJo=(a,b,c)=>{b=b;c=c;RT();if(BQu(b,c)>=0)c=b;return c;},A_w=N(),Ew_=a=>{let b,c,d;b=new BV;c=BY(Dg(a));d=new S;T(d);H(H(d,E(7399)),c);Bp(b,Q(d));J(b);},DBj=a=>{let b,c,d;b=new BV;c=BY(Dg(a));d=new S;T(d);H(H(d,E(7399)),c);Bp(b,Q(d));J(b);},Eb2=a=>{let b,c,d;b=new BV;c=BY(Dg(a));d +=new S;T(d);H(H(d,E(7399)),c);Bp(b,Q(d));J(b);},D7w=a=>{let b,c,d;b=new BV;c=BY(Dg(a));d=new S;T(d);H(H(d,E(7399)),c);Bp(b,Q(d));J(b);},FdS=(a,b)=>{let c,d,e;c=new BV;d=BY(Dg(a));e=new S;T(e);H(H(e,E(7399)),d);Bp(c,Q(e));J(c);},Edk=a=>{let b,c,d;b=new BV;c=BY(Dg(a));d=new S;T(d);H(H(d,E(7399)),c);Bp(b,Q(d));J(b);},EFh=a=>{let b,c,d;b=new BV;c=BY(Dg(a));d=new S;T(d);H(H(d,E(7399)),c);Bp(b,Q(d));J(b);},EIb=a=>{let b,c,d;b=new BV;c=BY(Dg(a));d=new S;T(d);H(H(d,E(7399)),c);Bp(b,Q(d));J(b);},AZN=N(A_w),Dgu=null,BzL +=()=>{BzL=Z(AZN);DWT();},EC2=a=>{return 0;},DYP=a=>{return 0;},Fur=a=>{return 0.0;},Ekw=(a,b)=>{return b;},DwP=a=>{return 0;},E4A=a=>{return E(14);},FqZ=a=>{return EO();},FnM=(a,b)=>{Go();return Hu;},EbD=a=>{B3();return CF;},DWT=()=>{let b;b=new AZN;BzL();Dgu=b;}; +function CUp(){let a=this;CA.call(a);a.b1v=null;a.csJ=0;a.dbr=null;a.c_0=0;a.c1V=null;a.ccA=null;a.caD=null;} +let DvX=a=>{CJ(a);},DJv=()=>{let a=new CUp();DvX(a);return a;},EXF=N(),DZU=b=>{let c,$$je;Bf();try{c=D3C();c.cMF=b;c.b3G=null;}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},D35=(b,c)=>{let d,$$je;Bf();a:{b:{c:{try{if(c!==null)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}try{d=DZU(c);d.b3G=b;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return d;},DIZ=()=>{let b,$$je;Bf();try{b=EDw();b.b4o=Duc(b);}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},Duc=b=>{let c,$$je;Bf();try{c=B7q(b);c.bSq +=0;b.cpZ=b.cpZ+1|0;}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},CzX=(b,c)=>{let d,e,f,$$je;Bf();try{a:{if(c.bSq<=0){d=0;while(true){if(d>=64)break a;if(c.bL7.data[d].bKv!==null){CKl(c,d);b.bS5=b.bS5-1|0;if(b.bZT)b.ckx=b.ckx+1|0;}d=d+1|0;}}e=0;while(true){if(e>=64)break a;f=c.bL7.data;if(f[e].bKv!==null&&!CzX(b,f[e].bKv)){Gq(c.bL7.data[e].bKv);CKl(c,e);b.bS5=b.bS5-1|0;if(b.bZT)b.ckx=b.ckx+1|0;}e=e+1|0;}}}catch($$e){$$je=P($$e);b=$$je;J(b);}return 0;},DBL=b=>{let $$je;Bf();try{CzX(b,b.b4o);Gq(b.b4o);Gq(b);} +catch($$e){$$je=P($$e);b=$$je;J(b);}return 0;},CCz=(b,c,d)=>{let e,f,g,h,i,j,k,$$je;Bf();try{e=null;b.c5x=b.c5x+1|0;if(c.bSq<=0){f=0;while(f<64){g=c.bL7.data;if(g[f].bKv!==null&&CHS(d,g[f].bJo))e=D35(e,c.bL7.data[f]);f=f+1|0;}}else{h=0;while(h<64){g=c.bL7.data;if(g[h].bKv!==null&&CHS(d,g[h].bJo)){i=CCz(b,c.bL7.data[h].bKv,d);if(e===null)e=i;else{j=e;while(true){k=j.b3G;if(k===null)break;j=k;}j.b3G=i;}}h=h+1|0;}}}catch($$e){$$je=P($$e);b=$$je;J(b);}return e;},D4$=(b,c,d,e,f)=>{let g,h,i,j,$$je;Bf();try{g=K(A1t, +1);h=CP();i=0;if(b.bZT){I(E(7400));I(E(7401));I(E(5293));I(E(7402));}if(!b.cRO)b.c52=b.c52+1|0;e=e.data;if(CHv(b,c,d,e[0],g,f)){if(b.bZT){I(E(7403));I(E(7404));I(E(5123));I(E(7405));}g=g.data;j=B7q(b);b.cVp=b.cVp+1|0;j.bSq=e[0].bSq+1|0;MV(h.bJo,Bzb(e[0]));h.bKv=e[0];AW6(b,h,j,null);MV(h.bJo,Bzb(g[0]));h.bKv=g[0];AW6(b,h,j,null);e[0]=j;b.bS5=b.bS5+2|0;i=1;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return i;},CHv=(b,c,d,e,f,g)=>{let h,i,j,k,$$je;Bf();a:{b:{try{h=CP();i=K(A1t,1);if(b.bZT){I(E(7400));I(E(7406));I(E(5293));I(E(7407));}} +catch($$e){$$je=P($$e);b=$$je;break b;}c:{try{j=C5(e.bSq,g);if(j>0)break c;if(j){I(E(7408));I(E(5157));J(Gw());}MV(h.bJo,c);h.bKv=d;b.bS5=b.bS5+1|0;g=AW6(b,h,e,f);}catch($$e){$$je=P($$e);b=$$je;break b;}return g;}d:{try{j=E6$(c,e);if(CHv(b,c,d,e.bL7.data[j].bKv,i,g))break d;f=e.bL7.data;MV(f[j].bJo,AGt(c,f[j].bJo));}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}try{i=i.data;k=e.bL7.data;MV(k[j].bJo,Bzb(k[j].bKv));h.bKv=i[0];MV(h.bJo,Bzb(i[0]));b.bS5=b.bS5+1|0;g=AW6(b,h,e,f);break a;}catch($$e){$$je=P($$e);b +=$$je;break b;}}J(b);}return g;},EWc=N(),EoT=(b,c)=>{let d,e,f,g,h,i,j,$$je;Bf();a:{b:{c:{try{d=0;if(c!==null&&c.b5J<=0)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return (-1);}d:{try{e=c.bXy;f=e.bOb;if(f===null)break d;}catch($$e){$$je=P($$e);b=$$je;break b;}e:{try{g=K(F,4);h=g.data;h[0]=c;h[1]=CL(2);h[2]=null;h[3]=e;d=(f.a5e(b,g)).pB();if(d>=0)break e;}catch($$e){$$je=P($$e);b=$$je;break b;}return (-1);}}f:{try{if(c.bWW===null)break f;I(E(7409));break f;}catch($$e){$$je=P($$e);b=$$je;break b;}}g:{try{if +(d)break g;}catch($$e){$$je=P($$e);b=$$je;break b;}h:{try{i=c.bNo.bYj;f=null;A$5(i,b,c,f,64);if(AUy(c)<=0)break h;}catch($$e){$$je=P($$e);b=$$je;break b;}return (-1);}i:{try{if(c.bKn.cZ_<=0)break i;I(E(7410));break i;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{f=c.bVY;g=K(F,4);h=g.data;h[0]=c;h[1]=c.bKn;h[2]=null;h[3]=e;f.a5e(b,g);break g;}catch($$e){$$je=P($$e);b=$$je;break b;}}j:{try{j=c.b7e;if(!j){Gq(c);break j;}if(d)break j;if(j!=1)break j;I(E(7411));break j;}catch($$e){$$je=P($$e);b=$$je;break b;}}k:{try +{if(e.bOb===null)break k;I(E(7412));break k;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return 0;},EZS=N(),Cvn=(b,c)=>{let $$je;Fo(b);Bf();try{I(E(7413));I(E(5253));I(E(7414));I(E(7415));I(E(7416));I(E(7417));I(E(7418));I(E(7419));I(E(7420));I(E(7421));I(E(5035));I(E(7422));I(E(7423));I(E(7424));I(E(5037));J(Gw());}catch($$e){$$je=P($$e);b=$$je;}J(b);},B3y=(b,c)=>{let d,e,$$je;b=Fo(b);Bf();a:{b:{c:{d:{try{e:{f:{g:{h:{d=b.bGH;e=b.bGG;switch(c){case 0:break;case 90:break g;case 180:break f;case 270:break h;default:break d;}break e;}b.bGH +=e;b.bGG=d;break e;}b.bGH=e;b.bGG= -d;break e;}b.bGH=d;b.bGG= -e;}}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}i:{try{if(c>=0)break i;b=A_0(b, -c|0);}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}j:{try{if(c>360)break j;b=Cvn(b,c);}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}try{b=B3y(b,c%360|0);break b;}catch($$e){$$je=P($$e);b=$$je;break c;}}J(b);}}return Fo(b);},A_0=(b,c)=>{let d,e,$$je;b=Fo(b);Bf();a:{b:{c:{d:{try{e:{f:{g:{h:{d=b.bGH;e=b.bGG;switch(c){case 0:break;case 90:break g;case 180:break f;case 270:break h;default:break d;}break e;}b.bGH +=e;b.bGG=d;break e;}b.bGH= -e;b.bGG=d;break e;}b.bGH=d;b.bGG= -e;}}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}i:{try{if(c>=0)break i;b=B3y(b, -c|0);}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}j:{try{if(c>360)break j;b=Cvn(b,360-c|0);}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}try{b=A_0(b,c%360|0);break b;}catch($$e){$$je=P($$e);b=$$je;break c;}}J(b);}}return Fo(b);},CQ8=(b,c,d)=>{let e,f,g,h,$$je;b=Fo(b);c=Fo(c);d=Fo(d);Bf();a:{b:{c:{d:{try{e=c.bGH;f=b.bGH;e=e-f;g=c.bGG;h=b.bGG;g=g-h;f=(d.bGG +-h)*e-(d.bGH-f)*g;f=f*f;if(!(f<1.0E-10))break d;e=0.0;}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}try{e=f/(e*e+g*g);break b;}catch($$e){$$je=P($$e);b=$$je;break c;}}J(b);}}return e;}; +function DaF(){let a=this;CA.call(a);a.cv9=0;a.cvc=0;a.b$K=null;} +let DYq=a=>{CJ(a);},FrF=()=>{let a=new DaF();DYq(a);return a;}; +function B__(){If.call(this);this.cvy=null;} +let BIV=(a,b)=>{return Bhv(a.cvy,b);}; +function A5Y(){F.call(this);this.c$C=0;} +function CLc(){let a=this;CA.call(a);a.bSO=null;a.cqN=null;a.bNN=0;a.bI$=null;a.bIC=null;} +let DNc=a=>{let b,c,d;CJ(a);a.bSO=Gm();b=new FB;CJ(b);a.cqN=b;a.bI$=Ca(1);c=K(AUO,20);d=c.data;d[0]=Gm();d[1]=Gm();d[2]=Gm();d[3]=Gm();d[4]=Gm();d[5]=Gm();d[6]=Gm();d[7]=Gm();d[8]=Gm();d[9]=Gm();d[10]=Gm();d[11]=Gm();d[12]=Gm();d[13]=Gm();d[14]=Gm();d[15]=Gm();d[16]=Gm();d[17]=Gm();d[18]=Gm();d[19]=Gm();a.bIC=c;},ARn=()=>{let a=new CLc();DNc(a);return a;},A3a=N(Bx),Btd=null,Bg2=null,A08=null,BQP=null,Cag=null,DHQ=null,AJf=()=>{AJf=Z(A3a);DGh();},Fe6=(a,b,c)=>{AJf();Ct(a,b,c);},A3U=(a,b)=>{let c=new A3a();Fe6(c, +a,b);return c;},DGh=()=>{let b,c,d;Btd=A3U(E(7425),0);Bg2=A3U(E(7426),1);A08=A3U(E(7427),2);BQP=A3U(E(7428),3);b=A3U(E(7429),4);Cag=b;c=K(A3a,5);d=c.data;d[0]=Btd;d[1]=Bg2;d[2]=A08;d[3]=BQP;d[4]=b;DHQ=c;}; +function C15(){let a=this;CA.call(a);a.bYn=0.0;a.bSA=null;a.bXn=null;} +let E8P=a=>{CJ(a);},BOG=()=>{let a=new C15();E8P(a);return a;}; +function B1O(){let a=this;F.call(a);a.bPu=0;a.c6V=null;a.cf_=null;a.cga=null;a.cbv=null;} +let CWO=null,Bxs=()=>{Bxs=Z(B1O);E3s();},EEy=(a,b,c,d,e)=>{Bxs();a.bPu=b;a.c6V=c;a.cf_=d;a.cga=e;},BiR=(a,b,c,d)=>{let e=new B1O();EEy(e,a,b,c,d);return e;},Cbp=()=>{Bxs();return CWO;},B4s=(a,b)=>{return BiR(a.bPu+1|0,a,b,null);},CkA=a=>{if(a.bPu)return Bv(BY$(a));return Gi();},BY$=a=>{let b,c,d,e,f,g;b=a.cbv;if(b===null){c=a.bPu;a.cbv=K(F,c);d=a;while(d!==null&&d.bPu){b=a.cbv;e=d.cf_;if(e!==null)b.data[c-1|0]=e;else{f=d.cga;if(f!==null){g=f.data.length;Di(f,0,b,c-g|0,g);}}if(d.cf_!==null)g=1;else{b=d.cga;g +=b===null?0:b.data.length;}c=c-g|0;d=d.c6V;}return a.cbv;}return b;},BiJ=a=>{return (CkA(a)).dX();},E3s=()=>{CWO=BiR(0,null,null,null);},COT=N(),BKb=null,B6X=()=>{B6X=Z(COT);DUH();},DUH=()=>{let b,c;Cy();b=Ca((C16.b2()).data.length);c=b.data;BKb=b;c[AD7.bGO]=1;c[VI.bGO]=2;c[NG.bGO]=3;c[SZ.bGO]=4;c[ACy.bGO]=5;c[A1y.bGO]=6;c[AK7.bGO]=7;c[AKX.bGO]=8;c[AOy.bGO]=9;c[AN1.bGO]=10;c[AJG.bGO]=11;c[AAq.bGO]=12;c[ABt.bGO]=13;}; +function C94(){F.call(this);this.c$_=null;} +let ERk=(a,b,c)=>{b=b;return Cny(c,b);}; +function CIA(){let a=this;CA.call(a);a.b4o=null;a.bKI=null;a.dbL=0;a.cRO=0;a.bZT=0;a.ckx=0;a.c5x=0;a.c52=0;a.cSB=0;a.cpZ=0;a.cVp=0;a.bS5=0;} +let EHs=a=>{CJ(a);a.bKI=D_t();},EDw=()=>{let a=new CIA();EHs(a);return a;}; +function A1t(){let a=this;CA.call(a);a.b4W=0;a.bSq=0;a.bL7=null;} +let EJ5=a=>{let b,c;CJ(a);b=K(Btm,64);c=b.data;c[0]=CP();c[1]=CP();c[2]=CP();c[3]=CP();c[4]=CP();c[5]=CP();c[6]=CP();c[7]=CP();c[8]=CP();c[9]=CP();c[10]=CP();c[11]=CP();c[12]=CP();c[13]=CP();c[14]=CP();c[15]=CP();c[16]=CP();c[17]=CP();c[18]=CP();c[19]=CP();c[20]=CP();c[21]=CP();c[22]=CP();c[23]=CP();c[24]=CP();c[25]=CP();c[26]=CP();c[27]=CP();c[28]=CP();c[29]=CP();c[30]=CP();c[31]=CP();c[32]=CP();c[33]=CP();c[34]=CP();c[35]=CP();c[36]=CP();c[37]=CP();c[38]=CP();c[39]=CP();c[40]=CP();c[41]=CP();c[42]=CP();c[43] +=CP();c[44]=CP();c[45]=CP();c[46]=CP();c[47]=CP();c[48]=CP();c[49]=CP();c[50]=CP();c[51]=CP();c[52]=CP();c[53]=CP();c[54]=CP();c[55]=CP();c[56]=CP();c[57]=CP();c[58]=CP();c[59]=CP();c[60]=CP();c[61]=CP();c[62]=CP();c[63]=CP();a.bL7=b;},EHS=()=>{let a=new A1t();EJ5(a);return a;}; +function Cd8(){let a=this;CA.call(a);a.dci=null;a.cKJ=0;a.b9K=null;} +let DZh=a=>{CJ(a);a.dci=ALM(a);a.b9K=CP();},EH8=()=>{let a=new Cd8();DZh(a);return a;},EZ8=(a,b)=>{if(b!==null&&b.bQp){Wn();if(b!==A0M){b=new BV;X(b);J(b);}return CL(a.cKJ);}return a;}; +function Btm(){let a=this;CA.call(a);a.bJo=null;a.bKv=null;} +let Eqo=a=>{CJ(a);a.bJo=Q4();},CP=()=>{let a=new Btm();Eqo(a);return a;},BKF=(a,b)=>{let c;c=b;MV(a.bJo,c.bJo);a.bKv=c.bKv;}; +function BZf(){CA.call(this);this.bI9=null;} +let FmJ=a=>{CJ(a);a.bI9=Ca(4);},Q4=()=>{let a=new BZf();FmJ(a);return a;},MV=(a,b)=>{let c,d,e;c=b;d=a.bI9.data;e=c.bI9.data;d[0]=e[0];d[1]=e[1];d[2]=e[2];d[3]=e[3];}; +function CCD(){let a=this;CA.call(a);a.cl8=null;a.b5m=null;a.b8Q=null;a.cFV=null;} +let E9c=a=>{CJ(a);},DM$=()=>{let a=new CCD();E9c(a);return a;}; +function B71(){let a=this;CA.call(a);a.cHm=null;a.cHl=null;a.ckU=null;a.cm$=null;} +let CDz=a=>{CJ(a);},B0R=()=>{let a=new B71();CDz(a);return a;},DMg=N(),B7q=b=>{let c,$$je;Bf();try{b.cSB=b.cSB+1|0;c=EHS();Ci6(c);}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},Ci6=b=>{let c,$$je;Bf();try{b.b4W=0;b.bSq=(-1);c=0;while(c<64){DpZ(b.bL7.data[c]);c=c+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},DpZ=b=>{let $$je;Bf();try{CBQ(b.bJo);b.bKv=null;}catch($$e){$$je=P($$e);b=$$je;J(b);}},Bzb=b=>{let c,d,e,f,$$je;Bf();try{c=Q4();CBQ(c);d=1;e=0;while(e<64){f=b.bL7.data;if(f[e].bKv!==null){if(!d)MV(c,AGt(c, +f[e].bJo));else{MV(c,f[e].bJo);d=0;}}e=e+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},E6$=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,$$je;Bf();try{d=1;e=0;f=0;g=0;h=0;while(h<64){if(c.bL7.data[h].bKv!==null){i=Q4();j=c.bL7.data[h].bJo;k=YC(j);MV(i,AGt(b,j));l=YC(i)-k|0;m=C5(l,e);if(!(m>=0&&!d)){d=0;g=h;f=k;e=l;}else if(!m&&k{let f,$$je;Bf();a:{b:{c:{try{if(d.b4W>=64)break c;f=0;d:{while(true){if(f>=64)break d;e=d.bL7.data;if +(e[f].bKv===null)break;f=f+1|0;}BKF(e[f],c);d.b4W=d.b4W+1|0;}}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}e:{try{if(!b.bZT)break e;I(E(7403));I(E(7404));I(E(5123));I(E(7405));break e;}catch($$e){$$je=P($$e);b=$$je;break b;}}f:{try{Dwt(b,d,c,e);if(d.bSq){I(E(7430));break f;}b.cpZ=b.cpZ+1|0;break f;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return 1;},CKl=(b,c)=>{let $$je;Bf();try{DpZ(b.bL7.data[c]);b.b4W=b.b4W-1|0;}catch($$e){$$je=P($$e);b=$$je;J(b);}}; +function DlW(){let a=this;CA.call(a);a.bQD=null;a.cpa=null;a.dai=0;a.bNm=null;} +let Fu2=a=>{let b,c;CJ(a);b=K(Btm,65);c=b.data;c[0]=CP();c[1]=CP();c[2]=CP();c[3]=CP();c[4]=CP();c[5]=CP();c[6]=CP();c[7]=CP();c[8]=CP();c[9]=CP();c[10]=CP();c[11]=CP();c[12]=CP();c[13]=CP();c[14]=CP();c[15]=CP();c[16]=CP();c[17]=CP();c[18]=CP();c[19]=CP();c[20]=CP();c[21]=CP();c[22]=CP();c[23]=CP();c[24]=CP();c[25]=CP();c[26]=CP();c[27]=CP();c[28]=CP();c[29]=CP();c[30]=CP();c[31]=CP();c[32]=CP();c[33]=CP();c[34]=CP();c[35]=CP();c[36]=CP();c[37]=CP();c[38]=CP();c[39]=CP();c[40]=CP();c[41]=CP();c[42]=CP();c[43] +=CP();c[44]=CP();c[45]=CP();c[46]=CP();c[47]=CP();c[48]=CP();c[49]=CP();c[50]=CP();c[51]=CP();c[52]=CP();c[53]=CP();c[54]=CP();c[55]=CP();c[56]=CP();c[57]=CP();c[58]=CP();c[59]=CP();c[60]=CP();c[61]=CP();c[62]=CP();c[63]=CP();c[64]=CP();a.bQD=b;a.cpa=Q4();b=K(BRC,1);b.data[0]=Dv8();a.bNm=b;},D_t=()=>{let a=new DlW();Fu2(a);return a;}; +function BD1(){let a=this;CA.call(a);a.bIg=null;a.bIb=0;} +let Ezn=a=>{CJ(a);},AKR=()=>{let a=new BD1();Ezn(a);return a;},BBu=a=>{let b;b=new BD1;CJ(b);b.bIg=a.bIg;b.bIb=a.bIb;return b;},Cc4=N(),CgJ=null,Mg=()=>{Mg=Z(Cc4);EGN();},C$2=(b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,$$je;Mg();N_(E(7431),E(7432));a:{b:{try{f=EG();g=EG();h=EG();i=K(AIg,2).data;i[0]=DcZ();i[1]=DcZ();j=null;k=null;BQC(CgJ);}catch($$e){$$je=P($$e);b=$$je;break b;}c:{try{Dvm(b,c.bIb);b.bW7=0;b.bTH=0;Fiu(b,c.bIb*2|0);l=b.bLT;m=l.cHF/2|0;l.bWn=m;l.bTI=m-1|0;n=0;o=Infinity;p=(-1);while(n(Y(c.bIg,n)).bGH){o=(Y(c.bIg,n)).bGH;p=n;}n=n+1|0;}Cd(g,Y(c.bIg,p));l=c.bIg;m=p?p-1|0:c.bIb-1|0;Cd(f,Y(l,m));l=c.bIg;m=p==(c.bIb-1|0)?0:p+1|0;d:{Cd(h,Y(l,m));q=f.bGH;o=g.bGH;if(!(q===o&&o===h.bGH&&h.bGG>g.bGG)&&M9(f,g,h)==1){m=0;while(true){if(m>=c.bIb)break d;e:{if(m>0){q=(Y(c.bIg,m)).bGH;l=c.bIg;r=m-1|0;if(q===(Y(l,r)).bGH&&(Y(c.bIg,m)).bGG===(Y(c.bIg,r)).bGG)break e;}b.b0b.data[b.bW7].bH5=Y(c.bIg,m);s=b.b0b.data;r=b.bW7;s[r].bYr=s[r%c.bIb|0];b.b3_.data[r]=s[r];b.bW7=r+1|0;}m=m+1|0;}}m=c.bIb-1|0;while +(true){if(m<0)break d;f:{if(m<(c.bIb-1|0)){q=(Y(c.bIg,m)).bGH;l=c.bIg;r=m+1|0;if(q===(Y(l,r)).bGH&&(Y(c.bIg,m)).bGG===(Y(c.bIg,r)).bGG)break f;}b.b0b.data[b.bW7].bH5=Y(c.bIg,m);s=b.b0b.data;r=b.bW7;s[r].bYr=s[r%c.bIb|0];b.b3_.data[r]=s[r];b.bW7=r+1|0;}m=m+(-1)|0;}}Dhd(b,b.b3_,b.bW7);t=0;while(t=b.bTH)break g;if(C8D(b,n,Y(d,0)))break;n=n+1|0;}}if(n==b.bTH){I(E(7433));I(E(6125));}r=0;h:{while(true){if(r>=b.bTH)break h;if(C8D(b, +r,Y(d,1)))break;r=r+1|0;}}}catch($$e){$$je=P($$e);if($$je instanceof AIG){break c;}else{b=$$je;break b;}}i:{try{if(r!=b.bTH)break i;Fw(Fm(),E(7434));}catch($$e){$$je=P($$e);if($$je instanceof AIG){break c;}else{b=$$je;break b;}}Ee(E(7431),E(7432));return (-1);}j:{try{if(Cc9(b,n,r))break j;Fw(Fm(),E(7435));B6o(b,2);e.bIb=2;Cd(Y(b.bSI,0),Y(d,0));Cd(Y(b.bSI,1),Y(d,1));e.bIg=b.bSI;}catch($$e){$$je=P($$e);if($$je instanceof AIG){break c;}else{b=$$je;break b;}}Ee(E(7431),E(7432));return 0;}k:{try{if(n!=r)break k;B6o(b, +2);e.bIb=2;Cd(Y(b.bSI,0),Y(d,0));Cd(Y(b.bSI,1),Y(d,1));e.bIg=b.bSI;}catch($$e){$$je=P($$e);if($$je instanceof AIG){break c;}else{b=$$je;break b;}}Ee(E(7431),E(7432));return 0;}try{i[0].bH5=Y(d,0);i[0].bYr=null;i[1].bH5=Y(d,1);i[1].bYr=null;AYf(b,1,i[0]);c=b.bLT;c.b2h=c.bWn;t=n;l:while(t!=(-1)){l=IQ(b.bM0,t);(Y(l,0)).bZ7=2;u=0;m:{while(true){v=C5(u,3);if(v>=0)break m;if((Y(l,0)).bJq.data[u].bQj!==null&&(Y((Y(l,0)).bJq.data[u].bQj,0)).bZ7==1)break;u=u+1|0;}}if(!v){c=Y(d,1);f=b.bLT;s=f.bOQ.data;if(M9(c,s[f.bWn].bH5, +s[f.bTI].bH5)!=1){j=i[1];c=b.bLT;k=c.bOQ.data[c.bTI];}else{c=b.bLT;j=c.bOQ.data[c.bTI];k=i[1];}}else{c=(Y(l,0)).bJq.data[(u+1|0)%3|0].bQ8;if(M9((Y(l,0)).bJq.data[u].bSQ.bH5,c.bH5,(Y(l,0)).bJq.data[u].bQ8.bH5)==1)I(E(7436));else{j=(Y(l,0)).bJq.data[u].bSQ;k=(Y(l,0)).bJq.data[u].bQ8;}}if(t==n){AYf(b,2,j);AYf(b,1,k);}else{c=b.bLT;s=c.bOQ.data;if(!(s[c.bWn]!==k&&s[c.bTI]!==k)){v=CIb(b,j);CC0(b,1,v);AYf(b,2,j);c=b.bLT;if(vc.b2h)c.b2h=v;}}t=(-1);v +=0;n:{while(v<3){if((Y(l,0)).bJq.data[v].bQj!==null&&(Y((Y(l,0)).bJq.data[v].bQj,0)).bZ7==1)break n;v=v+1|0;}continue l;}t=CY6((Y(l,0)).bJq.data[v].bQj,b.bM0);}m=0;c=i[1];while(c!==null){m=m+1|0;c=c.bYr;}B6o(b,m);e.bIb=m;m=m-1|0;c=i[1];while(c!==null){Cd(Y(b.bSI,m),c.bH5);m=m+(-1)|0;c=c.bYr;}e.bIg=b.bSI;}catch($$e){$$je=P($$e);if($$je instanceof AIG){break c;}else{b=$$je;break b;}}Ee(E(7431),E(7432));return 0;}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}Ee(E(7431),E(7432));J(b);}Ee(E(7431),E(7432));return (-2);},Dhd +=(b,c,d)=>{let e,f,g,h,i,j,$$je;Mg();Bf();a:{try{e=CR();ZY(H(e,E(7437)),d);e=CH(e);}catch($$e){$$je=P($$e);b=$$je;break a;}b:{try{BwA(e);if(d>3)break b;c=c.data;CPq(b,c[0],c[1],c[2]);}catch($$e){$$je=P($$e);b=$$je;break a;}return;}try{f=0;c:{while(f=d)break;f=h+1|0;j[h]=j[f];h=f;continue;}catch($$e){$$je=P($$e);b= +$$je;break a;}}try{Dhd(b,c,d);}catch($$e){$$je=P($$e);b=$$je;break a;}return;}J(b);},EkY=(b,c,d,e)=>{let f,g,h,i,j,k,l,$$je;Mg();Bf();a:{b:{try{d=d.data;f=(b+1|0)%e|0;g=((b+e|0)-1|0)%e|0;h=M9(d[g].bH5,d[b].bH5,d[f].bH5)!=1?(M9(d[b].bH5,d[c].bH5,d[f].bH5)!=2?0:1):!(M9(d[b].bH5,d[c].bH5,d[g].bH5)==1&&M9(d[c].bH5,d[b].bH5,d[f].bH5)==1)?0:1;}catch($$e){$$je=P($$e);i=$$je;break b;}c:{try{if(h)break c;}catch($$e){$$je=P($$e);i=$$je;break b;}return 0;}try{j=0;}catch($$e){$$je=P($$e);i=$$je;break b;}d:{try{while(j< +e){k=j+1|0;l=k%e|0;if(j!=b&&l!=b&&j!=c&&l!=c&&DWa(d[b].bH5,d[c].bH5,d[j].bH5,d[l].bH5))break d;j=k;}}catch($$e){$$je=P($$e);i=$$je;break b;}return 1;}try{break a;}catch($$e){$$je=P($$e);i=$$je;break b;}}J(i);}return 0;},CPq=(b,c,d,e)=>{let f,g,h,$$je;Mg();Bf();try{f=b.bTH;g=b.czw;if(f>=g)FuD(b,g+20|0);h=b.bM0;g=b.bTH;b.bTH=g+1|0;h=IQ(h,g);(Y(h,0)).bZ7=0;b=(Y(h,0)).bJq.data[0];c=c;b.bSQ=c;b=(Y(h,0)).bJq.data[0];d=d;b.bQ8=d;(Y(h,0)).bJq.data[0].bQj=null;(Y(h,0)).bJq.data[1].bSQ=d;b=(Y(h,0)).bJq.data[1];d=e;b.bQ8 +=d;(Y(h,0)).bJq.data[1].bQj=null;(Y(h,0)).bJq.data[2].bSQ=d;(Y(h,0)).bJq.data[2].bQ8=c;(Y(h,0)).bJq.data[2].bQj=null;f=0;while(f<3){(Y(h,0)).bJq.data[f].dcf=h;f=f+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Fvq=(b,c,d)=>{let e,f,g,h,i,j,k,l,$$je;Mg();Bf();try{e=IQ(b.bM0,c);f=IQ(b.bM0,d);g=Y(e,0);h=Y(f,0);i=0;while(i<3){j=0;while(j<3){a:{k=g.bJq.data;b=k[i].bSQ.bH5;l=h.bJq.data;if(!(b===l[j].bSQ.bH5&&k[i].bQ8.bH5===l[j].bQ8.bH5)){if(k[i].bSQ.bH5!==l[j].bQ8.bH5)break a;if(k[i].bQ8.bH5!==l[j].bSQ.bH5)break a;}k[i].bQj +=f;l[j].bQj=e;}j=j+1|0;}i=i+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},Cc9=(b,c,d)=>{let e,$$je;Mg();Bf();a:{b:{c:{try{if(!(Y(b.bM0,c)).bZ7)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}d:{try{(Y(b.bM0,c)).bZ7=1;if(c!=d)break d;}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}try{e=0;}catch($$e){$$je=P($$e);b=$$je;break b;}e:{try{while(true){if(e>=3)break e;if((Y(b.bM0,c)).bJq.data[e].bQj!==null&&Cc9(b,CY6((Y(b.bM0,c)).bJq.data[e].bQj,b.bM0),d))break;e=e+1|0;}}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}try +{(Y(b.bM0,c)).bZ7=0;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return 0;},AYf=(b,c,d)=>{let e,$$je;Mg();Bf();try{if(c!=1){b=b.bLT;e=b.bTI;if((e-b.bWn|0)>=0)d.bYr=b.bOQ.data[e];c=e+1|0;b.bTI=c;b.bOQ.data[c]=d;}else{b=b.bLT;c=b.bTI;e=b.bWn;if((c-e|0)>=0)d.bYr=b.bOQ.data[e];c=e-1|0;b.bWn=c;b.bOQ.data[c]=d;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},CC0=(b,c,d)=>{let $$je;Mg();Bf();try{if(c!=1)b.bLT.bWn=d;else b.bLT.bTI=d;}catch($$e){$$je=P($$e);b=$$je;J(b);}},CIb=(b,c)=>{let d,e,f,g,h,$$je;Mg();Bf();a: +{b:{try{d=b.bLT.bWn;}catch($$e){$$je=P($$e);b=$$je;break b;}c:{try{while(true){e=b.bLT;if(d>=e.b2h)break c;f=e.bOQ.data;g=d+1|0;if(M9(f[g].bH5,f[d].bH5,c.bH5)==1)break;d=g;}}catch($$e){$$je=P($$e);b=$$je;break b;}return d;}try{h=e.bTI;}catch($$e){$$je=P($$e);b=$$je;break b;}d:{try{while(true){e=b.bLT;d=e.b2h;if(h<=d)break;f=e.bOQ.data;if(M9(f[h-1|0].bH5,f[h].bH5,c.bH5)==2)break d;h=h+(-1)|0;}}catch($$e){$$je=P($$e);b=$$je;break b;}return d;}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return h;},M9 +=(b,c,d)=>{let e,f,g,h,i,$$je;Mg();Bf();try{e=b.bGG;f=c.bGG;e=e-f;g=d.bGH;h=c.bGH;e=e*(g-h)-(d.bGG-f)*(b.bGH-h);i=e>0.0?1:!(e<0.0)?3:2;}catch($$e){$$je=P($$e);b=$$je;J(b);}return i;},DWa=(b,c,d,e)=>{let f,g,h,i,$$je;Mg();Bf();a:{b:{c:{try{if(M9(b,c,d)!=3&&M9(b,c,e)!=3&&M9(d,e,b)!=3&&M9(d,e,c)!=3)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}d:{try{if(!Bxj(b,c,d)&&!Bxj(b,c,e)&&!Bxj(d,e,b)&&!Bxj(d,e,c))break d;}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}try{}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}e: +{try{if(M9(b,c,d)!=1){f=0;break e;}f=1;break e;}catch($$e){$$je=P($$e);b=$$je;break b;}}f:{try{if(M9(b,c,e)!=1){g=0;break f;}g=1;break f;}catch($$e){$$je=P($$e);b=$$je;break b;}}g:{try{if(M9(d,e,b)!=1){h=0;break g;}h=1;break g;}catch($$e){$$je=P($$e);b=$$je;break b;}}h:{try{if(M9(d,e,c)!=1){i=0;break h;}i=1;break h;}catch($$e){$$je=P($$e);b=$$je;break b;}}i:{try{if(!(f^g&&h^i)){f=0;break i;}f=1;break i;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return f;},Bxj +=(b,c,d)=>{let e,f,g,h,i,j,k,l,$$je;Mg();Bf();a:{b:{c:{try{e=EG();f=EG();e.bGH=c.bGH-b.bGH;e.bGG=c.bGG-b.bGG;f.bGH=d.bGH-b.bGH;f.bGG=d.bGG-b.bGG;if(M9(b,c,d)==3)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}d:{try{g=f.bGH;h=e.bGH;i=g*h;j=f.bGG;k=e.bGG;if(!(i+j*k>=0.0&&g*g+j*j<=h*h+k*k)){l=0;break d;}l=1;break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return l;},C8D=(b,c,d)=>{let e,f,$$je;Mg();Bf();try{e=0;f=0;while(e<3){if(M9((Y(b.bM0,c)).bJq.data[e].bSQ.bH5, +(Y(b.bM0,c)).bJq.data[e].bQ8.bH5,d)!=2)f=f+1|0;e=e+1|0;}c=!(f!=3&&f)?1:0;}catch($$e){$$je=P($$e);b=$$je;J(b);}return c;},Dvm=(b,c)=>{let d,$$je;Mg();Bf();a:{b:{c:{try{if(c>b.cLv)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}d:{try{d=b.b0b;if(d===null){d=B7b(c);b.b0b=d;if(d===null){I(E(7440));I(E(7441));}d=B7b(c);b.b3_=d;if(d!==null)break d;I(E(7442));I(E(7441));break d;}d=CI_(d,c);b.b0b=d;if(d===null){I(E(7443));I(E(7441));}d=CI_(b.b3_,c);b.b3_=d;if(d!==null)break d;I(E(7444));I(E(7441));break d;} +catch($$e){$$je=P($$e);b=$$je;break b;}}try{b.cLv=c;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}},B7b=b=>{let c,d,e,f;Mg();c=K(AIg,b);d=c.data;e=0;b=d.length;while(e{let d,e,f,g;Mg();d=b.data;e=d.length;if(e{let d,e,$$je;Mg();Bf();a:{b:{c:{try{if(c>b.czw)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}d:{try{d=b.bM0;if(d!==null){Ej();e=UX(c,d,A$B);b.bM0 +=e;if(e!==null)break d;I(E(7445));I(E(7441));break d;}Ej();e=Ho(c,A$B);b.bM0=e;if(e!==null)break d;I(E(7446));I(E(7441));break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{b.czw=c;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}},Fiu=(b,c)=>{let d,$$je;Mg();Bf();a:{b:{c:{try{d=b.bLT;if(c>d.cHF)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}d:{try{if(d.bOQ!==null){if(Fw8(d,c))break d;I(E(7447));I(E(7441));break d;}if(EU1(d,c))break d;I(E(7448));I(E(7441));break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}try +{b.bLT.cHF=c;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}},B6o=(b,c)=>{let d,e,$$je;Mg();Bf();a:{b:{c:{try{if(c>b.c7x)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}d:{try{d=b.bSI;if(d!==null){Ej();e=UX(c,d,G9);b.bSI=e;if(e!==null)break d;I(E(7449));I(E(7441));break d;}Ej();e=Ho(c,G9);b.bSI=e;if(e!==null)break d;I(E(7450));I(E(7441));break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{b.c7x=c;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}},EGN=()=>{CgJ=new A5Y;},EU3=N(),BWY=(b, +c,d)=>{let e,f,g,h,$$je;c=BBu(c);Bf();try{e=4+(3*(c.bIb-2|0)|0)|0;if(e>b.cFZ){f=b.bSu;Ej();b.bSu=UX(e,f,G9);b.cFZ=e;}f=b.bSu;g=1;Cd(Y(f,g),Y(c.bIg,0));Cd(Y(b.bSu,0),Y(c.bIg,0));h=2;while(g<(c.bIb-1|0)){Cd(Y(b.bSu,h+2|0),Y(c.bIg,g));Cd(Y(b.bSu,h+1|0),Y(c.bIg,g));Cd(Y(b.bSu,h),Y(c.bIg,g));h=h+3|0;g=g+1|0;}Cd(Y(b.bSu,h+1|0),Y(c.bIg,g));Cd(Y(b.bSu,h),Y(c.bIg,g));d.bIb=e;d.bIg=b.bSu;}catch($$e){$$je=P($$e);b=$$je;J(b);}},CdY=N(),CFB=null,Jr=()=>{Jr=Z(CdY);E5f();},C7l=(b,c,d,e,f,g)=>{let h,i,$$je;Jr();e=BBu(e);Bf();a: +{b:{c:{try{h=e.bIg;i=e.bIb;if(BQC(CFB))I(E(6125));}catch($$e){$$je=P($$e);b=$$je;break c;}d:{try{Cd(Y(f,0),Baq(Y(f,0)));Cd(Y(f,1),Baq(Y(f,1)));b.bNZ=0;BIz(b,4);Cd(Y(b.bVe,b.bNZ),Y(h,0));b.bNZ=b.bNZ+1|0;if(BRR(b,c,d,h,i,Y(f,0),Y(f,1))!=(-1))break d;d=(-1);}catch($$e){$$je=P($$e);b=$$je;break c;}break a;}try{g.bIb=b.bNZ;g.bIg=b.bVe;d=0;break b;}catch($$e){$$je=P($$e);b=$$je;break c;}}J(b);}}return d;},BRR=(b,c,d,e,f,g,h)=>{Jr();return EWj(b,c,d,e,f,Fo(g),Fo(h));},EWj=(b,c,d,e,f,g,h)=>{let i,j,k,l,m,n,o,p,q,r, +s,t,u,v,w,x,y,z,ba,$$je;Jr();Bf();a:{b:{c:{try{i=EG();j=EG();k=EG();l=EG();m=EG();n=EG();o=EG();p=EG();q=EG();r=EG();if(b.cTr>=f)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}d:{e:{try{s=b.bNv;if(s===null)break e;Ej();s=UX(f,s,BaD);b.bNv=s;if(s!==null)break d;}catch($$e){$$je=P($$e);b=$$je;break b;}return (-1);}try{Ej();s=Ho(f,BaD);b.bNv=s;if(s!==null)break d;}catch($$e){$$je=P($$e);b=$$je;break b;}return (-1);}try{b.cTr=f;break c;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{(Y(b.bNv,0)).bR_=0.0;t=1;while +(t=f)break;(Y(b.bNv,w)).bR_=(Y(b.bNv,w)).bR_/(Y(b.bNv,v)).bR_;w=w+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{w=0;while(wx){w=y;x=ba;}y=y+1|0;}Cd(q,Baq(By0(Y(e,w),Y(e,w-1|0))));v=w+1|0;Cd(r,Baq(By0(Y(e,v),Y(e,w))));Cd(p,Baq(BYK(q, +r)));BRR(b,c,d,e,v,g,p);BRR(b,c,d,IQ(e,w),f-w|0,p,h);break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return 0;},EtA=(b,c,d,e,f,g,h,i,j)=>{Jr();return EnN(b,c,d,Fo(e),Fo(f),g,h,i,j);},EnN=(b,c,d,e,f,g,h,i,j)=>{let k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,$$je;Jr();Bf();a:{try{k=EG();l=E4k([2,2]).data;m=Hr(2).data;n=0.0;o=l[0].data;p=l[0].data;q=l[1].data;l[1].data[1]=0.0;q[0]=0.0;p[1]=0.0;o[0]=0.0;m[1]=0.0;m[0]=0.0;r=0;}catch($$e){$$je=P($$e);b=$$je;break a;}s=c-1|0;while(true){try{if(r>=c)break;t=l[0].data;t[0] +=t[0]+A7G((Y(d,r)).bSa.data[0],(Y(d,r)).bSa.data[0]);t=l[0].data;t[1]=t[1]+A7G((Y(d,r)).bSa.data[0],(Y(d,r)).bSa.data[1]);l[1].data[0]=l[0].data[1];q=l[1].data;q[1]=q[1]+A7G((Y(d,r)).bSa.data[1],(Y(d,r)).bSa.data[1]);Cd(k,By0(Y(b,r),BYK(AHy(Y(b,0),EiM((Y(d,r)).bR_)),AHy(Y(b,s),D5e((Y(d,r)).bR_)))));m[0]=m[0]+A7G((Y(d,r)).bSa.data[0],k);m[1]=m[1]+A7G((Y(d,r)).bSa.data[1],k);r=r+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}b:{try{u=l[0].data[0]*l[1].data[1]-l[1].data[0]*l[0].data[1];v=l[0].data[0]*m[1] +-l[0].data[1]*m[0];w=m[0]*l[1].data[1]-m[1]*l[0].data[1];x=QE(u,0.0);if(x<0){y= -u;break b;}y=u;break b;}catch($$e){$$je=P($$e);b=$$je;break a;}}c:{try{if(!(y>=1.0E-6)){w=n;break c;}w=w/u;n=v/u;break c;}catch($$e){$$je=P($$e);b=$$je;break a;}}d:{try{if(x>=0)break d;u= -u;break d;}catch($$e){$$je=P($$e);b=$$je;break a;}}e:{try{if(!(u<1.0E-6)&&!(w<=0.0)&&!(n<=0.0))break e;n=B6C(Y(b,0),Y(b,s))/3.0;w=n;break e;}catch($$e){$$je=P($$e);b=$$je;break a;}}try{Cd(g,Y(b,0));Cd(h,AHy(e,w));Cd(i,Y(b,s));Cd(j,AHy(f,n));} +catch($$e){$$je=P($$e);b=$$je;break a;}return 0;}J(b);},CGk=(b,c)=>{let d,e,f,g,$$je;Jr();Bf();try{d=0.0;e=1;while(e{Jr();return DwF(b,c,d,Fo(e),Fo(f),Fo(g),Fo(h),i,j);},DwF=(b,c,d,e,f,g,h,i,j)=>{let k,l,m,n,o,p,$$je;Jr();Bf();a:{b:{try{Ej();k=Ho(4,G9);l=1;m=j!=2?0:1;n=4.0;o=n;}catch($$e){$$je +=P($$e);b=$$je;break b;}c:{d:{try{while(true){(Y(k,0)).bGH=e.bGH;(Y(k,0)).bGG=e.bGG;(Y(k,1)).bGH=e.bGH+o*f.bGH/3.0;(Y(k,1)).bGG=e.bGG+o*f.bGG/3.0;(Y(k,2)).bGH=g.bGH-n*h.bGH/3.0;(Y(k,2)).bGG=g.bGG-n*h.bGG/3.0;(Y(k,3)).bGH=g.bGH;(Y(k,3)).bGG=g.bGG;if(l&&CGk(k,4)0.01)){n=0.0;o=n;continue;}o=o/2.0;n=n/2.0;}}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}try{BIz(b,b.bNZ+4|0);p=1;while(p<4){(Y(b.bVe,b.bNZ)).bGH=(Y(k,p)).bGH;(Y(b.bVe, +b.bNZ)).bGG=(Y(k,p)).bGG;b.bNZ=b.bNZ+1|0;p=p+1|0;}}catch($$e){$$je=P($$e);b=$$je;break b;}return 1;}e:{try{if(m)break e;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}try{BIz(b,b.bNZ+4|0);p=1;while(p<4){(Y(b.bVe,b.bNZ)).bGH=(Y(k,p)).bGH;(Y(b.bVe,b.bNZ)).bGG=(Y(k,p)).bGG;b.bNZ=b.bNZ+1|0;p=p+1|0;}break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return 1;},DT4=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,$$je;Jr();Bf();a:{try{e=Hr(4);Ej();f=Ho(2,G9);g=EG();h=0;}catch($$e){$$je=P($$e);b=$$je;break a;}i=e.data;b: +{try{while(h=j)break c;if(!(i[k]<1.0E-6)&&!(i[k]>0.999999)){l=i[k];m=l*l*l;n=3.0*l;o=n*l;l=1.0-l;o=o*l;p=n*l*l;q=l*l*l;g.bGH=q*(Y(d,0)).bGH+p*(Y(d,1)).bGH+o*(Y(d,2)).bGH+m*(Y(d,3)).bGH;g.bGG=q*(Y(d,0)).bGG+p*(Y(d,1)).bGG+o*(Y(d,2)).bGG+m*(Y(d,3)).bGG;if(!(CQV(g,Y(f,0))<0.001)&&!(CQV(g,Y(f,1))<0.001))break b;}k=k+1|0;}}}h=h+1|0;}}catch($$e){$$je=P($$e);b=$$je;break a;}return 1;}try{}catch($$e){$$je=P($$e);b=$$je;break a;}return 0;}J(b);},FlT +=(b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,$$je;Jr();N_(E(7451),E(7452));a:{b:{c:{try{e=Hr(4);f=Hr(2).data;g=Hr(2).data;h=Hr(3);i=Hr(3);j=Ca(1);k=j.data;k[0]=0;f[0]=(Y(c,0)).bGH;f[1]=(Y(c,1)).bGH-(Y(c,0)).bGH;g[0]=(Y(c,0)).bGG;g[1]=(Y(c,1)).bGG-(Y(c,0)).bGG;k[0]=0;if(f[1]===0.0)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}d:{try{i=e.data;l=g[1]/f[1];ARa((Y(b,0)).bGG-l*(Y(b,0)).bGH,(Y(b,1)).bGG-l*(Y(b,1)).bGH,(Y(b,2)).bGG-l*(Y(b,2)).bGH,(Y(b,3)).bGG-l*(Y(b,3)).bGH,e);i[0]=i[0]+l*f[0]-g[0];m=BqN(e,h);if +(m!=4)break d;}catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(7451),E(7452));return 4;}try{n=0;}catch($$e){$$je=P($$e);b=$$je;break b;}h=h.data;while(true){try{if(n>=m)break;o=h[n];if(o>=0.0&&o<=1.0){ARa((Y(b,0)).bGH,(Y(b,1)).bGH,(Y(b,2)).bGH,(Y(b,3)).bGH,e);p=(i[0]+o*(i[1]+o*(i[2]+o*i[3]))-f[0])/f[1];if(0.0<=p&&p<=1.0)A2m(o,d,j);}n=n+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{q=k[0];}catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(7451),E(7452));return q;}e:{try{if(g[1]===0.0)break e;}catch($$e){$$je +=P($$e);b=$$je;break b;}f:{try{i=e.data;ARa((Y(b,0)).bGH,(Y(b,1)).bGH,(Y(b,2)).bGH,(Y(b,3)).bGH,e);i[0]=i[0]-f[0];q=BqN(e,h);if(q!=4)break f;}catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(7451),E(7452));return 4;}try{n=0;}catch($$e){$$je=P($$e);b=$$je;break b;}h=h.data;while(true){try{if(n>=q)break;o=h[n];if(o>=0.0&&o<=1.0){ARa((Y(b,0)).bGG,(Y(b,1)).bGG,(Y(b,2)).bGG,(Y(b,3)).bGG,e);p=(i[0]+o*(i[1]+o*(i[2]+o*i[3]))-g[0])/g[1];if(0.0<=p&&p<=1.0)A2m(o,d,j);}n=n+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break b;}}try +{q=k[0];}catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(7451),E(7452));return q;}g:{h:{try{r=e.data;ARa((Y(b,0)).bGH,(Y(b,1)).bGH,(Y(b,2)).bGH,(Y(b,3)).bGH,e);r[0]=r[0]-f[0];q=BqN(e,h);ARa((Y(b,0)).bGG,(Y(b,1)).bGG,(Y(b,2)).bGG,(Y(b,3)).bGG,e);r[0]=r[0]-g[0];s=BqN(e,i);if(q!=4)break h;}catch($$e){$$je=P($$e);b=$$je;break b;}i:{try{if(s!=4)break i;}catch($$e){$$je=P($$e);b=$$je;break b;}Ee(E(7451),E(7452));return 4;}try{t=0;}catch($$e){$$je=P($$e);b=$$je;break b;}i=i.data;while(true){try{if(t>=s)break g;A2m(i[t], +d,j);t=t+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break b;}}}j:{try{if(s!=4)break j;n=0;}catch($$e){$$je=P($$e);b=$$je;break b;}i=h.data;while(true){try{if(n>=q)break g;A2m(i[n],d,j);n=n+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break b;}}}try{n=0;}catch($$e){$$je=P($$e);b=$$je;break b;}e=h.data;i=i.data;while(true){try{if(n>=q)break g;t=0;while(t{let g,$$je;Jr();Bf();try{f=f.data;e=e+3.0*c;d=3.0*d;f[3]=e-(b+d);f[2]=3.0*b+d-6.0*c;f[1]=3.0*(c-b);f[0]=b;}catch($$e){$$je=P($$e);g=$$je;J(g);}},A2m=(b,c,d)=>{let e,$$je;Jr();Bf();try{if(b>=0.0&&b<=1.0){d=d.data;c.data[d[0]]=b;d[0]=d[0]+1|0;}}catch($$e){$$je=P($$e);e=$$je;J(e);}},Baq=b=>{let c,d,$$je;Jr();b=Fo(b);Bf();a:{b:{try{c=b.bGH;c=c*c;d=b.bGG;c=c+d*d;if(c>1.0E-6){c=Gs(c);b.bGH=b.bGH/c;b.bGG=b.bGG/c;}break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return Fo(b);},BIz +=(b,c)=>{let d,e,$$je;Jr();Bf();a:{b:{c:{try{if(c>b.cLL)break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return;}d:{try{d=b.bVe;if(d!==null){Ej();e=UX(c,d,G9);b.bVe=e;if(e!==null)break d;I(E(7453));I(E(7441));break d;}Ej();e=Ho(c,G9);b.bVe=e;if(e!==null)break d;I(E(7454));I(E(7441));break d;}catch($$e){$$je=P($$e);b=$$je;break b;}}try{b.cLL=c;break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}},BYK=(b,c)=>{let $$je;Jr();b=Fo(b);c=Fo(c);Bf();a:{try{b.bGH=b.bGH+c.bGH;b.bGG=b.bGG+c.bGG;break a;}catch($$e){$$je +=P($$e);b=$$je;}J(b);}return Fo(b);},By0=(b,c)=>{let $$je;Jr();b=Fo(b);c=Fo(c);Bf();a:{try{b.bGH=b.bGH-c.bGH;b.bGG=b.bGG-c.bGG;break a;}catch($$e){$$je=P($$e);b=$$je;}J(b);}return Fo(b);},B6C=(b,c)=>{let d,e,$$je;Jr();b=Fo(b);c=Fo(c);Bf();try{d=c.bGH-b.bGH;e=c.bGG-b.bGG;d=Gs(d*d+e*e);}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;},AHy=(b,c)=>{let $$je;Jr();b=Fo(b);Bf();a:{try{b.bGH=b.bGH*c;b.bGG=b.bGG*c;break a;}catch($$e){$$je=P($$e);b=$$je;}J(b);}return Fo(b);},A7G=(b,c)=>{let d,$$je;Jr();b=Fo(b);c=Fo(c);Bf();try +{d=b.bGH*c.bGH+b.bGG*c.bGG;}catch($$e){$$je=P($$e);b=$$je;J(b);}return d;}; +let C2W=b=>{let c,d,$$je;Jr();Bf();try{c=1.0-b;b=c*c*c;}catch($$e){$$je=P($$e);d=$$je;J(d);}return b;},B3Q=b=>{let c,d,$$je;Jr();Bf();try{c=1.0-b;b=3.0*b*c*c;}catch($$e){$$je=P($$e);d=$$je;J(d);}return b;},B8Z=b=>{let c,$$je;Jr();Bf();try{b=3.0*b*b*(1.0-b);}catch($$e){$$je=P($$e);c=$$je;J(c);}return b;},DjF=b=>{let c,$$je;Jr();Bf();try{b=b*b*b;}catch($$e){$$je=P($$e);c=$$je;J(c);}return b;},EiM=b=>{let c,d,$$je;Jr();Bf();try{c=1.0-b;b=c*c*(c+3.0*b);}catch($$e){$$je=P($$e);d=$$je;J(d);}return b;},D5e=b=>{let c, +$$je;Jr();Bf();try{b=b*b*(3.0*(1.0-b)+b);}catch($$e){$$je=P($$e);c=$$je;J(c);}return b;},E5f=()=>{CFB=new A5Y;}; +function Cz8(){let a=this;CA.call(a);a.b3G=null;a.cMF=null;} +let Fcl=a=>{CJ(a);},D3C=()=>{let a=new Cz8();Fcl(a);return a;}; +function BRC(){let a=this;CA.call(a);a.b1U=null;a.cl5=null;a.bOu=null;a.bR2=null;a.b8u=null;} +let DVj=a=>{let b,c;CJ(a);a.b1U=Ca(65);a.cl5=Ca(65);a.bOu=Ca(2);b=K(BZf,2);c=b.data;c[0]=Q4();c[1]=Q4();a.bR2=b;a.b8u=Ca(2);},Dv8=()=>{let a=new BRC();DVj(a);return a;},DFw=N(),CBQ=b=>{let c,$$je;Bf();try{c=0;while(c<4){b.bI9.data[c]=0;c=c+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}},CYn=()=>{let b,c,d,$$je;Bf();try{b=Q4();c=b.bI9.data;c[0]=1;c[2]=(-1);d=1;while(d<2){c[d]=0;c[d+2|0]=0;d=d+1|0;}}catch($$e){$$je=P($$e);b=$$je;J(b);}return b;},YC=b=>{let c,d,e,f,g,h,$$je;Bf();a:{b:{c:{try{c=1;d=b.bI9.data;if(d[0] +<=d[2])break c;}catch($$e){$$je=P($$e);b=$$je;break b;}return 0;}try{e=1;f=0;while(f<2){d=b.bI9.data;g=d[f+2|0]-d[f]|0;h=Ev(c,g);if((h/g|0)!=e){I(E(7455));I(E(7456));}f=f+1|0;c=h;e=h;}break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return e;},AGt=(b,c)=>{let d,e,f,g,$$je;Bf();a:{b:{c:{try{d=Q4();e=b.bI9.data;if(e[0]<=e[2])break c;b=CYN(c);}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}d:{try{e=c.bI9.data;if(e[0]<=e[2])break d;b=CYN(b);}catch($$e){$$je=P($$e);b=$$je;break b;}return b;}try{f=0;while +(f<2){d.bI9.data[f]=DO(b.bI9.data[f],c.bI9.data[f]);g=f+2|0;d.bI9.data[g]=DT(b.bI9.data[g],c.bI9.data[g]);f=f+1|0;}break a;}catch($$e){$$je=P($$e);b=$$je;break b;}}J(b);}return d;},CHS=(b,c)=>{let d,e,f,g,h,$$je;Bf();a:{try{d=0;}catch($$e){$$je=P($$e);b=$$je;break a;}b:{try{while(d<2){e=d+2|0;f=b.bI9.data;g=f[d];h=c.bI9.data;if(g>h[e])break b;if(h[d]>f[e])break b;d=d+1|0;}}catch($$e){$$je=P($$e);b=$$je;break a;}return 1;}try{}catch($$e){$$je=P($$e);b=$$je;break a;}return 0;}J(b);},CLs=N(),BSE=0,ACv=()=>{ACv +=Z(CLs);E7F();},Dwt=(b,c,d,e)=>{let f,g,h,$$je;ACv();Bf();try{if(b.bZT){I(E(7400));I(E(7457));I(E(5293));I(E(7458));}f=c.bSq;E$0(b,c,d);g=b.bKI.bNm.data[0];Fb1(b);h=YC(g.bR2.data[0])+YC(g.bR2.data[1])|0;if(b.bZT&&!b.cRO&&h)I(E(7459));e=e.data;e[0]=B7q(b);c.bSq=f;e[0].bSq=f;D_1(b,c,e[0],g);}catch($$e){$$je=P($$e);b=$$je;J(b);}},E$0=(b,c,d)=>{let e,f,g,$$je;ACv();Bf();try{e=0;while(e<64){BKF(b.bKI.bQD.data[e],c.bL7.data[e]);e=e+1|0;}BKF(b.bKI.bQD.data[64],d);f=b.bKI;MV(f.cpa,f.bQD.data[0].bJo);g=1;while(g<65) +{d=b.bKI;f=d.cpa;MV(f,AGt(f,d.bQD.data[g].bJo));g=g+1|0;}b=b.bKI;b.dai=YC(b.cpa);Ci6(c);}catch($$e){$$je=P($$e);b=$$je;J(b);}},Fb1=b=>{let c,d,e,f,g,h,i,j,k,l,m,n,$$je;ACv();Bf();try{c=0;d=0;EvQ(b);D1v(b);while(true){e=b.bKI.bNm.data;if((e[0].bOu.data[0]+e[0].bOu.data[1]|0)>=65)break;f=e[0].bOu.data[0];g=65-b.dbL|0;if(f>=g)break;if(e[0].bOu.data[1]>=g)break;h=(-1);i=0;while(i<65){if(!b.bKI.bNm.data[0].cl5.data[i]){j=Q4();k=b.bKI;l=k.bQD.data[i].bJo;MV(j,AGt(l,k.bNm.data[0].bR2.data[0]));f=YC(j);e=b.bKI.bNm.data;f +=f-e[0].b8u.data[0]|0;MV(j,AGt(l,e[0].bR2.data[1]));g=YC(j);e=b.bKI.bNm.data;m=(g-e[0].b8u.data[1]|0)-f|0;if(m>=0)n=0;else{n=1;m= -m|0;}f=C5(m,h);if(f>0){c=i;h=m;d=n;}else if(!f&&e[0].bOu.data[n]{let c,d,e,f,g,h,i,j,k,l,$$je;ACv();Bf();a:{try{c=0;d=0;e=Ca(65);f=0;}catch($$e){$$je=P($$e);b=$$je;break a;}g +=e.data;while(true){try{if(f>=65)break;g[f]=YC(b.bKI.bQD.data[f].bJo);f=f+1|0;continue;}catch($$e){$$je=P($$e);b=$$je;break a;}}try{h=0;i=0;while(i<64){f=i+1|0;j=f;while(j<65){k=Q4();e=b.bKI.bQD.data;MV(k,AGt(e[i].bJo,e[j].bJo));l=(YC(k)-g[i]|0)-g[j]|0;if(l>h){c=i;d=j;h=l;}j=j+1|0;}i=f;}BSp(b,c,0);BSp(b,d,1);}catch($$e){$$je=P($$e);b=$$je;break a;}return;}J(b);},BSp=(b,c,d)=>{let e,f,g,$$je;ACv();Bf();try{e=b.bKI;f=e.bNm.data;f[0].b1U.data[c]=d;f[0].cl5.data[c]=1;if(!f[0].bOu.data[d])MV(f[0].bR2.data[d],e.bQD.data[c].bJo);else MV(f[0].bR2.data[d], +AGt(e.bQD.data[c].bJo,f[0].bR2.data[d]));f=b.bKI.bNm.data;f[0].b8u.data[d]=YC(f[0].bR2.data[d]);g=b.bKI.bNm.data;g[0].bOu.data[d]=g[0].bOu.data[d]+1|0;}catch($$e){$$je=P($$e);b=$$je;J(b);}},D_1=(b,c,d,e)=>{let f,g,h,i,$$je;ACv();Bf();a:{try{f=BSE;if(!f&&c===null)J(Jk());if(!f&&d===null)J(Jk());if(!f&&e===null)J(Jk());g=0;}catch($$e){$$je=P($$e);b=$$je;break a;}b:{try{while(g<65){if(!BSE){h=b.bKI.bNm.data;if(h[0].b1U.data[g]&&h[0].b1U.data[g]!=1)break b;}i=b.bKI;h=i.bNm.data;if(!h[0].b1U.data[g])AW6(b,i.bQD.data[g], +c,null);else if(h[0].b1U.data[g]==1)AW6(b,i.bQD.data[g],d,null);g=g+1|0;}}catch($$e){$$je=P($$e);b=$$je;break a;}return;}try{J(Jk());}catch($$e){$$je=P($$e);b=$$je;break a;}}J(b);},EvQ=b=>{let c,d;ACv();Bf();c=b.bKI.bNm.data;c[0].bOu.data[0]=0;c[0].bOu.data[1]=0;MV(c[0].bR2.data[0],CYn());MV(b.bKI.bNm.data[0].bR2.data[1],CYn());c=b.bKI.bNm.data;c[0].b8u.data[0]=0;c[0].b8u.data[1]=0;d=0;while(d<65){c[0].cl5.data[d]=0;c[0].b1U.data[d]=(-1);d=d+1|0;}},E7F=()=>{BSE=0;},AIG=N(DR),Dtl=(a,b)=>{Bp(a,b);},Eaw=a=>{let b +=new AIG();Dtl(b,a);return b;}; +function AIg(){let a=this;CA.call(a);a.bH5=null;a.bYr=null;} +let DPn=a=>{CJ(a);},DcZ=()=>{let a=new AIg();DPn(a);return a;},E7_=N(),BqN=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,$$je;Bf();a:{b:{c:{try{d=b.data;e=d[3];f=d[2];g=d[1];h=d[0];if(!(e<1.0E-7))break c;if(!(e>(-1.0E-7)))break c;i=EOI(b,c);}catch($$e){$$je=P($$e);j=$$je;break b;}return i;}d:{try{k=f/(3.0*e);l=g/e;m=h/e;n=k*k;o=2.0*k*n-k*l+m;p=l/3.0-n;f=o*o;q=f+4.0*p*p*p;if(q<0.0){e= -q;p=0.5*Gs(e+f);r=Nz(Gs(e), -o);p=!(p<0.0)?VT(p,0.3333333333333333):(-1.0)*VT( -p,0.3333333333333333);b=c.data;s=2.0*p;b[0] +=s*G4(r/3.0);b[1]=s*G4((r+3.141592653589793+3.141592653589793)/3.0);b[2]=s*G4((r-3.141592653589793-3.141592653589793)/3.0);t=3;break d;}u=0.5*(Gs(q)-o);v= -o-u;e=!(u<0.0)?VT(u,0.3333333333333333):(-1.0)*VT( -u,0.3333333333333333);p=!(v<0.0)?VT(v,0.3333333333333333):(-1.0)*VT( -v,0.3333333333333333);b=c.data;b[0]=e+p;if(q>0.0){t=1;break d;}p=(-0.5)*b[0];b[2]=p;b[1]=p;t=3;break d;}catch($$e){$$je=P($$e);j=$$je;break b;}}try{i=0;while(i{let d,e,f,g,h,i,j,k,l,$$je;Bf();a:{b:{c:{try{d=b.data;e=d[2];f=d[1];g=d[0];if(!(e<1.0E-7))break c;if(!(e>(-1.0E-7)))break c;h=DW4(b,c);}catch($$e){$$je=P($$e);i=$$je;break b;}return h;}d:{try{j=f/(2.0*e);k=g/e;l=j*j-k;if(!(l<0.0))break d;}catch($$e){$$je=P($$e);i=$$je;break b;}return 0;}e:{try{if(l!==0.0)break e;c.data[0]= -j;}catch($$e){$$je=P($$e);i=$$je;break b;}return 1;}try{b=c.data;b[0]= -j+Gs(l);b[1]=(-2.0)*j-b[0];break a;}catch($$e){$$je=P($$e);i=$$je;break b;}}J(i);}return 2;},DW4=(b,c)=>{let d, +e,f,$$je;Bf();a:{b:{try{b=b.data;d=b[1];e=b[0];if(d<1.0E-7&&d>(-1.0E-7))break b;c.data[0]= -e/d;}catch($$e){$$je=P($$e);f=$$je;break a;}return 1;}c:{try{if(e<1.0E-7&&e>(-1.0E-7))break c;}catch($$e){$$je=P($$e);f=$$je;break a;}return 0;}try{}catch($$e){$$je=P($$e);f=$$je;break a;}return 4;}J(f);},B7k=N(0); +function DdW(){F.call(this);this.c3Z=0;} +let DKq=(a,b)=>{a.c3Z=b;},Bcg=a=>{let b=new DdW();DKq(b,a);return b;},DXm=a=>{return a.c3Z;}; +function CYp(){let a=this;F.call(a);a.cD3=null;a.deP=null;} +let Enl=a=>{return Z3(a.cD3);},Eq_=a=>{return Wt(YO(a.cD3));},FgS=N(); +function TI(){NE.call(this);this.bT5=null;} +let Jw=(a,b)=>{let c,d;if(b instanceof FG){c=a.bxi(a.bHP);c.bT5=DJ(a.bT5,b);}else if(!(b instanceof AMy)){c=a.bxi(a.bHP.h2(b));c.bT5=a.bT5;}else{d=C5o(b,a.bT5);c=a.bxi(a.bHP.h2(d));c.bT5=a.bT5;}return c;},ARI=(a,b)=>{Zx(a,b);a.bT5=LR();},ACY=(a,b)=>{if(!(b instanceof Bgl))(a.bHP.h2(a.bT5)).hP(b);else a.bxj(a.bHP,b,BW(a.bT5.bHu));}; +function BGQ(){let a=this;TI.call(a);a.crj=null;a.cDp=null;} +let AMo=(b,c,d)=>{return Cq2(b,c,d);},MW=(b,c)=>{let d,e;d=new BGQ;e=new Ciz;e.cSm=c;CPO(d,b,e,GT());return d;},CPO=(a,b,c,d)=>{ARI(a,b);a.crj=c;a.cDp=d;},Cq2=(a,b,c)=>{let d=new BGQ();CPO(d,a,b,c);return d;},E3W=(a,b)=>{return Cq2(b,a.crj,a.cDp);},DJB=(a,b,c,d)=>{BjL(c,b,a.crj,d.bHu,a.cDp);}; +function DfV(){let a=this;ALV.call(a);a.cJS=null;a.dcK=0;a.b_G=0;} +function C81(){let a=this;F.call(a);a.bRR=null;a.bMw=0.0;} +let DOY=a=>{let b,c,d,e;b=a.bMw;c=BY(a.bRR);d=new S;T(d);e=D6(H(d,E(7466)),b);Bb(e,32);H(e,c);return Q(d);},E5u=(a,b)=>{a.bRR=b;a.bMw=0.0;},BQH=a=>{let b=new C81();E5u(b,a);return b;}; +function DcE(){let a=this;F.call(a);a.bJb=null;a.c05=0.0;a.czh=0.0;a.cuE=0;a.b_S=0.0;} +let EAv=(a,b)=>{a.czh=0.0;a.cuE=0;a.b_S=0.0;a.bJb=b;},AVv=a=>{let b=new DcE();EAv(b,a);return b;},KJ=(b,c)=>{return AVv(Cl(b,c));},A_P=a=>{return a.c05;},Eni=a=>{return a.cuE;},Fol=a=>{return a.czh;}; +function BMC(){let a=this;A_w.call(a);a.cGd=null;a.cVR=null;} +let EMK=a=>{return a.cGd.p();},D5f=(a,b)=>{return a.cGd;},Fu_=a=>{return a.cVR;},DmD=N(0); +function ABX(){let a=this;F.call(a);a.bLR=null;a.bJd=null;a.bR7=0;a.bM5=null;a.cuQ=null;a.cz0=null;} +let AX8=(a,b,c,d,e,f,g)=>{a.bJd=b;a.bLR=c;a.bR7=d;a.bM5=e;if(f===null)f=Bk();a.cz0=f;if(g===null)g=Bk();a.cuQ=g;},DNv=(a,b)=>{return 0.0;},Bt1=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=a.cuQ.dX();while(c.dY()){d=c.dZ();e=b.h2(BW(a.bxm(d)));f=a.bJd;g=d.cLD.bMT;if(g===null){h=BUa(d);B9();g=(BJ(h,Cz)).cu(d.cmf.bGN);}g=(e.h2(g)).h2(Cc(g));i=Ll(f,d.co9)+d.cvl;j=Ll(f,d.cHQ)-d.cvl;k=j-i;if(!(k>20.0)){Dot(d,g,i-1.0,j+1.0);f=g.h2(GT());DC();f.hP(BfV(d,Gy,BA(i,0.0)));(g.h2(GT())).hP(BfV(d,FL,BA(j,0.0)));}else{Dot(d,g,i+3.0,j-3.0);e +=g.h2(GT());DC();e.hP(BfV(d,FL,BA(i,0.0)));(g.h2(GT())).hP(BfV(d,Gy,BA(j,0.0)));}e=CFT(d,d.cw4);e.cC(g.h2(Bh(i+(k-(e.cF(g.hE())).bGE)/2.0, -DaK(d,g.hE()))));}},XM=(a,b)=>{let c,d,e;c=a.cuQ;if(c.bGJ){d=0.0;c=Br(c);while(Bq(c)){e=Bm(c);d=BC(d,DaK(e,b)-a.bxm(e));}return d;}return 0.0;},Bgq=(a,b,c)=>{let d,e,f,g,h,i;d=a.cz0.dX();while(d.dY()){e=d.dZ();if(e.cj7===c){f=e.c2t;g=f===null?0.0:Ll(a.bJd,f);h=b.h2(BM(g));i=e.cj7;K$();if(i===M5)h=h.h2(BW(5.0));ADH(ChY(e),h);}}},Z2=(a,b,c)=>{let d,e,f;d=0.0;e=a.cz0.dX();while +(e.dY()){f=e.dZ();if(f.cj7===c)d=BC(d,(De(ChY(f),b)).bGF+10.0);}return d;},BiQ=a=>{let b,c;b=a.bM5;B9();c=(BJ(b,Cz)).cu(a.bLR.bGN);return AGc(AAA((BJ(a.bM5,CK)).cu(a.bLR.bGN),c),Fi(a.bM5));},Dpc=a=>{return XK(a.bLR,a.bM5);},AGx=(a,b)=>{let c,d;c=B4(a.bLR.bH$,b);d=Dpc(a);B3();return C_(c,d,CF,a.bLR);},BXQ=(a,b,c,d)=>{(b.h2(I3(c))).hP(DE(d));},B6j=(a,b,c,d)=>{let e,f;e=AE7(a,c);f=DE(Eh(PN(a.bJd),AE7(a,d))-e);(b.h2(BM(e))).hP(f);},AE7=(a,b)=>{let c,d,e;c=a.bJd;d=new Xf;e=E8t(b);NV();XG(d,e,Yk);return Ll(c,d);},A4I +=(a,b,c,d,e)=>{(b.h2(Bh(c,d))).hP(e);},A9f=N(ABX),Eq9=(a,b,c)=>{return;},Dxe=(a,b)=>{return 5.0;}; +function CTC(){let a=this;A9f.call(a);a.cS2=null;a.cK0=null;} +let DFa=(a,b)=>{let c;c=XM(a,b);K$();return c+Z2(a,b,Ku)+a.bR7+Z2(a,b,M5);},ELL=(a,b,c)=>{let d;if(c!==null){d=Ll(a.bJd,c);return AEv(BA(d,BeO(a,b,E(360))),BA(d,BeO(a,b,E(360))));}return null;},BeO=(a,b,c)=>{if(BG(c,E(35)))return C2a(a,b);return Dog(a,b);},Dog=(a,b)=>{let c;c=8.0+XM(a,b);K$();return c+Z2(a,b,Ku);},C2a=(a,b)=>{let c;c=XM(a,b);K$();return c+Z2(a,b,Ku)+a.bR7-8.0;},EX4=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;b=Ef(BiQ(a),b);c=0.0;d=a.cK0;e=d!==null?AKb(d):IN(E(35));f=b.hE();g=Dog(a,f);d=Fg(C2a(a,f)-g);h +=Ta(UA(a.cS2));while(SD(h)){a:{i=Tj(h);j=i.bI1;k=Ll(a.bJd,i.bIu);if(e.dV()!=1)while(true){if(!(c{return XM(a,b)+a.bR7;},DBW=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m;if(c!==null){a:{d=Ll(a.bJd,c);e=a.bMG;f=Cmc(e.cb6,c);if(f!==null)g=f.bG6;else{h=null;i=Ta(CgR(e));b:{while(SD(i)){f=Tj(i);j=f;if(AOB(j.bIu,c)>0)break b;h=f;}g=h.bI1.bG6;break a;}g=j.bI1.bG6;if(h!==null){k=Lq(j.bIu.bJv);e=h;l=e.bI1.bG6;m=Lq(e.bIu.bJv);g=l+(g-l)*(Lq(c.bJv)-m)/(k-m);}}}return AEv(BA(d,AOC(a,b,g)),BA(d,AOC(a,b,g)));}return null;},AOC=(a,b,c)=>{let d;d=(c-ANq(a.bMG))*(a.bR7-16.0)/(APq(a.bMG)-ANq(a.bMG));return XM(a,b)+a.bR7 +-8.0-d;},EUD=(a,b,c)=>{let d,e;a:{if(a.b2F===null){BUu(a,b,ANq(a.bMG),c);BUu(a,b,APq(a.bMG),c);}else{d=Tt(ANq(a.bMG))|0;e=AAC(APq(a.bMG))|0;while(true){if(d>e)break a;if(!(d%a.b2F.bHl|0))BUu(a,b,d,c);d=d+1|0;}}}},Fwt=(a,b)=>{let c,d,e;if(a.b2F===null)c=BC(BZh(a,b,ANq(a.bMG)),BZh(a,b,APq(a.bMG)));else{c=0.0;d=Tt(ANq(a.bMG))|0;e=AAC(APq(a.bMG))|0;while(d<=e){if(!(d%a.b2F.bHl|0))c=BC(c,BZh(a,b,d));d=d+1|0;}}return 5.0+c;},BZh=(a,b,c)=>{return ((CY7(a,c)).cF(b)).bGE;},BUu=(a,b,c,d)=>{let e,f,g;e=CY7(a,c);f=e.cF(b.hE());g +=b.h2(BM(d-f.bGE-2.0));e.cC(g.h2(BW(AOC(a,g.hE(),c)-f.bGF/2.0)));},CY7=(a,b)=>{let c,d,e;c=a.bMG.cMd;if(c===null){c=new S;T(c);D6(c,b);c=Q(c);}else{d=new Sj;T(d);e=CDd(0);c=Q(CtX(c,b,d,e));}d=B4(a.bLR.bH$,c);e=Dpc(a);B3();return C_(d,e,CF,a.bLR);},DJT=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;if(a.b2F!==null){c=CXs(b,a.bM5,a.bLR);d=Tt(ANq(a.bMG))|0;e=AAC(APq(a.bMG))|0;f=DE(PN(a.bJd));while(d<=e){if(!(d%a.b2F.bHl|0))(c.h2(BW(AOC(a,c.hE(),d)))).hP(f);d=d+1|0;}}b=Ef(BiQ(a),b);g=0.0;c=a.cPE;h=c===null?0.0:c.bG6;i=Ta(CgR(a.bMG));while +(SD(i)){c=Tj(i);j=AOC(a,b.hE(),h);f=b.hE();k=c;l=AOC(a,f,k.bI1.bG6);m=Ll(a.bJd,k.bIu);(b.h2(Bh(g,j))).hP(EB(m-g,l-j));h=k.bI1.bG6;g=m;}(b.h2(Bh(g,AOC(a,b.hE(),h)))).hP(DE(PN(a.bJd)-g));c=b.hE();Bt1(a,b.h2(BW(XM(a,c))));}; +function CtQ(){let a=this;A9f.call(a);a.cou=null;a.ca0=null;a.ccZ=null;} +let D5L=(a,b)=>{return a.bR7;},CdT=(a,b)=>{return a.bR7-16.0;},EDn=(a,b,c)=>{let d,e,f,g,h,i,j;if(c!==null){d=Ll(a.bJd,c);e=Lq(c.bJv);f=Lq(a.cou);if(f<=0.0)g=0;else{h=Lq(a.ccZ);if(e{let c,d,e,f,g,h,i;b=Ef(BiQ(a),b);c=Fg(CdT(a,b.hE()));b=b.h2(BW(8.0));d=0.0;if(Lq(a.ccZ)!==0.0){B6j(a,b.h2(BW(c.bQB)),d,Lq(a.ccZ));d=d+Lq(a.ccZ);}if(!(AE7(a,d)>PN(a.bJd))){A4I(a, +b,AE7(a,d),0.0,c);e=Lq(a.ca0)!==0.0?Lq(a.ca0):Lq(a.cou)/2.0;f=Lq(a.cou)-e;g=0;while(g<1000){h=d+e;B6j(a,b,d,h);if(AE7(a,h)>PN(a.bJd))return;A4I(a,b,AE7(a,h),0.0,c);i=b.h2(BW(c.bQB));d=h+f;B6j(a,i,h,d);if(AE7(a,d)>PN(a.bJd))return;A4I(a,b,AE7(a,d),0.0,c);g=g+1|0;}return;}}; +function AUF(){let a=this;ABX.call(a);a.bNE=null;a.b07=null;a.cF2=null;} +let CaI=0,BRs=()=>{BRs=Z(AUF);E2n();},CPl=(a,b,c,d,e,f,g)=>{BRs();if(!d)d=24;AX8(a,b,c,d,e,f,g);a.bNE=Bk();},DS_=(a,b,c)=>{let d,e,f,g;if(c!==null){d=Ll(a.bJd,c);e=A9D(a,b);K$();f=e+Z2(a,b,Ku)+BK3(a,b)+P$(a)/2.0;g=Br(a.bNE);while(true){if(!Bq(g))return AEv(BA(d,f-P$(a)/2.0),BA(d,f+P$(a)/2.0));if(!AOB((Bm(g)).bQK,c))break;}return AEv(BA(d,f),BA(d,f));}return null;},Cxg=(a,b)=>{U(a.bNE,b);},Bc0=(a,b)=>{return Ll(a.bJd,b.bQK);},Ei0=(a,b,c)=>{return;},DMW=(a,b)=>{return AN0(a,b);},EiA=(a,b)=>{let c,d,e,f,g,h,i, +j,k,l,m;c=b.hE();d=A9D(a,c)+BK3(a,c);K$();e=b.h2(BW(d+Z2(a,c,Ku)));if(a.b07!==null){f=e.hE();g=a.bNE;if(g.bGJ){d=Bc0(a,Be(g,0));if(!Bwt(a.b07))a.bxL(e.h2(BM( -AN0(a,f))),AN0(a,f)+d,Be(a.bNE,0));else BRe(a,e.h2(BM( -AN0(a,f))),AN0(a,f)+d,Be(a.bNE,0));}else{g=e.h2(BM( -AN0(a,f)));d=AN0(a,f)+PN(a.bJd);h=a.bM5;B9();f=(BJ(h,CK)).cu(a.bLR.bGN);h=(BJ(a.bM5,Cz)).cu(a.bLR.bGN);f=Ef(AGc(AAA(f,f),Fi(a.bM5)),g);g=DE(d);i=P$(a);if(Bwt(a.b07))((f.h2(h)).h2(BW(i/2.0))).hP(g);else{f.hP(C2(d,i));f=f.h2(h);f.hP(g);(f.h2(BW(i))).hP(g);}}}f +=e.h2(BW(P$(a)/2.0));g=f.hE();h=a.b07;if(h!==null&&!Bwt(h)){h=AGx(a,a.b07);j=h.cF(g);h.cC(f.h2(Bh((-12.0)-j.bGE, -j.bGF/2.0)));}k=0;while(true){f=a.bNE;l=f.bGJ;m=l-1|0;if(k>=m){if(l>=1){f=Be(f,m);d=Bc0(a,f);if(BU8(f))BRe(a,e.h2(BM(d)),PN(a.bJd)-d,f);else if(!AFE(f))a.bxO(e.h2(BM(d)),PN(a.bJd)-d,f);}DY6(a,e.h2(BW(P$(a)/2.0)));Bt1(a,b.h2(BW(A9D(a,c)/2.0)));Bgq(a,b,Ku);Bgq(a,b.h2(BW(A9D(a,c)+P$(a)+Z2(a,c,Ku))),M5);return;}d=Bc0(a,Be(f,k));f=a.bNE;m=k+1|0;i=Bc0(a,Be(f,m));if(Df()&&!CaI&&!(i>d))break;if(BU8(Be(a.bNE, +k)))BRe(a,e.h2(BM(d)),i-d,Be(a.bNE,k));else if(!AFE(Be(a.bNE,k)))a.bxQ(e.h2(BM(d)),i-d,Be(a.bNE,k));k=m;}b=new C4;X(b);J(b);},AN0=(a,b)=>{let c;c=a.b07;if(c!==null)return ((AGx(a,c)).cF(b)).bGE+24.0;return 0.0;},BRe=(a,b,c,d)=>{let e;e=DE(c);((Ef(AS3(d,a.bLR,a.bM5),b)).h2(BW(P$(a)/2.0))).hP(e);},P$=a=>{return a.bR7;},C1s=(a,b,c)=>{a.b07=b;a.cF2=c;},DY6=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=b.hE();d=0;while(true){e=a.bNE;if(d>=e.bGJ)break;f=Be(e,d);g=Ll(a.bJd,f.bQK);if(!Bj(f.b6a.data[0],E(7467))&&!AFE(f)&&!BU8(f)) +{h=AGx(a,AI1(f));i=h.cF(c);e=a.bNE;h.cC(b.h2(Bh(d==(e.bGJ-1|0)?g+12.0:(g+Ll(a.bJd,(Be(e,d+1|0)).bQK))/2.0-i.bGE/2.0, -i.bGF/2.0)));}j=Dqo(a,f);k=j.cF(c);j.cC(b.h2(Bh(g+12.0, -P$(a)/2.0-k.bGF)));d=d+1|0;}},Dqo=(a,b)=>{b=b.coR;if(b===null)return E6(0.0,0.0);return AGx(a,b);},BK3=(a,b)=>{let c,d;c=0.0;d=Br(a.bNE);while(Bq(d)){c=BC(c,((Dqo(a,Bm(d))).cF(b)).bGF);}return c;},CgB=(a,b)=>{let c,d,e;c=AS3(b,a.bLR,a.bM5);b=a.cF2;CM();d=DQ(b,C6);e=DQ(a.cF2,E1);if(d!==null)c=CeU(c,d);if(e!==null)c=AZf(c,e);return c;},A9D +=(a,b)=>{return BC(5.0,XM(a,b));},Fup=(a,b)=>{let c;c=A9D(a,b)+BK3(a,b);K$();return c+Z2(a,b,Ku)+P$(a)+Z2(a,b,M5)+10.0;},E2n=()=>{CaI=0;},DcX=N(AUF),EDg=(a,b,c,d)=>{let e;e=C2(c,P$(a));(Ef(AS3(d,a.bLR,a.bM5),b)).hP(e);},D_H=(a,b,c,d)=>{let e,f,g;e=P$(a);f=CgB(a,d);g=C2(c,e);(Ef(AZf(f,f.bKT),b)).hP(g);d=EE();Ec(d,0.0,0.0);B2(d,c,0.0);B2(d,c,e);B2(d,0.0,e);(Ef(f,b)).hP(d);},Ey7=(a,b,c,d)=>{let e,f;e=P$(a);f=AS3(d,a.bLR,a.bM5);d=C2(c,e);(Ef(AZf(f,f.bKT),b)).hP(d);d=EE();Ec(d,c,0.0);B2(d,0.0,0.0);B2(d,0.0,e);B2(d, +c,e);(Ef(f,b)).hP(d);}; +function BNA(){let a=this;ABX.call(a);a.bJR=null;a.bRq=null;a.bZd=null;} +let BUP=0,B9i=()=>{B9i=Z(BNA);ErM();},EFM=(a,b,c)=>{let d,e,f,g,h,i;if(c!==null){d=Ll(a.bJd,c);e=CsS(a,c);if(e.dV()){f=Bl_(a,b);if(e.dV()!=1){if(Df()&&!BUP&&e.dV()!=2){b=new C4;X(b);J(b);}g=Qs(a,e.cf(0))+f;h=Qs(a,e.cf(1))+f;if(Df()&&!BUP&&g===h){b=new C4;X(b);J(b);}return AEv(BA(d,g),BA(d,h));}i=Qs(a,e.cf(0))+f;return AEv(BA(d,i),BA(d,i));}return null;}return null;},CsS=(a,b)=>{let c,d,e,f,g,h;if(a.bJR.bGJ){c=0;while(true){d=a.bJR;e=d.bGJ;if(c>=e)break;f=AOB((Be(d,c)).bQK,b);if(!f){if(!c&&a.bZd===null){g=K(Bi, +1);g.data[0]=AI1(Be(a.bJR,c));return Bv(g);}if(!c){b=a.bZd;if(b!==null)return Bv(BB(Bi,[b,AI1(Be(a.bJR,c))]));}g=K(Bi,2);h=g.data;b=a.bJR;f=c-1|0;h[0]=AI1(Be(b,f));h[1]=AI1(Be(a.bJR,c));return Bv(g);}if(f>0){e=c?c-1|0:0;return IN(AI1(Be(a.bJR,e)));}c=c+1|0;}return IN(AI1(Be(d,e-1|0)));}return Gi();},A9v=(a,b)=>{let c,d,e,f;c=Be(a.bJR,b);d=Ll(a.bJd,c.bQK);e=AKb(c);if(Bkb(e)==2)return BB(Jn,[BA(d,Qs(a,UF(e,0))),BA(d,Qs(a,UF(e,1)))]);f=K(Jn,1);f.data[0]=BA(d,Qs(a,UF(e,0)));return f;},BJG=(a,b)=>{let c;c=Be(a.bJR, +b);return Ll(a.bJd,c.bQK);},CAV=(a,b)=>{let c;c=AKb(Be(a.bJR,b));if(Bkb(c)==2)return Eh(Qs(a,UF(c,0)),Qs(a,UF(c,1)));return Qs(a,UF(c,0));},CXn=(a,b)=>{let c;c=AKb(Be(a.bJR,b));if(Bkb(c)==2)return BC(Qs(a,UF(c,0)),Qs(a,UF(c,1)));return Qs(a,UF(c,0));},EUI=(a,b,c)=>{let d,e,f,g,h,i,j;d=b.hE();b=b.h2(BW(Bl_(a,d)));e=BYv(a,d);if(a.bZd!==null)e=e+40.0;f=!(c>e+5.0)?b.h2(BM(c-e)):b.h2(BM(c-e-5.0));g=Br(a.bRq);while(Bq(g)){h=Bm(g);i=AGx(a,h);j=i.cF(d);i.cC(f.h2(BW(Qs(a,h)-j.bGF/2.0+1.0)));}},DZL=(a,b)=>{let c,d,e, +f,g,h,i;if(a.bJR.bGJ){b=Ef(BiQ(a),b);b=b.h2(BW(Bl_(a,b.hE())));EH$(a,b);if(a.bZd!==null){c=C6P(a);d=(A9v(a,0)).data[0];e=d.bGK;f=d.bGL;A4I(a,b,e,f,Fg(c.bGL-f));}g=1;while(true){c=a.bJR;if(g>=c.bGJ)break;h=g-1|0;if(!AFE(Be(c,h))&&!AFE(Be(a.bJR,g))){f=Eh(CAV(a,g),CAV(a,h));e=BC(CXn(a,g),CXn(a,h));A4I(a,b,BJG(a,g),f,Fg(e-f));}g=g+1|0;}h=0;while(h{let c,d;c=0.0;d=Br(a.bRq);while(Bq(d)){c=BC(c,((AGx(a,Bm(d))).cF(b)).bGE);}return c;},EoX=(a,b)=>{if(a.bZd!==null)return BYv(a,b)+40.0;return BYv(a,b);},EH$=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;a:{if(a.bZd!==null){c=(A9v(a,0)).data;d=c.length;e=0;while(true){if(e>=d)break a;f=c[e];BXQ(a,b,C6P(a),40.0+f.bGK);e=e+1|0;}}}d=0;while(true){f=a.bJR;g=f.bGJ;if(d>=g)break;b:{if(!AFE(Be(f,d))){h=(d>=(a.bJR.bGJ-1|0)?PN(a.bJd):BJG(a,d+1|0))-BJG(a,d);c=(A9v(a,d)).data;e=c.length;if(e==2){f=b.h2(Cc(CjN(Be(a.bJR,d),a.bLR, +a.bM5)));i=c[0];j=c[1];k=Eh(i.bGL,j.bGL);l=BC(i.bGL,j.bGL);f=f.h2(I3(BA(i.bGK,k)));k=l-k;f.hP(C2(h,k));l=0.0;while(l=e)break b;BXQ(a,b,c[g],h);g=g+1|0;}}}}d=d+1|0;}c:{if(!AFE(Be(f,g-1|0))){c=(A9v(a,a.bJR.bGJ-1|0)).data;d=c.length;e=0;while(true){if(e>=d)break c;f=c[e];BXQ(a,b,f,PN(a.bJd)-f.bGK);e=e+1|0;}}}},DUI=(a,b)=>{let c,d,e,f;c=C9a(a,b.co9);d=Br(a.bJR);while(Bq(d)){e=Bm(d);f=e.bQK;if(!(AOB(b.co9,f)<0&&AOB(b.cHQ,f)>0)?0:1)c +=Eh(c,C9a(a,e.bQK));}return c;},C6P=a=>{return BA((-40.0),Qs(a,a.bZd));},Bl_=(a,b)=>{return BC(10.0,XM(a,b));},ERW=(a,b)=>{let c;c=Bl_(a,b);if(a.bRq.bGJ>0)c=c+CUB(a)*(a.bRq.bGJ-1|0);return c+12.0+6.0;},Qs=(a,b)=>{let c,d;c=a.bRq;d=(c.bGJ-1|0)-Rv(c,b)|0;return CUB(a)*d;},C9a=(a,b)=>{b=CsS(a,b);return Qs(a,b.cf(b.dV()-1|0));},CUB=a=>{let b,c;b=a.bR7;if(b){c=a.bRq.bGJ;if(c>1)return b/(c-1|0)|0;}return 20.0;},ErM=()=>{BUP=0;},CZ3=N(AUF),EKZ=(a,b,c,d)=>{let e,f,g;e=P$(a);b=Ef(AS3(d,a.bLR,a.bM5),b);d=Fj();BQ(d,12.0, +0.0);f=c-12.0;BQ(d,f,0.0);g=e/2.0;BQ(d,c,g);BQ(d,f,e);BQ(d,12.0,e);BQ(d,0.0,g);b.hP(d);},E8H=(a,b,c,d)=>{let e,f,g,h,i;e=P$(a);f=CgB(a,d);g=Fj();BQ(g,0.0,0.0);h=c-12.0;BQ(g,h,0.0);i=e/2.0;BQ(g,c,i);BQ(g,h,e);BQ(g,0.0,e);(Ef(AZf(f,f.bKT),b)).hP(g);d=EE();Ec(d,0.0,0.0);B2(d,h,0.0);B2(d,c,i);B2(d,h,e);B2(d,0.0,e);(Ef(f,b)).hP(d);},DDG=(a,b,c,d)=>{let e,f,g;e=P$(a);f=AS3(d,a.bLR,a.bM5);d=Fj();BQ(d,12.0,0.0);BQ(d,c,0.0);BQ(d,c,e);BQ(d,12.0,e);g=e/2.0;BQ(d,0.0,g);(Ef(AZf(f,f.bKT),b)).hP(d);d=EE();Ec(d,c,0.0);B2(d, +12.0,0.0);B2(d,0.0,g);B2(d,12.0,e);B2(d,c,e);(Ef(f,b)).hP(d);}; +function Co5(){let a=this;F.call(a);a.cD_=null;a.cCG=null;a.cFz=null;a.ciK=null;} +let FqX=(a,b)=>{let c,d,e,f,g;c=CWw(a,b.hE());b=MW(b,c);b=Ef(a.cD_,b);d=a.ciK;e=c.bGE;f=c.bGF;c=a.cD_;CGG(d,b,e,f,c.bHm,c.bIR);d=Buf(a.ciK);c=a.cCG;g=a.cFz;B3();(FT(c,g,CO)).cC(b.h2(Bh(d.bJr,d.bJB)));},CWw=(a,b)=>{let c,d;c=a.cFz.cF(b);d=a.cCG.cF(b);return M$(Buf(a.ciK),JM(d,c));}; +function COY(){let a=this;F.call(a);a.dbw=null;a.cvV=null;a.ddi=null;a.c8s=null;a.cKK=null;a.cDx=null;} +let FjV=(a,b)=>{let c,d,e,f,g;c=b.hE();b=Ef(a.cKK,b);d=A$U(a.cvV,c);Cp8(d,Cf7(b,0.0,0.0,A7N(d)));if(a.cDx.cid){c=A7N(d);d=new Dlp;d.cCp=c;d.bZ1=0.7853981633974483;e=CCn(d)*G4(0.3490658503988659);f=C_U(d)*H0(0.3490658503988659);g=(BA(e*G4(d.bZ1)-f*H0(d.bZ1),e*H0(d.bZ1)+f*G4(d.bZ1))).bGK;e=CCn(d)*G4(d.bZ1);f=C_U(d)*H0(d.bZ1);g= -Erv(2.0*e*g/(e*e+f*f)-G4(0.3490658503988659));d=Fz(c.bMH*0.99,c.bLB*0.99);d.bG1=c.bG1;c=CX9(d,(-0.3490658503988659));d=CX9(d, -g);(b.h2(I3(c))).hP(EB(d.bGK-c.bGK,d.bGL-c.bGL));}},EbT= +(a,b)=>{return De(A$U(a.cvV,b),b);}; +function C60(){let a=this;F.call(a);a.cEC=null;a.cs$=null;a.cGY=null;a.ccO=null;} +let DC$=(a,b)=>{let c,d,e,f,g,h;c=CTT(a,b.hE());b=Ef(a.cEC,b);C1n(a.ccO,b,c.bGE,c.bGF,a.cEC.bHm);d=Dkm(a.ccO);e=a.cs$;f=a.cGY;B3();e=FT(e,f,CO);f=new BIf;g=a.ccO;h=c.bGE;CTQ(f,g,b,h-10.0,h-5.0,c.bGF);b=Bh(d.bJr,d.bJB);e.cC(Jw(f,b));},CTT=(a,b)=>{let c,d;c=a.cGY.cF(b);d=a.cs$.cF(b);return M$(Dkm(a.ccO),JM(d,c));}; +function Cm4(){let a=this;F.call(a);a.cn9=null;a.co6=null;a.cjB=null;a.cJW=null;a.ddT=null;} +let FnT=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=b.hE();d=a.cn9.cF(c);e=a.co6.cF(c);f=a.cjB.cF(c);g=DaJ(a,c);h=(g.bGE-f.bGE)/2.0;i=e.bGF;b=Ef(a.cJW,b);a.cjB.cC(b.h2(Bh(h,i)));j=(g.bGE-d.bGE)/2.0;k=f.bGF+e.bGF;l=MW(b,d);c=a.cn9;d=Bh(j,k);c.cC(Jw(l,d));m=(g.bGE-e.bGE)/2.0;a.co6.cC(b.h2(BM(m)));},DaJ=(a,b)=>{let c,d,e;c=a.cn9.cF(b);d=a.co6.cF(b);e=a.cjB.cF(b);return Cl(ADF(d.bGE,e.bGE,c.bGE),d.bGF+e.bGF+c.bGF);}; +function CMg(){let a=this;F.call(a);a.cxE=null;a.cBD=null;a.cJc=null;a.c2M=null;a.cng=null;} +let ELF=(a,b)=>{let c,d,e,f;c=CME(a,b.hE());b=MW(b,c);b=Ef(a.cxE,b);d=a.cng;e=c.bGE;f=c.bGF;c=a.cxE;CXv(d,b,e,f,c.bHm,c.bIR,c.bQF);d=DsH(a.cng);(FT(a.cBD,a.cJc,a.c2M)).cC(b.h2(Bh(d.bJr,d.bJB)));},CME=(a,b)=>{let c,d;c=a.cJc.cF(b);d=a.cBD.cF(b);return M$(DsH(a.cng),JM(d,c));}; +function CAK(){let a=this;F.call(a);a.cvp=null;a.cHC=null;a.cv7=null;a.c59=null;a.cik=null;} +let EMd=(a,b)=>{let c,d,e,f;c=Drm(a,b.hE());b=MW(b,c);b=Ef(a.cvp,b);d=a.cik;e=c.bGE;f=c.bGF;c=a.cvp;CYm(d,b,e,f,c.bHm,c.bIR,c.bQF);d=Bqw(a.cik);(FT(a.cHC,a.cv7,a.c59)).cC(b.h2(Bh(d.bJr,d.bJB)));},Drm=(a,b)=>{let c,d;c=a.cv7.cF(b);d=a.cHC.cF(b);return M$(Bqw(a.cik),JM(d,c));}; +function CIK(){let a=this;F.call(a);a.cr8=null;a.cIG=null;a.cy1=null;a.cFK=null;a.bYC=null;} +let Eil=(a,b)=>{let c,d,e,f,g,h;c=B8H(a,b.hE());b=MW(b,c);b=Ef(a.cr8,b);d=B9g(a,b.hE());e=a.bYC;f=c.bGE;g=c.bGF;c=a.cr8;Czm(e,b,f,g,d,c.bHm,c.bIR);e=CXr(a.bYC);c=a.cIG;h=a.cy1;B3();h=FT(c,h,CO);if(a.bYC.cle)a.cFK.cC(b.h2(Bh(4.0,3.0)));h.cC(b.h2(Bh(e.bJr,e.bJB+d.bGF)));},B9g=(a,b)=>{return a.bYC.cle?a.cFK.cF(b):Cl(40.0,15.0);},B8H=(a,b)=>{let c,d,e;c=B9g(a,b);d=a.cy1.cF(b);e=a.cIG.cF(b);return M$(CXr(a.bYC),CYO(c,e,d));},DBN=a=>{let b;b=new CsQ;b.b88=a;return b;}; +function DkL(){let a=this;F.call(a);a.cy3=null;a.cya=null;a.cCf=null;a.c1L=null;a.cje=null;} +let EnY=(a,b)=>{let c,d,e,f;c=Dj0(a,b.hE());b=MW(b,c);b=Ef(a.cy3,b);d=a.cje;e=c.bGE;f=c.bGF;c=a.cy3;DhE(d,b,e,f,c.bHm,c.bIR);d=Byf(a.cje);(FT(a.cya,a.cCf,a.c1L)).cC(b.h2(Bh(d.bJr-2.0,d.bJB-2.0)));},Dj0=(a,b)=>{let c,d;c=a.cCf.cF(b);d=a.cya.cF(b);return M$(Byf(a.cje),JM(d,c));}; +function CYW(){let a=this;F.call(a);a.cFB=null;a.cFA=null;a.ctl=null;a.ciO=null;} +let Eqm=(a,b)=>{let c,d,e,f,g;c=Do$(a,b.hE());b=MW(b,c);b=Ef(a.cFB,b);d=a.ciO;e=c.bGE;f=c.bGF;c=a.cFB;Ddj(d,b,e,f,c.bHm,0.0,c.bIR);d=CX5(a.ciO);c=a.cFA;g=a.ctl;B3();(FT(c,g,CO)).cC(b.h2(Bh(d.bJr,d.bJB)));},Do$=(a,b)=>{let c,d;c=a.ctl.cF(b);d=a.cFA.cF(b);return M$(CX5(a.ciO),JM(d,c));}; +function CAh(){let a=this;F.call(a);a.cwL=null;a.csj=null;a.ctR=null;a.cdx=null;} +let EcQ=(a,b)=>{let c,d,e,f,g;c=CuO(a,b.hE());b=Ef(a.cwL,b);CUM(a.cdx,b,c.bGE,c.bGF,a.cwL.bHm);d=Dd0(a.cdx);e=a.csj;f=a.ctR;B3();g=FT(e,f,CO);e=Ctw(a.cdx,b,c.bGE);b=Bh(d.bJr,d.bJB);g.cC(Jw(e,b));},CuO=(a,b)=>{let c,d;c=a.ctR.cF(b);d=a.csj.cF(b);return M$(Dd0(a.cdx),JM(d,c));}; +function C_j(){let a=this;F.call(a);a.ctd=null;a.cqI=null;a.csc=null;a.cm4=null;} +let EGd=(a,b)=>{let c,d,e,f,g;c=CWu(a,b.hE());b=MW(b,c);b=Ef(a.ctd,b);d=a.cm4;e=c.bGE;f=c.bGF;c=a.ctd;CkV(d,b,e,f,c.bHm,c.bIR);d=CQr(a.cm4);c=a.cqI;g=a.csc;B3();(FT(c,g,CO)).cC(b.h2(Bh(d.bJr,d.bJB)));},CWu=(a,b)=>{let c,d;c=a.csc.cF(b);d=a.cqI.cF(b);return M$(CQr(a.cm4),JM(d,c));}; +function Cbb(){let a=this;F.call(a);a.cCN=null;a.cIn=null;a.cCU=null;a.coI=null;} +let ED4=(a,b)=>{let c,d,e,f,g;c=B$k(a,b.hE());b=MW(b,c);b=Ef(a.cCN,b);d=a.coI;e=c.bGE;f=c.bGF;c=a.cCN;CSs(d,b,e,f,c.bHm,c.bIR);d=Cr7(a.coI);c=a.cIn;g=a.cCU;B3();(FT(c,g,CO)).cC(b.h2(Bh(d.bJr,d.bJB)));},B$k=(a,b)=>{let c,d;c=a.cCU.cF(b);d=a.cIn.cF(b);return M$(Cr7(a.coI),JM(d,c));}; +function Dq8(){let a=this;F.call(a);a.ctb=null;a.cEr=null;a.cJh=null;a.c6L=null;a.b_5=null;} +let E2x=(a,b)=>{let c,d,e,f,g,h;c=Cmg(a,b.hE());d=CoU(a,b.hE());b=MW(b,c);b=Ef(a.ctb,b);e=DgT(a.b_5,d);f=a.ctb.bHm;c=Fz(e,e);g=Ge(M6(d),e);g.bG1=f;c.bG1=f;(b.h2(BM((d.bGE-e)/2.0))).hP(c);(b.h2(BW(e))).hP(g);g=FT(a.cEr,a.cJh,a.c6L);h=C0F(a.b_5);g.cC(b.h2(Bh(h.bJr,h.bJB+e)));},Cmg=(a,b)=>{let c;c=CoU(a,b);return FO(c,0.0,DgT(a.b_5,c));},CoU=(a,b)=>{let c,d;c=a.cJh.cF(b);d=a.cEr.cF(b);return M$(C0F(a.b_5),JM(d,c));}; +function CBO(){let a=this;F.call(a);a.cIC=null;a.cqD=null;a.cYw=null;a.dc4=null;} +let E8o=(a,b)=>{let c;c=C_I(a,b.hE());(FT(a.cIC,a.cqD,a.cYw)).cC(b.h2(Bh(c.bGE/4.0,5.0)));},C_I=(a,b)=>{let c,d;c=a.cqD.cF(b);d=JM(a.cIC.cF(b),c);return Cl(d.bGE*2.0,d.bGF+10.0);}; +function CJG(){let a=this;F.call(a);a.cyF=null;a.cwx=null;a.cCt=null;a.clh=null;} +let EBI=(a,b)=>{let c,d,e;c=CwU(a,b.hE());b=MW(b,c);b=Ef(a.cyF,b);CRc(a.clh,b,c.bGE,c.bGF,a.cyF.bHm);d=Ckb(a.clh);c=a.cwx;e=a.cCt;B3();(FT(c,e,CO)).cC(b.h2(Bh(d.bJr,d.bJB)));},CwU=(a,b)=>{let c,d;c=a.cCt.cF(b);d=a.cwx.cF(b);return M$(Ckb(a.clh),JM(d,c));}; +function Cw5(){let a=this;F.call(a);a.cGF=null;a.cu1=null;a.cFR=null;a.co5=null;} +let Faf=(a,b)=>{let c,d,e,f,g;c=CnL(a,b.hE());b=MW(b,c);b=Ef(a.cGF,b);d=a.co5;e=c.bGE;f=c.bGF;c=a.cGF;DdY(d,b,e,f,c.bHm,c.bIR);d=CKh(a.co5);c=a.cu1;g=a.cFR;B3();(FT(c,g,CO)).cC(b.h2(Bh(d.bJr,d.bJB)));},CnL=(a,b)=>{let c,d;c=a.cFR.cF(b);d=a.cu1.cF(b);return M$(CKh(a.co5),JM(d,c));}; +function CKo(){let a=this;F.call(a);a.cCV=null;a.cBt=null;a.cBA=null;a.cAn=null;} +let Emg=(a,b)=>{let c,d,e,f,g,h,i;c=Dc6(a,b.hE());b=MW(b,c);b=Ef(a.cCV,b);d=c.bGE;e=c.bGF;f=a.cCV;g=f.bHm;h=f.bIR;f=Ge(C2(d,e),h);f.bG1=g;b.hP(f);f=C2(10.0,5.0);(b.h2(Bh((-5.0),5.0))).hP(f);(b.h2(Bh((-5.0),e-10.0))).hP(f);i=Djx(a.cAn);f=a.cBt;c=a.cBA;B3();(FT(f,c,CO)).cC(b.h2(Bh(i.bJr,i.bJB)));},Dc6=(a,b)=>{let c,d;c=a.cBA.cF(b);d=a.cBt.cF(b);return M$(Djx(a.cAn),JM(d,c));}; +function CRj(){let a=this;F.call(a);a.cDu=null;a.cth=null;a.cwF=null;a.chA=null;} +let EU4=(a,b)=>{let c,d,e;c=Dmk(a,b.hE());b=MW(b,c);b=Ef(a.cDu,b);CsH(a.chA,b,c.bGE,c.bGF,a.cDu.bHm);d=CgD(a.chA);c=a.cth;e=a.cwF;B3();(FT(c,e,CO)).cC(b.h2(Bh(d.bJr,d.bJB)));},Dmk=(a,b)=>{let c,d;c=a.cwF.cF(b);d=a.cth.cF(b);return M$(CgD(a.chA),JM(d,c));}; +function CK0(){let a=this;F.call(a);a.cTX=null;a.cAI=null;a.cJb=null;a.cZv=null;a.cHS=null;} +let EF9=(a,b)=>{let c;b=MW(b,Dqe(a,b.hE()));b=Ef(a.cTX,b);c=Bc_(a.cHS);(FT(a.cAI,a.cJb,a.cZv)).cC(b.h2(Bh(c.bJr,c.bJB)));},Dqe=(a,b)=>{let c,d;c=a.cJb.cF(b);d=a.cAI.cF(b);return M$(Bc_(a.cHS),JM(d,c));}; +function CLi(){let a=this;F.call(a);a.cBw=null;a.ctT=null;a.cF6=null;a.c5w=null;a.b$p=null;} +let EPo=(a,b)=>{let c,d,e,f;c=Dry(a,b.hE());b=Ef(a.cBw,b);CGf(a.b$p,b,c.bGE,c.bGF,a.cBw.bHm);d=BX1(a.b$p);e=FT(a.ctT,a.cF6,a.c5w);f=CD7(a.b$p,b,c.bGE);b=Bh(d.bJr,d.bJB);e.cC(Jw(f,b));},Dry=(a,b)=>{let c,d;c=a.cF6.cF(b);d=a.ctT.cF(b);return M$(BX1(a.b$p),JM(d,c));}; +function C_u(){let a=this;F.call(a);a.cJu=null;a.cDA=null;a.cAf=null;a.ce9=null;} +let EE9=(a,b)=>{let c,d,e,f,g;c=CMP(a,b.hE());b=MW(b,c);d=Ef(a.cJu,b);e=a.ce9;f=c.bGE;g=c.bGF;b=Cl(0.0,0.0);c=a.cJu;C2$(e,d,f,g,b,c.bHm,c.bIR);e=C2r(a.ce9);b=a.cDA;c=a.cAf;B3();(FT(b,c,CO)).cC(d.h2(Bh(e.bJr,e.bJB)));},CMP=(a,b)=>{let c,d;c=a.cAf.cF(b);d=a.cDA.cF(b);return M$(C2r(a.ce9),JM(d,c));}; +function CY3(){let a=this;F.call(a);a.cIb=null;a.cym=null;a.cwY=null;a.cMc=null;a.cmn=null;} +let DzI=(a,b)=>{let c,d,e,f;c=DsG(a,b.hE());b=MW(b,c);b=Ef(a.cIb,b);d=a.cmn;e=c.bGE;f=c.bGF;c=a.cIb;DsD(d,b,e,f,c.bHm,c.bIR,c.bQF);d=CHn(a.cmn);(FT(a.cym,a.cwY,a.cMc)).cC(b.h2(Bh(d.bJr,d.bJB)));},DsG=(a,b)=>{let c,d;c=a.cwY.cF(b);d=a.cym.cF(b);return M$(CHn(a.cmn),JM(d,c));}; +function DcO(){let a=this;F.call(a);a.b$k=0;a.cdT=null;} +let Dip=a=>{return (A9B(a.cdT.bVB.bNO)).data[a.b$k];},CDm=a=>{return a.cdT.bVB.bPV.data[a.b$k];},Wt=a=>{let b;if(!a.cdT.bVB.bO9.data[a.b$k]){b=new BP;X(b);J(b);}return CDm(a);},DF9=a=>{return Oz(Dip(a))^Oz(CDm(a));},VX=a=>{let b;if(!a.cdT.bVB.bO9.data[a.b$k]){b=new BP;X(b);J(b);}return Dip(a);},Ct8=N(),CHk=null,AMV=null,B8d=()=>{B8d=Z(Ct8);DRZ();},DRZ=()=>{CHk=Bv(BB(Bi,[E(7468),E(7469),E(7470),E(7471),E(7472),E(7473),E(7474),E(7475),E(7476),E(7477),E(7478),E(7479),E(7480),E(7481),E(7482),E(7483),E(7484),E(7485), +E(7486),E(7487),E(7488),E(7489),E(7490),E(7491),E(7492),E(7493),E(7494),E(7495),E(7496),E(7497),E(7498),E(7499),E(7500),E(7501),E(7502),E(7503),E(7504),E(7505),E(7506),E(7507),E(7508),E(7509),E(7510),E(7511),E(7512),E(7513),E(7514),E(7515),E(7516),E(7517),E(7518),E(7519),E(7520),E(7521),E(7522),E(7523),E(7524),E(7525),E(7526),E(7527),E(7528),E(7529),E(7530),E(7531),E(7532),E(7533),E(7534),E(7535),E(7536),E(7537),E(7538),E(7539),E(7540),E(7541),E(7542),E(7543),E(7544),E(7545),E(7546),E(7547),E(7548),E(7549), +E(7550),E(7551),E(7552),E(7553),E(7554),E(7555),E(7556),E(7557),E(7558),E(7559),E(7560),E(7561),E(7562),E(7563),E(7564),E(7565),E(7566),E(7567),E(7568),E(7569),E(7570),E(7571),E(7572),E(7573),E(7574),E(7575),E(7576),E(7577),E(7578),E(7579),E(7580),E(7581),E(7582),E(7583),E(7584),E(7585),E(7586),E(7587),E(7588),E(7589),E(7590),E(7591),E(7592),E(7593),E(7594),E(7595),E(7596),E(7597),E(7598),E(7599),E(7600),E(7601),E(7602),E(7603),E(7604),E(7605),E(7606),E(7607),E(7608),E(7609),E(7610),E(7611),E(7612),E(7613), +E(7614),E(7615),E(7616),E(7617),E(7618),E(7619),E(7620),E(7621),E(7622),E(7623),E(7624),E(7625),E(7626),E(7627),E(7628),E(7629),E(7630),E(7631),E(7632),E(7633),E(7634),E(7635),E(7636),E(7637),E(7638),E(7639),E(7640),E(7641),E(7642),E(7643),E(7644),E(7645),E(7646),E(7647),E(7648),E(7649),E(7650),E(7651),E(7652),E(7653),E(7654),E(7655),E(7656),E(7657),E(7658),E(7659),E(7660),E(7661),E(7662),E(7663),E(7664),E(7665),E(7666),E(7667),E(7668),E(7669),E(7670),E(7671),E(7672),E(7673),E(7674),E(7675),E(7676),E(7677), +E(7678),E(7679),E(7680),E(7681),E(7682),E(7683),E(7684),E(7685),E(7686),E(7687),E(7688),E(7689),E(7690),E(7691),E(7692),E(7693),E(7694),E(7695),E(7696),E(7697),E(7698),E(7699),E(7700),E(7701),E(7702),E(7703),E(7704),E(7705),E(7706),E(7707),E(7708),E(7709),E(7710),E(7711),E(7712),E(7713),E(7714),E(7715),E(7716),E(7717),E(7718),E(7719),E(7720),E(7721),E(7722),E(7723),E(7724),E(7725),E(7726),E(7727),E(7728),E(7729),E(7730),E(7731),E(7732),E(7733),E(7734),E(7735),E(7736),E(7737),E(7738),E(7739),E(7740),E(7741), +E(7742),E(7743),E(7744),E(7745),E(7746),E(7747),E(7748),E(7749),E(7750),E(7751),E(7752),E(7753),E(7754),E(7755),E(7756),E(7757),E(7758),E(7759),E(7760),E(7761),E(7762),E(7763),E(7764),E(7765),E(7766),E(7767),E(7768),E(7769),E(7770),E(7771),E(7772),E(7773),E(7774),E(7775),E(7776),E(7777),E(7778),E(7779),E(7780),E(7781),E(7782),E(7783),E(7784),E(7785),E(7786),E(7787),E(7788),E(7789),E(7790),E(7791),E(7792),E(7793),E(7794),E(7795),E(7796),E(7797),E(7798),E(7799),E(7800),E(7801),E(7802),E(7803),E(7804),E(7805), +E(7806),E(7807),E(7808),E(7809),E(7810),E(7811),E(7812),E(7813),E(7814),E(7815),E(7816),E(7817),E(7818),E(7819),E(7820),E(7821),E(7822),E(7823),E(7824),E(7825),E(7826),E(7827),E(7828),E(7829),E(7830),E(7831),E(7832),E(7833),E(7834),E(7835),E(7836),E(7837),E(7838),E(7839),E(7840),E(7841),E(7842),E(7843),E(7844),E(7845),E(7846),E(7847),E(7848),E(7849),E(7850),E(7851),E(7852),E(7853),E(7854),E(7855),E(7856),E(7857),E(7858),E(7859),E(7860),E(7861),E(7862),E(7863),E(7864),E(7865),E(7866),E(7867),E(7868),E(7869), +E(7870),E(7871),E(7872),E(7873),E(7874),E(7875),E(7876),E(7877),E(7878),E(7879),E(7880),E(7881),E(7882),E(7883),E(7884),E(7885),E(7886),E(7887),E(7888),E(7889),E(7890),E(7891),E(7892),E(7893),E(7894),E(7895),E(7896),E(7897),E(7898),E(7899),E(7900)]));AMV=Bk();},DOJ=N(); +function BNd(){let a=this;NE.call(a);a.bXR=null;a.cpj=null;a.cpM=null;} +let B9n=0,AZD=()=>{AZD=Z(BNd);ED3();},DYw=(a,b)=>{if(!(b instanceof FG)){if(!(b instanceof AG3)&&!F0(b,AER)&&!(b instanceof Np)){b=new BV;X(b);J(b);}return BQ2(a.bXR,a.bHP.h2(b),a.cpj,a.cpM);}return BQ2(a.bXR,a.bHP,a.cpj,DJ(a.cpM,b));},D45=a=>{let b,c;b=BY(a.bXR);c=new S;T(c);H(H(c,E(7901)),b);return Q(c);},DPT=(a,b,c,d,e)=>{AZD();Zx(a,c);a.bXR=b;a.cpj=d;a.cpM=e;},BQ2=(a,b,c,d)=>{let e=new BNd();DPT(e,a,b,c,d);return e;},EbM=(a,b)=>{let c,d,e,f,g,h,i;c=a.cpM;d=c.bHj;e=c.bHu;if(b instanceof ZC){f=b;b=a.bXR;ML();if +(b!==Nb){g=UV(a,e+f.bKg)-UV(a,e);b=AOr(f.bKb,g,f.bUL,f.bUM,f.b4S,f.bZE,f.bZD,f.b77);b.bG1=f.bG1;}else{b=AOr(UV(a,d+f.bKb)-UV(a,d),f.bKg,f.bUL,f.bUM,f.b4S,f.bZE,f.bZD,f.b77);b.bG1=f.bG1;}}if(b instanceof BbA){c=b;h=c.c6v;g=c.cSO;b=a.bXR;ML();if(b===Nb)g=UV(a,d+g)-UV(a,d);c=a;i=(g-(h.cF(Im(c))).bGE)/2.0;h.cC((c.bHP.h2(Dpt(a,d,e))).h2(BM(i)));return;}if(!(b instanceof SA))(a.bHP.h2(Dpt(a,d,e))).hP(b);else{b=b;f=a.bXR;ML();if(f!==Nb)B4H(a,d,UV(a,e),d+b.bT3,UV(a,e+b.bQB));else B4H(a,UV(a,d),e,UV(a,d+b.bT3),e+b.bQB);}},Dpt +=(a,b,c)=>{let d;d=a.bXR;ML();if(d===Nb)return Bh(UV(a,b),c);return Bh(b,UV(a,c));},UV=(a,b)=>{let c,d,e,f;c=a.cpj;d=0.0;c=c.cW$.dX();while(c.dY()){e=c.dZ();f=e.bPU;if(f>b)continue;d=b>e.bSj?d+CB5(e):d+b-f;}return b-d;},B4H=(a,b,c,d,e)=>{let f;if(!(c>e)){if(Df()){AZD();if(!B9n&&!(c<=e)){f=new C4;X(f);J(f);}}(a.bHP.h2(Bh(b,c))).hP(EB(d-b,e-c));return;}B4H(a,d,e,b,c);},ED3=()=>{B9n=0;}; +function CFU(){let a=this;F.call(a);a.cg5=0;a.b19=0;a.cht=0;a.b8M=0;a.cfd=0;} +let EK_=(a,b,c,d,e,f)=>{a.cg5=b;a.b19=c;a.cht=d;a.b8M=e;a.cfd=f;},BBt=(a,b,c,d,e)=>{let f=new CFU();EK_(f,a,b,c,d,e);return f;},Do4=b=>{let c,d,e,f,g,h,i,j;c=new BRi;d=new BRi;e=0;if(!(Bn(b,0)!=43&&Bn(b,0)!=45)){e=Bn(b,0);b=CC(b,1);}f=0;g=0;while(true){if(g>=b.bGI.length){if(c.bYX>0&&d.bYX>0)return BBt(e!=43?0:1,c.b53,d.b53,f,f);return BBt(e!=43?0:1,0,c.b53,f,f);}h=Bn(b,g);if(!AVW(h)){i=c.bYX;if(!i){Cf9(c,h);f=0;}else if(c.b53==h)c.bYX=i+1|0;else{j=d.bYX;if(!j){Cf9(d,h);f=0;}else{if(d.b53!=h)break;d.bYX=j+1 +|0;}}}else if(c.bYX>0)f=f+1|0;g=g+1|0;}return null;}; +function BHq(){F.call(this);this.bMO=null;} +let Cs6=null,C4l=null,Cyi=null,CzH=null,DpP=null,CgP=null,CoM=null,C3_=null,BkT=()=>{BkT=Z(BHq);EXx();},C4m=(a,b)=>{Ww(a.bMO,34);CiA(a,b);Ww(a.bMO,34);},CzG=a=>{Ww(a.bMO,58);},CiA=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=b.bGI.length;d=0;e=0;while(e0){g=C5(f,8232);if(!(g>=0&&f<=8233)){h=null;break a;}h=g?CoM:CgP;break a;}if(!g){h=C4l;break a;}g=C5(f,34);if(g>0){h=null;break a;}if(!g){h=Cs6;break a;}if(f>31){h=null;break a;}if(f==10){h=Cyi;break a;}if(f==13){h=CzH;break a;}if(f== +9){h=DpP;break a;}h=Fd(6);i=h.data;i[0]=92;i[1]=117;i[2]=48;i[3]=48;j=C3_.data;i[4]=j[f>>4&15];i[5]=j[f&15];}if(h!==null){b:{i=h.data;k=a.bMO;g=e-d|0;BCI(k,b,d,g);k=a.bMO;g=i.length;k=k;if(k.bN7>(k.bS1.data.length-g|0)){Bui(k);if(g>k.bS1.data.length){DeI(k.ceW,h,0,g);break b;}}Cdi(h,0,k.bS1,k.bN7,g);k.bN7=k.bN7+g|0;}d=e+1|0;}e=e+1|0;}k=a.bMO;g=c-d|0;BCI(k,b,d,g);},EXx=()=>{Cs6=AA$([92,34]);C4l=AA$([92,92]);Cyi=AA$([92,110]);CzH=AA$([92,114]);DpP=AA$([92,116]);CgP=AA$([92,117,50,48,50,56]);CoM=AA$([92,117,50, +48,50,57]);C3_=AA$([48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102]);}; +function DdO(){let a=this;F.call(a);a.cK5=null;a.cK4=null;} +let BSN=(a,b)=>{let c;c=a.cK5;return a.cK4.OH(c.c2D.dT(b));},CRU=N(0); +function BIR(){let a=this;F.call(a);a.cQc=null;a.b3l=null;a.cIo=null;a.cMk=null;a.cW4=null;a.cCR=null;} +let CRm=null,Dl5=null,A5E=()=>{A5E=Z(BIR);FlS();},D$c=(a,b,c,d,e,f)=>{A5E();a.cCR=Dy();a.cW4=f;a.cMk=e;a.cQc=b;a.b3l=B$(d);a.cIo=c;},BR9=(a,b,c,d,e)=>{let f=new BIR();D$c(f,a,b,c,d,e);return f;},CDQ=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m;if(F0(d,Bvj)){f=d;if(f.byD())d=null;else{f.byE(b);return null;}}if(d instanceof BGq&&A8x(b)){DlF(d,b);return null;}if(d instanceof BZU&&Bq1(A0W(b))){CtT(d,b);return null;}if(!A8x(b)){if(!Bq1(b)){if(!Bj(b,E(7902))){if(!Bj(b,E(403))){g=!(d instanceof ALY)?a.cIo:d.bQ7;f=D5b(b,c,e,a.b3l, +a.cMk);h=Bk();i=(A0k(Dmw,f.bRP)).data;j=i.length;k=0;while(k{A5E();return Kr(D3(CRm,b));},S0=(a,b)=>{let c,d,e,f,g,h,i;c=DG(a.cCR,b);if(c===null){a:{c=DPk(a.cIo);if(!FQ(b)){d=BX5();e=Xo(b);b:while(true){if(!e.dY())break a;c:{f=e.dZ();g=AFV(f);if(g!==null){g=CIG(g,e,a.b3l);h=K(TM,1);i=h.data;f=new B9H;f.deY=a;f.cS3=g;i[0]=f;g=Bv(h);}else{if(f instanceof ASc)break c;g +=CDQ(a,ANH(a.b3l.bpR(),f.p()),d,Cw2(c),a.cQc);}if(g!==null)Dqq(c,g);continue b;}if(!b.bMJ)continue;g=(T0(f,a.b3l.bpR())).dX();while(g.dY()){Dqq(c,CDQ(a,g.dZ(),d,Cw2(c),a.cW4));}}}}C9(a.cCR,b,c);}return c;},FlS=()=>{CRm=Dp(E(7903));Dl5=Dp(E(7904));},CKx=N(),Cpk=null,BEA=()=>{BEA=Z(CKx);Ft9();},Ft9=()=>{let b,c;b=Ca((CMo()).data.length);c=b.data;Cpk=b;c[Xk.bGO]=1;c[Ug.bGO]=2;c[Xa.bGO]=3;c[WE.bGO]=4;},CYL=N(),CWl=null,BPW=()=>{BPW=Z(CYL);EFu();},EFu=()=>{let b,c;b=Ca((CMo()).data.length);c=b.data;CWl=b;c[Xk.bGO] +=1;c[Ug.bGO]=2;c[Xa.bGO]=3;c[WE.bGO]=4;}; +function CRf(){let a=this;If.call(a);a.c$K=0;a.bWi=null;a.cns=null;a.cx0=0;a.cu5=0;a.ckg=null;a.cAP=0;a.cGq=0;a.c6s=0;} +let Ta=a=>{let b,c;if(a.c6s){b=!a.cGq?C66(a.bWi,1):!a.cAP?B1F(a.bWi,a.ckg,1):DsM(a.bWi,a.ckg,1);c=DlD(a.bWi,b,a.cns,a.cu5,a.cx0,1);}else{b=!a.cu5?C66(a.bWi,0):!a.cx0?B1F(a.bWi,a.cns,0):DsM(a.bWi,a.cns,0);c=DlD(a.bWi,b,a.ckg,a.cGq,a.cAP,0);}return c;},BLN=N(0); +function CGU(){F.call(this);this.b_X=null;} +let DEp=(a,b,c)=>{let d;b=b;c=c;d=a.b_X.cey;IS(d,KE(null,d,B1(d.bGM),b,c,a.b_X.caa,KY(2)));},ETx=(a,b,c)=>{let d;b=b;c=c;d=a.b_X.cey;IS(d,KE(null,d,B1(d.bGM),b,c,a.b_X.caa,KY(1)));},BZb=N(),CP0=(a,b,c)=>{let d,e,f,g,h;b=b;d=BJm(b.bGJ);e=0;f=1;while(f{let c;c=Gs(b)|0;if(Ev(c,c)!=b)return c+1|0;return c;}; +function B_C(){let a=this;F.call(a);a.chT=null;a.cOy=0.0;a.cN3=0.0;} +let CpW=(a,b)=>{let c,d,e,f;if(!b){c=CDk(a.chT);d=CP1(V(24));e=c.bN6;f=c.bSe;d=D4(e,O(0, 2147483648))?ALa(d,LF(e),V( -f|0)):ALa(ALa(d,O(4294967295, 2147483647),V( -f|0)),V(1),BH);return A3_(a,c)+A_S(a,d);}return A_S(a,CP1(V(24)));},AX_=(a,b)=>{let c,d,e,f,g;Qi();c=ARV;No();d=S4;e=B4T(a.chT);f=c;while(e.dY()){g=e.dZ();if(BZd(b,g.bRC)){b=ANx(f,ABr(d,b));return A3_(a,c)+A_S(a,b);}if(BZd(b,g.bRM)){d=ANx(f,ABr(d,g.bRC));return A3_(a,ANx(c,ABr(g.bRC,b)))+A_S(a,d);}f=ANx(f,ABr(d,g.bRC));c=ANx(c,ABr(g.bRC,g.bRM));d +=g.bRM;}b=ANx(f,ABr(d,b));return A3_(a,c)+A_S(a,b);},A3_=(a,b)=>{return Id(b.bN6)*a.cOy/86400.0;},A_S=(a,b)=>{return a.cN3*A3_(a,b);},B2W=N(DR); +function B$0(){let a=this;F.call(a);a.cIW=null;a.ddW=null;a.c7z=null;} +function Cyr(){let a=this;ALV.call(a);a.c3_=null;a.c8E=null;} +function C6D(){F.call(this);this.bPT=0;} +let DTp=a=>{let b,c;b=a.bPT;c=new S;T(c);Bb(c,83);BE(c,b);return Q(c);},CTt=(b,c)=>{if(b.bPT{if(b.bPT>c.bPT)return b;return c;},DJD=(a,b)=>{return T1(a.bPT,b.bPT);}; +function CnJ(){let a=this;F.call(a);a.cJn=null;a.c3N=0;a.b98=null;} +let B5P=(a,b)=>{return FO(CFe(a.cJn,b,0.0,0.0),B2a(a),0.0);},C5n=(a,b)=>{let c,d;c=(B5P(a,b)).bGF;d=Br(a.b98);while(Bq(d)){c=BC(c,((Bm(d)).Te(b,0.0,0.0)).bGF);}return c;},B2a=a=>{return a.c3N*10|0;}; +function CmD(){let a=this;JC.call(a);a.cy_=null;a.cn2=null;a.cAk=null;a.cKt=0.0;} +let EYY=(a,b,c,d)=>{let e,f;e=U9(c);f=K(KH,1);f.data[0]=b;c=PB(f);B3();a.cy_=C_(c,e,CF,d);a.cn2=b;},Cjk=(a,b,c)=>{let d=new CmD();EYY(d,a,b,c);return d;},ATV=(a,b,c,d)=>{if(Bj(a.cn2,E(1272)))return Cl(10.0,5.0);return a.cy_.cF(b);},B5L=(a,b,c,d)=>{let e;b=b.h2(QW(a));if(a.cAk!==null){e=ATV(a,b.hE(),0.0,0.0);(b.h2(Cc(a.cAk))).hP(C2(e.bGE,e.bGF));}a.cy_.cC(b);}; +function Ddc(){F.call(this);this.cn4=null;} +let Dyp=(a,b,c,d)=>{return a.cn4.Te(b,0.0,0.0);},EAc=(a,b,c,d)=>{a.cn4.a23(b,c,d);},EmT=a=>{return a.cn4.Tf();}; +function CRY(){F.call(this);this.c$2=null;} +function CJT(){let a=this;Hx.call(a);a.cnl=0.0;a.cEQ=0.0;a.ciG=null;a.cFT=0.0;a.cQS=null;} +let BP4=(a,b)=>{return Iz(a,b)+2.0*a.cnl+a.ciG.bHm;},D26=(a,b)=>{return He(a,b)+2.0*a.cEQ+a.ciG.bHm;},FsD=a=>{return a.cnl;},Ehm=a=>{return a.cEQ;},EUO=(a,b,c)=>{let d,e,f,g,h,i,j;d=b.hE();e=He(a,d)|0;f=Iz(a,d)|0;g=c.bJb.bGE-BP4(a,d);if(!(g<0.0)){if(c.bJb.bGE>BP4(a,d))f=c.bJb.bGE-2.0*a.cnl|0;h=f;i=B0t(h,e,a.cFT);j=a.ciG;i.bG1=j.bHm;b=Ef(j,b);b.hP(i);b.hP(BD4(h,a.cFT));j=AMo(b,a,GT());b=a.cQS;B3();if(b===CF){b=Bh(R2(a),RR(a));b=Jw(j,b);}else if(b!==Ft){b=Bh(R2(a)+g/2.0,RR(a));b=Jw(j,b);}else{b=Bh(c.bJb.bGE-Iz(a, +d),RR(a));b=Jw(j,b);}a.bJQ.cC(b);return;}b=new Bt;X(b);J(b);},DV3=(a,b,c)=>{return 0.0;},Exu=(a,b,c)=>{return Iz(a,b);}; +function CQf(){let a=this;Hx.call(a);a.c7_=10;a.cGt=null;} +let BGa=(a,b)=>{return Iz(a,b)+10.0;},EPg=(a,b)=>{return He(a,b)+10.0;},ETA=a=>{return 5.0;},DLL=a=>{return 5.0;},FsJ=(a,b,c)=>{let d,e,f,g,h,i,j,k;d=b.hE();e=He(a,d)|0;f=Iz(a,d)|0;g=c.bJb.bGE-BGa(a,d);if(!(g<0.0)){if(c.bJb.bGE>BGa(a,d))f=c.bJb.bGE-10.0|0;h=Fj();BQ(h,10.0,0.0);i=f-10|0;BQ(h,i,0.0);j=f;k=e/2|0;BQ(h,j,k);j=e;BQ(h,i,j);BQ(h,10.0,j);BQ(h,0.0,k);BQ(h,10.0,0.0);b=Ef(a.cGt,b);h.bG1=a.cGt.bHm;b.hP(h);b=b.h2(GT());a.bJQ.cC(b.h2(Bh(R2(a)+g/2.0,RR(a))));return;}b=new Bt;X(b);J(b);}; +function Cpt(){let a=this;Hx.call(a);a.cHK=null;a.cTT=0.0;} +let B1P=(a,b)=>{return Iz(a,b)+10.0;},D2I=(a,b)=>{return He(a,b)+10.0;},DNn=a=>{return 5.0;},E0i=a=>{return 5.0;},EdV=(a,b,c)=>{let d,e,f,g,h;d=b.hE();e=He(a,d)|0;f=Iz(a,d)|0;g=c.bJb.bGE-B1P(a,d);if(!(g<0.0)){if(c.bJb.bGE>B1P(a,d))f=c.bJb.bGE-10.0|0;b=Ef(a.cHK,b);h=Ge(C2(f,e),a.cTT);h.bG1=a.cHK.bHm;b.hP(h);b=b.h2(GT());a.bJQ.cC(b.h2(Bh(R2(a)+g/2.0,RR(a))));return;}b=new Bt;X(b);J(b);}; +function CJU(){let a=this;S_.call(a);a.cSu=null;a.c$B=0;a.cY8=null;a.cS5=null;} +let DVd=(a,b,c)=>{let d,e,f;d=c.bJb;b=(b.h2(a.cSu)).h2(a.cY8);Hb();b.hH(AU$(ANo,Doa(a.cS5)));if(d.bGF>0.0){c=(b.h2(Dw(0.0))).h2(Qj());AVh();e=BB3;f=BiE;((c.h2(Cc(C3d(f.bJI,f.clp,e)))).h2(BM((d.bGE-8.0)/2.0))).hP(C2(8.0,d.bGF));}(b.h2(BM(d.bGE/2.0|0))).hP(Fg(d.bGF));b.hI();},DCN=(a,b)=>{return 20.0;},E65=(a,b)=>{return 1.0;}; +function CGJ(){let a=this;Hx.call(a);a.daO=10;a.c_$=0;a.b76=null;a.cB1=null;a.b7r=null;a.cLb=null;a.b36=0.0;} +let EVA=(a,b,c,d,e,f)=>{let g,h;Jo();DhH(a,d,JJ,OE(1.0,30.0,1.0,15.0),f,Ne(e,0));a.daO=10;a.c_$=0;B9();a.b36=(BJ(c,Jm)).oX();a.cB1=b?Qj():(BJ(c,CK)).cu(WM(a));g=a;a.b7r=AB8(c,WM(g));a.cLb=AB8(d,WM(g));h=D0(c,WM(g));if(!(I6(e)!=1&&Ne(e,1)!==null))a.b76=null;else{c=f.gs();d=BY(Ne(e,1));e=new S;T(e);Bb(e,91);Bb(H(e,d),93);g=B4(c,Q(e));B3();a.b76=C_(g,h,CF,f);}B$(a.cB1);},CTj=(a,b,c,d,e)=>{let f=new CGJ();EVA(f,a,b,c,d,e);return f;},DQf=(a,b)=>{let c,d;c=a.b76;if(c===null)d=0.0;else{c=c.cF(b);d=R2(a)+0.0+c.bGE;}return Iz(a, +b)+d;},E6F=(a,b)=>{let c,d,e,f;c=He(a,b)+0.0;d=a.b76;if(d===null)e=0.0;else{f=(d.cF(b)).bGF;e=!(f>15.0)?0.0:f-15.0;}return c+e;},EDC=(a,b,c)=>{let d,e,f;d=c.bJb;b=(B8m(a.b7r,b)).h2(a.b7r.bMx);e=Ge(C2(d.bGE,d.bGF),a.b36);f=a.b7r.bHm;e.bG1=f;(b.h2(Cc(a.cB1))).hP(e);},Ema=(a,b,c)=>{let d,e,f,g,h,i;d=c.bJb;e=b.hE();f=Iz(a,e);g=He(a,e);c=Ef(a.cLb,b);e=EE();h=a.b36;if(h===0.0){Ec(e,0.0,0.0);B2(e,f,0.0);B2(e,f,g-10.0);B2(e,f-10.0,g);B2(e,0.0,g);B2(e,0.0,0.0);}else{Ec(e,h/2.0,0.0);B2(e,f,0.0);B2(e,f,g-10.0);B2(e,f- +10.0,g);B2(e,0.0,g);B2(e,0.0,a.b36/2.0);i=a.b36/2.0;Mk(e,i,i,0.0,0.0,1.0,i,0.0);}c.hP(e);b=(B8m(a.b7r,b)).h2(a.b7r.bMx);b.hP(Ge(C2(d.bGE,d.bGF),a.b36));b=b.h2(GT());a.bJQ.cC(b.h2(Bh(R2(a),RR(a))));if(a.b76!==null){i=R2(a)+f;h=RR(a)+1.0;a.b76.cC(b.h2(Bh(i+0.0,h)));}}; +function CEf(){let a=this;Hx.call(a);a.cTs=null;a.cHV=null;a.b60=0.0;a.cDf=0;} +let E4Q=(a,b,c,d,e)=>{let f,g,h;Jo();f=JJ;g=OE(1.0,5.0,1.0,5.0);if(d===null)d=null;else{d=BY(d);h=new S;T(h);Bb(h,91);Bb(H(h,d),93);d=Q(h);}DhH(a,c,f,g,e,d);a.cDf=b;a.b60=ANi(a);a.cTs=AL0(a);a.cHV=!b?BZz(a):Qj();},CxE=(a,b,c,d)=>{let e=new CEf();E4Q(e,a,b,c,d);return e;},DCT=(a,b,c)=>{let d,e,f,g,h,i;if(!a.cHV.gv()){d=c.bJb;b=(b.h2(E4())).h2(Cc(a.cHV));e=d.bGE;f=d.bGF;if(a.b60===0.0)g=C2(e,f);else{g=EE();Ec(g,0.0,0.0);B2(g,e,0.0);B2(g,e,f-a.b60/2.0);h=a.b60/2.0;Mk(g,h,h,0.0,0.0,1.0,e-h,f);B2(g,a.b60/2.0,f);i +=a.b60/2.0;Mk(g,i,i,0.0,0.0,1.0,0.0,f-i);B2(g,0.0,0.0);}b.hP(g);return;}},EzF=(a,b,c)=>{let d;d=c.bJb;b=(b.h2(J$(2.0,2.0,1.0))).h2(a.cTs);(b.h2(BW(1.0))).hP(DE(d.bGE));c=b.h2(GT());if(!a.cDf)a.bJQ.cC(c.h2(Bh(R2(a),RR(a))));else a.bJQ.cC(c.h2(Bh(R2(a),RR(a)+2.0)));},DL1=(a,b)=>{if(a.cDf)return He(a,b)+4.0;return He(a,b);},Eac=(a,b)=>{return Iz(a,b);}; +function CHH(){F.call(this);this.cD6=0.0;} +let ESU=(a,b)=>{return 0.0;},FbH=(a,b)=>{return a.cD6;},EfO=(a,b,c,d)=>{return;},Fj1=(a,b)=>{return Cl(0.0,a.cD6);}; +function CBC(){let a=this;S_.call(a);a.b8a=null;a.cI8=0;a.cCi=0;a.cVw=null;} +let D68=(a,b,c,d,e,f)=>{AQN(a,b,f);a.b8a=Zv(a);a.cI8=c;a.cCi=d;if(e===null){HW();e=Lu;}a.cVw=e;},BuI=(a,b,c,d,e)=>{let f=new CBC();D68(f,a,b,c,d,e);return f;},EmM=(a,b,c)=>{let d,e,f,g,h,i;d=c.bJb;b.hE();e=(d.bGE-10.0|0)/2|0;if(d.bGF!==0.0){Hb();b.hH(AU$(ANo,Doa(a.cVw)));f=C2(10.0,d.bGF);if(A$8(a.b8a))f.bG1=1.0;c=b.h2(a.b8a.bMx);if(a.cI8&&a.cCi)((c.h2(Cc(a.b8a.bKT))).h2(BM(e))).hP(f);else{b=(c.h2(Cc(a.b8a.bKT))).h2(a.b8a.bKT);g=e;(b.h2(BM(g))).hP(f);h=Fg(d.bGF);(c.h2(BM(g))).hP(h);(c.h2(BM(g+10.0))).hP(h);i +=DE(10.0);if(a.cI8)(c.h2(BM(g))).hP(i);if(a.cCi)(c.h2(Bh(g,d.bGF))).hP(i);}c.hI();return;}},DNY=(a,b)=>{return 0.0;},DGd=(a,b)=>{return 10.0;}; +function Col(){S_.call(this);this.c11=null;} +let Dzk=(a,b,c)=>{let d,e;d=c.bJb;b=(b.h2(AGS(a))).h2(a.c11);e=d.bGE/2.0|0;Bvk();((b.h2(BJi)).h2(BM(e))).hP(Fg(d.bGF));},Fsc=(a,b)=>{return 20.0;},D2l=(a,b)=>{return 1.0;},Cxi=N(Hx),Ft6=(a,b,c)=>{let d,e,f,g,h,i,j;d=c.bJb;e=a.bJQ;f=b.hE();g=Iz(a,f);h=He(a,f);i=(d.bGE-g)/2.0;j=(d.bGF-h)/2.0;e.cC(b.h2(Bh(i,j+RR(a))));},FhT=(a,b)=>{return He(a,b)+20.0;},D$u=(a,b)=>{return A2E(a,b);}; +function C$b(){let a=this;S_.call(a);a.c2T=null;a.ddD=9;} +let D0J=(a,b,c)=>{b=(b.h2(AGS(a))).h2(a.c2T);b.hP(EB(18.0,18.0));(b.h2(BW(18.0))).hP(EB(18.0,(-18.0)));},Dyq=(a,b)=>{return 18.0;},DSI=(a,b)=>{return 18.0;}; +function Cpi(){let a=this;Hx.call(a);a.cC6=null;a.cyk=null;a.cST=0;a.ctX=0.0;a.cug=null;a.cC0=0.0;} +let ESh=(a,b,c)=>{let d,e,f,g,h,i,j,k,l;d=c.bJb;b=b.h2(Cc(a.cyk));if(a.cST)C0f(a,b.h2(BW(d.bGF/2.0)),d.bGE);else{e=a.bJQ;f=b.hE();g=Iz(a,f);h=He(a,f);i=(d.bGE-g-6.0)/2.0;j=d.bGF;k=(j-h)/2.0;C0f(a,b.h2(BW(j/2.0)),d.bGE);c=(b.h2(a.cC6)).h2(a.cug);l=Ge(C2(g+6.0,h),a.cC0);l.bG1=a.ctX;(c.h2(Bh(i,k))).hP(l);e.cC(c.h2(Bh(i+6.0,k+RR(a))));}},C0f=(a,b,c)=>{let d,e,f;b=b.h2(a.cyk);d=b.h2(BW((-1.0)));e=Ge(C2(c,3.0),a.cC0);f=a.ctX;e.bG1=f;(d.h2(GT())).hP(e);b=(b.h2(Dw(a.cug.bJw/2.0))).h2(a.cC6);d=DE(c);(b.h2(BW((-1.0)))).hP(d);(b.h2(BW(2.0))).hP(d);},DTX +=(a,b)=>{return He(a,b)+20.0;},Fj2=(a,b)=>{return Iz(a,b)+30.0;}; +function CM8(){let a=this;Hx.call(a);a.ddG=10;a.cfo=null;a.deo=5.0;a.c7V=2.0;a.cNW=null;a.cPC=null;a.chL=null;a.cd_=0.0;} +let DYS=(a,b,c,d,e)=>{let f;Jo();PM(a,b,b,JJ,OE(4.0,4.0,4.0,4.0),e,A$o(d,1,I6(d)),0);a.ddG=10;a.deo=5.0;a.c7V=2.0;f=a;a.cPC=AB8(c,WM(f));a.chL=Zv(a);a.cd_=ANi(a);f=D0(c,WM(f));a.cNW=B5x(a);b=A$o(d,0,1);B3();a.cfo=C_(b,f,CF,e);},Dxj=(a,b,c,d)=>{let e=new CM8();DYS(e,a,b,c,d);return e;},FtJ=(a,b,c)=>{let d,e,f,g,h,i,j,k,l;d=c.bJb;e=b.hE();f=CXd(a,e)|0;g=DmN(a,e)|0;h=C2(d.bGE-4.0-a.chL.bHm,d.bGF-5.0);i=a.cd_;if(i!==0.0)h=Ge(h,i);j=a.chL;h.bG1=j.bHm;c=Ef(j,b);(c.h2(BM(2.0))).hP(h);j=EE();k=a.cd_;if(k===0.0){Ec(j, +0.0,0.0);i=f;B2(j,i,0.0);B2(j,i,g-10|0);i=f-10|0;k=g;B2(j,i,k);B2(j,0.0,k);B2(j,0.0,0.0);}else{Ec(j,k/2.0,0.0);k=f;B2(j,k,0.0);B2(j,k,g-10|0);i=f-10|0;k=g;B2(j,i,k);B2(j,0.0,k);B2(j,0.0,a.cd_/2.0);l=a.cd_/2.0;Mk(j,l,l,0.0,0.0,1.0,l,0.0);}b=Ef(a.cPC,c);(b.h2(BM(2.0))).hP(j);b=b.h2(GT());a.cfo.cC(b.h2(Bh(15.0,2.0)));c=a.cNW;B3();if(c===CO){k=(a.bJQ.cF(e)).bGE;l=(d.bGE-k)/2.0;}else if(c!==Ft)l=R2(a)+2.0;else{k=(a.bJQ.cF(e)).bGE;l=d.bGE-k-BFZ(a)-2.0;}a.bJQ.cC(b.h2(Bh(l,RR(a)+g)));},DmN=(a,b)=>{return (a.cfo.cF(b)).bGF ++2.0;},CXd=(a,b)=>{return (a.cfo.cF(b)).bGE+30.0+15.0;},Fjb=(a,b)=>{return He(a,b)+DmN(a,b)+5.0;},E3z=(a,b)=>{return BC(Iz(a,b),CXd(a,b))+4.0+a.chL.bHm;}; +function C9t(){let a=this;Hx.call(a);a.cLi=null;a.cKn=0.0;} +let El1=(a,b,c)=>{let d,e;d=c.bJb;b=Ef(a.cLi,b);b.hP(Ge(C2(d.bGE,d.bGF),a.cKn));e=d.bGE;c=b.hE();d=a;e=(e-A2E(d,c))/2.0;d.bJQ.cC(b.h2(BM(e)));},FnF=(a,b,c)=>{return;},Fjv=(a,b)=>{return He(a,b)+3.0;},E9f=(a,b)=>{return Iz(a,b);}; +function DnU(){let a=this;F.call(a);a.c6D=null;a.crr=0;} +let DMP=(a,b)=>{let c,d;c=a.c6D.data;d=a.crr;a.crr=d+1|0;c[d]=b;return 1;}; +function COC(){F.call(this);this.c27=null;} +let DFN=(a,b)=>{return U(a.c27,b);}; +function Ckr(){let a=this;F.call(a);a.cxO=0;a.cAM=null;a.bL4=null;a.cT4=null;a.bZ0=0.0;} +let DKS=(a,b,c,d)=>{a.bL4=Bk();a.cxO=b;a.cT4=c;a.cAM=d;if(d!==null)a.bZ0=a.bZ0+(De(d,c)).bGE;},C43=(a,b,c)=>{let d=new Ckr();DKS(d,a,b,c);return d;},EYy=a=>{let b,c,d;b=a.cAM;if(b!==null){b=b.p();c=BY(a.bL4);d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);}return AFN(a.bL4);},EsV=a=>{let b,c;b=Br(a.bL4);while(Bq(b)){c=(Bm(b)).bNp;P_();if(c!==Ra&&c!==ZU)return 0;}return 1;},DPB=a=>{let b,c;while(true){b=a.bL4;if(b.bGJ<=0)break;c=(Be(b,0)).bNp;P_();if(c!==Ra)break;EJ(a.bL4,0);}while(a.bL4.bGJ>1){c=(BUF(a)).bNp;P_();if +(c!==ZU&&(BUF(a)).bNp!==Ra)break;b=a.bL4;EJ(b,b.bGJ-1|0);}},BUF=a=>{let b;b=a.bL4;return Be(b,b.bGJ-1|0);},EXb=a=>{let b,c,d,e,f;b=Bk();c=a.cAM;if(c!==null)U(b,c);d=Br(a.bL4);while(Bq(d)){c=Bm(d);e=c.bNp;P_();if(e!==Ra){if(a.cxO&&!b.bGJ&&e===ZU)continue;f=c.cCw;U(b,f);}}return b;},D7g=a=>{return null;}; +function AFj(){let a=this;F.call(a);a.cZK=null;a.bNp=null;a.cCw=null;} +let DcM=null,AWE=()=>{AWE=Z(AFj);FfQ();},BN$=(a,b,c,d)=>{AWE();a.cZK=b;a.bNp=c;a.cCw=d;},EaI=(a,b,c)=>{let d=new AFj();BN$(d,a,b,c);return d;},BAm=b=>{let c,d;AWE();if(b instanceof Qf){c=b.bNd;return EaI(c,BVF(Bn(c,0)),b);}c=new AFj;d=null;P_();BN$(c,d,BWw,b);return c;},BUx=()=>{AWE();return DcM;},E9O=a=>{let b,c,d;b=a.bNp;P_();if(b!==Ra){c=BY(b);b=a.cZK;d=new S;T(d);c=H(d,c);Bb(c,40);Bb(H(c,b),41);return Q(d);}return E(7905);},BVF=b=>{AWE();if(!Z0(b)){if(b>=19968&&b<=40959?1:b>=12352&&b<=12447?1:b>=12448&& +b<=12543?1:b>=12288&&b<=12351?1:!(b>=65381&&b<=65439)?0:1){P_();return AOj;}P_();return BwL;}P_();return ZU;},FfQ=()=>{let b,c;b=new AFj;c=null;P_();BN$(b,c,Ra,null);DcM=b;},A8E=N(Bx),BwL=null,ZU=null,AOj=null,Ra=null,BWw=null,DW7=null,P_=()=>{P_=Z(A8E);DWq();},EKD=(a,b,c)=>{P_();Ct(a,b,c);},A_b=(a,b)=>{let c=new A8E();EKD(c,a,b);return c;},DWq=()=>{let b,c,d;BwL=A_b(E(7906),0);ZU=A_b(E(7907),1);AOj=A_b(E(7908),2);Ra=A_b(E(7909),3);b=A_b(E(297),4);BWw=b;c=K(A8E,5);d=c.data;d[0]=BwL;d[1]=ZU;d[2]=AOj;d[3]=Ra;d[4] +=b;DW7=c;},Cvf=N(),Bpx=null,BLn=null,AI8=()=>{AI8=Z(Cvf);Fvy();},Fvy=()=>{let b,c;b=Ca((BJA()).data.length);c=b.data;BLn=b;c[Ka.bGO]=1;c[Nd.bGO]=2;c[Vf.bGO]=3;c[S8.bGO]=4;c[BhG.bGO]=5;c[Bfw.bGO]=6;c[BpO.bGO]=7;c[A1K.bGO]=8;c=Ca((CJ$()).data.length);b=c.data;Bpx=c;b[ACk.bGO]=1;b[UK.bGO]=2;b[A_D.bGO]=3;b[BdN.bGO]=4;b[SJ.bGO]=5;b[A4Z.bGO]=6;b[A1a.bGO]=7;b[AAe.bGO]=8;b[A$M.bGO]=9;b[AED.bGO]=10;b[ATE.bGO]=11;b[NJ.bGO]=12;b[AAo.bGO]=13;},Wh=N(GE); +function AVG(){let a=this;F.call(a);a.bYJ=0.0;a.cMx=null;a.cuu=0;} +let A1_=(a,b,c,d)=>{a.bYJ=c;a.cMx=b;a.cuu=d;if(c<=0.0){b=new Bt;X(b);J(b);}},FzU=(a,b,c)=>{let d=new AVG();A1_(d,a,b,c);return d;},A9T=b=>{let c;c=new AVG;AE9();A1_(c,Bga,b,0);return c;},Bav=b=>{let c;c=new AVG;AE9();A1_(c,A0Y,b,0);return c;},BGZ=b=>{let c;c=new AVG;AE9();A1_(c,A0S,b,0);return c;},BTy=b=>{let c;c=new AVG;AE9();A1_(c,A0T,b,0);return c;},Pv=(a,b)=>{let c,d,e,f,g,h;a:{b:{c:{d:{c=EE();d=a.bYJ;e=d/4.0;B4d();switch(C7y.data[a.cMx.bGO]){case 1:break;case 2:break d;case 3:break b;case 4:break c;default:break a;}Ec(c, +0.0, -d);HY(c,0.0, -e,e,0.0,a.bYJ,0.0);break a;}Ec(c,0.0, -d);f= -e;HY(c,0.0,f,f,0.0, -a.bYJ,0.0);break a;}Ec(c,0.0,d);HY(c,0.0,e,e,0.0,a.bYJ,0.0);if(!a.cuu)break a;g=(b.h2(new VH)).h2(BW(a.bYJ));h=EE();Ec(h,0.0,0.0);B2(h,3.0,0.0);B2(h,0.0,(-6.0));B2(h,(-3.0),0.0);B2(h,0.0,0.0);g.hP(h);break a;}Ec(c, -d,0.0);HY(c, -e,0.0,0.0,e,0.0,a.bYJ);if(a.cuu){h=(b.h2(new VH)).h2(BW(a.bYJ-5.0));g=EE();Ec(g,0.0,0.0);B2(g,3.0,0.0);B2(g,0.0,6.0);B2(g,(-3.0),0.0);B2(g,0.0,0.0);h.hP(g);}}b.hP(c);}; +function Fvn(){let a=this;F.call(a);a.dfL=0.0;a.dfr=0.0;a.de5=0.0;} +function E1J(){let a=this;F.call(a);a.dfF=0.0;a.dfJ=0.0;} +function AD5(){let a=this;Mu.call(a);a.b_0=0;a.ceA=0;a.c$F=0;} +let Bvc=(a,b,c,d)=>{a.b_0=b;a.ceA=c;a.c$F=DT(c,d);},Wo=(a,b,c)=>{let d=new AD5();Bvc(d,a,b,c);return d;},FvQ=(a,b,c)=>{let d,e;d=W7(a.bza(NT(b,a.b_0)));e=d.bGI.length;while(e{return b;},DhK=(a,b)=>{let c;if(a!==b){if(b!==null&&Dg(a)===Dg(b)){c=b;return !(a.b_0==c.b_0&&a.ceA==c.ceA)?0:1;}return 0;}return 1;},Doe=a=>{let b,c;b=K(F,2);c=b.data;c[0]=CL(a.b_0);c[1]=CL(a.ceA);return ME(b);}; +function CbN(){let a=this;Mu.call(a);a.cd2=null;a.caQ=null;a.cay=0;} +let D3N=(a,b,c)=>{let d,e,f,g,h,i,j,k;a:{if(b.b7P===null){b.b7P=K(Bi,8);d=b.bZZ;e=d.bIP;f=d.bK3;if(BXi===null)BXi=DT6();g=ATu(BXi,e,f);h=0;while(true){if(h>=7)break a;i=g.data;j=b.b7P.data;k=h+1|0;j[k]=i[h];h=k;}}}b:{a.cd2=b.b7P.b2();if(b.b5Q===null){b.b5Q=K(Bi,8);d=b.bZZ;e=d.bIP;f=d.bK3;if(BXl===null)BXl=DDk();g=ATu(BXl,e,f);k=0;while(true){if(k>=7)break b;i=g.data;j=b.b5Q.data;h=k+1|0;j[h]=i[k];k=h;}}}a.caQ=b.b5Q.b2();a.cay=c;},Ep0=(a,b)=>{let c=new CbN();D3N(c,a,b);return c;},DU7=(a,b,c)=>{let d;d=NT(b,7);L(c, +!a.cay?a.cd2.data[d]:a.caQ.data[d]);},Egj=(a,b)=>{let c;if(a!==b){if(b!==null&&Dg(a)===Dg(b)){c=b;return !(a.cay==c.cay&&YT(a.cd2,c.cd2)&&YT(a.caQ,c.caQ))?0:1;}return 0;}return 1;},Ez5=a=>{let b,c;b=K(F,3);c=b.data;c[0]=a.cd2;c[1]=a.caQ;c[2]=Tr(a.cay);return ME(b);}; +function DcA(){Mu.call(this);this.b_P=null;} +let Ffj=(a,b)=>{let c,d,e;if(b.cec===null){c=b.bZZ;d=c.bIP;e=c.bK3;if(BXg===null)BXg=EMZ();b.cec=ATu(BXg,d,e);}a.b_P=b.cec.b2();},DvV=a=>{let b=new DcA();Ffj(b,a);return b;},Fs1=(a,b,c)=>{let d;d=NT(b,0);L(c,a.b_P.data[d]);},DMk=(a,b)=>{let c;if(a!==b){if(b!==null&&Dg(a)===Dg(b)){c=b;return YT(a.b_P,c.b_P);}return 0;}return 1;},FeB=a=>{return ME(a.b_P);}; +function A7O(){let a=this;Mu.call(a);a.cbP=null;a.csn=null;} +let De_=(a,b)=>{a.cbP=b;},Flm=(a,b)=>{let c;if(a!==b){if(b!==null&&Dg(a)===Dg(b)){c=b;return !(Li(a.cbP,c.cbP)&&Li(a.csn,c.csn))?0:1;}return 0;}return 1;},EGD=a=>{let b,c;b=K(F,2);c=b.data;c[0]=a.cbP;c[1]=a.csn;return ME(b);},Dcx=N(A7O),DXU=(a,b)=>{De_(a,b);},Dtk=a=>{let b=new Dcx();DXU(b,a);return b;},EwY=(a,b,c)=>{let d,e,f,g,h;d=b.b39;e=ACr(b);f=BZs(d,e)/60000|0;if(f>=0)Bb(c,43);else{f= -f|0;Bb(c,45);}g=f/60|0;h=f%60|0;BE(c,g/10|0);BE(c,g%10|0);BE(c,h/10|0);BE(c,h%10|0);}; +function C9E(){Mu.call(this);this.cbM=null;} +let E8N=(a,b)=>{let c,d,e;if(b.cax===null){c=b.bZZ;d=c.bIP;e=c.bK3;if(BXj===null)BXj=EX_();b.cax=ATu(BXj,d,e);}a.cbM=b.cax.b2();},EgW=a=>{let b=new C9E();E8N(b,a);return b;},EQN=(a,b,c)=>{let d;d=NT(b,9);L(c,a.cbM.data[d]);},Fpc=(a,b)=>{let c;if(a!==b){if(b!==null&&Dg(a)===Dg(b)){c=b;return YT(a.cbM,c.cbM);}return 0;}return 1;},EuZ=a=>{return ME(a.cbM);}; +function C4E(){AD5.call(this);this.cct=0;} +let Efj=(a,b,c,d)=>{Bvc(a,b,c,2);a.cct=d;},Cks=(a,b,c)=>{let d=new C4E();Efj(d,a,b,c);return d;},Fs4=(a,b)=>{if(!b)b=a.cct;return b;},FvH=(a,b)=>{let c;if(a!==b){if(b!==null&&Dg(a)===Dg(b)){if(DhK(a,b)){c=b;return a.cct!=c.cct?0:1;}return 0;}return 0;}return 1;},EuE=a=>{let b,c;b=K(F,2);c=b.data;c[0]=CL(Doe(a));c[1]=CL(a.cct);return ME(b);},CRC=N(AD5),EWI=(a,b)=>{Bvc(a,7,b,1);},Dtt=a=>{let b=new CRC();EWI(b,a);return b;},E6k=(a,b)=>{return b==1?7:b-1|0;},CbR=N(A7O),Fto=(a,b)=>{De_(a,b);},FeJ=a=>{let b=new CbR();Fto(b, +a);return b;},DLE=(a,b,c)=>{let d,e,f,g,h,i;d=b.b39;if(BO(d.cdv,E(1590))){e=d.b9s/60000|0;L(c,E(1590));if(e>=0)Bb(c,43);else{e= -e|0;Bb(c,45);}f=e/60|0;e=e%60|0;BE(c,f/10|0);BE(c,f%10|0);Bb(c,58);BE(c,e/10|0);BE(c,e%10|0);}else{b=a.cbP;g=b.bIP;h=b.bK3;b=d.cdv;h=A_2(g,h);if((B8A()).hasOwnProperty(Cq(h)))g=h;if(!(B8A()).hasOwnProperty(Cq(g)))b=null;else{h=(B8A())[Cq(g)];e=Eq(b,47);if(e<0)b=null;else{i=B_(b,0,e);g=CC(b,e+1|0);if(!h.timeZones.hasOwnProperty(Cq(i)))b=null;else{b=h.timeZones[Cq(i)];b=!b.hasOwnProperty(Cq(g)) +?null:(b[Cq(g)].value!==null?Fe(b[Cq(g)].value):null);}}}if(b===null)b=d.cdv;L(c,b);}}; +function CRH(){Mu.call(this);this.b9N=null;} +let EwD=(a,b)=>{a.b9N=b;},Chb=a=>{let b=new CRH();EwD(b,a);return b;},Fxx=(a,b,c)=>{L(c,a.b9N);},Ehi=(a,b)=>{let c;if(a!==b){if(b!==null&&Dg(a)===Dg(b)){c=b;return Li(a.b9N,c.b9N);}return 0;}return 1;},Ds$=a=>{let b;b=K(F,1);b.data[0]=a.b9N;return ME(b);}; +function C4K(){Mu.call(this);this.b9D=0;} +let EpJ=(a,b)=>{a.b9D=b;},DXz=a=>{let b=new C4K();EpJ(b,a);return b;},FpE=(a,b,c)=>{let d;d=NT(b,a.b9D);if(d<10)BE(c,d);else{Bb(c,(((d%100|0)/10|0)+48|0)&65535);Bb(c,((d%10|0)+48|0)&65535);}},D1y=(a,b)=>{let c;if(a!==b){if(b!==null&&Dg(a)===Dg(b)){c=b;return a.b9D!=c.b9D?0:1;}return 0;}return 1;},EYh=a=>{let b;b=K(F,1);b.data[0]=CL(a.b9D);return ME(b);}; +function Den(){Mu.call(this);this.b55=0;} +let FjZ=(a,b)=>{a.b55=b;},FwF=a=>{let b=new Den();FjZ(b,a);return b;},Epw=(a,b,c)=>{let d,e,f,g,h;d=b.b39;e=ACr(b);f=BZs(d,e)/60000|0;if(f){if(f>0)Bb(c,43);else{f= -f|0;Bb(c,45);}g=f/60|0;h=f%60|0;BE(c,g/10|0);BE(c,g%10|0);if(a.b55>=3)Bb(c,58);if(a.b55>1){BE(c,h/10|0);BE(c,h%10|0);}return;}Bb(c,90);},Fom=(a,b)=>{let c;if(a!==b){if(b!==null&&Dg(a)===Dg(b)){c=b;return a.b55!=c.b55?0:1;}return 0;}return 1;},Fs0=a=>{let b;b=K(F,1);b.data[0]=CL(a.b55);return ME(b);}; +function Ccf(){let a=this;Mu.call(a);a.b9l=null;a.b$2=null;a.cdA=0;} +let DHa=(a,b,c)=>{let d,e,f,g;if(b.cbB===null){d=b.bZZ;e=d.bIP;f=d.bK3;if(BXk===null)BXk=EXp();b.cbB=ATu(BXk,e,f);}a.b9l=b.cbB.b2();if(b.cex===null){d=b.bZZ;f=d.bIP;g=d.bK3;if(BXh===null)BXh=DBO();b.cex=ATu(BXh,f,g);}a.b$2=b.cex.b2();a.cdA=c;},Flr=(a,b)=>{let c=new Ccf();DHa(c,a,b);return c;},E4S=(a,b,c)=>{let d;d=NT(b,2);L(c,!a.cdA?a.b9l.data[d]:a.b$2.data[d]);},EeZ=(a,b)=>{let c;if(a!==b){if(b!==null&&Dg(a)===Dg(b)){c=b;return !(a.cdA==c.cdA&&YT(a.b9l,c.b9l)&&YT(a.b$2,c.b$2))?0:1;}return 0;}return 1;},D8Z +=a=>{let b,c;b=K(F,3);c=b.data;c[0]=a.b9l;c[1]=a.b$2;c[2]=Tr(a.cdA);return ME(b);},Cud=N(AD5),Fva=(a,b)=>{Bvc(a,2,b,2);},EN5=a=>{let b=new Cud();Fva(b,a);return b;},Fc0=(a,b)=>{return b+1|0;}; +function DeV(){S_.call(this);this.c7E=null;} +let EoN=(a,b,c)=>{let d;d=c.bJb;((b.h2(AGS(a))).h2(a.c7E)).hP(DE(d.bGE));}; +function CMI(){F.call(this);this.ciw=null;} +let ETH=(a,b)=>{a.ciw.cC(b);},FhS=(a,b)=>{return a.ciw.cF(b);},Fhr=a=>{return a.ciw.co();},EG9=a=>{E0();return Ir;},Emj=(a,b)=>{Qa();return RW;},Est=a=>{return 0;}; +function DpQ(){let a=this;F.call(a);a.cLI=null;a.cVJ=null;a.cM6=0;a.cFE=0;} +let B6U=(a,b)=>{return IL(a.cLI){let c,d,e,f,g,h,i;c=Ya();d=0;e=0.0;f=G3(G8(a.b0Y));g=f;while(Gl(g)){h=GZ(f);i=BNs(a,b,h.bHt,h.bHe);CqJ(c,Be(a.csN,d),100,e,i);e=e+i;d=d+1|0;}return c;},DRu=(a,b)=>{let c,d,e,f,g,h;c=new LU;d=CE0(a,b)+Dpd(a,b);e=0.0;f=G3(G8(a.b0Y));g=f;while(Gl(g)){h=GZ(f);e=e+BNs(a,b,h.bHt,h.bHe);}MO(c,d,e);return c;},CE0=(a,b)=>{return DrF(a,b,Z$(a.b0Y));},Dpd=(a,b)=>{return DrF(a,b,Gc(a.b0Y));},DrF=(a,b,c)=>{let d;d=0.0;c=c.dX();while(c.dY()){d=BC(d,((c.dZ()).cF(b)).bGE);}return d;},FkC=(a,b)=>{let c,d,e,f, +g,h,i,j,k,l,m,n;c=Im(b);d=BC((De(a,c)).bGE,a.cTz);e=CE0(a,c);Dpd(a,c);f=0.0;g=G3(G8(a.b0Y));h=g;while(Gl(h)){i=GZ(g);j=i.bHt;k=i.bHe;l=BW(f);l=Jw(b,l);i=DE(d);l=l;ACY(l,i);m=BNs(a,c,j,k);n=(j.cF(c)).bGE;if(k instanceof BOM)j.cC(Jw(l,BM(BXI(a.cxI,n,d))));else{j.cC(Jw(l,BM(BXI(a.cxI,n,e))));k.cC(Jw(l,BM(e)));i=Jw(l,BM(e));j=Fg(m);ACY(i,j);}f=f+m;}},BNs=(a,b,c,d)=>{return BC((c.cF(b)).bGF,(d.cF(b)).bGF);},DkS=(a,b,c)=>{let d,e,f;if(!Bj(b,E(1487))){d=B4(a.cq8.bH$,b);e=a.cIL;B3();b=CF;f=a.cq8;Ed();return Js(Py(d, +e,b,f,c,FR,null,null),5.0,2.0);}b=new BOM;b.czr=a.cIL.bI2;return b;}; +function DlQ(){let a=this;F.call(a);a.cEK=null;a.cZQ=null;a.cTw=null;a.crY=null;a.cws=0.0;a.cPu=null;} +let Cok=a=>{let b;if(a.crY===null)a.crY=AVu(a,a.cTw,0.0);b=a.crY;if(b instanceof B3V)b.b5S=a.cws;if(b instanceof BNL)b.ccU=a.cws;return b;},AVu=(a,b,c)=>{let d;if(!b.ui()&&!b.gm()&&!b.a5V()&&!b.bzo()&&!b.uj()){if(!b.ul()){if(b.xe()){d=new B3V;b=b.xk();d.b0q=a;d.car=b;d.b5S=c;return d;}return AYy(a,AUI(Dg(b)));}d=new BNL;b=b.xm();d.cut=a;d.cJj=b;d.ccU=c;return d;}return AYy(a,!b.ui()?b.p():b.oB());},E3A=(a,b)=>{return Ya();},DEN=(a,b)=>{return (Cok(a)).cF(b);},DPZ=(a,b)=>{(Cok(a)).cC(b);},AYy=(a,b)=>{let c,d, +e,f;c=B4(a.cEK.bH$,b);d=a.cZQ;B3();b=CF;e=a.cEK;f=a.cPu;Ed();return Js(Py(c,d,b,e,f,FR,null,null),5.0,2.0);}; +function BDj(){let a=this;Er.call(a);a.bNA=null;a.b42=null;a.clb=null;a.cnh=null;a.cxy=null;a.b80=null;} +let BpX=a=>{let b,c;b=new A0o;c=a.b80;B9();CCA(b,(BJ(c,H1)).oK(),Js(a,6.0,4.0));return b;},DLk=(a,b,c,d,e)=>{B3();Cve(a,b,c,CF,d,e);},Cj9=(a,b,c,d)=>{let e=new BDj();DLk(e,a,b,c,d);return e;},Cve=(a,b,c,d,e,f)=>{let g,h,i,j;a.cnh=Bk();a.b80=f;a.cxy=e;a.clb=d;a.bNA=c;g=Bk();h=Xo(b);while(h.dY()){i=h.dZ();j=AFV(i);if(j===null)U(g,i);else{b=a.cnh;d=CIG(j,h,c);U(b,d);}}a.b42=Ls(g);},ErZ=(a,b,c,d,e)=>{let f=new BDj();Cve(f,a,b,c,d,e);return f;},B8y=a=>{let b,c;if(Qy(a.bNA)){b=Xo(a.b42);while(b.dY()){c=b.dZ();if(!(c instanceof AJJ))continue;if +(c.bVA!==null)return 1;}return 0;}return 0;},EY1=(a,b)=>{let c,d,e,f;c=CaQ(a,b);d=c.bGE;e=c.bGF;c=Br(a.cnh);while(Bq(c)){f=De(Bm(c),b);d=BC(f.bGE,d);e=e+f.bGF;}return Cl(d,e);},CaQ=(a,b)=>{let c,d,e,f,g;c=0.0;if(B8y(a))c=Lc(a.bNA)+3|0;d=0.0;e=0.0;f=Xo(a.b42);while(f.dY()){g=(BpR(a,f.dZ())).cF(b);d=BC(g.bGE,d);e=e+g.bGF;if(b.gQ(E(902))&&g.bGF===10.0)e=e+1.0;}return Cl(d+c,e);},Ehg=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=Ya();d=0.0;e=BWf(a.cxy);f=E2(e);e=new CoZ;e.c_7=a;ARQ(f,e);g=Xo(a.b42);while(g.dY()){e=g.dZ();h +=(BpR(a,e)).cF(b);e=!(e instanceof AJJ)?e.p():BEu(e,0);i=Br(f);a:{b:{while(Bq(i)){j=Bm(i);k=new S;T(k);H(H(H(k,E(7910)),j),E(7911));l=Qc(e,Q(k))?100:!CB(e,j)?0:50;if(l>0)break b;}m=null;break a;}m=new Dgv;m.c50=j;m.c5U=l;}if(m!==null)CqJ(c,m.c50,m.c5U,d,h.bGF);d=d+h.bGF;}return c;},BpR=(a,b)=>{let c,d,e,f,g,h;c=BIE(a.bNA,a.b80,a.cxy.bG_);if(b instanceof AJJ){d=b;e=Qy(a.bNA)?0:1;f=BEu(d,e);if(e&&BO(f,E(332))){b=new S;T(b);Bb(b,126);H(b,f);f=Q(b);}if(d.cv$)c=A69(c);if(d.cCc)c=B8s(c);g=B4(a.bNA.bH$,f);b=a.clb;h +=a.bNA;Ed();h=WB(g,c,b,h,J0,GM(a.b80));c=new CoY;c.cFk=h;c.cRc=d;b=new C0q;b.ce_=c;b.crW=d.b2l;return b;}d=B4(a.bNA.bH$,b.p());h=a.clb;f=a.bNA;Ed();return WB(d,c,h,f,J0,GM(a.b80));},ECE=(a,b,c)=>{let d,e,f,g,h,i;d=COw(a,c);e=De(a,c);f=e.bGE;g=e.bGF;d=G3(G8(d.cgf.bzv(f,g)));e=d;a:{b:{while(Gl(e)){h=GZ(d);i=h.bHt.yz(b,c);if(i!==null)break b;}i=null;break a;}i=A_W(I3(h.bHe),i);}if(i!==null&&B8y(a)){g=Lc(a.bNA)+3|0;return AOd(i.bMI-g,i.bM$,i.bTE+g,i.bTA);}return i;},COw=(a,b)=>{let c,d,e,f,g,h,i;if(!B8y(a)){c=a.clb;B3();if +(c===CF){d=new BUo;Ts(d,b);}else if(c!==CO){d=new BXd;Ts(d,b);}else{d=new CDH;Ts(d,b);}c=Dsi(d);b=Xo(a.b42);while(b.dY()){Sv(c,BpR(a,b.dZ()));}}else{c=new ABz;d=new CXz;e=Lc(a.bNA)+3|0;Ts(d,b);d.cLs=e;AHd(c,d);b=Xo(a.b42);while(b.dY()){f=b.dZ();g=BpR(a,f);h=f;i=h.bVA;h=h.b2l;if(i===null){f=new CoX;f.da7=a;}else{d=B1(a.bNA);OM();if(i===AVE){B8();f=DmL;}else if(!(i!==AHl&&i!==AK1)){B8();f=CWJ;}else if(!(i!==AGZ&&i!==AK3)){B8();f=C4v;}else if(!(i!==AFc&&i!==AOu)){B8();f=CF7;}else{if(i!==AEW&&i!==AMz){b=new BP;X(b);J(b);}B8();f +=CZK;}d=B0(d,f);B9();f=(BJ(d,Cz)).cu(a.bNA.bGN);d=(!(i!==AHl&&i!==AGZ&&i!==AFc&&i!==AEW)?1:0)?null:(BJ(d,CK)).cu(a.bNA.bGN);d=ASm(i,Qy(a.bNA),f,d,h===null?0:1);if(h===null)f=d;else{f=new DjV;f.cxf=d;f.cQw=h;}}Sv(c,f);Sv(c,g);}}return c;},DHE=(a,b)=>{let c,d,e,f;c=b.hE();d=COw(a,c);e=CaQ(a,c);AGX(d,b,e.bGE,e.bGF);b=b.h2(BW(e.bGF));d=Br(a.cnh);while(Bq(d)){f=Bm(d);CGu(f,b);b=b.h2(BW((De(f,c)).bGF));}}; +function AJJ(){let a=this;F.call(a);a.bPr=null;a.cbz=null;a.cCc=0;a.cv$=0;a.b2l=null;a.daB=0;a.bVA=null;} +let CBq=null,C8U=null,C1O=null,AYd=()=>{AYd=Z(AJJ);DvN();},Cgy=a=>{return a.cbz.p();},EwN=(a,b)=>{return a.cbz.u(b);},DO_=a=>{return a.cbz.bL();},Emy=(a,b,c)=>{return a.cbz.rL(b,c);},CPN=b=>{AYd();return C8j(1,b,1);},CvB=b=>{AYd();return C8j(1,b,0);},EOA=(a,b,c,d)=>{let e,f,g,h;AYd();a.cbz=c;e=UQ(D3(C8U,c.p()),E(14));if(!b)a.b2l=null;else{f=DX(CBq,e,0);if(O7(f)){e=CU(f,1);g=CU(f,2);if(g===null)a.b2l=null;else{f=new FZ;c=null;FC();Gb(f,c,FI);a.b2l=Gj(f,g);}}else{c=new BP;X(c);J(c);}}a.daB=a.b2l===null?0:1;c= +e;h=F9(c);if(!b){a.cCc=0;a.bVA=null;a.cv$=0;h=ES(c);if(!h.bGI.length)c=E(344);else{F_();c=ANH(ALr,ES(h));}a.bPr=c;}else{a.cCc=!(!CB(h,E(7912))&&!CB(h,E(7913)))?1:0;a.cv$=CB(h,E(7914));e=Dk(UQ(D3(C1O,c),E(14)));if(!e.bGI.length)e=E(344);if(!AIW(e)){F_();a.bPr=ANH(ALr,e);a.bVA=null;}else{a.bVA=ASq(e,d?0:1);F_();a.bPr=ES(ANH(ALr,CC(e,1)));}}},C8j=(a,b,c)=>{let d=new AJJ();EOA(d,a,b,c);return d;},BEu=(a,b)=>{let c,d;if(b){c=a.bVA;OM();if(!(c!==AGZ&&c!==AK3)?1:0){d=a.bPr;c=new S;T(c);Bb(c,45);H(c,d);d=Q(c);}else if +(!(c!==AHl&&c!==AK1)?1:0){d=a.bPr;c=new S;T(c);Bb(c,43);H(c,d);d=Q(c);}else if(!(c!==AEW&&c!==AMz)?1:0){d=a.bPr;c=new S;T(c);Bb(c,126);H(c,d);d=Q(c);}else if(!(c!==AFc&&c!==AOu)?1:0){d=a.bPr;c=new S;T(c);Bb(c,35);H(c,d);d=Q(c);}else if(!(c!==AVE?0:1))d=a.bPr;else{d=a.bPr;c=new S;T(c);Bb(c,42);H(c,d);d=Q(c);}return d;}return a.bPr;},EGW=(a,b)=>{let c;c=b;return Bj(a.bPr,c.bPr);},Edf=a=>{return FP(a.bPr);},DvN=()=>{let b,c;b=Bo1();c=new S;T(c);H(H(H(c,E(7915)),b),E(7916));CBq=Dm(Q(c));C8U=Dp(E(7917));C1O=Dp(E(7918));}; +function Cqs(){If.call(this);this.cpV=null;} +let EB$=(a,b)=>{return Bhv(a.cpV,b);},DXI=a=>{return a.cpV.bVQ;},Fs_=a=>{let b,c;b=new CHq;c=a.cpV;b.b6c=c;b.cfE=c.bZb;b.caC=null;return b;},C7i=N(),CAS=null,BJr=()=>{BJr=Z(C7i);DHD();},DHD=()=>{let b,c;MY();b=Ca((CrZ.b2()).data.length);c=b.data;CAS=b;c[ATH.bGO]=1;c[BcA.bGO]=2;}; +function Cf_(){let a=this;F.call(a);a.cMY=null;a.cMX=null;} +function BOX(){let a=this;F.call(a);a.cjp=null;a.cjo=null;} +let DFD=(a,b,c)=>{a.cjp=b;a.cjo=c;},Bgp=(a,b)=>{let c=new BOX();DFD(c,a,b);return c;},FuQ=a=>{let b,c,d;b=BY(a.cjp);c=BY(a.cjo);d=new S;T(d);H(H(H(H(H(d,E(7919)),b),E(7920)),c),E(7921));return Q(d);},EzD=(a,b,c,d)=>{a.cjp=c;while(d>0){if((!ALW(b.bJ8.bNx,c)?100:0)<=0?0:1)d=d+(-1)|0;c=Ep(c,V(1));}a.cjo=c;},Cp2=(a,b,c)=>{let d=new BOX();EzD(d,a,b,c);return d;},AF8=a=>{let b,c;b=new CS5;c=a.cjp;b.c5F=a;b.cku=c;return b;}; +function CfL(){F.call(this);this.cYp=0;} +function BI3(){let a=this;F.call(a);a.bMI=0.0;a.bM$=0.0;a.bTE=0.0;a.bTA=0.0;} +let CNl=(a,b,c,d,e)=>{a.bMI=b;a.bM$=c;a.bTE=d;a.bTA=e;},AOd=(a,b,c,d)=>{let e=new BI3();CNl(e,a,b,c,d);return e;},BVP=a=>{return a.bMI+a.bTE/2.0;},By1=a=>{return a.bM$+a.bTA/2.0;},A1W=a=>{return a.bMI+a.bTE;},Bsc=a=>{return a.bM$+a.bTA;},CaH=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=BA(a.bMI,a.bM$);d=BA(a.bMI+a.bTE,a.bM$);e=BA(a.bMI+a.bTE,a.bM$+a.bTA);f=BA(a.bMI,a.bM$+a.bTA);g=AQp(c,d);h=AQp(d,e);i=AQp(e,f);j=AQp(f,c);k=Bdd(b,g);if(k===null){c=Bdd(b,h);if(c===null){c=Bdd(b,i);if(c===null){b=Bdd(b,j);if(b===null)return null;return b;}return c;}return c;}return k;},FK +=N(),Qr=(a,b)=>{let c;c=b*180.0/3.141592653589793;if(!A61(a,0.0,c)){if(!A61(a,90.0,c)){if(!A61(a,180.0,c)){if(!A61(a,270.0,c)){if(A61(a,360.0,c))return 0.0;return b;}return 4.71238898038469;}return 3.141592653589793;}return 1.5707963267948966;}return 0.0;},A61=(a,b,c)=>{if(EL(b-c)<0.05)return 1;return 0;},ERV=a=>{return 8.0;}; +function A_9(){let a=this;FK.call(a);a.bNb=null;a.chr=null;a.chQ=null;} +let Emf=a=>{return a.chQ;},Fiv=(a,b,c)=>{a.bNb=Fj();a.chr=null;c=Qr(a,c);CUE(a);ADm(a.bNb,c);a.bNb=Xz(a.bNb,b.bGK,b.bGL);a.chQ=b;},CTu=(a,b)=>{let c=new A_9();Fiv(c,a,b);return c;},CUE=a=>{BQ(a.bNb,0.0,0.0);BQ(a.bNb,(-9.0),(-4.0));BQ(a.bNb,(-5.0),0.0);BQ(a.bNb,(-9.0),4.0);BQ(a.bNb,0.0,0.0);return 5;},FhM=a=>{return 5.0;},Da2=(a,b)=>{let c;c=(b.gy()).gz();b=c!==null?b.h2(Cc(c)):b.h2(Cc(E4()));b.hP(a.bNb);c=a.chr;if(c!==null&&Dnv(c)>2.0)(b.h2(I3(a.chQ))).hP(a.chr);},CPn=(a,b)=>{let c,d;c=BV_(a.bNb,0);d=BDe(c, +BV_(a.bNb,2));(b.h2(I3(c))).hP(d);}; +function CN3(){let a=this;J9.call(a);a.c92=30.0;a.b9G=null;a.cV1=null;} +let E6g=(a,b,c)=>{Vo(a);a.c92=30.0;a.b9G=b;a.cV1=c;},Cpw=(a,b)=>{let c=new CN3();E6g(c,a,b);return c;},EQr=(a,b)=>{return a.b9G.Wx(b)+60.0;},CZN=(a,b)=>{return a.b9G.Wy(b);},EDA=(a,b)=>{return a.b9G.Wz(b);},Fse=(a,b)=>{let c,d,e,f,g,h;c=CZN(a,b.hE());d=De(a,b.hE());e=(b.h2(a.cV1)).h2(Dw(1.5));a.b9G.cC(e.h2(BM(30.0)));f=Fz(8.0,8.0);b=e.h2(Dw(2.0));g=new FG;h=c-4.0;Hs(g,0.0,h);(b.h2(g)).hP(f);(((e.h2(Dw(1.0))).h2(new VH)).h2(Bh(d.bGE-4.0,h))).hP(f);b=e.h2(Dw(1.5));Xd(a,b,c,8.0,30.0,0.5,25.0);h=d.bGE;Xd(a,b,c, +h-30.0,h-4.0,0.5,25.0);},Cbr=N(J9),Ela=a=>{Vo(a);},EcM=()=>{let a=new Cbr();Ela(a);return a;},DSA=(a,b)=>{return;},DBS=(a,b)=>{return 0.0;},EEj=(a,b)=>{return 0.0;},DZ9=(a,b)=>{return 0.0;}; +function CBg(){let a=this;F.call(a);a.bL1=null;a.bLd=null;} +let Fo$=(a,b)=>{let c,d,e,f;a.bL1=Bk();a.bLd=U1();c=b;a:while(true){if(!Bq(c)){b:{while(!RL(a.bLd)){d=Fp(a.bLd);b=ABC(d);HF();if(b===AN6)break b;if(ABC(d)===ATG)break b;if(ABC(d)===AEz)break b;if(ABC(d)!==AA4)U(a.bL1,d);else{e=a.bL1;f=AMq(AXh,DmG(d));U(e,f);}}return;}TD(a.bL1);return;}c:{d=Bm(c);e=d.bMF;HF();if(!(e!==AHU&&e!==YU&&e!==ALu&&e!==AIA)){U(a.bL1,d);while(true){if(!AEk(a))break c;b=a.bL1;d=BfD(a);U(b,d);}}if(e===AA4){EY(a.bLd,d);break c;}if(e===AUU){b=a.bLd;e=AMq(AKz,null);EY(b,e);EY(a.bLd,d);break c;}if +(BCp(e)){while(!(!DXx(a,d)&&!AEk(a))){b=a.bL1;e=A0v(a);U(b,e);}EY(a.bLd,d);break c;}e=d.bMF;if(e===AOH){EY(a.bLd,d);break c;}if(e===A9O){while((JX(a.bLd)).bMF!==AOH){b=a.bL1;d=A0v(a);U(b,d);}if((JX(a.bLd)).bMF!==AOH)break c;Fp(a.bLd);break c;}if(e===A41){b=a.bLd;d=AMq(AN6,null);EY(b,d);break c;}if(e===Bbp){while(!(!BGH(a)&&!AEk(a))){b=a.bL1;d=A0v(a);U(b,d);}e=Fp(a.bLd);if(e.bMF!==AN6){b=new BP;DeP(b);J(b);}U(a.bL1,e);while(AEk(a)){b=a.bL1;d=BfD(a);U(b,d);}break c;}if(e===A6H){b=a.bLd;d=AMq(AEz,null);EY(b,d);break c;}if +(ABC(d)===A5j){while(!(!BGH(a)&&!AEk(a))){b=a.bL1;d=A0v(a);U(b,d);}e=Fp(a.bLd);if(ABC(e)!==AEz)J(AFM());U(a.bL1,e);while(AEk(a)){b=a.bL1;d=BfD(a);U(b,d);}break c;}if(ABC(d)!==A_e)J(ZF(BWF(d)));while(!(!BGH(a)&&!AEk(a))){b=a.bL1;d=A0v(a);U(b,d);}if(ABC(Fp(a.bLd))!==AEz)break a;b=a.bL1;d=AMq(ATG,null);U(b,d);while(AEk(a)){b=a.bL1;d=BfD(a);U(b,d);}}}J(AFM());},EaR=a=>{let b=new CBg();Fo$(b,a);return b;},BfD=a=>{let b,c;b=Fp(a.bLd);c=b.bMF;HF();if(c===AA4)return AMq(A4b,b.bWh);return b;},A0v=a=>{let b,c;b=Fp(a.bLd);c +=b.bMF;HF();if(c===AA4)return AMq(AXh,b.bWh);return b;},AEk=a=>{let b,c,d;a:{b:{b=JX(a.bLd);if(b!==null){c=b.bMF;HF();if(c===AA4)break b;}d=0;break a;}d=1;}return d;},BGH=a=>{let b;b=JX(a.bLd);return !(b!==null&&BCp(b.bMF))?0:1;},DXx=(a,b)=>{let c;c=JX(a.bLd);if(c!==null&&BCp(c.bMF)&&C6R(c.bMF)>C6R(b.bMF))return 1;return 0;},DCF=a=>{return a.bL1;}; +function Cjd(){let a=this;Er.call(a);a.cS1=null;a.c5d=null;a.cF8=null;} +let Ev6=(a,b,c)=>{a.cS1=b;Lx();c=AGm(c,OK);a.c5d=c;a.cF8=N1(b,c);},Ds6=(a,b)=>{let c=new Cjd();Ev6(c,a,b);return c;},DUV=(a,b)=>{return b.gS(Gk(a.c5d),a.cS1);},DRx=(a,b)=>{let c;c=De(a,b.hE());(b.h2(Bh(0.0,c.bGF-AIj(a.cF8,b.hE())))).hP(a.cF8);}; +function ABz(){F.call(this);this.cgf=null;} +let AHd=(a,b)=>{a.cgf=b;},Dsi=a=>{let b=new ABz();AHd(b,a);return b;},AGX=(a,b,c,d)=>{let e,f,g;e=G3(G8(a.cgf.bzv(c,d)));f=e;while(Gl(f)){g=GZ(e);g.bHt.cC(b.h2(I3(g.bHe)));}},Sv=(a,b)=>{DQX(a.cgf,b);},C3J=N(0); +function VU(){let a=this;F.call(a);a.cV0=null;a.bQE=null;} +let Ts=(a,b)=>{a.bQE=E9();a.cV0=b;},DQX=(a,b)=>{let c,d;c=a.bQE;d=b.cF(a.cV0);Es(c,b,d);},BiI=a=>{return EsK(a,(Gc(a.bQE)).dX());},EsK=(a,b)=>{let c;c=0.0;while(b.dY()){c=c+(b.dZ()).bGF;}return c;},AFw=N(VU),EIF=(a,b,c)=>{let d,e,f,g,h,i,j,k,l;d=a;e=(c-BiI(d))/(d.bQE.bHv+1|0);f=E9();g=G3(G8(d.bQE));h=g;i=e;while(Gl(h)){j=GZ(g);k=(b-j.bHe.bGE)/2.0;d=j.bHt;l=BA(k,i);Es(f,d,l);i=i+j.bHe.bGF+e;}return f;}; +function Bwh(){let a=this;F.call(a);a.bJh=0.0;a.bJ6=0.0;a.bKo=0.0;a.bLc=0.0;} +let BXC=(a,b,c,d,e)=>{a.bJh=b;a.bJ6=c;a.bKo=d;a.bLc=e;},Rf=(a,b,c,d)=>{let e=new Bwh();BXC(e,a,b,c,d);return e;},CVF=(a,b,c)=>{return Rf(a.bJh+b,a.bJ6+c,a.bKo+b,a.bLc+c);},Bsp=a=>{return a.bKo-a.bJh;},CJv=a=>{return a.bLc-a.bJ6;},ELC=(a,b)=>{return Rf(Eh(a.bJh,b.bJh),Eh(a.bJ6,b.bJ6),BC(a.bKo,b.bKo),BC(a.bLc,b.bLc));},Fcv=(a,b)=>{let c,d;c=b.bGK;d=b.bGL;return Rf(Eh(a.bJh,c),Eh(a.bJ6,d),BC(a.bKo,c),BC(a.bLc,d));},Sl=(a,b)=>{let c,d;c=b.bGK;d=b.bGL;return !(c>=a.bJh&&c=a.bJ6&&d{let b, +c,d,e,f;b=a.bJh;c=a.bKo;d=a.bJ6;e=a.bLc;f=new S;T(f);D6(H(D6(H(D6(H(D6(H(f,E(7922)),b),E(7923)),c),E(7924)),d),E(7925)),e);return Q(f);},AEx=a=>{return a.bJh;},ALS=a=>{return a.bJ6;},ANy=a=>{return a.bKo;},AKf=a=>{return a.bLc;},AO$=a=>{return BA((a.bJh+a.bKo)/2.0,(a.bJ6+a.bLc)/2.0);},CCp=(a,b)=>{return Rf(b,a.bJ6,a.bKo,a.bLc);},CJg=(a,b)=>{return Rf(a.bJh,a.bJ6,b,a.bLc);},EKN=(a,b)=>{return Rf(a.bJh,a.bJ6,a.bKo+b,a.bLc);},D8U=(a,b)=>{return Rf(a.bJh,a.bJ6,a.bKo,a.bLc+b);},Fwx=(a,b)=>{return Rf(a.bJh+b,a.bJ6, +a.bKo,a.bLc);},Esp=(a,b)=>{return Rf(a.bJh,a.bJ6+b,a.bKo,a.bLc);},DFL=(a,b)=>{return Rf(a.bJh,b,a.bKo,a.bLc);},DzN=(a,b)=>{return Rf(a.bJh,a.bJ6,a.bKo,b);},DbL=a=>{return Cl(a.bKo-a.bJh,a.bLc-a.bJ6);},CbU=a=>{return Bh(a.bJh,a.bJ6);},Dn1=(a,b)=>{let c,d,e,f;c=EL(a.bJ6-b.bGL);d=EL(a.bLc-b.bGL);e=EL(a.bJh-b.bGK);f=EL(a.bKo-b.bGK);if(!Bpb(a,c,e,f,d)){if(!Bpb(a,d,c,e,f)){if(!Bpb(a,f,c,e,d)){if(Bpb(a,e,c,f,d)){AFB();return BAq;}return null;}AFB();return A9i;}AFB();return A_T;}AFB();return A4Y;},Bpb=(a,b,c,d,e)=> +{return !(b<=c&&b<=d&&b<=e)?0:1;}; +function B6a(){let a=this;F.call(a);a.cZU=null;a.cJI=null;a.cXM=null;a.cLK=null;a.cmu=null;} +let CoC=(a,b,c,d,e,f,g)=>{if(c===null)c=DfH(b);a.cJI=c;a.cLK=e;a.cXM=d;a.cmu=f;a.cZU=g;},CUD=(a,b,c,d,e,f)=>{let g=new B6a();CoC(g,a,b,c,d,e,f);return g;},CvQ=(a,b,c,d,e,f,g,h,i)=>{(CRN(a,c,d,e,f,g,h,i)).cC(b.h2(CbU(a.cmu)));},CRN=(a,b,c,d,e,f,g,h)=>{let i,j;i=AAA(b,c);if(a.cJI!==null){j=Bnc(AGc(BwX(i,d),a.cZU),e,h);return a.cJI.a4d(a.cXM,f,a.cLK,Bsp(a.cmu),CJv(a.cmu),j,g);}b=new BV;X(b);J(b);}; +function CoI(){let a=this;Er.call(a);a.cVH=null;a.cA2=null;} +let Edq=(a,b,c)=>{let d,e,f,g;a.cVH=b;d=b.cF(c);e=d.bGF/d.bGE;if(e<0.2)e=0.2;else if(e>0.8)e=0.8;f=new CcL;f.c$L=c;d=new BBO;d.cwK=f;A_C(d,c,LR());d.cbT=Bk();b.cC(d);b=d.cbT;c=new COi;d=new CB1;d.ci2=Bk();c.ccx=d;d=new CKN;if(!(isNaN(e)?1:0))d.cdO=e;else d.cdO=1.0;c.clF=d;b=Br(b);while(Bq(b)){f=Bm(b);d=c.clF;g=BA(f.bGK,f.bGL/d.cdO);d=c.ccx;if(!Nw(d.ci2,g))U(d.ci2,g);d.cn3=null;}a.cA2=c;},A$U=(a,b)=>{let c=new CoI();Edq(c,a,b);return c;},A7N=a=>{let b,c,d;b=a.cA2;c=Fz(2.0*(B0T(b.ccx)).b5A,2.0*(B0T(b.ccx)).b5A +*b.clF.cdO);d=b.c$I;b=c;b.bG1=d;c=Fz(c.bMH+6.0,c.bLB+6.0);d=b.bG1;c.bG1=d;return c;},Cp8=(a,b)=>{let c,d,e,f,g,h;c=A7N(a);d=a.cA2;e=d.clF;f=(B0T(d.ccx)).cdn;d=BA(f.bGK,f.bGL*e.cdO);g=c.bMH/2.0-d.bGK;h=c.bLB/2.0-d.bGL;d=b;ACY(d,c);a.cVH.cC(Jw(d,Bh(g,h-2.0)));},Evk=(a,b)=>{b=A7N(a);return Cl(b.bMH,b.bLB);}; +function Ca7(){let a=this;TI.call(a);a.ck2=0.0;a.cr7=0.0;a.ceJ=null;} +let EfY=(a,b)=>{return CbW(b,a.ck2,a.cr7,a.ceJ);},DXE=(a,b,c,d,e)=>{ARI(a,b);a.ck2=c;a.ceJ=e;a.cr7=d;},CbW=(a,b,c,d)=>{let e=new Ca7();DXE(e,a,b,c,d);return e;},Dm_=(a,b)=>{let c,d;c=a.cr7;if(!(ba.ceJ.bLB){d=new Bt;X(d);J(d);}return b;}d=new Bt;X(d);J(d);},Dz2=(a,b,c,d)=>{let e,f;e=Dw(1.5);b=b.h2(d);f=d.bHu;d=new C7A;d.cHT=a;d.cuf=f;BjL(c,b,d,0.0,e);}; +function Dpn(){let a=this;F.call(a);a.b3w=null;a.b5V=0.0;a.cp7=0.0;a.c4y=null;a.cKQ=null;a.cFg=null;a.cZY=null;a.c7D=null;a.cpD=0.0;a.c7K=0.0;} +let EhE=(a,b,c,d,e,f,g,h,i,j,k)=>{if(c.bGE!==0.0){a.cpD=j;a.b3w=c;a.b5V=d;a.c4y=b;a.cKQ=f;a.cFg=g;a.cZY=h;a.cp7=e;a.c7D=i;a.c7K=k;return;}b=new Bt;X(b);J(b);},BE6=(a,b,c,d,e,f,g,h,i,j)=>{let k=new Dpn();EhE(k,a,b,c,d,e,f,g,h,i,j);return k;},BCZ=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;b=(b.h2(a.c4y)).h2(a.c7D);c=a.b3w;c=Ge(C2(c.bGE,c.bGF),a.cpD);d=a.c7K;if(d>0.0){e=c;e.bG1=d;(b.h2(Cc(Qj()))).hP(c);e.bG1=0.0;}f=a.b3w.bGE;g=a.b5V;h=a.cKQ;i=a.cpD;if(f!==0.0){if(g!==0.0){if(!h.gv()){if(i===0.0)j=C2(f,g);else{j=EE();k=i/ +2.0;Ec(j,k,0.0);B2(j,f-k,0.0);Mk(j,k,k,0.0,0.0,1.0,f,k);B2(j,f,g);B2(j,0.0,g);B2(j,0.0,k);Mk(j,k,k,0.0,0.0,1.0,k,0.0);}(((b.h2(GT())).h2(h)).h2(Cc(h))).hP(j);}i=a.cp7;if(i!==0.0){e=C2(a.b3w.bGE,i);((((b.h2(GT())).h2(a.cFg)).h2(Cc(a.cFg))).h2(BW(a.b5V))).hP(e);}j=new Css;e=a.b3w;i=e.bGE;d=e.bGF;k=a.b5V;d=d-k;l=a.cp7;f=d-l;e=a.cZY;g=a.cpD;if(i!==0.0){if(f!==0.0){j.b9X=i;j.b4$=f;j.b7u=g;j.cn7=e;E_b(j,b.h2(BW(k+l)));(b.h2(Cc(Qj()))).hP(c);d=a.b5V;if(d>0.0)(b.h2(BW(d))).hP(DE(a.b3w.bGE));d=a.cp7;if(d>0.0){d=a.b5V ++d;if(d>0.0)(b.h2(BW(d))).hP(DE(a.b3w.bGE));}return;}b=new Bt;X(b);J(b);}b=new Bt;X(b);J(b);}b=new Bt;X(b);J(b);}b=new Bt;X(b);J(b);}; +function COX(){let a=this;F.call(a);a.cOe=null;a.cOP=null;a.cWa=null;} +function Dk6(){let a=this;Er.call(a);a.c0T=null;a.cKO=null;a.dbu=5;a.c63=0.0;a.cOq=null;a.ccc=null;a.ccd=null;a.c5Z=0;a.bHX=0.0;a.cMs=null;a.cne=null;a.daq=4.0;} +let EiB=(a,b,c,d,e,f,g)=>{a.dbu=5;a.daq=4.0;a.c0T=d;a.c5Z=f;a.c63=b;a.cKO=c;a.cne=e;a.cMs=g;},XJ=(a,b,c,d,e,f)=>{let g=new Dk6();EiB(g,a,b,c,d,e,f);return g;},AV4=(a,b,c,d)=>{a.cOq=b;a.ccc=c;a.ccd=d;},Lh=(a,b)=>{return (a.cne.cF(b)).bGE+6.0+15.0;},LT=(a,b)=>{return (a.cne.cF(b)).bGF+10.0;},FdV=(a,b)=>{let c;c=LT(a,b);return Cl(Lh(a,b),c);},ADH=(a,b)=>{let c,d,e,f,g,h;a:{c=b.hE();b=(b.h2(Cc(a.c0T))).h2(a.cKO);if(!a.c5Z)d=B0t(Lh(a,c),LT(a,c),a.bHX);else{e=a.cOq;DC();if(e===FL){e=a.ccc;f=a.ccd;d=EE();Ec(d,0.0, +a.bHX/2.0);g=BlR(e.bGL-4.0,0.0,LT(a,c)-8.0);B2(d,0.0,g);B2(d,f.bGK,f.bGL);B2(d,0.0,g+8.0);B2(d,0.0,LT(a,c)-a.bHX/2.0);HX(d,BA(a.bHX/2.0,LT(a,c)),a.bHX/2.0,0.0,0.0);B2(d,Lh(a,c)-a.bHX/2.0,LT(a,c));HX(d,BA(Lh(a,c),LT(a,c)-a.bHX/2.0),a.bHX/2.0,0.0,0.0);B2(d,Lh(a,c),10.0);B2(d,Lh(a,c)-10.0,0.0);B2(d,a.bHX/2.0,0.0);HX(d,BA(0.0,a.bHX/2.0),a.bHX/2.0,0.0,0.0);}else{if(e!==Gy){if(e===HG){d=Eut(a,c,a.ccc,a.ccd);break a;}if(e===G_){d=EU8(a,c,a.ccc,a.ccd);break a;}b=new Bt;X(b);J(b);}f=a.ccc;h=a.ccd;d=EE();Ec(d,0.0,a.bHX +/2.0);B2(d,0.0,LT(a,c)-a.bHX/2.0);HX(d,BA(a.bHX/2.0,LT(a,c)),a.bHX/2.0,0.0,0.0);B2(d,Lh(a,c)-a.bHX/2.0,LT(a,c));HX(d,BA(Lh(a,c),LT(a,c)-a.bHX/2.0),a.bHX/2.0,0.0,0.0);g=BlR(f.bGL-4.0,10.0,LT(a,c)-8.0);B2(d,Lh(a,c),g+8.0);B2(d,h.bGK,h.bGL);B2(d,Lh(a,c),g);B2(d,Lh(a,c),10.0);B2(d,Lh(a,c)-10.0,0.0);B2(d,a.bHX/2.0,0.0);HX(d,BA(0.0,a.bHX/2.0),a.bHX/2.0,0.0,0.0);}}}d.bG1=a.c63;e=a.cMs;if(e!==null)b=b.h2(e);b.hP(d);b.hP(BD4(Lh(a,c),a.bHX));a.cne.cC(b.h2(Bh(6.0,5.0)));},BD4=(b,c)=>{let d,e,f;d=EE();e=b-10.0;Ec(d,e,0.0);if +(c===0.0)B2(d,e,10.0);else{f=c/4.0;B2(d,e,10.0-f);HX(d,BA(e+f,10.0),f,0.0,0.0);}B2(d,b,10.0);B2(d,e,0.0);return d;},B0t=(b,c,d)=>{let e,f,g;e=EE();if(d===0.0){Ec(e,0.0,0.0);B2(e,0.0,c);B2(e,b,c);B2(e,b,10.0);B2(e,b-10.0,0.0);B2(e,0.0,0.0);}else{f=d/2.0;Ec(e,0.0,f);g=c-f;B2(e,0.0,g);HX(e,BA(f,c),f,0.0,0.0);B2(e,b-f,c);HX(e,BA(b,g),f,0.0,0.0);B2(e,b,10.0);B2(e,b-10.0,0.0);B2(e,f,0.0);HX(e,BA(0.0,f),f,0.0,0.0);}return e;},Eut=(a,b,c,d)=>{let e,f;e=EE();Ec(e,0.0,a.bHX/2.0);B2(e,0.0,LT(a,b)-a.bHX/2.0);HX(e,BA(a.bHX +/2.0,LT(a,b)),a.bHX/2.0,0.0,0.0);B2(e,Lh(a,b)-a.bHX/2.0,LT(a,b));HX(e,BA(Lh(a,b),LT(a,b)-a.bHX/2.0),a.bHX/2.0,0.0,0.0);B2(e,Lh(a,b),10.0);B2(e,Lh(a,b)-10.0,0.0);f=BlR(c.bGK-4.0,0.0,Lh(a,b)-10.0);B2(e,f+8.0,0.0);B2(e,d.bGK,d.bGL);B2(e,f,0.0);B2(e,a.bHX/2.0,0.0);HX(e,BA(0.0,a.bHX/2.0),a.bHX/2.0,0.0,0.0);return e;},EU8=(a,b,c,d)=>{let e,f;e=EE();Ec(e,0.0,a.bHX/2.0);B2(e,0.0,LT(a,b)-a.bHX/2.0);HX(e,BA(a.bHX/2.0,LT(a,b)),a.bHX/2.0,0.0,0.0);f=BlR(c.bGK-4.0,0.0,Lh(a,b));B2(e,f,LT(a,b));B2(e,d.bGK,d.bGL);B2(e,f+8.0, +LT(a,b));B2(e,Lh(a,b)-a.bHX/2.0,LT(a,b));HX(e,BA(Lh(a,b),LT(a,b)-a.bHX/2.0),a.bHX/2.0,0.0,0.0);B2(e,Lh(a,b),10.0);B2(e,Lh(a,b)-10.0,0.0);B2(e,a.bHX/2.0,0.0);HX(e,BA(0.0,a.bHX/2.0),a.bHX/2.0,0.0,0.0);return e;}; +function Cab(){let a=this;A_L.call(a);a.cw$=null;a.b4Z=null;a.cSG=null;a.cy2=null;a.cAW=null;a.cHv=null;a.ctF=null;} +let CND=a=>{return CE4(a.bG7);},Fud=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;if(!Dfa(a.bG7)){c=BgD();Hb();Db(c,IO,E(1190));d=KF;e=En(a.bG7.bHn);f=En(a.bG7.bHo);g=new S;T(g);h=H(H(g,E(6472)),e);Bb(h,95);H(h,f);Db(c,d,Q(g));Db(c,KD,a.bG7.cIv);Db(c,A1r,En(a.bG7.bHn));Db(c,A1s,En(a.bG7.bHo));Db(c,AUv,a.bG7.bHn.bJn);Db(c,AUb,a.bG7.bHo.bJn);g=Db9(L1(a.bG7));if(g!==null)Db(c,AYM,g);b.hH(c);h=Bf_(a);if(h!==null){g=a.b4Z;if(g!==null)h=DgS(g,h);d=null;e=null;if(Hh(a.bG7.bHn))d=(V1(a.bSc,a.bG7.bHn)).bJO;if +(Hh(a.bG7.bHo))e=(V1(a.bSc,a.bG7.bHo)).bJO;h=DhS(h,e,d);if(d!==null)A2W(h,(Bu$(V1(a.bSc,a.bG7.bHn))).bmi(b.hE(),ID(h)));if(e!==null)A4A(h,(Bu$(V1(a.bSc,a.bG7.bHo))).bmi(b.hE(),Jz(h)));f=D2G(a);i=LY(f,a.bVc.bGN);Cpx(i);j=ATO(i);g=a.bG7;d=g.bQT;if(d===null)k=AKF(g)===null?j:AKF(a.bG7);else{CM();k=CWR(d,A2s,E1);if(k===null)k=j;}b=(b.h2(Cc(E4()))).h2(k);l=L1(a.bG7);m=Fi(f);g=a.bVc;YZ();c=A8$;d=null;n=AWK(g,c,d);o=m!==null&&A6r(l.bN3)?A9Q(l,m):A9Q(l,n);g=a.bG7.bQT;if(g!==null&&ACd(g)!==null)o=ACd(AXa(a.bG7));p=a.bG7.b8s;if +(p!==null)b.hF(p);q=b.h2(k);if(CrA(A7i(l)))q=q.h2(Cc(k));r=b.h2(k);if(CrA(A2X(l)))r=r.h2(Cc(k));D_r(a,h,q);Dwq(a,h,r);((b.h2(o)).h2(k)).hP(h);if(p!==null)b.hG();}if(Y6(a,E(764))!==null)a.cSG.cC(b.h2(Y6(a,E(764))));if(Y6(a,E(7926))!==null)a.cy2.cC(b.h2(Y6(a,E(7926))));if(Y6(a,E(7927))!==null)a.cAW.cC(b.h2(Y6(a,E(7927))));if(h!==null){s=Bf_(a);g=a.b4Z;if(g!==null)s=DgS(g,s);if(a.cHv!==null&&Y6(a,E(7927))!==null){t=Y6(a,E(7927));u=BA(CLD(t),B6Q(t));DdZ(a,b,a.cHv,a.cAW,u,ID(s),Jz(s),A75(s));}if(a.ctF!==null&&Y6(a, +E(7926))!==null){v=Y6(a,E(7926));w=BA(CLD(v),B6Q(v));DdZ(a,b,a.ctF,a.cy2,w,Jz(s),ID(s),A75(s));}}b.hI();return;}},D2G=a=>{let b;B8();b=Du(CG(AFI,N$(BWj(a))),a.bG7.bPW);return B0(B1(a.bVc),b);},DiW=a=>{let b,c;b=ID(Bf_(a));c=a.b4Z;if(c!==null)b=ADK(c,b);return b;},CaU=a=>{let b,c;b=Jz(Bf_(a));c=a.b4Z;if(c!==null)b=ADK(c,b);return b;},D_r=(a,b,c)=>{let d,e,f,g,h,$$je;d=By4((L1(a.bG7)).bJi,AF5(a.bVc));if(d!==null){e=ID(b);f=AL5(b)+3.141592653589793;a:{b:{try{g=d.blB(e,f,null);if(g!==null){d=CND(a);AH1();if(d=== +AJq)A2W(b,Bc5(Bh(g.blE(),0.0),f-3.141592653589793));g.cC(c);}break a;}catch($$e){$$je=P($$e);if($$je instanceof BV){h=$$je;break b;}else{throw $$e;}}}AEM(h);Fw(Fm(),E(7928));}return;}},Dwq=(a,b,c)=>{let d,e,f,g,h,$$je;d=By4((L1(a.bG7)).bJG,AF5(a.bVc));if(d!==null){e=Jz(b);f=AWU(b);a:{b:{try{g=d.blB(e,f,null);if(g!==null){h=CND(a);AH1();if(h===AJq)A4A(b,Bc5(Bh(g.blE(),0.0),f-3.141592653589793));g.cC(c);}break a;}catch($$e){$$je=P($$e);if($$je instanceof BV){h=$$je;break b;}else{throw $$e;}}}AEM(h);Fw(Fm(),E(7929));}return;}},Y6 +=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=a.cw$.bGQ;d=null;if(Bj(b,E(764)))d=c.cc2;else if(Bj(b,E(7926)))d=c.b9t;else if(Bj(b,E(7927)))d=c.b_t;if(d!==null){b=d.bJJ;e=b.bGH;f=b.bGG;b=d.bHT;g=b.bGH;h=b.bGG;b=new Jn;g=g/2.0;i=e+g;j=h/2.0;Kz(b,i,f-j);k=BRn(b,BA(e-g,f+j));b=a.b4Z;if(b!==null){l=I3(k.b2J);return Bh(l.bHj,b.cy8-l.bHu);}return Bh(k.b2J.bGK,k.ca4.bGL);}return null;},Bf_=a=>{let b,c,d,e,f,g,h,i,j;b=a.cw$.bGQ.b4y;c=ARD();d=Y(b.bIY,0);e=B3d(c,AIi(a,b,0),AIi(a,b,1),AIi(a,b,2),AIi(a,b,3));f=d.bPR;g=4;while(g{let d;d=Y((Y(b.bIY,0)).bK7,c);return BA(d.bGH,d.bGG);},DdZ=(a,b,c,d,e,f,g,h)=>{let i,j,k,l,m,n,o;i=b.hE();j=d.cF(i);k=c.cF(i);d=Bk();l=K(AB2,2).data;i=a.bG7;l[0]=i.bHn;l[1]=i.bHo;m=l.length;n=0;while(n{let b;b=new BV;Bp(b,E(7930));J(b);}; +function Cza(){let a=this;F.call(a);a.cKS=0.0;a.crh=0.0;a.cuw=null;a.cQ8=null;} +let BO$=(a,b,c)=>{let d,e,f;d=a.cQ8;b=b.h2(Cc(a.cuw));e=a.cKS;f=a.crh;if(c!==0.0){b=b.h2(E4());b=b.h2(Bh(e,d.TA(b.hE())));if(f>e)b.hP(C2(f-e,c));}},O6=N(Bx),A$e=null,Bmu=null,Bo9=null,Bbm=null,ANf=null,Q$=null,AXf=null,BgV=null,A21=null,B4a=null,DEy=null,KT=()=>{KT=Z(O6);Dxk();},EIm=(a,b,c)=>{KT();Ct(a,b,c);},Z4=(a,b)=>{let c=new O6();EIm(c,a,b);return c;},ZV=(a,b,c)=>{let d;switch(a.bGO){case 0:return EJy(AEP(b),c);case 1:return E1G(AEP(b),c);case 2:c=DqZ(A3Z(b),c);d=BZ6(b);b=new S;T(b);c=H(b,c);Bb(c,32);BE(c, +d);return Q(b);case 3:c=Cxf(A3Z(b),c);d=BZ6(b);b=new S;T(b);c=H(b,c);Bb(c,32);BE(c,d);return Q(b);case 4:return Cxf(A3Z(b),c);case 5:return DqZ(A3Z(b),c);case 6:d=BZ6(b);b=new S;T(b);BE(b,d);return Q(b);case 7:b=BJ7(b);c=new S;T(c);H(c,b);return Q(c);case 8:d=XS(b);b=new S;T(b);BE(b,d);return Q(b);case 9:break;default:b=new BP;X(b);J(b);}return EZh(a,b,c);},EZh=(a,b,c)=>{let d,e;a:{b:{c:{d:{e:{f:{g:{h:{d=c.bIP;e=(-1);switch(FP(d)){case 3201:break h;case 3246:break g;case 3276:break f;case 3383:break e;case 3428:break d;case 3651:break c;case 3886:break b;default:}break a;}if +(!Bj(d,E(534)))break a;e=2;break a;}if(!Bj(d,E(4007)))break a;e=1;break a;}if(!Bj(d,E(530)))break a;e=0;break a;}if(!Bj(d,E(538)))break a;e=3;break a;}if(!Bj(d,E(540)))break a;e=4;break a;}if(!Bj(d,E(4008)))break a;e=5;break a;}if(Bj(d,E(531)))e=6;}switch(e){case 0:e=XS(b);KT();b=ZV(Q$,b,c);c=new S;T(c);BE(c,e);Bb(c,32);H(c,b);return Q(c);case 1:break;case 2:e=XS(b);KT();b=ZV(Q$,b,c);c=new S;T(c);BE(c,e);H(H(c,E(7931)),b);return Q(c);case 3:KT();c=ZV(Q$,b,c);e=XS(b);b=new S;T(b);c=H(b,c);Bb(c,47);BE(c,e);Bb(c, +26085);return Q(b);case 4:KT();c=ZV(Q$,b,c);e=XS(b);b=new S;T(b);c=H(b,c);Bb(c,32);BE(c,e);Bb(c,51068);return Q(b);case 5:e=XS(b);KT();b=FS(ZV(ANf,b,c));c=new S;T(c);BE(c,e);Bb(c,32);H(c,b);return Q(c);case 6:KT();c=ZV(Q$,b,c);e=XS(b);b=new S;T(b);c=H(b,c);BE(c,e);Bb(c,26085);return Q(b);default:KT();c=ZV(Q$,b,c);e=XS(b);b=new S;T(b);c=H(b,c);Bb(c,32);BE(c,e);return Q(b);}e=XS(b);KT();b=ZV(Q$,b,c);c=new S;T(c);BE(c,e);H(H(c,E(7932)),b);return Q(c);},Dxk=()=>{let b,c,d;A$e=Z4(E(7933),0);Bmu=Z4(E(7934),1);Bo9 +=Z4(E(7935),2);Bbm=Z4(E(7936),3);ANf=Z4(E(7937),4);Q$=Z4(E(7938),5);AXf=Z4(E(4547),6);BgV=Z4(E(7939),7);A21=Z4(E(4531),8);b=Z4(E(7940),9);B4a=b;c=K(O6,10);d=c.data;d[0]=A$e;d[1]=Bmu;d[2]=Bo9;d[3]=Bbm;d[4]=ANf;d[5]=Q$;d[6]=AXf;d[7]=BgV;d[8]=A21;d[9]=b;DEy=c;}; +function Byj(){let a=this;F.call(a);a.bTn=0;a.cvD=0;} +let Fl9=(b,c)=>{let d;GC();Jp(NJ,V(b));Jp(AED,V(c));d=new Byj;d.bTn=b;d.cvD=c;return d;},BfS=(a,b)=>{let c;if(a!==b){if(b instanceof Byj){c=b;return !(a.bTn==c.bTn&&a.cvD==c.cvD)?0:1;}return 0;}return 1;}; +function A8d(){let a=this;F.call(a);a.c6n=null;a.cZE=null;a.cYY=null;a.cTR=0;} +let BrX=(a,b,c,d,e)=>{a.c6n=b;a.cZE=c;a.cTR=d;a.cYY=e;},Bah=(a,b,c,d)=>{let e=new A8d();BrX(e,a,b,c,d);return e;},BhF=(a,b,c,d)=>{let e,f,g,h;if(G5(c,BH)){if(b.bG4>0)L(b,a.cZE);QN(b,c);if(!a.cTR)Bb(b,32);a:{e=d.bGO;f=a.cYY.data[e].data;e=f.length;if(e==1)d=f[0];else if(e!=3)d=IH(c,V(1))?f[0]:f[1];else{g=Fl(c,V(100));h=Fl(c,V(10));if(DS(h,V(1))&&D4(g,V(11)))d=f[0];else{b:{if(FE(h,V(2))&&IH(h,V(4))){if(GR(g,V(12)))break b;if(G5(g,V(14)))break b;}d=f[1];break a;}d=f[2];}}}L(b,d);return;}},Fn3=b=>{let c,d,e,f;a: +{b:{c:{d:{e:{f:{g:{h:{c=(-1);switch(FP(b)){case 3201:break h;case 3246:break g;case 3276:break f;case 3383:break e;case 3428:break d;case 3651:break c;case 3886:break b;default:}break a;}if(!Bj(b,E(534)))break a;c=2;break a;}if(!Bj(b,E(4007)))break a;c=1;break a;}if(!Bj(b,E(530)))break a;c=0;break a;}if(!Bj(b,E(538)))break a;c=3;break a;}if(!Bj(b,E(540)))break a;c=4;break a;}if(!Bj(b,E(4008)))break a;c=5;break a;}if(Bj(b,E(531)))c=6;}switch(c){case 0:return Bah(E(7941),E(50),0,BB(Ib(Bi),[BB(Bi,[E(7942),E(7943)]), +BB(Bi,[E(7944),E(7945)]),BB(Bi,[E(7946),E(7947)]),BB(Bi,[E(7948),E(7949)])]));case 1:return Bah(E(7950),E(50),0,BB(Ib(Bi),[BB(Bi,[E(7951),E(7952)]),BB(Bi,[E(7953),E(7954)]),BB(Bi,[E(7955),E(7956)]),BB(Bi,[E(7957),E(7958)])]));case 2:return Bah(E(7959),E(50),0,BB(Ib(Bi),[BB(Bi,[E(7960),E(7961)]),BB(Bi,[E(7962),E(7963)]),BB(Bi,[E(7964),E(7965)]),BB(Bi,[E(7966),E(7967)])]));case 3:break;case 4:b=new A8d;d=K(Ib(Bi),4);e=d.data;f=K(Bi,1);f.data[0]=E(7968);e[0]=f;f=K(Bi,1);f.data[0]=E(7969);e[1]=f;f=K(Bi,1);f.data[0] +=E(7970);e[2]=f;f=K(Bi,1);f.data[0]=E(7971);e[3]=f;BrX(b,E(7972),E(50),1,d);return b;case 5:return Bah(E(7973),E(50),0,BB(Ib(Bi),[BB(Bi,[E(7974),E(7975),E(7976)]),BB(Bi,[E(7977),E(7978),E(7979)]),BB(Bi,[E(7980),E(7981),E(7982)]),BB(Bi,[E(7983),E(7984),E(7985)])]));case 6:b=new A8d;d=K(Ib(Bi),4);e=d.data;f=K(Bi,1);f.data[0]=E(7986);e[0]=f;f=K(Bi,1);f.data[0]=E(7987);e[1]=f;f=K(Bi,1);f.data[0]=E(7988);e[2]=f;f=K(Bi,1);f.data[0]=E(7989);e[3]=f;BrX(b,E(7990),E(14),1,d);return b;default:return Bah(E(71),E(50),0, +BB(Ib(Bi),[BB(Bi,[E(742),E(7991)]),BB(Bi,[E(7992),E(4862)]),BB(Bi,[E(7946),E(7947)]),BB(Bi,[E(7993),E(7994)])]));}b=new A8d;d=K(Ib(Bi),4);e=d.data;f=K(Bi,1);f.data[0]=E(7995);e[0]=f;f=K(Bi,1);f.data[0]=E(7996);e[1]=f;f=K(Bi,1);f.data[0]=E(7997);e[2]=f;f=K(Bi,1);f.data[0]=E(7989);e[3]=f;BrX(b,E(7998),E(14),1,d);return b;},A01=N(Bx),BjP=null,Bdi=null,Bls=null,B21=null,DOF=null,Bcl=()=>{Bcl=Z(A01);DFY();},D2_=(a,b,c)=>{Bcl();Ct(a,b,c);},BbE=(a,b)=>{let c=new A01();D2_(c,a,b);return c;},DFY=()=>{let b,c,d;BjP=BbE(E(7999), +0);Bdi=BbE(E(3376),1);Bls=BbE(E(4830),2);b=BbE(E(4828),3);B21=b;c=K(A01,4);d=c.data;d[0]=BjP;d[1]=Bdi;d[2]=Bls;d[3]=b;DOF=c;}; +function CKJ(){let a=this;F.call(a);a.b5a=null;a.b9O=null;a.cnD=null;a.b0h=null;a.cKU=null;a.cKW=null;} +let DWQ=(a,b,c,d,e,f,g)=>{a.b5a=b;a.b9O=c;a.cnD=d;a.b0h=f;a.cKU=e;a.cKW=g;},B7H=(a,b,c,d,e,f)=>{let g=new CKJ();DWQ(g,a,b,c,d,e,f);return g;},FoM=a=>{let b,c,d,e;b=BY(a.cnD);c=BY(a.b9O);d=BY(a.b5a);e=new S;T(e);b=H(H(H(H(e,E(8000)),b),E(8001)),c);Bb(b,32);H(b,d);return Q(e);},CB3=N(Np); +function C__(){let a=this;F.call(a);a.bNH=null;a.b8$=0.0;a.bYs=0.0;a.bRc=0;a.bX6=null;a.cN4=0;} +let FhD=(a,b,c,d,e,f,g)=>{a.bNH=b;a.b8$=c;a.bYs=d;a.bRc=e;a.bX6=f;a.cN4=g;},Fkr=(a,b,c,d,e,f)=>{let g=new C__();FhD(g,a,b,c,d,e,f);return g;},BR1=a=>{B8();return BUU;},CqT=(a,b)=>{let c;c=BR1(a);if(b!==null&&b.bLt!==null)return B0(B1(a.bNH),Du(c,b.bLt));return B0(B1(a.bNH),c);},E$1=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,$$je;if(!a.cN4)DZ0(a,b,c,d);else{e=a.bRc;if(e){f=c.bSv;g=a.bYs/e;h=CqT(a,c);i=0.6;a:{b:{try{j=i;B9();k=DL((BJ(h,ASQ)).oK());if(k!==null){j=i;if(Oj(k)>0.0){j=i;if(Oj(k)<=1.0){j=i;i +=Oj(k);j=i;}}}break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break b;}else{throw $$e;}}}i=j;}l=g*i;m=(g-l)/2.0;k=(BJ(h,Cz)).cu(a.bNH.bGN);if(k===null)k=d;n=Dw((BJ(h,H1)).oK());o=0;p=f;q=l/2.0;while(o{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,$$je;e=a.bRc;if(e){f=c.bSv;g=a.b8$/e;h=b.hE();i=CqT(a,c);j=0.6;a:{b:{try{k=j;B9();l=DL((BJ(i,ASQ)).oK());if(l!==null){k=j;if(Oj(l)>0.0){k=j;if(Oj(l)<=1.0){k=j;j=Oj(l);k=j;}}}break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break b;}else{throw $$e;}}}j=k;}m=g*j;k=(g-m)/2.0;n=(BJ(i,Cz)).cu(a.bNH.bGN);if +(n===null)n=d;o=Dw((BJ(i,H1)).oK());p=0;q=f;j=m/2.0;while(p=0)w=t-v;else{w=v-t;v=t;}if(w>0.0){u=C2(m,w);((((b.h2(n)).h2(o)).h2(Cc(d))).h2(DJ(BM(s),BW(v)))).hP(u);}if(c.bO4)BN_(a,b,r,s+j,x>=0?v-5.0:v+w+5.0,h);p=p+1|0;}return;}},Fg9=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;if(a.bRc&&!HH(c)){e=b.hE();f=a.b8$/a.bRc;g=c;h=g.bGJ;i +=f*0.8;j=i/h;k=(f-i)/2.0;l=B0(B1(a.bNH),BR1(a));B9();m=Dw((BJ(l,H1)).oK());n=0;i=j/2.0;while(n=0)w=t-v;else{w=v-t;v=t;}y=(BJ(l,Cz)).cu(a.bNH.bGN);if(y===null)y=q;z=C2(j,w);((((b.h2(y)).h2(m)).h2(Cc(q))).h2(DJ(BM(s),BW(v)))).hP(z);if(p.bO4)BN_(a,b,r,s+i,x>=0?v-5.0:v+w+5.0,e);}o=o+1|0;}n=n+1|0;}return;}},ELl +=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,$$je;if(a.bRc&&!HH(c)){e=b.hE();f=a.b8$/a.bRc;g=B0(B1(a.bNH),BR1(a));h=0.6;a:{b:{try{i=h;B9();j=DL((BJ(g,ASQ)).oK());if(j!==null){i=h;if(Oj(j)>0.0){i=h;if(Oj(j)<=1.0){i=h;h=Oj(j);i=h;}}}break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break b;}else{throw $$e;}}}h=i;}k=f*h;l=(f-k)/2.0;BiY(new AGk);m=Dw((BJ(g,H1)).oK());n=0;j=c;h=k/2.0;while(n=0){w=p-o;s=s-w;y=s;}else{w=o-p;z=r+w;y=r;r=z;}ba=(BJ(g,Cz)).cu(a.bNH.bGN);if(ba===null)ba=u;bb=C2(k,w);((((b.h2(ba)).h2(m)).h2(Cc(u))).h2(DJ(BM(v),BW(y)))).hP(bb);if(t.bO4)BN_(a,b,i,v+h,x>=0?y-5.0:y+w+5.0,e);}q=q+1|0;}n=n+1|0;}return;}},BN_=(a,b,c,d,e,f)=>{let g,h,i,j,k,l,m,n,$$je;a:{b:{try{g=CIo(a,c);h=AHY(We(10),SC());i=DV(GK(a.bNH),E(66));j=UR(h,i,i,null);k=B4(PJ(a.bNH),g);B3();k=C_(k,j,CO,a.bNH);l +=k.cF(f);m=d-N4(l)/2.0;n=e-Pz(l)-2.0;k.cC(b.h2(DJ(BM(m),BW(n))));break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break b;}else{throw $$e;}}}}},CIo=(a,b)=>{let c,d;if(EL(b)<0.01&&b!==0.0){c=K(F,1);c.data[0]=DL(b);return Jv(E(6476),c);}d=Pc(b);if(b===Id(d)){c=K(F,1);c.data[0]=TT(d);return Jv(E(6477),c);}c=K(F,1);c.data[0]=DL(b);return Jv(E(6478),c);},COd=N(),B_I=null,Cjx=null,Det=null,A6G=()=>{A6G=Z(COd);DXh();},DXh=()=>{let b,c;b=Ca((Dqb()).data.length);c=b.data;Det=b;c[ZJ.bGO]=1;c[AHg.bGO]=2;c[AL7.bGO] +=3;SH();c=Ca((COL.b2()).data.length);b=c.data;Cjx=c;b[Yq.bGO]=1;b[AB7.bGO]=2;b[AMF.bGO]=3;b[A9E.bGO]=4;Ru();c=Ca((Dcp.b2()).data.length);b=c.data;B_I=c;b[ABg.bGO]=1;b[AEN.bGO]=2;}; +function Dom(){let a=this;F.call(a);a.dbU=null;a.cjl=0.0;a.cjZ=0.0;a.ck9=0;a.cmj=null;a.cpl=null;} +let E1W=(a,b,c,d,e,f,g)=>{a.dbU=b;a.cjl=c;a.cjZ=d;a.ck9=e;a.cmj=f;a.cpl=g;},EwW=(a,b,c,d,e,f)=>{let g=new Dom();E1W(g,a,b,c,d,e,f);return g;},Eq8=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;if(!a.ck9&&!Yt(c))return;a:{e=c.bSv;if(!Yt(c)){f=a.cjl/a.ck9;g=0;e=e;while(true){if(g>=DO(e.bGJ-1|0,a.ck9-1|0))break a;h=(Be(e,g)).bG6;i=g+1|0;j=(Be(e,i)).bG6;k=g;l=(k+0.5)*f;m=a.cjZ;c=a.cmj;n=c.bIt;o=h-n;h=c.bID-n;o=m-o/h*m;p=EB((k+1.5)*f-l,m-(j-n)/h*m-o);(((b.h2(d)).h2(Dw(2.0))).h2(DJ(BM(l),BW(o)))).hP(p);g=i;}}q=c.b2g;if +(a.cpl!==null){g=0;e=e;while(g<(e.bGJ-1|0)){p=q;r=(Be(p,g)).bG6;s=(Be(e,g)).bG6;g=g+1|0;n=(Be(p,g)).bG6;t=(Be(e,g)).bG6;l=ARv(a.cpl,r,0.0,a.cjl);k=a.cjZ;c=a.cmj;o=c.bIt;o=k-(s-o)/(c.bID-o)*k;k=ARv(a.cpl,n,0.0,a.cjl);h=a.cjZ;c=a.cmj;f=c.bIt;p=EB(k-l,h-(t-f)/(c.bID-f)*h-o);(((b.h2(d)).h2(Dw(2.0))).h2(DJ(BM(l),BW(o)))).hP(p);}}else{Fw(Fm(),E(8002));return;}}}; +function C0x(){let a=this;F.call(a);a.bXX=null;a.cGi=0.0;a.cI5=0.0;a.cho=0;a.cEF=null;a.c3e=null;} +let Ffi=(a,b,c,d,e,f,g)=>{a.bXX=b;a.cGi=c;a.cI5=d;a.cho=e;a.cEF=f;a.c3e=g;},D7S=(a,b,c,d,e,f)=>{let g=new C0x();Ffi(g,a,b,c,d,e,f);return g;},DKa=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,$$je;if(!a.cho&&!Yt(c))return;e=c.bSv;f=b.hE();B8();g=BEe;h=c.bLt===null?B0(B1(a.bXX),g):B0(B1(a.bXX),Du(g,c.bLt));B9();i=(BJ(h,A5N)).cu(a.bXX.bGN);if(i===null){i=(BJ(h,Cz)).cu(a.bXX.bGN);if(i===null)i=d;else if(d!==null)i=d;}j=8.0;a:{b:{try{k=j;l=DL((BJ(h,BjI)).oK());if(l!==null){k=j;if(Oj(l)>0.0){k=j;j=Oj(l);k= +j;}}break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break b;}else{throw $$e;}}}j=k;}m=c.b1N;c:{d:{try{e:{d=m;n=(BJ(h,A3Y)).oB();if(n!==null){d=m;if(!CQ(n)){f:{g:{h:{i:{d=m;g=FS(n);o=(-1);switch(FP(g)){case -1360216880:break i;case -894674659:break h;case 1497762312:break g;default:}break f;}d=m;if(!Bj(g,E(721)))break f;d=m;o=0;break f;}d=m;if(!Bj(g,E(3464)))break f;d=m;o=1;break f;}d=m;if(Bj(g,E(3465))){d=m;o=2;}}j:{k:{l:{d=m;switch(o){case 0:break l;case 1:break k;case 2:break j;default:}break e;}d= +m;QQ();m=ZJ;d=m;break e;}d=m;QQ();m=AHg;d=m;break e;}d=m;QQ();m=AL7;d=m;}}}break c;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break d;}else{throw $$e;}}}m=d;}m:{if(!Yt(c)){p=a.cGi/a.cho;q=0;d=e;while(true){if(q>=DO(d.bGJ,a.cho))break m;r=(Be(d,q)).bG6;s=(q+0.5)*p;t=a.cI5;h=a.cEF;k=h.bIt;u=t-(r-k)/(h.bID-k)*t;CaR(a,b,i,s,u,j,m);if(c.bO4)C3U(a,b,r,s,u-j/2.0-8.0,f);q=q+1|0;}}g=c.b2g;q=0;h=e;while(q{let h;a:{b:{c:{d:{BP9();switch(Cyg.data[g.bGO]){case 1:break;case 2:break c;case 3:break b;default:break d;}CAr(a,b,c,d,e,f);break a;}CAr(a,b,c,d,e,f);break a;}g=C2(f,f);b=(b.h2(c)).h2(Cc(c));f=f/2.0;(b.h2(DJ(BM(d-f),BW(e-f)))).hP(g);break a;}g=Fj();h= -f/2.0;BQ(g,0.0,h);f=f/2.0;BQ(g,h,f);BQ(g,f,f);(((b.h2(c)).h2(Cc(c))).h2(DJ(BM(d),BW(e)))).hP(g);}},CAr=(a,b,c,d,e,f)=>{let g;g=Fz(f,f);c=(b.h2(c)).h2(Cc(c));f=f/2.0;(c.h2(DJ(BM(d +-f),BW(e-f)))).hP(g);},C3U=(a,b,c,d,e,f)=>{let g,h,i,j,k,l,m,n,$$je;a:{b:{try{g=Egz(a,c);h=AHY(We(10),SC());i=DV(GK(a.bXX),E(66));j=UR(h,i,i,null);k=B4(PJ(a.bXX),g);B3();k=C_(k,j,CO,a.bXX);l=k.cF(f);m=d-N4(l)/2.0;n=e-Pz(l)-2.0;k.cC(b.h2(DJ(BM(m),BW(n))));break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break b;}else{throw $$e;}}}}},Egz=(a,b)=>{let c,d;if(EL(b)<0.01&&b!==0.0){c=K(F,1);c.data[0]=DL(b);return Jv(E(6476),c);}d=Pc(b);if(b===Id(d)){c=K(F,1);c.data[0]=TT(d);return Jv(E(6477),c);}c=K(F,1);c.data[0] +=DL(b);return Jv(E(6478),c);}; +function CMC(){let a=this;F.call(a);a.cpb=null;a.cMO=0.0;a.ceK=0.0;a.b5f=0;a.b7U=null;} +let EFY=(a,b,c,d,e,f)=>{a.cpb=b;a.cMO=c;a.ceK=d;a.b5f=e;a.b7U=f;},D1N=(a,b,c,d,e)=>{let f=new CMC();EFY(f,a,b,c,d,e);return f;},FdB=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;f=a.b5f;if(f){g=c.bSv;h=a.cMO/f;i=Fj();j=0;k=g;while(j=0){m=(j+0.5)*h;p=a.b7U.bIt;if(e!==null){g=e;if(j=DO(k.bGJ,a.b5f))break a;l=(Be(k,f)).bG6;if(e===null)t=l;else{c=e;t=f>=c.bGJ?l:(Be(c,f)).bG6+l;}o +=(f+0.5)*h;m=a.ceK;c=a.b7U;r=c.bIt;EyE(a,b,l,o,m-(t-r)/(c.bID-r)*m-8.0);f=f+1|0;}}}return;}},EyE=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,$$je;a:{b:{try{f=ELq(a,c);g=AHY(We(10),SC());h=DV(GK(a.cpb),E(66));i=UR(g,h,h,null);j=B4(PJ(a.cpb),f);B3();j=C_(j,i,CO,a.cpb);k=j.cF(b.hE());l=d-N4(k)/2.0;m=e-Pz(k)-2.0;j.cC(b.h2(DJ(BM(l),BW(m))));break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){break b;}else{throw $$e;}}}}},ELq=(a,b)=>{let c,d;if(EL(b)<0.01&&b!==0.0){c=K(F,1);c.data[0]=DL(b);return Jv(E(6476),c);}d=Pc(b);if +(b===Id(d)){c=K(F,1);c.data[0]=TT(d);return Jv(E(6477),c);}c=K(F,1);c.data[0]=DL(b);return Jv(E(6478),c);}; +function BLM(){let a=this;F.call(a);a.b6Z=null;a.b2T=null;a.b4T=0.0;a.b9S=0.0;a.da6=null;} +let B6t=0,A5S=()=>{A5S=Z(BLM);DH_();},CaC=(a,b)=>{let c,d,e,f,g,h;U(a.b2T,b);c=new ASA;d=b.bMw;e=b.bRR;f=d+e.b7W/2.0;A8o(c,0.0,f,e.bV3,f);BeI(a.b6Z,c.bQN,c.bSp,c.bM_);if(Df()){A5S();if(!B6t&&c.bM_!==c.bSo){b=new C4;X(b);J(b);}}e=new ASA;c=b.bRR;g=c.bV3;h=b.bMw+c.b7V/2.0;A8o(e,g,h,g+c.b6u,h);f=e.bQN;h=e.bSp;if(f!==h)BeI(a.b6Z,f,h,e.bM_);if(Df()){A5S();if(!B6t&&e.bM_!==e.bSo){b=new C4;X(b);J(b);}}},DH_=()=>{B6t=0;}; +function C4D(){let a=this;F.call(a);a.cXc=0.0;a.co1=null;a.cY0=null;a.cJs=0.0;a.ctS=0.0;a.cTj=0.0;a.ch_=0.0;a.csF=null;a.c5_=0;a.c1m=null;a.cn0=null;} +let Dsh=(a,b)=>{return (a.cn0.cF(b)).bGF+a.cJs+a.cTj;},CDt=(a,b)=>{return (a.cn0.cF(b)).bGE+a.ch_+a.ctS;},Fn9=(a,b)=>{let c;c=Dsh(a,b);return Cl(CDt(a,b)+1.0,c+1.0);},EoG=(a,b)=>{let c,d,e,f,g,h,i;c=b.hE();d=Dsh(a,c);e=Dhp(Ge(C2(CDt(a,c),d),a.cXc),a.c1m,null);if(a.c5_)e.bG1=4.0;c=a.co1;f=c!==null&&!c.gv()&&!a.co1.cx(b.hK())?a.co1:E4();c=a.csF;g=!(c===null?0:c.bJw!==0.0?0:1)?a.cY0:f;if(g===null)g=E4();if(!(f.gv()&&g.gv())){c=(b.h2(Cc(f))).h2(g);f=a.csF;if(f!==null)c=c.h2(f);c.hP(e);}h=a.cn0;if(h instanceof AGu) +{c=h;d=a.ch_;i=a.ctS;f=new Cej;f.cGj=c;f.c4j=d;f.c4k=i;h=A85(c.bTF,f,c.cB$);}h.cC((b.h2(g)).h2(Bh(a.ch_,a.cJs)));}; +function C$y(){let a=this;F.call(a);a.cNT=null;a.cNS=null;} +let DF3=(a,b)=>{let c,d;c=a.cNT;d=a.cNS;CdN(c,Dp7(b,d));}; +function CTi(){let a=this;ADt.call(a);a.bNz=null;a.bUk=null;} +let BdZ=(a,b)=>{let c;if(BcI(b,BB(AXF,[Bo(AER),Bo(Np),Bo(AG3),Bo(FG)]))){c=!(b instanceof FG)?a.bOr:DJ(a.bOr,b);return Dlq(a.bOR,c,a.bNz,a.bUk);}c=new BV;Bp(c,ST(Dg(b)));J(c);},CT1=(b,c)=>{return Dlq(c,LR(),BDO(),b);},DLD=(a,b,c,d,e)=>{A_C(a,b,c);a.bNz=d;a.bUk=e;},Dlq=(a,b,c,d)=>{let e=new CTi();DLD(e,a,b,c,d);return e;},AW7=(a,b)=>{let c,d,e,f,g,h,i;c=a.bOr;d=c.bHj;e=c.bHu;if(F0(b,A2u)){f=b;if(f.bAc(a.bUk)){f.bAd(a,a.bUk);return;}}if(b instanceof ZC){b=b;f=a.bUk;ML();if(f!==Nb)Rq(a.bNz,e,e+b.bKg);else Rq(a.bNz, +d,d+b.bKb);}else if(b instanceof ADr){b=b;f=a.bUk;ML();if(f!==Nb)Rq(a.bNz,e+A4i(b),e+A5q(b));else Rq(a.bNz,d+A$N(b),d+A6e(b));}else if(b instanceof AAf){b=b;c=a.bUk;if(c!==b.cwb){ML();if(c!==Nb)Rq(a.bNz,e+B1I(b),e+BTv(b));else Rq(a.bNz,d+BH$(b),d+BB7(b));}}else if(b instanceof ACp){b=b;f=a.bUk;ML();if(f!==Nb)Rq(a.bNz,e,e+b.bLB);else Rq(a.bNz,d,d+b.bMH);}else if(b instanceof Ym){c=b;g=Cz_(a.bOR,LR(),Bji(0));b=Bh(d,e);if(BcI(b,BB(AXF,[Bo(AER),Bo(Np),Bo(AG3),Bo(FG)]))){b=!(b instanceof FG)?g.bOr:DJ(g.bOr,b);b= +Cz_(g.bOR,b,g.bXq);if(c instanceof Ym){f=b.bOr;h=f.bHj;i=f.bHu;c=c;c=b.bOR.gS(Gk(c.bVn),c.bPs);d=i-(c.bGF-1.5);AM9(b.bXq,h,d);AM9(b.bXq,h,d+c.bGF);AM9(b.bXq,h+c.bGE,d);AM9(b.bXq,h+c.bGE,d+c.bGF);}b=a.bUk;ML();if(b!==Nb){b=a.bNz;c=g.bXq;Rq(b,c.b2R,c.b2E);}else{b=a.bNz;c=g.bXq;Rq(b,c.b7L,c.b7t);}}else{c=new BV;Bp(c,ST(Dg(b)));J(c);}}else if(b instanceof ASR){b=b;f=a.bUk;ML();if(f!==Nb)Rq(a.bNz,e,e+b.b91);else Rq(a.bNz,d,d+b.cdP);}},DKJ=a=>{AAi();return A2_;},CHM=N(0); +function DaZ(){F.call(this);this.cW$=null;} +function BRi(){let a=this;F.call(a);a.b53=0;a.bYX=0;} +let Cf9=(a,b)=>{a.b53=b;a.bYX=1;}; +function C4u(){let a=this;F.call(a);a.cJH=null;a.cCd=0;a.cFI=null;a.bXu=null;a.cc1=0.0;a.cnk=null;a.b8c=null;} +let E16=(a,b,c,d)=>{a.bXu=LR();a.cnk=Qd();a.cJH=b;a.cFI=B4(d,b);a.cCd=c;},CHd=(a,b,c)=>{let d=new C4u();E16(d,a,b,c);return d;},EhS=a=>{return a.cJH;},BEP=(a,b)=>{return T1(a.cCd,b.cCd);},C1M=(a,b)=>{if(b.dV()==1&&b.et(a))return 0;b=b.dX();while(b.dY()){if(BEP(b.dZ(),a)<0)return 0;}return 1;},DY3=(a,b)=>{return BEP(a,b);}; +function C$U(){let a=this;JC.call(a);a.ck0=null;a.cUO=null;a.cW2=null;} +let Dmy=(a,b,c,d)=>{let e,f,g,h;e=0.0;f=0.0;g=Br(a.ck0);while(Bq(g)){h=ATV(Bm(g),b,c,d);e=BC(e,h.bGE);f=f+h.bGF;}return Cl(e,f);},De2=(a,b,c,d)=>{let e,f,g,h,i;if(c==1){e=b.h2(QW(a));(e.h2(Cc(Dra(a)))).hP(C2(d.bGE,d.bGF));f=0.0;g=Br(a.ck0);while(Bq(g)){h=Bm(g);i=(ATV(h,e.hE(),0.0,f)).bGF;if(!Bj(h.cn2,E(1272)))B5L(h,e.h2(BW(f)),c,d);else (e.h2(BW(f+i/2.0))).hP(DE(d.bGE));f=f+i;}return;}},A$p=N(Bx),B8c=null,BCS=null,Ewc=null,Brc=()=>{Brc=Z(A$p);E9T();},EUE=(a,b,c)=>{Brc();Ct(a,b,c);},CUU=(a,b)=>{let c=new A$p();EUE(c, +a,b);return c;},E9T=()=>{let b,c,d;B8c=CUU(E(485),0);b=CUU(E(4765),1);BCS=b;c=K(A$p,2);d=c.data;d[0]=B8c;d[1]=b;Ewc=c;}; +function CKd(){IT.call(this);this.cvW=null;} +let EFW=(a,b)=>{return De(a.cvW,b);},E94=(a,b)=>{return a.cvW.a0M(b);},Ex4=(a,b)=>{return;},DlB=N(),C96=null,CTm=null,CYV=null,C3e=null,CmS=null,CE1=null,CSD=null,VN=()=>{VN=Z(DlB);FqY();},Bo6=()=>{VN();return C96;},A_Q=()=>{VN();return CTm;},Bf7=()=>{VN();return CYV;},B0$=()=>{VN();return C3e;},BJY=()=>{VN();return CmS;},AXd=()=>{VN();return CE1;},Blp=()=>{VN();return CSD;},FqY=()=>{C96=new Coo;CTm=new Coq;CYV=new Cop;C3e=new Cor;CmS=new CwV;CE1=new CwT;CSD=new CwQ;}; +function CWp(){F.call(this);this.cez=null;} +let Ewl=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n;f=c;g=B1(f);B8();h=B0(g,CG(By2,d));g=GM(h);i=XK(c,h);B9();j=(BJ(h,CK)).cu(f.bGN);k=(BJ(h,Cz)).cu(f.bGN);l=Fi(h);m=G1(h);B3();c=Q2(f,CF);Ed();n=S0(ARN(f,i,c,FR),b);a.cez=XJ(m,k,j,A85(AKv(n,g,BvC(f)),a,l),e,l);},CMf=(a,b,c,d)=>{let e=new CWp();Ewl(e,a,b,c,d);return e;},A0Q=(b,c,d)=>{return CMf(b,c,d,0);},Cx$=(b,c,d)=>{return CMf(b,c,d,1);},CLF=(a,b,c,d)=>{AV4(a.cez,b,c,d);},Fqi=(a,b)=>{ADH(a.cez,b);},BUW=(a,b)=>{return De(a.cez,b);},ECy=(a,b,c)=>{return (-6.0);},EqP +=(a,b,c)=>{return (De(a.cez,b)).bGE-6.0;},Bbh=N(Bx),A0T=null,A0S=null,A0Y=null,Bga=null,CJO=null,AE9=()=>{AE9=Z(Bbh);DCG();},E7B=(a,b,c)=>{AE9();Ct(a,b,c);},Bsi=(a,b)=>{let c=new Bbh();E7B(c,a,b);return c;},DCG=()=>{let b,c,d;A0T=Bsi(E(8003),0);A0S=Bsi(E(8004),1);A0Y=Bsi(E(8005),2);b=Bsi(E(8006),3);Bga=b;c=K(Bbh,4);d=c.data;d[0]=A0T;d[1]=A0S;d[2]=A0Y;d[3]=b;CJO=c;}; +function Dc2(){let a=this;F.call(a);a.bJy=null;a.bYI=null;} +let E8C=(a,b,c,d,e,f,g)=>{let h,i,j,k,l,m,n,o,p;h=Cf(a.bJy.bT_);IY();if(!WV(h,VC)){i=a.bJy;if(!i.bHz.bYt){i=c.dX();a:{b:{while(i.dY()){if(Boi(i.dZ(),a.bJy.bHz))break b;}j=0;break a;}j=1;}if(j)A91(a,b,E(2796));c:{k=CPt(a);if(k.dV()>0){h=c.dX();while(true){if(!h.dY())break c;l=h.dZ();if(Boi(l,a.bJy.bHz))D$K(l,a.bJy);}}}m=DG0(a,g);n=EsX(a,g);if(k.dV()>0){m=0;n=0;}if(m)A91(a,b,E(8007));o=ACR(a.bJy);i=CR();H(H(H(i,E(5199)),o),E(1763));FN(b,CH(i));FN(b,E(8008));o=R8(BBT(a.bJy));i=CR();H(H(H(i,E(6453)),o),E(8009));FN(b, +CH(i));if(!BT7(a.bJy))i=E(1660);else{h=Lk(E(1198));A5F(h,AJh(a.bJy),AWT(a.bJy)-5|0,BQc(a.bJy));FN(h,E(372));i=CH(h);h=a.bYI;MY();o=AEQ;l=null;p=null;l=Czi(Bhs(h,o,l,0,p));h=CR();H(H(H(h,E(8010)),l),E(8009));FN(b,CH(h));}if(k.dV()<=0){h=CR();Et(H(H(h,E(8011)),i),59);FN(b,CH(h));Fu(b);}else{C$v(a,E(6916),Ch6(a,CQ2()),b,d);C$v(a,E(6917),Ch6(a,Cpa()),b,d);if(!BHt(a))CFb(a,b,E(8012),i);else A91(a,b,E(8012));}if(j){o=BCi(Bvl(a.bJy));h=CR();H(H(h,o),E(8013));FN(b,CH(h));}if(j)A91(a,b,E(8014));if(n)A91(a,b,E(8015));if +(ADx(a.bYI,g)){FN(b,E(8016));FN(b,CZ_(a,g));FN(b,E(8013));o=C6m(a.bJy,g);p=CZ_(a,g);h=CR();H(H(H(H(h,o),E(3037)),p),E(8017));FN(b,CH(h));FN(b,E(582));Fu(b);FN(b,E(8018));FN(b,C$a(a,g));FN(b,E(8013));FN(b,E(582));o=C$a(a,g);p=COP(a.bJy,g);h=CR();H(H(H(H(h,o),E(3037)),p),E(8017));FN(b,CH(h));Fu(b);}Fu(b);BOk(a.bJy,b,c,d);o=BK_(a.bJy,b,c,d,e,f,g);if(k.dV()>0){if(BHt(a)){c=B1Y(a);d=CR();H(H(d,c),E(8019));FN(b,CH(d));FN(b,i);FN(b,E(6460));}else if(o===null){c=B1Y(a);d=CR();H(H(d,c),E(8013));FN(b,CH(d));}}Fu(b);FN(b, +E(582));if(n)FN(b,E(582));if(j){FN(b,E(582));FN(b,E(582));}if(k.dV()>0)FN(b,E(582));if(m)FN(b,E(582));Fu(b);return;}BOk(i,b,c,d);BK_(a.bJy,b,c,d,e,f,g);return;}i=new CtE;h=a.bJy;o=a.bYI;i.bK_=h;i.cPY=o;DG$(i,b,c,d,e,f,g);},CZ_=(a,b)=>{let c;if(ADx(a.bYI,b)){c=a.bJy.b1R;b=new S;T(b);BE(H(b,E(8020)),c);return Q(b);}return null;},C$a=(a,b)=>{let c;if(ADx(a.bYI,b)){c=a.bJy.b1R;b=new S;T(b);BE(H(b,E(8021)),c);return Q(b);}return null;},B1Y=a=>{return BCi(a.bJy.bHz);},BHt=a=>{let b;b=(CPt(a)).dX();while(b.dY()){if +(CMS(b.dZ()))return 1;}return 0;},CPt=a=>{let b,c,d;b=PZ(Bo(AD3));c=(B8O(a.bJy)).dX();while(c.dY()){d=(c.dZ()).b1g;Jb();if(d!==LQ)OJ(b,d);}return b;},A91=(a,b,c)=>{CFb(a,b,c,E(1660));},CFb=(a,b,c,d)=>{let e,f;e=ACR(a.bJy);f=new S;T(f);H(H(H(H(f,E(5199)),e),c),E(1763));L(b,Q(f));e=new S;T(e);Bb(H(H(e,E(8011)),d),59);L(b,Q(e));},C$v=(a,b,c,d,e)=>{let f,g,h,i,j;if(c.bGJ>0){f=new S;T(f);Bb(H(H(f,E(8022)),b),59);L(d,Q(f));c=c;f=Br(c);while(Bq(f)){b=YG(Bm(f));g=new S;T(g);Bb(H(g,b),59);L(d,Q(g));}L(d,E(582));Fu(d);g +=Br(c);while(Bq(g)){AOS(Bm(g),d,e);}Fu(d);if(BHt(a)){h=0;i=null;c=Br(c);while(Bq(c)){j=Bm(c);if(h)L(d,E(3037));h=1;i=YG(j);L(d,i);}if(h)L(d,E(8023));Bb(d,59);Fu(d);b=B1Y(a);c=new S;T(c);Bb(H(H(H(c,i),E(3037)),b),59);L(d,Q(c));Fu(d);}}},Ch6=(a,b)=>{let c,d,e,f;c=Bk();d=(B8O(a.bJy)).dX();while(d.dY()){e=d.dZ();f=e.b1g;if(OS(b,f))U(c,e);}return c;},DG0=(a,b)=>{if(ADx(a.bYI,b))return 0;return 1;},EsX=(a,b)=>{let c;c=Mt(a.bJy.bHz);F$();if(c!==Bqi){if(ADx(a.bYI,b))return 0;return 1;}return 1;}; +function C6L(){let a=this;F.call(a);a.c$A=null;a.cQe=null;} +let BXd=N(VU),Fab=(a,b,c)=>{let d,e,f,g,h,i,j,k,l;d=a;e=(c-BiI(d))/(d.bQE.bHv+1|0);f=E9();g=G3(G8(d.bQE));h=g;i=e;while(Gl(h)){j=GZ(g);k=b-j.bHe.bGE;d=j.bHt;l=BA(k,i);Es(f,d,l);i=i+j.bHe.bGF+e;}return f;},BUo=N(VU),DHx=(a,b,c)=>{let d,e,f,g,h,i,j;d=a;e=(c-BiI(d))/(d.bQE.bHv+1|0);f=E9();d=G3(G8(d.bQE));g=d;c=e;while(Gl(g)){h=GZ(d);i=h.bHt;j=BA(0.0,c);Es(f,i,j);c=c+h.bHe.bGF+e;}return f;}; +function CcL(){F.call(this);this.c$L=null;} +function EX5(){let a=this;F.call(a);a.dfb=0.0;a.dfD=0.0;a.dft=null;a.dfI=0.0;} +function Css(){let a=this;F.call(a);a.b9X=0.0;a.b4$=0.0;a.cn7=null;a.b7u=0.0;} +let E_b=(a,b)=>{let c,d,e;if(!a.cn7.gv()){if(a.b7u===0.0)c=C2(a.b9X,a.b4$);else{c=EE();Ec(c,0.0,0.0);B2(c,a.b9X,0.0);B2(c,a.b9X,a.b4$-a.b7u/2.0);d=a.b7u/2.0;Mk(c,d,d,0.0,0.0,1.0,a.b9X-d,a.b4$);B2(c,a.b7u/2.0,a.b4$);e=a.b7u/2.0;Mk(c,e,e,0.0,0.0,1.0,0.0,a.b4$-e);B2(c,0.0,0.0);}(((b.h2(GT())).h2(a.cn7)).h2(Cc(a.cn7))).hP(c);return;}},A0F=N(Bx),ANJ=null,BSf=null,BMi=null,BNR=null,BYL=null,BHi=null,B5I=null,BQY=null,BSb=null,ClT=null,E7e=null,AR1=()=>{AR1=Z(A0F);Fji();},ETO=(a,b,c)=>{AR1();Ct(a,b,c);},XZ=(a,b)=> +{let c=new A0F();ETO(c,a,b);return c;},Fji=()=>{let b,c,d;ANJ=XZ(E(2019),0);BSf=XZ(E(2164),1);BMi=XZ(E(6297),2);BNR=XZ(E(785),3);BYL=XZ(E(780),4);BHi=XZ(E(758),5);B5I=XZ(E(596),6);BQY=XZ(E(729),7);BSb=XZ(E(719),8);b=XZ(E(710),9);ClT=b;c=K(A0F,10);d=c.data;d[0]=ANJ;d[1]=BSf;d[2]=BMi;d[3]=BNR;d[4]=BYL;d[5]=BHi;d[6]=B5I;d[7]=BQY;d[8]=BSb;d[9]=b;E7e=c;}; +function BSC(){F.call(this);this.bXT=null;} +let BQy=0,B3c=()=>{B3c=Z(BSC);END();},CUP=(a,b,c)=>{let d,e;d=Ckp(a,b,c);e=(-1.7976931348623157E308);d=NA(d);while(d.dY()){e=BC(e,(d.dZ()).b4U);}return e;},BeI=(a,b,c,d)=>{let e,f,g,h,i,j,k;if(!(c<=b)){e=Ckp(a,b,c);if(APh(e)>1){f=NA(e);f.dZ();while(f.dY()){g=f.dZ();BeI(a,b,g.bVV,d);b=g.bVV;}BeI(a,b,c,d);}else{h=(NA(e)).dZ();if(!(d<=h.b4U)){e=a.bXT.bNW;f=Bnl(e,h);if(f===null)e=null;else{e.bL6=Bv1(e,e.bL6,h);e.bVU=e.bVU+1|0;e=f.bI1;}i=e!==A_E?0:1;if(Df()&&!BQy&&!i){e=new C4;X(e);J(e);}j=h.bVV;if(j!==b){e=a.bXT;f +=By_(j,b,h.b4U);KM(e,f);}e=a.bXT;f=By_(b,c,d);KM(e,f);b=h.b1P;if(c!==b){e=a.bXT;f=By_(c,b,h.b4U);KM(e,f);}if(Df()&&!BQy){e=null;f=NA(a.bXT);a:{b:{c:{while(true){if(!f.dY())break b;g=f.dZ();if(e===null&&g.bVV!==(-1.7976931348623157E308))break c;if(e!==null&&e.b1P!==g.bVV)break;e=g;}k=0;break a;}k=0;break a;}k=e.b1P===1.7976931348623157E308?1:0;}if(!k){e=new C4;X(e);J(e);}}}}return;}e=Fm();f=new S;T(f);D6(H(f,E(8024)),b);f=Q(f);Fw(e,f);e=Fm();f=new S;T(f);D6(H(f,E(8025)),c);f=Q(f);Fw(e,f);e=new Bt;X(e);J(e);},Ckp +=(a,b,c)=>{let d,e,f;d=UJ();e=NA(a.bXT);while(true){if(!e.dY()){d=new BV;X(d);J(d);}f=e.dZ();if(b>=f.b1P)continue;KM(d,f);if(c<=f.b1P)break;}return d;},END=()=>{BQy=0;}; +function DaS(){let a=this;F.call(a);a.b7W=0.0;a.bV3=0.0;a.b7V=0.0;a.b6u=0.0;} +let FfR=a=>{let b,c,d,e,f;b=a.b7W;c=a.bV3;d=a.b7V;e=a.b6u;f=new S;T(f);D6(H(D6(H(D6(H(D6(H(f,E(8026)),b),E(8027)),c),E(8028)),d),E(8029)),e);return Q(f);},E2q=(a,b,c,d,e)=>{a.b7W=b;a.bV3=c;a.b7V=d;a.b6u=e;},CgN=(a,b,c,d)=>{let e=new DaS();E2q(e,a,b,c,d);return e;}; +function C3j(){F.call(this);this.bVK=null;} +let Dzm=a=>{a.bVK=Dy();},Ya=()=>{let a=new C3j();Dzm(a);return a;},CJk=b=>{let c;b=DfL(b);c=new S;T(c);Bb(c,112);H(c,b);return Q(c);},AWB=(a,b)=>{let c,d,e,f,g,h,i,j;c=Ya();d=Vm(Ty(a.bVK));e=d;while(TS(e)){f=U6(d);g=c.bVK;h=f;i=h.bHt;j=h.bHe;f=Dea(j.cAG,j.b3D+b,j.chJ,j.b3H);C9(g,i,f);}return c;},CqJ=(a,b,c,d,e)=>{let f,g;f=CJk(B$(b));g=DG(a.bVK,f);if(!(g!==null&&g.b3H>=c)){b=a.bVK;g=Dea(f,d,e,c);C9(b,f,g);}}; +function CXS(){F.call(this);this.b25=null;} +let Fnj=a=>{a.b25=Bk();},BDO=()=>{let a=new CXS();Fnj(a);return a;},Rq=(a,b,c)=>{let d,e,f,g,h;d=Bk();e=CnW(b,c);f=Br(a.b25);while(Bq(f)){g=Bm(f);if(!(!Bks(g,e.bPU)&&!Bks(g,e.bSj)&&!Bks(e,g.bPU)&&!Bks(e,g.bSj))?1:0){AQe(f);U(d,g);}}g=Br(d);while(Bq(g)){h=Bm(g);e=CnW(Eh(e.bPU,h.bPU),BC(e.bSj,h.bSj));}U(a.b25,e);},ELw=N(); +function BOM(){F.call(this);this.czr=null;} +let D5k=(a,b)=>{return Cl(7.0,7.0);},E6u=(a,b)=>{let c;c=Fz(7.0,7.0);((b.h2(a.czr)).h2(Cc(a.czr))).hP(c);}; +function Ciz(){F.call(this);this.cSm=null;} +let EdD=(a,b,c)=>{return 0.0;},E$X=(a,b,c)=>{return a.cSm.bGE;}; +function ClU(){let a=this;Np.call(a);a.cOF=null;a.cOG=null;} +let Ehp=(a,b)=>{let c,d,e,f,g,h,i,j;c=a.cOF.gw(b);d=a.cOG.gw(b);e=c.bJX;f=c.bJz;g=c.bJT;h=d.bJX;i=d.bJz;j=d.bJT;return Oe((e+h|0)/2|0,(f+i|0)/2|0,(g+j|0)/2|0);},ExK=N(),ADF=(b,c,d)=>{return BC(BC(b,c),d);},BlR=(b,c,d)=>{if(!(c>=d)){if(!(bd)return d;return b;}return c;}return b;},EiH=N(),E1G=(b,c)=>{let d,e;a:{b:{c:{d:{e:{f:{g:{h:{d=c.bIP;e=(-1);switch(FP(d)){case 3201:break h;case 3246:break g;case 3276:break f;case 3383:break e;case 3428:break d;case 3651:break c;case 3886:break b;default:}break a;}if +(!Bj(d,E(534)))break a;e=0;break a;}if(!Bj(d,E(4007)))break a;e=1;break a;}if(!Bj(d,E(530)))break a;e=2;break a;}if(!Bj(d,E(538)))break a;e=3;break a;}if(!Bj(d,E(540)))break a;e=4;break a;}if(!Bj(d,E(4008)))break a;e=5;break a;}if(Bj(d,E(531)))e=6;}i:{j:{k:{l:{m:{n:{switch(e){case 0:HJ();switch(Om.data[b.bGO]){case 1:break;case 2:return E(8030);case 3:return E(8031);case 4:return E(8032);case 5:return E(8033);case 6:return E(8034);case 7:return E(8035);default:break i;}return E(8036);case 1:break n;case 2:break m;case 3:break l;case 4:break k;case 5:break j;case 6:break;default:break i;}HJ();switch +(Om.data[b.bGO]){case 1:break;case 2:return E(8037);case 3:return E(8038);case 4:return E(8039);case 5:return E(8040);case 6:return E(8041);case 7:return E(8042);default:break i;}return E(8043);}HJ();switch(Om.data[b.bGO]){case 1:break;case 2:return E(8044);case 3:return E(8045);case 4:return E(8046);case 5:return E(8047);case 6:return E(8048);case 7:return E(8049);default:break i;}return E(8050);}HJ();switch(Om.data[b.bGO]){case 1:break;case 2:return E(8051);case 3:return E(8052);case 4:return E(8053);case 5:return E(8054);case 6:return E(8055);case 7:return E(8056);default:break i;}return E(8057);}HJ();switch +(Om.data[b.bGO]){case 1:break;case 2:return E(8058);case 3:return E(8059);case 4:return E(8060);case 5:return E(8061);case 6:return E(8062);case 7:return E(8063);default:break i;}return E(8064);}HJ();switch(Om.data[b.bGO]){case 1:break;case 2:return E(8065);case 3:return E(8066);case 4:return E(8067);case 5:return E(8068);case 6:return E(8069);case 7:return E(8070);default:break i;}return E(8071);}HJ();switch(Om.data[b.bGO]){case 1:break;case 2:return E(8072);case 3:return E(8073);case 4:return E(8074);case 5:return E(8075);case 6:return E(8076);case 7:return E(8077);default:break i;}return E(8078);}HJ();switch +(Om.data[b.bGO]){case 1:break;case 2:return E(8079);case 3:return E(8080);case 4:return E(8081);case 5:return E(8082);case 6:return E(8083);case 7:return E(8084);default:b=new Bt;X(b);J(b);}return E(8085);},EJy=(b,c)=>{let d,e;a:{b:{c:{d:{e:{f:{g:{h:{d=c.bIP;e=(-1);switch(FP(d)){case 3201:break h;case 3246:break g;case 3276:break f;case 3383:break e;case 3428:break d;case 3651:break c;case 3886:break b;default:}break a;}if(!Bj(d,E(534)))break a;e=0;break a;}if(!Bj(d,E(4007)))break a;e=1;break a;}if(!Bj(d,E(530)))break a;e +=2;break a;}if(!Bj(d,E(538)))break a;e=3;break a;}if(!Bj(d,E(540)))break a;e=4;break a;}if(!Bj(d,E(4008)))break a;e=5;break a;}if(Bj(d,E(531)))e=6;}i:{j:{k:{l:{m:{n:{switch(e){case 0:HJ();switch(Om.data[b.bGO]){case 1:break;case 2:return E(8086);case 3:return E(8087);case 4:return E(8088);case 5:return E(8089);case 6:return E(8090);case 7:return E(1154);default:break i;}return E(8091);case 1:break n;case 2:break m;case 3:break l;case 4:break k;case 5:break j;case 6:break;default:break i;}HJ();switch(Om.data[b.bGO]) +{case 1:break;case 2:return E(8092);case 3:return E(8093);case 4:return E(8094);case 5:return E(8095);case 6:return E(8096);case 7:return E(8097);default:break i;}return E(8098);}HJ();switch(Om.data[b.bGO]){case 1:break;case 2:return E(8099);case 3:return E(8100);case 4:return E(8101);case 5:return E(8102);case 6:return E(8103);case 7:return E(8104);default:break i;}return E(8105);}HJ();switch(Om.data[b.bGO]){case 1:break;case 2:return E(8099);case 3:return E(8106);case 4:return E(8107);case 5:return E(8108);case 6:return E(8109);case 7:return E(8110);default:break i;}return E(8105);}HJ();switch +(Om.data[b.bGO]){case 1:break;case 2:return E(8111);case 3:return E(8112);case 4:return E(8113);case 5:return E(8114);case 6:return E(8115);case 7:return E(7995);default:break i;}return E(8116);}HJ();switch(Om.data[b.bGO]){case 1:break;case 2:return E(8117);case 3:return E(8118);case 4:return E(8119);case 5:return E(8120);case 6:return E(8121);case 7:return E(7968);default:break i;}return E(8122);}HJ();switch(Om.data[b.bGO]){case 1:break;case 2:return E(8123);case 3:return E(8124);case 4:return E(8125);case 5:return E(8126);case 6:return E(8127);case 7:return E(8128);default:break i;}return E(8129);}HJ();switch +(Om.data[b.bGO]){case 1:break;case 2:return E(8130);case 3:return E(8131);case 4:return E(8132);case 5:return E(8089);case 6:return E(8090);case 7:return E(8133);default:b=new Bt;X(b);J(b);}return E(8091);},DqZ=(b,c)=>{let d,e;a:{b:{c:{d:{e:{f:{g:{h:{d=c.bIP;e=(-1);switch(FP(d)){case 3201:break h;case 3246:break g;case 3276:break f;case 3383:break e;case 3428:break d;case 3651:break c;case 3886:break b;default:}break a;}if(!Bj(d,E(534)))break a;e=0;break a;}if(!Bj(d,E(4007)))break a;e=1;break a;}if(!Bj(d,E(530)))break a;e +=2;break a;}if(!Bj(d,E(538)))break a;e=3;break a;}if(!Bj(d,E(540)))break a;e=4;break a;}if(!Bj(d,E(4008)))break a;e=5;break a;}if(Bj(d,E(531)))e=6;}i:{j:{k:{l:{m:{n:{switch(e){case 0:HJ();switch(OA.data[b.bGO]){case 1:break;case 2:return E(8134);case 3:return E(8135);case 4:return E(8136);case 5:return E(8137);case 6:return E(8138);case 7:return E(8139);case 8:return E(8140);case 9:return E(8141);case 10:return E(8142);case 11:return E(8143);case 12:return E(8144);default:break i;}return E(8145);case 1:break n;case 2:break m;case 3:break l;case 4:break k;case 5:break j;case 6:break;default:break i;}HJ();switch +(OA.data[b.bGO]){case 1:break;case 2:return E(8146);case 3:return E(8147);case 4:return E(8148);case 5:return E(8149);case 6:return E(8150);case 7:return E(8151);case 8:return E(8152);case 9:return E(8153);case 10:return E(8154);case 11:return E(8155);case 12:return E(8156);default:break i;}return E(8157);}HJ();switch(OA.data[b.bGO]){case 1:break;case 2:return E(8158);case 3:return E(8159);case 4:return E(8160);case 5:return E(8161);case 6:return E(8162);case 7:return E(8163);case 8:return E(8164);case 9:return E(8165);case 10:return E(8166);case 11:return E(8167);case 12:return E(8168);default:break i;}return E(8169);}HJ();switch +(OA.data[b.bGO]){case 1:break;case 2:return E(8170);case 3:return E(4957);case 4:return E(8171);case 5:return E(8172);case 6:return E(8173);case 7:return E(8174);case 8:return E(8175);case 9:return E(8176);case 10:return E(8177);case 11:return E(8178);case 12:return E(8179);default:break i;}return E(8180);}HJ();switch(OA.data[b.bGO]){case 1:break;case 2:return E(8146);case 3:return E(8147);case 4:return E(8148);case 5:return E(8149);case 6:return E(8150);case 7:return E(8151);case 8:return E(8152);case 9:return E(8153);case 10:return E(8154);case 11:return E(8155);case 12:return E(8156);default:break i;}return E(8157);}HJ();switch +(OA.data[b.bGO]){case 1:break;case 2:return E(8181);case 3:return E(8182);case 4:return E(8183);case 5:return E(8184);case 6:return E(8185);case 7:return E(8186);case 8:return E(8187);case 9:return E(8188);case 10:return E(8189);case 11:return E(8190);case 12:return E(8191);default:break i;}return E(8192);}HJ();switch(OA.data[b.bGO]){case 1:break;case 2:return E(8193);case 3:return E(8194);case 4:return E(8195);case 5:return E(8196);case 6:return E(8197);case 7:return E(8198);case 8:return E(8199);case 9:return E(8200);case 10:return E(8201);case 11:return E(8202);case 12:return E(8203);default:break i;}return E(8204);}HJ();switch +(OA.data[b.bGO]){case 1:break;case 2:return E(8134);case 3:return E(8205);case 4:return E(8136);case 5:return E(8206);case 6:return E(8138);case 7:return E(8139);case 8:return E(8140);case 9:return E(8141);case 10:return E(8207);case 11:return E(8143);case 12:return E(8208);default:b=new Bt;X(b);J(b);}return E(8145);},Cxf=(b,c)=>{let d,e;a:{b:{c:{d:{e:{f:{g:{h:{d=c.bIP;e=(-1);switch(FP(d)){case 3201:break h;case 3246:break g;case 3276:break f;case 3383:break e;case 3428:break d;case 3651:break c;case 3886:break b;default:}break a;}if +(!Bj(d,E(534)))break a;e=0;break a;}if(!Bj(d,E(4007)))break a;e=1;break a;}if(!Bj(d,E(530)))break a;e=2;break a;}if(!Bj(d,E(538)))break a;e=3;break a;}if(!Bj(d,E(540)))break a;e=4;break a;}if(!Bj(d,E(4008)))break a;e=5;break a;}if(Bj(d,E(531)))e=6;}i:{j:{k:{l:{m:{n:{switch(e){case 0:HJ();switch(OA.data[b.bGO]){case 1:break;case 2:return E(8209);case 3:return E(8210);case 4:return E(8211);case 5:return E(8137);case 6:return E(8212);case 7:return E(8213);case 8:return E(8214);case 9:return E(8215);case 10:return E(8216);case 11:return E(8217);case 12:return E(8218);default:break i;}return E(8219);case 1:break n;case 2:break m;case 3:break l;case 4:break k;case 5:break j;case 6:break;default:break i;}HJ();switch +(OA.data[b.bGO]){case 1:break;case 2:return E(8220);case 3:return E(8221);case 4:return E(8222);case 5:return E(8223);case 6:return E(8224);case 7:return E(8225);case 8:return E(8226);case 9:return E(8227);case 10:return E(8228);case 11:return E(8229);case 12:return E(8230);default:break i;}return E(8231);}HJ();switch(OA.data[b.bGO]){case 1:break;case 2:return E(8232);case 3:return E(8233);case 4:return E(8234);case 5:return E(8235);case 6:return E(8236);case 7:return E(8237);case 8:return E(8238);case 9:return E(8239);case 10:return E(8240);case 11:return E(8241);case 12:return E(8242);default:break i;}return E(8243);}HJ();switch +(OA.data[b.bGO]){case 1:break;case 2:return E(8244);case 3:return E(4957);case 4:return E(8245);case 5:return E(8172);case 6:return E(8173);case 7:return E(8246);case 8:return E(8175);case 9:return E(8247);case 10:return E(8248);case 11:return E(8249);case 12:return E(8250);default:break i;}return E(8251);}HJ();switch(OA.data[b.bGO]){case 1:break;case 2:return E(8146);case 3:return E(8147);case 4:return E(8148);case 5:return E(8149);case 6:return E(8150);case 7:return E(8151);case 8:return E(8152);case 9:return E(8153);case 10:return E(8154);case 11:return E(8155);case 12:return E(8156);default:break i;}return E(8157);}HJ();switch +(OA.data[b.bGO]){case 1:break;case 2:return E(8181);case 3:return E(8182);case 4:return E(8183);case 5:return E(8184);case 6:return E(8185);case 7:return E(8186);case 8:return E(8187);case 9:return E(8188);case 10:return E(8189);case 11:return E(8190);case 12:return E(8191);default:break i;}return E(8192);}HJ();switch(OA.data[b.bGO]){case 1:break;case 2:return E(8252);case 3:return E(8194);case 4:return E(8253);case 5:return E(8196);case 6:return E(8197);case 7:return E(8198);case 8:return E(8254);case 9:return E(8255);case 10:return E(8256);case 11:return E(8257);case 12:return E(8258);default:break i;}return E(8259);}HJ();switch +(OA.data[b.bGO]){case 1:break;case 2:return E(8260);case 3:return E(8261);case 4:return E(8211);case 5:return E(8206);case 6:return E(8262);case 7:return E(8263);case 8:return E(8214);case 9:return E(8215);case 10:return E(8264);case 11:return E(8217);case 12:return E(8265);default:b=new Bt;X(b);J(b);}return E(8266);}; +function BRB(){let a=this;F.call(a);a.cy5=null;a.cD4=null;a.c5K=0;} +let D4t=a=>{return a.c5K;},D_i=(a,b)=>{let c;if(a!==b){if(b instanceof BRB){c=b;return !(Bj(a.cy5,c.cy5)&&Cvm(a.cD4,c.cD4))?0:1;}return 0;}return 1;}; +function CH7(){let a=this;F.call(a);a.ddj=null;a.c3n=null;a.c3m=null;} +let Fkp=(a,b)=>{let c,d;b=a.c3n;c=a.c3m;d=B4(ACU(),b);B3();return C_(d,c,CF,new Sz);}; +function DbZ(){let a=this;F.call(a);a.bVV=0.0;a.b1P=0.0;a.b4U=0.0;} +let DIa=a=>{let b,c,d,e,f;b=a.bVV|0;c=a.b1P|0;d=a.b4U|0;e=new S;T(e);BE(e,b);f=H(e,E(3037));BE(f,c);f=H(f,E(3994));BE(f,d);Bb(f,41);return Q(e);},D9D=(a,b,c,d)=>{let e,f;if(c<=b){e=Fm();f=new S;T(f);D6(H(f,E(8024)),b);f=Q(f);Fw(e,f);e=Fm();f=new S;T(f);D6(H(f,E(8025)),c);f=Q(f);Fw(e,f);e=new Bt;X(e);J(e);}a.bVV=b;a.b1P=c;a.b4U=d;},By_=(a,b,c)=>{let d=new DbZ();D9D(d,a,b,c);return d;},EhZ=(a,b)=>{b=b;return A$W(a.bVV-b.bVV)|0;},C1l=N(0),Coo=N(),Coq=N(),DJ5=(a,b)=>{return b.Y6(a);},Cop=N(),Cor=N(),CwV=N(),CwT +=N(),DXq=(a,b)=>{VN();GC();return !b.QF(AAe)?null:AGN(b.PA(AAe));},CwQ=N(),D9H=(a,b)=>{VN();GC();return !b.QF(ACA)?null:AZM(b.PA(ACA));},DaA=N(),Om=null,OA=null,HJ=()=>{HJ=Z(DaA);FkQ();},FkQ=()=>{let b,c;b=Ca((A5i()).data.length);c=b.data;OA=b;c[Bb1.bGO]=1;c[AO7.bGO]=2;c[BAc.bGO]=3;c[BtJ.bGO]=4;c[BrH.bGO]=5;c[BfJ.bGO]=6;c[BfK.bGO]=7;c[BlN.bGO]=8;c[Br9.bGO]=9;c[Bk9.bGO]=10;c[Br3.bGO]=11;c[BSi.bGO]=12;c=Ca((ASJ()).data.length);b=c.data;Om=c;b[ASi.bGO]=1;b[BkW.bGO]=2;b[BsS.bGO]=3;b[Bfm.bGO]=4;b[BfG.bGO]=5;b[BzT.bGO] +=6;b[A8H.bGO]=7;},EXu=N(); +function E_T(){let a=this;F.call(a);a.dfs=null;a.dfM=null;a.dfK=null;a.dfh=null;a.dfi=null;a.dfu=null;a.dfn=null;a.de9=null;a.dfC=null;a.de$=0;} +let BLw=N(); +function BB_(){BLw.call(this);this.c8i=null;} +let CY2=null,BqO=()=>{BqO=Z(BB_);DEz();},CsX=(a,b,c,d)=>{let e,f,g;if(!CQ(d)){e=0;if(Bn(d,0)==c&&!b.bG4)Bb(b,c);a:while(true){f=In(d,c,e);if(f<0){g=b.bG4;if(g>0&&Vx(b,g-1|0)!=c)Bb(b,c);Y7(b,d,e,d.bGI.length);return;}if(f>e){g=b.bG4;if(g>0&&Vx(b,g-1|0)!=c)Bb(b,c);Y7(b,d,e,f);}while(Bn(d,f)==c){f=f+1|0;if(f>=d.bGI.length)break a;}e=f;}return;}},DEz=()=>{let b;b=new BB_;BqO();b.c8i=BcN();CY2=b;}; +function CCC(){let a=this;F.call(a);a.cvF=null;a.cuP=null;a.cA9=null;a.ctD=null;a.b37=null;a.b8w=null;} +let E06=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m;f=Ro(a.b37);while(f.dY()){g=f.dZ();h=g.b7m;i=g.b8F;j=a.cuP.data;k=j[i+1|0]-j[i];(b.h2(Bh(c+j[i],d+a.cvF.data[h]))).hP(DE(k));}l=Ro(a.b8w);while(l.dY()){g=l.dZ();h=g.b7m;i=g.b8F;j=a.cvF.data;m=j[h+1|0]-j[h];(b.h2(Bh(c+a.cuP.data[i],d+j[h]))).hP(Fg(m));}f=a.ctD.cF(b.hE());if(f.bGE>0.0){k=f.bGF;if(k>0.0){l=b.h2(Bh(c+6.0,d-k*0.0));((l.h2(Cc(e))).h2(e)).hP(M6(f));a.ctD.cC(l);}}}; +function EuF(){F.call(this);this.dfy=null;} +function C$I(){let a=this;F.call(a);a.cpW=null;a.ckQ=null;a.cnT=null;} +let Eb0=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=(Be(a.ckQ,0)).bG6;d=a.ckQ;e=(Be(d,d.bGJ-1|0)).bG6;f=(Be(a.cpW,0)).bG6;d=a.cpW;g=(Be(d,d.bGJ-1|0)).bG6;d=a.cnT;ZE();if(!(d!==AJS&&d!==AJK)){d=b.h2(Bh(c,f));h=e-c;d.hP(DE(h));(b.h2(Bh(c,g))).hP(DE(h));d=b.h2(Bh(c,f));h=g-f;d.hP(Fg(h));(b.h2(Bh(e,f))).hP(Fg(h));}i=a.cnT;j=!(i!==A8C&&i!==AOA)?1:0;a:{if(j){d=Br(a.cpW);e=e-c;while(true){if(!Bq(d))break a;i=Bm(d);(b.h2(Bh(c,i.bG6))).hP(DE(e));}}}i=a.cnT;j=!(i!==A1Y&&i!==AOA)?1:0;b:{if(j){d=Br(a.ckQ);e=g-f;while(true){if(!Bq(d))break b;k +=Bm(d);(b.h2(Bh(k.bG6,f))).hP(Fg(e));}}}}; +function Ddw(){let a=this;SF.call(a);a.c2q=null;a.cYD=null;} +let DtZ=(a,b)=>{let c,d,e,f,g,h,i;c=a.c2q;d=new Crc;d.cOa=a;d.cOb=b;b=c;if(!b.b_G)e=0;else{c=b.cJS;f=new DoR;f.c6d=b;f.c6c=d;c=c;f=f;while(true){e=c.cyT;c.cyT=c.cSQ.bAy(e);d=f.c6d;g=f.c6c;h=d.b_G-1|0;d.b_G=h;i=h<=0?0:1;d=g;g=d.cOa;d=d.cOb;g=g.cYD;g=D9G(g.cP4,g.cP3,e);if(!(!(BL7(d,g)&&i)?0:1))break;}e=b.b_G<=0?0:1;}return e;}; +function CVA(){let a=this;TI.call(a);a.com=0.0;a.cFy=0.0;a.caJ=null;} +let D2U=(a,b)=>{return Cf7(b,a.com,a.cFy,a.caJ);},Ebr=(a,b,c,d,e)=>{ARI(a,b);a.com=c;a.caJ=e;a.cFy=d;},Cf7=(a,b,c,d)=>{let e=new CVA();Ebr(e,a,b,c,d);return e;},Dq2=(a,b)=>{let c,d;c=a.cFy;if(!(ba.caJ.bLB){d=new Bt;X(d);J(d);}return b;}d=new Bt;X(d);J(d);},EIS=(a,b,c,d)=>{let e,f;e=Dw(1.5);b=b.h2(d);f=d.bHu;d=new Cl1;d.cB8=a;d.cvd=f;BjL(c,b,d,0.0,e);}; +function BIf(){let a=this;TI.call(a);a.crd=0.0;a.crb=0.0;a.cHt=0.0;a.cWv=null;} +let D8p=(a,b)=>{return D5o(a.cWv,b,a.crd,a.crb,a.cHt);},CTQ=(a,b,c,d,e,f)=>{a.cWv=b;ARI(a,c);a.crd=d;a.crb=e;a.cHt=f;},D5o=(a,b,c,d,e)=>{let f=new BIf();CTQ(f,a,b,c,d,e);return f;},Fo4=(a,b,c,d)=>{BjL(c,b,a,d.bHu,ASz(c));},ElM=(a,b,c)=>{return 0.0;},EfR=(a,b,c)=>{let d,e;d=a.cHt/2.0;e=!(c<=d)?(c-d)/d:1.0-c/d;c=a.crb;d=a.crd;return (c-d)*e+d;}; +function Cxe(){let a=this;TI.call(a);a.cnL=0.0;a.cBC=null;} +let Fje=(a,b)=>{return Ctw(a.cBC,b,a.cnL);},Fax=(a,b,c,d)=>{a.cBC=b;ARI(a,c);a.cnL=d;},Ctw=(a,b,c)=>{let d=new Cxe();Fax(d,a,b,c);return d;},E7S=(a,b,c,d)=>{let e;e=CWd(a.cBC,a.cnL);b=b.h2(d);(((b.h2(ASz(c))).h2(Cc(E4()))).h2(BW((-15.0)))).hP(e);if(Cjf(c))(((b.h2(ASz(c))).h2(Cc(E4()))).h2(BW((-13.0)))).hP(e);BSF(c,b,0.0,a.cnL,0.0,1);}; +function CE9(){let a=this;TI.call(a);a.cdH=0.0;a.c4g=null;} +let DGl=(a,b)=>{return CD7(a.c4g,b,a.cdH);},Ek3=(a,b,c,d)=>{a.c4g=b;ARI(a,c);a.cdH=d;},CD7=(a,b,c)=>{let d=new CE9();Ek3(d,a,b,c);return d;},FsK=(a,b,c,d)=>{b=b.h2(d);CQj(a,b,c);if(Cjf(c))CQj(a,b.h2(BW(2.0)),c);BSF(c,b,0.0,a.cdH-10.0,0.0,1);},CQj=(a,b,c)=>{b=(b.h2(ASz(c))).h2(Cc(E4()));b.hP(DE(a.cdH-10.0));(b.h2(BM(a.cdH-10.0))).hP(EB(10.0,(-10.0)));},CTG=N(AG8),Frh=(a,b)=>{Ctp(a,DbS(b));},EqD=a=>{let b=new CTG();Frh(b,a);return b;}; +function CER(){F.call(this);this.c9A=null;} +let EX1=(a,b,c)=>{let d,e,f,g,h,i;b=b;c=c;d=b.cey;e=new NZ;f=null;g=B1(d.bGM);h=b.bTL.bGJ;i=BJm(h);h=Ev((h-1|0)/i|0,i);O3(e,f,d,g,Be(b.bTL,h),CUK(c),b.caa,KY(2));IS(d,e);},EBh=(a,b,c)=>{let d,e,f,g,h,i;b=b;c=c;d=b.cey;e=new NZ;f=null;g=B1(d.bGM);h=BJm(b.bTL.bGJ);i=b.bTL;h=h-1|0;O3(e,f,d,g,Be(i,h),CUK(c),b.caa,KY(1));IS(d,e);},AZi=N(Bx),A_8=null,Zk=null,FtN=null,TN=()=>{TN=Z(AZi);EBF();},En5=(a,b,c)=>{TN();Ct(a,b,c);},CrL=(a,b)=>{let c=new AZi();En5(c,a,b);return c;},EBF=()=>{let b,c,d;A_8=CrL(E(4858),0);b=CrL(E(8267), +1);Zk=b;c=K(AZi,2);d=c.data;d[0]=A_8;d[1]=b;FtN=c;}; +function Clq(){F.call(this);this.cJp=0;} +function B2n(){let a=this;F.call(a);a.cf7=0;a.cfE=0;a.caC=null;a.b35=null;a.cwO=null;a.b6c=null;} +let Clg=a=>{let b,c;if(a.caC===null){while(true){b=a.cf7;c=a.b6c.bPP.data;if(b>=c.length)break;if(c[b]!==null)return 1;a.cf7=b+1|0;}return 0;}return 1;},CfG=a=>{let b;if(a.cfE!=a.b6c.bZb){b=new Nr;X(b);J(b);}},E$r=a=>{let b,c,d,e,f;CfG(a);b=a.b35;if(b!==null){c=a.cwO;if(c!==null)c.bUp=b.bUp;else{d=b.cls;e=a.b6c.bPP.data;f=d&(e.length-1|0);e[f]=e[f].bUp;}a.b35=null;a.cfE=a.cfE+1|0;b=a.b6c;b.bZb=b.bZb+1|0;b.bVQ=b.bVQ-1|0;return;}b=new BP;X(b);J(b);},CHq=N(B2n),FwZ=a=>{let b,c,d,e;CfG(a);if(Clg(a)){b=a.caC;if(b +===null){c=a.b6c.bPP.data;d=a.cf7;a.cf7=d+1|0;b=c[d];a.b35=b;a.caC=b.bUp;a.cwO=null;}else{e=a.b35;if(e!==null)a.cwO=e;a.b35=b;a.caC=b.bUp;}return a.b35.bHt;}b=new Kx;X(b);J(b);},C4N=N(),C7y=null,B4d=()=>{B4d=Z(C4N);ECm();},ECm=()=>{let b,c;AE9();b=Ca((CJO.b2()).data.length);c=b.data;C7y=b;c[Bga.bGO]=1;c[A0Y.bGO]=2;c[A0S.bGO]=3;c[A0T.bGO]=4;}; +function Co$(){let a=this;F.call(a);a.c6F=0.0;a.cSg=0.0;a.cXE=0.0;a.c3h=0.0;a.cnj=null;a.cMg=null;a.cXp=null;a.c5I=null;a.c$r=null;} +let BFX=(a,b)=>{return Cl(a.c6F,a.cSg+a.cXE+a.c3h+10.0+10.0);},CyV=N(),CUm=null,B8f=()=>{B8f=Z(CyV);DEc();},DEc=()=>{let b,c;b=Ca((CNJ()).data.length);c=b.data;CUm=b;c[AZh.bGO]=1;c[A63.bGO]=2;},Cjn=N(),COB=null,BIU=()=>{BIU=Z(Cjn);EpG();},EpG=()=>{let b,c;b=Ca((CNJ()).data.length);c=b.data;COB=b;c[Bar.bGO]=1;c[A2$.bGO]=2;}; +function C4o(){F.call(this);this.cRv=null;} +function C6y(){let a=this;F.call(a);a.dcP=4.0;a.dd5=12.0;a.dcS=17.0;a.cc8=null;} +let Emr=(a,b)=>{a.dcP=4.0;a.dd5=12.0;a.dcS=17.0;a.cc8=b;},CU0=a=>{let b=new C6y();Emr(b,a);return b;},C2V=(a,b)=>{let c,d,e,f;b=Ef(a.cc8,b);c=Fz(24.0,24.0);d=a.cc8.bHm;c.bG1=d;e=EE();Ec(e,0.0,0.0);B2(e,0.0,24.0);d=a.cc8.bHm;e.bG1=d;f=EE();Ec(f,0.0,0.0);B2(f,0.0,24.0);Ec(f,0.0,12.0);B2(f,17.0,12.0);d=a.cc8.bHm;f.bG1=d;((b.h2(Bh(4.0,4.0))).h2(Cc(E4()))).hP(f);(b.h2(Bh(21.0,4.0))).hP(c);},BzV=(a,b)=>{return Cl(49.0,32.0);}; +function C1A(){let a=this;F.call(a);a.ddR=4.0;a.dda=12.0;a.cok=null;} +let E2T=(a,b)=>{a.ddR=4.0;a.dda=12.0;a.cok=b;},CO9=a=>{let b=new C1A();E2T(b,a);return b;},Dl9=(a,b)=>{let c,d,e;b=Ef(a.cok,b);c=Fz(24.0,24.0);d=a.cok.bHm;c.bG1=d;(b.h2(Bh(4.0,4.0))).hP(c);b=(b.h2(GT())).h2(Cc(a.cok.bMx));e=Fj();BQ(e,0.0,0.0);BQ(e,6.0,(-5.0));BQ(e,4.0,0.0);BQ(e,6.0,5.0);BQ(e,0.0,0.0);(b.h2(Bh(12.0,4.0))).hP(e);},Bra=(a,b)=>{return Cl(32.0,32.0);}; +function CYv(){let a=this;F.call(a);a.c$G=4.0;a.c9N=12.0;a.dar=2.0;a.cB2=null;} +let D$T=(a,b)=>{a.c$G=4.0;a.c9N=12.0;a.dar=2.0;a.cB2=b;},CrY=a=>{let b=new CYv();D$T(b,a);return b;},DcS=(a,b)=>{let c,d;b=Ef(a.cB2,b);c=Fz(24.0,24.0);d=a.cB2.bHm;c.bG1=d;(b.h2(Bh(4.0,4.0))).hP(c);(b.h2(Bh(4.0,30.0))).hP(DE(24.0));},Bb$=(a,b)=>{return Cl(32.0,32.0);}; +function C3l(){let a=this;F.call(a);a.dcY=1.0;a.ddH=8.0;a.c3$=null;a.cX0=null;a.cPs=0.0;} +let E3G=(a,b)=>{let c,d;b=(b.h2(Cc(a.c3$))).h2(a.cX0);c=Fz(16.0,16.0);d=a.cPs;c.bG1=d;(b.h2(Bh(1.0,1.0))).hP(c);},Fdm=(a,b)=>{return Cl(18.0,18.0);}; +function BCU(){let a=this;NE.call(a);a.chx=0.0;a.chv=0.0;a.b0i=null;} +let Dvr=a=>{let b,c;b=BY(a.bHP);c=new S;T(c);H(H(c,E(8268)),b);return Q(c);},EZt=(a,b)=>{CKX(a,b,0.0,0.0,Bk());},BM7=a=>{let b=new BCU();EZt(b,a);return b;},CKX=(a,b,c,d,e)=>{Zx(a,b);a.chx=c;a.chv=d;a.b0i=e;},DuY=(a,b,c,d)=>{let e=new BCU();CKX(e,a,b,c,d);return e;},BmP=(a,b)=>{let c,d,e,f;if(!(b instanceof AFx))a.bHP.hP(b);else{b=DqK(b,a.bHP,a.chx,a.chv);c=0;a:{b:{while(true){d=a.b0i;if(c>=d.bGJ)break;e=Be(d,c);d=CGO(BbS(e.bTu,e.bZM,e.bZL),BbS(b.bTu,b.bZM,b.bZL),e.co8.hE());f=d===null?null:DqK(BbS(d, -e.bZM, + -e.bZL),e.co8,e.bZM,e.bZL);if(f!==null)break b;c=c+1|0;}U(d,b);break a;}GJ(a.b0i,c,f);}}},BPH=a=>{let b,c,d,e,f,g,h,i;b=Br(a.b0i);while(Bq(b)){c=Bm(b);d=Br(a.b0i);a:{b:{while(Bq(d)){c:{d:{e=Bm(d);f=e.bTu;g=f.b1f;Oc();if(g===AHc){f=f.bIU;if(!(!(IB(f)==2&&(Fk(f,0)).bGL===(Fk(f,1)).bGL)?0:1))break d;}h=1;break c;}h=0;}if(h)h=0;else{f=BAR(c.bTu);i=BH_(e.bTu);h=BmZ(BA(f.bGK+c.bZM,f.bGL+c.bZL),BA(i.bGK+e.bZM,i.bGL+e.bZL));}if(h)break b;}break a;}f=c.bTu;c.bTu=B7p(f.b5Z,f.bUZ,f.bUf,null,f.bIU,f.b1f,f.bZn,f.bQr);}CBA(c.bTu, +c.co8);}TD(a.b0i);},YR=(a,b)=>{let c,d,e;c=a.chx;d=a.chv;if(b instanceof FG){e=b;c=c+e.bHj;d=d+e.bHu;}return DuY(a.bHP.h2(b),c,d,a.b0i);}; +function Djo(){let a=this;F.call(a);a.cM8=null;a.c3P=null;a.c40=0;} +let Erw=(a,b,c,d)=>{a.cM8=b;a.c3P=c;a.c40=d;},E4v=(a,b,c)=>{let d=new Djo();Erw(d,a,b,c);return d;},DBp=(a,b)=>{Czr(CzR(b,Dy(),a.c3P,a.c40),a.cM8);BPH(b);}; +function Dcq(){let a=this;F.call(a);a.c1b=null;a.dbI=null;} +let Ewe=(a,b,c)=>{let d;d=a.c1b;CV();return KN(A0Q(d,b,Uk),0.0,0.0,5.0,15.0);},Cna=N(); +function CyZ(){F.call(this);this.cGp=null;} +let CN8=b=>{let c;c=new CyZ;c.cGp=b;return c;}; +function B$9(){let a=this;F.call(a);a.c58=null;a.cV_=0;} +function CMV(){let a=this;F.call(a);a.c9X=null;a.cPM=null;a.cPL=null;} +let Feq=(a,b)=>{b=a.cPM;return DL((AQW(CUx(Cq(a.cPL),Cq(Bvp(b,null,null)),b.bPf,Cq(!BAI(b.bOg)?E(72):E(350))))).data[4]);}; +function DiA(){let a=this;Hx.call(a);a.c7F=null;a.c6Y=null;a.cqo=0.0;a.cXI=0.0;a.c2o=0.0;a.c3l=null;a.cQU=0.0;a.cwJ=0;a.cK_=null;a.coY=null;} +let E9b=(a,b,c,d,e,f,g,h,i)=>{let j;Jo();PM(a,b,c,JJ,Of(b),e,d,0);a.cXI=ANi(a);c=a.bPC;B9();a.c2o=(BJ(c,ACK)).oX();j=Zv(a);a.c3l=AGS(a);a.cK_=h;a.coY=i;a.cQU=f;a.cwJ=g;a.c7F=j.bKT;a.cqo=j.bHm;a.c6Y=j.bMx;},Bcq=(a,b,c,d,e,f,g,h)=>{let i=new DiA();E9b(i,a,b,c,d,e,f,g,h);return i;},FoA=(a,b,c)=>{let d,e,f,g,h,i;d=b.hE();c=new FG;e=a.coY;Hs(c,e.bIv,e.bIl);b=b.h2(c);c=a.c6Y;if(c!==null)b=b.h2(c);c=a.c7F;if(c!==null)b=b.h2(Cc(c));b=b.h2(a.c3l);e=Cav(Ge(C2(Iz(a,d),He(a,d)),a.cXI),a.c2o);e.bG1=a.cqo;if(a.cwJ){(b.h2(BM(Bv5(a)))).hP(e);b +=b.h2(BW(Bv5(a)));}b.hP(e);b=b.h2(GT());f=a.bJQ;g=(f.cF(d)).bGE;h=C5p(a,d)-g;i=!(h>0.0)?0.0:BXI(B5x(a),g,g+h);f.cC((b.h2(ATU(a.cK_))).h2(BM(i)));},Bv5=a=>{if(a.cwJ)return 4.0;return 0.0;},DV_=(a,b)=>{let c;c=He(a,b);b=a.coY;return c+b.bIl+b.bJU+a.cqo+1.0+Bv5(a);},DZJ=(a,b)=>{let c;c=Iz(a,b);b=a.coY;return c+b.bIv+b.bKJ+a.cqo+Bv5(a);},C5p=(a,b)=>{return BC(A2E(a,b),a.cQU);}; +function Ckw(){let a=this;Hx.call(a);a.b_n=null;a.cKL=0;} +let DJ8=(a,b,c,d,e,f,g)=>{Jo();PM(a,c,d,JJ,OE(0.0,3.0,0.0,3.0),g,e,0);a.cKL=f;a.b_n=B1n(b,Zv(a));},Dfn=(a,b,c,d,e,f)=>{let g=new Ckw();DJ8(g,a,b,c,d,e,f);return g;},ENP=(a,b,c)=>{let d,e,f,g;d=a.bJQ;e=b.hE();f=a.b_n.cF(e);g=(BWV(a,e)-f.bGE)/2.0;if(!a.cKL){d.cC(b.h2(BM(C64(a,e))));b=b.h2(Bh(g,He(a,e)));}else{d.cC(b.h2(Bh(C64(a,e),f.bGF)));b=b.h2(BM(g));}a.b_n.cC(b);},C64=(a,b)=>{return (BWV(a,b)-Iz(a,b))/2.0;},EUe=(a,b)=>{return (a.b_n.cF(b)).bGF+He(a,b);},BWV=(a,b)=>{return BC((a.b_n.cF(b)).bGE,Iz(a,b));}; +function Dmn(){let a=this;Hx.call(a);a.cab=null;a.cMJ=0;} +let Fsm=(a,b,c,d,e,f)=>{let g;Jo();PM(a,b,c,JJ,OE(0.0,3.0,0.0,3.0),f,d,0);g=Zv(a);a.cMJ=e;a.cab=CU0(g);},Ce9=(a,b,c,d,e)=>{let f=new Dmn();Fsm(f,a,b,c,d,e);return f;},Fkb=(a,b,c)=>{let d,e,f,g;d=a.bJQ;e=b.hE();f=BzV(a.cab,e);g=(BKj(a,e)-f.bGE)/2.0;if(!a.cMJ){d.cC(b.h2(BM(CQ7(a,e))));b=b.h2(Bh(g,He(a,e)));}else{d.cC(b.h2(Bh(CQ7(a,e),f.bGF)));b=b.h2(BM(g));}C2V(a.cab,b);},CQ7=(a,b)=>{return (BKj(a,b)-Iz(a,b))/2.0;},D5_=(a,b)=>{return (BzV(a.cab,b)).bGF+He(a,b);},BKj=(a,b)=>{return BC((BzV(a.cab,b)).bGE,Iz(a,b));}; +function DgF(){let a=this;Hx.call(a);a.cdZ=null;a.cZf=0;} +let Ez6=(a,b,c,d,e,f)=>{let g;Jo();PM(a,b,c,JJ,OE(0.0,3.0,0.0,3.0),f,d,0);g=Zv(a);a.cZf=e;a.cdZ=CO9(g);},CAk=(a,b,c,d,e)=>{let f=new DgF();Ez6(f,a,b,c,d,e);return f;},DLU=(a,b,c)=>{let d,e,f,g;d=a.bJQ;e=b.hE();f=Bra(a.cdZ,e);g=(BTj(a,e)-f.bGE)/2.0;if(!a.cZf){d.cC(b.h2(BM(CcQ(a,e))));b=b.h2(Bh(g,He(a,e)));}else{d.cC(b.h2(Bh(CcQ(a,e),f.bGF)));b=b.h2(BM(g));}Dl9(a.cdZ,b);},CcQ=(a,b)=>{return (BTj(a,b)-Iz(a,b))/2.0;},EhK=(a,b)=>{return (Bra(a.cdZ,b)).bGF+He(a,b);},BTj=(a,b)=>{return BC((Bra(a.cdZ,b)).bGE,Iz(a,b));}; +function CTb(){let a=this;Hx.call(a);a.cbx=null;a.cNE=0;} +let EkT=(a,b,c,d,e,f)=>{let g;Jo();PM(a,b,c,JJ,OE(0.0,3.0,0.0,3.0),f,d,0);g=Zv(a);a.cNE=e;a.cbx=CrY(g);},DjI=(a,b,c,d,e)=>{let f=new CTb();EkT(f,a,b,c,d,e);return f;},DOr=(a,b,c)=>{let d,e,f,g;d=a.bJQ;e=b.hE();f=Bb$(a.cbx,e);g=(B1_(a,e)-f.bGE)/2.0;if(!a.cNE){d.cC(b.h2(BM(Dsu(a,e))));b=b.h2(Bh(g,He(a,e)));}else{d.cC(b.h2(Bh(Dsu(a,e),f.bGF)));b=b.h2(BM(g));}DcS(a.cbx,b);},Dsu=(a,b)=>{return (B1_(a,b)-Iz(a,b))/2.0;},E_L=(a,b)=>{return (Bb$(a.cbx,b)).bGF+He(a,b);},B1_=(a,b)=>{return BC((Bb$(a.cbx,b)).bGE,Iz(a,b));}; +function CVR(){let a=this;Hx.call(a);a.ceH=null;a.dem=0;} +let D$d=(a,b,c,d,e,f)=>{let g,h;Jo();PM(a,b,c,JJ,OE(0.0,3.0,0.0,3.0),f,d,0);g=Zv(a);a.dem=e;F$();b=BMo;c=E6(0.0,0.0);h=a.bJQ;d=E6(0.0,0.0);B3();a.ceH=b.a0U(c,h,d,g,CO);},CSA=(a,b,c,d,e)=>{let f=new CVR();D$d(f,a,b,c,d,e);return f;},FeO=(a,b,c)=>{let d,e;d=b.hE();e=a.ceH.cF(d);b=b.h2(BM((DlG(a,d)-e.bGE)/2.0));a.ceH.cC(b);},Fg2=(a,b)=>{return (a.ceH.cF(b)).bGF;},DlG=(a,b)=>{return (a.ceH.cF(b)).bGE;}; +function Drx(){let a=this;Hx.call(a);a.b_b=null;a.c07=0;} +let E9P=(a,b,c,d,e,f)=>{let g,h;Jo();PM(a,b,c,JJ,OE(0.0,3.0,0.0,3.0),f,d,0);a.c07=e;g=Zv(a);h=BwX(AGc(AAA(g.bKT,g.bMx),AGS(a)),g.bHm);F$();b=BzF;c=null;d=E6(16.0,17.0);f=E6(0.0,0.0);B3();a.b_b=b.a0U(c,d,f,h,CO);},Cbn=(a,b,c,d,e)=>{let f=new Drx();E9P(f,a,b,c,d,e);return f;},FbY=(a,b,c)=>{let d,e,f,g;d=a.bJQ;e=b.hE();f=a.b_b.cF(e);g=(B05(a,e)-f.bGE)/2.0;if(!a.c07){d.cC(b.h2(BM(C58(a,e))));b=b.h2(Bh(g,He(a,e)));}else{d.cC(b.h2(Bh(C58(a,e),f.bGF)));b=b.h2(BM(g));}a.b_b.cC(b);},C58=(a,b)=>{return (B05(a,b)-Iz(a, +b))/2.0;},EQo=(a,b)=>{return (a.b_b.cF(b)).bGF+He(a,b);},B05=(a,b)=>{return BC((a.b_b.cF(b)).bGE,Iz(a,b));}; +function CP3(){let a=this;F.call(a);a.cyA=0.0;a.cm1=null;a.c22=null;a.cq5=null;a.cqK=null;a.cUN=null;a.cBi=null;a.cT6=null;a.cJE=null;a.cPp=null;} +let Ee4=(a,b,c,d,e,f)=>{let g,h,i,j,k;a.cPp=f;g=K(Ob,1);h=g.data;f=d;i=B1(f);FX();h[0]=B0(i,XD(WG));a.cq5=SK(c,g,WG,null,d,null);g=K(Ob,1);g.data[0]=B0(B1(f),XD(AA_));a.cT6=SK(c,g,AA_,null,d,null);a.cqK=b;a.cUN=c;a.cBi=d;a.cJE=G$();d=Ta(UA(e));while(SD(d)){j=Tj(d);b=a.cJE;c=new BAJ;f=j;k=f.bIu.bG6;CNR(c,k,k+f.bI1.bG6);EQ(b,c);}},BQg=(a,b,c,d,e)=>{let f=new CP3();Ee4(f,a,b,c,d,e);return f;},B78=(a,b)=>{return a.cT6.RE(b);},DbR=(a,b,c)=>{let d;if(c.cUb){d=a.cq5.a$u(b.hE());a.cq5.a$w(b.h2(Bh( -d.bGE/2.0,c.b31- +d.bGF/2.0)),null,a.cqK);}}; +function Bgl(){let a=this;F.call(a);a.cMN=0.0;a.cPl=0.0;a.clQ=null;a.cXP=0;a.cbK=0;a.cM5=0.0;} +let E0l=(a,b,c,d,e,f,g)=>{a.cM5=b;a.cPl=d;a.cMN=c;a.clQ=e;a.cXP=f;a.cbK=g;},Dh1=(a,b,c,d,e,f)=>{let g=new Bgl();E0l(g,a,b,c,d,e,f);return g;},DjY=(b,c,d,e)=>{return Dh1(b,c,d,null,0,e);},DmH=(b,c,d,e,f)=>{return Dh1(b,c,d,e,0,f);},Cjf=a=>{return a.cbK!=61?0:1;},BjL=(a,b,c,d,e)=>{let f,g,h,i;f=new CTY;f.cw3=a;f.cwu=c;if(a.cbK)e=ASz(a);g=b.h2(e);e=a.clQ;if(e!==null){h=e.cF(b.hE());i=h.bGE;c=new CTZ;c.cjQ=f;c.c3k=i;B0_(a,c,d,g);c=b.hE();e=f;BSF(a,b,A$g(e,c,d),A7R(e,b.hE(),d),d,0);i=h.bGE;b=new CT0;b.ckb=f;b.cRV +=i;B0_(a,b,d,g);return;}B0_(a,f,d,g);},B0_=(a,b,c,d)=>{CRd(d,b,c);if(a.cbK==61)CRd(d,b,c+2.0);},CRd=(b,c,d)=>{let e,f;e=c.bAR(b.hE(),d);f=c.bAS(b.hE(),d);(b.h2(Bh(e,d))).hP(DE(f-e));},BSF=(a,b,c,d,e,f)=>{let g,h;g=a.clQ;if(g!==null&&!a.cXP){h=d-c;g=g.cF(b.hE());b=b.h2(Bh(c+(h-g.bGE)/2.0,e-g.bGF/2.0-0.5));if(f)(b.h2(ASz(a))).hP(M6(g));a.clQ.cC(b);return;}},ASz=a=>{let b,c;b=a.cbK;if(b){if(b!=61){if(b!=46){if(b!=45)return Dw(a.cM5);return GT();}return J$(1.0,2.0,1.0);}return GT();}c=new BP;X(c);J(c);},AMK=N(0),AZQ +=N(),Ebe=(a,b,c)=>{return LR();}; +function C5Q(){let a=this;A36.call(a);a.bS$=null;a.b8I=null;a.bWR=null;a.ckc=null;a.caB=null;} +let FpK=(a,b,c)=>{CSP(a);a.bWR=Dy();a.ckc=new ACe;a.caB=Dy();a.bS$=b;AFQ(a.bWR,c);},Cb6=(a,b)=>{let c=new C5Q();FpK(c,a,b);return c;},E$9=(a,b)=>{let c,d,e,f;c=new CV6;c.daS=b;Kh(c);Dex(a.bS$);c=BZv(a.bWR);b=new CV4;b.de3=c;Kh(b);c=Ta(UA(c));while(SD(c)){b=Tj(c);d=b.bIu;e=b.bI1;b=new CVP;b.ddq=d;b.ddr=e;Kh(b);}f=BZv(a.caB);b=new CVQ;b.c_f=f;Kh(b);c=Ta(UA(f));while(SD(c)){b=Tj(c);d=b.bIu;e=b.bI1;b=new CVM;b.dc6=d;b.dc5=e;Kh(b);}Kh(new CVN);},EQi=(a,b,c,d,e)=>{ZS();if(d!==AH$){if(d!==AT4&&!NB(a.bWR,b)){if(Bvh(a.bS$, +b)!==null)Bkt(a.bS$,b,c,d,e);else{C9(a.caB,b,c);AVk(a.ckc,b);c=new Cnq;c.ddt=b;Kh(c);}}else{C9(a.bWR,b,c);c=a.b8I;if(c!==null)AVk(c,b);c=new Cnp;c.c9u=b;Kh(c);}return;}Bkt(a.bS$,b,c,d,e);},D0X=(a,b)=>{let c;if(NB(a.bWR,b)){A7k(a.bWR,b);c=a.b8I;if(c!==null)BM0(c,b);}else if(Bvh(a.bS$,b)!==null)CaM(a.bS$,b);else{A7k(a.caB,b);BM0(a.ckc,b);}},D$S=(a,b)=>{let c;c=DG(a.bWR,b);if(c===null){c=Bvh(a.bS$,b);if(c===null)return DG(a.caB,b);return c;}return c;},EvW=a=>{let b,c;a:{if(a.b8I===null){a.b8I=new ACe;b=(AUM(a.bWR)).dX();while +(true){if(!b.dY())break a;c=b.dZ();AVk(a.b8I,c);}}}b=new CNU;b.ckm=a;return b;},Dy1=(a,b)=>{return Cb6(a.bS$,b);},BoZ=N(0); +function Csz(){F.call(this);this.cVU=null;} +let EtK=a=>{return -a.cVU.ckH;}; +function CDh(){F.call(this);this.cQ5=null;} +let ESP=a=>{return a.cQ5.chM;}; +function CtE(){let a=this;F.call(a);a.bK_=null;a.cPY=null;} +let DG$=(a,b,c,d,e,f,g)=>{let h,i,j,k,l,m,n;h=PZ(Bo(AD3));i=(B8O(a.bK_)).dX();while(i.dY()){j=(i.dZ()).b1g;Jb();if(j!==LQ)OJ(h,j);}a:{if(h.dV()>0){h=c.dX();while(true){if(!h.dY())break a;k=h.dZ();if(Boi(k,a.bK_.bHz))k.cFi=a.bK_;}}}h=a.bK_.bHz;K$();l=(A$s(h,Ku)).dV()>0?1:(A$s(a.bK_.bHz,M5)).dV()<=0?0:1;if(l){m=ACR(a.bK_);h=new S;T(h);H(H(H(h,E(5199)),m),E(8269));L(b,Q(h));Fu(b);L(b,E(8270));Fu(b);n=BcC(a.bK_,Ku);if(n===null){L(b,E(8271));Fu(b);}else{h=De(n,d);i=Lk(E(1198));A5F(i,h.bGE|0,h.bGF|0,a.bK_.cCu);L(i, +E(372));m=BY(i);h=new S;T(h);Bb(H(H(h,E(8011)),m),59);L(b,Q(h));Fu(b);}}Fu(b);m=ACR(a.bK_);h=new S;T(h);H(H(H(h,E(5199)),m),E(8272));L(b,Q(h));Fu(b);m=BcC(a.bK_,M5);L(b,E(8273));Fu(b);L(b,E(8270));Fu(b);if(m===null){FN(b,E(8271));Fu(b);}else{h=De(m,d);i=Lk(E(1198));A5F(i,h.bGE|0,h.bGF|0,a.bK_.ctU);L(i,E(372));m=BY(i);h=new S;T(h);Bb(H(H(h,E(8011)),m),59);FN(b,Q(h));Fu(b);}Fu(b);Cir(a,E(6916),BOP(a.bK_,CQ2()),b,d);Fu(b);m=ACR(a.bK_);h=CR();H(H(H(h,E(5199)),m),E(8274));FN(b,CH(h));Fu(b);FN(b,E(8275));Fu(b);FN(b, +E(8008));Fu(b);m=R8(BBT(a.bK_));h=CR();H(H(H(h,E(6453)),m),E(8009));FN(b,CH(h));if(!BT7(a.bK_))j=E(1660);else{i=Lk(E(1198));A5F(i,AJh(a.bK_),AWT(a.bK_)-5|0,BQc(a.bK_));FN(i,E(372));j=CH(i);m=a.cPY;MY();h=AEQ;i=null;k=null;m=Czi(Bhs(m,h,i,0,k));h=CR();H(H(H(h,E(8010)),m),E(8009));FN(b,CH(h));}h=CR();Et(H(H(h,E(8011)),j),59);FN(b,CH(h));Fu(b);C1g(a.bK_,b,c,d,e,f,g);Fu(b);Cir(a,E(6917),BOP(a.bK_,Cpa()),b,d);Fu(b);FN(b,E(582));FN(b,E(582));if(l)FN(b,E(582));Fu(b);},Cir=(a,b,c,d,e)=>{let f,g;if(c.dV()>0){f=new S;T(f);Bb(H(H(f, +E(8022)),b),59);L(d,Q(f));g=c.dX();while(g.dY()){b=YG(g.dZ());f=new S;T(f);Bb(H(f,b),59);L(d,Q(f));}L(d,E(582));Fu(d);b=c.dX();while(b.dY()){AOS(b.dZ(),d,e);}Fu(d);}}; +function Bpq(){let a=this;F.call(a);a.bMu=0.0;a.bPg=0.0;a.bPi=0.0;a.bMt=0.0;a.bOk=0.0;a.bOj=0.0;} +let E18=(a,b,c,d,e,f,g)=>{a.bMu=b;a.bPg=c;a.bPi=d;a.bMt=e;a.bOk=f;a.bOj=g;},CnX=(a,b,c,d,e,f)=>{let g=new Bpq();E18(g,a,b,c,d,e,f);return g;},Evz=(a,b)=>{a.bMu=b.bMu;a.bPg=b.bPg;a.bPi=b.bPi;a.bMt=b.bMt;a.bOk=b.bOk;a.bOj=b.bOj;},Buj=a=>{let b=new Bpq();Evz(b,a);return b;},U8=b=>{let c,d;c=G4(b);d=H0(b);return CnX(c,d, -d,c,0.0,0.0);},D3W=a=>{return a.bOj;},Emu=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n;c=a.bMu;d=b.bMu;e=c*d;f=a.bPi;g=b.bPg;h=e+f*g;i=b.bPi;e=c*i;j=b.bMt;k=e+f*j;l=b.bOk;e=c*l;c=b.bOj;f=e+f*c+a.bOk;e= +a.bPg;m=e*d;n=a.bMt;d=m+n*g;i=e*i+n*j;c=e*l+n*c+a.bOj;a.bMu=h;a.bPi=k;a.bOk=f;a.bPg=d;a.bMt=i;a.bOj=c;},BRg=(a,b,c)=>{a.bOk=a.bOk+a.bMu*b+a.bPi*c;a.bOj=a.bOj+a.bPg*b+a.bMt*c;}; +function B$i(){let a=this;J9.call(a);a.cb5=null;a.c77=null;a.deF=null;a.deE=null;a.dbF=null;a.b92=null;} +let CZD=(a,b)=>{return a.cb5.Wy(b);},D6z=(a,b)=>{return a.cb5.Wz(b);},DTE=(a,b)=>{let c;c=AGp(a.b92,b);return a.cb5.Wx(b)+c.bGE+8.0;},Fmn=(a,b)=>{let c,d;c=b.hE();d=AGp(a.b92,c);(b.h2(Bh(3.0,CZD(a,c)+AIj(a.b92,c)+1.0))).hP(a.b92);a.cb5.cC(b.h2(BM(d.bGE+8.0)));},Fcq=(a,b)=>{b=new BV;X(b);J(b);}; +function BBO(){let a=this;ADt.call(a);a.cbT=null;a.cwK=null;} +let DQm=(a,b)=>{let c;c=new BBO;c.cwK=a.cwK;A_C(c,a.bOR,!(b instanceof FG)?a.bOr:DJ(a.bOr,b));if(!BcI(b,BB(AXF,[Bo(AER),Bo(Np),Bo(AG3),Bo(FG)]))){c=new BV;Bp(c,ST(Dg(b)));J(c);}c.cbT=a.cbT;return c;},D5y=(a,b)=>{let c,d,e,f;a:{c=a.bOr;d=c.bHj;e=c.bHu;if(b instanceof Ym){b=b;b=a.bOR.gS(Gk(b.bVn),b.bPs);f=e-(b.bGF-1.5);Px(a,d,f);Px(a,d,f+b.bGF);Px(a,d+b.bGE,f);Px(a,d+b.bGE,f+b.bGF);break a;}if(b instanceof Bgl)break a;if(b instanceof SA)break a;if(b instanceof NR){b=b;Px(a,d,e);Px(a,d,e+AVm(b));Px(a,d+AV6(b), +e);Px(a,d+AV6(b),e+AVm(b));break a;}if(b instanceof ADr){b=b;Px(a,d+A$N(b),e+A4i(b));Px(a,d+A6e(b),e+A5q(b));break a;}if(b instanceof ZC){b=b;Px(a,d,e);Px(a,d+b.bKb,e+b.bKg);break a;}if(b instanceof ACp){b=b;Px(a,d,e);Px(a,d+b.bMH,e+b.bLB);break a;}if(b instanceof ASR){b=b;Px(a,d,e);Px(a,d+b.cdP,e+b.b91);break a;}c=new BV;Bp(c,ST(Dg(b)));J(c);}},EOm=a=>{AAi();return A2_;},Px=(a,b,c)=>{let d,e;d=a.cbT;e=BA(b,c);U(d,e);}; +function COi(){let a=this;F.call(a);a.ccx=null;a.clF=null;a.c$I=0.0;} +let Sb=N(0),W4=N(),B9N=(a,b,c)=>{let d;d=new CcP;d.cTM=a;d.ddZ=b;d.c1K=c;d.cHE=b;d.cwi=9999;return d;}; +function BON(){W4.call(this);this.cgg=null;} +let Dlx=null,BxW=()=>{BxW=Z(BON);EqE();},E1y=(a,b)=>{BxW();a.cgg=b;},CT6=a=>{let b=new BON();E1y(b,a);return b;},C9u=b=>{let c,d;BxW();Gp(b,E(8276));c=Nq(Bo(AAH));d=P2(Dlx);while(OD(d)){ABb(c,Pr(d),b);}return CT6(c);},Cp_=(a,b,c)=>{let d;Gp(b,E(742));Gp(c,E(8277));d=new AVP;CfQ(d,a.cgg);ABb(d,b,c);return CT6(d);},Egr=(a,b,c)=>{let d,e;d=RK(b.bHU);QX();if(c!==Sw){c=b.bH8;No();if(AC8(c,S4))d=ABm(d,V(-1));e=M7(a.cgg,BM4(d));return AEd(ABm(d,V(1)),d,e);}e=M7(a.cgg,BM4(d));return ALq(d,ABm(d,V(1)),e);},EqE=()=>{Dlx +=AQ8(Bo(AAH));}; +function Dla(){let a=this;W4.call(a);a.cri=null;a.c4S=null;} +let ESD=(a,b,c)=>{a.c4S=b;a.cri=c;},DlZ=(a,b)=>{let c=new Dla();ESD(c,a,b);return c;},Db1=(a,b)=>{if(a.cri.dQ(b))return a.cri.dR(b);return a.c4S;},B0w=(b,c)=>{return DlZ(b,BLJ(c));},DCH=(a,b,c)=>{let d,e,f,g;QX();if(c!==Sw){d=b.bH8;No();d=!AC8(d,S4)?b.bHU:B6B(b.bHU,V(1));e=RK(d);f=Db1(a,d);return AEd(ABm(e,V(1)),e,f);}d=b.bHU;g=RK(d);f=Db1(a,d);return ALq(g,ABm(g,V(1)),f);}; +function Bh9(){let a=this;W4.call(a);a.cDV=null;a.cVX=null;} +let BJS=(a,b,c)=>{a.cDV=c;a.cVX=b;},FbW=(a,b)=>{let c=new Bh9();BJS(c,a,b);return c;},XX=b=>{let c,d;c=b.data;if(c.length!=1){d=new Bh9;RT();BJS(d,B9G,b);return d;}return c[0];},EwU=(a,b,c)=>{let d,e,f,g,h,i,j,k;d=a.cDV.data.length;if(d>=2){e=K(A7z,d).data;f=0;while(true){g=a.cDV.data;if(f>=g.length)break;e[f]=g[f].bAY(b,c);f=f+1|0;}b=a.cVX;Gp(b,E(8278));f=e.length;if(f){a:{if(f==1)b=e[0];else{h=e[0].cmi;i=e[0].bSx;j=e[0].bTl;c=e[0].b8_;d=1;while(true){if(d>=f){QX();if(h===Sw){if(!VG(i,j)){b=new Bt;Bp(b,E(8279));J(b);}b +=ALq(i,j,c);break a;}if(VG(j,i)){b=AEd(i,j,c);break a;}b=new Bt;Bp(b,E(8279));J(b);}k=e[d];if(k.cmi!==h)break;QX();if(h!==Sw){if(VG(k.bSx,i))i=k.bSx;if(A6a(k.bTl,j))j=k.bTl;}else{if(A6a(k.bSx,i))i=k.bSx;if(VG(k.bTl,j))j=k.bTl;}c=b.bA0(c,k.b8_);d=d+1|0;}b=new Bt;Bp(b,E(8280));J(b);}}return b;}b=new Bt;Bp(b,E(8281));J(b);}b=new BP;Bp(b,E(8282));J(b);}; +function DdR(){let a=this;W4.call(a);a.b4A=null;a.bRg=null;} +let EfZ=(a,b)=>{a.bRg=AAk();a.b4A=b;},Czs=a=>{let b=new DdR();EfZ(b,a);return b;},D0d=(a,b,c)=>{let d,e,f,g,h;QX();if(c!==Sw){d=b.bH8;No();if(AC8(d,S4)){b=RK(B6B(b.bHU,V(1)));d=BZk(BSl(a.bRg,1));c=d===null?S4:d.cke;d=d===null?a.b4A:d.cA5;b=AEd(ABm(b,V(1)),AYg(b,c),d);}else{b=RK(b.bHU);d=BZk(Dbe(a.bRg,d,1));c=d===null?S4:d.cke;d=d===null?a.b4A:d.cA5;e=C_h(a.bRg,c);b=AEd(e!==null?AYg(b,e):ABm(b,V(1)),AYg(b,c),d);}}else{c=RK(b.bHU);f=b.bH8;b=a.bRg;e=b.bL6;d=null;a:{b:{while(e!==null){g= -b.bRY.fc(f,e.bIu)|0;if +(!g)break b;if(g>=0)h=A8k(e,1);else{h=AJw(e,1);d=e;}e=h;}break a;}d=e;}b=BZk(d);if(b===null){No();b=S4;}else b=b.cke;d=Cmc(a.bRg,b);if(d===null)d=a.b4A;e=C_h(a.bRg,b);b=ALq(AYg(c,b),e!==null?AYg(c,e):ABm(c,V(1)),d);}return b;}; +function Brg(){let a=this;W4.call(a);a.b$3=null;a.b99=null;} +let BH6=(a,b,c)=>{a.b$3=b;a.b99=c;if(!VG(b,c)){c=new Bt;Bp(c,E(8283));J(c);}},EwQ=(a,b)=>{let c=new Brg();BH6(c,a,b);return c;},Ejp=(a,b,c)=>{let d;QX();if(c===Sw){if(VG(b,a.b$3)){c=a.b$3;RT();b=ALq(b,c,S2);}else if(VG(b,a.b99)){d=a.b99;RT();b=ALq(b,d,ADi);}else{c=BMa;RT();b=ALq(b,c,S2);}return b;}if(A6a(b,a.b99)){c=a.b99;RT();b=AEd(b,c,S2);}else if(A6a(b,a.b$3)){d=a.b$3;RT();b=AEd(b,d,ADi);}else{c=BML;RT();b=AEd(b,c,S2);}return b;},CVi=N(),BQx=0,AAz=()=>{AAz=Z(CVi);FiJ();},CTo=b=>{let c,d;AAz();c=b.bmt();d +=b.bA4();return AOd(c.bGK,c.bGL,d.bGE,d.bGF);},BPg=(b,c)=>{let d,e,f,g,h,i,j,k,l,m;AAz();a:{b:{d=CTo(b);e=CTo(c);f=e.bMI;g=e.bM$;h=e.bTE;i=e.bTA;if(h>0.0&&i>0.0){j=d.bTE;if(j>0.0){k=d.bTA;if(k>0.0){l=d.bMI;if(fl){f=d.bM$;if(gf)break b;}}}}m=0;break a;}m=1;}return m;},Ctq=b=>{let c,d;AAz();c=b.bmt();d=b.bA4();return BA(c.bGK+d.bGE/2.0,c.bGL+d.bGF/2.0);},ChR=(b,c,d)=>{let e,f;AAz();b=b;e=b.cBb;f=b.cx$;return ChO(e.bGK+c,e.bGL+d,f);},Dsc=(b,c)=>{let d,e,f,g,h,i,j,k;AAz();d=Ctq(b);e=Ctq(c);f +=e.bGK-d.bGK;g=e.bGL-d.bGL;h=0.0;if(A9K(b,c,f,g,h)){i=0.1;while(A9K(b,c,f,g,i)){i=i*2.0;}j=0;while(true){if(j>=5){k=(h+i)/2.0;return ChR(c,f*k,g*k);}if(Df()&&!BQx&&!A9K(b,c,f,g,h)){b=new C4;X(b);J(b);}if(Df()&&!BQx&&A9K(b,c,f,g,i))break;k=(h+i)/2.0;if(A9K(b,c,f,g,k)){h=k;k=i;}j=j+1|0;i=k;}b=new C4;X(b);J(b);}b=new Bt;X(b);J(b);},A9K=(b,c,d,e,f)=>{AAz();return BPg(b,ChR(c,d*f,e*f));},FiJ=()=>{BQx=0;},CAN=N(0); +function BGx(){F.call(this);this.cjV=0.0;} +let AU4=(a,b)=>{a.cjV=a.cjV+b;},A3y=N(Bx),BpS=null,AJq=null,EsT=null,AH1=()=>{AH1=Z(A3y);DWU();},DWh=(a,b,c)=>{AH1();Ct(a,b,c);},CCf=(a,b)=>{let c=new A3y();DWh(c,a,b);return c;},DWU=()=>{let b,c,d;BpS=CCf(E(8284),0);b=CCf(E(8285),1);AJq=b;c=K(A3y,2);d=c.data;d[0]=BpS;d[1]=b;EsT=c;}; +function CtA(){F.call(this);this.daF=null;} +let DLO=(a,b)=>{a.daF=b;},FfG=a=>{let b=new CtA();DLO(b,a);return b;}; +function DcL(){let a=this;Er.call(a);a.cpQ=null;a.cw1=0.0;a.da$=null;} +let DVu=(a,b)=>{b.hP(a.cpQ);},Eow=(a,b)=>{return Cl(BnQ(a.cpQ)*a.cw1,Bt$(a.cpQ)*a.cw1);}; +function CKI(){let a=this;F.call(a);a.c2K=null;a.cLG=null;a.ct1=0.0;a.cxQ=null;} +let D3E=(a,b)=>{let c,d,e,f;c=a.cxQ;d=b.g7();e=(b.gy()).co();f=a.c2K;if(f===null)f=a.cLG;b.hP(A9h(DHL(c,d,e,f),a.ct1));},D6j=(a,b)=>{let c,d,e;b=new LU;c=a.cxQ;d=c.bTB;e=a.ct1;MO(b,d*e,c.bXi*e);return b;}; +function DhC(){let a=this;F.call(a);a.cT$=null;a.cqV=0.0;a.cAT=null;} +let EGq=(a,b)=>{let c,d,e,f,g,h,i;c=a.cAT;b.g7();d=(b.gy()).co();e=a.cT$;f=Bt9(c.b6M,c.b8y,1);if(d===null){Go();d=K8;}if(e===null){Go();e=Hu;}BJv(d,e,0);g=0;while(g{let c,d,e;b=new LU;c=a.cAT;d=c.b6M;e=a.cqV;MO(b,d*e,c.b8y*e);return b;}; +function C5c(){let a=this;F.call(a);a.c_A=null;a.c8L=null;a.cgS=0.0;a.cnx=null;} +let EGF=(a,b)=>{b.g7();b.hP(A9h(a.cnx.cg8,a.cgS));},DNL=(a,b)=>{return Cl(AV6(a.cnx.cg8)*a.cgS,AVm(a.cnx.cg8)*a.cgS);}; +function C1e(){let a=this;F.call(a);a.cv8=null;a.c5A=0.0;a.c2G=null;a.cOo=null;a.c2Y=0.0;a.c5V=0.0;a.c4Z=null;} +let DCY=(a,b)=>{let c;c=a.cv8;if(c!==null)((b.h2(Cc(c))).h2(a.cv8)).hP(M6(Cqj(a,b.hE())));Dqy(a.c4Z,b,a.c5A,a.c2G,a.cOo);},Cqj=(a,b)=>{return Cl(a.c2Y,a.c5V);}; +function BVb(){let a=this;F.call(a);a.b1c=null;a.bXO=null;a.b8z=null;a.b7S=null;a.b5i=0.0;} +let Bdy=null,AP4=()=>{AP4=Z(BVb);DIu();},D8d=(a,b,c,d,e,f)=>{AP4();a.b1c=b;a.bXO=c;a.b7S=e;a.b8z=d;a.b5i=f;},AT5=(a,b,c,d,e)=>{let f=new BVb();D8d(f,a,b,c,d,e);return f;},DIu=()=>{Bdy=AT5(ACx(),ACx(),null,null,0.0);},B$$=N(),E$u=(a,b,c)=>{let d;b=b;c=c;d=Ctx(b)-Ctx(c)|0;if(!d)d=b.bY8-c.bY8|0;return d;},DpU=N(),Fdy=(a,b,c)=>{let d;b=b;c=c;d=DiU(b)-DiU(c)|0;if(!d)d=b.bTq-c.bTq|0;return d;}; +function C$0(){F.call(this);this.b0J=null;} +let Eak=a=>{a.b0J=Bk();},BMG=()=>{let a=new C$0();Eak(a);return a;},Cis=(a,b)=>{let c,d;c=a.b0J;d=DL(b);U(c,d);},Czx=(a,b)=>{let c;c=a.b0J;if(b{return Br(a.b0J);}; +function CqX(){let a=this;F.call(a);a.bJr=0.0;a.c2g=0.0;a.bJB=0.0;a.c2f=0.0;} +let ELE=(a,b,c,d,e)=>{a.bJr=b;a.c2g=c;a.bJB=d;a.c2f=e;},MQ=(a,b,c,d)=>{let e=new CqX();ELE(e,a,b,c,d);return e;},M$=(a,b)=>{return Cl(b.bGE+a.bJr+a.c2g,b.bGF+a.bJB+a.c2f);}; +function Dlp(){let a=this;F.call(a);a.cCp=null;a.bZ1=0.0;} +let CCn=a=>{return a.cCp.bMH/2.0;},C_U=a=>{return a.cCp.bLB/2.0;}; +function C4w(){F.call(this);this.cfm=null;} +let Fqp=a=>{a.cfm=Bk();},BX5=()=>{let a=new C4w();Fqp(a);return a;}; +function B9H(){let a=this;F.call(a);a.cS3=null;a.deY=null;} +let DSf=a=>{return null;},DAF=a=>{let b;b=K(M1,1);b.data[0]=a.cS3;return Bv(b);}; +function Dh4(){let a=this;F.call(a);a.cjw=0;a.b8O=null;a.b_M=null;a.ca2=null;a.cMy=null;a.c1d=0;a.cMr=0;a.bT2=0;a.ccE=0;} +let FhK=(a,b,c,d,e,f,g)=>{let h,i;a.b8O=b;a.cjw=b.bVU;b=b.bL6;h=b!==null?b.bWu:0;i=c.data;a.b_M=MK(c,h);a.bT2=i.length;a.cMy=d;a.c1d=e;a.cMr=f;a.ccE=g;C2R(a);},DlD=(a,b,c,d,e,f)=>{let g=new Dh4();FhK(g,a,b,c,d,e,f);return g;},SD=a=>{return a.bT2<=0?0:1;},C2R=a=>{let b,c;if(a.c1d){b=a.bT2;if(b){c=a.b8O.bRY.fc(a.b_M.data[b-1|0].bIu,a.cMy);if(a.ccE)c= -c|0;if(!a.cMr){if(c>=0)a.bT2=0;}else if(c>0)a.bT2=0;return;}}},D83=a=>{let b,c,d,e,f,g,h;b=a.cjw;c=a.b8O;if(b==c.bVU){d=a.ca2;if(d!==null){c.bL6=Bv1(c,c.bL6,d.bIu);e +=B1F(a.b8O,a.ca2.bIu,a.ccE);f=e.data;g=a.b_M;h=f.length;Di(e,0,g,0,h);a.bT2=h;c=a.b8O;b=c.bVU+1|0;c.bVU=b;a.cjw=b;a.ca2=null;return;}c=new BP;X(c);J(c);}c=new Nr;X(c);J(c);},Tj=a=>{let b,c,d,e;if(a.cjw==a.b8O.bVU){b=a.bT2;if(b){a:{c=a.b_M.data;d=b-1|0;a.bT2=d;e=c[d];a.ca2=e;e=A8k(e,a.ccE);if(e!==null)while(true){if(e===null)break a;c=a.b_M.data;b=a.bT2;a.bT2=b+1|0;c[b]=e;e=AJw(e,a.ccE);}}C2R(a);return a.ca2;}e=new Kx;X(e);J(e);}e=new Nr;X(e);J(e);}; +function B3V(){let a=this;Er.call(a);a.car=null;a.b5S=0.0;a.b0q=null;} +let Exw=(a,b)=>{let c,d,e,f,g;c=new LU;d=Dnr(a,b);e=0.0;f=ABK(a.car);while(ABF(f)){g=ABA(f);e=BC(e,((AVu(a.b0q,g.bXF,a.b5S)).cF(b)).bGE);}MO(c,d+e,Cpy(a,b));return c;},Dnr=(a,b)=>{let c,d,e;c=0.0;d=ABK(a.car);while(ABF(d)){e=ABA(d);c=BC(c,((AYy(a.b0q,e.bZv)).cF(b)).bGE);}return c;},Cpy=(a,b)=>{let c,d,e,f,g,h,i;c=0.0;d=ABK(a.car);while(ABF(d)){e=ABA(d);f=AYy(a.b0q,e.bZv);g=AVu(a.b0q,e.bXF,a.b5S);h=f.cF(b);i=g.cF(b);c=c+BC(h.bGF,i.bGF);}return c;},EU_=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=Im(b);d=Dnr(a,c);e=Cpy(a, +c);f=BM(d);f=Jw(b,f);g=Fg(e);ACY(f,g);h=DE(a.b5S);i=ABK(a.car);while(ABF(i)){f=ABA(i);g=AYy(a.b0q,f.bZv);j=AVu(a.b0q,f.bXF,a.b5S-d);k=g.cF(c);l=j.cF(c);f=b;ACY(f,h);g.cC(b);j.cC(Jw(f,BM(d)));b=Jw(f,BW(BC(k.bGF,l.bGF)));}}; +function BNL(){let a=this;Er.call(a);a.cJj=null;a.ccU=0.0;a.cut=null;} +let D1h=(a,b)=>{let c,d,e;c=Cl(0.0,0.0);d=AGA(a.cJj);while(AAZ(d)){e=AAW(d);c=JM(c,(AVu(a.cut,e,a.ccU)).cF(b));}return c;},Fq2=(a,b)=>{let c,d,e,f,g;c=DE(a.ccU);d=0;e=AGA(a.cJj);while(AAZ(e)){f=AAW(e);g=AVu(a.cut,f,a.ccU);if(d>0)ACY(b,c);d=d+1|0;g.cC(b);g=BW((g.cF(Im(b))).bGF);b=Jw(b,g);}}; +function CJP(){let a=this;F.call(a);a.b11=null;a.c4C=0.0;a.cXn=null;} +let B3A=(a,b)=>{return W$(a.b11.cF(b),a.c4C,0.0);},E96=(a,b)=>{let c,d,e;c=a.cXn;B3();if(c===CF)a.b11.cC(b);else if(c===CO){d=a.b11.cF(b.hE());e=(B3A(a,b.hE())).bGE-d.bGE;a.b11.cC(b.h2(BM(e/2.0)));}else if(c===Ft){d=a.b11.cF(b.hE());e=(B3A(a,b.hE())).bGE-d.bGE;a.b11.cC(b.h2(BM(e)));}else{b=new BV;X(b);J(b);}}; +function Cej(){let a=this;F.call(a);a.c4j=0.0;a.c4k=0.0;a.cGj=null;} +let DWe=(a,b,c)=>{return a.cGj.clc.bAR(b,c)-a.c4j;},EPO=(a,b,c)=>{return a.cGj.clc.bAS(b,c)+a.c4k;}; +function CdU(){let a=this;F.call(a);a.daw=8.0;a.daX=13.0;a.db9=27.0;a.daz=13.0;a.daA=15.0;a.dbO=16.0;a.coo=null;a.c6i=0;} +let EJr=(a,b,c)=>{a.daw=8.0;a.daX=13.0;a.db9=27.0;a.daz=13.0;a.daA=15.0;a.dbO=16.0;a.coo=b;a.c6i=c;},Djq=(a,b)=>{let c=new CdU();EJr(c,a,b);return c;},DGJ=(a,b)=>{let c,d,e,f,g,h,i;c=BC(13.0,13.0)-8.0+AW8(a);d=Fz(16.0,16.0);e=c+8.0;f=EE();Ec(f,0.0,0.0);B2(f,0.0,27.0);Ec(f,(-13.0),8.0);B2(f,13.0,8.0);Ec(f,0.0,27.0);B2(f,(-13.0),42.0);Ec(f,0.0,27.0);B2(f,13.0,42.0);g=a.coo;h=g.bHm;if(h!==0.0){d.bG1=h;f.bG1=h;}b=Ef(g,b);(b.h2(Bh(c,AW8(a)))).hP(d);if(a.c6i){d=b.h2(Bh(e,AW8(a)+8.0));g=C7C(a,1.8162332528565992);i +=C7C(a,(-0.24543692606170264));(d.h2(I3(g))).hP(EB(i.bGK-g.bGK,i.bGL-g.bGL));}((b.h2(Bh(e,16.0+AW8(a)))).h2(Cc(E4()))).hP(f);},C7C=(a,b)=>{return BA(8.0*G4(b),8.0*H0(b));},AW8=a=>{return a.coo.bUI.bJw;},Fpg=(a,b)=>{return Cl(BC(13.0,13.0)*2.0+2.0*AW8(a),58.0+2.0*AW8(a)+a.coo.bHm+1.0);}; +function Cxk(){let a=this;F.call(a);a.c8x=32.0;a.dbz=54.0;a.c9h=16.0;a.c$Z=4.0;a.db7=8.0;a.dct=28.0;a.crO=null;} +let DX1=(a,b)=>{let c,d,e,f,g;c=Fz(32.0,32.0);d=Del(a)/2.0;e=EE();Ec(e,0.0,4.0);HY(e,4.0,4.0,7.0,4.0,11.0,0.0);HY(e,19.0,0.0,27.0,8.0,27.0,16.0);B2(e,27.0,20.0);HY(e,27.0,24.0,23.0,28.0,19.0,28.0);B2(e,(-19.0),28.0);HY(e,(-23.0),28.0,(-27.0),24.0,(-27.0),20.0);B2(e,(-27.0),16.0);HY(e,(-27.0),8.0,(-19.0),0.0,(-11.0),0.0);HY(e,(-7.0),4.0,(-4.0),4.0,0.0,4.0);f=a.crO;g=f.bHm;if(g!==0.0){c.bG1=g;e.bG1=g;}b=Ef(f,b);(b.h2(Bh(d-c.bMH/2.0,Bce(a)))).hP(c);(b.h2(Bh(d,c.bLB+Bce(a)))).hP(e);},Bce=a=>{return a.crO.bUI.bJw;},Del +=a=>{return 54.0+Bce(a)*2.0;},DXL=(a,b)=>{return Cl(Del(a),60.0+Bce(a)*2.0);}; +function Dj3(){let a=this;F.call(a);a.c$y=9.0;a.c9a=25.0;a.c75=21.0;a.c9P=2.0;a.dbi=5.0;a.den=6.0;a.c$d=6.0;a.ch7=null;} +let DTz=(a,b)=>{let c,d,e,f,g;c=Fz(9.0,9.0);d=CSw(a)/2.0;e=EE();Ec(e,(-12.5),0.0);B2(e,(-12.5),5.0);B2(e,(-3.0),5.0);B2(e,(-3.0),21.0-(25.0+6.0*Gs(2.0)-6.0)/2.0);B2(e,(-12.5),21.0-6.0*Gs(2.0)/2.0);B2(e, -(12.5-6.0*Gs(2.0)/2.0),21.0);B2(e,0.0,21.0-(12.5-6.0*Gs(2.0)/2.0));B2(e,12.5-6.0*Gs(2.0)/2.0,21.0);B2(e,12.5,21.0-6.0*Gs(2.0)/2.0);B2(e,3.0,21.0-(25.0+6.0*Gs(2.0)-6.0)/2.0);B2(e,3.0,5.0);B2(e,12.5,5.0);B2(e,12.5,0.0);B2(e,(-12.5),0.0);f=a.ch7;g=f.bHm;if(g!==0.0){c.bG1=g;e.bG1=g;}b=Ef(f,b);(b.h2(Bh(d-c.bMH/2.0, +Bse(a)))).hP(c);(b.h2(Bh(d,c.bLB+Bse(a)+2.0))).hP(e);},Bse=a=>{return a.ch7.bUI.bJw;},CSw=a=>{return 25.0+Bse(a)*2.0;},D2p=(a,b)=>{return Cl(CSw(a),32.0+Bse(a)*2.0+a.ch7.bHm);},BCW=N(0); +function CdS(){let a=this;F.call(a);a.bP1=null;a.cZ7=null;} +let DNG=a=>{return a.cZ7;},DQD=(a,b,c)=>{let d,e,f;d=B1(a.bP1);B8();d=B0(d,DfR);e=new DgZ;f=a.bP1;Jd(e,f);e.b_$=b;e.cAp=Cey(f,d,c,0);return e;},E2p=(a,b,c)=>{let d,e,f;d=B1(a.bP1);B8();d=B0(d,CoF);e=new Dhj;f=a.bP1;Jd(e,f);e.b$M=b;e.cWN=Dfl(f,d,c);return e;},EuA=(a,b,c,d)=>{let e,f,g,h,i;e=a.bP1;f=null;g=K(I1,1);h=g.data;Fs();h[0]=Bnk;MC(e,f,0,g);i=B1(a.bP1);B8();i=B0(i,Cjr);f=new CY5;Jd(f,a.bP1);f.cdh=i;f.cWn=c;f.cbE=b;f.cXu=d;f.cqu=D0(i,J4(f));return f;},E7c=(a,b,c)=>{let d,e,f,g;d=B1(a.bP1);B8();d=B0(d,Cko);e +=new CkK;f=a.bP1;Jd(e,f);e.b9Q=b;e.cRI=d;e.cOB=G1(d);B9();g=CK;f=f;e.cQP=UD(c,d,g,f.bGN);e.cO5=UD(c,d,Cz,f.bGN);return e;},Fm0=(a,b,c,d,e,f,g)=>{let h,i,j,k,l;if(f!==null&&BG(f.bIJ.bJs,E(8286))){d=AHL(e,a.bP1);if(g===null)g=ADg(d);B8();h=B0(g,Du(AUo,f));e=B0(g,AHM);f=new BS8;Jd(f,d);f.cgd=c;f.cMC=AM6(LY(e,J4(f)));h=D0(h,J4(f));c=Dr0();e=(Ne(b,0)).p();c=c;if(!CNo(c,e,0)){B3();f.b2O=C_(b,h,CF,d);GO();f.bZ6=HD;}else{i=C5w(c,d,e,0,null);j=B_(e,0,i);k=CC(e,i);l=K(KH,1);if(!CB(j,E(900))){c=new S;T(c);Bb(H(H(c,E(8287)), +E(2915)),62);j=Jt(j,E(8288),Q(c));}l.data[0]=j;b=PB(l);B3();f.b2O=C_(b,h,CF,d);l=K(KH,1);l.data[0]=k;f.bZ6=C_(PB(l),h,CF,d);}return f;}e=AHL(e,a.bP1);if(f===null&&d!==null)f=EjV(d);if(g===null)g=ADg(e);B8();f=B0(g,Du(AUo,f));g=B0(g,AHM);h=new BW_;Jd(h,e);h.cgy=25.0;h.cvo=0.0;h.cNI=f;h.clB=d;h.coK=c;h.cYC=AM6(LY(g,J4(h)));c=null;if(e instanceof AJC)c=e.b3P;c=ZT(f,c);B9();h.c5Q=(BJ(c,Cz)).cu(J4(h));h.cZx=(BJ(c,CK)).cu(J4(h));d=D0(c,J4(h));h.cAi=IR(c);h.b0j=Of(c);h.cgy=(BJ(c,Jm)).oK();h.cvU=G1(c);f=GM(c);h.cvo +=(BJ(c,Pt)).oK();c=h.cAi;g=e;c=CkS(g,c);Ed();c=S0(C3T(g,d,c,FR),b);d=new AGu;e=AKv(c,f,CTh(g));c=new CO4;c.cmM=h;AUC(d,e,c,Dw(1.0));h.b3q=d;h.cY5=YE(b);return h;},Ewm=(a,b,c,d,e)=>{return b;},DBU=(a,b,c)=>{return b;},Etq=(a,b,c)=>{return AEI(b,c);},EbC=(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)=>{return h;},Elp=(a,b,c,d,e,f,g,h,i,j,k,l)=>{return d;},DOt=(a,b,c,d,e,f,g,h,i,j)=>{let k;k=Bk();c=Br(c);while(Bq(c)){e=(Bm(c)).bKi;U(k,e);}c=d.bKi;U(k,c);return B0O(k);},EFs=(a,b,c,d,e,f,g,h)=>{let i;i=Bk();c=Br(c);while(Bq(c)) +{d=(Bm(c)).bKi;U(i,d);}return B0O(i);},EUd=(a,b,c,d,e,f,g)=>{return B0O(b);},EW5=(a,b,c)=>{let d;d=new Cqh;V5(d,b);d.cRH=B$(c);return d;},DHG=(a,b,c)=>{let d;d=new B_Z;V5(d,b);d.b22=B$(c);return d;},FvB=a=>{return a.bP1;}; +function MJ(){let a=this;F.call(a);a.bKt=null;a.c8p=null;} +let ANu=a=>{B8();return A3J;},ALK=a=>{B8();return AHM;},ZK=(a,b)=>{a.c8p=Uu();a.bKt=b;},FyE=a=>{let b=new MJ();ZK(b,a);return b;},CQy=(a,b,c)=>{return a.bKt.bje(b,c);},Dv1=(a,b,c)=>{return a.bKt.bj$(b,c);},DLs=(a,b,c)=>{return a.bKt.bj4(b,c);},CdX=(a,b,c,d)=>{return a.bKt.bj9(b,c,d);},A$v=(a,b,c,d,e,f,g)=>{return a.bKt.bj5(b,c,d,e,f,g);},CvZ=(a,b,c,d,e)=>{return a.bKt.Xj(b,c,d,e);},C8X=(a,b,c)=>{return a.bKt.bj6(b,c);},B3O=(a,b,c)=>{return a.bKt.Xn(b,B$(c));},Bri=(a,b,c)=>{return a.bKt.Xp(b,B$(c));},Bmi=(a, +b,c)=>{return a.bKt.Xo(b,c);},C4Z=(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)=>{return a.bKt.bkd(b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);},DhX=(a,b,c,d,e,f,g,h,i,j,k,l)=>{return a.bKt.bj8(b,c,d,e,f,g,h,i,j,k,l);},DoE=(a,b,c,d,e,f,g,h,i,j)=>{return a.bKt.bjh(b,c,d,e,f,g,h,i,j);},Cwc=(a,b,c,d,e,f,g,h)=>{return a.bKt.bjK(b,c,d,e,f,g,h);},BlY=(a,b,c,d,e,f,g)=>{return a.bKt.bjL(b,c,d,e,f,g);},UN=a=>{return a.bKt.hE();},F4=a=>{return a.bKt.Xs();},DpO=N(MJ),E$G=(a,b,c)=>{if(!(b instanceof BW_)&&!(b instanceof BS8))return b;return CgK(b, +c);},B$6=N(MJ),Dvo=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p;d=35.0;e=c.Xm();if(e!==null)e=e.bJa;else{HW();e=Lu;}if(FQ(e))e=null;else{f=D0(B0(B1(F4(a)),ALK(a)),(F4(a)).bGN);B3();g=CF;h=F4(a);Ed();e=Vy(e,f,g,h,J0);}h=UN(a);if(e!==null)d=d+(e.cF(h)).bGF;i=C4a(b,0.0,d);g=Bmi(a,i,c);j=b.a32(h);if(Ew(j)){k=IA(Qx(j,g.bBm(i,h)));l=g.bBm(c,h);m=J7(Qx(c.a32(h),l));j=c.Xm();if(j===null)n=LY(B0(B1(F4(a)),ALK(a)),(F4(a)).bGN);else{n=j.bLD;if(!NN(n))n=LY(B0(B1(F4(a)),ALK(a)),(F4(a)).bGN);}o=new Cil;Fb(o,b,c);if(NN(n)){o.cAj +=k;o.cAh=m;o.cyq=n;o.cBo=e;b=DdQ(g,o);if(e===null)e=b;else{c=b;p=(Ly(c,h)).bGE;e=CZF(o);g=e.bIU;d=(Fk(g,0)).bGK;f=Br(g.bH0);while(Bq(f)){d=BC(d,(ARz(g,Bm(f))).bGK);}g=e.bQr.dX();while(g.dY()){j=g.dZ();f=Das(e,h,j);j=j.cdi.cF(h);d=BC(d,f.bGK+j.bGE);}if(!(p{let k,l,m,n,o,p,q,r,s,t,u,v;k=BH5(F4(a));l=DF(F4(a),E(8289));AHJ();m=P2(AQ8(Bo(AQl)));a:{b:{while(true){if(!OD(m))break b;n=Pr(m);if(BG(HT(n),l))break;}break a;}n=null;}if(n===null)n=ANI;o=c;l=Be(o,0);p=B0(j,ALK(a));m=B0(j,Du(ANu(a),i));if(ZQ(l)!==null)q=ZQ(l);else{B9();q=(BJ(m,CK)).cu((F4(a)).bGN);}if(o.bGJ<=1){f=a;r=f.bKt;c=Be(o,0);e=F4(a);f=UN(f);i=new CqU;if(q!==null){i.cYy=m;l=e;i.c7f=D0(m,l.bGN);i.cgx=D0(p,l.bGN);i.cT3=GM(m);i.c2C=GM(p);i.bX8=q;i.b6w=h;B9();i.bY$=(BJ(m, +Cz)).cu(l.bGN);i.b4r=LY(p,l.bGN);i.bX2=r;i.bNQ=b;i.cSL=k;i.b0U=n;i.bTy=c;i.bVz=d;i.ckh=e;i.bSW=f;i.c3x=g;i.bQV=AMB(c.bKi,30.0);i.cHz=AMB(d.bKi,30.0);if(Bwj(d)&&!Bwj(c))b=BfP(i,i.bTy,i.bVz);else if(R1(c)&&A4z(d))b=BfP(i,i.bTy,i.bVz);else if(Bwj(c)&&!Bwj(d))b=BfP(i,i.bVz,i.bTy);else if(R1(d)&&A4z(c))b=BfP(i,i.bVz,i.bTy);else{d=Cjp(i,1,ASB(i,i.bTy),ASB(i,i.bVz));b=i.c3x;c=b===null?d:CgK(d,b);b=DmR(i,i.bTy,i.bVz,0);d=AJL(i.bQV,10.0);e=AJL(i.cHz,10.0);f=new CEU;g=i.bNQ;h=i.b4r;j=i.b0U;CH9(f,c,d,e,b,g,i.bSW,i.b6w);f.b3n +=h;f.c5l=j;if(NN(h)){b=(ASB(i,i.bTy)).cF(i.bSW);c=(ASB(i,i.bVz)).cF(i.bSW);d=i.bSW;e=f;s=b.bGE-(AFC(e,d)).bHj;if(!(s>0.0))s=0.0;d=i.bSW;t=c.bGE;u=(AFC(e,d)).bHj+(e.bOn.a32(d)).bGE+t-(Dj(e,d)).bGE;if(!(u>0.0))u=0.0;d=i.bSW;v=BC(b.bGF,c.bGF)-(e.bOn.a32(d)).bGF;if(!(v>0.0))v=0.0;b=Cs9(BoU(Fvh(f,i.bTy,i.bVz,i.bSW),s,u),v,0.0);}else{b=new Bt;X(b);J(b);}}return b;}b=new Bt;X(b);J(b);}g=a.c6I;IY();if(WV(g,BPi))return ET9(b,q,a.bKt,k,c,d,f,e,p,m);return Dts(b,q,a.bKt,k,c,d,f,e,p,m);},CiW=N(MJ),D9i=(a,b,c,d,e,f,g,h)=> +{let i,j,k,l,m,n,o,p,q,r,s,t;i=Bk();j=c;k=Be(j,0);l=B0(B1(F4(a)),ANu(a));m=GM(l);n=D0(l,(F4(a)).bGN);B9();d=(BJ(l,Cz)).cu((F4(a)).bGN);o=ZQ(k)!==null?ZQ(k):UD(g,l,CK,(F4(a)).bGN);if(!(!FQ(f)&&!ATq(f)))e=E6(0.0,0.0);else{e=AC0(k);B3();p=e.AZ(CF);q=AC0(k);Ed();e=Py(f,n,p,q,m,FR,null,null);}f=AIh(e,AC0(k),o,d,b);e=Be(j,0);k=B0(B1(F4(a)),ANu(a));j=(BJ(k,Cz)).cu((F4(a)).bGN);d=ZQ(e)!==null?ZQ(e):UD(h,k,CK,(F4(a)).bGN);g=AIh(E6(0.0,0.0),AC0(e),d,j,b);l=Br(c);while(Bq(l)){d=Bm(l);e=APf(d);k=a;e=e.cF(UN(k));h=(Bw3(d)).cF(UN(k));k +=new C70;j=new Dck;d=d.bKi;r=e.bGE;s=e.bGF;V5(j,d);j.cVl=r;j.czW=s;r=h.bGE;s=h.bGF;V5(k,j);k.cKg=r;k.cKh=s;U(i,k);}d=LY(B0(B1(F4(a)),ALK(a)),(F4(a)).bGN);if(i.bGJ==1){e=new DqF;k=a;BCB(e,i,c,b,f,g,UN(k));e.cta=d;b=UN(k);c=Bk();d=Be(e.bIN,0);f=new Cd5;g=Be(e.bUD,0);f.b3Z=e;Fb(f,e.bMC,d);f.c7G=g;g=c;U(g,f);if(Ew(d.a32(b))){b=new C0t;b.b7h=e;Fb(b,d,e.bOv);U(g,b);}b=QF(e,c);}else{e=new Co1;k=a;BCB(e,i,c,b,f,g,UN(k));e.dbM=10.0;e.bZt=d;b=UN(k);c=Bk();d=E9p(e,Be(e.bIN,0),Be(e.bUD,0));i=c;U(i,d);d=new B6K;f=e.bIN;f +=Be(f,f.bGJ-1|0);g=e.bUD;t=e.bIN.bGJ-1|0;CBz(d,e,f,Be(g,t));U(i,d);t=0;while(true){d=e.bIN;if(t>=d.bGJ)break;d=Be(d,t);if(t>0&&t<(e.bIN.bGJ-1|0)){f=new DaC;g=Be(e.bUD,t);f.b47=e;Fb(f,e.bMC,d);f.cQX=g;U(i,f);}if(BhN(e,e,d)){f=new Cn$;g=e.bMC;h=Be(e.bUD,t);f.bXP=e;Fb(f,g,d);f.cMM=h;U(i,f);}t=t+1|0;}EF4(e,b,c);b=QF(e,c);}return b;},CjH=N(MJ),E$h=(a,b,c,d,e,f,g,h,i,j,k,l)=>{let m,n,o,p,q,r,s,t,u,v,w;m=BH5(F4(a));n=B0(l,ALK(a));o=B0(l,ANu(a));B9();p=(BJ(o,Cz)).cu((F4(a)).bGN);if(g===null)g=(BJ(o,CK)).cu((F4(a)).bGN);q +=LY(n,(F4(a)).bGN);r=D0(n,(F4(a)).bGN);s=D0(o,(F4(a)).bGN);l=B55(a,j,q);k=B55(a,k,q);t=Dz7(B55(a,b,q),c,d,e,p,g,q,f,r,a.bKt,m,s,h,i,l,k);u=d.Xl();if(u.dV()>0){v=Dbl(t);b=u.dX();while(b.dY()){w=b.dZ();c=new B$I;c.cv1=a;c.cXd=v;c.cGD=w;c.cJ0=q;t=DdQ(t,c);}}return t;},B55=(a,b,c)=>{if(!NN(b.bLD))return CTA(b,c);return b;},C7j=N(MJ),E0s=(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)=>{let q,r,s,t,u,v,w,x,y,z,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl;if(b!==null){if(c!==null){q=BH5(F4(a));r=(F4(a)).bGN;s=B0(p,ALK(a));t=B0(p,ANu(a));B9();u +=(BJ(t,Cz)).cu(r);v=Czd(b,ANu(a),CK,p,r);w=Czd(c,ANu(a),CK,p,r);if(Dly(N6(c,r))&&LC(c))w=v;B8();c=B0(p,AUo);p=CAC(Qd(),c,r);CM();x=Lg(p,C6,v);y=LY(s,r);z=D0(t,r);ba=D0(s,r);bb=h.b22;bc=bb===null?null:bb.bLD;b=AAV(b);if(FQ(g))bd=null;else{c=null;bd=A$v(a,g,e,d,x,b,c);}be=Eqz(e,f,bd,h,i,j,k,u,v,w,y,bc,q,F4(a),z,ba,l,m,n,o);b=h;bf=B3J(b);if(bf.dV()>0){bg=AGE(Mn(b),w,u,e);b=BoU(be,10.0,0.0);b=Bmi(a,b,bg);bh=Dbl(b);bi=Bk();bj=0;while(bj{let h,i;AHn();if(c===A5n){h=new Cd6;BYN(h,F4(a),UN(a),b,g);}else if(c===ByP){h=new CWL;BYN(h,F4(a),UN(a),b,g);}else if(c===AXr){h=new CjJ;BYN(h,F4(a),UN(a),b,g);h.cQz=d;h.cRu=e;h.c4h=f;}else{b=new BP;X(b);J(b);}i=BlY(a,h.bPq,c,d,e,f,g);return h.bBV(i,h.bBW(i));},CpC=N(MJ),EJO=(a,b,c,d,e)=>{let f,g,h,i,j,k,l;if(d.bGJ){f=F4(a);if(b===null){g=Bm(Br(d));b=g.b0h;if(b!==null)f=AHL(b,f);d +=new C1J;f.qQ(null);h=g.b5a;e=g.cnD;ASa();i=e!==A90?0:1;Jd(d,f);d.cot=c;d.cTd=i;c=f.cp();B8();c=B0(c,A23);B9();j=(BJ(c,CK)).cu(J4(d));k=(BJ(c,Cz)).cu(J4(d));l=G1(c);b=GM(c);c=Fi(c);Fs();e=Nu(f,BnF,null);B3();g=f.AZ(CF);Ed();e=S0(f.E0(e,g,FR),h);d.ckj=XJ(l,k,j,A85(AKv(e,b,f.hr()),d,c),0,c);return d;}return BLE(b,d,1,e);}b=new Bt;X(b);J(b);},CJa=N(MJ); +function BWE(){NE.call(this);this.c2h=null;} +let C41=(a,b,c)=>{a.c2h=b;Zx(a,c);},Ff3=(a,b)=>{let c=new BWE();C41(c,a,b);return c;},EL4=(a,b)=>{let c,d,e,f,g;if(F0(b,QU))b.cC(a);else if(!F0(b,ACh)){if(F0(b,A6B))b.cC(a);else if(F0(b,BzO)){c=b;Fw(Fm(),E(8290));c.bBX(a.bHP);}}else{c=b;d=c.bBY();e=c.bBZ();if(!(d!==null&&e!==null))return;else if(d.a36()!==e.a35()){f=new Dmp;Fb(f,c.bBY(),c.bBZ());f.daQ=c;b=a.bHP;if(F0(c,Kn)){c=c;g=f.bHr.a36();d=f.bHF.a35();if(g!==null&&d!==null)c.bB0(b,g.bXu,d.bXu);}}}},ESq=(a,b)=>{return Ff3(a.c2h,a.bHP.h2(b));}; +function CJj(){let a=this;F.call(a);a.cyC=null;a.b7A=0.0;a.b7B=0.0;a.cuk=0.0;a.cDX=null;} +let CH0=a=>{let b;if(a.cDX===null){b=B1(a.cyC);B8();a.cDX=B0(b,BLc);}return a.cDX;},CR8=(a,b)=>{return Cl(a.b7A+a.b7B,a.cuk);},DeW=(a,b)=>{let c,d,e;b.hP(NX(a.b7A+a.b7B,1.0));c=CH0(a);B9();d=(BJ(c,Cz)).cu(a.cyC.bGN);e=Fi(CH0(a));(((b.h2(BM(a.b7A))).h2(e)).h2(d)).hP(Fg(a.cuk));},Chd=a=>{return a.b7A+a.b7B;}; +function A5H(){let a=this;NE.call(a);a.bSC=null;a.cC8=null;} +let DId=(a,b,c,d)=>{Zx(a,b);a.bSC=c;a.cC8=d;},DpW=(a,b,c)=>{let d=new A5H();DId(d,a,b,c);return d;},Enj=(a,b)=>{let c,d,e,f,g,h,i,j,k;if(F0(b,QU)){c=b;if((c.a34()).et(a.bSC))c.cC(a);}else if(F0(b,A6B)){c=b;if((c.a34()).et(a.bSC))c.cC(a);}else if(F0(b,BzO)){d=b;e=d.bB1();f=e.cf(0);g=e.cf(1);if(f.bB2(a.bSC)&&g.bB2(a.bSC))d.cC(a);}else if(!F0(b,ACh))a.bHP.hP(b);else{d=b;h=d.bBY();i=d.bBZ();j=!(h!==null&&h.a36()!==null&&h.a36()!==a.bSC)?1:0;k=!(i!==null&&i.a35()!==null&&i.a35()!==a.bSC)?1:0;if(j&&k)d.cC(a);}},BGD +=(a,b)=>{return DpW(a.bHP.h2(b),a.bSC,a.cC8);},CLH=a=>{return a.cC8;}; +function Cqo(){let a=this;OQ.call(a);a.cs5=null;a.b4I=0;a.bRo=null;a.cYP=0;a.c0q=0;a.cha=0;} +let Dc_=a=>{a.c0q=Cp(CY(CT(V(a.bRo.data.length),V(a.cYP)),V(10000)));},BPY=a=>{let b,c,d,e,f,g,h;while(true){b=EyQ(a.cs5);if(b===null)break;c=null;d=b.cCz&2147483647;e=a.bRo.data;f=d%e.length|0;g=e[f];a:{while(true){if(g===null)break a;if(b===g)break;h=g.bRL;c=g;g=h;}a.cha=a.cha+1|0;if(c!==null)c.bRL=g.bRL;else e[f]=g.bRL;a.b4I=a.b4I-1|0;}}},B$7=(a,b,c)=>{let d,e,f,g,h,i,j,k,l;a:{BPY(a);d=0;if(b===null){e=a.bRo.data[0];b:{while(e!==null){if(e.cg3)break b;e=e.bRL;}break a;}}else{f=b.dp()&2147483647;g=a.bRo.data;d +=f%g.length|0;e=g[d];c:{while(e!==null){if(b.cx(DfN(e)))break c;e=e.bRL;}break a;}}}if(e===null){a.cha=a.cha+1|0;f=a.b4I+1|0;a.b4I=f;if(f>a.c0q){g=a.bRo.data;h=g.length;f=h<<1;if(!f)f=1;i=K(BjE,f);j=i.data;d=0;while(d{BP$=Z(BAJ);Fxd();},CNR=(a,b,c)=>{let d;BP$();a.bJM=b;a.bOx=c;if(c{let c=new BAJ();CNR(c,a,b);return c;},E5B=(a,b)=>{let c;c=b;return !(a.bJM===c.bJM&&a.bOx===c.bOx)?0:1;},EBx=a=>{return A7J(DL(a.bJM))+A7J(DL(a.bOx))|0;},DeN=(a,b)=>{return !(b>=a.bJM&&b<=a.bOx)?0:1;},EBR=a=>{let b,c,d;b=a.bJM;c=a.bOx;d=new S;T(d);D6(H(D6(d,b),E(4565)),c);return Q(d);},Tz=a=>{return a.bOx-a.bJM;},Cg1=a=>{return a.bJM;},B_J=(a,b)=>{let c,d,e,f,g,h;c=E2(b);ARQ(c,new Cz7);d +=Bk();e=a.bJM;c=Br(c);while(true){if(!Bq(c)){f=a.bOx;if(ef){if(e{Cp0=0;},B9r=N(),Cyg=null,BP9=()=>{BP9=Z(B9r);EVm();},EVm=()=>{let b,c;b=Ca((Dqb()).data.length);c=b.data;Cyg=b;c[ZJ.bGO]=1;c[AHg.bGO]=2;c[AL7.bGO]=3;}; +function BSu(){let a=this;ADA.call(a);a.cc0=null;a.clo=null;} +let Dlh=(a,b,c)=>{Bmp(a,b.bQz);a.cc0=b;a.clo=c;},Cn_=(a,b)=>{let c=new BSu();Dlh(c,a,b);return c;},DQa=a=>{return CW(a.cc0)+a.clo.bB5();},D80=(a,b)=>{return Cn_(a.cc0.Rv(b),a.clo);},B3_=(a,b)=>{let c,d,e;c=a.cc0;d=new BSu;e=new CoW;e.cNn=a;Dlh(d,b,e);c.RO(d);},D10=(a,b)=>{a.cc0.YA(b);}; +function CB1(){let a=this;F.call(a);a.ci2=null;a.cn3=null;} +let B0T=a=>{let b;if(a.cn3===null){b=a.ci2;a.cn3=CT4(a,b.bGJ,b,0,E2(b));}return a.cn3;},CT4=(a,b,c,d,e)=>{let f,g,h,i,j,k;a:{f=Ce6(BA(0.0,0.0));if(d==1)f=Ce6(Be(e,0));else{if(d!=2){if(d!=3)break a;c=e;e=Be(c,0);g=Be(c,1);c=Be(c,2);return c.bGL===g.bGL?Dg2(g,e,c):Dg2(e,g,c);}f=new Bc7;h=e;g=Be(h,0);h=Be(h,1);i=BA((g.bGK+h.bGK)/2.0,(g.bGL+h.bGL)/2.0);f.cdn=i;f.b5A=Jy(g,i);}}j=0;k=d+1|0;while(jf.b5A)?0:1){g=Be(i,j);GJ(e,d,g);f=CT4(a,j,c,k,e);}j=j+1|0;}return f;}; +function CKN(){F.call(this);this.cdO=0.0;} +function CA9(){let a=this;F.call(a);a.cGo=null;a.cy7=0.0;a.cBx=0.0;} +let Dxz=a=>{let b;b=B4J(a.cGo);return BA(b.bGK-a.cy7,b.bGL-a.cBx);},DIE=a=>{return FO(BOV(a.cGo),2.0*a.cy7,2.0*a.cBx);},Md=N(0),GG=N(),Ps=(a,b,c)=>{let d;d=Nz(b.bGL-c.bGL,b.bGK-c.bGK);if(d<0.0)d=d+6.283185307179586;return d;}; +function Cov(){let a=this;GG.call(a);a.ctN=null;a.cv_=0;a.cyt=0;a.cJo=0;} +let EGe=(a,b,c,d,e)=>{a.ctN=b;a.cv_=c;a.cyt=d;a.cJo=e;},CLE=(a,b,c,d)=>{let e=new Cov();EGe(e,a,b,c,d);return e;},Fjt=(a,b,c,d)=>{return C9i(b,c-1.5707963267948966,0,a.ctN,a.cv_,a.cyt,a.cJo);},EaV=(a,b,c,d,e)=>{return C9i(c,Ps(a,b,d),1,a.ctN,a.cv_,a.cyt,a.cJo);}; +function EWu(){GG.call(this);this.dfE=null;} +function Cbq(){let a=this;F.call(a);a.cSj=null;a.cDF=null;a.c8y=null;} +let ETF=(a,b)=>{let c,d,e,f;c=new SA;d=a.cSj;e=d.bGK;f=a.cDF;A$K(c,e-f.bGK,d.bGL-f.bGL);(b.h2(I3(a.cDF))).hP(c);}; +function Dnz(){FK.call(this);this.csG=null;} +let DxK=(a,b)=>{b.hP(a.csG);},Fr2=a=>{return Be(a.csG.bMy,0);}; +function CkB(){let a=this;F.call(a);a.cBb=null;a.cx$=null;} +let Er5=(a,b,c,d)=>{a.cBb=BA(b,c);a.cx$=d;},ChO=(a,b,c)=>{let d=new CkB();Er5(d,a,b,c);return d;},Cuz=(b,c)=>{return ChO(b.bGK,b.bGL,c);},TP=a=>{return a.cBb;},E4$=a=>{return a.cx$;}; +function CG_(){let a=this;F.call(a);a.csU=null;a.cVP=0.0;} +let DGx=a=>{return a.cVP;},DFo=a=>{return a.csU.bGK;},Eu$=a=>{return a.csU.bGL;},Bxp=N(0); +function C6r(){F.call(this);this.c2y=null;} +let DVF=(a,b)=>{let c,d;c=new CBT;d=a.c2y;c.c_g=6.0;c.cXD=Fz(12.0,12.0);c.cRx=d;return c;}; +function A3e(){let a=this;F.call(a);a.cYi=null;a.cXv=null;a.cYM=null;} +let BxF=(a,b,c,d)=>{a.cYi=b;a.cXv=c;a.cYM=d;},Fx1=(a,b,c)=>{let d=new A3e();BxF(d,a,b,c);return d;},EzN=(a,b)=>{let c,d,e,f;c=new CUf;d=a.cYi;e=a.cXv;f=a.cYM;c.c9w=6.0;c.cZL=Fz(12.0,12.0);c.c9x=10.0;c.cSN=Fz(20.0,20.0);c.crv=b;c.ckB=d;c.cLd=e;c.csy=f;return c;},BaE=N(Bx),AKM=null,A0j=null,Be5=null,EPV=null,AJ9=()=>{AJ9=Z(BaE);D$0();},DuK=(a,b,c)=>{AJ9();Ct(a,b,c);},BUf=(a,b)=>{let c=new BaE();DuK(c,a,b);return c;},D$0=()=>{let b,c,d;AKM=BUf(E(3547),0);A0j=BUf(E(8291),1);b=BUf(E(8292),2);Be5=b;c=K(BaE,3);d=c.data;d[0] +=AKM;d[1]=A0j;d[2]=b;EPV=c;}; +function CJW(){F.call(this);this.cQ6=0;} +let Eh7=(a,b)=>{a.cQ6=b;},CEJ=a=>{let b=new CJW();Eh7(b,a);return b;},EP5=(a,b)=>{let c,d;c=new C_W;d=a.cQ6;c.dbx=6.0;c.dbN=10.0;c.ckW=b;c.c0o=d;return c;}; +function C3f(){ADt.call(this);this.bXq=null;} +let D3h=(a,b,c,d)=>{A_C(a,b,c);a.bXq=d;},Cz_=(a,b,c)=>{let d=new C3f();D3h(d,a,b,c);return d;}; +function C_e(){If.call(this);this.cUz=null;} +let Fkm=a=>{let b,c;b=a.cUz.dX();Le();c=new C_d;c.cJG=b;return c;}; +function DeU(){F.call(this);this.bSE=null;} +let DfD=a=>{let b,c;b=0.0;c=Br(a.bSE);while(Bq(c)){b=b+(Bm(c)).bVb;}return b/a.bSE.bGJ;}; +function Cjt(){let a=this;F.call(a);a.cAG=null;a.b3D=0.0;a.chJ=0.0;a.b3H=0;} +let Es7=(a,b,c,d,e)=>{a.cAG=b;a.b3D=c;a.chJ=d;a.b3H=e;},Dea=(a,b,c,d)=>{let e=new Cjt();Es7(e,a,b,c,d);return e;},EsP=a=>{let b,c,d,e,f;b=a.b3D;c=a.chJ;d=a.b3H;e=new S;T(e);f=H(D6(H(D6(H(e,E(8293)),b),E(5025)),c),E(3994));BE(f,d);Bb(f,41);return Q(e);},EOH=(a,b)=>{return BFr(a.b3D,b.b3D);}; +function Dkh(){let a=this;F.call(a);a.b7m=0;a.b8F=0;} +let EHe=(a,b,c)=>{a.b7m=b;a.b8F=c;},AD4=(a,b)=>{let c=new Dkh();EHe(c,a,b);return c;},Dvf=a=>{return (a.b7m*47|0)+a.b8F|0;},DWF=(a,b)=>{let c;c=b;return !(a.b7m==c.b7m&&a.b8F==c.b8F)?0:1;},Bvj=N(0); +function BGq(){let a=this;F.call(a);a.cEA=null;a.cj6=null;a.cEP=null;a.cOp=null;a.cZt=null;} +let EAd=a=>{return IN(a.cOp);},Dum=a=>{return null;},Cdx=(b,c)=>{let d,e,f;d=new BWJ;B3();CyN(d,CF);e=Br(b);while(Bq(e)){CFk(d,Bm(e));}f=new ACw;Jo();AP8(f,d,JJ,c);return f;},BLU=(a,b,c)=>{let d,e,f,g;a:{A5E();if(Kr(D3(Dl5,b))){d=Eq(b,35);e=Eq(b,62);if(e!=(-1)){f=(IW(B_(b,d,e),E(349))).data;if(c>=f.length)break a;else{g=f[c];return g===null?null:Eu(a.cj6.ly(),g);}}b=new BP;X(b);J(b);}}return null;},CYf=(a,b)=>{let c;c=Eq(b,62);if(c==(-1)){b=new BP;X(b);J(b);}return CC(b,c+1|0);},DlF=(a,b)=>{let c,d,e,f,g,h, +i,j,k,l,m;c=Jt(b,E(607),E(4159));d=BLU(a,c,0);if(d!==null)c=CYf(a,c);b=a.cEP;e=b.bQw;f=new CY8;f.c$Y=b;f.bZF=Bk();f.cAt=Bk();f.cze=d;U(e,f);f=M0(c,E(2054));while(JO(f)){Bn1();g=BsG;c=KG(H5(f),Bn(E(4159),0),124);if(BO(c,E(684))){c=CC(c,1);g=BjC;}e=BLU(a,c,0);if(e!==null)c=CYf(a,c);h=CPh(c);i=Bk();j=Br(h);while(Bq(j)){k=Bm(j);l=new ALY;d=g===BsG?a.cEA:AGT(a.cEA);h=a.cZt;b=BX5();m=a.cj6;Ed();BJZ(l,d,h,b,m,FR);if(BO(k,E(6587))){B3();l.bQ7=Ft;k=CC(k,E(6587).bGI.length);}VK(l,k);U(i,l);}d=a.cEP;g=Cdx(i,a.cj6.hr());b +=d.bQw;c=Be(b,b.bGJ-1|0);U(c.bZF,g);U(c.cAt,e);BzN(d.b0N);}},CPh=b=>{let c,d,e,f,g,h;c=Bk();d=new S;T(d);e=0;while(e{return IN(a.cZC);},E3Z=a=>{return null;},CtT=(a,b)=>{let c,d,e,f,g,h,i,j;c=Br(CPh(b));while(Bq(c)){d=Bm(c);e=new ALY;f=a.cOs;g=a.c4r;b=BX5();h=a.c5M;Ed();BJZ(e,f,g,b,h,FR);f=AXR(d,E(8294),E(14));i=1;a:{b:{while(d.bGI.length>0){if(BO(d,E(1953))){i=i+1|0;d=CC(d,2);continue;}if(!BO(d,E(401)))break b;i=i+1|0;d=CC(d,1);}break a;}}VK(e,f);b=a.cLU;j=Cdx(IN(e),ACx());U(b.ckF,j);b=b.cCT;d=CL(i);C9(b,j,d);}}; +function DbF(){let a=this;Er.call(a);a.cfL=null;a.cg9=null;a.cRp=0;} +let Foe=a=>{return IN(a);},E4r=a=>{return null;},Ean=(a,b)=>{ANR();if(!Bj(b,E(8295))){U(a.cg9,b);return 0;}a.cRp=1;return 1;},Ek8=a=>{return a.cRp;},E8b=(a,b)=>{let c,d,e,f,g;c=0.0;d=0.0;e=Br(a.cg9);while(Bq(e)){f=Bm(e);g=b.gS(Gk(a.cfL),f);c=BC(c,g.bGE);d=d+g.bGF;}return Cl(c,d);},E40=(a,b)=>{return 0.0;},EVI=(a,b)=>{let c,d,e,f,g;c=0.0;d=Br(a.cg9);while(Bq(d)){e=Bm(d);f=N1(e,CUN(a.cfL,b));g=b.hE();c=c+(g.gS(Gk(a.cfL),e)).bGF;(b.h2(BW(c-AIj(f,g)))).hP(f);}},DDb=a=>{let b;b=K(AFj,1);b.data[0]=BAm(a);return Bv(b);}; +function CZo(){let a=this;F.call(a);a.c8z=null;a.c0I=null;a.cOm=0;} +let E7i=a=>{return IN(a);},DR9=a=>{return null;},EN9=(a,b)=>{ANR();if(!Bj(b,E(406))){L(a.c0I,b);return 0;}a.cOm=1;return 1;},Ex$=a=>{return a.cOm;},DsA=a=>{return null;},ER_=(a,b)=>{return (DsA(a)).cF(b);},Egn=(a,b)=>{return 0.0;},DFI=(a,b)=>{(DsA(a)).cC(b);},EVu=a=>{let b;b=new BV;X(b);J(b);}; +function BES(){let a=this;F.call(a);a.bRP=null;a.bRZ=null;a.cQp=null;a.c0K=null;a.cSh=null;} +let Dmw=null,DpE=null,ChV=null,Cdj=null,DbK=null,CuJ=null,CAD=null,Cb4=null,B$V=null,BCq=()=>{BCq=Z(BES);EqN();},DS7=(a,b,c,d,e,f)=>{let g,h,i,j,k,l,m;BCq();a.c0K=d;a.cQp=f;a.cSh=B$(e);Ed();if(f!==AJr){g=DX(B$V,b,0);if(!EZ(g)){h=DX(DpE,b,0);if(!EZ(h)){if(!EZ(DX(ChV,b,0))){i=DX(Cdj,b,0);if(!EZ(i)){if(f===FR){j=DX(DbK,b,0);if(EZ(j)){a.bRP=ES(CU(j,2));k=(CU(j,1)).bGI.length-1|0;b=new Rp;Ou();Te(b,ARX,k,0);a.bRZ=b;return;}}if(f===FR){j=DX(CuJ,b,0);if(EZ(j)){a.bRP=ES(CU(j,2));k=(CU(j,1)).bGI.length-1|0;b=new Rp;Ou();Te(b, +ARX,k,0);a.bRZ=b;return;}}if(f===FR){l=DX(CAD,CCY(b),0);if(EZ(l)){a.bRP=ES(B0L(CU(l,2)));k=(B0L(CU(l,1))).bGI.length-1|0;b=new Rp;Ou();Te(b,Ba0,k,0);a.bRZ=b;return;}}m=DX(Cb4,b,0);if(EZ(m)){a.bRP=ES(CU(m,2));k=(CU(m,1)).bGI.length-1|0;b=new Rp;Ou();Te(b,A7j,k,0);a.bRZ=b;return;}a.bRP=b;c=new Rp;Ou();Te(c,AXw,0,0);a.bRZ=c;return;}a.bRP=CU(i,1);b=new Rp;Ou();Te(b,AG6,0,46);a.bRZ=b;return;}a.bRP=E(14);b=new Rp;Ou();Te(b,AG6,0,61);a.bRZ=b;return;}a.bRP=CU(h,1);b=new Rp;Ou();Te(b,AG6,0,61);a.bRZ=b;return;}a.bRP= +CU(g,1);b=new Rp;Ou();Te(b,AG6,0,45);a.bRZ=b;return;}a.bRP=b;b=new Rp;Ou();Te(b,AXw,0,0);a.bRZ=b;},D5b=(a,b,c,d,e)=>{let f=new BES();DS7(f,a,b,c,d,e);return f;},EqN=()=>{Dmw=Dp(E(1555));DpE=Dm(E(8296));ChV=Dm(E(8297));Cdj=Dm(E(8298));DbK=Dm(E(8299));CuJ=Dm(E(8300));CAD=Dm(E(8301));Cb4=Dm(E(8302));B$V=Dm(E(8303));}; +function BW1(){F.call(this);this.c6o=null;} +let Deu=(b,c,d)=>{let e,f;e=new C$_;e.c6o=b;e.cNc=d;e.cUe=c;f=CJC(b.cGp,d);QX();e.csT=C8C(f,c,Sw);return e;},CQC=N(),FhH=(a,b)=>{return CL(b.caY);},CQB=N(); +function CQA(){F.call(this);this.c1I=0;} +let DbA=(a,b)=>{let c;b=b;c=a.c1I;AN_();b.caY=c;}; +function Sc(){let a=this;Dt.call(a);a.bRr=0;a.dey=null;} +let E5Z=(a,b,c)=>{a.dey=b;X(a);a.bRr=c;},BNE=(a,b)=>{let c=new Sc();E5Z(c,a,b);return c;},B8b=N(); +function CVZ(){GG.call(this);this.cB3=0;} +let Fnc=(a,b,c,d)=>{return Dia(b,c-1.5707963267948966,a.cB3);},E5F=(a,b)=>{a.cB3=b;},Cf3=a=>{let b=new CVZ();E5F(b,a);return b;},EzQ=(a,b,c,d,e)=>{return Dia(c,Ps(a,b,d),a.cB3);},Dgr=N(GG),ElE=(a,b,c,d)=>{return C5x(b,c-1.5707963267948966);},Ftm=(a,b,c,d,e)=>{return C5x(c,Ps(a,b,d));}; +function CrE(){let a=this;GG.call(a);a.cbU=null;a.cB0=0;} +let EFO=(a,b,c)=>{a.cbU=b;a.cB0=c;},DjA=(a,b)=>{let c=new CrE();EFO(c,a,b);return c;},Fa4=(a,b,c,d)=>{if(a.cB0)return Dqw(b,c,a.cbU);return CVI(b,c,a.cbU);},EP6=(a,b,c,d,e)=>{let f;f=Ps(a,b,d)+1.5707963267948966;if(a.cB0)return Dqw(c,f,a.cbU);return CVI(c,f,a.cbU);},CET=N(GG),Eyc=(a,b,c,d,e)=>{return Ceg(c,Ps(a,b,d),e);},Fo1=(a,b,c,d)=>{return Ceg(b,c-1.5707963267948966,d);},Dq6=N(GG),EBe=(a,b,c,d)=>{return Cr2(b,c-1.5707963267948966);},En9=(a,b,c,d,e)=>{return Cr2(c,Ps(a,b,d));},Cwo=N(GG),Ffk=(a,b,c,d)=>{return CFF(b, +c-1.5707963267948966);},DIQ=(a,b,c,d,e)=>{return CFF(c,Ps(a,b,d));},CDA=N(GG),ElL=(a,b,c,d)=>{return CBm(b,c-1.5707963267948966);},Eau=(a,b,c,d,e)=>{return CBm(c,Ps(a,b,d));},CBl=N(GG),DYi=(a,b,c,d)=>{return CDa(b,c-1.5707963267948966);},D2c=(a,b,c,d,e)=>{return CDa(c,Ps(a,b,d));},CyQ=N(GG),Evs=(a,b,c,d)=>{return CTu(b,c);},E1b=(a,b,c,d,e)=>{let f,g,h,i,j;f=Ps(a,b,d);g=BA((b.bGK+d.bGK)/2.0,(b.bGL+d.bGL)/2.0);b=new A_9;b.bNb=Fj();h=Qr(b,f);i=CUE(b);d=b.bNb;h=h+1.5707963267948966;ADm(d,h);b.bNb=Xz(b.bNb,c.bGK, +c.bGL);d=new Jn;j=c.bGK;f=i;Kz(d,j-f*G4(h),c.bGL-f*H0(h));b.chQ=d;b.chr=EB(g.bGK-d.bGK,g.bGL-d.bGL);return b;}; +function B$u(){GG.call(this);this.cuJ=null;} +let Enx=(a,b,c,d,e)=>{return C88(c,Ps(a,b,d),a.cuJ);},EvU=(a,b,c,d)=>{return C88(b,c-1.5707963267948966,a.cuJ);}; +function Dnd(){let a=this;GG.call(a);a.cJy=0;a.cAl=null;} +let Fv2=(a,b,c)=>{a.cJy=b;a.cAl=c;},Da7=(a,b)=>{let c=new Dnd();Fv2(c,a,b);return c;},EMC=(a,b,c,d)=>{c=c-1.5707963267948966;return C2j(b,a.cJy,c,a.cAl);},DuO=(a,b,c,d,e)=>{let f;f=Ps(a,b,d);return C2j(c,a.cJy,f,a.cAl);}; +function Ddh(){GG.call(this);this.cCP=null;} +let Fwn=(a,b,c,d)=>{return CeW(b,c-1.5707963267948966,a.cCP);},Fq0=(a,b,c,d,e)=>{return CeW(c,Ps(a,b,d),a.cCP);},Cmj=N(GG),Ee7=(a,b,c,d)=>{return Dlc(b,c-1.5707963267948966);},EnM=(a,b,c,d,e)=>{return Dlc(c,Ps(a,b,d));}; +function C04(){GG.call(this);this.cCK=null;} +let Foh=(a,b,c,d)=>{return Dse(b,a.cCK);},E6Y=(a,b,c,d,e)=>{return Dse(c,a.cCK);}; +function Dof(){GG.call(this);this.cuS=null;} +let DCS=(a,b,c,d,e)=>{return Cky(c,a.cuS);},Dxr=(a,b,c,d)=>{return Cky(b,a.cuS);}; +function Chx(){GG.call(this);this.csx=null;} +let Ev2=(a,b,c,d)=>{return DmO(b,c-1.5707963267948966,a.csx);},EMt=(a,b,c,d,e)=>{return DmO(c,Ps(a,b,d),a.csx);}; +function CyG(){GG.call(this);this.cx_=0;} +let DTL=(a,b)=>{a.cx_=b;},CKz=a=>{let b=new CyG();DTL(b,a);return b;},EjK=(a,b,c,d)=>{let e,f;d=new BLv;e=a.cx_;c=Qr(d,c);e=4*e|0;d.coa=b;b=H4(BA((-9.0), -e|0),U8(c));f=H4(BA((-8.0),0.0),U8(c));d.ckf=EB(b.bGK,b.bGL);d.cwQ=EB(f.bGK,f.bGL);return d;},ENX=(a,b,c,d,e)=>{let f,g,h;f=Ps(a,b,d);g=BA((b.bGK+d.bGK)/2.0,(b.bGL+d.bGL)/2.0);b=new BLv;h=a.cx_;d=U8(Qr(b,f)+1.5707963267948966);d=H4(BA((-9.0), -(4*h|0)|0),d);b.coa=c;b.ckf=EB(g.bGK-c.bGK,g.bGL-c.bGL);b.cwQ=EB(d.bGK,d.bGL);return b;}; +function Rp(){let a=this;F.call(a);a.cu0=null;a.cei=0;a.cWK=0;} +let Te=(a,b,c,d)=>{a.cu0=b;a.cei=c;a.cWK=d;},FyH=(a,b,c)=>{let d=new Rp();Te(d,a,b,c);return d;},A5g=N(Bx),AXw=null,A7j=null,ARX=null,Ba0=null,AG6=null,BVk=null,Fj4=null,Ou=()=>{Ou=Z(A5g);EVg();},D7I=(a,b,c)=>{Ou();Ct(a,b,c);},ATJ=(a,b)=>{let c=new A5g();D7I(c,a,b);return c;},EVg=()=>{let b,c,d;AXw=ATJ(E(883),0);A7j=ATJ(E(8304),1);ARX=ATJ(E(8305),2);Ba0=ATJ(E(8306),3);AG6=ATJ(E(8307),4);b=ATJ(E(8308),5);BVk=b;c=K(A5g,6);d=c.data;d[0]=AXw;d[1]=A7j;d[2]=ARX;d[3]=Ba0;d[4]=AG6;d[5]=b;Fj4=c;}; +function Cwl(){let a=this;IT.call(a);a.bQw=null;a.b0N=null;a.cDq=null;} +let EGn=(a,b)=>{Dgw(a,b);return Cl(CZ2(a,AWq(a)-1|0),C8e(a,AYL(a)-1|0));},ExJ=(a,b)=>{return 0.0;},FsU=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;Dgw(a,b.hE());c=0;while(c +{let c,d,e,f,g,h;if(a.b0N.bHv<=0){c=Br(a.bQw);while(Bq(c)){d=Br((Bm(c)).bZF);while(Bq(d)){e=Bm(d);f=A8M(0.0,0.0,e.cF(b));C9(a.b0N,e,f);}}g=0;while(g{let c,d;c=0.0;d=0;while(d{let c,d;c=0.0;d=0;while(d<=b){c=c+Dsw(a,d);d=d+1|0;}return c;},AQf=(a,b)=>{let c,d;c=0.0;d=0;while(d{let c,d;c=0.0;d=0;while(d<=b){c=c+Chu(a,d);d=d+1|0;}return c;},Dsw=(a,b)=>{let c,d,e;c=0.0;d=0;while(d{let c,d,e;c=0.0;d=0;while(d{let d,e;d=a.bQw;if(b{let b,c,d;b=B6r(Be(a.bQw,0));c=1;while(true){d=a.bQw;if(c>=d.bGJ)break;b=DT(b,B6r(Be(d, +c)));c=c+1|0;}return b;},AYL=a=>{return a.bQw.bGJ;}; +function CZP(){let a=this;IT.call(a);a.cG0=0.0;a.c3Y=0.0;a.coc=null;} +let EHA=(a,b,c,d)=>{a.coc=b;a.cG0=c;a.c3Y=d;},Cfp=(a,b,c)=>{let d=new CZP();EHA(d,a,b,c);return d;},ENp=(a,b)=>{return FO(De(a.coc,b),0.0,a.cG0+a.c3Y);},DSj=(a,b)=>{return a.coc.a0M(b);},E4y=(a,b)=>{a.coc.cC(b.h2(BW(a.cG0)));}; +function Ct2(){let a=this;IT.call(a);a.cN6=null;a.ckF=null;a.cCT=null;a.dc9=2.0;} +let DOb=(a,b)=>{let c,d,e,f,g,h;c=Dhb();d=0.0;e=0.0;f=Br(a.ckF);while(Bq(f)){g=Bm(f);h=g.cF(b);e=e+h.bGF;d=BC(d,C2e(c,CP8(a,g))+2.0+h.bGE);}return Cl(d,e);},Fhl=(a,b)=>{return 0.0;},D1q=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o;c=Dhb();d=0.0;e=Br(a.ckF);f=b;while(Bq(e)){g=Bm(e);h=CP8(a,g);g.cC(f.h2(BM(2.0+C2e(c,h))));i=g.cF(f.hE());j=d+i.bGF/2.0;k=c.b58;g=new Cf8;g.ccs=h;g.b85=j;U(k,g);f=f.h2(BW(i.bGF));d=d+i.bGF;}b=b.h2(a.cN6);h=0;while(true){f=c.b58;if(h>=f.bGJ)break;f=Be(f,h);d=BY7(f.ccs);(b.h2(Bh(d+8.0-1.0, +f.b85-1.0))).hP(C2(2.0,2.0));(b.h2(Bh(d,f.b85))).hP(DE(8.0));l=(Be(c.b58,h)).ccs;m=h-1|0;n=l-1|0;a:{b:{while(m>=0){o=(Be(c.b58,m)).ccs;if(o==l)break b;if(o==n)break b;m=m+(-1)|0;}i=null;break a;}i=Be(c.b58,m);}j=i!==null?i.b85:0.0;(b.h2(Bh(BY7(f.ccs),j))).hP(Fg(f.b85-j));h=h+1|0;}},CP8=(a,b)=>{return (DG(a.cCT,b)).bHl;},Ecq=N(),CCY=b=>{let c,d,e,f,g,h,i,j,k;c=b.bGI.length;d=null;e=0;f=0;g=d;while(f{let c,d,e,f,g,h,i;c=b.bGI.length;d=0;while(d=57344&&e<=57599){f=Fd(c);g=f.data;ANC(b,0,d,f,0);g[d]=(e-57344|0)&65535;h=d+1|0;while(h=57344&&i<=57599))g[h]=i;else g[h]=(i-57344|0)&65535;h=h+1|0;}return Ue(f);}d=d+1|0;}return b;}; +function Cu2(){let a=this;F.call(a);a.bUt=null;a.cDh=null;a.bVX=null;a.cov=null;} +let D7_=(a,b,c,d,e)=>{a.bUt=b;a.cDh=c;a.bVX=d;a.cov=e;},BEp=(a,b,c,d)=>{let e=new Cu2();D7_(e,a,b,c,d);return e;},ESX=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p;a:{if(F0(b,QU)){c=b;d=c.a34();e=0;b=a.bVX.dX();b:{c:{while(b.dY()){if(d.et(b.dZ()))break c;}break b;}e=1;}if(e)c.cC(CBB(a,d));}else if(F0(b,A6B)){c=b;d=c.a34();e=0;b=a.bVX.dX();d:{e:{while(b.dY()){if(d.et(b.dZ()))break e;}break d;}e=1;}if(e)c.cC(CBB(a,d));}else if(F0(b,BzO)){f=b;g=f.bB1();h=g.cf(0);i=g.cf(1);j=a.bVX.dX();while(j.dY()){k=j.dZ();if(h.bB2(k) +&&i.bB2(k))f.cC(FW(a.bUt,k));}}else{if(!F0(b,ACh)){f=a.bVX.dX();while(true){if(!f.dY())break a;j=f.dZ();l=FW(a.bUt,j);if(l!==null)l.hP(b);}}f=b;m=f.bBY();n=f.bBZ();b=a.bVX.dX();while(b.dY()){j=b.dZ();o=!(m!==null&&m.a36()!==null&&m.a36()!==j)?1:0;p=!(n!==null&&n.a35()!==null&&n.a35()!==j)?1:0;if(o&&p){l=FW(a.bUt,j);if(l!==null)f.cC(l);}}}}},CBB=(a,b)=>{let c,d,e;if(!b.p_(a.bVX)){c=AAh();d=a.bVX.dX();while(d.dY()){e=d.dZ();if(b.et(e))EQ(c,e);}return BEp(a.bUt,a.cDh,c,a.cov);}return a;},D8w=(a,b)=>{let c,d,e, +f,g;c=E9();d=G3(G8(a.bUt));e=d;while(Gl(e)){f=GZ(d);g=f.bHt;f=f.bHe.h2(b);Es(c,g,f);}return BEp(c,a.cDh,a.bVX,a.cov);},EJA=a=>{return a.cov;},Fv1=a=>{return (((Gc(a.bUt)).dX()).dZ()).gy();},DtD=a=>{return (((Gc(a.bUt)).dX()).dZ()).g7();},DNR=(a,b)=>{return;},EX2=a=>{return;},EQH=(a,b)=>{return;},EFq=a=>{return;},DfZ=a=>{let b;b=(Gc(a.bUt)).dX();while(b.dY()){(b.dZ()).hJ();}},Ekh=(a,b)=>{return 0;},FwD=a=>{return (((Gc(a.bUt)).dX()).dZ()).hK();}; +function CMU(){let a=this;F.call(a);a.dbD=null;a.cGP=null;a.cNt=null;} +let DQB=a=>{a.cGP=[];{a.cNt=new FinalizationRegistry(ref=>{if(!ED5(a,ref)){a.cGP.push(ref);}});}},EF_=()=>{let a=new CMU();DQB(a);return a;},EyQ=a=>{var value=a.cGP.shift();return typeof value!=='undefined'?value:null;},ED5=(a,b)=>{let c;c=a.dbD;if(c!==null){c.bCu(b);return 1;}return 0;}; +function C$_(){let a=this;BW1.call(a);a.cNc=null;a.cUe=null;a.csT=null;} +function BQr(){B8b.call(this);this.b_Q=null;} +let EGK=(a,b)=>{if(b instanceof BQr)return a.b_Q.cx(b.b_Q);return 0;},Dxi=a=>{return a.b_Q.dp()+1|0;}; +function C4y(){let a=this;F.call(a);a.c5z=0.0;a.c5q=0.0;a.dee=0.0;a.dea=0.0;a.cOh=0.0;a.cOg=0.0;a.cOJ=0.0;a.cOK=0.0;a.cjh=0.0;} +let BGc=(b,c)=>{let d,e,f,g,h,i,j;d=new C4y;e=b.bGK;f=b.bGL;g=c.bGK;h=c.bGL;d.c5z=e;d.c5q=f;d.dee=g;d.dea=h;i=e-g;j=f-h;j=Gs(i*i+j*j);d.cjh=j;if(j!==0.0){e=(g-e)/j;d.cOh=e;g=(h-f)/j;d.cOg=g;d.cOJ= -g;d.cOK=e;return d;}b=new Bt;X(b);J(b);},Bi2=(a,b,c)=>{let d,e;d=b*a.cOh+c*a.cOJ;e=b*a.cOg+c*a.cOK;return BA(a.c5z+d,a.c5q+e);},A5Z=N(Bx),BjC=null,BsG=null,E$z=null,Bn1=()=>{Bn1=Z(A5Z);DYg();},E8W=(a,b,c)=>{Bn1();Ct(a,b,c);},Dbg=(a,b)=>{let c=new A5Z();E8W(c,a,b);return c;},DYg=()=>{let b,c,d;BjC=Dbg(E(493),0);b= +Dbg(E(883),1);BsG=b;c=K(A5Z,2);d=c.data;d[0]=BjC;d[1]=b;E$z=c;},BO5=N(); +function Bii(){BO5.call(this);this.cMI=null;} +let CVy=(a,b,c)=>{let supported=typeof WeakRef!=='undefined';let value=supported&&b!==null?new WeakRef(b):b;a.cMI=value;if(c!==null&&supported&&b!==null){let registry=c.cNt;if(registry!==null){registry.register(b,a);}}},FzF=(a,b)=>{let c=new Bii();CVy(c,a,b);return c;},DfN=a=>{let value=a.cMI;if(typeof WeakRef!=='undefined'){if(value===null){return null;}let result=value.deref();return typeof result!=='undefined'?result:null;}return value;}; +function BjE(){let a=this;Bii.call(a);a.cCz=0;a.cg3=0;a.b_c=null;a.bRL=null;} +function CJe(){let a=this;F.call(a);a.cQh=null;a.cYR=null;} +let FgL=(a,b,c)=>{a.cQh=b;a.cYR=c;},CJC=(a,b)=>{let c=new CJe();FgL(c,a,b);return c;},C8C=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m;d=a.cYR;e=new A$7;d=d.cdS;C50(e,CY(QD(S3(d.bN6,1000),V(d.bSe/1000000|0)),V(1000)),V(1));f=B9N(a.cQh,b,c);while(true){g=C0s(f);if(BQm(e,S2))break;h=g.b8_;if(BQm(h,S2)){b=g.bTl;continue;}i=g.cmi;QX();if(i!==Sw){if(!VG(b,g.bSx))b=g.bSx;}else if(!A6a(b,g.bSx))b=g.bSx;j=AOc((ABr(b,g.bTl)).bN6);d=AEl(CT(h.bL5,j),h.bMX);if(BQu(d,e)>=0){a:{b:{i=CE_(e,AEl(h.bMX,h.bL5));j=CY(i.bL5,i.bMX);switch(c.bGO) +{case 0:break;case 1:break b;default:b=new BP;X(b);J(b);}b=AIN(b,j);break a;}b=Cmi(b,j);}return b;}j=e.bL5;k=d.bMX;j=CT(j,k);l=d.bL5;m=e.bMX;e=AEl(CE(j,CT(l,m)),CT(m,k));b=g.bTl;}return b;}; +function Bzo(){F.call(this);this.ci5=null;} +let CrJ=null,Chw=null,AXA=()=>{AXA=Z(Bzo);EEO();},CmM=(a,b)=>{AXA();a.ci5=Dy();Lx();Gx(a,A17(OK));Gx(a,ANG(OK));Gx(a,AJI(OK));Gx(a,A17(Os));Gx(a,ANG(Os));Gx(a,AJI(Os));Gx(a,ANG(WU));Gx(a,AJI(WU));Ed();if(b===FR)Gx(a,A17(Qn));Gx(a,ANG(Qn));Gx(a,AJI(Qn));Gx(a,A17(SN));Gx(a,ANG(SN));Gx(a,AJI(SN));Gx(a,A17(RH));Gx(a,ANG(RH));Gx(a,AJI(RH));Gx(a,ANG(Wz));Gx(a,AJI(Wz));Bw6();Gx(a,CKD(CCq));Gx(a,CKD(Csr));BqI();Gx(a,CI7(CWY));Gx(a,CI7(Cvh));Bhj();Gx(a,CqC(CsT));Gx(a,CqC(Dg$));AHr();Gx(a,C6q(ARJ));Gx(a,C6q(A2I));AZp();Gx(a, +new B5l);A3F();Gx(a,new BMU);A6C();Gx(a,new BLd);Gx(a,Dr0());A1x();Gx(a,new BRA);AZY();Gx(a,new B4c);AY6();Gx(a,new BDU);A$r();Gx(a,new BCg);Bsv();Gx(a,Cai(Dmf));Gx(a,Cai(Cms));b=new CH_;b.cuI=Dm(E(8309));Gx(a,b);BaZ();Gx(a,new BGO);AF1();B1z();b=new B6i;b.cCO=DiB;Gx(a,b);},Dt1=a=>{let b=new Bzo();CmM(b,a);return b;},Gx=(a,b)=>{let c,d;c=(b.bCB()).dX();while(c.dY()){d=c.dZ();(AN$(a.ci5,d,new CMZ)).g(b);}},EEO=()=>{let b;b=new Bzo;Ed();CmM(b,FR);CrJ=b;Chw=Dt1(null);},Be3=N(),EbA=null,BrO=null,BbI=()=>{BbI=Z(Be3);ERU();},DnB +=(b,c)=>{let d,e;BbI();Gp(b,E(4299));d=DG(BrO,b);if(d!==null){d=d;e=DG(d.cs4,b);if(e===null){e=BXK(b);if(e!==null){e=e.Z$();C9(d.cs4,b,e);}else{d=new AUT;Bp(d,b);J(d);}}return e;}if(!ATn(BrO)){d=new AUT;e=new S;T(e);H(H(e,E(8310)),b);Bp(d,Q(e));J(d);}b=new AUT;Bp(b,E(8311));J(b);},ERU=()=>{let b,c,d,e;EbA=Bk();BrO=Dy();b=new CxH;BbI();b.cs4=Dy();c=b;if(c.cIa===null){d=ABx(Bv(CNF()));Le();B$(d);e=new C_b;e.c0n=d;c.cIa=e;}c=Ro(c.cIa.c0n);Le();d=new C_c;d.cEM=c;e=d;while(e.cEM.dY()){d=e.cEM.dZ();Gp(d,E(4299));if +(A6S(BrO,d,b)!==null){c=new AUT;b=BY(b);e=new S;T(e);H(H(H(H(e,E(8312)),d),E(8313)),b);Bp(c,Q(e));J(c);}}},AUT=N(GE),Og=N(0); +function CoK(){let a=this;F.call(a);a.cj4=null;a.cxc=0;a.cHj=0;a.cwR=null;} +let EV1=a=>{return DMp(a.cj4,a.cHj);},Ev5=a=>{let b,c,d,e,f;b=JH(a);c=BY(a.cj4);d=a.cxc;e=a.cHj;f=new S;T(f);b=H(f,b);Bb(b,32);b=H(b,c);Bb(b,32);b=XU(b,d);Bb(b,32);XU(b,e);return Q(f);},A17=b=>{let c,d,e;c=CUy(b);d=CUy(b);e=new S;T(e);Bb(H(H(H(e,c),E(8314)),d),12313);return B5_(Q(e),b,0,1);},ANG=b=>{let c,d,e;c=Drc(b);d=b===WU?E(8315):b===Os?E(8316):b===OK?E(8317):b===Qn?E(8318):b===RH?E(8319):b===Wz?E(8320):b!==SN?null:E(8321);e=new S;T(e);Bb(H(H(H(e,c),E(8322)),d),12313);return B5_(Q(e),b,Dem(b),0);},AJI= +b=>{let c,d;c=Drc(b);d=new S;T(d);H(H(d,c),E(8323));return B5_(Q(d),b,Dem(b),0);},Fku=(a,b,c,d,e)=>{a.cwR=ADP(b);a.cj4=c;a.cxc=d;a.cHj=e;},B5_=(a,b,c,d)=>{let e=new CoK();Fku(e,a,b,c,d);return e;},DKO=(a,b,c,d,e)=>{let f,g,h,i,j;f=Zq(a.cwR,c,d);g=Zl(f,E(8324));h=Va(f);g=g;if(g.bGJ){a:{b:{i=e.bIo;b=a.cj4;if(a.cxc){f=Zl(f,E(8325));if(f.bGJ>0)break b;}c=null;break a;}c=Eu(KI(),Be(f,0));}j=AGm(i,b);if(c!==null)j=Csc(j,c);e.bIo=j;VK(e,Be(g,0));e.bIo=i;return h.bGI.length;}b=new BP;X(b);J(b);},EN8=(a,b,c)=>{b=Zl(Zq(a.cwR, +b,c),E(8324));if(b.bGJ)return (Be(b,0)).bGI.length;return 0;}; +function B7r(){F.call(this);this.cFF=null;} +let CCq=null,Csr=null,Bw6=()=>{Bw6=Z(B7r);DZu();},EzU=a=>{return HL(E(921));},D$e=(a,b)=>{Bw6();a.cFF=b;},CKD=a=>{let b=new B7r();D$e(b,a);return b;},DR3=(a,b,c)=>{let d;d=DX(a.cFF,b,c);if(EZ(d))return (CU(d,2)).bGI.length;return 0;},EKd=(a,b,c,d,e)=>{let f,g,h;f=DX(a.cFF,c,d);if(EZ(f)){g=CZ(CU(f,2));h=e.bIo;e.bIo=BE7(h,g);VK(e,CU(f,3));e.bIo=h;return (CU(f,1)).bGI.length;}b=new BP;X(b);J(b);},DZu=()=>{CCq=Dm(E(8326));Csr=Dm(E(8327));}; +function B1s(){F.call(this);this.crB=null;} +let CWY=null,Cvh=null,BqI=()=>{BqI=Z(B1s);E5M();},E$H=a=>{return HL(E(8328));},DXk=(a,b)=>{BqI();a.crB=b;},CI7=a=>{let b=new B1s();DXk(b,a);return b;},Fsg=(a,b,c)=>{let d;d=DX(a.crB,b,c);if(EZ(d))return (CU(d,2)).bGI.length;return 0;},DX9=(a,b,c,d,e)=>{let f,g,h,$$je;f=DX(a.crB,c,d);if(EZ(f)){g=e.bIo;h=CU(f,2);a:{b:{try{BMK(e,ARo(g,DV(KI(),h)));break a;}catch($$e){$$je=P($$e);if($$je instanceof J1){break b;}else{throw $$e;}}}}VK(e,CU(f,3));e.bIo=g;return (CU(f,1)).bGI.length;}b=new BP;X(b);J(b);},E5M=()=>{CWY +=Dm(E(8329));Cvh=Dm(E(8330));}; +function BLp(){F.call(this);this.cBf=null;} +let CsT=null,Dg$=null,Bhj=()=>{Bhj=Z(BLp);D1s();},Eio=a=>{return HL(E(8331));},E30=(a,b)=>{Bhj();a.cBf=b;},CqC=a=>{let b=new BLp();E30(b,a);return b;},Dvg=(a,b,c)=>{let d;d=DX(a.cBf,b,c);if(EZ(d))return (CU(d,1)).bGI.length;return 0;},D$k=(a,b,c,d,e)=>{let f,g,h,$$je;f=DX(a.cBf,c,d);if(EZ(f)){g=e.bIo;b=CU(f,2)===null?g:BE7(g,CZ(CU(f,2)));try{if(CU(f,3)!==null){h=CU(f,3);b=ARo(b,DV(KI(),h));}BMK(e,b);VK(e,CU(f,4));BMK(e,g);d=GB(CU(f,1));}catch($$e){$$je=P($$e);if($$je instanceof J1){b=new C8m;X(b);J(b);}else +{throw $$e;}}return d;}b=new BP;X(b);J(b);},D1s=()=>{CsT=Dm(E(8332));Dg$=Dm(E(8333));}; +function C08(){let a=this;F.call(a);a.c6Q=null;a.cBl=null;} +let Fnz=a=>{return HL(E(921));},C6q=b=>{let c,d;AHr();if(b===ARJ)c=E(8334);else if(b===A2I)c=E(8335);else{b=new BV;X(b);J(b);}d=new S;T(d);Bb(d,60);H(H(H(H(d,c),E(8336)),c),E(8337));d=Q(d);c=new C08;c.c6Q=b;c.cBl=ADP(d);return c;},DwN=(a,b,c)=>{b=Zl(Zq(a.cBl,b,c),E(8324));if(b.bGJ)return (Be(b,0)).bGI.length;return 0;},EtQ=(a,b,c,d,e)=>{let f,g,h,i;c=Zq(a.cBl,c,d);f=Zl(c,E(8324));g=Va(c);b=f;if(b.bGJ){h=e.bIo;i=a.c6Q;e.bIo=AMa(h.bMU,h.bWM,h.bT0,h.bN5,h.bI2,h.bMY,i,h.bTm,h.bPQ,h.bNj,h.bOi);VK(e,Be(b,0));e.bIo +=h;return g.bGI.length;}b=new BP;X(b);J(b);},B5l=N(),B5u=null,AZp=()=>{AZp=Z(B5l);EWZ();},D7o=a=>{return HL(E(913));},DEh=(a,b,c)=>{let d;AZp();d=DX(B5u,b,c);if(EZ(d))return (CU(d,1)).bGI.length;return 0;},E$k=(a,b,c,d,e)=>{let f,g,h,i;AZp();f=DX(B5u,c,d);if(EZ(f)){g=CU(f,2);h=XW(CU(f,3),1.0);if(BO(FS(g),E(8338)))g=CC(g,4);b=Ye(g,E(1268));c=e.bOc;i=e.bRd;A2Y();b=DqN(i,b,A9J,0,h,null);U(c,b);return (CU(f,1)).bGI.length;}b=new BP;X(b);J(b);},EWZ=()=>{B5u=Dm(E(8339));},BMU=N(),BJd=null,A3F=()=>{A3F=Z(BMU);ErE();},EQy +=a=>{return HL(E(8340));},Fwk=(a,b,c)=>{let d;A3F();d=DX(BJd,b,c);if(EZ(d))return (CU(d,1)).bGI.length;return 0;},EAh=(a,b,c,d,e)=>{let f;A3F();f=DX(BJd,c,d);if(EZ(f)){CU(f,2);XW(CU(f,3),3.0);c=new BV;Bp(c,E(8341));J(c);}b=new BP;X(b);J(b);},ErE=()=>{BJd=Dm(E(8342));},BLd=N(),BOZ=null,A6C=()=>{A6C=Z(BLd);DPw();},Ev4=a=>{return Bv(BB(Bi,[E(8343),E(8344)]));},DIz=(a,b,c)=>{let d;A6C();d=DX(BOZ,b,c);if(EZ(d))return (CU(d,1)).bGI.length;return 0;},DPd=(a,b,c,d,e)=>{let f,g,h,i,j,k;A6C();f=DX(BOZ,c,d);if(EZ(f)){g +=CU(f,2);h=CU(f,3);i=XW(CU(f,4),1.0);j=BZL(CU(f,4));if(g===null)g=j;k=null;if(g!==null)k=Eu(e.bRd.ly(),g);g=CPF(h);if(g!==null){h=e.bOc;b=CC9(k,i,g,e.bIo,null);U(h,b);}return (CU(f,1)).bGI.length;}b=new BP;X(b);J(b);},DPw=()=>{BOZ=Dm(E(8345));},BUX=N(),B0Q=null,A3q=()=>{A3q=Z(BUX);Ej4();},EqZ=a=>{return Bv(BB(Bi,[E(8343),E(8346)]));},Dr0=()=>{A3q();return new BUX;},CNo=(a,b,c)=>{let d;A3q();d=DX(B0Q,b,c);if(EZ(d))return (CU(d,1)).bGI.length;return 0;},C5w=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,$$je;A3q();f=DX(B0Q, +c,d);if(EZ(f)){if(e!==null){g=CU(f,2);h=CU(f,3);i=XW(CU(f,4),1.0);j=BZL(CU(f,4));if(g===null)g=j;BOt();c=FS(h);if(!B01&&!(!(ENz()?1:0)&&!Brr(E(8347))))B01=1;b=Fe(EoW(Cq(c)));if(b!==null)c=b;if(Fe(C$P(Cq(c)))===null)b=null;else{b=new BZl;k=Eq(c,59);if(k==(-1))b.c4m=null;else{b.c4m=CC(c,k+1|0);c=B_(c,0,k);}b.c1T=c;}if(b===null){b=e.bOc;c=new S;T(c);Bb(c,191);Bb(H(c,h),63);j=Q(c);c=e.bIo;Go();c=ARo(c,AU8);AGo();e=new Qf;g=null;h=ASy;ATF(e,j,c,g,h,h,0);U(b,e);}else{a:{if(g===null)c=null;else if(!(!Bj(g,E(8348)) +&&!Bj(g,E(8349))&&!Bj(g,E(8350))))c=e.bIo.bI2;else{b:{try{c=DV(e.bRd.ly(),g);break a;}catch($$e){$$je=P($$e);if($$je instanceof J1){break b;}else{throw $$e;}}}c=null;}}g=e.bOc;h=new Ccq;l=BPj(e.bIo);h.c6b=b;h.ciz=i*l/24.0;h.cNh=c;U(g,h);}}return (CU(f,1)).bGI.length;}b=new BP;X(b);J(b);},Ej4=()=>{B0Q=Dm(E(8351));},BRA=N(),BUj=null,A1x=()=>{A1x=Z(BRA);DAY();},DAn=a=>{return HL(E(8352));},DJl=(a,b,c)=>{let d;A1x();d=DX(BUj,b,c);if(EZ(d))return (CU(d,1)).bGI.length;return 0;},DPM=(a,b,c,d,e)=>{let f,g,$$je;A1x();f +=DX(BUj,c,d);if(EZ(f)){g=CU(f,2);a:{b:{try{A4R(new AWf,g,E$O(g));break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){b=$$je;break b;}else{throw $$e;}}}GP(b);b=new CpD;b.dcg=g;Kh(b);A4R(new AWf,g,null);}return (CU(f,1)).bGI.length;}b=new BP;X(b);J(b);},DAY=()=>{BUj=Dm(E(8353));},B4c=N(),B2E=null,AZY=()=>{AZY=Z(B4c);ETC();},EWK=a=>{return HL(E(8354));},Fh$=(a,b,c)=>{let d;AZY();d=DX(B2E,b,c);if(EZ(d))return (CU(d,1)).bGI.length;return 0;},DKy=(a,b,c,d,e)=>{let f,g,$$je;AZY();f=DX(B2E,c,d);if(EZ(f)){g=CU(f, +2);a:{b:{try{A4R(new AWf,g,DsC(g));break a;}catch($$e){$$je=P($$e);if($$je instanceof Dt){b=$$je;break b;}else{throw $$e;}}}GP(b);b=new B_m;b.dcG=g;Kh(b);A4R(new AWf,g,null);}return (CU(f,1)).bGI.length;}b=new BP;X(b);J(b);},ETC=()=>{B2E=Dm(E(8355));},BDU=N(),B7B=null,AY6=()=>{AY6=Z(BDU);E3O();}; +let E4o=a=>{return Bv(BB(Bi,[E(8343),E(8356)]));},Ear=(a,b,c)=>{let d;AY6();d=DX(B7B,b,c);if(EZ(d))return (CU(d,1)).bGI.length;return 0;},Evv=(a,b,c,d,e)=>{let f,g,h,i,j,k;AY6();f=DX(B7B,c,d);if(EZ(f)){g=e.bIo;h=CU(f,3);i=XW(CU(f,4),1.0)*BPj(g)/13.0;j=CU(f,2);if(j===null)j=BZL(CU(f,4));k=null;if(j!==null)k=Eu(e.bRd.ly(),j);j=e.bRd.Bk(h);if(j!==null){c=e.bIo;Lx();b=!AJ0(c,Wz)?null:e.bIo.bMY;c=e.bOc;h=Cg_(e.bIo.bI2,k,i,j,null,b);U(c,h);}return (CU(f,1)).bGI.length;}b=new BP;X(b);J(b);},E3O=()=>{B7B=Dm(E(8357));},BCg +=N(),BL1=null,A$r=()=>{A$r=Z(BCg);EKm();},EkN=a=>{return HL(E(921));},EU6=(a,b,c)=>{let d;A$r();d=DX(BL1,b,c);if(EZ(d))return (CU(d,1)).bGI.length;return 0;},FdF=(a,b,c,d,e)=>{let f,g,h;A$r();f=DX(BL1,c,d);if(EZ(f)){g=CZ(CU(f,2));b=e.bOc;h=g;c=new Dsz;c.cWx=h;U(b,c);return (CU(f,1)).bGI.length;}b=new BP;X(b);J(b);},EKm=()=>{BL1=Dm(E(8358));}; +function BDZ(){F.call(this);this.cwh=null;} +let Dmf=null,Cms=null,Bsv=()=>{Bsv=Z(BDZ);EzV();},FxM=a=>{return HL(E(8331));},ESV=(a,b)=>{Bsv();a.cwh=b;},Cai=a=>{let b=new BDZ();ESV(b,a);return b;},DCh=(a,b,c)=>{let d;d=DX(a.cwh,b,c);if(EZ(d))return (CU(d,1)).bGI.length;return 0;},EMR=(a,b,c,d,e)=>{let f,g;f=DX(a.cwh,c,d);if(EZ(f)){g=e.bIo;e.bIo=B8T(g,CU(f,2));VK(e,CU(f,3));e.bIo=g;return (CU(f,1)).bGI.length;}b=new BP;X(b);J(b);},EzV=()=>{Dmf=Dm(E(8359));Cms=Dm(E(8360));}; +function CH_(){F.call(this);this.cuI=null;} +let DL$=a=>{return HL(E(1660));},EaP=(a,b,c)=>{let d;d=DX(a.cuI,b,c);if(EZ(d))return (CU(d,1)).bGI.length;return 0;},Fui=(a,b,c,d,e)=>{let f,g;f=DX(a.cuI,c,d);if(EZ(f)){g=e.bIo;e.bIo=B8T(g,e.bRd.bCS());VK(e,CU(f,2));e.bIo=g;return (CU(f,1)).bGI.length;}b=new BP;X(b);J(b);},BGO=N(),BB5=null,BaZ=()=>{BaZ=Z(BGO);D8t();},EZ$=a=>{return HL(E(404));},EQp=(a,b,c)=>{let d;BaZ();d=DX(BB5,b,c);if(EZ(d))return (CU(d,1)).bGI.length;return 0;},EOj=(a,b,c,d,e)=>{let f,g,h,i,j;BaZ();f=DX(BB5,c,d);if(EZ(f)){g=new FZ;b=e.bRd.qM(E(2248));FC();Gb(g, +b,FI);h=Gj(g,CU(f,1));b=e.bOc;c=e.bIo;e=e.bRd;AGo();if(c.bNj===null)c=C2y(c);else{Lx();c=C2y(AGm(c,Qn));}g=B4(e.gs(),h.ci$);if(I6(g)<=1)c=Dkl(h.ci$,h,c,e);else{i=Bk();g=(CWh(g)).dX();while(g.dY()){j=Dkl((g.dZ()).p(),h,c,e);U(i,j);}c=new CrM;c.cnW=i;}U(b,c);return (CU(f,1)).bGI.length;}b=new BP;X(b);J(b);},D8t=()=>{let b,c;b=Bo1();c=new S;T(c);Bb(H(H(c,E(8361)),b),41);BB5=Dm(Q(c));}; +function B6i(){F.call(this);this.cCO=null;} +let DiB=null,Fc_=null,B1z=()=>{B1z=Z(B6i);E6S();},Ep4=a=>{return HL(E(8362));},FbP=(a,b,c)=>{let d;d=DX(a.cCO,b,c);if(EZ(d))return (CU(d,1)).bGI.length;return 0;},D1k=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p,q;f=DX(a.cCO,c,d);if(EZ(f)){g=e.bIo;if(CU(f,2)===null)b=g;else{b=CU(f,2);A15();h=B1i();b=DX(Drz,b,0);while(EZ(b)){c=h.b7D;i=CU(b,1);j=Dl(CU(b,2));Qm(c,i,j);}b=new A7Y;c=g.bMU;k=g.bWM;i=g.bT0;j=g.bN5;l=g.bI2;m=g.bMY;n=g.bOK;o=g.bTm;p=B1i();q=p.b7D;o=o.b7D;BvE(q,o);q=p.b7D;o=h.b7D;BvE(q,o);Buu(b,c,k,i,j,l, +m,n,p,g.bPQ,g.bNj,g.bOi);}e.bIo=b;VK(e,CU(f,3));e.bIo=g;return (CU(f,1)).bGI.length;}b=new BP;X(b);J(b);},E6S=()=>{DiB=Dm(E(8363));Fc_=Dm(E(8364));},CMZ=N(),FhO=(a,b)=>{AXA();return Bk();}; +function CxH(){let a=this;Be3.call(a);a.cIa=null;a.cs4=null;} +function Crc(){let a=this;F.call(a);a.cOa=null;a.cOb=null;} +function Dh0(){let a=this;F.call(a);a.bPU=0.0;a.bSj=0.0;} +let EqY=(a,b,c)=>{let d,e;if(b>=c){d=new Bt;e=new S;T(e);D6(H(D6(H(e,E(8365)),b),E(8366)),c);Bp(d,Q(e));J(d);}a.bPU=b;a.bSj=c;},CnW=(a,b)=>{let c=new Dh0();EqY(c,a,b);return c;},E2P=a=>{let b,c,d,e;b=a.bPU;c=a.bSj;d=new S;T(d);Bb(d,40);e=D6(d,b);Bb(e,44);Bb(D6(e,c),41);return Q(d);},CB5=a=>{return a.bSj-a.bPU;},Bks=(a,b)=>{return !(b>=a.bPU&&b<=a.bSj)?0:1;},Ff6=(a,b)=>{let c,d;b=b;c=a.bPU;d=b.bPU;return cd)?0:1;}; +function BPP(){let a=this;F.call(a);a.bWB=null;a.b4q=null;} +let CiV=(a,b,c)=>{a.bWB=b;a.b4q=c;},Cz4=(a,b)=>{let c=new BPP();CiV(c,a,b);return c;},EMS=a=>{let b,c,d;b=a.bWB;c=a.b4q;d=new S;T(d);b=H(d,b);Bb(b,61);H(b,c);return Q(d);}; +function CS5(){let a=this;F.call(a);a.cku=null;a.c5F=null;} +let AG4=a=>{return It(a.cku,a.c5F.cjo)>0?0:1;},AH0=a=>{let b;b=a.cku;a.cku=Ep(b,V(1));return b;}; +function Cnp(){F.call(this);this.c9u=null;} +function Cnq(){F.call(this);this.ddt=null;} +function CNU(){F.call(this);this.ckm=null;} +let EEZ=(a,b,c)=>{let d,e,f;d=A6c(a.ckm.bS$.caF,b,c);e=A6c(a.ckm.b8I,b,c);f=A6c(a.ckm.ckc,b,c);if(d.bGI.length>=e.bGI.length&&d.bGI.length>=f.bGI.length)return d;if(e.bGI.length>=f.bGI.length&&e.bGI.length>=d.bGI.length)return e;return f;}; +function CV6(){F.call(this);this.daS=null;} +function CV4(){F.call(this);this.de3=null;} +function CVQ(){F.call(this);this.c_f=null;} +function CVP(){let a=this;F.call(a);a.ddq=null;a.ddr=null;} +let CVN=N(); +function CVM(){let a=this;F.call(a);a.dc6=null;a.dc5=null;} +function CoW(){F.call(this);this.cNn=null;} +let EoY=a=>{return -a.cNn.clo.bB5();}; +function CcP(){let a=this;F.call(a);a.cHE=null;a.cwi=0;a.ddZ=null;a.c1K=null;a.cTM=null;} +let C0s=a=>{let b,c;b=a.cwi;if(b>0){a.cwi=b-1|0;c=a.cTM.bAY(a.cHE,a.c1K);a.cHE=c.bTl;return c;}c=new BP;Bp(c,E(8367));J(c);}; +function DjK(){let a=this;FK.call(a);a.bWJ=null;a.cP8=0;a.c7J=null;a.c44=null;a.cY_=0;} +let Ejz=a=>{return a.c44;},Fnl=(a,b,c,d,e,f,g,h)=>{let i;a.bWJ=Fj();a.c7J=e;a.cP8=d;a.c44=BA(b.bGK,b.bGL);a.cY_=h;c=Qr(a,c);BQ(a.bWJ,0.0,0.0);e=a.bWJ;i= -f|0;BQ(e,i, -g|0);BQ(a.bWJ,i,g);BQ(a.bWJ,0.0,0.0);ADm(a.bWJ,c+1.5707963267948966);a.bWJ=Xz(a.bWJ,b.bGK,b.bGL);},C9i=(a,b,c,d,e,f,g)=>{let h=new DjK();Fnl(h,a,b,c,d,e,f,g);return h;},DJG=(a,b)=>{let c;c=a.c7J;if(c!==null)b=b.h2(c.gA());else if(a.cP8)b=b.h2(AET(b));b.hP(a.bWJ);},Epv=a=>{return a.cY_;}; +function CBT(){let a=this;FK.call(a);a.c_g=6.0;a.cXD=null;a.cRx=null;} +let E9F=(a,b)=>{(((b.h2(Cc(a.cRx))).h2(Dw(1.5))).h2(Bh((-6.0),(-6.0)))).hP(a.cXD);}; +function CUf(){let a=this;FK.call(a);a.csy=null;a.crv=0.0;a.ckB=null;a.c9w=6.0;a.cZL=null;a.c9x=10.0;a.cSN=null;a.cLd=null;} +let DFC=(a,b)=>{let c,d;c=a.ckB;AJ9();if(c===AKM)(((b.h2(a.csy)).h2(Cc(a.csy))).h2(Bh((-10.0),(-10.0)))).hP(a.cSN);b=(b.h2(Cc(a.cLd))).h2(Dw(1.5));d=a.ckB;if(!(d!==A0j&&d!==AKM)){d=ALP(20.0,20.0,a.crv,90.0);((b.h2(Cc(E4()))).h2(Bh((-10.0),(-10.0)))).hP(d);}d=a.ckB;if(!(d!==Be5&&d!==AKM)){c=ALP(20.0,20.0,a.crv+180.0,90.0);((b.h2(Cc(E4()))).h2(Bh((-10.0),(-10.0)))).hP(c);}(b.h2(Bh((-6.0),(-6.0)))).hP(a.cZL);}; +function C_W(){let a=this;FK.call(a);a.dbx=6.0;a.dbN=10.0;a.ckW=0.0;a.c0o=0;} +let EqW=(a,b)=>{let c,d,e,f,g,h;b=b.h2(Dw(1.5));c=!a.c0o?135.0:(-45.0);(b.h2(Bh((-6.0),(-6.0)))).hP(ALP(12.0,12.0,a.ckW+c,180.0));d=H0(Dfb(a.ckW+c));e=G4(Dfb(a.ckW+c));f=b.h2(Bh(6.0*e,6.0* -d));g=new SA;h=10.0*d;c=10.0*e;A$K(g,h,c);f.hP(g);(b.h2(Bh(6.0* -e,6.0*d))).hP(EB(h,c));}; +function AFx(){let a=this;F.call(a);a.bIU=null;a.bUZ=null;a.bY7=null;a.bUf=null;a.bQr=null;a.b1f=null;a.bZn=null;a.b5Z=null;} +let BbS=(a,b,c)=>{let d,e,f,g,h,i,j,k;d=new AFx;e=a.b5Z;f=a.bUZ;g=a.bUf;h=a.bY7;i=a.bIU;j=CVO(i);k=i.b7Y;if(k===null)j.b7Y=Bh(b,c);else j.b7Y=DJ(k,Bh(b,c));j.bH0=i.bH0;j.ce8=1;i.ce8=1;AR$(d,e,f,g,h,j,a.b1f,a.bZn,a.bQr);return d;},CUa=a=>{let b;b=a.bIU;if(IB(b)>0){b=new BP;X(b);J(b);}b.caS=1;return a;},SG=(a,b)=>{return B7p(a.b5Z,a.bUZ,a.bUf,a.bY7,a.bIU,a.b1f,b,a.bQr);},Vg=(a,b)=>{return B7p(a.b5Z,a.bUZ,a.bUf,a.bY7,a.bIU,b,a.bZn,a.bQr);},Iv=(a,b,c)=>{if(b!==null)a.bQr.g(CqQ(b,null,c));return a;},AMR=(a,b,c)=> +{if(b!==null){GO();if(b!==HD)a.bQr.g(CqQ(b,c,null));}return a;},Wf=(b,c)=>{let d,e,f,g,h;d=b.cp();B8();e=B0(d,Bhx);f=new AFx;g=null;d=null;h=BPX(e,b.a$c());Oc();AR$(f,b,g,c,d,h,AHc,null,Bk());return f;},D8=(b,c,d)=>{let e,f,g,h,i;e=b.cp();B8();f=B0(e,Bhx);g=new AFx;h=null;i=BPX(f,b.a$c());Oc();AR$(g,b,h,c,d,i,AHc,null,Bk());return g;},AR$=(a,b,c,d,e,f,g,h,i)=>{if(NN(B$(d))){a.b5Z=b;a.bIU=f;a.bQr=B$(i);a.bZn=h;a.bUZ=c;a.bY7=e;a.bUf=d;a.b1f=g;return;}b=new Bt;X(b);J(b);},B7p=(a,b,c,d,e,f,g,h)=>{let i=new AFx();AR$(i, +a,b,c,d,e,f,g,h);return i;},Ci=(a,b,c)=>{ATj(a.bIU,b,c);},Dv=(a,b)=>{Ci(a,b.bGK,b.bGL);},CBA=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;if(NN(a.bUf)<=1){Ci7(a.bIU,a.bUZ,b,(DcY(a.bUf)).cf(0),1.5,a.bZn,a.bY7);C1U(a,b);}else{c=DcY(a.bUf);d=a.bUf.cTL;e=2+d|0;f=A0u(a.bIU);g=CLm(f);if(g!==null)h=DiG(g,e);else{h=Cco();i=0;while(i<(f.bGI.length-1|0)){j=DiG(CLm(B_(f,i,i+2|0)),e);if(!i){k=h.bLX;l=Be(j.bLX,0);U(k,l);}else{k=Cgj(h);g=Be(j.bLX,0);if(!(!(k.bHj!==g.bHj&&k.bHu!==g.bHu)?1:0)){g=Cco();l=Br(j.bLX);while(Bq(l)) +{k=Bm(l);j=g.bLX;k=BQX(k);U(j,k);}j=g;}}k=h.bLX;g=Be(j.bLX,1);U(k,g);if(i==(f.bGI.length-2|0)){g=h.bLX;k=Be(j.bLX,2);U(g,k);}i=i+1|0;}}if(!(!((Be(h.bLX,0)).bHj<0.0)?0:1))f=c;else{f=E2(c);BzY(f);}m=(-1.0)*(f.dV()-1|0)/2.0;c=a.bIU;g=DfA(Be(h.bLX,0),m);n=g.bHj;o=g.bHu;p=QE(n,0.0);if(p&&o!==0.0){b=new Bt;c=BY(g);h=new S;T(h);H(H(h,E(8368)),c);Bp(b,Q(h));J(b);}g=BzI(c.b5z,c.b7l,IB(c));q=(Fk(c,0)).bGK;r=(Fk(c,0)).bGL;s=(Fk(c,1)).bGK;t=(Fk(c,1)).bGL;if(p&&q===s)s=s+n;if(o!==0.0&&r===t)t=t+o;ATj(g,q+n,r+o);ATj(g,s, +t);p=2;while(p2)g=Eyl(g,DfA(Cgj(h),m));p=0;while(p{let c,d,e;c=a.bQr.dX();while(c.dY()){d=c.dZ();if(C7Z(d,b.hE())){e=Das(a,b.hE(),d);d.cdi.cC(b.h2(I3(e)));}}},Das=(a,b,c)=>{let d,e,f,g,h,i,j;d=Fk(a.bIU,0);e=Fk(a.bIU,1);f=c.cdi.cF(b);g=BC(d.bGK,e.bGK)+4.0;h +=!(!BO(A0u(a.bIU),E(8369))&&!BO(A0u(a.bIU),E(8370)))?1:0;i=(d.bGL+e.bGL)/2.0-f.bGF/2.0;b=c.cWB;Fa();if(b===Pe){g=Cxn(a.bIU);b=a.bIU;i=(Fk(b,0)).bGL;d=Br(b.bH0);while(Bq(d)){i=BC(i,(ARz(b,Bm(d))).bGL);}}else if(b===Hg){g=Cxn(a.bIU);i=((ClB(a.bIU)).bGL+(B7E(a.bIU)).bGL-10.0)/2.0-f.bGF/2.0;}else{b=c.c4p;B3();if(b===CO&&h){j=Fk(a.bIU,2);g=(e.bGK+j.bGK)/2.0-f.bGE/2.0;}else if(b===Ft&&h)g=BC(d.bGK,e.bGK)-f.bGE-4.0;else if(Bj(A0u(a.bIU),E(8371))){g=BC(d.bGK,e.bGK);i=(d.bGL+(Fk(a.bIU,2)).bGL)/2.0-f.bGF/2.0;}else if +(Bj(A0u(a.bIU),E(8372))){g=Eh(d.bGK,e.bGK);i=(d.bGL+(Fk(a.bIU,2)).bGL)/2.0-f.bGF/2.0;}}return BA(g,i);},BH_=a=>{return Fk(a.bIU,0);},BAR=a=>{let b;b=a.bIU;return Fk(b,IB(b)-1|0);},BmZ=(b,c)=>{return !(Jy(b,c)<0.001)?0:1;},CGO=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n;d=a.b1f;e=b.b1f;f=DT(d.bGO,e.bGO);Oc();g=(Cda.b2()).data[f];if(g!==AS7){d=b.bQr.dX();while(true){if(!d.dY()){if(BmZ(BAR(a),BH_(b))){d=b.bY7;if(d===null)d=a.bY7;if(a.bUZ===null&&b.bUZ===null){e=E2(a.bQr);c=b.bQr;Ea(e,c);h=new AFx;i=a.b5Z;c=null;j=a.bUf;k +=a.bIU;l=b.bIU;if(BmZ(B7E(k),ClB(l))){m=BzI(k.b5z,k.b7l,IB(k)+IB(l)|0);n=Br(k.bH0);while(Bq(n)){A5l(m,ARz(k,Bm(n)));}k=Br(l.bH0);while(Bq(k)){A5l(m,ARz(l,Bm(k)));}if(m.b7Y===null){Clz(m);while(true){f=0;a:{b:{while(f<(IB(m)-1|0)){if(ACI(m,f)===null)break b;f=f+1|0;}f=0;break a;}EJ(m.bH0,f);f=1;}f=f?1:0;c:{d:{if(!f){f=0;e:{f:{while(f<(IB(m)-2|0)){k=ACI(m,f);f=f+1|0;if(k===ACI(m,f))break f;}f=0;break e;}EJ(m.bH0,f);f=1;}if(!f)break d;}f=1;break c;}f=0;}f=!(!f&&!EI6(m))?1:0;f=!(!f&&!DBM(m))?1:0;f=!(!f&&!Evg(m)) +?1:0;f=!(!f&&!DUY(m))?1:0;f=!(!f&&!EQ6(m))?1:0;g:{h:{if(!f){f=0;i:{j:{while(f<(IB(m)-2|0)){k=ACI(m,f);f=f+1|0;if(k!==CKi(ACI(m,f))?0:1)break j;}f=0;break i;}EJ(m.bH0,f);f=1;}if(!f)break h;}f=1;break g;}f=0;}f=!(!f&&!FeE(m))?1:0;if(g===AHc)f=!(!f&&!D5m(m))?1:0;if(f)continue;else break;}k=a.bZn;if(k===null)k=b.bZn;AR$(h,i,c,j,d,m,g,k,e);return h;}b=new BV;X(b);J(b);}b=new Bt;X(b);J(b);}b=new BV;Bp(b,E(8373));J(b);}if(BmZ(BH_(a),BAR(b)))return CGO(b,a,c);return null;}if(C7Z(d.dZ(),c))break;}return null;}return null;}; +function Don(){let a=this;FK.call(a);a.bSs=null;a.cQd=0;a.c13=null;a.c7Z=null;} +let D1E=a=>{return a.c13;},EUB=(a,b,c,d)=>{a.bSs=Fj();a.cQd=d;a.c13=BA(b.bGK,b.bGL);c=Qr(a,c);BQ(a.bSs,0.0,0.0);BQ(a.bSs,(-6.0),(-4.0));BQ(a.bSs,(-12.0),0.0);BQ(a.bSs,(-6.0),4.0);BQ(a.bSs,0.0,0.0);ADm(a.bSs,c+1.5707963267948966);a.c7Z=BQX(I3(BV_(a.bSs,2)));a.bSs=Xz(a.bSs,b.bGK,b.bGL);},Dia=(a,b,c)=>{let d=new Don();EUB(d,a,b,c);return d;},E_g=(a,b)=>{(a.cQd?b.h2(AET(b)):b.h2(Cc(E4()))).hP(a.bSs);},EF8=a=>{return 12.0;}; +function CP2(){let a=this;FK.call(a);a.bSN=null;a.c5n=null;} +let Fmw=a=>{return a.c5n;},FbA=(a,b,c)=>{let d,e,f,g,h,i;a.bSN=EE();a.c5n=BA(b.bGK,b.bGL);d=Qr(a,c);Ec(a.bSN,(-4.0),0.0);B2(a.bSN,4.0,8.0);Ec(a.bSN,4.0,0.0);B2(a.bSN,(-4.0),8.0);e=A6x(a.bSN,0.0,5.0);a.bSN=e;c=d+3.141592653589793;f=A$4(e.cja,e.cgL);g=Br(e.bXc);while(true){if(!Bq(g)){a.bSN=f;a.bSN=A6x(f,b.bGK,b.bGL);return;}e=Bm(g);h=e.bLy.data;if(h.length!=2)break;i=H4(BA(h[0],h[1]),U8(c));BnS(f,A7b(Gh([i.bGK,i.bGL]),e.bO7));}b=new BV;X(b);J(b);},C5x=(a,b)=>{let c=new CP2();FbA(c,a,b);return c;},Dyg=(a,b)=>{b.hP(a.bSN);},DPU +=a=>{return 8.0;}; +function AZn(){let a=this;FK.call(a);a.cdF=null;a.cVe=null;a.cLx=null;} +let EW7=a=>{return a.cLx;},Ctd=(b,c,d,e,f)=>{let g;g=BsN(c,d);BBf(g,e);c=g.bTS+f.bGK;g.bTS=c;d=g.bTR+f.bGL;g.bTR=d;BQ(b,c,d);},CHL=(a,b,c,d)=>{a.cVe=Cc(d);a.cLx=BA(b.bGK,b.bGL);c=Qr(a,c);d=Fj();a.cdF=d;ADG(d,b);Ctd(a.cdF,(-19.0),(-7.0),c,b);Ctd(a.cdF,(-19.0),7.0,c,b);ADG(a.cdF,b);},CH5=(a,b)=>{(b.h2(a.cVe)).hP(a.cdF);},DVG=a=>{return 18.0;}; +function B9E(){let a=this;AZn.call(a);a.c0d=null;a.cWz=null;a.c28=null;} +let EcR=(a,b,c,d)=>{let e,f;CHL(a,b,c,d);a.c0d=Dw(2.0);e=BsN((-22.8),(-7.0));f=BsN((-22.8),7.0);BBf(e,c);BBf(f,c);a.c28=EB(f.bTS-e.bTS,f.bTR-e.bTR);a.cWz=CUq(e,b);},CVI=(a,b,c)=>{let d=new B9E();EcR(d,a,b,c);return d;},DBx=(a,b)=>{CH5(a,b);((b.h2(a.c0d)).h2(a.cWz)).hP(a.c28);}; +function Do_(){let a=this;AZn.call(a);a.cYh=null;a.cYg=null;a.cs_=null;} +let DqE=(b,c,d,e,f)=>{let g;g=BsN(b,c);BBf(g,d);g.bTS=g.bTS-e;g.bTR=g.bTR-e;return CUq(g,f);},D7u=(a,b,c,d)=>{CHL(a,b,c,d);a.cYh=DqE((-24.7),(-5.0),c,2.0,b);a.cYg=DqE((-24.7),5.0,c,2.0,b);a.cs_=Fz(4.0,4.0);},Dqw=(a,b,c)=>{let d=new Do_();D7u(d,a,b,c);return d;},D0g=(a,b)=>{CH5(a,b);if((b.gy()).gz()!==null)b=b.h2(Cc((b.gy()).gz()));(b.h2(a.cYh)).hP(a.cs_);(b.h2(a.cYg)).hP(a.cs_);}; +function C1p(){let a=this;FK.call(a);a.b_C=null;a.cLm=0.0;a.cvT=null;} +let FcS=a=>{return a.b_C;},Exg=(a,b,c,d)=>{a.b_C=BA(b.bGK,b.bGL);c=c+1.5707963267948966;a.cLm=Qr(a,c);a.cvT=d;},Ceg=(a,b,c)=>{let d=new C1p();Exg(d,a,b,c);return d;},Ey3=a=>{return 8.0;},DKb=(a,b)=>{let c,d,e,f,g;c=U8(a.cLm);d=BA(0.0,0.0);e=BA(0.0,(-8.0));f=BA((-8.0),0.0);g=BA(0.0,8.0);e=H4(e,c);f=H4(f,c);c=H4(g,c);g=a.cvT;AFB();if(g!==BAq&&g!==A9i){g=e;e=c;}else{g=BA(d.bGK,e.bGL);e=BA(d.bGK,c.bGL);}c=a.cvT;if(c!==A_T&&c!==A4Y){c=g;g=e;}else{c=BA(g.bGK,d.bGL);g=BA(e.bGK,d.bGL);}e=a.b_C;BTq(b,e.bGK,e.bGL,f,c);c +=a.b_C;BTq(b,c.bGK,c.bGL,f,g);c=a.b_C;BTq(b,c.bGK,c.bGL,f,d);},BTq=(b,c,d,e,f)=>{let g,h,i,j;g=f.bGK;h=e.bGK;g=g-h;i=f.bGL;j=e.bGL;i=i-j;(b.h2(Bh(c+h,d+j))).hP(EB(g,i));}; +function Dcr(){let a=this;FK.call(a);a.b5b=null;a.cVL=0.0;a.c$3=4.0;} +let ED8=a=>{return a.b5b;},EA_=(a,b,c)=>{a.c$3=4.0;a.b5b=BA(b.bGK,b.bGL);c=c+1.5707963267948966;a.cVL=Qr(a,c);},Cr2=(a,b)=>{let c=new Dcr();EA_(c,a,b);return c;},E1U=(a,b)=>{let c,d,e,f,g,h;c=U8(a.cVL);d=BA(0.0,0.0);e=BA(0.0,(-6.0));f=BA((-8.0),0.0);g=BA(0.0,6.0);h=BA((-14.0),0.0);e=H4(e,c);f=H4(f,c);g=H4(g,c);c=H4(h,c);h=a.b5b;B5N(b,h.bGK,h.bGL,f,e);h=a.b5b;B5N(b,h.bGK,h.bGL,f,g);h=a.b5b;B5N(b,h.bGK,h.bGL,f,d);d=new FG;h=a.b5b;Hs(d,h.bGK+c.bGK-4.0,h.bGL+c.bGL-4.0);(b.h2(d)).hP(Fz(8.0,8.0));},B5N=(b,c,d,e,f)=> +{let g,h,i,j;g=f.bGK;h=e.bGK;g=g-h;i=f.bGL;j=e.bGL;i=i-j;(b.h2(Bh(c+h,d+j))).hP(EB(g,i));},EAM=a=>{return 18.0;}; +function C4P(){let a=this;FK.call(a);a.ccw=null;a.cNv=0.0;} +let EJo=a=>{return a.ccw;},Ezt=(a,b,c)=>{a.ccw=BA(b.bGK,b.bGL);c=c+1.5707963267948966;a.cNv=Qr(a,c);},CFF=(a,b)=>{let c=new C4P();Ezt(c,a,b);return c;},ElU=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=((b.gy()).i9()).bJw;d=4.0+c-1.0;e=U8(a.cNv);f=BA(0.0,0.0);g=new Jn;h=(-4.0)-d-3.0;Kz(g,h,0.0);i=BA(h,0.0);j=BA((-4.0), -d);k=BA((-4.0),d);j=H4(j,e);k=H4(k,e);l=H4(g,e);e=H4(i,e);i=a.ccw;CE2(b,i.bGK,i.bGL,l,f);l=Dw(c);i=new FG;f=a.ccw;Hs(i,f.bGK+e.bGK-d,f.bGL+e.bGL-d);i=(b.h2(i)).h2(l);m=2.0*d;i.hP(Fz(m,m));b=b.h2(l);i= +a.ccw;CE2(b,i.bGK,i.bGL,j,k);},CE2=(b,c,d,e,f)=>{let g,h,i,j;g=f.bGK;h=e.bGK;g=g-h;i=f.bGL;j=e.bGL;i=i-j;(b.h2(Bh(c+h,d+j))).hP(EB(g,i));},E$n=a=>{return 15.0;}; +function Drs(){let a=this;FK.call(a);a.cae=null;a.c4N=0.0;a.ddb=4.0;} +let FbB=a=>{return a.cae;},Fb5=(a,b,c)=>{a.ddb=4.0;a.cae=BA(b.bGK,b.bGL);c=c+1.5707963267948966;a.c4N=Qr(a,c);},CBm=(a,b)=>{let c=new Drs();Fb5(c,a,b);return c;},E9J=(a,b)=>{let c,d,e,f,g,h,i;c=U8(a.c4N);d=BA((-4.0),(-4.0));e=BA((-4.0),4.0);f=BA((-7.0),(-4.0));g=BA((-7.0),4.0);h=BA(0.0,0.0);i=BA((-8.0),0.0);h=H4(h,c);i=H4(i,c);d=H4(d,c);e=H4(e,c);f=H4(f,c);c=H4(g,c);g=a.cae;BGh(b,g.bGK,g.bGL,d,e);g=a.cae;BGh(b,g.bGK,g.bGL,f,c);c=a.cae;BGh(b,c.bGK,c.bGL,i,h);},DU0=a=>{return 8.0;},BGh=(b,c,d,e,f)=>{let g,h,i, +j;g=f.bGK;h=e.bGK;g=g-h;i=f.bGL;j=e.bGL;i=i-j;(b.h2(Bh(c+h,d+j))).hP(EB(g,i));}; +function Cdf(){let a=this;FK.call(a);a.b30=null;a.c2E=0.0;a.c_O=4.0;} +let Et2=a=>{return a.b30;},Ds0=(a,b,c)=>{a.c_O=4.0;a.b30=BA(b.bGK,b.bGL);c=c+1.5707963267948966;a.c2E=Qr(a,c);},CDa=(a,b)=>{let c=new Cdf();Ds0(c,a,b);return c;},EC4=(a,b)=>{let c,d,e,f,g,h,i;c=U8(a.c2E);d=BA(0.0,0.0);e=BA(0.0,(-6.0));f=BA((-8.0),0.0);g=BA((-10.0),(-4.0));h=BA((-10.0),4.0);i=BA(0.0,6.0);e=H4(e,c);f=H4(f,c);i=H4(i,c);g=H4(g,c);c=H4(h,c);h=a.b30;Bme(b,h.bGK,h.bGL,f,e);h=a.b30;Bme(b,h.bGK,h.bGL,f,i);h=a.b30;Bme(b,h.bGK,h.bGL,f,d);h=a.b30;Bme(b,h.bGK,h.bGL,g,c);},Bme=(b,c,d,e,f)=>{let g,h,i,j;g +=f.bGK;h=e.bGK;g=g-h;i=f.bGL;j=e.bGL;i=i-j;(b.h2(Bh(c+h,d+j))).hP(EB(g,i));},E60=a=>{return 8.0;}; +function C0N(){let a=this;FK.call(a);a.bT4=null;a.cPz=null;a.cPI=null;a.deD=5.0;a.c1j=null;} +let EpF=a=>{return a.cPz;},D$q=(a,b,c,d)=>{let e,f;a.bT4=Fj();a.deD=5.0;e=Qr(a,c);BQ(a.bT4,0.0,0.0);a.c1j=d;a.cPI=BA(b.bGK,b.bGL);BQ(a.bT4,(-9.0),(-4.0));BQ(a.bT4,(-5.0),0.0);BQ(a.bT4,(-9.0),4.0);BQ(a.bT4,0.0,0.0);d=a.bT4;f=e+1.5707963267948966;ADm(d,f);a.bT4=Xz(a.bT4,b.bGK+5.0*H0(e),b.bGL-5.0*G4(e));a.cPz=BA(b.bGK-5.0*G4(f),b.bGL-5.0*H0(f));},C88=(a,b,c)=>{let d=new C0N();D$q(d,a,b,c);return d;},ENc=(a,b)=>{let c,d;(b.h2(AET(b))).hP(a.bT4);b=(b.h2(Dw(1.5))).h2(Cc(a.c1j));c=new FG;d=a.cPI;Hs(c,d.bGK-5.0,d.bGL +-5.0);(b.h2(c)).hP(Fz(10.0,10.0));}; +function CBy(){let a=this;FK.call(a);a.cu2=null;a.cJY=0;a.cYH=null;} +let Fel=a=>{return a.cu2;},C2j=(b,c,d,e)=>{let f,g,h,i;f=new CBy;g=b.bGK;h=b.bGL;b=new Jn;i=d+1.5707963267948966;Kz(b,g-6.0*G4(i),h-6.0*H0(i));f.cu2=b;f.cYH=e;f.cJY=c;return f;},Enc=(a,b)=>{let c,d;b=b.h2(Dw(1.5));b=a.cJY?b.h2(AET(b)):b.h2(Cc(a.cYH));c=new FG;d=a.cu2;Hs(c,d.bGK-6.0,d.bGL-6.0);(b.h2(c)).hP(Fz(12.0,12.0));},EF1=a=>{return 12.0;}; +function Dr8(){let a=this;FK.call(a);a.c8N=0.0;a.c8O=0.0;a.co3=null;a.c_v=6.0;a.dex=10.0;a.cKo=0.0;a.cKR=null;} +let Dzf=a=>{return a.co3;},Eze=(a,b,c,d)=>{let e,f;a.c_v=6.0;a.dex=10.0;e=b.bGK;a.c8N=e-6.0;f=b.bGL;a.c8O=f-6.0;a.co3=BA(e,f);a.cKo=c;a.cKR=d;},CeW=(a,b,c)=>{let d=new Dr8();Eze(d,a,b,c);return d;},DwY=(a,b)=>{let c,d,e,f;b=(b.h2(Dw(1.5))).h2(Cc(a.cKR));c=new FG;d=a.co3;Hs(c,d.bGK-6.0,d.bGL-6.0);(b.h2(c)).hP(Fz(12.0,12.0));e= -a.cKo*180.0/3.141592653589793+90.0-45.0;c=ALP(20.0,20.0,e,90.0);d=new FG;f=a.co3;Hs(d,f.bGK-10.0,f.bGL-10.0);(b.h2(d)).hP(c);},DZg=a=>{return 10.0;}; +function CLW(){let a=this;FK.call(a);a.cJg=null;a.c_P=9.0;a.cQu=0.0;a.c7X=70.0;} +let DyZ=(a,b,c)=>{a.c_P=9.0;a.c7X=70.0;a.cJg=BA(b.bGK,b.bGL);a.cQu=c;},Dlc=(a,b)=>{let c=new CLW();DyZ(c,a,b);return c;},EZV=a=>{return a.cJg;},ECs=(a,b)=>{let c,d,e,f;c= -a.cQu*180.0/3.141592653589793+90.0-70.0;d=ALP(18.0,18.0,c,140.0);b=b.h2(Dw(1.5));e=new FG;f=a.cJg;Hs(e,f.bGK-9.0,f.bGL-9.0);(b.h2(e)).hP(d);},E4U=a=>{return 10.0;}; +function CA4(){let a=this;FK.call(a);a.c0Y=null;a.csE=null;a.dde=5.0;} +let Euy=a=>{return a.csE;},DLF=(a,b,c)=>{a.dde=5.0;a.csE=BA(b.bGK,b.bGL);a.c0Y=c;},Dse=(a,b)=>{let c=new CA4();DLF(c,a,b);return c;},EDp=(a,b)=>{let c,d;b=(b.h2(Dw(1.5))).h2(Cc(a.c0Y));c=new FG;d=a.csE;Hs(c,d.bGK-5.0,d.bGL-5.0);(b.h2(c)).hP(C2(10.0,10.0));},Ex8=a=>{return 5.0;}; +function Cg3(){let a=this;FK.call(a);a.cNN=0.0;a.cNM=0.0;a.cqO=null;a.da1=7.0;a.cTQ=null;} +let Ezg=a=>{return a.cqO;},EC_=(a,b,c)=>{let d,e;a.da1=7.0;d=b.bGK;a.cNN=d-7.0;e=b.bGL;a.cNM=e-7.0;a.cqO=BA(d,e);a.cTQ=c;},Cky=(a,b)=>{let c=new Cg3();EC_(c,a,b);return c;},EuN=(a,b)=>{let c,d,e;b=b.h2(Cc(a.cTQ));c=b.h2(Dw(1.5));d=new FG;e=a.cqO;Hs(d,e.bGK-7.0,e.bGL-7.0);(c.h2(d)).hP(Fz(14.0,14.0));Cqb(b,0.0,0.0,BvV(a,0.7853981633974483),BvV(a,3.9269908169872414));Cqb(b,0.0,0.0,BvV(a,(-0.7853981633974483)),BvV(a,2.356194490192345));},BvV=(a,b)=>{return BA(a.cNN+7.0+7.0*G4(b),a.cNM+7.0+7.0*H0(b));},Cqb=(b,c, +d,e,f)=>{let g,h,i,j;g=f.bGK;h=e.bGK;g=g-h;i=f.bGL;j=e.bGL;i=i-j;(b.h2(Bh(c+h,d+j))).hP(EB(g,i));}; +function CXV(){let a=this;FK.call(a);a.cZ0=null;a.cjc=0.0;a.cjd=0.0;a.b81=0.0;a.c1O=null;} +let FiS=a=>{return BA(a.cjc,a.cjd);},DmO=(b,c,d)=>{let e,f;e=b.bGK-8.0+8.0*H0(c);f=b.bGL-8.0-8.0*G4(c);b=new CXV;b.b81=c;b.cZ0=Fz(16.0,16.0);b.cjc=e;b.cjd=f;b.c1O=d;return b;},D8j=(a,b)=>{((b.h2(Cc(a.c1O))).h2(Bh(a.cjc+0.0,a.cjd+0.0))).hP(a.cZ0);Djw(b,0.0,0.0,Bst(a,a.b81-1.5707963267948966),Bst(a,a.b81+1.5707963267948966));Djw(b,0.0,0.0,Bst(a,a.b81),Bst(a,a.b81+3.141592653589793));},Bst=(a,b)=>{return BA(a.cjc+8.0+8.0*G4(b),a.cjd+8.0+8.0*H0(b));},Djw=(b,c,d,e,f)=>{let g,h,i,j;g=f.bGK;h=e.bGK;g=g-h;i=f.bGL;j +=e.bGL;i=i-j;(b.h2(Bh(c+h,d+j))).hP(EB(g,i));},ESz=a=>{return 16.0;}; +function BLv(){let a=this;FK.call(a);a.ckf=null;a.cwQ=null;a.coa=null;} +let EvT=a=>{return a.coa;},ECL=(a,b)=>{let c;b=b.h2(AET(b));c=a.ckf;if(c!==null&&Dnv(c)>2.0){c=I3(a.coa);(b.h2(c)).hP(a.ckf);(b.h2(c)).hP(a.cwQ);}},Cbu=N(),DEx=a=>{Go();return Hu;},FmU=a=>{Go();return Hu;},DRa=a=>{return GT();},CjZ=N(),CSf=null,BMf=()=>{BMf=Z(CjZ);DAO();},DAO=()=>{let b,c;b=Ca((BJA()).data.length);c=b.data;CSf=b;c[ACQ.bGO]=1;c[AKO.bGO]=2;c[AKP.bGO]=3;c[Rx.bGO]=4;c[AH_.bGO]=5;c[ZL.bGO]=6;c[AFW.bGO]=7;}; +function Dsn(){NE.call(this);this.b_2=0;} +let EEd=(a,b,c)=>{Zx(a,b);a.b_2=c;},Bxt=(a,b)=>{let c=new Dsn();EEd(c,a,b);return c;},BmB=(a,b)=>{if(F0(b,AAj))b.cC(a);else a.bHP.hP(b);},EX=(a,b)=>{return Bxt(a.bHP.h2(b),a.b_2);},EdL=a=>{return a.b_2;}; +function CFa(){let a=this;F.call(a);a.bYS=0.0;a.b$s=0.0;} +let CtZ=N(),BUB=null,C2Q=null,Bak=()=>{Bak=Z(CtZ);D9K();},D9K=()=>{let b,c;b=Ca((BJA()).data.length);c=b.data;C2Q=b;c[ACQ.bGO]=1;c[AKO.bGO]=2;c[AKP.bGO]=3;c[Rx.bGO]=4;c[AH_.bGO]=5;c[ZL.bGO]=6;c[AFW.bGO]=7;c=Ca((CJ$()).data.length);b=c.data;BUB=c;b[WS.bGO]=1;b[ACA.bGO]=2;b[BeE.bGO]=3;b[A2J.bGO]=4;b[Bu0.bGO]=5;b[BtT.bGO]=6;b[ATx.bGO]=7;b[AR4.bGO]=8;b[AK9.bGO]=9;b[Bt_.bGO]=10;b[Bye.bGO]=11;b[Bsy.bGO]=12;b[AK0.bGO]=13;b[BAn.bGO]=14;b[BeH.bGO]=15;}; +function DhR(){let a=this;F.call(a);a.deM=null;a.c7e=null;} +let D6E=(a,b)=>{let c,d;c=a.c7e;d=b.cg$;b=c;b.cJp=b.cJp+d|0;return 1;}; +function B1p(){let a=this;F.call(a);a.cTZ=null;a.bJH=null;a.b3f=null;} +let Fgv=(a,b,c)=>{a.cTZ=b;a.bJH=c;},C2f=(a,b)=>{let c=new B1p();Fgv(c,a,b);return c;},EF3=a=>{let b,c,d,e,f,g,h,i,j,k,l;a:{b=Fd(a.bJH.bGI.length);c=0;if(a.b3f===null){d=1;e=0;if(!CQ(a.bJH)&&Bn(a.bJH,0)==47){e=1;if(e==a.bJH.bGI.length){f=Ca(1);f.data[0]=0;a.b3f=f;break a;}}g=e;while(true){g=In(a.bJH,47,g);if(g<0)break;d=d+1|0;g=g+1|0;}h=Ca(d+1|0);f=h.data;a.b3f=h;i=1;f[0]=e-1|0;while(true){e=In(a.bJH,47,e);if(e<0)break;d=i+1|0;f[i]=e;e=e+1|0;i=d;}f[i]=a.bJH.bGI.length;}}f=Ca(a.b3f.data.length);e=0;j=BO(a.bJH, +E(21));if(j){ANC(a.bJH,0,a.b3f.data[0],b,0);c=a.b3f.data[0];}f=f.data;g=0;i=c;while(true){h=a.b3f.data;if(g>=(h.length-1|0))break;d=h[g]+1|0;g=g+1|0;k=h[g];if((d+2|0)==k&&Bn(a.bJH,d)==46&&Bn(a.bJH,d+1|0)==46){if(e>0){e=e+(-1)|0;i=f[e];}else if(!j){d=DT(0,d-1|0);ANC(a.bJH,d,k,b,i);i=i+(k-d|0)|0;}}else if(!((d+1|0)==k&&Bn(a.bJH,d)==46)){l=e+1|0;f[e]=i;ANC(a.bJH,d-1|0,k,b,i);i=i+((k-d|0)+1|0)|0;e=l;}}if(i!=a.bJH.bGI.length){if(!j)c=i;else if(c!=i)c=i;else{f=b.data;c=i+1|0;f[i]=47;}return C2f(a.cTZ,QV(b,0,c));}return a;}; +function WJ(){let a=this;Fc.call(a);a.c09=0.0;a.cT_=0.0;a.cfu=null;} +let Eb7=a=>{return Gi();},BRo=(a,b,c,d,e)=>{Jd(a,b);a.c09=c;a.cT_=d;a.cfu=e;},CeJ=(a,b,c,d)=>{let e=new WJ();BRo(e,a,b,c,d);return e;},E5C=(a,b)=>{BRo(a,b,0.0,0.0,null);},Dpr=a=>{let b=new WJ();E5C(b,a);return b;},A0U=(a,b,c)=>{BRo(a,b,0.0,0.0,c);},FxX=(a,b)=>{let c=new WJ();A0U(c,a,b);return c;},EVS=a=>{return E(8374);},EAi=(a,b)=>{return;},ECn=(a,b)=>{return BV7(a);},BV7=a=>{let b,c,d;b=new JD;c=a.c09;d=a.cT_;MZ(b,c,d,c/2.0,0.0,d);return b;},EnA=a=>{return a.cfu;},E1s=a=>{return a.cfu;},EPv=a=>{let b,c;b= +G$();c=a.cfu;if(c!==null)EQ(b,c);return b;}; +function K2(){F.call(this);this.bK9=null;} +let V5=(a,b)=>{a.bK9=b;},DgL=a=>{let b,c,d;b=AUI(Dg(a));c=BY(a.bK9);d=new S;T(d);b=H(d,b);Bb(b,123);Bb(H(b,c),125);return Q(d);},CzY=a=>{return a.bK9.bDp();},AV9=a=>{return a.bK9.Xm();},A2P=(a,b)=>{a.bK9.cC(b);},Ly=(a,b)=>{return a.bK9.a32(b);},AWz=a=>{return a.bK9.a34();},BQs=a=>{return a.bK9.a35();},CWn=a=>{return a.bK9.a36();},Mn=a=>{return a.bK9.Xs();},B3J=a=>{return a.bK9.Xl();},Edh=(a,b,c)=>{let d;d=a.bK9;if(b===d)return LR();return d.bBm(b,c);},E8r=a=>{let b;b=a.bK9;if(a===b){b=new BP;X(b);J(b);}return HL(b);},Ex5 +=a=>{return a.bK9.bDq();},Fkw=(a,b)=>{return a.a32(b);}; +function CWQ(){K2.call(this);this.c0t=null;} +let Foo=(a,b,c)=>{V5(a,b);a.c0t=E2(c);},CAs=(a,b)=>{let c=new CWQ();Foo(c,a,b);return c;},E2e=a=>{return a.c0t;}; +function CPQ(){let a=this;NE.call(a);a.cmJ=null;a.cjs=null;a.cIH=0;} +let DZX=(a,b,c,d,e)=>{Zx(a,b);a.cmJ=c;a.cjs=d;a.cIH=e;},CzR=(a,b,c,d)=>{let e=new CPQ();DZX(e,a,b,c,d);return e;},Czr=(a,b)=>{let c,d,e,f,g,h;if(F0(b,A6B))b.cC(a);else if(!F0(b,QU)){if(F0(b,Ht)&&!(b instanceof NR)&&!(b instanceof Qf))b.cC(a);else a.bHP.hP(b);}else{c=b;c.cC(a);if(c instanceof BS7){b=a.cmJ;d=c.cTH;e=C3u(a);C9(b,d,e);}if(c instanceof BXM){b=c;c=a;e=J7(Dj(b,Im(c)));e=((c.bHP.h2(a.cjs)).h2(Cc(a.cjs))).h2(I3(e));c=C3u(a);d=a.cmJ;f=b.cSM;b=DG(d,f);if(b!==null){g=b.bHj-c.bHj;h=b.bHu-c.bHu;if(a.cIH) +{e.hP(Fz(3.0,3.0));(e.h2(Bh(g,h))).hP(Fz(3.0,3.0));}e.hP(DE(g));(e.h2(BM(g))).hP(Fg(h));}}}},C3u=a=>{let b;b=a.bHP;return Bh(b.chx,b.chv);},Fd4=(a,b)=>{return CzR(a.bHP.h2(b),a.cmJ,a.cjs,a.cIH);}; +function CPG(){let a=this;F.call(a);a.bTu=null;a.co8=null;a.bZM=0.0;a.bZL=0.0;} +let EoE=(a,b,c,d,e)=>{a.bTu=b;a.co8=c;a.bZM=d;a.bZL=e;},DqK=(a,b,c,d)=>{let e=new CPG();EoE(e,a,b,c,d);return e;},FdY=a=>{let b,c,d,e,f;b=a.bZM;c=a.bZL;d=JH((BbS(a.bTu,b,c)).bIU);e=new S;T(e);f=D6(H(D6(H(e,E(8375)),b),E(878)),c);Bb(f,32);H(f,d);return Q(e);}; +function B4S(){let a=this;F.call(a);a.cYm=null;a.cHb=null;} +let C6t=null,CvX=null,C84=null,DpN=null,C4J=null,Dst=null,BWW=()=>{BWW=Z(B4S);DBT();},AW5=(a,b,c)=>{let d,e,f;d=a.cHb;FC();if(d!==FI){e=ANt(c);f=0;while(true){if(f>=(Jh(e)-2|0))return new C0h;d=BT_(b,e,f);if(BUN(d))break;f=f+1|0;}return d;}return Zq(b,c,0);},APe=(a,b)=>{let c,d,e,f,g;a:{c=BQS(a,b,E(2245));d=BQS(a,b,E(8376));e=BQS(a,b,E(470));f=new Bz2;if(c===null)c=E(14);else{b:{if(!BO(c,E(3831))&&!BO(c,E(3832))&&!BO(c,E(3833))){b=a.cYm;if(b!==null)break b;}break a;}g=new S;T(g);H(H(g,b),c);c=Q(g);}}Cmt(f,c, +d,e);return f;},BQS=(a,b,c)=>{b=b.Ds(c);if(b.bGJ)return Be(b,0);return null;},AWX=(a,b)=>{let c;c=a.cHb;FC();if(c!==FI){if(c!==Bai){b=new BP;X(b);J(b);}return b.bjd();}return b.I1();},DBT=()=>{C6t=ADP(E(8377));CvX=ADP(E(8378));C84=ADP(E(8379));DpN=ADP(E(8380));C4J=ADP(E(8381));Dst=ADP(E(8382));},C2n=N(),EEe=(a,b)=>{return BtD();},CO0=N(0); +function B_L(){let a=this;F.call(a);a.cgB=null;a.bTb=0;} +let Cli=a=>{let b;b=CiF(a.cgB);b.bTb=a.bTb;return b;},EiO=(a,b)=>{a.bTb=0;a.cgB=b;},CiF=a=>{let b=new B_L();EiO(b,a);return b;},A4D=a=>{let b,c,d,$$je;a:{b=a.bTb;if(b<0){a.bTb=(-2);c=Gi();}else{b:{try{c=VA(Sx(a.cgB,b),E(6323));if(!c.dV())a.bTb=(-2);else a.bTb=(ATz(a.cgB,E(6323),a.bTb)+GB(E(6323))|0)+1|0;break a;}catch($$e){$$je=P($$e);if($$je instanceof AG0){c=$$je;break b;}else{throw $$e;}}}c=BY(c);d=new S;T(d);H(H(d,E(8383)),c);AJZ(Q(d));c=Gi();}}return c;},CGE=N(),D6V=0,A1V=()=>{A1V=Z(CGE);Fte();},DcN=b=> +{A1V();if(AN2(BjW(b),Mc(b)))return Bon(P3(b),Mc(b));return Bon(BjW(b),Mc(b));},Ccd=b=>{A1V();if(AN2(P3(b),BAQ(b)))return Bon(P3(b),Mc(b));return Bon(P3(b),BAQ(b));},Bon=(b,c)=>{A1V();if(!AN2(b,c))return Nz(c.bGL-b.bGL,c.bGK-b.bGK);b=new Bt;X(b);J(b);},Fte=()=>{D6V=0;}; +function BEc(){let a=this;F.call(a);a.bLN=null;a.bTY=0.0;a.b65=0;} +let Bm6=0,AV5=()=>{AV5=Z(BEc);E$w();},B$o=(a,b,c,d)=>{b.hP(d);(b.h2(BW(c))).hP(d);},Fwv=(a,b,c,d,e,f)=>{let g,h,i,j,k,l,m;if(a.bTY===0.0){g=0.0;h=Br(a.bLN);while(Bq(h)){g=g+Tz(Bm(h));}i=a.b65;if(i!=100)g=g*i/100.0;a:{if(a.bLN.dV()==1&&!e&&!f){if(a.b65==100)g=(-1.0);j=a.bLN.cf(0);k=Tz(j);j=b.h2(BM(j.bJM));CAE(a,g,j.h2(E4()),d,k,c);b=C2(k,c);(j.h2(Cc(E4()))).hP(b);}else{k=0.0;i=0;while(i=l)k=(-1.0);else if(k>=g)k=0.0;else{if(Df()){AV5();if(!Bm6){if(!(k0.0)){b=new C4;X(b);J(b);}}j=a.bLN.cf(0);g=Tz(j);h=Ge(C2(g,c),a.bTY);m=a.b65;if(m!=100&&m){l=g*m/100.0;((b.h2(E4())).h2(BM(j.bJM))).hP(Bdq(l,c,a.bTY));(((b.h2(Cc(d))).h2(E4())).h2(BM(j.bJM+l))).hP(Bn7(g*(100-a.b65|0)/100.0,c,a.bTY));((b.h2(Cc(E4()))).h2(BM(j.bJM))).hP(h);} +else{if(!m)b=b.h2(Cc(d));if(e&&!f)(b.h2(BM(j.bJM))).hP(Bn7(g,c,a.bTY));else if(!(!e&&f))(b.h2(BM(Cg1(j)))).hP(h);else (b.h2(BM(Cg1(j)))).hP(Bdq(g,c,a.bTY));}return;}j=a.bLN.cf(0);(b.h2(BM(j.bJM))).hP(Bdq(Tz(j),c,a.bTY));m=1;while(m<(a.bLN.dV()-1|0)){j=a.bLN.cf(m);C5L(a,Tz(j)*a.b65/100.0,b,j,c,d,m,0,0);m=m+1|0;}d=a.bLN;d=d.cf(d.dV()-1|0);(b.h2(BM(d.bJM))).hP(Bn7(Tz(d),c,a.bTY));CRW(a,b,c);},CRW=(a,b,c)=>{let d,e,f,g;b=b.h2(J$(2.0,3.0,1.0));d=0;while(d<(a.bLN.dV()-1|0)){e=(a.bLN.cf(d)).bOx+3.0;f=a.bLN;d=d+1|0;g +=(f.cf(d)).bJM-3.0;if(g>e)B$o(a,b.h2(BM(e)),c,DE(g-e));}},C5L=(a,b,c,d,e,f,g,h,i)=>{let j,k;if(h&&i){c=new Bt;X(c);J(c);}j=Tz(d);if(g!=(a.bLN.dV()-1|0))j=j+1.0;k=c.h2(BM(d.bJM));if(j>0.0)CAE(a,b,k.h2(E4()),f,j,e);f=k.h2(Cc(E4()));if(h)f.hP(Bdq(Tz(d),e,0.0));else if(!i)B$o(a,f,e,DE(Tz(d)));else (f.h2(BM(Tz(d)-Tz(d)))).hP(Bn7(Tz(d),e,0.0));},CAE=(a,b,c,d,e,f)=>{let g;if(b!==(-1.0)&&b!==0.0){c.hP(C2(b,f));g=C2(e-b,f);((c.h2(Cc(d))).h2(BM(b))).hP(g);}else{if(b===0.0)c=c.h2(Cc(d));c.hP(C2(e,f));}},E$w=()=>{Bm6=0;}; +function DLN(){let a=this;F.call(a);a.dfR=0.0;a.dfo=0.0;a.dfP=null;} +function Fpj(){let a=this;F.call(a);a.dfq=0.0;a.dfO=0.0;a.dfp=null;a.dfH=12.0;} +function Eca(){let a=this;F.call(a);a.dfx=0.0;a.de7=0.0;a.dfl=null;a.de8=12.0;} +function Fr7(){let a=this;F.call(a);a.dfN=0.0;a.dfd=0.0;a.de_=null;} +function Fed(){let a=this;F.call(a);a.dfB=0.0;a.dfQ=0.0;a.dff=null;a.dfG=12.0;} +function JD(){let a=this;LU.call(a);a.bGY=0.0;a.bHi=0.0;a.bHH=0.0;} +let BWX=a=>{return BA(a.bGY,a.bHi);},J7=a=>{return BA(a.bGY,a.bHi);},ANw=a=>{let b,c;b=a.bHH;if(b!==2.2250738585072014E-308)return BA(a.bGE,(a.bHi+b)/2.0);c=new BV;X(c);J(c);},BPu=a=>{let b,c;b=a.bHH;if(b===2.2250738585072014E-308){c=new BV;X(c);J(c);}return BA(a.bGY,b);},AOw=a=>{let b,c;b=a.bHH;if(b!==2.2250738585072014E-308)return BA(0.0,(a.bHi+b)/2.0);c=new BV;X(c);J(c);},IA=a=>{let b,c;b=a.bHH;if(b===2.2250738585072014E-308){c=new BV;X(c);J(c);}return BA(a.bGY,b);},FfD=(a,b,c,d)=>{A6p(a,b.bGE,b.bGF,c,d);},AB9 +=(a,b,c)=>{let d=new JD();FfD(d,a,b,c);return d;},A6p=(a,b,c,d,e)=>{MZ(a,b,c,d,e,2.2250738585072014E-308);},AZT=(a,b,c,d)=>{let e=new JD();A6p(e,a,b,c,d);return e;},ETD=a=>{let b,c,d,e,f;b=a;c=b.bGE;d=b.bGF;e=a.bGY;b=new S;T(b);Bb(b,91);f=D6(b,c);Bb(f,120);Bb(D6(H(D6(f,d),E(8384)),e),93);return Q(b);},MZ=(a,b,c,d,e,f)=>{MO(a,b,c);a.bGY=d;a.bHi=e;a.bHH=f;},Qt=(a,b,c,d,e)=>{let f=new JD();MZ(f,a,b,c,d,e);return f;},Dna=(a,b)=>{let c,d;c=new JD;d=a;MZ(c,d.bGE+b,d.bGF,a.bGY,a.bHi,a.bHH);return c;},BP2=(a,b,c,d, +e)=>{MZ(a,b.bGE,b.bGF,c,d,e);},ZG=(a,b,c,d)=>{let e=new JD();BP2(e,a,b,c,d);return e;},Ew=a=>{return a.bHH===2.2250738585072014E-308?0:1;},A12=a=>{let b,c;b=new JD;c=a;A6p(b,c.bGE,c.bGF,a.bGY,a.bHi);return b;},Qx=(a,b)=>{let c,d,e,f;c=b.bHj;d=b.bHu;e=a.bHH;if(e!==2.2250738585072014E-308){b=new JD;f=a;MZ(b,f.bGE,f.bGF,a.bGY+c,a.bHi+d,e+d);return b;}b=new JD;f=a;A6p(b,f.bGE,f.bGF,a.bGY+c,a.bHi+d);return b;},BGo=a=>{return a.bGE-a.bGY;},Bor=(a,b,c)=>{let d,e;d=new JD;e=a;MZ(d,e.bGE+b,e.bGF+c,a.bGY,a.bHi,a.bHH+ +c);return d;},CkY=(a,b)=>{return Qt(a.bGE,b,a.bGY,a.bHi,a.bHH);},AAu=(a,b)=>{let c,d,e,f,g,h,i;c=BC(a.bGY,b.bGY);d=c-a.bGY;e=c-b.bGY;f=a;d=f.bGE+d;g=b;h=BC(d,g.bGE+e);i=f.bGF+g.bGF;return !Ew(b)?AZT(h,i,c,a.bHi):Qt(h,i,c,a.bHi,b.bHH+f.bGF);}; +function AZr(){let a=this;F.call(a);a.bYH=null;a.b2z=0;a.dcR=null;a.deH=null;a.cKs=null;a.deb=null;a.c$R=null;} +let Bu_=null,D5h=null,Dtm=null,BuN=()=>{BuN=Z(AZr);EnT();},CZ0=(b,c)=>{let d,e;BuN();d=HT(b);e=new S;T(e);BE(H(e,d),c);e=Q(e);d=DG(Bu_,e);if(d===null){d=D_2(b,c);A6S(Bu_,e,d);d=DG(Bu_,e);}return d;},Ci3=(a,b,c)=>{let d,e;BuN();Bun();d=new A0X;MF();BGK(d,E(4526),a,Ka,Nd,CNf);a.dcR=d;a.deH=BWh(E(8385),a,Nd,Vf,C2h);a.cKs=BWh(E(8386),a,Nd,S8,CKf);d=new A0X;e=Nd;AT$();BGK(d,E(8387),a,e,APo,CKe);a.deb=d;a.c$R=BWh(E(8388),a,APo,TJ,Dal);Gp(b,E(8389));if(c>=1&&c<=7){a.bYH=b;a.b2z=c;return;}d=new Bt;Bp(d,E(8390));J(d);},D_2 +=(a,b)=>{let c=new AZr();Ci3(c,a,b);return c;},EVn=(a,b)=>{if(a!==b){if(b instanceof AZr)return Dou(a)!=b.dp()?0:1;return 0;}return 1;},Dou=a=>{return (a.bYH.bGO*7|0)+a.b2z|0;},C5W=a=>{let b,c,d;b=BY(a.bYH);c=a.b2z;d=new S;T(d);b=H(H(d,E(8391)),b);Bb(b,44);BE(b,c);Bb(b,93);return Q(d);},EnT=()=>{let b;Bu_=Dy();b=new AZr;AEg();Ci3(b,ASi,4);D5h=b;Dtm=CZ0(A8H,1);}; +function BiK(){let a=this;F.call(a);a.cjT=0.0;a.cal=0.0;a.cUf=null;} +let Dj4=0,Bwa=()=>{Bwa=Z(BiK);Fbe();},Dps=(a,b,c,d)=>{Bwa();a.cjT=Eh(b,c);a.cal=BC(b,c);a.cUf=d;},B3$=(a,b,c)=>{let d=new BiK();Dps(d,a,b,c);return d;},Bgm=(a,b)=>{let c,d,e,f,g,h,i,j;b=b.h2(Cc(E4()));c=0;d=a.cjT;e=EE();Ec(e,0.0,d);f=a.cUf.dX();a:{b:{while(true){if(!f.dY())break a;g=f.dZ();if(g.bG6=a.cjT))break;}c=1;h=g.bG6;i=a.cal;if(h===i)B2(e,0.0,i);else{B2(e,0.0,Eh(i,h-3.0));d=a.cal;j=g.bG6;if(d>j){Mk(e,4.0,4.0,0.0,0.0,1.0,0.0,j+9.0);continue;}}b.hP(e);e=EE();d +=g.bG6+9.0;Ec(e,0.0,d);if(d>=a.cal)break b;}b=new C4;X(b);J(b);}}if(!c){B2(e,0.0,a.cal);b.hP(e);}},Fbe=()=>{Dj4=0;}; +function CLV(){F.call(this);this.cxb=null;} +let Br7=(a,b,c)=>{let d,e;d=a.cxb.bNG.a9W();e=a.cxb;return d.bmi(b,R5(c, -e.bSh, -e.bOB));},C79=N(),BP_=null,Bxu=()=>{Bxu=Z(C79);Fec();},Fec=()=>{let b,c;DC();b=Ca((Ci2.b2()).data.length);c=b.data;BP_=b;c[Gy.bGO]=1;c[FL.bGO]=2;c[G_.bGO]=3;c[HG.bGO]=4;}; +function CXX(){let a=this;FK.call(a);a.bU7=null;a.cY1=null;a.c1E=null;} +let Euv=a=>{return a.c1E;},Ey0=(a,b)=>{(b.h2(Cc(a.cY1))).hP(a.bU7);}; +function Cvw(){let a=this;F.call(a);a.cYL=0;a.bVb=0.0;a.chY=0.0;} +let Chh=(a,b)=>{a.bVb=a.bVb+b;},Eop=(a,b)=>{return BFr(a.bVb,b.bVb);}; +function C$B(){F.call(this);this.dau=null;} +function CY8(){let a=this;F.call(a);a.bZF=null;a.cAt=null;a.cze=null;a.c$Y=null;} +let B6r=a=>{return a.bZF.bGJ;},EEi=a=>{let b,c,d;b=JH(a);c=a.bZF.bGJ;d=new S;T(d);b=H(d,b);Bb(b,32);BE(b,c);return Q(d);}; +function DjE(){let a=this;IT.call(a);a.cQM=null;a.cdk=null;a.cxz=0;a.cjY=null;} +let Dco=a=>{let b,c,d,e;if(a.cdk.bGI.length){b=a.cjY;c=a.cQM;B3();d=CF;Ed();d=b.E0(c,d,FR);e=B4(a.cjY.gs(),a.cdk);e=S0(d,e);b=new ACw;Jo();AP8(b,e,JJ,a.cjY.hr());return b;}return E6(0.0,0.0);},DFU=(a,b)=>{(b.h2(BW((De(a,b.hE())).bGF/2.0))).hP(!a.cdk.bGI.length?DjY(1.0,0.0,0.0,a.cxz):DmH(1.0,0.0,0.0,Dco(a),a.cxz));},D3t=(a,b)=>{if(!a.cdk.bGI.length)return Cl(10.0,10.0);return (Dco(a)).cF(b);},EvC=(a,b)=>{return 0.0;}; +function COK(){let a=this;IT.call(a);a.cJ1=null;a.cnE=0;} +let EJ1=(a,b)=>{let c,d;c=a.cJ1.bI2;b=((b.h2(c)).h2(Cc(c))).h2(Dw(0.0));d=a.cnE;if(!d)(b.h2(BM(3.0))).hP(Fz(5.0,5.0));else (b.h2(BM(1+(8*d|0)|0))).hP(C2(3.5,3.5));},DFK=(a,b)=>{let c;c=a.cnE;if(c)return Cl(8+(8*c|0)|0,3.0);return Cl(12.0,5.0);},EZD=(a,b)=>{if(!a.cnE)return (-5.0);return (-7.0);},Ckg=N(),ASy=null,CeZ=null,AGo=()=>{AGo=Z(Ckg);Fgb();},AKA=(b,c)=>{let d,e,f;AGo();d=new Qf;e=null;f=ASy;ATF(d,b,c,e,f,f,1);return d;},Dkl=(b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o;AGo();f=D3(CeZ,b);g=Bk();while(true){if(!GW(f)) +{h=new Sj;T(h);ALx(f,h);if(h.bG4>0){e=new Qf;b=Q(h);i=ASy;ATF(e,b,d,c,i,i,1);U(g,e);}b=g;if(b.bGJ!=1){b=new C4I;b.ceN=g;return b;}return Be(b,0);}h=new Sj;T(h);AMW(f,h,E(14));if(h.bG4>0){b=new Qf;j=Q(h);i=ASy;ATF(b,j,d,c,i,i,1);U(g,b);}k=El(f,2);l=El(f,5);m=El(f,7);if(El(f,9)!==null)break;if(k!==null){j=CPF(k);if(j!==null){b=CC9(null,XW(El(f,3),1.0),j,d,c);U(g,b);}}else if(l!==null){n=e.Bk(l);if(n!==null){o=XW(El(f,6),1.0);b=Cg_(d.bI2,null,o,n,c,null);U(g,b);}}else if(m!==null){o=XW(El(f,8),1.0);A2Y();i=DqN(e, +m,A9J,0,o,c);U(g,i);}}b=new BV;X(b);J(b);},Fgb=()=>{ASy=new CYF;CeZ=Dp(E(8392));}; +function CSM(){let a=this;F.call(a);a.c6G=null;a.cQ1=null;} +let DOk=(a,b,c)=>{let d,e;d=a.c6G;e=a.cQ1.bJO;return d.bmi(b,R5(c, -e.bJh, -e.bJ6));}; +function CXJ(){let a=this;F.call(a);a.c$o=null;a.bUh=null;a.c6p=null;a.bS9=null;a.cT9=null;a.cB6=null;a.cCF=null;a.cr2=null;a.c8K=null;} +let Fu3=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;c=AH6(a.cCF,b,a.cB6);d=a.c6p.bOq;d=!F0(d,AMS)?null:AD1(a.cr2,d);e=a.cT9.bOq;e=!F0(e,AMS)?null:AD1(a.cr2,e);if(d!==null&&e!==null){f=c.hE();g=a.bUh;ARq();h=d.bDB(f,g,ARp);i=d.bDC(f,a.bUh);j=e.bDB(f,a.bS9,Bqn);k=e.bDC(f,a.bS9);if(B07(a.bUh)&&kh+6.0){MR(g, +h,i);MR(g,h,k);MR(g,j,k);}else{h=d.bDB(f,P1,ARp);n=d.bDC(f,P1);o=CW(e.V7(f));MR(g,h,n);h=h+6.0;MR(g,h,n);MR(g,h,o);h=j-8.0;MR(g,h,o);MR(g,h,k);MR(g,j,k);}}else{b=a.bUh;d=P1;if(b===d&&a.bS9===d){p=BC(h,j)+8.0;MR(g,h,i);MR(g,p,i);MR(g,p,k);MR(g,j,k);}else{d=Qh;if(!(b===d&&a.bS9===d)){MR(g,h,i);MR(g,h,k);MR(g,j,k);}else{n=Eh(h,j)-8.0;MR(g,h,i);MR(g,n,i);MR(g,n,k);MR(g,j,k);}}}b=EE();AMc(b,Be(g.cea,0));q=1;while(true){d=g.cea;r=d.bGJ-1|0;if(q>=r)break;Wx(b,Be(d,q));q=q+1|0;}e=Be(d,r);d=g.cGg;Wx(b,d===Qh?BA(e.bGK +-3.0,e.bGL):d!==P1?e:BA(e.bGK+3.0,e.bGL));c.hP(b);b=(c.h2(GT())).h2(Cc(g.cYa));c=g.cea;c=Be(c,c.bGJ-1|0);n=c.bGK;h=c.bGL;c=g.cGg;if(c===Qh){d=Yd(E(8393));p=n-4.0;i=h-4.0;BQ(d,p,i);BQ(d,n,h);BQ(d,p,h+4.0);BQ(d,p,i);}else if(c===P1){d=Yd(E(8394));i=n+4.0;p=h-4.0;BQ(d,i,p);BQ(d,n,h);BQ(d,i,h+4.0);BQ(d,i,p);}else if(CX6)d=Fj();else{b=new C4;X(b);J(b);}b.hP(d);return;}}; +function CXz(){VU.call(this);this.cLs=0;} +let D75=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n;d=E9();e=0.0;f=G3(G8(a.bQE));g=f;while(Gl(g)){h=f;i=GZ(h);j=GZ(h);i=i;k=i.bHe.bGF;j=j;l=j.bHe.bGF;m=BC(k,l);i=i.bHt;h=BA(0.0,2.0+e+(m-k)/2.0);n=d;Es(n,i,h);Es(n,j.bHt,BA(a.cLs,e+(m-l)/2.0));e=e+m;}return d;},CDH=N(VU),Epg=(a,b,c)=>{let d,e,f,g,h,i,j,k,l;d=a;e=(c-BiI(d))/(d.bQE.bHv+1|0);f=E9();g=G3(G8(d.bQE));h=g;i=e;while(Gl(h)){j=GZ(g);k=(b-j.bHe.bGE)/2.0;d=j.bHt;l=BA(k,i);Es(f,d,l);i=i+j.bHe.bGF+e;}return f;}; +function Bc7(){let a=this;F.call(a);a.cdn=null;a.b5A=0.0;} +let EfL=(a,b)=>{a.cdn=b;a.b5A=0.0;},Ce6=a=>{let b=new Bc7();EfL(b,a);return b;},Du3=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n;e=d.bGK;f=e*e;g=b.bGL;h=c.bGL;i=g-h;j=f*i;k=b.bGK;l=k*k;m=d.bGL;f=l+i*(g-m);l=h-m;f=j+f*l;n=c.bGK;j=n*n;g= -g+m;k=(f+j*g)/(2.0*(e*i+k*l+n*g));i=m-h;m=(h+m)/2.0-(e-n)/i*(k-(n+e)/2.0);c=BA(k,m);a.cdn=c;a.b5A=Jy(c,b);},Dg2=(a,b,c)=>{let d=new Bc7();Du3(d,a,b,c);return d;}; +function C_d(){F.call(this);this.cJG=null;} +let FmC=a=>{return a.cJG.dY();},Fi8=a=>{let b,c,d;b=new DgN;c=a.cJG.dZ();d=c.d0();c=c.d1();b.cCs=d;b.cti=c;return b;}; +function CQ$(){let a=this;F.call(a);a.bTS=0.0;a.bTR=0.0;} +let BBf=(a,b)=>{let c,d,e,f;c=G4(b);d= -H0(b);b=a.bTS;e=b*c;f=a.bTR;e=e-f*d;a.bTR= -b*d-f*c;a.bTS=e;},Fhe=(a,b,c)=>{a.bTS=b;a.bTR=c;},BsN=(a,b)=>{let c=new CQ$();Fhe(c,a,b);return c;},CUq=(a,b)=>{return Bh(a.bTS+b.bGK,a.bTR+b.bGL);},Bb4=N(0); +function CYH(){let a=this;F.call(a);a.c0j=null;a.cNV=0;} +let D0f=(a,b)=>{return (b.gS(Gk(a.c0j),E(8395))).bGE*a.cNV;}; +function CYG(){F.call(this);this.cRA=null;} +let EVZ=(a,b)=>{return (b.gS(Gk(a.cRA),E(423))).bGE;}; +function C_b(){If.call(this);this.c0n=null;} +let A9c=N(Bx),Qh=null,P1=null,ALy=null,AJV=null,AFK=null,AIu=null,Efc=null,PW=()=>{PW=Z(A9c);DRf();},EB3=(a,b,c)=>{PW();Ct(a,b,c);},ASI=(a,b)=>{let c=new A9c();EB3(c,a,b);return c;},B07=a=>{PW();return !(a!==AFK&&a!==AIu)?1:0;},DRf=()=>{let b,c,d;Qh=ASI(E(420),0);P1=ASI(E(422),1);ALy=ASI(E(8396),2);AJV=ASI(E(8397),3);AFK=ASI(E(8398),4);b=ASI(E(8399),5);AIu=b;c=K(A9c,6);d=c.data;d[0]=Qh;d[1]=P1;d[2]=ALy;d[3]=AJV;d[4]=AFK;d[5]=b;Efc=c;}; +function C0q(){let a=this;F.call(a);a.ce_=null;a.crW=null;} +let EW1=(a,b)=>{let c;c=a.crW;if(c!==null)b.hF(c);a.ce_.cFk.cC(b);if(a.crW!==null)b.hG();},E1d=(a,b)=>{return CTf(a.ce_,b);},ERg=(a,b,c)=>{let d;d=a.ce_;if(!Bj(Cgy(d.cRc),b))b=null;else{c=CTf(d,c);b=AOd(0.0,0.0,c.bGE,c.bGF);}return b;}; +function CoX(){F.call(this);this.da7=null;} +let DH4=(a,b)=>{return;},Fko=(a,b,c)=>{return null;},EP3=(a,b)=>{return Cl(1.0,1.0);}; +function DjV(){let a=this;F.call(a);a.cxf=null;a.cQw=null;} +let ETQ=(a,b)=>{b.hF(a.cQw);DgK(a.cxf,b);b.hG();},FqJ=(a,b)=>{return CGI(a.cxf,b);},Fmu=(a,b,c)=>{return null;},DIg=a=>{return null;}; +function A0X(){let a=this;F.call(a);a.c64=null;a.bRE=null;a.c8U=null;a.cmx=null;a.cxY=null;} +let CNf=null,C2h=null,CKf=null,CKe=null,Dal=null,Bun=()=>{Bun=Z(A0X);D_C();},BGK=(a,b,c,d,e,f)=>{Bun();a.c64=b;a.bRE=c;a.c8U=d;a.cmx=e;a.cxY=f;},BWh=(a,b,c,d,e)=>{let f=new A0X();BGK(f,a,b,c,d,e);return f;},Eda=(a,b)=>{let c,d,e,f,g,h,i;c=ADT(a.bRE.bYH);GC();d=ATY(b.XM(SJ)-c|0,7)+1|0;e=a.cmx;MF();if(e!==Nd){if(e!==Vf){if(e!==S8){AT$();if(e===APo){a:{c=ADT(a.bRE.bYH);c=ATY(b.XM(SJ)-c|0,7)+1|0;f=Bey(a,b,c);if(DS(f,BH)){Bic(b);e=AQV(b);b=Nd;c=Cp((Bey(a,BKi(e,V(1),b),c)))+1|0;}else{b:{if(FE(f,V(53))){c=AEF(a,ALA(a, +b.XM(UK),c),(!BEE(V(b.XM(NJ)))?365:366)+a.bRE.b2z|0);if(FE(f,V(c)))break b;}c=Cp(f);break a;}c=Cp(CE(f,V(c-1|0)));}}return V(c);}if(e===TJ){c=ADT(a.bRE.bYH);g=ATY(b.XM(SJ)-c|0,7)+1|0;c=b.XM(NJ);f=Bey(a,b,g);if(DS(f,BH))c=c-1|0;else if(FE(f,V(53))){g=ALA(a,b.XM(UK),g);d=!BEE(V(c))?365:366;if(FE(f,V(AEF(a,g,d+a.bRE.b2z|0))))c=c+1|0;}return V(c);}e=new BP;Bp(e,E(8400));J(e);}h=b.XM(UK);return V(AEF(a,ALA(a,h,d),h));}i=b.XM(ACk);return V(AEF(a,ALA(a,i,d),i));}return V(d);},Bey=(a,b,c)=>{let d;GC();d=b.XM(UK);return V(AEF(a, +ALA(a,d,c),d));},ALA=(a,b,c)=>{let d,e;d=ATY(b-c|0,7);e= -d|0;if((d+1|0)>a.bRE.b2z)e=7-d|0;return e;},AEF=(a,b,c)=>{return ((7+b|0)+(c-1|0)|0)/7|0;},Dxt=a=>{return a.cxY;},EkZ=a=>{return 0;},Fat=(a,b)=>{let c;a:{GC();c=SJ;b=b;if(AMC(b,c)){c=a.cmx;MF();if(c!==Nd){if(c!==Vf){if(c!==S8){AT$();if(c!==APo){if(c!==TJ)break a;else return AMC(b,AAe);}return AMC(b,AAe);}return AMC(b,UK);}return AMC(b,ACk);}return 1;}}return 0;},ERy=(a,b)=>{let c,d,e,f,g;c=a.cmx;MF();if(c!==Nd){if(c===Vf){GC();d=ACk;}else if(c===S8){GC();d +=UK;}else{AT$();if(c!==APo){if(c!==TJ){d=new BP;Bp(d,E(8400));J(d);}GC();return b.Pz(NJ);}return BDi(a,b);}e=ADT(a.bRE.bYH);GC();f=ATY(b.XM(SJ)-e|0,7)+1|0;g=ALA(a,b.XM(d),f);d=b.Pz(d);return HM(V(AEF(a,g,Cp(d.b4m))),V(AEF(a,g,Cp(d.b5N))));}return a.cxY;},BDi=(a,b)=>{let c,d,e,f,g,h,i;c=ADT(a.bRE.bYH);GC();d=ATY(b.XM(SJ)-c|0,7)+1|0;e=Bey(a,b,d);if(D4(e,BH)){f=ALA(a,b.XM(UK),d);g=!BEE(V(b.XM(NJ)))?365:366;h=AEF(a,f,g+a.bRE.b2z|0);if(FE(e,V(h))){Bic(b);i=AQV(b);MF();b=Nd;return BDi(a,AK8(i,V(2),b));}return HM(V(1), +V(h-1|0));}Bic(b);i=AQV(b);MF();b=Nd;return BDi(a,BKi(i,V(2),b));},EPz=a=>{let b,c,d;b=a.c64;c=C5W(a.bRE);d=new S;T(d);b=H(d,b);Bb(b,91);Bb(H(b,c),93);return Q(d);},D_C=()=>{CNf=HM(V(1),V(7));C2h=BA_(BH,V(1),V(4),V(6));CKf=BA_(BH,V(1),V(52),V(54));CKe=BA_(V(1),V(1),V(52),V(53));GC();Dal=NJ.b_A;},CYF=N(),DNM=(a,b)=>{return 0.0;}; +function CoY(){let a=this;F.call(a);a.cFk=null;a.cRc=null;} +let CTf=(a,b)=>{return a.cFk.cF(b);},ClZ=N(),DSJ=null,Ert=null,FkD=null,Fjz=null,APo=null,E$I=null,AT$=()=>{AT$=Z(ClZ);EYq();},EYq=()=>{BtE();DSJ=Bob;Ert=Bvq;FkD=Bnb;Fjz=BJI;BbO();APo=BrS;E$I=B1M;},CVV=N(0),CWr=N(0),DED=N(),Uc=N(Bx),Bob=null,Bvq=null,Bnb=null,BJI=null,DR7=null,Ex6=null,BtE=()=>{BtE=Z(Uc);DWp();},BuM=(a,b,c)=>{BtE();Ct(a,b,c);},DWp=()=>{let b,c,d;b=new B0B;BuM(b,E(8401),0);Bob=b;b=new B0C;BuM(b,E(8402),1);Bvq=b;b=new B0D;BuM(b,E(8403),2);Bnb=b;b=new B0E;BuM(b,E(8404),3);BJI=b;c=K(Uc,4);d=c.data;d[0] +=Bob;d[1]=Bvq;d[2]=Bnb;d[3]=b;Ex6=c;DR7=Ey([0,90,181,273,0,91,182,274]);}; +function A0h(){let a=this;Bx.call(a);a.des=null;a.c$h=null;} +let BrS=null,B1M=null,Dxf=null,BbO=()=>{BbO=Z(A0h);Fvu();},Ewx=(a,b,c,d,e)=>{BbO();Ct(a,b,c);a.des=d;a.c$h=e;},Cxl=(a,b,c,d)=>{let e=new A0h();Ewx(e,a,b,c,d);return e;},Fvu=()=>{let b,c,d;BrS=Cxl(E(8405),0,E(8406),RI(V(31556952)));b=Cxl(E(8407),1,E(8408),RI(V(7889238)));B1M=b;c=K(A0h,2);d=c.data;d[0]=BrS;d[1]=b;Dxf=c;},B0B=N(Uc),B0C=N(Uc),B0D=N(Uc),B0E=N(Uc); +function CX1(){let a=this;F.call(a);a.cn8=null;a.bYh=null;} +let EoP=(a,b)=>{let c;c=a.bYh;return BUq(c.bXO,BUq(c.b1c,a.cn8.cF(b)));},Ed9=(a,b)=>{let c,d;b=b.h2(ATU(a.bYh.b1c));c=a.bYh.b7S;c=c!==null?b.h2(c):b.h2(E4());d=a.bYh.b8z;c=d!==null?c.h2(Cc(d)):c.h2(Cc(E4()));d=a.cn8.cF(b.hE());c.hP(Ge(M6(BUq(a.bYh.bXO,d)),a.bYh.b5i));a.cn8.cC(b.h2(ATU(a.bYh.bXO)));},A0B=N(Bx),A4Y=null,A9i=null,A_T=null,BAq=null,Dtd=null,AFB=()=>{AFB=Z(A0B);FsX();},Fik=(a,b,c)=>{AFB();Ct(a,b,c);},BjS=(a,b)=>{let c=new A0B();Fik(c,a,b);return c;},FsX=()=>{let b,c,d;A4Y=BjS(E(8409),0);A9i=BjS(E(8410), +1);A_T=BjS(E(8411),2);b=BjS(E(8412),3);BAq=b;c=K(A0B,4);d=c.data;d[0]=A4Y;d[1]=A9i;d[2]=A_T;d[3]=b;Dtd=c;}; +function D27(){let a=this;F.call(a);a.dfv=null;a.dfA=null;} +let C8m=N(DR); +function AWf(){let a=this;F.call(a);a.ddS=null;a.deG=null;} +let A4R=(a,b,c)=>{a.deG=b;a.ddS=c;},FyT=(a,b)=>{let c=new AWf();A4R(c,a,b);return c;}; +function Dmc(){let a=this;F.call(a);a.cLQ=0.0;a.cLN=0.0;a.cLR=0.0;a.cLO=0.0;a.cI_=0.0;a.cJa=0.0;} +function Cuj(){let a=this;F.call(a);a.bHE=null;a.cW1=null;} +let Ew8=(a,b,c,d,e)=>{let f,g,h,i,j,k,l,m,n,o,p;B0e(a);a.cW1=b;f=Br(c);while(Bq(f)){g=Bm(f);c=a.bHE;if(c===null)a.bHE=g;else a.bHE=ELC(c,g);}if(a.bHE===null){h=AO$(b);a.bHE=Rf(LD(h)-1.0,LW(h)-1.0,LD(h)+1.0,LW(h)+1.0);}d=d;h=Br(d);while(Bq(h)){f=Bm(h);a.bHE=Fcv(a.bHE,f);}i=0;j=0;k=0;l=0;h=Br(d);while(Bq(h)){f=Bm(h);if(LD(f)===AEx(a.bHE))i=1;if(LD(f)===ANy(a.bHE))j=1;if(LW(f)===ALS(a.bHE))k=1;if(LW(f)===AKf(a.bHE))l=1;}if(!i)a.bHE=CCp(a.bHE,AEx(b));if(!j)a.bHE=CJg(a.bHE,ANy(b));if(!k)a.bHE=DFL(a.bHE,ALS(b));if +(!l)a.bHE=DzN(a.bHE,AKf(b));m=0;n=0;o=0;p=0;c=Br(d);while(Bq(c)){f=Bm(c);if(!(LW(f)!==ALS(a.bHE)&&LW(f)!==AKf(a.bHE))){if(EL(LD(f)-ANy(a.bHE))<18.0)n=1;if(EL(LD(f)-AEx(a.bHE))<18.0)m=1;}if(!(LD(f)!==AEx(a.bHE)&&LD(f)!==ANy(a.bHE))){if(EL(LW(f)-AKf(a.bHE))<18.0)p=1;if(EL(LW(f)-ALS(a.bHE))<18.0)o=1;}}c=Br(d);while(Bq(c)){f=Bm(c);Pf();if(e!==AFF){if(LW(f)===ALS(a.bHE)&&!(LD(f)!==AEx(a.bHE)&&LD(f)!==ANy(a.bHE)))o=0;if(LW(f)===AKf(a.bHE)&&!(LD(f)!==AEx(a.bHE)&&LD(f)!==ANy(a.bHE)))p=0;}else{if(LD(f)===AEx(a.bHE)&& +!(LW(f)!==ALS(a.bHE)&&LW(f)!==AKf(a.bHE)))m=0;if(LD(f)===ANy(a.bHE)&&!(LW(f)!==ALS(a.bHE)&&LW(f)!==AKf(a.bHE)))n=0;}}if(n)a.bHE=EKN(a.bHE,18.0);if(m)a.bHE=Fwx(a.bHE,(-18.0));if(p)a.bHE=D8U(a.bHE,18.0);if(o)a.bHE=Esp(a.bHE,(-18.0));},EZw=(a,b,c,d)=>{let e=new Cuj();Ew8(e,a,b,c,d);return e;},A92=N(Bx),Bqn=null,ARp=null,ElW=null,ARq=()=>{ARq=Z(A92);DMh();},E0p=(a,b,c)=>{ARq();Ct(a,b,c);},C_D=(a,b)=>{let c=new A92();E0p(c,a,b);return c;},DMh=()=>{let b,c,d;Bqn=C_D(E(3086),0);b=C_D(E(8413),1);ARp=b;c=K(A92,2);d= +c.data;d[0]=Bqn;d[1]=b;ElW=c;}; +function BR2(){let a=this;F.call(a);a.cGg=null;a.cYa=null;a.cea=null;} +let CX6=0,BR0=()=>{BR0=Z(BR2);FxL();},MR=(a,b,c)=>{let d,e;d=a.cea;e=BA(b,c);U(d,e);},FxL=()=>{CX6=0;}; +function ClX(){F.call(this);this.c8X=null;} +function ClV(){let a=this;F.call(a);a.dbe=null;a.dbd=null;} +function DoR(){let a=this;F.call(a);a.c6d=null;a.c6c=null;} +function DeB(){let a=this;F.call(a);a.cVv=null;a.clN=null;a.cDc=null;} +let Dkd=a=>{let b,c;b=a.cVv;if(b===null&&a.clN===null){Go();return Hu;}c=a.clN;if(c===null)c=b;return c;}; +function BMm(){let a=this;F.call(a);a.bWl=null;a.bSi=null;a.b1D=0.0;a.bZJ=0.0;a.bYW=null;} +let C$T=(a,b,c,d,e,f)=>{a.bWl=b;a.bYW=c;a.bSi=d;a.b1D=e;a.bZJ=f;},A$Q=(a,b,c,d,e)=>{let f=new BMm();C$T(f,a,b,c,d,e);return f;},DH2=a=>{return a.bWl;},AMe=(a,b)=>{return A$Q(a.bWl.h2(b),a.bYW,a.bSi,a.b1D,a.bZJ);},CSr=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n;c=a.bYW;if(BG(b,E(71)))b=E4();else{b=Eu(KI(),b);d=c.clN;if(d!==null){e=d.bJI;f=e.bJX;g=e.bJz;if(!(f==g&&g==e.bJT)?0:1)b=AHx(A$c(b.bJI));else{e=c.cDc;if(e.b$_==(-1))CcF(e);h=e.cfz;c=c.cDc;if(c.b$_==(-1))CcF(c);b=A$c(b.bJI);g=b.bJz;if(Df()){AFe();if(!BSD&&g!=b.bJT) +{b=new C4;X(b);J(b);}}if(Df()){AFe();if(!BSD&&g!=b.bJX){b=new C4;X(b);J(b);}}h=(g-h)/256.0;b=d.bJI;i=b.bJX;j=b.bJz;k=(CtL(Gh([i/256.0,j/256.0,b.bJT/256.0]))).data;l=k[0];m=k[1];n=k[2];k=(CqL(Gh([l,m,n+(100.0-n)*h]))).data;b=AHx(Oe(ARC(k[0]),ARC(k[1]),ARC(k[2])));}}}return b;},CL7=a=>{return Dkd(a.bYW);},CXj=(a,b)=>{a.bWl.hP(b);},Eov=a=>{return a.bSi;},Eiw=a=>{return a.bZJ;},C1L=N(0),Dr7=N(WJ),E7a=a=>{return Gi();},EFp=a=>{return E(8414);},E7b=(a,b)=>{return A12(BV7(a));},DP0=a=>{return IN(a);}; +function BXM(){WJ.call(this);this.cSM=null;} +let D9X=(a,b)=>{return A12(BV7(a));}; +function Ctf(){let a=this;Fc.call(a);a.bQy=null;a.bVM=null;a.cPv=null;a.clW=null;a.day=20.0;a.ck8=null;} +let Dvs=a=>{let b,c;if(a.ck8!==null){b=ABx(a.bQy.a34());c=a.ck8;EQ(b,c);return b;}return a.bQy.a34();},Foa=a=>{return a.bQy.a35();},ETk=a=>{return a.bQy.a36();},FrM=a=>{return HL(a.bQy);},BLE=(b,c,d,e)=>{let f,g,h,i,j,k,l;if(c.dV()<=1){if(c.dV()){f=new Ctf;g=(c.dX()).dZ();c=g.b0h;Jd(f,c===null?b.Xs():AHL(c,b.Xs()));f.day=20.0;f.cPv=e;f.ck8=g.cKU;f.bQy=b;f.clW=g.b9O;b=g.cnD;ASa();if(b===B2$)d=0;c=g.cKW;e=(Cr(f)).cp();B8();b=ZT(B0(e,Du(A23,c)),g.b0h);B9();e=(BJ(b,CK)).cu(J4(f));h=(BJ(b,Cz)).cu(J4(f));c=D0(b,J4(f));i +=G1(b);j=GM(b);k=Fi(b);l=Cr(f);MY();b=l.qV(AEb,null,0,null);l=Cr(f);Ed();b=l.E0(c,b,FR);c=g.b5a;l=S0(b,c);f.bVM=XJ(i,h,e,A85(AKv(l,j,(Cr(f)).hr()),f,k),d,k);return f;}b=new Bt;X(b);J(b);}return Fhi(b,c,e);},CE5=(a,b)=>{let c,d,e,f;c=DcQ(a,b);d=De(a.bVM,b);e=a.bQy.a32(b);f=(c.bGF-e.bGF)/2.0;b=a.clW;HK();return Bh(b!==Lr?0.0:d.bGE+20.0,f);},EfT=(a,b,c)=>{if(b===a.bQy)return LR();return BSj(a,b,c);},Ec2=(a,b)=>{let c,d,e,f,g,h,i,j;c=b instanceof A5H;d=!c?null:b.bSC;e=b.hE();f=De(a.bVM,e);g=a.clW;HK();if(g!==Lr) +{DC();g=FL;h=BA(0.0,f.bGF/2.0);i=BA((-20.0),f.bGF/2.0);AV4(a.bVM,g,h,i);}else{DC();g=Gy;h=BA(f.bGE,f.bGF/2.0);i=BA(f.bGE+20.0,f.bGF/2.0);AV4(a.bVM,g,h,i);}a:{if(c){g=a.ck8;if(g!==null&&d!==g)break a;}g=a.bVM;d=b.hE();f=Dj(a,d);d=De(a.bVM,d);h=a.cPv;Fa();j=h!==Hg?0.0:(f.bGF-d.bGF)/2.0;ADH(g,b.h2(a.clW===Lr?BW(j):Bh(f.bGE-d.bGE,j)));}(b.h2(CE5(a,e))).hP(a.bQy);},D0h=(a,b)=>{let c,d,e,f,g,h;c=DcQ(a,b);d=a.bQy.a32(b);e=CE5(a,b);if(Ew(d)){b=new JD;f=d.bGY+e.bHj;g=d.bHi;h=e.bHu;BP2(b,c,f,g+h,d.bHH+h);return b;}return AB9(c, +d.bGY+e.bHj,d.bHi+e.bHu);},DcQ=(a,b)=>{let c,d,e;c=De(a.bVM,b);d=a.bQy.a32(b);e=BC(c.bGF,d.bGF);return Cl(d.bGE+1.0*c.bGE+20.0,e);},DTG=(a,b,c)=>{return (-6.0);},Fw3=(a,b,c)=>{return (De(a.bVM,b)).bGE-6.0;},DX7=a=>{return a.bQy.Xm();}; +function CMd(){Fc.call(this);this.bXE=null;} +let Eea=(a,b)=>{Jd(a,b.Xs());a.bXE=b;},A2L=a=>{let b=new CMd();Eea(b,a);return b;},Eve=a=>{return a.bXE.a33();},EXc=a=>{return a.bXE.a34();},DSH=a=>{return a.bXE.a35();},Fn7=a=>{return a.bXE.a36();},D_h=(a,b)=>{let c;c=a.bXE.a32(b);return AB9(a.bXE.a32(b),c.bGY,c.bHi);},Fm8=(a,b)=>{b.hP(a.bXE);}; +function BS7(){WJ.call(this);this.cTH=null;} +let DSY=N(),DdQ=(b,c)=>{let d,e;d=new BLO;e=K(ACh,1);e.data[0]=B$(c);Ct1(d,b,Bv(e));return d;},QF=(b,c)=>{if(c.bGJ)return DTH(b,c);return b;},Cs9=(b,c,d)=>{if(c===0.0&&d===0.0)return b;return C4a(b,c,d);},BoU=(b,c,d)=>{if(c===0.0&&d===0.0)return b;return CZL(b,c,d);},AJL=(b,c)=>{if(c!==0.0)return CZL(b,c,c);return b;}; +function B3z(){let a=this;Fc.call(a);a.bWA=null;a.bVR=null;a.bXZ=null;a.cnf=null;a.dbh=20.0;} +let EW9=a=>{return a.bWA.a34();},D_R=a=>{return a.bWA.a35();},Ey8=a=>{return a.bWA.a36();},CHy=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p;Jd(a,b.Xs());a.dbh=20.0;a.cnf=d;a.bWA=b;b=c.dX();while(b.dY()){e=b.dZ();f=Cr(a);c=e.b0h;if(c!==null)AHL(c,f);d=(Cr(a)).cp();B8();g=ZT(B0(d,A23),e.b0h);B9();h=(BJ(g,CK)).cu(J4(a));i=(BJ(g,Cz)).cu(J4(a));j=D0(g,J4(a));k=G1(g);l=GM(g);m=Fi(g);c=Cr(a);d=Cr(a);B3();d=d.AZ(CF);Ed();c=c.E0(j,d,FR);d=e.b5a;n=AKv(S0(c,d),l,(Cr(a)).hr());o=new AGu;c=new C90;c.c$5=a;c.c3v=n;AUC(o,n,c,GT());p +=Js(XJ(k,i,h,o,0,m),10.0,10.0);d=e.b9O;HK();if(d!==Lr){c=a.bXZ;if(c===null)a.bXZ=p;else a.bXZ=FT(c,p,CO);}else{c=a.bVR;if(c===null)a.bVR=p;else a.bVR=FT(c,p,CO);}}if(a.bVR===null)a.bVR=E6(0.0,0.0);if(a.bXZ===null)a.bXZ=E6(0.0,0.0);},Fhi=(a,b,c)=>{let d=new B3z();CHy(d,a,b,c);return d;},Cgr=(a,b)=>{let c,d,e;c=Bt3(a,b);d=a.bWA.a32(b);e=(a.bVR.cF(b)).bGE;b=a.cnf;Fa();return Bh(e,b===NH?0.0:(c.bGF-d.bGF)/2.0);},E9z=(a,b)=>{let c,d,e,f,g,h,i;c=b.hE();d=a.bVR;e=Bt3(a,c);f=a.bVR.cF(c);g=a.cnf;Fa();h=g===NH?0.0:(e.bGF +-f.bGF)/2.0;d.cC(b.h2(Bh(0.0,h)));g=a.bXZ;i=Bt3(a,c);d=a.bXZ.cF(c);g.cC(b.h2(Bh(i.bGE-d.bGE,a.cnf===NH?0.0:(i.bGF-d.bGF)/2.0)));(b.h2(Cgr(a,c))).hP(a.bWA);},DQj=(a,b)=>{let c,d,e,f,g,h;c=Bt3(a,b);d=a.bWA.a32(b);e=Cgr(a,b);if(Ew(d)){b=new JD;f=d.bGY+e.bHj;g=d.bHi;h=e.bHu;BP2(b,c,f,g+h,d.bHH+h);return b;}return AB9(c,d.bGY+e.bHj,d.bHi+e.bHu);},Bt3=(a,b)=>{let c,d,e,f;c=a.bWA.a32(b);d=a.bVR.cF(b);e=a.bXZ.cF(b);f=ADF(d.bGF,e.bGF,c.bGF);return Cl(c.bGE+d.bGE+e.bGE,f);},FlX=a=>{return a.bWA.Xm();},Dam=N(0),A6B=N(0); +function CY4(){let a=this;F.call(a);a.cGU=null;a.csC=null;a.cfy=0.0;a.ctB=null;a.cSI=0.0;a.cNi=null;} +let D3V=(a,b)=>{let c,d,e,f,g,h,i,j;c=b.hE();d=Cl(a.cfy,a.cSI);b=Ef(a.cGU,b);e=a.csC.cF(c);f=a.cNi;g=d.bGE;h=d.bGF;d=a.cGU;DsD(f,b,g,h,d.bHm,d.bIR,d.bQF);i=(a.cfy-e.bGE)/2.0;a.csC.cC(b.h2(Bh(i,2.0)));f=a.ctB.cF(c);j=(a.cfy-f.bGE)/2.0;a.ctB.cC(b.h2(Bh(4.0+j,2.0+(e.bGE!==0.0?e.bGF:10.0))));}; +function CAL(){let a=this;F.call(a);a.czf=null;a.ctp=null;a.cXz=null;a.b3V=0.0;a.cq$=null;a.c2U=null;a.cM9=0.0;a.cnH=null;} +let EO3=(a,b)=>{let c,d,e,f,g,h,i,j;b.hE();c=Cl(a.b3V,a.cM9);b=Ef(a.czf,b);d=a.cnH;e=c.bGE;f=c.bGF;g=a.czf;CYm(d,b,e,f,g.bHm,g.bIR,g.bQF);d=a.ctp.cF(b.hE());g=a.cXz;B3();if(g!==Ft){h=(a.b3V-d.bGE)/2.0;i=2.0;}else{h=a.b3V-d.bGE-(Bqw(a.cnH)).bJr/2.0;i=(Bqw(a.cnH)).bJB/2.0;}a.ctp.cC(b.h2(Bh(h,i)));g=a.cq$.cF(b.hE());c=a.c2U;j=c===CF?3.0:c!==Ft?(a.b3V-g.bGE)/2.0:a.b3V-g.bGE-3.0;a.cq$.cC(b.h2(Bh(j,2.0+d.bGF)));}; +function Cw7(){let a=this;F.call(a);a.ctc=null;a.cI3=null;a.cfb=0.0;a.cu6=null;a.c5c=0.0;a.cUD=null;} +let Dx1=(a,b)=>{let c,d,e,f,g,h;b.hE();c=Cl(a.cfb,a.c5c);b=Ef(a.ctc,b);d=a.cUD;e=c.bGE;f=c.bGF;g=a.ctc;DdY(d,b,e,f,g.bHm,g.bIR);d=a.cI3.cF(b.hE());h=(a.cfb-d.bGE)/2.0;a.cI3.cC(b.h2(Bh(h,2.0)));g=a.cu6.cF(b.hE());e=(a.cfb-g.bGE)/2.0;a.cu6.cC(b.h2(Bh(e,2.0+d.bGF)));}; +function CYU(){let a=this;F.call(a);a.cDP=null;a.cFx=null;a.czx=null;a.cfs=0.0;a.cJ9=0.0;a.c5E=null;} +let EJB=(a,b)=>{let c,d,e,f,g,h,i,j;b.hE();c=Cl(a.cfs,a.cJ9);b=Ef(a.cDP,b);d=a.cFx.cF(b.hE());e=a.czx.cF(b.hE());f=a.c5E;g=c.bGE;h=c.bGF;c=a.cDP;Ddj(f,b,g,h,c.bHm,e.bGF+d.bGF+4.0,c.bIR);i=(a.cfs-d.bGE)/2.0;a.cFx.cC(b.h2(Bh(i,2.0)));j=(a.cfs-e.bGE)/2.0;a.czx.cC(b.h2(Bh(j,2.0+d.bGF)));}; +function CRi(){let a=this;F.call(a);a.cIV=null;a.cyv=null;a.cjL=0.0;a.cAu=null;a.cRL=0.0;a.cWC=null;} +let EBE=(a,b)=>{let c,d,e,f,g;b.hE();c=Cl(a.cjL,a.cRL);b=Ef(a.cIV,b);CsH(a.cWC,b,c.bGE,c.bGF,a.cIV.bHm);d=a.cyv.cF(b.hE());e=(a.cjL-d.bGE)/2.0;a.cyv.cC(b.h2(Bh(e,13.0)));f=a.cAu.cF(b.hE());g=(a.cjL-f.bGE)/2.0;a.cAu.cC(b.h2(Bh(g,13.0+d.bGF)));}; +function DkJ(){let a=this;F.call(a);a.cvt=null;a.cx6=null;a.c1G=null;a.b_9=0.0;a.cAz=null;a.cNL=0.0;a.cpx=null;} +let D2P=(a,b)=>{let c,d,e,f,g,h,i;b.hE();c=Cl(a.b_9,a.cNL);b=Ef(a.cvt,b);d=a.cpx;e=c.bGE;f=c.bGF;g=a.cvt;DhE(d,b,e,f,g.bHm,g.bIR);d=a.cx6.cF(b.hE());g=a.c1G;B3();if(g!==Ft){h=(a.b_9-d.bGE)/2.0;i=2.0;}else{h=a.b_9-d.bGE-(Byf(a.cpx)).bJr/2.0;i=(Byf(a.cpx)).bJB/2.0;}a.cx6.cC(b.h2(Bh(h,i)));g=a.cAz.cF(b.hE());e=(a.b_9-g.bGE)/2.0;a.cAz.cC(b.h2(Bh(e,2.0+d.bGF)));}; +function Cbc(){let a=this;F.call(a);a.crw=null;a.cD1=null;a.ciy=0.0;a.cwP=null;a.cQQ=0.0;a.cVV=null;} +let DQN=(a,b)=>{let c,d,e,f,g,h;b.hE();c=Cl(a.ciy,a.cQQ);b=Ef(a.crw,b);d=a.cVV;e=c.bGE;f=c.bGF;g=a.crw;CSs(d,b,e,f,g.bHm,g.bIR);d=a.cD1.cF(b.hE());h=(a.ciy-d.bGE)/2.0;a.cD1.cC(b.h2(Bh(h,13.0)));g=a.cwP.cF(b.hE());e=(a.ciy-g.bGE)/2.0;a.cwP.cC(b.h2(Bh(e,13.0+d.bGF)));}; +function CAg(){let a=this;F.call(a);a.cAA=null;a.crT=null;a.cmZ=0.0;a.cEI=null;a.cSE=0.0;a.c1i=null;} +let Efg=(a,b)=>{let c,d,e,f,g;b.hE();c=Cl(a.cmZ,a.cSE);b=Ef(a.cAA,b);CUM(a.c1i,b,c.bGE,c.bGF,a.cAA.bHm);d=a.crT.cF(b.hE());e=(a.cmZ-d.bGE)/2.0;a.crT.cC(b.h2(Bh(e,22.0)));f=a.cEI.cF(b.hE());g=(a.cmZ-f.bGE)/2.0;a.cEI.cC(b.h2(Bh(g,22.0+d.bGF)));}; +function Co6(){let a=this;F.call(a);a.cAC=null;a.cCH=null;a.b9x=0.0;a.cs7=null;a.cL0=0.0;a.cpo=null;} +let EEY=(a,b)=>{let c,d,e,f,g,h,i;b.hE();c=Cl(a.b9x,a.cL0);b=Ef(a.cAC,b);d=a.cpo;e=c.bGE;f=c.bGF;g=a.cAC;CGG(d,b,e,f,g.bHm,g.bIR);d=a.cCH.cF(b.hE());g=a.cpo;c=g.c4q;B3();if(c!==Ft){h=(a.b9x-d.bGE)/2.0;e=2.0;}else{h=a.b9x-d.bGE-(Buf(g)).bJr/2.0;e=(Buf(a.cpo)).bJB/2.0;}a.cCH.cC(b.h2(Bh(h,e)));g=a.cs7.cF(b.hE());i=(a.b9x-g.bGE)/2.0;a.cs7.cC(b.h2(Bh(i,2.0+d.bGF)));}; +function CIJ(){let a=this;F.call(a);a.cEN=null;a.ciR=null;a.cEe=null;a.cyG=0.0;a.c1Y=0.0;a.cdf=null;} +let EOa=(a,b)=>{let c,d,e,f,g,h,i;c=b.hE();d=CBE(a,c);b=Ef(a.cEN,b);e=a.ciR.cF(c);f=a.cdf;g=d.bGE;h=d.bGF;d=a.cEN;Czm(f,b,g,h,e,d.bHm,d.bIR);a.ciR.cC(b.h2(Bh(4.0,2.0)));f=a.cEe.cF(c);i=(a.cyG-f.bGE)/2.0;a.cEe.cC(b.h2(Bh(4.0+i,2.0+By5(a.cdf,e))));},CBE=(a,b)=>{return Cl(a.cyG,a.c1Y);},D8i=a=>{let b;b=new Crn;b.cbb=a;return b;}; +function C_v(){let a=this;F.call(a);a.cuy=null;a.b9I=null;a.cH5=null;a.cy$=0.0;a.cLj=0.0;a.cwo=null;} +let DR$=(a,b)=>{let c,d,e,f,g,h,i;c=b.hE();d=Cl(a.cy$,a.cLj);b=Ef(a.cuy,b);e=a.b9I.cF(c);f=d.bGE;g=a.cwo;h=d.bGF;d=a.cuy;C2$(g,b,f,h,e,d.bHm,d.bIR);if(f-(a.b9I.cF(c)).bGE<25.0)a.b9I.cC(b.h2(Bh(3.0,1.0)));else (b.h2(Bh(3.0,1.0))).hP(CFm(a.b9I));g=a.cH5.cF(c);i=(a.cy$-g.bGE)/2.0;a.cH5.cC(b.h2(Bh(4.0+i,2.0+CgW(a.cwo,e))));}; +function CBP(){let a=this;F.call(a);a.cuG=null;a.cuj=null;a.cY9=null;a.b44=0.0;a.cFp=null;a.cZ1=null;a.cNP=0.0;a.cuT=null;} +let Etr=(a,b)=>{let c,d,e,f,g,h,i,j,k;b.hE();c=Cl(a.b44,a.cNP);b=Ef(a.cuG,b);d=c.bGE;e=c.bGF;f=a.cuG.bHm;g=EE();h=d/8.0;i=e/2.0;Ec(g,0.0,i);B2(g,h,0.0);j=d-h;B2(g,j,0.0);B2(g,d,i);B2(g,j,e);B2(g,h,e);B2(g,0.0,i);g.bG1=f;b.hP(g);g=a.cuj.cF(b.hE());k=a.cY9;B3();if(k!==Ft){h=(a.b44-g.bGE)/2.0;i=2.0;}else{h=a.b44-g.bGE-(CrB(a.cuT)).bJr/2.0;i=(CrB(a.cuT)).bJB/2.0;}a.cuj.cC(b.h2(Bh(h,i)));k=a.cFp.cF(b.hE());c=a.cZ1;j=c===CF?3.0:c!==Ft?(a.b44-k.bGE)/2.0:a.b44-k.bGE-3.0;a.cFp.cC(b.h2(Bh(j,2.0+g.bGF)));}; +function CK1(){let a=this;F.call(a);a.cO7=null;a.cBF=null;a.cSx=null;a.ceb=0.0;a.csS=null;a.cR$=null;a.c8w=0.0;a.cxM=null;} +let ElV=(a,b)=>{let c,d,e,f,g,h;b=Ef(a.cO7,b);c=a.cBF.cF(b.hE());d=a.cSx;B3();if(d!==Ft){e=(a.ceb-c.bGE)/2.0;f=2.0;}else{e=a.ceb-c.bGE-(Bc_(a.cxM)).bJr/2.0;f=(Bc_(a.cxM)).bJB/2.0;}a.cBF.cC(b.h2(Bh(e,f)));d=a.csS.cF(b.hE());g=a.cR$;h=g===CF?3.0:g!==Ft?(a.ceb-d.bGE)/2.0:a.ceb-d.bGE-3.0;a.csS.cC(b.h2(Bh(h,2.0+c.bGF)));}; +function CLj(){let a=this;F.call(a);a.csK=null;a.czp=null;a.c2x=null;a.b9U=0.0;a.cst=null;a.cNQ=0.0;a.cyL=null;} +let DKo=(a,b)=>{let c,d,e,f,g;b.hE();c=Cl(a.b9U,a.cNQ);b=Ef(a.csK,b);CGf(a.cyL,b,c.bGE,c.bGF,a.csK.bHm);b=b.h2(Bh((-4.0),11.0));d=a.czp.cF(b.hE());e=a.c2x;B3();f=e!==Ft?(a.b9U-d.bGE)/2.0:a.b9U-d.bGE-(BX1(a.cyL)).bJr;a.czp.cC(b.h2(Bh(f,2.0)));e=a.cst.cF(b.hE());g=(a.b9U-e.bGE)/2.0;a.cst.cC(b.h2(Bh(g,2.0+d.bGF)));}; +function CMh(){let a=this;F.call(a);a.ctI=null;a.cIi=null;a.cqk=0.0;a.cAR=null;a.cQJ=0.0;a.cYI=null;} +let ERN=(a,b)=>{let c,d,e,f,g,h,i,j;c=b.hE();d=Cl(a.cqk,a.cQJ);b=Ef(a.ctI,b);e=a.cIi.cF(c);f=a.cYI;g=d.bGE;h=d.bGF;d=a.ctI;CXv(f,b,g,h,d.bHm,d.bIR,d.bQF);i=(a.cqk-e.bGE)/2.0;a.cIi.cC(b.h2(Bh(i,2.0)));f=a.cAR.cF(c);j=(a.cqk-f.bGE)/2.0;a.cAR.cC(b.h2(Bh(4.0+j,2.0+(e.bGE!==0.0?e.bGF:10.0))));}; +function C6Z(){let a=this;F.call(a);a.cxP=null;a.csZ=null;a.cl7=0.0;a.cIx=null;a.cTf=0.0;a.cZs=null;} +let EWT=(a,b)=>{let c,d,e,f,g;b.hE();c=Cl(a.cl7,a.cTf);b=Ef(a.cxP,b);C1n(a.cZs,b,c.bGE,c.bGF,a.cxP.bHm);d=a.csZ.cF(b.hE());e=(a.cl7-d.bGE)/2.0;a.csZ.cC(b.h2(Bh(e,2.0)));f=a.cIx.cF(b.hE());g=(a.cl7-f.bGE)/2.0;a.cIx.cC(b.h2(Bh(g,2.0+d.bGF)));}; +function C_i(){let a=this;F.call(a);a.cxw=null;a.cqH=null;a.chz=0.0;a.cw7=null;a.c6_=0.0;a.cX7=null;} +let DWm=(a,b)=>{let c,d,e,f,g,h;b.hE();c=Cl(a.chz,a.c6_);b=Ef(a.cxw,b);d=a.cX7;e=c.bGE;f=c.bGF;g=a.cxw;CkV(d,b,e,f,g.bHm,g.bIR);d=a.cqH.cF(b.hE());h=(a.chz-d.bGE)/2.0;a.cqH.cC(b.h2(Bh(h,13.0)));g=a.cw7.cF(b.hE());e=(a.chz-g.bGE)/2.0;a.cw7.cC(b.h2(Bh(e,13.0+d.bGF)));}; +function CJF(){let a=this;F.call(a);a.cFS=null;a.cGO=null;a.ch$=0.0;a.cz_=null;a.cY6=0.0;a.c36=null;} +let DTu=(a,b)=>{let c,d,e,f,g;b.hE();c=Cl(a.ch$,a.cY6);b=Ef(a.cFS,b);CRc(a.c36,b,c.bGE,c.bGF,a.cFS.bHm);d=a.cGO.cF(b.hE());e=(a.ch$-d.bGE)/2.0;a.cGO.cC(b.h2(Bh(e,5.0)));f=a.cz_.cF(b.hE());g=(a.ch$-f.bGE)/2.0;a.cz_.cC(b.h2(Bh(g,7.0+d.bGF)));},FwE=N(),Bn7=(b,c,d)=>{let e,f,g;e=EE();if(d===0.0){Ec(e,0.0,0.0);B2(e,b,0.0);B2(e,b,c);B2(e,0.0,c);}else{f=d/2.0;Ec(e,0.0,0.0);g=b-f;B2(e,g,0.0);HX(e,BA(b,f),f,0.0,1.0);B2(e,b,c-f);HX(e,BA(g,c),f,0.0,1.0);B2(e,0.0,c);}return e;},Bdq=(b,c,d)=>{let e,f;e=EE();if(d===0.0){Ec(e, +b,c);B2(e,0.0,c);B2(e,0.0,0.0);B2(e,b,0.0);}else{f=d/2.0;Ec(e,b,c);B2(e,f,c);HX(e,BA(0.0,c-f),f,0.0,1.0);B2(e,0.0,f);HX(e,BA(f,0.0),f,0.0,1.0);B2(e,b,0.0);}return e;}; +function Dgv(){let a=this;F.call(a);a.c50=null;a.c5U=0;} +function Dre(){let a=this;F.call(a);a.ddv=null;a.b_e=null;a.cGR=0;} +let EZk=(a,b)=>{let c;if(!a.cGR){a.b_e=b;a.cGR=1;}else{c=a.b_e;if(T1(c.bHl,b.bHl)>=0)b=c;a.b_e=b;}return 1;}; +function Bxv(){let a=this;F.call(a);a.bS0=null;a.bS4=null;a.bTJ=null;} +let BVH=(b,c,d)=>{Gp(b,E(8415));Gp(c,E(4557));Gp(d,E(4558));if(!Yv(c,d)){if(b.bH8.bLL){b=new Bt;Bp(b,E(8416));J(b);}return DbO(b,c,d);}b=new Bt;Bp(b,E(8417));J(b);},E8y=(a,b,c,d)=>{a.bS0=b;a.bS4=c;a.bTJ=d;},DbO=(a,b,c)=>{let d=new Bxv();E8y(d,a,b,c);return d;},BZ0=a=>{let b,c;b=a.bS0;c=a.bS4;return CWX(b,c);},DkM=a=>{let b,c;b=a.bS0;c=a.bS4;return Doq(b,c);},Dsk=a=>{return AIN(a.bS0,V(a.bTJ.bI6-a.bS4.bI6|0));},CZQ=a=>{return a.bTJ.bI6<=a.bS4.bI6?0:1;},Fla=(a,b)=>{let c;if(b!==a){if(b instanceof Bxv){c=b;return !(B8X(a.bS0, +c.bS0)&&Yv(a.bS4,c.bS4)&&Yv(a.bTJ,c.bTJ))?0:1;}return 0;}return 1;},ESa=a=>{return BVf(a.bS0)^a.bS4.bI6^C1Z(a.bTJ.bI6,16);},EEa=a=>{let b,c;b=new S;T(b);L(b,E(8418));L(b,!CZQ(a)?E(8419):E(8420));L(b,E(1761));c=H(H(b,a.bS0),a.bS4);L(c,E(95));Bb(H(c,a.bTJ),93);return Q(b);},ELk=(a,b)=>{let c,d;b=b;c=BZ0(a);b=BZ0(b);d=BAK(c.bSG,b.bSG);if(!d)d=c.bWT-b.bWT|0;return d;}; +function A0R(){let a=this;F.call(a);a.bUv=null;a.bUB=0;a.b3i=null;a.b3k=null;a.b0r=0;a.b40=null;a.b8T=null;a.bW5=null;a.b0x=null;} +let EYC=(a,b)=>{let c,d;if(b!==a){if(b instanceof A0R){a:{b:{c:{c=b;if(a.bUv!==c.bUv)break c;if(a.bUB!=c.bUB)break c;if(a.b3i!==c.b3i)break c;if(a.b40!==c.b40)break c;if(a.b0r!=c.b0r)break c;if(!AC8(a.b3k,c.b3k))break c;if(!Yv(a.b8T,c.b8T))break c;if(!Yv(a.bW5,c.bW5))break c;if(Yv(a.b0x,c.b0x))break b;}d=0;break a;}d=1;}return d;}return 0;}return 1;},DQl=a=>{let b,c;b=(((A5V(a.b3k)+a.b0r|0)<<15)+(a.bUv.bGO<<11)|0)+((a.bUB+32|0)<<5)|0;c=a.b3i;return ((b+((c===null?7:c.bGO)<<2)|0)+a.b40.bGO|0)^a.b8T.bI6^a.bW5.bI6 +^a.b0x.bI6;},En2=a=>{let b,c,d,e;b=new S;T(b);L(b,E(8421));L(b,Ckm(a.bW5,a.b0x)<=0?E(8422):E(8423));c=H(b,a.bW5);L(c,E(95));L(H(c,a.b0x),E(50));c=a.b3i;if(c===null){L(b,a.bUv.bHx);Bb(b,32);BE(b,a.bUB);}else{d=a.bUB;if(d==(-1)){L(b,c.bHx);L(b,E(8424));L(b,a.bUv.bHx);}else if(d>=0){L(b,c.bHx);L(b,E(8425));L(b,a.bUv.bHx);Bb(b,32);BE(b,a.bUB);}else{L(b,c.bHx);L(b,E(8426));BE(b,( -a.bUB|0)-1|0);L(b,E(2457));L(b,a.bUv.bHx);}}L(b,E(1761));if(!a.b0r)H(b,a.b3k);else{e=V((A5V(a.b3k)/60|0)+((a.b0r*24|0)*60|0)|0);Cy2(a, +b,AEY(e,60));Bb(b,58);Cy2(a,b,V(AJk(e,60)));}L(b,E(344));c=H(b,a.b40);L(c,E(8427));Bb(H(c,a.b8T),93);return Q(b);},Cy2=(a,b,c)=>{if(GR(c,V(10)))BE(b,0);QN(b,c);}; +function CPu(){let a=this;F.call(a);a.dbq=0;a.dbp=0;} +function COn(){let a=this;F.call(a);a.cRt=null;a.cXs=null;} +let FvC=a=>{return a.cRt;},EkU=a=>{return a.cXs;},Cz7=N(),D0L=(a,b,c)=>{b=b;c=c;return A$W(b.bJM-c.bJM)|0;},B6x=N(0); +function Dgs(){let a=this;F.call(a);a.c8e=null;a.daU=null;} +let EeK=(a,b)=>{let c,d;c=new BPk;AOv();c.bQQ=0;ABh();d=Cw;c.crF=d;c.b$c=d;c=Jt((BN5(c,b,0)).data[0],E(8428),E(8429));a.daU=c;a.c8e=DsC(c);},E$O=a=>{let b=new Dgs();EeK(b,a);return b;}; +function CpD(){F.call(this);this.dcg=null;} +function Cjl(){F.call(this);this.c8v=null;} +let Fn_=(a,b)=>{a.c8v=b;},DsC=a=>{let b=new Cjl();Fn_(b,a);return b;}; +function B_m(){F.call(this);this.dcG=null;} +function C_c(){F.call(this);this.cEM=null;} +let FhB=N(),BEE=b=>{let c;a:{b:{if(DS(CN(b,V(3)),BH)){if(D4(Fl(b,V(100)),BH))break b;if(DS(Fl(b,V(400)),BH))break b;}c=0;break a;}c=1;}return c;}; +function CgT(){let a=this;F.call(a);a.chU=null;a.b5B=null;a.cEG=null;} +let DWu=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m;a.chU=Bk();a.b5B=Bk();a.cEG=c;d=Br(Fgs(b));while(Bq(d)){e=Bm(d);if(e.bL()==1&&AV2(e.u(0))){b=a.b5B;c=OU(e.u(0));U(b,c);}else{b=a.b5B;c=e.p();f=AVs(DM(c));U(b,f);}}b=a.b5B;c=Bk();b=Br(b);d=null;g=b;while(Bq(g)){b=Bm(g);if(b instanceof ATN){f=c;U(f,d);U(f,b);h=A5W(d)-1|0;}else{U(c,b);d=b;i=d.bWL;if(i==109)d=OU(108);else if(i==77)d=OU(76);h=A5W(d);}i=0;while(i{let c=new CgT();DWu(c,a,b);return c;},DHO=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n;d=EE();e=null;f=Br(a.chU);while(true){if(!Bq(f)){g=a.cEG;return A6x(d,g.bHj*b,g.bHu*c);}h=Bm(f);i=AJT(h);j=Ut(h);if(i==77)Ec(d,Tw(j)*b,Sq(j)*c);else if(i==67){k=KR(h,0);l=KR(h,2);HY(d,Tw(k)*b,Sq(k)*c,Tw(l)*b,Sq(l)*c,Tw(j)*b,Sq(j)*c);}else if(i==81){m=KR(h,0);HY(d,Tw(m)*b,Sq(m)*c,Tw(m)*b,Sq(m)*c,Tw(j)*b,Sq(j)*c);}else if(i==84){if(e.bD7()!=81)break;g=e.bD$(0);m=(e.bD_()).bEa(g);HY(d,m.bEb()*b,m.bEc()*c,m.bEb() +*b,m.bEc()*c,Tw(j)*b,Sq(j)*c);}else if(i==76)B2(d,Tw(j)*b,Sq(j)*c);else if(i==65)Mk(d,Zw(h,0)*b,Zw(h,1)*c,Zw(h,2),Zw(h,3),Zw(h,4),Tw(j)*b,Sq(j)*c);else if(i!=90){g=new BV;n=new S;T(n);Bb(H(n,E(8430)),i);Bp(g,Q(n));J(g);}}g=new Bt;X(g);J(g);},FtE=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;c=EE();d=null;e=Br(a.chU);while(Bq(e)){f=Bm(e);g=AJT(f);h=Ut(f);if(g==77)AMc(c,Qe(h,b));else if(g==67){i=KR(f,0);j=KR(f,2);AXb(c,Qe(i,b),Qe(j,b),Qe(h,b));}else if(g==81){k=KR(f,0);AXb(c,Qe(k,b),Qe(k,b),Qe(h,b));}else if(g +==84){if(AJT(d)==81){l=KR(d,0);k=Bl8(Ut(d),l);AXb(c,Qe(k,b),Qe(k,b),Qe(h,b));}else{if(AJT(d)!=84){b=new Bt;m=AJT(d);c=new S;T(c);Bb(c,m);Bp(b,Q(c));J(b);}l=KR(d,0);k=Bl8(Ut(d),l);AXb(c,Qe(k,b),Qe(k,b),Qe(h,b));}}else if(g==76)Wx(c,Qe(h,b));else if(g==65){n=Zw(f,0);o=Zw(f,1);p=Zw(f,2);q=Zw(f,3);r=Zw(f,4);s=Qe(h,b);Mk(c,n*b.bMu,o*b.bMt,p,q,r,s.bGK,s.bGL);}else if(g!=90){b=new BV;c=new S;T(c);Bb(H(c,E(8430)),g);Bp(b,Q(c));J(b);}d=f;}s=a.cEG;return A6x(c,s.bHj*b.bMu,s.bHu*b.bMt);}; +function C7A(){let a=this;F.call(a);a.cuf=0.0;a.cHT=null;} +let D11=(a,b,c)=>{b=a.cHT;c=c+a.cuf;return b.ck2+Dk3(b.ceJ,Dm_(b,c));},EMW=(a,b,c)=>{b=a.cHT;c=c+a.cuf;return b.ck2+Cwk(b.ceJ,Dm_(b,c));}; +function Cl1(){let a=this;F.call(a);a.cvd=0.0;a.cB8=null;} +let Efd=(a,b,c)=>{b=a.cB8;c=c+a.cvd;return b.com+Dk3(b.caJ,Dq2(b,c));},EjT=(a,b,c)=>{b=a.cB8;c=c+a.cvd;return b.com+Cwk(b.caJ,Dq2(b,c));}; +function CBc(){let a=this;K2.call(a);a.cSJ=null;a.cQ4=null;} +let DHY=a=>{return a.cSJ;},Ein=a=>{return a.cQ4;}; +function C90(){let a=this;F.call(a);a.c3v=null;a.c$5=null;} +let Fqx=(a,b,c)=>{return (-6.0);},Ebd=(a,b,c)=>{return B5h(a.c3v,b,c)+15.0;},C0h=N(),EUA=a=>{return 0;},Fkz=a=>{return 0;},Eqd=(a,b)=>{b=new BV;X(b);J(b);}; +function CoZ(){F.call(this);this.c_7=null;} +let DQ3=(a,b,c)=>{let d;b=b;c=c;d=c.bGI.length-b.bGI.length|0;if(!d)d=J6(b,c);return d;}; +function Beg(){let a=this;A2K.call(a);a.b$P=null;a.b5y=null;a.bYT=null;a.db0=null;a.b6W=null;a.b5$=null;a.csI=null;} +let Ei1=(a,b,c,d,e,f)=>{let g,h,i,j,k,l,m,n;a.csI=Dy();a.b$P=Vu(d.dV());g=K(AOQ,d.dV()+1|0);h=g.data;a.b5y=g;h[0]=b;i=0;while(i15){b=new Bt;Bp(b, +E(8431));J(b);}g=K(A0R,f.dV());a.b5$=WW(f,g);},D6G=(a,b,c,d,e)=>{let f=new Beg();Ei1(f,a,b,c,d,e);return f;},CAP=a=>{return a.bYT.data.length?0:1;},BED=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p;c=b.bSG;if(a.b5$.data.length>0){d=a.bYT.data;if(G5(c,d[d.length-1|0])){d=a.b6W.data;e=(AGN(AEY(BU(c,V(d[d.length-1|0].bI6)),86400))).bKO;b=CL(e);d=DG(a.csI,b);if(d===null){f=a.b5$.data;g=f.length;d=K(Bxv,g);h=d.data;i=0;j=V(e);while(i=0){m=Bip(e,k.bUv,l);n=k.b3i;if(n!==null)m=C3c(m,CUb(0,n));}else +{m=k.bUv;Xp();m=Bip(e,m,(BRN(m,Bbi(ADc,j))+1|0)+k.bUB|0);n=k.b3i;if(n!==null)m=C3c(m,CUb(1,n));}a:{b:{c:{o=Bbd(Ep(m,V(k.b0r)),k.b3k);m=k.b40;n=k.b8T;p=k.bW5;switch(m.bGO){case 0:break b;case 2:break c;default:}break a;}o=AIN(o,V(p.bI6-n.bI6|0));break a;}l=p.bI6;TK();o=AIN(o,V(l-ACi.bI6|0));}h[i]=DbO(o,k.bW5,k.b0x);i=i+1|0;}if(e<2100)A6S(a.csI,b,d);}o=null;e=0;while(true){f=d.data;if(e>=f.length)break;o=f[e];if(GR(c,DkM(o)))return o.bS4;e=e+1|0;}return o.bTJ;}}l=Bv9(a.bYT,c);if(l<0)l=( -l|0)-2|0;return a.b6W.data[l ++1|0];},D4z=(a,b)=>{let c,d;if(a!==b){if(b instanceof Beg){c=b;return !(C3k(a.b$P,c.b$P)&&YT(a.b5y,c.b5y)&&C3k(a.bYT,c.bYT)&&YT(a.b6W,c.b6W)&&YT(a.b5$,c.b5$))?0:1;}if(b instanceof Bog){a:{b:{if(CAP(a)){ADJ();if(Yv(BED(a,AY2),b.bWk))break b;}d=0;break a;}d=1;}return d;}return 0;}return 1;},Fog=a=>{return CY9(a.b$P)^ME(a.b5y)^CY9(a.bYT)^ME(a.b6W)^ME(a.b5$);},D7R=a=>{let b,c,d;b=a.b5y.data;c=BY(b[b.length-1|0]);d=new S;T(d);Bb(H(H(d,E(8432)),c),93);return Q(d);},A8G=N(Bx),BmN=null,BzR=null,B6O=null,D4K=null,APU +=()=>{APU=Z(A8G);DC_();},EhD=(a,b,c)=>{APU();Ct(a,b,c);},BB2=(a,b)=>{let c=new A8G();EhD(c,a,b);return c;},DC_=()=>{let b,c,d;BmN=BB2(E(4358),0);BzR=BB2(E(8433),1);b=BB2(E(8434),2);B6O=b;c=K(A8G,3);d=c.data;d[0]=BmN;d[1]=BzR;d[2]=b;D4K=c;}; +function BK1(){let a=this;F.call(a);a.bH0=null;a.ce8=0;a.b5z=null;a.b7l=null;a.b7Y=null;a.caS=0;} +let Clz=a=>{if(a.ce8){a.bH0=E2(a.bH0);a.ce8=0;}},E$j=(a,b,c)=>{CEc(a,b,c,10);},BPX=(a,b)=>{let c=new BK1();E$j(c,a,b);return c;},CEc=(a,b,c,d)=>{a.b5z=b;a.b7l=c;a.bH0=ANg(DT(d,10));},BzI=(a,b,c)=>{let d=new BK1();CEc(d,a,b,c);return d;},CVO=a=>{let b;b=BzI(a.b5z,a.b7l,IB(a));b.caS=a.caS;return b;},Ci7=(a,b,c,d,e,f,g)=>{let h,i,j,k,l,m,n,o,p,q;h=B$(d.chC);i=d.cni;if(!B4q(i)){c=(c.h2(h)).h2(Cc(h));i=!A6r(i)?c.h2(ACn(AY9(i,e))):c.h2(Fi(a.b5z));j=0;k=0;while(k<(IB(a)-1|0)){l=Fk(a,k);k=k+1|0;m=Fk(a,k);n=AQp(l,m);if +(!(!j&&f!==null&&BQa(l,m)===f))CCF(a,i,n,null);else{CCF(a,i,n,f);j=1;}}o=d.cFa;if(o!==null){c=(i.h2(o)).h2(Cc(o));if(b!==null){c=c.h2(Dw(1.5));p=Fk(a,0);if(a.caS){ML();b.cwb=Nb;}((c.h2(I3(p))).h2(GT())).hP(b);}if(g!==null){b=c.h2(Dw(1.5));q=Fk(a,IB(a)-1|0);if(a.caS){ML();g.cwb=Nb;}((b.h2(I3(q))).h2(GT())).hP(g);}return;}b=new BP;X(b);J(b);}},CCF=(a,b,c,d)=>{let e,f,g,h,i;e=c.bQN;f=c.bM_;g=c.bSp;h=c.bSo;b=b.h2(Bh(e,f));if(d!==null){c=b.h2(Bh((g-e)/2.0,(h-f)/2.0));i=a.b7l;DC();if(d===HG)d=i.a$d();else if(d=== +G_)d=i.a$e();else if(d===FL)d=i.bEq();else if(d===Gy)d=i.bEr();else{b=new Bt;X(b);J(b);}c.hP(d);}b.hP(EB(g-e,h-f));},Eyl=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=b.bHj;d=b.bHu;e=QE(c,0.0);if(e&&d!==0.0){f=new Bt;b=BY(b);g=new S;T(g);H(H(g,E(8368)),b);Bp(f,Q(g));J(f);}f=BzI(a.b5z,a.b7l,IB(a));h=(Fk(a,IB(a)-2|0)).bGK;i=(Fk(a,IB(a)-2|0)).bGL;j=(Fk(a,IB(a)-1|0)).bGK;k=(Fk(a,IB(a)-1|0)).bGL;if(e&&h===j)h=h+c;if(d!==0.0&&i===k)i=i+d;j=j+c;k=k+d;e=0;while(e<(IB(a)-2|0)){A5l(f,Fk(a,e));e=e+1|0;}ATj(f,h,i);ATj(f,j,k);return f;},ATj +=(a,b,c)=>{let d,e;d=a.b7Y;if(d!==null){b=b-d.bHj;c=c-d.bHu;}if(!(isNaN(b)?1:0)){if(!(isNaN(c)?1:0)){if(IB(a)>0){d=B7E(a);if(d.bGK===b&&d.bGL===c)return;}Clz(a);e=a.bH0;d=BA(b,c);U(e,d);return;}d=new Bt;X(d);J(d);}d=new Bt;X(d);J(d);},A5l=(a,b)=>{ATj(a,b.bGK,b.bGL);},A0u=a=>{let b,c,d;b=new S;T(b);c=0;while(c<(IB(a)-1|0)){d=Fk(a,c);c=c+1|0;L(b,B_((BQa(d,Fk(a,c))).bHx,0,1));}return Q(b);},AIQ=(a,b)=>{let c,d;c=K(Nf,4);d=c.data;d[0]=ACI(a,b);d[1]=ACI(a,b+1|0);d[2]=ACI(a,b+2|0);d[3]=ACI(a,b+3|0);return Bv(c);},ACI +=(a,b)=>{return BQa(Fk(a,b),Fk(a,b+1|0));},IB=a=>{return a.bH0.bGJ;},Fk=(a,b)=>{return ARz(a,Be(a.bH0,b));},ARz=(a,b)=>{let c;c=a.b7Y;if(c!==null)return Cs(c,b);return b;},ClB=a=>{return Fk(a,0);},B7E=a=>{return Fk(a,IB(a)-1|0);},Cxn=a=>{let b,c;b=(Fk(a,0)).bGK;c=Br(a.bH0);while(Bq(c)){b=Eh(b,(ARz(a,Bm(c))).bGK);}return b;},EI6=a=>{let b,c,d,e,f,g,h,i;b=0;a:{while(b<(IB(a)-5|0)){c=AIQ(a,b);d=K(Nf,4);e=d.data;DC();f=G_;e[0]=f;e[1]=FL;e[2]=f;e[3]=Gy;if(NI(Bv(d),c))break a;d=K(Nf,4);e=d.data;f=G_;e[0]=f;e[1]=Gy;e[2] +=f;e[3]=FL;if(NI(Bv(d),c))break a;b=b+1|0;}return 0;}f=new Jn;g=b+1|0;h=(Fk(a,g)).bGK;i=b+3|0;Kz(f,h,(Fk(a,i)).bGL);EJ(a.bH0,i);c=a.bH0;b=b+2|0;EJ(c,b);EJ(a.bH0,g);Ik(a.bH0,g,f);return 1;},FeE=a=>{let b,c,d,e;if(IB(a)>4){b=AIQ(a,0);c=K(Nf,4);d=c.data;DC();d[0]=Gy;e=G_;d[1]=e;d[2]=FL;d[3]=e;if(NI(Bv(c),b)&&(Fk(a,3)).bGK>(Fk(a,0)).bGK){e=BA((Fk(a,3)).bGK,(Fk(a,0)).bGL);EJ(a.bH0,2);EJ(a.bH0,1);Ik(a.bH0,1,e);return 1;}}return 0;},DBM=a=>{let b,c,d,e,f,g,h,i;b=0;a:{while(b<(IB(a)-5|0)){c=AIQ(a,b);d=K(Nf,4);e=d.data;DC();f +=Gy;e[0]=f;e[1]=G_;e[2]=f;e[3]=HG;if(NI(Bv(d),c))break a;d=K(Nf,4);e=d.data;f=FL;e[0]=f;e[1]=G_;e[2]=f;e[3]=HG;if(NI(Bv(d),c))break a;b=b+1|0;}return 0;}f=new Jn;g=b+3|0;h=(Fk(a,g)).bGK;i=b+1|0;Kz(f,h,(Fk(a,i)).bGL);EJ(a.bH0,g);c=a.bH0;b=b+2|0;EJ(c,b);EJ(a.bH0,i);Ik(a.bH0,i,f);return 1;},Evg=a=>{let b,c,d,e,f,g,h,i,j;b=0;a:{while(b<(IB(a)-4|0)){c=AIQ(a,b);d=K(Nf,4);e=d.data;DC();f=G_;e[0]=f;g=Gy;e[1]=g;e[2]=f;e[3]=g;if(NI(Bv(d),c))break a;e=K(Nf,4);d=e.data;f=G_;d[0]=f;g=FL;d[1]=g;d[2]=f;d[3]=g;if(NI(Bv(e), +c))break a;b=b+1|0;}return 0;}f=new Jn;h=b+1|0;i=(Fk(a,h)).bGK;j=b+3|0;Kz(f,i,(Fk(a,j)).bGL);EJ(a.bH0,j);c=a.bH0;b=b+2|0;EJ(c,b);EJ(a.bH0,h);Ik(a.bH0,h,f);return 1;},DUY=a=>{let b,c,d,e,f,g,h,i,j;b=IB(a)-5|0;if(b>=0){c=AIQ(a,b);d=K(Nf,4);e=d.data;DC();f=G_;e[0]=f;e[1]=FL;e[2]=f;e[3]=Gy;if(NI(Bv(d),c)){g=b+1|0;f=Fk(a,g);if((Fk(a,b+4|0)).bGK>f.bGK){h=new Jn;i=(Fk(a,g)).bGK;j=b+3|0;Kz(h,i,(Fk(a,j)).bGL);EJ(a.bH0,j);f=a.bH0;j=b+2|0;EJ(f,j);EJ(a.bH0,g);Ik(a.bH0,g,h);return 1;}}}return 0;},EQ6=a=>{let b,c,d,e,f,g, +h,i,j;b=IB(a)-5|0;if(b>=0){c=AIQ(a,b);d=K(Nf,4);e=d.data;DC();f=G_;e[0]=f;e[1]=Gy;e[2]=f;e[3]=FL;if(NI(Bv(d),c)){g=b+1|0;f=Fk(a,g);if((Fk(a,b+4|0)).bGK+4.0{let b,c,d,e,f,g,h,i,j;b=0;a:{while(b<(IB(a)-4|0)){c=AIQ(a,b);d=K(Nf,4);e=d.data;DC();f=FL;e[0]=f;g=G_;e[1]=g;e[2]=f;e[3]=g;if(NI(Bv(d),c))break a;e=K(Nf,4);d=e.data;f=Gy;d[0]=f;g=G_;d[1]=g;d[2]=f;d[3]= +g;if(NI(Bv(e),c))break a;b=b+1|0;}return 0;}f=new Jn;h=b+3|0;i=(Fk(a,h)).bGK;j=b+1|0;Kz(f,i,(Fk(a,j)).bGL);EJ(a.bH0,h);c=a.bH0;b=b+2|0;EJ(c,b);EJ(a.bH0,j);Ik(a.bH0,j,f);return 1;},A04=N(Bx),AHc=null,Un=null,AS7=null,Cda=null,Oc=()=>{Oc=Z(A04);EDH();},E6t=(a,b,c)=>{Oc();Ct(a,b,c);},B5Z=(a,b)=>{let c=new A04();E6t(c,a,b);return c;},EDH=()=>{let b,c,d;AHc=B5Z(E(664),0);Un=B5Z(E(8435),1);b=B5Z(E(3549),2);AS7=b;c=K(A04,3);d=c.data;d[0]=AHc;d[1]=Un;d[2]=b;Cda=c;}; +function BPk(){let a=this;F.call(a);a.bQQ=0;a.crF=null;a.b$c=null;} +let CSK=null,Cbg=null,CEa=null,CGW=null,CxG=null,CVe=null,CVg=null,CAv=null,CXl=null,Bfg=null,Nt=null,AGf=null,AOv=()=>{AOv=Z(BPk);DQU();},AFt=(a,b,c,d)=>{if(d>b.bGI.length)return CC(b,c);return B_(b,c,d);},APA=(a,b,c,d)=>{d=c+d|0;if(d>b.bGI.length)return CC(b,c);return B_(b,c,d);},Fmx=()=>{let b,c,d,e,f,g,h,i,j,k;AOv();b=Nt.bGJ;c=0;while(c=d.bGJ)break;AGf.data[c]=(Be(d,c)).bIO;c=c+1|0;}},N7=(a,b,c)=>{let d,e;a:{b:{if(b.bGI.length>1&&b.bGI.length>c&&Bn(b,c)==92){d=c+1|0;if(Bn(b,d)!=92&&Bn(b,d)!=32)break b;}e=CC(b,c);break a;}e=CC(b,d);}d=0;while(d{let c,d,e,f,g,h,i,j,k,l,m,n,o;c=0;d=0;e=E(14);f +=1;g=1;while(g<=b.bGI.length&&f){h=B_(b,0,g);AOv();i=AGf;if(!c){i=i.data;j=(-1);c=i.length;while((j+1|0)>1;if(J6(i[f],h)>=0){c=f;continue;}j=f;}}else while(true){k=i.data;if(c>=k.length)break;if(J6(k[c],h)>=0)break;c=c+1|0;}i=AGf.data;if(c=0)?0:1;g=g+1|0;}a.crF=a.b$c;if(Bj(e,E(14))){ABh();a.b$c=Cw;j=1;h=AFt(a,b,0,1);l=1;while(J6(E(35),h) +<=0&&J6(h,E(3503))<=0&&j<=b.bGI.length){c=j+1|0;h=AFt(a,b,j,c);j=c;}a:{if(Bj(h,E(423))){c=j+1|0;h=AFt(a,b,j,c);if(J6(E(35),h)<=0&&J6(h,E(3503))<=0){l=0;b:{c:{while(J6(E(35),h)<=0){if(J6(h,E(3503))>0)break b;if(c>b.bGI.length)break c;d=c+1|0;h=AFt(a,b,c,d);c=d;}j=c;break a;}j=c;break a;}j=c;}}}if(!(!(l&&j>1)&&j<=2)){e=AFt(a,b,0,j-1|0);m=E(8436);}else d:{e:{e=AFt(a,b,0,1);if(!(J6(E(359),e)<=0&&J6(e,E(4357))<=0)){if(J6(E(2796),e)>0)break e;if(J6(e,E(5107))>0)break e;}m=E(8100);break d;}m=E(8437);}if(Bj(e,E(1272)) +&&b.bGI.length>1&&Bn(b,1)!=32){b=a.crF;h=XA;if(b===h){a.b$c=h;b=new Ds;h=null;n=D_;i=K(BI,2);k=i.data;SS();k[0]=Gg;k[1]=JE;Dz(b,e,m,e,h,n,i);return b;}}o=new Ds;b=null;h=Cw;i=K(BI,1);k=i.data;SS();k[0]=JE;Dz(o,e,m,e,b,h,i);return o;}AOv();a.b$c=(Be(Nt,d)).bO1;return Be(Nt,d);},ALc=(a,b)=>{let c,d,e,f;if(b.bGI.length>1&&Bn(b,0)==123&&Bn(b,b.bGI.length-1|0)==125){c=0;if(!Bj(APA(a,b,1,5),E(8438))){d=Bn(b,1);e=new S;T(e);Bb(e,d);f=Q(e);if(!(!Bj(f,E(864))&&!Bj(f,E(842))))c=2;}else{d=Bn(b,6);e=new S;T(e);Bb(e,d);f +=Q(e);if(!(!Bj(f,E(864))&&!Bj(f,E(842))&&!Bj(f,E(580))))c=7;else if(Bj(APA(a,b,6,7),E(8439)))c=13;}if(c>0&&b.bGI.length>8){e=CC(b,b.bGI.length-8|0);if(!(!Bj(e,E(8440))&&!Bj(e,E(8441))&&!Bj(e,E(8442)))){b=CC(b,c);e=new S;T(e);Bb(e,123);H(e,b);b=Q(e);b=B_(b,0,b.bGI.length-8|0);e=new S;T(e);Bb(H(e,b),125);b=Q(e);}else if(Bj(e,E(8443))){b=CC(b,c);e=new S;T(e);Bb(e,123);H(e,b);b=Q(e);b=B_(b,0,b.bGI.length-14|0);e=new S;T(e);Bb(H(e,b),125);b=Q(e);}}}return b;},SX=(a,b)=>{let c,d;SS();c=!AAx(b,JE)?E(1280):E(14);d= +b.b3M;if(d===null){b=b.bIO;d=new S;T(d);H(H(d,c),b);return Q(d);}b=new S;T(b);H(H(b,c),d);return Q(b);},AUV=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;a:{c=E(14);b=N7(a,b,0);d=AHG(a,b);if(d!==null){e=d.bO1;ABh();if(e!==Ph)break a;if(a.bQQ<=0)break a;}f=K(Bi,2);g=f.data;g[0]=null;g[1]=b;return f;}if(e===P9){e=d.bXW;b=N7(a,b,GB(d.bIO));d=CR();H(H(d,e),b);b=CH(d);d=AHG(a,b);}b:{switch(CVX(d.bO1)){case 0:case 7:b=N7(a,b,GB(d.bIO));e=SX(a,d);if(!CQ(e)&&Bn(e,0)!=92&&!Bj(d.b9w,E(8437))){f=K(Bi,2);g=f.data;c=CR();Et(H(Et(c, +123),e),125);g[0]=CH(c);g[1]=b;return f;}return BB(Bi,[e,b]);case 1:b=N7(a,b,GB(d.bIO));f=(AUV(a,b)).data;if(f[0]!==null){SS();if(AAx(d,Gg)){c=CQ(b)?E(14):AE5(Bn(b,0));c:{c=BY(c);e=CR();H(e,c);h=CH(e);if(!Bj(h,E(1174))&&!Bj(h,E(840))&&!Bj(h,E(21))&&!Bj(h,E(2054))&&!Bj(h,E(349))){if(GB(d.bIO)!=1)break c;if(!Qc(d.bIO,E(6567)))break c;if(Bj(h,E(864)))break c;}f=K(Bi,2);g=f.data;c=SX(a,d);d=CR();Et(H(Et(d,123),c),125);g[0]=CH(d);g[1]=b;return f;}b=SX(a,d);c=f[0];d=CR();H(H(Et(H(Et(d,123),b),123),c),E(548));return BB(Bi, +[CH(d),f[1]]);}f[0]=ALc(a,f[0]);if(!Bj(d.bIO,E(8444))){if(!Bj(d.bIO,E(8445))){g=d.cFu;if(g===null){if(!AAx(d,OR)){g=K(Bi,2);i=g.data;b=SX(a,d);c=f[0];d=CR();H(H(Et(H(Et(d,123),b),123),c),E(548));i[0]=CH(d);i[1]=f[1];return g;}g=K(Bi,2);i=g.data;b=SX(a,d);c=f[0];d=CR();Et(H(Et(H(d,b),123),c),125);i[0]=CH(d);i[1]=f[1];return g;}i=g.data;g=K(Bi,2);j=g.data;b=i[0];c=f[0];d=i[1];e=CR();Et(H(H(H(H(H(e,E(8446)),b),c),E(8447)),d),125);j[0]=CH(e);j[1]=f[1];return g;}g=K(Bi,2);i=g.data;b=f[0];c=CR();Et(H(H(c,E(8448)), +b),125);i[0]=CH(c);i[1]=f[1];return g;}g=K(Bi,2);i=g.data;b=f[0];c=CR();Et(H(H(c,E(8449)),b),125);i[0]=CH(c);i[1]=f[1];return g;}f=K(Bi,2);g=f.data;c=SX(a,d);d=CR();Et(H(Et(d,123),c),125);g[0]=CH(d);g[1]=b;return f;case 2:b=N7(a,b,GB(d.bIO));f=(AUV(a,b)).data;if(f[0]!==null){f[0]=ALc(a,f[0]);g=(AUV(a,f[1])).data;if(g[0]!==null){g[0]=ALc(a,g[0]);if(Bj(d.bIO,E(944))){b=Ih(f[0],E(8450),E(14));c=g[0];d=CR();Et(H(Et(H(H(d,E(8451)),b),125),c),125);b=CH(d);}else if(Bj(d.bIO,E(790))){b=f[0];c=g[0];d=CR();H(H(H(H(H(d, +E(8452)),b),E(8453)),c),E(548));b=CH(d);}else{b=SX(a,d);c=f[0];d=g[0];e=CR();H(H(H(H(Et(H(Et(e,123),b),123),c),E(8454)),d),E(548));b=CH(e);}return BB(Bi,[b,g[1]]);}f=K(Bi,2);g=f.data;c=SX(a,d);d=CR();Et(H(Et(d,123),c),125);g[0]=CH(d);g[1]=b;return f;}f=K(Bi,2);g=f.data;c=SX(a,d);d=CR();Et(H(Et(d,123),c),125);g[0]=CH(d);g[1]=b;return f;case 3:break;case 4:a.bQQ=a.bQQ+1|0;f=(BN5(a,N7(a,b,GB(d.bIO)),1)).data;a.bQQ=a.bQQ-1|0;k=0;if(Bj(APA(a,f[0],0,6),E(8447))){l=Bn(f[0],6);b=CR();Et(b,l);h=CH(b);if(!(!Bj(h,E(865)) +&&!Bj(h,E(843))&&!Bj(h,E(582))))k=6;else if(Bj(h,E(423)))k=7;else if(Bj(APA(a,f[0],6,7),E(8455)))k=13;}if(k<=0){SS();if(AAx(d,AH4)){d=f[0];b=CR();Et(H(H(b,E(8456)),d),125);m=CH(b);}else{d=SX(a,d);e=f[0];b=CR();Et(H(H(H(b,E(8446)),d),e),125);m=CH(b);}}else{f[0]=CC(f[0],k);SS();if(AAx(d,AH4)){b=f[0];c=CR();Et(H(Et(c,123),b),125);m=CH(c);}else{b=SX(a,d);c=f[0];d=CR();Et(H(H(Et(d,123),b),c),125);m=CH(d);}}return BB(Bi,[m,f[1]]);case 5:case 8:break b;case 6:b=N7(a,b,GB(d.bIO));f=K(Bi,2);g=f.data;c=d.bIO;d=CR();H(H(H(d, +E(8457)),c),E(8458));g[0]=CH(d);g[1]=b;return f;case 9:a.bQQ=a.bQQ+1|0;b=N7(a,b,GB(d.bIO));f=(BN5(a,b,0)).data;a.bQQ=a.bQQ-1|0;k=Bn(f[0],GB(f[0])-1|0);c=CR();Et(c,k);if(Bj(CH(c),E(2054))&&Bn(b,0)!=44){b=f[0];c=CR();Et(H(H(c,E(8459)),b),125);return BB(Bi,[CH(c),f[1]]);}return BB(Bi,[E(8460),b]);case 10:if(d!==Bfg)b=N7(a,b,GB(d.bIO));l=Bn(b,0)==123?IZ(b,E(582)):Bn(b,0)==40?IZ(b,E(865)):Bn(b,0)==91?IZ(b,E(843)):d!==Bfg?0:Sy(b,E(1268),1);if(l==(-1))l=GB(b);if(!l){k=Bn(b,0);c=CR();Et(Et(H(c,E(8461)),k),125);c=CH(c);} +else{h=B_(b,1,l);if(Bn(h,0)==32)c=E(8462);d=CR();Et(H(H(H(d,c),E(8461)),h),125);c=CH(d);if(Bn(h,GB(h)-1|0)==32){d=CR();H(H(d,c),E(8462));c=CH(d);}}if(l==GB(b))l=l-1|0;return BB(Bi,[c,N7(a,b,l+1|0)]);default:break b;}return BB(Bi,[d.bXW,N7(a,b,GB(d.bIO))]);}b=N7(a,b,GB(d.bIO));f=K(Bi,2);g=f.data;c=SX(a,d);d=CR();Et(H(Et(d,123),c),125);g[0]=CH(d);g[1]=b;return f;},B4r=(a,b)=>{let c,d,e,f,g,h,i;b=N7(a,b,0);c=AHG(a,b);d=(AUV(a,b)).data;e=d[0];f=d[1];g=AHG(a,f);b=g.bO1;ABh();if(b===XA&&!Bj(g.bIO,E(21))){d=(AUV(a, +N7(a,f,g.bIO.bGI.length))).data;if(d[0]===null)d[0]=E(1542);else d[0]=ALc(a,d[0]);f=d[1];if(!Bj(g.bIO,E(840))){h=d[0];b=new S;T(b);Bb(H(H(H(b,e),E(8463)),h),125);e=Q(b);}else{h=AHG(a,f);if(!Bj(h.bIO,E(1174))){h=d[0];b=new S;T(b);Bb(H(H(H(b,e),E(8464)),h),125);e=Q(b);}else{i=(AUV(a,N7(a,f,h.bIO.bGI.length))).data;i[0]=ALc(a,i[0]);f=i[1];b=new S;T(b);Bb(b,123);H(b,e);b=Q(b);e=d[0];h=new S;T(h);Bb(H(H(H(h,b),E(8464)),e),125);b=Q(h);e=i[0];h=new S;T(h);Bb(H(H(H(h,b),E(8463)),e),125);e=Q(h);b=new S;T(b);Bb(H(b,e), +125);e=Q(b);}}SS();if(AAx(c,Gg)){h=AHG(a,f);b=h.bO1;if(b!==XA&&b!==Ph&&!(c.bIO.bGI.length<=1&&h.bO1!==UG)){d=(B4r(a,f)).data;b=d[0];c=new S;T(c);Bb(c,123);Bb(H(H(c,e),b),125);e=Q(c);f=d[1];}}}return BB(Bi,[e,f]);},BN5=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;d=E(14);e=0;a:while(true){f=(B4r(a,N7(a,b,0))).data;g=f[0];b=f[1];h=AHG(a,b);i=h.bO1;ABh();if(i===XA&&Bj(h.bIO,E(21))){f=(B4r(a,N7(a,b,GB(h.bIO)))).data;if(f[0]===null)f[0]=E(1542);else f[0]=ALc(a,f[0]);b=f[1];h=ALc(a,g);i=CR();Et(H(H(i, +E(8465)),h),125);j=CH(i);i=f[0];h=CR();Et(H(Et(H(h,j),123),i),125);i=CH(h);j=CR();H(H(j,d),i);d=CH(j);h=AHG(a,b);}else if(g!==null){i=CR();H(H(i,d),g);d=CH(i);}b:{i=h.bO1;if(i!==Ph){if(i!==ALQ)break b;if(c)break b;}if(a.bQQ)break a;}i=h.bXW;if(i===null)continue;if(Bj(i,E(14)))break;}i=h.bO1;if(!(i!==Ph&&i!==ALQ)){c:{k=GB(d);if(k<=2)i=d;else if(Bn(d,0)!=123)i=d;else if(Eq(d,44)<=0)i=d;else{l=Bn(d,k-2|0);c=C5(l,41);if(c&&l!=93)i=d;else{m=Bn(d,6);if(!(m==40&&!c&&!Bj(h.bXW,E(582)))){if(m!=91){i=d;break c;}if(l!= +93){i=d;break c;}}n=E(14);o=Bk();i=CL(0);g=o;U(g,i);p=1;q=0;j=Bk();i=new Tp;f=K(AAa,1);f.data[0]=CL(0);Zs(i,Bv(f));r=j;U(r,i);s=0;t=0;u=E(14);v=1;e=k-1|0;while(v=GB(d))c=s;else{c=v+2|0;if(Bn(d,c)!=44)c=s;else if(Bn(d,w)!=123)c=s;else{U(g,CL(c));while(Hn(r)<=c){U(r,null);}i=new Tp;f=K(AAa,1);f.data[0]=CL(c);Zs(i,Bv(f));GJ(r,c,i);}}}}if(!(Bn(d,v)!=91&&Bn(d,v)!=40&&Bn(d,v)!=123))t=t+1|0;if(!(Bn(d,v)!=93&&Bn(d,v)!=41&&Bn(d,v) +!=125))t=t+(-1)|0;if(Bn(d,v)==44&&t==1)(Be(r,c)).g(CL(v));if(t<0){w=v+1|0;if(c!=w)p=0;else v=w;}v=v+1|0;s=c;}U(g,CL(k));w=(-1);if(!q&&!HH(o)&&p){x=0;while(x<(Hn(g)-1|0)){if(x>0){i=CR();H(H(i,n),E(1281));n=CH(i);}if(x){if((Be(r,FJ(Be(g,x)))).dV()==1){i=new Tp;f=K(Bi,1);f.data[0]=APA(a,d,FJ(Be(g,x))+8|0,(FJ(Be(g,x+1|0))-FJ(Be(g,x))|0)-16|0);Zs(i,Bv(f));}else{i=new Tp;f=K(Bi,1);f.data[0]=B_(d,FJ(Be(g,x))+8|0,FJ((Be(r,FJ(Be(g,x)))).cf(1)));Zs(i,Bv(f));y=2;while(y<(Be(r,FJ(Be(g,x)))).dV()){o=B_(d,FJ((Be(r,FJ(Be(g, +x)))).cf(y-1|0))+1|0,FJ((Be(r,FJ(Be(g,x)))).cf(y)));U(i,o);y=y+1|0;}o=B_(d,FJ((Be(r,FJ(Be(g,x)))).cf((Be(r,FJ(Be(g,x)))).dV()-1|0))+1|0,FJ(Be(g,x+1|0))-8|0);U(i,o);}}else if((Be(r,FJ(Be(g,x)))).dV()==1){i=new Tp;f=K(Bi,1);f.data[0]=APA(a,d,FJ(Be(g,x))+7|0,(FJ(Be(g,x+1|0))-FJ(Be(g,x))|0)-15|0);Zs(i,Bv(f));}else{i=new Tp;f=K(Bi,1);f.data[0]=B_(d,FJ(Be(g,x))+7|0,FJ((Be(r,FJ(Be(g,x)))).cf(1)));Zs(i,Bv(f));y=2;while(y<(Be(r,FJ(Be(g,x)))).dV()){j=B_(d,FJ((Be(r,FJ(Be(g,x)))).cf(y-1|0))+1|0,FJ((Be(r,FJ(Be(g,x)))).cf(y)));U(i, +j);y=y+1|0;}j=B_(d,FJ((Be(r,FJ(Be(g,x)))).cf((Be(r,FJ(Be(g,x)))).dV()-1|0))+1|0,FJ(Be(g,x+1|0))-8|0);U(i,j);}o=i;y=Hn(o)-1|0;while(y>=0){if(Bj(Be(o,y),E(8460))){if(!x){i=CR();H(Et(i,124),u);u=CH(i);}EJ(o,y);}else if(!x){i=CR();H(Et(i,99),u);u=CH(i);}y=y+(-1)|0;}if(w>0&&Hn(o)!=w)p=0;else if(w==(-1))w=Hn(o);z=0;while(z0&&!e){i=CR();H(H(i,d),E(8468));d=CH(i);}return BB(Bi,[d,b]);},DQU=()=>{let b,c,d,e,f,g,h,i,j,k;b=new Ds;c=null;ABh();Dz(b,E(8444),E(8469),E(8444),c,D_,K(BI,0));CSK=b;Cbg=Cm(E(790),E(8470),E(790),null,AAO,K(BI,0));CEa=Cm(E(8471),E(8472),E(21),null,AAO,K(BI,0));CGW=Cm(E(21),E(8472),E(21),null,XA,K(BI,0));CxG=Cm(E(8473),E(8474),E(8473),null,AAO,K(BI,0));CVe +=Cm(E(840),E(8475),E(840),null,XA,K(BI,0));CVg=Cm(E(1174),E(8476),E(1174),null,XA,K(BI,0));CAv=Cm(E(8477),E(8478),E(8477),null,BaG,K(BI,0));CXl=Cm(E(8479),E(8478),E(8479),null,BaG,K(BI,0));Bfg=Cm(E(1268),E(8478),E(8479),null,BaG,K(BI,0));c=new Tp;d=K(Ds,272);e=d.data;e[0]=Cm(E(8480),E(8100),E(8481),null,Cw,K(BI,0));e[1]=Cm(E(1646),E(8100),E(8482),null,Cw,K(BI,0));e[2]=Cm(E(8483),E(8100),E(8484),null,Cw,K(BI,0));e[3]=Cm(E(8485),E(8100),E(8486),null,Cw,K(BI,0));e[4]=Cm(E(8487),E(8437),E(8488),null,Cw,K(BI,0));e[5] +=Cm(E(8489),E(8100),E(8490),E(8491),Cw,K(BI,0));e[6]=Cm(E(8492),E(8100),E(8493),null,Cw,K(BI,0));e[7]=Cm(E(8494),E(8100),E(8495),null,Cw,K(BI,0));e[8]=Cm(E(8496),E(8100),E(8497),null,Cw,K(BI,0));e[9]=Cm(E(8498),E(8437),E(8499),null,Cw,K(BI,0));e[10]=Cm(E(8500),E(8100),E(8501),null,Cw,K(BI,0));e[11]=Cm(E(8502),E(8100),E(8503),null,Cw,K(BI,0));e[12]=Cm(E(8504),E(8100),E(8505),null,Cw,K(BI,0));e[13]=Cm(E(8506),E(8437),E(8507),null,Cw,K(BI,0));e[14]=Cm(E(8508),E(8100),E(8504),null,P9,K(BI,0));e[15]=Cm(E(8509),E(8100), +E(8506),null,P9,K(BI,0));e[16]=Cm(E(8510),E(8100),E(8511),null,Cw,K(BI,0));e[17]=Cm(E(8512),E(8100),E(8513),null,Cw,K(BI,0));e[18]=Cm(E(8514),E(8100),E(8515),null,Cw,K(BI,0));e[19]=Cm(E(8516),E(8437),E(8517),null,Cw,K(BI,0));e[20]=Cm(E(8518),E(8100),E(8519),null,Cw,K(BI,0));e[21]=Cm(E(8520),E(8100),E(8521),null,Cw,K(BI,0));e[22]=Cm(E(8522),E(8437),E(8523),null,Cw,K(BI,0));e[23]=Cm(E(8524),E(8100),E(8525),null,Cw,K(BI,0));e[24]=Cm(E(1155),E(8437),E(8526),null,Cw,K(BI,0));e[25]=Cm(E(8527),E(8100),E(8528),null, +Cw,K(BI,0));e[26]=Cm(E(8529),E(8100),E(8530),null,Cw,K(BI,0));e[27]=Cm(E(8531),E(8100),E(8532),null,Cw,K(BI,0));e[28]=Cm(E(8533),E(8100),E(8534),null,Cw,K(BI,0));e[29]=Cm(E(8535),E(8437),E(8536),null,Cw,K(BI,0));e[30]=Cm(E(8537),E(8100),E(8538),null,Cw,K(BI,0));e[31]=Cm(E(8539),E(8100),E(8540),null,Cw,K(BI,0));e[32]=Cm(E(8541),E(8100),E(8542),null,Cw,K(BI,0));e[33]=Cm(E(8543),E(8437),E(8544),null,Cw,K(BI,0));e[34]=Cm(E(8545),E(8100),E(8546),null,Cw,K(BI,0));e[35]=Cm(E(8547),E(8100),E(8548),null,Cw,K(BI,0));e[36] +=Cm(E(8549),E(8437),E(8550),null,Cw,K(BI,0));e[37]=Cm(E(8551),E(8100),E(8552),null,Cw,K(BI,0));e[38]=Cm(E(900),E(8437),E(8553),E(8554),Cw,K(BI,0));e[39]=Cm(E(917),E(8437),E(8555),E(8556),Cw,K(BI,0));e[40]=Cm(E(8557),E(8437),E(8558),E(8559),Cw,K(BI,0));b=new Ds;f=Cw;g=K(BI,2);h=g.data;SS();h[0]=JE;h[1]=Hv;Dz(b,E(648),E(8437),E(21),E(21),f,g);e[41]=b;e[42]=Cm(E(1281),E(8437),E(1280),E(8560),Cw,K(BI,0));e[43]=Cm(E(8561),E(8437),E(1280),null,Cw,K(BI,0));e[44]=Cm(E(8562),E(8437),E(8563),E(8564),Cw,K(BI,0));e[45] +=Cm(E(8565),E(8437),E(8566),E(8567),Cw,K(BI,0));e[46]=Cm(E(8568),E(8437),E(8569),E(8570),Cw,K(BI,0));e[47]=Cm(E(8571),E(8437),E(8572),E(8573),Cw,K(BI,0));e[48]=Cm(E(8574),E(8437),E(8575),E(8576),Cw,K(BI,0));e[49]=Cm(E(8577),E(8437),E(8574),null,P9,K(BI,0));e[50]=Cm(E(2443),E(8437),E(8578),E(8579),Cw,K(BI,0));e[51]=Cm(E(8580),E(8437),E(8581),E(8582),Cw,K(BI,0));e[52]=Cm(E(8583),E(8437),E(8584),E(8585),Cw,K(BI,0));e[53]=Cm(E(8586),E(8437),E(8587),E(8588),Cw,K(BI,0));e[54]=Cm(E(8589),E(8437),E(8590),null,T2,K(BI, +0));e[55]=Cm(E(8591),E(8437),E(8592),null,T2,K(BI,0));e[56]=Cm(E(8593),E(8437),E(8594),E(8595),Cw,K(BI,0));e[57]=Cm(E(8596),E(8437),E(8597),E(8598),T2,K(BI,0));e[58]=Cm(E(8599),E(8437),E(8600),E(8601),Cw,K(BI,0));e[59]=Cm(E(8602),E(8437),E(8603),E(8604),T2,K(BI,0));e[60]=Cm(E(8605),E(8437),E(8606),E(8607),Cw,K(BI,0));e[61]=Cm(E(8608),E(8437),E(8609),E(8610),T2,K(BI,0));e[62]=Cm(E(8611),E(8437),E(8612),E(8613),Cw,K(BI,0));e[63]=Cm(E(8614),E(8437),E(8615),E(8616),T2,K(BI,0));e[64]=Cm(E(8617),E(8474),E(8473),null, +AAO,K(BI,0));e[65]=Cm(E(8618),E(8619),E(8473),null,AAO,K(BI,0));e[66]=Cm(E(3982),E(8437),E(8620),E(8621),Cw,K(BI,0));e[67]=Cm(E(8622),E(8437),E(8622),null,Cw,K(BI,0));e[68]=Cm(E(8623),E(8437),E(1198),null,Cw,K(BI,0));e[69]=Cm(E(8624),E(8437),E(372),null,Cw,K(BI,0));e[70]=Cm(E(3978),E(8437),E(8625),E(4325),Cw,K(BI,0));e[71]=Cm(E(8626),E(8437),E(8625),E(8627),Cw,K(BI,0));e[72]=Cm(E(8628),E(8437),E(8629),E(8630),Cw,K(BI,0));e[73]=Cm(E(3980),E(8437),E(8629),E(8631),Cw,K(BI,0));e[74]=Cm(E(8632),E(8437),E(8633),E(8634), +Cw,K(BI,0));e[75]=Cm(E(8635),E(8437),E(8636),E(8637),Cw,K(BI,0));e[76]=Cm(E(8638),E(8437),E(8639),E(8640),Cw,K(BI,0));e[77]=Cm(E(8641),E(8437),E(8639),null,Cw,K(BI,0));e[78]=Cm(E(8642),E(8437),E(8643),E(8644),Cw,K(BI,0));e[79]=Cm(E(8645),E(8437),E(8646),E(8647),Cw,K(BI,0));e[80]=Cm(E(8648),E(8437),E(8649),E(8650),Cw,K(BI,0));e[81]=Cm(E(1741),E(8437),E(8651),null,Cw,K(BI,0));e[82]=Cm(E(8652),E(8437),E(8653),E(8654),Cw,K(BI,0));e[83]=Cm(E(8335),E(8437),E(8655),E(8656),Cw,K(BI,0));e[84]=Cm(E(8334),E(8437),E(8657), +E(8658),Cw,K(BI,0));e[85]=Cm(E(8659),E(8437),E(8660),E(8661),Cw,K(BI,0));e[86]=Cm(E(8662),E(8437),E(8663),E(8664),Cw,K(BI,0));e[87]=Cm(E(8665),E(8437),E(8666),E(8667),Cw,K(BI,0));b=new Ds;f=Cw;g=K(BI,1);g.data[0]=Hv;Dz(b,E(8668),E(8437),E(8669),E(8670),f,g);e[88]=b;e[89]=Cm(E(8671),E(8437),E(8668),null,P9,K(BI,0));e[90]=Cm(E(2586),E(8437),E(8672),E(8673),Cw,K(BI,0));e[91]=Cm(E(925),E(8437),E(8674),E(8675),Cw,K(BI,0));e[92]=Cm(E(8676),E(8437),E(8677),E(8678),Cw,K(BI,0));e[93]=Cm(E(3238),E(8478),E(3238),null, +AQ_,K(BI,0));e[94]=Cm(E(8679),E(8478),E(8679),null,AQ_,K(BI,0));e[95]=Cm(E(8680),E(8437),E(8681),E(8682),Cw,K(BI,0));e[96]=Cm(E(4469),E(8437),E(8683),E(8684),Cw,K(BI,0));e[97]=Cm(E(8685),E(8437),E(4469),null,P9,K(BI,0));e[98]=Cm(E(2892),E(8437),E(2892),null,AQ_,K(BI,0));e[99]=Cm(E(8686),E(8437),E(8687),E(8688),Cw,K(BI,0));e[100]=Cm(E(8689),E(8437),E(8686),null,P9,K(BI,0));e[101]=Cm(E(8690),E(8437),E(8691),E(8692),Cw,K(BI,0));e[102]=Cm(E(8693),E(8437),E(8694),E(8695),Cw,K(BI,0));e[103]=Cm(E(8696),E(8437),E(8697), +E(8698),Cw,K(BI,0));e[104]=Cm(E(8699),E(8437),E(8700),E(2429),Cw,K(BI,0));e[105]=Cm(E(8701),E(8437),E(8702),E(8703),Cw,K(BI,0));e[106]=Cm(E(8704),E(8437),E(8705),E(8706),Cw,K(BI,0));b=new Ds;i=null;f=UG;g=K(BI,1);g.data[0]=JE;Dz(b,E(864),E(8437),E(864),i,f,g);e[107]=b;b=new Ds;i=null;f=Ph;g=K(BI,1);g.data[0]=JE;Dz(b,E(865),E(8437),E(865),i,f,g);e[108]=b;b=new Ds;i=null;f=UG;g=K(BI,1);g.data[0]=JE;Dz(b,E(842),E(8437),E(842),i,f,g);e[109]=b;b=new Ds;i=null;f=Ph;g=K(BI,1);g.data[0]=JE;Dz(b,E(843),E(8437),E(843), +i,f,g);e[110]=b;b=new Ds;f=UG;g=K(BI,2);h=g.data;h[0]=JE;h[1]=Hv;Dz(b,E(8707),E(8437),E(864),E(864),f,g);e[111]=b;b=new Ds;f=Ph;g=K(BI,2);h=g.data;h[0]=JE;h[1]=Hv;Dz(b,E(8708),E(8437),E(865),E(865),f,g);e[112]=b;b=new Ds;f=UG;g=K(BI,2);h=g.data;h[0]=JE;h[1]=Hv;Dz(b,E(8709),E(8437),E(842),E(842),f,g);e[113]=b;b=new Ds;f=Ph;g=K(BI,2);h=g.data;h[0]=JE;h[1]=Hv;Dz(b,E(8710),E(8437),E(843),E(843),f,g);e[114]=b;e[115]=Cm(E(580),E(8437),E(580),E(8711),UG,K(BI,0));e[116]=Cm(E(582),E(8437),E(582),E(8712),Ph,K(BI,0));b +=new Ds;i=null;f=ALQ;g=K(BI,1);g.data[0]=JE;Dz(b,E(2054),E(8437),E(2054),i,f,g);e[117]=b;b=new Ds;f=ALQ;g=K(BI,2);h=g.data;h[0]=JE;h[1]=Hv;Dz(b,E(8713),E(8437),E(2054),E(2054),f,g);e[118]=b;b=new Ds;f=Ph;g=K(BI,2);h=g.data;h[0]=JE;h[1]=Hv;Dz(b,E(8714),E(8437),E(2054),E(2054),f,g);e[119]=b;b=new Ds;f=Cw;g=K(BI,2);h=g.data;h[0]=JE;h[1]=Hv;Dz(b,E(8715),E(8437),E(2054),E(2054),f,g);e[120]=b;e[121]=Cm(E(8716),E(8437),E(8717),E(8718),UG,K(BI,0));e[122]=Cm(E(8719),E(8437),E(8720),E(8721),Ph,K(BI,0));e[123]=Cm(E(1775), +E(8437),E(8717),E(8718),UG,K(BI,0));e[124]=Cm(E(1776),E(8437),E(8720),E(8721),Ph,K(BI,0));b=new Ds;i=null;f=UG;g=K(BI,1);g.data[0]=AH4;Dz(b,E(8722),E(8437),E(8722),i,f,g);e[125]=b;b=new Ds;i=null;f=Ph;g=K(BI,1);g.data[0]=AH4;Dz(b,E(8723),E(8437),E(8723),i,f,g);e[126]=b;e[127]=Cm(E(8724),E(8437),E(8725),null,Cw,K(BI,0));e[128]=Cm(E(8726),E(8100),E(8727),null,P9,K(BI,0));e[129]=Cm(E(8728),E(8100),E(8729),null,P9,K(BI,0));e[130]=Cm(E(8730),E(8100),E(8731),null,P9,K(BI,0));e[131]=Cm(E(8732),E(8100),E(8733),null, +P9,K(BI,0));e[132]=Cm(E(8734),E(8437),E(8735),null,Cw,K(BI,0));e[133]=Cm(E(8736),E(8437),E(8737),E(8738),Cw,K(BI,0));e[134]=Cm(E(8739),E(8437),E(8740),E(8741),Cw,K(BI,0));e[135]=Cm(E(8742),E(8437),E(8743),E(8744),Cw,K(BI,0));e[136]=Cm(E(1271),E(8437),E(8745),E(8746),Cw,K(BI,0));e[137]=Cm(E(8747),E(8437),E(8748),E(8749),Cw,K(BI,0));e[138]=Cm(E(8750),E(8437),E(8751),E(8752),Cw,K(BI,0));e[139]=Cm(E(8753),E(8437),E(8754),null,Cw,K(BI,0));e[140]=Cm(E(1218),E(8437),E(1218),E(8755),Cw,K(BI,0));e[141]=Cm(E(8756),E(8437), +E(8757),E(8758),Cw,K(BI,0));e[142]=Cm(E(8759),E(8437),E(8760),E(8761),Cw,K(BI,0));e[143]=Cm(E(8762),E(8437),E(8763),E(8764),Cw,K(BI,0));e[144]=Cm(E(8765),E(8437),E(8766),E(3465),Cw,K(BI,0));b=new Ds;i=null;f=Cw;g=K(BI,1);g.data[0]=JE;Dz(b,E(8462),E(8437),E(8767),i,f,g);e[145]=b;e[146]=Cm(E(8768),E(8437),E(8769),null,Cw,K(BI,0));b=new Ds;f=Cw;g=K(BI,1);g.data[0]=Hv;Dz(b,E(861),E(8437),E(861),E(861),f,g);e[147]=b;e[148]=Cm(E(8770),E(8437),E(8771),null,Cw,K(BI,0));e[149]=Cm(E(8772),E(8437),E(8773),null,Cw,K(BI, +0));e[150]=Cm(E(8774),E(8437),E(8775),null,Cw,K(BI,0));e[151]=Cm(E(8776),E(8437),E(8777),null,Cw,K(BI,0));e[152]=Cm(E(8778),E(8437),E(8779),null,Cw,K(BI,0));e[153]=Cm(E(746),E(8437),E(8780),null,Cw,K(BI,0));e[154]=Cm(E(3464),E(8437),E(8781),E(8782),Cw,K(BI,0));e[155]=Cm(E(8783),E(8437),E(8784),E(8785),Cw,K(BI,0));e[156]=Cm(E(8786),E(8437),E(8787),E(8788),Cw,K(BI,0));e[157]=Cm(E(8789),E(8437),E(8790),E(8791),Cw,K(BI,0));e[158]=Cm(E(8792),E(8437),E(8789),null,P9,K(BI,0));e[159]=Cm(E(8793),E(8437),E(8794),E(8795), +Cw,K(BI,0));e[160]=Cm(E(8796),E(8437),E(8793),null,P9,K(BI,0));b=new Ds;f=Cw;g=K(BI,1);g.data[0]=Hv;Dz(b,E(8797),E(8437),E(8798),E(8799),f,g);e[161]=b;b=new Ds;f=Cw;g=K(BI,1);g.data[0]=Hv;Dz(b,E(8800),E(8437),E(8801),E(8802),f,g);e[162]=b;b=new Ds;f=Cw;g=K(BI,1);g.data[0]=Hv;Dz(b,E(8803),E(8437),E(8804),E(8805),f,g);e[163]=b;b=new Ds;f=Cw;g=K(BI,1);g.data[0]=Hv;Dz(b,E(8806),E(8437),E(8807),E(8808),f,g);e[164]=b;b=new Ds;f=Cw;g=K(BI,1);g.data[0]=Hv;Dz(b,E(8809),E(8437),E(8810),E(8811),f,g);e[165]=b;b=new Ds;i +=null;f=D_;g=K(BI,2);h=g.data;h[0]=Gg;h[1]=JE;Dz(b,E(8812),E(8100),E(8812),i,f,g);e[166]=b;b=new Ds;i=null;f=D_;g=K(BI,2);h=g.data;h[0]=Gg;h[1]=JE;Dz(b,E(1695),E(8100),E(1695),i,f,g);e[167]=b;b=new Ds;f=Cw;g=K(BI,2);h=g.data;h[0]=JE;h[1]=Hv;Dz(b,E(8813),E(8437),E(8814),E(1762),f,g);e[168]=b;b=new Ds;i=null;f=Cw;g=K(BI,1);g.data[0]=JE;Dz(b,E(8815),E(8437),E(8815),i,f,g);e[169]=b;b=new Ds;i=null;f=Cw;g=K(BI,1);g.data[0]=JE;Dz(b,E(8816),E(8437),E(8816),i,f,g);e[170]=b;b=new Ds;i=null;f=Cw;g=K(BI,1);g.data[0]=JE;Dz(b, +E(8817),E(8437),E(8817),i,f,g);e[171]=b;e[172]=Cm(E(8818),E(8437),E(8818),null,T2,K(BI,0));e[173]=Cm(E(8819),E(8437),E(8819),null,T2,K(BI,0));b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8820),E(8437),E(8820),i,f,g);e[174]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8821),E(8437),E(8821),i,f,g);e[175]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8822),E(8437),E(8822),i,f,g);e[176]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8823),E(8437),E(8823),i,f,g);e[177]=b;b=new Ds;i=null;f +=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8824),E(8437),E(8824),i,f,g);e[178]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8825),E(8437),E(8825),i,f,g);e[179]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8826),E(8437),E(8826),i,f,g);e[180]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8827),E(8437),E(8827),i,f,g);e[181]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8828),E(8437),E(8828),i,f,g);e[182]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8829),E(8437),E(8829),i,f,g);e[183] +=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8830),E(8437),E(8830),i,f,g);e[184]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8831),E(8437),E(8831),i,f,g);e[185]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8832),E(8437),E(8832),i,f,g);e[186]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8833),E(8437),E(8833),i,f,g);e[187]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8834),E(8437),E(8834),i,f,g);e[188]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8835),E(8437), +E(8835),i,f,g);e[189]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8836),E(8437),E(8836),i,f,g);e[190]=b;j=new Ds;g=BB(Bi,[E(2054),E(2054)]);f=null;k=D_;h=K(BI,1);h.data[0]=Hv;APn(j,g,E(8837),E(8437),E(8837),f,k,h);e[191]=j;b=new Ds;g=BB(Bi,[E(607),E(607)]);i=null;f=D_;h=K(BI,1);h.data[0]=Hv;APn(b,g,E(8838),E(8437),E(8838),i,f,h);e[192]=b;b=new Ds;g=BB(Bi,[E(8839),E(8840)]);i=null;f=D_;h=K(BI,1);h.data[0]=Hv;APn(b,g,E(8841),E(8437),E(8841),i,f,h);e[193]=b;b=new Ds;g=BB(Bi,[E(8842),E(8843)]);i=null;f +=D_;h=K(BI,1);h.data[0]=Hv;APn(b,g,E(8844),E(8437),E(8844),i,f,h);e[194]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8845),E(8437),E(8845),i,f,g);e[195]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8846),E(8437),E(8846),i,f,g);e[196]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(1434),E(8437),E(1434),i,f,g);e[197]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8847),E(8437),E(8847),i,f,g);e[198]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8848),E(8437),E(8848),i,f,g);e[199] +=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8849),E(8437),E(8849),i,f,g);e[200]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8850),E(8437),E(8850),i,f,g);e[201]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8851),E(8437),E(8851),i,f,g);e[202]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8852),E(8437),E(8852),i,f,g);e[203]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8853),E(8437),E(8853),i,f,g);e[204]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8854),E(8437), +E(8854),i,f,g);e[205]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8855),E(8437),E(8855),i,f,g);e[206]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8856),E(8437),E(8856),i,f,g);e[207]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8857),E(8437),E(8857),i,f,g);e[208]=b;b=new Ds;g=BB(Bi,[E(2054),E(2054)]);i=null;f=D_;h=K(BI,1);h.data[0]=Hv;APn(b,g,E(8858),E(8437),E(8837),i,f,h);e[209]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8859),E(8437),E(8859),i,f,g);e[210]=b;b=new Ds;i=null;f +=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8860),E(8437),E(8860),i,f,g);e[211]=b;e[212]=Cm(E(8861),E(8437),E(8861),null,Cw,K(BI,0));b=new Ds;f=Cw;g=K(BI,1);g.data[0]=Hv;Dz(b,E(8862),E(8437),E(8862),E(8863),f,g);e[213]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=Gg;Dz(b,E(8864),E(8437),E(8864),i,f,g);e[214]=b;b=new Ds;f=D_;g=K(BI,2);h=g.data;h[0]=Gg;h[1]=Hv;Dz(b,E(8865),E(8437),E(8865),E(8866),f,g);e[215]=b;e[216]=Cm(E(8867),E(8437),E(8867),null,Cw,K(BI,0));e[217]=Cm(E(8868),E(8437),E(8868),null,Cw,K(BI,0));e[218]=Cm(E(6915), +E(8437),E(6915),null,T2,K(BI,0));e[219]=Cm(E(1971),E(8437),E(1971),null,T2,K(BI,0));e[220]=Cm(E(8869),E(8437),E(8870),E(8871),Cw,K(BI,0));e[221]=Cm(E(8872),E(8437),E(8873),E(8874),Cw,K(BI,0));e[222]=Cm(E(8875),E(8437),E(8876),E(8877),Cw,K(BI,0));e[223]=Cm(E(3037),E(8437),E(8876),E(3262),Cw,K(BI,0));e[224]=Cm(E(8878),E(8437),E(8879),E(8880),Cw,K(BI,0));e[225]=Cm(E(8881),E(8437),E(8882),E(8883),Cw,K(BI,0));e[226]=Cm(E(8884),E(8437),E(8885),E(8886),Cw,K(BI,0));e[227]=Cm(E(8887),E(8437),E(8888),E(8889),Cw,K(BI, +0));e[228]=Cm(E(8890),E(8437),E(8891),E(8892),Cw,K(BI,0));e[229]=Cm(E(8893),E(8437),E(8894),E(8895),Cw,K(BI,0));e[230]=Cm(E(8896),E(8437),E(8897),E(8898),Cw,K(BI,0));e[231]=Cm(E(8899),E(8437),E(8900),E(8901),Cw,K(BI,0));e[232]=Cm(E(8902),E(8437),E(8683),E(8684),Cw,K(BI,0));e[233]=Cm(E(8903),E(8437),E(8904),E(8905),Cw,K(BI,0));e[234]=Cm(E(8906),E(8437),E(8687),E(8688),Cw,K(BI,0));e[235]=CSK;e[236]=Cbg;e[237]=CEa;e[238]=CGW;e[239]=CxG;e[240]=CVe;e[241]=CVg;e[242]=Cm(E(8445),E(8907),E(8445),null,D_,K(BI,0));e[243] +=Cm(E(8908),E(8469),E(8444),null,D_,K(BI,0));b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=OR;Dz(b,E(8909),E(8474),E(1174),i,f,g);e[244]=b;b=new Ds;f=D_;g=K(BI,1);g.data[0]=OR;Dz(b,E(669),E(8474),E(8910),E(8911),f,g);e[245]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=OR;Dz(b,E(8912),E(8474),E(8876),i,f,g);e[246]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=OR;Dz(b,E(8913),E(8474),E(2586),i,f,g);e[247]=b;b=new Ds;i=null;f=D_;g=K(BI,1);g.data[0]=OR;Dz(b,E(238),E(8474),E(423),i,f,g);e[248]=b;b=new Ds;i=null;f=D_;g=K(BI, +1);g.data[0]=OR;Dz(b,E(8914),E(8474),E(4180),i,f,g);e[249]=b;b=new Ds;f=D_;g=K(BI,2);h=g.data;h[0]=OR;h[1]=Hv;Dz(b,E(8915),E(8474),E(8916),E(8917),f,g);e[250]=b;b=new Ds;f=D_;g=K(BI,2);h=g.data;h[0]=OR;h[1]=Hv;Dz(b,E(8918),E(8474),E(8916),E(8917),f,g);e[251]=b;b=new Ds;f=D_;g=K(BI,1);g.data[0]=OR;Dz(b,E(8919),E(8619),E(8920),E(1812),f,g);e[252]=b;b=new Ds;f=D_;g=K(BI,1);g.data[0]=OR;Dz(b,E(8921),E(8619),E(8922),E(8923),f,g);e[253]=b;b=new Ds;f=D_;g=K(BI,1);g.data[0]=OR;Dz(b,E(8924),E(8474),E(8925),E(8926),f, +g);e[254]=b;e[255]=CAv;e[256]=CXl;e[257]=Bfg;e[258]=Cm(E(944),E(8927),null,null,AAO,K(BI,0));b=new Ds;f=D_;g=K(BI,1);g.data[0]=Hv;Dz(b,E(8928),E(8927),E(8928),E(8929),f,g);e[259]=b;e[260]=Cm(E(8929),E(8927),E(8929),null,D_,K(BI,0));b=new Ds;f=D_;g=K(BI,1);g.data[0]=Hv;Dz(b,E(8930),E(8927),E(8930),E(8931),f,g);e[261]=b;e[262]=Cm(E(8931),E(8927),E(8931),null,D_,K(BI,0));b=new Ds;f=D_;g=K(BI,1);g.data[0]=Hv;Dz(b,E(8932),E(8927),E(8932),E(8933),f,g);e[263]=b;e[264]=Cm(E(8933),E(8927),E(8933),null,D_,K(BI,0));b= +new Ds;f=D_;g=K(BI,1);g.data[0]=Hv;Dz(b,E(8934),E(8927),E(8934),E(8935),f,g);e[265]=b;e[266]=Cm(E(8935),E(8927),E(8935),null,D_,K(BI,0));b=new Ds;f=D_;g=K(BI,1);g.data[0]=Hv;Dz(b,E(8936),E(8927),E(8936),E(8937),f,g);e[267]=b;e[268]=Cm(E(8937),E(8927),E(8937),null,D_,K(BI,0));b=new Ds;f=D_;g=K(BI,1);g.data[0]=Hv;Dz(b,E(530),E(8927),E(530),E(8938),f,g);e[269]=b;e[270]=Cm(E(8938),E(8927),E(8938),null,D_,K(BI,0));b=new Ds;f=Cw;g=K(BI,2);h=g.data;h[0]=JE;h[1]=Hv;Dz(b,E(8939),E(8437),E(8939),E(1281),f,g);e[271]=b;Zs(c, +Bv(d));Nt=c;Fmx();},Ezp=N(),Fgs=b=>{let c,d,e,f,g,h,i;c=ANt(b);d=Bk();a:{b:{while(true){if(Jh(c)<=0)break a;while(Jh(c)>0&&!(!Z0(Hc(c,0))&&Hc(c,0)!=44)){Hq(c,1);}if(!Jh(c))break b;if(AV2(Hc(c,0))){b=ABw(c,0,1);U(d,b);Hq(c,1);continue;}e=0;f=Hc(c,e);if(!(f!=43&&f!=45))e=1;g=0;h=0;while(e{CYw(a,AVs(0.0),AVs(0.0));},Co4=()=>{let a=new PS();D6g(a);return a;},CYw=(a,b,c)=>{a.bVO=b;a.bVN=c;},AO2=(a,b)=>{let c=new PS();CYw(c,a,b);return c;},DcD=a=>{return a.bVO;},Csj=a=>{return a.bVN;},Tw=a=>{return a.bVO.b5h;},Sq=a=>{return a.bVN.b5h;},VQ=(a,b)=>{return AO2(BbN(a.bVO,b.bVO),BbN(a.bVN,b.bVN));},Bl8=(a,b)=>{let c,d,e,f;c=Tw(a);d=Sq(a);e=2.0*c-Tw(b);f=2.0*d-Sq(b);b=new PS;b.bVO=AVs(e);b.bVN=AVs(f);return b;},Qe=(a,b)=>{return H4(BA(Tw(a),Sq(a)),b);},B0d=N(0); +function ATN(){F.call(this);this.b5h=0.0;} +let DR8=(a,b)=>{a.b5h=b;},AVs=a=>{let b=new ATN();DR8(b,a);return b;},BbN=(a,b)=>{return AVs(a.b5h+b.b5h);}; +function Cu8(){F.call(this);this.bWL=0;} +let DQC=(a,b)=>{a.bWL=b;},OU=a=>{let b=new Cu8();DQC(b,a);return b;},FwX=a=>{let b,c;b=a.bWL;c=new S;T(c);Bb(c,32);Bb(c,b);return Q(c);},A5W=a=>{let b,c,d;a:{switch(B2o(a.bWL)){case 97:break;case 98:case 100:case 101:case 102:case 103:case 105:case 106:case 107:case 110:case 111:case 112:case 114:case 117:case 119:case 120:case 121:break a;case 99:return 6;case 104:case 118:return 1;case 108:case 109:case 116:return 2;case 113:case 115:return 4;case 122:return 0;default:break a;}return 7;}b=new BV;c=a.bWL;d +=new S;T(d);Bb(d,c);Bp(b,Q(d));J(b);},Ft3=a=>{return Df4(a.bWL);},O0=(a,b)=>{return a.bWL!=b?0:1;}; +function UE(){let a=this;F.call(a);a.bJF=null;a.bLQ=null;} +let DUZ=a=>{let b,c,d;b=a.bJF.bWL;c=BY(a.bLQ);d=new S;T(d);Bb(d,b);Bb(d,32);H(d,c);return Q(d);},Fj_=(a,b,c)=>{a.bJF=b;a.bLQ=Bv(c);},E7L=(a,b)=>{let c=new UE();Fj_(c,a,b);return c;},E1V=(a,b)=>{a.bJF=b;a.bLQ=Gi();},E5w=a=>{let b=new UE();E1V(b,a);return b;},AJT=a=>{return a.bJF.bWL;},AH3=(a,b,c)=>{let d,e,f,g,h;c=c.data;a.bJF=b;d=c.length;e=K(ATN,d*2|0);f=e.data;g=0;while(g{let c=new UE();AH3(c,a,b);return c;},KR=(a,b)=>{return AO2(a.bLQ.cf(b), +a.bLQ.cf(b+1|0));},Zw=(a,b)=>{return (a.bLQ.cf(b)).b5h;},Ut=a=>{if(A5W(a.bJF))return KR(a,a.bLQ.dV()-2|0);return null;},Fb3=(a,b)=>{let c,d,e,f;B$(b);if(!O0(a.bJF,72)){if(!O0(a.bJF,86)){if(!O0(a.bJF,104)){if(!O0(a.bJF,118)){if(!Ft3(a.bJF)){if(!O0(a.bJF,109)){if(!O0(a.bJF,108)){if(!O0(a.bJF,116)){if(!O0(a.bJF,122)){if(!O0(a.bJF,99)){if(!O0(a.bJF,113)){if(!O0(a.bJF,115)){if(O0(a.bJF,97)){c=VQ(b,Ut(a));return E7L(OU(65),BB(ATN,[a.bLQ.cf(0),a.bLQ.cf(1),a.bLQ.cf(2),a.bLQ.cf(3),a.bLQ.cf(4),DcD(c),Csj(c)]));}b=new BV;c +=BY(a.bJF);d=CR();H(H(d,E(8940)),c);Bcm(b,CH(d));J(b);}return AYV(OU(83),BB(PS,[VQ(b,KR(a,0)),VQ(b,KR(a,2))]));}return AYV(OU(81),BB(PS,[VQ(b,KR(a,0)),VQ(b,KR(a,2))]));}return AYV(OU(67),BB(PS,[VQ(b,KR(a,0)),VQ(b,KR(a,2)),VQ(b,KR(a,4))]));}return E5w(OU(90));}c=new UE;d=OU(84);e=K(PS,1);e.data[0]=VQ(b,KR(a,0));AH3(c,d,e);return c;}c=new UE;d=OU(76);e=K(PS,1);e.data[0]=VQ(b,KR(a,0));AH3(c,d,e);return c;}c=new UE;d=OU(77);e=K(PS,1);e.data[0]=VQ(b,KR(a,0));AH3(c,d,e);return c;}return a;}d=a.bLQ.cf(0);c=new UE;f +=OU(76);e=K(PS,1);e.data[0]=AO2(DcD(b),BbN(Csj(b),d));AH3(c,f,e);return c;}d=a.bLQ.cf(0);c=new UE;f=OU(76);e=K(PS,1);e.data[0]=AO2(BbN(b.bVO,d),b.bVN);AH3(c,f,e);return c;}d=a.bLQ.cf(0);c=new UE;f=OU(76);e=K(PS,1);e.data[0]=AO2(b.bVO,d);AH3(c,f,e);return c;}d=a.bLQ.cf(0);c=new UE;f=OU(76);e=K(PS,1);e.data[0]=AO2(d,b.bVN);AH3(c,f,e);return c;},Cto=(a,b)=>{return O0(a.bJF,b);}; +function Ds(){let a=this;F.call(a);a.bIO=null;a.b9w=null;a.bXW=null;a.b3M=null;a.bO1=null;a.cFu=null;a.cFG=null;} +let APn=(a,b,c,d,e,f,g,h)=>{a.bIO=c;a.b9w=d;a.bXW=e;a.b3M=f;a.bO1=g;a.cFG=Bv(h);a.cFu=b;},FyO=(a,b,c,d,e,f,g)=>{let h=new Ds();APn(h,a,b,c,d,e,f,g);return h;},Dz=(a,b,c,d,e,f,g)=>{a.bIO=b;a.b9w=c;a.bXW=d;a.b3M=e;a.bO1=f;a.cFG=Bv(g);a.cFu=null;},Cm=(a,b,c,d,e,f)=>{let g=new Ds();Dz(g,a,b,c,d,e,f);return g;},AAx=(a,b)=>{return Nw(a.cFG,b);},A33=N(Bx),Cw=null,D_=null,AAO=null,XA=null,UG=null,Ph=null,AQ_=null,T2=null,P9=null,ALQ=null,BaG=null,EyK=null,ABh=()=>{ABh=Z(A33);EBy();},D3b=(a,b,c)=>{ABh();Ct(a,b,c);},Xl +=(a,b)=>{let c=new A33();D3b(c,a,b);return c;},EBy=()=>{let b,c,d;Cw=Xl(E(8941),0);D_=Xl(E(8942),1);AAO=Xl(E(8943),2);XA=Xl(E(8944),3);UG=Xl(E(8945),4);Ph=Xl(E(8946),5);AQ_=Xl(E(4319),6);T2=Xl(E(8947),7);P9=Xl(E(277),8);ALQ=Xl(E(8948),9);b=Xl(E(849),10);BaG=b;c=K(A33,11);d=c.data;d[0]=Cw;d[1]=D_;d[2]=AAO;d[3]=XA;d[4]=UG;d[5]=Ph;d[6]=AQ_;d[7]=T2;d[8]=P9;d[9]=ALQ;d[10]=b;EyK=c;},BI=N(Bx),OR=null,JE=null,Gg=null,AH4=null,Hv=null,FfA=null,SS=()=>{SS=Z(BI);DBi();},Ego=(a,b,c)=>{SS();Ct(a,b,c);},A2l=(a,b)=>{let c +=new BI();Ego(c,a,b);return c;},DBi=()=>{let b,c,d;OR=A2l(E(8949),0);JE=A2l(E(8950),1);Gg=A2l(E(8951),2);AH4=A2l(E(4482),3);b=A2l(E(8952),4);Hv=b;c=K(BI,5);d=c.data;d[0]=OR;d[1]=JE;d[2]=Gg;d[3]=AH4;d[4]=b;FfA=c;},C5E=N(),Fjr=(a,b,c)=>{b=b;c=c;AOv();return J6(b.bIO,c.bIO);}; +function Crn(){F.call(this);this.cbb=null;} +let EDK=(a,b,c)=>{let d,e,f,g,h,i,j;d=CBE(a.cbb,b);e=a.cbb.ciR.cF(b);f=BNV(a.cbb.cdf,d.bGE,e);g=By5(a.cbb.cdf,e);h=c.bGK;if(h>=f){i=c.bGL;if(i>=0.0&&i<=g)return Bh(0.0,g);}j=C5(c.bGL,0.0);if(j<=0&&h>=f+7.0)return Bh(0.0,g);if(j<=0){f=f-7.0;if(h>=f)return Bh(0.0,g*(h-f)/14.0);}return LR();}; +function Cg0(){let a=this;F.call(a);a.cdi=null;a.cWB=null;a.c4p=null;} +let EgH=(a,b,c,d)=>{a.cdi=B$(b);a.cWB=c;a.c4p=d;},CqQ=(a,b,c)=>{let d=new Cg0();EgH(d,a,b,c);return d;},C7Z=(a,b)=>{return AHB(a.cdi,b)?0:1;}; +function CSh(){F.call(this);this.cNG=null;} +let EPS=(a,b,c)=>{return (a.cNG.bY_.a9W()).bmi(b,R5(c,7.0,7.0));},Bbb=N(Bx),A9J=null,B3M=null,CGP=null,D72=null,A2Y=()=>{A2Y=Z(Bbb);EQD();},DEW=(a,b,c)=>{A2Y();Ct(a,b,c);},BZm=(a,b)=>{let c=new Bbb();DEW(c,a,b);return c;},EQD=()=>{let b,c,d;A9J=BZm(E(859),0);B3M=BZm(E(860),1);b=BZm(E(8953),2);CGP=b;c=K(Bbb,3);d=c.data;d[0]=A9J;d[1]=B3M;d[2]=b;D72=c;}; +function Dgi(){let a=this;IT.call(a);a.cIu=null;a.cv2=0.0;a.cwH=null;a.cZw=null;} +let DqN=(b,c,d,e,f,g)=>{let h,i,j,k,l,m,$$je;h=U9(BkS(14));if(BO(c,E(89))){i=CC(c,E(89).bGI.length);j=b.Nz(i);if(j!==null){try{k=BlL(j);b=CR();H(H(b,E(88)),j);b=Db5(CH(b),h,k,f,g);}catch($$e){$$je=P($$e);if($$je instanceof Dt){l=$$je;c=AC1(l);b=new S;T(b);H(H(b,E(8954)),c);return AKA(Q(b),h);}else{throw $$e;}}return b;}b=new S;T(b);Bb(H(H(b,E(8955)),i),93);return AKA(Q(b),h);}if(BO(c,E(88))){m=B_(c,E(88).bGI.length,c.bGI.length);try{b=Db5(c,h,BlL(m),f,g);}catch($$e){$$je=P($$e);if($$je instanceof Dt){l=$$je;b +=AC1(l);c=new S;T(c);H(H(c,E(8954)),b);return AKA(Q(c),h);}else{throw $$e;}}return b;}return AKA(E(8956),h);},Db5=(b,c,d,e,f)=>{let g;g=BVO(d);if(g===null){f=new S;T(f);Bb(H(H(f,E(8957)),b),41);return AKA(Q(f),c);}c=new Dgi;b=null;c.cIu=g;c.cv2=e;c.cwH=f;c.cZw=b;return c;},DHy=(a,b)=>{let c,d,e;b=new LU;c=a.cIu;d=c.bNs;e=a.cv2;MO(b,d*e,c.bOO*e);return b;},DFv=(a,b)=>{return 0.0;},EXw=(a,b)=>{let c,d,e;c=a.cwH;if(c!==null)b.hF(c);c=new NR;d=new WP;e=a.cIu;WL();ACP(d,e,YW);ABW(c,d);d=a.cZw;b.hP(A9h(CW9(c.b3E, +d,c.cr9),a.cv2));if(a.cwH!==null)b.hG();}; +function B61(){let a=this;F.call(a);a.cQf=null;a.b_W=null;a.dcA=null;} +let C8i=null,B89=0,A4l=()=>{A4l=Z(B61);EXT();},CPF=b=>{let c,d,e,$$je;A4l();if(!B89&&!(!(ER1()?1:0)&&!Brr(E(8958))))B89=1;a:{c=Fe(DRH(Cq(b)));if(c===null)d=null;else{d=new S;T(d);H(H(H(d,E(8959)),c),E(8960));c=Q(d);e=new ANc;TU();A2x(e,A1z(c,Vb));b:{try{d=E2k(e,b);break a;}catch($$e){$$je=P($$e);if($$je instanceof Dd){b=$$je;break b;}else{throw $$e;}}}GP(b);d=null;}}return d;},EPf=(a,b,c)=>{let d,e,f,g,h,$$je;A4l();a.b_W=Bk();a.dcA=c;d=LR();e=Bid(A4B(b));a:{b:{try{while(true){b=AZ5(e);if(b===null)break a;U(a.b_W, +b);if(!CB(b,E(8961)))continue;d=EeG(b);}}catch($$e){$$je=P($$e);if($$je instanceof Gt){b=$$je;break b;}else{throw $$e;}}}c:{d:{try{AAF(e);break c;}catch($$e){$$je=P($$e);if($$je instanceof Gt){c=$$je;break d;}else{throw $$e;}}}ANe(b,c);}J(b);}AAF(e);b=a.b_W;f=b.bGJ;if(f!=3&&f!=4){b=new BP;X(b);J(b);}c=Br(b);while(Bq(c)){g=Bm(c);if(CB(g,E(4902))){h=Eq(g,34)+1|0;f=In(g,34,h);a.cQf=B_o(B_(g,h,f),d);}}},E2k=(a,b)=>{let c=new B61();EPf(c,a,b);return c;},EeG=b=>{let c,d,e;A4l();c=D3(C8i,b);if(GW(c)){d=El(c,1);e=El(c, +2);return Bh(CZ(d),!(e!==null&&!CQ(e))?0:CZ(e));}return LR();},Dh7=(a,b,c)=>{let d,e;d=IZ(b,c);if(d!=(-1)){e=Sy(b,E(1268),d);if(e!=(-1)){d=e+1|0;e=Sy(b,E(1268),d);if(e==(-1)){b=new Bt;X(b);J(b);}return B_(b,d,e);}b=new Bt;X(b);J(b);}b=new Bt;X(b);J(b);},EXT=()=>{C8i=Dp(E(8962));B89=0;},ER1=()=>{var g=typeof globalThis!=='undefined'?globalThis:typeof self!=='undefined'?self:this;return !!(g&&g.PLANTUML_OPENICONIC);},DRH=b=>{var g=typeof globalThis!=='undefined'?globalThis:typeof self!=='undefined'?self:this;var o +=g&&g.PLANTUML_OPENICONIC;return o&&o[b]?o[b]:null;}; +function CIu(){let a=this;IT.call(a);a.c3a=null;a.cys=0.0;a.cxg=null;a.c48=null;} +let Eyt=(a,b,c,d,e,f)=>{a.cxg=f;a.c3a=d;a.cys=c*BPj(e)/12.0;if(b===null)b=e.bI2;a.c48=b;},CC9=(a,b,c,d,e)=>{let f=new CIu();Eyt(f,a,b,c,d,e);return f;},CMG=a=>{let b,c,d,e;b=a.c3a;c=a.c48;d=a.cys;e=new DfS;e.cv4=b;e.c1u=c;e.czn=d;return Js(e,1.0,0.0);},FpX=(a,b)=>{return (CMG(a)).cF(b);},EdO=(a,b)=>{return (-3.0)*a.cys;},FsR=(a,b)=>{let c;c=a.cxg;if(c!==null)b.hF(c);(CMG(a)).cC(b);if(a.cxg!==null)b.hG();}; +function BZl(){let a=this;F.call(a);a.cvr=null;a.c1T=null;a.c4m=null;} +let FqM=null,B01=0,BOt=()=>{BOt=Z(BZl);E4u();},DLV=a=>{let b,c;Jl(a);try{if(a.cvr===null){b=Bk();c=Fe(C$P(Cq(a.c1T)));if(c!==null)U(b,c);a.cvr=BRh(b,null,null);return;}}finally{G2(a);}},E4u=()=>{FqM=Dy();B01=0;},ENz=()=>{var g=typeof globalThis!=='undefined'?globalThis:typeof self!=='undefined'?self:this;return !!(g&&g.PLANTUML_EMOJI);},EoW=b=>{var g=typeof globalThis!=='undefined'?globalThis:typeof self!=='undefined'?self:this;var s=g&&g.PLANTUML_EMOJI_SHORTCUT;return s&&s[b]?s[b]:null;},C$P=b=>{var g=typeof globalThis +!=='undefined'?globalThis:typeof self!=='undefined'?self:this;var e=g&&g.PLANTUML_EMOJI;return e&&e[b]?e[b]:null;}; +function Ccq(){let a=this;IT.call(a);a.c6b=null;a.ciz=0.0;a.cNh=null;} +let EWy=(a,b)=>{let c;c=36.0*a.ciz;return Cl(c,c);},E$R=(a,b)=>{return (-3.0)*a.ciz;},EjY=(a,b)=>{let c,d,e,f,$$je;c=a.c6b;d=a.ciz;e=a.cNh;a:{b:{try{DLV(c);break a;}catch($$e){$$je=P($$e);if($$je instanceof Dd){f=$$je;break b;}else{throw $$e;}}}GP(f);}Dqy(c.cvr,b,d,e,e);}; +function B9R(){let a=this;IT.call(a);a.cBT=null;a.cuZ=0.0;a.cAX=null;a.cEx=null;a.cDt=null;a.c2R=null;} +let DS$=(a,b,c,d,e,f,g)=>{a.cuZ=d;a.cBT=e;a.cAX=f;a.cEx=b;a.cDt=c;a.c2R=g;},Cg_=(a,b,c,d,e,f)=>{let g=new B9R();DS$(g,a,b,c,d,e,f);return g;},Eka=(a,b)=>{return (a.cBT.Bl(a.cEx,a.cDt,a.cuZ,null)).cF(b);},DB6=(a,b)=>{return 0.0;},DXB=(a,b)=>{let c;c=a.cAX;if(c!==null)b.hF(c);(a.cBT.Bl(a.cEx,a.cDt,a.cuZ,a.c2R)).cC(b);if(a.cAX!==null)b.hG();}; +function Dsz(){IT.call(this);this.cWx=0.0;} +let E3$=(a,b)=>{return Cl(a.cWx,1.0);},DTf=(a,b)=>{return 0.0;},Fwg=(a,b)=>{return;}; +function DgN(){let a=this;F.call(a);a.cCs=null;a.cti=null;} +let EEm=a=>{return a.cti;},E5I=a=>{return a.cCs;},Eq0=a=>{return Oz(a.cCs)^Oz(a.cti);}; +function C0M(){F.call(this);this.b58=null;} +let Fcp=a=>{a.b58=Bk();},Dhb=()=>{let a=new C0M();Fcp(a);return a;},BY7=b=>{return b*8.0;},C2e=(a,b)=>{return BY7(b)+8.0;}; +function Cqh(){K2.call(this);this.cRH=null;} +let Ect=a=>{return a.cRH;}; +function CsJ(){let a=this;F.call(a);a.bNk=null;a.bP6=null;a.crU=null;a.cvz=null;} +let ELd=a=>{let b,c,d;b=BY(a.bNk);c=BY(a.bP6);d=new S;T(d);H(H(H(H(d,E(8963)),b),E(8964)),c);return Q(d);},ECv=(a,b,c)=>{a.crU=Dy();a.bNk=b;a.bP6=c;},AEI=(a,b)=>{let c=new CsJ();ECv(c,a,b);return c;},D5u=a=>{return a.bNk.a35();},ESS=a=>{return a.bP6.a36();},BhJ=(a,b,c)=>{let d;d=DG(a.crU,b);if(d===null){d=a.bNk;if(b===d)d=B93(a,c);else if(b===a.bP6)d=B_A(a,c);else{d=d.bBm(b,c);if(d!==null)d=DJ(d,B93(a,c));else{d=a.bP6.bBm(b,c);if(d!==null)d=DJ(d,B_A(a,c));else{b=new BV;X(b);J(b);}}}C9(a.crU,b,d);}return d;},Dze +=(a,b)=>{let c;c=b.hE();(b.h2(BhJ(a,a.bNk,c))).hP(a.bNk);(b.h2(BhJ(a,a.bP6,c))).hP(a.bP6);},Cw0=a=>{return a.bNk.Xm();},D6l=a=>{return FF();},AXG=(a,b)=>{if(a.cvz===null)a.cvz=AAu(a.bNk.a32(b),a.bP6.a32(b));return a.cvz;},B93=(a,b)=>{return BM((AXG(a,b)).bGY-(a.bNk.a32(b)).bGY);},B_A=(a,b)=>{let c,d;c=a.bNk.a32(b);d=(AXG(a,b)).bGY;return Bh(d-(a.bP6.a32(b)).bGY,c.bGF);},Eew=a=>{let b,c,d;b=G$();c=a.bNk.a34();d=b;Ea(d,c);Ea(d,a.bP6.a34());return b;},EKV=a=>{return a.bNk.Xs();},FdC=a=>{let b,c;b=E2(a.bNk.Xl());c +=a.bP6.Xl();Ea(b,c);return b;},EYs=a=>{let b,c;b=K(QU,2);c=b.data;c[0]=a.bNk;c[1]=a.bP6;return Bv(b);},E0A=a=>{return a.bNk.bDq();},Ek1=(a,b)=>{return AXG(a,b);},ACh=N(0); +function Dc(){let a=this;F.call(a);a.bHr=null;a.bHF=null;} +let Fb=(a,b,c)=>{a.bHr=b;a.bHF=c;},EfQ=a=>{let b,c,d;b=BY(a.bHr);c=BY(a.bHF);d=new S;T(d);Bb(d,91);Bb(H(H(H(d,b),E(8965)),c),93);return Q(d);},Ep1=a=>{return a.bHr;},DBB=a=>{return a.bHF;},IJ=a=>{let b;b=a.bHr;if(b===null){b=a.bHF;if(b===null){B3();return CF;}return b.bDq();}return b.bDq();},Kn=N(0); +function Cil(){let a=this;Dc.call(a);a.cAj=null;a.cAh=null;a.cyq=null;a.cBo=null;} +let EpI=(a,b)=>{b.hP(CZF(a));},CZF=a=>{let b,c;b=a.bHr.Xs();c=Iv(D8(b,a.cyq,(b.a$c()).a$e()),a.cBo,IJ(a));Dv(c,a.cAj);Dv(c,a.cAh);return c;},DOO=(a,b,c,d)=>{let e,f,g,h,i;e=a.bHr.Xs();f=Iv(D8(e,a.cyq,(e.a$c()).a$e()),a.cBo,IJ(a));g=Cs(c,a.cAj);h=Cs(d,a.cAh);i=(g.bGL+h.bGL)/2.0;Dv(f,g);Ci(f,g.bGK,i);Ci(f,h.bGK,i);Dv(f,h);b.hP(f);}; +function C5C(){let a=this;Fc.call(a);a.bSR=null;a.cSy=0.0;} +let EeL=a=>{return AV9(a.bSR);},EGQ=a=>{return CzY(a.bSR);},D2B=a=>{return AWz(a.bSR);},EDk=a=>{return BQs(a.bSR);},E$Q=a=>{return CWn(a.bSR);},EM7=(a,b)=>{let c,d,e;c=Ly(a.bSR,b);b=c;d=b.bGE;e=a.cSy;if(!(d>e))return Qt(e,b.bGF,c.bGY,c.bHi,c.bHH);b=new BP;X(b);J(b);},EO$=(a,b)=>{b.hP(a.bSR);},E9t=a=>{return HL(a.bSR);},Ee$=(a,b,c)=>{if(b===a.bSR)return LR();return BSj(a,b,c);}; +function B_Z(){K2.call(this);this.b22=null;} +let D2D=a=>{return a.b22;},A4e=N(),B_0=N(A4e),E75=a=>{let b;b=Yd(E(8966));BQ(b,(-4.0),10.0);BQ(b,0.0,0.0);BQ(b,4.0,10.0);BQ(b,0.0,6.0);return b;},Frt=a=>{let b;b=Yd(E(8967));BQ(b,(-4.0),(-10.0));BQ(b,0.0,0.0);BQ(b,4.0,(-10.0));BQ(b,0.0,(-6.0));return b;},FcI=a=>{let b;b=Yd(E(8393));BQ(b,(-10.0),(-4.0));BQ(b,0.0,0.0);BQ(b,(-10.0),4.0);BQ(b,(-6.0),0.0);return b;},DR_=a=>{let b;b=Yd(E(8394));BQ(b,10.0,(-4.0));BQ(b,0.0,0.0);BQ(b,10.0,4.0);BQ(b,6.0,0.0);return b;},CSy=N(A4e),EXK=a=>{let b;b=Yd(E(8966));BQ(b,(-4.0), +10.0);BQ(b,0.0,0.0);BQ(b,4.0,10.0);return b;},FmP=a=>{let b;b=Yd(E(8967));BQ(b,(-4.0),(-10.0));BQ(b,4.0,(-10.0));BQ(b,0.0,0.0);return b;},EQG=a=>{let b;b=Yd(E(8393));BQ(b,(-10.0),(-4.0));BQ(b,0.0,0.0);BQ(b,(-10.0),4.0);return b;},D1Q=a=>{let b;b=Yd(E(8394));BQ(b,10.0,(-4.0));BQ(b,0.0,0.0);BQ(b,10.0,4.0);return b;}; +function C1J(){let a=this;Fc.call(a);a.ckj=null;a.cTd=0;a.cot=null;} +let DU_=a=>{return Gi();},E0x=a=>{let b;b=a.cot;if(b===null)return SY();return HL(b);},FhL=a=>{return a.cot;},Eup=a=>{return a.cot;},DFy=(a,b)=>{ADH(a.ckj,b);},Ev0=(a,b)=>{let c;c=De(a.ckj,b);if(a.cTd)return ZG(c,c.bGE/2.0,0.0,c.bGF);return AB9(c,c.bGE/2.0,0.0);},Eso=(a,b,c)=>{return (-6.0);},Fmz=(a,b,c)=>{return (De(a.ckj,b)).bGE-6.0;}; +function Cjz(){let a=this;F.call(a);a.cuH=null;a.cJM=null;a.bQc=0.0;a.cDG=null;a.b7s=null;} +let Fgm=(a,b,c)=>{let d,e,f,g;d=a.cuH.bGE;if(a.bQc!==0.0){if(APY(a.b7s)!=1){if(b){if(b==(APY(a.b7s)-1|0)){e=EE();Ec(e,0.0,0.0);B2(e,d,0.0);B2(e,d,c-a.bQc/2.0);f=a.bQc/2.0;Mk(e,f,f,0.0,0.0,1.0,d-f,c);B2(e,a.bQc/2.0,c);f=a.bQc/2.0;Mk(e,f,f,0.0,0.0,1.0,0.0,c-f);B2(e,0.0,0.0);return e;}return C2(d,c);}e=EE();Ec(e,a.bQc/2.0,0.0);B2(e,d-a.bQc/2.0,0.0);g=a.bQc/2.0;Mk(e,g,g,0.0,0.0,1.0,d,g);B2(e,d,c);B2(e,0.0,c);B2(e,0.0,a.bQc/2.0);c=a.bQc/2.0;Mk(e,c,c,0.0,0.0,1.0,c,0.0);return e;}return Ge(C2(d,c),a.bQc);}return C2(d, +c);}; +function Dk5(){let a=this;F.call(a);a.c3y=0;a.cDy=0;a.c6H=0;a.cpS=0;a.c0S=null;} +let C$Y=a=>{return a.cpS<=0?0:1;},CwA=a=>{let b,c,d;b=a.cpS-1|0;a.cpS=b;if(b>=0){c=a.c0S;if(c.bXl<=a.c3y){b=a.cDy;a.c6H=b;d=c.bLY.data;c=d[b];a.cDy=BZM(b,d.length);return c;}c=new Nr;X(c);J(c);}c=new Kx;X(c);J(c);}; +function CrM(){IT.call(this);this.cnW=null;} +let EV7=(a,b)=>{let c,d,e,f;c=0.0;d=0.0;e=Br(a.cnW);while(Bq(e)){f=(Bm(e)).cF(b);c=BC(c,f.bGE);d=d+f.bGF;}return Cl(c,d);},FkI=(a,b)=>{return (Be(a.cnW,0)).a0M(b);},Fh_=(a,b)=>{let c,d,e,f;c=0.0;d=Br(a.cnW);while(Bq(d)){e=Bm(d);f=e.cF(b.hE());e.cC(b.h2(BW(c)));c=c+f.bGF;}}; +function CTY(){let a=this;F.call(a);a.cwu=null;a.cw3=null;} +let A$g=(a,b,c)=>{return a.cwu.bAR(b,c)+a.cw3.cMN;},A7R=(a,b,c)=>{return a.cwu.bAS(b,c)-a.cw3.cPl;}; +function CTZ(){let a=this;F.call(a);a.cjQ=null;a.c3k=0.0;} +let EhU=(a,b,c)=>{return A$g(a.cjQ,b,c);},Fld=(a,b,c)=>{let d;d=A$g(a.cjQ,b,c);return d+(A7R(a.cjQ,b,c)-d-a.c3k)/2.0;}; +function CT0(){let a=this;F.call(a);a.ckb=null;a.cRV=0.0;} +let EzE=(a,b,c)=>{let d,e;d=A$g(a.ckb,b,c);e=A7R(a.ckb,b,c);return e-(e-d-a.cRV)/2.0;},D2M=(a,b,c)=>{return A7R(a.ckb,b,c);}; +function CqV(){let a=this;K2.call(a);a.cEf=0.0;a.c0s=0.0;a.ctw=null;} +let EhM=(a,b,c,d)=>{V5(a,b);a.cEf=c;a.c0s=d;},C4a=(a,b,c)=>{let d=new CqV();EhM(d,a,b,c);return d;},Et6=(a,b)=>{let c;c=a.cEf;if(c>0.0)b=b.h2(BW(c));b.hP(a.bK9);},Dq7=(a,b)=>{let c,d,e,f;if(a.ctw===null){b=Ly(a,b);c=a.cEf;d=a.c0s;e=new JD;f=b;MZ(e,f.bGE,f.bGF+c+d,b.bGY,b.bHi+c,!Ew(b)?b.bHH:b.bHH+c);a.ctw=e;}return a.ctw;},D0Z=(a,b)=>{return Dq7(a,b);}; +function BLO(){K2.call(this);this.ck6=null;} +let Ct1=(a,b,c)=>{V5(a,b);a.ck6=Bk();if(!(B$(c)).dV()){b=new Bt;X(b);J(b);}Ea(a.ck6,c);},DTH=(a,b)=>{let c=new BLO();Ct1(c,a,b);return c;},EBq=a=>{let b,c,d;b=DgL(a);c=BY(a.ck6);d=new S;T(d);b=H(d,b);Bb(b,32);H(b,c);return Q(d);},Fa6=(a,b)=>{let c;a.bK9.cC(b);c=Br(a.ck6);while(Bq(c)){b.hP(Bm(c));}},EwZ=N(); +function C4I(){IT.call(this);this.ceN=null;} +let D9$=(a,b)=>{let c,d,e,f;c=0.0;d=0.0;e=Br(a.ceN);while(Bq(e)){f=(Bm(e)).cF(b);d=BC(d,f.bGF);c=c+f.bGE;}return Cl(c,d);},CrC=(a,b)=>{let c;c=a.ceN;if(c.bGJ)return (Be(c,0)).a0M(b);return 0.0;},EH2=(a,b)=>{let c,d,e,f,g,h;c=b.hE();d=CrC(a,c);e=0.0;f=Br(a.ceN);while(Bq(f)){g=Bm(f);h=g.cF(c);g.cC(b.h2(Bh(e,d-g.a0M(c))));e=e+h.bGE;}}; +function Di3(){let a=this;Fc.call(a);a.bUa=null;a.cI7=0.0;a.c6O=0.0;} +let FaG=(a,b,c,d)=>{Jd(a,b.Xs());a.bUa=b;a.cI7=c;a.c6O=d;},CZL=(a,b,c)=>{let d=new Di3();FaG(d,a,b,c);return d;},EGH=a=>{return HL(a.bUa);},EY7=a=>{return a.bUa.Xm();},EKM=a=>{return a.bUa.bDp();},DSv=a=>{return a.bUa.a34();},Eom=a=>{return a.bUa.a35();},EJ$=a=>{return a.bUa.a36();},DK3=(a,b)=>{let c,d,e,f;c=a.bUa.a32(b);b=new JD;d=c;e=d.bGE;f=a.cI7;MZ(b,e+f+a.c6O,d.bGF,c.bGY+f,c.bHi,c.bHH);return b;},DF4=(a,b,c)=>{let d;d=a.bUa;if(b!==d)return DJ(d.bBm(b,c),BOE(a));return BOE(a);},BOE=a=>{return BM(a.cI7);},EtN +=(a,b)=>{(b.h2(BOE(a))).hP(a.bUa);}; +function CIB(){let a=this;F.call(a);a.cX8=0;a.coF=0;} +let Fe5=(a,b,c)=>{Gp(c,E(8968));a.cX8=b;a.coF=ADT(c);},CUb=(a,b)=>{let c=new CIB();Fe5(c,a,b);return c;}; +function Dmp(){Dc.call(this);this.daQ=null;} +let BzO=N(0),Fj5=N(); +function CsQ(){F.call(this);this.b88=null;} +let EoD=(a,b,c)=>{let d,e,f,g,h,i,j;d=B8H(a.b88,b);e=B9g(a.b88,b);f=BNV(a.b88.bYC,d.bGE,e);g=By5(a.b88.bYC,e);h=c.bGK;if(h>=f){i=c.bGL;if(i>=0.0&&i<=g)return Bh(0.0,g);}j=C5(c.bGL,0.0);if(j<=0&&h>=f+7.0)return Bh(0.0,g);if(j<=0){f=f-7.0;if(h>=f)return Bh(0.0,g*(h-f)/14.0);}return LR();}; +function Cf8(){let a=this;F.call(a);a.ccs=0;a.b85=0.0;} +function Cpn(){QP.call(this);this.cgn=null;} +let DKU=a=>{return B95(a.cgn);},EUL=a=>{return APY(a.cgn);},Fow=a=>{let b,c;b=Ta(UA(a.cgn));c=new CIn;c.c$j=a;c.cCQ=b;return c;}; +function DgZ(){let a=this;Fc.call(a);a.cAp=null;a.b_$=null;} +let DEF=a=>{return Gi();},Fxb=a=>{let b;b=a.b_$;if(b===null)return SY();return HL(b);},Fgw=a=>{return a.b_$;},ECK=a=>{return a.b_$;},DGW=(a,b)=>{Czt(a.cAp,b);},DWw=(a,b)=>{let c;c=(Dmm(a.cAp,b)).bGE;return Qt(c,c,c/2.0,0.0,c);}; +function Dix(){Fc.call(this);this.bZj=null;} +let EUl=(a,b)=>{let c,d;Jd(a,(Be(b,0)).Xs());a.bZj=Bk();c=Br(b);while(Bq(c)){d=Bm(c);U(a.bZj,d);}},B0O=a=>{let b=new Dix();EUl(b,a);return b;},DZt=a=>{return a.bZj;},CBn=a=>{return (Be(a.bZj,0)).a35();},ELH=a=>{return CBn(a);},EPU=a=>{let b,c,d;b=a.bZj;c=G$();d=Br(b);while(Bq(d)){b=(Bm(d)).a34();Ea(c,b);}return c;},D3k=(a,b)=>{let c,d,e,f;c=b.hE();d=0.0;e=Br(a.bZj);while(Bq(e)){f=Bm(e);(b.h2(BM(d))).hP(f);d=d+(f.a32(c)).bGE;}},E3J=(a,b)=>{let c,d,e,f,g;c=0.0;d=0.0;e=Br(a.bZj);while(Bq(e)){f=(Bm(e)).a32(b);d +=d+f.bGE;g=f.bGF;if(g>c)c=g;}e=Cl(d,c);return ZG(e,e.bGE/2.0,0.0,e.bGF);},DMu=(a,b,c)=>{let d,e,f;d=0.0;e=Br(a.bZj);while(true){if(!Bq(e)){b=new Bt;X(b);J(b);}f=Bm(e);if(f===b)break;d=d+(f.a32(c)).bGE;}return BM(d);}; +function CqU(){let a=this;F.call(a);a.bNQ=null;a.bY$=null;a.bX8=null;a.cT3=null;a.c2C=null;a.b4r=null;a.bX2=null;a.cSL=null;a.b0U=null;a.bTy=null;a.bVz=null;a.ckh=null;a.bSW=null;a.cgx=null;a.c7f=null;a.bQV=null;a.cHz=null;a.c3x=null;a.b6w=null;a.cYy=null;} +let Bwj=b=>{return !(!R1(b)&&!A4z(b))?1:0;},BfP=(a,b,c)=>{let d,e,f,g;d=AMB(b.bKi,30.0);e=AMB(c.bKi,30.0);f=Cjp(a,0,ASB(a,b),ASB(a,c));g=DmR(a,b,c,1);if(!A4z(c)){if(!A4z(b)){if(R1(b))return BiZ(f,g,a.bNQ,AJL(e,10.0),a.b4r,a.b0U,a.bX2,null,null,a.b6w);return BiZ(f,g,a.bNQ,AJL(d,10.0),a.b4r,a.b0U,a.bX2,null,Xy(c),a.b6w);}return BiZ(f,g,a.bNQ,AJL(e,10.0),a.b4r,a.b0U,a.bX2,b.bKi,Xy(b),a.b6w);}return BiZ(f,g,a.bNQ,AJL(d,10.0),a.b4r,a.b0U,a.bX2,c.bKi,Xy(c),a.b6w);},Cjp=(a,b,c,d)=>{let e,f,g,h,i,j,k;e=a.bTy.cpT;f= +IR(a.cYy);g=a.ckh;h=a.c7f;Ed();i=FR;h=AKv(S0(ARN(g,h,f,i),e),a.cT3,BvC(a.ckh));f=B1(a.ckh);B8();i=Fi(B0(f,A3J));j=new AGu;f=new CA5;f.cud=h;AUC(j,h,f,i);f=a.cSL;AJc();if(f===ABe)k=!b?BCl(B11(AIh(j,Mn(a.bQV),a.bX8,a.bY$,a.bNQ),c),d):BCl(B0U(AIh(j,Mn(a.bQV),a.bX8,a.bY$,a.bNQ),c),d);else if(f===AJs)k=!b?BxX(CV5(Bu3(AGE(Mn(a.bQV),a.bX8,a.bY$,a.bNQ),j),c),d):BxX(B5c(Bu3(AGE(Mn(a.bQV),a.bX8,a.bY$,a.bNQ),j),c),d);else if(f===AM0)k=!b?BNW(ChX(BkR(j,Mn(a.bQV),a.bX8,a.bY$,a.bNQ),c),d):BNW(Cdd(BkR(j,Mn(a.bQV),a.bX8,a.bY$, +a.bNQ),c),d);else{c=new BP;X(c);J(c);}return k;},ASB=(a,b)=>{let c,d,e,f;c=AXq(b);d=a.cgx;B3();b=CF;e=a.bX2.Xs();f=a.c2C;Ed();return Py(c,d,b,e,f,J0,null,null);},DmR=(a,b,c,d)=>{let e,f,g,h,i,j,k,l;e=a.b0U;AHJ();if(e!==AUm){a:{b:{f=a.bQV;e=a.bSW;if(Ew(AEi(f,e))){f=a.cHz;e=a.bSW;if(Ew(AEi(f,e)))break b;}g=0;break a;}g=1;}if(!g)h=CeJ(Mn(a.bQV),0.0,6.0,a.bNQ);else{e=b.bKi.b22.bJa;if(e===null)i=null;else{f=a.cgx;B3();i=CF;j=a.bX2.Xs();Ed();i=Vy(e,f,i,j,J0);}f=c.bKi.b22.bJa;if(f===null)j=null;else{b=a.cgx;B3();e +=CF;j=a.bX2.Xs();Ed();j=Vy(f,b,e,j,J0);}k=ZQ(c)!==null?ZQ(c):a.bX8;l=AGE(Mn(a.bQV),k,a.bY$,a.bNQ);h=BxX(!d?B5c(l,i):Bu3(l,i),j);}return h;}return CeJ(Mn(a.bQV),0.0,12.0,a.bNQ);}; +function BN2(){let a=this;Fc.call(a);a.db$=20.0;a.b$X=null;a.bRy=null;a.b5g=null;a.bN8=null;a.ddB=null;} +let CN9=0,AWP=()=>{AWP=Z(BN2);D8m();},Epd=(a,b,c,d,e,f)=>{let g,h,i,j,k,l;AWP();g=d;Jd(a,(Be(g,0)).Xs());a.db$=20.0;a.bN8=Bk();h=b;if(h.bGJ==g.bGJ){i=0;while(i{let f=new BN2();Epd(f,a,b,c,d,e);return f;},CfO=(b,c)=>{let d,e;AWP();d=0.0;e=Br(b);while(Bq(e)){d=BC(d,((Bm(e)).a32(c)).bHH);}return d;},DXR=a=>{let b,c,d;b=G$();if(BmU(a)!==null){c=BmU(a);EQ(b, +c);}d=Br(a.bN8);while(Bq(d)){c=(Bm(d)).a34();Ea(b,c);}c=AWz(a.bRy);Ea(b,c);return b;},BmU=a=>{return (Be(a.bN8,0)).a35();},ElK=a=>{return BmU(a);},Dts=(b,c,d,e,f,g,h,i,j,k)=>{let l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp;AWP();B$(i);B9();l=(BJ(k,Cz)).cu((d.Xs()).bGN);m=LY(j,(d.Xs()).bGN);n=D0(k,(d.Xs()).bGN);o=D0(j,(d.Xs()).bGN);p=Bk();q=f;r=Br(q);while(Bq(r)){s=Bm(r);j=AMB(s.bKi,30.0);U(p,j);}t=AMB(g.bKi,30.0);u=Bk();v=Bk();w=Br(q);while(Bq(w)){s=Bm(w);e=AXq(s);B3();r=C_(e, +o,CF,d.Xs());x=GM(k);j=s.cpT;e=d.Xs();q=CF;e=Q2(e,q);q=d.Xs();Ed();y=Py(j,n,e,q,x,FR,null,null);z=ZQ(s)!==null?ZQ(s):c;ba=Dbb(y,AC0(s),z,l,b);if(FQ(AXJ(s))){e=DL(0.0);U(v,e);}else{e=C_(AXJ(s),o,CF,d.Xs());j=DL((e.cF(d.hE())).bGE);U(v,j);ba=Fpn(ba,e);}e=FsS(ba,r);U(u,e);}b=AXq(g);B3();bb=C_(b,o,CF,d.Xs());j=u;bc=j.bGJ-1|0;GJ(j,bc,CR4(Be(j,bc),bb));e=d.hE();bd=CfO(u,e);k=Bk();be=0;while(true){if(be>=j.bGJ){bf=Fhq(k,v,p,t,m);q=Bk();be=0;bg=0;f=f;while(bg=0.0))break;b=Cs9(b,bp/2.0,20.0);U(k,b);be=be+1|0;}b=new C4;X(b);J(b);},BZI=(b,c)=>{AWP();return (b.bHi+b.bHH)/2.0;},D1g=a=>{let b,c;b=E2(a.b$X);c=a.bRy;U(b,c);return b;},BNj=(a,b,c)=>{if(b!==a.bRy){if(!Nw(a.bN8,b)){if(!Nw(a.b$X,b)){b=new BV;X(b);J(b);}return BIQ(a,b,c);}return Bq_(a,b, +c);}return Bd$(a,c);},Bd$=(a,b)=>{let c,d;c=AUW(a,b);d=AEi(a.bRy,b);return Bh(c.bGE-d.bGE,(c.bGF-0.0-d.bGF)/2.0+0.0);},A3n=(a,b,c)=>{let d;d=Rv(a.b5g,b);if(d!=(-1))return DJ(Bq_(a,Be(a.bN8,d),c),(Be(a.bN8,d)).bBm(b,c));b=new Bt;X(b);J(b);},BIQ=(a,b,c)=>{let d;d=Rv(a.b$X,b);if(d!=(-1))return DJ(Bq_(a,Be(a.bN8,d),c),(Be(a.bN8,d)).bBm(b,c));b=new Bt;X(b);J(b);},Bq_=(a,b,c)=>{let d,e,f,g;d=0.0;e=Br(a.bN8);while(true){if(!Bq(e)){b=new Bt;X(b);J(b);}f=Bm(e);g=f.a32(c);if(f===b)break;d=d+g.bGE+20.0;}return Bh(d,25.0);},D7K +=(a,b)=>{let c,d,e;c=b.hE();d=Br(a.bN8);while(Bq(d)){e=Bm(d);(b.h2(Bq_(a,e,c))).hP(e);}(b.h2(Bd$(a,c))).hP(a.bRy);},AUW=(a,b)=>{let c,d,e,f,g;c=CfO(a.b5g,b);d=Cl(0.0,0.0);e=Br(a.bN8);while(Bq(e)){d=AZV(d,(Bm(e)).a32(b));}f=AEi(a.bRy,b);g=0.0;e=Br(a.b5g);while(Bq(e)){g=BC(g,((Bm(e)).a32(b)).bGF);}b=FO(AZV(d,FO(f,0.0,g/2.0)),20.0*a.bN8.bGJ,BC(100.0,c));return AB9(b,b.bGE/2.0,0.0);},EOV=(a,b)=>{let c,d,e,f;c=AUW(a,b);d=E2(a.b$X);e=a.bRy;U(d,e);f=Br(d);while(Bq(f)){if(Ew((Bm(f)).a32(b)))return ZG(c,c.bGE/2.0,0.0, +c.bGF);}return AB9(c,c.bGE/2.0,0.0);},D8m=()=>{CN9=0;}; +function C6O(){let a=this;Fc.call(a);a.c_V=20.0;a.dcv=30.0;a.bQe=null;a.bS7=null;a.bS3=null;a.bXS=null;a.c$k=null;} +let DwE=a=>{let b,c;b=E2(a.bQe);c=a.bS7;U(b,c);return b;},Fc1=a=>{let b,c,d;b=G$();if(Bfk(a)!==null){c=Bfk(a);EQ(b,c);}d=Br(a.bQe);while(Bq(d)){c=(Bm(d)).a34();Ea(b,c);}c=AWz(a.bS7);Ea(b,c);return b;},Bfk=a=>{return (Be(a.bQe,0)).a35();},Fsh=a=>{return Bfk(a);},ET9=(b,c,d,e,f,g,h,i,j,k)=>{let l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ba,bb,bc,bd,be;l=D0(j,(d.Xs()).bGN);B9();m=(BJ(k,Cz)).cu((d.Xs()).bGN);n=LY(j,(d.Xs()).bGN);o=Bk();p=10.0;k=f;q=Br(k);while(Bq(q)){r=Bm(q);e=AXq(r);B3();s=C_(e,l,CF,d.Xs());j=r.cpT;i=d.Xs();e +=CF;e=CR4(Dbb(C_(j,l,Q2(i,e),d.Xs()),AC0(r),c,m,b),s);U(o,e);if(!FQ(AXJ(r)))p=BC(p,((C_(AXJ(r),l,CF,d.Xs())).cF(d.hE())).bGE);}q=Bk();j=Br(k);while(Bq(j)){r=Bm(j);e=new C0y;V5(e,r.bKi);e.cyc=p;U(q,e);}t=new AIY;e=q;Dmh(t,(Be(e,0)).Xs(),c,m,b);u=AMB(g.bKi,30.0);v=new C6O;Jd(v,(Be(e,0)).Xs());v.c_V=20.0;v.dcv=30.0;c=o;if(c.bGJ==e.bGJ){v.bXS=t;v.bS7=u;v.bS3=E2(o);v.bQe=E2(q);v.c$k=n;w=Bk();x=0;j=f;while(x{if(b!==a.bS7){if(b!==a.bXS){if(!Nw(a.bQe,b)){if(!Nw(a.bS3,b)){b=new BV;X(b);J(b);}return A03(a,b,c);}return A3h(a,b,c);}return Bp_(a,c);}return BrL(a,c);},A03=(a,b,c)=>{let d,e,f;d=C1t(a,c);e=Rv(a.bS3,b);if(e!=(-1)){f=B5m(a,e,c);return Bh((d-(b.a32(c)).bGE)/2.0,f);}b=new Bt;X(b);J(b);},Bp_=(a,b)=>{let c,d,e;c=AMg(a,b);d=Dj(a.bXS,b);e=c.bGE;d=d;return Bh((e-d.bGE)/ +2.0,c.bGF-d.bGF);},A3h=(a,b,c)=>{let d,e,f,g,h,i;d=Rv(a.bQe,b);if(d!=(-1)){e=B5m(a,d,c);f=(Be(a.bS3,d)).a32(c);g=b.a32(c);h=AMg(a,c);i=C1t(a,c);return Bh(i+(h.bGE-i-g.bGE)/2.0,e+f.bGF);}b=new Bt;X(b);J(b);},B5m=(a,b,c)=>{let d,e,f,g;d=30.0;e=0;while(e{let c,d;c=B5m(a,a.bQe.bGJ,b);d=AEi(a.bS7,b);return Bh(((AMg(a,b)).bGE-d.bGE)/2.0,c);},EUc=(a,b)=>{let c,d,e,f;c=b.hE();d=Br(a.bQe);while(Bq(d)){e=Bm(d);(b.h2(A3h(a, +e,c))).hP(e);}d=Br(a.bS3);while(Bq(d)){f=Bm(d);(b.h2(A03(a,f,c))).hP(f);}(b.h2(BrL(a,c))).hP(a.bS7);(b.h2(Bp_(a,c))).hP(a.bXS);},AMg=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=0.0;d=0.0;e=30.0;f=0;while(true){g=a.bQe;if(f>=g.bGJ)break;h=(Be(g,f)).a32(b);g=(Be(a.bS3,f)).a32(b);i=g.bGF;h=h;e=e+i+h.bGF;c=BC(c,g.bGE);d=BC(d,h.bGE);f=f+1|0;}j=c+d;g=AAu(AZT(j,e,j/2.0,0.0),AEi(a.bS7,b));k=Dj(a.bXS,b);b=Bor(g,0.0,20.0*a.bQe.bGJ+40.0+k.bGF);return AB9(b,b.bGE/2.0,0.0);},C1t=(a,b)=>{let c,d;c=0.0;d=Br(a.bS3);while(Bq(d)){c=BC(c, +((Bm(d)).a32(b)).bGE);}return c;},EsB=(a,b)=>{let c,d,e,f;c=AMg(a,b);d=E2(a.bQe);e=a.bS7;U(d,e);f=Br(d);while(Bq(f)){if(Ew((Bm(f)).a32(b)))return ZG(c,c.bGE/2.0,0.0,c.bGF);}return AB9(c,c.bGE/2.0,0.0);}; +function AMx(){let a=this;F.call(a);a.c9G=6.0;a.c8$=null;a.bH2=null;a.bIy=null;a.bPq=null;a.coC=null;} +let CBK=a=>{B8();return AUo;},B63=a=>{B8();return AHM;},BYN=(a,b,c,d,e)=>{let f,g,h,i,j,k,l;a.c9G=6.0;a.c8$=Uu();f=Bk();a.bPq=f;a.bH2=b;a.bIy=c;g=0.0;b=d;d=Br(b);while(Bq(d)){g=BC(g,((Bm(d)).a32(a.bIy)).bGF);}h=a.bIy;i=0.0;d=Br(b);while(Bq(d)){c=Sd(a,((Bm(d)).Xm()).bJa);if(c===null)continue;i=BC(i,(c.cF(h)).bGF);}h=a.bIy;j=0.0;d=Br(b);while(Bq(d)){c=Sd(a,((Bm(d)).bDp()).bJa);if(c===null)continue;j=BC(j,(c.cF(h)).bGF);}c=Bk();d=Br(b);k=g+40.0;while(Bq(d)){b=Bm(d);b=BoU(b,14.0,14.0+BC(CHo(a,b,(b.Xm()).bJa),CHo(a, +b,(b.bDp()).bJa)));h=new Ccr;Jd(h,b.Xs());h.bTw=b;h.crH=k;l=new CN$;Jd(l,Cr(h));l.bVT=h;l.cE2=i;l.c1q=j;U(c,l);}Ea(f,c);a.coC=e;},CHo=(a,b,c)=>{let d,e,f,g;d=Sd(a,c);if(d!==null){e=(d.cF(a.bIy)).bGE;f=b.a32(a.bIy);g=f.bGY+e;e=f.bGE;if(g>e)return g-e;return 0.0;}return 0.0;},FxR=a=>{return a.bIy;},Fyn=a=>{return a.bH2;},Sd=(a,b)=>{let c,d,e;if(!FQ(b)){c=D0(B0(B1(a.bH2),B63(a)),a.bH2.bGN);B3();d=CF;e=a.bH2;Ed();return Vy(b,c,d,e,J0);}return null;},Czh=(a,b)=>{return (b.a32(a.bIy)).bGF;},CBN=a=>{let b;b=a.bPq;return (Be(b, +b.bGJ-1|0)).a36();},Cd6=N(AMx),BYo=a=>{B8();return AHM;},D_D=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p;c=Bk();d=a;e=B0(B1(d.bH2),BYo(a));f=LY(e,d.bH2.bGN);g=new B6d;h=d.bH2;i=B0(B1(h),BYo(a));j=Br(a.bPq);a:{b:{while(Bq(j)){k=Br((Lj((Bm(j)).Xm(),LY(i,d.bH2.bGN))).bZm);c:{d:{while(Bq(k)){if(B4q((Bm(k)).cni))break d;}l=0;break c;}l=1;}if(!l)break b;}m=null;break a;}m=ATO(f);}CP4(g,h,m,(Be(a.bPq,0)).a35());n=0.0;o=0.0;p=0.0;k=Br(a.bPq);while(Bq(k)){j=Bm(k);h=j.a32(d.bIy);if(o===0.0)o=n+h.bGY;p=n+h.bGY;i=Lj(j.Xm(), +LY(e,d.bH2.bGN));m=new C_o;m.b0M=a;Fb(m,g,j);m.cdt=(j.Xm()).bJa;m.cz8=n;m.cId=i;U(c,m);n=n+h.bGE;}c=QF(b,c);n=(c.a32(d.bIy)).bGY;if(pn))n=o;CfT(g,n,p,(c.a32(d.bIy)).bGE);return AEI(g,c);},Fms=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;d=a;e=d.bIy;f=c;g=AXG(f,e);h=Br(a.bPq);a:{b:{while(Bq(h)){if(Ew((Bm(h)).a32(d.bIy)))break b;}i=0;break a;}i=1;}if(i){e=B0(B1(d.bH2),BYo(a));j=Lj(Cw0(f),LY(e,d.bH2.bGN));k=D$P(d.bH2,ATO(j),CBN(d));h=AEI(c,k);f=Bk();l=0.0;m=0.0;n=0.0;o=Br(a.bPq);while(Bq(o)){p +=Bm(o);q=BW(1.5);r=p.a32(d.bIy);if(Ew(r)){if(m===0.0)m=l+r.bGY;n=l+r.bGY;}s=Lj(p.bDp(),LY(e,d.bH2.bGN));if(Ew(p.a32(d.bIy))){c=new C06;t=Czh(a,b);c.b0L=a;Fb(c,p,k);c.ccy=q;c.b_L=(p.bDp()).bJa;c.czk=l;c.csu=s;c.cH1=t;U(f,c);}l=l+r.bGE;}t=g.bGY;if(nt))t=m;CfT(k,t,n,g.bGE);return QF(h,f);}return A2L(c);},CWL=N(AMx),FvW=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=Bk();d=new Bet;e=a;BLa(d,e.bH2,(Be(a.bPq,0)).a35(),a.coC);f=0.0;g=Br(a.bPq);while(Bq(g)){h=Bm(g);i=h.a32(e.bIy);j=LY(B0(B1(e.bH2),CBK(e)),e.bH2.bGN);k +=Lj(h.Xm(),j);j=new C4s;j.bZ5=a;Fb(j,d,h);j.ccn=(h.Xm()).bJa;j.cA$=f;j.cuB=k;U(c,j);f=f+i.bGE;}b=QF(b,c);BYP(d,(b.a32(e.bIy)).bGE,6.0);return AEI(d,b);},E_R=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o,p;d=a;e=B0(B1(d.bH2),CBK(d));B9();f=(BJ(e,Cz)).cu(d.bH2.bGN);g=(BJ(e,CK)).cu(d.bH2.bGN);h=AGE(d.bH2,g,f,CBN(d));f=AEI(c,h);i=Bk();b=d.bIy;j=BhJ(f,h,b);k=0.0;c=Br(a.bPq);while(Bq(c)){l=Bm(c);m=l.a32(d.bIy);n=Bh(k,6.0);o=LY(e,d.bH2.bGN);p=Lj(l.bDp(),o);if(Ew(l.a32(d.bIy))){b=new CqY;b.b$S=a;Fb(b,l,h);b.cWL=p;b.cOV=j;b.cVD +=n;U(i,b);}k=k+m.bGE;}return QF(f,i);}; +function CjJ(){let a=this;AMx.call(a);a.cQz=null;a.cRu=null;a.c4h=null;} +let D$a=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=Bk();d=a.cRu;e=a;f=B0(B1(e.bH2),B63(a));g=E4V(e.bH2,d,a.coC);h=0.0;i=Br(a.bPq);while(Bq(i)){j=Bm(i);k=j.a32(e.bIy);l=LY(f,e.bH2.bGN);m=Lj(j.Xm(),l);d=new CSE;d.b0n=a;Fb(d,g,j);d.cdb=(j.Xm()).bJa;d.cCC=h;d.cr5=m;U(c,d);h=h+k.bGE;}b=QF(b,c);BYP(g,(b.a32(e.bIy)).bGE,6.0);return AEI(g,b);},E3k=(a,b,c)=>{let d,e,f,g,h,i,j,k,l,m,n,o;d=a.c4h;e=new Bet;f=a;BLa(e,f.bH2,d,a.coC);g=e;d=f.bIy;BYP(g,(AXG(c,d)).bGE,6.0);d=a.cQz;if(d!==null)g.cbF=B$(Sd(a,B4(f.bH2.bH$,d)));h=AEI(c, +e);g=Bk();i=B0(B1(f.bH2),B63(a));j=0.0;d=Br(a.bPq);while(Bq(d)){k=Bm(d);l=k.a32(f.bIy);m=LY(i,f.bH2.bGN);n=Lj(k.bDp(),m);if(Ew(k.a32(f.bIy))){c=new Cy1;o=6.0+Czh(a,b);c.b0$=a;Fb(c,k,e);c.cGL=o;c.cdU=(k.bDp()).bJa;c.cFQ=j;c.cHe=n;U(g,c);}j=j+l.bGE;}return QF(h,g);}; +function Dhj(){let a=this;Fc.call(a);a.b$M=null;a.cWN=null;} +let D6m=a=>{return Gi();},DHT=a=>{let b;b=a.b$M;if(b===null)return SY();return HL(b);},DZ7=a=>{return a.b$M;},D6B=a=>{return a.b$M;},DOz=(a,b)=>{CuP(a.cWN,b);},EE8=(a,b)=>{return AZT(22.0,22.0,11.0,0.0);}; +function BW_(){let a=this;Fc.call(a);a.b0j=null;a.b3q=null;a.cgy=0.0;a.cvU=0.0;a.cAi=null;a.cvo=0.0;a.cYC=null;a.coK=null;a.clB=null;a.c5Q=null;a.cZx=null;a.cNI=null;a.cY5=null;} +let DYQ=a=>{return a.cYC;},EUi=a=>{let b;b=a.coK;if(b===null)return SY();return HL(b);},D2e=a=>{return a.coK;},DVU=a=>{return a.coK;},DEr=a=>{let b;b=a.cY5;if(b===null)return DcW(a);return b;},D7E=(a,b)=>{let c,d,e,f,g,h;c=Dj(a,b.hE());d=c.bGE;e=c.bGF;f=(Cr(a)).Vx();VO();if(BGW(Bs6(f,A3I))){Go();b=(b.h2(ASV)).h2(Dw(2.0));DyV(a.clB,b,d,e,a.cvU,a.cgy);}f=Fi(a.cNI);g=a.c5Q;b=g!==null?b.h2(g):b.h2(E4());g=a.cZx;b=(g!==null?b.h2(Cc(g)):b.h2(Cc(E4()))).h2(f);a.clB.bqx(b,d,e,a.cvU,a.cgy);g=a.cAi;B3();if(g===CF){c= +a.b3q;f=new FG;g=a.b0j;Hs(f,g.bIv,g.bIl);b=b.h2(f);AE6(c,b);}else if(g===Ft){f=a.b3q;g=b.hE();g=ACE(f,g);f=a.b3q;h=new FG;e=c.bGE-g.bGE;c=a.b0j;Hs(h,e-c.bKJ,c.bJU);b=b.h2(h);AE6(f,b);}else if(g===CO){f=a.b3q;g=b.hE();g=ACE(f,g);f=a.b3q;b=b.h2(Bh((c.bGE-g.bGE)/2.0,a.b0j.bJU));AE6(f,b);}},EJK=(a,b)=>{let c,d,e,f;c=ACE(a.b3q,b);b=a.b0j;b=W$(FO(c,b.bIv+b.bKJ,b.bJU+b.bIl),a.cvo,0.0);c=new JD;d=b.bGE;e=d+a.clB.bL2;f=b.bGF;MZ(c,e,f,d/2.0,0.0,f);return c;},D2t=a=>{return Gi();}; +function BS8(){let a=this;Fc.call(a);a.b2O=null;a.bZ6=null;a.cMC=null;a.cgd=null;} +let Flu=a=>{return a.cMC;},EcE=a=>{let b;b=a.cgd;if(b===null)return SY();return HL(b);},DQr=a=>{return a.cgd;},DZe=a=>{return a.cgd;},EdQ=(a,b)=>{let c,d,e,f;c=a.bZ6;GO();if(c===HD)a.b2O.cC(b);else{d=a.b2O.cF(b.hE());c=a.bZ6.cF(b.hE());e=d.bGE+5.0;f=(d.bGF-c.bGF)/2.0;if(f>0.0){a.b2O.cC(b);a.bZ6.cC(b.h2(Bh(e,f)));}else{a.b2O.cC(b.h2(BW( -f)));a.bZ6.cC(b.h2(BM(e)));}}},ELN=(a,b)=>{let c,d,e,f,g,h;c=a.b2O.cF(b);d=a.bZ6.cF(b);e=c.bGE+5.0+d.bGE;f=BC(c.bGF,d.bGF);g=c.bGF;h=(g-d.bGF)/2.0;if(!(h>0.0))return Qt(e,f, +c.bGE/2.0, -h,g-h);return Qt(e,f,c.bGE/2.0,0.0,g);},E7g=a=>{return Gi();}; +function Dkp(){K2.call(this);this.c5g=null;} +let Fdc=(a,b,c)=>{V5(a,b);a.c5g=B$(c);},CgK=(a,b)=>{let c=new Dkp();Fdc(c,a,b);return c;},Fub=(a,b)=>{b.hF(a.c5g);a.bK9.cC(b);b.hG();}; +function BTd(){let a=this;Fc.call(a);a.bMV=null;a.bKm=null;a.b1_=null;a.bWt=null;a.cp5=null;} +let CJn=0,BjB=()=>{BjB=Z(BTd);DOc();},DHh=a=>{let b;b=a.b1_;if(b!==null)return Bv(BB(QU,[a.bMV,a.bKm,b]));return Bv(BB(QU,[a.bMV,a.bKm]));},EoI=a=>{let b,c;b=ABx(a.bMV.a34());c=BSo(a);EQ(b,c);return b;},BSo=a=>{return a.bKm.bK2;},EYn=a=>{return BSo(a);},Dz7=(b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)=>{let r,s,t,u,v,w,x,y,z;BjB();B3();r=C_(i,j,CF,k.Xs());s=ATq(e)?E6(0.0,0.0):C_(e,m,(d.Xs()).AZ(CF),k.Xs());a:{t=C_(b.bJa,j,CF,k.Xs());AJc();if(l===ABe){e=AIh(s,d.Xs(),g,f,c);c=new AAp;f=e.bK1;g=Cr(e);i=e.bLw;l=e.bLi;m=e.bK2;u +=e.bLz;v=e.bJ3;Qw(c,f,g,i,l,m,r,u,e.bJA,v);u=B0U(c,t);}else{if(l!==AM0){if(l===AJs){u=B5c(CV5(Bu3(AGE(d.Xs(),g,f,c),s),r),t);break a;}b=new BP;X(b);J(b);}e=BkR(s,d.Xs(),g,f,c);c=new AXB;f=e.bK1;g=Cr(e);i=e.bLw;l=e.bLi;m=e.bK2;u=e.bJ3;v=e.bJA;Qw(c,f,g,i,l,m,r,e.bLz,v,u);u=Cdd(c,t);}}v=n!==null?n.Vv(k):null;w=new BTd;Jd(w,d.Xs());w.bMV=d;w.bKm=u;w.b1_=v;w.bWt=o;x=d.a32(k.hE());w.cp5=C_(p.bJa,j,CF,k.Xs());y=Bk();if(!(x.bGE!==0.0&&x.bGF!==0.0)){c=new CQX;B$(w);e=p.bLD;c.bUz=w;d=w.bKm;Fb(c,d,d);c.c0u=e;U(y,c);}else +{c=new C7e;B$(w);d=Lj(d.Xm(),h);c.b1L=w;Fb(c,w.bKm,w.bMV);c.cIj=d;e=y;U(e,c);if(o===null){c=new CON;B$(w);h=p.bLD;d=w.cp5;c.bNK=w;Fb(c,w.bMV,w.bKm);c.ccB=h;c.c4o=d;U(e,c);}else{z=C_(q.bJa,j,CF,k.Xs());c=new DsP;B$(w);h=p.bLD;d=w.cp5;c.bVk=w;Fb(c,w.bMV,w.bWt);c.c0M=h;c.cRq=d;U(e,c);c=new DsQ;B$(w);g=q.bLD;c.b2p=w;Fb(c,w.bWt,w.bKm);c.c6Z=g;c.cTy=z;U(e,c);}}if(n!==null){c=new Cth;B$(w);e=b.bLD;c.b2D=w;Fb(c,w.bKm,w.b1_);c.c5D=e;U(y,c);}else{c=new Dbj;B$(w);e=b.bLD;c.b7Q=w;Fb(c,w.bKm,null);c.csA=e;U(y,c);}return QF(w, +y);},E22=(a,b)=>{let c;c=b.hE();(b.h2(ABY(a,c))).hP(a.bMV);(b.h2(YF(a,c))).hP(a.bKm);if(a.b1_!==null)(b.h2(C$j(a,c))).hP(a.b1_);if(a.bWt!==null)(b.h2(BDG(a,c))).hP(a.bWt);},BDG=(a,b)=>{let c,d;c=Cvg(a,b);d=Dj(a.bWt,b);return Bh(c.bGE-d.bGE,(c.bGF-d.bGF)/2.0);},Cvg=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=Dj(a.bKm,b);d=a.bMV.a32(b);e=d;f=e.bGE;g= -f;if(g>0.0){h=g/2.0;i=Qt(f+2.0*h,e.bGF,d.bGY+h,d.bHi,d.bHH);BjB();if(CJn)d=i;else{b=new C4;X(b);J(b);}}j=AAu(c,d);i=j;k=i.bGF+48.0+CAB(a,b);f=0.0;e=a.bWt;if(e!==null)f=f+(Dj(e, +b)).bGE;return Qt(BZN(a,b)+i.bGE+24.0+12.0+f,k,BZN(a,b)+j.bGY+24.0,c.bHi,k);},CAB=(a,b)=>{let c;c=a.cp5;if(c!==null)return (c.cF(b)).bGF;return 0.0;},BZN=(a,b)=>{let c;c=a.b1_;if(c!==null)return (c.a32(b)).bGE;return 0.0;},DwZ=(a,b,c)=>{if(b!==a.bMV){if(b!==a.bKm){b=new BV;X(b);J(b);}return YF(a,c);}return ABY(a,c);},ABY=(a,b)=>{let c,d,e,f;c=Dj(a.bKm,b);d=Dj(a,b);e=a.bMV.a32(b);f=c.bGF;f=f+(d.bGF-f-e.bGF-CAB(a,b))/2.0;return Bh(d.bGY-e.bGY,f);},YF=(a,b)=>{let c,d;c=Dj(a,b);d=Dj(a.bKm,b);return Bh(c.bGY-d.bGY, +0.0);},C$j=(a,b)=>{let c,d;c=Dj(a.bKm,b);d=BC(3.0*(c.bHH-c.bHi)/2.0,48.0);return Bh(Eh((ABY(a,b)).bHj-12.0,(YF(a,b)).bHj)-BZN(a,b),d);},DOc=()=>{CJn=0;}; +function C7P(){let a=this;F.call(a);a.cmy=null;a.c4B=null;} +let FfS=(a,b)=>{a.cmy=Dy();a.c4B=b;CM4(a,b);},Dbl=a=>{let b=new C7P();FfS(b,a);return b;},CM4=(a,b)=>{let c,d;c=(b.a33()).dX();while(c.dY()){d=c.dZ();if(NB(a.cmy,d)){b=new Bt;X(b);J(b);}C9(a.cmy,d,b);CM4(a,d);}},BP5=(a,b,c)=>{let d,e;d=LR();while(b!==a.c4B){e=DG(a.cmy,b);d=DJ(e.bBm(b,c),d);b=e;}return d;}; +function B$I(){let a=this;F.call(a);a.cXd=null;a.cGD=null;a.cJ0=null;a.cv1=null;} +let DVP=(a,b)=>{let c,d;c=BP5(a.cXd,a.cGD,b.hE());d=D8(F4(a.cv1),a.cJ0,(MS(F4(a.cv1))).bEq());Ci(d,c.bHj,c.bHu);Ci(d,12.0,c.bHu);b.hP(d);},Esa=a=>{return a.cGD;},DGS=a=>{return null;}; +function CY5(){let a=this;Fc.call(a);a.cbE=null;a.cWn=null;a.cqu=null;a.cXu=null;a.cdh=null;} +let Els=a=>{return Gi();},DQc=a=>{let b;b=a.cbE;if(b===null)return SY();return HL(b);},ERl=a=>{return a.cbE;},EjA=a=>{return a.cbE;},Fbj=(a,b)=>{let c,d,e,f,g;c=Fz(20.0,20.0);d=a.cXu;if(d===null){d=a.cdh;B9();d=(BJ(d,CK)).cu(J4(a));}e=a.cdh;B9();f=(BJ(e,Cz)).cu(J4(a));g=G1(a.cdh);c.bG1=g;(((b.h2(f)).h2(Cc(d))).h2(Fi(a.cdh))).hP(c);((b.h2(a.cqu.bI2)).h2(Bh(10.0,10.0))).hP(BF5(Bn(a.cWn,0),Gk(a.cqu)));},EpT=(a,b)=>{return Qt(20.0,20.0,10.0,0.0,20.0);}; +function CkK(){let a=this;Fc.call(a);a.cO5=null;a.cQP=null;a.b9Q=null;a.cRI=null;a.cOB=0.0;} +let EK8=a=>{return Gi();},EVG=a=>{let b;b=a.b9Q;if(b===null)return SY();return HL(b);},E0m=a=>{return a.b9Q;},ExO=a=>{return a.b9Q;},DMH=(a,b)=>{let c,d,e,f,g;c=Id(AGn(0.0));d=Id(AGn(0.0));e=Fz(20.0,20.0);f=a.cOB;e.bG1=f;b=(b.h2(a.cO5)).h2(Cc(Qj()));((b.h2(Fi(a.cRI))).h2(Bh(c,d))).hP(e);b=b.h2(Cc(a.cQP));c=17.5/Gs(2.0);g=(20.0-c)/2.0;b=b.h2(Dw(2.5));(b.h2(Bh(g,g))).hP(EB(c,c));(b.h2(Bh(g,20.0-g))).hP(EB(c, -c));},FiW=(a,b)=>{return AZT(20.0,20.0,10.0,0.0);}; +function COI(){let a=this;Fc.call(a);a.bMe=null;a.bKF=null;a.bK4=null;a.bTj=null;a.cTu=null;} +let FnH=a=>{let b,c;b=K(QU,3);c=b.data;c[0]=a.bMe;c[1]=a.bKF;c[2]=a.bK4;return Bv(b);},EZo=(a,b,c,d,e,f)=>{Jd(a,Mn(b));a.bMe=b;a.bKF=c;a.bK4=d;a.cTu=e;a.bTj=f;},B3B=(a,b,c,d,e)=>{let f=new COI();EZo(f,a,b,c,d,e);return f;},DTy=a=>{return BQs(a.bMe);},Dyh=a=>{return a.bK4.a36();},Eke=a=>{let b,c,d;b=ABx(AWz(a.bMe));c=a.bKF.a34();d=b;Ea(d,c);Ea(d,a.bK4.a34());c=a.bTj;if(c!==null)Ea(d,c.a34());return b;},Eqz=(b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u)=>{let v,w,x,y,z,ba,bb,bc,bd,be,bf,bg,bh,bi,bj;AJc();if(n!==ABe)p +=q;if(!(!FQ(f)&&!ATq(f)))v=E6(0.0,0.0);else{w=Mn(e);B3();v=C_(f,p,w.AZ(CF),o);}B3();x=C_(g,q,CF,o);y=C_(h,q,CF,o);if(d===null)d=AGE(Mn(e),j,i,b);a:{if(n!==ABe){if(n===AJs){w=B3B(e,d,BxX(AGE(Mn(e),k,i,b),v),v,r);break a;}if(n===AM0){w=B3B(e,d,ChX(BNW(BkR(v,Mn(e),k,i,b),x),y),E6(0.0,0.0),r);break a;}b=new BP;X(b);J(b);}if(s&&FQ(f))z=Dpr(Mn(e));else{if(r===null)s=0;else{f=r.a35();s=!(f!==null&&c!==null)?0:BEP(f,c)>=0?0:1;}z=!s?B11(BCl(AIh(v,Mn(e),k,i,c),x),y):B11(B0U(AIh(v,Mn(e),k,i,c),x),y);}w=B3B(e,d,z,E6(0.0, +0.0),r);}ba=Bk();i=e;bb=(AV9(i)).bJa;if(bb===null)bc=null;else{d=CF;Ed();bc=Vy(bb,q,d,o,J0);}b:{c:{g=new Dn0;B$(w);h=Lj(AV9(i),l);g.b$B=w;Fb(g,w.bKF,w.bMe);g.cNR=h;g.c4z=bc;f=ba;U(f,g);if(t!==null){d=t.bJa;if(d!==null)break c;}bd=null;break b;}g=CF;Ed();bd=Vy(d,q,g,o,J0);}if(r!==null){d:{e:{be=Lj(t,l);d=new CNN;B$(w);d.b0T=w;Fb(d,w.bK4,w.bTj);d.cRh=be;d.cQ9=bd;U(f,d);if(u!==null){b=u.bJa;if(b!==null)break e;}bf=null;break d;}bf=C_(b,q,CF,o);}bg=Lj(u,l);d=new CNL;B$(w);d.bQ$=w;Fb(d,w.bTj,w.bKF);d.cJm=bf;d.cHs +=bg;U(f,d);}else if(b!==null&&b!==c){d=new Csy;B$(w);g=Lj(t,l);d.bTO=w;Fb(d,w.bK4,w.bKF);d.cBc=g;U(f,d);}else if(!(b!==null&&C1M(b,AWz(i)))){d=new Cx8;B$(w);g=Lj(t,l);d.bPK=w;Fb(d,w.bK4,w.bKF);d.cES=g;d.cER=bd;U(f,d);}else{d=new Cx7;B$(w);g=Lj(t,l);d.bQm=w;Fb(d,w.bK4,w.bKF);d.czv=g;d.ct8=bd;U(f,d);}bh=e.b22.bJa;if(bh===null)bi=null;else{b=CF;Ed();bi=Vy(bh,q,b,o,J0);}bj=B_8(m,l);b=new Cpc;B$(w);b.bW1=w;Fb(b,w.bMe,w.bK4);b.cqn=bj;b.cuO=bi;U(f,b);return QF(w,ba);},DYN=(a,b)=>{let c;c=b.hE();(b.h2(Bcp(a,c))).hP(a.bMe);(b.h2(ALZ(a, +c))).hP(a.bKF);(b.h2(ATv(a,c))).hP(a.bK4);if(a.bTj!==null)(b.h2(BVV(a,c))).hP(a.bTj);},D$x=(a,b)=>{let c;c=A7n(a,b);return ZG(c,AZz(a,b),0.0,c.bGF);},A7n=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=Dj(a.bKF,b);d=Dj(a.bK4,b);e=Ly(a.bMe,b);f=(a.cTu.cF(b)).bGE;g=AZz(a,b);h=Dj(a.bKF,b);i=Dj(a.bK4,b);j=Ly(a.bMe,b);k=BC(g+BC(BC(j.bGE-(Ly(a.bMe,b)).bGY,h.bGE/2.0),BC(j.bGE-(Ly(a.bMe,b)).bGY,i.bGE/2.0)),f+24.0);l=a.bTj;if(l!==null)k=k+(l.a32(b)).bGE;return Cl(k+24.0,c.bGF+e.bGF+d.bGF+96.0);},E0U=(a,b,c)=>{if(b!==a.bMe){if(b!== +a.bKF){b=new BV;X(b);J(b);}return ALZ(a,c);}return Bcp(a,c);},Bcp=(a,b)=>{let c,d,e,f,g,h;c=Dj(a.bKF,b);d=Dj(a.bK4,b);e=A7n(a,b);f=Ly(a.bMe,b);g=e.bGF;h=c.bGF;g=h+(g-h-d.bGF-f.bGF)/2.0;h=AZz(a,b);return Bh(h-(Ly(a.bMe,b)).bGY,g);},ALZ=(a,b)=>{let c;c=Dj(a.bKF,b);return BM(AZz(a,b)-c.bGE/2.0);},BVV=(a,b)=>{let c,d;c=A7n(a,b);d=a.bTj.a32(b);return Bh(c.bGE-d.bGE,(c.bGF-d.bGF)/2.0);},ATv=(a,b)=>{let c,d,e,f;c=A7n(a,b);d=Dj(a.bK4,b);e=c.bGF-d.bGF;f=AZz(a,b);return Bh(f-d.bGE/2.0,e);},AZz=(a,b)=>{let c,d;c=Dj(a.bKF, +b);d=Dj(a.bK4,b);return BC(BC((Ly(a.bMe,b)).bGY,c.bGE/2.0),BC((Ly(a.bMe,b)).bGY,d.bGE/2.0));}; +function AAB(){let a=this;Fc.call(a);a.bLw=null;a.bLi=null;a.bK2=null;a.bK1=null;a.bLr=null;a.bLz=null;a.bJ3=null;a.bJA=null;a.cbG=0.0;} +let ByU=a=>{B8();return A3J;},A2S=a=>{return B0((Cr(a)).cp(),a.oi());},EKh=a=>{return Gi();},Qw=(a,b,c,d,e,f,g,h,i,j)=>{let k;Jd(a,c);k=A2S(a);a.bLi=e;a.bLw=d;a.cbG=G1(k);a.bK2=f;a.bK1=b;a.bLr=g;a.bJ3=j;a.bJA=i;a.bLz=h;},FcN=a=>{let b;b=a.bK2;if(b===null)return SY();return HL(b);},Evw=a=>{return a.bK2;},EqF=a=>{return a.bK2;},AIY=N(AAB),Dmh=(a,b,c,d,e)=>{Cmh(a,b,c,d,e,E6(0.0,0.0),E6(0.0,0.0),E6(0.0,0.0),E6(0.0,0.0));},AGE=(a,b,c,d)=>{let e=new AIY();Dmh(e,a,b,c,d);return e;},Bu3=(a,b)=>{return Bfe(Cr(a),a.bLw, +a.bLi,a.bK2,b,a.bLz,a.bJA,a.bJ3);},B5c=(a,b)=>{if(b!==null)return Bfe(Cr(a),a.bLw,a.bLi,a.bK2,a.bLr,a.bLz,a.bJA,b);return a;},BxX=(a,b)=>{if(b!==null)return Bfe(Cr(a),a.bLw,a.bLi,a.bK2,a.bLr,a.bLz,b,a.bJ3);return a;},CV5=(a,b)=>{return Bfe(Cr(a),a.bLw,a.bLi,a.bK2,a.bLr,b,a.bJA,a.bJ3);},Cmh=(a,b,c,d,e,f,g,h,i)=>{Qw(a,null,b,c,d,e,f,g,h,i);},Bfe=(a,b,c,d,e,f,g,h)=>{let i=new AIY();Cmh(i,a,b,c,d,e,f,g,h);return i;},EiI=(a,b)=>{let c,d,e,f,g;c=(a.bLr.cF(b.hE())).bGF;d=b.h2(BW(c));b=((d.h2(a.bLi)).h2(Fi(A2S(a)))).h2(Cc(a.bLw));e +=a.cbG;f=Fj();BQ(f,12.0,0.0);BQ(f,24.0,12.0);BQ(f,12.0,24.0);BQ(f,0.0,12.0);BQ(f,12.0,0.0);f.bG1=e;b.hP(f);a.bLr.cC(d.h2(Bh(18.0, -c)));a.bLz.cC(d.h2(Bh(18.0,24.0)));g=a.bJ3.cF(d.hE());a.bJ3.cC(d.h2(Bh( -g.bGE, -g.bGF+12.0)));f=a.bJA.cF(d.hE());a.bJA.cC(d.h2(Bh(24.0, -f.bGF+12.0)));},Fnw=(a,b)=>{let c,d;c=(a.bLr.cF(b)).bGF;d=Cl(24.0,24.0+c);return ZG(d,d.bGE/2.0,c,d.bGF);},DUp=a=>{return ByU(a);}; +function Cbf(){let a=this;F.call(a);a.cC_=null;a.cIf=null;a.cp_=null;a.c1l=0;a.ct_=null;a.b$N=null;} +let DNl=(a,b)=>{let c,d,e,f,g;c=BP5(a.cC_,a.cIf,b.hE());d=BP5(a.cC_,a.cp_,b.hE());e=a.cp_;f=b.hE();g=Dj(e,f);if(!a.c1l){e=D8(F4(a.b$N),a.ct_,(MS(F4(a.b$N))).bEq());Ci(e,c.bHj,c.bHu);Ci(e,0.0,c.bHu);}else{e=D8(F4(a.b$N),a.ct_,(MS(F4(a.b$N))).bEr());Ci(e,c.bHj,c.bHu);Ci(e,0.0,c.bHu);Ci(e,0.0,d.bHu+g.bGF/2.0);Ci(e,d.bHj,d.bHu+g.bGF/2.0);}b.hP(e);},Ecg=a=>{return a.cIf;},EUx=a=>{return a.cp_;}; +function BZj(){F.call(this);this.bLX=null;} +let EaJ=a=>{a.bLX=Bk();},Cco=()=>{let a=new BZj();EaJ(a);return a;},Cgj=a=>{let b;b=a.bLX;return Be(b,b.bGJ-1|0);},CLm=b=>{if(!Bj(b,E(997))&&!Bj(b,E(8969))){if(!Bj(b,E(356))&&!Bj(b,E(8970))){if(!Bj(b,E(8371))){if(!Bj(b,E(8971))){if(!Bj(b,E(8372))){if(!Bj(b,E(8972))){if(!Bj(b,E(8973))){if(!Bj(b,E(8974))){if(Bj(b,E(8975)))return E(8976);return null;}return E(8977);}return E(8978);}return E(8979);}return E(8980);}return E(8981);}return E(8982);}return E(8983);}return E(8984);},EYk=(a,b,c)=>{let d,e,f,g,h;a.bLX +=Bk();d=0;e= -c;while(d<(B$(b)).bGI.length){a:{b:{c:{d:{e:{f:{g:{h:{f=a.bLX;g=d+1|0;switch(CZ(B_(b,d,g))){case 1:break;case 2:break e;case 3:break h;case 4:break d;case 5:break g;case 6:break c;case 7:break f;case 8:break b;default:b=new Bt;X(b);J(b);}h=BW(e);break a;}h=BM(c);break a;}h=BW(c);break a;}h=BM(e);break a;}h=Bh(c,e);break a;}h=Bh(c,c);break a;}h=Bh(e,c);break a;}h=Bh(e,e);}U(f,h);d=g;}},DiG=(a,b)=>{let c=new BZj();EYk(c,a,b);return c;},Etn=(a,b)=>{let c,d;c=CVO(b);d=0;while(d{let c,d,e;if(b.b96>=0){c=a.b_E;d=c.bGJ;if(d>0){e=(Be(c,d-1|0)).b31;if(b.b31{return a.b_E;}; +function BF6(){let a=this;F.call(a);a.b31=0.0;a.cUb=0;a.b96=0;a.c7l=null;a.c6u=null;} +let CEw=(a,b,c,d,e,f)=>{if(d<0){e=new Bt;X(e);J(e);}a.c6u=f;a.b96=d;a.c7l=e;a.b31=b;a.cUb=c;},E72=(a,b,c,d,e)=>{let f=new BF6();CEw(f,a,b,c,d,e);return f;}; +function Ch8(){let a=this;K2.call(a);a.cyV=0.0;a.cDm=null;} +let DUF=(a,b,c)=>{V5(a,b);a.cyV=c;},AMB=(a,b)=>{let c=new Ch8();DUF(c,a,b);return c;},Ebb=(a,b)=>{A2P(a,b.h2(CmA(a,b.hE())));},AEi=(a,b)=>{let c,d,e,f;if(a.cDm===null){c=Ly(a,b);d=c.bGY;e=(a.bK9.a32(b)).bGE;f=a.cyV;if(e{let c,d,e;c=a.bK9.a32(b);d=c.bGE;e=a.cyV;if(d{let c;c=a.bK9.a32(b);return BM(((B2h(a,b)).bGE-c.bGE)/2.0);},EbO=(a,b,c)=>{if(b===a.bK9)return CmA(a, +c);return null;},DB$=(a,b)=>{return AEi(a,b);},Bbn=N(AAB),FpN=(a,b,c,d,e,f)=>{let g,h,i;g=E6(0.0,0.0);h=E6(0.0,0.0);i=E6(0.0,0.0);Qw(a,b,c,d,e,f,g,h,E6(0.0,0.0),i);},Dbb=(a,b,c,d,e)=>{let f=new Bbn();FpN(f,a,b,c,d,e);return f;},FsS=(a,b)=>{let c,d,e,f,g,h,i,j;c=new Bbn;d=a.bK1;e=Cr(a);f=a.bLw;g=a.bLi;h=a.bK2;i=a.bLz;j=a.bJ3;Qw(c,d,e,f,g,h,b,i,a.bJA,j);return c;},Fpn=(a,b)=>{let c;c=new Bbn;Qw(c,a.bK1,Cr(a),a.bLw,a.bLi,a.bK2,a.bLr,a.bLz,a.bJA,b);return c;},CR4=(a,b)=>{let c;c=new Bbn;Qw(c,a.bK1,Cr(a),a.bLw,a.bLi, +a.bK2,a.bLr,a.bLz,b,a.bJ3);return c;},DNC=(a,b)=>{let c,d,e,f,g,h,i,j;c=b.hE();d=a.bK1.cF(c);e=CFo(a,c);f=((b.h2(a.bLi)).h2(Fi(A2S(a)))).h2(Cc(a.bLw));f.hP(CGR(a.cbG,e.bGE,e.bGF));a.bLr.cC(f.h2(Bh(4.0+e.bGE/2.0,e.bGF)));a.bLz.cC(f.h2(Bh(4.0+e.bGE/2.0,e.bGF)));g=(e.bGE-d.bGE)/2.0;h=(e.bGF-d.bGF)/2.0;a.bK1.cC(f.h2(Bh(g,h)));i=a.bJ3.cF(c);a.bJ3.cC(f.h2(Bh( -i.bGE, -i.bGF+e.bGF/2.0)));j=a.bJA.cF(c);a.bJA.cC(f.h2(Bh(e.bGE, -j.bGF+e.bGF/2.0)));},CFo=(a,b)=>{let c,d;c=a.bK1.cF(b);d=!(c.bGE!==0.0&&c.bGF!==0.0)?Cl(24.0, +24.0):FO(W$(c,24.0,24.0),24.0,0.0);return ZG(d,d.bGE/2.0,0.0,d.bGF);},EBb=(a,b)=>{let c,d,e,f,g,h,i;c=CFo(a,b);d=a.bLr.cF(b);e=c.bGF;f=e+d.bGF;g=c.bGE;h=g/2.0;i=d.bGE;if(i>h)g=h+i;return Qt(g,f,h,0.0,e);},DBh=a=>{return ByU(a);}; +function BJq(){let a=this;Dc.call(a);a.cCD=null;a.b2P=null;} +let ChZ=(a,b,c,d,e)=>{a.b2P=b;Fb(a,c,d);a.cCD=e;},Fys=(a,b,c,d)=>{let e=new BJq();ChZ(e,a,b,c,d);return e;},EWC=(a,b)=>{let c,d,e,f;c=b.hE();d=CnT(a,c);e=ClO(a,c);f=D8(Cr(a.b2P),a.cCD,((Cr(a.b2P)).a$c()).a$e());Dv(f,d);Dv(f,e);b.hP(f);},CnT=(a,b)=>{let c;c=IA(a.bHr.a32(b));return Cs(A3n(a.b2P,a.bHr,b),c);},ClO=(a,b)=>{let c;c=J7(a.bHF.a32(b));return Cs(BIQ(a.b2P,a.bHF,b),c);},FxI=(a,b,c,d)=>{let e,f,g,h,i,j;e=CnT(a,b.hE());f=ClO(a,b.hE());g=D8(Cr(a.b2P),a.cCD,((Cr(a.b2P)).a$c()).a$e());h=Cs(c,e);i=Cs(d,f);j +=h.bGL+4.0;Dv(g,h);Ci(g,h.bGK,j);Ci(g,i.bGK,j);Dv(g,i);b.hP(g);}; +function BPC(){let a=this;Dc.call(a);a.cXT=null;a.cSa=null;a.b8W=null;} +let DbH=(a,b,c,d,e)=>{a.b8W=b;Fb(a,c,null);a.cXT=d;a.cSa=e;},Fx5=(a,b,c,d)=>{let e=new BPC();DbH(e,a,b,c,d);return e;},DtV=(a,b)=>{let c,d,e,f,g;c=b.hE();d=(AUW(a.b8W,c)).bGF;e=a.bHr.a32(c);if(!Ew(e))e=null;else{f=IA(e);e=Cs(BIQ(a.b8W,a.bHr,c),f);}if(e!==null){f=BA(e.bGK,d);g=Iv(D8(Cr(a.b8W),a.cXT,((Cr(a.b8W)).a$c()).a$e()),a.cSa,IJ(a));Dv(g,e);Dv(g,f);b.hP(g);return;}}; +function BIt(){let a=this;Dc.call(a);a.cOH=null;a.b_g=null;} +let CPX=(a,b,c)=>{a.b_g=b;Fb(a,null,Be(b.b5g,0));a.cOH=c;},Fzk=(a,b)=>{let c=new BIt();CPX(c,a,b);return c;},FgR=(a,b)=>{let c,d,e;c=Cs(A3n(a.b_g,a.bHF,b.hE()),J7(a.bHF.a32(b.hE())));d=D8(Cr(a.b_g),a.cOH,((Cr(a.b_g)).a$c()).a$e());e=J7(AUW(a.b_g,b.hE()));Dv(d,e);Ci(d,c.bGK,e.bGL);Dv(d,c);b.hP(d);}; +function BNt(){let a=this;Dc.call(a);a.cQY=null;a.ccz=null;} +let CTc=(a,b,c,d,e)=>{a.ccz=b;Fb(a,c,d);a.cQY=e;},Fx9=(a,b,c,d)=>{let e=new BNt();CTc(e,a,b,c,d);return e;},EuR=(a,b)=>{let c,d,e,f,g;c=b.hE();d=a.bHr.a32(c);e=BA(d.bGY*2.0,BZI(d,c));d=Cs(A3n(a.ccz,a.bHr,c),e);f=a.bHF.a32(c);e=BA(0.0,BZI(f,c));g=Cs(A3n(a.ccz,a.bHF,c),e);f=D8(Cr(a.ccz),a.cQY,((Cr(a.ccz)).a$c()).bEr());Dv(f,d);Dv(f,g);b.hP(f);}; +function B7t(){let a=this;Dc.call(a);a.c4F=null;a.b$8=null;} +let CvP=(a,b,c)=>{let d;a.b$8=b;d=b.b5g;Fb(a,Be(d,d.bGJ-1|0),b.bRy);a.c4F=c;},FyU=(a,b)=>{let c=new B7t();CvP(c,a,b);return c;},Ej6=(a,b)=>{let c,d,e,f;c=b.hE();d=a.bHr.a32(c);e=BA(d.bGY*2.0,BZI(d,c));e=Cs(A3n(a.b$8,a.bHr,c),e);d=Cs(Bd$(a.b$8,b.hE()),J7(a.bHF.a32(b.hE())));f=D8(Cr(a.b$8),a.c4F,((Cr(a.b$8)).a$c()).a$e());Dv(f,e);Ci(f,d.bGK,e.bGL);Dv(f,d);b.hP(f);}; +function BTS(){let a=this;Dc.call(a);a.c1a=null;a.cQa=null;a.cX4=0;a.b$R=null;} +let CGL=(a,b,c,d,e)=>{a.b$R=b;Fb(a,b.bRy,null);a.c1a=c;a.cQa=d;a.cX4=e;},FyJ=(a,b,c,d)=>{let e=new BTS();CGL(e,a,b,c,d);return e;},DI9=(a,b)=>{let c,d,e,f,g,h,i,j;c=b.hE();d=Bd$(a.b$R,c);e=a.bHr.a32(c);if(Ew(e)){f=Cs(d,IA(e));g=AUW(a.b$R,c);h=g.bGF;i=BA(f.bGK,h);j=Iv(D8(Cr(a.b$R),a.c1a,((Cr(a.b$R)).a$c()).a$e()),a.cQa,IJ(a));Dv(j,f);Dv(j,i);if(!a.cX4)Dv(j,BA(g.bGY,h));b.hP(j);return;}}; +function B5H(){let a=this;Dc.call(a);a.c3o=null;a.bW9=null;} +let C4e=(a,b,c)=>{a.bW9=b;Fb(a,null,null);a.c3o=c;},Fx7=(a,b)=>{let c=new B5H();C4e(c,a,b);return c;},ETR=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;c=b.hE();d=AUW(a.bW9,c);e=E2(a.bW9.bN8);f=a.bW9.bRy;U(e,f);if(!(b instanceof A5H)){g=d.bGE;f=Drj(a,c);if(f===null)h=Gh([NaN,NaN]);else{i=g/2.0;g=Eh(i,f.bG6);i=BC(i,f.bG6);j=Br(e);while(Bq(j)){f=Bm(j);if(!Ew(f.a32(c)))continue;e=BNj(a.bW9,f,c);k=(Qx(f.a32(c),e)).bGY;g=Eh(g,k);i=BC(i,k);}h=Gh([g,i]);}}else a:{f=b;j=CLH(f);g=d.bGE;l=f.bSC;m=Rv(j,l);n=Drj(a,c);if(n=== +null)h=Gh([NaN,NaN]);else{if(m!=(-1)){o=0;while(o=0){if(B98(a,c,j.cf(p),e)){b:{q=C5(m,o);if(q>=0){p=C5(m,p);if(p<=0)break b;}h=Gh([NaN,NaN]);break a;}i=!q?g:0.0;if(!p)g=0.0;i=Eh(i,n.bG6);g=BC(g,n.bG6);j=Br(e);while(Bq(j)){f=Bm(j);if(!Ew(f.a32(c)))continue;if(!CL6(a,f,l))continue;e=BNj(a.bW9,f,c);k=(Qx(f.a32(c),e)).bGY;i=Eh(i,k);g=BC(g,k);}h=Gh([i,g]);break a;}p=p+(-1)|0;}b=new BP;X(b);J(b);}o=o+1|0;}b=new BP;X(b);J(b);}b=new BP;X(b);J(b);}}h=h.data;i=h[0];g +=h[1];if(!(isNaN(i)?1:0)&&!(isNaN(g)?1:0)){c=Wf(Cr(a.bW9),a.c3o);Oc();l=Vg(c,AS7);Ci(l,i,d.bGF);Ci(l,g,d.bGF);b.hP(l);return;}},Drj=(a,b)=>{let c;c=Dj(a.bW9,b);if(Ew(c))return DL(c.bGY);return null;},B98=(a,b,c,d)=>{let e;d=Br(d);while(Bq(d)){e=Bm(d);if(Ew(e.a32(b))&&CL6(a,e,c))return 1;}return 0;},CL6=(a,b,c)=>{return !(b.a36()===c&&(b.a34()).et(c))?0:1;}; +function C0y(){K2.call(this);this.cyc=0.0;} +let FkW=(a,b)=>{A2P(a,b.h2(BM(a.cyc)));},B_a=(a,b)=>{let c,d,e;c=Ly(a,b);d=a.cyc;b=new JD;e=c;MZ(b,e.bGE+d,e.bGF,c.bGY+d,c.bHi,c.bHH);return b;},Exc=(a,b)=>{return B_a(a,b);}; +function CV7(){let a=this;Dc.call(a);a.cV5=null;a.b_a=null;} +let DJ2=(a,b)=>{let c,d,e,f,g;c=b.hE();d=a.bHr.a32(c);e=d.bGE;f=Cs(A03(a.b_a,a.bHr,c),BA(e,d.bGF/2.0));g=J7(a.bHF.a32(c));g=Cs(A3h(a.b_a,a.bHF,c),g);d=D8(Cr(a.b_a),a.cV5,((Cr(a.b_a)).a$c()).a$e());Dv(d,f);Ci(d,g.bGK,f.bGL);Dv(d,g);b.hP(d);}; +function CUS(){let a=this;Dc.call(a);a.cPU=null;a.b8J=null;} +let DTj=(a,b)=>{let c,d,e,f,g,h,i;c=b.hE();d=a.bHr.a32(c);if(Ew(d)){e=Cs(A3h(a.b8J,a.bHr,c),IA(d));f=a.bHF.a32(c);g=Cs(Bp_(a.b8J,c),J7(a.bHF.a32(c)));h=new FG;f=f;Hs(h,f.bGE/2.0,f.bGF/2.0);g=Cs(h,g);h=AMg(a.b8J,c);i=D8(Cr(a.b8J),a.cPU,((Cr(a.b8J)).a$c()).bEq());Dv(i,e);Ci(i,e.bGK,e.bGL+15.0);Ci(i,h.bGE,e.bGL+15.0);Ci(i,h.bGE,g.bGL);Dv(i,g);b.hP(i);return;}}; +function CZ4(){let a=this;Dc.call(a);a.cSo=null;a.cKv=null;a.b$Y=null;} +let EzR=(a,b)=>{let c,d,e,f;c=b.hE();d=IA(a.bHr.a32(c));e=Cs(BQh(a.b$Y,a.bHr,c),d);d=J7(a.bHF.a32(c));f=Cs(BQh(a.b$Y,a.bHF,c),d);c=D8(Cr(a.b$Y),a.cSo,((Cr(a.b$Y)).a$c()).a$e());d=a.cKv;Fa();d=AMR(c,d,Hg);Dv(d,e);Dv(d,f);b.hP(d);}; +function Cle(){let a=this;Dc.call(a);a.c15=null;a.cd6=null;} +let EpZ=(a,b)=>{let c,d,e;c=Cs(A03(a.cd6,a.bHF,b.hE()),J7(a.bHF.a32(b.hE())));d=D8(Cr(a.cd6),a.c15,((Cr(a.cd6)).a$c()).a$e());e=J7(AMg(a.cd6,b.hE()));Dv(d,e);Ci(d,e.bGK,(e.bGL+c.bGL)/2.0);Ci(d,c.bGK,(e.bGL+c.bGL)/2.0);Dv(d,c);b.hP(d);}; +function C4d(){let a=this;Dc.call(a);a.cSY=null;a.cKm=null;a.cc5=null;} +let E7t=(a,b)=>{let c,d,e,f,g;c=b.hE();d=Cs(A03(a.cc5,a.bHr,c),IA(a.bHr.a32(c)));e=Cs(BrL(a.cc5,c),J7(a.bHF.a32(c)));c=D8(Cr(a.cc5),a.cSY,((Cr(a.cc5)).a$c()).a$e());f=a.cKm;Fa();g=AMR(c,f,Hg);Dv(g,d);Ci(g,d.bGK,e.bGL-15.0);Ci(g,e.bGK,e.bGL-15.0);Dv(g,e);b.hP(g);}; +function Dsx(){let a=this;Dc.call(a);a.cUE=null;a.cah=null;} +let EGz=(a,b)=>{let c,d,e,f,g;c=b.hE();d=a.bHr.a32(c);if(Ew(d)){e=Cs(BrL(a.cah,c),IA(d));f=Cs(Bp_(a.cah,c),J7(a.bHF.a32(c)));g=D8(Cr(a.cah),a.cUE,((Cr(a.cah)).a$c()).a$e());Dv(g,e);Ci(g,e.bGK,f.bGL-15.0);Ci(g,f.bGK,f.bGL-15.0);Dv(g,f);b.hP(g);return;}}; +function CtP(){let a=this;Dc.call(a);a.cPd=null;a.b_V=null;} +let Eiy=(a,b)=>{let c,d,e,f,g,h;c=b.hE();d=a.bHr.a32(c);if(Ew(d)){e=Cs(A3h(a.b_V,a.bHr,c),IA(d));f=AMg(a.b_V,c);g=BA(f.bGE,e.bGL+15.0);h=D8(Cr(a.b_V),a.cPd,((Cr(a.b_V)).a$c()).bEr());Dv(h,e);Ci(h,e.bGK,g.bGL);Dv(h,g);b.hP(h);return;}}; +function C70(){let a=this;K2.call(a);a.cKg=0.0;a.cKh=0.0;} +let Csh=(a,b)=>{let c,d,e;c=Ly(a,b);d=a.cKh;if(!Ew(c)){b=new JD;e=c;MZ(b,e.bGE,e.bGF+d,c.bGY,c.bHi,2.2250738585072014E-308);}else{b=new JD;e=c;MZ(b,e.bGE,e.bGF+d,c.bGY,c.bHi,c.bHH);}d=a.cKg-BGo(b);if(d>0.0)b=Dna(b,d);return b;},Et$=(a,b)=>{A2P(a,b);},DKW=(a,b)=>{return Csh(a,b);}; +function Dck(){let a=this;K2.call(a);a.cVl=0.0;a.czW=0.0;} +let C6H=(a,b)=>{let c,d,e;c=Ly(a,b);d=a.czW;if(!Ew(c)){b=new JD;e=c;MZ(b,e.bGE,e.bGF+d,c.bGY,c.bHi+d,2.2250738585072014E-308);}else{b=new JD;e=c;MZ(b,e.bGE,e.bGF+d,c.bGY,c.bHi+d,c.bHH+d);}d=a.cVl-BGo(b);if(d>0.0)b=Dna(b,d);return b;},Fsj=(a,b)=>{A2P(a,b.h2(BW(a.czW)));},Dtx=(a,b)=>{return C6H(a,b);}; +function A6q(){Fc.call(this);this.ck7=null;} +let Xb=(a,b)=>{if(a.ck7===null)a.ck7=a.bF8(b);return a.ck7;}; +function B1g(){let a=this;A6q.call(a);a.cJt=0.0;a.bIN=null;a.chu=null;} +let D0e=a=>{let b,c,d,e;b=G$();c=a.chu;if(c!==null)EQ(b,c);d=Br(a.bIN);while(Bq(d)){e=(Bm(d)).a34();Ea(b,e);}return b;},EeM=a=>{return a.chu;},EwR=a=>{return a.chu;},E8U=(a,b,c)=>{if(!Nw(a.bIN,b)){b=new BV;X(b);J(b);}return BJV(a,b,c);},BJV=(a,b,c)=>{let d,e,f,g;d=0.0;e=Br(a.bIN);while(true){if(!Bq(e)){b=new Bt;X(b);J(b);}f=Bm(e);g=f.a32(c);if(f===b)break;d=d+g.bGE+a.cJt;}return BM(d);},Eal=(a,b)=>{let c,d;c=Xb(a,b);d=Br(a.bIN);while(true){if(!Bq(d))return A12(c);if(Ew((Bm(d)).a32(b)))break;}return c;},Cl7= +(a,b)=>{let c,d,e;c=Cl(0.0,0.0);d=Br(a.bIN);while(Bq(d)){c=AZV(c,(Bm(d)).a32(b));}c=FO(c,a.cJt*(a.bIN.bGJ-1|0),100.0);b=new JD;e=c.bGE;A6p(b,e,c.bGF,e/2.0,0.0);return b;}; +function ARh(){let a=this;B1g.call(a);a.bMC=null;a.bOv=null;a.bUD=null;a.b74=null;a.b_N=0.0;a.c0r=0.0;} +let BCB=(a,b,c,d,e,f,g)=>{let h,i,j;h=b;Jd(a,(Be(h,0)).Xs());a.cJt=20.0;a.bIN=b;a.chu=d;a.bUD=c;a.bMC=e;a.bOv=f;a.b_N=(Dj(e,g)).bGE-BGo((Be(h,0)).a32(g))-((Be(h,h.bGJ-1|0)).a32(g)).bGY;i=0.0;j=1;while(true){b=a.bIN;if(j>=(b.bGJ-1|0))break;i=i+((Be(b,j)).a32(g)).bGE;j=j+1|0;}a.c0r=i;if(!(a.b_N>i)){ADw();a.b74=BJc;}else{ADw();a.b74=AE2;}},Fzg=(a,b,c,d,e,f)=>{let g=new ARh();BCB(g,a,b,c,d,e,f);return g;},ESO=a=>{let b,c,d;b=E2(a.bIN);c=a.bMC;d=b;U(d,c);U(d,a.bOv);return b;},EPP=(a,b)=>{return 20.0;},EMH=(a,b)=> +{let c,d,e,f,g,h;c=Dj(a.bMC,b);d=Dj(a.bOv,b);e=(Cl7(a,b)).bGF;f=a.b74;ADw();if(f===AE2){g=c.bGF+e+d.bGF+a.bF$(b)+10.0;f=(Be(a.bIN,0)).a32(b);h=f.bGE+15.0+a.b_N+15.0;d=a.bIN;return Qt(h+((Be(d,d.bGJ-1|0)).a32(b)).bGE,g,f.bGY+15.0+c.bGY,0.0,g);}return Bor(AAu(AAu(c,Cl7(a,b)),d),0.0,a.bF$(b)+10.0);},Dxv=(a,b)=>{let c,d,e,f,g,h;c=b.hE();(b.h2(AR0(a,c))).hP(a.bMC);d=a.b74;ADw();if(d===AE2){e=Br(a.bIN);while(Bq(e)){d=Bm(e);d.cC(b.h2(ADR(a,d,c)));}}else{f=b.h2(CnE(a,c));d=f.hE();g=Br(a.bIN);while(Bq(g)){h=Bm(g);(f.h2(BJV(a, +h,d))).hP(h);}}if(Ew(Dj(a,c)))(b.h2(AOL(a,c))).hP(a.bOv);},ADR=(a,b,c)=>{let d,e,f,g,h,i;d=CnE(a,c);e=a.b74;ADw();if(e===AE2){f=0.0;g=(a.b_N-a.c0r)/(a.bIN.bGJ-1|0);h=0;while(true){e=a.bIN;i=e.bGJ-1|0;if(h>=i){if(b===Be(e,i))return DJ(d,BM(((Be(a.bIN,0)).a32(c)).bGE+a.b_N+15.0+15.0));b=new Bt;X(b);J(b);}if(b===Be(e,h))break;f=f+((Be(a.bIN,h)).a32(c)).bGE+g;h=h+1|0;}return DJ(d,BM(f));}return DJ(BJV(a,b,c),d);},CnE=(a,b)=>{return BW((Dj(a.bMC,b)).bGF+a.bF$(b));},AR0=(a,b)=>{let c,d;c=Xb(a,b);d=Dj(a.bMC,b);return Bh(c.bGY +-d.bGY,0.0);},AOL=(a,b)=>{let c,d,e,f;c=Xb(a,b);d=Dj(a.bOv,b);e=c.bGF;b=d;f=e-b.bGF;return Bh(c.bGY-b.bGE/2.0,f);}; +function Co1(){let a=this;ARh.call(a);a.bZt=null;a.dbM=10.0;} +let BhN=(a,b,c)=>{let d,e;d=b===null?null:b.a36();e=c===null?null:c.a35();return !(d!==null&&e!==null&&d!==e)?0:1;},ES4=(a,b)=>{let c,d;c=10.0;d=Br(a.bUD);while(Bq(d)){c=BC(c,((APf(Bm(d))).cF(b)).bGF);}d=a.b74;ADw();if(d===AE2)c=c+(Dj(a.bMC,b)).bGF/2.0;return c+10.0;},EF4=(a,b,c)=>{let d,e,f,g,h,i,j;d=a.bIN.bGJ-1|0;a:{b:{while(true){if(d<0)break b;e=Be(a.bIN,d);if(Ew(e.a32(b))&&!BhN(a,a,e))break;d=d+(-1)|0;}break a;}d=(-1);}if(d!=(-1)){f=0;c:{d:{while(true){e=a.bIN;g=e.bGJ;if(f>=(g-1|0))break;e=Be(e,f);if(Ew(e.a32(b)) +&&!BhN(a,a,e))break d;f=f+1|0;}break c;}g=f;}h=a.bIN;if(g0){e=CiY(a,Be(a.bIN,d),Bw3(Be(a.bUD,d)));U(c,e);}i=g+1|0;while(i{let d;if(!Ew(b.a32(c))){b=(b.a33()).dX();while(true){if(!b.dY())return null;d=Dcd(a,b.dZ(), +c);if(d!==null)break;}return d;}return b;}; +function DqF(){ARh.call(this);this.cta=null;} +let ASv=N(Bx),AJs=null,ABe=null,AM0=null,DGq=null,AJc=()=>{AJc=Z(ASv);DSL();},D0p=(a,b,c)=>{AJc();Ct(a,b,c);},BIL=(a,b)=>{let c=new ASv();D0p(c,a,b);return c;},DSL=()=>{let b,c,d;AJs=BIL(E(8985),0);ABe=BIL(E(8986),1);b=BIL(E(8987),2);AM0=b;c=K(ASv,3);d=c.data;d[0]=AJs;d[1]=ABe;d[2]=b;DGq=c;},AAp=N(AAB),EfU=(a,b,c,d,e,f)=>{let g,h,i;g=E6(0.0,0.0);h=E6(0.0,0.0);i=E6(0.0,0.0);Qw(a,b,c,d,e,f,g,h,E6(0.0,0.0),i);},AIh=(a,b,c,d,e)=>{let f=new AAp();EfU(f,a,b,c,d,e);return f;},B0U=(a,b)=>{let c;c=new AAp;Qw(c,a.bK1, +Cr(a),a.bLw,a.bLi,a.bK2,a.bLr,a.bLz,a.bJA,b);return c;},BCl=(a,b)=>{let c;c=new AAp;Qw(c,a.bK1,Cr(a),a.bLw,a.bLi,a.bK2,a.bLr,a.bLz,b,a.bJ3);return c;},B11=(a,b)=>{let c,d,e,f,g,h,i,j;c=new AAp;d=a.bK1;e=Cr(a);f=a.bLw;g=a.bLi;h=a.bK2;i=a.bLr;j=a.bJ3;Qw(c,d,e,f,g,h,i,b,a.bJA,j);return c;},DTT=(a,b)=>{let c,d,e,f,g,h,i,j;c=b.hE();d=a.bK1.cF(c);e=Cnj(a,c);f=((b.h2(a.bLi)).h2(Fi(A2S(a)))).h2(Cc(a.bLw));f.hP(CGR(a.cbG,e.bGE,e.bGF));a.bLr.cC(f.h2(Bh(4.0+e.bGE/2.0,e.bGF)));a.bLz.cC(f.h2(Bh(4.0+e.bGE/2.0,e.bGF)));g= +(e.bGE-d.bGE)/2.0;h=(e.bGF-d.bGF)/2.0;a.bK1.cC(f.h2(Bh(g,h)));i=a.bJ3.cF(c);a.bJ3.cC(f.h2(Bh( -i.bGE, -i.bGF+e.bGF/2.0)));j=a.bJA.cF(c);a.bJA.cC(f.h2(Bh(e.bGE, -j.bGF+e.bGF/2.0)));},Cnj=(a,b)=>{let c,d;c=a.bK1.cF(b);d=!(c.bGE!==0.0&&c.bGF!==0.0)?Cl(24.0,24.0):FO(W$(c,24.0,24.0),24.0,0.0);return ZG(d,d.bGE/2.0,0.0,d.bGF);},ETp=(a,b)=>{let c,d,e;c=Cnj(a,b);a.bJ3.cF(b);a.bJA.cF(b);d=(a.bLr.cF(b)).bGF;b=new JD;e=c;MZ(b,e.bGE,e.bGF+d,c.bGY,c.bHi,c.bHH);return b;},Fny=a=>{return ByU(a);}; +function CQX(){let a=this;Dc.call(a);a.c0u=null;a.bUz=null;} +let Fvx=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o;c=b.hE();d=D8(Cr(a.bUz),a.c0u,((Cr(a.bUz)).a$c()).bEq());DC();e=SG(d,HG);f=Dj(a.bUz,c);g=Cs(YF(a.bUz,c),IA(Dj(a.bUz.bKm,c)));d=Cs(YF(a.bUz,c),BA(0.0,0.0));h=Dj(a.bUz.bKm,c);i=g.bGK;j=g.bGL;k=d.bGK+h.bGE;l=h.bHH;m=h.bHi;n=(l-m)/2.0;l=d.bGL+m+n;Ci(e,i,j);d=a.bUz.bMV.a32(c);m=BC(j,(ABY(a.bUz,c)).bHu+d.bGF)+12.0;Ci(e,i,m);o=f.bGE;Ci(e,o,m);Ci(e,o,l);Ci(e,k,l);b.hP(e);(b.h2(Bh(i,m))).hP(NX(5.0,12.0));}; +function C7e(){let a=this;Dc.call(a);a.cIj=null;a.b1L=null;} +let Dk9=(a,b)=>{return Cs(YF(a.b1L,b),IA(a.bHr.a32(b)));},CEr=(a,b)=>{return Cs(ABY(a.b1L,b),J7(a.bHF.a32(b)));},D0z=(a,b)=>{let c,d;c=b.hE();d=D8(Cr(a.b1L),a.cIj,((Cr(a.b1L)).a$c()).a$e());Dv(d,Dk9(a,c));Dv(d,CEr(a,c));b.hP(d);},EvS=(a,b,c,d)=>{let e,f,g,h,i,j,k;e=b.hE();f=Dk9(a,e);g=CEr(a,e);h=D8(Cr(a.b1L),a.cIj,((Cr(a.b1L)).a$c()).a$e());Oc();h=Vg(h,Un);i=Cs(c,f);j=Cs(d,g);k=(i.bGL+j.bGL)/2.0;Dv(h,i);Ci(h,i.bGK,k);Ci(h,j.bGK,k);Dv(h,j);b.hP(h);}; +function Cth(){let a=this;Dc.call(a);a.c5D=null;a.b2D=null;} +let EZU=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=b.hE();d=D8(Cr(a.b2D),a.c5D,((Cr(a.b2D)).a$c()).a$e());e=Dj(a.b2D.bKm,c);f=Cs(YF(a.b2D,c),BA(0.0,0.0));g=Cs(C$j(a.b2D,c),J7(a.b2D.b1_.a32(c)));h=f.bGK;i=e.bHH;j=e.bHi;i=(i-j)/2.0;k=f.bGL+j+i;l=g.bGK;j=g.bGL;Ci(d,h,k);Ci(d,l,k);Ci(d,l,j);b.hP(d);}; +function Dbj(){let a=this;Dc.call(a);a.csA=null;a.b7Q=null;} +let ECG=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=b.hE();d=Wf(Cr(a.b7Q),a.csA);Oc();d=Vg(d,Un);DC();e=SG(d,G_);d=Dj(a.b7Q.bKm,c);f=Cs(YF(a.b7Q,c),BA(0.0,0.0));c=Dj(a.b7Q,c);g=BA(c.bGY,c.bGF);h=f.bGK;i=d.bHH;j=d.bHi;i=(i-j)/2.0;k=f.bGL+j+i;l=g.bGK;j=g.bGL;Ci(e,h,k);Ci(e,12.0,k);Ci(e,12.0,j);b.hP(e);m=Wf(Cr(a.b7Q),a.csA);Ci(m,12.0,j);Ci(m,l,j);b.hP(m);}; +function DsP(){let a=this;Dc.call(a);a.c0M=null;a.cRq=null;a.bVk=null;} +let E3f=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=b.hE();d=a.bVk.bMV.a32(c);e=!Ew(d)?null:Cs(ABY(a.bVk,c),IA(d));if(e!==null){f=Dj(a.bVk.bWt,c);d=Cs(BDG(a.bVk,c),BA(f.bGY,f.bHH));g=e.bGK;h=e.bGL;i=d.bGK;j=d.bGL;d=D8(Cr(a.bVk),a.c0M,((Cr(a.bVk)).a$c()).a$d());k=a.cRq;Fa();k=AMR(d,k,Pe);Ci(k,g,h);d=a.bVk.bMV.a32(c);l=BC(h,(ABY(a.bVk,c)).bHu+d.bGF)+12.0;Ci(k,g,l);Ci(k,i,l);Ci(k,i,j);b.hP(k);(b.h2(Bh(g,l))).hP(NX(5.0,12.0));return;}}; +function DsQ(){let a=this;Dc.call(a);a.c6Z=null;a.cTy=null;a.b2p=null;} +let Exb=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=b.hE();d=Iv(D8(Cr(a.b2p),a.c6Z,((Cr(a.b2p)).a$c()).bEq()),a.cTy,IJ(a));e=Dj(a.b2p.bWt,c);f=Cs(BDG(a.b2p,c),BA(e.bGY,e.bHi));e=Cs(YF(a.b2p,c),BA(0.0,0.0));g=Dj(a.b2p.bKm,c);h=f.bGK;i=f.bGL;j=e.bGK+g.bGE;k=g.bHH;l=g.bHi;k=(k-l)/2.0;m=e.bGL+l+k;Ci(d,h,i);Ci(d,h,m);Ci(d,j,m);b.hP(d);}; +function CON(){let a=this;Dc.call(a);a.ccB=null;a.c4o=null;a.bNK=null;} +let CEQ=(a,b)=>{let c;c=a.bNK.bMV.a32(b);if(Ew(c))return Cs(ABY(a.bNK,b),IA(c));return null;},Dlz=(a,b)=>{return Cs(YF(a.bNK,b),BA(0.0,0.0));},D41=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o;c=b.hE();d=Dj(a.bNK,c);e=CEQ(a,c);if(e!==null){f=Dlz(a,c);g=Dj(a.bNK.bKm,c);h=e.bGK;i=e.bGL;j=f.bGK+g.bGE;k=g.bHH;l=g.bHi;m=(k-l)/2.0;n=f.bGL+l+m;o=D8(Cr(a.bNK),a.ccB,((Cr(a.bNK)).a$c()).bEq());DC();e=SG(o,HG);f=a.c4o;Fa();o=AMR(e,f,Pe);Ci(o,h,i);e=a.bNK.bMV.a32(c);k=BC(i,(ABY(a.bNK,c)).bHu+e.bGF)+12.0;Ci(o,h,k);l=d.bGE;Ci(o, +l,k);Ci(o,l,n);Ci(o,j,n);b.hP(o);(b.h2(Bh(h,k))).hP(NX(5.0,12.0));return;}},DNz=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;e=b.hE();f=D8(Cr(a.bNK),a.ccB,((Cr(a.bNK)).a$c()).bEq());Oc();g=Vg(f,Un);h=Dj(a.bNK,e);f=CEQ(a,e);i=Dlz(a,e);j=Cs(c,f);k=Cs(d,i);l=Dj(a.bNK.bKm,e);m=j.bGK;n=j.bGL;o=k.bGK+l.bGE;p=l.bHH;q=l.bHi;p=(p-q)/2.0;r=k.bGL+q+p;Ci(g,m,n);p=n+12.0;Ci(g,m,p);s=BC(c.bHj,d.bHj)+h.bGE;Ci(g,s,p);Ci(g,s,r);Ci(g,o,r);b.hP(g);(b.h2(Bh(m,p))).hP(NX(5.0,12.0));(((b.h2(ATO(a.ccB))).h2(Cc(ATO(a.ccB)))).h2(Bh(s, +(n+r)/2.0))).hP(((Cr(a.bNK)).a$c()).a$d());},AXB=N(AAB),EcT=(a,b,c,d,e,f)=>{let g,h,i;g=E6(0.0,0.0);h=E6(0.0,0.0);i=E6(0.0,0.0);Qw(a,b,c,d,e,f,g,E6(0.0,0.0),i,h);},BkR=(a,b,c,d,e)=>{let f=new AXB();EcT(f,a,b,c,d,e);return f;},Cdd=(a,b)=>{let c,d,e,f,g,h,i,j;c=new AXB;d=a.bK1;e=Cr(a);f=a.bLw;g=a.bLi;h=a.bK2;i=a.bLr;j=a.bJA;Qw(c,d,e,f,g,h,i,a.bLz,j,b);return c;},BNW=(a,b)=>{let c,d,e,f,g,h,i,j;c=new AXB;d=a.bK1;e=Cr(a);f=a.bLw;g=a.bLi;h=a.bK2;i=a.bLr;j=a.bJ3;Qw(c,d,e,f,g,h,i,a.bLz,b,j);return c;},ChX=(a,b)=>{let c, +d,e,f,g,h,i,j;c=new AXB;d=a.bK1;e=Cr(a);f=a.bLw;g=a.bLi;h=a.bK2;i=a.bLr;j=a.bJ3;Qw(c,d,e,f,g,h,i,b,a.bJA,j);return c;},EFG=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=b.hE();d=a.bK1.cF(c);e=Chf(a,c);f=((b.h2(a.bLi)).h2(Fi(A2S(a)))).h2(Cc(a.bLw));g=a.cbG;h=e.bGE;i=e.bGF;b=Fj();j=h/2.0;BQ(b,j,0.0);k=i/2.0;BQ(b,h,k);BQ(b,j,i);BQ(b,0.0,k);b.bG1=g;f.hP(b);a.bLr.cC(f.h2(Bh(4.0+e.bGE/2.0,e.bGF)));a.bLz.cC(f.h2(Bh(4.0+e.bGE/2.0,e.bGF)));g=(e.bGE-d.bGE)/2.0;k=(e.bGF-d.bGF)/2.0;a.bK1.cC(f.h2(Bh(g,k)));l=a.bJ3.cF(c);a.bJ3.cC(f.h2(Bh( -l.bGE, + -l.bGF+12.0)));m=a.bJA.cF(c);a.bJA.cC(f.h2(Bh(e.bGE, -m.bGF+12.0+5.0)));},Fwz=(a,b)=>{let c;c=Chf(a,b);return ZG(c,c.bGE/2.0,0.0,c.bGF);},Chf=(a,b)=>{let c;c=a.bK1.cF(b);if(c.bGE!==0.0&&c.bGF!==0.0)return FO(c,24.0,24.0);return Cl(24.0,24.0);},FtU=a=>{return ByU(a);}; +function Dn0(){let a=this;Dc.call(a);a.cNR=null;a.c4z=null;a.b$B=null;} +let COc=(a,b)=>{return IA(Qx(a.bHr.a32(b),ALZ(a.b$B,b)));},CVt=(a,b)=>{return J7(Qx(a.bHF.a32(b),Bcp(a.b$B,b)));},ErY=(a,b)=>{let c;c=b.hE();Cd$(a,b,COc(a,c),CVt(a,c));},Dzr=(a,b,c,d)=>{let e;e=b.hE();Cd$(a,b,Cs(c,COc(a,e)),Cs(d,CVt(a,e)));},Cd$=(a,b,c,d)=>{let e,f,g;e=Iv(D8(Cr(a.b$B),a.cNR,((Cr(a.b$B)).a$c()).a$e()),a.c4z,IJ(a));Dv(e,c);f=c.bGK;if(f!==d.bGK){g=(c.bGL+d.bGL)/2.0;Dv(e,BA(f,g));Dv(e,BA(d.bGK,g));}Dv(e,d);b.hP(e);}; +function CNN(){let a=this;Dc.call(a);a.cRh=null;a.cQ9=null;a.b0T=null;} +let DkX=(a,b)=>{return Cs(ATv(a.b0T,b),BA(0.0,0.0));},CDJ=(a,b)=>{let c;c=a.b0T.bTj.a32(b);return Cs(BVV(a.b0T,b),BA(c.bGY,c.bHH));},Eoy=(a,b)=>{let c;c=b.hE();CVJ(a,b,DkX(a,c),CDJ(a,c));},D2n=(a,b,c,d)=>{let e;e=b.hE();CVJ(a,b,Cs(c,DkX(a,e)),Cs(d,CDJ(a,e)));},CVJ=(a,b,c,d)=>{let e,f,g,h,i,j;e=a.b0T.bK4;f=b.hE();f=Dj(e,f);g=d.bGK;h=d.bGL;i=c.bGK;j=f.bGE;if(!(g{let c;c=a.bQ$.bTj.a32(b);return Cs(BVV(a.bQ$,b),BA(c.bGY,c.bHi));},Cn4=(a,b)=>{return Cs(ALZ(a.bQ$,b),BA(0.0,0.0));},ELs=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m;e=b.hE();f=Clh(a,e);g=Cn4(a,e);h=Cs(c,f);c=Cs(d,g);i=Dj(a.bQ$.bKF,e);j=h.bGK;k=h.bGL;l=c.bGK;if(l{let c,d,e,f,g,h,i,j,k;c=b.hE();d=D8(Cr(a.bQ$), +a.cHs,((Cr(a.bQ$)).a$c()).bEq());e=a.cJm;if(e!==null)d=Iv(d,e,IJ(a));e=Clh(a,c);f=Cn4(a,c);g=Dj(a.bQ$.bKF,c);h=e.bGK;i=e.bGL;j=f.bGK+g.bGE;k=f.bGL+g.bGF/2.0;Ci(d,h,i);Ci(d,h,k);Ci(d,j,k);b.hP(d);}; +function Cpc(){let a=this;Dc.call(a);a.cqn=null;a.cuO=null;a.bW1=null;} +let Dfr=(a,b)=>{return Cs(Bcp(a.bW1,b),IA(a.bHr.a32(b)));},CxT=(a,b)=>{return Cs(ATv(a.bW1,b),J7(a.bHF.a32(b)));},DAx=(a,b)=>{let c,d;c=b.hE();if(Ew(a.bHr.a32(c))){d=Iv(D8(Cr(a.bW1),a.cqn,((Cr(a.bW1)).a$c()).a$e()),a.cuO,IJ(a));Dv(d,Dfr(a,c));Dv(d,CxT(a,c));b.hP(d);return;}},EKU=(a,b,c,d)=>{let e,f,g,h,i,j;e=b.hE();if(Ew(a.bHr.a32(e))){f=Wf(Cr(a.bW1),a.cqn);g=Cs(c,Dfr(a,e));h=Cs(d,CxT(a,e));i=(g.bGL+h.bGL)/2.0;Dv(f,g);Ci(f,g.bGK,i);Ci(f,h.bGK,i);b.hP(f);j=Iv(D8(Cr(a.bW1),a.cqn,((Cr(a.bW1)).a$c()).a$e()),a.cuO, +IJ(a));Ci(j,h.bGK,i);Dv(j,h);b.hP(j);return;}}; +function Csy(){let a=this;Dc.call(a);a.cBc=null;a.bTO=null;} +let Chr=(a,b)=>{return Cs(ATv(a.bTO,b),BA(0.0,0.0));},CeC=(a,b)=>{return Cs(ALZ(a.bTO,b),BA(0.0,0.0));},DCt=(a,b)=>{let c;c=b.hE();Ccj(a,b,Chr(a,c),CeC(a,c));},EjJ=(a,b,c,d)=>{let e;e=b.hE();Ccj(a,b,Cs(c,Chr(a,e)),Cs(d,CeC(a,e)));},Ccj=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p;e=b.hE();f=Ly(a.bTO.bMe,e);g=Dj(a.bTO.bKF,e);h=Dj(a.bTO.bK4,e);i=c.bGL+h.bGF/2.0;j=d.bGK;k=j+g.bGE;l=d.bGL+g.bGF/2.0;m=c.bGK;n=h.bGE;o=m+n;n=m+n/2.0+f.bGE/2.0+12.0;if(!(k{return Cs(ATv(a.bPK,b),BA(0.0,0.0));},CGt=(a,b)=>{return Cs(ALZ(a.bPK,b),BA(0.0,0.0));},EtD=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n;c=b.hE();d=D8(Cr(a.bPK),a.cES,((Cr(a.bPK)).a$c()).bEq());DC();d=Iv(SG(d,HG),a.cER,IJ(a));e=A7n(a.bPK,c);f=CS$(a,c);g=CGt(a,c);h=Dj(a.bPK.bKF,c);i=Dj(a.bPK.bK4,c);j=f.bGK+i.bGE;k=f.bGL+i.bGF/2.0;l=g.bGK+h.bGE;m=g.bGL+h.bGF/2.0;Ci(d,j,k);n=e.bGE-12.0;Ci(d,n,k);Ci(d,n,m);Ci(d,l,m);b.hP(d);},E8V=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r;e=b.hE();f=CS$(a,e);g=CGt(a,e);c +=Cs(c,f);d=Cs(d,g);h=Dj(a.bPK.bKF,e);i=Dj(a.bPK.bK4,e);j=c.bGK+i.bGE;k=c.bGL+i.bGF/2.0;l=d.bGK;m=l+h.bGE;n=!(j<(l+m)/2.0)?0:1;if(n)m=l;o=d.bGL+h.bGF/2.0;p=!n?((Cr(a.bPK)).a$c()).bEq():((Cr(a.bPK)).a$c()).bEr();c=D8(Cr(a.bPK),a.cES,p);DC();q=Iv(SG(c,HG),a.cER,IJ(a));Ci(q,j,k);r=(j+m)/2.0;Ci(q,r,k);Ci(q,r,o);Ci(q,m,o);b.hP(q);}; +function Cx7(){let a=this;Dc.call(a);a.czv=null;a.ct8=null;a.bQm=null;} +let C9g=(a,b)=>{return Cs(ATv(a.bQm,b),BA(0.0,0.0));},Cwi=(a,b)=>{return Cs(ALZ(a.bQm,b),BA(0.0,0.0));},Eab=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=b.hE();d=D8(Cr(a.bQm),a.czv,((Cr(a.bQm)).a$c()).bEr());DC();e=Iv(SG(d,HG),a.ct8,IJ(a));f=C9g(a,c);g=Cwi(a,c);d=Dj(a.bQm.bKF,c);h=Dj(a.bQm.bK4,c);i=f.bGK;j=f.bGL+h.bGF/2.0;k=g.bGK;l=g.bGL+d.bGF/2.0;Ci(e,i,j);Ci(e,(-12.0),j);Ci(e,(-12.0),l);Ci(e,k,l);b.hP(e);},EZu=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p;e=b.hE();f=D8(Cr(a.bQm),a.czv,((Cr(a.bQm)).a$c()).bEq());DC();f=Iv(SG(f, +HG),a.ct8,IJ(a));g=Ly(a.bQm.bMe,e);h=C9g(a,e);i=Cwi(a,e);c=Cs(c,h);h=Cs(d,i);j=Dj(a.bQm.bKF,e);k=Dj(a.bQm.bK4,e);l=c.bGK;m=c.bGL+k.bGF/2.0;n=h.bGK;o=h.bGL+j.bGF/2.0;Ci(f,l,m);p=c.bGK+k.bGE/2.0+g.bGE/2.0+12.0;Ci(f,p,m);Ci(f,p,o);Ci(f,n,o);b.hP(f);}; +function Cob(){let a=this;Fc.call(a);a.bOe=null;a.bLm=null;a.bM1=null;a.bRu=null;a.c41=null;a.bW_=null;} +let DyK=a=>{let b;b=a.bRu;if(b!==null)return Bv(BB(QU,[a.bOe,a.bLm,a.bM1,b]));return Bv(BB(QU,[a.bOe,a.bLm,a.bM1]));},EBP=a=>{let b,c;b=ABx(a.bOe.a34());c=B0P(a);EQ(b,c);return b;},B0P=a=>{return a.bLm.bK2;},D8S=a=>{if(a.bRu!==null)return a.bOe.a36();return B0P(a);},BiZ=(b,c,d,e,f,g,h,i,j,k)=>{let l,m,n,o,p;l=B_8(j,f);m=new Cob;if(i!==null)c=Dpr(h.Xs());Jd(m,e.Xs());m.bOe=e;m.bLm=b;m.bM1=c;m.bRu=i;m.c41=g;if(k.dV()!=1){GO();m.bW_=HD;}else m.bW_=BX_((k.dX()).dZ(),Cr(m));n=Bk();k=new CjG;B$(m);o=Lj(e.Xm(),f);k.b2r +=m;Fb(k,m.bLm,m.bOe);k.cDM=o;j=n;U(j,k);p=Ew(e.a32(h.hE()));if(i!==null){d=new Dgl;B$(m);d.caA=m;Fb(d,m.bLm,m.bRu);d.cUl=l;U(j,d);}else if(!p){b=new Dmq;B$(m);b.cUC=m;Bzj(b,m,l);U(j,b);}else{AHJ();if(g!==ANI){if(g===AUm){b=new Dop;B$(m);b.b4p=m;Bzj(b,m,l);b.c4s=l;U(j,b);c=new CPk;B$(m);c.bRb=m;Fb(c,m.bLm,m.bM1);c.c1H=l;U(j,c);}}else if(!(d!==null&&C1M(d,e.a34()))){b=new AMN;B$(m);Bzj(b,m,l);U(j,b);}else{g=new CY0;B$(m);g.bUd=m;Fb(g,m.bLm,m.bM1);g.c7r=l;U(j,g);if(b instanceof AAp){d=b;b=d.bJ3;d.bJ3=d.bJA;d.bJA +=b;}}}b=new Csw;B$(m);c=Lj(e.bDp(),f);b.bV6=m;Fb(b,m.bOe,m.bM1);b.cA4=c;U(j,b);return QF(m,n);},EA8=(a,b)=>{let c,d;c=b.hE();if(!AHB(a.bW_,c)){d=(AId(a,c)).bHj-(a.bW_.cF(c)).bGE;a.bW_.cC(b.h2(BM(d)));}(b.h2(ABn(a,c))).hP(a.bOe);(b.h2(AId(a,c))).hP(a.bLm);if(a.bRu!==null)(b.h2(BCH(a,c))).hP(a.bRu);else (b.h2(AEr(a,c))).hP(a.bM1);},DDp=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m;c=a.bW_.cF(b);d=Dj(a.bLm,b);e=a.bOe.a32(b);f=Dj(a.bM1,b);g=AAu(AAu(d,e),f);h=c.bGE;i=c.bGF;f=g;j=f.bGF+36.0;c=a.bLm;k=c instanceof AAp?(c.bLz.cF(b)).bGF +:!(c instanceof AIY)?0.0:(c.bLz.cF(b)).bGF;k=j+BC(12.0,k)+i;j=0.0;l=g.bGY;if(h>l)j=h-l;l=j+f.bGE+12.0;c=a.bRu;if(c!==null)l=l+(Ly(c,b)).bGE+CQU(a,b);m=!(j>0.0)?Qt(l,k,g.bGY,d.bHi+i,k):Qt(l,k,h+d.bGY,d.bHi+i,k);if(!Ew(e)&&a.bRu!==null)return A12(m);return m;},CQU=(a,b)=>{let c,d,e,f;c=Ly(a.bRu,b);d=a.bLm;e=d instanceof AAp?(d.bJA.cF(b)).bGE:!(d instanceof AIY)?0.0:(d.bJA.cF(b)).bGE;f=c.bGE;return BC(f,e+f/2.0);},Fkd=(a,b,c)=>{if(b!==a.bOe){if(b!==a.bLm){if(b!==a.bRu){if(b!==a.bM1){b=new BV;X(b);J(b);}return AEr(a, +c);}return BCH(a,c);}return AId(a,c);}return ABn(a,c);},ABn=(a,b)=>{let c,d,e,f,g,h;c=Dj(a.bLm,b);d=Dj(a.bM1,b);e=Dj(a,b);f=a.bOe.a32(b);g=(a.bW_.cF(b)).bGF;h=c.bGF;h=g+h+(e.bGF-g-h-d.bGF-f.bGF)/2.0;return Bh(e.bGY-f.bGY,h);},AId=(a,b)=>{let c,d,e;c=Dj(a,b);d=Dj(a.bLm,b);e=(a.bW_.cF(b)).bGF;return Bh(c.bGY-d.bGY,e);},BCH=(a,b)=>{let c,d,e,f,g,h;c=Dj(a,b);d=Dj(a.bLm,b);e=Ly(a.bRu,b);f=d.bHi;g=d;h=f+(g.bGF-f-e.bGF)/2.0;return Bh(c.bGY-d.bGY+g.bGE+CQU(a,b),h);},AEr=(a,b)=>{let c,d,e;c=Dj(a,b);d=Dj(a.bM1,b);e=c.bGF +-d.bGF;return Bh(c.bGY-d.bGY,e);}; +function BJb(){let a=this;A6q.call(a);a.bKE=null;a.bKl=null;a.cfF=null;a.cas=0.0;a.bUE=0.0;a.cmR=0.0;} +let BWA=a=>{let b,c,d;b=G$();c=a.cfF;if(c!==null)EQ(b,c);d=a.bKE.a34();c=b;Ea(c,d);Ea(c,a.bKl.a34());return b;},DQY=a=>{return a.cfF;},EAY=a=>{return a.cfF;},BUs=(a,b,c)=>{if(b!==a.bKE){if(b!==a.bKl){b=new BV;X(b);J(b);}return APd(a,c);}return AQq(a,c);},D7b=(a,b)=>{let c;c=Xb(a,b);if(!Ew(a.bKE.a32(b))&&!Ew(a.bKl.a32(b)))return A12(c);return c;}; +function BkG(){let a=this;BJb.call(a);a.bOn=null;a.bVE=null;a.b0s=null;a.b$$=null;} +let CH9=(a,b,c,d,e,f,g,h)=>{let i,j,k,l,m;Jd(a,c.Xs());a.cas=0.0;a.bUE=0.0;a.cmR=0.0;a.bKE=c;a.bKl=d;a.cfF=f;GO();c=HD;a.b0s=c;a.b$$=c;a.bOn=b;a.bVE=e;c=h.dX();while(c.dY()){i=c.dZ();e=i.b9O;HK();if(e===Lr){if(a.b0s!==HD)continue;a.b0s=BX_(i,Cr(a));j=(AFC(a,g)).bHj;k=a.b0s.cF(g);l=k.bGE;if(l>j)a.cas=l-j;a.bUE=BC(a.bUE,k.bGF);}else if(e===OL){if(a.b$$!==HD)continue;d=BX_(i,Cr(a));a.b$$=d;k=d.cF(g);j=(AFC(a,g)).bHj+(b.a32(g)).bGE+k.bGE;m=(CMx(a,g)).bGE;if(j>m)a.cmR=j-m;a.bUE=BC(a.bUE,k.bGF);}a.ck7=null;}},Fzd +=(a,b,c,d,e,f,g)=>{let h=new BkG();CH9(h,a,b,c,d,e,f,g);return h;},BX_=(b,c)=>{let d,e,f,g,h,i,j,k,l,m,n;d=c.cp();B8();e=ZT(B0(d,A23),b.b0h);B9();f=(BJ(e,CK)).cu(c.ly());g=(BJ(e,Cz)).cu(c.ly());h=D0(e,c.ly());i=G1(e);j=GM(e);k=Fi(e);MY();l=c.qV(AEb,null,0,null);Ed();d=c.E0(h,l,FR);e=b.b5a;m=S0(d,e);n=AKv(m,j,c.hr());d=new AGu;b=new DdG;b.cDg=n;AUC(d,n,b,k);return XJ(i,g,f,d,0,k);},E6G=a=>{let b,c;b=K(QU,4);c=b.data;c[0]=a.bOn;c[1]=a.bVE;c[2]=a.bKE;c[3]=a.bKl;return Bv(b);},BRY=(a,b)=>{if((BWA(a)).dV()>1)return 20;return 10;},CMx +=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o;c=a.bOn.a32(b);d=Dj(a.bVE,b);e=a.bKE.a32(b);f=a.bKl.a32(b);g=a;h=g.bOn.a32(b);i=g.bKE.a32(b);g=g.bKl.a32(b);j=BC(i.bGE-i.bGY+g.bGY,h.bGE+20.0);k=a.cas+e.bGY+j+f.bGE-f.bGY+a.cmR;h=AZV(e,f);l=a.bUE;m=l+h.bGF;i=AAu(AAu(c,Qt(k,m,a.cas+e.bGY+j/2.0,l,m)),d);n=BRY(a,b);h=a;j=n+((BWA(h)).dV()>1?10:!(!(Ew(h.bKE.a32(b))&&Ew(h.bKl.a32(b)))?0:1)?0:6)|0;c=a.bVE;if(!(c instanceof AIY))o=0.0;else{c=c;h=c.bJA.cF(b);b=c.bJ3.cF(b);o=BC(h.bGF,b.bGF);}b=Bor(i,0.0,j+o);j=a.bUE;g=new JD;c=b;MZ(g, +c.bGE,c.bGF,b.bGY,b.bHi+j,b.bHH);return g;},EG7=(a,b)=>{let c,d,e,f;c=b.hE();if(!AHB(a.b0s,c)){d=(AFC(a,c)).bHj-(a.b0s.cF(c)).bGE;a.b0s.cC(b.h2(BM(d)));}if(!AHB(a.b$$,c)){d=(AFC(a,c)).bHj+(a.bOn.a32(c)).bGE;a.b$$.cC(b.h2(BM(d)));}(b.h2(AFC(a,c))).hP(a.bOn);e=b.hE();f=a;(b.h2(AQq(f,e))).hP(a.bKE);(b.h2(APd(f,e))).hP(a.bKl);(b.h2(Cer(a,c))).hP(a.bVE);},AQq=(a,b)=>{let c;c=a.bOn.a32(b);return DJ(Bh(a.cas,a.bUE),BW(c.bGF+BRY(a,b)));},APd=(a,b)=>{let c,d,e;c=a.bOn.a32(b);d=Xb(a,b);e=a.bKl.a32(b);return DJ(Bh(d.bGE +-e.bGE-a.cmR,a.bUE),BW(c.bGF+BRY(a,b)));},AFC=(a,b)=>{let c,d,e;c=a.bUE;d=Xb(a,b);e=a.bOn.a32(b);return Bh(d.bGY-e.bGY,c);},Cer=(a,b)=>{let c,d,e;c=Xb(a,b);d=Dj(a.bVE,b);e=c.bGY;b=d;return Bh(e-b.bGE/2.0,c.bGF-b.bGF);}; +function CEU(){let a=this;BkG.call(a);a.c5l=null;a.b3n=null;} +let Fvh=(a,b,c,d)=>{let e,f,g,h,i;e=Bk();f=CF3(a,a.bKE,b);g=e;U(g,f);U(g,CF3(a,a.bKl,c));h=Ew(a.bKE.a32(d));i=Ew(a.bKl.a32(d));d=a.c5l;AHJ();if(d===ANI){if(h&&i){U(g,CqR(a,a.bKE,Xy(b),R1(b)));U(g,CqR(a,a.bKl,Xy(c),R1(c)));}else if(h&&!i)U(g,Bg3(a,a.bKE,Xy(b),R1(b)));else if(!h&&i)U(g,Bg3(a,a.bKl,Xy(c),R1(c)));}else if(d===AUm){if(h&&i){U(g,CDR(a,a.bKE,a.b3n,null));U(g,CDR(a,a.bKl,a.b3n,null));b=new C72;c=a.b3n;b.b06=a;Fb(b,null,null);b.cYd=c;U(g,b);}else if(h&&!i)U(g,Bg3(a,a.bKE,Xy(b),R1(b)));else if(!h&&i)U(g, +Bg3(a,a.bKl,Xy(c),R1(c)));}return QF(a,e);}; +function CO4(){F.call(this);this.cmM=null;} +let FsY=(a,b,c)=>{return -a.cmM.b0j.bIv;},E0W=(a,b,c)=>{return (Dj(a.cmM,b)).bGE-a.cmM.b0j.bKJ;},B4Z=N(NE),EXz=(a,b)=>{if(F0(b,Ht)&&!(b instanceof NR))b.cC(a);else a.bHP.hP(b);},ENA=(a,b)=>{let c;c=new B4Z;Zx(c,a.bHP.h2(b));return c;},D7k=N(),CGR=(b,c,d)=>{let e,f,g;e=Fj();BQ(e,12.0,0.0);f=c-12.0;BQ(e,f,0.0);g=d/2.0;BQ(e,c,g);BQ(e,f,d);BQ(e,12.0,d);BQ(e,0.0,g);BQ(e,12.0,0.0);e.bG1=b;return e;},AQl=N(Bx),ANI=null,AUm=null,EmF=null,AHJ=()=>{AHJ=Z(AQl);DUf();},EEt=(a,b,c)=>{AHJ();Ct(a,b,c);},CWk=(a,b)=>{let c +=new AQl();EEt(c,a,b);return c;},DUf=()=>{let b,c,d;ANI=CWk(E(4251),0);b=CWk(E(8988),1);AUm=b;c=K(AQl,2);d=c.data;d[0]=ANI;d[1]=b;EmF=c;}; +function CjG(){let a=this;Dc.call(a);a.cDM=null;a.b2r=null;} +let Cug=(a,b)=>{return Cs(AId(a.b2r,b),IA(a.bHr.a32(b)));},C_3=(a,b)=>{return Cs(ABn(a.b2r,b),J7(a.bHF.a32(b)));},DtH=(a,b)=>{let c,d;c=b.hE();d=D8(Cr(a.b2r),a.cDM,((Cr(a.b2r)).a$c()).a$e());Dv(d,Cug(a,c));Dv(d,C_3(a,c));b.hP(d);},D6o=(a,b,c,d)=>{let e,f,g,h,i,j,k;e=b.hE();f=Cug(a,e);g=C_3(a,e);h=D8(Cr(a.b2r),a.cDM,((Cr(a.b2r)).a$c()).a$e());i=Cs(c,f);j=Cs(d,g);k=(i.bGL+j.bGL)/2.0;Dv(h,i);Ci(h,i.bGK,k);Ci(h,j.bGK,k);Dv(h,j);b.hP(h);}; +function Dgl(){let a=this;Dc.call(a);a.cUl=null;a.caA=null;} +let D9F=(a,b)=>{let c,d,e,f,g;c=b.hE();d=a.bHr.a32(c);e=BA(d.bGE,(d.bHi+d.bHH)/2.0);f=Cs(AId(a.caA,c),e);e=a.bHF.a32(c);d=BA(0.0,e.bGF/2.0);g=Cs(BCH(a.caA,c),d);e=D8(Cr(a.caA),a.cUl,((Cr(a.caA)).a$c()).bEr());Dv(e,f);Dv(e,g);b.hP(e);}; +function AMN(){let a=this;Dc.call(a);a.cP$=null;a.bSY=null;} +let Bzj=(a,b,c)=>{a.bSY=b;Fb(a,b.bLm,b.bM1);a.cP$=c;},Fzp=(a,b)=>{let c=new AMN();Bzj(c,a,b);return c;},B_Y=(a,b)=>{let c,d,e;c=Dj(a.bSY.bLm,b);d=c.bGE;e=(c.bHH-c.bHi)/2.0;return Cs(AId(a.bSY,b),BA(d,c.bHi+e));},Cc1=(a,b)=>{let c,d,e;c=Dj(a.bSY.bM1,b);d=c.bGE;e=(c.bHH-c.bHi)/2.0;return Cs(AEr(a.bSY,b),BA(d,c.bHi+e));},D1w=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=b.hE();d=B_Y(a,c);if(Ew(Dj(a.bSY,c))){e=a.bFW(c);f=d.bGK;g=d.bGL;h=e.bGK;i=e.bGL;j=a.bSY.bOe.a32(c);k=BC(f+12.0,(ABn(a.bSY,c)).bHj+j.bGE);c=D8(Cr(a.bSY),a.cP$, +((Cr(a.bSY)).a$c()).bEq());DC();l=SG(c,G_);Ci(l,f,g);Ci(l,k,g);Ci(l,k,i);Ci(l,h,i);(b.h2(Bh(h,i-12.0))).hP(NX(5.0,12.0));b.hP(l);return;}}; +function Dmq(){AMN.call(this);this.cUC=null;} +let Ffu=(a,b)=>{return IA(Dj(a.cUC,b));}; +function CY0(){let a=this;Dc.call(a);a.c7r=null;a.bUd=null;} +let EV$=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=b.hE();d=Dj(a.bUd.bLm,c);e=(d.bHH-d.bHi)/2.0;f=Cs(AId(a.bUd,c),BA(0.0,d.bHi+e));if(Ew(Dj(a.bUd,c))){g=Dj(a.bUd.bM1,c);h=(g.bHH-g.bHi)/2.0;d=Cs(AEr(a.bUd,c),BA(0.0,g.bHi+h));i=f.bGK;j=f.bGL;e=d.bGK;k=d.bGL;ABn(a.bUd,c);h=Eh(i-12.0,(ABn(a.bUd,c)).bHj);c=D8(Cr(a.bUd),a.c7r,((Cr(a.bUd)).a$c()).bEr());DC();l=SG(c,G_);Ci(l,i,j);Ci(l,h,j);Ci(l,h,k);Ci(l,e,k);(b.h2(Bh(e,k-12.0))).hP(NX(5.0,12.0));b.hP(l);return;}}; +function Csw(){let a=this;Dc.call(a);a.cA4=null;a.bV6=null;} +let C5i=(a,b)=>{return Cs(ABn(a.bV6,b),IA(a.bHr.a32(b)));},CR2=(a,b)=>{return Cs(AEr(a.bV6,b),J7(a.bHF.a32(b)));},DPL=(a,b)=>{let c,d,e,f,g;c=b.hE();if(Ew(a.bHr.a32(b.hE()))){d=D8(Cr(a.bV6),a.cA4,((Cr(a.bV6)).a$c()).a$e());Dv(d,C5i(a,c));e=a.bV6.c41;AHJ();if(e===ANI)Dv(d,CR2(a,c));else if(e===AUm){e=a.bHF.a32(c);f=e.bGE;g=(e.bHH-e.bHi)/2.0;Dv(d,Cs(AEr(a.bV6,c),BA(f,e.bHi+g)));}b.hP(d);return;}},ExH=(a,b,c,d)=>{let e,f,g,h,i,j,k;if(Ew(a.bHr.a32(b.hE()))){e=b.hE();f=C5i(a,e);g=CR2(a,e);h=D8(Cr(a.bV6),a.cA4,((Cr(a.bV6)).a$c()).a$e());i +=Cs(c,f);j=Cs(d,g);k=(i.bGL+j.bGL)/2.0;Dv(h,i);Ci(h,i.bGK,k);Ci(h,j.bGK,k);Dv(h,j);b.hP(h);return;}}; +function Dop(){let a=this;AMN.call(a);a.c4s=null;a.b4p=null;} +let EcX=(a,b)=>{let c,d,e,f,g,h,i,j,k;c=b.hE();d=a;e=B_Y(d,c);if(Ew(Dj(a.b4p,c))){f=Cc1(d,c);g=e.bGK;h=e.bGL;i=f.bGL;d=a.b4p.bOe.a32(c);j=BC(g+12.0,(ABn(a.b4p,c)).bHj+d.bGE);k=D8(Cr(a.b4p),a.c4s,((Cr(a.b4p)).a$c()).a$e());Ci(k,g,h);Ci(k,j,h);Ci(k,j,i);(b.h2(Bh(j,i-12.0))).hP(NX(5.0,12.0));b.hP(k);return;}}; +function CPk(){let a=this;Dc.call(a);a.c1H=null;a.bRb=null;} +let Fis=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n;c=b.hE();d=Dj(a.bRb.bLm,c);e=d.bGE;f=(d.bHH-d.bHi)/2.0;g=Cs(AId(a.bRb,c),BA(e,d.bHi+f));if(Ew(Dj(a.bRb,c))){d=Dj(a.bRb.bM1,c);e=d.bGE;f=(d.bHH-d.bHi)/2.0;h=Cs(AEr(a.bRb,c),BA(e,d.bHi+f));d=Dj(a.bRb.bM1,c);i=d.bGE;j=Cs(AEr(a.bRb,c),BA(i,d.bHH));k=g.bGK;l=h.bGK;m=h.bGL;e=j.bGK;i=j.bGL;d=a.bRb.bOe.a32(c);f=BC(k+12.0,(ABn(a.bRb,c)).bHj+d.bGE);c=Wf(Cr(a.bRb),a.c1H);Oc();n=Vg(c,AS7);Ci(n,f,m);Ci(n,l,m);Ci(n,e,i);b.hP(n);return;}},A1I=N(Bx),AE2=null,BJc=null,E5n=null,ADw +=()=>{ADw=Z(A1I);D_Y();},EzX=(a,b,c)=>{ADw();Ct(a,b,c);},Dpe=(a,b)=>{let c=new A1I();EzX(c,a,b);return c;},D_Y=()=>{let b,c,d;AE2=Dpe(E(8989),0);b=Dpe(E(8990),1);BJc=b;c=K(A1I,2);d=c.data;d[0]=AE2;d[1]=b;E5n=c;}; +function CA5(){F.call(this);this.cud=null;} +let Dda=(a,b,c)=>{let d;d=c/b*2.0;if(!(d<=1.0))return 12.0*(2.0-d);return 12.0*d;},E_0=(a,b,c)=>{return -Dda(a,(De(a.cud,b)).bGF,c);},DNA=(a,b,c)=>{let d;d=De(a.cud,b);return d.bGE+Dda(a,d.bGF,c);}; +function Ccr(){let a=this;Fc.call(a);a.bTw=null;a.crH=0.0;} +let DUv=a=>{return HL(a.bTw);},CgX=a=>{return a.bTw.Xm();},B$5=a=>{return a.bTw.bDp();},C2P=a=>{return a.bTw.a34();},B$x=a=>{return a.bTw.a35();},DrD=a=>{return a.bTw.a36();},Fh8=(a,b)=>{return CkY(Qx(a.bTw.a32(b),CVG(a,b)),a.crH);},CVG=(a,b)=>{let c,d;c=(a.bTw.a32(b)).bGF;d=a.crH;if(c>d){b=new BP;X(b);J(b);}return BW((d-c)/2.0);},EiN=(a,b)=>{(b.h2(CVG(a,b.hE()))).hP(a.bTw);}; +function CN$(){let a=this;Fc.call(a);a.bVT=null;a.cE2=0.0;a.c1q=0.0;} +let EqC=a=>{return HL(a.bVT);},DXo=a=>{return CgX(a.bVT);},DZp=a=>{return B$5(a.bVT);},Ezw=a=>{return C2P(a.bVT);},E3Q=a=>{return B$x(a.bVT);},DMG=a=>{return DrD(a.bVT);},DQ4=(a,b)=>{let c;c=Dj(a.bVT,b);return CkY(Qx(c,Cdo(a,b)),a.cE2+c.bGF+a.c1q);},Cdo=(a,b)=>{return BW(a.cE2);},DAT=(a,b)=>{(b.h2(Cdo(a,b.hE()))).hP(a.bVT);}; +function DdG(){F.call(this);this.cDg=null;} +let EZl=(a,b,c)=>{return CWT(a.cDg,b,c)-6.0;},DMe=(a,b,c)=>{return B5h(a.cDg,b,c)+15.0;}; +function CIn(){let a=this;F.call(a);a.cCQ=null;a.c$j=null;} +let E9u=a=>{return SD(a.cCQ);},Fp0=a=>{return (Tj(a.cCQ)).bI1;}; +function Eeb(){F.call(this);this.dfz=null;} +function Bet(){let a=this;Fc.call(a);a.def=5.0;a.cnQ=0.0;a.cxm=0.0;a.cXk=null;a.cbF=null;a.coL=null;} +let BLa=(a,b,c,d)=>{Jd(a,b);a.def=5.0;a.cbF=E6(0.0,0.0);a.cXk=d;a.coL=c;},E4V=(a,b,c)=>{let d=new Bet();BLa(d,a,b,c);return d;},BYP=(a,b,c)=>{a.cxm=c;a.cnQ=b;},FhY=(a,b)=>{let c,d,e;c=(a.cbF.cF(b)).bGE;if(c>0.0)c=c+5.0;b=new JD;d=a.cnQ;c=d+c;e=a.cxm;MZ(b,c,e,d/2.0,0.0,e);return b;},DRN=(a,b)=>{let c,d,e,f;c=Ba_(Ge(C2(a.cnQ,a.cxm),5.0));d=(Cr(a)).cp();B8();d=B0(d,B6w);c.bG1=G1(d);e=a.cXk;if(e!==null){B9();e=UD(e,d,CK,J4(a));}else{B9();e=(BJ(d,CK)).cu(J4(a));}((b.h2(e)).h2(Cc(e))).hP(c);f=a.cbF.cF(b.hE());a.cbF.cC(b.h2(Bh(a.cnQ ++5.0, -f.bGF/2.0)));},Dyt=a=>{return HL(a.coL);},DVe=a=>{return a.coL;},D3e=a=>{return a.coL;},Fcc=a=>{return Gi();}; +function C4s(){let a=this;Dc.call(a);a.cA$=0.0;a.cuB=null;a.ccn=null;a.bZ5=null;} +let E8_=(a,b)=>{let c,d;b=b.h2(BM(a.cA$));c=a.bHF.a32(a.bZ5.bIy);d=a.bZ5.bH2;d=D8(d,a.cuB,(MS(d)).a$e());if(!FQ(a.ccn))d=Iv(d,Sd(a.bZ5,a.ccn),IJ(a));Ci(d,c.bGY,0.0);Ci(d,c.bGY,c.bHi);b.hP(d);},E3S=(a,b,c,d)=>{let e,f,g,h,i,j,k,l;e=b.h2(BM(a.cA$));f=a.bHF.a32(a.bZ5.bIy);g=BA(f.bGY,0.0);h=BA(f.bGY,f.bHi);i=a.bZ5.bH2;j=D8(i,a.cuB,(MS(i)).a$e());if(!FQ(a.ccn))j=Iv(j,Sd(a.bZ5,a.ccn),IJ(a));i=Cs(c,g);k=Cs(d,h);l=i.bGL+4.0;Dv(j,i);Ci(j,i.bGK,l);Ci(j,k.bGK,l);Dv(j,k);e.hP(j);}; +function CqY(){let a=this;Dc.call(a);a.cWL=null;a.cOV=null;a.cVD=null;a.b$S=null;} +let DwG=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=b.hE();d=Cs(a.cVD,IA(a.bHr.a32(c)));e=Cs(CuM(a,c,d.bGK),De8(a,c));f=d.bGK;g=d.bGL;h=e.bGK;i=e.bGL;j=(CuM(a,c,f)).bHj;k=j<0.0?(MS(a.b$S.bH2)).bEr():!(j>0.0)?(MS(a.b$S.bH2)).a$e():(MS(a.b$S.bH2)).bEq();l=D8(a.b$S.bH2,a.cWL,k);Ci(l,f,g);Ci(l,f,i);Ci(l,h,i);b.hP(l);},De8=(a,b)=>{return Cs(a.cOV,IA(a.bHF.a32(b)));},CuM=(a,b,c)=>{let d,e,f,g,h,i;d=De8(a,b);e=a.bHF.a32(b);f=d.bGK;g=e.bGE;h=g/2.0;i=f-h;f=f+h;return cf)?Bh(0.0, -e.bGF):Bh(h, -e.bGF +/2.0);}; +function CSE(){let a=this;Dc.call(a);a.cCC=0.0;a.cr5=null;a.cdb=null;a.b0n=null;} +let E1O=(a,b)=>{let c,d,e,f;b=b.h2(BM(a.cCC));c=a.bHF.a32(a.b0n.bIy);d=a.b0n.bH2;d=D8(d,a.cr5,(MS(d)).a$e());if(!FQ(a.cdb))d=Iv(d,Sd(a.b0n,a.cdb),IJ(a));e=BA(c.bGY,0.0);f=BA(c.bGY,c.bHi);Dv(d,e);Dv(d,f);b.hP(d);},E_l=(a,b,c,d)=>{let e,f,g,h,i,j,k,l;e=b.h2(BM(a.cCC));f=a.bHF.a32(a.b0n.bIy);g=BA(f.bGY,0.0);h=BA(f.bGY,f.bHi);i=a.b0n.bH2;j=CUa(D8(i,a.cr5,(MS(i)).a$e()));if(!FQ(a.cdb))j=Iv(j,Sd(a.b0n,a.cdb),IJ(a));i=Cs(c,g);k=Cs(d,h);l=i.bGL+4.0;Dv(j,i);Ci(j,i.bGK,l);Ci(j,k.bGK,l);Dv(j,k);e.hP(j);}; +function Cy1(){let a=this;Dc.call(a);a.cFQ=0.0;a.cHe=null;a.cdU=null;a.cGL=0.0;a.b0$=null;} +let E7N=(a,b)=>{let c,d,e,f;b=b.h2(BM(a.cFQ));c=a.bHr.a32(a.b0$.bIy);if(Ew(c)){d=a.b0$.bH2;e=D8(d,a.cHe,(MS(d)).a$e());if(!FQ(a.cdU))e=Iv(e,Sd(a.b0$,a.cdU),IJ(a));f=BA(c.bGY,6.0+c.bHH);d=BA(c.bGY,a.cGL);Dv(e,f);Dv(e,d);b.hP(e);return;}},EUU=(a,b,c,d)=>{let e,f,g,h,i,j,k,l;e=b.h2(BM(a.cFQ));f=a.bHr.a32(a.b0$.bIy);if(Ew(f)){g=BA(f.bGY,6.0+f.bHH);h=BA(f.bGY,a.cGL);i=a.b0$.bH2;j=CUa(D8(i,a.cHe,(MS(i)).a$e()));if(!FQ(a.cdU))j=Iv(j,Sd(a.b0$,a.cdU),IJ(a));i=Cs(c,g);k=Cs(d,h);l=k.bGL-14.0;Dv(j,i);Ci(j,i.bGK,l);Ci(j, +k.bGK,l);Dv(j,k);e.hP(j);return;}}; +function Cwy(){let a=this;F.call(a);a.b$4=0.0;a.b$6=0.0;} +let E$y=a=>{a.b$4=1.7976931348623157E308;a.b$6=4.9E-324;},DFi=()=>{let a=new Cwy();E$y(a);return a;},DEO=(a,b)=>{if(b>a.b$6)a.b$6=b;if(b{if(EL(a.b$6)>EL(a.b$4))return a.b$6;return a.b$4;}; +function B6d(){let a=this;Fc.call(a);a.cV9=0.0;a.cqF=0.0;a.cS4=0.0;a.c9f=1.5;a.cXG=null;a.cki=null;} +let CP4=(a,b,c,d)=>{Jd(a,b);a.c9f=1.5;a.cXG=c;a.cki=d;},D$P=(a,b,c)=>{let d=new B6d();CP4(d,a,b,c);return d;},Ejw=a=>{return Gi();},CfT=(a,b,c,d)=>{a.cV9=d;a.cqF=b;a.cS4=c;},E$l=(a,b)=>{let c;b=new JD;c=a.cV9;MZ(b,c,1.5,c/2.0,0.0,1.5);return b;},EGA=(a,b)=>{let c,d;c=DE(a.cS4-a.cqF);b=b.h2(BM(a.cqF));d=a.cXG;((d!==null?b.h2(d):b.h2(E4())).h2(Dw(1.5))).hP(c);},Erl=a=>{return HL(a.cki);},EDD=a=>{return a.cki;},Fxj=a=>{return a.cki;}; +function C_o(){let a=this;Dc.call(a);a.cz8=0.0;a.cId=null;a.cdt=null;a.b0M=null;} +let DYc=(a,b)=>{let c,d;b=b.h2(BM(a.cz8));c=a.bHF.a32(a.b0M.bIy);d=a.b0M.bH2;d=D8(d,a.cId,(MS(d)).a$e());if(!FQ(a.cdt))d=Iv(d,Sd(a.b0M,a.cdt),IJ(a));Ci(d,c.bGY,0.0);Ci(d,c.bGY,c.bHi);b.hP(d);},EPe=(a,b,c,d)=>{let e,f,g,h,i,j,k,l;e=b.h2(BM(a.cz8));f=a.bHF.a32(a.b0M.bIy);g=BA(f.bGY,0.0);h=BA(f.bGY,f.bHi);i=a.b0M.bH2;j=D8(i,a.cId,(MS(i)).a$e());if(!FQ(a.cdt))j=Iv(j,Sd(a.b0M,a.cdt),IJ(a));i=Cs(c,g);k=Cs(d,h);l=i.bGL+4.0;Dv(j,i);Ci(j,i.bGK,l);Ci(j,k.bGK,l);Dv(j,k);e.hP(j);}; +function C06(){let a=this;Dc.call(a);a.czk=0.0;a.csu=null;a.cH1=0.0;a.b_L=null;a.ccy=null;a.b0L=null;} +let Dtz=(a,b)=>{let c,d,e,f,g;b=b.h2(BM(a.czk));c=a.bHr.a32(a.b0L.bIy);if(Ew(c)){d=a.b0L.bH2;e=D8(d,a.csu,(MS(d)).a$e());if(!FQ(a.b_L))e=Iv(e,Sd(a.b0L,a.b_L),IJ(a));f=Cs(a.ccy,BA(c.bGY,c.bHH));g=Cs(a.ccy,BA(c.bGY,a.cH1));Dv(e,f);Dv(e,g);b.hP(e);return;}},FaF=(a,b,c,d)=>{let e,f,g,h,i,j,k,l;e=b.h2(BM(a.czk));f=a.bHr.a32(a.b0L.bIy);if(Ew(f)){g=Cs(a.ccy,BA(f.bGY,f.bHH));h=Cs(a.ccy,BA(f.bGY,a.cH1));i=a.b0L.bH2;j=D8(i,a.csu,(MS(i)).a$e());if(!FQ(a.b_L))j=Iv(j,Sd(a.b0L,a.b_L),IJ(a));i=Cs(c,g);k=Cs(d,h);l=k.bGL-14.0;Dv(j, +i);Ci(j,i.bGK,l);Ci(j,k.bGK,l);Dv(j,k);e.hP(j);return;}}; +function Cd5(){let a=this;Dc.call(a);a.c7G=null;a.b3Z=null;} +let D2y=(a,b)=>{let c,d,e,f,g,h,i;c=b.hE();d=Dj(a.b3Z.bMC,c);e=Cs(AR0(a.b3Z,c),BPu(d));d=Cs(ADR(a.b3Z,a.bHF,c),J7(a.bHF.a32(c)));f=e.bGL;g=d.bGK;h=d.bGL;c=Cr(a.b3Z);e=a.b3Z;i=Iv(D8(c,e.cta,((Cr(e)).a$c()).a$e()),APf(a.c7G),IJ(a));Ci(i,g,f);Ci(i,g,h);b.hP(i);}; +function C0t(){Dc.call(this);this.b7h=null;} +let E1R=(a,b)=>{let c,d,e,f,g,h,i;c=b.hE();d=Cs(ADR(a.b7h,a.bHr,c),IA(a.bHr.a32(c)));e=Dj(a.b7h.bOv,c);f=Cs(AOL(a.b7h,c),BWX(e));g=d.bGL;h=f.bGK;i=f.bGL;c=Cr(a.b7h);e=a.b7h;e=D8(c,e.cta,((Cr(e)).a$c()).a$e());Ci(e,h,g);Ci(e,h,i);b.hP(e);}; +function DfS(){let a=this;Er.call(a);a.c1u=null;a.czn=0.0;a.cv4=null;} +let Dyy=(a,b)=>{let c,d;c=a.c1u.lF((b.gy()).co());b=((b.h2(c)).h2(Cc(c))).h2(Dw(0.0));c=a.cv4.cQf;d=a.czn;b.hP(DHO(c,d,d));},Eux=(a,b)=>{let c,d;b=a.cv4;c=a.czn;d=Dh7(b,Be(b.b_W,0),E(362));b=Dh7(b,Be(b.b_W,0),E(363));return Cl(CZ(d)*c,CZ(b)*c);}; +function C2G(){let a=this;Dc.call(a);a.clT=null;a.cvv=null;a.bV0=null;} +let EiU=(a,b,c,d)=>{a.bV0=b;Fb(a,b.bOn,c);c=Bk1(d,b.b3n);a.clT=c;if(NN(c)){a.cvv=R1(d)?null:((Cr(b)).a$c()).a$e();return;}b=new Bt;X(b);J(b);},CF3=(a,b,c)=>{let d=new C2G();EiU(d,a,b,c);return d;},D5q=(a,b)=>{let c,d,e,f,g,h,i,j;c=b.hE();d=CIt(a,c);e=Dle(a,c);f=d.bGK;g=d.bGL;h=e.bGK;i=e.bGL;j=D8(Cr(a.bV0),a.clT,a.cvv);Ci(j,f,g);Ci(j,h,g);Ci(j,h,i);b.hP(j);},CIt=(a,b)=>{let c,d,e;c=a.bV0.bOn.a32(b);d=a.bHF;e=a.bV0;if(d===e.bKE)e=AOw(c);else if(d===e.bKl)e=ANw(c);else{b=new BP;X(b);J(b);}return Cs(AFC(a.bV0,b), +e);},Dle=(a,b)=>{let c,d;c=a.bHF;d=a.bV0;if(c===d.bKE)d=AQq(d,b);else if(c===d.bKl)d=APd(d,b);else{b=new BP;X(b);J(b);}return Cs(d,J7(a.bHF.a32(b)));},ERc=(a,b,c,d)=>{let e,f,g,h,i,j,k,l;e=b.hE();f=CIt(a,e);g=Dle(a,e);h=Bmf(f,g);f=Cs(c,f);c=Cs(d,g);if(h!==Bmf(f,c)){i=(h!==Gy?1:(-1))*12.0;j=a.bV0.bOn.a32(e);k=Wf(Cr(a.bV0),a.clT);Dv(k,f);Ci(k,f.bGK+i,f.bGL);Ci(k,f.bGK+i,f.bGL+j.bGF*0.75);b.hP(k);f=BAR(k);}d=D8(Cr(a.bV0),a.clT,a.cvv);Oc();l=Vg(d,Un);Dv(l,f);Ci(l,c.bGK,f.bGL);Dv(l,c);b.hP(l);}; +function Cp1(){let a=this;Dc.call(a);a.b8b=null;a.cZT=0;a.bOy=null;} +let Fjq=(a,b,c,d,e)=>{a.bOy=b;Fb(a,c,b.bVE);if(!(d!==null&&NN(d)))d=b.b3n;a.b8b=d;a.cZT=e;},CqR=(a,b,c,d)=>{let e=new Cp1();Fjq(e,a,b,c,d);return e;},EWb=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=b.hE();d=a.bHr.a32(c);if(Ew(d)){e=IA(Qx(d,CCv(a,c)));f=C6C(a,c);g=e.bGK;h=e.bGL;i=f.bGK;j=f.bGL;k=!(i>g)?((Cr(a.bOy)).a$c()).bEq():((Cr(a.bOy)).a$c()).bEr();l=D8(Cr(a.bOy),a.b8b,k);if(a.cZT){DC();l=SG(l,G_);}Ci(l,g,h);Ci(l,g,j);Ci(l,i,j);b.hP(l);return;}},C6C=(a,b)=>{let c,d,e;c=Dj(a.bOy.bVE,b);d=a.bHr;e=a.bOy;if(d===e.bKE)e +=AOw(c);else if(d===e.bKl)e=ANw(c);else{b=new BP;X(b);J(b);}return Cs(Cer(a.bOy,b),e);},CCv=(a,b)=>{let c,d;c=a.bHr;d=a.bOy;if(c!==d.bKE){if(c!==d.bKl){b=new BP;X(b);J(b);}return APd(d,b);}return AQq(d,b);},DNQ=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;e=b.hE();f=a.bHr.a32(e);if(Ew(f)){g=C6C(a,e);h=IA(Qx(f,CCv(a,e)));i=Bmf(h,g);j=h.bGK;k=g.bGK;l=Cs(c,h);m=Cs(d,g);n=Bmf(l,m);o=QE(k,j);p=o<=0?((Cr(a.bOy)).a$c()).bEq():((Cr(a.bOy)).a$c()).bEr();if(i!==n){q=(o<=0?1:(-1))*1.5*12.0;r=BA(m.bGK+q,m.bGL-18.0);c +=Wf(Cr(a.bOy),a.b8b);Oc();s=Vg(c,Un);Dv(s,l);Ci(s,l.bGK,r.bGL);Dv(s,r);b.hP(s);t=Vg(D8(Cr(a.bOy),a.b8b,p),Un);Dv(t,r);Ci(t,r.bGK,m.bGL);Dv(t,m);b.hP(t);}else{q=(o<=0?1:(-1))*1.5*12.0;u=BA(m.bGK+q,m.bGL);c=Wf(Cr(a.bOy),a.b8b);Oc();s=Vg(c,Un);v=(l.bGL+m.bGL)/2.0;Dv(s,l);Ci(s,l.bGK,v);Ci(s,u.bGK,v);Dv(s,u);b.hP(s);t=Vg(D8(Cr(a.bOy),a.b8b,p),Un);Dv(t,u);Ci(t,u.bGK,m.bGL);Dv(t,m);b.hP(t);}return;}}; +function CZx(){let a=this;Dc.call(a);a.cDO=null;a.c7O=0;a.b3z=null;} +let Ej9=(a,b,c,d,e)=>{a.b3z=b;Fb(a,c,b.bVE);if(!(d!==null&&NN(d)))d=b.b3n;a.cDO=d;a.c7O=e;},Bg3=(a,b,c,d)=>{let e=new CZx();Ej9(e,a,b,c,d);return e;},DDY=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=b.hE();d=Xb(a.b3z,c);e=a.bHr.a32(c);if(Ew(e)){f=IA(Qx(e,CuS(a,c)));g=new Jn;h=d.bGY;c=d;Kz(g,h,c.bGF);i=f.bGK;j=f.bGL;h=g.bGK;k=g.bGL;l=Wf(Cr(a.b3z),a.cDO);if(a.c7O){DC();l=SG(l,G_);}Ci(l,i,j);Ci(l,i,k);Ci(l,h,k);Ci(l,h,c.bGF);b.hP(l);return;}},DSQ=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m,n,o;e=b.hE();f=Xb(a.b3z,e);g=a.bHr.a32(e);if +(Ew(g)){h=IA(Qx(g,CuS(a,e)));i=new Jn;j=f.bGY;f=f;Kz(i,j,f.bGF-12.0);k=Cs(c,h);l=Cs(d,i);c=Wf(Cr(a.b3z),a.cDO);Oc();m=Vg(c,Un);n=k.bGK;j=l.bGK;o=l.bGL;Dv(m,k);Ci(m,n,o);Dv(m,l);Ci(m,j,f.bGF);b.hP(m);return;}},CuS=(a,b)=>{let c,d;c=a.bHr;d=a.b3z;if(c!==d.bKE){if(c!==d.bKl){b=new BP;X(b);J(b);}return APd(d,b);}return AQq(d,b);}; +function CMT(){let a=this;Dc.call(a);a.cT1=null;a.cL8=null;a.cco=null;} +let Fxe=(a,b,c,d,e)=>{a.cco=b;Fb(a,c,null);a.cT1=d;a.cL8=e;},CDR=(a,b,c,d)=>{let e=new CMT();Fxe(e,a,b,c,d);return e;},Em7=(a,b)=>{let c,d,e,f,g,h;c=b.hE();d=a.bHr.a32(c);if(Ew(d)){e=a.bHr;f=a.cco;if(e===f.bKE)e=AQq(f,c);else if(e===f.bKl)e=APd(f,c);else{b=new BP;X(b);J(b);}e=IA(Qx(d,e));g=(Xb(a.cco,c)).bGF;if(e!==null){f=BA(e.bGK,g);h=Iv(D8(Cr(a.cco),a.cT1,((Cr(a.cco)).a$c()).a$e()),a.cL8,IJ(a));Dv(h,e);Dv(h,f);b.hP(h);return;}return;}}; +function C72(){let a=this;Dc.call(a);a.cYd=null;a.b06=null;} +let DTS=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p;a:{c=b.hE();d=Xb(a.b06,c);e=Bk();f=a.b06.bKE;g=e;U(g,f);U(g,a.b06.bKl);if(!(b instanceof A5H)){h=d.bGE/2.0;g=Br(e);i=h;while(Bq(g)){f=Bm(g);if(!Ew(f.a32(c)))continue;e=BUs(a.b06,f,c);j=(Qx(f.a32(c),e)).bGY;i=Eh(i,j);h=BC(h,j);}k=Gh([i,h]);}else{f=b;g=CLH(f);h=d.bGE;l=f.bSC;m=Rv(g,l);if(m!=(-1)){n=0;while(n=0){if(CIP(a,c,g.cf(o),e)){b:{c:{p=C5(m,n);if(p>=0){o=C5(m,o);if(o<=0)break c;}k=Gh([NaN,NaN]);break b;}j +=!p?h:0.0;if(!o)h=0.0;g=Br(e);while(Bq(g)){f=Bm(g);if(!Ew(f.a32(c)))continue;if(!DkG(a,f,l))continue;e=BUs(a.b06,f,c);i=(Qx(f.a32(c),e)).bGY;j=Eh(j,i);h=BC(h,i);}k=Gh([j,h]);}break a;}o=o+(-1)|0;}b=new BP;X(b);J(b);}n=n+1|0;}b=new BP;X(b);J(b);}b=new BP;X(b);J(b);}}k=k.data;h=k[0];i=k[1];if(!(isNaN(h)?1:0)&&!(isNaN(i)?1:0)){c=Wf(Cr(a.b06),a.cYd);Oc();l=Vg(c,AS7);Ci(l,h,d.bGF);Ci(l,i,d.bGF);b.hP(l);return;}},CIP=(a,b,c,d)=>{let e;d=Br(d);while(Bq(d)){e=Bm(d);if(Ew(e.a32(b))&&DkG(a,e,c))return 1;}return 0;},DkG +=(a,b,c)=>{return !(b.a36()===c&&(b.a34()).et(c))?0:1;}; +function B6K(){let a=this;Dc.call(a);a.c5T=null;a.bUR=null;} +let CBz=(a,b,c,d)=>{a.bUR=b;Fb(a,b.bMC,c);a.c5T=d;},E9p=(a,b,c)=>{let d=new B6K();CBz(d,a,b,c);return d;},DIe=(a,b)=>{let c,d,e,f,g,h,i,j,k,l;c=b.hE();d=Dj(a.bUR.bMC,c);if(a.bHF===Be(a.bUR.bIN,0))d=AOw(d);else if(Ct0(a))d=ANw(d);else{b=new BP;X(b);J(b);}e=Cs(AR0(a.bUR,c),d);d=Cs(ADR(a.bUR,a.bHF,c),J7(a.bHF.a32(c)));f=e.bGK;g=e.bGL;h=d.bGK;i=d.bGL;j=Cr(a.bUR);k=a.bUR;j=Iv(D8(j,k.bZt,((Cr(k)).a$c()).a$e()),APf(a.c5T),IJ(a));Ci(j,f,g);if(!(Ct0(a)&&e.bGK>d.bGK))Ci(j,h,g);else{k=Dj(a.bUR.bMC,c);l=f+12.0;Ci(j,l,g);c +=k;Ci(j,l,g+c.bGF);Ci(j,h,g+c.bGF);}Ci(j,h,i);b.hP(j);},Ct0=a=>{let b,c;b=a.bHF;c=a.bUR.bIN;return b!==Be(c,c.bGJ-1|0)?0:1;}; +function DaC(){let a=this;Dc.call(a);a.cQX=null;a.b47=null;} +let EV5=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o;c=b.hE();d=Dj(a.b47.bMC,c);e=AR0(a.b47,c);f=Cs(e,ANw(d));g=Cs(e,BPu(d));h=Cs(e,AOw(d));i=Cs(ADR(a.b47,a.bHF,c),J7(a.bHF.a32(c)));j=i.bGK;k=i.bGL;c=Cr(a.b47);d=a.b47;c=D8(c,d.bZt,((Cr(d)).a$c()).a$e());d=APf(a.cQX);Fa();l=AMR(c,d,Hg);if(!(!(jf.bGK+10.0))){Ci(l,j,h.bGL);Ci(l,j,k);}else{m=g.bGK;n=g.bGL;o=(n*2.0+k)/3.0;Ci(l,m,n);Ci(l,m,o);Ci(l,j,o);Ci(l,j,k);}b.hP(l);}; +function Cn$(){let a=this;Dc.call(a);a.cMM=null;a.bXP=null;} +let Fks=(a,b)=>{let c,d,e;c=b.hE();d=Cr(a.bXP);e=a.bXP;e=D8(d,e.bZt,((Cr(e)).a$c()).a$e());Dv(e,Cns(a,c));Dv(e,Ckj(a,c));b.hP(e);},Eql=(a,b,c,d)=>{let e,f,g,h,i,j,k,l;e=b.hE();f=Cns(a,e);g=Ckj(a,e);h=Cs(c,f);i=Cs(d,g);c=Cr(a.bXP);d=a.bXP;j=Iv(D8(c,d.bZt,((Cr(d)).a$c()).a$e()),APf(a.cMM),IJ(a));k=Dj(a.bXP.bMC,e);l=h.bGK;if(!(l>i.bGK)){c=k;Ci(j,l+c.bGE/2.0,f.bGL-c.bGF/2.0);}else{c=k;Ci(j,l-c.bGE/2.0,f.bGL-c.bGF/2.0);}Ci(j,i.bGK,f.bGL-k.bGF/2.0);Dv(j,i);b.hP(j);},Cns=(a,b)=>{return Cs(AR0(a.bXP,b),IA(a.bHr.a32(b)));},Ckj +=(a,b)=>{return Cs(ADR(a.bXP,a.bHF,b),J7(a.bHF.a32(b)));}; +function CPZ(){let a=this;Dc.call(a);a.cM3=null;a.bRl=null;} +let Dy0=(a,b,c,d)=>{a.bRl=b;Fb(a,c,b.bOv);a.cM3=d;},CiY=(a,b,c)=>{let d=new CPZ();Dy0(d,a,b,c);return d;},DvR=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o;c=b.hE();if(Ew(a.bHr.a32(c))){d=Cs(ADR(a.bRl,a.bHr,c),IA(a.bHr.a32(c)));e=d.bGK;f=d.bGL;g=Dj(a.bRl.bOv,c);h=Cs(AOL(a.bRl,c),BWX(g));i=Cs(AOL(a.bRl,c),ANw(g));j=Cs(AOL(a.bRl,c),AOw(g));if(ei.bGK)){k=((Cr(a.bRl)).a$c()).a$e();DC();l=G_;j=h;}else{k=((Cr(a.bRl)).a$c()).bEq();DC();l=FL;j=i;}m=j.bGK;n=j.bGL;c= +D8(Cr(a.bRl),a.bRl.bZt,k);d=a.cM3;Fa();o=AMR(c,d,Hg);Ci(o,e,f);DC();if(!(l===FL&&m>e-10.0))Ci(o,e,n);else{f=n-8.0;Ci(o,e,f);e=e+12.0;Ci(o,e,f);Ci(o,e,n);}Ci(o,m,n);b.hP(o);return;}}; +function DeS(){let a=this;Dc.call(a);a.cPJ=null;a.bYE=null;} +let DJC=(a,b)=>{let c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;c=b.hE();d=Cs(ADR(a.bYE,a.bHr,c),IA(a.bHr.a32(c)));e=Dj(a.bYE.bOv,c);f=AOL(a.bYE,c);g=Cs(f,BWX(e));Cs(f,ANw(e));h=Cs(f,AOw(e));i=Dj(a.bYE.bMC,c);j=AR0(a.bYE,c);k=Cs(j,ANw(i));Cs(j,BPu(i));l=Cs(j,AOw(i));m=d.bGK;n=d.bGL;o=g.bGK;p=g.bGL;q=(n+p)/2.0;e=Cr(a.bYE);d=a.bYE;c=D8(e,d.bZt,((Cr(d)).a$c()).a$e());d=a.cPJ;Fa();r=AMR(c,d,Hg);if(!(!(mk.bGK+10.0))){Ci(r,m,n);Ci(r,m,h.bGL);}else{Ci(r,m,n);Ci(r,m,q);Ci(r,o,q);Ci(r,o,p);}b.hP(r);}; +function B_r(){Dc.call(this);this.bWZ=null;} +let E03=(a,b)=>{return;},ENT=(a,b,c,d)=>{let e,f,g,h,i,j,k,l,m;e=b.hE();f=Cs(c,Cs(ADR(a.bWZ,a.bHr,e),IA(a.bHr.a32(e))));g=Cs(d,Cs(AOL(a.bWZ,e),J7(a.bHF.a32(e))));h=Dj(a.bWZ.bOv,e);if(!(f.bGK>g.bGK)){i=((Cr(a.bWZ)).a$c()).bEr();DC();j=Gy;}else{i=((Cr(a.bWZ)).a$c()).bEq();DC();j=FL;}k=D8(Cr(a.bWZ),a.bWZ.bZt,i);Dv(k,f);l=f.bGK;m=g.bGL;c=h;Ci(k,l,m+c.bGF/2.0);DC();if(j!==FL)Ci(k,g.bGK-c.bGE/2.0,g.bGL+c.bGF/2.0);else Ci(k,g.bGK+c.bGE/2.0,g.bGL+c.bGF/2.0);b.hP(k);}; +function Csk(){let a=this;F.call(a);a.cke=null;a.cA5=null;} +function CNK(){let a=this;F.call(a);a.cTS=null;a.cXg=0.0;a.c4W=null;a.cPA=0.0;} +FhJ([-1,"com",0,"jcraft",1,"jzlib",-1,"gen",3,"lib",4,"pathplan",-1,"java",6,"util",7,"zip",7,"regex",6,"nio",10,"charset",6,"io",6,"time",13,"zone",13,"temporal",6,"net",6,"lang",-1,"net",18,"sourceforge",19,"plantuml",20,"code",20,"nwdiag",20,"brotli",20,"dot",20,"wbs",20,"gantt",26,"lang",26,"command",20,"classdiagram",29,"command",20,"nio",20,"teavm",32,"js",20,"timingdiagram",34,"command",20,"json",20,"tim",20,"klimt",38,"shape",38,"color",38,"creole",41,"legacy",20,"statediagram",43,"command",20,"yaml", +45,"parser",20,"salt",20,"sequencediagram",48,"command",20,"activitydiagram",50,"command",20,"descdiagram",52,"command",20,"objectdiagram",54,"command",20,"version",20,"command",57,"note",58,"sequence",20,"core",20,"activitydiagram3",61,"ftile",62,"vertical",62,"vcompact",64,"cond",61,"command",20,"style",67,"parser",20,"ebnf",20,"packetdiag",70,"command",20,"mindmap",20,"chart",73,"command",20,"fun",20,"regexdiagram",20,"svek",20,"preproc",18,"atmp"]); +Em([F,0,0,[],1,0,0,["dp",G(EgA),"cx",M(BUK),"p",G(JH)],ET,0,F,[],1537,0,0,0,F1,0,F,[],1537,0,0,0,KH,0,F,[],1537,0,0,0,Bi,0,F,[ET,F1,KH],17,0,()=>Pu(),["u",M(Bn),"bL",G(GB),"rL",W(E6U),"p",G(D06),"cx",M(Bj),"dp",G(FP),"rl",M(D3c)],Lp,0,F,[ET],1025,0,0,0,AAa,0,Lp,[F1],1,0,()=>OX(),["pB",G(FJ),"v1",G(DO$),"v0",G(DZc),"p",G(EIO),"dp",G(Fg5),"cx",M(DXr),"rl",M(Foj)],ANF,0,F,[ET,KH],0,0,0,["bx",M(BGd),"p",G(Q)],AUZ,0,F,[],1537,0,0,0,S,0,ANF,[AUZ],1,0,0,["bN",Bu(Ekl),"bO",BF(Dw3),"bK",Bu(DS0),"bM",BF(Ew3),"u",M(FuO), +"bL",G(AMP),"p",G(CH),"bx",M(EA7),"bH",W(Elb),"bw",W(FgB)],Gt,0,F,[],1,0,0,["bW",G(CfF),"B6",G(B79),"p",G(AC1)],Dt,0,Gt,[],1,0,0,0,DR,"RuntimeException",17,Dt,[],1,0,0,0,A6L,0,F,[],1025,0,0,0,EHB,0,A6L,[],17,0,0,0,DF7,0,A6L,[],17,0,0,0,CEn,0,F,[],1537,0,0,0,CSX,0,F,[CEn],1537,0,0,0,CDS,0,F,[],1537,0,0,0,AXF,0,F,[CSX,CDS],17,0,0,["p",G(ST)],C4t,0,F,[],1,0,()=>AKl(),0,DLC,0,F,[],17,0,0,0,EN2,0,F,[],17,0,0,0,DEQ,0,F,[],17,0,0,0,OW,0,F,[],1537,0,0,0,CUh,0,F,[OW],1,0,0,0,AVo,0,F,[F1],1,0,()=>Fr(),["p",G(Ell),"cx", +M(DWM),"dp",G(Fu6),"rl",M(Fg7)],BGF,0,F,[],1537,0,0,["gQ",M(Cs4),"jm",W(Cb2)],B23,0,F,[BGF],1,0,()=>AZ_(),["gS",W(CvD),"jm",W(Fde),"gQ",M(FxC)],Fut,0,F,[],17,0,0,0,BAA,0,F,[],17,0,0,["dp",G(EtO),"cx",M(EZi),"p",G(Faq)],Re,0,F,[],1537,0,0,0,D_m,0,F,[Re],1025,0,0,0,A3v,0,F,[],1025,0,0,["dB",M(EZ4)],BK8,0,A3v,[],16,0,0,["dB",M(FmG),"dH",G(DBs),"dL",G(FoG),"dM",M(Eys)],CMu,0,F,[],17,0,()=>AP9(),0,CxW,0,A3v,[],16,0,0,["dH",G(Fqq),"dL",G(Fcn),"dM",M(ECk)],EN,"IndexOutOfBoundsException",17,DR,[],1,0,0,0,Xt,"ClassCastException", +17,DR,[],1,0,0,0,AIP,0,F,[],1537,0,0,0,OQ,0,F,[AIP],1025,0,0,["j",G(AQI),"dU",W(Dy5),"p3",G(BEO),"cx",M(Eey),"dp",G(Ed3),"p",G(B7I)],Iu,0,F,[],1537,0,0,0,AGk,0,OQ,[Iu,ET],1,0,0,["d5",M(EQk),"ep",G(BzN),"dQ",M(NB),"dW",G(Ty),"dR",M(DG),"j",G(ATn),"p3",G(AUM),"dU",W(AWb),"d7",M(C4W),"p4",M(A7k),"dV",G(CkW),"ve",G(Bf8)],BJt,0,F,[AIP],1537,0,0,0,PR,0,AGk,[BJt],1,0,0,["d7",M(Fc4),"d5",M(E4p),"dR",M(FW),"dU",W(Es),"dW",G(G8),"p3",G(Z$),"ve",G(ED1),"p4",M(CAz),"ek",M(DBI),"ep",G(APR)],C9G,0,PR,[],0,0,0,["ek",M(E_p)],C9F, +0,PR,[],0,0,0,["ek",M(DLu)],Pj,0,F,[],1537,0,0,["UO",M(EM)],A4w,0,F,[Pj],1537,0,0,["UO",M(EM)],QP,0,F,[A4w],1025,0,0,["UO",M(EM),"j",G(HH),"et",M(Nw),"p_",M(BQo),"gt",M(Ea),"p",G(B7M)]]); +Em([AST,0,F,[A4w],1537,0,0,["UO",M(EM)],BrA,0,F,[AST],1537,0,0,["UO",M(EM)],Tq,0,QP,[BrA],1025,0,0,["UO",M(EM),"g",M(Fb6),"dX",G(Br),"yq",W(EEs),"dC",W(E8e),"eu",W(EYj),"dK",M(Fsa),"ep",G(CTM),"lT",G(Elv),"ew",M(Epl),"ev",W(FrL),"dp",G(D_z),"cx",M(NI)],XH,0,F,[],1537,0,0,0,Tp,0,Tq,[Iu,ET,XH],1,0,0,["cf",M(Be),"dV",G(Hn),"dC",W(GJ),"g",M(U),"eu",W(Ik),"dK",M(EJ),"ep",G(TD),"yq",W(DLS),"ev",W(DOo),"UO",M(Dkz),"p",G(AFN),"dp",G(A2c)],ARM,0,F,[Re],1537,0,0,0,B6z,0,F,[ARM],1,0,0,0,Bt,"IllegalArgumentException",17, +DR,[],1,0,0,0,Vk,0,F,[],1537,0,0,0,AE_,0,F,[Vk,Iu],0,0,0,["cx",M(EOk),"d0",G(BcU),"d1",G(BeJ),"dp",G(Ebf),"p",G(E5U)],A1q,0,AE_,[],0,0,0,0,BJw,0,A1q,[],16,0,0,0,C6J,0,F,[],17,0,()=>NU(),0,BW3,0,F,[ARM],1,0,0,0,D4U,0,F,[],1,0,0,0,Bq0,0,F,[],16,0,0,["p",G(DEo)],CwH,0,F,[],16,0,0,0,B0V,0,F,[ARM],0,0,0,0,BEY,0,F,[ARM],1,0,0,0,BEV,0,F,[ARM],1,0,0,0,DcV,0,F,[Re],1537,0,0,0,BEX,0,F,[DcV],1,0,0,0,BWs,0,F,[],17,0,0,0,BHA,0,F,[Re],1537,0,0,0,BEZ,0,F,[BHA],1,0,0,0,Eb9,0,F,[],17,0,0,0,BEU,0,F,[BHA],1,0,0,0,D_K,0,F,[],17, +0,0,0,Fnh,0,F,[],17,0,0,0,DKP,0,F,[],1,0,0,0,CX$,0,F,[Re],1537,0,0,0,Dnq,0,F,[CX$],1537,0,0,0,DnN,0,F,[Re],1537,0,0,0,Fus,0,F,[Dnq,DnN],1025,0,0,0,Cei,0,F,[],1,0,()=>ALT(),0,Ie,0,F,[],1537,0,0,0,Di1,0,F,[Ie],0,0,0,["dY",G(Bq),"dZ",G(Bm)],ET1,0,F,[],17,0,0,0,EG1,0,F,[],1,0,0,0,CRJ,0,F,[],1,0,0,0,EEv,0,F,[],17,0,0,0,Qb,0,F,[],1025,0,()=>AAi(),0,ACa,"PSystemBuilderJs",33,F,[],1,[0,0,0],()=>BAa(),0,CAU,0,F,[ET],17,0,0,0,Bx,0,F,[F1,ET],1025,0,0,["p",G(HT),"cx",M(BbM),"dp",G(E$B),"rl",M(EAN)],A2a,0,Bx,[],65553,0, +()=>AJb(),0,BmV,0,F,[],1537,0,0,0,Cnk,0,F,[BmV],1537,0,0,0,BN4,0,F,[Cnk],1025,0,0,["m5",G(DJA),"m6",G(EAb),"m7",G(DUS),"m9",BF(E9e),"mJ",G(Er$),"m8",M(EgF),"cB",G(Fcy)],Pn,0,BN4,[],1025,0,0,["cD",G(CLG)]]); +Em([C9v,0,F,[],1537,0,0,0,CHV,0,F,[],1537,0,0,0,H3,0,Pn,[C9v,CHV],1025,0,()=>Bc9(),["cD",G(Dz8),"nA",M(D2d),"Nw",W(DXN),"Nb",M(D5W),"cB",G(CU_),"MU",M(E8n)],Yf,0,F,[],1537,0,0,0,Np,0,F,[Yf],1025,0,0,["gw",M(El4),"xn",M(DV1),"w4",M(DNJ),"xw",G(D3q),"xv",G(E_X),"uW",G(EEf),"oB",G(EG5),"lF",M(DJk),"lm",M(EcF),"uV",G(DAi),"gv",G(Ecw)],DfC,0,F,[],1,0,()=>Go(),0,APS,0,F,[],1537,0,0,0,AWC,0,F,[APS],1025,0,0,["hK",G(Fht),"h2",M(Fix),"gy",G(BXu),"hE",G(Foi),"g7",G(DfQ),"hJ",G(EYv)],Bsz,0,AWC,[],1025,0,()=>Blf(),["hP", +M(EvV)],CvU,0,F,[],1537,0,0,0,Bsr,0,Bsz,[CvU],1,0,()=>AQa(),["hH",M(DXt),"hI",G(EPr),"hF",M(Fm9),"hG",G(EOb),"gQ",M(CoE)],BFK,"DiagramChromeFactory",60,F,[],17,[0,0,0],()=>A3o(),0,NE,0,F,[APS],1025,0,0,["p",G(Ex1),"gQ",M(Eon),"hE",G(Im),"gy",G(DDJ),"g7",G(E1A),"hF",M(DxW),"hG",G(EK9),"hH",M(BxS),"hI",G(Bf4),"hJ",G(BLb),"hK",G(Flg)],C9p,0,NE,[APS],1,0,0,["hP",M(E0j),"h2",M(EIP)],F2,"NullPointerException",17,DR,[],1,0,0,0,DsZ,"NegativeArraySizeException",17,DR,[],1,0,0,0,AVa,0,Lp,[F1],1,0,()=>V6(),["pB",G(EtM), +"v1",G(Cs1),"v0",G(D9x),"p",G(EHv),"dp",G(DYB),"cx",M(D8E),"rl",M(FqN)],CHI,0,F,[],1,0,0,0,Ht,0,F,[],1537,0,0,0,N3,0,F,[],1537,0,0,["g3",G(Bs)],C1,0,F,[Ht,N3],1537,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],CZ5,0,F,[],1537,0,0,0,B3u,0,F,[CZ5,ET],1,0,0,0,LU,0,F,[],1,0,0,["p",G(EQn)],A4d,0,F,[],1537,0,0,0,ZZ,0,F,[A4d],1537,0,0,0,BtP,0,F,[],1537,0,0,0,CLP,0,F,[ZZ,BtP],17,0,0,0,CQo,0,Qb,[],0,0,0,["iW",M(EYD)],CQn,0,Qb,[],0,0,0,["iW",M(Eg5)],CQq,0,Qb,[],0,0,0,["iW",M(EBu)],CQp,0,Qb,[],0,0,0,0,CQl,0,Qb,[], +0,0,0,0,CQk,0,Qb,[],0,0,0,["iW",M(EJE)],CQm,0,Qb,[],0,0,0,0,Doz,0,PR,[],0,0,0,["ek",M(E2d)],DoC,0,PR,[],0,0,0,["ek",M(Fb$)],C1c,0,F,[],17,0,()=>B8(),0,AJe,0,Bx,[],65553,0,()=>F8(),0,ADV,0,F,[],17,0,0,["cx",M(B5Q),"dp",G(DG8),"p",G(DU9)],RY,0,Bx,[],65553,0,()=>B9(),0,BuT,0,F,[],1,0,()=>AG1(),0,DYf,0,F,[],17,0,0,0,CwX,0,F,[],0,0,()=>ARy(),0,DW8,0,F,[Re],1,0,0,0,B7P,0,F,[],1,0,()=>ALd(),0,AL9,"HColorSimple",40,Np,[],1,[0,0,0],()=>AFe(),["p",G(DOs),"oB",G(B2V),"cx",M(DDB),"dp",G(Eja),"xn",M(DzH),"w4",M(Dxa),"xw", +G(EpX),"xv",G(D6_),"uW",G(DwV),"gv",G(BrI),"gw",M(DyW),"uV",G(FqP),"lm",M(AFv)],C$p,0,F,[N3],1537,0,0,["g3",G(Bs)],Xm,0,F,[C$p],1025,0,0,["g3",G(Bs)],BpC,0,F,[N3],1537,0,0,["g3",G(Bs)]]); +Em([A2u,0,F,[N3],1537,0,0,["g3",G(Bs)],ZC,"URectangle",39,Xm,[BpC,A2u],1,0,0,["bAd",W(Emh),"bAc",M(DPm),"g3",G(EFN)],Tf,0,F,[],1537,0,0,0,C8o,0,F,[Tf],1,0,0,["g6",function(b,c,d,e,f,g){Eq4(this,b,c,d,e,f,g);}],SA,"ULine",39,Xm,[BpC],1,0,0,["g3",G(DWZ)],Csm,0,F,[Tf],1,0,0,["g6",function(b,c,d,e,f,g){E$b(this,b,c,d,e,f,g);}],AAf,"UPolygon",39,Xm,[],1,0,0,["g3",G(E1P)],CS6,0,F,[Tf],1,0,0,["g6",function(b,c,d,e,f,g){Er0(this,b,c,d,e,f,g);}],ACp,"UEllipse",39,Xm,[BpC],1,0,0,["g3",G(D7P)],CzB,0,F,[Tf],1,0,0,["g6", +function(b,c,d,e,f,g){DSz(this,b,c,d,e,f,g);}],Ym,"UText",39,F,[N3],1,0,()=>BgU(),["g3",G(EcN)],CtU,0,F,[Tf],1,0,0,["g6",function(b,c,d,e,f,g){ETa(this,b,c,d,e,f,g);}],ADr,"UPath",38,Xm,[Pj,A2u],1,0,0,["UO",M(EM),"bAd",W(EN0),"bAc",M(E3U),"g3",G(Eo9)],CRP,0,F,[Tf],1,0,0,["g6",function(b,c,d,e,f,g){DxL(this,b,c,d,e,f,g);}],NR,"UImage",39,F,[C1],1,0,0,["yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(Ffh),"cF",M(Eko),"g3",G(EY6)],ClJ,0,F,[Tf],1,0,0,["g6",function(b,c,d,e,f,g){EDT(this,b,c,d,e,f,g);}],AMv,"UImageSvg", +39,F,[N3],1,0,()=>A4F(),["g3",G(EkQ)],C7o,0,F,[Tf],1,0,0,["g6",function(b,c,d,e,f,g){D8A(this,b,c,d,e,f,g);}],ARf,0,F,[],1537,0,0,0,AHP,"DotPath",39,F,[N3,ARf],1,0,()=>AXQ(),["g3",G(DKu)],CFg,0,F,[Tf],1,0,0,["g6",function(b,c,d,e,f,g){Ehu(this,b,c,d,e,f,g);}],APT,"UCenteredCharacter",39,F,[N3],1,0,0,["g3",G(DUX)],CPc,0,F,[Tf],1,0,0,["g6",function(b,c,d,e,f,g){E$V(this,b,c,d,e,f,g);}],AUq,"UPixel",39,F,[N3],1,0,0,["g3",G(E4a)],CmC,0,F,[ET],17,0,0,0,E1e,0,F,[],1,0,0,0,A7Y,0,F,[],1,0,0,["dp",G(DO3),"cx",M(Cvm), +"p",G(DKn)],CNu,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],Dpv,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"cC",M(DLg),"cF",M(CX0),"co",G(EXy)],BDJ,0,F,[],1,0,0,0,AJM,0,F,[],1537,0,0,0,ABj,0,F,[Pj,AJM],1,0,()=>HW(),["UO",M(EM),"dp",G(DHH),"cx",M(EDc),"p",G(YE)],A7D,0,Bx,[],65553,0,()=>B3(),0,Er,0,F,[C1],1025,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cF",M(De)],CrT,0,Er,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(DJV)],Dpw,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS), +"a9W",G(BK),"cC",M(EMr),"cF",M(Fwu),"co",G(EtS)],BiP,0,F,[],1,0,()=>ATR(),0,AOM,0,Bx,[],65553,0,()=>Hb(),0,DGK,0,F,[],1,0,0,0,CQt,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"cC",M(EVb),"co",G(E2G),"cF",M(CYi)],Bzy,0,F,[],1,0,()=>Jo(),0,I1,0,Bx,[],65553,0,()=>Fs(),0,AOX,0,F,[Iu,ET],17,0,()=>RX(),["cx",M(EPB),"dp",G(Fe9)],CYQ,0,F,[],1537,0,0,["fN",Bu(Bl3)],WX,0,F,[CYQ],1025,0,0,["fN",Bu(Bl3)],HU,0,WX,[],1025,0,0,["fN",Bu(EmZ),"fK",Bu(DCe)],Cp$,"SequenceDiagramFactory",48,HU,[],1,[0,0,0],0,["mQ",M(Efy), +"mG",Bu(EOO)],CN5,"ClassDiagramFactory",29,HU,[],1,[0,0,0],0,["mQ",M(D4p),"mG",Bu(DOw)],CEX,"ActivityDiagramFactory",50,HU,[],1,[0,0,0],0,["mQ",M(FnA),"mG",Bu(EJl)],COo,"DescriptionDiagramFactory",52,HU,[],1,[0,0,0],0,["mQ",M(Eel),"mG",Bu(Fhw)]]); +Em([Dj1,"StateDiagramFactory",43,HU,[],1,[0,0,0],0,["mQ",M(EGu),"mG",Bu(E5$)],CmG,"ActivityDiagramFactory3",61,HU,[],1,[0,0,0],0,["mQ",M(D4B),"mG",Bu(DAH)],B8q,0,WX,[],1025,0,0,["fN",Bu(D6I),"fK",Bu(Exk)],CHa,0,B8q,[],1,0,0,0,Cn5,"PSystemSaltFactory",47,HU,[],1,[0,0,0],0,["mQ",M(DZW),"mG",Bu(E$i)],CVq,"GanttDiagramFactory",26,HU,[],1,[0,0,0],0,["mQ",M(DtJ),"mG",Bu(EHY)],Ccs,"MindMapDiagramFactory",72,HU,[],1,[0,0,0],0,["mQ",M(DU3),"mG",Bu(Dui)],C48,"WBSDiagramFactory",25,HU,[],1,[0,0,0],0,["mQ",M(Edt),"mG", +Bu(Fpt)],Deh,"NwDiagramFactory",22,HU,[],1,[0,0,0],0,["mQ",M(DV0),"mG",Bu(FtM)],BZu,0,WX,[],1025,0,0,["fN",Bu(DGn),"fK",Bu(EUs)],Czw,0,BZu,[],1,0,0,0,Ce8,"TimingDiagramFactory",34,HU,[],1,[0,0,0],0,["mQ",M(EsO),"mG",Bu(E3j)],CZw,"ChartDiagramFactory",73,HU,[],1,[0,0,0],0,["mQ",M(EF7),"mG",Bu(FtK)],CWs,"PacketDiagramFactory",70,HU,[],1,[0,0,0],0,["mQ",M(EAZ),"mG",Bu(EeI)],CR0,0,WX,[],1,0,0,["fN",Bu(Bl3),"fK",Bu(Fp_)],Cg4,0,WX,[],1,0,0,["fN",Bu(Bl3),"fK",Bu(D3B)],Cvo,"PSystemEbnfFactory",69,HU,[],1,[0,0,0],0, +["mQ",M(E92),"mG",Bu(EhG)],Cym,"PSystemRegexFactory",76,HU,[],1,[0,0,0],0,["mQ",M(Ds_),"mG",Bu(DR1)],Cn,0,Bx,[],65553,0,()=>CV(),0,Vl,0,F,[F1],17,0,()=>ASL(),["cx",M(EoZ),"dp",G(Fi2),"p",G(EEM),"rl",M(Ehe)],AYz,0,F,[Pj],17,0,()=>Btj(),["UO",M(EM),"p",G(Egx)],B1V,0,F,[],1537,0,0,0,C2p,0,F,[B1V],1,0,0,["MF",G(CQG)],Ob,0,F,[],1,0,0,["p",G(D0G)],A3u,0,Bx,[],65553,0,()=>AVh(),0,A4K,0,Bx,[],65553,0,()=>Nx(),0,Baz,0,F,[],1,0,()=>AAw(),["dp",G(EMv),"cx",M(E3g)],AG3,0,F,[Yf],1,0,0,["dp",G(DMY),"cx",M(Elw),"p",G(Fk4)],AVP, +0,OQ,[ET,Iu],1,0,0,["dV",G(E8a),"dQ",M(BXr),"dR",M(M7),"dW",G(Yl),"ve",G(C$A),"dU",W(Po)],A68,0,Bx,[],65553,0,()=>Fa(),0,Ctt,0,F,[],1,0,()=>BwC(),0,CYz,0,F,[],0,0,0,0,Dd,"IOException",12,Dt,[],1,0,0,0,BP,"IllegalStateException",17,DR,[],1,0,0,0,Dh2,"FormatterClosedException",7,BP,[],1,0,0,0,BqV,"CloneNotSupportedException",17,Dt,[],1,0,0,0,AYn,0,F,[A4w],1537,0,0,["UO",M(EM)],If,0,QP,[AYn],1025,0,0,["UO",M(EM),"cx",M(BG_),"dp",G(B9M)],BJ0,0,If,[Iu,ET],1025,0,0,["UO",M(EM)],EyD,0,F,[Re],1025,0,0,0,BTb,0,F,[Re], +1536,0,0,0,BBC,0,F,[BTb],1,0,0,0,BBB,0,F,[BTb],1,0,0,0,CLR,0,F,[Tf],0,0,0,["g6",function(b,c,d,e,f,g){EMe(this,b,c,d,e,f,g);}],AQJ,0,Bx,[Yf],65553,0,()=>BuD(),0,FG,0,F,[Yf],1,0,0,["p",G(DEg)],Io,0,F,[],1024,0,()=>A0w(),["rt",BF(A$f),"rs",Bu(A6Z),"kP",G(Fjn),"p",G(D$f),"kv",M(EH1),"kN",M(DVX),"pP",G(E0k),"kj",G(Boj)],Bty,0,F,[],1,0,()=>Bue(),["cx",M(EcZ),"dp",G(DZ1),"p",G(DxX)],BOl,0,F,[],17,0,0,["dp",G(CFO)],A_q,0,Bx,[],65553,0,()=>AHr(),0]); +Em([BWL,0,F,[],1,0,()=>A15(),0,AG0,"StringIndexOutOfBoundsException",17,EN,[],1,0,0,0,A6I,0,Bx,[],65553,0,()=>Ed(),0,JK,0,F,[],17,0,0,["cx",M(EOY),"dp",G(FcZ)],BUc,0,F,[],1,0,()=>A$6(),0,AH5,0,Bx,[],65553,0,()=>CM(),0,Eu5,0,F,[],17,0,0,0,EgL,0,F,[],16,0,0,0,AIb,0,If,[Iu,ET],1,0,0,["UO",M(EM),"g",M(EQ),"et",M(PT),"j",G(A6V),"dX",G(Ro),"pK",M(Fvw),"dV",G(AFU)],C2S,0,F,[AIP],1537,0,0,0,CHf,0,OQ,[C2S,Iu,ET],1,0,0,0,Bka,0,F,[],17,0,()=>AVe(),["p",G(EDF)],ANj,0,BJ0,[],0,0,0,["UO",M(EM),"dX",G(P2),"dV",G(Ba3),"cx", +M(CBb),"et",M(OS),"pK",M(C07),"p_",M(Efz),"g",M(OJ)],BkN,"ArrayStoreException",17,DR,[],1,0,0,0,Bow,0,F,[N3],1,0,0,["g3",G(Bs)],M1,0,F,[C1],1537,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],IT,0,Er,[M1],1025,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"bkY",G(EMs)],Qf,"AtomText",42,IT,[M1],17,0,0,["yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(EcO),"cC",M(EEu),"bkY",G(Fcx),"a0M",M(DtS),"p",G(Ee8),"g3",G(EKK)],R6,0,Io,[],0,0,()=>AOP(),["pN",BF(E3M),"bX",G(D3$),"sb",M(EvD)],Cek,0,F,[],0,0,0,0,AQT,"PatternSyntaxException", +9,Bt,[],1,0,0,["bW",G(ErQ)],A0d,0,Bx,[],65553,0,()=>ABZ(),0,BpY,0,F,[],1,0,()=>ByJ(),["dp",G(EC5),"cx",M(Dk_)],MX,0,F,[],1537,0,0,0,DkQ,0,F,[MX],1,0,0,["dT",M(DtG)],AIL,0,Bx,[],65553,0,()=>Lx(),0,BfO,0,F,[],1,0,0,["p",G(FpA)],BER,0,F,[],1,0,0,0,B04,0,F,[OW],1,0,()=>Byw(),["fc",W(Cj2)],CxL,0,R6,[],0,0,0,["pN",BF(EdJ),"bX",G(Fkh),"sb",M(Fs5)],Dsj,0,R6,[],0,0,0,["pN",BF(DMf),"bX",G(DPJ)],Cap,0,R6,[],0,0,0,["pN",BF(E4w),"bX",G(FuP)],CTp,0,R6,[],0,0,0,["pN",BF(EdW),"bX",G(D$X),"sb",M(EVj)],APt,0,R6,[],0,0,0,["pN", +BF(EIg),"bX",G(ENr)],KA,0,Io,[],1024,0,0,["pN",BF(DXF),"ro",G(EX0),"sb",M(EAg)],CBw,0,KA,[],0,0,0,["rp",W(EXj),"rt",BF(DNN),"rs",Bu(DL5),"bX",G(E8l),"sb",M(ELI)],JI,0,Io,[],0,0,0,["pN",BF(Ey2),"kv",M(FaP),"bX",G(Dz1),"kN",M(FoS),"sb",M(EFg),"kj",G(Dv3)],BBb,0,JI,[],0,0,0,["pN",BF(D8u),"bX",G(DA8),"sb",M(FsI)],YY,0,BBb,[],0,0,0,["pN",BF(FkE),"kv",M(DTN),"bX",G(Dt6)],Dig,0,YY,[],0,0,0,["pN",BF(D8C),"sb",M(DGA),"bX",G(ErT)],CLY,0,YY,[],0,0,0,["pN",BF(Dvd),"sb",M(DVq),"bX",G(DyD)],Dl3,0,YY,[],0,0,0,["pN",BF(E48), +"sb",M(FxH),"bX",G(Faj)],CT7,0,YY,[],0,0,0,["pN",BF(Ec4),"sb",M(Eo3),"bX",G(EvZ)],AQk,0,JI,[],0,0,0,["pN",BF(DZa),"rt",BF(D6t),"rs",Bu(Fs9),"kN",M(FoD),"pP",G(Frm),"kj",G(FfB)],C7O,0,F,[],17,0,()=>Le(),0,Cga,0,PR,[],0,0,0,["ek",M(EqT)],Cem,0,F,[],1537,0,0,0,BIe,0,F,[Cem],1,0,()=>A4c(),0,Cvt,0,F,[],0,0,0,0,BYk,"IllegalMonitorStateException",17,DR,[],1,0,0,0]); +Em([Dho,0,F,[BJt],1537,0,0,0,CtF,0,F,[Dho],1537,0,0,0,A_7,0,OQ,[Iu,ET,CtF],1,0,0,["dU",W(Qm),"dQ",M(CLb),"dW",G(UA),"dV",G(APY)],B$c,0,Tq,[XH,ET],0,0,0,["UO",M(EM),"cf",M(UF),"dC",W(DDr),"dV",G(Bkb)],BNl,0,F,[],1537,0,0,0,CnH,0,F,[BNl],17,0,0,0,BC3,0,F,[ET],1,0,0,0,B1E,0,F,[],1,0,0,0,Eo,0,F,[],1537,0,0,0,Ck8,0,F,[Eo],1,0,0,["pS",G(ENy)],A7y,0,F,[],1024,0,0,0,DU,0,A7y,[],1024,0,()=>ATA(),["rY",G(DLh),"rW",G(EL6),"sg",G(EXQ),"la",G(DXa)],BOe,"MissingResourceException",7,DR,[],1,0,0,0,BCc,0,DU,[],0,0,0,["rX",M(SM), +"rY",G(Sa),"rW",G(EPc),"sg",G(Fd7),"p",G(Emv),"la",G(Dx3)],ADk,0,Io,[],1024,0,0,["kN",M(D$t),"sb",M(Fu9),"kj",G(DBA)],TE,0,ADk,[],0,0,0,["pN",BF(Ec7),"bX",G(DLY)],AJ2,0,TE,[],0,0,0,["pN",BF(EeC),"bX",G(EM1)],TL,0,ADk,[],0,0,0,["pN",BF(ELu),"bX",G(DPj)],ANp,0,TE,[],0,0,0,["pN",BF(Elj),"kv",M(EKx)],CBL,0,TE,[],0,0,0,["pN",BF(E01),"rt",BF(DB9)],C_f,0,OQ,[],0,0,0,["dW",G(E9Q),"dV",G(EuG),"dR",M(DoL)],BiG,0,F,[],1537,0,0,0,Ch1,0,F,[BiG],1,0,0,0,BV3,0,F,[],16,0,()=>Bkw(),0,EI,0,F,[],1024,0,0,0,Ex,"NumberFormatException", +17,Bt,[],1,0,0,0,Cjg,0,A7y,[Iu],0,0,0,["p",G(BZq)],CFj,0,Io,[],0,0,0,["pN",BF(E9G),"bX",G(Fra),"sb",M(EVe)],BRD,0,F,[Iu,ET],1,0,0,0,COk,0,JI,[],0,0,0,["bX",G(EVo)],BLh,0,JI,[],0,0,0,["pN",BF(DZ_),"kv",M(Fq5),"bX",G(FrS),"sb",M(E4F),"kN",M(D0E)],WZ,0,JI,[],0,0,0,["pN",BF(Fk_),"bX",G(ErF),"rX",M(Dyf),"kN",M(DuE),"kv",M(EXM),"sb",M(E61)],BFN,0,WZ,[],0,0,0,["rX",M(D4T),"bX",G(EJv)],CPY,0,KA,[],0,0,0,["rp",W(ESb),"bX",G(EM6)],ACg,0,KA,[],0,0,0,["rp",W(BFz),"bX",G(EAW),"kN",M(DDa)],BGy,0,JI,[],0,0,0,["kv",M(E$N), +"bX",G(Fcg),"pN",BF(DYH),"kN",M(EM$),"sb",M(EHP)],ACu,0,KA,[],0,0,0,["ro",G(ERO),"rp",W(Ezh),"rt",BF(D2H),"rs",Bu(EAB),"bX",G(Eai),"kN",M(EHC)],CCl,0,KA,[],0,0,0,["rp",W(FgT),"bX",G(DSs)],C9l,0,KA,[],0,0,0,["rp",W(DY5),"bX",G(E8s)],AL2,0,JI,[],0,0,0,["kv",M(DXd),"pN",BF(EDU),"bX",G(DSk),"kN",M(DAe),"sb",M(EV8)],Dhc,0,AL2,[],0,0,0,0,DoK,0,AL2,[],0,0,0,0,CDw,0,TL,[],0,0,0,["pN",BF(DMj)],C0_,0,TL,[],0,0,0,["pN",BF(Fp4)],ATo,0,TL,[],0,0,0,["pN",BF(EpO),"kv",M(Erc)],CvA,0,ATo,[],0,0,0,["pN",BF(E9n),"kv",M(EmI)],AJm, +0,TL,[],0,0,0,["pN",BF(DXZ),"bX",G(EaK)],C9V,0,AJm,[],0,0,0,["pN",BF(Dzq)],Cxy,0,TL,[],0,0,0,["pN",BF(FfU)],Dlm,0,ATo,[],0,0,0,["pN",BF(D05)]]); +Em([De4,0,AJm,[],0,0,0,["pN",BF(DJ4)],Ccx,0,ADk,[],0,0,0,["pN",BF(EsG),"rt",BF(D_A),"bX",G(Fr1)],CZX,0,ADk,[],0,0,0,["pN",BF(EEk),"rt",BF(E2h),"bX",G(DUz)],Bau,0,F,[],1024,0,0,0,CsU,0,TE,[],0,0,0,["pN",BF(Duo)],Dge,0,ANp,[],0,0,0,["pN",BF(ECB)],C0p,0,AJ2,[],0,0,0,["pN",BF(Ftc)],Dlf,0,TE,[],0,0,0,["pN",BF(ED$)],C5j,0,ANp,[],0,0,0,["pN",BF(Dux)],CR6,0,AJ2,[],0,0,0,["pN",BF(DUP)],BUg,0,Io,[],16,0,0,["pN",BF(FoI),"sb",M(ERt),"bX",G(ECC)],CvN,0,Io,[],0,0,0,["pN",BF(DLc),"sb",M(DLp),"bX",G(Fxz)],CZS,0,Io,[],0,0,0, +["pN",BF(DzV),"sb",M(DIj),"bX",G(EeN)],BNx,0,Io,[],16,0,0,["pN",BF(DTw),"sb",M(DMa),"bX",G(DQZ)],C7s,0,Io,[],0,0,0,["pN",BF(EUR),"sb",M(EcG),"bX",G(DyL)],CEy,0,Io,[],0,0,0,["pN",BF(ENG),"sb",M(EyM),"bX",G(Fiq)],CgZ,0,JI,[],0,0,0,["pN",BF(EJC),"bX",G(DwU),"kv",M(Efq),"kP",G(EUu),"sb",M(EM_)],B_x,0,JI,[],16,0,0,["pN",BF(FqR),"bX",G(DMi),"kv",M(EWQ),"kP",G(DYk),"sb",M(Eb6)],C6$,0,Io,[],16,0,0,["pN",BF(EAR),"sb",M(Eib),"bX",G(EBB)],Cn6,0,Io,[],0,0,0,["pN",BF(D8n),"sb",M(DN2),"bX",G(DZw)],CDX,0,Io,[],0,0,0,["pN", +BF(EjE),"sb",M(Dwg),"bX",G(DyC)],AXH,0,JI,[],0,0,0,["pN",BF(DZV),"kv",M(Eor),"bX",G(FhR),"sb",M(EFH)],Dq3,0,AXH,[],0,0,0,["pN",BF(EwH),"rt",BF(DGz),"rs",Bu(DZy),"kN",M(ElZ),"bX",G(Eq$)],Cmx,0,AXH,[],0,0,0,["pN",BF(EBM),"bX",G(Efn)],Sj,0,ANF,[AUZ],1,0,0,["bN",Bu(Dx6),"bO",BF(Efe),"bK",Bu(DOp),"bM",BF(DT9),"p",G(Fjj),"bx",M(EfK),"bH",W(Fua),"bw",W(Edi)],C3m,0,KA,[],0,0,0,["rp",W(D15),"rt",BF(Ee2),"rs",Bu(Fl2),"bX",G(DCZ),"kN",M(Dy6)],B9B,0,KA,[],0,0,0,["rp",W(EBW),"bX",G(Dzb)],B$a,0,KA,[],0,0,0,["rp",W(Epm),"bX", +G(DVK)],A0O,0,If,[],1024,0,0,["UO",M(EM)],CA3,0,A0O,[],0,0,0,["UO",M(EM),"dV",G(Ews),"dX",G(DE$),"et",M(FvM),"p_",M(EhL)],BIN,0,OQ,[],1024,0,0,["dU",W(ElG)],CA1,0,BIN,[],0,0,0,["dW",G(Fc$),"dV",G(ERh),"dR",M(EW4),"dQ",M(Fmc)],A11,0,Tq,[XH],1024,0,0,["UO",M(EM),"ep",G(EOn),"dK",M(ECr),"ev",W(Fmi)],CA2,0,A11,[],0,0,0,["UO",M(EM),"cf",M(ECA),"dV",G(D5Y),"dX",G(Exx),"ew",M(EnK),"j",G(E3m)],CAZ,0,F,[Ie],0,0,0,["dY",G(EtT),"dZ",G(Enw)],A_$,0,F,[Ie],1537,0,0,0,CA0,0,F,[A_$],0,0,0,["dY",G(DWs),"dZ",G(E4E),"ey",G(Fn4), +"EP",G(ErU),"qq",G(Fm6),"EO",G(Fxl)],Cfr,0,F,[OW],1,0,0,0,COH,0,F,[],1537,0,0,0,CxZ,0,F,[COH],1,0,0,0,CiU,0,KA,[],0,0,0,["rp",W(D$z),"bX",G(E1o)],BmS,0,JI,[],0,0,0,["kv",M(EU$),"pN",BF(DMb),"rt",BF(D34),"rs",Bu(EOu),"bX",G(EHk),"kN",M(Et0),"sb",M(FdI)],Bm8,0,JI,[],0,0,0,["kv",M(Fjy),"pN",BF(DYX),"rt",BF(FrD),"rs",Bu(D$w),"bX",G(FwJ),"kN",M(D17),"sb",M(DTe)],AAv,0,KA,[],0,0,0,["rp",W(DUa),"rt",BF(Emx),"rs",Bu(DvG),"bX",G(EZs),"kN",M(Fsz)],C6g,0,Bau,[],0,0,0,["sr",M(Ewh),"sv",W(Fb0)],C6h,0,Bau,[],0,0,0,["sr", +M(EXv),"sv",W(DHn)],CAn,0,F,[],0,0,0,0,Bz9,0,EI,[],0,0,0,["sd",G(CH6)],Bl2,0,EI,[],0,0,0,["sd",G(C4c)],CUV,0,EI,[],0,0,0,["sd",G(EWW)]]); +Em([CAY,0,EI,[],0,0,0,["sd",G(D_Q)],CfU,0,EI,[],0,0,0,["sd",G(E6I)],BgC,0,EI,[],0,0,0,["sd",G(B_E)],BdK,0,BgC,[],0,0,0,["sd",G(CRl)],CXY,0,EI,[],0,0,0,["sd",G(DOS)],Bia,0,BdK,[],0,0,0,["sd",G(Dh9)],Cm1,0,Bia,[],0,0,0,["sd",G(D65)],Cc5,0,EI,[],0,0,0,["sd",G(EgB)],C_R,0,EI,[],0,0,0,["sd",G(D6W)],Dj6,0,EI,[],0,0,0,["sd",G(DHr)],Dqj,0,EI,[],0,0,0,["sd",G(DR5)],CX7,0,EI,[],0,0,0,["sd",G(DIW)],CKV,0,EI,[],0,0,0,["sd",G(DzC)],CeN,0,EI,[],0,0,0,["sd",G(DEC)],CV_,0,EI,[],0,0,0,["sd",G(EOe)],CPd,0,EI,[],0,0,0,["sd",G(D2k)],CYE, +0,EI,[],0,0,0,["sd",G(Fwc)],Cqa,0,EI,[],0,0,0,["sd",G(EKI)],CVm,0,EI,[],0,0,0,["sd",G(D5D)],CGZ,0,EI,[],0,0,0,["sd",G(E6w)],Cde,0,EI,[],0,0,0,["sd",G(Fma)],Dhg,0,EI,[],0,0,0,["sd",G(DQi)],C6f,0,EI,[],0,0,0,["sd",G(Fef)],Cb1,0,EI,[],0,0,0,["sd",G(DDS)],CaT,0,EI,[],0,0,0,["sd",G(EDa)],DhY,0,EI,[],0,0,0,["sd",G(DUq)],Bis,0,EI,[],0,0,0,["sd",G(Cc7)],CL2,0,Bis,[],0,0,0,["sd",G(D7n)],C3n,0,Bz9,[],0,0,0,["sd",G(EeY)],Dan,0,Bl2,[],0,0,0,["sd",G(Eza)],C0Q,0,EI,[],0,0,0,["sd",G(D55)],CGH,0,EI,[],0,0,0,["sd",G(Ea0)],B6W, +0,EI,[],0,0,0,["sd",G(Flz)],BPN,0,EI,[],0,0,0,["sd",G(Ds9)],Eul,0,F,[],0,0,0,0,BLD,0,F,[],1537,0,0,0,CmB,0,F,[BLD],0,0,0,["i",M(Bs$),"gh",M(EJt)],CdE,0,F,[BiG],1,0,0,0,B9C,0,F,[A4w],1537,0,0,["UO",M(EM)],B0H,0,F,[B9C,AST],1537,0,0,["UO",M(EM)],B7O,0,QP,[B0H,Iu,ET],1,0,0,["UO",M(EM),"g",M(CCu)],E4J,0,F,[],17,0,0,0,Dqp,0,F,[],1,0,0,0,Be_,0,F,[],1,0,0,0,CAG,0,F,[],1,0,0,0,EiT,0,F,[],17,0,0,0,CiC,0,F,[],1,0,()=>AZu(),0,CD1,"PathSystem",31,F,[],1,[0,0,0],0,0,BNJ,0,F,[],1537,0,0,0,CRB,0,F,[BNJ],1,0,0,0]); +Em([C7t,0,F,[],17,0,()=>TU(),0,BpH,"TimLoader",37,F,[],1,[0,0,0],0,0,X9,0,F,[],17,0,()=>AW$(),["p",G(BI$)],E0G,0,F,[],1,0,0,0,ZB,0,Pn,[],1025,0,()=>BWH(),["cn",W(ECT)],CoB,0,ZB,[],1,0,0,0,BXG,0,F,[],1,0,()=>ALp(),0,BV,"UnsupportedOperationException",17,DR,[],1,0,0,0,ClS,0,QP,[AST],0,0,0,["UO",M(EM),"dV",G(EOR),"dX",G(FvF)],CTS,0,F,[],1,0,()=>B5i(),0,Cph,0,F,[],1,0,0,0,B2K,0,F,[Vk,Iu],0,0,0,["cx",M(Em_),"d0",G(Dtn),"d1",G(EmK),"dp",G(DwO),"p",G(DA2)],BAF,0,B2K,[],0,0,0,0,CWq,0,DU,[],0,0,0,["rX",M(DxO)],CWo,0, +DU,[],0,0,0,["rX",M(DJp)],B_h,0,DU,[],0,0,0,["rX",M(D5Q),"p",G(EP7)],CFs,0,DU,[],0,0,0,["rX",M(EWw)],CFq,0,DU,[],0,0,0,["rX",M(DE6)],CFr,0,DU,[],0,0,0,["rX",M(Ele)],CFv,0,DU,[],0,0,0,["rX",M(Eg1)],CFw,0,DU,[],0,0,0,["rX",M(Ds1)],CFt,0,DU,[],0,0,0,["rX",M(E7Z)],CFu,0,DU,[],0,0,0,["rX",M(E$L)],CFx,0,DU,[],0,0,0,["rX",M(EH5)],CFy,0,DU,[],0,0,0,["rX",M(Egl)],B_f,0,DU,[],0,0,0,["rX",M(E1S)],B_H,0,DU,[],0,0,0,["rX",M(Ey6)],B_d,0,DU,[],0,0,0,["rX",M(E5x)],B_e,0,DU,[],0,0,0,["rX",M(Eia)],B_k,0,DU,[],0,0,0,["rX",M(DzY)],B_c, +0,DU,[],0,0,0,["rX",M(DVD)],B_i,0,DU,[],0,0,0,["rX",M(DLl)],B_j,0,DU,[],0,0,0,["rX",M(DDH)],Nr,"ConcurrentModificationException",7,DR,[],1,0,0,0,CSq,0,F,[F1],1537,0,0,0,B34,0,F,[CSq],1,0,0,["p",G(Dv4),"rl",M(Dvn)],A36,0,F,[],1025,0,0,0,BHe,0,F,[],1537,0,0,0,CyJ,0,A36,[BHe],1,0,0,["uf",M(Bvh),"tO",M(Fgz),"sY",Bu(Bkt),"CT",M(CaM),"L_",G(EYW),"ys",M(E$6)],AT9,"TContext",37,F,[],1,[0,0,0],()=>A3L(),0,Ij,"EaterException",37,Dt,[],1,0,0,["bW",G(Dzo)],C6M,0,F,[],1,0,()=>Bb2(),0,BYr,0,F,[],17,0,()=>AR3(),0,ACj,0,F, +[],1,0,0,["cx",M(D0R),"dp",G(EBj),"p",G(D1R)],AZA,0,Bx,[],65553,0,()=>Yw(),0,DbT,0,F,[],1,0,()=>GO(),0,CRy,0,F,[],1,0,0,0,ASF,0,Lp,[F1],1,0,()=>XY(),["v0",G(Oj),"pB",G(EoC),"v1",G(FlV),"p",G(DKc),"cx",M(C87),"dp",G(A7J),"rl",M(ER2)],C1o,"HColorAutomagic",40,Np,[],0,[0,0,0],0,["lF",M(D6q)],BTc,"HColorScheme",40,Np,[],1,[0,0,0],0,["lF",M(Chp)]]); +Em([DbU,0,F,[],1,0,()=>KO(),0,Ew5,0,F,[],1,0,0,0,OH,0,Bt,[],1,0,0,0,BKP,"UnknownFormatConversionException",7,OH,[],1,0,0,0,DpX,0,F,[BNl],0,0,0,0,CxF,0,F,[],1,0,0,0,ACG,0,F,[F1],1025,0,0,0,BFo,0,ACG,[],1,0,()=>AYC(),0,CSN,0,ACG,[],1,0,0,0,CaE,0,ACG,[],1,0,0,0,CcY,0,ACG,[],1,0,0,0,BCT,0,F,[],1537,0,0,0,ACe,0,F,[BCT],1,0,0,["uc",W(A6c)],BOa,0,F,[],1,0,0,0,Cnv,0,F,[],17,0,()=>BhI(),0,BXO,0,F,[BmV],1,0,0,0,T5,0,F,[ET],1025,0,()=>BLR(),["xe",G(FfY),"ul",G(Etu),"uj",G(ERD),"ui",G(D7f),"xg",G(DwL),"a5V",G(EjC),"bzo", +G(EAQ),"gm",G(DJi),"xk",G(Fir),"xm",G(EPu),"oB",G(FnI),"p",G(E6V),"vr",G(EEB)],Su,"JsonObject",36,T5,[Pj],1,[0,0,0],0,["UO",M(EM),"vr",G(FlG),"vl",M(Eeo),"xe",G(EQB),"xk",G(DVH),"dp",G(FlH),"cx",M(Ebj)],ADt,0,F,[APS],1025,0,0,["hF",M(Fp6),"hH",M(Eth),"hG",G(D70),"hI",G(E9v),"hK",G(EeS),"gy",G(D4s),"hE",G(Ffg),"hJ",G(D1j),"gQ",M(E3b)],CKM,0,ADt,[],17,0,0,["h2",M(Dp7),"gQ",M(Ewy),"hP",M(Ero),"g7",G(DYE)],Bg8,0,F,[],1,0,()=>A9I(),0,APg,"HColorGradient",40,Np,[],1,[0,0,0],0,["gw",M(Er_),"uV",G(EUW)],BFR,0,F,[], +1537,0,0,0,DeT,0,F,[BFR],1,0,0,0,CNZ,"DuplicateFormatFlagsException",7,OH,[],1,0,0,0,A28,0,F,[ET,F1],1,0,()=>Rr(),["p",G(EDq),"dp",G(DTr),"cx",M(D7A),"rl",M(DMS)],ChU,"IllegalFormatPrecisionException",7,OH,[],1,0,0,0,AJy,0,Lp,[F1],1,0,()=>BWn(),0,A8c,0,Lp,[F1],1,0,()=>Dlg(),0,Cmm,"IllegalFormatCodePointException",7,OH,[],1,0,0,0,COj,"IllegalFormatConversionException",7,OH,[],1,0,0,0,BSH,0,F,[Iu],1,0,0,0,A6k,0,F,[ET,Iu],1025,0,0,0,BFT,0,A6k,[],1025,0,0,0,A6_,0,BFT,[],1,0,()=>AXv(),["vS",BF(EXG)],Cct,0,F,[],1537, +0,0,0,BRP,0,Lp,[F1],1,0,()=>Bo5(),0,QI,0,Lp,[F1,ET],1,0,()=>MN(),0,CgE,0,F,[],1,0,()=>ANZ(),0,B4K,0,Tq,[],1025,0,0,["UO",M(EM),"cf",M(EGj),"dC",W(D1F),"eu",W(D9z),"dK",M(DJw),"yq",W(Ey9),"dX",G(C$4)],A3E,0,B4K,[B0H,Iu],1,0,0,["UO",M(EM),"dV",G(FsA),"ep",G(Er9),"lT",G(Cew),"ew",M(AQE)],Ca6,0,F,[],1,0,0,0,ARd,0,F,[AST,AYn],1537,0,0,["UO",M(EM)],DaM,0,AIb,[ARd,Iu,ET],1,0,0,["UO",M(EM)],CvV,0,F,[],0,0,0,0,Do8,0,F,[],1,0,0,0,B5K,0,F,[],1537,0,0,0,B49,0,F,[B5K],1,0,()=>AF$(),["vP",M(FlL)],CdB,0,F,[],1537,0,0,0,AQ4, +0,F,[CdB],1,0,0,0]); +Em([AJF,0,F,[],1537,0,0,0,CII,0,F,[AJF],1,0,0,["vO",M(DSo)],CKr,0,F,[BFR],1,0,0,0,BHu,0,F,[AJF],1,0,()=>Bee(),["vO",M(DDW)],Dj_,0,F,[B5K],1,0,0,["vP",M(FtC)],Cvs,0,F,[AJF],1,0,0,["vO",M(DWE)],Dfd,0,F,[AJF],1,0,0,["vO",M(D49)],C$K,0,F,[AJF],1,0,0,["vO",M(D6K)],DoS,"FormatFlagsConversionMismatchException",7,OH,[],1,0,0,0,Cu4,"IllegalFormatFlagsException",7,OH,[],1,0,0,0,Cci,"MissingFormatWidthException",7,OH,[],1,0,0,0,Ctk,0,F,[],1,0,0,0,Chz,0,F,[C1],0,0,0,["g3",G(Bs),"a9W",G(BK),"co",G(B6),"cC",M(EDE),"cF",M(BsZ), +"yz",W(DX0)],C0A,0,F,[AYn,ARd],1537,0,0,["UO",M(EM)],CBh,0,F,[C0A],1537,0,0,["UO",M(EM)],AUp,0,If,[Iu,CBh],1,0,()=>AQx(),["UO",M(EM),"j",G(A$A),"dV",G(APh),"dX",G(NA),"g",M(KM)],A0P,0,Bx,[],65552,0,()=>A8t(),0,C4B,0,F,[],0,0,0,["p",G(E$t)],Rj,0,F,[],1536,0,0,0,BWQ,0,F,[Rj],0,0,0,["vZ",W(DJa),"cx",M(ENI),"dp",G(Euu)],CAR,"IllegalCharsetNameException",11,Bt,[],1,0,0,0,Bd2,0,F,[],1537,0,0,0,CI,0,F,[Bd2],1025,0,0,["un",G(DVc),"uw",function(b,c,d,e,f){Egh(this,b,c,d,e,f);},"uo",G(D1T)],B36,0,CI,[],1,0,()=>Bwl(), +["vg",G(D6b),"vh",W(D9o),"uv",function(b,c,d,e,f){return Fou(this,b,c,d,e,f);}],BOo,0,CI,[],1,0,()=>BsU(),["vg",G(ERE),"vh",W(Em6),"uv",function(b,c,d,e,f){return Ea$(this,b,c,d,e,f);}],BLH,0,CI,[],1,0,()=>Bxx(),["vg",G(E_F),"vh",W(DFm),"uv",function(b,c,d,e,f){return FaT(this,b,c,d,e,f);}],B84,0,CI,[],1,0,()=>Bro(),["vg",G(Fil),"vh",W(EBc),"uv",function(b,c,d,e,f){return EOJ(this,b,c,d,e,f);}],BXZ,0,CI,[],1,0,()=>BtQ(),["vg",G(Ebn),"vh",W(EIn),"uv",function(b,c,d,e,f){return Efp(this,b,c,d,e,f);}],BIr,0,CI, +[],1,0,()=>BwO(),["vg",G(D12),"vh",W(FgE),"uv",function(b,c,d,e,f){return Fi1(this,b,c,d,e,f);}],BZ$,0,CI,[],1,0,()=>BwH(),["vg",G(EXr),"vh",W(DVt),"uv",function(b,c,d,e,f){return EYI(this,b,c,d,e,f);}],B2d,0,CI,[],1,0,()=>Bxg(),["vg",G(DN0),"vh",W(DWd),"uv",function(b,c,d,e,f){return D0$(this,b,c,d,e,f);}],BXN,0,CI,[],1,0,()=>A32(),["vg",G(Fj7),"vh",W(EO7),"uv",function(b,c,d,e,f){return EZv(this,b,c,d,e,f);}],BSh,0,CI,[],1,0,()=>BhQ(),["vg",G(Ewt),"vh",W(Eui),"uv",function(b,c,d,e,f){return Eo7(this,b,c,d, +e,f);}],B7_,0,CI,[],1,0,()=>Bw5(),["vg",G(Fhc),"vh",W(DLR),"uv",function(b,c,d,e,f){return EVC(this,b,c,d,e,f);}],BNO,0,CI,[],1,0,()=>BrQ(),["vg",G(Ef4),"vh",W(Ecr),"uv",function(b,c,d,e,f){return Fdz(this,b,c,d,e,f);}],BKA,0,CI,[],1,0,()=>BAo(),["vg",G(Ezc),"vh",W(E31),"uv",function(b,c,d,e,f){return EGb(this,b,c,d,e,f);}],B6_,0,CI,[],1,0,()=>Bd3(),["vg",G(DLQ),"vh",W(DCJ),"uv",function(b,c,d,e,f){return EYP(this,b,c,d,e,f);}],B54,0,CI,[],1,0,()=>Blb(),["vg",G(Fe$),"vh",W(E86),"uv",function(b,c,d,e,f){return DHW(this, +b,c,d,e,f);}],BRX,0,CI,[],1,0,()=>BpE(),["vg",G(D9b),"vh",W(FbL),"uv",function(b,c,d,e,f){return Du4(this,b,c,d,e,f);}],BDV,0,CI,[],1,0,()=>Bgh(),["vg",G(D3u),"vh",W(DZN),"uv",function(b,c,d,e,f){return Ek0(this,b,c,d,e,f);}],BHj,0,CI,[],1,0,()=>Bgt(),["vg",G(DGD),"vh",W(Fjm),"uv",function(b,c,d,e,f){return Fpl(this,b,c,d,e,f);}],BD3,0,CI,[],1,0,()=>ByL(),["vg",G(FqL),"vh",W(D4x),"uv",function(b,c,d,e,f){return DV5(this,b,c,d,e,f);}],BWK,0,CI,[],1,0,()=>Bcd(),["vg",G(Ea1),"vh",W(D66),"uv",function(b,c,d,e,f) +{return Eij(this,b,c,d,e,f);}],BX6,0,CI,[],1,0,()=>Bel(),["vg",G(Dxn),"vh",W(E1m),"uv",function(b,c,d,e,f){return Fxq(this,b,c,d,e,f);}],BJa,0,CI,[],1,0,()=>Bpw(),["vg",G(DFW),"vh",W(D6h),"uv",function(b,c,d,e,f){return DI$(this,b,c,d,e,f);}],BKa,0,CI,[],1,0,()=>Bj4(),["vg",G(D2A),"vh",W(DEl),"uv",function(b,c,d,e,f){return DRj(this,b,c,d,e,f);}],B12,0,CI,[],1,0,()=>Bie(),["vg",G(EDf),"vh",W(FnQ),"uv",function(b,c,d,e,f){return DZi(this,b,c,d,e,f);}],B7u,0,CI,[],1,0,()=>BbX(),["vg",G(FpJ),"vh",W(FpU),"uv",function(b, +c,d,e,f){return EFZ(this,b,c,d,e,f);}],BSd,0,CI,[],1,0,()=>BoN(),["vg",G(ExZ),"vh",W(Elm),"uv",function(b,c,d,e,f){return DSt(this,b,c,d,e,f);}],BZW,0,CI,[],1,0,()=>Bdr(),["vg",G(Fvl),"vh",W(Ems),"uv",function(b,c,d,e,f){return DFS(this,b,c,d,e,f);}]]); +Em([BLo,0,CI,[],1,0,()=>Bfi(),["vg",G(FhU),"vh",W(E69),"uv",function(b,c,d,e,f){return FqG(this,b,c,d,e,f);}],B4t,0,CI,[],1,0,()=>Bg_(),["vg",G(EnI),"vh",W(EEq),"uv",function(b,c,d,e,f){return DMN(this,b,c,d,e,f);}],B8P,0,F,[Bd2],1,0,()=>Bw9(),["vg",G(D2E),"vh",W(EgN),"un",G(Eye),"uw",function(b,c,d,e,f){DMV(this,b,c,d,e,f);},"uv",function(b,c,d,e,f){return FtY(this,b,c,d,e,f);},"uo",G(E99)],BYj,0,CI,[],1,0,()=>By$(),["vg",G(EhC),"vh",W(FdM),"uv",function(b,c,d,e,f){return DLj(this,b,c,d,e,f);}],B10,0,CI,[], +1,0,()=>Bix(),["vg",G(D9s),"vh",W(DLW),"uv",function(b,c,d,e,f){return EfJ(this,b,c,d,e,f);}],BQJ,0,CI,[],1,0,()=>Bj3(),["vg",G(EPX),"vh",W(E_9),"uv",function(b,c,d,e,f){return FhZ(this,b,c,d,e,f);}],B3K,0,CI,[],1,0,()=>BeZ(),["vg",G(Elh),"vh",W(EGR),"uv",function(b,c,d,e,f){return D9k(this,b,c,d,e,f);}],BP6,0,CI,[],1,0,()=>BwB(),["vg",G(Fds),"vh",W(DyO),"uv",function(b,c,d,e,f){return Erx(this,b,c,d,e,f);}],B8a,0,CI,[],1,0,()=>BsI(),["vg",G(Frr),"vh",W(EAy),"uv",function(b,c,d,e,f){return E6M(this,b,c,d,e, +f);}],BTw,0,CI,[],1,0,()=>AZe(),["vg",G(Fci),"vh",W(FtX),"uv",function(b,c,d,e,f){return EEI(this,b,c,d,e,f);}],BB9,0,CI,[],1,0,()=>BbF(),["vg",G(EMU),"vh",W(D2V),"uv",function(b,c,d,e,f){return DRb(this,b,c,d,e,f);}],BGg,0,CI,[],1,0,()=>BrE(),["vg",G(Ecv),"vh",W(FpH),"uv",function(b,c,d,e,f){return DF2(this,b,c,d,e,f);}],B2C,0,CI,[],1,0,()=>Bg1(),["vg",G(EBt),"vh",W(EW_),"uv",function(b,c,d,e,f){return Ezr(this,b,c,d,e,f);}],B4L,0,CI,[],1,0,()=>Bpe(),["vg",G(E0y),"vh",W(Fxg),"uv",function(b,c,d,e,f){return ERx(this, +b,c,d,e,f);}],BUm,0,CI,[],1,0,()=>Bch(),["vg",G(Esf),"vh",W(E_o),"uv",function(b,c,d,e,f){return Ewz(this,b,c,d,e,f);}],BCL,0,CI,[],1,0,()=>BxO(),["vg",G(D0Y),"vh",W(DxH),"uv",function(b,c,d,e,f){return Etl(this,b,c,d,e,f);}],BCN,0,CI,[],1,0,()=>BxN(),["vg",G(Fuc),"vh",W(EtI),"uv",function(b,c,d,e,f){return Fwr(this,b,c,d,e,f);}],BGC,0,CI,[],1,0,()=>BsY(),["vg",G(DHd),"vh",W(Enm),"uv",function(b,c,d,e,f){return EgK(this,b,c,d,e,f);}],BPF,0,CI,[],1,0,()=>Bzi(),["vg",G(DIy),"vh",W(Fuw),"uv",function(b,c,d,e,f) +{return Eas(this,b,c,d,e,f);}],BGt,0,CI,[],1,0,()=>BAp(),["vg",G(EJi),"vh",W(Dyk),"uv",function(b,c,d,e,f){return E1Y(this,b,c,d,e,f);}],BVA,0,CI,[],1,0,()=>Bk7(),["vg",G(Dx9),"vh",W(Dy_),"uv",function(b,c,d,e,f){return EXi(this,b,c,d,e,f);}],BPc,0,CI,[],1,0,()=>Bqp(),["vg",G(E8O),"vh",W(EkL),"uv",function(b,c,d,e,f){return EL2(this,b,c,d,e,f);}],BJP,0,CI,[],1,0,()=>BpZ(),["vg",G(D0_),"vh",W(E2u),"uv",function(b,c,d,e,f){return ExP(this,b,c,d,e,f);}],BC6,0,CI,[],1,0,()=>BiD(),["vg",G(EZL),"vh",W(DBf),"uv",function(b, +c,d,e,f){return D5r(this,b,c,d,e,f);}],BU5,0,CI,[],1,0,()=>Bfp(),["vg",G(Fri),"vh",W(DWB),"uv",function(b,c,d,e,f){return EBi(this,b,c,d,e,f);}],B64,0,CI,[],1,0,()=>Be0(),["vg",G(Egq),"vh",W(E_5),"uv",function(b,c,d,e,f){return Esu(this,b,c,d,e,f);}],B8k,0,CI,[],1,0,()=>Be7(),["vg",G(EFQ),"vh",W(Epc),"uv",function(b,c,d,e,f){return DHk(this,b,c,d,e,f);}],AYI,0,CI,[],1,0,()=>AS$(),["vg",G(EhA),"vh",W(EEP),"uv",function(b,c,d,e,f){return DMT(this,b,c,d,e,f);}],B18,0,CI,[],1,0,()=>BbT(),["vg",G(ETy),"vh",W(Eyq), +"uv",function(b,c,d,e,f){return E3C(this,b,c,d,e,f);}],B9c,0,CI,[],1,0,()=>BoI(),["vg",G(EKJ),"vh",W(E_1),"uv",function(b,c,d,e,f){return Fn8(this,b,c,d,e,f);}],BFq,0,CI,[],1,0,()=>BxG(),["vg",G(EX9),"vh",W(DFZ),"uv",function(b,c,d,e,f){return DyF(this,b,c,d,e,f);}],BV6,0,CI,[],1,0,()=>Bf1(),["vg",G(DBb),"vh",W(EKg),"uv",function(b,c,d,e,f){return Egt(this,b,c,d,e,f);}],BDI,0,CI,[],1,0,()=>BsT(),["vg",G(Esy),"vh",W(FdG),"uv",function(b,c,d,e,f){return FtG(this,b,c,d,e,f);}],BIC,0,CI,[],1,0,()=>Bvr(),["vg",G(EFl), +"vh",W(E19),"uv",function(b,c,d,e,f){return E76(this,b,c,d,e,f);}],BCe,0,CI,[],1,0,()=>Bgr(),["vg",G(EED),"vh",W(FsW),"uv",function(b,c,d,e,f){return DTa(this,b,c,d,e,f);}],BKX,0,CI,[],1,0,()=>Bj2(),["vg",G(DRi),"vh",W(E0o),"uv",function(b,c,d,e,f){return Eeu(this,b,c,d,e,f);}],BTm,0,CI,[],1,0,()=>BrD(),["vg",G(ELf),"vh",W(Evh),"uv",function(b,c,d,e,f){return DWc(this,b,c,d,e,f);}],BGI,0,CI,[],1,0,()=>Bz6(),["vg",G(EHr),"vh",W(DUR),"uv",function(b,c,d,e,f){return Dx2(this,b,c,d,e,f);}],BFY,0,CI,[],1,0,()=>BfB(), +["vg",G(DPi),"vh",W(FvD),"uv",function(b,c,d,e,f){return DRn(this,b,c,d,e,f);}],BMl,0,CI,[],1,0,()=>Bha(),["vg",G(Fea),"vh",W(EyA),"uv",function(b,c,d,e,f){return DyJ(this,b,c,d,e,f);}],BHX,0,CI,[],1,0,()=>Bdw(),["vg",G(E8G),"vh",W(DuG),"uv",function(b,c,d,e,f){return Fe4(this,b,c,d,e,f);}],BDx,0,CI,[],1,0,()=>Bz0(),["vg",G(DMo),"vh",W(E7J),"uv",function(b,c,d,e,f){return Eru(this,b,c,d,e,f);}],B1a,0,CI,[],1,0,()=>BcT(),["vg",G(EE3),"vh",W(DvE),"uv",function(b,c,d,e,f){return EAj(this,b,c,d,e,f);}],BPo,0,CI, +[],1,0,()=>BrJ(),["vg",G(Enq),"vh",W(DJR),"uv",function(b,c,d,e,f){return Ech(this,b,c,d,e,f);}],BKl,0,CI,[],1,0,()=>Bz8(),["vg",G(Ex_),"vh",W(Em$),"uv",function(b,c,d,e,f){return D9d(this,b,c,d,e,f);}],CDY,"JsonLiteral",36,T5,[],0,[0,0,0],0,["vl",M(EKn),"p",G(EwA),"dp",G(EbU),"gm",G(Fby),"a5V",G(DGb),"bzo",G(EvL),"xg",G(D48),"cx",M(Ew7)],A05,0,Bx,[],65553,0,()=>A43(),0,Di7,0,F,[ET],17,0,0,["p",G(Ds2)],C9b,0,F,[],0,0,()=>Rh(),0,EaS,0,F,[],1,0,0,0]); +Em([A07,0,Gt,[],1,0,0,0,C4,"AssertionError",17,A07,[],1,0,0,0,EZ0,0,F,[],17,0,0,0,BEn,0,F,[],1,0,0,["p",G(EeB),"dp",G(FwA),"cx",M(EYU)],BdL,0,F,[ET,Iu],1025,0,()=>AKu(),0,Or,0,Lp,[F1,ET],1,0,()=>JG(),["p",G(CsL)],CDo,0,F,[],17,0,()=>A8R(),0,B7D,0,Lp,[ET],1,0,0,0,CTd,0,BdL,[],0,0,0,0,BJQ,0,F,[],1025,0,0,0,To,0,BJQ,[],1025,0,0,0,CbB,0,To,[],17,0,0,["x8",M(Fiz),"x7",M(Fbl),"Z$",G(D4o)],AQd,0,Bx,[],65553,0,()=>VO(),0,B9Z,0,AQk,[],0,0,0,["rt",BF(D3i),"rs",Bu(DXY),"pP",G(D1A)],AEa,0,F,[],0,0,0,["dY",G(Gl),"ey",G(CRR)],Cut, +0,AEa,[Ie],0,0,0,["dZ",G(Dvt)],AEK,0,F,[],17,0,0,["p",G(D$)],A9Z,0,Bx,[],65553,0,()=>ZS(),0,EsQ,0,F,[],1,0,0,0,B1u,0,Pn,[C1],1025,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cn",W(EIw)],CUe,0,B1u,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(E$v),"cF",M(Ehl)],BJD,0,Pn,[],1,0,0,["cn",W(Fm2)],AMy,0,F,[Yf],1,0,()=>ABR(),0,AMZ,0,Bx,[Yf],65553,0,()=>AJo(),0,AER,0,F,[Yf],1537,0,0,0,VH,0,F,[Yf],1,0,0,0,BbK,0,F,[],1,0,0,["p",G(Erg)],Bmz,"SpecialText",79,F,[A2u],1,0,0,["g3",G(Bs),"bAc",M(DWK), +"bAd",W(E6s)],DnP,0,DU,[],0,0,0,["rX",M(Eay)],CiZ,0,DU,[],0,0,0,["rX",M(EeO)],CcO,0,DU,[],0,0,0,["rX",M(E3q)],CcN,0,DU,[],0,0,0,["rX",M(Fly)],DgB,0,DU,[],0,0,0,["rX",M(E8Y)],DjT,0,DU,[],0,0,0,["rX",M(Fvo)],C$H,0,DU,[],0,0,0,["rX",M(D8x)],C2v,0,DU,[],0,0,0,["rX",M(EFR)],CYj,0,DU,[],0,0,0,["rX",M(E05)],Dii,0,DU,[],0,0,0,["rX",M(D1_)],CPe,0,DU,[],0,0,0,["rX",M(DG3)],C0U,0,DU,[],0,0,0,["rX",M(Fpx)],Dkk,0,DU,[],0,0,0,["rX",M(Fsn)],CoL,0,DU,[],0,0,0,["rX",M(EY3)],CJb,0,DU,[],0,0,0,["rX",M(DHA)],B9T,0,DU,[],0,0,0, +["rX",M(E5P)],BeG,0,DU,[],0,0,0,["rX",M(DC4)],CIF,0,BeG,[],0,0,0,["rX",M(EXN)],Bvy,0,Tq,[],0,0,0,["UO",M(EM),"eu",W(DYa),"yq",W(E2g),"gt",M(E9V),"cf",M(EmR),"dX",G(A6v),"ew",M(CQe),"dK",M(E2C),"ev",W(DTF),"dC",W(FoJ),"dV",G(Bdl)],CKQ,0,Bvy,[XH],16,0,0,["UO",M(EM)],Cjb,0,F,[],0,0,0,0,AYP,0,Bx,[],65553,0,()=>NK(),0]); +Em([B8I,0,F,[Bd2],1,0,()=>A5J(),["vh",W(Em1),"p",G(FhV),"uw",function(b,c,d,e,f){DCq(this,b,c,d,e,f);},"uv",function(b,c,d,e,f){return D2K(this,b,c,d,e,f);},"un",G(FcD),"vg",G(DOB),"uo",G(DNr)],AVS,0,Bx,[Yf],65553,0,()=>Bvk(),0,EB_,0,F,[],1,0,0,0,AO8,0,F,[],1537,0,0,0,PD,0,F,[AO8,C1],1537,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a2L",G(Fx)],A3A,0,Er,[PD],1,0,()=>AJW(),["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"cC",M(Dsv),"mh",M(FuM),"co",G(EMY),"g4",G(Fk8)],AOz,0,Er,[],1,0,0,["g3",G(Bs),"yz", +W(BS),"a9W",G(BK),"co",G(B6),"mh",M(E_I),"cC",M(ExC)],BDT,0,ZB,[],1,0,0,["p",G(DI5)],CxB,0,F,[MX],1,0,0,["dT",M(Ff4)],Oa,0,F,[],1537,0,0,0,BK5,0,F,[C1,Oa],0,0,0,["g3",G(Bs),"a9W",G(BK),"co",G(B6),"cF",M(BE5),"cC",M(DWL),"yz",W(DYn),"yC",M(Dwe)],ChA,0,F,[C1],0,0,0,["g3",G(Bs),"a9W",G(BK),"cC",M(D2$),"yz",W(EX3),"cF",M(Emp),"co",G(D9r)],Cm0,0,F,[Pj],1,0,0,["UO",M(EM)],BSy,0,Er,[Oa],1,0,0,["g3",G(Bs),"a9W",G(BK),"co",G(B6),"mh",M(DDv),"cC",M(Exl),"yC",M(EVV),"yz",W(DMX)],Cdp,0,F,[],1,0,()=>BNY(),0,CY$,0,F,[Ie], +1537,0,0,0,CRX,0,F,[CY$],1,0,0,0,Cv0,0,A0O,[],0,0,0,["UO",M(EM),"dX",G(EPl),"dV",G(DDo),"et",M(B7V)],CS0,0,F,[],32768,0,()=>Blv(),0,KZ,"ArithmeticException",17,DR,[],1,0,0,0,D1H,0,F,[],0,0,0,0,BIi,0,Pn,[],1025,0,0,["cn",W(FfT)],B65,"PSystemVersion",56,BIi,[],1,0,0,0,Bax,0,Bx,[],65553,0,()=>AEt(),0,A4f,0,Bx,[],65553,0,()=>NQ(),0,Epq,0,F,[],0,0,0,0,E$$,0,F,[],0,0,0,0,Clo,0,If,[ARd],0,0,0,["UO",M(EM),"dX",G(G3)],B9p,0,F,[Eo],1,0,0,0,Yx,0,F,[],1025,0,()=>ANK(),0,C8q,0,F,[],1,0,()=>AQ3(),0,Ezy,0,F,[],1,0,0,0,DeX, +0,F,[],1,0,()=>AP7(),0,AO3,"ParseException",36,DR,[],1,0,0,0,C4q,0,F,[],17,0,()=>AEu(),0,Bd5,0,H3,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(D$3),"cF",M(DZf),"cn",W(EVF)],Ld,"StyleParsingException",68,Dt,[],1,0,0,0,A$I,0,F,[],1,0,()=>AXX(),0,Bnm,0,F,[],1,0,0,0,CkR,0,F,[],1,0,0,0,Ecc,0,F,[],1,0,0,0,A8p,0,Bx,[],65553,0,()=>Jx(),0,COh,0,F,[AER],0,0,0,0,ACL,"UComment",39,F,[N3],1,0,0,["g3",G(Bs)],ASR,"UEmpty",39,F,[N3],1,0,0,["g3",G(Bs)],BbA,"CenteredText",62,F,[N3],1,0,0,["g3",G(Bs)],Kx,"NoSuchElementException", +7,DR,[],1,0,0,0,CU1,0,If,[],0,0,0,["UO",M(EM),"dV",G(DOQ),"dX",G(Vm)],B_K,0,F,[Ie],0,0,0,["dY",G(OD),"ey",G(EMG),"dZ",G(Pr)],BAV,0,F,[Rj],0,0,0,["vZ",W(EnP),"cx",M(DCx),"dp",G(FaB)]]); +Em([E2B,0,F,[Re],1024,0,0,0,E_8,0,F,[Re],1025,0,0,0,EPq,0,F,[Re],1025,0,0,0,CrQ,0,F,[],0,0,()=>BDq(),0,DpA,0,F,[],17,0,()=>AEh(),0,Bnd,0,F,[],1,0,0,0,COW,0,F,[Ie],0,0,0,["dY",G(Ecm),"dZ",G(E4_)],Bfn,0,F,[],1,0,0,["p",G(ExM)],A5T,0,F,[],1025,0,0,0,BHQ,0,F,[],1537,0,0,0,BUQ,0,A5T,[F1,AUZ,KH,BHQ],1025,0,0,0,BGE,0,A5T,[F1],1025,0,0,0,AYS,0,F,[ZZ,BtP],1025,0,0,0,CNj,0,AYS,[],1,0,0,["zF",BF(AY$)],E3L,0,F,[],1,0,0,0,BXX,0,F,[],1537,0,0,0,B1o,0,F,[BXX],1,0,()=>AYO(),["mL",G(Bln),"tB",G(CnY),"zH",G(Emd),"zI",W(E_E)],KW, +0,F,[BXX],1025,0,0,["tB",G(Mz),"zH",G(Eyi),"zI",W(Dw1)],B3R,0,KW,[],1,0,()=>A_h(),["mL",G(DF1)],BQV,0,KW,[],1,0,()=>Bu1(),["mL",G(EFj)],C0c,0,KW,[],1,0,0,["mL",G(EQj)],Djm,0,KW,[],1,0,0,["mL",G(FhA),"tB",G(D0a)],C6v,0,KW,[],1,0,0,["mL",G(Fhn)],Dll,0,KW,[],1,0,0,["mL",G(Fdq)],CM5,0,KW,[],1,0,0,["mL",G(Ej5)],Cnf,0,KW,[],1,0,0,["mL",G(Efu)],CvM,0,KW,[],1,0,0,["mL",G(Dv$)],CZl,0,KW,[],1,0,0,["mL",G(Ewb)],Clc,0,KW,[],1,0,0,0,B2i,0,F,[],1025,0,0,0,Byy,0,B2i,[],1,0,0,0,C62,0,F,[],1,0,0,0,Wl,"JsonArray",36,T5,[Pj], +1,[0,0,0],0,["UO",M(EM),"vr",G(EZ5),"vl",M(FdR),"ul",G(DWt),"xm",G(E_s),"dp",G(DYV),"cx",M(ESI)],DDd,0,F,[],17,0,0,0,CWZ,0,F,[Pj],1,0,0,["UO",M(EM)],Uh,0,F,[],1537,0,()=>Ckv(),["f1",M(A4T)],AYH,0,Bx,[],65553,0,()=>F5(),0,Bl,0,F,[Uh],1025,0,()=>Biy(),["AG",G(Ewa),"mW",M(Bxe),"f1",M(CHx),"AM",W(Fl5),"fZ",BF(BT9),"AK",M(E63),"mN",M(Dfh),"AF",G(Dsp)],C1u,0,F,[],1537,0,0,0,BpQ,0,F,[C1u],1537,0,0,0,BsA,0,F,[BpQ],1537,0,0,0,BYO,0,F,[BsA],1537,0,0,0,BXc,0,F,[BYO],1,0,()=>AJu(),["cp",G(B1),"Di",G(FsH),"lu",G(DCk),"a24", +G(AF5),"qM",M(DF),"qS",BF(Bju),"lt",W(D6n),"o6",BF(MC),"H_",G(Qy),"qV",Bu(BG$),"AZ",M(Q2),"a4e",G(BS_),"qQ",M(BNN),"Bk",M(Fih),"HH",G(AWx),"a9h",M(EdE),"beU",W(AWK),"rg",G(CtH),"ri",G(AIc),"a9A",G(DxJ),"ly",G(GK),"lv",G(Ehd),"bpR",G(WR),"bCS",G(Flo),"lw",G(DRI),"hr",G(BvC),"bev",M(EgQ),"a9P",G(Ezf),"rj",G(EUT),"bh4",G(DuF),"E0",BF(ARN),"l_",Bu(CsW),"a$c",G(MS),"gs",G(PJ),"Vx",G(CKK),"Nz",M(Csb)],CAf,0,F,[BmV],1,0,0,0,Bbf,0,Bx,[],65553,0,()=>AHK(),0,DVL,0,F,[],1,0,0,0,ASc,0,F,[KH],1,0,()=>AHs(),["p",G(AG_),"u", +M(EmJ),"bL",G(FrO),"rL",W(Eic)],A81,0,Bx,[],65553,0,()=>Op(),0,Cxr,0,F,[],0,0,0,0,Caz,0,F,[],1,0,0,["p",G(D1P)]]); +Em([DE8,0,F,[],1,0,0,0,ER3,0,F,[],1,0,0,0,EA4,0,F,[],1,0,0,0,C9U,0,F,[],1,0,0,0,Cc6,0,F,[],1,0,0,0,Daj,0,F,[],1,0,0,0,B5f,0,F,[Vk,ET],1,0,0,["d1",G(FbR),"d0",G(EAO),"cx",M(Fk0),"dp",G(FdH),"p",G(EyT)],AVK,0,B5f,[],0,0,0,0,E_$,0,F,[],1,0,0,0,DxE,0,F,[],1,0,0,0,DK9,0,F,[],0,0,0,0,BCm,0,F,[],1,0,()=>U0(),0,BDw,0,F,[],1025,0,0,0,AMA,0,Dd,[],1,0,0,0,ACs,0,F,[ZZ],1025,0,0,["D4",M(DC6),"Cq",G(DQF)],ANc,0,ACs,[],1,0,0,["BK",BF(Er4),"Cq",G(Flc),"tW",G(BLu)],AYb,0,Bx,[],65553,0,()=>Ii(),0,FA,0,F,[],1025,0,()=>Bp4(),0,Dp0, +0,FA,[],1,0,0,0,DfX,0,F,[],1,0,0,0,BcX,"CommandScale",57,Bl,[],1,[0,0,0],()=>A0q(),["AM",W(E6f),"AE",G(DRk),"AN",Bu(Dtv)],Bhr,"CommandScaleWidthAndHeight",57,Bl,[],1,[0,0,0],()=>A3X(),["AM",W(Du8),"AE",G(Fh4),"AN",Bu(FkM)],Bi1,"CommandScaleWidthOrHeight",57,Bl,[],1,[0,0,0],()=>A50(),["AM",W(Ezq),"AE",G(E0q),"AN",Bu(E0e)],BgE,"CommandScaleMaxWidth",57,Bl,[],1,[0,0,0],()=>A5e(),["AM",W(DXg),"AE",G(Dzt),"AN",Bu(Ea3)],BfY,"CommandScaleMaxHeight",57,Bl,[],1,[0,0,0],()=>A8_(),["AM",W(EfI),"AE",G(Eid),"AN",Bu(EEw)],Bp$, +"CommandScaleMaxWidthAndHeight",57,Bl,[],1,[0,0,0],()=>A_J(),["AM",W(FgA),"AE",G(FvP),"AN",Bu(Ft5)],J1,"NoSuchColorException",40,Dt,[],1,0,0,0,AMj,0,Bx,[],65553,0,()=>IY(),0,C6W,0,F,[],1,0,0,["p",G(FnZ)],DgJ,"JsonString",36,T5,[],1,[0,0,0],0,["vl",M(Fls),"ui",G(EQ5),"oB",G(DTO),"dp",G(FkG),"cx",M(EJH)],CAA,0,F,[Eo],1,0,0,0,CEu,0,F,[],1,0,0,0,Jn,0,F,[],1,0,0,["p",G(DKA),"cx",M(AN2),"dp",G(Ext)],Bs9,0,F,[],1,0,0,0,BVG,0,F,[],1,0,0,0,C$W,0,F,[],1537,0,0,0,Bz_,0,F,[C$W],0,0,0,0,BTp,0,BUQ,[],1024,0,0,0,BDF,0,F,[], +1537,0,0,0,CN1,0,BTp,[BDF],0,0,0,["V",G(DCA)],B4G,0,F,[Re],1025,0,0,0,A4j,0,B4G,[],1025,0,0,0,EWe,0,A4j,[],1,0,0,0,BI_,0,F,[],1,0,()=>Mi(),0,AKU,0,F,[ZZ],1537,0,0,0,DkU,0,F,[AKU],1,0,0,["tU",G(DE1),"tW",G(DUG)],BOv,0,F,[AKU],1,0,()=>Bms(),["tU",G(A71),"tW",G(AQ0)],B7l,0,F,[],1537,0,0,0,B2z,0,F,[B7l],1,0,0,0,CqG,0,F,[],1,0,0,["p",G(Fsv)]]); +Em([CJH,0,FA,[],1,0,0,0,Cox,0,FA,[],1,0,0,0,DsJ,0,FA,[],1,0,0,0,AJ7,0,F,[ZZ,BHQ],1025,0,0,0,AG8,0,AJ7,[],1,0,0,["tW",G(DVr),"At",BF(EzI),"Dl",G(E93)],BNn,0,F,[AKU],1,0,0,["tW",G(B75)],BYF,0,F,[],1537,0,0,0,AGw,0,F,[F1,BYF],1,0,()=>A$3(),["p",G(EME),"dp",G(FiK),"cx",M(DKx),"rl",M(Enr)],AYe,0,Bx,[],65553,0,()=>Beo(),0,E_M,0,F,[],1,0,0,0,Bdc,0,F,[AKU],1,0,()=>BMV(),["tU",G(E6v),"tW",G(Eb$)],COD,0,FA,[],1,0,0,0,ChB,0,FA,[],1,0,0,0,Ca_,0,FA,[],1,0,0,0,Dkg,0,FA,[],1,0,0,0,CMA,0,FA,[],1,0,0,0,Ckc,0,FA,[],1,0,0,0,C7g, +0,PR,[],0,0,0,["ek",M(Fph)],B5F,0,F,[],1,0,()=>AXj(),0,CC$,0,F,[MX],1,0,0,["dT",M(E2Q)],BV9,"CommandDecoratorMultine",57,F,[Uh],1,[0,0,0],0,["fZ",BF(DzS),"f1",M(FgZ),"mW",M(Ds7),"mN",M(FoX),"AF",G(Dzs),"AE",G(EtU)],ByZ,0,F,[],1025,0,()=>A2j(),0,CIL,0,BGE,[BDF],0,0,0,["V",G(EVM)],EUb,0,A4j,[],1,0,0,0,BIB,"CoderMalfunctionError",11,A07,[],1,0,0,0,Bg,0,F,[],1537,0,0,0,ER,0,F,[Bg],1,0,()=>WK(),["p",G(Fa$),"CZ",G(FsE),"C0",W(Ejt),"AI",M(ECX),"AL",M(E34)],ACz,0,F,[Bg],1025,0,0,["C0",W(BFM),"AL",M(Ei)],Ch,0,ACz,[Bg], +17,0,()=>Brb(),["AI",M(G7),"CZ",G(A7s)],DD,0,ACz,[Bg],1,0,0,["CZ",G(Eos),"C0",W(EtB),"AI",M(EiR)],C0,0,ACz,[Bg],1,0,0,["CZ",G(E9l),"AI",M(EZI)],B73,0,FA,[],1,0,0,0,DGN,0,F,[],1,0,0,0,BpA,0,F,[],1,0,0,0,A0t,0,F,[ET,F1],1,0,()=>ABk(),0,APF,0,Bx,[],65553,0,()=>Pf(),0,Dsq,0,F,[],1,0,()=>ANR(),0,BW8,0,F,[C1],1537,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],CT2,0,Er,[BW8,M1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a0M",M(DZB),"mh",M(EmW),"cC",M(CGu),"bkY",G(E36)],DeZ,0,Lp,[ET],1,0,0,0,ARK,0,AJ7, +[],1,0,0,["tW",G(AAF),"At",BF(DRy),"Dl",G(Fvd)],Dsf,0,F,[Eo],1,0,0,0,B0y,0,F,[],1025,0,0,0,B9j,0,F,[ET],17,0,0,0,Bps,0,F,[],1,0,()=>A96(),["p",G(D2a)],Ddd,0,F,[],32768,0,()=>BeM(),0,Ca1,0,ByZ,[],0,0,0,0,BPw,0,F,[],17,0,()=>A0_(),0,Ch9,0,F,[Eo],1,0,0,0,BwY,"Stdlib",78,F,[],1,0,()=>AJl(),0]); +Em([B8S,0,F,[],1,0,()=>BAX(),0,DlI,0,F,[],1,0,()=>B3D(),0,CCI,0,F,[],17,0,()=>BsK(),0,CKj,0,F,[F1,ET],17,0,0,0,TR,"MalformedURLException",16,Dd,[],1,0,0,0,Ws,"URISyntaxException",16,Dt,[],1,0,0,["bW",G(DC1)],D5i,0,F,[],17,0,0,0,AP1,0,AYS,[],1,0,0,0,BCK,0,AP1,[AUZ],1,0,0,0,BYp,0,BCK,[],1025,0,0,0,Cy0,0,BYp,[],1,0,0,0,C2t,0,F,[MX],1,0,0,["dT",M(DRS)],A3S,0,Bx,[],65553,0,()=>APi(),0,DqY,0,F,[],0,0,0,0,Bm9,0,F,[ET],17,0,()=>BxR(),["cx",M(FfO),"dp",G(FxP)],AAl,0,ACs,[],1,0,0,["D4",M(D79)],C$V,0,F,[],1537,0,0,0,Cv$, +0,AAl,[C$V],1,0,0,0,Ec5,0,F,[],1,0,0,0,A4P,0,F,[],1025,0,0,0,CjF,0,F,[],1537,0,0,0,CRQ,0,F,[CjF],1,0,0,0,AA3,"EOFException",12,Dd,[],1,0,0,0,EQV,0,F,[],0,0,0,0,BXS,0,F,[],1025,0,0,0,CCr,0,BXS,[],1,0,0,0,DaB,0,ACs,[],1,0,0,["tW",G(A1S),"BK",BF(Dw9)],C$r,0,A4P,[],1,0,0,["D2",G(FmR)],CxA,0,A4P,[],1,0,0,["D2",G(D5K)],BO_,0,AAl,[],1,0,0,["Cq",G(EJ8),"tW",G(Eyk),"BK",BF(Eju)],Bk5,0,ACs,[],1,0,()=>BvF(),["BK",BF(EuV),"Cq",G(EDz),"tW",G(Egw)],C6F,0,F,[],16,0,0,0,CsG,0,F,[],16,0,()=>LH(),0,Lz,"BrotliRuntimeException", +23,DR,[],0,0,0,0,A8u,"FileNotFoundException",12,Dd,[],1,0,0,0,DKD,0,F,[],16,0,0,0,Ccg,0,F,[],16,0,()=>ALm(),0,BIa,0,F,[C1],1,0,()=>A7o(),["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],Cvq,0,AEa,[Ie],0,0,0,["dZ",G(GZ)],AGP,0,F,[],0,0,0,["dY",G(TS),"ey",G(D8h)],CUQ,0,AGP,[Ie],0,0,0,["dZ",G(U6)],CSZ,0,F,[],1537,0,0,0,WP,0,F,[CSZ],1,0,0,0,AZt,0,Bx,[],65553,0,()=>WL(),0,C_Z,0,F,[],1537,0,0,0,CN0,0,F,[C_Z],1,0,0,0,B7v,0,F,[],1025,0,0,0,DDq,0,B7v,[],1,0,0,0,Dpo,0,F,[],0,0,()=>AP_(),0,C1w,0,F,[Uh],17,0,0,["f1",M(A4T)]]); +Em([BI5,0,F,[],1,0,()=>F_(),0,Kc,0,Bx,[],65553,0,()=>JN(),0,ALI,"ReadOnlyBufferException",10,BV,[],1,0,0,0,Bgg,"BufferOverflowException",10,DR,[],1,0,0,0,Cwm,"BufferUnderflowException",11,DR,[],1,0,0,0,ChF,"BufferOverflowException",11,DR,[],1,0,0,0,Dfm,"MalformedInputException",11,AMA,[],1,0,0,["bW",G(ExT)],Dat,"UnmappableCharacterException",11,AMA,[],1,0,0,["bW",G(E6a)],CWV,0,F,[Ie],1,0,0,0,Cxq,0,F,[],17,0,()=>ANm(),0,C7q,0,F,[A_$],16,0,0,["dY",G(A5t),"dZ",G(A18),"qq",G(DUL),"EP",G(EWf),"EO",G(Fti),"ey",G(Ft4)],B0I, +0,F,[],16,0,0,["dp",G(DvS),"cx",M(Ffw)],Ckt,0,F,[MX],1,0,0,["dT",M(FiZ)],DsW,0,AJ7,[],1,0,0,["At",BF(B_2),"Dl",G(E4M),"tW",G(BYY)],Cr$,0,F,[A4d],1,0,0,0,CEv,0,AP1,[],1,0,0,["zF",BF(Fit)],EmN,0,F,[AJF],1,0,0,0,CrD,0,Pn,[],1,0,0,["cn",W(DHb)],BKT,"StyleLoader",67,F,[],17,0,()=>AD8(),0,LI,"NoStyleAvailableException",67,DR,[],1,0,0,0,Ddq,0,F,[],1,0,0,0,DK5,0,F,[],1025,0,0,0,AML,0,F,[],1,0,0,["p",G(EVp)],A9C,0,Bx,[],65553,0,()=>Qo(),0,CoJ,"YamlSyntaxException",46,DR,[],1,0,0,0,B7s,0,F,[Rj],0,0,0,["vZ",W(D7c),"cx", +M(DKd),"dp",G(DL_)],BUd,0,F,[Rj],0,0,0,["vZ",W(Dtu),"cx",M(Ewk),"dp",G(Fc2)],BND,0,F,[Rj],0,0,0,["vZ",W(Dt2),"cx",M(E6E),"dp",G(D4c)],BP1,0,BDw,[],1025,0,0,0,C_M,0,BP1,[],1,0,0,0,Bhm,"CommandHideUnlinked",49,Bl,[],1,[0,0,0],()=>Bdj(),["AM",W(DCd),"AE",G(E2X),"AN",Bu(Dw2)],Byp,"CommandActivate",49,Bl,[],1,[0,0,0],()=>Bfb(),["AE",G(DE9),"AM",W(Ec6),"AN",Bu(DDl)],Bvb,"CommandDeactivateShort",49,Bl,[],1,[0,0,0],()=>BjH(),["AM",W(DUh),"AE",G(Ec_),"AN",Bu(DZ$)],ADI,0,Bl,[],1025,0,0,["AM",W(DRh),"AN",Bu(EQe)],Bg4, +"CommandParticipantA",49,ADI,[],1,[0,0,0],()=>A5u(),["AE",G(D8s)],BA7,"CommandParticipantA2",49,ADI,[],1,[0,0,0],()=>A6o(),["AE",G(D3n)],BA6,"CommandParticipantA3",49,ADI,[],1,[0,0,0],()=>A6n(),["AE",G(Dul)],BA5,"CommandParticipantA4",49,ADI,[],1,[0,0,0],()=>Box(),["AE",G(D7O)],EP,0,F,[Uh],1025,0,()=>BCs(),["AG",G(EVq),"mW",M(C23),"fZ",BF(B$d),"f1",M(ERs),"FH",M(CoA),"mN",M(Fi_),"AF",G(D3m)],Bj0,"CommandParticipantMultilines",49,EP,[],1,[0,0,0],()=>A5s(),["FJ",M(DAP),"AE",G(D1L),"FI",BF(E8R)],Bgw,"CommandArrow", +49,Bl,[],1,[0,0,0],()=>AEJ(),["AE",G(EaA),"AM",W(FpF),"AN",Bu(D4R)],A7U,0,Bl,[],1024,0,0,["AN",Bu(D4d)],Bh_,"CommandExoArrowLeft",49,A7U,[],1,[0,0,0],()=>A45(),["AM",W(Dwm),"Go",M(DsO),"AE",G(DNZ)],BN0,"CommandExoArrowRight",49,A7U,[],1,[0,0,0],0,["AE",G(D3v),"AM",W(EKe),"Go",M(C0l)],V$,0,F,[],1537,0,0,0,AKx,"FactorySequenceNoteCommand",59,F,[V$],17,0,()=>AK5(),0,ALL,"FactorySequenceNoteOverSeveralCommand",59,F,[V$],17,0,()=>AIm(),0,AKS,"FactorySequenceNoteAcrossCommand",59,F,[V$],17,0,()=>AKw(),0,Btc,"CommandBoxStart", +49,Bl,[],1,[0,0,0],()=>A_H(),["AM",W(Fhp),"AE",G(EdG),"AN",Bu(DG7)],Bn2,"CommandBoxEnd",49,Bl,[],1,[0,0,0],()=>Bg5(),["AM",W(DT2),"AE",G(DVT),"AN",Bu(DQe)]]); +Em([BfC,"CommandGrouping",49,Bl,[],1,[0,0,0],()=>BaU(),["AM",W(DSa),"AE",G(DNS),"AN",Bu(Efk)],BDg,"CommandActivate2",49,Bl,[],1,[0,0,0],0,["AE",G(EXB),"AM",W(E46),"AN",Bu(EZ7)],Bb0,"CommandReturn",49,Bl,[],1,[0,0,0],()=>A8I(),["AM",W(EDV),"AF",G(Fbp),"AE",G(E9y),"AN",Bu(Ey_)],ANz,"FactorySequenceNoteOnArrowCommand",59,F,[V$],17,0,()=>AN4(),0,BhA,"CommandNewpage",49,Bl,[],1,[0,0,0],()=>Bm3(),["AM",W(FdX),"AE",G(FqD),"AN",Bu(ELR)],BA2,"CommandIgnoreNewpage",49,Bl,[],1,[0,0,0],()=>BrK(),["AM",W(EHN),"AE",G(FeA), +"AN",Bu(DQI)],Bo0,"CommandAutoNewpage",49,Bl,[],1,[0,0,0],()=>Bws(),["AM",W(E9s),"AE",G(EUN),"AN",Bu(Edo)],BAE,"CommandDivider",49,Bl,[],1,[0,0,0],()=>Bth(),["AM",W(DSF),"AE",G(D_l),"AN",Bu(FfJ)],Bf3,"CommandHSpace",49,Bl,[],1,[0,0,0],()=>BnO(),["AM",W(DEi),"AE",G(E5G),"AN",Bu(Emm)],BqH,"CommandReferenceOverSeveral",49,Bl,[],1,[0,0,0],()=>Blz(),["AM",W(DN7),"AE",G(DAG),"AN",Bu(D5M)],Xj,0,F,[Uh],1025,0,0,["f1",M(A4T),"mW",M(EOP),"mN",M(EV4),"AF",G(EQv)],BgQ,"CommandReferenceMultilinesOverSeveral",49,Xj,[],1, +[0,0,0],()=>AWL(),["f1",M(Ev_),"AE",G(DL2),"fZ",BF(DCD)],BxJ,"CommandAutonumber",49,Bl,[],1,[0,0,0],()=>BA1(),["AM",W(DIr),"AE",G(EtV),"AN",Bu(DFe)],Bhi,"CommandAutonumberStop",49,Bl,[],1,[0,0,0],()=>BiS(),["AM",W(EDB),"AE",G(Enf),"AN",Bu(D5T)],Bg$,"CommandAutonumberResume",49,Bl,[],1,[0,0,0],()=>Bfl(),["AM",W(Fbm),"AE",G(DM4),"AN",Bu(EYt)],Bgk,"CommandAutonumberIncrement",49,Bl,[],1,[0,0,0],()=>BqJ(),["AM",W(EBS),"AE",G(D4k),"AN",Bu(EbY)],BoX,"CommandAutoactivate",49,Bl,[],1,[0,0,0],()=>BqG(),["AM",W(Dxw), +"AE",G(D3s),"AN",Bu(Eug)],BrR,"CommandFootbox",49,Bl,[],1,[0,0,0],()=>AZH(),["AM",W(E8J),"AE",G(EhB),"AN",Bu(EPb)],Bkf,"CommandDelay",49,Bl,[],1,[0,0,0],()=>BlD(),["AM",W(D1r),"AE",G(DGY),"AN",Bu(E43)],Buk,"CommandFootboxOld",49,Bl,[],1,[0,0,0],()=>Bq6(),["AM",W(D4S),"AE",G(D1o),"AN",Bu(D$Y)],Btp,"CommandUrl",49,Bl,[],1,[0,0,0],()=>Bke(),["AM",W(DTB),"AE",G(Eox),"AN",Bu(D9h)],Bik,"CommandLinkAnchor",49,Bl,[],1,[0,0,0],()=>Bn9(),["AM",W(DYZ),"AE",G(EmP),"AN",Bu(Esc)],BAs,"CommandFootboxIgnored",57,Bl,[],1,[0,0,0], +()=>Bo3(),["AM",W(DZd),"AE",G(DUk),"AN",Bu(Fvc)],Blm,"CommandRankDir",57,Bl,[],1,[0,0,0],()=>Bp3(),["AM",W(Ep2),"AE",G(E7j),"AN",Bu(EiC)],BjQ,"CommandNewpage",53,Bl,[],1,[0,0,0],()=>Boe(),["AM",W(ELQ),"AE",G(E8k),"AN",Bu(FvV)],B7a,"CommandAddMethod",30,Bl,[],1,[0,0,0],0,["AE",G(DSm),"AM",W(EAX),"AN",Bu(D7m)],BcP,"CommandHideShow2",30,Bl,[],1,[0,0,0],()=>BxT(),["AM",W(Eaf),"AE",G(Dz6),"AN",Bu(FbD)],BwU,"CommandRemoveRestore",30,Bl,[],1,[0,0,0],()=>BAD(),["AM",W(EZG),"AE",G(Et4),"AN",Bu(EZM)],Bml,"CommandCreateClassMultilines", +30,EP,[],1,[0,0,0],()=>Zb(),["AG",G(Dwi),"FJ",M(Ej8),"AE",G(DBG),"FI",BF(Ez3)],BoA,"CommandCreateEntityObjectMultilines",55,EP,[],1,[0,0,0],()=>AXs(),["FJ",M(EPx),"AE",G(DQQ),"FI",BF(DLm)],BzB,"CommandCreateMap",55,EP,[],1,[0,0,0],()=>AKp(),["FJ",M(DVk),"AE",G(DXu),"FI",BF(EMz)],BgF,"CommandCreateJson",55,EP,[],1,[0,0,0],()=>BaI(),["FJ",M(DM0),"FH",M(DzP),"AE",G(E5j),"FI",BF(EMj)],Bmq,"CommandCreateJsonSingleLine",55,Bl,[],1,[0,0,0],()=>Bk0(),["AM",W(Fgd),"AE",G(D93),"AN",Bu(EWl)],Bvw,"CommandCreateClass",30, +Bl,[],1,[0,0,0],()=>AO9(),["AM",W(EQX),"AE",G(Dzc),"AN",Bu(Es2)],Bkj,"CommandCreateEntityObject",55,Bl,[],1,[0,0,0],()=>AZI(),["AM",W(E9Z),"AE",G(Fs$),"AN",Bu(Fw6)],Bt4,"CommandAllowMixing",30,Bl,[],1,[0,0,0],()=>BAM(),["AM",W(Efx),"AE",G(Fum),"AN",Bu(EbP)],Bes,"CommandCreateElementParenthesis",53,Bl,[],1,[0,0,0],()=>AJt(),["AK",M(EFm),"AM",W(Feb),"AE",G(EpA),"AN",Bu(Eku)],ByW,"CommandLayoutNewLine",30,Bl,[],1,[0,0,0],()=>Byl(),["AM",W(EZp),"AE",G(EvE),"AN",Bu(Eqk)],BvN,"CommandPackage",57,Bl,[],1,[0,0,0],()=> +APD(),["AG",G(E_r),"AM",W(Fdk),"AE",G(E25),"AN",Bu(E1w)],BnV,"CommandEndPackage",57,Bl,[],1,[0,0,0],()=>BnP(),["AM",W(DS5),"AE",G(Fki),"AN",Bu(Dv9)],Bek,"CommandPackageEmpty",57,Bl,[],1,[0,0,0],()=>Bpc(),["AM",W(EGI),"AE",G(Fex),"AN",Bu(Ef9)],BhE,"CommandPackageWithUSymbol",53,Bl,[],1,[0,0,0],()=>APJ(),["AM",W(D6Y),"AE",G(EVO),"AN",Bu(DIV)],BbU,"CommandTogether",53,Bl,[],1,[0,0,0],()=>Bz5(),["AM",W(EAp),"AE",G(D6L),"AN",Bu(DEM)],AT2,"CommandCreateElementFull2",30,Bl,[],1,[0,0,0],()=>AMk(),["AE",G(EJL),"AK", +M(DNd),"AM",W(D9v),"AN",Bu(DZS)],A0p,0,Bx,[],65553,0,()=>AHA(),0,AJx,"CommandFactoryNote",58,F,[V$],17,0,()=>U3(),0,Bwc,"CommandNamespace",57,Bl,[],1,[0,0,0],()=>Bre(),["AM",W(EfV),"AE",G(Fr8),"AN",Bu(E_e)],Brx,"CommandNamespace2",57,Bl,[],1,[0,0,0],()=>BdA(),["AM",W(Duu),"AE",G(DJ9),"AN",Bu(ElF)],Buo,"CommandNamespaceEmpty",57,Bl,[],1,[0,0,0],()=>Bfq(),["AM",W(D2W),"AE",G(E9o),"AN",Bu(Fnu)],B38,"CommandStereotype",30,Bl,[],1,[0,0,0],0,["AE",G(FiF),"AM",W(DWR),"AN",Bu(D$V)]]); +Em([AZO,"CommandLinkClass",30,Bl,[],17,[0,0,0],()=>AC_(),["AE",G(El2),"AM",W(EQx),"AN",Bu(ERr)],BRT,"CommandLinkLollipop",30,Bl,[],17,[0,0,0],0,["AE",G(DUb),"AM",W(Fp1),"AN",Bu(Eyf)],APa,"CommandFactoryTipOnEntity",58,F,[V$],17,0,()=>AKq(),0,WO,"CommandFactoryNoteOnEntity",58,F,[V$],17,0,()=>AFu(),0,C83,0,F,[],1,0,()=>AQG(),0,BlZ,"CommandUrl",30,Bl,[],1,[0,0,0],()=>ByV(),["AM",W(Fib),"AE",G(Esx),"AN",Bu(EhY)],AB0,"CommandFactoryNoteOnLink",58,F,[V$],17,0,()=>AMb(),0,BzM,"CommandConstraintOnLinks",58,Bl,[],17, +[0,0,0],()=>Bb5(),["AM",W(Eld),"AE",G(E_v),"AN",Bu(E5o)],BhS,"CommandDiamondAssociation",30,Bl,[],1,[0,0,0],()=>BnE(),["AM",W(D7Y),"AE",G(FoT),"AN",Bu(El6)],Ba9,"CommandCreateElementMultilines",53,EP,[],1,[0,0,0],()=>AAb(),["FJ",M(ESi),"AE",G(D0P),"FI",BF(D_x)],Ky,0,F,[Uh],1025,0,()=>BDl(),["mW",M(FqF),"f1",M(DG_),"fZ",BF(D39),"mN",M(DIf)],BNq,"UBrexCommandFootboxIgnored",57,Ky,[],1,[0,0,0],()=>BaX(),["AM",W(EUm),"AF",G(Ept),"AE",G(EaM),"AN",Bu(ELX)],BRI,"UBrexCommandRankDir",57,Ky,[],1,[0,0,0],()=>A3D(),["AM", +W(FeZ),"AF",G(ECb),"AE",G(DTv),"AN",Bu(D6A)],B5n,"UBrexCommandPartition",51,Ky,[],1,[0,0,0],()=>AXn(),["AM",W(EDX),"AF",G(E6B),"AE",G(FeG),"AN",Bu(Du2)],B8Q,"UBrexCommandEndPartition",51,Ky,[],1,[0,0,0],()=>A0N(),["AM",W(DZM),"AF",G(FuG),"AE",G(E8f),"AN",Bu(Era)],Bjx,"CommandLinkLongActivity",51,EP,[],1,[0,0,0],()=>A_O(),["AE",G(Fbf),"FJ",M(Ep6),"FI",BF(Dwh)],ALE,"CommandFactoryNoteActivity",58,F,[V$],17,0,()=>AM5(),0,Dg8,"UBrexCommandIf",51,Ky,[],1,[0,0,0],0,["AE",G(EjH),"AM",W(EQm),"AF",G(D6U),"AN",Bu(DR4)],B2w, +"UBrexCommandElse",51,Ky,[],1,[0,0,0],()=>AWy(),["AM",W(Dv2),"AF",G(Ed8),"AE",G(Eaz),"AN",Bu(EnZ)],B3E,"UBrexCommandEndif",51,Ky,[],1,[0,0,0],()=>BaF(),["AM",W(E20),"AF",G(ElT),"AE",G(Dzd),"AN",Bu(Ecp)],BPL,"CommandLinkActivity",51,Bl,[],1,[0,0,0],0,["AE",G(Ffm),"AM",W(EEo),"AN",Bu(E0F)],BKq,"UBrexCommandHideShow2",30,Ky,[],1,[0,0,0],()=>AYi(),["AM",W(ECe),"AF",G(Fac),"AE",G(DVI),"AN",Bu(DzZ)],BOg,"CommandLinkElement",53,Bl,[],1,[0,0,0],0,["AE",G(Fkl),"AM",W(DuN),"AN",Bu(EXn)],BqA,"CommandCreateElementFull", +53,Bl,[],1,[0,0,0],()=>AFL(),["AE",G(EGh),"AK",M(EpL),"AM",W(FiP),"AN",Bu(Dz3)],BmI,"CommandArchimate",53,Bl,[],1,[0,0,0],()=>AS_(),["AM",W(DHv),"AE",G(Fgu),"AN",Bu(DHu)],Bxl,"CommandArchimateMultilines",53,EP,[],1,[0,0,0],()=>AWh(),["FJ",M(E5W),"AE",G(D6k),"FI",BF(DG2)],BpK,"CommandArchimatePackage",53,Bl,[],1,[0,0,0],()=>AUh(),["AM",W(EW2),"AE",G(D1x),"AN",Bu(DN8)],Bk2,"CommandCreateDomain",52,Bl,[],1,[0,0,0],()=>A7P(),["AM",W(D$C),"AE",G(E1k),"AN",Bu(EvO)],BoK,"CommandCreateState",44,Bl,[],1,[0,0,0],()=> +ARu(),["mN",M(Ez9),"AM",W(DO0),"AE",G(Fv8),"AN",Bu(D7p)],AX5,0,Bl,[],1024,0,0,["AM",W(EdR),"JI",G(E5p),"AN",Bu(FiM)],B1T,"CommandLinkState",44,AX5,[],1,[0,0,0],0,["AE",G(Dys),"mN",M(Dxc)],BJO,"CommandLinkStateReverse",44,AX5,[],1,[0,0,0],0,["AE",G(D0r),"JI",G(Eme),"mN",M(DNp)],Byo,"CommandCreatePackageState",44,Bl,[],1,[0,0,0],()=>AUw(),["mN",M(DLn),"AM",W(DDf),"AE",G(Fbv),"AN",Bu(EFI)],Bc4,"CommandCreatePackage2",44,Bl,[],1,[0,0,0],()=>AQC(),["mN",M(DAf),"AM",W(Fhh),"AE",G(ER$),"AN",Bu(D9P)],BAb,"CommandEndState", +44,Bl,[],1,[0,0,0],()=>Bzk(),["mN",M(FiE),"AM",W(Esg),"AE",G(Exn),"AN",Bu(Ekb)],BCk,"CommandAddField",44,Bl,[],1,[0,0,0],0,["mN",M(EJJ),"AE",G(D0m),"AM",W(FfZ),"AN",Bu(Ely)],Bn0,"CommandConcurrentState",44,Bl,[],1,[0,0,0],()=>Bjv(),["mN",M(EyY),"AM",W(EI1),"AE",G(ENs),"AN",Bu(DXs)],Bnr,"CommandSwimlane",66,Bl,[],1,[0,0,0],()=>Bnu(),["AM",W(EF6),"AE",G(Fbx),"AN",Bu(ERC)],Bif,"CommandSwimlane2",66,Bl,[],1,[0,0,0],()=>A2p(),["AM",W(DAS),"AE",G(D$A),"AN",Bu(FbG)],BxU,"CommandPartition3",66,Bl,[],1,[0,0,0],()=>AXg(), +["AM",W(Fgo),"AE",G(EdH),"AN",Bu(DJY)],BdC,"CommandCloseGroup3",66,Bl,[],1,[0,0,0],()=>BdB(),["AM",W(DFV),"AE",G(D2o),"AN",Bu(Dww)],BvI,"CommandCloseGroupLegacy3",66,Bl,[],1,[0,0,0],()=>A$J(),["AM",W(EdK),"AE",G(D6y),"AN",Bu(D03)],BvK,"CommandArrow3",66,Bl,[],1,[0,0,0],()=>AZ4(),["AM",W(Fmh),"AE",G(EOK),"AN",Bu(Fe8)],BvS,"CommandArrowLong3",66,EP,[],1,[0,0,0],()=>ATL(),["FJ",M(Euc),"AE",G(DUr),"FI",BF(EmX)],Brn,"CommandRepeat3",66,Bl,[],1,[0,0,0],()=>A$i(),["AM",W(E6O),"AE",G(EJ2),"AN",Bu(D$s)],BtF,"CommandActivity3", +66,Bl,[],1,[0,0,0],()=>A86(),["AM",W(E_a),"AE",G(EFP),"AN",Bu(Dyd)],Bep,"CommandIf4",66,Bl,[],1,[0,0,0],()=>Bru(),["AM",W(E6n),"AE",G(Fai),"AN",Bu(Fei)],Beq,"CommandIf2",66,Bl,[],1,[0,0,0],()=>Brt(),["AM",W(DPg),"AE",G(DGI),"AN",Bu(DJX)],BmH,"CommandIfLegacy1",66,Bl,[],1,[0,0,0],()=>BdU(),["AM",W(ESf),"AE",G(E_w),"AN",Bu(DGu)],BmL,"CommandElseIf3",66,Bl,[],1,[0,0,0],()=>A1l(),["AM",W(FaE),"AE",G(Eed),"AN",Bu(Edz)]]); +Em([BmM,"CommandElseIf2",66,Bl,[],1,[0,0,0],()=>A1k(),["AM",W(DJH),"AE",G(Fne),"AN",Bu(DLP)],BAL,"CommandElse3",66,Bl,[],1,[0,0,0],()=>Bhw(),["AM",W(DXO),"AE",G(DPE),"AN",Bu(EE6)],Bwz,"CommandElseLegacy1",66,Bl,[],1,[0,0,0],()=>BkX(),["AM",W(EJc),"AE",G(EIT),"AN",Bu(EvK)],BjG,"CommandEndif3",66,Bl,[],1,[0,0,0],()=>Bos(),["AM",W(EC3),"AE",G(E5H),"AN",Bu(Etk)],Bx9,"CommandSwitch",66,Bl,[],1,[0,0,0],()=>BoP(),["AM",W(DCj),"AE",G(EbW),"AN",Bu(DP8)],BlF,"CommandCase",66,Bl,[],1,[0,0,0],()=>Bcr(),["AM",W(DSR),"AE", +G(Fru),"AN",Bu(FlA)],Bmk,"CommandEndSwitch",66,Bl,[],1,[0,0,0],()=>Bl4(),["AM",W(DZ5),"AE",G(EXH),"AN",Bu(DIk)],BzA,"CommandRepeatWhile3",66,Bl,[],1,[0,0,0],()=>A_z(),["AM",W(FiA),"AE",G(DWS),"AN",Bu(Eks)],AGl,0,F,[Uh],1025,0,()=>BCv(),["mW",M(DX$),"fZ",BF(DPf),"f1",M(Eax),"mN",M(Ejh),"AF",G(EDj)],Bnw,"CommandRepeatWhile3Multilines",66,AGl,[],1,[0,0,0],()=>ARm(),["FJ",M(Dws),"AE",G(E9K),"Kk",W(DOE)],Bpg,"CommandBackward3",66,Bl,[],1,[0,0,0],()=>AM8(),["AM",W(FjE),"AE",G(EjI),"AN",Bu(EYg)],BAt,"CommandBackwardLong3", +66,AGl,[],1,[0,0,0],()=>BzE(),["FJ",M(Flf),"AE",G(D2Y),"Kk",W(EvX)],BsO,"CommandWhile3",66,Bl,[],1,[0,0,0],()=>ByN(),["AM",W(Dvq),"AE",G(ENh),"AN",Bu(FnU)],Bs4,"CommandWhileEnd3",66,Bl,[],1,[0,0,0],()=>BqB(),["AM",W(D19),"AE",G(EvI),"AN",Bu(EXL)],Bje,"CommandFork3",66,Bl,[],1,[0,0,0],()=>Bpt(),["AM",W(Esd),"AE",G(Edy),"AN",Bu(DCV)],Bkk,"CommandForkAgain3",66,Bl,[],1,[0,0,0],()=>Bh8(),["AM",W(EBa),"AE",G(D6M),"AN",Bu(EEK)],BkP,"CommandForkEnd3",66,Bl,[],1,[0,0,0],()=>Bjf(),["AM",W(DRA),"AE",G(D3R),"AN",Bu(D8$)],BlB, +"CommandSplit3",66,Bl,[],1,[0,0,0],()=>Bhy(),["AM",W(Fni),"AE",G(Dut),"AN",Bu(Eu6)],Bjy,"CommandSplitAgain3",66,Bl,[],1,[0,0,0],()=>BuJ(),["AM",W(E0V),"AE",G(E7Q),"AN",Bu(D7N)],Bma,"CommandSplitEnd3",66,Bl,[],1,[0,0,0],()=>Bgb(),["AM",W(FpQ),"AE",G(DWO),"AN",Bu(Eqi)],ByC,"CommandStart3",66,Bl,[],1,[0,0,0],()=>Bum(),["AM",W(Eb3),"AE",G(D9t),"AN",Bu(Ef2)],Byb,"CommandStop3",66,Bl,[],1,[0,0,0],()=>BdT(),["AM",W(EFk),"AE",G(FqB),"AN",Bu(D3g)],Bzl,"CommandCircleSpot3",66,Bl,[],1,[0,0,0],()=>Brz(),["AM",W(E7T),"AE", +G(EmH),"AN",Bu(EBw)],Bhf,"CommandBreak",66,Bl,[],1,[0,0,0],()=>BAH(),["AM",W(EoQ),"AE",G(Fb7),"AN",Bu(DDC)],BkZ,"CommandEnd3",66,Bl,[],1,[0,0,0],()=>BfI(),["AM",W(DCK),"AE",G(DQT),"AN",Bu(ENM)],Bza,"CommandKill3",66,Bl,[],1,[0,0,0],()=>BwP(),["AM",W(Fc3),"AE",G(DSN),"AN",Bu(Eya)],Bb8,"CommandLink3",66,Bl,[],1,[0,0,0],()=>BwE(),["AM",W(Etj),"AE",G(ElD),"AN",Bu(EbI)],Bb3,"CommandNote3",66,Bl,[],1,[0,0,0],()=>A$y(),["AM",W(DuL),"AE",G(DYD),"AN",Bu(ETo)],Bto,"CommandNoteLong3",66,EP,[],1,[0,0,0],()=>AU_(),["FJ", +M(DEG),"AE",G(Fhs),"FI",BF(Fi4)],BhW,"CommandActivityLong3",66,AGl,[],1,[0,0,0],()=>BxQ(),["FJ",M(EQc),"AE",G(DN1),"Kk",W(Eu2)],By7,"CommandActivityList",66,Bl,[],1,[0,0,0],()=>BeY(),["AM",W(Fi$),"AE",G(EKF),"AN",Bu(DIK)],Bkq,"CommandLabel",66,Bl,[],1,[0,0,0],()=>Brm(),["AM",W(EZ9),"AE",G(Dxo),"AN",Bu(Fv6)],Bmm,"CommandGoto",66,Bl,[],1,[0,0,0],()=>BdR(),["AM",W(DJc),"AE",G(EQK),"AN",Bu(Eqv)],B3G,"CommandAnything",47,Bl,[],1,[0,0,0],0,["AE",G(ETg),"AM",W(EN6),"AN",Bu(EQR)],BNw,"CommandGanttArrow",28,Bl,[],1, +[0,0,0],0,["AE",G(FhW),"AN",Bu(FvR)],Bwv,"CommandGanttArrow2",28,Bl,[],1,[0,0,0],()=>Bli(),["AE",G(Fpi),"AN",Bu(D9w)],Bwr,"CommandColorTask",28,Bl,[],1,[0,0,0],()=>Bbc(),["AE",G(EgD),"AN",Bu(E68)],BvZ,"CommandSeparator",28,Bl,[],1,[0,0,0],()=>A4k(),["AE",G(DEf),"AN",Bu(DHp)],Bcf,"CommandWeekNumberStrategy",28,Bl,[],1,[0,0,0],()=>A$k(),["AE",G(Dt3),"AN",Bu(Es6)],Bnv,"CommandGroupStart",28,Bl,[],1,[0,0,0],()=>BaO(),["AE",G(DVW),"AN",Bu(FqH)],BeK,"CommandGroupEnd",28,Bl,[],1,[0,0,0],()=>A_m(),["AE",G(EOs),"AN", +Bu(Ec0)],Beb,"CommandLanguage",28,Bl,[],1,[0,0,0],()=>A$P(),["AE",G(Dzv),"AN",Bu(EoL)],BtL,"CommandPrintScale",28,Bl,[],1,[0,0,0],()=>A8B(),["AE",G(E7u),"AN",Bu(Fm$)],BC0,"CommandPrintBetween",28,Ky,[],1,[0,0,0],()=>ANd(),["AM",W(Eeg),"AF",G(Frf),"AE",G(EBV),"AN",Bu(DAg)],Bct,"CommandNoteBottom",28,EP,[],1,[0,0,0],()=>A9j(),["FJ",M(E50),"AE",G(E_N),"FI",BF(E8z)],B0q,"CommandFootboxGantt",28,Bl,[],1,[0,0,0],()=>Bdk(),["AE",G(EEb),"AN",Bu(DGv)],Blr,"CommandLabelOnColumn",28,Bl,[],1,[0,0,0],()=>Byn(),["AE",G(FgW), +"AN",Bu(EhT)],BpL,"CommandHideResourceName",28,Bl,[],1,[0,0,0],()=>Bhb(),["AE",G(DPy),"AN",Bu(DST)],BuX,"CommandHideResourceFootbox",28,Bl,[],1,[0,0,0],()=>Bs8(),["AE",G(FcG),"AN",Bu(EeR)],BH2,"CommandHideShowColumns",28,Ky,[],1,[0,0,0],()=>A1X(),["AM",W(Ecx),"AF",G(E02),"AE",G(DD5),"AN",Bu(Fmb)]]); +Em([BeT,"CommandHideClosed",28,Bl,[],1,[0,0,0],()=>Bs7(),["AE",G(DRl),"AN",Bu(Fee)],Bw4,"CommandTaskCompleteDefault",28,Bl,[],1,[0,0,0],()=>Bw7(),["AE",G(D5c),"AN",Bu(EqM)],Bd7,"CommandMindMapOrgmodeMultiline",72,EP,[],1,[0,0,0],()=>A$L(),["FJ",M(ELB),"AE",G(D$R),"FI",BF(DM7)],Bm_,"CommandMindMapOrgmode",72,Bl,[],1,[0,0,0],()=>A_I(),["AM",W(Dw7),"AE",G(FxD),"AN",Bu(D5x)],Bx$,"CommandMindMapRoot",72,Bl,[],1,[0,0,0],()=>BiC(),["AM",W(Fn$),"AE",G(Fuh),"AN",Bu(Fr4)],Br5,"CommandMindMapPlus",72,Bl,[],1,[0,0,0],()=> +Bj5(),["AM",W(DPu),"AE",G(EIp),"AN",Bu(Fqt)],BRH,"CommandMindMapDirection",72,Bl,[],1,[0,0,0],0,["AE",G(Fuu),"AM",W(EnJ),"AN",Bu(DJe)],A1o,"CommandWBSItemNew",25,Bl,[],1,[0,0,0],()=>A00(),["AM",W(ETt),"AE",G(Fd$),"AN",Bu(E1_)],BqC,"CommandWBSItemMultilineNew",25,EP,[],1,[0,0,0],()=>AOZ(),["FJ",M(FeT),"AE",G(EAP),"FI",BF(EMc)],A1B,"CommandWBSItemOld",25,Bl,[],1,[0,0,0],()=>AKm(),["AM",W(DKt),"AE",G(E6H),"AN",Bu(FuC)],Bp7,"CommandWBSItemMultilineOld",25,EP,[],1,[0,0,0],()=>AOR(),["FJ",M(DRp),"AE",G(EuC),"FI", +BF(DLd)],B3P,"CommandWBSLink",25,Bl,[],1,[0,0,0],0,["AE",G(EMu),"AM",W(E8w),"AN",Bu(EGs)],Bwi,"CommandNwDiagInit",22,Bl,[],1,[0,0,0],()=>Bcb(),["AE",G(DXj),"AN",Bu(D_L)],Br0,"CommandComment",22,Bl,[],1,[0,0,0],()=>BkJ(),["AE",G(DEn),"AN",Bu(Fln)],BPd,"CommandElement",22,Bl,[],1,[0,0,0],0,["AE",G(Dzz),"AN",Bu(E0B)],Bfz,"CommandGroup",22,Bl,[],1,[0,0,0],()=>A4o(),["AF",G(EWN),"AE",G(DNj),"AN",Bu(EP_)],Bnf,"CommandNetwork",22,Bl,[],1,[0,0,0],()=>BaJ(),["AF",G(E_4),"AE",G(EQJ),"AN",Bu(Fe7)],BFh,"CommandLink",22, +Bl,[],1,[0,0,0],0,["AE",G(Ff5),"AN",Bu(El_)],BxA,"CommandProperty",22,Bl,[],1,[0,0,0],()=>AYv(),["AE",G(E47),"AN",Bu(DI7)],Bxn,"CommandEndSomething",22,Bl,[],1,[0,0,0],()=>BuG(),["AE",G(Ef0),"AN",Bu(E6x)],BA$,"CommandRobustConcise",35,Bl,[],1,[0,0,0],()=>A$1(),["AM",W(EMx),"AE",G(Ek5),"AN",Bu(DxU)],Bk4,"CommandClock",35,Bl,[],1,[0,0,0],()=>Bbk(),["AM",W(D8G),"AE",G(E42),"AN",Bu(EGc)],Bx3,"CommandAnalog",35,Bl,[],1,[0,0,0],()=>A3O(),["AM",W(Fsl),"AE",G(DRD),"AN",Bu(E7P)],BuP,"CommandBinary",35,Bl,[],1,[0,0,0], +()=>Bhk(),["AM",W(D32),"AE",G(EID),"AN",Bu(ETd)],B2y,"CommandDefineStateShort",35,Bl,[],1,[0,0,0],0,["AE",G(EDY),"AM",W(D97),"AN",Bu(EnW)],BDn,"CommandDefineStateLong",35,Bl,[],1,[0,0,0],0,["AE",G(Eaa),"AM",W(Fm5),"AN",Bu(Eez)],Ba8,0,Bl,[],1024,0,0,0,B7W,"CommandChangeStateByPlayerCode",35,Ba8,[],1,[0,0,0],0,["AE",G(D5U),"AM",W(D8T),"AN",Bu(E3x)],BZw,"CommandChangeStateByTime",35,Ba8,[],1,[0,0,0],0,["AE",G(DL8),"AM",W(EHh),"AN",Bu(EN7)],Bg7,"CommandAtTime",35,Bl,[],1,[0,0,0],()=>A8e(),["AM",W(D0j),"AE",G(DDF), +"AN",Bu(D8O)],BA0,"CommandAtPlayer",35,Bl,[],1,[0,0,0],()=>A1D(),["AM",W(D3l),"AE",G(Ece),"AN",Bu(Ffx)],BHC,"CommandTimeMessage",35,Bl,[],1,[0,0,0],0,["AE",G(EmV),"AM",W(D6N),"AN",Bu(DME)],Bpo,"CommandNote",35,Bl,[],1,[0,0,0],()=>A4a(),["AM",W(E6T),"AE",G(DF0),"AN",Bu(Dt9)],BrU,"CommandNoteLong",35,EP,[],1,[0,0,0],()=>A5k(),["FJ",M(D0F),"AE",G(DEU),"FI",BF(Dyn)],BMD,"CommandConstraint",35,Bl,[],1,[0,0,0],0,["AE",G(DSO),"AM",W(Fct),"AN",Bu(Fip)],Bw2,"CommandScalePixel",35,Bl,[],1,[0,0,0],()=>A1G(),["AM",W(DI1), +"AE",G(FaC),"AN",Bu(D5s)],BbB,"CommandHideTimeAxis",35,Bl,[],1,[0,0,0],()=>Bb9(),["AM",W(D2Z),"AE",G(ETw),"AN",Bu(DU1)],Bh4,"CommandHighlight",35,Bl,[],1,[0,0,0],()=>A5B(),["AM",W(DIl),"AE",G(Eto),"AN",Bu(E2S)],BoJ,"CommandModeCompact",35,Bl,[],1,[0,0,0],()=>BoO(),["AM",W(EFC),"AE",G(E2R),"AN",Bu(ENm)],BMA,"CommandTicks",35,Bl,[],1,[0,0,0],0,["AE",G(Egm),"AM",W(DL6),"AN",Bu(Et1)],BUb,"CommandPixelHeight",35,Bl,[],1,[0,0,0],0,["AE",G(Eu0),"AM",W(EWB),"AN",Bu(E$g)],Bkc,"CommandUseDateFormat",35,Bl,[],1,[0,0,0], +()=>BpJ(),["AM",W(EWs),"AE",G(DN_),"AN",Bu(D3K)],Bnn,"CommandChartHAxis",74,Bl,[],1,[0,0,0],()=>A6t(),["AM",W(D3w),"AE",G(DCM),"AN",Bu(ExG)],Bgn,"CommandChartVAxis",74,Bl,[],1,[0,0,0],()=>ARw(),["AM",W(Ffb),"AE",G(El9),"AN",Bu(EIW)],Bq3,"CommandChartBar",74,Bl,[],1,[0,0,0],()=>Bvd(),["AM",W(Fxi),"AE",G(FsM),"AN",Bu(FxG)],Ber,"CommandChartLine",74,Bl,[],1,[0,0,0],()=>A6$(),["AM",W(Fkj),"AE",G(Fi0),"AN",Bu(D30)],BhB,"CommandChartArea",74,Bl,[],1,[0,0,0],()=>Bam(),["AM",W(DEZ),"AE",G(Eex),"AN",Bu(ET3)],BiA,"CommandChartScatter", +74,Bl,[],1,[0,0,0],()=>A4Q(),["AM",W(FtZ),"AE",G(Etm),"AN",Bu(DCp)],BlE,"CommandChartLegend",74,Bl,[],1,[0,0,0],()=>Bfa(),["AM",W(EIU),"AE",G(EZZ),"AN",Bu(DuM)],Bfx,"CommandChartStackMode",74,Bl,[],1,[0,0,0],()=>BwF(),["AM",W(EjL),"AE",G(E3v),"AN",Bu(EKi)]]); +Em([Bm0,"CommandChartOrientation",74,Bl,[],1,[0,0,0],()=>Bwx(),["AM",W(DtM),"AE",G(Fu5),"AN",Bu(DAW)],BvY,"CommandChartAnnotation",74,Bl,[],1,[0,0,0],()=>A$0(),["AM",W(D9C),"AE",G(Fvp),"AN",Bu(E4i)],Bsk,"CommandPacketDiagStart",71,Bl,[],1,[0,0,0],()=>BsV(),["AE",G(EkO),"AN",Bu(D60)],BbR,"CommandColWidth",71,Bl,[],1,[0,0,0],()=>BA8(),["AE",G(E0K),"AN",Bu(Fpo)],Bzr,"CommandNodeHeight",71,Bl,[],1,[0,0,0],()=>BwK(),["AE",G(ENF),"AN",Bu(EdI)],BeV,"CommandScaleDirection",71,Bl,[],1,[0,0,0],()=>BeX(),["AE",G(EWg), +"AN",Bu(DDU)],Boh,"CommandScaleInterval",71,Bl,[],1,[0,0,0],()=>Bil(),["AE",G(DEq),"AN",Bu(Epa)],Bu8,"CommandSameHeight",71,Bl,[],1,[0,0,0],()=>BAx(),["AE",G(EWd),"AN",Bu(Exi)],BoV,"CommandNumRange",71,Bl,[],1,[0,0,0],()=>ZR(),["AE",G(EaF),"AN",Bu(Edu)],Bt6,"CommandPacketDiagEnd",71,Bl,[],1,[0,0,0],()=>A5M(),["AE",G(Dzn),"AN",Bu(Ek2)],BZT,"UBrexCommandComment",69,Ky,[],1,[0,0,0],()=>A2V(),["AM",W(FdE),"AF",G(DIH),"AE",G(EMo),"AN",Bu(FeF)],BbJ,"CommandCommentMultilines2",69,EP,[],1,[0,0,0],()=>A9e(),["FJ",M(EHF), +"AE",G(DWC),"FI",BF(Dzh)],BcO,"CommandCommentMultilines",69,EP,[],1,[0,0,0],()=>A3x(),["FJ",M(Frp),"AE",G(DC7),"FI",BF(E8i)],BHw,"CommandEBnfSingleLine",69,Bl,[],1,[0,0,0],0,["AE",G(DKg),"AM",W(Dvv),"AN",Bu(E4m)],BBo,0,F,[Uh],1025,0,()=>BRS(),["mW",M(Ehx),"f1",M(FuW),"fZ",BF(El$),"mN",M(Fxf)],BTE,"UBrexCommandEbnfMultilines",69,BBo,[],1,[0,0,0],()=>Bwk(),["AE",G(EJ0),"AF",G(DLJ)],BTD,"CommandRegexfSingleLine",76,Bl,[],1,[0,0,0],0,["AE",G(Fo_),"AM",W(DI4),"AN",Bu(EdA)],CdA,0,F,[AKU],0,0,0,["tW",G(D6d),"tU",G(CaY)],Db_, +0,F,[MX],1,0,0,["dT",M(Epj)],ES5,0,F,[],17,0,0,0,CXh,0,F,[Eo],1,0,0,0,Dg9,0,F,[],1,0,0,0,CZc,0,FA,[],1,0,0,0,BLy,0,B0y,[],1025,0,0,0,DdT,0,BLy,[],1,0,0,0,BGA,0,F,[],17,0,()=>FY(),0,BNe,0,F,[],1537,0,0,0,CUH,0,F,[BNe],0,0,0,["i9",G(S9),"gz",G(Bs1),"co",G(Cwp)],Sz,0,F,[BpQ,BsA],1,0,0,["Bk",M(EF0),"qM",M(E13),"hr",G(E4c),"bpR",G(EDy),"bCS",G(Ekn),"ly",G(E6b),"Di",G(ESu),"E0",BF(EPt),"l_",Bu(Fun),"gs",G(D9p),"Nz",M(DRM)],B29,0,F,[],0,0,()=>BqD(),0,BH7,0,F,[],1,0,0,0,BHO,0,F,[],1,0,()=>A10(),0,Bmr,0,F,[],1,0,0,["p", +G(Ej1)],A2B,0,F,[],17,0,()=>Bq2(),0,CdW,0,F,[],16,0,()=>BvB(),0,CQR,0,F,[],16,0,()=>Bx2(),0,CDc,0,Er,[BW8],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(E28),"cC",M(D$J)],ASs,0,F,[],1,0,0,0,Ciy,0,ASs,[],17,0,0,0,A$n,"GZIPException",2,Dd,[],1,0,0,0,B1J,0,F,[],17,0,()=>Bap(),0,DqU,0,F,[],17,0,0,["p",G(Eci)],Eo8,0,F,[],16,0,0,0,DnX,0,F,[MX],1,0,0,["dT",M(D7s)],CuU,0,F,[],1537,0,0,0,C52,0,F,[CuU],0,0,0,0,Do0,0,F,[],0,0,()=>A6E(),0,A8X,0,Bx,[],65553,0,()=>HE(),0,A35,0,Bx,[],65553,0,()=>HA(),0,CO6,"FactorySequenceNoteCommand$2", +59,Bl,[],0,[AKx,0,0],0,["AE",G(ELW),"AM",W(D7J),"AN",Bu(Enz)]]); +Em([Cy5,"FactorySequenceNoteOverSeveralCommand$1",59,Bl,[],0,[ALL,0,0],0,["AE",G(D$o),"AM",W(E80),"AN",Bu(DJ$)],CP$,"FactorySequenceNoteAcrossCommand$1",59,Bl,[],0,[AKS,0,0],0,["AE",G(EEX),"AM",W(Fno),"AN",Bu(Eti)],Czq,"FactorySequenceNoteOnArrowCommand$1",59,Bl,[],0,[ANz,0,0],0,["AE",G(EHM),"AM",W(EZa),"AN",Bu(E8m)],CO5,"FactorySequenceNoteCommand$1",59,EP,[],0,[AKx,0,0],0,["AE",G(ETM),"FJ",M(Ejl),"FI",BF(Fof)],Cy4,"FactorySequenceNoteOverSeveralCommand$2",59,EP,[],0,[ALL,0,0],0,["AE",G(FoW),"FJ",M(E2Y),"FI", +BF(DB0)],Czo,"FactorySequenceNoteOnArrowCommand$2",59,EP,[],0,[ANz,0,0],0,["AE",G(Fuy),"FJ",M(DGG),"FI",BF(E8p)],CP9,"FactorySequenceNoteAcrossCommand$2",59,EP,[],0,[AKS,0,0],0,["AE",G(DJn),"FJ",M(Dwo),"FI",BF(E9$)],BzS,"CommandHideEmptyDescription",44,Bl,[],1,[0,0,0],()=>A_y(),["AM",W(D8F),"AE",G(EN1),"AN",Bu(E_W)],Bvi,"CommandHideShowByVisibility",30,Bl,[],1,[0,0,0],()=>A_G(),["AM",W(D20),"AE",G(Ds3),"AN",Bu(DMR)],Biz,"CommandHideShowByGender",30,Bl,[],1,[0,0,0],()=>ARj(),["AM",W(Egs),"AE",G(Evu),"AN",Bu(Euw)],B97, +"CommandFactoryNote$1",58,Bl,[],0,[AJx,0,0],0,["AE",G(DQb),"AM",W(FaY),"AN",Bu(D_a)],B_B,"CommandFactoryTipOnEntity$1",58,EP,[],0,[APa,0,0],0,["AE",G(DSV),"FJ",M(DQx),"FI",BF(Fhf)],Chm,"CommandFactoryNoteOnEntity$1",58,Bl,[],0,[WO,0,0],0,["AE",G(E04),"AM",W(DP1),"mN",M(EKv),"AN",Bu(DHw)],Chl,"CommandFactoryNoteOnEntity$2",58,EP,[],0,[WO,0,0],0,["AE",G(DMx),"FJ",M(ES3),"mN",M(DEK),"FI",BF(FeH)],B96,"CommandFactoryNote$2",58,EP,[],0,[AJx,0,0],0,["AE",G(Fb4),"FJ",M(EyF),"FI",BF(Etx)],Cye,"CommandFactoryNoteOnLink$2", +58,Bl,[],0,[AB0,0,0],0,["AE",G(FnD),"AM",W(Fnr),"mN",M(Fdg),"AN",Bu(DMd)],Cyd,"CommandFactoryNoteOnLink$1",58,EP,[],0,[AB0,0,0],0,["AE",G(EoF),"FJ",M(DUE),"mN",M(Ej3),"FI",BF(EV9)],Bg0,"CommandTitle",57,Bl,[],1,[0,0,0],()=>AYQ(),["AM",W(Fmo),"AE",G(EAI),"AN",Bu(DRX)],Bff,"CommandMainframe",57,Bl,[],1,[0,0,0],()=>A5G(),["AM",W(DPo),"AE",G(FwV),"AN",Bu(EbN)],Bs5,"CommandCaption",57,Bl,[],1,[0,0,0],()=>AZS(),["AM",W(Eep),"AE",G(EJm),"AN",Bu(Exy)],BJH,"CommandMultilinesCaption",57,Xj,[],1,[0,0,0],()=>A42(),["f1", +M(Fdh),"AE",G(EVH),"fZ",BF(DHB)],BN9,"CommandMultilinesTitle",57,Xj,[],1,[0,0,0],()=>AYX(),["f1",M(DRP),"AE",G(D_q),"fZ",BF(D7D)],Bpv,"CommandMultilinesLegend",57,EP,[],1,[0,0,0],()=>AXm(),["FJ",M(Ffl),"AE",G(DzO),"FI",BF(Emk)],Bqx,"CommandLegend",57,Bl,[],1,[0,0,0],()=>Ban(),["AM",W(DXp),"AE",G(E29),"AN",Bu(Eph)],Bz3,"CommandFooter",57,Bl,[],1,[0,0,0],()=>A3Q(),["AM",W(DQv),"AE",G(D$B),"AN",Bu(DW2)],B2k,"CommandMultilinesFooter",57,Xj,[],1,[0,0,0],()=>A1i(),["f1",M(Esj),"AE",G(EML),"fZ",BF(EHU)],Bu6,"CommandHeader", +57,Bl,[],1,[0,0,0],()=>A83(),["AM",W(Fuf),"AE",G(DtI),"AN",Bu(Fhg)],BOp,"CommandMultilinesHeader",57,Xj,[],1,[0,0,0],()=>AZB(),["f1",M(EY5),"AE",G(E44),"fZ",BF(E_2)],Bmw,"CommandNamespaceSeparator",30,Bl,[],1,[0,0,0],()=>A1c(),["AM",W(EIX),"AE",G(FaJ),"AN",Bu(E$d)],Bmx,"CommandNope",57,Bl,[],1,[0,0,0],()=>A4N(),["AM",W(D$L),"AN",Bu(EXU),"AE",G(FbO)],BiW,"CommandPragma",57,Bl,[],1,[0,0,0],()=>A_k(),["AM",W(DK4),"AE",G(Enp),"AN",Bu(EDr)],Bzg,"CommandAssumeTransparent",57,Bl,[],1,[0,0,0],()=>A0x(),["AM",W(FqU), +"AE",G(EgR),"AN",Bu(D8c)],BAj,"CommandSkinParam",57,Bl,[],1,[0,0,0],()=>A_f(),["AM",W(Ea7),"AE",G(DCE),"AN",Bu(EyG)],BpP,"CommandSkinParamJaws",57,Bl,[],1,[0,0,0],()=>Ba2(),["AM",W(EnU),"AE",G(Dxp),"AN",Bu(FgH)],BH3,0,F,[Uh],1025,0,0,["f1",M(A4T),"mW",M(DRW),"AF",G(DyU)],B1y,"CommandSkinParamMultilines",57,BH3,[],1,[0,0,0],()=>AIs(),["f1",M(EgI),"mN",M(Dtw),"AE",G(EGE),"fZ",BF(Fmk)],Bfj,"CommandSkin",49,Bl,[],1,[0,0,0],()=>A4h(),["AM",W(D21),"AE",G(DTh),"AN",Bu(E$a)],Bww,"CommandMinwidth",57,Bl,[],1,[0,0,0], +()=>A$2(),["AM",W(EJf),"AE",G(DD4),"AN",Bu(D7G)],BeU,"CommandPage",57,Bl,[],1,[0,0,0],()=>A9G(),["AM",W(EbF),"AE",G(Ewi),"AN",Bu(Fc7)],Biw,"CommandRotate",57,Bl,[],1,[0,0,0],()=>A$b(),["AM",W(E66),"AE",G(D9y),"AN",Bu(DAb)],AI7,"CommandFactorySprite",57,F,[V$],17,0,()=>AFA(),0,BtK,"CommandSpriteBase64",57,Bl,[],1,[0,0,0],()=>AZP(),["AM",W(DP2),"AE",G(EvG),"AN",Bu(Fe3)],Bfo,"CommandSpriteMd5",57,Bl,[],1,[0,0,0],()=>Baw(),["AE",G(ELr),"AN",Bu(D4f)],BcY,"CommandSpriteSvg",57,Bl,[],1,[0,0,0],()=>A$X(),["AM",W(Ezv), +"AE",G(E3w),"AN",Bu(EtG)],Bsu,"CommandSpriteSvgMultiline",57,EP,[],1,[0,0,0],()=>AWi(),["FJ",M(E1x),"AE",G(Eri),"FI",BF(Ees)],BqX,"CommandSpriteFile",57,Bl,[],1,[0,0,0],()=>A0J(),["AM",W(DHV),"AE",G(FcC),"AN",Bu(ESm)],BkE,"CommandStyleSingleLineCSS",57,Bl,[],1,[0,0,0],()=>A06(),["AM",W(ECV),"AE",G(E4g),"AN",Bu(D2s)],BdW,"CommandStyleMultilinesCSS",57,EP,[],1,[0,0,0],()=>AU1(),["FJ",M(Evp),"AE",G(Frq),"FI",BF(Eh8)],Bno,"CommandStyleImport",57,Bl,[],1,[0,0,0],()=>A1b(),["AM",W(ECP),"AE",G(EH4),"AN",Bu(DBJ)],DrT, +"CommandFactoryNoteActivity$2",58,Bl,[],0,[ALE,0,0],0,["AE",G(EEG),"AM",W(E9L),"AN",Bu(E7f)]]); +Em([DrS,"CommandFactoryNoteActivity$1",58,EP,[],0,[ALE,0,0],0,["AE",G(Ep3),"FJ",M(EqX),"FI",BF(FnK)],Uv,"NaturalGanttCommand",28,F,[Uh],1,[0,0,0],()=>BDL(),["f1",M(A4T),"mW",M(EvF),"mN",M(E77),"AF",G(EJG),"AE",G(Dyc),"fZ",BF(DAl)],XI,0,F,[],1537,0,0,0,BEL,0,F,[XI],1,0,()=>Bq8(),["NS",G(DNT),"NN",G(Eig),"NV",W(DQg)],B7z,0,F,[XI],1,0,()=>Byv(),["NS",G(DuH),"NN",G(DOf),"NV",W(FdJ)],BD$,0,F,[XI],1,0,()=>A94(),["NN",G(D$m),"NS",G(EYQ),"NV",W(DL0)],BC8,0,F,[XI],1,0,()=>BoQ(),["NN",G(EBl),"NS",G(FcB),"NV",W(Ffy)],BXo, +0,F,[XI],1,0,()=>Buz(),["NS",G(DBk),"NN",G(FiU),"NV",W(DTq)],BE_,0,F,[XI],1,0,()=>BAB(),["NS",G(E3t),"NN",G(E1I),"NV",W(Ei4)],BLS,0,F,[XI],1,0,()=>Bkr(),["NN",G(EKR),"NS",G(DNq),"NV",W(D9I)],B5z,0,F,[XI],1,0,()=>Bdt(),["NS",G(DUW),"NN",G(DDN),"NV",W(EM3)],BR5,0,F,[XI],1,0,()=>Bi3(),["NS",G(Flt),"NN",G(EcY),"NV",W(FtP)],Cqr,0,F,[],1537,0,0,0,B8E,0,F,[Cqr],16,0,0,0,B0W,0,F,[BYF],16,0,0,0,AZF,0,F,[],1,0,()=>AMt(),0,BHb,0,F,[A4d],1537,0,0,0,C$k,0,F,[BHb],1537,0,0,0,SF,0,F,[C$k],1025,0,0,0,CQ_,0,SF,[],1,0,0,["OG", +M(DIU)],DoJ,0,FA,[],1,0,0,0,DoP,0,F,[],16,0,()=>BmT(),0,BhT,0,Er,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(DXM),"cC",M(DKm)],Crk,0,F,[],1,0,0,["p",G(EP9)],Des,0,F,[],17,0,0,0,Deq,0,F,[],17,0,0,["p",G(DAu)],Dyi,0,F,[],1,0,0,0,FZ,0,F,[],1,0,()=>E3(),0,CNA,0,F,[],1,0,0,0,Daz,0,F,[Eo],1,0,0,["pS",G(Fpv)],B$F,0,F,[Eo],1,0,0,["pS",G(EN_)],B9V,0,F,[Eo],1,0,0,["pS",G(DGt)],C_J,0,F,[Eo],1,0,0,["pS",G(D7H)],CZA,0,F,[Eo],1,0,0,["pS",G(DO8)],AFO,0,Bx,[],65553,0,()=>OM(),0,C5B,0,F,[],1,0,()=>AL_(),0,B$m, +0,F,[],1,0,0,["dp",G(EP0),"cx",M(EJ3),"p",G(EXl)],CNa,0,F,[Eo],1,0,0,["pS",G(E7K)],CaD,0,F,[Eo],1,0,0,["pS",G(DzK)],CZT,0,F,[Eo],1,0,0,["pS",G(E89)],CVf,0,F,[Eo],1,0,0,["pS",G(FxK)],Cca,0,F,[Eo],1,0,0,["pS",G(EDI)],JF,0,Bx,[],65553,0,()=>FU(),0,Cvi,0,F,[Eo],1,0,0,["pS",G(EMp)],Cvj,0,F,[Eo],1,0,0,["pS",G(EPY)],CLK,0,F,[Eo],1,0,0,["pS",G(DHt)],CLL,0,F,[Eo],1,0,0,["pS",G(D5B)],DeJ,0,F,[Eo],1,0,0,["pS",G(DJ7)],Ccc,0,F,[Eo],1,0,0,["pS",G(EAa)],Ccb,0,F,[Eo],1,0,0,["pS",G(Erh)]]); +Em([C0L,"CommandFactorySprite$2",57,Bl,[],0,[AI7,0,0],0,["AE",G(DWW),"AM",W(Dzu),"AN",Bu(E2L)],BDY,0,F,[],1537,0,0,0,C7,0,F,[BDY],1025,0,0,["O2",W(C0o)],AZw,0,C7,[],1,0,0,0,B90,0,C7,[],1,0,0,0,W6,0,C7,[],1,0,0,0,Oy,0,C7,[],1,0,0,0,LO,0,C7,[],1,0,0,0,CiJ,0,F,[Eo],1,0,0,["pS",G(DY7)],Cof,0,F,[Eo],1,0,0,["pS",G(Fnk)],C2_,0,F,[Eo],1,0,0,["pS",G(FdU)],BHP,0,F,[],1,0,()=>AJi(),0,Dl$,0,F,[Eo],1,0,0,["pS",G(FvZ)],Cuk,0,F,[Eo],1,0,0,["pS",G(Dy7)],FaD,0,F,[],1025,0,0,0,LL,0,F,[],1537,0,0,0,A7g,"ComplementDate",27,F,[LL], +1,[0,0,0],0,["KK",G(BUA),"Vo",W(EGG)],Cuc,0,F,[Eo],1,0,0,["pS",G(EC8)],SB,0,Bx,[],66561,0,()=>AN3(),0,CnI,0,F,[Eo],1,0,0,["pS",G(ERq)],CTF,0,F,[Eo],1,0,0,["pS",G(FtR)],DoZ,0,F,[Eo],1,0,0,["pS",G(Fez)],Ej$,0,F,[],1,0,0,0,B_V,0,F,[Eo],1,0,0,["pS",G(EAF)],Cip,0,F,[Eo],1,0,0,["pS",G(EWD)],CM1,0,F,[Eo],1,0,0,["pS",G(Eff)],Cvr,0,F,[Eo],1,0,0,["pS",G(Fwo)],AGG,0,F,[],1,0,0,["p",G(CVU)],A1H,0,Bx,[],65553,0,()=>RC(),0,BVL,0,F,[],1537,0,0,0,DsU,0,F,[BVL],1,0,0,["a0H",W(EZJ)],AO0,0,F,[],1537,0,0,0,BlO,0,F,[AO0],1537,0, +0,0,DsV,0,F,[BlO],1,0,0,0,DsS,0,F,[Eo],1,0,0,["pS",G(D_f)],DsT,0,F,[MX],1,0,0,["dT",M(Exz)],AGH,0,Bx,[],65553,0,()=>BXz(),0,Ckk,0,F,[],1537,0,0,0,AXO,"UTFDataFormatException",12,Dd,[],1,0,0,0,CTn,0,OQ,[Iu,ET],1,0,0,0,Cgg,0,F,[Eo],1,0,0,["pS",G(D4D)],CUo,0,F,[Eo],1,0,0,["pS",G(FwC)],C_l,0,F,[Eo],1,0,0,["pS",G(E_V)],Da3,0,F,[Eo],1,0,0,["pS",G(Eqw)],Nm,0,F,[],1537,0,0,0,BPJ,0,F,[Nm],1,0,0,["p",G(Ex0),"Pw",W(Cat)],B$R,0,F,[],1,0,0,0,CD6,0,F,[Nm],1,0,0,["p",G(EpU),"Pw",W(E5t)],CJK,0,F,[Nm],1,0,0,["p",G(DW3),"Pw", +W(FiN)],ACV,0,F,[],1537,0,0,0]); +Em([St,0,F,[],1537,0,0,0,AAH,0,Bx,[ACV,St],65553,0,()=>AEg(),0,A2D,0,Bx,[],65552,0,()=>AS2(),0,I$,0,Bx,[],66561,0,()=>A22(),0,CyP,0,F,[Ckk],0,0,0,0,Ebg,0,F,[],16,0,0,0,BQW,0,F,[],1536,0,0,0,CWE,0,F,[BQW],17,0,0,["bf9",M(E2m),"rP",G(Fa_),"P6",G(D0H),"P0",BF(EUz)],BHM,0,F,[Iu],17,0,()=>ABE(),0,AOU,0,F,[],17,0,0,["p",G(EcI)],C4x,0,F,[],17,0,0,["p",G(DYL)],A$h,0,Bx,[],65553,0,()=>AB6(),0,C38,0,F,[F1],17,0,0,["p",G(DFM)],BdQ,0,F,[],1537,0,0,0,AXS,0,F,[BdQ],1,0,0,["p",G(EkD),"oB",G(Cl5),"cu",M(Ei3),"bh_",G(Fmm),"oX", +G(FvG),"oD",G(Ffp),"oK",G(Cmv),"ow",M(Ewf),"oE",G(EKQ),"oV",G(Eoj),"oz",G(Cwv)],BVs,0,F,[],1537,0,0,0,DnZ,0,F,[BVs],1,0,0,0,DnY,0,F,[MX],1,0,0,["dT",M(D4y)],C0I,"CommandFactorySprite$1",57,EP,[],0,[AI7,0,0],0,["AE",G(ECt),"FJ",M(DMc),"FI",BF(FoH)],B4P,0,C7,[],1,0,0,0,B1v,0,F,[Nm],1,0,0,["p",G(DOZ),"Pw",W(Fvg)],BHR,0,SB,[],65552,0,0,["a4S",M(Dwd),"a4U",W(D84)],BHT,0,SB,[],65552,0,0,["a4S",M(DX8),"a4U",W(E6X)],BHS,0,SB,[],65552,0,0,["a4S",M(EoK),"a4U",W(E1E)],BHW,0,SB,[],65552,0,0,["a4S",M(EtW),"a4U",W(DZC)],BOm, +0,F,[],1537,0,0,0,AC3,0,Bx,[BOm],65553,0,()=>MF(),["p",G(EeQ)],Cl9,0,F,[],1537,0,0,0,BkI,0,F,[Cl9,F1,ET],17,0,()=>Qi(),["p",G(CdM)],C3H,0,F,[BDY],0,0,0,["O2",W(BT_)],BDE,0,F,[],16,0,()=>ABd(),0,A2t,0,Bx,[],65553,0,()=>BeF(),0,C4n,0,F,[Ie],0,0,0,0,BSx,0,F,[],1,0,0,0,C4k,0,F,[OW],1,0,0,0,CYK,0,ACz,[Bg],1,0,0,["CZ",G(DKI),"C0",W(FwQ),"AI",M(D9l)],Bpf,0,F,[KH],1,0,0,["p",G(C4G),"bL",G(Jh),"u",M(Hc),"rL",W(EIJ)],TA,0,F,[],1537,0,0,0,CFN,0,F,[TA],0,0,0,0,BTU,0,I$,[],65552,0,0,["Rg",W(E_S)],BTV,0,I$,[],65552,0,0,["Rg", +W(DHc)],BTW,0,I$,[],65552,0,0,["Rg",W(Eih)],BTX,0,I$,[],65552,0,0,["Rg",W(ETe)],BTY,0,I$,[],65552,0,0,["Rg",W(FvX)],BTZ,0,I$,[],65552,0,0,["Rg",W(E9R)],BT0,0,I$,[],65552,0,0,["Rg",W(DBm)],BT1,0,I$,[],65552,0,0,["Rg",W(Egf)],BT2,0,I$,[],65552,0,0,["Rg",W(EP1)],BMQ,0,I$,[],65552,0,0,["Rg",W(DKC)],BMP,0,I$,[],65552,0,0,["Rg",W(EkV)]]); +Em([BMO,0,I$,[],65552,0,0,["Rg",W(EIe)],BXv,0,F,[],0,0,0,0,BSq,0,F,[BQW],17,0,()=>BlW(),["P0",BF(Cin),"rP",G(C2N),"bf9",M(FtO),"P6",G(Cn0)],Dn_,0,F,[],1,0,0,0,CXu,0,A11,[XH],0,0,0,["UO",M(EM),"dV",G(ExX),"cf",M(Ebx)],BBg,0,F,[],16,0,()=>AQ5(),0,BQ0,0,F,[],1,0,()=>BLQ(),0,CjV,0,F,[],1,0,0,0,Cgk,0,F,[B7l],1,0,0,0,Dh8,0,F,[],1537,0,0,0,Dpu,0,F,[Dh8],1,0,0,0,BDh,0,SF,[],1025,0,0,["OG",M(CSO)],Dbq,0,BDh,[],1,0,0,0,B_N,0,If,[],0,0,0,["UO",M(EM),"et",M(EZf),"dV",G(DB1),"dX",G(D6e)],Csn,0,If,[],0,0,0,["UO",M(EM),"dX", +G(DxA),"dV",G(FnO),"et",M(DN4)],BMr,0,F,[],1,0,()=>BKp(),0,C2b,0,F,[],1,0,0,0,CE3,0,F,[],1,0,0,0,CC2,0,If,[],0,0,0,["UO",M(EM),"dX",G(Zd)],CgM,0,F,[OW],1,0,0,["fc",W(DJd)],Die,0,F,[A_$],0,0,0,["dY",G(D96),"dZ",G(EPJ),"ey",G(Duv),"EP",G(D2N),"qq",G(EYO),"EO",G(EIM)],Dds,0,F,[],1,0,0,["p",G(D9u)],CN6,0,F,[],1,0,0,0,Cmf,0,F,[],32768,0,()=>B52(),0,AWI,0,F,[],1025,0,()=>Bp0(),0,B0m,"BufferUnderflowException",10,DR,[],1,0,0,0,C4$,0,F,[Eo],1,0,0,0,C5b,0,F,[Eo],1,0,0,0,BPn,0,F,[],1537,0,0,0,B5q,0,F,[BPn],1,0,0,0,TB, +"ArrayIndexOutOfBoundsException",17,EN,[],1,0,0,0,Cg7,0,F,[],1,0,0,0,Dav,0,F,[],1,0,0,0,A7H,0,Bx,[],65553,0,()=>A55(),0,A$Y,0,Bx,[],65553,0,()=>A72(),0,Bne,0,H3,[],1,0,()=>B8B(),["cn",W(DNy),"m7",G(EpE),"m5",G(Fqe)],BsQ,0,F,[],1537,0,0,0,BsF,0,F,[],1537,0,()=>BkH(),0,DjR,0,F,[],1537,0,0,0,AU6,0,H3,[BsQ,BsF,DjR],1025,0,()=>A__(),["nA",M(Bf6),"m8",M(DYF),"GW",M(E8),"R9",M(D_p),"a1y",M(D6x),"HK",G(X5),"cn",W(DUs),"a1z",M(A3d),"bpU",W(Frd),"bpS",M(Ekd),"a1M",G(Dxq)],AKZ,0,AU6,[],1025,0,0,["Sg",G(EeU)],A2Z,0,AKZ, +[],1025,0,()=>BBS(),["Nb",M(Duf)],B0x,0,A2Z,[],1,0,0,["m5",G(DMz)],CfY,0,AU6,[],1,0,0,["R9",M(EiJ),"Sg",G(EwG)],BZ9,0,AKZ,[],1,0,0,["GW",M(Z_),"m6",G(Edv),"m5",G(EtL)],BJW,0,AKZ,[],1,0,()=>Bou(),["mJ",G(E1T),"HK",G(BwG),"MU",M(EwX),"a1M",G(DQW),"m5",G(EcK)],Crp,0,H3,[],1,0,0,["cn",W(DAy)],Cu0,0,H3,[],1,0,0,["cn",W(EDm),"Nw",W(EdB)],CwJ,0,F,[],1537,0,0,0,BVo,0,H3,[CwJ],1,0,()=>Btt(),["m5",G(Fqr),"cn",W(Eg4)]]); +Em([DgI,0,H3,[],1,0,0,["cn",W(D_y)],B02,0,H3,[C1],1,0,()=>A64(),["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cn",W(Epo),"cC",M(DZ8),"cF",M(Ep$)],B1j,0,H3,[],1,0,()=>Btx(),["m6",G(El7),"cn",W(Fig)],C6V,0,F,[],1537,0,0,0,Ctb,0,H3,[C6V],1,0,0,["cn",W(DGm)],CAm,0,H3,[],1,0,0,["cn",W(DJ6)],B0g,0,H3,[],1,0,()=>AN_(),["cn",W(FrR),"m5",G(Flq)],CqW,0,H3,[],1,0,0,["cn",W(EHt)],DdD,0,H3,[],1,0,0,["cn",W(Ed4)],B_D,0,F,[Eo],1,0,0,0,B_F,0,F,[Eo],1,0,0,0,CCx,0,F,[],1537,0,0,0,DqW,0,F,[CCx],1,0,0,0,ACB,0,F,[],1537,0,0,0,QB, +0,F,[ACB],1024,0,0,0,CXt,0,QB,[ACB],1,0,0,["Vn",W(DxS)],C_C,0,QB,[ACB],1,0,0,["Vn",W(Ead)],CiP,0,QB,[ACB],1,0,0,["Vn",W(E87)],CNg,0,QB,[ACB],1,0,0,["Vn",W(DLi)],C0H,0,QB,[ACB],1,0,0,["Vn",W(EzJ)],CWt,0,QB,[ACB],1,0,0,["Vn",W(D36)],C5K,0,QB,[ACB],1,0,0,["Vn",W(D_X)],Bzm,0,AE_,[],0,0,0,0,CMr,0,F,[],32768,0,()=>BCF(),0,Do,0,F,[],1025,0,()=>A4t(),["p",G(FwH)],CwM,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],CwN,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],Dm$,0,F,[],32768,0,()=> +BPb(),0,CXP,0,FA,[],1,0,0,0,CIS,0,FA,[],1,0,0,0,BNf,0,F,[],0,0,()=>Rc(),0,Dlr,0,F,[],1,0,0,0,Bwn,0,Tq,[BrA,XH,Iu,ET],1,0,()=>BEj(),["UO",M(EM)],C1E,0,Bwn,[],1,0,0,["UO",M(EM)],CVL,0,F,[],1,0,0,0,AP6,0,Bx,[],65553,0,()=>HN(),0,ABO,0,F,[],1537,0,0,0,B8M,0,F,[C1,ABO],1,0,()=>BLG(),["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EZ3)],DcB,0,F,[],1,0,0,0,CsY,0,F,[],1,0,0,0,CsD,0,F,[],1,0,0,0,Dj5,0,F,[],1,0,0,0,Dcs,0,F,[],1,0,0,0,CGF,0,F,[],1,0,0,0,CqZ,0,F,[],1,0,0,0,Cdt,0,F,[],1,0,0,0,BG0,0,Er,[],1,0,()=>Byq(), +["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(FnR),"cC",M(DlT)],CaO,0,F,[],1,0,0,0,C9x,0,F,[],1,0,0,0,A7l,0,Bx,[],65553,0,()=>ANY(),0]); +Em([A3k,0,Bx,[],65553,0,()=>VP(),0,Dkj,0,F,[],1,0,0,0,Bag,0,Bx,[],65553,0,()=>SH(),0,A5x,0,Bx,[],65553,0,()=>VR(),0,A6K,0,Bx,[],65553,0,()=>AIq(),0,A20,0,Bx,[],65553,0,()=>RE(),0,AVZ,0,Bx,[],65552,0,()=>AF7(),0,J9,0,Er,[],1025,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(ERB),"bj2",M(D_B),"bj1",M(FfK),"a25",G(DJN)],C0J,0,F,[Nm],1,0,0,["p",G(Eu3),"Pw",W(DNu)],C9C,0,F,[Nm],1,0,0,["Pw",W(EZK)],C5P,0,F,[Nm],1,0,0,["Pw",W(DAZ)],Doy,0,F,[Nm],1,0,0,["p",G(Fqn),"Pw",W(DvK)],Cst,0,F,[Nm],1,0,0,["p",G(D7V), +"Pw",W(DTR)],CqM,0,F,[Nm],1,0,0,["Pw",W(ExW)],AYU,0,Bx,[],65553,0,()=>A8q(),0,Dh$,0,F,[Nm],1,0,0,["Pw",W(DTt)],Dnx,0,F,[Nm],1,0,0,["Pw",W(ELJ)],C0G,0,F,[Nm],1,0,0,["p",G(FxB),"Pw",W(EZj)],DpT,0,F,[],1,0,0,0,B$H,0,F,[Nm],1,0,0,["p",G(DKe),"Pw",W(Ek$)],AVw,0,Bx,[ABO],65553,0,()=>ABp(),0,A7p,0,F,[],1537,0,0,0,X$,0,F,[ABO],1537,0,0,0,BKr,0,F,[A7p,X$,AJM],1,0,0,["p",G(Fmq)],A98,0,Bx,[],65553,0,()=>FC(),0,AIo,0,Bx,[ABO],65553,0,()=>Hy(),0,BAi,0,F,[],1,0,0,0,A0g,0,Bx,[],65553,0,()=>SV(),0,A_p,0,Bx,[],65553,0,()=>GQ(), +0,A0m,0,Bx,[],65553,0,()=>KK(),0,A$u,0,Bx,[],65553,0,()=>OG(),0,UL,0,F,[],1537,0,0,0,Ma,0,F,[UL],1025,0,0,["bfI",G(EfC)],A_B,0,F,[UL],1537,0,0,0,A0$,0,F,[UL],1537,0,0,0,T$,0,Ma,[A_B,X$,A0$],1025,0,0,["bfI",G(EK$),"Rt",M(CDv),"GH",M(D1m),"WO",M(Fgr)],AGO,0,T$,[],1,0,0,["WO",M(EZ_),"GG",G(EdY),"Fq",G(E27),"R0",M(DD1),"Rs",M(DE3),"WL",G(ETu)],C$X,0,F,[],1,0,0,["p",G(D62)],BOU,0,F,[],1537,0,0,0,CRE,0,F,[],1537,0,0,0,BJ4,0,F,[],1537,0,0,0,AB2,0,F,[A7p,AO8,BOU,CRE,BJ4],17,0,()=>AOT(),["p",G(Cmo)],CRa,0,F,[],1,0,0, +0,ANs,0,F,[],1025,0,0,0,NZ,0,ANs,[AO8,BOU],1,0,0,["W4",G(Ej0),"p",G(EYT)],ACW,0,F,[],1025,0,0,0,AUc,0,Bx,[],65553,0,()=>AYq(),0,CzK,0,F,[],32768,0,()=>BY_(),0,BWS,0,ACW,[],1,0,0,["Xb",G(Fjo),"Lr",W(E4K),"Ls",Bu(DuD),"LI",Bu(Dya)],AS0,0,Bx,[],65553,0,()=>K$(),0]); +Em([AI5,0,Bx,[],65553,0,()=>Cy(),0,Nf,0,Bx,[],65553,0,()=>DC(),0,BVN,0,F,[],1,0,()=>BgK(),0,CQW,0,F,[],16,0,0,0,CGD,0,FA,[],1,0,0,0,CKZ,0,F,[],1,0,0,0,Cje,0,FA,[],1,0,0,0,Cv_,0,FA,[],1,0,0,0,Dhx,0,FA,[],1,0,0,0,CfN,0,AWI,[],0,0,0,0,DdM,0,AWI,[],1,0,0,0,ASA,0,F,[Ht],1,0,0,0,AJD,0,F,[],0,0,0,0,CyD,0,F,[],16,0,0,0,B4V,0,F,[],0,0,()=>Bk8(),0,C4r,0,F,[],0,0,0,0,DqS,0,F,[],16,0,0,0,CzM,0,F,[],1,0,0,0,AY7,0,Bx,[],65553,0,()=>F7(),0,ADD,0,F,[],1024,0,0,0,Tv,0,ADD,[],1024,0,0,0,BtX,0,F,[],1537,0,0,0,NP,0,F,[BtX],1537, +0,0,0,AIy,0,F,[NP],1537,0,0,0,BrW,0,Tv,[NP,AIy],1,0,0,["S3",G(AOi),"JX",M(AJU),"Vv",M(ACX),"Ks",G(ANO),"Xm",G(Ehb),"S2",G(WI),"S7",function(b,c,d,e,f,g){return AGs(this,b,c,d,e,f,g);}],BLL,0,F,[],1,0,0,0,CEW,0,F,[BpQ,BsA],1,0,0,["Bk",M(FeN),"qM",M(E39),"hr",G(EFV),"bpR",G(E4B),"bCS",G(EiS),"ly",G(Frb),"Di",G(ELi),"E0",BF(Ewr),"l_",Bu(Fod),"gs",G(D_o),"Nz",M(E$x)],B3L,0,F,[],1537,0,0,0,A5I,0,F,[F1,B3L],1,0,0,["p",G(Fmt),"dp",G(FcJ),"cx",M(Epx),"rl",M(DR0)],A4X,0,Bx,[],65553,0,()=>Xg(),0,BS5,0,F,[],1,0,0,0,C3D, +0,F,[],1,0,0,0,C$9,0,F,[Pj],1,0,0,["UO",M(EM)],B1w,0,F,[],1,0,0,["p",G(Fsk)],Fl8,0,F,[],1,0,0,0,BPe,0,F,[Ht],0,0,0,0,BYi,0,F,[],17,0,()=>NV(),0,BCV,"UncheckedIOException",12,DR,[],1,0,0,["B6",G(DLX)],A0e,0,Bx,[],65553,0,()=>Y$(),0,DjD,0,F,[],1,0,0,0,CZs,0,F,[Nm],1,0,0,["Pw",W(Fng)],CLU,0,F,[Nm],1,0,0,["Pw",W(FpV)],M4,0,Bx,[],66561,0,()=>A1N(),0,A24,0,Bx,[],65553,0,()=>AUD(),0,BO6,0,F,[],1,0,0,0,A2T,0,Bx,[],65553,0,()=>MP(),0,Xf,0,F,[F1],1,0,0,["p",G(E$4),"rl",M(ELK)],H6,0,F,[],1,0,0,0,Bbv,0,Bx,[],65553,0,()=> +M3(),0,AD3,0,Bx,[],65553,0,()=>Jb(),0]); +Em([DcP,0,F,[],1,0,0,0,DrH,0,F,[],1,0,0,0,Diw,0,F,[],1,0,0,0,Cyj,0,F,[],1,0,0,0,W3,0,F,[ACV],1537,0,0,0,Bwf,0,F,[W3,St,F1,ET,ACV],17,0,()=>ADJ(),["cx",M(D4F),"dp",G(D_d)],AKL,0,F,[ET],1025,0,()=>A4M(),["cx",M(E6y),"dp",G(Fq$)],AOQ,0,AKL,[ACV,St,F1,ET],17,0,()=>TK(),["Yn",G(Ftf),"Xz",G(Fp7),"cx",M(Yv),"dp",G(E9q),"p",G(E4L),"rl",M(Fme)],BhC,0,F,[W3,F1],1025,0,()=>BQI(),0,Cz9,0,BhC,[W3,ET],17,0,0,0,Cwe,0,F,[],0,0,0,0,Yb,0,F,[],1537,0,0,0,AJY,0,F,[Yb],1024,0,0,0,ADA,0,AJY,[Yb],1024,0,0,["YB",G(ENd),"RN",M(EK)],CZV, +0,F,[Yb],1537,0,0,0,Cfs,0,ADA,[CZV],0,0,0,["YA",M(D0c),"RG",G(DDE),"Rv",M(B$J),"RO",M(EUr)],CF0,0,F,[],1,0,0,0,BfZ,0,F,[ET,Iu,F1],1025,0,()=>AXZ(),0,BZQ,0,F,[],1537,0,0,0,AMh,0,F,[BZQ],1024,0,0,["R8",M(Fav),"W0",G(Evd),"bqi",M(Fgl)],B8Y,0,AMh,[],1,0,()=>BmR(),["WU",G(ERA),"G0",M(EsM),"ZH",G(DFk),"ZG",G(Fo3),"bpV",function(b,c,d,e,f,g){return E_Q(this,b,c,d,e,f,g);}],FpI,0,F,[],1,0,0,0,CSa,0,F,[BZQ],1,0,0,["WU",G(EPL),"R8",M(EDW),"ZH",G(DJj),"ZG",G(D6f),"bpV",function(b,c,d,e,f,g){return E97(this,b,c,d,e,f,g); +},"W0",G(DON),"G0",M(Ejy),"bqi",M(EKt)],BO8,0,F,[BJ4],17,0,0,0,A1M,0,Bx,[],65553,0,()=>UM(),0,AKy,0,F,[],1,0,0,["p",G(Fv7)],BQD,0,F,[],17,0,()=>A_Y(),0,ER8,0,F,[],17,0,0,0,BO0,0,F,[],1,0,()=>A7X(),0,BpG,0,F,[],1,0,()=>Qa(),0,Be4,0,F,[W3,St,F1],1025,0,()=>BLW(),0,Zn,"LocalDateTime",13,Be4,[W3,St,ET],17,0,()=>ACM(),["QF",M(Fvz),"Pz",M(Ez_),"XM",M(Ejf),"PA",M(ET4),"Y6",M(Ejq),"QE",W(DJU),"cx",M(B8X),"dp",G(BVf),"p",G(C5J),"QG",W(CKS),"rl",M(FaW)],AR6,0,BfZ,[],1,0,()=>Zo(),0,BEK,0,M4,[],65552,0,0,["WE",M(EOl)],BEJ, +0,M4,[],65552,0,0,["WE",M(Ev$)],BEI,0,M4,[],65552,0,0,["WE",M(EDQ)],BEH,0,M4,[],65552,0,0,["WE",M(D_e)],BEG,0,M4,[],65552,0,0,["WE",M(DYC)],BEF,0,M4,[],65552,0,0,["WE",M(D$7)],BEM,0,M4,[],65552,0,0,["WE",M(DB4)],BKY,0,AMh,[],1,0,()=>A_g(),["WU",G(D4e),"G0",M(EcC),"ZH",G(Dpx),"ZG",G(Cpu),"bpV",function(b,c,d,e,f,g){return D_0(this,b,c,d,e,f,g);}],CYC,0,AMh,[],1,0,0,["WU",G(D_M),"G0",M(EQW),"ZH",G(EV6),"ZG",G(Flj),"bpV",function(b,c,d,e,f,g){return DOg(this,b,c,d,e,f,g);}],A4L,0,Bx,[],65552,0,()=>WD(),0,CmQ,0, +F,[],16,0,0,0,Egg,0,F,[],17,0,0,0,CXO,0,F,[TA],0,0,0,0,CD4,0,F,[],0,0,()=>A3w(),0,Cub,0,F,[Eo],1,0,0,["pS",G(D2g)],CwE,0,F,[],1,0,0,0,GE,"DateTimeException",13,DR,[],1,0,0,0]); +Em([BxZ,0,F,[W3,St,F1],1025,0,()=>BXe(),0,AA6,"LocalDate",13,BxZ,[W3,St,ET],17,0,()=>VD(),["QF",M(Fc5),"Pz",M(CRA),"XM",M(BkB),"PA",M(WN),"Y6",M(D8q),"QE",W(Cxj),"cx",M(AFy),"dp",G(C2U),"p",G(C29),"QG",W(EvB),"rl",M(EXo)],ATy,"LocalTime",13,F,[W3,St,F1,ET,ACV],17,0,()=>No(),["QF",M(AMC),"Pz",M(B_X),"XM",M(CLJ),"PA",M(Dri),"Y6",M(EEp),"QE",W(ERJ),"cx",M(AC8),"dp",G(CZi),"p",G(DsN),"QG",W(DDV),"rl",M(EJ7)],Cdb,0,F,[BVL],1,0,0,["a0H",W(DCO)],Cdc,0,F,[BlO],1,0,0,0,B_y,0,To,[],1,0,0,["x8",M(Emc),"x7",M(Fh9),"Z$", +G(D09)],CYo,0,F,[MX],1,0,0,["dT",M(D4n)],AQF,0,AKL,[ET],16,0,0,["Yn",G(EkR),"Xz",G(Exs)],Biq,0,F,[],1537,0,0,0,Mj,0,Bx,[Biq],65553,0,()=>GC(),["ZS",G(D59),"YV",G(Bkg),"Z6",M(DKN),"YW",M(D4Q),"YX",M(E5X),"p",G(FgD)],CtY,0,F,[TA],0,0,0,0,CZM,0,To,[],16,0,0,["x8",M(Dku),"x7",M(B9Q),"Z$",G(Dgh)],C$i,0,To,[],16,0,0,["x8",M(B7f),"x7",M(D2m),"Z$",G(EI5)],Crz,0,To,[],16,0,0,["x8",M(ESg),"x7",M(Fw1),"Z$",G(Ec$)],Cgf,0,F,[TA],0,0,0,0,Dbu,0,F,[ET],17,0,0,["p",G(Fl3)],AV$,0,F,[],1537,0,0,0,Ced,0,F,[AV$],1,0,0,0,Cec,0,F, +[AV$],1,0,0,0,AYY,0,Bx,[ACV,St],65553,0,()=>ASx(),0,BYx,0,F,[],1025,0,0,0,A73,0,BYx,[AIP,Iu,ET],1,0,()=>Bxw(),0,BMR,0,A73,[],1,0,0,0,Bok,0,To,[],17,0,()=>BqU(),["x8",M(Fos),"x7",M(EQ9),"Z$",G(EG2)],COy,0,F,[],16,0,0,0,C7G,0,F,[],1,0,0,0,Bh5,0,F,[],16,0,()=>A9H(),0,CJR,0,F,[],16,0,0,0,DhM,0,F,[],16,0,0,0,CEz,0,F,[AV$],1,0,0,0,CED,0,F,[AV$],1,0,0,0,CgG,0,F,[OW],1,0,0,0,A2F,0,F,[F1],1025,0,()=>Btb(),0,B7w,0,A2F,[ET],17,0,()=>Xp(),0,Cl6,0,F,[AV$],1,0,0,0,C9S,0,F,[TA],0,0,0,0,BQw,0,F,[],16,0,0,0,C9R,0,F,[BPn],0, +0,0,0,C9Q,0,F,[Ie],0,0,0,0,Bsq,0,AE_,[],0,0,0,0,AON,0,F,[],1537,0,0,0,CBZ,0,F,[AON],1,0,0,["OH",M(BL7)],CI8,0,SF,[],1,0,0,["OG",M(BtR)],CJu,0,AGP,[Ie],0,0,0,["dZ",G(Dv_)],CUc,0,F,[Ie],0,0,0,["dY",G(EFi),"dZ",G(DPX),"ey",G(DJr)],CZW,0,F,[Ie],0,0,0,["dY",G(Z3),"ey",G(DBR),"dZ",G(YO)],KP,0,F,[],1537,0,0,0,ACw,0,Er,[M1,KP],1,0,0,["g3",G(Bs),"a9W",G(BK),"co",G(B6),"p",G(CNw),"mh",M(EXW),"yz",W(Dy9),"cC",M(CTD),"a0M",M(Dur),"bAR",W(CWT),"bAS",W(B5h),"bkY",G(ElO)],CnG,0,F,[],1,0,0,["p",G(FqO)],A2K,0,F,[],1025,0,0, +0]); +Em([Dm7,0,F,[OW],1,0,0,0,BLx,0,DR,[],1,0,0,0,BTT,0,F,[],1537,0,0,0,Bl7,0,F,[BTT],1,0,0,["p",G(EnC)],CNk,0,F,[],1,0,0,["p",G(Eqp)],CcC,0,F,[],1025,0,()=>F$(),0,A8i,0,Bx,[],65553,0,()=>W9(),0,CSx,0,F,[],1,0,0,0,CLA,0,Er,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EjB),"mh",M(E2c)],A3K,0,F,[],1025,0,0,0,Bjm,0,A3K,[],1,0,()=>A_i(),["Sl",W(DPp)],BOD,0,A3K,[],17,0,0,["Sl",W(EW0)],DrV,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(Eli),"cF",M(DJZ)],C$O,0,F,[C1],0,0,0,["g3",G(Bs), +"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(Fkf),"cF",M(DPK)],C1y,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cF",M(DPv),"cC",M(DDX)],CWc,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EHj),"cF",M(EfB)],CGd,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DvI),"cF",M(D95)],CDi,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"cC",M(EsJ),"cF",M(DU2),"co",G(EGl)],B58,0,F,[],1537,0,0,0,CLu,0,F,[],1,0,0,0,CGa,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK), +"co",G(B6),"cC",M(Fxu),"cF",M(E4O)],A6u,0,Bx,[],65553,0,()=>ML(),0,Cjq,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"cC",M(CS7)],Db$,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"cC",M(FnE),"cF",M(Flv),"co",G(Ezx)],Crm,0,F,[],1,0,0,0,Cbm,0,F,[],0,0,0,0,CSC,0,F,[],1537,0,0,0,ATp,0,F,[],1537,0,0,0,CA,0,F,[CSC,ATp],1,0,0,["a$C",M(Brk),"a73",M(ERd)],AHa,0,CA,[],1,0,0,0,CXT,0,AHa,[],17,0,0,["a73",M(FoC)],Dqk,0,F,[AKU],0,0,0,0,Cds,0,F,[],1537,0,0,0,Czf,0,F,[Cds],0,0,0,0,EDi,0,F,[],1025,0,0,0,C0P,0,If,[ARd], +0,0,0,["UO",M(EM),"dV",G(DFg),"dX",G(AJ5),"et",M(CzP)],Cgt,0,F,[],0,0,0,0,Crb,0,FA,[],1,0,0,0,C5U,0,FA,[],1,0,0,0,CPf,0,FA,[],1,0,0,0,C3$,0,FA,[],1,0,0,0,CCM,0,F,[],1537,0,0,0,Db0,0,F,[CCM],0,0,0,0,C7L,0,ACW,[],1,0,0,["Xb",G(DSE),"Lr",W(D47),"Ls",Bu(FsZ),"LI",Bu(Fpb)],Cdq,0,F,[],1,0,0,0,C1C,0,F,[],1,0,0,0,CEP,0,ANs,[],1,0,0,["W4",G(DtQ)],CKG,0,F,[],1,0,0,0,ANS,0,ACW,[],1025,0,0,["LI",Bu(DR2),"Ls",Bu(EMk),"Lr",W(DWA)],C$F,0,ANS,[],17,0,0,["Xb",G(E6e)]]); +Em([C8r,0,ANS,[],17,0,0,["Xb",G(EHa)],CLx,0,ANS,[],17,0,0,["Xb",G(DwC)],BS$,0,A6k,[],1025,0,0,["vS",BF(ERu)],Brq,0,BS$,[],1,0,0,0,CSR,0,ACW,[],1,0,0,["Xb",G(EiF),"Lr",W(DzT),"Ls",Bu(DOa),"LI",Bu(ETU)],C$w,0,F,[],0,0,0,0,AX7,0,F,[AUZ,ZZ,BtP],1025,0,0,0,CbM,0,AX7,[],1,0,0,0,Bcv,0,F,[],1,0,()=>ANl(),0,Bz2,0,F,[],1,0,()=>BI2(),["p",G(DMO)],CxU,0,F,[],32768,0,()=>BDA(),0,Eqe,0,F,[],0,0,0,0,Cxw,0,F,[Eo],1,0,0,0,Cxt,0,F,[Eo],1,0,0,0,AGU,0,T$,[],17,0,0,["p",G(E7O),"GG",G(DXy),"Fq",G(DB3),"R0",M(Eog),"Rs",M(EQd),"WL", +G(Bd1)],Eno,0,F,[],1,0,0,0,CvL,0,C7,[],1,0,0,0,BMq,0,F,[],1,0,()=>Bhd(),0,A0z,0,Bx,[],65553,0,()=>SQ(),0,ADB,0,F,[],1,0,0,0,A95,0,Bx,[],65553,0,()=>Ru(),0,Eie,0,F,[],17,0,0,0,Bbz,0,Pn,[],1,0,0,["m9",BF(Du6),"cn",W(DwT),"m6",G(EuK),"m5",G(EOi)],DlN,0,F,[],1,0,()=>AUa(),0,AWr,0,F,[],1537,0,0,0,DrQ,0,F,[AWr],1,0,0,["Bl",Bu(DMF)],A13,0,Bx,[],65553,0,()=>Vp(),0,A$S,0,Bx,[],65553,0,()=>APw(),0,A9V,0,Bx,[],65553,0,()=>QQ(),0,Dfw,0,F,[],1,0,0,["dp",G(D7v),"cx",M(ETj)],AQM,0,Bx,[],65553,0,()=>HK(),0,AO_,0,Bx,[],65553, +0,()=>ASa(),0,AFn,0,F,[],1,0,0,0,BFV,0,F,[],1,0,()=>BOA(),0,A$a,0,Bx,[],65553,0,()=>AHn(),0,Ix,0,F,[],1025,0,()=>K0(),0,BUt,0,F,[],1,0,()=>AF6(),0,CiX,0,F,[AWr],1,0,0,["Bl",Bu(DNO)],DhT,0,F,[],17,0,0,0,C7p,0,F,[MX],1,0,0,["dT",M(EF2)],DiR,0,F,[MX],1,0,0,["dT",M(EZB)],BtC,0,Ma,[A0$],1,0,0,["R0",M(Ei2),"p",G(E4T),"GH",M(EPs)],CdQ,0,F,[],1,0,0,0,QU,0,F,[BtX,C1],1537,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],Fc,0,F,[QU],1025,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"Xs",G(Cr),"p",G(DcW),"Xm",G(DFr), +"bDp",G(EAq),"bBm",W(BSj),"Xl",G(DAt),"a33",G(DFt),"bDq",G(EV2),"a32",M(Dj),"cF",M(D5E)],CyM,"FtileGroup",64,Fc,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a33",G(EP8),"Xm",G(EyN),"a34",G(Fwy),"a35",G(DOI),"a36",G(Ecl),"a31",M(Eev),"cC",M(D5V)],ByE,0,F,[F1],1,0,()=>Bxa(),0,CjU,0,FA,[],1,0,0,0,BBZ,0,F,[],1,0,0,0,CGS,0,Dd,[],1,0,0,0]); +Em([B_O,0,QP,[],0,0,0,["UO",M(EM),"dV",G(D9m),"dX",G(Eg_)],BG8,0,Do,[],0,0,()=>BsB(),["NY",BF(EC7)],BVv,0,F,[],1,0,()=>UI(),0,Ct$,0,Do,[],0,0,0,["NY",BF(DDg)],BQl,"ComplementInColors",27,F,[LL],1,[0,0,0],0,["KK",G(DwQ),"Vo",W(D0U)],Ct9,0,Do,[],0,0,0,["NY",BF(D13)],B1$,0,Do,[],0,0,0,["NY",BF(FrQ)],Dbk,"ComplementDuration",27,F,[LL],1,[0,0,0],0,["KK",G(Du_),"Vo",W(DPe)],Dac,0,Do,[],0,0,0,["NY",BF(E5O)],Cqg,"ComplementTimePoint",27,F,[LL],1,[0,0,0],0,["KK",G(EJh),"Vo",W(EIL)],Dad,0,Do,[],0,0,0,["NY",BF(EOf)],Cwf, +"PairOfSomething",27,F,[LL],1,[0,0,0],0,["Vo",W(ERe),"KK",G(Dyz)],A0s,0,F,[LL],1024,0,0,0,BI9,"ComplementBeforeOrAfterOrAtTaskStartOrEnd",27,A0s,[],1,[0,0,0],0,["KK",G(Dn6),"Vo",W(DrW)],C4V,0,F,[LL],1,0,0,0,Daa,0,Do,[],0,0,0,["NY",BF(ExY)],Dab,0,Do,[],0,0,0,["NY",BF(EVE)],Dag,0,Do,[],0,0,0,["NY",BF(D8a)],Dah,0,Do,[],0,0,0,["NY",BF(DGB)],Dae,0,Do,[],0,0,0,["NY",BF(Edp)],CnR,"ComplementInColorsFromTo",27,F,[LL],1,[0,0,0],0,["KK",G(D9j),"Vo",W(Fo6)],Daf,0,Do,[],0,0,0,["NY",BF(ErO)],C3P,0,Do,[],0,0,0,["NY",BF(Fij)],C3Q, +0,Do,[],0,0,0,["NY",BF(Fu0)],CEZ,"ComplementFromTo",27,F,[LL],1,[0,0,0],0,["KK",G(Fa2),"Vo",W(EZT)],C3R,0,Do,[],0,0,0,["NY",BF(FpD)],C3Z,0,Do,[],0,0,0,["NY",BF(Fbn)],C30,0,Do,[],0,0,0,["NY",BF(Dwz)],C31,0,Do,[],0,0,0,["NY",BF(DMw)],C33,0,Do,[],0,0,0,["NY",BF(EXJ)],BOY,"ComplementNamed",27,F,[LL],1,[0,0,0],0,["KK",G(EcV),"Vo",W(FjU)],C34,0,Do,[],0,0,0,["NY",BF(EEJ)],Cvx,"ComplementDeleted",27,F,[LL],1,[0,0,0],0,["KK",G(EHm),"Vo",W(Frv)],C35,0,Do,[],0,0,0,["NY",BF(EDs)],CQQ,"ComplementCompleted",27,F,[LL],1,[0,0,0], +0,["KK",G(EY9),"Vo",W(EVP)],C36,0,Do,[],0,0,0,["NY",BF(D3P)],BhU,"ComplementIntervals",27,F,[LL],1,[0,0,0],0,["KK",G(DSd),"Vo",W(En8)],C3V,0,Do,[],0,0,0,["NY",BF(DW_)],CGq,"ComplementIntervalsSmart",27,A0s,[],1,[0,0,0],0,["KK",G(Ev9),"Vo",W(Ff1)],C3W,0,Do,[],0,0,0,["NY",BF(DKs)],C3X,0,Do,[],0,0,0,["NY",BF(Fep)],BB$,"ComplementDayOfWeek",27,F,[LL],1,[0,0,0],0,["KK",G(DTP),"Vo",W(EOM)],C3Y,0,Do,[],0,0,0,["NY",BF(ECp)],Cwq,"ComplementUrl",27,F,[LL],1,[0,0,0],0,["KK",G(Ff2),"Vo",W(Eoa)],C39,0,Do,[],0,0,0,["NY", +BF(FrP)],CNS,"ComplementAnything",27,F,[LL],1,[0,0,0],0,["KK",G(D$U),"Vo",W(D4G)],CbI,0,Do,[],0,0,0,["NY",BF(EqG)],CsZ,"ComplementTask",27,F,[LL],1,[0,0,0],0,["KK",G(FaU),"Vo",W(Eym)],CbH,0,Do,[],0,0,0,["NY",BF(Ezl)],CbK,0,Do,[],0,0,0,["NY",BF(D7Q)]]); +Em([CbJ,0,Do,[],0,0,0,["NY",BF(DNV)],Cby,0,Do,[],0,0,0,["NY",BF(DXH)],Cbx,0,Do,[],0,0,0,["NY",BF(DQG)],CbA,0,Do,[],0,0,0,["NY",BF(Fgk)],Cbz,0,Do,[],0,0,0,["NY",BF(ECM)],CNb,0,Do,[],0,0,0,["NY",BF(Fw0)],BmF,"ComplementClose",27,F,[LL],1,[0,0,0],0,["KK",G(Etf),"Vo",W(Du0)],CNc,0,Do,[],0,0,0,["NY",BF(Ez8)],BjZ,"ComplementOpen",27,F,[LL],1,[0,0,0],0,["KK",G(Dt7),"Vo",W(DKz)],CNd,0,Do,[],0,0,0,["NY",BF(Fd0)],Bpp,"ComplementInColors2",27,F,[LL],1,[0,0,0],0,["KK",G(EOG),"Vo",W(EqL)],CNe,0,Do,[],0,0,0,["NY",BF(Fak)],Cid, +0,Do,[],0,0,0,["NY",BF(EE4)],Cif,0,Do,[],0,0,0,["NY",BF(Fd8)],Cie,0,Do,[],0,0,0,["NY",BF(DKF)],Cfj,0,Do,[],0,0,0,["NY",BF(Enb)],Cfk,0,Do,[],0,0,0,["NY",BF(D3y)],Cfi,0,Do,[],0,0,0,["NY",BF(Ebw)],BYH,0,Do,[],0,0,()=>Bte(),["NY",BF(D9U)],BYI,0,Do,[],0,0,()=>Btg(),["NY",BF(EWP)],BYJ,0,Do,[],0,0,()=>Btf(),["NY",BF(ENU)],Drr,0,Do,[],0,0,0,["NY",BF(DAI)],CEg,"ComplementWorkingHours",27,F,[LL],1,[0,0,0],0,["KK",G(FuV),"Vo",W(Dzw)],CmW,0,F,[],1,0,0,0,Cju,0,F,[BNJ],0,0,0,0,CAp,"JsonNumber",36,T5,[],0,[0,0,0],0,["p",G(DP3), +"vl",M(ECi),"uj",G(E4I),"dp",G(EYz),"cx",M(E$U)],DqV,0,F,[],0,0,0,0,CCe,0,SF,[],1,0,0,["OG",M(EBN)],Bog,0,A2K,[ET],16,0,0,["XA",M(Dwj),"cx",M(ELY),"dp",G(EzC),"p",G(Ekt)],CFh,0,F,[],17,0,0,0,CbT,0,F,[],17,0,0,0,Cqz,0,F,[],1537,0,0,0,DgG,0,F,[Cqz],1,0,0,0,CHK,0,F,[Ie],1537,0,0,0,BOJ,0,F,[CHK],1,0,()=>BN1(),0,TG,0,F,[],1537,0,0,0,TY,0,F,[TG],1025,0,0,0,Dr$,0,TY,[],1,0,0,["Td",G(FkA),"Dl",G(CFn)],BSS,0,TY,[],1,0,()=>B1N(),["Td",G(FbV),"Dl",G(CfV)],BNg,0,TY,[],1,0,()=>BOT(),["Td",G(DT_),"Dl",G(CHm)],BDz,0,TY,[], +1,0,()=>B1K(),["Td",G(FmN),"Dl",G(CRG)],CE8,0,F,[Eo],1,0,0,0,APN,0,F,[],1537,0,0,["Tf",G(Ql)],CDg,0,F,[Ht],0,0,0,["cC",M(EuH)],CR3,0,F,[],17,0,0,0,Wy,0,F,[ATp],1,0,0,["a$C",M(EPT)],H2,0,Wy,[ATp],17,0,()=>AV1(),["p",G(DHI),"a73",M(E4X)],CHz,0,F,[],1,0,()=>Qp(),0,EUo,0,F,[],1,0,0,0,Drt,0,F,[],1,0,()=>Bxf(),0]); +Em([Wi,0,CA,[],1,0,0,0,DbJ,0,Wi,[],17,0,0,0,FB,0,CA,[],17,0,0,["p",G(FeK)],CuV,0,Er,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(DIA)],C95,0,Wi,[],17,0,0,0,CR_,0,F,[],1,0,0,0,ECw,0,F,[],1,0,0,0,SR,0,Ma,[UL],1,0,0,["p",G(DyI),"R0",M(Cxa)],CjK,0,F,[ET,Iu],1,0,0,0,Csp,0,F,[],1,0,0,0,C3w,0,F,[],0,0,()=>BtH(),0,C2q,0,F,[OW],1,0,0,["fc",W(DKj)],C1k,0,F,[],17,0,()=>BuW(),0,Tg,0,Ma,[UL,A7p,X$],17,0,0,["R0",M(C4S),"p",G(FjW),"bfI",G(DQq)],A1w,0,Bx,[],65553,0,()=>ACc(),0,A25,0,Bx,[],65553,0,()=>ADa(), +0,A6D,0,Bx,[],65552,0,()=>ARW(),0,CNB,0,F,[AWr],1537,0,0,0,DdI,0,F,[],1537,0,0,0,B0F,0,F,[CNB,DdI],1,0,()=>AFl(),["Bl",Bu(Fba)],C4f,0,F,[],1,0,0,["p",G(Enn)],BJs,0,F,[],1,0,0,0,D2u,0,F,[],1,0,0,0,AKJ,0,Bx,[],65553,0,()=>AWN(),0,F6,0,F,[],1025,0,0,["bpT",G(EoV),"a2m",G(EKH)],A60,0,Bx,[],65553,0,()=>AO4(),0,Dfv,0,F,[],1,0,()=>BE1(),0,BYn,0,AAl,[],1,0,0,0,BIq,0,F,[],1536,0,0,0,B5p,0,BYn,[BIq],1,0,0,["tW",G(A8a),"BK",BF(CKw),"Cq",G(EWt)],CYb,0,F,[],1,0,0,0,Bjk,0,F,[],1,0,()=>AF1(),0,A2n,0,Bx,[],65553,0,()=>AFS(), +0,CN_,0,F,[],1,0,0,0,BiU,0,C7,[],1,0,0,0,Cf$,0,F6,[],0,0,0,["JS",G(D$6),"a0U",function(b,c,d,e,f){return DOR(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return FxN(this,b,c,d,e,f,g,h);}],Sr,0,F6,[],1024,0,0,["a0U",function(b,c,d,e,f){return BHg(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return B6H(this,b,c,d,e,f,g,h);}],BF3,0,Sr,[],0,0,0,["JS",G(E8B),"a6B",M(EkG)],BZC,0,Sr,[],1,0,0,["JS",G(EWh),"a6B",M(EUg),"a4d",function(b,c,d,e,f,g,h){return Fwp(this,b,c,d,e,f,g,h);},"a0U",function(b,c,d,e,f){return DEB(this, +b,c,d,e,f);}],CHY,0,F6,[],0,0,0,["JS",G(Fo7),"a0U",function(b,c,d,e,f){return DCX(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return D0u(this,b,c,d,e,f,g,h);}],Cte,0,F6,[],0,0,0,["JS",G(Exh),"a0U",function(b,c,d,e,f){return ESe(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return Fvj(this,b,c,d,e,f,g,h);}],Cls,0,Sr,[],0,0,0,["JS",G(DwX),"a6B",M(EHq)],CpT,0,F6,[],0,0,0,["JS",G(DDD),"a0U",function(b,c,d,e,f){return E8u(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return ElA(this,b,c,d,e,f,g,h);}],Dnc, +0,F6,[],0,0,0,["JS",G(Eiz),"a0U",function(b,c,d,e,f){return DCl(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return ERz(this,b,c,d,e,f,g,h);}],Cl8,0,F6,[],0,0,0,["JS",G(DFx),"a0U",function(b,c,d,e,f){return E5l(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return DMB(this,b,c,d,e,f,g,h);}],Dn5,0,F6,[],0,0,0,["JS",G(Fxc),"a0U",function(b,c,d,e,f){return EZR(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return Frz(this,b,c,d,e,f,g,h);}],Dn3,0,F6,[],0,0,0,["JS",G(DTK),"a0U",function(b,c,d,e,f){return D0D(this, +b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return E2r(this,b,c,d,e,f,g,h);}],Cup,0,Sr,[],0,0,0,["JS",G(Dym),"a6B",M(ELh)],Cq7,0,F6,[],0,0,0,["JS",G(D_4),"a0U",function(b,c,d,e,f){return FvT(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return DQK(this,b,c,d,e,f,g,h);},"bpT",G(EKL)],CJz,0,Sr,[],0,0,0,["JS",G(Em9),"a6B",M(Dx$)]]); +Em([C2F,0,F6,[],0,0,0,["JS",G(FqQ),"a0U",function(b,c,d,e,f){return FkK(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return EiD(this,b,c,d,e,f,g,h);}],CO1,0,F6,[],1,0,0,["p",G(EB8),"JS",G(FjX),"a0U",function(b,c,d,e,f){return EHR(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return DvT(this,b,c,d,e,f,g,h);}],CiO,0,F6,[],0,0,0,["JS",G(EKq),"a0U",function(b,c,d,e,f){return Egv(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return DEP(this,b,c,d,e,f,g,h);}],BV1,0,F6,[],1,0,0,["JS",G(E2O),"a0U",function(b, +c,d,e,f){return D6C(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return EAG(this,b,c,d,e,f,g,h);}],Dor,0,Sr,[],1,0,0,["JS",G(Eee),"a6B",M(Fb2),"a4d",function(b,c,d,e,f,g,h){return D98(this,b,c,d,e,f,g,h);},"a0U",function(b,c,d,e,f){return EwO(this,b,c,d,e,f);}],CcI,0,F6,[],0,0,0,["JS",G(EgY),"a0U",function(b,c,d,e,f){return EUG(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return Ewv(this,b,c,d,e,f,g,h);}],CEL,0,F6,[],0,0,0,["JS",G(D5A),"a0U",function(b,c,d,e,f){return EQu(this,b,c,d,e,f);},"a4d",function(b, +c,d,e,f,g,h){return Ek9(this,b,c,d,e,f,g,h);},"bpT",G(EwT),"a2m",G(E5N)],Cha,0,F6,[],0,0,0,["JS",G(DWX),"a0U",function(b,c,d,e,f){return D1K(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return DAq(this,b,c,d,e,f,g,h);}],C9q,0,F6,[],0,0,0,["JS",G(EuB),"a0U",function(b,c,d,e,f){return Eq2(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return DXP(this,b,c,d,e,f,g,h);}],CT9,0,F6,[],0,0,0,["JS",G(EO8),"a0U",function(b,c,d,e,f){return EEn(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return EFB(this,b,c,d,e, +f,g,h);}],C_7,0,F6,[],0,0,0,["JS",G(EaX),"a0U",function(b,c,d,e,f){return FaA(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return D9T(this,b,c,d,e,f,g,h);}],C_Q,0,F6,[],0,0,0,["JS",G(E1B),"a0U",function(b,c,d,e,f){return EkP(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return EOo(this,b,c,d,e,f,g,h);}],C9W,0,F6,[],0,0,0,["JS",G(Fkc),"a0U",function(b,c,d,e,f){return EWa(this,b,c,d,e,f);},"a4d",function(b,c,d,e,f,g,h){return D$Q(this,b,c,d,e,f,g,h);}],BO3,0,F,[BGF],1,0,()=>Bfy(),["gQ",M(Cs4),"jm",W(Cb2), +"gS",W(EBm)],B6S,0,F,[],1537,0,0,0,AMS,0,F,[B6S],1537,0,0,0,CTs,0,F,[],16,0,0,0,C2o,0,F,[],1,0,0,0,BMB,0,Er,[AJM],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(DDc)],AZG,0,Bx,[],65553,0,()=>R7(),0,BV$,0,TY,[],1,0,()=>B1f(),["Td",G(Ege),"Dl",G(DdL)],BMp,0,TY,[],1,0,()=>B1W(),["Td",G(Eem),"Dl",G(B$y)],Ci_,0,F,[TG],1,0,0,["Td",G(ExR),"Dl",G(Ci$)],CTr,0,F,[TG],1,0,0,["Td",G(E$2),"Dl",G(CQE)],C_9,0,F,[TG],1,0,0,["Td",G(DIq),"Dl",G(C$Q)],CDu,0,F,[TG],1,0,0,["Td",G(DZO),"Dl",G(Cn9)],CZ8,0,F,[TG],1,0,0, +["Td",G(EKw),"Dl",G(CBH)],Cla,0,F,[TG],1,0,0,["Td",G(DRs),"Dl",G(CEN)],Da9,0,F,[TG],1,0,0,["Td",G(E8F),"Dl",G(COM)],CFp,0,F,[TG],1,0,0,["Td",G(EoM),"Dl",G(B$4)],DkD,0,F,[TG],1,0,0,["Td",G(DH3),"Dl",G(B_T)],CSz,0,F,[TG],1,0,0,["Td",G(FbE),"Dl",G(CCO)],Dbt,0,F,[TG],1,0,0,["Td",G(DDw),"Dl",G(Dl_)],Ub,0,F,[],1,0,0,["p",G(EQL)],Bjb,0,CA,[],17,0,0,0,C8W,0,F,[],17,0,()=>Bf(),0,Ceh,0,F,[],1,0,()=>Ji(),0,ER5,0,F,[],1,0,0,0,CfW,0,CA,[],17,0,0,0,DF8,0,F,[],1,0,0,0,ES6,0,F,[],1,0,0,0,C8M,0,CA,[],17,0,0,0,DfK,0,F,[],17, +0,()=>BX(),0,DNB,0,F,[],1,0,0,0,C$3,0,CA,[],17,0,0,0,Cze,0,F,[],1,0,()=>ANA(),0,Ftd,0,F,[],1,0,0,0,CMO,0,CA,[],17,0,0,0,Cur,0,F,[],17,0,()=>JT(),0,Oh,0,F,[],17,0,0,0]); +Em([A2C,0,Bx,[],65553,0,()=>Ej(),0,EaO,0,F,[],1,0,0,0,B$l,0,CA,[],17,0,0,0,C$f,0,Wy,[],17,0,0,0,Cb8,0,CA,[],17,0,0,0,CI4,0,F,[],1,0,0,0,CNr,0,F,[OW],0,0,0,0,C5N,0,F,[],32768,0,()=>BGv(),0,A9L,0,Bx,[],65553,0,()=>AGz(),0,ZO,0,F,[],1537,0,0,0,C8y,0,F,[ZO],0,0,0,["IG",M(DAh),"Sq",G(DO6)],C8x,0,F,[ZO],0,0,0,["IG",M(DM8),"Sq",G(Flb)],C8w,0,F,[ZO],0,0,0,["IG",M(D4W)],DfE,0,F,[],0,0,0,0,C8E,0,F,[ZO],0,0,0,["IG",M(ETB),"Sq",G(Err)],C8v,0,F,[ZO],0,0,0,["IG",M(Fid),"Sq",G(Dwl)],C8B,0,F,[ZO],0,0,0,["IG",M(Etc),"Sq",G(D_J)],C8u, +0,F,[ZO],0,0,0,["IG",M(Ey$),"Sq",G(D6O)],CMi,0,F,[AWr],1,0,0,["Bl",Bu(EUJ)],BWo,"NoPlantumlCompressionException",21,Dd,[],1,0,0,0,C6S,0,F,[AWr],1,0,0,["Bl",Bu(DIF)],C1S,0,Ix,[],0,0,0,["bqx",function(b,c,d,e,f){CZ$(this,b,c,d,e,f);}],Clp,0,Ix,[],0,0,0,["bqx",function(b,c,d,e,f){D$M(this,b,c,d,e,f);}],C89,0,Ix,[],0,0,0,["bqx",function(b,c,d,e,f){E9E(this,b,c,d,e,f);}],CkX,0,Ix,[],0,0,0,["bqx",function(b,c,d,e,f){DER(this,b,c,d,e,f);}],Dr1,0,Ix,[],0,0,0,["bqx",function(b,c,d,e,f){Eit(this,b,c,d,e,f);}],Dsl,0,Ix, +[],0,0,0,["bqx",function(b,c,d,e,f){End(this,b,c,d,e,f);}],CLT,0,Ix,[],0,0,0,["bqx",function(b,c,d,e,f){FdD(this,b,c,d,e,f);}],CJM,0,Ix,[],0,0,0,["bqx",function(b,c,d,e,f){Epf(this,b,c,d,e,f);}],CnQ,0,Ix,[],0,0,0,["bqx",function(b,c,d,e,f){Fft(this,b,c,d,e,f);}],Crs,0,Ix,[],0,0,0,["bqx",function(b,c,d,e,f){Dxs(this,b,c,d,e,f);}],DlY,0,Ix,[],0,0,0,["bqx",function(b,c,d,e,f){DUu(this,b,c,d,e,f);}],C92,0,Ix,[],0,0,0,["bqx",function(b,c,d,e,f){Dyl(this,b,c,d,e,f);}],DgD,0,Ix,[],0,0,0,["bqx",function(b,c,d,e,f){ +DB_(this,b,c,d,e,f);}],C9L,0,Ix,[],0,0,0,["bqx",function(b,c,d,e,f){DVO(this,b,c,d,e,f);}],B9s,0,F,[BIq,Iu],1,0,0,0,DiD,0,AAl,[],1,0,0,["Cq",G(DA3),"tW",G(Fin),"BK",BF(DNI)],CAy,0,F,[A4d],1,0,0,0,C1$,0,F,[],1537,0,0,0,Dao,0,F,[C1$],1,0,0,0,C3N,0,F,[MX],1,0,0,["dT",M(D8r)],A8P,0,Bx,[],65553,0,()=>Pb(),0,B0k,0,F,[Ht],1537,0,0,["Tv",W(BQG)],Cog,0,F,[],1,0,0,0,B50,0,F,[ARf],1,0,0,["p",G(EFx)],CUR,0,F,[],1,0,0,0,BL0,0,F,[],1537,0,0,0,B9z,0,F,[BL0],1,0,0,0,CjC,0,F,[],1,0,0,0,CId,0,F,[BL0],1,0,0,0]); +Em([CVn,0,F,[],1,0,0,["p",G(For)],AGq,0,CA,[],17,0,0,["a73",M(D6T),"a$C",M(D4v)],Dg5,0,CA,[],17,0,0,0,Cm9,0,CA,[],17,0,0,0,BgJ,0,CA,[],17,0,0,0,Cb$,0,CA,[],17,0,0,0,Cnw,0,CA,[],17,0,0,0,A5K,0,CA,[],17,0,0,0,BBz,0,CA,[],17,0,0,0,Cry,0,F,[],1,0,()=>VS(),0,BFS,0,CA,[],17,0,0,0,TZ,0,CA,[],17,0,0,0,AUO,0,CA,[],17,0,0,["p",G(ErC)],Cbv,0,CA,[],17,0,0,0,BT8,0,F,[],1537,0,0,0,CIq,0,CA,[BT8],17,0,0,0,Dr_,0,CA,[],17,0,0,0,BVj,0,CA,[],17,0,0,0,Cqd,0,CA,[],17,0,0,0,CGY,0,CA,[],17,0,0,0,CFA,0,CA,[],17,0,0,0,Dnl,0,AHa,[], +17,0,0,0,Cg6,0,F,[],1,0,()=>ADz(),0,AZb,0,Bx,[],65553,0,()=>Wn(),0,C2E,0,F,[],1,0,()=>Lt(),0,Cd4,0,F,[],1,0,()=>AJQ(),0,Cpf,0,F,[],1,0,()=>Zg(),0,DdK,0,F,[],1,0,()=>ATl(),0,CDs,0,F,[],1,0,()=>Q8(),0,C3v,0,F,[],1,0,()=>Kf(),0,CN2,0,F,[],1,0,()=>Jf(),0,Czz,0,F,[],1,0,()=>Gd(),0,C$q,0,F,[ATp],1537,0,0,0,C$,0,Wy,[C$q],1025,0,0,["a74",function(b,c,d,e,f){return D_O(this,b,c,d,e,f);},"a5q",Bu(Ekq)],CsP,0,C$,[],0,0,0,["a5e",W(E1n),"a74",function(b,c,d,e,f){return EfE(this,b,c,d,e,f);}],CNH,0,CA,[],17,0,0,0,C1d,0,CA, +[],17,0,0,0,CtS,0,CA,[],17,0,0,0,BPD,0,AHa,[],17,0,()=>B66(),["a73",M(DMq)],Com,0,F,[],1,0,0,0,Cum,0,F,[],0,0,0,0,Ckq,0,CA,[],17,0,0,0,Do3,0,F,[],1,0,()=>B13(),0,AZo,0,Bx,[],65553,0,()=>BaY(),0,Fh7,0,F,[],1,0,0,0,C42,0,F,[],1,0,()=>OP(),0,C3S,0,CA,[],17,0,0,0,A7m,0,Bx,[],65553,0,()=>Bn3(),0,Cb5,0,F,[],1,0,()=>Hz(),0,Cdn,0,CA,[],17,0,0,0]); +Em([FpP,0,F,[],1,0,0,0,B0h,0,Wi,[],17,0,0,0,E8T,0,F,[],1,0,0,0,Cqu,0,F,[],0,0,0,["p",G(EXP)],DB5,0,F,[],0,0,0,0,D4j,0,F,[],0,0,0,0,BaP,0,Bx,[],65552,0,()=>AQv(),0,C8z,0,F,[ZO],0,0,0,["IG",M(D42)],C8A,0,F,[ZO],0,0,0,["IG",M(FlI)],BQ4,0,F,[],1,0,()=>Byh(),0,Ddi,0,F,[],1,0,0,0,Bbw,0,F,[],1,0,()=>Blx(),["bdn",G(EiL)],Ck2,0,ASs,[],17,0,0,0,BaR,0,F,[],1537,0,0,0,BVD,0,F,[BaR],1,0,()=>B6M(),0,A1f,0,F,[],1537,0,0,0,Ce1,0,F,[A1f],1,0,0,0,C10,0,F,[BaR],1,0,0,0,C0v,0,F,[A1f],1,0,0,0,Bh1,0,F,[BaR],1,0,0,0,Cka,0,F,[A1f], +1,0,0,0,AZ8,0,F,[BaR],1025,0,0,0,CJy,0,AZ8,[],1,0,0,0,CZr,0,AZ8,[],1,0,0,0,DqL,0,F,[A1f],1,0,0,0,CUu,0,F,[],1,0,()=>Bqy(),0,BB6,0,F,[],1,0,0,0,AGW,0,F,[AMS],1025,0,0,0,BlI,0,AGW,[AMS],1,0,0,["Gb",M(Fll),"a4z",M(Ffq),"a4A",M(D$N),"p",G(ETI),"Qk",G(BLe),"Ql",G(D0I),"TM",M(Coj),"TI",M(Cl4),"a4w",M(DtR),"KC",M(ExV),"Oe",W(DUo),"a4u",M(FrA),"a4y",M(Fie),"KO",W(EGp)],CE$,0,F,[],1,0,0,0,CI3,0,F,[],1,0,0,["p",G(EZx)],AAD,0,F,[],17,0,0,0,E_7,0,F,[],1,0,0,0,AAj,0,F,[AJM],1537,0,0,["bfi",G(LN),"bfj",G(Lw)],Bac,0,Bx,[ABO], +65553,0,()=>FX(),0,CW3,0,F,[],1,0,0,0,BHY,0,F,[],1,0,()=>BlC(),0,WT,0,CA,[],1,0,0,["a$C",M(BE3),"a73",M(EXe)],D$h,0,F,[],1,0,0,0,BYR,0,CA,[],17,0,0,0,E12,0,F,[],1,0,0,0,Cxo,0,C$,[],0,0,0,0,Cxp,0,C$,[],0,0,0,0,ClF,0,CA,[],17,0,0,["a73",M(Dt8)],E_j,0,F,[],1,0,0,0,CnD,0,F,[],1,0,()=>AZg(),0,A3G,0,Bx,[],65553,0,()=>Bko(),0,CpL,0,Wi,[],17,0,0,0,CYl,0,CA,[],17,0,0,["p",G(Eh3)],A1F,0,Bx,[],65553,0,()=>AWj(),0]); +Em([BPK,0,WT,[],17,0,0,["a73",M(Fp8)],EII,0,F,[],0,0,0,0,C2x,0,F,[],0,0,()=>Ol(),0,CGm,0,F,[X$],1,0,0,["p",G(Esv)],DpR,0,AJY,[Yb],0,0,0,["RG",G(FkS),"RN",M(BPS),"Rv",M(Ed1),"RO",M(Fv3)],B7e,0,AJY,[Yb],0,0,()=>A$l(),["RG",G(ECu),"RN",M(CSl),"Rv",M(FvA),"RO",M(EQZ),"YB",G(DbG)],Dm1,0,C$,[],0,0,0,["a5e",W(FcX)],Dm0,0,C$,[],0,0,0,0,DmZ,0,C$,[],0,0,0,0,DmY,0,C$,[],0,0,0,0,DmX,0,C$,[],0,0,0,0,DmW,0,C$,[],0,0,0,0,DmV,0,C$,[],0,0,0,0,DmU,0,C$,[],0,0,0,0,DmT,0,C$,[],0,0,0,0,Ckz,0,C$,[],0,0,0,["a5e",W(Efv),"a5q",Bu(A$5)],C5S, +0,C$,[],0,0,0,["a5e",W(D3r),"a74",function(b,c,d,e,f){return Fok(this,b,c,d,e,f);}],C5T,0,C$,[],0,0,0,["a5e",W(DKV),"a74",function(b,c,d,e,f){return D_j(this,b,c,d,e,f);}],Cu_,0,C$,[],0,0,0,["a5e",W(DZI)],Cva,0,C$,[],0,0,0,0,CyB,0,C$,[],0,0,0,0,CyA,0,C$,[],0,0,0,0,Cyz,0,C$,[],0,0,0,0,Cyy,0,C$,[],0,0,0,0,Cyx,0,C$,[],0,0,0,0,Cyv,0,C$,[],0,0,0,0,Cyu,0,C$,[],0,0,0,0,Df1,0,C$,[],0,0,0,0,Df0,0,C$,[],0,0,0,0,Df3,0,C$,[],0,0,0,0,Df2,0,C$,[],0,0,0,0,CFX,0,C$,[],0,0,0,["a5e",W(ENE),"a74",function(b,c,d,e,f){return FrW(this, +b,c,d,e,f);}],CFW,0,C$,[],0,0,0,["a5e",W(Es8),"a74",function(b,c,d,e,f){return Dy3(this,b,c,d,e,f);}],CFV,0,C$,[],0,0,0,0,C_T,0,C$,[],0,0,0,["a5e",W(EKs)],CDL,0,C$,[],0,0,0,["a5e",W(EqQ)],CDI,0,C$,[],0,0,0,0,CDK,0,C$,[],0,0,0,["a5e",W(D$p)],CDO,0,C$,[],0,0,0,["a5e",W(D69)],CDP,0,C$,[],0,0,0,["a5e",W(ERb)],CDM,0,C$,[],0,0,0,0,CDN,0,C$,[],0,0,0,["a5e",W(EOU)],CEd,0,C$,[],0,0,0,0,CEe,0,C$,[],0,0,0,["a5e",W(FjI)],CnP,0,C$,[],0,0,0,["a5e",W(Dxg)],CnN,0,C$,[],0,0,0,["a5e",W(EqI)],CnM,0,C$,[],0,0,0,0,CK7,0,C$,[],0, +0,0,0,CK6,0,C$,[],0,0,0,0,CK5,0,C$,[],0,0,0,["a5e",W(ELb)]]); +Em([CK4,0,C$,[],0,0,0,["a5e",W(EuD)],D4E,0,F,[],1,0,0,0,DAD,0,F,[],1,0,0,0,CG7,0,Wi,[],17,0,0,0,CkZ,0,CA,[],17,0,0,0,CW_,0,CA,[],17,0,0,0,E7p,0,F,[],1,0,0,0,EKk,0,F,[],1,0,0,0,C8N,0,F,[],1,0,()=>Bjn(),0,CcT,0,C$,[],0,0,0,0,CfZ,0,C$,[],0,0,0,0,Cf0,0,C$,[],0,0,0,0,E64,0,F,[],1,0,0,0,EOQ,0,F,[],1,0,0,0,Eeh,0,F,[],17,0,0,0,BnC,0,WT,[],17,0,0,0,DhW,0,CA,[],17,0,0,0,DjB,0,CA,[],17,0,0,0,BGJ,0,F,[ATp],1537,0,0,0,B6P,0,CA,[BGJ],17,0,0,0,CDp,0,CA,[],17,0,0,0,CJ7,0,CA,[],17,0,0,0,CUi,0,CA,[],17,0,0,0,CJh,0,CA,[],17,0, +0,["p",G(ESE)],CZG,0,CA,[],17,0,0,0,BW6,0,CA,[BT8],17,0,0,["p",G(DwB),"a$C",M(D0K)],AKi,0,F,[],1537,0,0,0,Cx1,0,F,[AKi],0,0,0,["a3Z",M(Fm_),"pS",G(EPw)],CHB,0,Wy,[],17,0,0,0,CxY,0,F,[AKi],0,0,0,["a3Z",M(EfD),"pS",G(EJW)],B28,0,F,[AAj,Ht],1025,0,0,["bfi",G(LN),"bfj",G(Lw),"bfd",G(DGR),"a$b",G(CRq)],Hp,0,B28,[AAj],1025,0,()=>B6T(),["bfi",G(LN),"bfj",G(Lw),"a$a",G(EUq)],A6b,0,Hp,[],1025,0,0,["bfi",G(LN),"bfj",G(Lw)],Div,0,A6b,[],1,0,0,["bfi",G(LN),"bfj",G(Lw),"a$m",G(EsI),"p",G(Fj3),"a94",G(DXG),"a$a",G(EiX),"bfd", +G(DVm),"cC",M(EsW),"a64",G(CEm),"RS",G(EWk),"a95",G(DO4),"a96",G(DV4)],Bmj,0,A6b,[],1,0,0,["a$m",G(D9B),"a$a",G(A4s),"a94",G(DD9),"bfd",G(BFv),"cC",M(BXL),"a64",G(AZy),"RS",G(B3H),"a95",G(AUN),"a96",G(ASM),"bfi",G(BM9),"bfj",G(BYe)],BGu,0,Hp,[],1,0,0,["a$m",G(DW6),"a$a",G(E8X),"a94",G(DNU),"bfd",G(DDA),"cC",M(DCU),"a64",G(Cdz),"RS",G(Dtg),"a95",G(Ddg),"a96",G(Fh3),"bfi",G(DLf),"bfj",G(D$r)],B5t,0,Hp,[],1,0,0,["bfi",G(LN),"bfj",G(Lw),"a$m",G(EcL),"a$a",G(DQL),"a94",G(DFA),"bfd",G(D0v),"cC",M(Dt_),"a64",G(CeO), +"RS",G(EEA),"a95",G(EAE),"a96",G(EZ6)],B27,0,Hp,[],1,0,0,["a$m",G(Emi),"a$a",G(E$D),"a94",G(EPQ),"bfd",G(D86),"cC",M(Ef6),"a64",G(Cpb),"RS",G(DHo),"a95",G(EXh),"a96",G(C3K),"bfi",G(E7x),"bfj",G(EZF)],BDp,0,Hp,[],1,0,0,["bfi",G(LN),"bfj",G(Lw),"a$m",G(EOZ),"a$a",G(ETs),"a94",G(E91),"bfd",G(D3D),"cC",M(D_c),"a64",G(Czl),"RS",G(EQM),"a95",G(D3f),"a96",G(EsZ)],A7w,0,Hp,[],1025,0,0,["bfi",G(LN),"bfj",G(Lw),"a$m",G(Eh_),"a$a",G(EjS),"a94",G(DYK),"bfd",G(ELz),"a64",G(C8L),"RS",G(Fmg),"a95",G(Eqh),"a96",G(D2L)],Dkn, +0,A7w,[],1,0,0,["bfi",G(LN),"bfj",G(Lw),"cC",M(ELt)],C4_,0,A7w,[],1,0,0,["bfi",G(LN),"bfj",G(Lw),"cC",M(DxC)],CYu,0,Hp,[],1,0,0,["bfi",G(LN),"bfj",G(Lw),"a$m",G(Du1),"a94",G(DTV),"a$a",G(BK6),"cC",M(DW5),"a64",G(BL3),"RS",G(E6p),"bfd",G(FbK),"a95",G(DIO),"a96",G(DSc),"a$b",G(DAL)],ARr,0,Ma,[UL,Pj],1,0,0,["UO",M(EM),"R0",M(DGe)],A3W,0,Hp,[AAj],1,0,0,["bfi",G(LN),"bfj",G(Lw),"a$m",G(Few),"a$a",G(CzV),"a94",G(E4Y),"cC",M(D7M),"a64",G(C_V),"RS",G(Eag),"a95",G(C7_),"a96",G(Dce)],B80,0,Ma,[UL,X$,A_B],1,0,0,["R0", +M(DWV),"Rt",M(Eww)],Dk8,0,Hp,[AAj],1,0,0,["bfi",G(LN),"bfj",G(Lw),"a$m",G(Fpq),"a$a",G(Da$),"a94",G(D22),"cC",M(Fg6),"a64",G(BWB),"RS",G(ET5),"a95",G(Fah),"a96",G(FjA)],A58,0,Ma,[UL,X$],1025,0,0,["p",G(DQk)],B5a,0,A58,[],1,0,0,["bdO",G(BRQ),"R0",M(E_c),"bfI",G(DrJ)],B6v,0,Hp,[AAj],1,0,0,["bfi",G(LN),"bfj",G(Lw),"a$m",G(Fdw),"a94",G(ESs),"cC",M(Elt),"a64",G(Cig),"RS",G(Eiv),"a95",G(DVv),"a96",G(DNx)]]); +Em([AYJ,0,A58,[A_B,A0$],17,0,0,["bdO",G(B41),"R0",M(ERf),"bfI",G(Eta),"Rt",M(Fk7),"GH",M(EEN)],V9,0,Hp,[],1,0,0,["bfi",G(LN),"bfj",G(Lw),"a$m",G(EYa),"a$a",G(D3I),"a94",G(EI3),"bfg",M(Eh9),"cC",M(DGM),"bfK",M(DYu),"bfN",G(EXC),"bfM",Bu(EcW),"a64",G(BEh),"RS",G(DKi),"a95",G(CJd),"a96",G(Ec9)],Dgc,0,V9,[],1,0,0,["bfi",G(LN),"bfj",G(Lw),"bfg",M(E9i),"bfK",M(FxJ),"bfN",G(Fuj),"bfM",Bu(E0n)],BBs,0,Hp,[],1,0,0,["bfi",G(LN),"bfj",G(Lw),"a$m",G(E7A),"a$a",G(DKl),"a94",G(FuJ),"cC",M(E2E),"a64",G(CXb),"RS",G(DBF),"a95", +G(Dd6),"a96",G(FgY)],BW0,0,Ma,[UL,X$],1,0,0,["R0",M(EPp)],BAU,0,Hp,[AAj],1,0,0,["bfi",G(LN),"bfj",G(Lw),"a$m",G(DUg),"a94",G(EOr),"cC",M(D6P),"a64",G(CDx),"RS",G(DUy),"a95",G(Dy$),"a96",G(DH1)],BmY,0,Ma,[UL],1,0,0,["R0",M(DMm)],Cii,0,Hp,[AAj],1,0,0,["bfi",G(LN),"bfj",G(Lw),"a$m",G(Ful),"a94",G(EH3),"cC",M(ES0),"a64",G(CH$),"RS",G(DvP),"a95",G(CUv),"a96",G(EAt)],CnU,0,Hp,[AAj],1,0,0,["bfi",G(LN),"bfj",G(Lw),"a$m",G(EMI),"a94",G(EQS),"cC",M(ErX),"a64",G(C_g),"RS",G(DLz),"a95",G(EEL),"a96",G(Ef8)],BSO,0,Ma,[UL, +X$],1,0,0,["R0",M(D0W)],AYT,0,Hp,[],1,0,0,["bfi",G(LN),"bfj",G(Lw),"bfd",G(DHJ),"a$m",G(D1c),"a$a",G(EOW),"a94",G(DtN),"cC",M(DwH),"a64",G(CwB),"RS",G(DRg),"a95",G(Eik),"a96",G(Er2)],BjN,0,Hp,[],1,0,0,["bfi",G(LN),"bfj",G(Lw),"a$a",G(DYz),"a94",G(Fk3),"cC",M(DzA),"a64",G(BB4),"RS",G(E9I),"a95",G(D3L),"a96",G(D_E),"a$m",G(E3e)],Dmb,0,F,[],1,0,()=>Brs(),0,CcZ,0,C$,[],0,0,0,0,AX9,0,CA,[],17,0,0,0,BUn,0,F,[],16,0,()=>BPy(),0,A8s,0,F,[X$],1537,0,0,0,BKo,0,F,[A8s],1537,0,0,0,CWC,0,Bbw,[],0,0,0,["bdn",G(ErK)],Fd1, +0,F,[],1,0,0,0,Dnp,0,F,[AKi],0,0,0,["a3Z",M(ENJ),"pS",G(E4h)],Dnn,0,F,[AKi],0,0,0,["a3Z",M(E8v),"pS",G(EV_)],Dno,0,F,[AKi],0,0,0,["a3Z",M(ErR),"pS",G(Ewg)],Dnm,0,F,[AKi],0,0,0,["a3Z",M(EFo),"pS",G(Eo2)],B$L,0,C$,[],0,0,0,["a5e",W(FfP)],BZp,0,F,[],16,0,()=>APW(),0,Czy,0,C$,[],0,0,0,["a5e",W(Evn)],B5b,0,CA,[],17,0,0,0,BOi,0,F,[],16,0,()=>BuB(),0,BT6,0,F,[],16,0,()=>AGj(),0,A5C,0,Bx,[],65553,0,()=>YZ(),0,BWZ,0,F,[KH],1,0,0,["p",G(DK6),"u",M(EkM),"bL",G(E3P),"rL",W(EQY)],CLp,0,SF,[],1,0,0,["OG",M(EL7)],TM,0,F,[], +1537,0,0,0,C3a,0,F,[],1,0,0,["p",G(Eh0)],C$M,0,F,[],1537,0,0,0,Ch2,0,F,[C$M],0,0,0,0,AX3,0,F,[],1025,0,0,0,CNv,0,F,[C1],1,0,()=>B9a(),["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],D$9,0,F,[],17,0,0,0,A5X,0,Bx,[],65553,0,()=>ALk(),0,APV,0,F,[ARf],17,0,()=>Bfu(),0,A8Q,0,F,[],17,0,0,0,AUi,0,F,[],17,0,0,0,B2j,0,Er,[PD],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"g4",G(D3Z),"co",G(DG5),"mh",M(EXI),"cC",M(DZj),"a8$",G(EOB),"blh",M(FvU),"a2L",G(Ev3)],CcM,0,F,[],17,0,0,0,Ccw,0,Er,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W", +G(BK),"co",G(B6),"cC",M(CKU),"mh",M(E3I)],AGg,0,F,[],1,0,()=>Bx7(),0,CwD,0,F,[],1537,0,0,0,Cwa,0,F,[CwD],1,0,0,0]); +Em([CXQ,0,AEa,[Ie],0,0,0,["dZ",G(ALw)],CIi,0,F,[],1,0,0,0,BR$,0,F,[F1],1,0,0,["rl",M(DZ3)],CL3,0,F,[Ie],0,0,0,0,Dl2,0,AGP,[Ie],0,0,0,["dZ",G(D$j)],CT3,0,AX7,[],0,0,0,0,Cgz,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"cC",M(DLb),"cF",M(EoB),"co",G(FbI)],Cqx,0,F,[],1,0,0,0,CTe,0,F,[B1V],1,0,0,["MF",G(Ecd)],DoW,0,F,[Eo],1,0,0,0,DoV,0,F,[Eo],1,0,0,0,Cdm,0,F,[A_$],0,0,0,["dY",G(B2T),"dZ",G(A2v),"ey",G(CXm),"EP",G(E2v),"qq",G(DXb),"EO",G(EzP)],BdD,0,F,[],0,0,0,0,C8R,0,ADA,[],0,0,0,["RG",G(EQ_),"Rv",M(N8),"RO", +M(OC),"YA",M(BEo)],AD_,0,F,[BYO],1,0,0,["lu",G(Dwb),"a24",G(COA),"o6",BF(E0P),"lt",W(DcF),"H_",G(DxZ),"qV",Bu(Bhs),"qQ",M(Cd1),"HH",G(BUL),"Bk",M(FwI),"a9h",M(ADx),"beU",W(DZm),"rg",G(Ejv),"ri",G(Dgq),"a9A",G(CyE),"ly",G(A9p),"lv",G(D85),"AZ",M(CkS),"hr",G(CTh),"lw",G(Fsw),"bev",M(EJU),"a9P",G(B$g),"rj",G(DVA),"a4e",G(BFb),"bh4",G(DPh),"cp",G(ADg),"E0",BF(C3T),"l_",Bu(Dus),"a$c",G(FcR),"gs",G(EB9),"Vx",G(DwD)],AJC,0,AD_,[],1,0,()=>Bhz(),["qQ",M(E_m),"lt",W(EbH),"qS",BF(ETh)],A5y,0,Bx,[],65553,0,()=>QG(),0,S_, +0,F,[A8s],1025,0,0,["bh$",W(ErL),"a$w",BF(MT),"bh6",G(Fmv),"bh7",G(EsF),"a$u",M(F3)],Hx,0,S_,[],1025,0,0,["yv",G(Ftp),"bfb",M(A2E)],A4E,0,Hx,[BKo],1025,0,0,["yv",G(A4_),"bh7",G(Exp)],CQY,0,A4E,[],1,0,0,["bh9",W(E0N),"beZ",W(D3a),"be8",W(DNi),"bd0",M(DJy),"a61",M(EXX),"RE",M(COg),"be3",M(DIt)],Dlw,0,A4E,[],1,0,0,["bh9",W(EgT),"be3",M(DTA),"beZ",W(Fi7),"be8",W(Dxy),"bd0",M(BCy),"a61",M(D7l),"RE",M(Eap)],DkN,0,F,[A8s],0,0,0,["a$u",M(Fw4),"a$w",BF(DET)],A16,0,Bx,[],65553,0,()=>Buw(),0,CMB,0,F,[],1,0,0,0,C8S,0,F, +[],1,0,0,["p",G(FoY)],B7A,0,F,[],1537,0,0,0,Cce,0,F,[B7A],1,0,0,["p",G(DBK),"bod",G(EYe),"boe",G(Eah),"biH",G(EWV)],CcG,0,F,[B7A],1,0,0,["bod",G(EPR),"boe",G(EQI),"biH",G(Epr)],Cnn,0,AX3,[],0,0,0,["TA",M(DZk),"Tw",M(COR),"Tx",M(EaY),"bgm",M(Fqs),"a07",W(E08),"a1d",M(Fqy)],CbL,0,F,[],32768,0,()=>BNr(),0,Sp,0,AX3,[],1024,0,0,["bgm",M(BMN),"a07",W(DPG)],CL8,0,Sp,[],0,0,0,["TA",M(E5s),"Tw",M(DwK),"Tx",M(E4D),"a1d",M(DPW),"biO",W(EkI)],AUf,0,F,[],1537,0,0,0,CCh,0,F,[AUf],1,0,0,["Ts",M(Dwv),"a1s",M(DP$),"a1p",M(FgV)],Cwt, +0,Sp,[],0,0,0,["Tw",M(Cpe),"Tx",M(EP$),"TA",M(AY4),"biO",W(DTU),"a1d",M(DTg)],CFH,0,Sp,[],0,0,0,["Tw",M(Df5),"Tx",M(Cex),"TA",M(CQ4),"biO",W(Fk9),"a1d",M(E11)],C53,0,Sp,[],0,0,0,["Tw",M(D0O),"Tx",M(EwV),"TA",M(DwJ),"biO",W(ECJ),"a1d",M(Eds)],CTq,0,Sp,[],0,0,0,["Tw",M(CD2),"Tx",M(EI0),"TA",M(FhC),"biO",W(Efm),"a1d",M(Dy8)],CMJ,0,Sp,[],0,0,0,["Tw",M(BRk),"Tx",M(DmM),"TA",M(Fnm),"biO",W(EzK),"a1d",M(D9Y)],EGM,0,F,[],17,0,0,0,CC3,0,QP,[],0,0,0,["UO",M(EM),"dV",G(Ee5),"dX",G(Fdj)],BFa,0,F,[],1537,0,0,0,BXy,0,F,[BFa], +1537,0,0,["Ob",M(Ek)],Clt,0,F,[BXy],0,0,0,["Ob",M(Ek),"I1",G(AVR),"bjd",G(BUN),"Ds",M(Zl)],Ow,0,Tv,[BtX],1024,0,0,0,C_P,0,Ow,[NP],1,0,0,["Vv",M(E3V),"Ks",G(EBT),"Xm",G(D7t),"S3",G(Fcb),"S7",function(b,c,d,e,f,g){return Fe2(this,b,c,d,e,f,g);}],CzE,0,Ow,[NP],1,0,0,["S3",G(Ehy),"Vv",M(D0N),"Ks",G(D3O),"Xm",G(EMV),"S7",function(b,c,d,e,f,g){return E5Q(this,b,c,d,e,f,g);}],AUk,0,Tv,[NP,AIy],1,0,0,["S3",G(EJZ),"JX",M(DtP),"Vv",M(E1Z),"Ks",G(EW3),"Xm",G(EbZ),"S7",function(b,c,d,e,f,g){return EPK(this,b,c,d,e,f,g); +},"S2",G(FcA)],B5w,0,F,[],17,0,0,["p",G(Em5)]]); +Em([CNW,0,F,[Ht],0,0,0,0,DWx,0,F,[],1,0,0,0,Dkw,0,F,[],1,0,0,0,Zz,"RegexParsingException",76,Dt,[],1,0,0,0,Ml,0,F,[],1,0,0,["p",G(BPI)],A1$,0,Bx,[],65553,0,()=>JQ(),0,A7_,0,Bx,[],65553,0,()=>HF(),0,Bfs,0,Tv,[NP,AIy],1,0,0,["S3",G(D9g),"JX",M(EAw),"Vv",M(D2q),"Ks",G(DXC),"Xm",G(DJL),"S2",G(DKH),"S7",function(b,c,d,e,f,g){return E5K(this,b,c,d,e,f,g);}],BbZ,0,ADD,[NP],1,0,0,["S3",G(Fxr),"JX",M(EST),"Vv",M(EYB),"Ks",G(DVS),"Xm",G(E57),"S7",function(b,c,d,e,f,g){return Fjh(this,b,c,d,e,f,g);}],Dnh,0,Ow,[NP],1,0, +0,["Vv",M(DN3),"Ks",G(Eqx),"Xm",G(DYs),"S3",G(DIn),"S7",function(b,c,d,e,f,g){return EGB(this,b,c,d,e,f,g);}],Bcj,0,Tv,[NP],1,0,0,["S3",G(EcH),"JX",M(EuS),"Vv",M(E10),"Ks",G(Fxy),"Xm",G(DVg),"S7",function(b,c,d,e,f,g){return EVi(this,b,c,d,e,f,g);}],BeW,0,F,[BTT],1,0,0,["p",G(Dzy)],Dkb,0,F,[B58],1,0,0,["UU",W(Epk)],AVp,0,AGW,[AMS],1,0,0,["Qk",G(E1t),"Ql",G(Fth),"TI",M(EVY),"a4w",M(EN3),"KC",M(Ess),"Oe",W(Fnp),"TM",M(Fs3),"a4u",M(EIB),"a4y",M(DNf),"Gb",M(EEH),"a4z",M(Elg),"a4A",M(DTI),"KO",W(E4G)],BCQ,0,Ow,[NP], +1,0,0,["S3",G(Fb9),"Vv",M(Eq7),"Ks",G(DAM),"Xm",G(DFj),"S7",function(b,c,d,e,f,g){return Edc(this,b,c,d,e,f,g);}],BX0,0,Ow,[NP],1,0,0,["S3",G(EG8),"Vv",M(FeM),"Ks",G(D1Y),"Xm",G(Ei9),"S7",function(b,c,d,e,f,g){return EkS(this,b,c,d,e,f,g);}],Cet,0,F,[],1,0,0,["p",G(EZm)],CK$,0,F,[],32768,0,()=>BXw(),0,AKt,0,Tv,[NP,AIy],1,0,0,["JX",M(E_i),"Vv",M(DvF),"Ks",G(DAJ),"Xm",G(Esh),"S7",function(b,c,d,e,f,g){return DC3(this,b,c,d,e,f,g);},"S2",G(DmP),"S3",G(Cua)],CVB,0,Ow,[NP],1,0,0,["Vv",M(Fas),"Ks",G(FiY),"Xm",G(ESQ), +"S3",G(ELp),"S7",function(b,c,d,e,f,g){return EJx(this,b,c,d,e,f,g);}],BQ_,0,Ow,[NP],1,0,0,["S3",G(Elx),"Vv",M(ETr),"Ks",G(Fwi),"Xm",G(EOh),"S7",function(b,c,d,e,f,g){return Fc8(this,b,c,d,e,f,g);}],BKn,0,Ow,[NP],1,0,0,["Vv",M(E9d),"Ks",G(DZx),"Xm",G(Eir),"S3",G(EVU),"S7",function(b,c,d,e,f,g){return FqK(this,b,c,d,e,f,g);}],BFP,0,ADD,[NP,AIy],1,0,0,["S3",G(ESl),"JX",M(D_G),"Vv",M(DUx),"Ks",G(DGC),"Xm",G(FbQ),"S7",function(b,c,d,e,f,g){return D0C(this,b,c,d,e,f,g);},"S2",G(D2f)],A7I,0,Bx,[],65552,0,()=>APZ(), +0,ADe,0,F,[],1,0,0,["p",G(B5T)],AWw,0,Bx,[],65553,0,()=>Lf(),0,AIr,0,ANs,[],1,0,0,["p",G(Ebq),"W4",G(DMA)],Ch0,0,F,[],1,0,0,["p",G(DwR)],BsD,0,ADD,[NP],1,0,0,["S3",G(D6s),"JX",M(Fxp),"Vv",M(EFD),"Ks",G(E0R),"Xm",G(FqA),"S7",function(b,c,d,e,f,g){return EU5(this,b,c,d,e,f,g);}],Dch,0,F,[],0,0,0,0,BbP,0,AGW,[AMS],1,0,0,["Qk",G(Eo_),"Ql",G(EsR),"TI",M(EwP),"a4w",M(EFK),"KC",M(DBr),"Oe",W(EN4),"TM",M(ExA),"a4u",M(DXA),"a4y",M(EyC),"Gb",M(DJF),"a4z",M(D57),"a4A",M(DAd),"KO",W(Evf)],Ffv,0,F,[],1,0,0,0,A0E,0,Bx,[], +65553,0,()=>Bxb(),0,DnK,0,F,[Ht],1537,0,0,0,B2p,0,F,[DnK,Ht],1,0,()=>B2Y(),0,Bi5,0,F,[],1537,0,0,0,CA8,0,F,[Bi5],1,0,0,["eq",M(D37)],CWe,0,F,[BVs],1,0,0,0,BY4,0,F,[],1537,0,0,0,CpS,0,F,[BY4],1,0,0,["bAy",M(EHy)],DsE,0,F,[BHb],1537,0,0,0,B30,0,F,[],1537,0,0,0,CpQ,0,F,[B30],1,0,0,0,CpR,0,F,[BY4],1,0,0,["bAy",M(EJM)],A9M,0,Bx,[],65553,0,()=>ZE(),0,JC,0,F,[APN],1025,0,0,["Tf",G(Ql)],DcH,0,JC,[],1,0,0,["Tf",G(Ql),"Te",BF(E5T),"a23",BF(FdN)],CGA,0,JC,[],1,0,0,["Tf",G(Ql),"Te",BF(Dbs),"a23",BF(DAK)],C0n,0,JC,[],1, +0,0,["Tf",G(Ql),"Te",BF(CpZ),"a23",BF(Fns)],CR$,0,JC,[],1,0,0,["Tf",G(Ql),"Te",BF(D2b),"a23",BF(D5z)]]); +Em([ANh,0,JC,[],1024,0,0,["Tf",G(Ql)],Dft,0,ANh,[APN],1,0,0,["Tf",G(Ql),"Te",BF(CJB),"a23",BF(DB7)],AUr,0,JC,[],1,0,0,["Tf",G(Ql),"Te",BF(DpH),"a23",BF(EJR)],CcB,0,ANh,[APN],1,0,0,["Tf",G(Ql),"Te",BF(C71),"a23",BF(EL9)],CF5,0,ANh,[APN],1,0,0,["Tf",G(DzG),"Te",BF(CJq),"a23",BF(Eu4)],CKC,0,JC,[],1,0,0,["Tf",G(Ql),"Te",BF(DWY),"a23",BF(FbZ)],AXE,0,JC,[],1,0,0,["Tf",G(Ql),"Te",BF(CFe),"a23",BF(Def)],AMw,"ZipException",8,Dd,[],1,0,0,0,EmC,0,F,[],1,0,0,0,AWJ,0,F,[],16,0,0,0,Co7,0,F,[B0k],1,0,0,["Tv",W(BQG),"a1n", +Bu(DMZ),"cC",M(Fe1),"V4",M(D5H),"V5",M(Fg8),"V3",M(BQM),"V7",M(E7D),"V6",G(D9L),"bDC",W(Fwe),"V8",M(ESF),"bDB",BF(ES1)],AME,0,F,[B0k],1025,0,0,["Tv",W(BQG),"p",G(Fuk),"V3",M(ABc),"V6",G(CkC),"V7",M(AGV),"bDC",W(EaH)],C6E,0,AME,[],1,0,0,["bkE",M(Fs6),"a1n",Bu(FjS),"Tv",W(Fpr),"oi",G(BUJ),"cC",M(Er3),"V8",M(E2N),"V4",M(EqA),"V5",M(D_b),"bDB",BF(DP4)],C44,0,AME,[],1,0,0,["oi",G(EmG),"V8",M(FgJ),"bkE",M(BA4),"a1n",Bu(Fay),"Tv",W(E_n),"cC",M(Eps),"V5",M(EyP),"V4",M(DRK),"bDB",BF(EU0),"bDC",W(E9m)],C91,0,F,[ZZ],1537, +0,0,0,CV0,0,F,[C91],17,0,0,0,BET,0,F,[],17,0,()=>BTM(),0,CV3,0,F,[],0,0,0,["p",G(DYe)],ChC,0,F,[Ie],0,0,0,0,AV3,0,AD_,[],1,0,0,["a24",G(D5p),"qS",BF(Fdi)],C61,0,AD_,[],1,0,0,["qS",BF(EI2)],CJf,0,F,[],1,0,0,0,BuU,0,JC,[],1,0,0,["Te",BF(BUM),"a23",BF(CCd),"Tf",G(ENi)],CXM,0,BuU,[],1,0,0,["Te",BF(Fq9),"a23",BF(EXA)],A_d,0,Bx,[],65553,0,()=>AW0(),0,CM2,0,JC,[],1,0,0,["a23",BF(ETq),"Te",BF(Edd),"Tf",G(Eb1)],AZ3,0,Bx,[],65553,0,()=>Na(),0,EiG,0,F,[B30],1,0,0,0,CMj,0,F,[],1,0,0,0,Dif,0,F,[],1,0,0,0,CU5,0,F,[],1,0, +0,0,A26,0,Bx,[],65553,0,()=>ARc(),0,CjD,0,F,[],1,0,0,["dp",G(DGs),"cx",M(FmV),"p",G(Evi)],BVS,"IconLoader",75,F,[],1,0,()=>BKD(),0,CIM,0,F,[],17,0,0,0,CTO,0,F,[PD],0,0,0,["g3",G(Bs),"a2L",G(Fx),"g4",G(Ewj),"co",G(DQh),"cF",M(DCm),"yz",W(Ffn),"cC",M(E$K),"a8$",G(Fw_),"blh",M(Eo0),"a9W",G(FrC)],EzO,0,F,[],17,0,0,0,Dhi,0,F,[PD],1,0,0,["g3",G(Bs),"a2L",G(Fx),"g4",G(EHJ),"co",G(ERG),"cF",M(B_g),"yz",W(EVy),"cC",M(ErI),"a9W",G(E3N),"a8$",G(Fc6),"blh",M(ER9)],BN8,0,F,[],1537,0,0,0,BkM,0,F,[ARf,AO8,BN8],1537,0,0,0,A_L, +0,F,[BkM],1025,0,0,0,BJf,0,A_L,[BkM,Ht],1,0,()=>AQ7(),["p",G(Fo9),"bqv",G(CAT)],Ez,0,Er,[PD],1025,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"g4",G(ClR),"co",G(CyS),"blh",M(E70)],DlK,0,Ez,[KP],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh",M(DE5),"cC",M(ENj),"a8$",G(DAa),"bAR",W(EDS),"bAS",W(DG6)],CGx,0,F,[],1,0,0,0,BQF,"EmptySvgException",77,DR,[],1,0,0,0,C9M,0,F,[PD],17,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"cC",M(Dzx),"co",G(EKb),"cF",M(DAX),"a8$",G(FgX),"blh",M(Efl),"g4", +G(D$y)],CU$,"UnparsableGraphvizException",24,DR,[],1,0,0,0,Cg8,0,F,[],17,0,0,0,B77,0,F,[],1,0,0,0]); +Em([CGb,0,F,[Ht],0,0,0,["cC",M(EI9)],AZR,0,Er,[AJM],1024,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],BMX,0,AZR,[],0,0,()=>BP7(),["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(DGP)],CJV,0,F,[Eo],1,0,0,0,EPE,0,F,[],1,0,0,0,Cwg,0,F,[],1,0,0,0,BVM,0,F,[AUf],1,0,0,["Ts",M(Bpd),"a1s",M(Frj),"a1p",M(EHW)],CsA,0,F,[AUf],17,0,0,["Ts",M(C4U),"a1s",M(CC8),"a1p",M(EUC)],CL0,0,F,[AUf],17,0,0,["Ts",M(DHU),"a1s",M(CdL),"a1p",M(Fs2)],DdU,0,F,[AUf],1,0,0,["Ts",M(Fvr),"a1s",M(Fn1),"a1p",M(E_O)],CYq,0,F,[],17,0,0, +0,AGu,0,F,[C1,M1,Oa],17,0,0,["g3",G(Bs),"a9W",G(BK),"co",G(B6),"p",G(DN$),"cF",M(ACE),"cC",M(AE6),"a0M",M(Dz4),"yz",W(Ed0),"yC",M(EYM),"bkY",G(Dve)],BWI,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EBU),"cF",M(EJF)],Ck$,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cF",M(Ekf),"cC",M(DJm)],C8d,0,F,[],1,0,0,["p",G(EL0)],Be8,0,F,[],1,0,()=>H8(),0,AYm,0,F,[],1,0,0,0,A_t,0,J9,[],1,0,()=>BWg(),["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"Wy",M(BWk),"Wz",M(EKY),"Wx",M(EvP), +"bj1",M(ELT),"bj2",M(DXw),"cC",M(DvM),"Vj",M(Fky),"a25",G(D$F)],D4a,0,F,[],1,0,0,0,CL$,0,J9,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"Wy",M(DNk),"Wz",M(D1Z),"Wx",M(EOF),"cC",M(Ecu),"Vj",M(Fv0)],CNC,0,J9,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"Wy",M(ELG),"Wz",M(D3d),"Wx",M(Fem),"cC",M(E6j),"Vj",M(DMJ)],CkM,0,J9,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"Wy",M(Cvz),"Wz",M(FrJ),"Wx",M(EEc),"cC",M(Fkn),"Vj",M(EVB)],CZ6,0,J9,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co", +G(B6),"Wy",M(DpD),"Wz",M(Eqc),"Wx",M(EFa),"cC",M(DIw),"Vj",M(Epi)],A0c,0,J9,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"Vj",M(A3r),"cC",M(EKT),"Wy",M(C5$),"Wz",M(DLo),"Wx",M(Fdf)],AVr,0,J9,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"Vj",M(A9o),"Wy",M(C9k),"Wz",M(ErA),"Wx",M(EKy),"cC",M(FaR)],BlK,0,J9,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"Wy",M(DaH),"Wz",M(EAz),"Wx",M(E3d),"cC",M(Fr9),"Vj",M(FlY),"bj1",M(DP6),"bj2",M(EEz)],CAw,0,BlK,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W", +G(BK),"co",G(B6)],Bgy,0,J9,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"Wy",M(Cx_),"Wz",M(EAe),"Wx",M(Fsf),"cC",M(E3_),"Vj",M(EHf)],B3j,0,F,[],1,0,()=>BBd(),0,BIw,0,F,[B3L],17,0,0,["cx",M(Dte),"p",G(EHQ)],A6d,0,Bx,[],65553,0,()=>AIO(),0,Cik,0,F,[],1,0,()=>AGa(),0,ALV,0,F,[DsE],1025,0,0,0,Cgw,0,ALV,[],1,0,0,0,Do7,0,F,[],0,0,0,["p",G(DPN)],CjR,0,F,[Ht],1537,0,0,0,DqC,0,F,[CjR],1,0,0,0,BVE,0,AME,[],1,0,0,["bkE",M(BOh),"a1n",Bu(E23),"Tv",W(DIN),"oi",G(Bit),"cC",M(DZH),"V8",M(Eq6),"V4",M(ESM),"V5",M(Fdt), +"bDB",BF(EM4)],CVK,0,F,[],0,0,0,0,Mu,0,F,[],1024,0,0,0,CQF,0,F,[ZZ],1,0,0,0,AR9,0,JC,[],1,0,0,["Tf",G(Ql),"Te",BF(Esw),"a23",BF(E7d)],Ck4,0,F,[],1,0,0,["p",G(DAj)],BWJ,0,F,[Pj],1,0,0,["UO",M(EM),"p",G(ClM)],ALY,0,F,[TM],1,0,0,["p",G(DIJ),"bkX",G(Exa),"a0J",G(FsL)],Fxa,0,F,[],1025,0,0,0,DhU,0,F,[BsQ],0,0,0,["a1y",M(DDt),"a1z",M(EjX)],ASG,0,Ez,[],1025,0,()=>AI4(),["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"a8$",G(EyH)],DfF,0,ASG,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh",M(ENQ),"cC",M(Ecn)],Dih, +0,F,[PD],17,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"cC",M(DLZ),"co",G(EHK),"cF",M(CQ5),"a8$",G(EKW),"blh",M(EW6),"g4",G(EGZ)]]); +Em([BKM,0,F,[],1,0,()=>A7A(),0,DrE,0,F,[Ht],1,0,0,0,BRZ,0,Er,[PD],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh",M(DBC),"cC",M(BQe),"co",G(Erf),"g4",G(Eh4)],Eg7,0,F,[],17,0,0,0,ByS,0,F,[ARf],1537,0,0,0,CWF,0,F,[ByS,AO8],1537,0,0,0,B8l,0,F,[CWF],1,0,0,["p",G(Fbz)],C4Q,0,F,[],1537,0,0,0,C8Y,0,F,[C4Q],1,0,0,0,Drp,0,F,[],1,0,0,0,A0a,0,Bx,[],65553,0,()=>E0(),0,EY8,0,F,[],1,0,0,0,BaT,0,Bx,[],65553,0,()=>AHk(),0,Bht,0,Er,[PD],17,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"cC",M(EEQ),"mh",M(DZr), +"co",G(DtA),"g4",G(EC9),"blh",M(D9W),"a8$",G(EK6)],C00,0,Er,[PD],17,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"cC",M(ETV),"co",G(Fgt),"mh",M(Dwx),"a8$",G(DIb),"blh",M(Eml),"g4",G(Fnd)],C9Z,0,F,[Ht],1,0,0,0,BEk,0,Er,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(D7d)],CUn,0,BEk,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],BFl,0,F,[C1],1536,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"bnI",M(B$v)],CbO,0,AZR,[BFl],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"bnI", +M(ERn),"bnJ",M(DyY),"TV",M(E3Y),"bpF",M(Euz),"bpE",M(Eyd),"mh",M(EMm),"cC",M(D9a)],DpK,0,CA,[],17,0,0,0,ECN,0,F,[],1,0,0,0,A3N,0,Bx,[],65553,0,()=>BtV(),0,Cao,0,F,[],1,0,0,0,CYT,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"cC",M(EUP),"cF",M(Dxm),"co",G(Fau)],CJt,0,F,[PD],16,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"cC",M(EUF),"cF",M(EIq),"co",G(DUt),"a8$",G(D04),"blh",M(EGV),"g4",G(Ffr)],CiL,0,Er,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(E00),"cC",M(E0w)],Nv,0,F,[],1,0,0, +["p",G(BWF)],A48,0,F,[],1537,0,0,0,C_a,0,F,[A48],1,0,0,0,C8l,0,F,[],1,0,0,0,Eha,0,F,[],1,0,0,0,BJE,0,F,[],16,0,0,0,BFI,0,ADA,[],0,0,()=>B3k(),["RG",G(Dwn),"Rv",M(Fdd),"RO",M(EG_),"YA",M(Euh)],CfJ,0,F,[],32768,0,()=>BYu(),0,CA6,0,F,[],17,0,0,0,CXc,0,F,[],17,0,0,0,C4T,0,Ez,[KP,Oa],1,0,0,["g3",G(Bs),"a9W",G(BK),"a2L",G(Fx),"mh",M(Fh6),"yz",W(CnB),"cC",M(CnC),"yC",M(Cqi),"a8$",G(DmQ),"blh",M(CNQ),"bAR",W(ED9),"bAS",W(EI4)],BCD,0,F,[PD],1537,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a2L",G(Fx)],Cj5,0,F, +[PD,BCD,Oa],1,0,0,["g3",G(Bs),"a9W",G(BK),"a2L",G(Fx),"yz",W(FoZ),"g4",G(Eiq),"co",G(DRY),"cF",M(EJY),"cC",M(Ejx),"a8$",G(E0J),"blh",M(ELA),"yC",M(Fg1)],C9T,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh",M(DBv),"cC",M(EsA),"a8$",G(BNb)],A1p,0,Ez,[],1025,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh",M(E8D),"a8$",G(DJf)],B1h,0,A1p,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"oi",G(Eyo),"mh",M(Elu),"cC",M(EPN),"a8$",G(D8W)],BHm,0,A1p,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W", +G(BK),"a2L",G(Fx),"oi",G(ElR),"cC",M(Duq)],DeF,0,ASG,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh",M(Dwa),"cC",M(E5A)],Dq9,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"a8$",G(D8k),"mh",M(EYA),"cC",M(Dvw)],Car,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh",M(Emq),"cC",M(E9k),"a8$",G(E1H)],C2J,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh",M(Ew9),"cC",M(EfF),"a8$",G(DKM)],C8Z,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh", +M(ESG),"cC",M(Ft$),"a8$",G(DTZ)],Dfe,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh",M(DW0),"cC",M(ENe),"a8$",G(EYZ)]]); +Em([B2R,0,Ez,[],1,0,()=>BVR(),["g3",G(Bs),"yz",W(BS),"a2L",G(Fx),"mh",M(EsD),"blh",M(DPY),"cC",M(FiG),"a8$",G(Fcw),"a9W",G(E9r)],Cak,0,Ez,[KP,Oa],1,0,0,["g3",G(Bs),"a9W",G(BK),"a2L",G(Fx),"mh",M(DCr),"cC",M(EiV),"a8$",G(FqW),"bAR",W(Dxh),"bAS",W(Evb),"yC",M(E$q),"yz",W(EGx)],Cx2,0,Ez,[KP,Oa],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"yC",M(DDx),"mh",M(EVT),"cC",M(E5m),"a8$",G(EEh),"bAR",W(DyR),"bAS",W(EGo)],C3C,0,Ez,[KP,Oa],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"yC",M(EXt),"mh",M(DFH), +"cC",M(D7x),"a8$",G(DMU),"bAR",W(DQ0),"bAS",W(ECF)],CpA,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh",M(Fsp),"cC",M(DSW),"a8$",G(DwI)],CWj,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh",M(ERp),"cC",M(Fox),"a8$",G(E15)],CiS,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh",M(Fwa),"cC",M(Fwl),"a8$",G(EyZ)],CcD,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh",M(EIA),"cC",M(D1d),"a8$",G(EZE)],CJS,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK), +"a2L",G(Fx),"mh",M(FlM),"cC",M(DJI),"a8$",G(Fce)],Dbm,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh",M(EcP),"cC",M(D4i),"a8$",G(Ffd)],A5m,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"bqf",G(D3G),"mh",M(ENB),"cC",M(DK7),"a8$",G(DVy)],Ch5,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh",M(DZl),"cC",M(DHZ),"a8$",G(Ftt)],CFY,0,A5m,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"bqf",G(Efs)],Can,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx), +"a8$",G(Etw),"mh",M(ERX),"cC",M(FdA)],CKL,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"a8$",G(D1l),"mh",M(DGT),"cC",M(EZW)],CRt,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"a8$",G(FdP),"mh",M(Edg),"cC",M(D8M)],CaJ,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"a8$",G(EmO),"mh",M(EkH),"cC",M(DK8)],Coy,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"a8$",G(Dth),"mh",M(Ejn),"cC",M(DYG)],Dee,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx), +"cC",M(DGo),"a8$",G(DTY),"mh",M(EhJ)],Cj1,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"cC",M(DXl),"a8$",G(EFE),"mh",M(FwK)],CMX,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh",M(E82),"cC",M(Ei_),"a8$",G(E$F)],DlP,0,Ez,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"cC",M(DNH),"a8$",G(Fdu),"mh",M(D0M)],CqH,0,F,[],1,0,0,0,AQm,0,Bx,[],65553,0,()=>MY(),0,Dek,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(Eu8),"cF",M(Fjd)],Dfu,0,F,[BsQ],0,0,0,["a1y", +M(DYW),"a1z",M(DCb)],Ba1,0,Bx,[],65552,0,()=>ATf(),0,CeA,0,F,[],1,0,0,0,A8O,0,Fc,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(FhF),"a31",M(DUB)],CHh,0,F,[C1,BFl,AJM],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"bnI",M(B$v),"bnJ",M(Eaq),"cF",M(AX1),"cC",M(DUn),"TV",M(Fd9),"bpF",M(DK2),"bpE",M(DGX)],CuH,0,CA,[],17,0,0,0,CUs,0,F,[],1,0,()=>Ff(),0,Dt4,0,F,[],1,0,0,0,DeL,0,F,[],1,0,()=>LS(),0,DZs,0,F,[],1,0,0,0,DWJ,0,F,[],1,0,0,0,Fts,0,F,[],1,0,0,0,CCE,0,F,[],1,0,0,0,Dm5,0,F,[Iu],1,0,0,0,ESv, +0,F,[],1,0,0,0,CSL,0,F,[],1,0,()=>BQt(),0,A9U,0,Bx,[],65553,0,()=>QX(),0,A7z,0,F,[],17,0,0,0,A$7,0,F,[F1],17,0,()=>RT(),["p",G(DzB),"cx",M(BQm),"dp",G(Eoq),"rl",M(EQb)],CyX,0,F,[],16,0,0,0,Sg,"DataFormatException",8,Dt,[],1,0,0,0,C32,0,F,[BsF],0,0,0,["bpU",W(EHn),"bpS",M(Ef_)],BGP,0,Ez,[],1,0,()=>BAv(),["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"mh",M(EBg)],BQf,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cF",M(EZH),"cC",M(Fp5)],CrP,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co", +G(B6)]]); +Em([DkE,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],A0o,0,F,[C1,Oa],1,0,0,["g3",G(Bs),"a9W",G(BK),"co",G(B6),"cF",M(EVJ),"cC",M(FqI),"yz",W(EET),"yC",M(DOW)],Czn,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EAk),"cF",M(ChP)],CrS,0,F,[C1],0,0,0,["g3",G(Bs),"a9W",G(BK),"co",G(B6),"cF",M(CGI),"yz",W(D1n),"cC",M(DgK)],Cy$,0,F,[BN8],0,0,0,["bqv",G(DKp)],Dph,0,F,[],1,0,0,0,Ct4,0,Wy,[],17,0,0,["p",G(Dt0)],B$p,0,F,[],1,0,()=>LP(),0,CDV,0,CA,[],17,0,0,0,C8H,0,CA,[],17,0,0,0,CAb, +0,F,[],1,0,()=>Pq(),0,B9F,0,F,[],1,0,()=>YP(),0,Cgi,0,F,[],1,0,()=>BZV(),0,Dp1,0,F,[],1,0,()=>IK(),0,C6k,0,F,[],1,0,0,0,A9a,0,F,[BFa],1,0,()=>SL(),["p",G(DUU),"Ob",M(E0g)],Fjf,0,F,[],0,0,0,0,Dj7,0,F,[],16,0,0,0,Cu3,0,F,[],16,0,0,0,DqH,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cF",M(ClA),"cC",M(D3U)],BDm,0,F,[],1,0,()=>ANW(),0,AYK,0,F,[C1],1025,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cF",M(DZ2),"cC",M(E9U)],Cxb,0,AYK,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"bvl", +G(Fw2),"bvk",M(DUT)],Bjo,0,AYK,[C1,Oa],1,0,()=>ARi(),["g3",G(Bs),"a9W",G(BK),"co",G(B6),"bvl",G(Et_),"bvk",M(BD8),"yC",M(Ehf),"yz",W(D9c)],BWT,0,F,[],1,0,0,0,CdK,0,F,[KP],0,0,0,["bAR",W(DX6),"bAS",W(ESo)],Cmp,0,CA,[],17,0,0,0,DbC,0,C$,[],0,0,0,0,DbB,0,C$,[],0,0,0,["a5e",W(Es4)],Cj$,0,F,[],1,0,()=>L4(),0,E4d,0,F,[],1,0,0,0,EBr,0,F,[],1,0,0,0,AR5,0,CA,[],17,0,0,0,D5I,0,F,[],1,0,0,0,DyS,0,F,[],1,0,0,0,FtT,0,F,[],1,0,0,0,CGo,0,CA,[],17,0,0,0,CCR,0,F,[AO0],1,0,0,["bA0",W(DTm)],CCS,0,F,[AO0],1,0,0,["bA0",W(D4V)],CCP, +0,F,[AO0],1,0,0,0,CCQ,0,F,[AO0],1,0,0,["bA0",W(DJo)],A_w,0,F,[BdQ],1025,0,0,["oB",G(Ew_),"oX",G(DBj),"oD",G(Eb2),"oK",G(D7w),"ow",M(FdS),"bh_",G(Edk),"oE",G(EFh),"oV",G(EIb)],AZN,0,A_w,[BdQ],1,0,()=>BzL(),["oX",G(EC2),"oD",G(DYP),"oK",G(Fur),"ow",M(Ekw),"bh_",G(DwP),"oB",G(E4A),"oE",G(FqZ),"cu",M(FnM),"oV",G(EbD)],CUp,0,CA,[],17,0,0,0,EXF,0,F,[],1,0,0,0,EWc,0,F,[],1,0,0,0,EZS,0,F,[],1,0,0,0,DaF,0,CA,[],17,0,0,0,B__,0,If,[],0,0,0,["UO",M(EM)],A5Y,0,F,[],17,0,0,0]); +Em([CLc,0,CA,[],17,0,0,0,A3a,0,Bx,[],65553,0,()=>AJf(),0,C15,0,CA,[],17,0,0,0,B1O,0,F,[Pj],1,0,()=>Bxs(),["UO",M(EM)],COT,0,F,[],32768,0,()=>B6X(),0,C94,0,F,[OW],0,0,0,["fc",W(ERk)],CIA,0,CA,[],17,0,0,0,A1t,0,CA,[BGJ],17,0,0,0,Cd8,0,CA,[],17,0,0,["a73",M(EZ8)],Btm,0,CA,[],17,0,0,0,BZf,0,CA,[],17,0,0,0,CCD,0,CA,[],17,0,0,0,B71,0,CA,[],17,0,0,0,DMg,0,F,[],1,0,0,0,DlW,0,CA,[],17,0,0,0,BD1,0,CA,[],17,0,0,0,Cc4,0,F,[],1,0,()=>Mg(),0,EU3,0,F,[],1,0,0,0,CdY,0,F,[],1,0,()=>Jr(),0,Cz8,0,CA,[],17,0,0,0,BRC,0,CA,[],17, +0,0,0,DFw,0,F,[],1,0,0,0,CLs,0,F,[],1,0,()=>ACv(),0,AIG,"shortest__c$PathplanAbort",5,DR,[],16,0,0,0,AIg,0,CA,[],17,0,0,0,E7_,0,F,[],1,0,0,0,B7k,0,F,[],1537,0,0,0,DdW,0,F,[B7k],1,0,0,["bh8",G(DXm)],CYp,0,F,[Ie],0,0,0,["dY",G(Enl),"dZ",G(Eq_)],FgS,0,F,[],17,0,0,0,TI,0,NE,[],1025,0,0,["h2",M(Jw),"hP",M(ACY)],BGQ,0,TI,[],1,0,0,["bxi",M(E3W),"bxj",BF(DJB)],DfV,0,ALV,[],1,0,0,0,C81,0,F,[],1,0,0,["p",G(DOY)],DcE,0,F,[],1,0,0,0,BMC,0,A_w,[],1,0,0,["p",G(EMK),"cu",M(D5f),"oz",G(Fu_)],DmD,0,F,[],1537,0,0,0,ABX,0,F,[DmD], +1025,0,0,["bxm",M(DNv)],A9f,0,ABX,[],1025,0,0,["a2S",W(Eq9),"UB",M(Dxe)],CTC,0,A9f,[],1,0,0,["UJ",M(DFa),"UC",W(ELL),"a2T",M(EX4)],C4j,0,ABX,[],1,0,0,["UJ",M(Euk),"UC",W(DBW),"a2S",W(EUD),"UB",M(Fwt),"a2T",M(DJT)],CtQ,0,A9f,[],1,0,0,["UJ",M(D5L),"UC",W(EDn),"a2T",M(EOz)],AUF,0,ABX,[],1025,0,()=>BRs(),["UC",W(DS_),"a2S",W(Ei0),"UB",M(DMW),"a2T",M(EiA),"UJ",M(Fup)],DcX,0,AUF,[],1,0,0,["bxQ",BF(EDg),"bxL",BF(D_H),"bxO",BF(Ey7)],BNA,0,ABX,[],1,0,()=>B9i(),["UC",W(EFM),"a2S",W(EUI),"a2T",M(DZL),"UB",M(EoX),"bxm", +M(DUI),"UJ",M(ERW)],CZ3,0,AUF,[],1,0,0,["bxQ",BF(EKZ),"bxL",BF(E8H),"bxO",BF(DDG)],Co5,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(FqX),"cF",M(CWw)],COY,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(FjV),"cF",M(EbT)],C60,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DC$),"cF",M(CTT)],Cm4,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(FnT),"cF",M(DaJ)]]); +Em([CMg,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(ELF),"cF",M(CME)],CAK,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EMd),"cF",M(Drm)],CIK,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"co",G(B6),"cC",M(Eil),"cF",M(B8H),"a9W",G(DBN)],DkL,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EnY),"cF",M(Dj0)],CYW,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(Eqm),"cF",M(Do$)],CAh,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co", +G(B6),"cC",M(EcQ),"cF",M(CuO)],C_j,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EGd),"cF",M(CWu)],Cbb,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(ED4),"cF",M(B$k)],Dq8,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(E2x),"cF",M(Cmg)],CBO,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(E8o),"cF",M(C_I)],CJG,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EBI),"cF",M(CwU)],Cw5,0,F,[C1],0,0,0,["g3",G(Bs), +"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(Faf),"cF",M(CnL)],CKo,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(Emg),"cF",M(Dc6)],CRj,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EU4),"cF",M(Dmk)],CK0,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EF9),"cF",M(Dqe)],CLi,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EPo),"cF",M(Dry)],C_u,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EE9),"cF",M(CMP)],CY3, +0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DzI),"cF",M(DsG)],DcO,0,F,[Vk],0,0,0,["d1",G(Wt),"dp",G(DF9),"d0",G(VX)],Ct8,0,F,[],1,0,()=>B8d(),0,DOJ,0,F,[],1,0,0,0,BNd,0,NE,[],1,0,()=>AZD(),["h2",M(DYw),"p",G(D45),"hP",M(EbM)],CFU,0,F,[],16,0,0,0,BHq,0,F,[],0,0,()=>BkT(),0,DdO,0,F,[AON],1,0,0,["OH",M(BSN)],CRU,0,F,[],1537,0,0,0,BIR,0,F,[CRU],1,0,()=>A5E(),0,CKx,0,F,[],32768,0,()=>BEA(),0,CYL,0,F,[],32768,0,()=>BPW(),0,CRf,0,If,[ARd],0,0,0,["UO",M(EM),"dX",G(Ta)],BLN,0,F,[],1536,0,0,0,CGU, +0,F,[BLN],0,0,0,["byY",W(DEp),"byZ",W(ETx)],BZb,0,F,[],0,0,0,0,B_C,0,F,[],1,0,0,0,B2W,"EmptyStackException",7,DR,[],1,0,0,0,B$0,0,F,[],1,0,0,0,Cyr,0,ALV,[],1,0,0,0,C6D,0,F,[F1],1,0,0,["p",G(DTp),"rl",M(DJD)],CnJ,0,F,[],1,0,0,0,CmD,0,JC,[],1,0,0,["Tf",G(Ql),"Te",BF(ATV),"a23",BF(B5L)],Ddc,0,F,[APN],1,0,0,["Te",BF(Dyp),"a23",BF(EAc),"Tf",G(EmT)],CRY,0,F,[Eo],1,0,0,0,CJT,0,Hx,[KP],17,0,0,["RE",M(BP4),"a61",M(D26),"bh6",G(FsD),"bh7",G(Ehm),"bh9",W(EUO),"bAR",W(DV3),"bAS",W(Exu)],CQf,0,Hx,[],17,0,0,["RE",M(BGa), +"a61",M(EPg),"bh6",G(ETA),"bh7",G(DLL),"bh9",W(FsJ)],Cpt,0,Hx,[],17,0,0,["RE",M(B1P),"a61",M(D2I),"bh6",G(DNn),"bh7",G(E0i),"bh9",W(EdV)],CJU,0,S_,[],1,0,0,["bh9",W(DVd),"a61",M(DCN),"RE",M(E65)],CGJ,0,Hx,[],1,0,0,["RE",M(DQf),"a61",M(E6F),"bh$",W(EDC),"bh9",W(Ema)],CEf,0,Hx,[],1,0,0,["bh$",W(DCT),"bh9",W(EzF),"a61",M(DL1),"RE",M(Eac)],CHH,0,F,[A8s],1,0,0,["RE",M(ESU),"a61",M(FbH),"a$w",BF(EfO),"a$u",M(Fj1)],CBC,0,S_,[],1,0,0,["bh9",W(EmM),"a61",M(DNY),"RE",M(DGd)]]); +Em([Col,0,S_,[],1,0,0,["bh9",W(Dzk),"a61",M(Fsc),"RE",M(D2l)],Cxi,0,Hx,[],1,0,0,["bh9",W(Ft6),"a61",M(FhT),"RE",M(D$u)],C$b,0,S_,[],1,0,0,["bh9",W(D0J),"a61",M(Dyq),"RE",M(DSI)],Cpi,0,Hx,[],1,0,0,["bh9",W(ESh),"a61",M(DTX),"RE",M(Fj2)],CM8,0,Hx,[],1,0,0,["bh9",W(FtJ),"a61",M(Fjb),"RE",M(E3z)],C9t,0,Hx,[],1,0,0,["bh$",W(El1),"bh9",W(FnF),"a61",M(Fjv),"RE",M(E9f)],DnU,0,F,[AON],0,0,0,["OH",M(DMP)],COC,0,F,[AON],1,0,0,["OH",M(DFN)],Ckr,0,F,[TM],0,0,0,["p",G(EYy),"a0J",G(EXb),"bkX",G(D7g)],AFj,0,F,[],1,0,()=>AWE(), +["p",G(E9O)],A8E,0,Bx,[],65553,0,()=>P_(),0,Cvf,0,F,[],32768,0,()=>AI8(),0,Wh,"UnsupportedTemporalTypeException",15,GE,[],1,0,0,0,AVG,0,F,[Ht],1,0,0,0,Fvn,0,F,[],1,0,0,0,E1J,0,F,[Ht],1,0,0,0,AD5,0,Mu,[],1,0,0,["a3j",W(FvQ),"bza",M(D_k),"cx",M(DhK),"dp",G(Doe)],CbN,0,Mu,[],1,0,0,["a3j",W(DU7),"cx",M(Egj),"dp",G(Ez5)],DcA,0,Mu,[],1,0,0,["a3j",W(Fs1),"cx",M(DMk),"dp",G(FeB)],A7O,0,Mu,[],1025,0,0,["cx",M(Flm),"dp",G(EGD)],Dcx,0,A7O,[],1,0,0,["a3j",W(EwY)],C9E,0,Mu,[],1,0,0,["a3j",W(EQN),"cx",M(Fpc),"dp",G(EuZ)],C4E, +0,AD5,[],1,0,0,["bza",M(Fs4),"cx",M(FvH),"dp",G(EuE)],CRC,0,AD5,[],1,0,0,["bza",M(E6k)],CbR,0,A7O,[],1,0,0,["a3j",W(DLE)],CRH,0,Mu,[],1,0,0,["a3j",W(Fxx),"cx",M(Ehi),"dp",G(Ds$)],C4K,0,Mu,[],1,0,0,["a3j",W(FpE),"cx",M(D1y),"dp",G(EYh)],Den,0,Mu,[],1,0,0,["a3j",W(Epw),"cx",M(Fom),"dp",G(Fs0)],Ccf,0,Mu,[],1,0,0,["a3j",W(E4S),"cx",M(EeZ),"dp",G(D8Z)],Cud,0,AD5,[],1,0,0,["bza",M(Fc0)],DeV,0,S_,[],1,0,0,["bh9",W(EoN)],CMI,0,F,[PD],17,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"a2L",G(Fx),"cC",M(ETH),"cF",M(FhS),"co", +G(Fhr),"a8$",G(EG9),"blh",M(Emj),"g4",G(Est)],DpQ,0,F,[],1,0,0,0,Crw,0,Er,[Oa],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"yC",M(FfV),"mh",M(DRu),"cC",M(FkC)],DlQ,0,F,[C1,Oa],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"yC",M(E3A),"cF",M(DEN),"cC",M(DPZ)],BDj,0,Er,[Oa],1,0,0,["g3",G(Bs),"a9W",G(BK),"co",G(B6),"mh",M(EY1),"yC",M(Ehg),"yz",W(ECE),"cC",M(DHE)],AJJ,0,F,[KH],1,0,()=>AYd(),["p",G(Cgy),"u",M(EwN),"bL",G(DO_),"rL",W(Emy),"cx",M(EGW),"dp",G(Edf)],Cqs,0,If,[],0,0,0,["UO",M(EM),"et",M(EB$), +"dV",G(DXI),"dX",G(Fs_)],C7i,0,F,[],32768,0,()=>BJr(),0,Cf_,0,F,[],1,0,0,0,BOX,0,F,[Pj],1,0,0,["UO",M(EM),"p",G(FuQ)],CfL,0,F,[],1,0,0,0,BI3,0,F,[],1,0,0,0,FK,0,F,[Ht],1025,0,0,["blE",G(ERV)],A_9,0,FK,[],1,0,0,["bl5",G(Emf),"blE",G(FhM),"cC",M(Da2)],CN3,0,J9,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"Wx",M(EQr),"Wy",M(CZN),"Wz",M(EDA),"cC",M(Fse)],Cbr,0,J9,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DSA),"Wx",M(DBS),"Wy",M(EEj),"Wz",M(DZ9)],CBg,0,F,[],1,0,0,0,Cjd,0,Er,[],1,0,0, +["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(DUV),"cC",M(DRx)],ABz,0,F,[],1,0,0,0]); +Em([C3J,0,F,[],1537,0,0,0,VU,0,F,[C3J],1025,0,0,0,AFw,0,VU,[],1,0,0,["bzv",W(EIF)],Bwh,0,F,[],1,0,0,["p",G(FeY)],B6a,0,F,[],1,0,0,0,CoI,0,Er,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(Evk)],Ca7,0,TI,[],0,0,0,["bxi",M(EfY),"bxj",BF(Dz2)],Dpn,0,F,[],17,0,0,0,COX,0,F,[],1,0,0,0,Dk6,0,Er,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(FdV),"cC",M(ADH)],Cab,0,A_L,[BkM,Ht],1,0,0,["bqv",G(Fop)],Cza,0,F,[],0,0,0,0,O6,0,Bx,[],65553,0,()=>KT(),0,Byj,0,F,[W3,St,F1,ET,ACV],17,0,0,0,A8d, +0,F,[],16,0,0,0,A01,0,Bx,[],65552,0,()=>Bcl(),0,CKJ,0,F,[],1,0,0,["p",G(FoM)],CB3,0,Np,[],1,0,0,0,C__,0,F,[],1,0,0,0,COd,0,F,[],32768,0,()=>A6G(),0,Dom,0,F,[],1,0,0,0,C0x,0,F,[],1,0,0,0,CMC,0,F,[],1,0,0,0,BLM,0,F,[],1,0,()=>A5S(),0,C4D,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cF",M(Fn9),"cC",M(EoG)],C$y,0,F,[Ht],1,0,0,["cC",M(DF3)],CTi,0,ADt,[],1,0,0,["h2",M(BdZ),"hP",M(AW7),"g7",G(DKJ)],CHM,0,F,[],1537,0,0,0,DaZ,0,F,[CHM],1,0,0,0,BRi,0,F,[],0,0,0,0,C4u,0,F,[A7p,F1],1,0,0,["p",G(EhS),"rl", +M(DY3)],C$U,0,JC,[],1,0,0,["Tf",G(Ql),"Te",BF(Dmy),"a23",BF(De2)],A$p,0,Bx,[],65553,0,()=>Brc(),0,CKd,0,IT,[],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(EFW),"a0M",M(E94),"cC",M(Ex4)],DlB,0,F,[],17,0,()=>VN(),0,CWp,0,F,[KP,C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(Fqi),"cF",M(BUW),"bAR",W(ECy),"bAS",W(EqP)],Bbh,0,Bx,[],65552,0,()=>AE9(),0,Dc2,0,F,[],1,0,0,0,C6L,0,F,[],1,0,0,0,BXd,0,VU,[],1,0,0,["bzv",W(Fab)],BUo,0,VU,[],1,0,0,["bzv",W(DHx)],CcL,0,F,[],1,0,0,0,EX5,0,F,[Ht], +17,0,0,0,Css,0,F,[Ht],17,0,0,0,A0F,0,Bx,[],65553,0,()=>AR1(),0,BSC,0,F,[],1,0,()=>B3c(),0,DaS,0,F,[],1,0,0,["p",G(FfR)],C3j,0,F,[],1,0,0,0,CXS,0,F,[Pj],1,0,0,["UO",M(EM)],ELw,0,F,[],17,0,0,0]); +Em([BOM,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cF",M(D5k),"cC",M(E6u)],Ciz,0,F,[KP],0,0,0,["bAR",W(EdD),"bAS",W(E$X)],ClU,0,Np,[],1,0,0,["gw",M(Ehp)],ExK,0,F,[],1,0,0,0,EiH,0,F,[],1,0,0,0,BRB,0,F,[],16,0,0,["dp",G(D4t),"cx",M(D_i)],CH7,0,F,[MX],1,0,0,["dT",M(Fkp)],DbZ,0,F,[F1],1,0,0,["p",G(DIa),"rl",M(EhZ)],C1l,0,F,[F1,Pj],1537,0,0,["UO",M(EM)],Coo,0,F,[TA],0,0,0,0,Coq,0,F,[TA],0,0,0,["PE",M(DJ5)],Cop,0,F,[TA],0,0,0,0,Cor,0,F,[TA],0,0,0,0,CwV,0,F,[TA],1,0,0,0,CwT,0,F,[TA],1,0,0,["PE", +M(DXq)],CwQ,0,F,[TA],1,0,0,["PE",M(D9H)],DaA,0,F,[],32768,0,()=>HJ(),0,EXu,0,F,[],17,0,0,0,E_T,0,F,[],1,0,0,0,BLw,0,F,[ZZ],1025,0,0,0,BB_,0,BLw,[],1,0,()=>BqO(),0,CCC,0,F,[],1,0,0,0,EuF,0,F,[],1,0,0,0,C$I,0,F,[],1,0,0,0,Ddw,0,SF,[],1,0,0,["OG",M(DtZ)],CVA,0,TI,[],0,0,0,["bxi",M(D2U),"bxj",BF(EIS)],BIf,0,TI,[KP],0,0,0,["bxi",M(D8p),"bxj",BF(Fo4),"bAR",W(ElM),"bAS",W(EfR)],Cxe,0,TI,[],0,0,0,["bxi",M(Fje),"bxj",BF(E7S)],CE9,0,TI,[],0,0,0,["bxi",M(DGl),"bxj",BF(FsK)],CTG,0,AG8,[],1,0,0,0,CER,0,F,[BLN],0,0,0,["byY", +W(EX1),"byZ",W(EBh)],AZi,0,Bx,[],65553,0,()=>TN(),0,Clq,0,F,[A48],1,0,0,0,B2n,0,F,[],0,0,0,["dY",G(Clg),"ey",G(E$r)],CHq,0,B2n,[Ie],0,0,0,["dZ",G(FwZ)],C4N,0,F,[],32768,0,()=>B4d(),0,Co$,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],CyV,0,F,[],32768,0,()=>B8f(),0,Cjn,0,F,[],32768,0,()=>BIU(),0,C4o,0,F,[MX],1,0,0,0,C6y,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(C2V),"cF",M(BzV)],C1A,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(Dl9),"cF",M(Bra)],CYv, +0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DcS),"cF",M(Bb$)],C3l,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(E3G),"cF",M(Fdm)],BCU,0,NE,[],1,0,0,["p",G(Dvr),"hP",M(BmP),"hJ",G(BPH),"h2",M(YR)],Djo,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],Dcq,0,F,[B58],0,0,0,["UU",W(Ewe)],Cna,0,F,[],1,0,0,0,CyZ,0,F,[],1,0,0,0,B$9,0,F,[Bi5],0,0,0,0]); +Em([CMV,0,F,[MX],1,0,0,["dT",M(Feq)],DiA,0,Hx,[],1,0,0,["bh9",W(FoA),"a61",M(DV_),"RE",M(DZJ),"bfb",M(C5p)],Ckw,0,Hx,[],1,0,0,["bh9",W(ENP),"a61",M(EUe),"RE",M(BWV)],Dmn,0,Hx,[],1,0,0,["bh9",W(Fkb),"a61",M(D5_),"RE",M(BKj)],DgF,0,Hx,[],1,0,0,["bh9",W(DLU),"a61",M(EhK),"RE",M(BTj)],CTb,0,Hx,[],1,0,0,["bh9",W(DOr),"a61",M(E_L),"RE",M(B1_)],CVR,0,Hx,[],1,0,0,["bh9",W(FeO),"a61",M(Fg2),"RE",M(DlG)],Drx,0,Hx,[],1,0,0,["bh9",W(FbY),"a61",M(EQo),"RE",M(B05)],CP3,0,F,[],1,0,0,0,Bgl,"UHorizontalLine",39,F,[N3],1,0,0, +["g3",G(Bs)],AMK,0,F,[],1537,0,0,0,AZQ,0,F,[AMK],1,0,0,["bmi",W(Ebe)],C5Q,0,A36,[BHe],1,0,0,["tO",M(E$9),"sY",Bu(EQi),"CT",M(D0X),"uf",M(D$S),"L_",G(EvW),"ys",M(Dy1)],BoZ,0,F,[],1537,0,0,0,Csz,0,F,[BoZ],1,0,0,["bB5",G(EtK)],CDh,0,F,[BoZ],1,0,0,["bB5",G(ESP)],CtE,0,F,[],1,0,0,0,Bpq,0,F,[],1,0,0,0,B$i,0,J9,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"Wy",M(CZD),"Wz",M(D6z),"Wx",M(DTE),"cC",M(Fmn),"Vj",M(Fcq)],BBO,0,ADt,[],0,0,0,["h2",M(DQm),"hP",M(D5y),"g7",G(EOm)],COi,0,F,[],1,0,0,0,Sb,0,F,[],1537, +0,0,0,W4,0,F,[Sb],1025,0,0,0,BON,0,W4,[],17,0,()=>BxW(),["bAY",W(Egr)],Dla,0,W4,[],17,0,0,["bAY",W(DCH)],Bh9,0,W4,[],1,0,0,["bAY",W(EwU)],DdR,0,W4,[],17,0,0,["bAY",W(D0d)],Brg,0,W4,[],17,0,0,["bAY",W(Ejp)],CVi,0,F,[],1,0,()=>AAz(),0,CAN,0,F,[],1537,0,0,0,BGx,0,F,[CAN],1,0,0,0,A3y,0,Bx,[],65553,0,()=>AH1(),0,CtA,0,F,[Eo],1,0,0,0,DcL,0,Er,[],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DVu),"mh",M(Eow)],CKI,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(D3E),"cF",M(D6j)],DhC, +0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EGq),"cF",M(DEL)],C5c,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EGF),"cF",M(DNL)],C1e,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DCY),"cF",M(Cqj)],BVb,0,F,[],1,0,()=>AP4(),0,B$$,0,F,[OW],0,0,0,["fc",W(E$u)],DpU,0,F,[OW],0,0,0,["fc",W(Fdy)],C$0,0,F,[],1,0,0,0,CqX,0,F,[],0,0,0,0,Dlp,0,F,[],1,0,0,0,C4w,0,F,[],1,0,0,0,B9H,0,F,[TM],0,0,0,["bkX",G(DSf),"a0J",G(DAF)],Dh4,0,F,[Ie],0,0,0,["dY",G(SD), +"ey",G(D83),"dZ",G(Tj)],B3V,0,Er,[],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(Exw),"cC",M(EU_)],BNL,0,Er,[],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(D1h),"cC",M(Fq2)],CJP,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cF",M(B3A),"cC",M(E96)]]); +Em([Cej,0,F,[KP],0,0,0,["bAR",W(DWe),"bAS",W(EPO)],CdU,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DGJ),"cF",M(Fpg)],Cxk,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DX1),"cF",M(DXL)],Dj3,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DTz),"cF",M(D2p)],BCW,0,F,[],1537,0,0,0,CdS,0,F,[BCW],1,0,0,["hE",G(DNG),"bje",W(DQD),"bj4",W(E2p),"bj9",BF(EuA),"bj$",W(E7c),"bj5",function(b,c,d,e,f,g){return Fm0(this,b,c,d,e,f,g);},"Xj",Bu(Ewm),"bj6",W(DBU), +"Xo",W(Etq),"bkd",function(b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){return EbC(this,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);},"bj8",function(b,c,d,e,f,g,h,i,j,k,l){return Elp(this,b,c,d,e,f,g,h,i,j,k,l);},"bjh",function(b,c,d,e,f,g,h,i,j){return DOt(this,b,c,d,e,f,g,h,i,j);},"bjK",function(b,c,d,e,f,g,h){return EFs(this,b,c,d,e,f,g,h);},"bjL",function(b,c,d,e,f,g){return EUd(this,b,c,d,e,f,g);},"Xn",W(EW5),"Xp",W(DHG),"Xs",G(FvB)],MJ,0,F,[BCW],1,0,0,["bje",W(CQy),"bj$",W(Dv1),"bj4",W(DLs),"bj9",BF(CdX),"bj5",function(b,c,d,e, +f,g){return A$v(this,b,c,d,e,f,g);},"Xj",Bu(CvZ),"bj6",W(C8X),"Xn",W(B3O),"Xp",W(Bri),"Xo",W(Bmi),"bkd",function(b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){return C4Z(this,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);},"bj8",function(b,c,d,e,f,g,h,i,j,k,l){return DhX(this,b,c,d,e,f,g,h,i,j,k,l);},"bjh",function(b,c,d,e,f,g,h,i,j){return DoE(this,b,c,d,e,f,g,h,i,j);},"bjK",function(b,c,d,e,f,g,h){return Cwc(this,b,c,d,e,f,g,h);},"bjL",function(b,c,d,e,f,g){return BlY(this,b,c,d,e,f,g);},"hE",G(UN),"Xs",G(F4)],DpO,0,MJ,[],1,0,0,["bj6", +W(E$G)],B$6,0,MJ,[],1,0,0,["Xo",W(Dvo)],CeE,0,MJ,[],1,0,0,["bjh",function(b,c,d,e,f,g,h,i,j){return DMI(this,b,c,d,e,f,g,h,i,j);}],CiW,0,MJ,[],1,0,0,["bjK",function(b,c,d,e,f,g,h){return D9i(this,b,c,d,e,f,g,h);}],CjH,0,MJ,[],1,0,0,["bj8",function(b,c,d,e,f,g,h,i,j,k,l){return E$h(this,b,c,d,e,f,g,h,i,j,k,l);}],C7j,0,MJ,[],1,0,0,["bkd",function(b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){return E0s(this,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);}],Dkf,0,MJ,[],17,0,0,["bjL",function(b,c,d,e,f,g){return FsT(this,b,c,d,e,f,g);}],CpC, +0,MJ,[],1,0,0,["Xj",Bu(EJO)],CJa,0,MJ,[],1,0,0,0,BWE,0,NE,[],0,0,0,["hP",M(EL4),"h2",M(ESq)],CJj,0,F,[C1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cF",M(CR8),"cC",M(DeW)],A5H,0,NE,[],1,0,0,["hP",M(Enj),"h2",M(BGD)],Cqo,0,OQ,[AIP],1,0,0,0,BAJ,0,F,[],1,0,()=>BP$(),["cx",M(E5B),"dp",G(EBx),"p",G(EBR)],B9r,0,F,[],32768,0,()=>BP9(),0,BSu,0,ADA,[],0,0,0,["RG",G(DQa),"Rv",M(D80),"RO",M(B3_),"YA",M(D10)],CB1,0,F,[],1,0,0,0,CKN,0,F,[],1,0,0,0,CA9,0,F,[ByS],0,0,0,["bmt",G(Dxz),"bA4",G(DIE)],Md,0,F,[],1537, +0,0,0,GG,0,F,[Md],1025,0,0,0,Cov,0,GG,[Md],1,0,0,["blB",BF(Fjt),"blJ",Bu(EaV)],EWu,0,GG,[Md],1,0,0,0,Cbq,0,F,[Ht],0,0,0,["cC",M(ETF)],Dnz,0,FK,[],1,0,0,["cC",M(DxK),"bl5",G(Fr2)],CkB,0,F,[ByS],17,0,0,["bmt",G(TP),"bA4",G(E4$)],CG_,0,F,[],1,0,0,0,Bxp,0,F,[],1537,0,0,0,C6r,0,F,[Bxp],1,0,0,["bmA",M(DVF)],A3e,0,F,[Bxp],1,0,0,["bmA",M(EzN)],BaE,0,Bx,[],65553,0,()=>AJ9(),0,CJW,0,F,[Bxp],1,0,0,["bmA",M(EP5)],C3f,0,ADt,[],1,0,0,0,C_e,0,If,[],0,0,0,["UO",M(EM),"dX",G(Fkm)],DeU,0,F,[],1,0,0,0,Cjt,0,F,[F1],17,0,0,["p", +G(EsP),"rl",M(EOH)],Dkh,0,F,[],1,0,0,["dp",G(Dvf),"cx",M(DWF)],Bvj,0,F,[TM,M1],1537,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],BGq,0,F,[TM],1,0,0,["a0J",G(EAd),"bkX",G(Dum)],BZU,0,F,[TM],1,0,0,["a0J",G(D4r),"bkX",G(E3Z)],DbF,0,Er,[Bvj],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a0J",G(Foe),"bkX",G(E4r),"byE",M(Ean),"byD",G(Ek8),"mh",M(E8b),"a0M",M(E40),"cC",M(EVI),"bkY",G(DDb)],CZo,0,F,[Bvj],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a0J",G(E7i),"bkX",G(DR9),"byE",M(EN9),"byD",G(Ex$), +"cF",M(ER_),"a0M",M(Egn),"cC",M(DFI),"bkY",G(EVu)],BES,0,F,[],1,0,()=>BCq(),0]); +Em([BW1,0,F,[],1025,0,0,0,CQC,0,F,[MX],1,0,0,["dT",M(FhH)],CQB,0,F,[OW],1,0,0,0,CQA,0,F,[Bi5],1,0,0,["eq",M(DbA)],Sc,"Inflate$Return",2,Dt,[],0,0,0,0,B8b,0,F,[],1025,0,0,0,CVZ,0,GG,[Md],1,0,0,["blB",BF(Fnc),"blJ",Bu(EzQ)],Dgr,0,GG,[Md],1,0,0,["blB",BF(ElE),"blJ",Bu(Ftm)],CrE,0,GG,[Md],1,0,0,["blB",BF(Fa4),"blJ",Bu(EP6)],CET,0,GG,[Md],1,0,0,["blJ",Bu(Eyc),"blB",BF(Fo1)],Dq6,0,GG,[Md],1,0,0,["blB",BF(EBe),"blJ",Bu(En9)],Cwo,0,GG,[Md],1,0,0,["blB",BF(Ffk),"blJ",Bu(DIQ)],CDA,0,GG,[Md],1,0,0,["blB",BF(ElL),"blJ", +Bu(Eau)],CBl,0,GG,[Md],1,0,0,["blB",BF(DYi),"blJ",Bu(D2c)],CyQ,0,GG,[Md],1,0,0,["blB",BF(Evs),"blJ",Bu(E1b)],B$u,0,GG,[Md],1,0,0,["blJ",Bu(Enx),"blB",BF(EvU)],Dnd,0,GG,[Md],1,0,0,["blB",BF(EMC),"blJ",Bu(DuO)],Ddh,0,GG,[Md],1,0,0,["blB",BF(Fwn),"blJ",Bu(Fq0)],Cmj,0,GG,[Md],1,0,0,["blB",BF(Ee7),"blJ",Bu(EnM)],C04,0,GG,[Md],1,0,0,["blB",BF(Foh),"blJ",Bu(E6Y)],Dof,0,GG,[Md],1,0,0,["blJ",Bu(DCS),"blB",BF(Dxr)],Chx,0,GG,[Md],1,0,0,["blB",BF(Ev2),"blJ",Bu(EMt)],CyG,0,GG,[Md],1,0,0,["blB",BF(EjK),"blJ",Bu(ENX)],Rp, +0,F,[],1,0,0,0,A5g,0,Bx,[],65553,0,()=>Ou(),0,Cwl,0,IT,[M1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(EGn),"a0M",M(ExJ),"cC",M(FsU)],CZP,0,IT,[M1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(ENp),"a0M",M(DSj),"cC",M(E4y)],Ct2,0,IT,[M1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(DOb),"a0M",M(Fhl),"cC",M(D1q)],Ecq,0,F,[],1,0,0,0,Cu2,0,F,[APS],1,0,0,["hP",M(ESX),"h2",M(D8w),"hE",G(EJA),"gy",G(Fv1),"g7",G(DtD),"hF",M(DNR),"hG",G(EX2),"hH",M(EQH),"hI",G(EFq),"hJ",G(DfZ), +"gQ",M(Ekh),"hK",G(FwD)],CMU,0,F,[],1,0,0,0,C$_,0,BW1,[],1,0,0,0,BQr,0,B8b,[ET],16,0,0,["cx",M(EGK),"dp",G(Dxi)],C4y,0,F,[],1,0,0,0,A5Z,0,Bx,[],65552,0,()=>Bn1(),0,BO5,0,F,[],1025,0,0,0,Bii,0,BO5,[],1,0,0,0,BjE,0,Bii,[Vk],16,0,0,0,CJe,0,F,[],1,0,0,0,Bzo,0,F,[],1,0,()=>AXA(),0,Be3,0,F,[],1025,0,()=>BbI(),0,AUT,"ZoneRulesException",14,GE,[],1,0,0,0,Og,0,F,[],1537,0,0,0,CoK,0,F,[Og],1,0,0,["bCB",G(EV1),"p",G(Ev5),"boX",Bu(DKO),"boV",W(EN8)],B7r,0,F,[Og],1,0,()=>Bw6(),["bCB",G(EzU),"boV",W(DR3),"boX",Bu(EKd)],B1s, +0,F,[Og],1,0,()=>BqI(),["bCB",G(E$H),"boV",W(Fsg),"boX",Bu(DX9)],BLp,0,F,[Og],1,0,()=>Bhj(),["bCB",G(Eio),"boV",W(Dvg),"boX",Bu(D$k)],C08,0,F,[Og],1,0,0,["bCB",G(Fnz),"boV",W(DwN),"boX",Bu(EtQ)],B5l,0,F,[Og],1,0,()=>AZp(),["bCB",G(D7o),"boV",W(DEh),"boX",Bu(E$k)],BMU,0,F,[Og],1,0,()=>A3F(),["bCB",G(EQy),"boV",W(Fwk),"boX",Bu(EAh)]]); +Em([BLd,0,F,[Og],1,0,()=>A6C(),["bCB",G(Ev4),"boV",W(DIz),"boX",Bu(DPd)],BUX,0,F,[Og],1,0,()=>A3q(),["bCB",G(EqZ),"boV",W(CNo),"boX",Bu(C5w)],BRA,0,F,[Og],1,0,()=>A1x(),["bCB",G(DAn),"boV",W(DJl),"boX",Bu(DPM)],B4c,0,F,[Og],1,0,()=>AZY(),["bCB",G(EWK),"boV",W(Fh$),"boX",Bu(DKy)],BDU,0,F,[Og],1,0,()=>AY6(),["bCB",G(E4o),"boV",W(Ear),"boX",Bu(Evv)],BCg,0,F,[Og],1,0,()=>A$r(),["bCB",G(EkN),"boV",W(EU6),"boX",Bu(FdF)],BDZ,0,F,[Og],1,0,()=>Bsv(),["bCB",G(FxM),"boV",W(DCh),"boX",Bu(EMR)],CH_,0,F,[Og],1,0,0,["bCB", +G(DL$),"boV",W(EaP),"boX",Bu(Fui)],BGO,0,F,[Og],1,0,()=>BaZ(),["bCB",G(EZ$),"boV",W(EQp),"boX",Bu(EOj)],B6i,0,F,[Og],1,0,()=>B1z(),["bCB",G(Ep4),"boV",W(FbP),"boX",Bu(D1k)],CMZ,0,F,[MX],1,0,0,["dT",M(FhO)],CxH,0,Be3,[],0,0,0,0,Crc,0,F,[A48],1,0,0,0,Dh0,0,F,[F1],1,0,0,["p",G(E2P),"rl",M(Ff6)],BPP,0,F,[],0,0,0,["p",G(EMS)],CS5,0,F,[Ie],0,0,0,0,Cnp,0,F,[Eo],1,0,0,0,Cnq,0,F,[Eo],1,0,0,0,CNU,0,F,[BCT],0,0,0,["uc",W(EEZ)],CV6,0,F,[Eo],1,0,0,0,CV4,0,F,[Eo],1,0,0,0,CVQ,0,F,[Eo],1,0,0,0,CVP,0,F,[Eo],1,0,0,0,CVN,0,F, +[Eo],1,0,0,0,CVM,0,F,[Eo],1,0,0,0,CoW,0,F,[BoZ],1,0,0,["bB5",G(EoY)],CcP,0,F,[Ie],0,0,0,0,DjK,0,FK,[],0,0,0,["bl5",G(Ejz),"cC",M(DJG),"blE",G(Epv)],CBT,0,FK,[],0,0,0,["cC",M(E9F)],CUf,0,FK,[],0,0,0,["cC",M(DFC)],C_W,0,FK,[],0,0,0,["cC",M(EqW)],AFx,"Snake",62,F,[N3],1,0,0,["g3",G(Bs)],Don,0,FK,[],0,0,0,["bl5",G(D1E),"cC",M(E_g),"blE",G(EF8)],CP2,0,FK,[],0,0,0,["bl5",G(Fmw),"cC",M(Dyg),"blE",G(DPU)],AZn,0,FK,[],1024,0,0,["bl5",G(EW7),"blE",G(DVG)],B9E,0,AZn,[],0,0,0,["cC",M(DBx)],Do_,0,AZn,[],0,0,0,["cC",M(D0g)],C1p, +0,FK,[],0,0,0,["bl5",G(FcS),"blE",G(Ey3),"cC",M(DKb)],Dcr,0,FK,[],0,0,0,["bl5",G(ED8),"cC",M(E1U),"blE",G(EAM)],C4P,0,FK,[],0,0,0,["bl5",G(EJo),"cC",M(ElU),"blE",G(E$n)],Drs,0,FK,[],0,0,0,["bl5",G(FbB),"cC",M(E9J),"blE",G(DU0)],Cdf,0,FK,[],0,0,0,["bl5",G(Et2),"cC",M(EC4),"blE",G(E60)],C0N,0,FK,[],0,0,0,["bl5",G(EpF),"cC",M(ENc)],CBy,0,FK,[],0,0,0,["bl5",G(Fel),"cC",M(Enc),"blE",G(EF1)],Dr8,0,FK,[],0,0,0,["bl5",G(Dzf),"cC",M(DwY),"blE",G(DZg)],CLW,0,FK,[],0,0,0,["bl5",G(EZV),"cC",M(ECs),"blE",G(E4U)],CA4,0,FK, +[],0,0,0,["bl5",G(Euy),"cC",M(EDp),"blE",G(Ex8)],Cg3,0,FK,[],0,0,0,["bl5",G(Ezg),"cC",M(EuN)],CXV,0,FK,[],0,0,0,["bl5",G(FiS),"cC",M(D8j),"blE",G(ESz)],BLv,0,FK,[],0,0,0,["bl5",G(EvT),"cC",M(ECL)]]); +Em([Cbu,0,F,[BNe],1,0,0,["gz",G(DEx),"co",G(FmU),"i9",G(DRa)],CjZ,0,F,[],32768,0,()=>BMf(),0,Dsn,0,NE,[B7k],1,0,0,["hP",M(BmB),"h2",M(EX),"bh8",G(EdL)],CFa,0,F,[],0,0,0,0,CtZ,0,F,[],32768,0,()=>Bak(),0,DhR,0,F,[AON],1,0,0,["OH",M(D6E)],B1p,0,F,[C1l],1,0,0,["UO",M(EM)],WJ,"FtileEmpty",62,Fc,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a33",G(Eb7),"p",G(EVS),"cC",M(EAi),"a31",M(ECn),"a35",G(EnA),"a36",G(E1s),"a34",G(EPv)],K2,0,F,[QU],1025,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"p",G(DgL), +"bDp",G(CzY),"Xm",G(AV9),"cC",M(A2P),"a32",M(Ly),"a34",G(AWz),"a35",G(BQs),"a36",G(CWn),"Xs",G(Mn),"Xl",G(B3J),"bBm",W(Edh),"a33",G(E8r),"bDq",G(Ex5),"cF",M(Fkw)],CWQ,"FtileDecorateWelding",62,K2,[],1,[0,0,0],0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"Xl",G(E2e)],CPQ,0,NE,[],1,0,0,["hP",M(Czr),"h2",M(Fd4)],CPG,0,F,[],0,0,0,["p",G(FdY)],B4S,0,F,[],1,0,()=>BWW(),0,C2n,0,F,[MX],1,0,0,["dT",M(EEe)],CO0,0,F,[Ie],1537,0,0,0,B_L,0,F,[CO0],0,0,0,0,CGE,0,F,[],1,0,()=>A1V(),0,BEc,0,F,[],1,0,()=>AV5(),0,DLN,0,F, +[Ht],1,0,0,0,Fpj,0,F,[Ht],1,0,0,0,Eca,0,F,[Ht],1,0,0,0,Fr7,0,F,[Ht],1,0,0,0,Fed,0,F,[Ht],1,0,0,0,JD,0,LU,[],1,0,0,["p",G(ETD)],AZr,0,F,[ET],17,0,()=>BuN(),["cx",M(EVn),"dp",G(Dou),"p",G(C5W)],BiK,0,F,[Ht],1,0,()=>Bwa(),0,CLV,0,F,[AMK],0,0,0,0,C79,0,F,[],32768,0,()=>Bxu(),0,CXX,0,FK,[],0,0,0,["bl5",G(Euv),"cC",M(Ey0)],Cvw,0,F,[F1],0,0,0,["rl",M(Eop)],C$B,0,F,[BlO],1,0,0,0,CY8,0,F,[],0,0,0,["p",G(EEi)],DjE,0,IT,[M1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DFU),"mh",M(D3t),"a0M",M(EvC)],COK, +0,IT,[M1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EJ1),"mh",M(DFK),"a0M",M(EZD)],Ckg,0,F,[],1,0,()=>AGo(),0,CSM,0,F,[AMK],0,0,0,["bmi",W(DOk)],CXJ,0,F,[Ht],1,0,0,0,CXz,0,VU,[],1,0,0,["bzv",W(D75)],CDH,0,VU,[],1,0,0,["bzv",W(Epg)],Bc7,0,F,[],1,0,0,0,C_d,0,F,[Ie],0,0,0,["dY",G(FmC),"dZ",G(Fi8)],CQ$,0,F,[],0,0,0,0,Bb4,0,F,[],1537,0,0,0,CYH,0,F,[Bb4],0,0,0,["qg",M(D0f)],CYG,0,F,[Bb4],0,0,0,["qg",M(EVZ)],C_b,0,If,[],0,0,0,["UO",M(EM)],A9c,0,Bx,[],65553,0,()=>PW(),0,C0q,0,F,[C1],0,0,0,["g3",G(Bs), +"a9W",G(BK),"co",G(B6),"cC",M(EW1),"cF",M(E1d),"yz",W(ERg)],CoX,0,F,[C1],0,0,0,["g3",G(Bs),"a9W",G(BK),"co",G(B6),"cC",M(DH4),"yz",W(Fko),"cF",M(EP3)],DjV,0,F,[C1],1,0,0,["g3",G(Bs),"a9W",G(BK),"cC",M(ETQ),"cF",M(FqJ),"yz",W(Fmu),"co",G(DIg)]]); +Em([A0X,0,F,[Biq],0,0,()=>Bun(),["YX",M(Eda),"ZS",G(Dxt),"YV",G(EkZ),"Z6",M(Fat),"YW",M(ERy),"p",G(EPz)],CYF,0,F,[Bb4],0,0,0,["qg",M(DNM)],CoY,0,F,[C1],0,0,0,["g3",G(Bs),"a9W",G(BK),"co",G(B6)],ClZ,0,F,[],17,0,()=>AT$(),0,CVV,0,F,[],1537,0,0,0,CWr,0,F,[],1537,0,0,0,DED,0,F,[CVV,BiG,BLD,CWr],0,0,0,0,Uc,0,Bx,[Biq],66560,0,()=>BtE(),0,A0h,0,Bx,[BOm],65552,0,()=>BbO(),0,B0B,0,Uc,[],65552,0,0,0,B0C,0,Uc,[],65552,0,0,0,B0D,0,Uc,[],65552,0,0,0,B0E,0,Uc,[],65552,0,0,0,CX1,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W", +G(BK),"co",G(B6),"cF",M(EoP),"cC",M(Ed9)],A0B,0,Bx,[],65553,0,()=>AFB(),0,D27,0,F,[],1,0,0,0,C8m,"NoSuchColorRuntimeException",40,DR,[],1,0,0,0,AWf,0,F,[],1,0,0,0,Dmc,0,F,[],1,0,0,0,Cuj,0,F,[],1,0,0,0,A92,0,Bx,[],65553,0,()=>ARq(),0,BR2,0,F,[Ht],1,0,()=>BR0(),0,ClX,0,F,[Eo],1,0,0,0,ClV,0,F,[Eo],1,0,0,0,DoR,0,F,[A48],1,0,0,0,DeB,0,F,[],1,0,0,0,BMm,0,F,[],1,0,0,0,C1L,0,F,[],1537,0,0,0,Dr7,"FtileBreak",62,WJ,[C1L],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a33",G(E7a),"p",G(EFp),"a31",M(E7b),"Xl",G(DP0)],BXM, +"FtileGoto",62,WJ,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a31",M(D9X)],Ctf,"FtileWithNoteOpale",64,Fc,[KP,ABO],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a34",G(Dvs),"a35",G(Foa),"a36",G(ETk),"a33",G(FrM),"bBm",W(EfT),"cC",M(Ec2),"a31",M(D0h),"bAR",W(DTG),"bAS",W(Fw3),"Xm",G(DX7)],CMd,"FtileKilled",62,Fc,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a33",G(Eve),"a34",G(EXc),"a35",G(DSH),"a36",G(Fn7),"a31",M(D_h),"cC",M(Fm8)],BS7,"FtileLabel",62,WJ,[],1,0,0,["g3",G(Bs),"yz", +W(BS),"a9W",G(BK),"co",G(B6)],DSY,0,F,[],1,0,0,0,B3z,"FtileWithNotes",64,Fc,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a34",G(EW9),"a35",G(D_R),"a36",G(Ey8),"cC",M(E9z),"a31",M(DQj),"Xm",G(FlX)],Dam,0,F,[],1537,0,0,0,A6B,0,F,[Dam,C1],1537,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],CY4,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(D3V)],CAL,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EO3)],Cw7,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK), +"co",G(B6),"cC",M(Dx1)],CYU,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EJB)],CRi,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EBE)],DkJ,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(D2P)],Cbc,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DQN)],CAg,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(Efg)],Co6,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EEY)],CIJ,0,F,[C1],0,0,0,["g3", +G(Bs),"yz",W(BS),"co",G(B6),"cC",M(EOa),"a9W",G(D8i)],C_v,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DR$)],CBP,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(Etr)],CK1,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(ElV)]]); +Em([CLj,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DKo)],CMh,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(ERN)],C6Z,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EWT)],C_i,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DWm)],CJF,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DTu)],FwE,0,F,[],1,0,0,0,Dgv,0,F,[],0,0,0,0,Dre,0,F,[AON],0,0,0,["OH",M(EZk)],Bxv,0,F,[F1,ET],17,0,0,["cx",M(Fla),"dp",G(ESa), +"p",G(EEa),"rl",M(ELk)],A0R,0,F,[ET],17,0,0,["cx",M(EYC),"dp",G(DQl),"p",G(En2)],CPu,0,F,[Eo],1,0,0,0,COn,0,F,[B6S],1,0,0,["Qk",G(FvC),"Ql",G(EkU)],Cz7,0,F,[OW],0,0,0,["fc",W(D0L)],B6x,0,F,[],1537,0,0,0,Dgs,0,F,[B6x],1,0,0,0,CpD,0,F,[Eo],1,0,0,0,Cjl,0,F,[B6x],1,0,0,0,B_m,0,F,[Eo],1,0,0,0,C_c,0,F,[Ie],0,0,0,0,FhB,0,F,[W3,St,F1,ET,ACV],17,0,0,0,CgT,0,F,[],1,0,0,0,C7A,0,F,[KP],0,0,0,["bAR",W(D11),"bAS",W(EMW)],Cl1,0,F,[KP],0,0,0,["bAR",W(Efd),"bAS",W(EjT)],CBc,"FtileWithSwimlanes",62,K2,[],0,[0,0,0],0,["g3",G(Bs), +"yz",W(BS),"a9W",G(BK),"co",G(B6),"a35",G(DHY),"a36",G(Ein)],C90,0,F,[KP],0,0,0,["bAR",W(Fqx),"bAS",W(Ebd)],C0h,0,F,[BXy],0,0,0,["Ob",M(Ek),"bjd",G(EUA),"I1",G(Fkz),"Ds",M(Eqd)],CoZ,0,F,[OW],0,0,0,["fc",W(DQ3)],Beg,0,A2K,[ET],16,0,0,["XA",M(BED),"cx",M(D4z),"dp",G(Fog),"p",G(D7R)],A8G,0,Bx,[],65553,0,()=>APU(),0,BK1,0,F,[],1,0,0,0,A04,0,Bx,[],65553,0,()=>Oc(),0,BPk,0,F,[],1,0,()=>AOv(),0,Ezp,0,F,[],1,0,0,0,PS,0,F,[],1,0,0,0,B0d,0,F,[],1537,0,0,0,ATN,0,F,[B0d],1,0,0,0,Cu8,0,F,[B0d],1,0,0,["p",G(FwX)],UE,0,F, +[],1,0,0,["p",G(DUZ)],Ds,0,F,[],0,0,0,0,A33,0,Bx,[],65552,0,()=>ABh(),0,BI,0,Bx,[],65552,0,()=>SS(),0,C5E,0,F,[OW],1,0,0,["fc",W(Fjr)],Crn,0,F,[AMK],0,0,0,["bmi",W(EDK)],Cg0,0,F,[],0,0,0,0,CSh,0,F,[AMK],0,0,0,["bmi",W(EPS)],Bbb,0,Bx,[],65553,0,()=>A2Y(),0,Dgi,0,IT,[M1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(DHy),"a0M",M(DFv),"cC",M(EXw)],B61,0,F,[],1,0,()=>A4l(),0,CIu,0,IT,[M1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(FpX),"a0M",M(EdO),"cC",M(FsR)],BZl,0,F,[],1,0,()=>BOt(), +0]); +Em([Ccq,0,IT,[M1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(EWy),"a0M",M(E$R),"cC",M(EjY)],B9R,0,IT,[M1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(Eka),"a0M",M(DB6),"cC",M(DXB)],Dsz,0,IT,[M1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(E3$),"a0M",M(DTf),"cC",M(Fwg)],DgN,0,F,[Vk,ET],1,0,0,["d1",G(EEm),"d0",G(E5I),"dp",G(Eq0)],C0M,0,F,[],1,0,0,0,Cqh,"FtileDecorateIn",63,K2,[],1,[0,0,0],0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"Xm",G(Ect)],CsJ,"FtileAssemblySimple", +62,F,[QU],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"p",G(ELd),"a35",G(D5u),"a36",G(ESS),"bBm",W(BhJ),"cC",M(Dze),"Xm",G(Cw0),"bDp",G(D6l),"a32",M(AXG),"a34",G(Eew),"Xs",G(EKV),"Xl",G(FdC),"a33",G(EYs),"bDq",G(E0A),"cF",M(Ek1)],ACh,0,F,[Ht,N3],1537,0,0,["g3",G(Bs)],Dc,0,F,[ACh],1025,0,0,["g3",G(Bs),"p",G(EfQ),"bBY",G(Ep1),"bBZ",G(DBB)],Kn,0,F,[ACh],1537,0,0,["g3",G(Bs)],Cil,"ConnectionVerticalDown",64,Dc,[Kn],1,0,0,["g3",G(Bs),"cC",M(EpI),"bB0",BF(DOO)],C5C,"FtileMargedRight",62,Fc,[],1,0,0,["g3", +G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"Xm",G(EeL),"bDp",G(EGQ),"a34",G(D2B),"a35",G(EDk),"a36",G(E$Q),"a31",M(EM7),"cC",M(EO$),"a33",G(E9t),"bBm",W(Ee$)],B_Z,"FtileDecorateOut",63,K2,[],1,[0,0,0],0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"bDp",G(D2D)],A4e,0,F,[],1025,0,0,0,B_0,0,A4e,[],1,0,0,["a$d",G(E75),"a$e",G(Frt),"bEr",G(FcI),"bEq",G(DR_)],CSy,0,A4e,[],1,0,0,["a$d",G(EXK),"a$e",G(FmP),"bEr",G(EQG),"bEq",G(D1Q)],C1J,"FtileNoteAlone",64,Fc,[KP,ABO],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6), +"a33",G(DU_),"a34",G(E0x),"a35",G(FhL),"a36",G(Eup),"cC",M(DFy),"a31",M(Ev0),"bAR",W(Eso),"bAS",W(Fmz)],Cjz,0,F,[Ht],1,0,0,0,Dk5,0,F,[Ie],0,0,0,0,CrM,0,IT,[M1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(EV7),"a0M",M(FkI),"cC",M(Fh_)],CTY,0,F,[KP],0,0,0,["bAR",W(A$g),"bAS",W(A7R)],CTZ,0,F,[KP],0,0,0,["bAR",W(EhU),"bAS",W(Fld)],CT0,0,F,[KP],0,0,0,["bAR",W(EzE),"bAS",W(D2M)],CqV,"FtileMargedVertically",62,K2,[],1,[0,0,0],0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(Et6),"a32",M(Dq7),"cF", +M(D0Z)],BLO,"FtileWithConnection",62,K2,[],0,[0,0,0],0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"p",G(EBq),"cC",M(Fa6)],EwZ,0,F,[],17,0,0,0,C4I,0,IT,[M1],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"mh",M(D9$),"a0M",M(CrC),"cC",M(EH2)],Di3,"FtileMarged",62,Fc,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a33",G(EGH),"Xm",G(EY7),"bDp",G(EKM),"a34",G(DSv),"a35",G(Eom),"a36",G(EJ$),"a31",M(DK3),"bBm",W(DF4),"cC",M(EtN)],CIB,0,F,[St],16,0,0,0,Dmp,0,Dc,[],1,0,0,["g3",G(Bs)],BzO,0,F,[Ht,N3], +1537,0,0,["g3",G(Bs)],Fj5,0,F,[],1,0,0,0,CsQ,0,F,[AMK],0,0,0,["bmi",W(EoD)],Cf8,0,F,[],0,0,0,0,Cpn,0,QP,[AST],0,0,0,["UO",M(EM),"j",G(DKU),"dV",G(EUL),"dX",G(Fow)],DgZ,"FtileCircleStart",63,Fc,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a33",G(DEF),"a34",G(Fxb),"a35",G(Fgw),"a36",G(ECK),"cC",M(DGW),"a31",M(DWw)],Dix,"FtileForkInner",64,Fc,[],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a33",G(DZt),"a35",G(CBn),"a36",G(ELH),"a34",G(EPU),"cC",M(D3k),"a31",M(E3J),"bBm",W(DMu)],CqU,0,F,[],1, +0,0,0,BN2,"FtileIfLongHorizontal",64,Fc,[],0,0,()=>AWP(),["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a34",G(DXR),"a35",G(BmU),"a36",G(ElK),"a33",G(D1g),"bBm",W(BNj),"cC",M(D7K),"a31",M(EOV)],C6O,"FtileIfLongVertical",64,Fc,[],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a33",G(DwE),"a34",G(Fc1),"a35",G(Bfk),"a36",G(Fsh),"bBm",W(BQh),"cC",M(EUc),"a31",M(EsB)],AMx,0,F,[],1025,0,0,0,Cd6,0,AMx,[],1,0,0,["bBW",M(D_D),"bBV",W(Fms)],CWL,0,AMx,[],1,0,0,["bBW",M(FvW),"bBV",W(E_R)],CjJ,0,AMx,[],1,0,0,["bBW", +M(D$a),"bBV",W(E3k)],Dhj,"FtileCircleStop",63,Fc,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a33",G(D6m),"a34",G(DHT),"a35",G(DZ7),"a36",G(D6B),"cC",M(DOz),"a31",M(EE8)],BW_,"FtileBox",63,Fc,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"Xm",G(DYQ),"a34",G(EUi),"a35",G(D2e),"a36",G(DVU),"p",G(DEr),"cC",M(D7E),"a31",M(EJK),"a33",G(D2t)],BS8,"FtileBoxEmoji",63,Fc,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"Xm",G(Flu),"a34",G(EcE),"a35",G(DQr),"a36",G(DZe),"cC",M(EdQ),"a31",M(ELN), +"a33",G(E7g)],Dkp,"FtileWithUrl",62,K2,[],1,[0,0,0],0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(Fub)],BTd,"FtileWhile",64,Fc,[],0,0,()=>BjB(),["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a33",G(DHh),"a34",G(EoI),"a35",G(BSo),"a36",G(EYn),"cC",M(E22),"a31",M(Cvg),"bBm",W(DwZ)],C7P,0,F,[],1,0,0,0]); +Em([B$I,"FtileFactoryDelegatorWhile$1",64,F,[ACh],0,0,0,["g3",G(Bs),"cC",M(DVP),"bBY",G(Esa),"bBZ",G(DGS)],CY5,"FtileCircleSpot",63,Fc,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a33",G(Els),"a34",G(DQc),"a35",G(ERl),"a36",G(EjA),"cC",M(Fbj),"a31",M(EpT)],CkK,"FtileCircleEndCross",63,Fc,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a33",G(EK8),"a34",G(EVG),"a35",G(E0m),"a36",G(ExO),"cC",M(DMH),"a31",M(FiW)],COI,"FtileRepeat",64,Fc,[],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6), +"a33",G(FnH),"a35",G(DTy),"a36",G(Dyh),"a34",G(Eke),"cC",M(DYN),"a31",M(D$x),"bBm",W(E0U)],AAB,0,Fc,[ABO],1024,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a33",G(EKh),"a34",G(FcN),"a35",G(Evw),"a36",G(EqF)],AIY,"FtileDiamond",63,AAB,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EiI),"a31",M(Fnw),"oi",G(DUp)],Cbf,"FtileFactoryDelegatorRepeat$1",64,F,[ACh],0,0,0,["g3",G(Bs),"cC",M(DNl),"bBY",G(Ecg),"bBZ",G(EUx)],BZj,0,F,[],1,0,0,0,CD8,0,F,[],1,0,0,0,BF6,0,F,[],1,0,0,0,Ch8,"FtileMinWidthCentered", +62,K2,[],1,[0,0,0],0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(Ebb),"a32",M(AEi),"bBm",W(EbO),"cF",M(DB$)],Bbn,"FtileDiamondInside2",63,AAB,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DNC),"a31",M(EBb),"oi",G(DBh)],BJq,"FtileIfLongHorizontal$ConnectionVerticalIn",64,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(EWC),"bB0",BF(FxI)],BPC,"FtileIfLongHorizontal$ConnectionVerticalOut",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(DtV)],BIt,"FtileIfLongHorizontal$ConnectionIn",64,Dc,[],0,0,0,["g3",G(Bs),"cC", +M(FgR)],BNt,"FtileIfLongHorizontal$ConnectionHorizontal",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(EuR)],B7t,"FtileIfLongHorizontal$ConnectionLastElseIn",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(Ej6)],BTS,"FtileIfLongHorizontal$ConnectionLastElseOut",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(DI9)],B5H,"FtileIfLongHorizontal$ConnectionHline",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(ETR)],C0y,"FtileMargedWest",62,K2,[],1,[0,0,0],0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(FkW),"a32",M(B_a),"cF",M(Exc)],CV7,"FtileIfLongVertical$ConnectionVerticalIn", +64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(DJ2)],CUS,"FtileIfLongVertical$ConnectionThenOut",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(DTj)],CZ4,"FtileIfLongVertical$ConnectionVertical",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(EzR)],Cle,"FtileIfLongVertical$ConnectionIn",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(EpZ)],C4d,"FtileIfLongVertical$ConnectionLastElse",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(E7t)],Dsx,"FtileIfLongVertical$ConnectionLastElseOut",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(EGz)],CtP,"FtileIfLongVertical$ConnectionThenOutConnect", +64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(Eiy)],C70,"FtileDecorateOutLabel",63,K2,[],1,[0,0,0],0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a32",M(Csh),"cC",M(Et$),"cF",M(DKW)],Dck,"FtileDecorateInLabel",63,K2,[],1,[0,0,0],0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a32",M(C6H),"cC",M(Fsj),"cF",M(Dtx)],A6q,0,Fc,[],1025,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],B1g,0,A6q,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a34",G(D0e),"a35",G(EeM),"a36",G(EwR),"bBm",W(E8U),"a31",M(Eal)],ARh,0,B1g, +[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a33",G(ESO),"bF$",M(EPP),"bF8",M(EMH),"cC",M(Dxv)],Co1,"FtileSwitchWithManyLinks",65,ARh,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"bF$",M(ES4)],DqF,"FtileSwitchWithOneLink",65,ARh,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],ASv,0,Bx,[],65553,0,()=>AJc(),0,AAp,"FtileDiamondInside",63,AAB,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(DTT),"a31",M(ETp),"oi",G(Fny)],CQX,"FtileWhile$ConnectionBackEmpty",64,Dc,[],0,0, +0,["g3",G(Bs),"cC",M(Fvx)],C7e,"FtileWhile$ConnectionIn",64,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(D0z),"bB0",BF(EvS)],Cth,"FtileWhile$ConnectionOutSpecial",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(EZU)],Dbj,"FtileWhile$ConnectionOut",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(ECG)],DsP,"FtileWhile$ConnectionBackBackward1",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(E3f)],DsQ,"FtileWhile$ConnectionBackBackward2",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(Exb)],CON,"FtileWhile$ConnectionBackSimple",64,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(D41),"bB0",BF(DNz)],AXB, +"FtileDiamondSquare",63,AAB,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(EFG),"a31",M(Fwz),"oi",G(FtU)],Dn0,"FtileRepeat$ConnectionIn",64,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(ErY),"bB0",BF(Dzr)],CNN,"FtileRepeat$ConnectionBackBackward1",64,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(Eoy),"bB0",BF(D2n)],CNL,"FtileRepeat$ConnectionBackBackward2",64,Dc,[Kn],0,0,0,["g3",G(Bs),"bB0",BF(ELs),"cC",M(EDd)],Cpc,"FtileRepeat$ConnectionOut",64,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(DAx),"bB0",BF(EKU)],Csy,"FtileRepeat$ConnectionBackComplex1", +64,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(DCt),"bB0",BF(EjJ)],Cx8,"FtileRepeat$ConnectionBackSimple2",64,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(EtD),"bB0",BF(E8V)]]); +Em([Cx7,"FtileRepeat$ConnectionBackSimple1",64,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(Eab),"bB0",BF(EZu)],Cob,"FtileIfDown",64,Fc,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a33",G(DyK),"a34",G(EBP),"a35",G(B0P),"a36",G(D8S),"cC",M(EA8),"a31",M(DDp),"bBm",W(Fkd)],BJb,0,A6q,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a34",G(BWA),"a35",G(DQY),"a36",G(EAY),"bBm",W(BUs),"a31",M(D7b)],BkG,0,BJb,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a33",G(E6G),"bF8",M(CMx),"cC",M(EG7)],CEU,"FtileIfWithLinks", +65,BkG,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)],CO4,0,F,[KP],0,0,0,["bAR",W(FsY),"bAS",W(E0W)],B4Z,0,NE,[],1,0,0,["hP",M(EXz),"h2",M(ENA)],D7k,0,F,[],1,0,0,0,AQl,0,Bx,[],65553,0,()=>AHJ(),0,CjG,"FtileIfDown$ConnectionIn",64,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(DtH),"bB0",BF(D6o)],Dgl,"FtileIfDown$ConnectionHorizontal",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(D9F)],AMN,"FtileIfDown$ConnectionElse2",64,Dc,[],0,0,0,["g3",G(Bs),"bFW",M(Cc1),"cC",M(D1w)],Dmq,"FtileIfDown$ConnectionElseNoDiamond",64,AMN,[],0, +0,0,["g3",G(Bs),"bFW",M(Ffu)],CY0,"FtileIfDown$ConnectionElse1",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(EV$)],Csw,"FtileIfDown$ConnectionOut",64,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(DPL),"bB0",BF(ExH)],Dop,"FtileIfDown$ConnectionElseHline",64,AMN,[],0,0,0,["g3",G(Bs),"cC",M(EcX)],CPk,"FtileIfDown$ConnectionHline",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(Fis)],A1I,0,Bx,[],65552,0,()=>ADw(),0,CA5,0,F,[KP],0,0,0,["bAR",W(E_0),"bAS",W(DNA)],Ccr,"FtileHeightFixedCentered",62,Fc,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6), +"a33",G(DUv),"Xm",G(CgX),"bDp",G(B$5),"a34",G(C2P),"a35",G(B$x),"a36",G(DrD),"a31",M(Fh8),"cC",M(EiN)],CN$,"FtileHeightFixedMarged",62,Fc,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a33",G(EqC),"Xm",G(DXo),"bDp",G(DZp),"a34",G(Ezw),"a35",G(E3Q),"a36",G(DMG),"a31",M(DQ4),"cC",M(DAT)],DdG,0,F,[KP],0,0,0,["bAR",W(EZl),"bAS",W(DMe)],CIn,0,F,[Ie],0,0,0,["dY",G(E9u),"dZ",G(Fp0)],Eeb,0,F,[],1,0,0,0,Bet,"FtileBlackBlock",63,Fc,[],1,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6),"a31",M(FhY),"cC",M(DRN), +"a34",G(Dyt),"a35",G(DVe),"a36",G(D3e),"a33",G(Fcc)],C4s,"ParallelBuilderMerge$ConnectionIn",64,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(E8_),"bB0",BF(E3S)],CqY,"ParallelBuilderMerge$ConnectionHorizontalThenVertical",64,Dc,[],0,0,0,["g3",G(Bs),"cC",M(DwG)],CSE,"ParallelBuilderFork$ConnectionIn",64,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(E1O),"bB0",BF(E_l)],Cy1,"ParallelBuilderFork$ConnectionOut",64,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(E7N),"bB0",BF(EUU)],Cwy,0,F,[],0,0,0,0,B6d,"FtileThinSplit",63,Fc,[],1,0,0,["g3",G(Bs),"yz", +W(BS),"a9W",G(BK),"co",G(B6),"a33",G(Ejw),"a31",M(E$l),"cC",M(EGA),"a34",G(Erl),"a35",G(EDD),"a36",G(Fxj)],C_o,"ParallelBuilderSplit$ConnectionIn",64,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(DYc),"bB0",BF(EPe)],C06,"ParallelBuilderSplit$ConnectionOut",64,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(Dtz),"bB0",BF(FaF)],Cd5,"FtileSwitchWithOneLink$ConnectionVerticalTop",65,Dc,[],0,0,0,["g3",G(Bs),"cC",M(D2y)],C0t,"FtileSwitchWithOneLink$ConnectionVerticalBottom",65,Dc,[],0,0,0,["g3",G(Bs),"cC",M(E1R)],DfS,0,Er,[],0,0,0,["g3",G(Bs), +"yz",W(BS),"a9W",G(BK),"co",G(B6),"cC",M(Dyy),"mh",M(Eux)],C2G,"FtileIfWithLinks$ConnectionHorizontalThenVertical",65,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(D5q),"bB0",BF(ERc)],Cp1,"FtileIfWithLinks$ConnectionVerticalThenHorizontal",65,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(EWb),"bB0",BF(DNQ)],CZx,"FtileIfWithLinks$ConnectionVerticalThenHorizontalDirect",65,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(DDY),"bB0",BF(DSQ)],CMT,"FtileIfWithLinks$ConnectionVerticalOut",65,Dc,[],0,0,0,["g3",G(Bs),"cC",M(Em7)],C72,"FtileIfWithLinks$ConnectionHline", +65,Dc,[],0,0,0,["g3",G(Bs),"cC",M(DTS)],B6K,"FtileSwitchWithManyLinks$ConnectionHorizontalThenVertical",65,Dc,[],0,0,0,["g3",G(Bs),"cC",M(DIe)],DaC,"FtileSwitchWithManyLinks$ConnectionVerticalTop",65,Dc,[],0,0,0,["g3",G(Bs),"cC",M(EV5)],Cn$,"FtileSwitchWithManyLinks$ConnectionHorizontalThenVerticalCrossSwimlane",65,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(Fks),"bB0",BF(Eql)],CPZ,"FtileSwitchWithManyLinks$ConnectionVerticalThenHorizontal",65,Dc,[],0,0,0,["g3",G(Bs),"cC",M(DvR)],DeS,"FtileSwitchWithManyLinks$ConnectionVerticalBottom", +65,Dc,[],0,0,0,["g3",G(Bs),"cC",M(DJC)],B_r,"FtileSwitchWithManyLinks$ConnectionVerticalThenHorizontalCrossSwimlane",65,Dc,[Kn],0,0,0,["g3",G(Bs),"cC",M(E03),"bB0",BF(ENT)],Csk,0,F,[Vk,Iu],0,0,0,0,CNK,0,F,[C1],0,0,0,["g3",G(Bs),"yz",W(BS),"a9W",G(BK),"co",G(B6)]]); +E8Q([A2a,()=>[BTR,B0N,BXU,BY2,BYU,BSB,B8p,BLX,BDu,BYQ,BOf,BZx,B4z,BFF,BKJ,BLr,BX$,BRl,BHH,BT5,BBQ,BVJ,BWp,B5C,BYX,BBE,B0j,A6h,BuH],AJe,()=>[Ua,RA,Wa,AWv,Ry,AHH,ByX,AIK,BhV,Bsf,BiM,Brw,BSY,ANM,Bc2,AYa,BbY,Bkx,Bdx,AHv,A8g,AJa,ALi,AKn,Byc,AAX,Bo8,Bpr,AL3,A6Q,AMO,AMd,BjT,BmE,ALo,AKW,A_u,BAO,LK],RY,()=>[AGY,Vc,Lv,Ov,V0,BgI,CK,Jm,H1,ACK,AVV,BnM,A5D,A2r,Cz,ABJ,Bvs,Bjg,A0L,Pt,BFm,BJ8,Xs,BsX,BRx,A3Y,BjI,A5N,ASQ,B2I],A7D,()=>[CF,CO,Ft],AOM,()=>[KF,IO,ANo,OZ,L8,A1r,A1s,ALN,AUv,AUb,AV8,A7r,A7q,KD,A4C,Bao,AYM],I1,()=>[Bd4, +Bnk,BLs,ASd,KB,B35,B7F,AWZ,A0G,BTJ,BOL,Bv3,BYc,BWz,Bz7,BnF,BdP,Btr,BT4,BCz,BZ5,BPs,B1m,BTF,B1C,BlG,B8_,BGs,BHh,BvG,BL_,BZc,B9h,BOH,BKv,BnT,BN7,B8D,BUZ,BGR,BK$,BNM,B3e,BFf,BOy,BLz,BU9,A8L,BXV,BNc,BAg,BE$,B3a,AOD,AJd,BQ8,BYW,BZR,BNk,B7g,BSU,BZ1,B59,BID,BM3,BC$,BLA,BNU,BYM,BUv,B1G,BQQ,BEm,B15,BL$,B6y,BVa,BKx,BEy,BHK,A7a,A47,BEC,B7S,Bsj,Bdp,BM2,Bca],Cn,()=>[Bcy,A2h,Yy,A5r,ALv,AIJ,A_5,ByG,A4m,K1,A$O,BoM,A2i,ASw,ANB,ADu,AIt,A4u,AX4,Bc$,Pm,AAR,KU,AVA,A2y,Bat,BEN,AQy,AAN,AF0,BxL,A1T,V8,A2R,A2N,Bjl,BkK,AFg,Bpi,AVc,ASD, +Vr,ATg,AJp,BsH,AEC,ACD,Uk,K_,AXp,AXu,ASu,A5d,A77,A1j,A65,A0r,AYw,AQu,Btu,BcE,PU,AKe,ND,Bab,AVg,Bba,A9d,A7v,AW3,Bv2,Bfv,ALR,Zi,AJ$,Bea,ATS,BhR,A0H,Y3,AAt,A5b,Bkv,L0,O8,AUE,A3p,Yn,XC,Wk,AIB,AWV,A2b,Byu,BtG,BAC,AUn,AIz,AEf,AOh,BtS,BbG,A7c,VB,AK_,Bve,X0,A6z,A7S,A4r,AC9,UH,BGG,Nh,A57,AEH,A39,BfQ,Wv,A9y,OO,Bqj,Bei,AGJ,Bkh,BaC,PG,ASf,AQ6,AQz,Bj9,ON,AP5,AXT,APP,BnZ,BvD,Bi9,Bk3,AQO,AUS,Bp9,BfX,ASg,AW2,A_r,AOo,AUB,Bv6,BxB,Bug,Bxy,Bta,BjK,BAy,BAf,Bl6],A3u,()=>[A0V,BB3],A4K,()=>[Byx,Bvn,Bnt,Bts,Bsl,BcS,Bf$,Bpm,Bxd,BpF, +B6A,BzK,BmK,BX2],A68,()=>[NH,Hg,Pe],AQJ,()=>[BqR,BKZ,B4F,C6j],A_q,()=>[AX6,ARJ,A2I],A6I,()=>[FR,J0,AJr,BkL],AH5,()=>[YD,E1,C6,AKr,A2s],A0d,()=>[AEw,AUA],AIL,()=>[WU,Os,OK,Qn,SN,RH,Wz],AZA,()=>[AKj,A0K],A0P,()=>[BiN,BMS],A05,()=>[BtB,ByF,Bv$,Br6,Bf5,Bnz,Bal,BDR],AQd,()=>[BcD,BAd,BdJ,A3I,BOB,Chi],A9Z,()=>[AT4,AH$],AMZ,()=>[B4n,ATI],AYP,()=>[X4,Y_,AGy,AHQ],AVS,()=>[B6N,BJi],Bax,()=>[A_3,AOO],A4f,()=>[Xw,VJ,Bp1,ABD,Bir,AA1],A8p,()=>[JB,WY,ABo],AYH,()=>[PY,KS,Oo],Bbf,()=>[BxI,Bxm,BeD,Btz,BTB],A81,()=>[ANV,ADn,Rb, +UZ],AYb,()=>[AIk,A6O,AZ$,A5O,AXc,AWn,A7F,AT1,ATM,AQw,APc,APk,AQQ,APs,ATX,AX2,AZC,AKT,AO6,A9b,AY3,A8v,A8z,AZm,A3b,AKV,AUK,A3t,A$t,A5v,ANT,A8h,A8S],AMj,()=>[Brd,BO9,BS0,BTn,Be$,BgY,A5w,AZv,BzZ,A1g,A82,VC,AVb,APz,Bez,Bjr,BDB,B1S,A0n,BxH,BUp,B6q,BH8,A97,BPi],AYe,()=>[A9W,BsJ,BuV],APF,()=>[AFF,AAK],A3S,()=>[BtU,BnX,BJ2,B8t,BGb,CmI],AZt,()=>[Bcn,YW],Kc,()=>[AFk,BbC,BIn,Bom,B3h,BD9,BlT,BPB,ACf,ADy,BEv,BRJ,BYT,Blk,Bsa,Bvx,Bzf,BTu,BQn,AX0,BcK,A52,BgX,A9t,Bsd,A1E,BjU,Bwg,Bzh,Bxh,BnI,Byi,BoF,ByQ,BwZ,Btl,Bn5,B1Z,B7n,B5S, +B4f],A9C,()=>[AEe,AA2,APy,AMY,AFZ,A0C,Btk,ATa,ByR],A0p,()=>[AT3,A51],A8X,()=>[Kl,Q6],A35,()=>[G0,BBx,A$q],AFO,()=>[AGZ,AFc,AEW,AHl,AK3,AOu,AMz,AK1,AVE],JF,()=>[Hf,AGv,Bwq,BpD,Bkm,A3i,A4H,Bcz,BmC,BwW,BcJ,BzW,AB1,Bio,BtM,BOb,BV4,BSK,BJx,BFW,BzU,Bz$,BSL,B6E,BF8],SB,()=>[BWN,Bj7,Bx8,B7Q],A1H,()=>[ACS,A9w,Vv,QK,Yi,Rg,AHO,AJP,ABM,AIw,AC2,AC$,AA8],AGH,()=>[B6f,BVw,DiV],AAH,()=>[ASi,BkW,BsS,Bfm,BfG,BzT,A8H],A2D,()=>[BfT,Bk$,B7x],I$,()=>[BlQ,Biu,Bu7,Bz1,ByT,Bjq,Bvz,Bs_,A$x,Bxq,BrC,BTg],A$h,()=>[AYc,Bs2,A66,BRz],BHR, +()=>[],BHT,()=>[],BHS,()=>[],BHW,()=>[],AC3,()=>[ACQ,AKO,AKP,Rx,AH_,ZL,AFW,Ka,Nd,Vf,S8,BhG,Bfw,BpO,A1K,TJ],A2t,()=>[BFG,C2d],BTU,()=>[],BTV,()=>[],BTW,()=>[],BTX,()=>[],BTY,()=>[],BTZ,()=>[],BT0,()=>[],BT1,()=>[],BT2,()=>[],BMQ,()=>[],BMP,()=>[],BMO,()=>[],A7H,()=>[A_v,BqE,BQ$],A$Y,()=>[A8m,Bus,BXR],AP6,()=>[QA,Q0,Pk,ASl,AAT],A7l,()=>[A5Q,AYA,B0n],A3k,()=>[A_F,ARO,A8N],Bag,()=>[AVn,Yq,AB7,AMF,A9E],A5x,()=>[Zf,A70,Dcf],A6K,()=>[A8T,BlA],A20,()=>[BaM,Vd],AVZ,()=>[AVj,BrY],AYU,()=>[Bar,A2$,AZh,A63,Bt0],AVw,()=>[AE1, +A$9,A27,A0l,A9s,A8D,A7W,BbL],A98,()=>[FI,Bai],AIo,()=>[Ri,PX,Vs,AOb],A0g,()=>[AY1,ABL,BKz,Bbr,CBS],A_p,()=>[MG,L7,P6,Th],A0m,()=>[Xk,Ug,Xa,WE],A$u,()=>[A$_,PA],AUc,()=>[Bqb,BcM,BXF],AS0,()=>[T_,Y0,M5,Ku],AI5,()=>[APu,VI,NG,SZ,AD7,AK7,AKX,AOy,AN1,AJG,AMG,Yg,Ok,A30,PI,ACO,ANr,A9k,ACy,ASb,AAq,ABt,Wd,Y8,O9,BxP,AEE,AOF,AIC,AGi,AFJ,ACF,BM1,VL,Xn,AE4,AE$,ASH,A6s,AWe,AIF,BEf,A1y,Yo,A78,YI,AEq,BiB,BmW,Bec,ByO,AQX],Nf,()=>[Gy,FL,G_,HG],AY7,()=>[Bp2,Kw,ZD,N2,AWA,BsP,Bku,BC7],A4X,()=>[AAr,Ys,A_A,A8V,Bjs],A0e,()=>[BDM,AG9], +M4,()=>[Blw,Bgj,Bhe,Bd8,Bqs,BeB,B8i],A24,()=>[A34,BKQ],A2T,()=>[AFD,RG,SO],Bbv,()=>[Xr,AJ3,AHT],AD3,()=>[LQ,AHz,AAY,AP$,APG,ANX,ANb,ASh,A59],A1M,()=>[AWM,A8f,A8b,AWm,ANU,BlU,B68],BEK,()=>[],BEJ,()=>[],BEI,()=>[],BEH,()=>[],BEG,()=>[],BEF,()=>[],BEM,()=>[],A4L,()=>[A4q,Bbu,A6g,A_M,Bjz],Mj,()=>[WS,ACA,BeE,A2J,Bu0,BtT,ATx,AR4,AK9,Bt_,Bye,Bsy,AK0,BAn,BeH,SJ,A4Z,A1a,ACk,UK,AAe,A_D,A$M,AED,ATE,BdN,NJ,AAo,BHU,BVn],AYY,()=>[Bb1,AO7,BAc,BtJ,BrH,BfJ,BfK,BlN,Br9,Bk9,Br3,BSi],A8i,()=>[AD2,ALJ,AOl,APK],A6u,()=>[Nb,AKg], +A0z,()=>[AHt,UO,AMJ],A95,()=>[AKo,ABg,APv,AEN],A13,()=>[AXo,X6,ATw,AZU],A$S,()=>[BKt,A3c,Bho],A9V,()=>[ZJ,AHg,AL7],AQM,()=>[Lr,OL,ARg,TX,A9n,BwM],AO_,()=>[A90,B2$],A$a,()=>[AXr,A5n,ByP],A1w,()=>[A1m,AEU,AM4],A25,()=>[Bni,ATb,BcH],A6D,()=>[A1e,BoT],AKJ,()=>[A_s,AUG,Bu4,Bq7,Bym,Bpa,BRr,BOC,BMg,BMh,BL5,BN3],A60,()=>[ATT,Bbl,BA3],A2n,()=>[A8A,A7T,A76,A9Y,Brv,AQn],AZG,()=>[AFm,AFP],A2C,()=>[BsE,BrF,AZX,BBR,BA9,BbQ,A3V,ARG,BqL,Bhq,ARl,BrM,R$,Blq,G9,A3P,A_o,Bc6,BgZ,A$B,Q_,BaD,A6R,BtW,BJz],A9L,()=>[A19,A7h,A2M],A8P, +()=>[Bfh,Qv],AZb,()=>[BeP,Blc,AW_,AVQ,APj,A0M,AWd,BrV],AZo,()=>[BNy,BTo,Bvt,BvO,BvA,COZ],A7m,()=>[BOs],BaP,()=>[A4V,A2o],Bac,()=>[BuZ,Bae,AX$,A5A,A74,A6J,A46,AYR,A5f,A6N,A0y,A$C,A2g,AYj,A7V,AA_,AQr,ATD,ATK,AMX,WG,AO1,AW4,Blh,A7Z,BuQ,A$d,A4n,AQB,RQ,AFq,AFX,ALB,AZs,AHu,AVN,ASW],A3G,()=>[Bqr,BkA,BF2],A1F,()=>[A_n,BGw,BCb,BjV,BHJ,Dei],A5C,()=>[BNX,BUD,BVe,B20,BE8,BW4,B6u,BXB,BeA,A8$,B8U,BTl,B57,BY6,BTe,BQi,B8o,BM_,BNm,BIc,BZX,BUR,BZJ,B2u,BRw,BPG,B69,BxM,Ble,BcF,BNo],A5X,()=>[AUY,Bw$],A5y,()=>[W2,Xc,A3$,ADW],A16, +()=>[BYS,ByY,BZy,B2e,Dfx],A1$,()=>[AVz,ARZ,Y4,Ze,ASY,ARt,AVH,APC,AXx,AIX,Yp,AUX,AW9],A7_,()=>[AHU,AYx,AKz,BVg,AUj,A41,Bbp,AN6,AR8,A6H,A5j,A_e,AEz,ATG,AOH,A9O,YU,ALu,AA4,AXh,A4b,AIA,AUU,Cck],A7I,()=>[A5P,B1r],AWw,()=>[O1,Oq,AZ6],A0E,()=>[BqF,BqP,BuS,Bt8,Bv0,B2s],A9M,()=>[AIM,AJS,AJK,A8C,A1Y,AOA],A_d,()=>[AQP,AUs,A9A],AZ3,()=>[RZ,AAm,ATh],A26,()=>[Bhu,BtZ,BBq],A6d,()=>[A0I,BwN],A0a,()=>[Ir,AIl,AGM,WC,Zr,Yr,AC7,AFH,AK$,AM1,AJ_,CEo],BaT,()=>[Baf,APM,BTz],A3N,()=>[A3T,BZK,BfA,B6h,BIX,CKp],AQm,()=>[Bt7,AV0,ATH,BcA, +BOn,AEQ,AEb],Ba1,()=>[AOE,BIs],A9U,()=>[Sw,Bf9],A3a,()=>[Btd,Bg2,A08,BQP,Cag],A8E,()=>[BwL,ZU,AOj,Ra,BWw],O6,()=>[A$e,Bmu,Bo9,Bbm,ANf,Q$,AXf,BgV,A21,B4a],A01,()=>[BjP,Bdi,Bls,B21],A$p,()=>[B8c,BCS],Bbh,()=>[A0T,A0S,A0Y,Bga],A0F,()=>[ANJ,BSf,BMi,BNR,BYL,BHi,B5I,BQY,BSb,ClT],AZi,()=>[A_8,Zk],A3y,()=>[BpS,AJq],BaE,()=>[AKM,A0j,Be5],A5g,()=>[AXw,A7j,ARX,Ba0,AG6,BVk],A5Z,()=>[BjC,BsG],A9c,()=>[Qh,P1,ALy,AJV,AFK,AIu],Uc,()=>[Bob,Bvq,Bnb,BJI],A0h,()=>[BrS,B1M],B0B,()=>[],B0C,()=>[],B0D,()=>[],B0E,()=>[],A0B,()=>[A4Y, +A9i,A_T,BAq],A92,()=>[Bqn,ARp],A8G,()=>[BmN,BzR,B6O],A04,()=>[AHc,Un,AS7],A33,()=>[Cw,D_,AAO,XA,UG,Ph,AQ_,T2,P9,ALQ,BaG],BI,()=>[OR,JE,Gg,AH4,Hv],Bbb,()=>[A9J,B3M,CGP],ASv,()=>[AJs,ABe,AM0],AQl,()=>[ANI,AUm],A1I,()=>[AE2,BJc]]); +let DT5=Ib(CHJ),B32=Ib(B$O),CuR=Ib(BEs),CcS=Ib(CBs),C$1=Ib(AGK),B94=Ib(Ddp),DkC=Ib(DoI),COm=Ib(AUQ); +D2R(["Can\'t enter monitor from another thread synchronously","@","null","Should never been thrown","String is null","String contains invalid digits: ","String contains digits out of radix ",": ","The value is too big for integer type","The value is too big for int type: ","Illegal radix: ","String is empty","false","true","","\n","\tat ","Caused by: ","javaClass@","[L","[]","/","createDiagram start","textarea","wip3","wip4","createDiagram ok","#00000000","#FFFFFF","Diagram too large for browser rendering: ", +" (max ","; override via the maxSvgSize option, or set it to 0 to disable this check)","ERROR42","Unsupported diagram type","PlantUML: callback threw: ","0","TEAVM","SVG","object","function","string","number","undefined","symbol","bigint","boolean","==============================","PlantUML: request failed: ","Rendering abandoned after 20 rounds of loading resources; still missing: ","(this Map)",", ","(this Collection)","viz","Viz.js","script","file","Viz is loading"," (from ","no answer within 60 s while loading ", +"script\n","] ","[%6d ms] %s","PlantUML version ","$version$"," / $git.commit.id$ [","Unknown compile time","#000000","background-color:","Expected top element to be a link.","\\\\n","0 0 ","none","normal","rotate(-90 ","rotate(90 ","Either src or dest is null","java.version","21","os.name","TeaVM","file.separator","path.separator",":","line.separator","java.io.tmpdir","/tmp","java.vm.version","user.home","data:image/png;base64,","data:image/png;md5,","@startexplain","@start","trying ","ok!","Can\'t compare ", +" to ","Enum "," does not have the "," constant","Class does not represent enum","]+","\\W+(\\d+)","Cannot find ","background:([^;]+)","(?i)\\]+style=\"([^\">]+)\"","viewBox[= \"\']+([0-9.]+)[\\s,]+([0-9.]+)[\\s,]+([0-9.]+)[\\s,]+([0-9.]+)","",""," ","","","","\\","","","","[[","","","]]","This diagram is using "," which is deprecated and will be removed in the future.","You should use "," instead in your diagram.","< ","> "," <"," >","\\s*","More info on https://plantuml.com/newline","^(.*?)(\\<\\<\\s*(.*)\\s*\\>\\>)\\s*$","^([^:]+?)(\\s*:.+)$","LEFT","CENTER","RIGHT",".","[^-\\w ]","ID","TITLE","DATA_ENTITY","DATA_QUALIFIED_NAME","DATA_ENTITY_1","DATA_ENTITY_2","DATA_ENTITY_UID","DATA_ENTITY_1_UID","DATA_ENTITY_2_UID","DATA_PARTICIPANT", +"DATA_PARTICIPANT_1","DATA_PARTICIPANT_2","DATA_UID","DATA_SOURCE_LINE","DATA_VISIBILITY_MODIFIER","DATA_LINK_TYPE","_legend","-?\\d+","black","ACTIVITY_DIAMOND","ARROW","CIRCLED_CHARACTER","OBJECT_ATTRIBUTE","OBJECT_STEREOTYPE","CLASS_ATTRIBUTE","CLASS_STEREOTYPE","COMPONENT","INTERFACE","INTERFACE_STEREOTYPE","COMPONENT_STEREOTYPE","NOTE","PACKAGE","PACKAGE_STEREOTYPE","ACTOR","ARTIFACT","CLOUD","FOLDER","FILE","FRAME","STORAGE","BOUNDARY","CONTROL","ENTITY","AGENT","RECTANGLE","LABEL","HEXAGON","PERSON", +"ARCHIMATE","CARD","NODE","DATABASE","QUEUE","STACK","SEQUENCE_BOX","SEQUENCE_DIVIDER","SEQUENCE_REFERENCE","SEQUENCE_DELAY","SEQUENCE_GROUP","SEQUENCE_GROUP_HEADER","PARTICIPANT","PARTICIPANT_STEREOTYPE","STATE_ATTRIBUTE","LEGEND","CAPTION","SWIMLANE_TITLE","FOOTER","#888888","HEADER","USECASE","USECASE_STEREOTYPE","ARTIFACT_STEREOTYPE","CLOUD_STEREOTYPE","STORAGE_STEREOTYPE","BOUNDARY_STEREOTYPE","CONTROL_STEREOTYPE","ENTITY_STEREOTYPE","AGENT_STEREOTYPE","RECTANGLE_STEREOTYPE","LABEL_STEREOTYPE","PERSON_STEREOTYPE", +"HEXAGON_STEREOTYPE","ARCHIMATE_STEREOTYPE","CARD_STEREOTYPE","NODE_STEREOTYPE","FOLDER_STEREOTYPE","FILE_STEREOTYPE","FRAME_STEREOTYPE","DATABASE_STEREOTYPE","QUEUE_STEREOTYPE","STACK_STEREOTYPE","ACTOR_STEREOTYPE","SEQUENCE_STEREOTYPE","PARTITION","DESIGNED_DOMAIN","DESIGNED_DOMAIN_STEREOTYPE","DOMAIN","DOMAIN_STEREOTYPE","MACHINE","MACHINE_STEREOTYPE","REQUIREMENT","REQUIREMENT_STEREOTYPE","und","en","CA","fr","zh","CN","FR","de","DE","it","IT","ja","JP","ko","KR","TW","GB","US","wip ","Empty description", +"Big exception ","}}","createSystem","Syntax Error?","HIDE","(hide|show)","@?unlinked","TYPE","(activate|deactivate|destroy|create)","WHO","([%pLN_.@]+|[%g][^%g]+[%g])","BACK","(#\\w+)?","LINE","(#\\w+)","deactivate","NAME","([%pLN_.]+|[%g][^%g]+[%g])","DATA","(.*)","STEREO","\\{","class","【 hide┇show 】","footbox","DIRECTION","【 left∙to∙right ┇ top∙to∙bottom 】","direction","partition","【 〃 〶$NAME=〇+「〤〃」 〃 ┇ 〶$NAME=〇+〴S 】","【 # 〇{6}「0〜9a〜fA〜F」┇ 〇?# 〇+〴w 】","STEREOTYPE","<< 〄+〴. ->〘 >>〙","{","end","}","single", +"note","POSITION","(right|left|top|bottom)","[%pLN_.]+","\\(\\)[%s]*[%pLN_.]+","\\(\\)[%s]*[%g][^%g]+[%g]","\\[[^\\]*]+[^\\]]*\\]","\\((?!\\*\\))[^\\)]+\\)",":[^:]+:","[%g][^%g]+[%g]","CODE","desc","archimate","([%pLN_.]+)","\\[","DESC","(end[%s]?state|\\})","CODE3","CODE4","[%g]([^%g]+)[%g]","FIELD","(--+|\\|\\|+)","state","\\|","COLOR","(?:(#\\w+[-\\\\|/]?\\w+)\\|)?","SWIMLANE","([^|]+)","([^|]+)?","\\}","(?i)^(authors?|about)\\s*$","(?i)^version\\s*$","Error ","ALL","CODE1","(-+)","ARROW_STYLE","(?:\\[((?:#\\w+|dotted|dashed|plain|bold|hidden|norank|single|node|thickness=\\d+)(?:,#\\w+|,dotted|,dashed|,plain|,bold|,hidden|,norank|,single|,node|,thickness=\\d+)*)\\])?", +"(-*)","\\>","CODE2","TASK1","([^\\[\\]]+?)","\\]","TASK2","([*#]+)","BACKCOLOR","\\[(#\\w+)\\]","SHAPE","(_)?","([ \t]*[*#]+)","(0)","([+-]+)","[^*#]*","\\b","(left|right|top|bottom)","(side|direction)","([%pLN_]+)","LINK","[.-]+\\>","LABEL_LINK","(?::[%s]*(.+))?","(nwdiag)?","\\{?","//",".*","([-.%pLN_]+)","(\\[(.*)\\])?",";?","group","([%pLN_]+)?","network","([-.%pLN_]+)?","NAME1","--","NAME2","@startdef","COMPACT","(compact)","(robust|concise|rectangle)","FULL","as","([%pLN_.@]+)","STEREOTYPE2","binary", +"bar","(\\<\\<.+?\\>\\>)","\"([^\"]+)\"","\\[(.*)\\]","#([0-9a-fA-F]{6}|[0-9a-fA-F]{3}|\\w+)","LABELS","(labels)","stackMode","MODE","(grouped|stacked)","orientation","ORIENTATION","(vertical|horizontal)","(packetdiag)?","colwidth","=","WIDTH","(\\d{1,3});?","node_height","HEIGHT","scale_direction","DIR","(ltr|rtl);?","scale_interval","INTERVAL","(\\d+);?","same_height","VALUE","(true|false);?","〇*〴s (* 〶$COMMENT=〄>〘*) 〇*〴s 〒$〙","\\(\\*\\*","\\(\\*","「〴an_」","〇*「〴an_-」","〇*〴.","action","activationBox","activity", +"activityBar","activityDiagram","actor","agent","analog","arrow","artifact","body","boundary","box","boxless","business","card","cardinality","circle","classDiagram","class_","clickable","cloud","closed","collection","collections","component","composite","robust","chenAttribute","chenEerDiagram","chenEntity","chenRelationship","concise","clock","componentDiagram","constraintArrow","control","database","day","delay","description","destroy","diamond","document","element","entity","stop","filesDiagram","folder", +"frame","ganttDiagram","generic","goto_","groupHeader","hexagon","highlight","hnote","interface_","jsonDiagram","gitDiagram","label","leafNode","lifeLine","mainframe","map","milestone","mindmapDiagram","month","name","newpage","node","nwdiagDiagram","packetdiagDiagram","objectDiagram","package_","participant","person","port","process","qualified","queue","rectangle","reference","referenceHeader","requirement","rnote","root","rootNode","saltDiagram","separator","sequenceDiagram","server","stack","stateDiagram", +"stateBody","storage","swimlane","task","timegrid","timeline","timingDiagram","undone","unstarted","usecase","verticalSeparator","year","visibilityIcon","private_","protected_","public_","IEMandatory","spot","spotAnnotation","spotInterface","spotEnum","spotProtocol","spotStruct","spotEntity","spotException","spotClass","spotAbstractClass","spotMetaClass","spotStereotype","spotDataClass","spotRecord","wbsDiagram","yamlDiagram","chartDiagram","line","area","scatter","axis","hAxis","vAxis","grid","annotation", +"_","sname","[","]","-;,","WITH_FILL_NONE","WITH_FILL_OPACITY","POLYGON","ELLIPSE","TEXT","PATH","DOT_PATH","IMAGE","IMAGE_SVG","IMAGE_TIKZ","PIXEL","CENTERED_CHARACTER","ATOM_TEXT"," != ","TOP","BOTTOM","%","+ ","0-","(",")","+","Can\'t convert code point "," to char","0x","--#+ 0,(<","Illegal format flags "," for conversion ","Duplicate format flags: ","HORIZONTAL_STRIPE","VERTICAL_STRIPE","SMALL_CIRCLE","translate dx="," dy=","FontStack[","serif","sans-serif","monospace","NORMAL","EXPOSANT","INDICE","(\\w+)\\s*=\\s*([%g][^%g]*[%g]|(?:\\w+))", +"SIMPLE_LINE","NO_CREOLE","FULL_BUT_UNDERSCORE","\\p{L}[0-9]","%pLN","\\s ","%s","\'‘’","%q","\"“”","%g","%(pLN|s|q|g)","depth level out of range (must be 0..63): ","*","depth(","TIKZ","\t",""," ","fSet","Name capturing group should start with letter","Is","In","ITALIC","","<「bB」「aA」「cC」「kK」〇?〘:〶$XC=〘【#〇{6}「0〜9a〜fA〜F」┇〇+〴w 】 〇?〘「-\\|/」【〇{6}「0〜9a〜fA〜F」┇〇+〴w】 〙〙 〙>", +"<「wW」〇?〘:〶$XC=【#〇{6}「0〜9a〜fA〜F」┇〇+〴w】〙>","<「uU」〇?〘:〶$XC=【#〇{6}「0〜9a〜fA〜F」┇〇+〴w】〙>","<「bB」>","<「iI」>","<「pP」「lL」「aA」「iI」「nN」>","PLAIN","BOLD","UNDERLINE","STRIKE","WAVE",";","shadowing","line.dashed","line.dotted","line.bold","color","noteshadowing","first","reversedirection","NonCapFSet","AheadFSet","BehindFSet","AtomicFSet","FinalSet","","JointSet","NonCapJointSet","PosLookaheadJointSet","NegLookaheadJointSet","PosBehindJointSet","NegBehindJointSet","main","","","Lower","Upper", +"ASCII","Alpha","Digit","Alnum","Punct","Graph","Print","Blank","Cntrl","XDigit","javaLowerCase","javaUpperCase","javaWhitespace","javaMirrored","javaDefined","javaDigit","javaIdentifierIgnorable","javaISOControl","javaJavaIdentifierPart","javaJavaIdentifierStart","javaLetter","javaLetterOrDigit","javaSpaceChar","javaTitleCase","javaUnicodeIdentifierPart","javaUnicodeIdentifierStart","Space","w","W","s","S","d","D","BasicLatin","Latin-1Supplement","LatinExtended-A","LatinExtended-B","IPAExtensions","SpacingModifierLetters", +"CombiningDiacriticalMarks","Greek","Cyrillic","CyrillicSupplement","Armenian","Hebrew","Arabic","Syriac","ArabicSupplement","Thaana","Devanagari","Bengali","Gurmukhi","Gujarati","Oriya","Tamil","Telugu","Kannada","Malayalam","Sinhala","Thai","Lao","Tibetan","Myanmar","Georgian","HangulJamo","Ethiopic","EthiopicSupplement","Cherokee","UnifiedCanadianAboriginalSyllabics","Ogham","Runic","Tagalog","Hanunoo","Buhid","Tagbanwa","Khmer","Mongolian","Limbu","TaiLe","NewTaiLue","KhmerSymbols","Buginese","PhoneticExtensions", +"PhoneticExtensionsSupplement","CombiningDiacriticalMarksSupplement","LatinExtendedAdditional","GreekExtended","GeneralPunctuation","SuperscriptsandSubscripts","CurrencySymbols","CombiningMarksforSymbols","LetterlikeSymbols","NumberForms","Arrows","MathematicalOperators","MiscellaneousTechnical","ControlPictures","OpticalCharacterRecognition","EnclosedAlphanumerics","BoxDrawing","BlockElements","GeometricShapes","MiscellaneousSymbols","Dingbats","MiscellaneousMathematicalSymbols-A","SupplementalArrows-A","BraillePatterns", +"SupplementalArrows-B","MiscellaneousMathematicalSymbols-B","SupplementalMathematicalOperators","MiscellaneousSymbolsandArrows","Glagolitic","Coptic","GeorgianSupplement","Tifinagh","EthiopicExtended","SupplementalPunctuation","CJKRadicalsSupplement","KangxiRadicals","IdeographicDescriptionCharacters","CJKSymbolsandPunctuation","Hiragana","Katakana","Bopomofo","HangulCompatibilityJamo","Kanbun","BopomofoExtended","CJKStrokes","KatakanaPhoneticExtensions","EnclosedCJKLettersandMonths","CJKCompatibility","CJKUnifiedIdeographsExtensionA", +"YijingHexagramSymbols","CJKUnifiedIdeographs","YiSyllables","YiRadicals","ModifierToneLetters","SylotiNagri","HangulSyllables","HighSurrogates","HighPrivateUseSurrogates","LowSurrogates","PrivateUseArea","CJKCompatibilityIdeographs","AlphabeticPresentationForms","ArabicPresentationForms-A","VariationSelectors","VerticalForms","CombiningHalfMarks","CJKCompatibilityForms","SmallFormVariants","ArabicPresentationForms-B","HalfwidthandFullwidthForms","all","Specials","Cn","IsL","Lu","Ll","Lt","Lm","Lo","IsM","Mn", +"Me","Mc","N","Nd","Nl","No","IsZ","Zs","Zl","Zp","IsC","Cc","Cf","Co","Cs","IsP","Pd","Ps","Pe","Pc","Po","IsS","Sm","Sc","Sk","So","Pi","Pf","posFSet","^ ","range:","CompositeRangeSet: "," ","UCI range:","decomposed Hangul syllable:","UCI ","CI ","decomposed char:","","","","WordBoundary","PreviousMatch","","EOI","^","DotAll","","","CI back reference: ","back reference: ","UCI back reference: ","sequence: ","UCI sequence: ", +"CI sequence: ","@startuml","@end","^@start([A-Za-z0-9]*)","No info found for ","info["," = ","link","Following link to ",".min.js","PlantUML: cannot load stdlib bundle ",".min.js: ","include","http://","https://","<","file\n","PlantUML: cannot include ","PLANTUML_VERSION","US-ASCII","ISO-8859-1","UTF-16","UTF-16BE","UTF-16LE","load wip20","load wip30","(SL) ","<<>>","/\'","\'/","/\'\'\'","\'\'\'/","/\'\'\'[-\\w]*\'\'\'/","!!!|\'\'\'|\"\"\"","!","...","... ( skipping "," lines )"," ..."," (Assumed diagram type: ", +"[From "," (line ",") ]"," +","[0-9 ]+"," : ","Cannot use local variable here","executeLines start ("," lines)","executeLines ok -> ","executeLines return null","Fatal parsing error","error endfunc","Compile Error ","!dump_memory","Cannot import","Error reading theme ","No such theme ","includesub","cannot include ","!define","##","Function not found ","!log","!include","url","once","many","To be finished","This file has already been included","desc2","Cannot include file","^\\s+$","!pragma ","skinparam ","skinparamlocked ", +"\\s*\'.*","^[%s]*title[%s]+(.+)$","id=([\\w]+)\\b","pattern=","Pattern must not be null or empty","SYNTAX_ERROR","EXECUTION_ERROR","Infinity","NaN","\"","\"([:","\\w*","-+","-","left","right","up","down","l","r","u","\\","\\\\","","Unknown format conversion: ","�","Replacement preconditions do not hold","UTF-8","Not an object: ","Not an array: ","Not a string: ","config is null","writer is null","value is null","name is null","object is null","AliceBlue","AntiqueWhite", +"Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenRod","DarkGray","DarkGrey","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","Darkorange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkSlateGrey","DarkTurquoise","DarkViolet","DeepPink","DeepSkyBlue","DimGray","DimGrey","DodgerBlue", +"FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","GoldenRod","Gray","Grey","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenRodYellow","LightGray","LightGrey","LightGreen","LightPink","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateGray","LightSlateGrey","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquaMarine", +"MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenRod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue", +"SlateGray","SlateGrey","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","Wheat","White","WhiteSmoke","Yellow","YellowGreen","BUSINESS","APPLICATION","MOTIVATION","STRATEGY","TECHNOLOGY","PHYSICAL","IMPLEMENTATION","COMPRESS","@enduml","Illegal precision: ","Can\'t format argument of "," using "," conversion","This exception should not been thrown","Currency not found: ","Expected \';\' at "," in ","Positive number pattern not found in ","Can\'t avoid rounding","Scale out of range.", +"Zero length BigInteger","Infinite or NaN","Rounding necessary","Underflow","Overflow","ABCDEFGHIJKLMNOPQRSTUVWXYZ0!\"#$%&\'()*+,-./:;<=>?@[\\]^_{|}~","length=","Illegal format flags: ","Missing format with for specifier ","UTF8","UPF9","%false","%true","","%backslash","Cannot convert "," to boolean.","%boolval","","%breakline","Cannot find void function ","%call_user_func","\u0000","%chr","No such color","%darken","Unknown time zone: ","Bad date pattern","%date","%dec2hex","dirpath","%dirpath","$","%dollar", +"%eval","theme","%feature","filedate","%filedate","%file_exists","filename","%filename","filenameNoExtension","%filename_no_extension","%function_exists","%get_all_theme","%get_current_theme","Bad JSON type","Not JSON data","%get_json_keys","array","not_json","%get_json_type","%get_variable_value","%version","plantuml.security","plantuml","%getenv","%hex2dec","%hsl_color"," to integer.","%intval","%invoke_procedure","%is_dark","%is_light","%json_add","%json_key_exists","%json_merge","%json_remove","Error on json_set: Too many arguments", +"%json_set","","%left_align","%lighten","JSON encoding issue in source ","JSON parse issue in source "," on location ","{}","\\.json$","%load_json","%and","%nand","%nor","%not","%nxor","%or","%xor","%lower","Divide by zero","%mod","","%newline","%n","%now","%ord","%percent","Error on Random: Too many argument","%random","%retrieve_procedure","%reverse_color","%reverse_hsluv_color","","%right_align","%set_variable_value","%size","%splitstr","%splitstr_regex","%str2json","%string","%strlen","%strpos","%substr", +"%tab","%upper","%variable_exists","%xargs","UP","DOWN","CEILING","FLOOR","HALF_UP","HALF_DOWN","HALF_EVEN","UNNECESSARY","power of ten too big","GMT","00","Negative bit address","Negative exponent","BigInteger divide by zero","Unknown zone type: ","Id must not be null","LANGUAGE","USE_DESCRIPTIVE_NAMES","HANDWRITTEN","SVG_DESC","SVG_TITLE","LOCAL","GLOBAL","nwdiag {","This looks like a network diagram. Please use @startnwdiag instead of @startuml.","Diagram not supported by this release of PlantUML","Sorry, but the following directive \"\"", +"\"\" is not recognized.","Possible causes:","- Typo in the directive or incorrect syntax.","- The directive was added in a newer PlantUML release.","Suggested actions:","- Check the directive spelling and syntax.","- Upgrade PlantUML to the latest version.","- Consult the documentation: https://plantuml.com","logo.png","NORMAL_SHOWN","HIDDEN"," backColor="," foreColor=","Prefix contains special character at ","Quote opened at "," was not closed in ","Group separator found at fractional part at ","Unexpected second decimal separator at ", +"Unexpected \'0\' at optional digit part at ","Unexpected char at exponent at ","Pattern does not specify exponent digits at ","Unexpected \'#\' at non-optional digit part at ","Two group separators at ","Group separator at the end of number at ","Pattern does not specify integer digits at ","PROCEDURE","RETURN_FUNCTION","LEGACY_DEFINE","LEGACY_DEFINELONG","FUNCTION ","A procedure cannot have !return directive. Declare it as a function instead ?","No return directive found in your function","Illegal call here. Is there a return directive in your function?", +"ANTI_ALIASING_ON","ANTI_ALIASING_OFF","You should send this diagram and this image to plantuml@gmail.com or","post to https://plantuml.com/qa to solve this issue.","You can try to turn around this issue by simplifing your diagram.","beta","This version of PlantUML is "," days old, so you should","consider upgrading from https://plantuml.com/download","An error has occurred!","An error has occurred : ","","PlantUML (",") has crashed.","","Diagram size: "," lines / "," characters.","PlantUML \"\"", +"\"\"","Git Commit \"\"$git.commit.id$\"\"","Build Time \"\"","PlantUML version "," ("," source distribution)","Original idea: Arnaud Roques","Word Macro: Alain Bertucat & Matthieu Sabatier","Word Add-in: Adriaan van den Brand","J2V8 & viz.js integration: Andreas Studer","Official Eclipse Plugin: Hallvard Trætteberg","Original Eclipse Plugin: Claude Durif & Anne Pecoil","Servlet & XWiki: Maxime Sinclair","Docker: David Ducatel","AWS lib: Chris Passarello", +"Stdlib Icons: tupadr3","Site design: Raphael Cotisson","Logo: Benjamin Croizet","Web Assembly: Sakir Temel","https://plantuml.com","\\","BACKGROUND_CORNER_BOTTOM_RIGHT","BACKGROUND_CORNER_TOP_RIGHT","SEG_MOVETO","SEG_LINETO","SEG_QUADTO","SEG_CUBICTO","SEG_CLOSE","SEG_ARCTO","[Log] ","^[@\\\\]start[^%s{}%g]+[%s{][%s%g]*([^%g]*?)[%s}%g]*$","^\\W*[@\\\\](append|a)\\b","string is null","Your data does not sound like "," data","g","#highlight ","^([^<>]+)(\\<\\<.*\\>\\>)?$", +"","!assume ","hide ","scale ","title ","skin ","YamlLineType.NO_KEY_ONLY_TEXT","wip4 ","wip3 ","Not a map.","ONE","TWO","THREE","New position "," is outside of range [0;","Capacity is negative: ","Infinite loop?","Cannot nest sub","This function does not have any !return directive. Declare it as a procedure instead ?","already0068","unquoted","final","return","!return ","!return","This function is already defined","procedure","No if related to this endif","else","!if","elseif","!elseif","!ifndef", +"!ifdef","Unexpected: ","No if related to this ","!definelong","already0048","No while related to this endwhile","!while","No foreach related to this endforeach","!foreach","in","Error in JSON format","local","global","handler is null","Unexpected character","buffersize is zero or negative","reader is null","value","\',\' or \']\'","Nesting too deep","\',\' or \'}\'","\':\'","digit","Error in comment","valid string character","valid escape sequence","hexadecimal digit","Expected ","Unexpected end of input", +" at ","\'"," {","OK","NOT_OK","OK_PARTIAL","PSystemError cannot be cast","Cannot parse line ","Syntax error: ","plantuml.skin","Cannot load plantuml.skin","$1","alignment","\\<\\<(.*?)\\>\\>","<<",">>","color<<","Background","ClickableBackground","Border","ClickableBorder","fontsize","defaultfontsize","fontcolor","defaultfontcolor","fontname","defaultfontname","fontstyle","defaultfontstyle","circledCharacterRadius","classAttributeIconSize","linetype","polyline","ortho","defaulttextalignment","stereotypealignment", +"packageStyle","rect","componentstyle","uml1","uml2","stereotypePosition","bottom","swimlanes","nodesep","ranksep","roundcorner","thickness","wrapmessagewidth","maxmessagesize","sequenceParticipant","underline","conditionStyle","InsideDiamond","Foo1","Diamond","Inside","sameclasswidth","hyperlinkunderline","guillemet","<< >>","defaultMonospacedFontName","monospaced","tabsize","colorarrowseparationspace","padding","responsemessagebelowarrow","fixcirclelabeloverlapping","SequenceMessagePadding","SequenceMessageMargin", +"SequenceMessageBorderColor","SequenceMessageBackGroundColor","actorstyle","awesome","hollow","[\\d.]+","\\d+(\\.\\d+)?","_|\\.","sequence(participant|actor)","(activity|class|component|object|sequence|state|usecase)arrow","align$","on","off","BACKSLASH_NEWLINE","\\n","%newline() or %n()","BACKSLASH_LEFT","\\l","%left_align()","BACKSLASH_RIGHT","\\r","%right_align()","BACKSLASH_TABULATION","%tab()","BACKSLASH_BACKSLASH","%backslash()","<<$","SCALE","CHAR","<>","archimate/","<>","<>","<>", +"<>","<>","<>","<>","<>","<>","<>","<>","<>","<>","<>","<>","<>","<>","\\<\\<\\s?((?:\\<&\\w+\\>|[^<>])+?)\\s?\\>\\>","UNDETERMINATE","SCALAR","LIST","MAP"," ==> ","Invalid PNG: too short ("," bytes)","IGNORE","REPLACE","REPORT","Action must be non-null","AFFECTATION_DEFINE","AFFECTATION","ASSERT","IF","IFDEF","UNDEF","IFNDEF","ELSE","ELSEIF","ENDIF","WHILE","ENDWHILE","FOREACH","ENDFOREACH","DECLARE_RETURN_FUNCTION", +"DECLARE_PROCEDURE","END_FUNCTION","RETURN","THEME","INCLUDE","INCLUDE_DEF","IMPORT","STARTSUB","ENDSUB","INCLUDESUB","LOG","DUMP_MEMORY","COMMENT_SIMPLE","COMMENT_LONG_START","OPTION","[\\p{L}\\uD800-\\uDBFF\\uDC00-\\uDFFF_][\\p{L}\\uD800-\\uDBFF\\uDC00-\\uDFFF_0-9]*","\\(","(local|global)?","\\$?","\\??=","!undef","!assert","(unquoted\\s|final\\s)*","!else","!endif","!endwhile","!endfor","!end","definelong","!theme","_many","_once","!includedef","!import","!startsub","!endsub","!includesub","!option","Missing expression", +"quote10","until001","a002","a001","Error in function definition","Missing opening parenthesis","a003","\\$?[_\\p{L}][_\\p{L}0-9]*\\s*=.*"," ","Caused by ","DIV","Scaling the diagram by a factor of "," / ","[0.]+"," (rejected at execution: scale cannot be zero)","Scale cannot be zero","scale","([0-9.]+)","Resizing the diagram to fit within "," x "," pixels","[*x]","Resizing the diagram so that its "," is ","(width|height)","Limiting the width of the diagram to ","max","Limiting the height of the diagram to ", +"Limiting the size of the diagram to ","SEQUENCE_MESSAGE_SPAN","EMULATE_NO_GRAPHVIZ_INSTALLATION","EMULATE_GRAPHVIZ_CRASH","EMULATE_GRAPHVIZ_244_ON_WINDOWS","ASPECT","DEFAULT_LABEL_ANGLE","DEFAULT_LABEL_DISTANCE","EDGE_CORNER_RADIUS","GRAPH_ATTRIBUTES","HORIZONTAL_LINE_BETWEEN_DIFFERENT_PACKAGE_ALLOWED","KERMOR","LABEL_ANGLE","LABEL_DISTANCE","RATIO","SHOW_DEPRECATION","SVG_FONT","SVG_INTERACTIVE","SVG_PARSER","SVEK_TRACE","TEOZ","TEX_SYSTEM","TEX_PREAMBLE","USE_INTERMEDIATE_PACKAGES","USE_VERTICAL_IF","???", +"Monomorph is not of type LIST.","Monomorph is not of type MAP.","Not a scalar value.","Not a list.","Not a container type.","","((?:\\W|\\<[^<>]*\\>)*)[@\\\\]unpause"," from ","Cannot load theme ","---","plantuml.include.path","plantuml.allowlist.path","/etc/","/dev/","/boot/","/proc/","/sys/","plantuml.security.credentials.path","ONCE","MANY","DEFAULT",".*id=","\\W.*","Assertion error : ","Assertion error","Unknown \'!option ","\': this line is ignored","Known options are: ","\'!option ","\' needs a value: write \'!option ", +" \'","<<<","<< "," >>","\\<\\<","(\\S)","(#[0-9a-fA-F]{6}|\\w+)","\\)","[,]?(.*?)","\\>\\>","\\(?\\$","([-\\p{L}0-9_/]+)","((?:\\{scale=|\\*)([0-9.]+)\\}?)?","[),](.*?)","\\<{2,3}.*?\\>{2,3}","Bad count number for ","[%s]*","[%s]","[%s]+","^\\(?((?:[-0A-Za-z_!:@;/=,\"\' ][?+*]?|\\\\[b$(){}<>|*.+^\\[\\]][?+*]?|\\.\\*|\\.\\+)+)(?:\\)\\+|\\))?$","^\\([-?a-z ]+(\\|[-?a-z ]+)+\\)$","^\\(?\\[[-=.~]+\\]\\+\\)?$","\\[%s\\][+*?]?|\\(\\[([^\\\\\\[\\]])+\\]\\)[+*?]?","()|","?:","|","(?:",")?","\\w+","Bad sub name", +".puml","unknown protocol(",")://","Cannot open URL","themes.js","PlantUML: themes.js could not be loaded, so \'!theme ","\' was ignored. Serve themes.js next to the page or register globalThis.PLANTUML_THEMES (importing themes.js as a module does this).","","","URL cannot be null","(^https?://)([-_0-9a-zA-Z]+@)([^@]*)$","(?i)\\bcharset=\\s*\"?([^\\s;\"]*)","%(\\w+)%","INFO","PUML","SPRITE","_-!.~\'()*,;:$&+=?/[]@","+-.","_-!.~\'()*,;:$&+=?/[]@\\\"","@[]_-!.~\'()*,;:$&+=","/@_-!.~\'()*,;:$&+=","-.","ftp","http","https","End of stream reached","Malformed UTF-8 sequence","End of stream reached after reading "," bytes (expected ","n must be >= 0","////","String index out of bounds: ", +"/./","/.","/../","/..","localhost","State MUST be initialized","Brotli stream decoding failed","Buffer overflow: "," > ","Bad length: ","Bad offset: ","Stream is closed","This stream is already closed","Invalid \'windowBits\' code","State MUST be uninitialized","Exuberant nibble","Corrupted reserved bit","symbol + repeatDelta > numSymbols","Unused space","Can\'t readHuffmanCode","Corrupted context map","Unaligned copyBytes","Invalid metablock length","Invalid backward reference","Negative distance","Unexpected state ", +"Can\'t decompress after close","Can\'t decompress until initialized","No more input","Read after end","Corrupted padding bits","Failed to read input","TYPE_NEAREST_NEIGHBOR","TYPE_BILINEAR","0.0","0.00","0.000","0.0000","0.00000","0.000000","0E","0E+","You should send a mail to plantuml@gmail.com with this log","You should send a mail to plantuml@gmail.com with this log (V","«","»","hyperlink","activityBackground","activityBorder","classBackground","classBorder","arrowHead","stateBorder","noteBackground","noteBorder", +"diagramBorder","actorBackground","actorBorder","sequenceGroupBodyBackground","sequenceReferenceHeaderBackground","sequenceReferenceBackground","sequenceLifeLineBorder","sequenceNewpageSeparator","sequenceBoxBorder","iconPrivate","iconPrivateBackground","iconPackage","iconPackageBackground","iconProtected","iconProtectedBackground","iconPublic","iconPublicBackground","iconIEMandatory","arrowLollipop","machineBackground","machineBorder","requirementBackground","requirementBorder","designedBackground","designedBorder", +"domainBackground","domainBorder","lexicalBackground","lexicalBorder","biddableBackground","biddableBorder","Malformed input of length ","Unmappable characters of length ","Error: ","Unexpected character \'","Property \'","\' declared outside of any block","Unterminated @ rule: \'@","cm9vdCB7Ci0tY29tbW9uLWJhY2tncm91bmQ6ICNmMWYxZjE7Ci0tbm90ZS1iYWNrZ3JvdW5kOiAjRkVGRkREOwotLWdyZXktYmx1ZTogI2UyZTJmMDsKRm9udE5hbWUgU2Fuc1NlcmlmCkh5cGVyTGlua0NvbG9yIGJsdWUKSHlwZXJMaW5rVW5kZXJsaW5lVGhpY2tuZXNzIDEKRm9udENvbG9yIGJsYWNrCkZvbnRTaXplIDE0CkZvbnRTdHlsZSBwbGFpbgpIb3Jpem9udGFsQWxpZ25tZW50IGxlZnQKUm91bmRDb3JuZXIgMApEaWFnb25hbENvcm5lciAwCkxpbmVUaGlja25lc3MgMS4wCkxpbmVDb2xvciAjMTgxODE4CkJhY2tHcm91bmRDb2xvcjogdmFyKC0tY29tbW9uLWJhY2tncm91bmQpOwpTaGFkb3dpbmc6IDAuMDsKfQpkb2N1bWVudCB7CkJhY2tHcm91bmRDb2xvciB3aGl0" ++"ZQpoZWFkZXIgewpIb3Jpem9udGFsQWxpZ25tZW50IHJpZ2h0CkZvbnRTaXplIDEwCkZvbnRDb2xvciAjOApCYWNrR3JvdW5kQ29sb3IgdHJhbnNwYXJlbnQKTGluZUNvbG9yIHRyYW5zcGFyZW50Cn0KdGl0bGUgewpIb3Jpem9udGFsQWxpZ25tZW50IGNlbnRlcgpGb250U2l6ZSAxNApGb250U3R5bGUgYm9sZApQYWRkaW5nIDUKTWFyZ2luIDUKTGluZUNvbG9yIHRyYW5zcGFyZW50CkJhY2tHcm91bmRDb2xvciB0cmFuc3BhcmVudAp9CmZvb3RlciB7Ckhvcml6b250YWxBbGlnbm1lbnQgY2VudGVyCkZvbnRTaXplIDEwCkZvbnRDb2xvciAjOApCYWNrR3JvdW5kQ29sb3IgdHJhbnNwYXJlbnQKTGluZUNvbG9yIHRyYW5zcGFyZW50Cn0KbGVnZW5kIHsKTGluZUNvbG9yIGJsYWNr" ++"CkJhY2tHcm91bmRDb2xvciAjRApGb250U2l6ZSAxNApSb3VuZENvcm5lciAxNQpQYWRkaW5nIDUKTWFyZ2luIDEyCn0KY2FwdGlvbiB7Ckhvcml6b250YWxBbGlnbm1lbnQgY2VudGVyCkZvbnRTaXplIDE0ClBhZGRpbmcgMApNYXJnaW4gMQpMaW5lQ29sb3IgdHJhbnNwYXJlbnQKQmFja0dyb3VuZENvbG9yIHRyYW5zcGFyZW50Cn0KZnJhbWUgewpMaW5lQ29sb3IgYmxhY2sKTGluZVRoaWNrbmVzcyAxLjUKfQp9Cm1hcCB7Ckhvcml6b250YWxBbGlnbm1lbnQgY2VudGVyCn0KcGFja2FnZSB7CnRpdGxlIHsKRm9udFN0eWxlIGJvbGQKfQp9CnN0ZXJlb3R5cGUgewpGb250U3R5bGUgaXRhbGljCkhvcml6b250YWxBbGlnbm1lbnQgY2VudGVyCn0KbWFpbmZyYW1lIHsKUGFkZGlu" ++"ZyAxIDUKTGluZVRoaWNrbmVzcyAxLjUKTWFyZ2luIDEwIDUKfQplbGVtZW50IHsKU2hhZG93aW5nIDAuMApMaW5lVGhpY2tuZXNzIDAuNQpjb21wb3NpdGUscGFja2FnZSB7CnRpdGxlIHsKRm9udFN0eWxlIGJvbGQKSG9yaXpvbnRhbEFsaWdubWVudCBjZW50ZXIKfQp9Cn0KZ3JvdXAgewpCYWNrR3JvdW5kQ29sb3IgdHJhbnNwYXJlbnQKTGluZVRoaWNrbmVzcyAxLjAKcGFja2FnZSB7CkxpbmVUaGlja25lc3MgMS41CkxpbmVDb2xvciBibGFjawp9CmZvbGRlciB7CkxpbmVUaGlja25lc3MgMS41CkxpbmVDb2xvciBibGFjawp9Cn0Kc2VxdWVuY2VEaWFncmFtIHsKZ3JvdXAgewpMaW5lQ29sb3IgYmxhY2sKTGluZVRoaWNrbmVzcyAxLjUKRm9udFNpemUgMTEKRm9udFN0eWxl" ++"IGJvbGQKfQpncm91cEhlYWRlciB7CkxpbmVUaGlja25lc3MgMS41CkJhY2tHcm91bmRDb2xvciAjZQpMaW5lQ29sb3IgYmxhY2sKRm9udFNpemUgMTMKRm9udFN0eWxlIGJvbGQKfQpsaWZlTGluZSB7CkxpbmVTdHlsZSA1Cn0KYWN0aXZhdGlvbkJveCB7CkJhY2tHcm91bmRDb2xvciB3aGl0ZQp9CmRlc3Ryb3kgewpMaW5lQ29sb3IgI0E4MDAzNgpMaW5lU3R5bGUgMApMaW5lVGhpY2tuZXNzIDIKfQpyZWZlcmVuY2UgewpGb250U2l6ZSAxMgpMaW5lQ29sb3IgYmxhY2sKQmFja0dyb3VuZENvbG9yIHRyYW5zcGFyZW50CkxpbmVUaGlja25lc3MgMS41Ckhvcml6b250YWxBbGlnbm1lbnQgY2VudGVyCn0KcmVmZXJlbmNlSGVhZGVyIHsKTGluZUNvbG9yIGJsYWNrCkJhY2tHcm91" ++"bmRDb2xvciAjZQpGb250Q29sb3IgYmxhY2sKRm9udFNpemUgMTMKRm9udFN0eWxlIGJvbGQKTGluZVRoaWNrbmVzcyAyLjAKfQpib3ggewpCYWNrR3JvdW5kQ29sb3IgI2QKRm9udFNpemUgMTMKRm9udFN0eWxlIGJvbGQKfQpzZXBhcmF0b3IgewpMaW5lQ29sb3IgYmxhY2sKTGluZVRoaWNrbmVzcyAyLjAKQmFja0dyb3VuZENvbG9yICNlCkZvbnRTaXplIDEzCkZvbnRTdHlsZSBib2xkClBhZGRpbmcgNAp9Cm5ld3BhZ2UgewpMaW5lU3R5bGUgMgp9CnBhcnRpY2lwYW50IHsKUm91bmRDb3JuZXIgNQp9CnBhcnRpY2lwYW50LGFjdG9yLGJvdW5kYXJ5LGNvbnRyb2wsZW50aXR5LHF1ZXVlLGRhdGFiYXNlLGNvbGxlY3Rpb25zIHsKQmFja2dyb3VuZENvbG9yOiB2YXIoLS1ncmV5" ++"LWJsdWUpOwpIb3Jpem9udGFsQWxpZ25tZW50IGNlbnRlcgpQYWRkaW5nIDcKfQp9CmNsYXNzRGlhZ3JhbSxjb21wb25lbnREaWFncmFtLG9iamVjdERpYWdyYW0gewpvYmplY3QgewpQYWRkaW5nIDIgMgp9CmVsZW1lbnQgewpSb3VuZENvcm5lciA1Cn0KZ2VuZXJpYyB7CkJhY2tncm91bmRDb2xvciB3aGl0ZQp9Cn0KdmlzaWJpbGl0eUljb24gewpwdWJsaWMgewpMaW5lQ29sb3IgIzAzODA0OApCYWNrZ3JvdW5kQ29sb3IgIzg0QkU4NAp9CnByaXZhdGUgewpMaW5lQ29sb3IgI0M4MjkzMApCYWNrZ3JvdW5kQ29sb3IgI0YyNEQ1Qwp9CnByb3RlY3RlZCB7CkxpbmVDb2xvciAjQjM4RDIyCkJhY2tncm91bmRDb2xvciAjRkZGRjQ0Cn0KcGFja2FnZSB7CkxpbmVDb2xvciAjMTk2" ++"M0EwCkJhY2tncm91bmRDb2xvciAjNDE3N0FGCn0KSUVNYW5kYXRvcnkgewpMaW5lQ29sb3IgYmxhY2sKQmFja2dyb3VuZENvbG9yIGJsYWNrCn0KfQpzcG90IHsKc3BvdEFubm90YXRpb24gewpCYWNrZ3JvdW5kQ29sb3IgI0UzNjY0QQp9CnNwb3RBYnN0cmFjdENsYXNzIHsKQmFja2dyb3VuZENvbG9yICNBOURDREYKfQpzcG90Q2xhc3MgewpCYWNrZ3JvdW5kQ29sb3IgI0FERDFCMgp9CnNwb3RJbnRlcmZhY2UgewpCYWNrZ3JvdW5kQ29sb3IgI0I0QTdFNQp9CnNwb3RFbnVtIHsKQmFja2dyb3VuZENvbG9yICNFQjkzN0YKfQpzcG90RW50aXR5IHsKQmFja2dyb3VuZENvbG9yICNBREQxQjIKfQpzcG90RXhjZXB0aW9uIHsKQmFja2dyb3VuZENvbG9yICNEOTQzMjEKfQpzcG90" ++"TWV0YUNsYXNzIHsKQmFja2dyb3VuZENvbG9yICNDQ0NDQ0MKfQpzcG90U3RlcmVvdHlwZSB7CkJhY2tncm91bmRDb2xvciAjRkY3N0ZGCn0Kc3BvdERhdGFDbGFzcyB7CkJhY2tncm91bmRDb2xvciAjN0U1N0MyCn0Kc3BvdFJlY29yZCB7CkJhY2tncm91bmRDb2xvciAjRkY4RjAwCn0KfQpzdGF0ZURpYWdyYW0gewpzdGF0ZSB7ClJvdW5kQ29ybmVyIDI1CmJvZHkgewpCYWNrR3JvdW5kQ29sb3IgdHJhbnNwYXJlbnQKfQpuYW1lIHsKRm9udFN0eWxlIHBsYWluCkhvcml6b250YWxBbGlnbm1lbnQgY2VudGVyCn0KfQpncm91cCB7CkxpbmVUaGlja25lc3MgMC41Cn0KY2lyY2xlIHsKc3RhcnQsIHN0b3AsIGVuZCB7CkxpbmVUaGlja25lc3MgMQpMaW5lQ29sb3IgIzIKQmFja2dy" ++"b3VuZENvbG9yICMyCn0KfQp9CmRlbGF5IHsKRm9udFNpemUgMTEKRm9udFN0eWxlIHBsYWluCkhvcml6b250YWxBbGlnbm1lbnQgY2VudGVyCkxpbmVTdHlsZSAxLTQKfQpzd2ltbGFuZSB7CkJhY2tHcm91bmRDb2xvciB0cmFuc3BhcmVudApMaW5lQ29sb3IgYmxhY2sKTGluZVRoaWNrbmVzcyAxLjUKRm9udFNpemUgMTgKfQphcnJvdyB7CkZvbnRTaXplIDEzCkxpbmVUaGlja25lc3MgMS4wCkJhY2tHcm91bmRDb2xvciBibGFjawp9Cm5vdGUgewpGb250U2l6ZSAxMwpCYWNrR3JvdW5kQ29sb3I6IHZhcigtLW5vdGUtYmFja2dyb3VuZCk7CkxpbmVUaGlja25lc3MgMC41Cn0KcGFydGl0aW9uIHsKfQpjaXJjbGUgewp9Cm1pbmRtYXBEaWFncmFtIHsKfQptaW5kbWFwRGlhZ3Jh" ++"bSB7Cm5vZGUgewpQYWRkaW5nIDEwCk1hcmdpbiAxMApSb3VuZENvcm5lciAyNQpMaW5lVGhpY2tuZXNzIDEuNQp9CmFycm93IHsKTGluZVRoaWNrbmVzcyAxLjAKfQp9Cndic0RpYWdyYW0gewpQYWRkaW5nIDEwCk1hcmdpbiAxNQpSb3VuZENvcm5lciAwCkxpbmVUaGlja25lc3MgMS41CkZvbnRTaXplIDEyCn0KYWN0aXZpdHlEaWFncmFtIHsKYWN0aXZpdHkgewpQYWRkaW5nIDEwCkZvbnRTaXplIDEyClJvdW5kQ29ybmVyIDI1Cn0KY29tcG9zaXRlIHsKTGluZUNvbG9yIGJsYWNrCkJhY2tncm91bmRDb2xvciB0cmFuc3BhcmVudApMaW5lVGhpY2tuZXNzIDEuNQp9CmRpYW1vbmQgewpGb250U2l6ZSAxMQp9CmFycm93IHsKRm9udFNpemUgMTEKTGluZVRoaWNrbmVzcyAxCn0K" ++"Y2lyY2xlIHsKc3RhcnQsIHN0b3AsIGVuZCB7CkxpbmVUaGlja25lc3MgMQpMaW5lQ29sb3IgIzIKQmFja2dyb3VuZENvbG9yICMyCn0KZW5kIHsKTGluZVRoaWNrbmVzcyAxLjUKfQp9CmFjdGl2aXR5QmFyIHsKQmFja2dyb3VuZENvbG9yICM1Cn0KfQp0YXNrIHsKRm9udFNpemUgMTEKfQptaWxlc3RvbmUgewpGb250U2l6ZSAxMQpCYWNrR3JvdW5kQ29sb3IgYmxhY2sKTGluZUNvbG9yIGJsYWNrCn0KZ2FudHREaWFncmFtIHsKYXJyb3cgewpMaW5lVGhpY2tuZXNzIDEuNQp9Cm5vdGUgewpGb250U2l6ZSA5Cn0Kc2VwYXJhdG9yIHsKRm9udFNpemUgMTEKRm9udFN0eWxlIHBsYWluCkJhY2tHcm91bmRDb2xvciB0cmFuc3BhcmVudApNYXJnaW4gNQpQYWRkaW5nIDUKfQp2ZXJ0" ++"aWNhbFNlcGFyYXRvciB7CkxpbmVUaGlja25lc3MgMgpMaW5lU3R5bGUgMi0yCkxpbmVDb2xvciBibGFjawp9CnRpbWVsaW5lIHsKQmFja2dyb3VuZENvbG9yIHRyYW5zcGFyZW50CkxpbmVDb2xvciAjQzBDMEMwCkZvbnRTaXplIDEwCm1vbnRoIHsKRm9udFNpemUgMTIKfQp5ZWFyIHsKRm9udFNpemUgMTQKfQp9CmNsb3NlZCB7CkJhY2tHcm91bmRDb2xvciAjRjFFNUU1CkZvbnRDb2xvciAjOTg5ODk4Cn0KdGFzayB7CkJhY2tHcm91bmRDb2xvcjogdmFyKC0tZ3JleS1ibHVlKTsKUm91bmRDb3JuZXIgMApNYXJnaW4gMiAyIDIgMgpQYWRkaW5nIDAKfQp1bmRvbmUgewpCYWNrR3JvdW5kQ29sb3Igd2hpdGUKfQptaWxlc3RvbmUgewpNYXJnaW4gMgpQYWRkaW5nIDMKfQp9CnVz" ++"ZWNhc2UgewpIb3Jpem9udGFsQWxpZ25tZW50IGNlbnRlcgp9CnlhbWxEaWFncmFtLGpzb25EaWFncmFtIHsKRm9udENvbG9yIGJsYWNrCkxpbmVDb2xvciBibGFjawphcnJvdyB7CkxpbmVUaGlja25lc3MgMQpMaW5lU3R5bGUgMy0zCn0Kbm9kZSB7CkxpbmVUaGlja25lc3MgMS41ClJvdW5kQ29ybmVyIDEwCnNlcGFyYXRvciB7CkxpbmVUaGlja25lc3MgMQp9CmhlYWRlciB7CkZvbnRTdHlsZSBib2xkCn0KaGlnaGxpZ2h0IHsKQmFja0dyb3VuZENvbG9yICNjY2ZmMDIKfQp9Cn0KdGltaW5nRGlhZ3JhbSB7CkxpbmVDb2xvciAjMwpGb250Q29sb3IgIzMKRm9udFN0eWxlIGJvbGQKTGluZVRoaWNrbmVzcyAwLjUKdGltZWxpbmUgewpGb250U3R5bGUgcGxhaW4KRm9udFNpemUg" ++"MTEKTGluZVRoaWNrbmVzcyAyCn0Kbm90ZSB7CkxpbmVUaGlja25lc3MgMC41Cn0KYXJyb3cgewpGb250TmFtZSBTZXJpZgpGb250U2l6ZSAxNApGb250U3R5bGUgcGxhaW4KRm9udENvbG9yIGRhcmtibHVlCkxpbmVDb2xvciBkYXJrYmx1ZQpMaW5lVGhpY2tuZXNzIDEuNQp9CmNvbnN0cmFpbnRBcnJvdyB7CkZvbnRTaXplIDEyCkZvbnRTdHlsZSBwbGFpbgpGb250Q29sb3IgZGFya3JlZApMaW5lQ29sb3IgZGFya3JlZApMaW5lVGhpY2tuZXNzIDEuNQp9CmNsb2NrIHsKTGluZUNvbG9yIGRhcmtncmVlbgpMaW5lVGhpY2tuZXNzIDEuNQp9CmNvbmNpc2UgewpGb250U2l6ZSAxMgpMaW5lQ29sb3IgZGFya2dyZWVuCkJhY2tncm91bmRDb2xvcjogdmFyKC0tZ3JleS1ibHVlKTsK" ++"TGluZVRoaWNrbmVzcyAxLjUKfQpyb2J1c3QgewpGb250U3R5bGUgcGxhaW4KRm9udFNpemUgMTIKTGluZUNvbG9yIGRhcmtncmVlbgpMaW5lVGhpY2tuZXNzIDIKQmFja2dyb3VuZENvbG9yOiB2YXIoLS1ncmV5LWJsdWUpOwp9CmJpbmFyeSB7CkZvbnRTdHlsZSBwbGFpbgpGb250U2l6ZSAxMgpMaW5lQ29sb3IgZGFya2dyZWVuCkxpbmVUaGlja25lc3MgMgp9CmhpZ2hsaWdodCB7CkJhY2tncm91bmRDb2xvciAjZQpMaW5lVGhpY2tuZXNzIDIKTGluZVN0eWxlIDQtNAp9Cn0KbndkaWFnRGlhZ3JhbSB7Cm5ldHdvcmsgewpCYWNrZ3JvdW5kQ29sb3I6IHZhcigtLWdyZXktYmx1ZSk7CkZvbnRTaXplIDEyCn0Kc2VydmVyIHsKRm9udFNpemUgMTIKfQpncm91cCB7CkZvbnRTaXpl" ++"IDEyCkJhY2tHcm91bmRDb2xvciAjZTdlN2U3CkxpbmVDb2xvciAjZTdlN2U3Cn0KYXJyb3cgewpGb250U2l6ZSAxMQp9Cn0KQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKSB7CnJvb3QgewpIeXBlckxpbmtDb2xvciBibHVlCkZvbnRDb2xvciB3aGl0ZQpMaW5lQ29sb3IgI2U3ZTdlNwpCYWNrR3JvdW5kQ29sb3IgIzMxMzEzOQp9CmRvY3VtZW50IHsKQmFja0dyb3VuZENvbG9yICMxQjFCMUIKaGVhZGVyIHsKRm9udENvbG9yICM3Cn0KZm9vdGVyIHsKRm9udENvbG9yICM3Cn0KbGVnZW5kIHsKTGluZUNvbG9yIHdoaXRlCkJhY2tHcm91bmRDb2xvciAjMgp9CmZyYW1lIHsKTGluZUNvbG9yIHdoaXRlCn0KfQpncm91cCB7CnBhY2thZ2UgewpMaW5lQ29sb3Igd2hp" ++"dGUKfQpmb2xkZXIgewpMaW5lQ29sb3Igd2hpdGUKfQp9CnNlcXVlbmNlRGlhZ3JhbSB7Cmdyb3VwIHsKTGluZUNvbG9yIHdoaXRlCn0KZ3JvdXBIZWFkZXIgewpCYWNrR3JvdW5kQ29sb3IgIzUKTGluZUNvbG9yIHdoaXRlCn0KbGlmZUxpbmUgewpCYWNrR3JvdW5kQ29sb3IgYmxhY2sKfQpyZWZlcmVuY2UgewpMaW5lQ29sb3IgI2QKfQpyZWZlcmVuY2VIZWFkZXIgewpMaW5lQ29sb3IgI2QKRm9udENvbG9yIHdoaXRlCkJhY2tHcm91bmRDb2xvciAjNAp9CmJveCB7CkJhY2tHcm91bmRDb2xvciAjMgp9CnNlcGFyYXRvciB7CkxpbmVDb2xvciB3aGl0ZQpCYWNrR3JvdW5kQ29sb3IgIzEKfQpwYXJ0aWNpcGFudCxhY3Rvcixib3VuZGFyeSxjb250cm9sLGVudGl0eSxxdWV1ZSxk" ++"YXRhYmFzZSxjb2xsZWN0aW9ucyB7CkJhY2tncm91bmRDb2xvcjogIzI7Ckhvcml6b250YWxBbGlnbm1lbnQgY2VudGVyCn0KfQpzcG90IHsKc3BvdEFubm90YXRpb24gewpCYWNrZ3JvdW5kQ29sb3IgIzRBMDAwMAp9CnNwb3RBYnN0cmFjdENsYXNzIHsKQmFja2dyb3VuZENvbG9yICMyQTVENjAKfQpzcG90Q2xhc3MgewpCYWNrZ3JvdW5kQ29sb3IgIzJFNTIzMwp9CnNwb3RJbnRlcmZhY2UgewpCYWNrZ3JvdW5kQ29sb3IgIzM1Mjg2Ngp9CnNwb3RFbnVtIHsKQmFja2dyb3VuZENvbG9yICM4NTJEMTkKfQpzcG90RW50aXR5IHsKQmFja2dyb3VuZENvbG9yICMyRTUyMzMKfQpzcG90RXhjZXB0aW9uIHsKQmFja2dyb3VuZENvbG9yICM3RDAwMDAKfQpzcG90TWV0YUNsYXNzIHsK" ++"QmFja2dyb3VuZENvbG9yICM3QzdDN0MKfQpzcG90U3RlcmVvdHlwZSB7CkJhY2tncm91bmRDb2xvciAjODkwMDg5Cn0Kc3BvdERhdGFDbGFzcyB7CkJhY2tncm91bmRDb2xvciAjQjM5RERCCn0Kc3BvdFJlY29yZCB7CkJhY2tncm91bmRDb2xvciAjRkZCNzRECn0KfQpzd2ltbGFuZSB7CkxpbmVDb2xvciB3aGl0ZQp9Cm5vdGUgewpCYWNrR3JvdW5kQ29sb3IgIzcxNDEzNwp9CmFjdGl2aXR5RGlhZ3JhbSB7CnBhcnRpdGlvbiB7CkxpbmVDb2xvciB3aGl0ZQp9CmNpcmNsZSB7CnN0YXJ0LCBzdG9wLCBlbmQgewpMaW5lQ29sb3IgI2QKQmFja2dyb3VuZENvbG9yICNkCn0KfQphY3Rpdml0eUJhciB7CkJhY2tncm91bmRDb2xvciAjYQp9Cn0Kc3RhdGVEaWFncmFtIHsKY2lyY2xl" ++"IHsKc3RhcnQsIHN0b3AsIGVuZCB7CkxpbmVDb2xvciAjZApCYWNrZ3JvdW5kQ29sb3IgI2QKfQp9Cn0KbWlsZXN0b25lIHsKQmFja0dyb3VuZENvbG9yIHdoaXRlCkxpbmVDb2xvciB3aGl0ZQp9CnRpbWluZ0RpYWdyYW0gewpMaW5lQ29sb3IgI2QKRm9udENvbG9yICNkCmFycm93IHsKTGluZUNvbG9yIGxpZ2h0Ymx1ZQp9CmNvbnN0cmFpbnRBcnJvdyB7CkxpbmVDb2xvciB0b21hdG8KRm9udENvbG9yIHRvbWF0bwp9CmNsb2NrIHsKTGluZUNvbG9yIGxpZ2h0Z3JlZW4KfQpjb25jaXNlIHsKTGluZUNvbG9yIGxpZ2h0Z3JlZW4KQmFja2dyb3VuZENvbG9yICM2Cn0Kcm9idXN0IHsKTGluZUNvbG9yIGxpZ2h0Z3JlZW4KQmFja2dyb3VuZENvbG9yICMzCn0KaGlnaGxpZ2h0IHsK" ++"QmFja2dyb3VuZENvbG9yICMxCn0KfQpnYW50dERpYWdyYW0gewp0YXNrIHsKQmFja0dyb3VuZENvbG9yICM1NTUKfQp0aW1lbGluZSB7CkxpbmVDb2xvciAjM2YzZjNmCn0KY2xvc2VkIHsKQmFja0dyb3VuZENvbG9yICMxZjFmMWYKRm9udENvbG9yICM2NzY3NjcKfQp1bmRvbmUgewpCYWNrR3JvdW5kQ29sb3IgYmxhY2sKfQp9CnlhbWxEaWFncmFtLGpzb25EaWFncmFtIHsKRm9udENvbG9yIHdoaXRlCkxpbmVDb2xvciB3aGl0ZQpub2RlIHsKaGlnaGxpZ2h0IHsKQmFja0dyb3VuZENvbG9yICNjY2ZmMDIKfQp9Cn0KbndkaWFnRGlhZ3JhbSB7Cm5ldHdvcmsgewpCYWNrR3JvdW5kQ29sb3IgIzU1NQp9Cmdyb3VwIHsKQmFja0dyb3VuZENvbG9yICMyCn0KfQp9","No style found in ", +" ","- ","YamlLine("," indent=",", key=",", value=","EMPTY_LINE","NO_KEY_ONLY_TEXT","KEY_ONLY","KEY_AND_VALUE","KEY_AND_FLOW_SEQUENCE","KEY_AND_BLOCK_STYLE","KEY_AND_FOLDED_STYLE","PLAIN_ELEMENT_LIST","PLAIN_DASH","hide","Hiding the participants that are not linked to any event","Showing the participants that are not linked to any event","show","activate","Activating the life line of \'","Deactivating the life line of \'","Creating \'","Destroying the life line of \'",", background color ",", line color ", +"create","Deactivating the life line activated by the latest message","Nothing to deactivate.","order","ORDER","(-?\\d{1,7})","(participant|actor|create|boundary|control|entity|queue|database|collections)","CREATE","create[%s](participant|actor|boundary|control|entity|queue|database|collections)","Declaring ","Creating "," \'"," displayed as \"",", order ",", stereotype ","URL",", with a URL link"," (created on the spot, with a CREATE life event)","topurl","(participant)","Declaring participant \'"," (currently ignored)", +", displayed as "," lines"," line"," of text","Declaring a participant","PARALLEL","(&[%s]*)?","ANCHOR","(\\{([%pLN_]+)\\}[%s]+)?","PART1CODE","PART1LONG","PART1LONGCODE","[%g]([^%g]+)[%g][%s]*as[%s]+([%pLN_.@]+)","PART1CODELONG","([%pLN_.@]+)[%s]+as[%s]*[%g]([^%g]+)[%g]","PART1","PART1ANCHOR","[%s][ox]","(?:[%s][ox]|\\(\\d+\\))?<>?(?:[ox][%s]|\\(\\d+\\))?", +"//?(?:[ox][%s])?","\\\\\\\\?(?:[ox][%s])?","[ox][%s]","ARROW_DRESSING2","PART2CODE","PART2LONG","PART2LONGCODE","PART2CODELONG","PART2","MULTICAST","((?:\\s&\\s[%pLN_.@]+)*)","PART2ANCHOR","ACTIVATION","(?:(\\+\\+|\\*\\*|!!|--|--\\+\\+|\\+\\+--)?)","LIFECOLOR","(?:(#\\w+)?)","MESSAGE","(?::[%s]*(.*))?","LONG","LONGCODE","CODELONG","Message from \'","\' to \'","x"," (defined right-to-left)",", dotted",", async",", with a cross head","o",", with a circle decoration",", style [",", labelled \"",", activation \'", +", life line color ",", parallel",", multicast to","&",", anchor \'","Illegal sequence arrow","ARROW_BODYA","ARROW_BODYB","dashed","dotted","hidden","ARROW_DRESSING","ARROW_BOTHDRESSING","ARROW_SUPPCIRCLE1","ARROW_SUPPCIRCLE2","([?\\[\\]][ox]?)?","(<>?|//?|\\\\\\\\?)","(<0","Error in pattern : ","Stopping automatic numbering of messages","resume","INC","DF","Resuming automatic numbering of messages","inc","POS","([A-Za-z])","Incrementing the intermediate component of the message autonumber","Incrementing component \'","\' (number ",") of the message autonumber",", resetting the following components to 1","autoactivate", +"ON","(off|on)","Turning auto-activation on","Turning auto-activation off","Showing the participant boxes at the bottom of the diagram","Hiding the participant boxes at the bottom of the diagram","hidefootbox","showfootbox","(hide|show)?","(?:\\.{3}|…)","(.*)(?:\\.{3}|…)","Inserting a delay","…","(on|off)?","footboxoff","footboxon","of|for","is","Attaching a URL link to \'","urlfor","urlof","ANCHOR1","\\{([%pLN_]+)\\}","\\<-\\>","ANCHOR2","Linking anchor \'","\' to anchor \'","Accepted but ignored: \'footbox\' has no effect in this diagram type", +"(left[%s]to[%s]right|top[%s]to[%s]bottom)","Setting the layout direction of the diagram to ","Starting a new page: the following lines form a new empty diagram","dpi","Adding the field or method \"","\" to \'","\' (created as a class if it does not exist yet)","COMMAND","(hide|hide-class|show|show-class)","WHAT","([^%s]+|\\<\\<.*\\>\\>)","Hiding","Showing"," the elements stereotyped "," the elements matching \'"," (the \'-class\' suffix has no specific effect)","(remove|restore)","(.+)","restore","Removing", +"Restoring","remove","VISIBILITY","(interface|enum|annotation|abstract[%s]+class|static[%s]+class|abstract|class|entity|protocol|struct|exception|metaclass|stereotype|dataclass|record)","\\<(",")\\>","GENERIC","((\\$[^%s{}%g<>$]+)([%s]+(\\$[^%s{}%g<>$]+))*)","TAGS1","TAGS2","LINECOLOR","(?:\\[(dotted|dashed|bold)\\])?(\\w+)?","(extends)[%s]+(","|[%g]([^%g]+)[%g])","EXTENDS","(implements)[%s]+(","IMPLEMENTS","DISPLAY",", visibility \'",", generic <",", extends ",", implements ","STATIC",", static"," body lines", +" body line","Creating a class","FOO","Cannot create "," because it already exists","TAGS","[ ]+","extends","abstract","dataclass","enum","exception","interface","metaclass","protocol","record","static","struct","~","?[%pLN_$]+(?:","[%pLN_$]+)*","(?:\\s*,\\s*",")*","Creating the object \'"," with "," fields"," field"," (the URL is currently ignored)","Creating an object","(?:[%g]([^%g]+)[%g][%s]+as[%s]+)?([%pLN_.]+)","Creating the map \'"," entries"," entry",", of which "," are links"," is a link"," to other entities", +", line style ","Creating a map","Map already exists: ","No such entity ","Map definition should contains key => value","Creating the JSON element \'"," of JSON data","Creating a JSON element","JSON already exists: ","Bad data","DATA_BOOLEAN","(true|false)","DATA_NUMBER","(-?\\d+)","DATA_NULL","(null)","DATA_STRING","(\".*\")","DATA_ARRAY","(\\[.*\\])","DATA_OBJECT","(\\{[%s]*[%g](\\\\[%g]|[^%g])+[%g][%s]*:.*\\})"," with the value ","DATA_"," (rejected at execution: bad JSON data)","(interface|enum|annotation|abstract[%s]+class|static[%s]+class|abstract|class|entity|circle|diamond|protocol|struct|exception|metaclass|stereotype|dataclass|record|map)", +"Bad name","Object already exists: ","allow","_?","mixing","Allowing elements from other diagram types to be mixed into this diagram","allowmixing","\\(\\)[%s]+","COLOR2","([%pLN_.]+|\\(\\)[%s]*[%pLN_.]+|\\(\\)[%s]*[%g][^%g]+[%g]|:[^:]+:/?|\\([^()]+\\)/?|\\[[^\\[\\]]+\\]|[%g].+?[%g])","DISPLAY2","([%g].+?[%g]|:[^:]+:/?|\\([^()]+\\)/?|\\[[^\\[\\]]+\\])","(\\<\\<.+\\>\\>)","([%pLN_.]+|\\(\\)[%s]*[%pLN_.]+|\\(\\)[%s]*[%g][^%g]+[%g]|:[^:]+:/?|\\([^()]+\\)/?|\\[[^\\[\\]]+\\])","STEREOTYPE3","DISPLAY3","DISPLAY4", +"([%g].+?[%g]|:[^:]+:/?|\\([^()]+\\)/?|\\[[^\\[\\]]+\\]|[%pLN_.]+)","STEREOTYPE4","Creating the interface \'","\', drawn as a circle",", displayed as \""," (the leading color "," is currently ignored)","This element (",") is already defined","^[\\p{L}0-9_.]+$","layout_new_line","Forcing a layout line break: the following elements start a new row","layout","(package)","([%pLN_.$]*|[%g][^%g]+[%g])","DISPLAY1","([%g][^%g]+[%g])","Starting the package \'","\' displayed as \"","Starting a package without a name (rejected at execution: a name is required)", +", with the visibility modifier \'"," (a symbol name here selects the shape of the package)",", tagged ","Error in name","package","Closing the current package, namespace or container","No package or namespace defined","([%g][^%g]+[%g]|[^#%s{}]*)","(#[0-9a-fA-F]{6}|#?\\w+)?","Declaring the empty package \'","Declaring an anonymous empty package","SYMBOL","(package|rectangle|hexagon|node|artifact|folder|file|frame|cloud|action|process|database|storage|component|card|queue|stack)","([%g].+?[%g])","STEREOTYPE1", +"([^#%s{}]+)","([^#%s{}%g]+)","CODE8","CODE9","([^#%s{}%g]*)","Starting an anonymous ","Starting the ","together","Starting a \'together\' block: the elements inside are kept close in the layout","mix_","(state|person|artifact|actor/|actor|folder|card|file|package|rectangle|hexagon|label|node|frame|cloud|action|process|database|queue|stack|storage|agent|usecase/|usecase|component|boundary|control|entity|interface|circle|collections|port|portin|portout)","()","Creating the "," (requires \'allowmixing\')","Use \'allowmixing\' if you want to mix classes and other UML elements.", +"portin","portout","usecase/","mix","NORMAL_KEYWORD","WITH_MIX_PREFIX","Creating the named note \'","Note already created: ","[%g]","([^%g]+)","namespace","([%pLN_][-%pLN_.:\\\\/]*)","Starting the namespace \'"," (a symbol name here selects the shape of the container)","Declaring the empty namespace \'","Already exists ","Setting the stereotype of \'","\' to ","No such class ","(?:[^%pLN%s_$#\\:{}<>%g]|[\\\\]{2}|::)","@([\\d.]+)","ENT1","COUPLE1","[\\[]","QUALIFIER1","([^\\[\\]]+)","[\\]]","FIRST_LABEL","FIRST_ROLE", +"/([^%s]+|[%g][^%g]+[%g])","ARROW_HEAD1","ARROW_BODY1","([-=.]+)","ARROW_DIRECTION","(left|right|up|down|le?|ri?|up?|do?)?","INSIDE","(0|\\(0\\)|\\(0|0\\))(?=[-=.~])","ARROW_BODY2","([-=.]*)","ARROW_HEAD2","SECOND_LABEL","SECOND_ROLE","QUALIFIER2","ENT2","COUPLE2","[%pLN_$]+)*|[%g][^%g]+[%g])","Drawing "," between ",", dashed",", oriented ","to the left","to the right","upwards","downwards",", with a middle circle",", with style \'",", qualifier \"","\" on the first end","\" on the second end",", cardinality \"", +", role \"",", weight ","an association","a link","a directed association","an aggregation link","a composition link","an extension (inheritance) link","the association between \'","No class ","::","Cannot have more than 2 assocications","0)","(0","[^-.=]","[^-.=\\w]","?[%pLN_]+(?:","[%pLN_]+)*","[%pLN_]+)*[%g]","\\([%s]*(",")[%s]*,[%s]*(",")[%s]*\\)","[%s]+)?","[%s]*(\\<\\<.*\\>\\>)?","LOL_THEN_ENT","([()]\\))([-=.]+)","ENT_THEN_LOL","([-=.]+)(\\([()])","(object)","(interface|enum|annotation|abstract[%s]+class|abstract|class|entity|protocol|struct|exception|metaclass|stereotype|dataclass|record)", +"Attaching the interface lollipop \'"," (full circle: provided interface)"," (half circle: required interface)",", label \"","lol","^\"([^\"]+)\"([^\"]+)\"([^\"]+)\"$","^\"([^\"]+)\"([^\"]+)$","^([^\"]+)\"([^\"]+)\"$","a","(right|left)","of","Adding a note on the "," of the last entity","Nothing to note to","Not known: ","GMN","([^%s{}%g<>]+)","[%g]([^%g]*)[%g]","([^%s{}%g<>]+|[%g][^%g]+[%g])","([^%s{}%g<>:]+|[%g][^%g]+[%g])::([%g][^%g]+[%g]|[^%s]+)","[%g](.+?)(?:\\<(",")\\>)?[%g]","\': "," does not exist", +"(right|left|top|bottom)?","(on|of)"," of the last link","No link defined","constraint","links","Drawing the constraint \"","\" between the two last links"," (the color ","Cannot put constraint on two last links","constrainton","\\<\\>","Creating the association diamond \'","Already existing : ","(person|artifact|actor/|actor|folder|card|file|package|rectangle|hexagon|label|node|frame|cloud|action|process|database|queue|stack|storage|agent|usecase/|usecase|component|boundary|control|entity|interface|circle|collections|port|portin|portout)[%s]+", +"([^%g]*)"," with a description of ","Creating an element with a multiline description","# 〇+〴w 〇?〘 「-\\|/」 〇+〴w 〙","Starting the partition \'","Closing the current partition","No partition defined","endpartition","STAR","(\\(\\*(top)?\\))","([%pLN][%pLN_.]*)","BAR","(?:==+)[%s]*([%pLN_.]+)[%s]*(?:==+)","QUOTED","[%g]([^%g]+)[%g](?:[%s]+as[%s]+([%pLN_.]+))?","FIRST","([-.]+)","(\\*|left|right|up|down|le?|ri?|up?|do?)?","([-.]*)","BRACKET","\\[([^\\]*]+[^\\]]*)\\]","([^%g]*?)","Drawing a link from "," to a multiline activity (block of ", +" line)",", with code \'",", placed in the partition \'",", setting the stereotype of the source to ",", setting the background color of the source to ",", setting the stereotype of the target to ",", setting the background color of the target to ","Drawing a link to a multiline activity","No such entity"," of the last activity","〇+「-.」","〇?〘 [ 〶$ARROW_STYLE1=〘【 #〇+〴w ┇dotted┇dashed┇plain┇bold┇hidden┇norank┇single┇node┇thickness=〇+〴d】 〇*【 ,#〇+〴w ┇,dotted┇,dashed┇,plain┇,bold┇,hidden┇,norank┇,single┇,node┇,thickness=〇+〴d】〙] 〙", +"〇?【 *┇left┇right┇up┇down┇l〇?e┇r〇?i┇u〇?p┇d〇?o】","〇?〘 [ 〶$ARROW_STYLE2=〘【 #〇+〴w ┇dotted┇dashed┇plain┇bold┇hidden┇norank┇single┇node┇thickness=〇+〴d】 〇*【 ,#〇+〴w ┇,dotted┇,dashed┇,plain┇,bold┇,hidden┇,norank┇,single┇,node┇,thickness=〇+〴d】〙] 〙","〇*「-.」","[ 〶$BRACKET=〘〇+「〤]*」 〇*「〤]」〙 ]","if 〇*〴s 〴g 〶$IF1=〇*〴G 〴g 〇*〴s 〇?〘as 〇+〴s 〶$ASIF1=〇+「〴an_.」 〇+〴s 〙〘then〙","if 〇+〴s 〶$IF2=〇l+〴. 〘then〙 ","if 〇*〴s 〴g 〶$IF1=〇*〴G 〴g 〇*〴s 〇?〘as 〇+〴s 〶$ASIF1=〇+「〴an_.」 〇+〴s 〙","if 〇+〴s 〶$IF2=〇+〴.","(* 〇?〘top〙)","=〇+= 〇*〴s 〇+「〴an_.」〇*〴s =〇+=", +"〴g 〶$QUOTED1=〇*〴G 〴g 〇?〘〇+〴s as 〇+〴s 〶$QUOTED2=〇+「〴an_.」 〙 ","〇+「〴an_.」","Starting an \'if\'","IF2",", testing \"","IF1","ASIF1"," (code \'","\')",", linked from ","the start node","the synchronization bar \'","QUOTED1","the last activity","QUOTED2",", arrow labelled \"","No if possible at this point","Starting the \'else\' branch of the enclosing if","No if for this else","if","Closing the enclosing if","No if for this endif","endif","(#\\w+[-\\\\|/]?\\w+)?","STAR2","(\\(\\*(top|\\d+)?\\))","OPENBRACKET2", +"(\\{)","BAR2","[%g]([^%g]+)[%g](?:[%s]+as[%s]+([%pLN][%pLN_.]*))?","QUOTED_INVISIBLE2","(\\w.*?)","FIRST2","PARTITION2","([%g][^%g]+[%g]|\\S+)","BACKCOLOR2",", without layout constraint","the start node (the \'top\' flag is currently ignored)","a new inner activity block","the end node \'","the end node","No such activity","2","OPENBRACKET","QUOTED_INVISIBLE","end$","【hide-class┇hide┇show-class┇show】","【 << 〇*「〤<>」>> ┇ 〇+〴S 】 ","HEAD1","BODY1","([-=.~]+)","(?:\\[((?:#\\w+|dotted|dashed|plain|bold|hidden|norank|single|node|thickness=\\d+)(?:,#\\w+|,dotted|,dashed|,plain|,bold|,hidden|,norank|,single|,node|,thickness=\\d+)*(?:(?:;(?:#\\w+|dotted|dashed|plain|bold|hidden|norank|single|node|thickness=\\d+)(?:,#\\w+|,dotted|,dashed|,plain|,bold|,hidden|,norank|,single|,node|,thickness=\\d+)*)*))\\])?", +"(left|right|up|down|le?|ri?|up?|do?)(?=[-=.~0()\\[])","BODY2","([-=.~]*)","HEAD2","([%pLN_.]+|[%g][^%g]+[%g]|\\(\\)[%s]*[%pLN_.]+|\\(\\)[%s]*[%g][^%g]+[%g]|:[^:]+:/?|(?!\\[\\*\\])\\[[^\\[\\]]+\\]|\\((?!\\*\\))[^)]+\\)/?)",", bold","the actor \'","the business actor \'","the component \'","the usecase \'","the business usecase \'","the interface \'","(?:(person|artifact|actor/|actor|folder|card|file|package|rectangle|hexagon|label|node|frame|cloud|action|process|database|queue|stack|storage|agent|usecase/|usecase|component|boundary|control|entity|interface|circle|collections|port|portin|portout|\\(\\))[%s]+)?", +")/","actor/",":/","business actor","business usecase","Port can only be used inside an element and not at root level","Creating the ArchiMate element \'",", with the ArchiMate icon \'","<<$archimate/"," (the text after the opening \'[\' is currently ignored)"," (the text before the closing \']\' is currently ignored)","Creating an ArchiMate element with a multiline description","Starting the ArchiMate group \'","(requirement|domain)","([a-zA-Z0-9]+)","GROUP","(\\{)?"," group \'","domain"," (selecting the Problem Frames symbol)", +" (the generic <","> is currently ignored)","machine","causal","designed","lexical","biddable","Object already exists : ","##(?:\\[(dotted|dashed|bold)\\])?(\\w+)?","ADDFIELD","Declaring the state \'",", stereotyped ","STEREOGROUP"," (pseudo-state type: ",", with the description line \"","You cannot use this stereotype here","The state "," has been created in a concurrent state : it cannot be used here.","([%pLN_.:]+|[%pLN_.:]+\\[H\\*?\\]|\\[\\*\\]|\\[H\\*?\\]|(?:==+)(?:[%pLN_.:]+)(?:==+))","Drawing a transition from ", +"ARROW_CROSS_START",", with a circled cross at the start","ARROW_CIRCLE_END",", with a circle decoration at the end"," (the label is drawn as an intermediate transition node)","[*]","[H]","[H*]","the deep history of \'","the deep history of the current state","the shallow history of \'","the shallow history of the current state","the final pseudo-state","the initial pseudo-state","*start*","*end*","statediagramedgelabelstyle"," cannot be used here.","*deephistory*","*historical*","[^a-zA-Z0-9_]","transition_", +"<>","(?i),?node,?",",,","^,|,$","(x)?","(o[%s]+)?","\\<","(?:[%s]*\\{|[%s]+begin)","Starting the composite state \'","Starting the frame \'","Closing the current composite state","No inner state defined","endstate","Adding the description line \"","\" to the state \'","\' (created if it does not exist yet)","Starting a new concurrent region, separated by a horizontal line","Starting a new concurrent region, separated by a vertical line","CONC","Switching to the swimlane \'","(?:(#\\w+[-\\\\|/]?\\w+))?", +"([^|]+?)","(partition|package|rectangle|card|group)","BACK1","([%g][^%g]+[%g]|.*?)","BACK2","(\\{?)"," (deprecated form: add a \'{\' bracket at the end of the line)","Missing \'{\': write \'","\' and close it with \'}\'","Closing the current group or partition","CMD","(end ?group|group ?end)","Closing the current group or partition (deprecated: use \'}\' instead of \'","\' is deprecated: close the group with \'}\' instead","endgroup","groupend","->","-\\[((?:#\\w+|dotted|dashed|plain|bold|hidden|norank|single|node|thickness=\\d+)(?:,#\\w+|,dotted|,dashed|,plain|,bold|,hidden|,norank|,single|,node|,thickness=\\d+)*(?:(?:;(?:#\\w+|dotted|dashed|plain|bold|hidden|norank|single|node|thickness=\\d+)(?:,#\\w+|,dotted|,dashed|,plain|,bold|,hidden|,norank|,single|,node|,thickness=\\d+)*)*)*)\\]->", +"(.*);","Labelling the next arrow \"","\", with color or style \'","Setting the color or style of the next arrow to \'","Plain arrow, with no effect","Labelling the next arrow with ",", with color or style \'","Labelling the next arrow","repeat","Starting a repeat loop",", with the activity \"","\" at the top"," (box style: "," (deprecated and ignored color syntax: write <<",">> at the end of the line)","repeat :","This syntax is deprecated and the color is ignored: write \'"," <<",">>\' instead of \'","Adding the activity \"", +"IGNORED"," (the stereotype before the \':\' is ignored: write it after the \';\')",">> after the \';\')","The stereotype "," before the \':\' is ignored: write \':","; ","\' instead","This syntax is deprecated and the color is ignored: write \':","; <<",";\'","TEST","(is|equals?)","WHEN","(.+?)","then",", when the value is \"","\" is \"","This syntax is deprecated, you must add <<",">> at the end of the line","\\((.+?)\\)",", \'then\' arrow labelled \""," (the stereotype after \'if\' is ignored: write it after the \';\')", +"when","Starting an \'if\', testing \"","\", \'then\' arrow labelled \"","\" (legacy \'then when\' syntax)","INCOMING_COLOR","INCOMING","WHEN_COLOR","Adding an \'else if\' branch to the enclosing if",", \'then\' arrow color or style \'","incoming","\'then\'",", branch arrow color or style \'","Starting the \'else\' branch of the enclosing if, labelled \"","\" (legacy \'else when\' syntax)","Closing the enclosing if, merging the branches","Cannot find if","switch","Starting a switch","case","Adding the branch \"", +"\" to the enclosing switch","Adding an unlabelled branch to the enclosing switch","Cannot find switch","endswitch","Closing the enclosing switch, merging the case branches","while","TEST3","\\((.*?)\\)","WHEN3","(not)","OUT3","TEST4","OUT4","TEST2","WHEN2","TEST1","\\((.*)\\)","XCOLOR","Closing the repeat loop",", looping back while \"",", loop-back arrow labelled \"","OUT",", exit arrow labelled \"",", exit arrow color or style \'","repeatwhile","Closing the repeat loop, looping back while a test spanning ", +" holds",", with a loop-back arrow label after the \'is\' separator","\\)[%s]*(is|equals?)[%s]*\\(","backward","OUTCOMING_COLOR","OUTCOMING","Defining the backward activity \"","\" on the return edge of the repeat loop","outgoing","_COLOR"," arrow"," with color or style \'","Defining a backward activity of "," of text on the return edge of the repeat loop","Defining a backward activity on the return edge of the repeat loop","YES","Starting a while loop",", repeating while \"",", body arrow labelled \"","Closing the while loop", +"Cannot find while","endwhile","whileend","fork","Forking the flow into parallel branches","again","Starting the next parallel branch of the enclosing fork","Cannot find fork","forkagain","merge","(\\{.+\\})?","Closing the enclosing fork, synchronizing the parallel branches","Closing the enclosing fork with a merge, without synchronization","endfork","endmerge","forkend","split","Splitting the flow into unsynchronized branches","Starting the next branch of the enclosing split","Cannot find split","splitagain", +"Closing the enclosing split, converging the branches","endsplit","splitend","Starting the flow with an initial node","Stopping the flow with a final node","SPOT","\\((\\S)\\)","Adding the circled character spot \'","Breaking out of the enclosing loop","Ending the flow with an end node","kill|detach","Detaching the current flow, which stops without any final node","kill cannot be used here","detach","kill","Setting the color of the next arrow to ","(note|floating note)","(left|right)?","floating","Adding a note attached to the latest activity", +"Adding a floating note"," (the tag ","Adding an activity spanning ","Adding a multiline activity",">> at the end of the line, after the \';\'","[-*]","\" (list item syntax)","Declaring the label \'","\', target of goto jumps","goto","Jumping to the label \'","This is not needed anymore.","No such task ","\\[([%pLN_.]+)\\]","#(\\w+)(?:/(#?\\w+))?","((.+?)[%s]*--)?","weeks?","starts?","[^0-9]*?","[a-z]*","WEEKDAY","NUM","([0-9]+)","week","weeks","No group to be closed","language","LANG","(\\w+)","projectscale", +"ganttscale","printscale","yearly","quarterly","monthly","daily","weekly","(with\\s+calendar\\s+date)","NUMBER","(?:with\\s+week\\s+numbering\\s+from\\s+(-?\\d+))","zoom","ZOOM","([.\\d]+)","m","q","y","date","numbering","print","between","and","END","Restricting the printed interval to between ","(note)","(bottom)","Adding a note at the bottom of the gantt with "," lines of text"," stereotyped "," tagged ","No note defined","No task defined","labels?","(first|last)","column","ALIGNED","(left|right)","aligned", +"\'labels on "," column\' is no longer supported: this line is ignored","labels","ress?ources?","names?","default[%s]+completion","completion[%s]+default","to","Completetion must between 0 and 100","Adding a mindmap node at depth "," without a box outline"," stereotyped <<"," with background color ","Adding a mindmap node","type=<",">[","Adding the mindmap root node"," on the left side"," on the right side","Setting the default mindmap direction to ","([ \t]*[*+-]+)","SHAPE_1","DIRECTION_1","([<>])?","DIRECTION_2", +"SHAPE_2","BACKCOLOR_1","CODE_1","\\(([%pLN_]+)\\)","CODE_2","BACKCOLOR_2","([^%s].*)","[%g](.*)[%g]","Missing label for WBS node.","Shape (_) and direction (< >) must come before color and id: start the line with \'","No such node ","Element already in another group.","address","Cannot nest group","Cannot open network in a group","Cannot nest network","what about ","(address|color|width|description)","\"?","([^\"]*)","full","Creating a ","compact "," timing player \'","Unknown timing style: ","compact","with", +"period","PERIOD","([0-9]+(?:\\.[0-9]+)?)","pulse","PULSE","offset","OFFSET","Creating a clock \'","Creating a compact clock \'"," with period "," pulse "," offset ","from","(-?[0-9]*\\.?[0-9]+)","Creating an analog timing player \'","Creating a compact analog timing player \'"," with bounds from ","#,##0","Creating a binary timing player \'","Creating a compact binary timing player \'","PLAYER","has","([-%pLN_.@]+)","STATES","((,([-%pLN_.@]+))*)","Defining state \'","\' on player \'",", \'","Unknown ","\' labelled \"", +"\" on player \'","STATE7","STATE3","STATE4","STATE5","STATE6","state \'","a tristate {?}","a low-impedance state {-}","an unknown state {...}","a hidden state","states \'","STATE1","STATE2","([-%pLN_][-%pLN_.]*)","(\\{hidden\\})","(\\{\\.\\.\\.\\})","(\\{-\\})","(\\{\\?\\})","(?:\\{([-%pLN_][-%pLN_.]*),([-%pLN_][-%pLN_.]*)\\})","([\\p{L}_][%pLN_.]*)","Setting player \'","Unknown \"","TIME","Setting the current player to ","Missing @ line before this","Adding a time mark at "," labelled \'","What time?","Setting the current timing player to \'", +"No such participant ","TIME1","ARROW_BODY","ARROW_HEAD","TIME2","Drawing a timing message from player \'"," to player \'"," with arrow style ","CLOCK","HOUR","DATE","DIGIT","No such element: ","(top|bottom)","Adding a note at the "," of player \'","(([\\p{L}_][%pLN_.]*))?","Drawing a timing constraint from "," on player \'","You have to provide a participant","Unknown time label","TICK","UNIT","([smhdDyY])","pixels?","Scaling "," time unit(s)","Y","h","second(s)","minute(s)","hour(s)","day(s)","year(s)","time unit(s)", +"Bad value","(hide|manual)","time",".?","MANUAL","Setting the time axis strategy to manual","Hiding the time axis","manual","FROM","TO","Highlighting the time range from ","mode","Switching the timing diagram to compact mode","ticks","every","num","multiple","Setting the tick interval of player \'","Setting the height of player \'","use","format","Setting the date format to \"","Bad date format","usedate","usedateformat","[hx]-axis","RANGE","(-?[0-9.]+)\\s*-?->\\s*(-?[0-9.]+)","spacing","SPACING","LABELRIGHT", +"(label-right)","GRID","(grid)","X-axis spacing must be greater than 0","Invalid number format in spacing value","Invalid number format in axis range","AXIS","([vy]2?-axis)","\\[([^\\]]+)\\]","TICKS","LABELTOP","(label-top)","Invalid tick format. Expected: [value:\"label\", ...]","Tick spacing must be greater than 0","v2","y2","v","Invalid number format in bar data","V2","([vy]2)","Invalid number format in line data","\\s+","\\),\\(","^[\\[\\(]+","[\\]\\)]+$","Invalid coordinate pair format in line data","Invalid number format in area data", +"MARKER","<<(circle|square|triangle)>>","Invalid number format in scatter data","Invalid coordinate pair format in scatter data","square","triangle","Invalid legend position: ","stacked","grouped","Invalid stack mode: ","stackmode","vertical","horizontal","Invalid orientation: ","at","XPOS","([^,]+)","YPOS","([^)]+)","<<(arrow)>>","Y position must be a numeric value: ","Width must be an integer","Height must be an integer","LTR","Scale interval invalid","same","RANGE_UNIT","(\\d{1,7})(?::)?","(\\d{1,7})(?:-(\\d{1,7}))(?::)?", +"\\*","\\s+(.*?)","ATTRIBUTE","(?:\\s*\\[(.*?)\\])?","len","Invalid bit start ","Invalid bit range ","rotate","3","4","5","6","7","8","9","\\}?","Adding an EBNF comment \"","Adding an EBNF documentation comment with ","Adding an EBNF comment with ","COMMENTA","(.*[^%s].*)","\\*\\)","([%pLN_][-%pLN_]*)","COMMENTB","EQUALS","(=)","(.*;)","Declaring the EBNF rule \'"," with a comment above"," with a comment below","Declaring an EBNF rule with ","Adding the regex source line \'","Major parsing error","Data parsing error", +"unquoted function/procedure cannot use expression.","call001","(?=","(?!","(?<=","(?","Index: ",", Size: ","brotli dictionary is not set","# #s #, #e #.# the #.com/# # of # and # in # to #\"#\">#\n#]# for # a # that #. # with #\'# from # by #. The # on # as # is #ing #\n\t#:#ed #(# at #ly #=\"# of the #. This #,# not #er #al #=\'#ful #ive #less #est #ize #ous #"," !! ! , *! &! \" ! ) * * - ! # ! #!*! + ,$ ! - % . / # 0 1 . \" 2 3!* 4% ! # / 5 6 7 8 0 1 & $ 9 + : ; < \' != > ?! 4 @ 4 2 & A *# ( B C& ) % ) !*# *-% A +! *. D! %\' & E *6 F G% ! *A *% H! D I!+! J!+ K +- *4! A L!*4 M N +6 O!*% +.! K *G P +%( ! G *D +D Q +# *K!*G!+D!+# +G +A +4!+% +K!+4!*D!+K!*K", +" !! ! \"#$##%#$&\'##(#)#++++++++++((&*\'##,---,---,-----,-----,-----&#\'###.///.///./////./////./////&#\'# ","A/* \': & : $  @","Expected \'{\' after selector ","var(","var\\(\\s*-*([A-Za-z_][-\\w]*)\\s*\\)","Not applicable to ","An @media block is not a selector; merge its children instead"," *","] {\n","}\n","REMOVE_STARTING_QUOTE","KEEP_STARTING_QUOTE","BOTH","LEFT_ONLY","NONE","^\\s+","\\s+$","Hiding the empty description compartment of states","Showing the empty description compartment of states", +"empty","Hiding the ","Showing the "," ,","PORTION","met","methods","mem","fields","members (fields and methods)"," of classes"," (no visibility modifier given: ignored at execution)","public","private","protected","att","fie","((?:public|private|protected|package)?(?:[,%s]+(?:public|private|protected|package))*)","(members?|attributes?|fields?|methods?)","EMPTY","empty ","cir","circled character icon","ste","GENDER"," of all elements"," of the elements stereotyped "," of every ","No such element ","No such quark ", +"(?:(class|object|interface|enum|annotation|dataclass|record|abstract|[%pLN_.]+|[%g][^%g]+[%g]|\\<\\<.*\\>\\>)[%s]+)*?","(empty)","(members?|attributes?|fields?|methods?|circles?|circled?|stereotypes?)","Adding a tip on the "," of the member \'","\' of \'","\' with ","Adding a tip","$$$","Creating a named note"," (rejected at execution: no note defined)","Adding a note on the last link","Setting the title of the diagram to \"","TITLE1","TITLE2","Framing the whole diagram with the label \"","Setting the caption of the diagram to \"", +"Setting the caption of the diagram from ","Setting the caption of the diagram (rejected at execution: no caption defined)","No caption defined","^caption$","^end[%s]?caption$","Setting the title of the diagram from ","Setting the title of the diagram (rejected at execution: no title defined)","No title defined","^title$","^end[%s]?title$","Setting the legend of the diagram","VALIGN",", positioned at the ","ALIGN",", aligned "," (rejected at execution: no legend defined)",", from ","No legend defined","(left|right|center)", +"Setting the legend of the diagram to \"","LEGEND1","LEGEND2","Setting the footer of the diagram to \"","center","centerfooter","leftfooter","rightfooter","LABEL1","LABEL2","Setting the footer of the diagram"," (rejected at execution: empty footer)","Empty footer","^(?:(left|right|center)?[%s]*)footer$","^end[%s]?footer$","Setting the header of the diagram to \"","centerheader","leftheader","rightheader","Setting the header of the diagram"," (rejected at execution: empty header)","Empty header","^(?:(left|right|center)?[%s]*)header$", +"^end[%s]?header$","SEPARATOR","Setting the namespace separator to \'","Disabling the namespace separator: element names are no longer split into namespaces","set","namespaceseparator","((?:none|null)|[\\\\]{2}|::|[^%pLN%s_$#{}<>%g])","svgsize","graphviz_dot","Selecting the \'","\' layout engine","Defining the pragma \'"," with value \'","Selecting the layout engine (rejected at execution: this directive has been renamed to \'!pragma layout ...\')","Setting the SVG size to \'","Setting the SVG size (ignored: two space-separated values are expected)", +"smetana"," \t\n\r\u000c","!pragma","([A-Za-z_][A-Za-z_0-9]*)","Assuming a "," background behind the transparent diagram (deprecated and currently ignored)","!assume","(dark|light)","Setting the skin parameter \'"," (deprecated: use \'!option handwritten true\' instead)","ParticipantPadding"," (deprecated: use CSS style instead)","skinparamlocked"," (the \'skinparamlocked\' variant is treated like a plain \'skinparam\')","\'skinparam handwritten\' is deprecated: write \'!option handwritten ","\'skinparam ParticipantPadding\' is ignored: use a style instead", +"participant {"," Padding ","General failure: no style available.","skinparam","(skinparam|skinparamlocked)","([\\w.]*(?:\\<\\<[^<>]*\\>\\>)?[\\w.]*)","([^{}]*)","Setting skin parameters from ","a \'skinparam\' block"," \'skinparam\' blocks"," in total",".*.*","Setting skin parameters","Setting the skin parameters of \'"," from a block of ","Bad syntax for skinparam","^[%s]*([%q].*|/[%q].*[%q]/[%s]*)$","^skinparam[%s]*(?:[%s]+([\\w.]*(?:\\<\\<.*\\>\\>)?[\\w.]*))?[%s]*\\{$","Bad pattern ","SKIN","Loading the skin \'", +"Skin read error","skin","([\\w.]+)","Setting the minimum width of the diagram to "," pixels (currently ignored by the rendering engine)","minwidth","NB1","NB2","Splitting the diagram into "," pages ("," horizontally, "," vertically)","0+"," (rejected at execution: arguments must be positive)","Argument must be positive","page","x*","Accepted but ignored: \'rotate\' has no effect","sprite","DIM","\\[(\\d+)x(\\d+)/(?:(\\d+)(z)?|(color))\\]","\\[(\\d+)x(\\d+)/(?:(\\d+)(z)|(color))\\]","([-_A-Za-z0-9]+)","Defining the sprite \'", +", 16 gray levels, dimensions deduced from the data",", 4096 colors"," gray levels",", compressed (z) encoding","16"," (rejected at execution: only 4, 8 or 16 gray levels are allowed)",".,$%&*+-:;<=>?@^_~GHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz","Only 4, 8 or 16 graylevel are allowed.","Cannot decode sprite.","\' from an inline Base64 encoded PNG image ("," characters)","Cannot decode Base64 PNG sprite.","([A-Za-z0-9+/=]+)","MD5","Unknown MD5 sprite reference: ","([0-9a-f]+)","\' from an inline SVG element (", +"([-%pLN_]+)","(\\)","\' from an inline SVG element of ","Defining a sprite from an inline SVG element","SVGSTART","(\\%g#]*)","Defining inline styles from \"","Error in style definition: ","\\","([-#.\\w%s;:{}]+)","\\","Defining inline styles from "," of CSS-like definitions", +"Importing a style sheet from the file \'","\' (or from the internal \'/skin/","\' resource when the file does not exist)","Importing a style sheet from the URL ","/skin/","Invalid URL to style definition: ","\\」>>","SHORTNAME","{〇+「〤{}」}","RESOURCE","Not sure what are you refering to?","Bad argument for resource","before","after","THEY","【she┇he┇they】","〇+「〤{}」", +"Not sure who are you refering to?","BYEAR1","BMONTH1","BDAY1","BYEAR2","BMONTH2","BDAY2","「dD」+","ECOUNT1","〇+〴d","ECOUNT2","BYEAR3","BMONTH3","BDAY3","COUNT_AND","day〇?s","COUNT_THEN","BDAY","BMONTH","BYEAR","ECOUNT","ETYPE","「dDtTeE」","EOPERATION","「-+」","T","E","〇+〴d:〇+〴d","count12","until002","count13","timedownlifeleftbackcodedatashowonlysitecityopenjustlikefreeworktextyearoverbodyloveformbookplaylivelinehelphomesidemorewordlongthemviewfindpagedaysfullheadtermeachareafromtruemarkableuponhighdatelandnewsevennextcasebothpostusedmadehandherewhatnameLinkblogsizebaseheldmakemainuser\') +holdendswithNewsreadweresigntakehavegameseencallpathwellplusmenufilmpartjointhislistgoodneedwayswestjobsmindalsologorichuseslastteamarmyfoodkingwilleastwardbestfirePageknowaway.pngmovethanloadgiveselfnotemuchfeedmanyrockicononce" ++"lookhidediedHomerulehostajaxinfoclublawslesshalfsomesuchzone100%onescareTimeracebluefourweekfacehopegavehardlostwhenparkkeptpassshiproomHTMLplanTypedonesavekeepflaglinksoldfivetookratetownjumpthusdarkcardfilefearstaykillthatfallautoever.comtalkshopvotedeepmoderestturnbornbandfellroseurl(skinrolecomeactsagesmeetgold.jpgitemvaryfeltthensenddropViewcopy1.0\"stopelseliestourpack.gifpastcss?graymean>rideshotlatesaidroadvar feeljohnrickportfast\'UA-deadpoorbilltypeU.S.woodmust2px;Inforankwidewantwalllead" ++"[0];paulwavesure$(\'#waitmassarmsgoesgainlangpaid!-- lockunitrootwalkfirmwifexml\"songtest20pxkindrowstoolfontmailsafestarmapscorerainflowbabyspansays4px;6px;artsfootrealwikiheatsteptriporg/lakeweaktoldFormcastfansbankveryrunsjulytask1px;goalgrewslowedgeid=\"sets5px;.js?40pxif (soonseatnonetubezerosentreedfactintogiftharm18pxcamehillboldzoomvoideasyringfillpeakinitcost3px;jacktagsbitsrolleditknewnearironfreddiskwentsoilputs/js/holyT22:ISBNT20:adamsees

json\', \'contT21: RSSloopasiamoon

soulLINEfortcartT14:

80px!--<9px;T04:mike:46ZniceinchYorkricezh:d\'));puremageparatonebond:37Z_of_\']);000,zh:gtankyardbowlbush:56ZJava" ++"30px\n|}\n%C3%:34ZjeffEXPIcashvisagolfsnowzh:iquer.csssickmeatmin.binddellhirepicsrent:36ZHTTP-201fotowolfEND xbox:54ZBODYdick;\n}\nexit:35Zvarsbeat\'});diet999;anne}}sonyguysfuckpipe|-\n!002)ndow[1];[];\nLog salt" ++"\r\n\t\tbangtrimbath){\r\n00px\n});ko:lfeesad>\rs:// [];tollplug(){\n{\r\n .js\'200pdualboat.JPG);\n}quot);\n\n\');\n\r\n}\r201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037201320122011201020092008200720062005200420032002200120001999199819971996199519941993199219911990198919881987198619851984198319821981198019791978197719761975197419731972197119701969196819671966196519641963196219611960195919581957195619551954195319521951195010001024139400009999comomC!sesteestaperotodohacecadaaC1o" ++"biendC-aasC-vidacasootroforosolootracualdijosidograntipotemadebealgoquC)estonadatrespococasabajotodasinoaguapuesunosantediceluisellamayozonaamorpisoobraclicellodioshoracasiP7P0P=P0P>PP>Q\u0002P8P7P=P>P4P>Q\u0002P>P6P5P>P=P8Q\u0005P\u001dP0P5P5P1Q\u000bPP2Q\u000bP2P>P\u001dP>P>P1P\u001fP>P;P8P=P8P P$P\u001dP5P\u001cQ\u000bQ\u0002Q\u000bP\u001eP=P8Pthing.org/multiheardPowerstandtokensolid(thisbringshipsstafftriedcallsfullyfactsagentThis //-->adminegyptEvent15px;Emailtrue\"crossspentblogsbox\">notedleavechinasizesguest

robotheavytrue,sevengrandcrimesignsawaredancephase>\n\n\r\nname=diegopage swiss-->\n\n#fff;\">Log.com\"treatsheet) && 14px;sleepntentfiledja:c\u0003id=\"cName\"worseshots-box-delta\n<bears:48Z spendbakershops= \"\";php\">ctio" ++"n13px;brianhellosize=o=%2F joinmaybe, fjsimg\" \")[0]MTopBType\"newlyDanskczechtrailknowsfaq\">zh-cn10);\n-1\");type=bluestrulydavis.js\';>\r\n\r\nform jesus100% menu.\r\n\t\r\nwalesrisksumentddingb-likteachgif\" vegasdanskeestishqipsuomisobredesdeentretodospuedeaC1osestC!tienehastaotrospartedondenuevohacerformamismomejormundoaquC-dC-assC3loayudafechatodastantomenosdatosotrassitiomuchoahoralugarmayorestoshorastenerantesfotosestaspaC-snuevasaludforosmedioquienmesespoderchileserC!vecesdecirjosC)e" ++"starventagrupohechoellostengoamigocosasnivelgentemismaairesjuliotemashaciafavorjuniolibrepuntobuenoautorabrilbuenatextomarzosaberlistaluegocC3moenerojuegoperC:haberestoynuncamujervalorfueralibrogustaigualvotoscasosguC-apuedosomosavisousteddebennochebuscafaltaeurosseriedichocursoclavecasasleC3nplazolargoobrasvistaapoyojuntotratavistocrearcampohemoscincocargopisosordenhacenC!readiscopedrocercapuedapapelmenorC:tilclarojorgecalleponertardenadiemarcasigueellassiglocochemotosmadreclaserestoniC1oquedapasarbancohij" ++"osviajepabloC)stevienereinodejarfondocanalnorteletracausatomarmanoslunesautosvillavendopesartipostengamarcollevapadreunidovamoszonasambosbandamariaabusomuchasubirriojavivirgradochicaallC-jovendichaestantalessalirsuelopesosfinesllamabuscoC)stalleganegroplazahumorpagarjuntadobleislasbolsabaC1ohablaluchaC\u0001readicenjugarnotasvalleallC!cargadolorabajoestC)gustomentemariofirmacostofichaplatahogarartesleyesaquelmuseobasespocosmitadcielochicomiedoganarsantoetapadebesplayaredessietecortecoreadudasdeseoviejodeseaaguas" ++""domaincommonstatuseventsmastersystemactionbannerremovescrollupdateglobalmediumfilternumberchangeresultpublicscreenchoosenormaltravelissuessourcetargetspringmodulemobileswitchphotosborderregionitselfsocialactivecolumnrecordfollowtitle>eitherlengthfamilyfriendlayoutauthorcreatereviewsummerserverplayedplayerexpandpolicyformatdoublepointsseriespersonlivingdesignmonthsforcesuniqueweightpeopleenergynaturesearchfigurehavingcustomoffsetletterwindowsubmitrendergroupsuploadhealthmethodvideosschoolfutureshadowde" ++"batevaluesObjectothersrightsleaguechromesimplenoticesharedendingseasonreportonlinesquarebuttonimagesenablemovinglatestwinterFranceperiodstrongrepeatLondondetailformeddemandsecurepassedtoggleplacesdevicestaticcitiesstreamyellowattackstreetflighthiddeninfo\">openedusefulvalleycausesleadersecretseconddamagesportsexceptratingsignedthingseffectfieldsstatesofficevisualeditorvolumeReportmuseummoviesparentaccessmostlymother\" id=\"marketgroundchancesurveybeforesymbolmomentspeechmotioninsidematterCenterobjectexistsmidd" ++"leEuropegrowthlegacymannerenoughcareeransweroriginportalclientselectrandomclosedtopicscomingfatheroptionsimplyraisedescapechosenchurchdefinereasoncorneroutputmemoryiframepolicemodelsNumberduringoffersstyleskilledlistedcalledsilvermargindeletebetterbrowselimitsGlobalsinglewidgetcenterbudgetnowrapcreditclaimsenginesafetychoicespirit-stylespreadmakingneededrussiapleaseextentScriptbrokenallowschargedividefactormember-basedtheoryconfigaroundworkedhelpedChurchimpactshouldalwayslogo\" bottomlist\">){var prefixorange" ++"Header.push(couplegardenbridgelaunchReviewtakingvisionlittledatingButtonbeautythemesforgotSearchanchoralmostloadedChangereturnstringreloadMobileincomesupplySourceordersviewed courseAbout island: The dialoghousesBEGIN MexicostartscentreheightaddingIslandassetsEmpireSchooleffortdirectnearlymanualSelect.\n\nOnejoinedmenu\">PhilipawardshandleimportOfficeregardskillsnationSportsdegreeweekly (e.g.behinddoctorloggedunited
beyond-scaleacceptservedmarineFootercamera\n_form\"leavesstress\" />\r\n.gif\" onloadloaderOxfordsistersurvivlistenfemaleDesignsize=\"appealtext\">levelsthankshigherforcedanimalanyoneAfricaagreedrecentPeople
wonderpricesturned|| {};main\">inlinesundaywrap\">failedcensusminutebeaconquotes150px|estateremoteemail\"linkedright;signalformal1.htmlsignupprincefloat:.png\" forum.AccesspaperssoundsextendHeightsliderUTF-8\"& Before. WithstudioownersmanageprofitjQueryannualparamsboug" ++"htfamousgooglelongeri++) {israelsayingdecidehome\">headerensurebranchpiecesblock;statedtop\">boston.test(avatartested_countforumsschemaindex,filledsharesreaderalert(appearSubmitline\">body\">\n* TheThoughseeingjerseyNews\nSystem DavidcancertablesprovedApril reallydriveritem\">more\">boardscolorscampusfirst || [];media.guitarfinishwidth:showedOther .php\" assumelayerswilsonstoresreliefswedenCustomeasily your String\n\nWhiltaylorclear:resortfrenchthough\") + \"buyingbrandsMembername\">oppingsector5px;\">vspacepostermajor coffeemartinmaturehappenkansaslink\">Images=falsewhile hspace0& \n\nIn powerPolski-colorjordanBottomStart -count2.htmlnews\">01.jpgOnline-r" ++"ightmillerseniorISBN 00,000 guidesvalue)ectionrepair.xml\" rights.html-blockregExp:hoverwithinvirginphones\rusing \n\tvar >\');\n\t\n\nbahasabrasilgalegomagyarpolskisrpskiX1X/Y\u0008d8-f\u0016\u0007g.\u0000d=\u0013g9\u0001i+\u0014d?!f\u0001/d8-e\u001b=f\u0008\u0011d;,d8\u0000d8*e\u0005,e\u000f8g.!g\u0010\u0006h.:e\u001d\u001be\u000f/d;%f\u001c\re\n!f\u00176i\u00174d8*d::d:\'e\u0013\u0001h\u0007*e71d<\u0001d8\u001af\u001f%g\u001c\u000be7%d=\u001ch\u0001\u0014g3;f2!f\u001c\tg=\u0011g+\u0019f\t\u0000f\u001c\th/\u0004h.:d8-e?\u0003f\u0016\u0007g+ g\u0014(f\u00087i&\u0016i!5d=\u001ch\u0000\u0005f\n\u0000f\u001c/i\u0017.i\"\u0018g\u001b8e\u00053d8\u000bh==f\u0010\u001cg4\"d=?g\u0014(h=/d;6e\u001c(g:?d8;i\"\u0018h5\u0004f\u0016\u0019h\'\u0006i\"\u0011e\u001b\u001ee$\rf3(e\u0006\u000cg=\u0011g;\u001cf\u00146h\u0017\u000fe\u0006\u0005e.9f\u000e(h\r\u0010e8\u0002e\u001c:f6\u0008f\u0001/g):i\u00174e\u000f\u0011e8\u0003d;\u0000d9\u0008e%=e\u000f\u000bg\u0014\u001ff4;e\u001b>g\t\u0007e\u000f\u0011e" ++"1\u0015e&\u0002f\u001e\u001cf\t\u000bf\u001c:f\u00160i\u0017;f\u001c\u0000f\u00160f\u00169e<\u000fe\u000c\u0017d:,f\u000f\u0010d>\u001be\u00053d:\u000ef\u001b4e$\u001ah?\u0019d8*g3;g;\u001fg\u001f%i\u0001\u0013f88f\u0008\u000fe9?e\u0011\ne\u00056d;\u0016e\u000f\u0011h!(e.\te\u0005(g,,d8\u0000d<\u001ae\u0011\u0018h?\u001bh!\u000cg\u00029e\u0007;g\t\u0008f\u001d\u0003g\u00145e-\u0010d8\u0016g\u0015\u000ch.>h.!e\u0005\rh49f\u0015\u0019h\u00022e\n e\u0005%f4;e\n(d;\u0016d;,e\u0015\u0006e\u0013\u0001e\r\u001ae.\"g\u000e0e\u001c(d8\nf57e&\u0002d=\u0015e72g;\u000fg\u0015\u0019h(\u0000h/&g;\u0006g$>e\u000c:g\u0019;e=\u0015f\u001c,g+\u0019i\u001c\u0000h&\u0001d;7f f\u000e%e\u001b=e.6e;:h.>f\u001c\u000be\u000f\u000bi\u0018\u0005h/;f3\u0015e>\u000bd=\rg=.g;\u000ff5\u000ei\u0000\tf\u000b)h?\u0019f 7e=\u0013e\t\re\u0008\u0006g1;f\u000e\u0012h!\u000ce\u001b d8:d:$f\u0018\u0013f\u001c\u0000e\u0010\u000ei\u001f3d9\u0010d8\rh\u0003=i\u0000\u001ah?\u0007h!\u000cd8\u001ag\'\u0011f\n\u0000e\u000f/h\u0003=h.>e$\u0007e\u0010\u0008d=\u001ce$\'e.6g$>d<\u001ag \u0014g)6d8\u0013d8\u001ae\u0005(i\u0003(i!9g\u001b.h?\u0019i\u0007\u000ch?\u0018f\u0018/e<\u0000e\'\u000bf\u0003\u0005e\u00065g\u00145h\u0004\u0011f\u0016\u0007d;6e\u0013\u0001g\t\u000ce8.e\n)f\u0016\u0007e\u000c\u0016h5\u0004f:\u0010" ++"e$\'e-&e-&d9 e\u001c0e\u001d\u0000f5\u000fh\'\u0008f\n\u0015h5\u0004e7%g(\u000bh&\u0001f1\u0002f\u0000\u000ed9\u0008f\u00176e\u0000\u0019e\n\u001fh\u0003=d8;h&\u0001g\u001b.e\t\rh5\u0004h./e\u001f\u000ee8\u0002f\u00169f3\u0015g\u00145e=1f\u000b\u001bh\u0001\u0018e#0f\u0018\u000ed;;d=\u0015e\u0001%e:7f\u00150f\r.g>\u000ee\u001b=f1=h=&d;\u000bg;\rd=\u0006f\u0018/d:$f5\u0001g\u0014\u001fd:\'f\t\u0000d;%g\u00145h/\u001df\u0018>g$:d8\u0000d:\u001be\r\u0015d=\rd::e\u0011\u0018e\u0008\u0006f\u001e\u0010e\u001c0e\u001b>f\u0017\u0005f88e7%e\u00057e-&g\u0014\u001fg3;e\u0008\u0017g=\u0011e\u000f\u000be8\u0016e-\u0010e/\u0006g \u0001i\"\u0011i\u0001\u0013f\u000e\'e\u00086e\u001c0e\u000c:e\u001f:f\u001c,e\u0005(e\u001b=g=\u0011d8\ni\u0007\rh&\u0001g,,d:\u000ce\u0016\u001cf,\"h?\u001be\u0005%e\u000f\u000bf\u0003\u0005h?\u0019d:\u001bh\u0000\u0003h/\u0015e\u000f\u0011g\u000e0e\u001f9h.-d;%d8\nf\u0014?e:\u001cf\u0008\u0010d8:g\u000e/e\"\u0003i&\u0019f8/e\u0010\u000cf\u00176e(1d9\u0010e\u000f\u0011i\u0000\u0001d8\u0000e.\u001ae<\u0000e\u000f\u0011d=\u001ce\u0013\u0001f \u0007e\u0007\u0006f,\"h?\u000eh\'#e\u00063e\u001c0f\u00169d8\u0000d8\u000bd;%e\u000f\nh4#d;;f\u0008\u0016h\u0000\u0005e.\"f\u00087d;#h!(g\'/e\u0008\u0006e%3d::f\u00150g \u0001i\u0014\u0000e\u0014.e\u0007:g\u000e0g&;g:?e:\u0014g\u0014(e\u0008" ++"\u0017h!(d8\re\u0010\u000cg<\u0016h>\u0011g;\u001fh.!f\u001f%h/\"d8\rh&\u0001f\u001c\te\u00053f\u001c:f\u001e\u0004e>\u0008e$\u001af\u0012-f\u0014>g;\u0004g;\u0007f\u0014?g-\u0016g\u001b4f\u000e%h\u0003=e\n\u001bf\u001d%f:\u0010f\u0019\u0002i\u0016\u0013g\u001c\u000be\u00080g\u0003-i\u0017(e\u00053i\u0014.d8\u0013e\u000c:i\u001d\u001ee88h\u000b1h/-g\u0019>e:&e8\u000cf\u001c\u001bg>\u000ee%3f/\u0014h>\u0003g\u001f%h/\u0006h\'\u0004e.\u001ae;:h..i\u0003(i\u0017(f\u0004\u000fh\'\u0001g2>e=)f\u0017%f\u001c,f\u000f\u0010i+\u0018e\u000f\u0011h(\u0000f\u00169i\u001d\"e\u001f:i\u0007\u0011e$\u0004g\u0010\u0006f\u001d\u0003i\u0019\u0010e=1g\t\u0007i\u00136h!\u000ch?\u0018f\u001c\te\u0008\u0006d:+g\t)e\u0013\u0001g;\u000fh\u0010%f7;e\n d8\u0013e.6h?\u0019g\'\rh/\u001di\"\u0018h57f\u001d%d8\u001ae\n!e\u0005,e\u0011\nh.0e=\u0015g.\u0000d;\u000bh4(i\u0007\u000fg\u00147d::e=1e\u0013\re<\u0015g\u0014(f\n%e\u0011\ni\u0003(e\u0008\u0006e?+i\u0000\u001fe\u0012(h/\"f\u00176e0\u001af3(f\u0004\u000fg\u00143h/7e-&f !e:\u0014h/%e\u000e\u0006e\u000f2e\u000f*f\u0018/h?\u0014e\u001b\u001eh4-d90e\u0010\rg\'0d8:d:\u0006f\u0008\u0010e\n\u001fh/4f\u0018\u000ed>\u001be:\u0014e-)e-\u0010d8\u0013i\"\u0018g(\u000be:\u000fd8\u0000h\u0008,f\u001c\u0003e\u0013!e\u000f*f\u001c\te\u00056e.\u0003d?\u001df\n$h\u0000\u000cd8\u0014d;\ne" ++"$)g*\u0017e\u000f#e\n(f\u0000\u0001g\n6f\u0000\u0001g\t9e\u0008+h.$d8:e?\u0005i!;f\u001b4f\u00160e0\u000fh/4f\u0008\u0011e\u0000\u0011d=\u001cd8:e*\u0012d=\u0013e\u000c\u0005f\u000b,i\u0002#d9\u0008d8\u0000f 7e\u001b=e\u0006\u0005f\u0018/e\u0010&f 9f\r.g\u00145h\'\u0006e-&i\u0019\"e\u00057f\u001c\th?\u0007g(\u000bg\u00141d:\u000ed::f\t\re\u0007:f\u001d%d8\rh?\u0007f-#e\u001c(f\u0018\u000ef\u0018\u001ff\u0015\u0005d:\u000be\u00053g3;f \u0007i\"\u0018e\u0015\u0006e\n!h>\u0013e\u0005%d8\u0000g\u001b4e\u001f:g!\u0000f\u0015\u0019e-&d:\u0006h\'#e;:g-\u0011g;\u0013f\u001e\u001ce\u0005(g\u0010\u0003i\u0000\u001ag\u001f%h.!e\u0008\u0012e/9d:\u000eh\t:f\u001c/g\u001b8e\u0006\u000ce\u000f\u0011g\u0014\u001fg\u001c\u001fg\u001a\u0004e;:g+\u000bg-\tg:\'g1;e\u001e\u000bg;\u000fi*\u000ce.\u001eg\u000e0e\u00086d=\u001cf\u001d%h\u0007*f \u0007g->d;%d8\u000be\u000e\u001fe\u0008\u001bf\u0017 f3\u0015e\u00056d8-e\u0000\u000bd::d8\u0000e\u0008\u0007f\u000c\u0007e\r\u0017e\u00053i\u0017-i\u001b\u0006e\u001b\"g,,d8\te\u00053f3(e\u001b f-$g\u0005\'g\t\u0007f71e\u001c3e\u0015\u0006d8\u001ae9?e7\u001ef\u0017%f\u001c\u001fi+\u0018g:\'f\u001c\u0000h?\u0011g;\u0011h!\u000cd8:d:$i\u0000\u001ah/\u0004d;7h\'\te>\u0017g2>e\r\u000ee.6e:-e.\u000cf\u0008\u0010f\u0004\u001fh\'\te.\th#\u0005" ++"e>\u0017e\u00080i\u0002.d;6e\u00086e:&i#\u001fe\u0013\u0001h\u0019=g\u00046h=,h==f\n%d;7h.0h\u0000\u0005f\u00169f!\u0008h!\u000cf\u0014?d::f0\u0011g\u0014(e\u0013\u0001d8\u001ch%?f\u000f\u0010e\u0007:i\u0005\u0012e:\u0017g\u00046e\u0010\u000ed;\u0018f,>g\u0003-g\u00029d;%e\t\re.\u000ce\u0005(e\u000f\u0011e8\u0016h.>g=.i\"\u0006e/g%\u001eh\u000e7e>\u0017e\u0008)g\u0014(g;\'g;-d= d;,h?\u0019d9\u0008f(!e<\u000fh/-h(\u0000h\u0003=e$\u001fi\u001b\u0005h\u0019\u000ef\u0013\rd=\u001ci#\u000ef d9&f\u001c\tf\u0015\u0008f5\u000bh/\u0015g\';e\n(f\t\rh\u0003=e\u00063e.\u001ah\u0002!g%(d8\rf\u0016-i\u001c\u0000f1\u0002d8\re>\u0017e\n\u001ef3\u0015d9\u000bi\u00174i\u0007\u0007g\u0014(h\u0010%i\u0014\u0000f\n\u0015h/\tg\u001b.f \u0007g\u00081f\u0003\u0005f\u0011\u0004e=1f\u001c\td:\u001bh$\u0007h#=f\u0016\u0007e-&f\u001c:d<\u001af\u00150e-\u0017h#\u0005d?.h4-g\t)e\u0006\u001cf\u001d\u0011e\u0005(i\u001d\"g2>e\u0013\u0001e\u00056e.\u001ed:\u000bf\u0003\u0005f04e93f\u000f\u0010g$:d8\ne8\u0002h0\"h0\"f\u0019.i\u0000\u001af\u0015\u0019e8\u0008d8\nd< g1;e\u0008+f-\u000cf\u001b2f\u000b%f\u001c\te\u0008\u001bf\u00160i\u0005\rd;6e\u000f*h&\u0001f\u00176d;#h3\u0007h(\nh>>e\u00080d::g\u0014\u001fh.\"i\u0018\u0005h\u0000\u0001e8\u0008e1\u0015g$:e?\u0003g\u0010\u0006h44e-\u0010g62g+\u0019d8;i!\u000ch\u0007*g\u00046g:\'e\u0008+g.\u0000e\r\u0015f\u00149i\u001d)i\u0002#d:\u001bf\u001d%h/4f\t\u0013e<\u0000d;#g \u0001e\u0008 i\u0019$h/\u0001e\u00088h\n\u0002g\u001b.i\u0007\rg\u00029f,!f\u00158e$\u001ae0\u0011h\'\u0004e\u0008\u0012h5\u0004i\u0007\u0011f\t>e\u00080d;%e" ++"\u0010\u000ee$\'e\u0005(d8;i!5f\u001c\u0000d=3e\u001b\u001eg-\u0014e$)d8\u000bd?\u001di\u001a\u001cg\u000e0d;#f#\u0000f\u001f%f\n\u0015g%(e0\u000ff\u00176f2\u0012f\u001c\tf-#e88g\u0014\u001ah\u00073d;#g\u0010\u0006g\u001b.e=\u0015e\u0005,e<\u0000e$\re\u00086i\u0007\u0011h\u001e\re98g&\u000fg\t\u0008f\u001c,e=\"f\u0008\u0010e\u0007\u0006e$\u0007h!\u000cf\u0003\u0005e\u001b\u001ee\u00080f\u0000\u001df\u00033f\u0000\u000ef 7e\r\u000fh..h.$h/\u0001f\u001c\u0000e%=d:\'g\u0014\u001ff\u000c\tg\u0005\'f\u001c\rh#\u0005e9?d8\u001ce\n(f<+i\u0007\u0007h4-f\u00160f\t\u000bg;\u0004e\u001b>i\u001d\"f\u001d?e\u000f\u0002h\u0000\u0003f\u0014?f2;e.9f\u0018\u0013e$)e\u001c0e\n*e\n\u001bd::d;,e\r\u0007g:\'i\u0000\u001fe:&d::g\t)h0\u0003f\u00154f5\u0001h!\u000ci\u0000 f\u0008\u0010f\u0016\u0007e-\u0017i\u001f)e\u001b=h48f\u0018\u0013e<\u0000e1\u0015g\u001b8i\u0017\u001ch!(g\u000e0e=1h\'\u0006e&\u0002f-$g>\u000ee.9e$\'e0\u000ff\n%i\u0001\u0013f\u001d!f,>e?\u0003f\u0003\u0005h.8e$\u001af3\u0015h\'\u0004e.6e1\u0005d9&e:\u0017h?\u001ef\u000e%g+\u000be\r3d8>f\n%f\n\u0000e7\'e%%h?\u0010g\u0019;e\u0005%d;%f\u001d%g\u0010\u0006h.:d:\u000bd;6h\u0007*g\u00141d8-e\r\u000ee\n\u001ee\u0005,e&\u0008e&\u0008g\u001c\u001ff-#d8\ri\u0014\u0019e\u0005(f\u0016\u0007e\u0010\u0008e\u0010\u000cd;7e\u0000<" ++"e\u0008+d::g\u001b\u0011g\u001d#e\u00057d=\u0013d8\u0016g:*e\u001b\"i\u0018\u001fe\u0008\u001bd8\u001af\t?f\u000b\u0005e\"\u001ei\u0015?f\u001c\td::d?\u001df\u000c\u0001e\u0015\u0006e.6g;4d?.e\u000f0f9>e7&e\u000f3h\u0002!d;=g-\u0014f!\u0008e.\u001ei\u0019\u0005g\u00145d?!g;\u000fg\u0010\u0006g\u0014\u001fe\u0011=e.#d< d;;e\n!f-#e<\u000fg\t9h\t2d8\u000bf\u001d%e\r\u000fd<\u001ae\u000f*h\u0003=e=\u0013g\u00046i\u0007\rf\u00160e\u0005\'e.9f\u000c\u0007e/g(\u000be\u000c;g\u0016\u0017g;\u000fh?\u0007h?\u0007e\u000e;d9\u000be\t\rf\u00146e\u0005%e94e:&f\u001d\u0002e?\u0017g>\u000ed8=f\u001c\u0000i+\u0018g\u0019;i\u0019\u0006f\u001c*f\u001d%e\n e7%e\u0005\rh4#f\u0015\u0019g(\u000bg\t\u0008e\u001d\u0017h:+d=\u0013i\u0007\re:\u0006e\u0007:e\u0014.f\u0008\u0010f\u001c,e=\"e<\u000fe\u001c\u001fh1\u0006e\u0007:e\u00039d8\u001cf\u00169i\u0002.g.1e\r\u0017d:,f1\u0002h\u0001\u000ce\u000f\u0016e>\u0017h\u0001\u000cd=\rg\u001b8d?!i!5i\u001d\"e\u0008\u0006i\u0012\u001fg=\u0011i!5g!.e.\u001ae\u001b" ++">d>\u000bg=\u0011e\u001d\u0000g\'/f\u001e\u0001i\u0014\u0019h//g\u001b.g\u001a\u0004e.\u001dh4\u001df\u001c:e\u00053i#\u000ei\u0019)f\u000e\u0008f\u001d\u0003g\u0017\u0005f/\u0012e. g\t)i\u0019$d:\u0006h)\u0015h+\u0016g\u0016>g\u0017\u0005e\u000f\nf\u00176f1\u0002h4-g+\u0019g\u00029e\u0004?g+%f/\u000fe$)d8-e$.h.$h/\u0006f/\u000fd8*e$)f4%e-\u0017d=\u0013e\u000f0g\u0001#g;4f\n$f\u001c,i!5d8*f\u0000\'e.\u0018f\u00169e88h\'\u0001g\u001b8f\u001c:f\u0008\u0018g\u0015%e:\u0014e=\u0013e>\u000be8\u0008f\u00169d>?f !e\u001b-h\u0002!e8\u0002f\u0008?e1\u000bf \u000fg\u001b.e\u0011\u0018e7%e/\u000ee\u0005\u0003e<\u0015h57f\u00149e\u000f\u0018g,,e\u001b\u001bd<\u001ah.!h**f\u0018\u000ei\u001a\u0010g\'\u0001e.\u001de.\u001dh\'\u0004h\u000c\u0003f6\u0008h49e\u00051e\u0010\u000ce?\u0018h.0d=\u0013g3;e8&f\u001d%e\u0010\re-\u0017g\u0019e\n g\u001b\u001fe\u000f\u0017e\u00080d:\u000cf\t\u000be$\'i\u0007\u000ff\u0008\u0010d::f\u00150i\u0007\u000fe\u00051d:+e\u000c:e\u001f\u001fe%3e-)e\u000e\u001fe\u0008\u0019f\t\u0000e\u001c(g;\u0013f\u001d\u001fi\u0000\u001ad?!h6\u0005g:\'i\u0005\rg=.e=\u0013f\u00176d<\u0018g\'\u0000f\u0000\'f\u0004\u001ff\u0008?d:\'i\u0001\nf\u00082e\u0007:e" ++"\u000f#f\u000f\u0010d:$e01d8\u001ad?\u001de\u0001%g(\u000be:&e\u000f\u0002f\u00150d:\u000bd8\u001af\u00154d8*e11d8\u001cf\u0003\u0005f\u0004\u001fg\t9f.\ne\u0008\u0006i!\u001ef\u0010\u001ce0\u000be1\u001ed:\u000ei\u0017(f\u00087h4\"e\n!e#0i\u001f3e\u000f\ne\u00056h4\"g;\u000fe\u001d\u001af\u000c\u0001e92i\u0003(f\u0008\u0010g+\u000be\u0008)g\u001b\nh\u0000\u0003h\u0019\u0011f\u0008\u0010i\u0003=e\u000c\u0005h#\u0005g\u0014(f\u00086f/\u0014h5\u001bf\u0016\u0007f\u0018\u000ef\u000b\u001be\u0015\u0006e.\u000cf\u00154g\u001c\u001ff\u0018/g\u001ce/\u0006g\"\u000ei#\u001fg;?h\t2g(3e.\u001ag;\u0008d:\u000eg\u0014\u001fg\t)d>\u001bf1\u0002f\u0010\u001cg\u000b\u0010e\n\u001bi\u0007\u000fd8%i\u0007\rf08h?\u001ce\u0006\u0019g\u001c\u001ff\u001c\ti\u0019\u0010g+\u001ed:\te/9h1!h49g\u0014(d8\re%=g;\u001de/9e\r\u0001e\u0008\u0006d?\u0003h?\u001bg\u00029h/\u0004e=1i\u001f3d<\u0018e\n?d8\re0\u0011f,#h5\u000fe96d8\u0014" ++"f\u001c\tg\u00029f\u00169e\u0010\u0011e\u0005(f\u00160d?!g\u0014(h.>f\u0016=e=\"h1!h5\u0004f \u000ee\u0015\u0006e\u001f\u000eg;\u001fd8\u0000e\u0007:g\t\u0008f\t\u0013i\u0000 g\u0014\"e\u0013\u0001f&\u0002e\u00065g\u0014(d:\u000ed?\u001dg\u0015\u0019e\u001b g4 d8-e\u001c\u000be-\u0018e\u0002(h44e\u001b>f\u001c\u0000f\u0004\u001bi\u0015?f\u001c\u001fe\u000f#d;7g\u0010\u0006h4\"e\u001f:e\u001c0e.\tf\u000e\u0012f-&f1\ti\u0007\u000ci\u001d\"e\u0008\u001be;:e$)g):i&\u0016e\u0005\u0008e.\u000ce\u0016\u0004i)1e\n(d8\u000bi\u001d\"d8\re\u0006\rh/\u001ad?!f\u0004\u000fd9\ti\u00183e\u0005\th\u000b1e\u001b=f<\u0002d:.e\u0006\u001bd:\u000bg\u000e)e.6g>$d<\u0017e\u0006\u001cf0\u0011e\r3e\u000f/e\u0010\rg(1e.6e\u00057e\n(g\u0014;f\u00033e\u00080f3(f\u0018\u000ee0\u000fe-&f\u0000\'h\u0003=h\u0000\u0003g \u0014g!,d;6h\'\u0002g\u001c\u000bf8\u0005f%\u001af\u0010\u001eg,\u0011i&\u0016i \u0001i;\u0004i\u0007\u0011i\u0000\u0002g\u0014(f1\u001fh\u000b\u000fg\u001c\u001fe.\u001ed8;g.!i\u00186f.5h(;e\u0006\ng?;h/\u0011f\u001d\u0003e\u0008)e\u0001\u001ae%=d<P:P0P:P8P;P8Q\rQ\u0002P>P2Q\u0001P5P5P3P>P?Q\u0000P8Q\u0002P0P:P5Q\tP5Q\u0003P6P5P\u001aP0P:P1P5P7P1Q\u000bP;P>P=P8P\u0012Q\u0001P5P?P>P4P-Q\u0002P>Q\u0002P>PP=P0P3P4P5PP3P>P4P2P>Q\u0002Q\u0002P0PP2P0Q\u0001P2P0PQ\u0002Q\u0003Q\u0002P=P0P4P4P=Q\u000fP\u0012P>Q\u0002Q\u0002Q\u0000P8P=P5P9P\u0012P0Q\u0001P=P8PQ\u0002Q\u0000Q\u0003P1P\u001eP=P8PPP9P4P2P5P>P=P>Q\u0001Q\u0003P4`$\u0015`%\u0007`$9`%\u0008`$\u0015`%\u0000`$8`%\u0007`$\u0015`$>`$\u0015`%\u000b`$\u0014`$0`$*`$0`$(`%\u0007`$\u000f`$\u0015`$\u0015`$?`$-`%\u0000`$\u0007`$8`$" ++"\u0015`$0`$$`%\u000b`$9`%\u000b`$\u0006`$*`$9`%\u0000`$/`$9`$/`$>`$$`$\u0015`$%`$>jagran`$\u0006`$\u001c`$\u001c`%\u000b`$\u0005`$,`$&`%\u000b`$\u0017`$\u0008`$\u001c`$>`$\u0017`$\u000f`$9`$.`$\u0007`$(`$5`$9`$/`%\u0007`$%`%\u0007`$%`%\u0000`$\u0018`$0`$\u001c`$,`$&`%\u0000`$\u0015`$\u0008`$\u001c`%\u0000`$5`%\u0007`$(`$\u0008`$(`$\u000f`$9`$0`$\t`$8`$.`%\u0007`$\u0015`$.`$5`%\u000b`$2`%\u0007`$8`$,`$.`$\u0008`$&`%\u0007`$\u0013`$0`$\u0006`$.`$,`$8`$-`$0`$,`$(`$\u001a`$2`$.`$(`$\u0006`$\u0017`$8`%\u0000`$2`%\u0000X9Y\u0004Y\tX%Y\u0004Y\tY\u0007X0X\'X\"X.X1X9X/X/X\'Y\u0004Y\tY\u0007X0Y\u0007X5Y\u0008X1X:Y\nX1Y\u0003X\'Y\u0006Y\u0008Y\u0004X\'X(Y\nY\u0006X9X1X6X0Y\u0004Y\u0003Y\u0007Y\u0006X\'Y\nY\u0008Y\u0005Y\u0002X\'Y\u0004X9Y\u0004Y\nX\'Y\u0006X\'Y\u0004Y\u0003Y\u0006X-X*Y\tY\u0002X(Y\u0004Y\u0008X-X)X\'X.X1Y\u0001Y\u0002X7X9X(X/X1Y\u0003Y\u0006X%X0X\'Y\u0003Y\u0005X\'X\'X-X/X%Y\u0004X\'Y\u0001Y\nY\u0007X(X9X6Y\u0003Y\nY\u0001X(X-X+Y\u0008Y\u0005" ++"Y\u0006Y\u0008Y\u0007Y\u0008X#Y\u0006X\'X,X/X\'Y\u0004Y\u0007X\'X3Y\u0004Y\u0005X9Y\u0006X/Y\u0004Y\nX3X9X(X1X5Y\u0004Y\tY\u0005Y\u0006X0X(Y\u0007X\'X#Y\u0006Y\u0007Y\u0005X+Y\u0004Y\u0003Y\u0006X*X\'Y\u0004X\'X-Y\nX+Y\u0005X5X1X4X1X-X-Y\u0008Y\u0004Y\u0008Y\u0001Y\nX\'X0X\'Y\u0004Y\u0003Y\u0004Y\u0005X1X)X\'Y\u0006X*X\'Y\u0004Y\u0001X#X(Y\u0008X.X\'X5X#Y\u0006X*X\'Y\u0006Y\u0007X\'Y\u0004Y\nX9X6Y\u0008Y\u0008Y\u0002X/X\'X(Y\u0006X.Y\nX1X(Y\u0006X*Y\u0004Y\u0003Y\u0005X4X\'X!Y\u0008Y\u0007Y\nX\'X(Y\u0008Y\u0002X5X5Y\u0008Y\u0005X\'X1Y\u0002Y\u0005X#X-X/Y\u0006X-Y\u0006X9X/Y\u0005X1X#Y\nX\'X-X)Y\u0003X*X(X/Y\u0008Y\u0006Y\nX,X(Y\u0005Y\u0006Y\u0007X*X-X*X,Y\u0007X)X3Y\u0006X)Y\nX*Y\u0005Y\u0003X1X)X:X2X)Y\u0006Y\u0001X3X(Y\nX*Y\u0004Y\u0004Y\u0007Y\u0004Y\u0006X\'X*Y\u0004Y\u0003Y\u0002Y\u0004X(Y\u0004Y\u0005X\'X9Y\u0006Y\u0007X#Y\u0008Y\u0004X4Y\nX!Y\u0006Y\u0008X1X#Y\u0005X\'Y\u0001Y\nY\u0003X(Y\u0003Y\u0004X0X\'X*X1X*X(X(X#Y\u0006Y\u0007Y\u0005X3X\'Y\u0006Y\u0003X(Y\nX9Y\u0001Y\u0002X/X-X3Y\u0006Y\u0004Y\u0007Y\u0005X4X9X1X#Y\u0007Y\u0004X4Y\u0007X1Y\u0002X7X1X7Y\u0004X(" ++"profileservicedefaulthimselfdetailscontentsupportstartedmessagesuccessfashioncountryaccountcreatedstoriesresultsrunningprocesswritingobjectsvisiblewelcomearticleunknownnetworkcompanydynamicbrowserprivacyproblemServicerespectdisplayrequestreservewebsitehistoryfriendsoptionsworkingversionmillionchannelwindow.addressvisitedweathercorrectproductedirectforwardyou canremovedsubjectcontrolarchivecurrentreadinglibrarylimitedmanagerfurthersummarymachineminutesprivatecontextprogramsocietynumberswrittenenabledt" ++"riggersourcesloadingelementpartnerfinallyperfectmeaningsystemskeepingculture",journalprojectsurfaces"expiresreviewsbalanceEnglishContentthroughPlease opinioncontactaverageprimaryvillageSpanishgallerydeclinemeetingmissionpopularqualitymeasuregeneralspeciessessionsectionwriterscounterinitialreportsfiguresmembersholdingdisputeearlierexpressdigitalpictureAnothermarriedtrafficleadingchangedcentralvictoryimages/reasonsstudiesfeaturelistingmust beschoolsVersionusuallyepisodeplayinggrowingobviousoverlaypr" ++"esentactions</ul>\r\nwrapperalreadycertainrealitystorageanotherdesktopofferedpatternunusualDigitalcapitalWebsitefailureconnectreducedAndroiddecadesregular & animalsreleaseAutomatgettingmethodsnothingPopularcaptionletterscapturesciencelicensechangesEngland=1&History = new CentralupdatedSpecialNetworkrequirecommentwarningCollegetoolbarremainsbecauseelectedDeutschfinanceworkersquicklybetweenexactlysettingdiseaseSocietyweaponsexhibit<!--Controlclassescoveredoutlineattacksdevices(windowpurposetitle=\"Mob" ++"ile killingshowingItaliandroppedheavilyeffects-1\']);\nconfirmCurrentadvancesharingopeningdrawingbillionorderedGermanyrelated</form>includewhetherdefinedSciencecatalogArticlebuttonslargestuniformjourneysidebarChicagoholidayGeneralpassage,"animatefeelingarrivedpassingnaturalroughly.\n\nThe but notdensityBritainChineselack oftributeIreland\" data-factorsreceivethat isLibraryhusbandin factaffairsCharlesradicalbroughtfindinglanding:lang=\"return leadersplannedpremiumpackageAmericaEdition]"Messageneed tovalu" ++"e=\"complexlookingstationbelievesmaller-mobilerecordswant tokind ofFirefoxyou aresimilarstudiedmaximumheadingrapidlyclimatekingdomemergedamountsfoundedpioneerformuladynastyhow to SupportrevenueeconomyResultsbrothersoldierlargelycalling."AccountEdward segmentRobert effortsPacificlearnedup withheight:we haveAngelesnations_searchappliedacquiremassivegranted: falsetreatedbiggestbenefitdrivingStudiesminimumperhapsmorningsellingis usedreversevariant role=\"missingachievepromotestudentsomeoneextremerestorebotto" ++"m:evolvedall thesitemapenglishway to AugustsymbolsCompanymattersmusicalagainstserving})();\r\npaymenttroubleconceptcompareparentsplayersregionsmonitor \'\'The winningexploreadaptedGalleryproduceabilityenhancecareers). The collectSearch ancientexistedfooter handlerprintedconsoleEasternexportswindowsChannelillegalneutralsuggest_headersigning.html\">settledwesterncausing-webkitclaimedJusticechaptervictimsThomas mozillapromisepartieseditionoutside:false,hundredOlympic_buttonauthorsreachedchronicdemandssecondsprotec" ++"tadoptedprepareneithergreatlygreateroverallimprovecommandspecialsearch.worshipfundingthoughthighestinsteadutilityquarterCulturetestingclearlyexposedBrowserliberal} catchProjectexamplehide();FloridaanswersallowedEmperordefenseseriousfreedomSeveral-buttonFurtherout of != nulltrainedDenmarkvoid(0)/all.jspreventRequestStephen\n\nWhen observe</h2>\r\nModern provide\" alt=\"borders.\n\nFor \n\nMany artistspoweredperformfictiontype ofmedicalticketsopposedCouncilwitnessjusticeGeorge Belgium...</a>twitternotablywaitingwarfare" ++" Other rankingphrasesmentionsurvivescholar</p>\r\n Countryignoredloss ofjust asGeorgiastrange<head><stopped1\']);\r\nislandsnotableborder:list ofcarried100,000</h3>\n severalbecomesselect wedding00.htmlmonarchoff theteacherhighly biologylife ofor evenrise of»plusonehunting(thoughDouglasjoiningcirclesFor theAncientVietnamvehiclesuch ascrystalvalue =Windowsenjoyeda smallassumed<a id=\"foreign All rihow theDisplayretiredhoweverhidden;battlesseekingcabinetwas notlook atconductget theJanuaryhappensturninga:hoverO" ++"nline French lackingtypicalextractenemieseven ifgeneratdecidedare not/searchbeliefs-image:locatedstatic.login\">convertviolententeredfirst\">circuitFinlandchemistshe was10px;\">as suchdivided</span>will beline ofa greatmystery/index.fallingdue to railwaycollegemonsterdescentit withnuclearJewish protestBritishflowerspredictreformsbutton who waslectureinstantsuicidegenericperiodsmarketsSocial fishingcombinegraphicwinners<br /><by the NaturalPrivacycookiesoutcomeresolveSwedishbrieflyPersianso muchCenturydepictsco" ++"lumnshousingscriptsnext tobearingmappingrevisedjQuery(-width:title\">tooltipSectiondesignsTurkishyounger.match(})();\n\nburningoperatedegreessource=Richardcloselyplasticentries</tr>\r\ncolor:#ul id=\"possessrollingphysicsfailingexecutecontestlink toDefault<br />\n: true,chartertourismclassicproceedexplain</h1>\r\nonline.?xml vehelpingdiamonduse theairlineend -->).attr(readershosting#ffffffrealizeVincentsignals src=\"/ProductdespitediversetellingPublic held inJoseph theatreaffects<style>a largedoesn\'tlater, Elementfav" ++"iconcreatorHungaryAirportsee theso thatMichaelSystemsPrograms, and width=e"tradingleft\">\npersonsGolden Affairsgrammarformingdestroyidea ofcase ofoldest this is.src = cartoonregistrCommonsMuslimsWhat isin manymarkingrevealsIndeed,equally/show_aoutdoorescape(Austriageneticsystem,In the sittingHe alsoIslandsAcademy\n\t\t<!--Daniel bindingblock\">imposedutilizeAbraham(except{width:putting).html(|| [];\nDATA[ *kitchenmountedactual dialectmainly _blank\'installexpertsif(typeIt also© \">Termsborn inOptionseast" ++"erntalkingconcerngained ongoingjustifycriticsfactoryits ownassaultinvitedlastinghis ownhref=\"/\" rel=\"developconcertdiagramdollarsclusterphp?id=alcohol);})();using a><span>vesselsrevivalAddressamateurandroidallegedillnesswalkingcentersqualifymatchesunifiedextinctDefensedied in\n\t<!-- customslinkingLittle Book ofeveningmin.js?are thekontakttoday\'s.html\" target=wearingAll Rig;\n})();raising Also, crucialabout\">declare-->\n<scfirefoxas muchappliesindex, s, but type = \n\r\n<!--towardsRecordsPrivateForeignPremierchoic" ++"esVirtualreturnsCommentPoweredinline;povertychamberLiving volumesAnthonylogin\" RelatedEconomyreachescuttinggravitylife inChapter-shadowNotable</td>\r\n returnstadiumwidgetsvaryingtravelsheld bywho arework infacultyangularwho hadairporttown of\n\nSome \'click\'chargeskeywordit willcity of(this);Andrew unique checkedor more300px; return;rsion=\"pluginswithin herselfStationFederalventurepublishsent totensionactresscome tofingersDuke ofpeople,exploitwhat isharmonya major\":\"httpin his menu\">\nmonthlyofficercouncilgainin" ++"geven inSummarydate ofloyaltyfitnessand wasemperorsupremeSecond hearingRussianlongestAlbertalateralset of small\">.appenddo withfederalbank ofbeneathDespiteCapitalgrounds), and percentit fromclosingcontainInsteadfifteenas well.yahoo.respondfighterobscurereflectorganic= Math.editingonline paddinga wholeonerroryear ofend of barrierwhen itheader home ofresumedrenamedstrong>heatingretainscloudfrway of March 1knowingin partBetweenlessonsclosestvirtuallinks\">crossedEND -->famous awardedLicenseHealth fairly wealthy" ++"minimalAfricancompetelabel\">singingfarmersBrasil)discussreplaceGregoryfont copursuedappearsmake uproundedboth ofblockedsaw theofficescoloursif(docuwhen heenforcepush(fuAugust UTF-8\">Fantasyin mostinjuredUsuallyfarmingclosureobject defenceuse of Medical<body>\nevidentbe usedkeyCodesixteenIslamic#000000entire widely active (typeofone cancolor =speakerextendsPhysicsterrain<tbody>funeralviewingmiddle cricketprophetshifteddoctorsRussell targetcompactalgebrasocial-bulk ofman and</td>\n he left).val()false);logicalb" ++"ankinghome tonaming Arizonacredits);\n});\nfounderin turnCollinsbefore But thechargedTitle\">CaptainspelledgoddessTag -->Adding:but wasRecent patientback in=false&Lincolnwe knowCounterJudaismscript altered\']);\n has theunclearEvent\',both innot all\n\n<!-- placinghard to centersort ofclientsstreetsBernardassertstend tofantasydown inharbourFreedomjewelry/about..searchlegendsis mademodern only ononly toimage\" linear painterand notrarely acronymdelivershorter00&as manywidth=\"/* <![Ctitle =of the lowest picked es" ++"capeduses ofpeoples PublicMatthewtacticsdamagedway forlaws ofeasy to windowstrong simple}catch(seventhinfoboxwent topaintedcitizenI don\'tretreat. Some ww.\");\nbombingmailto:made in. Many carries||{};wiwork ofsynonymdefeatsfavoredopticalpageTraunless sendingleft\"><comScorAll thejQuery.touristClassicfalse\" Wilhelmsuburbsgenuinebishops.split(global followsbody ofnominalContactsecularleft tochiefly-hidden-banner</li>\n\n. When in bothdismissExplorealways via thespaC1olwelfareruling arrangecaptainhis sonrule ofhe " ++"tookitself,=0&(calledsamplesto makecom/pagMartin Kennedyacceptsfull ofhandledBesides//--></able totargetsessencehim to its by common.mineralto takeways tos.org/ladvisedpenaltysimple:if theyLettersa shortHerbertstrikes groups.lengthflightsoverlapslowly lesser social </p>\n\t\tit intoranked rate oful>\r\n attemptpair ofmake itKontaktAntoniohaving ratings activestreamstrapped\").css(hostilelead tolittle groups,Picture-->\r\n\r\n rows=\" objectinverse<footerCustomV><\\/scrsolvingChamberslaverywoundedwhereas!= \'undfor " ++"allpartly -right:Arabianbacked centuryunit ofmobile-Europe,is homerisk ofdesiredClintoncost ofage of become none ofp"Middle ead\')[0Criticsstudios>©group\">assemblmaking pressedwidget.ps:\" ? rebuiltby someFormer editorsdelayedCanonichad thepushingclass=\"but arepartialBabylonbottom carrierCommandits useAs withcoursesa thirddenotesalso inHouston20px;\">accuseddouble goal ofFamous ).bind(priests Onlinein Julyst + \"gconsultdecimalhelpfulrevivedis veryr\'+\'iptlosing femalesis alsostringsdays ofarrivalfutur" ++"e <objectforcingString(\" />\n\t\there isencoded. The balloondone by/commonbgcolorlaw of Indianaavoidedbut the2px 3pxjquery.after apolicy.men andfooter-= true;for usescreen.Indian image =family,http://  driverseternalsame asnoticedviewers})();\n is moreseasonsformer the newis justconsent Searchwas thewhy theshippedbr><br>width: height=made ofcuisineis thata very Admiral fixed;normal MissionPress, ontariocharsettry to invaded=\"true\"spacingis mosta more totallyfall of});\r\n immensetime inset outsatisfyto fin" ++"ddown tolot of Playersin Junequantumnot thetime todistantFinnishsrc = (single help ofGerman law andlabeledforestscookingspace\">header-well asStanleybridges/globalCroatia About [0];\n it, andgroupedbeing a){throwhe madelighterethicalFFFFFF\"bottom\"like a employslive inas seenprintermost ofub-linkrejectsand useimage\">succeedfeedingNuclearinformato helpWomen\'sNeitherMexicanprotein<table by manyhealthylawsuitdevised.push({sellerssimply Through.cookie Image(older\">us.js\"> Since universlarger open to!-- endlies in" ++"\']);\r\n marketwho is (\"DOMComanagedone fortypeof Kingdomprofitsproposeto showcenter;made itdressedwere inmixtureprecisearisingsrc = \'make a securedBaptistvoting \n\t\tvar March 2grew upClimate.removeskilledway the</head>face ofacting right\">to workreduceshas haderectedshow();action=book ofan area== \"htt<header\n<html>conformfacing cookie.rely onhosted .customhe wentbut forspread Family a meansout theforums.footage\">MobilClements\" id=\"as highintense--><!--female is seenimpliedset thea stateand hisfastestbesidesb" ++"utton_bounded\"><img Infoboxevents,a youngand areNative cheaperTimeoutand hasengineswon the(mostlyright: find a -bottomPrince area ofmore ofsearch_nature,legallyperiod,land ofor withinducedprovingmissilelocallyAgainstthe wayk"px;\">\r\npushed abandonnumeralCertainIn thismore inor somename isand, incrownedISBN 0-createsOctobermay notcenter late inDefenceenactedwish tobroadlycoolingonload=it. TherecoverMembersheight assumes<html>\npeople.in one =windowfooter_a good reklamaothers,to this_cookiepanel\">London,de" ++"finescrushedbaptismcoastalstatus title\" move tolost inbetter impliesrivalryservers SystemPerhapses and contendflowinglasted rise inGenesisview ofrising seem tobut in backinghe willgiven agiving cities.flow of Later all butHighwayonly bysign ofhe doesdiffersbattery&lasinglesthreatsintegertake onrefusedcalled =US&See thenativesby thissystem.head of:hover,lesbiansurnameand allcommon/header__paramsHarvard/pixel.removalso longrole ofjointlyskyscraUnicodebr />\r\nAtlantanucleusCounty,purely count\">easily bui" ++"ld aonclicka givenpointerh"events else {\nditionsnow the, with man whoorg/Webone andcavalryHe diedseattle00,000 {windowhave toif(windand itssolely m"renewedDetroitamongsteither them inSenatorUs</a><King ofFrancis-produche usedart andhim andused byscoringat hometo haverelatesibilityfactionBuffalolink\"><what hefree toCity ofcome insectorscountedone daynervoussquare };if(goin whatimg\" alis onlysearch/tuesdaylooselySolomonsexual - <a hrmedium\"DO NOT France,with a war andsecond take a >\r\n\r\n\r\nmarket.high" ++"waydone inctivity\"last\">obligedrise to\"undefimade to Early praisedin its for hisathleteJupiterYahoo! termed so manyreally s. The a woman?value=direct right\" bicycleacing=\"day andstatingRather,higher Office are nowtimes, when a pay foron this-link\">;borderaround annual the Newput the.com\" takin toa brief(in thegroups.; widthenzymessimple in late{returntherapya pointbanninginks\">\n();\" rea place\\u003Caabout atr>\r\n\t\tccount gives a<SCRIPTRailwaythemes/toolboxById(\"xhumans,watchesin some if (wicoming formats Unde" ++"r but hashanded made bythan infear ofdenoted/iframeleft involtagein eacha"base ofIn manyundergoregimesaction </p>\r\n<ustomVa;></importsor thatmostly &re size=\"</a></ha classpassiveHost = WhetherfertileVarious=[];(fucameras/></td>acts asIn some>\r\n\r\n<!organis <br />BeijingcatalC deutscheuropeueuskaragaeilgesvenskaespaC1amensajeusuariotrabajomC)xicopC!ginasiempresistemaoctubreduranteaC1adirempresamomentonuestroprimeratravC)sgraciasnuestraprocesoestadoscalidadpersonanC:meroacuerdomC:sicamiembrooferta" ++"salgunospaC-sesejemploderechoademC!sprivadoagregarenlacesposiblehotelessevillaprimeroC:ltimoeventosarchivoculturamujeresentradaanuncioembargomercadograndesestudiomejoresfebrerodiseC1oturismocC3digoportadaespaciofamiliaantoniopermiteguardaralgunaspreciosalguiensentidovisitastC-tuloconocersegundoconsejofranciaminutossegundatenemosefectosmC!lagasesiC3nrevistagranadacompraringresogarcC-aacciC3necuadorquienesinclusodeberC!materiahombresmuestrapodrC-amaC1anaC:ltimaestamosoficialtambienningC:nsaludospodemosmejorar" ++"positionbusinesshomepagesecuritylanguagestandardcampaignfeaturescategoryexternalchildrenreservedresearchexchangefavoritetemplatemilitaryindustryservicesmaterialproductsz-index:commentssoftwarecompletecalendarplatformarticlesrequiredmovementquestionbuildingpoliticspossiblereligionphysicalfeedbackregisterpicturesdisabledprotocolaudiencesettingsactivityelementslearninganythingabstractprogressoverviewmagazineeconomictrainingpressurevarious <strong>propertyshoppingtogetheradvancedbehaviordownloadfeaturedfootball" ++"selectedLanguagedistanceremembertrackingpasswordmodifiedstudentsdirectlyfightingnortherndatabasefestivalbreakinglocationinternetdropdownpracticeevidencefunctionmarriageresponseproblemsnegativeprogramsanalysisreleasedbanner\">purchasepoliciesregionalcreativeargumentbookmarkreferrerchemicaldivisioncallbackseparateprojectsconflicthardwareinterestdeliverymountainobtained= false;for(var acceptedcapacitycomputeridentityaircraftemployedproposeddomesticincludesprovidedhospitalverticalcollapseapproachpartnerslogo\"><a" ++"daughterauthor\" culturalfamilies/images/assemblypowerfulteachingfinisheddistrictcriticalcgi-bin/purposesrequireselectionbecomingprovidesacademicexerciseactuallymedicineconstantaccidentMagazinedocumentstartingbottom\">observed: "extendedpreviousSoftwarecustomerdecisionstrengthdetailedslightlyplanningtextareacurrencyeveryonestraighttransferpositiveproducedheritageshippingabsolutereceivedrelevantbutton\" violenceanywherebenefitslaunchedrecentlyalliancefollowedmultiplebulletinincludedoccurredinternal$(this)." ++"republic><tr><tdcongressrecordedultimatesolution<ul id=\"discoverHome</a>websitesnetworksalthoughentirelymemorialmessagescontinueactive\">somewhatvictoriaWestern title=\"LocationcontractvisitorsDownloadwithout right\">\nmeasureswidth = variableinvolvedvirginianormallyhappenedaccountsstandingnationalRegisterpreparedcontrolsaccuratebirthdaystrategyofficialgraphicscriminalpossiblyconsumerPersonalspeakingvalidateachieved.jpg\" />machines</h2>\n keywordsfriendlybrotherscombinedoriginalcomposedexpectedadequatepakistan" ++"follow\" valuable</label>relativebringingincreasegovernorplugins/List of Header\">\" name=\" ("graduate</head>\ncommercemalaysiadirectormaintain;height:schedulechangingback to catholicpatternscolor: #greatestsuppliesreliable</ul>\n\t\t<select citizensclothingwatching<li id=\"specificcarryingsentence<center>contrastthinkingcatch(e)southernMichael merchantcarouselpadding:interior.split(\"lizationOctober ){returnimproved-->\n\ncoveragechairman.png\" />subjectsRichard whateverprobablyrecoverybaseballjudgmentconnect." ++".css\" /> websitereporteddefault\"/></a>\r\nelectricscotlandcreationquantity. ISBN 0did not instance-search-\" lang=\"speakersComputercontainsarchivesministerreactiondiscountItalianocriteriastrongly: \'http:\'script\'coveringofferingappearedBritish identifyFacebooknumerousvehiclesconcernsAmericanhandlingdiv id=\"William provider_contentaccuracysection andersonflexibleCategorylawrence<script>layout=\"approved maximumheader\"></table>Serviceshamiltoncurrent canadianchannels/themes//articleoptionalportugalvalue=\"\"interval" ++"wirelessentitledagenciesSearch\" measuredthousandspending…new Date\" size=\"pageNamemiddle\" \" /></a>hidden\">sequencepersonaloverflowopinionsillinoislinks\">\n\t<title>versionssaturdayterminalitempropengineersectionsdesignerproposal=\"false\"EspaC1olreleasessubmit\" er"additionsymptomsorientedresourceright\"><pleasurestationshistory.leaving border=contentscenter\">.\n\nSome directedsuitablebulgaria.show();designedGeneral conceptsExampleswilliamsOriginal\"><span>search\">operatorrequestsa "allowingDocument" ++"revision. \n\nThe yourselfContact michiganEnglish columbiapriorityprintingdrinkingfacilityreturnedContent officersRussian generate-8859-1\"indicatefamiliar qualitymargin:0 contentviewportcontacts-title\">portable.length eligibleinvolvesatlanticonload=\"default.suppliedpaymentsglossary\n\nAfter guidance</td><tdencodingmiddle\">came to displaysscottishjonathanmajoritywidgets.clinicalthailandteachers<head>\n\taffectedsupportspointer;toString</small>oklahomawill be investor0\" alt=\"holidaysResourcelicensed (which . After " ++"considervisitingexplorerprimary search\" android\"quickly meetingsestimate;return ;color:# height=approval, " checked.min.js\"magnetic></a></hforecast. While thursdaydvertiseéhasClassevaluateorderingexistingpatients Online coloradoOptions\"campbell<!-- end</span><<br />\r\n_popups|sciences," quality Windows assignedheight: <b classle" value=\" Companyexamples<iframe believespresentsmarshallpart of properly).\n\nThe taxonomymuch of </span>\n\" data-srtuguC*sscrollTo project<head>\r\nattorneyemphasis" ++"sponsorsfancyboxworld\'s wildlifechecked=sessionsprogrammpx;font- Projectjournalsbelievedvacationthompsonlightingand the special border=0checking</tbody><button Completeclearfix\n<head>\narticle <sectionfindingsrole in popular Octoberwebsite exposureused to changesoperatedclickingenteringcommandsinformed numbers </div>creatingonSubmitmarylandcollegesanalyticlistingscontact.loggedInadvisorysiblingscontent\"s")s. This packagescheckboxsuggestspregnanttomorrowspacing=icon.pngjapanesecodebasebutton\">gambling" ++"such as , while </span> missourisportingtop:1px .</span>tensionswidth=\"2lazyloadnovemberused in height=\"cript\">\n </<tr><td height:2/productcountry include footer\" <!-- title\"></jquery.</form>\n(g.\u0000d=\u0013)(g9\u0001i+\u0014)hrvatskiitalianoromC\"nD\u0003tC<rkC\'eX\'X1X/Y\u0008tambiC)nnoticiasmensajespersonasderechosnacionalserviciocontactousuariosprogramagobiernoempresasanunciosvalenciacolombiadespuC)sdeportesproyectoproductopC:bliconosotroshistoriapresentemillonesmediantepreguntaanteriorrecursosproblemasantiagonuestrosopiniC3n" ++"imprimirmientrasamC)ricavendedorsociedadrespectorealizarregistropalabrasinterC)sentoncesespecialmiembrosrealidadcC3rdobazaragozapC!ginassocialesbloqueargestiC3nalquilersistemascienciascompletoversiC3ncompletaestudiospC:blicaobjetivoalicantebuscadorcantidadentradasaccionesarchivossuperiormayorC-aalemaniafunciC3nC:ltimoshaciendoaquellosediciC3nfernandoambientefacebooknuestrasclientesprocesosbastantepresentareportarcongresopublicarcomerciocontratojC3venesdistritotC)cnicaconjuntoenergC-atrabajarasturiasreciente" ++"utilizarboletC-nsalvadorcorrectatrabajosprimerosnegocioslibertaddetallespantallaprC3ximoalmerC-aanimalesquiC)nescorazC3nsecciC3nbuscandoopcionesexteriorconceptotodavC-agalerC-aescribirmedicinalicenciaconsultaaspectoscrC-ticadC3laresjusticiadeberC!nperC-odonecesitamantenerpequeC1orecibidatribunaltenerifecanciC3ncanariasdescargadiversosmallorcarequieretC)cnicodeberC-aviviendafinanzasadelantefuncionaconsejosdifC-cilciudadesantiguasavanzadatC)rminounidadessC!nchezcampaC1asoftonicrevistascontienesectoresmomentos" ++"facultadcrC)ditodiversassupuestofactoressegundospequeC1aP3P>P4P0P5Q\u0001P;P8P5Q\u0001Q\u0002Q\u000cP1Q\u000bP;P>P1Q\u000bQ\u0002Q\u000cQ\rQ\u0002P>P<P\u0015Q\u0001P;P8Q\u0002P>P3P>P<P5P=Q\u000fP2Q\u0001P5Q\u0005Q\rQ\u0002P>P9P4P0P6P5P1Q\u000bP;P8P3P>P4Q\u0003P4P5P=Q\u000cQ\rQ\u0002P>Q\u0002P1Q\u000bP;P0Q\u0001P5P1Q\u000fP>P4P8P=Q\u0001P5P1P5P=P0P4P>Q\u0001P0P9Q\u0002Q\u0004P>Q\u0002P>P=P5P3P>Q\u0001P2P>P8Q\u0001P2P>P9P8P3Q\u0000Q\u000bQ\u0002P>P6P5P2Q\u0001P5P<Q\u0001P2P>Q\u000eP;P8Q\u0008Q\u000cQ\rQ\u0002P8Q\u0005P?P>P:P0P4P=P5P9P4P>P<P0P<P8Q\u0000P0P;P8P1P>Q\u0002P5P<Q\u0003Q\u0005P>Q\u0002Q\u000fP4P2Q\u0003Q\u0005Q\u0001P5Q\u0002P8P;Q\u000eP4P8P4P5P;P>P<P8Q\u0000P5Q\u0002P5P1Q\u000fQ\u0001P2P>P5P2P8P4P5Q\u0007P5P3P>Q\rQ\u0002P8P<Q\u0001Q\u0007P5Q\u0002Q\u0002P5P<Q\u000bQ\u0006P5P=Q\u000bQ\u0001Q\u0002P0P;P2P5P4Q\u000cQ\u0002P5P<P5P2P>P4Q\u000bQ\u0002P5P1P5" ++"P2Q\u000bQ\u0008P5P=P0P<P8Q\u0002P8P?P0Q\u0002P>P<Q\u0003P?Q\u0000P0P2P;P8Q\u0006P0P>P4P=P0P3P>P4Q\u000bP7P=P0Q\u000eP<P>P3Q\u0003P4Q\u0000Q\u0003P3P2Q\u0001P5P9P8P4P5Q\u0002P:P8P=P>P>P4P=P>P4P5P;P0P4P5P;P5Q\u0001Q\u0000P>P:P8Q\u000eP=Q\u000fP2P5Q\u0001Q\u000cP\u0015Q\u0001Q\u0002Q\u000cQ\u0000P0P7P0P=P0Q\u0008P8X\'Y\u0004Y\u0004Y\u0007X\'Y\u0004X*Y\nX,Y\u0005Y\nX9X.X\'X5X)X\'Y\u0004X0Y\nX9Y\u0004Y\nY\u0007X,X/Y\nX/X\'Y\u0004X\"Y\u0006X\'Y\u0004X1X/X*X-Y\u0003Y\u0005X5Y\u0001X-X)Y\u0003X\'Y\u0006X*X\'Y\u0004Y\u0004Y\nY\nY\u0003Y\u0008Y\u0006X4X(Y\u0003X)Y\u0001Y\nY\u0007X\'X(Y\u0006X\'X*X-Y\u0008X\'X!X#Y\u0003X+X1X.Y\u0004X\'Y\u0004X\'Y\u0004X-X(X/Y\u0004Y\nY\u0004X/X1Y\u0008X3X\'X6X:X7X*Y\u0003Y\u0008Y\u0006Y\u0007Y\u0006X\'Y\u0003X3X\'X-X)Y\u0006X\'X/Y\nX\'Y\u0004X7X(X9Y\u0004Y\nY\u0003X4Y\u0003X1X\'Y\nY\u0005Y\u0003Y\u0006Y\u0005Y\u0006Y\u0007X\'X4X1Y\u0003X)X1X&Y\nX3Y\u0006X4Y\nX7Y\u0005X\'X0X\'X\'Y\u0004Y\u0001Y\u0006X4X(X\'X(X*X9X(X1X1X-Y\u0005X)" ++"Y\u0003X\'Y\u0001X)Y\nY\u0002Y\u0008Y\u0004Y\u0005X1Y\u0003X2Y\u0003Y\u0004Y\u0005X)X#X-Y\u0005X/Y\u0002Y\u0004X(Y\nY\nX9Y\u0006Y\nX5Y\u0008X1X)X7X1Y\nY\u0002X4X\'X1Y\u0003X,Y\u0008X\'Y\u0004X#X.X1Y\tY\u0005X9Y\u0006X\'X\'X(X-X+X9X1Y\u0008X6X(X4Y\u0003Y\u0004Y\u0005X3X,Y\u0004X(Y\u0006X\'Y\u0006X.X\'Y\u0004X/Y\u0003X*X\'X(Y\u0003Y\u0004Y\nX)X(X/Y\u0008Y\u0006X#Y\nX6X\'Y\nY\u0008X,X/Y\u0001X1Y\nY\u0002Y\u0003X*X(X*X#Y\u0001X6Y\u0004Y\u0005X7X(X.X\'Y\u0003X+X1X(X\'X1Y\u0003X\'Y\u0001X6Y\u0004X\'X-Y\u0004Y\tY\u0006Y\u0001X3Y\u0007X#Y\nX\'Y\u0005X1X/Y\u0008X/X#Y\u0006Y\u0007X\'X/Y\nY\u0006X\'X\'Y\u0004X\'Y\u0006Y\u0005X9X1X6X*X9Y\u0004Y\u0005X/X\'X.Y\u0004Y\u0005Y\u0005Y\u0003Y\u0006\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0002\u0000\u0002\u0000\u0002\u0000\u0002\u0000\u0004\u0000\u0004\u0000\u0004\u0000\u0004\u0000\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0007\u0006\u0005\u0004\u0003\u0002\u0001\u0000\u0008\t\n\u000b\u000c\r\u000e\u000f\u000f\u000e\r\u000c\u000b\n\t\u0008\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0017\u0016\u0015\u0014\u0013\u0012\u0011\u0010\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f\u001f\u001e\u001d\u001c\u001b\u001a\u0019\u0018\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0002\u0000\u0000\u0000\u0002\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0003\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0008\u0000\u0008\u0000\u0008\u0000\u0008\u0000\u0000\u0000\u0001\u0000\u0002\u0000\u0003\u0000\u0004\u0000\u0005\u0000\u0006\u0000\u0007" ++"resourcescountriesquestionsequipmentcommunityavailablehighlightDTD/xhtmlmarketingknowledgesomethingcontainerdirectionsubscribeadvertisecharacter\" value=\"</select>Australia\" class=\"situationauthorityfollowingprimarilyoperationchallengedevelopedanonymousfunction functionscompaniesstructureagreement\" title=\"potentialeducationargumentssecondarycopyrightlanguagesexclusivecondition</form>\r\nstatementattentionBiography} else {\nsolutionswhen the Analyticstemplatesdangeroussatellitedocumentspublisherimportantprototyp" ++"einfluence»</effectivegenerallytransformbeautifultransportorganizedpublishedprominentuntil thethumbnailNational .focus();over the migrationannouncedfooter\">\nexceptionless thanexpensiveformationframeworkterritoryndicationcurrentlyclassNamecriticismtraditionelsewhereAlexanderappointedmaterialsbroadcastmentionedaffiliate</option>treatmentdifferent/default.Presidentonclick=\"biographyotherwisepermanentFranC\'aisHollywoodexpansionstandards</style>\nreductionDecember preferredCambridgeopponentsBusiness confusi" ++"on>\n<title>presentedexplaineddoes not worldwideinterfacepositionsnewspaper</table>\nmountainslike the essentialfinancialselectionaction=\"/abandonedEducationparseInt(stabilityunable to\nrelationsNote thatefficientperformedtwo yearsSince thethereforewrapper\">alternateincreasedBattle ofperceivedtrying tonecessaryportrayedelectionsElizabethdiscoveryinsurances.length;legendaryGeographycandidatecorporatesometimesservices.inheritedCommunityreligiouslocationsCommitteebuildingsthe worldno lon" ++"gerbeginningreferencecannot befrequencytypicallyinto the relative;recordingpresidentinitiallytechniquethe otherit can beexistenceunderlinethis timetelephoneitemscopepracticesadvantage);return For otherprovidingdemocracyboth the extensivesufferingsupportedcomputers functionpracticalsaid thatit may beEnglish\nsuspectedmargin: 0spiritual\n\nmicrosoftgraduallydiscussedhe becameexecutivejquery.jshouseholdconfirmedpurchasedliterallydestroyedup to thevariationremainingit is" ++" notcenturiesJapanese among thecompletedalgorithminterestsrebellionundefinedencourageresizableinvolvingsensitiveuniversalprovision(althoughfeaturingconducted), which continued-header\">February numerous overflow:componentfragmentsexcellentcolspan=\"technicalnear the Advanced source ofexpressedHong Kong Facebookmultiple mechanismelevationoffensive\n\tsponsoreddocument.or "there arethose whomovementsprocessesdifficultsubmittedrecommendconvincedpromoting\" width=\".replace(classicalcoalitionhis firstdeci" ++"sionsassistantindicatedevolution-wrapper\"enough toalong thedelivered-->\r\n\n\r\n
Archbishop class=\"nobeing usedapproachesprivilegesnoscript>\nresults inmay be theEaster eggmechanismsreasonablePopulationCollectionselected\">noscript>\r/index.phparrival of-jssdk\'));managed toincompletecasualtiescompletionChristiansSeptember arithmeticproceduresmight haveProductionit appears" ++"Philosophyfriendshipleading togiving thetoward theguaranteeddocumentedcolor:#000video gamecommissionreflectingchange theassociatedsans-serifonkeypress; padding:He was theunderlyingtypically , and the srcElementsuccessivesince the should be networkingaccountinguse of thelower thanshows that\n\t\tcomplaintscontinuousquantitiesastronomerhe did notdue to itsapplied toan averageefforts tothe futureattempt toTherefore,capabilityRepublicanwas formedElectronickilometerschallengespublishingthe formerindigenousdi" ++"rectionssubsidiaryconspiracydetails ofand in theaffordablesubstancesreason forconventionitemtype=\"absolutelysupposedlyremained aattractivetravellingseparatelyfocuses onelementaryapplicablefound thatstylesheetmanuscriptstands for no-repeat(sometimesCommercialin Americaundertakenquarter ofan examplepersonallyindex.php?\npercentagebest-knowncreating a\" dir=\"ltrLieutenant\n
is said tostructuralreferendummost oftena separate->\n
soundtracksearchFormtend to beinput id=\"opening ofrestrictedadopted byaddressingtheologianmethods ofvariant ofChristian very largeautomotiveby far therange frompursuit offollow thebrought toin Englandagree thataccused ofcomes frompreventingdiv style=his or hertremendousfreedom ofconcerning0 1em 1em;Basketball/style.cssan earliereven after/\" title=\".com/indextaking thepittsburghcontent\">\rimplementedcan be seenthere was ademonstratecontainer\">connectionsthe Britishwas written!important;px; margin-followed byability to complicatedduring the immigrationalso called

\n

acquisitioncalled the persecutiondesignation{font-size:appeared ininvestigateexperiencedmost likelywide" ++"ly useddiscussionspresence of (document.extensivelyIt has beenit does notcontrary toinhabitantsimprovementscholarshipconsumptioninstructionfor exampleone or morepx; paddingthe currenta series ofare usuallyrole in thepreviously derivativesevidence ofexperiencescolorschemestated thatcertificate
\n selected=\"high schoolresponse tocomfortableadoption ofthree yearsthe countryin Februaryso that thepeople who provided by\nhaving been\r\n\r\n< "The compilationhe had beenproduced byphilosopherconstructedintended toamong othercompared toto say thatEngineeringa differentreferred todifferencesbelief thatphotographsidentifyingHistory of Republic ofnecessarilyprobabilitytechnicallyleaving thespectacularfraction ofelectricityhead of therestaurantspartnershipemphasis onmost recentshare" ++" with saying thatfilled withdesigned toit is often\">as follows:merged withthrough thecommercial pointed outopportunityview of therequirementdivision ofprogramminghe receivedsetInterval\">maintainingChristopherMuch of thewritings of\" height=\"2size of theversion of mixture of between theExamples ofeducationalcompetitive onsubmit=\"director of" ++"distinctive/DTD XHTML relating totendency toprovince ofwhich woulddespite thescientific legislature.innerHTML allegationsAgriculturewas used inapproach tointelligentyears later,sans-serifdeterminingPerformanceappearances, which is foundationsabbreviatedhigher thans from the individual composed ofsupposed toclaims thatattributionfont-size:1elements ofHistorical his brotherat the timeanniversarygoverned byrelated to ultimately innovationsit is stillcan only bedefinitionstoGMTStringA number ofimg class=\"Eventu" ++"ally,was changedoccurred inneighboringdistinguishwhen he wasintroducingterrestrialMany of theargues thatan Americanconquest ofwidespread were killedscreen and In order toexpected todescendantsare locatedlegislativegenerations backgroundmost peopleyears afterthere is nothe highestfrequently they do notargued thatshowed thatpredominanttheologicalby the timeconsideringshort-livedcan be usedvery littleone of the had alreadyinterpretedcommunicatefeatures ofgovernment,entered the\" height=\"3I" ++"ndependentpopulationslarge-scale. Although used in thedestructionpossibilitystarting intwo or moreexpressionssubordinatelarger thanhistory and\r\nContinentaleliminatingwill not bepractice ofin front ofsite of theensure thatto create amississippipotentiallyoutstandingbetter thanwhat is nowsituated inmeta name=\"TraditionalsuggestionsTranslationthe form ofatmosphericideologicalenterprisescalculatingeast of theremnants ofpluginspage/index.php?remained intransformedHe was alsowas alreadystatisticalin favo" ++"r ofMinistry ofmovement offormulationis required\nquestion ofwas electedto become abecause of some peoplein" ++"spired bysuccessful a time whenmore commonamongst thean officialwidth:100%;technology,was adoptedto keep thesettlementslive birthsindex.html\"Connecticutassigned to&times;account foralign=rightthe companyalways beenreturned toinvolvementBecause thethis period\" name=\"q\" confined toa result ofvalue=\"\" />is actuallyEnvironment\r\n\r\nConversely,>\n
this is notthe presentif they areand finallya matter of\r\n\t
\r\n\r\nfaster thanmajority ofafter whichcomparativeto maintainimprove theawarded theer\" class=\"frameborderrestorationin the sameanalysis oftheir firstDuring the continentalsequence offunction(){font-size: work on the\nadopted theproperty ofdirected byeffectivelywas broughtchildren ofProgramminglonger thanmanuscriptswar again" ++"stby means ofand most ofsimilar to proprietaryoriginatingprestigiousgrammaticalexperience.to make theIt was alsois found incompetitorsin the U.S.replace thebrought thecalculationfall of thethe generalpracticallyin honor ofreleased inresidentialand some ofking of thereaction to1st Earl ofculture andprincipally\n they can beback to thesome of hisexposure toare similarform of theaddFavoritecitizenshippart in thepeople within practiceto continue&minus;approved by the first allowed theand for thefunc" ++"tioningplaying thesolution toheight=\"0\" in his bookmore than afollows thecreated thepresence in nationalistthe idea ofa characterwere forced class=\"btndays of thefeatured inshowing theinterest inin place ofturn of thethe head ofLord of thepoliticallyhas its ownEducationalapproval ofsome of theeach other,behavior ofand becauseand anotherappeared onrecorded inblack"may includethe world\'scan lead torefers to aborder=\"0\" government winning theresulted in while the Washington,the subjectcity in th" ++"e>\r\n\t\treflect theto completebecame moreradioactiverejected bywithout anyhis father,which couldcopy of theto indicatea politicalaccounts ofconstitutesworked wither
of his lifeaccompaniedclientWidthprevent theLegislativedifferentlytogether inhas severalfor anothertext of thefounded thee with the is used forchanged theusually theplace wherewhereas the> \nHowever thelead to the\tThe currentthe site ofs" ++"ubstantialexperience,in the Westthey shouldslovenD\rinacomentariosuniversidadcondicionesactividadesexperienciatecnologC-aproducciC3npuntuaciC3naplicaciC3ncontraseC1acategorC-asregistrarseprofesionaltratamientoregC-stratesecretarC-aprincipalesprotecciC3nimportantesimportanciaposibilidadinteresantecrecimientonecesidadessuscribirseasociaciC3ndisponiblesevaluaciC3nestudiantesresponsableresoluciC3nguadalajararegistradosoportunidadcomercialesfotografC-aautoridadesingenierC-atelevisiC3ncompetenciaoperacionesestable" ++"cidosimplementeactualmentenavegaciC3nconformidadline-height:font-family:\" : \"http://applicationslink\" href=\"specifically//\n/index.html\"window.open( !important;application/independence//www.googleorganizationautocompleterequirementsconservative
most notably/>notification\'undefined\')Furthermore,believe thatinnerHTML = prior to thedramaticallyreferring tonegotiationsheadquartersSouth AfricaunsuccessfulPennsylvaniaAs a result,\npadding-top:experimentalgetAttributeinstructionstechnologiespart of the =function(){subscriptionl.dtd\">\r\nEnglish (US)appendChild(transmissions. However, intelligence\" tabindex=\"float:right;Commonwealthranging fromin which theat least onereproductionencyclopedia;font-size:1jurisdictionat that time\">compensation" ++"championshipmedia=\"all\" violation ofreference toreturn true;Strict//EN\" transactionsinterventionverificationInformation difficultiesChampionshipcapabilities}\n\nChristianityfor example,Professionalrestrictionssuggest thatwas released(such as theremoveClass(unemploymentthe Americanstructure of/index.html published inspan class=\"\">\n\nf (docum" ++"ent.border: 1px {font-size:1treatment of0\" height=\"1modificationIndependencedivided intogreater thanachievementsestablishingJavaScript\" neverthelesssignificanceBroadcasting> container\">\nsuch as the influence ofa particularsrc=\'http://navigation\" half of the substantial  advantage ofdiscovery offundamental metropolitanthe opposite\" xml:lang=\"deliberatelyalign=centerevolution ofpreservationimprovementsbeginning inJesus ChristPublicationsdisagreementtext-align:r, function()similaritiesbody" ++">is currentlyalphabeticalis sometimestype=\"image/many of the flow:hidden;available indescribe theexistence ofall over thethe Internet\t